summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2023-11-18 17:53:35 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2023-11-19 19:27:29 +0900
commitc0a6f1b84c84749908961579b84513fd9f9d9eac (patch)
treeace7ba60cb031acd3a1f4ff10f7bbc5668fa801f
parent52e5ffe140f0f4402e97936447bc9a606045d2b5 (diff)
downloadextra-dependencies-c0a6f1b8.tar.gz
extra-dependencies-c0a6f1b8.zip
uncrustify-trinity: updated based on upstream version 0.78.0
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/AUTHORS182
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/CMakeLists.txt551
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/CONTRIBUTING.md90
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/ChangeLog1644
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/README.md394
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/cdbs/debian-tde.mk246
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/changelog346
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/compat1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/002_trinity_customization.diff215
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/003_allow_older_distributions.diff40
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/004_fixed_usage.diff55
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/series4
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/rules19
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/source/options3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/Tracking.txt52
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/ben.cfg.txt113
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/config.txt3593
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/default.cfg3593
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/index.html183
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/linux.cfg.txt92
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Align.html44
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/paren_stack.txt221
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/preprocessor_indentation.txt414
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/amxmodx.cfg208
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/ben.cfg1213
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/ben2.cfg84
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/d.cfg84
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/defaults.cfg3593
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/freebsd.cfg386
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/gnu-indent.cfg83
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/klaus.cfg508
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/kr-indent.cfg83
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/linux-indent.cfg90
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/linux.cfg123
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/mono.cfg87
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/objc.cfg138
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/sun.cfg1803
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/uigui_uncrustify.ini7386
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/xsupplicant.cfg82
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/forUncrustifySources.cfg473
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/package.json21
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/release-process.rst325
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/gen_changelog.py111
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/release_tool.py247
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/run_ctest.py43
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ChunkStack.cpp120
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ChunkStack.h123
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/EnumStructUnionParser.cpp2968
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/EnumStructUnionParser.h497
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ParseFrame.cpp352
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ParseFrame.h99
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/add_space_table.h366
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align.cpp231
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align.h16
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_add.cpp58
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_assign.cpp290
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_braced_init_list.cpp168
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_func_proto.cpp227
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_init_brace.cpp206
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_nl_cont.cpp64
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_nl_cont.h33
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_msg_colons.cpp182
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_same_func_call_params.cpp283
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_same_func_call_params.h22
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_stack.cpp661
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_tools.cpp197
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_tools.h48
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_trailing_comments.cpp235
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_var_def_brace.cpp362
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/brace_cleanup.cpp1449
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/brace_cleanup.h23
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/braces.cpp1697
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/braces.h33
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/calculate_closing_brace_position.cpp197
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/change_int_types.cpp186
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/chunk.cpp896
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/chunk.h1801
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine.cpp4088
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine.h79
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_fix_mark.cpp2623
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_fix_mark.h196
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_labels.cpp446
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_skip.cpp242
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_tools.cpp581
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_tools.h85
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/compat.h26
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/compat_win32.cpp82
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/detect.cpp439
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/detect.h16
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_cleanup.cpp96
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_parens.cpp71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_parens.h28
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/frame_list.cpp345
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/frame_list.h40
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/indent.cpp4741
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/indent.h59
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/keywords.cpp679
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/keywords.h85
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/lang_pawn.cpp524
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/lang_pawn.h49
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/log_levels.h139
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/log_rules.cpp106
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/log_rules.h59
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/logger.cpp336
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/mark_question_colon.cpp112
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/newlines.cpp6845
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/newlines.h206
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/option.cpp1324
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/options.h4303
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/output.cpp3597
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/output.h50
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parens.cpp349
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parens.h24
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/pcf_flags.cpp108
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/pcf_flags.h98
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/punctuators.cpp85
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/quick_align_again.cpp53
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/remove_extra_returns.cpp84
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/semicolons.cpp153
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/semicolons.h26
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/sorting.cpp711
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/space.cpp3782
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/token_enum.h400
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize.cpp2881
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize.h55
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize_cleanup.cpp1776
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize_cleanup.h31
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_text.cpp759
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_text.h196
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_tools.cpp496
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_tools.h46
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify.cpp2757
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify.h94
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_emscripten.cpp1212
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_types.cpp88
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_types.h281
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unicode.cpp580
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unicode.h34
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/universalindentgui.cpp372
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/universalindentgui.h17
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/width.cpp917
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/width.h21
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/CMakeLists.txt93
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/c.test550
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/28.txt430
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/31.txt876
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/66.txt800
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/92.txt196
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/Debug_tracking_space.html23
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/class_enum_struct_union.csv685
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/class_enum_struct_union.txt692
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/help.txt84
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/replace.txt2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/tracking_space.html23
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/universalindent.cfg7386
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/test_cli_options.py855
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/1liner-no-split.cfg10
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2360-a.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2360-b.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3169.cfg5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-1.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-2.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-4.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_049.cfg6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_056.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_058.cfg10
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_072.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_081.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_085.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_090.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-banner.cfg15
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-kr-br.cfg5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-kr.cfg12
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/convert_cmt_vbrace_one_line.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/freebsd.cfg27
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/if_chain.cfg11
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/issue_527.cfg266
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/label_colon_nl_1.cfg5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/label_colon_nl_2.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-1.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-2.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-4.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/my_conf.cfg17
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_1.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_2.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_3.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_4.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_create_one_liner.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_nl.cfg5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_cnt3.cfg7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_col1.cfg7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml-1.cfg8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml-5.cfg8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml0.cfg8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml2.cfg8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml4.cfg8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_with_spaces.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/width-3.cfg7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/width.cfg7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet.cfg510
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/d.cfg50
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/mod_full_brace_if_chain_only-t.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_inside_fparen-f.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/width-2.cfg13
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2224.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3220-ir.cfg11
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-29935.cfg148
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-32657.cfg316
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align-330.cfg8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/avalon.cfg14
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/avalon2.cfg11
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/avalon4.cfg13
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_031.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1349.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_409-create.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-nl_func-add2.cfg18
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/if_chain_braces_2.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_full_brace_if_chain-1.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_full_brace_if_chain-2.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_full_brace_if_chain-3.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_body-2.cfg7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_body.cfg5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pp_multi_comment.cfg7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ptr_star-3.cfg8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_brace_catch.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_catch_brace.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U01-Cs.cfg282
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U07-Cs.cfg283
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U08-Cs.cfg282
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-11993.cfg287
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-18437.cfg287
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-32658.cfg286
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-37241.cfg287
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_1620.cfg289
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_1637.cfg287
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_1650.cfg288
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d2.cfg49
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/1927.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/UNI-11095.cfg319
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/indent_single_newline.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_catch-i.cfg11
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_catch-r.cfg11
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_catch.cfg11
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_synchronized.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/pawn-escape.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/pawn.cfg16
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cpp.test1134
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00901-code_width.c87
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00902-code_width.c76
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00903-code_width.c75
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02302-nl-cont.c23
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02303-nl-cont2.c18
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02530-pp_multiline_define.c68
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02531-pp_multiline_define.c68
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02532-pp_multiline_define.c68
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02533-pp_multiline_define.c68
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02534-pp_multiline_define.c68
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02535-pp_multiline_define.c68
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02536-pp_multiline_define.c68
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02537-pp_multiline_define.c68
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02538-pp_multiline_define.c68
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02539-pp_multiline_define.c68
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02540-pp_multiline_define.c68
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02541-pp_multiline_define.c68
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10081-infinite-loops.c135
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10084-infinite-loops.c135
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10086-infinite-loops.c146
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10089-infinite-loops.c146
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/02102-indent-c.cpp1024
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33110-enum.cpp203
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34330-Issue_3061_0nl.cpp14
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34331-Issue_3061_1nl.cpp14
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34332-Issue_3061_2nl.cpp14
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34333-Issue_3061_0nl.cpp14
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34334-Issue_3061_1nl.cpp14
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34335-Issue_3061_2nl.cpp14
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34336-Issue_3061_0nl.cpp15
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34337-Issue_3061_1nl.cpp15
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34338-Issue_3061_2nl.cpp15
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34339-Issue_3061_0nl.cpp16
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34340-Issue_3061_1nl.cpp16
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34341-Issue_3061_2nl.cpp16
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34508-Issue_3220.cpp6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60055-issue_3116.cpp233
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60057-issue_3116.cpp233
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10022-indent-objc-block.m149
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_multiline_define.c68
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum.cpp207
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent-c.cpp1084
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3116.cpp213
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/objective-c.test214
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.editorconfig (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.editorconfig)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.gitattributes (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.gitattributes)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.github/ISSUE_TEMPLATE (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.github/ISSUE_TEMPLATE)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.github/workflows/uncrustify_test.yml (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.github/workflows/uncrustify_test.yml)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.gitignore (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.gitignore)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.pc/.quilt_patches1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.pc/.quilt_series1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.pc/.version1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.travis.yml (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.travis.yml)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/AUTHORS189
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/BUGS (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/BUGS)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/CMakeLists.txt560
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/CODEOWNERS (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/CODEOWNERS)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/CONTRIBUTING.md94
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/COPYING (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/COPYING)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/ChangeLog1690
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/Comments.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/Comments.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/HELP (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/HELP)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/LIMITATIONS.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/LIMITATIONS.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/NEWS (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/NEWS)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/README.md395
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/TESTING (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/TESTING)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/appveyor.yml (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/appveyor.yml)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/CodeCoverage.cmake (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/CodeCoverage.cmake)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/GenerateTokenNames.cmake (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/GenerateTokenNames.cmake)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/GenerateVersionHeader.cmake (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/GenerateVersionHeader.cmake)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/Toolchain-mingw32.cmake (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/Toolchain-mingw32.cmake)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/Toolchain-mingw64.cmake (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/Toolchain-mingw64.cmake)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/uninstall.cmake (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/uninstall.cmake)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/commit.log (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/commit.log)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/coverity.sh (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/coverity.sh)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/coverity.travis.yml (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/coverity.travis.yml)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/cdbs/debian-tde.mk246
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/cdbs/versions.pl (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/cdbs/versions.pl)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/changelog352
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/compat1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/control (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/control)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/copyright (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/copyright)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/docs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/docs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/patches/001_docs-remove-remote-images.patch (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/001_docs-remove-remote-images.patch)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/patches/002_trinity_customization.diff215
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/patches/003_fixed_usage.diff55
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/patches/series3
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/rules19
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/source/format (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/source/format)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/source/options6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/Conditional_operator.txt7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/Conditional_operator.txt-save7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/Track.jpg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/Track.jpg)bin23478 -> 23478 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/Tracking.txt54
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/align-thresholds.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/align-thresholds.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/control_the_spaces.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/control_the_spaces.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/dump-steps.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/dump-steps.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/example.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/example.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/goals.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/goals.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/how_to_configure_options.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/how_to_configure_options.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/how_to_format_cpp_lambda_functions.rst (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/how_to_format_cpp_lambda_functions.rst)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/align_typedef.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/align_typedef.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/ben.cfg.txt113
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/config.txt3708
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/configuration.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/configuration.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/default.cfg3708
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/examples/c-1.in.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/examples/c-1.in.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/examples/c-1.out.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/examples/c-1.out.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/examples/example.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/examples/example.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/images/linuxlinks.gif (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/images/linuxlinks.gif)bin462 -> 462 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/index.html183
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/linux.cfg.txt92
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_ASM.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_ASM.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Align.html40
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_CLI_NET.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_CLI_NET.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_C_sharp.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_C_sharp.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_D.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_D.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Indenting.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Indenting.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Java.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Java.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_ModifyCode.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_ModifyCode.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Namespace.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Namespace.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_NewLines.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_NewLines.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Objectiv-C.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Objectiv-C.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Positioning.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Positioning.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Preprocessor.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Preprocessor.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Assign.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Assign.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Byref.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Byref.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Case.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Case.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Cast.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Cast.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Class.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Class.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Comma.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Comma.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Enum.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Enum.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_For.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_For.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_New.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_New.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Operator.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Operator.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Paren.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Paren.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Template.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Template.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Spaces.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Spaces.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/project-support.jpg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/project-support.jpg)bin3788 -> 3788 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/uncrustify.css (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/uncrustify.css)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/uncrustify.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/uncrustify.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/not_a_compiler.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/not_a_compiler.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/overview.odt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/overview.odt)bin16651 -> 16651 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/paren_stack.txt221
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/preprocessor_indentation.txt414
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/theory.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/theory.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/threads.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/threads.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/track.html (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/track.html)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/CMakeLists.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/CMakeLists.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/CMake_catFiles.cmake (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/CMake_catFiles.cmake)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/CMake_emscripten_test.cmake (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/CMake_emscripten_test.cmake)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/README.md (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/README.md)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/build.sh (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/build.sh)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/libUncrustify.d.ts (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/libUncrustify.d.ts)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/postfix_file (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/postfix_file)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/postfix_module.js (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/postfix_module.js)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/prefix_file (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/prefix_file)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/prefix_module.js (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/prefix_module.js)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/test/run_tests.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/test/run_tests.py)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/test/test_run.js (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/test/test_run.js)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/MS-calling_conventions.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/MS-calling_conventions.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/align_assign.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/align_assign.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/amxmodx.cfg208
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/ben.cfg1220
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/ben2.cfg84
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/d.cfg84
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/defaults.cfg3708
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/dofiles.sh (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/dofiles.sh)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/freebsd.cfg386
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/gnu-indent.cfg83
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/klaus.cfg508
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/kr-indent.cfg83
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/linux-indent.cfg90
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/linux.cfg123
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/mono.cfg87
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/msvc.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/msvc.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/objc.cfg138
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/sun.cfg1810
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/types.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/types.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/uigui_uncrustify.ini7585
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/uncrust-files.sh (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/uncrust-files.sh)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/uncrustify.xml.in (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/uncrustify.xml.in)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/xsupplicant.cfg82
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/extras.vpj (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/extras.vpj)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/forUncrustifySources.cfg473
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/forUncrustifySources.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/forUncrustifySources.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/ChunkStack.lnt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/ChunkStack.lnt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/align.lnt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/align.lnt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/chunk_list.lnt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/chunk_list.lnt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/logger.lnt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/logger.lnt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/readme.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/readme.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/unc_text.lnt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/unc_text.lnt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/uncrustify_types.lnt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/uncrustify_types.lnt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/man/uncrustify.1.in (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/man/uncrustify.1.in)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/osx/Xcode Organizer Actions.xccommands (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/osx/Xcode Organizer Actions.xccommands)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/package.json21
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/release-process.rst348
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/Gcov_test.sh (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/Gcov_test.sh)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/Run_clang-tidy.sh (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/Run_clang-tidy.sh)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/add_test_list.awk (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/add_test_list.awk)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/check_options.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/check_options.py)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/cmpcfg.pl (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/cmpcfg.pl)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/compare_the_gcov.awk (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/compare_the_gcov.awk)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/gen_changelog.py111
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/gen_config_combinations_uniq_output.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/gen_config_combinations_uniq_output.py)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/gen_config_combinations_uniq_output_example.json (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/gen_config_combinations_uniq_output_example.json)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/grammar_permutator.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/grammar_permutator.py)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/make_katehl.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/make_katehl.py)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/make_option_enum.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/make_option_enum.py)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/make_options.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/make_options.py)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/make_punctuator_table.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/make_punctuator_table.py)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/make_version.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/make_version.py)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/option_reducer.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/option_reducer.py)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/au-sm123.lnt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/au-sm123.lnt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/co-gcc.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/co-gcc.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/co-gcc.lnt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/co-gcc.lnt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/lint_cfg.lnt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/lint_cfg.lnt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/pclint_cfg_eclipse.lnt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/pclint_cfg_eclipse.lnt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/policy.lnt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/policy.lnt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/run-pclint-eclipse.bat (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/run-pclint-eclipse.bat)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/usage.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/usage.txt)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/prepare_list_of_authors.sh (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/prepare_list_of_authors.sh)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/release_tool.py313
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/run_ctest.py44
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/tokenizer.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/tokenizer.py)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/update_emscripten_bindings.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/update_emscripten_bindings.py)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/.kateconfig (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/.kateconfig)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/ChunkStack.cpp120
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/ChunkStack.h124
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/EnumStructUnionParser.cpp2948
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/EnumStructUnionParser.h497
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/ListManager.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ListManager.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/add_space_table.h375
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align.cpp232
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align.h16
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_add.cpp58
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_add.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_add.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_asm_colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_asm_colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_asm_colon.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_asm_colon.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_assign.cpp289
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_assign.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_assign.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_braced_init_list.cpp165
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_braced_init_list.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_braced_init_list.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_eigen_comma_init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_eigen_comma_init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_eigen_comma_init.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_eigen_comma_init.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_func_params.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_func_params.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_func_params.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_func_params.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_func_proto.cpp230
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_func_proto.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_func_proto.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_init_brace.cpp205
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_init_brace.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_init_brace.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_left_shift.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_left_shift.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_left_shift.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_left_shift.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_log_al.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_log_al.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_log_al.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_log_al.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_nl_cont.cpp85
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_nl_cont.h33
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_decl_colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_decl_colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_decl_colon.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_decl_colon.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_msg_colons.cpp182
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_msg_colons.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_msg_colons.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_msg_spec.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_msg_spec.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_msg_spec.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_msg_spec.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_preprocessor.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_preprocessor.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_preprocessor.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_preprocessor.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_same_func_call_params.cpp286
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_same_func_call_params.h23
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_stack.cpp659
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_stack.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_stack.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_struct_initializers.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_struct_initializers.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_struct_initializers.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_struct_initializers.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_tab_column.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_tab_column.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_tab_column.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_tab_column.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_tools.cpp192
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_tools.h48
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_trailing_comments.cpp235
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_trailing_comments.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_trailing_comments.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_typedefs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_typedefs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_typedefs.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_typedefs.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_var_def_brace.cpp362
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_var_def_brace.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_var_def_brace.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/args.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/args.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/args.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/args.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/backup.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/backup.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/backup.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/backup.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/base_types.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/base_types.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/brace_cleanup.cpp1440
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/brace_cleanup.h23
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/braces.cpp1696
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/braces.h33
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/calculate_closing_brace_position.cpp197
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/calculate_closing_brace_position.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/calculate_closing_brace_position.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/change_int_types.cpp186
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/change_int_types.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/change_int_types.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/char_table.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/char_table.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/check_template.cpp536
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/check_template.h55
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/chunk.cpp915
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/chunk.h1797
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine.cpp4044
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine.h75
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_fix_mark.cpp2651
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_fix_mark.h196
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_labels.cpp452
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_labels.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_labels.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_skip.cpp222
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_skip.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_skip.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_tools.cpp569
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_tools.h85
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/compat.h26
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/compat_posix.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/compat_posix.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/compat_win32.cpp82
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/config.h.in (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/config.h.in)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/cs_top_is_question.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/cs_top_is_question.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/cs_top_is_question.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/cs_top_is_question.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/detect.cpp445
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/detect.h16
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/enum_cleanup.cpp95
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/enum_cleanup.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_cleanup.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/enum_flags.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_flags.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/error_types.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/error_types.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_braced_init_list.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_braced_init_list.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_braced_init_list.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_braced_init_list.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_decltype.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_decltype.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_decltype.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_decltype.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_parens.cpp72
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_parens.h28
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/indent.cpp4792
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/indent.h59
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/keywords.cpp691
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/keywords.h85
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/lang_pawn.cpp520
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/lang_pawn.h49
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/language_names.cpp227
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/language_names.h109
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/language_tools.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/language_tools.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/language_tools.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/language_tools.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/log_levels.h139
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/log_rules.cpp133
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/log_rules.h56
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/logger.cpp336
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/logger.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/logger.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/logmask.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/logmask.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/logmask.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/logmask.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/mark_functor.cpp114
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/mark_functor.h13
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/mark_question_colon.cpp192
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/mark_question_colon.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/mark_question_colon.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/md5.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/md5.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/md5.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/md5.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/newlines.cpp6856
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/newlines.h206
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/option.cpp1325
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/option.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/option.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/option_enum.cpp.in (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/option_enum.cpp.in)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/option_enum.h.in (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/option_enum.h.in)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/options.cpp.in (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/options.cpp.in)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/options.h4436
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/options_for_QT.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/options_for_QT.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/options_for_QT.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/options_for_QT.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/output.cpp3580
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/output.h46
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parameter_pack_cleanup.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parameter_pack_cleanup.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parameter_pack_cleanup.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parameter_pack_cleanup.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parens.cpp362
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parens.h24
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parent_for_pp.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parent_for_pp.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parent_for_pp.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parent_for_pp.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame.cpp256
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame.h797
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame_stack.cpp353
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame_stack.h43
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/pcf_flags.cpp105
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/pcf_flags.h100
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/pragma_cleanup.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/pragma_cleanup.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/pragma_cleanup.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/pragma_cleanup.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/prototypes.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/prototypes.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/punctuators.cpp86
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/punctuators.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/punctuators.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/quick_align_again.cpp53
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/quick_align_again.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/quick_align_again.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/remove_duplicate_include.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/remove_duplicate_include.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/remove_duplicate_include.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/remove_duplicate_include.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/remove_extra_returns.cpp87
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/remove_extra_returns.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/remove_extra_returns.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/rewrite_infinite_loops.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/rewrite_infinite_loops.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/rewrite_infinite_loops.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/rewrite_infinite_loops.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/semicolons.cpp151
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/semicolons.h26
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/sorting.cpp709
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/sorting.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/sorting.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/space.cpp4004
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/space.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/space.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/symbols_table.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/symbols_table.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/token_enum.h405
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize.cpp2946
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize.h55
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize_cleanup.cpp1223
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize_cleanup.h31
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_ctype.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_ctype.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_ctype.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_ctype.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_text.cpp766
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_text.h197
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_tools.cpp722
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_tools.h66
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify.cpp2537
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify.h69
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_emscripten.cpp1213
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_limits.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_limits.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_types.cpp108
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_types.h280
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_version.h.in (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_version.h.in)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unicode.cpp580
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unicode.h34
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/universalindentgui.cpp377
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/universalindentgui.h17
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/width.cpp756
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/width.h21
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/windows_compat.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/windows_compat.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/.editorconfig (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/.editorconfig)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/BRACED_INIT_LIST_found_list.awk (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/BRACED_INIT_LIST_found_list.awk)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/CMakeLists.txt93
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/c-sharp.test (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/c-sharp.test)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/c.test570
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/I-842.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/I-842.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/copyright-header.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/copyright-header.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/copyright-header.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/copyright-header.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/mini_d.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/mini_d.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/mini_nd.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/mini_nd.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/replace.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/replace.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/tracking_space.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/tracking_space.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/truncate.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/truncate.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/unmatched_close_pp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/unmatched_close_pp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/I-3310.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/I-3310.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/I-842.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/I-842.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/backup.h-save (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/backup.h-save)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/class_enum_struct_union.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/class_enum_struct_union.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/in_fcn_def.cpp5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/logger.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/logger.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/replace.list (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/replace.list)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/testSrc.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/testSrc.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/testSrcP.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/testSrcP.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/tracking_space.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/tracking_space.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/truncate.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/truncate.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/unmatched_close_pp.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/unmatched_close_pp.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/21.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/21.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/25.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/25.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/28.txt430
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/31.txt924
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/36.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/36.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/66.txt839
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/9.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/9.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/92.txt196
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/Debug_tracking_space.html23
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/I-842.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/I-842.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/backup.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/backup.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/class_enum_struct_union.csv685
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/class_enum_struct_union.txt692
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/copyright-header.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/copyright-header.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/help.txt85
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/in_fcn_def.txt62
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/logger_cs_L_99.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/logger_cs_L_99.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/p.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/p.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/pc-.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/pc-.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/replace.txt2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/truncate.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/truncate.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/universalindent.cfg7585
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/unmatched_close_pp.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/unmatched_close_pp.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/v-out.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/v-out.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/xyz-err.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/xyz-err.txt)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/test_cli_options.py940
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/1225.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/1225.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/1liner-no-split.cfg11
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/1liner-split.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/1liner-split.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2205.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2278.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue-2278.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2279.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2279.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2360-a.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2360-b.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2411.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2411.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2640.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2640.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3169.cfg5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3233.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3233.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3269.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3269.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3272.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3272.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3274.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3274.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3327.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3327.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3350.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3350.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3351.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3351.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3353.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3353.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3356.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3356.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3370.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3370.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3377.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3377.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3402.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3402.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3431.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3431.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3454.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3454.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3457.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3457.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3472.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3472.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3476.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3476.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3480.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3480.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3493.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3493.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3506.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3506.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3516.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3516.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3517.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3517.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3518.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3518.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3556.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3556.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3561.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3561.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3565.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3565.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3567-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3567-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3567-b.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3567-b.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3580.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3580.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3582.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3582.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3601.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3601.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3662.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3662.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-1.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-2.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-4.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-5.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-5.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3852.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3852.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3873.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3873.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3989.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/add_long_closebrace_comment_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/add_long_closebrace_comment_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align-4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align-4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_attr.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_attr.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-5.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-5.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-6.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-6.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-7.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-7.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-8.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-8.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-9.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-9.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_keep_extra.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_keep_extra.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_multi.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_multi.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_nl_cont-2.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_nl_cont-3.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_nl_cont_spaces-5.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_right_cmt_gap-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_right_cmt_gap-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_sf_call_span_418.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_sf_call_span_418.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_sf_call_span_419.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_sf_call_span_419.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_sf_call_thresh_416.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_sf_call_thresh_416.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_sf_call_thresh_417.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_sf_call_thresh_417.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_stack.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_stack.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_trailing_do_cmt.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_trailing_do_cmt.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_typedef_func-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_typedef_func-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_typedef_func-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_typedef_func-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_typedef_gap-3_span-5.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_typedef_gap-3_span-5.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_047.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_047.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_048.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_048.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_049.cfg6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_050.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_050.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_051.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_051.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_052.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_052.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_053.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_053.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_054.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_054.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_055.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_055.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_056.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_057.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_057.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_058.cfg10
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_061.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_061.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_063.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_063.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_064.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_064.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_065.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_065.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_069.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_069.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_070.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_070.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_071.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_071.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_072.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_073.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_073.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_074.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_074.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_075.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_075.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_076.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_076.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_077.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_077.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_078.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_078.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_079.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_079.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_080.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_080.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_081.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_083.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_083.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_084.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_084.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_085.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_086.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_086.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_087.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_087.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_088.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_088.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_089.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_089.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_090.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_091.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_091.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_092.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_092.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_093.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_093.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_094.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_094.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_095.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_095.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bool-pos-eol-break.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bool-pos-eol-break.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bool-pos-eol.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bool-pos-eol.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bool-pos-sol-break.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bool-pos-sol-break.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bool-pos-sol-force.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bool-pos-sol-force.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bool-pos-sol.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bool-pos-sol.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-banner.cfg16
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-banner.rerun.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-banner.rerun.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-gnu.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-gnu.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-kr-br.cfg6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-kr-nobr.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-kr-nobr.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-kr.cfg13
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-remove-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-remove-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-remove-all.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-remove-all.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-ws.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-ws.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-ws2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-ws2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bug_1702.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bug_1702.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bug_1718.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bug_1718.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bug_2331.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bug_2331.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bug_489.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bug_489.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bug_i_771.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bug_i_771.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/case-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/case-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/case-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/case-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/case-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/case-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cast-sp-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cast-sp-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cast-sp-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cast-sp-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cast-type.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cast-type.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cgal.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cgal.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/clang-has_include.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/clang-has_include.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cmt_indent_multi-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cmt_indent_multi-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cmt_multi_check_last-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cmt_multi_check_last-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cmt_nl_end.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cmt_nl_end.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cmt_reflow.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cmt_reflow.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/code_width-80.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/code_width-80.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/comment_conversion.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cond-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cond-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/convert_cmt_vbrace_one_line.cfg5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cpp_to_c-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cpp_to_c-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cpp_to_c-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cpp_to_c-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cpp_to_c-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cpp_to_c-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/custom_types_ssl.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/custom_types_ssl.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/doxy-comment-no.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/doxy-comment-no.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/doxy-comment-yes.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/doxy-comment-yes.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/else-if-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/else-if-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/else-if-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/else-if-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/empty_body.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/empty_body.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/endif.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/endif.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/enum_comma_ifdef.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/enum_comma_ifdef.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/force_tab_after_define-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/force_tab_after_define-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/freebsd.cfg28
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/func_call_user.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/func_call_user.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ger.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ger.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/i1564.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/i1564.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/if_chain.cfg12
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent-vbrace.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent-vbrace.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_assign.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_assign.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_case_comment-false.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_case_comment-false.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_case_comment-true.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_case_comment-true.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_comment_align_thresh-0.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_comment_align_thresh-0.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_compound_literal_return-false.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_compound_literal_return-false.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_compound_literal_return-true.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_compound_literal_return-true.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_func_call_param.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_func_call_param.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_func_def_param.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_func_def_param.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_func_param.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_func_param.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_func_proto_param.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_func_proto_param.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_ignore_bool-true.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_ignore_bool-true.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_macro_brace-false.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_macro_brace-false.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_macro_brace-true.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_macro_brace-true.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_paren_close--1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_paren_close--1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_paren_close-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_paren_close-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_paren_close-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_paren_close-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_single_line_comments_after.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_single_line_comments_after.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_sparen_extra-8.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_sparen_extra-8.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/issue_527.cfg266
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/label_colon_nl_1.cfg8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/label_colon_nl_2.cfg7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/leave_one_liners.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/leave_one_liners.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod-paren.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod-paren.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod-paren2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod-paren2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_case_brace_add.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_case_brace_add.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-0.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-0.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-1.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-2.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-4.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-5.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-5.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-add-all-prefer-left.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-add-all-prefer-left.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-add-all-prefer-right.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-add-all-prefer-right.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-remove-all.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-remove-all.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-remove-left.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-remove-left.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-remove-right.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-remove-right.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-shift-left.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-shift-left.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-shift-right.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-shift-right.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_long-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_long-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_long-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_long-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_short-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_short-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_short-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_short-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_signed-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_signed-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_signed-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_signed-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_unsigned-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_unsigned-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_unsigned-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_unsigned-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_long_int-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_long_int-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_long_int-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_long_int-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_move_case_brace.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_move_case_brace.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_move_case_return.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_move_case_return.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_short_int-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_short_int-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_short_int-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_short_int-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_signed_int-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_signed_int-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_signed_int-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_signed_int-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_unsigned_int-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_unsigned_int-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_unsigned_int-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_unsigned_int-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/my_conf.cfg18
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nepenthes.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nepenthes.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/newline_after_endif.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/newline_after_endif.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl-comment.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl-comment.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_assign1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_assign1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_assign2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_assign2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_before_return_false.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_before_return_false.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_before_return_true.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_before_return_true.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_brace_test.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_brace_test.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_1.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_2.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_3.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_4.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_create_one_liner.cfg5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_ds_struct_enum-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_ds_struct_enum-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_ds_struct_enum_cmt-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_ds_struct_enum_cmt-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_endif.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_endif.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_enum_own_lines-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_enum_own_lines-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_enum_own_lines-3.rerun.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_enum_own_lines-3.rerun.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_enum_own_lines-4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_enum_own_lines-4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_enum_own_lines-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_enum_own_lines-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_func_call-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_func_call-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_func_call-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_func_call-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_func_call-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_func_call-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_func_call-4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_func_call-4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_func_call-5.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_func_call-5.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_semicolon.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_semicolon.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_whole_file_ifdef.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_whole_file_ifdef.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pascal_ptr.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pascal_ptr.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pos_compare-eol.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pos_compare-eol.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pos_compare-sol.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pos_compare-sol.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pos_conditional-l.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pos_conditional-l.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pos_conditional-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pos_conditional-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp-indent-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp-indent-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp-space.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp-space.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent-0.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent-0.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent-4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent-4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent_code-true.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent_code-true.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_include_at_level-false.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_include_at_level-false.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_include_at_level-true.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_include_at_level-true.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_brace--1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_brace--1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_in_guard.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_in_guard.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_-1_0.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_-1_0.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_-1_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_-1_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_-1_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_-1_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_0.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_0.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_nl.cfg6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_cnt3.cfg8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_col1.cfg8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml-1.cfg9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml-5.cfg9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml0.cfg9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml2.cfg9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml4.cfg9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_ignore_body.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_ignore_body.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_with_spaces.cfg5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_ret.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_ret.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_space_after.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_space_after.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_space_before.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_space_before.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_space_before_after.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_space_before_after.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_space_none.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_space_none.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/preproc-cleanup.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/preproc-cleanup.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ptr-arith.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ptr-arith.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/rdan.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/rdan.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/return-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/return-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/return-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/return-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/return-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/return-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/return-4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/return-4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sf537.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sf537.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sf538.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sf538.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_pointer_star-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_after_pointer_star-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-a.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-f.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-i.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-r.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_between_semi_for_empty-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_between_semi_for_empty-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_between_semi_for_empty-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_between_semi_for_empty-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_cmt_cpp_start-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_cmt_cpp_start-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_cond_colon.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_cond_colon.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_emb_cmt-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_emb_cmt-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_emb_cmt-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_emb_cmt-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_emb_cmt-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_emb_cmt-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_enum_brace-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_enum_brace-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_enum_brace-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_enum_brace-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_enum_brace-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_enum_brace-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_enum_brace-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_enum_brace-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_func_call_user_inside_fparen.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_func_call_user_inside_fparen.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_ptr_star_func_var-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_ptr_star_func_var-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_ptr_star_func_var-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_ptr_star_func_var-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_ptr_star_func_var-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_ptr_star_func_var-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_ptr_star_func_var-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_ptr_star_func_var-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_sparen_paren-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_sparen_paren-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_sparen_paren-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_sparen_paren-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/space_indent_columns-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/space_indent_columns-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/star-style-0.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/star-style-0.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/star-style-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/star-style-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/star-style-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/star-style-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/type_wrap.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/type_wrap.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/width-3.cfg8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/width.cfg8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/xml-str.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/xml-str.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/Issue_3052.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/Issue_3052.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/UNI-18777.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/UNI-18777.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet-func_call_user.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet-func_call_user.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet-func_def.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet-func_def.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet-sp_after_oc_msg_receiver.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet-sp_after_oc_msg_receiver.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet-sp_inside_braces_oc_dict.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet-sp_inside_braces_oc_dict.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet.cfg510
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/align-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/align-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/align_same_func_call_params-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/align_same_func_call_params-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/attribute_specifier_seqs.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/attribute_specifier_seqs.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/ben2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/ben2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/ben_011.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/ben_011.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/ben_042.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/ben_042.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/bool-pos-eol-force.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/bool-pos-eol-force.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/brace-allman.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/brace-allman.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/bug_637.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_after_sparen.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/bug_671.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/bug_671.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/clark.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/clark.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/clark.rerun.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/clark.rerun.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/class-header.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/class-header.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/cmt_insert-0.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/cmt_insert-0.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/cmt_insert-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/cmt_insert-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/d.cfg51
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/del_semicolon.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/del_semicolon.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/empty.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/empty.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/file-header.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/file-header.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/file_footer.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/file_footer.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/file_header.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/file_header.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/func-def-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/func-def-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/func-def-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/func-def-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/func-def-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/func-def-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/func-header.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/func-header.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/func-header2.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/func-header2.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/function_header.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/function_header.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_columns-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_columns-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_continue-8.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_continue-8.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_inside_ternary_operator.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_inside_ternary_operator.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_ternary_operator-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_ternary_operator-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_ternary_operator-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_ternary_operator-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_var_def.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_var_def.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/issue_672.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/issue_672.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/kw_subst.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/kw_subst.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/kw_subst2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/kw_subst2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/kw_subst3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/kw_subst3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/kw_subst4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/kw_subst4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/mod_case_brace_rm.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/mod_case_brace_rm.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/mod_full_brace_if_chain_only-t.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/mod_paren_on_return-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/mod_paren_on_return-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/mod_paren_on_return-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/mod_paren_on_return-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/msg-header.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/msg-header.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/nl_before_after.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/nl_before_after.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/nl_before_ignore_after_case.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/nl_before_ignore_after_case.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/region-0.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/region-0.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/region-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/region-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/region-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/region-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/region-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/region-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sort_imports.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sort_imports.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_after_cast.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_after_cast.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_after_type-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_after_type-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_after_type-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_after_type-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_arith-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_arith-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_before_byref-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_before_byref-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_cmt_cpp_start-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_cmt_cpp_start-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_cmt_cpp_start_force.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_cmt_cpp_start_force.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_cparen_oparen-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_cparen_oparen-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_inside_fparen-f.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/space_indent_columns-4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/space_indent_columns-4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/star_pos-0.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/star_pos-0.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/tde.cfg849
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/width-2.cfg14
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/width-2.rerun.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/width-2.rerun.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/2185.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/2185.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/2203.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/2203.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/623_caret-spacing.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/623_caret-spacing.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/633_decl-in-func-typedef.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/633_decl-in-func-typedef.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/DefaultAndDelete-0.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/DefaultAndDelete-0.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/DefaultAndDelete-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/DefaultAndDelete-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/DefaultAndDelete-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/DefaultAndDelete-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Discussion_3987.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/I1112-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/I1112-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/I2103.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/I2103.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1052.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1052.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1130.cfg6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1167.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1167.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1184.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1184.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1460.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1460.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1511.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1511.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1692.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1692.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1703.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1703.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1734.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1734.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1753.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1753.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1813.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1813.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1923.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1923.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1966.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1966.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2020.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2020.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2045.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2045.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2085.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2085.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2091.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2091.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2101.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2101.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2149.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2149.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2150.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2150.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2151.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2151.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2163.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2163.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2166.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2166.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2170.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2170.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2186.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2186.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2195.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2195.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2219.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2219.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2224.cfg5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2229.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2229.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2232.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2232.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2236.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2236.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2250.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2250.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2281.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2281.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2302.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2302.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2305.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2305.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2319.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2319.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2343.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2343.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2345.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2345.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2368.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2368.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2383.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2383.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2386.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2386.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2428.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2428.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2437.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2437.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2440.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2440.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2440_nl.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2440_nl.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2478.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2478.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2561.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2561.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2570.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2570.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2574.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2574.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2582.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2582.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2591.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2591.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2594.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2594.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2596.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2596.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2604.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2604.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2668.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2668.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2688.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2688.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2689.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2689.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2692.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2692.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2703.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2703.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2734.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2734.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2735.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2735.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2742.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2742.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2752.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2752.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2757.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2757.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2758.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2758.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2759.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2759.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2771.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2771.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2794.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2794.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2795.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2795.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2823.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2823.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2831.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2831.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2836.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2836.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2873.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2873.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2879.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2879.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2886.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2886.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2890.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2890.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2902.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2902.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2907.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2907.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2914.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2914.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2921.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2921.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2930.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2930.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2942.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2942.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2949.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2949.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2957.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2957.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2971.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2971.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3010.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3010.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3025.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3025.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3034.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3034.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3040.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3040.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3044.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3044.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3048.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3048.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3054-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3054-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3054.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3054.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3055.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3055.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3058.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3058.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3061_0nl.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3061_0nl.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3061_1nl.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3061_1nl.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3061_2nl.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3061_2nl.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3061_3nl.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3061_3nl.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3080.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3080.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3097.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3097.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3164.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3164.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3197.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3197.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3198.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3198.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3203.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3203.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3220-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3220-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3220-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3220-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3220-ir.cfg12
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3220-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3220-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3236.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3237.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3237.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3252.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3252.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3284.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3284.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3294.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3294.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3309-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3309-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3309-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3309-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3309-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3309-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3316.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3316.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3357.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3357.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3409.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3409.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3413.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3413.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3422-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3422-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3422-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3422-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428_3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428_3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428_4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428_4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428_5.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428_5.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428_6.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428_6.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3446.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3446.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3448.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3448.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3513.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3513.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3546.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3546.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3550.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3550.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3552.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3552.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3558.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3558.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3570.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3570.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3576-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3576-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3576-b.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3576-b.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3604.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3604.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3614.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3710.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3710.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3785.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3785.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3786.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3786.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3786.rerun.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3786.rerun.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3863.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3863.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3865.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3865_2.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3914.cfg5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3915.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3916.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3919.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3920.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3965.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3967.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3983.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4036.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4080.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4094.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4239.cfg5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_750.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_750.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_931.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_931.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_995-do.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_995-do.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/NewLine-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/NewLine-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/NewLine-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/NewLine-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/STUCK_macro-difficulties.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/STUCK_macro-difficulties.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U02-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U02-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U03-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U03-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U04-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U04-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U05-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U05-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U06-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U06-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U07-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U07-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U16-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U16-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U18-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U18-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U21-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U21-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U23-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U23-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U25-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U25-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U26-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U26-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U27-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U27-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U28-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U28-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U29-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U29-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U30-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U30-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U31-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U31-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U33-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U33-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U36-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U36-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-10496.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-10496.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-12046.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-12046.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1340.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1340.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1344.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1344.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1346.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1346.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1347.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1347.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1350.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1350.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1356.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1356.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1358.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1358.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-2049.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-2049.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-2650.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-2650.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-2680.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-2680.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-29935.cfg149
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-30088.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-30088.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-32657.cfg316
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Uncrustify.Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Uncrustify.Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/al.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/al.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align-330.cfg8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_assign_decl_func-0.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_assign_decl_func-0.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_assign_decl_func-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_assign_decl_func-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_assign_decl_func-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_assign_decl_func-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_assign_func_proto_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_assign_func_proto_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_assign_span-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_assign_span-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_asterisk_after_type_cast.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_asterisk_after_type_cast.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_class-constr.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_class-constr.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_continuation_left_shift.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_continuation_left_shift.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_default_after_override.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_default_after_override.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_eigen_comma_init.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_eigen_comma_init.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_fcall-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_fcall-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_fcall.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_fcall.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_gap.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_gap.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_span-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_span-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_thresh_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_thresh_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_thresh_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_thresh_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_thresh_3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_thresh_3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_thresh_4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_thresh_4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_proto_thresh_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_proto_thresh_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_proto_thresh_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_proto_thresh_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_proto_thresh_3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_proto_thresh_3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_proto_thresh_4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_proto_thresh_4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_proto_thresh_5.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_proto_thresh_5.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_right_comment.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_right_comment.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_var_class_span-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_var_class_span-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_var_def_thresh_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_var_def_thresh_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_var_def_thresh_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_var_def_thresh_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_var_def_thresh_3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_var_def_thresh_3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/anonymous_enum.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/anonymous_enum.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/arith-vs-byref.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/arith-vs-byref.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/arith-vs-ptr.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/arith-vs-ptr.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/asm_block_pp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/asm_block_pp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/avalon.cfg15
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/avalon2.cfg13
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/avalon3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/avalon3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/avalon4.cfg14
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_001.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_001.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_003.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_003.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_004.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_004.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_005.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_005.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_006.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_006.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_008.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_008.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_009.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_009.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_010.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_010.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_012.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_012.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_013.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_013.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_014.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_014.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_015.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_015.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_016.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_016.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_017.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_017.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_018.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_018.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_020.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_020.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_021.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_021.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_022.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_022.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_023.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_023.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_024.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_024.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_026.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_026.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_027.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_027.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_028.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_028.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_029.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_029.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_030.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_030.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_031.cfg6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1001.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1001.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1003.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1003.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1004.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1004.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1020.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1020.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1108.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1108.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1160.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1160.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1161.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1161.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1169.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1169.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1170.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1170.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1236.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1236.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1296-F.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1296-F.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1296-T.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1296-T.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1315.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1315.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1324.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1324.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1340.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1340.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1349.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1395.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1395.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1402.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1402.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1403.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1403.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1432.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1432.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1439.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1439.cfg)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1452.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1452.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1649.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1649.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1689.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1689.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1691.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1691.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1717.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1717.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1758-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1758-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1854.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1854.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1862.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1862.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2285.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2285.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2322.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2322.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2371.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2371.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2402.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2402.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2433_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2433_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2433_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2433_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_472.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_472.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_488.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_488.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_633.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_633.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_657.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_657.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_664.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_664.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_670.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_670.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_858-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_858-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_858-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_858-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_322.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_322.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_359.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_359.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_405.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_405.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_409-create.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_409-split.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_409-split.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_478.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_478.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_663.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_663.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_666.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_666.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_752.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_752.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-center.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-center.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-ir.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-ir.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-left.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-left.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-right.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-right.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cast.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cast.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-colon-pos-eol-add.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-colon-pos-eol-add.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-colon-pos-eol.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-colon-pos-eol.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-colon-pos-sol-add.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-colon-pos-sol-add.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-colon-pos-sol.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-colon-pos-sol.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-nl_func-add.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-nl_func-add.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-nl_func-add2.cfg18
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-nl_func-del.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-nl_func-del.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-on-colon-indent.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-on-colon-indent.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_convert_tab_to_spaces-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_convert_tab_to_spaces-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_cpp_to_c-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_cpp_to_c-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_indent-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_indent-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_indent-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_indent-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_indent-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_indent-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_multi_first_len_minimum-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_multi_first_len_minimum-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_trailing_single_line_c_to_cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_trailing_single_line_c_to_cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/code_width-70.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/code_width-70.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/comma-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/comma-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/comma-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/comma-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/comma-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/comma-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/const_throw.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/const_throw.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/constr_colon.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/constr_colon.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cpp17.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cpp17.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cu.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cu.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/custom-open.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/custom-open.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/custom-open2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/custom-open2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/disable_nl_cont.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/disable_nl_cont.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/dont-detab-strings.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/dont-detab-strings.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/dont-process-defines.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/dont-process-defines.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/eat_blanks_after_codewidth.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/eat_blanks_after_codewidth.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ellipsis-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ellipsis-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/enum.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/enum.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/enum_comma-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/enum_comma-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/enum_comma-4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/enum_comma-4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/enum_comma-6.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/enum_comma-6.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/enum_comment_wrap.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/enum_comment_wrap.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/extern_func.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/extern_func.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/footer.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/footer.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/func_class.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/func_class.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/func_param.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/func_param.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/functype_param-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/functype_param-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/functype_param-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/functype_param-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/i1516.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/i1516.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/i1536.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/i1536.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/i1536.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/i1536.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/i1768.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/i1768.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/i683.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/i683.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/if_chain_braces_2.cfg3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_braces_no.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_braces_no.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_class-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_class-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_class-t_columns-4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_class-t_columns-4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_columns-11.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_columns-11.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_columns-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_columns-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_columns-4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_columns-4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_comma_brace.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_comma_brace.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_comment_align_thresh_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_comment_align_thresh_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ctor_init.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ctor_init.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ctor_init_following.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ctor_init_following.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ctor_init_leading.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ctor_init_leading.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ctor_members_twice.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ctor_members_twice.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_else_if-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_else_if-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_first_for_expr-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_first_for_expr-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_func_proto_param-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_func_proto_param-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ignore_before_class_colon-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ignore_before_class_colon-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ignore_before_constr_colon-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ignore_before_constr_colon-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_namespace-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_namespace-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_namespace_inner_only.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_namespace_inner_only.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_namespace_single_indent.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_namespace_single_indent.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_off_after_return.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_off_after_return.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_once.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_once.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_param.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_param.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_after_func_call-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_after_func_call-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_after_func_decl-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_after_func_decl-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_after_func_def-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_after_func_def-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_close_0.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_close_0.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_close_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_close_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_close_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_close_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_semicolon_for_paren-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_semicolon_for_paren-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_shift.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_shift.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_var_def_cont-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_var_def_cont-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_with_tabs-0.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_with_tabs-0.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/initlist_leading_commas.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/initlist_leading_commas.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/interface-keyword-in-cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/interface-keyword-in-cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1778.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1778.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1782.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1782.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1804.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1804.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1887.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1887.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1916.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1916.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1985.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1985.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1997.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1997.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2124-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2124-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2124-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2124-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2209.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2209.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2623_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2623_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2623_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2623_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2623_3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2623_3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_1_neg.cfg7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_1_pos.cfg7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_1_zero.cfg7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_2_neg.cfg69
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_2_pos.cfg69
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_2_zero.cfg69
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3116-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_3116-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3116.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_3116.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3378.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_3378.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_564.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_564.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_574-i-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_574-i-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_574-i-b.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_574-i-b.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_574-i-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_574-i-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_574.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_574.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/kdepim2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/kdepim2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/kdepim3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/kdepim3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/kdepim5.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/kdepim5.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lambda1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lambda1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lambda2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lambda2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lambda3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lambda3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lambda4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lambda4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lambda_in_one_liner.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lambda_in_one_liner.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lineEndings-to-Mac.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lineEndings-to-Mac.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lineEndings-to-Unix.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lineEndings-to-Unix.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lineEndings-to-Win.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lineEndings-to-Win.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/long_br_cmt.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/long_br_cmt.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/long_namespace.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/long_namespace.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_add_long_class_closebrace_comment.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_add_long_class_closebrace_comment.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_add_long_namespace_closebrace_comment-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_add_long_namespace_closebrace_comment-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_full_brace_if_chain-1.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_full_brace_if_chain-2.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_full_brace_if_chain-3.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_paren_on_throw-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_paren_on_throw-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_paren_on_throw-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_paren_on_throw-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_paren_on_throw-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_paren_on_throw-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_paren_on_throw-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_paren_on_throw-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_remove_empty_return-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_remove_empty_return-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_remove_extra_semicolon-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_remove_extra_semicolon-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_10.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_10.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_5.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_5.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_6.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_6.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_7.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_7.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_8.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_8.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_9.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_9.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nSolve.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nSolve.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/negative_indent.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/negative_indent.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/new_op_a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/new_op_a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/new_op_f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/new_op_f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/new_op_paren_open_close.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/new_op_paren_open_close.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/new_op_r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/new_op_r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl-brAfter-fcallParen.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl-brAfter-fcallParen.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_access_spec.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_access_spec.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_body-2.cfg8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_body.cfg6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_class_proto-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_class_proto-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_proto-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_proto-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_proto_group-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_proto_group-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_assign_leave_one_liners.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_assign_leave_one_liners.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_brace_open_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_brace_open_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_brace_open_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_brace_open_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_brace_open_3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_brace_open_3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_func_body_def-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_func_body_def-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_func_body_def-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_func_body_def-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_if_closing_paren-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_if_closing_paren-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_if_closing_paren-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_if_closing_paren-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_struct.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_struct.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_brace_brace-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_brace_brace-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_brace_fparen-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_brace_fparen-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_brace_fparen-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_brace_fparen-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_class-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_class-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_class-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_class-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_fdef_brace-r__nl_collapse_empty_body-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_fdef_brace-r__nl_collapse_empty_body-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_fdef_brace_cond-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_fdef_brace_cond-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_fdef_brace_cond-fr.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_fdef_brace_cond-fr.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_fdef_brace_cond-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_fdef_brace_cond-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_fdef_brace_cond-rf.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_fdef_brace_cond-rf.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_for_leave_one_liners-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_for_leave_one_liners-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_for_leave_one_liners-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_for_leave_one_liners-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_call_empty-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_call_empty-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_call_paren-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_call_paren-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_call_paren_empty-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_call_paren_empty-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_class_scope-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_class_scope-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_decl_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_decl_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_decl_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_decl_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_def_paren_empty-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_def_paren_empty-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_paren_empty.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_paren_empty.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_scope_name-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_scope_name-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_type_name-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_type_name-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_type_name_class.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_type_name_class.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_type_name_force.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_type_name_force.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_type_name_mixed.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_type_name_mixed.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_type_name_remove.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_type_name_remove.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_inside_namespace_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_inside_namespace_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_inside_namespace_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_inside_namespace_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_max_after_func_body.cfg5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_max_blank_in_func-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_max_blank_in_func-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_max_blank_in_func-4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_max_blank_in_func-4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_min_after_func_body.cfg5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_namespace-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_namespace-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_namespace-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_namespace-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_remove_extra_newlines-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_remove_extra_newlines-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_template-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_template-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_template-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_template-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_throw_expr-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_throw_expr-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_throw_expr-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_throw_expr-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_throw_expr-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_throw_expr-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_throw_expr-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_throw_expr-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_try-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_try-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst_close-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst_close-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst_close-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst_close-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst_open-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst_open-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst_open-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst_open-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/no_squeeze_ifdef.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/no_squeeze_ifdef.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/op-space-force.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/op-space-force.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/op-space-remove-align-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/op-space-remove-align-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/op-space-remove-align-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/op-space-remove-align-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/op-space-remove.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/op-space-remove.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/op_sym_empty.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/op_sym_empty.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/out-668-F.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/out-668-F.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/out-668-T.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/out-668-T.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_assign.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_assign.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_comma-lf.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_comma-lf.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_comma-tb.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_comma-tb.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_enum_comma-tf.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_enum_comma-tf.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_shift-join.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_shift-join.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_shift-lead.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_shift-lead.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_shift-trail.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_shift-trail.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pp-pragma.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pp-pragma.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pp_define_at_level-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pp_define_at_level-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pp_multi_comment.cfg7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ptr_star-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ptr_star-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ptr_star-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ptr_star-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ptr_star-3.cfg9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/qt-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/qt-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/return_dont_remove.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/return_remove.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sef.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sef.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/semi-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/semi-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/semi-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/semi-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/semi-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/semi-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sf.2886991-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sf.2886991-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sf.2886991-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sf.2886991-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sf.3315874.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sf.3315874.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sf574.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sf574.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sim.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sim.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_angle-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_angle-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_angle-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_angle-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_angle-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_angle-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_cast-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_cast-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_cast-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_cast-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_constr_colon.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_constr_colon.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_decltype-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_decltype-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_decltype-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_decltype-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_ellipsis-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_ellipsis-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_ptr_star_qualifier-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_ptr_star_qualifier-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_type-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_type-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_type_brace_init_lst_open-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_type_brace_init_lst_open-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_type_brace_init_lst_open-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_type_brace_init_lst_open-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_angle_colon.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_angle_colon.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_angle_paren-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_angle_paren-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_angle_paren_empty.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_angle_paren_empty.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_arith-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_arith-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_arith_additive-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_arith_additive-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_arith_additive-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_arith_additive-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_assign_default.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_assign_default.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_balance_nested_parens.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_balance_nested_parens.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_byref_func.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_byref_func.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_case_colon.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_case_colon.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_comma-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_comma-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_constr_colon.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_constr_colon.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_ellipsis-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_ellipsis-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_ellipsis-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_ellipsis-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-a.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-f.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-i.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-r.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-a.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-f.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-i.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-r.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_ptr_star-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_ptr_star-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_ptr_star-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_ptr_star-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-a.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-f.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-i.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-r.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-a.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-f.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-i.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-r.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_tr_emb_cmt-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_tr_emb_cmt-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_tr_emb_cmt-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_tr_emb_cmt-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_type_brace_init_lst_close-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_type_brace_init_lst_close-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_type_brace_init_lst_close-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_type_brace_init_lst_close-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-a.cfg13
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-f.cfg13
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-i.cfg13
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-r.cfg13
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_bool-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_bool-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_bool-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_bool-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_bool-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_bool-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_brace_brace-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_brace_brace-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_brace_brace-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_brace_brace-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_brace_catch.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_byref_paren-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_byref_paren-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_byref_paren-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_byref_paren-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_byref_paren-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_byref_paren-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_byref_paren-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_byref_paren-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_catch_brace.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cmt.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cmt.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cmt_cpp_region-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cmt_cpp_region-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cmt_cpp_region-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cmt_cpp_region-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cond_question-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cond_question-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cond_question-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cond_question-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cond_question-ir.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cond_question-ir.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cond_question-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cond_question-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_constr_colon-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_constr_colon-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cparen_oparen-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cparen_oparen-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_fparen-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_fparen-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_fparen-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_fparen-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_fparen-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_fparen-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_paren_brace-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_paren_brace-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_paren_brace-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_paren_brace-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_paren_brace-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_paren_brace-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_brace-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_brace-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_brace-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_brace-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_brace-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_brace-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_paren-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_paren-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_paren-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_paren-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_paren-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_paren-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_dc.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_dc.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_decltype_paren-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_decltype_paren-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_decltype_paren-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_decltype_paren-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_endif_cmt.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_endif_cmt.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_enum_assign-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_enum_assign-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_enum_assign-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_enum_assign-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_enum_colon-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_enum_colon-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_enum_colon-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_enum_colon-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_enum_colon.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_enum_colon.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_func_call_empty.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_func_call_empty.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_func_call_paren.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_func_call_paren.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_func_class_empty.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_func_class_empty.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_func_def_empty.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_func_def_empty.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_func_proto_empty.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_func_proto_empty.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_braces_empty-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_braces_empty-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_braces_enum-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_braces_enum-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_braces_enum-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_braces_enum-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_braces_enum-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_braces_enum-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_fparen-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_fparen-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_fparens-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_fparens-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-iif.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-iif.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-iii.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-iii.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-irf.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-irf.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-rf.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-rf.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_not_not.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_not_not.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_brace-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_brace-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_brace-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_brace-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_brace-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_brace-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_ellipsis-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_ellipsis-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_ellipsis-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_ellipsis-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_ellipsis-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_ellipsis-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_noexcept-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_noexcept-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_qualifier-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_qualifier-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-a.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-f.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-i.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-r.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-a.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-f.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-i.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-r.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-a.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-f.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-i.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-r.cfg1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return_brace-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return_brace-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return_brace-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return_brace-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return_paren-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return_paren-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return_paren-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return_paren-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis_paren-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis_paren-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis_paren-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis_paren-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis_paren-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis_paren-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_skip_vbrace_tokens.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_skip_vbrace_tokens.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_throw_paren-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_throw_paren-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_throw_paren-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_throw_paren-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_trailing_return-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_trailing_return-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_trailing_return-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_trailing_return-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_trailing_return_byref_ptr-left.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_trailing_return_byref_ptr-left.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_trailing_return_byref_ptr-right.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_trailing_return_byref_ptr-right.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_brace_init_lst-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_brace_init_lst-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_brace_init_lst-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_brace_init_lst-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_ellipsis-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_ellipsis-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_ellipsis-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_ellipsis-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_ellipsis-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_ellipsis-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_func-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_func-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_func-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_func-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_func-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_func-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_func-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_func-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_word_brace_force.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_word_brace_force.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_word_brace_remove.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_word_brace_remove.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/space_indent_class-t_columns-4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/space_indent_class-t_columns-4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/squeeze_ifdef.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/squeeze_ifdef.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/squeeze_ifdef_top.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/squeeze_ifdef_top.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/star_pos-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/star_pos-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/star_pos-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/star_pos-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/string_replace_tab_chars-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/string_replace_tab_chars-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/tab-0-11.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/tab-0-11.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/template_sp-force.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/template_sp-force.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/template_sp-ignore.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/template_sp-ignore.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/template_sp-remove.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/template_sp-remove.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/templates-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/templates-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/templates-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/templates-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/toggle_processing_cmt.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/toggle_processing_cmt.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/toggle_processing_cmt2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/toggle_processing_cmt2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/toggle_processing_cmt3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/toggle_processing_cmt3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/toggle_processing_cmt4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/toggle_processing_cmt4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/using-alias-in-define.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/using-alias-in-define.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-5.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-5.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-6.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-6.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-7.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-7.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_gap.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_gap.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/wessex.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/wessex.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/615_nested_usings.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/615_nested_usings.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/620_getset-brace.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/620_getset-brace.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/625_where-constraints.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/625_where-constraints.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/Issue_2705.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/Issue_2705.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U-J.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U-J.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U01-Cs.cfg282
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U02-Cs.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U02-Cs.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U03-Cs.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U03-Cs.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U04-Cs.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U04-Cs.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U06-Cs.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U06-Cs.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U07-Cs.cfg283
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U08-Cs.cfg282
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U09-Cs.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U09-Cs.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U10-Cs.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U10-Cs.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U11-Cs.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U11-Cs.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U13-Cs.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U13-Cs.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U15-Cs.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U15-Cs.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-11662.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-11662.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-11993.cfg287
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1288.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1288.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1338.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1338.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1343.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1343.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-13955.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-13955.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-14131.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-14131.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-18437.cfg287
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-18829.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-18829.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1975.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1975.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1977.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1977.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1978.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1978.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-19895.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-19895.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-2020.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-2020.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-2021.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-2021.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-21730.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-21730.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-2684.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-2684.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-2685.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-2685.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-29933.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-29933.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-30498_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-30498_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-3083.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-3083.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-32658.cfg286
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-37241.cfg287
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-9917.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-9917.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_032.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_032.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_033.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_033.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_034.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_034.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_036.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_036.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_037.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_037.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_038.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_038.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_043.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_043.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_044.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_044.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_045.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_045.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_1620.cfg289
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_1637.cfg287
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_1650.cfg288
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_600.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_600.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_620.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_620.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/comma-cs-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/comma-cs-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/comma-cs-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/comma-cs-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/comma-cs-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/comma-cs-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/cs_generics.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/cs_generics.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/getset.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/getset.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/indent-multistring-coulmn1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/indent-multistring-coulmn1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/indent_cs_delegate_brace-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/indent_cs_delegate_brace-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/indent_using_block-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/indent_using_block-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mda_space_a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mda_space_a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mda_space_c.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mda_space_c.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/misc-failures.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/misc-failures.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mod_full_brace_nl_block_rem_mlcond-0.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mod_full_brace_nl_block_rem_mlcond-0.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mod_full_brace_nl_block_rem_mlcond-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mod_full_brace_nl_block_rem_mlcond-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mod_full_paren_if_bool.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mod_full_paren_if_bool.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mod_sort_using-t.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mod_sort_using-t.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mono.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mono.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/new-constraint-paren-space.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/new-constraint-paren-space.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/sf607.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/sf607.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/sort_using_categ.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/sort_using_categ.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/sp_after_comma-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/sp_after_comma-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/sp_assign-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/sp_assign-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/sp_between_new_paren.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/sp_between_new_paren.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/squeeze-paren-close-Option.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/squeeze-paren-close-Option.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/tcf.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/tcf.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/verbatim_strings.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/verbatim_strings.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/1438.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/1438.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d-tst2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d-tst2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d2-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d2-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d2-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d2-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d2.cfg50
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d3a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d3a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d_sp_paren.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d_sp_paren.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/invariant.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/invariant.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/libd.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/libd.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/sp_after_type-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/sp_after_type-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/ecma/ben_098.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/ecma/ben_098.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/Issue_1122.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/Issue_1122.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/Issue_1124-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/Issue_1124-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/Issue_1124-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/Issue_1124-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/Issue_1845.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/Issue_1845.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/Issue_670.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/Issue_670.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/annotation.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/annotation.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/ben_099.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/ben_099.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/doxy-javadoc-alignment.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/doxy-javadoc-alignment.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/java_foreach.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/java_foreach.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/java_synchronized_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/java_synchronized_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/java_synchronized_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/java_synchronized_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/jdbi-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/jdbi-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/jdbi-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/jdbi-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/leading-tabs-for-java-lambda.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/leading-tabs-for-java-lambda.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/mod_add_long_class_closebrace_comment-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/mod_add_long_class_closebrace_comment-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/nl_after_annotation-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/nl_after_annotation-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/nl_between_annotation-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/nl_between_annotation-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/reflow_fold_regex.txt (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/reflow_fold_regex.txt)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/sp_after_for_colon.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/sp_after_for_colon.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/sp_this_paren.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/sp_this_paren.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/template_angles.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/template_angles.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/1927.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3766.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3766.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3767.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3767.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3811.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3811.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3812.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3812.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3813.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3813.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3819.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3819.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3823.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3823.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/Issue_2172.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/Issue_2172.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/Issue_681.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/Issue_681.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U08-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U08-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U09-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U09-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U10-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U10-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U11-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U11-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U12-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U12-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U13-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U13-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U14-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U14-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U15-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U15-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U24-Cpp.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U24-Cpp.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/UNI-11095.cfg319
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/align-objc-like-xcode.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/align-objc-like-xcode.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/align_colon_with_ternary_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/align_colon_with_ternary_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/align_colon_with_ternary_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/align_colon_with_ternary_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/align_oc_msg_colon_span-1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/align_oc_msg_colon_span-1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/block_pointer.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/block_pointer.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/blocks.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/blocks.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/bug_167.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/bug_167.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/bug_340.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/bug_340.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/bug_841.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/bug_841.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/bug_i_125-412.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/bug_i_125-412.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/delete-space-oc.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/delete-space-oc.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/double-indent-objc-dict.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/double-indent-objc-dict.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/double_angle_space_1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/double_angle_space_1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/double_angle_space_2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/double_angle_space_2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/double_angle_space_3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/double_angle_space_3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/gh137.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/gh137.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/gh293.a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/gh293.a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/gh293.b.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/gh293.b.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/indent-objc-block.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/indent-objc-block.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/indent_boxed.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/indent_boxed.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/indent_oc_inside_msg_sel.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/indent_oc_inside_msg_sel.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/indent_single_newline.cfg4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/issue_2643.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/issue_2643.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/issue_2656.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/issue_2656.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/issue_2675.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/issue_2675.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/issue_3031.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/issue_3031.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_grouping_enabled.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_grouping_enabled.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_grouping_enabled_with_regex.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_grouping_enabled_with_regex.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_ignore_extension.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_ignore_extension.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_prioritize_angle_over_quotes.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_prioritize_angle_over_quotes.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_prioritize_extensionless.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_prioritize_extensionless.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_prioritize_filename.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_prioritize_filename.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_after_func_body-3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_after_func_body-3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_brace_square.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_brace_square.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_func_call_args_multi_line_ignore_closures.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_func_call_args_multi_line_ignore_closures.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_oc_block_brace-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_oc_block_brace-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_oc_msg_args_max_code_width.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_oc_msg_args_max_code_width.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_oc_msg_args_min_params.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_oc_msg_args_min_params.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/obj-c-available.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/obj-c-available.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/obj-c-properties.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/obj-c-properties.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/objc_bug_497.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/objc_bug_497.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/objc_complex_method.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/objc_complex_method.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc1.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc1.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc10.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc10.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc11.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc11.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc12.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc12.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc13.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc13.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc14.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc14.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc16.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc16.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc17.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc17.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc18.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc18.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc19.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc19.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc5.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc5.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc6.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc6.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc7.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc7.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc8.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc8.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc9.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc9.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc_bug_1674.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc_bug_1674.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc_bug_1683.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc_bug_1683.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc_cond_colon.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc_cond_colon.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_at_sel_add.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_at_sel_add.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_at_sel_force.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_at_sel_force.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_at_sel_remove.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_at_sel_remove.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_block_caret_add.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_block_caret_add.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_block_caret_force.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_block_caret_force.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_return_type_add.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_return_type_add.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_return_type_force.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_return_type_force.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_return_type_remove.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_return_type_remove.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_send_oc_colon-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_send_oc_colon-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_throw_remove.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_throw_remove.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_before_oc_block_caret_force.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_before_oc_block_caret_force.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_before_oc_block_caret_remove.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_before_oc_block_caret_remove.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_before_oc_proto_list_add.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_before_oc_proto_list_add.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_before_oc_proto_list_force.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_before_oc_proto_list_force.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_before_oc_proto_list_remove.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_before_oc_proto_list_remove.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_block_as_argument.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_block_as_argument.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_block_as_argument2.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_block_as_argument2.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_block_as_argument3.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_block_as_argument3.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_block_as_argument4.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_block_as_argument4.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_block_as_argument5.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_block_as_argument5.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_cond_ternary_short.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_cond_ternary_short.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_enum_paren-i.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_enum_paren-i.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_enum_paren-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_enum_paren-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_boxed.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_boxed.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_catch-i.cfg12
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_catch-r.cfg12
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_catch.cfg12
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_classname_paren-r.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_classname_paren-r.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_synchronized.cfg2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/ternary_short.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/ternary_short.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/Issue_2586.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/Issue_2586.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/Issue_2665.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/Issue_2665.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/amxmodx.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/amxmodx.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/mod_full_brace_function-f.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/mod_full_brace_function-f.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/pawn-escape.cfg5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/pawn.cfg17
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/staging/UNI-58354.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/staging/UNI-58354.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/staging/UNI-64325.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/staging/UNI-64325.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/Issue_2090.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/Issue_2090.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/Issue_2270.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/Issue_2270.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_100.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_100.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_101.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_101.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_102.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_102.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_103.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_103.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_104.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_104.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_105.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_105.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/mda_space_a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/mda_space_a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/mda_space_c.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/mda_space_c.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/nullable.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/nullable.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/sp_after_comma-a.cfg (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/sp_after_comma-a.cfg)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cpp.test1212
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/d.test (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/d.test)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/difftest.sh (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/difftest.sh)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/ecma.test (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/ecma.test)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/examine_p_files.sh (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/examine_p_files.sh)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00000-comment-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00000-comment-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00001-comment-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00001-comment-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00002-comment-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00002-comment-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00003-comment-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00003-comment-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00004-switch.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00004-switch.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00005-cmt-align.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00005-cmt-align.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00006-comment-convert.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00006-comment-convert.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00007-comment-convert.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00007-comment-convert.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00008-comment-convert.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00008-comment-convert.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00009-comment-convert.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00009-comment-convert.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00010-braces.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00010-braces.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00011-braces.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00011-braces.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00012-braces.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00012-braces.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00013-braces.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00013-braces.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00014-braces.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00014-braces.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00015-braces.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00015-braces.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00016-braces.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00016-braces.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00020-define-if-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00020-define-if-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00050-brace-remove.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00050-brace-remove.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00051-brace-remove.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00051-brace-remove.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00052-brace-remove2.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00052-brace-remove2.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00053-brace.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00053-brace.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00054-if_chain.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00054-if_chain.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00055-braces-2.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00055-braces-2.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00056-brace-remove3.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00056-brace-remove3.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00057-brace-remove3.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00057-brace-remove3.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00058-if_chain.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00058-if_chain.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00059-Issue_2205.c6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00060-braces-2.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00060-braces-2.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00061-braces-3.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00061-braces-3.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00062-braces-4.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00062-braces-4.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00065-braces-5.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00065-braces-5.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00066-vb-while.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00066-vb-while.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00067-vb-do.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00067-vb-do.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00068-bsnl.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00068-bsnl.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00069-vb-pp.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00069-vb-pp.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00070-return-multi.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00070-return-multi.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00071-include_define.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00071-include_define.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00072-align-proto.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00072-align-proto.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00073-nl_proto_endif.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00073-nl_proto_endif.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00074-clang-has_include.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00074-clang-has_include.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00075-function_prototypes_alignment.c21
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00076-1225.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00076-1225.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00081-else-if.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00081-else-if.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00082-else-if.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00082-else-if.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00083-Issue_3601.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00083-Issue_3601.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00091-cond.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00091-cond.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00092-cond.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00092-cond.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00093-cond.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00093-cond.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00094-Issue_3457.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00094-Issue_3457.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00101-bugs-1.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00101-bugs-1.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00102-bugs-2.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00102-bugs-2.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00103-bugs-3.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00103-bugs-3.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00104-bugs-4.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00104-bugs-4.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00105-bugs-5.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00105-bugs-5.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00106-bugs-6.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00106-bugs-6.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00107-bugs-7.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00107-bugs-7.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00108-bugs-8.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00108-bugs-8.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00110-misc.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00110-misc.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00111-misc.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00111-misc.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00120-sp_cmt_cpp_start.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00120-sp_cmt_cpp_start.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00121-sp_cmt_cpp_start.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00121-sp_cmt_cpp_start.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00122-sp_cmt_cpp_start.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00122-sp_cmt_cpp_start.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00123-cmt_reflow.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00123-cmt_reflow.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00130-minus-minus.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00130-minus-minus.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00131-Issue_3873.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00131-Issue_3873.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00135-br_cmt.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00135-br_cmt.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00136-Issue_4044.c58
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00140-global-vars.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00140-global-vars.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00141-deref.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00141-deref.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00142-type-cast.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00142-type-cast.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00143-t3.in.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00143-t3.in.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00144-align-proto-vars.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00144-align-proto-vars.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00145-vardefcol.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00145-vardefcol.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00146-Issue_3516.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00146-Issue_3516.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00147-Issue_3516.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00147-Issue_3516.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00148-Issue_3518.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00148-Issue_3518.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00150-casts.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00150-casts.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00151-casts.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00151-casts.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00152-casts.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00152-casts.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00153-casts.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00153-casts.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00154-casts.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00154-casts.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00155-cast_brace.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00155-cast_brace.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00156-empty-braces.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00156-empty-braces.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00157-empty-braces.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00157-empty-braces.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00158-empty-braces.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00158-empty-braces.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00159-empty-braces.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00159-empty-braces.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00160-fcn_indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00160-fcn_indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00161-fcn_indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00161-fcn_indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00162-fcn_indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00162-fcn_indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00163-fcn_indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00163-fcn_indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00164-fcn_indent_func_def_col1.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00164-fcn_indent_func_def_col1.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00165-sp_func_call_user_inside_fparen.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00165-sp_func_call_user_inside_fparen.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00170-beautifier-off.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00170-beautifier-off.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00180-lvalue.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00180-lvalue.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00190-Issue_3559.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00190-Issue_3559.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00201-case.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00201-case.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00202-case.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00202-case.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00203-case.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00203-case.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00204-bug_1718.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00204-bug_1718.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00205-case-nl_before_return.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00205-case-nl_before_return.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00206-case-nl_before_return.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00206-case-nl_before_return.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00207-nl_before_ignore_after_case.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00207-nl_before_ignore_after_case.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00301-align-struct-init.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00301-align-struct-init.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00302-one-liner-init.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00302-one-liner-init.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00303-one-liner-init.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00303-one-liner-init.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00304-one-liner-init.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00304-one-liner-init.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00305-one-liner-define.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00305-one-liner-define.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00310-sp_embed_comment.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00310-sp_embed_comment.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00311-comment_conversion_define.c24
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00312-comment_conversion_endif.c24
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00313-comment_conversion_long_lines.c16
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00314-comment_conversion_javadoc_single.c21
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00315-comment_conversion_trailing_c_multiline.c27
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00320-indent_first_bool_expr.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00320-indent_first_bool_expr.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00401-align-equ.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00401-align-equ.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00402-align-var.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00402-align-var.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00403-align-var.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00403-align-var.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00404-align-var.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00404-align-var.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00405-bits.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00405-bits.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00406-bug_i_771.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00406-bug_i_771.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00407-star-style.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00407-star-style.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00408-star-style.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00408-star-style.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00409-star-style.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00409-star-style.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00411-align-typedef.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00411-align-typedef.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00412-align-typedef.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00412-align-typedef.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00413-align-typedef.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00413-align-typedef.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00414-align-typedef.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00414-align-typedef.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00415-align_stack.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00415-align_stack.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00416-align_sf_call_thresh_416.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00416-align_sf_call_thresh_416.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00417-align_sf_call_thresh_417.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00417-align_sf_call_thresh_417.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00418-align_sf_call_span_418.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00418-align_sf_call_span_418.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00419-align_sf_call_span_419.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00419-align_sf_call_span_419.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00420-Issue_2278.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00420-Issue-2278.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00421-nl_ds_struct_enum.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00421-nl_ds_struct_enum.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00422-nl_ds_struct_enum.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00422-nl_ds_struct_enum.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00423-bug_1702.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00423-bug_1702.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00424-Issue_3506.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00424-Issue_3506.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00430-paren-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00430-paren-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00431-paren-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00431-paren-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00432-paren-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00432-paren-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00440-bug_489.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00440-bug_489.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00451-enum_gallery.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00451-enum_gallery.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00452-enum_gallery.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00452-enum_gallery.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00453-enum_gallery.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00453-enum_gallery.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00453-enum_gallery.rerun.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00453-enum_gallery.rerun.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00454-enum_gallery.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00454-enum_gallery.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00461-align_func_proto_star_amp.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00461-align_func_proto_star_amp.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00462-align_func_proto_star_amp.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00462-align_func_proto_star_amp.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00463-align_func_proto_star_amp.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00463-align_func_proto_star_amp.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00464-align_func_proto_star_amp.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00464-align_func_proto_star_amp.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00465-align_func_proto_star_amp.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00465-align_func_proto_star_amp.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00466-align_func_proto_star_amp.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00466-align_func_proto_star_amp.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00467-align_func_proto_star_amp.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00467-align_func_proto_star_amp.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00468-align_func_proto_star_amp.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00468-align_func_proto_star_amp.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00469-align_func_proto_star_amp.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00469-align_func_proto_star_amp.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00470-align_trailing_do_cmt.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00470-align_trailing_do_cmt.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00501-bool-pos.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00501-bool-pos.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00502-bool-pos.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00502-bool-pos.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00503-pos_compare.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00503-pos_compare.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00504-pos_compare.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00504-pos_compare.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00505-pos_conditional.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00505-pos_conditional.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00506-pos_conditional.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00506-pos_conditional.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00510-bool-pos.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00510-bool-pos.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00511-bool-pos.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00511-bool-pos.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00512-bool-pos.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00512-bool-pos.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00513-bool-pos.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00513-bool-pos.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00514-my_infile.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00514-my_infile.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00600-dos.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00600-dos.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00601-mac.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00601-mac.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00611-pp-space.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00611-pp-space.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00612-pp-space.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00612-pp-space.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00613-pp-space.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00613-pp-space.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00614-pp-space.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00614-pp-space.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00615-pp-nest.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00615-pp-nest.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00616-pp-if-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00616-pp-if-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00617-pp-if-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00617-pp-if-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00618-pp-if-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00618-pp-if-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00619-Issue_3169.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00619-Issue_3169.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00620-indent-assign.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00620-indent-assign.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00621-nl_endif.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00621-nl_endif.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00622-indent-off-after-assign.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00622-indent-off-after-assign.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00623-pp_space_before_after.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00623-pp_space_before_after.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00624-pp_space_before_after.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00624-pp_space_before_after.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00625-pp_space_before_after.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00625-pp_space_before_after.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00626-pp_space_before_after.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00626-pp_space_before_after.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00631-nl_assign.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00631-nl_assign.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00632-nl_assign.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00632-nl_assign.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00633-bug_3156.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00633-bug_3156.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00701-function-def.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00701-function-def.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00702-function-def.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00702-function-def.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00703-function-def.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00703-function-def.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00710-add_long_comment.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00710-add_long_comment.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00721-nl-semicolon.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00721-nl-semicolon.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00730-nl_func_call.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00730-nl_func_call.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00731-nl_func_call.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00731-nl_func_call.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00732-nl_func_call.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00732-nl_func_call.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00733-nl_func_call.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00733-nl_func_call.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00734-nl_func_call.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00734-nl_func_call.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00801-fcn_type.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00801-fcn_type.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00802-funcfunc.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00802-funcfunc.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00803-fcn_type.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00803-fcn_type.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00901-code_width.c88
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00902-code_width.c75
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00903-code_width.c75
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00910-pascal_ptr.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00910-pascal_ptr.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00911-pascal_ptr.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00911-pascal_ptr.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01000-mod-paren.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01000-mod-paren.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01001-nl-comment.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01001-nl-comment.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01002-mod-paren.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01002-mod-paren.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01005-mod_case_brace.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01005-mod_case_brace.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01006-mod_case_brace.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01006-mod_case_brace.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01007-mod_case_brace.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01007-mod_case_brace.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01008-Issue_3366.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01008-Issue_3366.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01009-mod_move_case_return.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01009-mod_move_case_return.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01010-mod_move_case_return_bad.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01010-mod_move_case_return_bad.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01011-semicolons.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01011-semicolons.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01012-semicolons.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01012-semicolons.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01015-paren_indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01015-paren_indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01016-align_attr.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01016-align_attr.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01020-kw_subst.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01020-kw_subst.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01021-hello.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01021-hello.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01022-kw_subst.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01022-kw_subst.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01030-multi.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01030-multi.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01035-func_wrap.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01035-func_wrap.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01036-func_wrap.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01036-func_wrap.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01037-type_wrap.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01037-type_wrap.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01040-newline_after_endif.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01040-newline_after_endif.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01050-func_call_user.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01050-func_call_user.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01060-backslash-newline-lex.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01060-backslash-newline-lex.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01070-various_colons.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01070-various_colons.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01071-various_colons.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01071-various_colons.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01080-bug_1196.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01080-bug_1196.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02000-i2c-core.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02000-i2c-core.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02001-directfb.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02001-directfb.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02002-i2c-core.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02002-i2c-core.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02003-Issue_3353.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02003-Issue_3353.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02100-i2c-core.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02100-i2c-core.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02101-comment-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02101-comment-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02200-xml.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02200-xml.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02201-align-string.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02201-align-string.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02300-preproc-if.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02300-preproc-if.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02301-preproc-if.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02301-preproc-if.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02302-nl-cont.c23
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02303-nl-cont2.c18
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02310-empty-for.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02310-empty-for.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02311-pragma.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02311-pragma.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02315-pp_ret.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02315-pp_ret.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02320-nl_create_one_liner.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02320-nl_create_one_liner.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02325-sort_include.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02325-sort_include.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02330-one_liners.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02330-one_liners.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02410-ifdef-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02410-ifdef-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02411-ifdef-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02411-ifdef-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02412-ifdef-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02412-ifdef-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02413-ifdef-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02413-ifdef-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02414-whole_file_ifdef.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02414-whole_file_ifdef.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02415-endif.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02415-endif.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02416-cmt_nl_end.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02416-cmt_nl_end.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02421-cmt_multi.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02421-cmt_multi.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02422-cmt_multi.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02422-cmt_multi.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02423-cmt_multi_utf8.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02423-cmt_multi_utf8.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02431-cmt_right_align.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02431-cmt_right_align.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02432-cmt_right_align.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02432-cmt_right_align.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02440-string_utf8.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02440-string_utf8.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02441-utf8-identifiers.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02441-utf8-identifiers.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02451-nl_return_expr.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02451-nl_return_expr.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02452-nl_return_expr.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02452-nl_return_expr.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02453-nl_return_expr.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02453-nl_return_expr.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02454-nl_return_expr.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02454-nl_return_expr.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02455-macro-returns.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02455-macro-returns.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02456-macro-returns.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02456-macro-returns.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02457-nl_before_return.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02457-nl_before_return.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02460-freebsd.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02460-freebsd.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02486-doxy-comment.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02486-doxy-comment.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02487-doxy-comment.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02487-doxy-comment.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02501-custom_types_ssl.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02501-custom_types_ssl.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02502-custom_types_ssl.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02502-custom_types_ssl.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02504-align_keep_extra.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02504-align_keep_extra.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02505-align_assigns.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02505-align_assigns.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02506-align_assign_var_defs.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02506-align_assign_var_defs.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02510-asm.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02510-asm.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02520-pp_indent_with_tabs.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02520-pp_indent_with_tabs.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02521-pp_indent_with_tabs.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02521-pp_indent_with_tabs.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02522-pp_indent_with_tabs.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02522-pp_indent_with_tabs.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02523-pp_indent_with_tabs.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02523-pp_indent_with_tabs.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02524-pp_indent_with_tabs.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02524-pp_indent_with_tabs.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02525-pp_indent_with_tabs.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02525-pp_indent_with_tabs.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02530-pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02531-pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02532-pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02533-pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02534-pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02535-pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02536-pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02537-pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02538-pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02539-pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02540-pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02541-pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02542-pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02543-pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02544-pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02550-func_var_multi_paren.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02550-func_var_multi_paren.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/07630-indent-vbrace.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/07630-indent-vbrace.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/08399-gh399.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/08399-gh399.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09588-sf588.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09588-sf588.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09594-sf594.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09594-sf594.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09601-bug_637.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09601-sp_after_sparen.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09602-bug_671.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09602-bug_671.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09603-indent_ternary-1.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09603-indent_ternary-1.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09604-indent_ternary-2.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09604-indent_ternary-2.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09605-negative_value.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09605-negative_value.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09606-extern.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09606-extern.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09607-attribute.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09607-attribute.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09608-func_call_user2.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09608-func_call_user2.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09609-Issue_2279.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09609-Issue_2279.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09610-bug_i_876.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09610-bug_i_876.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09611-bug_i_222.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09611-bug_i_222.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09612-bug_1041.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09612-bug_1041.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09613-i1413.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09613-i1413.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09614-string_prefixes.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09614-string_prefixes.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09615-i1564.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09615-i1564.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09616-enum_comma_ifdef.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09616-enum_comma_ifdef.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09617-Issue_2360.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09617-Issue_2360.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09618-Issue_2360.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09618-Issue_2360.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09619-Issue_2411.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09619-Issue_2411.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09620-Issue_2640.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09620-Issue_2640.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09621-pp-before-func-def.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09621-pp-before-func-def.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09622-Issue_3356.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09622-Issue_3356.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09623-vbrace_one_liner.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09623-vbrace_one_liner.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10003-incdec_postfix_multiply.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10003-incdec_postfix_multiply.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10004-pragma_asm.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10004-pragma_asm.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10005-i1270.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10005-i1270.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10006-bug_2331.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10006-bug_2331.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10007-indent-macro-brace.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10007-indent-macro-brace.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10008-indent-macro-brace.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10008-indent-macro-brace.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10009-return-compound-literal.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10009-return-compound-literal.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10010-return-compound-literal.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10010-return-compound-literal.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10011-return-compound-literal.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10011-return-compound-literal.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10012-sparen-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10012-sparen-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10013-sparen-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10013-sparen-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10014-sparen-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10014-sparen-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10015-Issue_2845.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10015-Issue_2845.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10016-Issue_3233.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10016-Issue_3233.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10017-double-sparen.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10017-double-sparen.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10018-double-sparen.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10018-double-sparen.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10019-include-guard.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10019-include-guard.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10020-single_line_comment_after.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10020-single_line_comment_after.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10021-parenthesized_indirect_call.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10021-parenthesized_indirect_call.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10022-Issue_3269.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10022-Issue_3269.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10023-Issue_3272.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10023-Issue_3272.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10024-Issue_3274.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10024-Issue_3274.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10025-forever.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10025-forever.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10026-forever.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10026-forever.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10027-Issue_3327.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10027-Issue_3327.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10028-Issue_3339.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10028-Issue_3339.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10029-Issue_3339.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10029-Issue_3339.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10030-Issue_3339.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10030-Issue_3339.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10031-Issue_3342.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10031-Issue_3342.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10032-Issue_3345.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10032-Issue_3345.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10033-Issue_3343.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10033-Issue_3343.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10034-Issue_3343.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10034-Issue_3343.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10035-comment-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10035-comment-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10036-comment-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10036-comment-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10037-Issue_3362.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10037-Issue_3362.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10038-Issue_3362.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10038-Issue_3362.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10039-Issue_3370.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10039-Issue_3370.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10040-Issue_3377.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10040-Issue_3377.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10041-Issue_3351.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10041-Issue_3351.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10042-Issue_3376.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10042-Issue_3376.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10043-Issue_3376.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10043-Issue_3376.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10044-Issue_3376.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10044-Issue_3376.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10045-Issue_3376.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10045-Issue_3376.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10046-Issue_3402.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10046-Issue_3402.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10047-Issue_3421.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10047-Issue_3421.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10048-Issue_3431.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10048-Issue_3431.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10049-Issue_3436.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10049-Issue_3436.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10050-Issue_3192.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10050-Issue_3192.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10051-Issue_3454.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10051-Issue_3454.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10052-Issue_3472.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10052-Issue_3472.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10053-Issue_3476.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10053-Issue_3476.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10054-Issue_3480.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10054-Issue_3480.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10055-Issue_3493.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10055-Issue_3493.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10056-Issue_3496.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10056-Issue_3496.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10057-Issue_3496.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10057-Issue_3496.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10058-Issue_3496.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10058-Issue_3496.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10059-Issue_3496.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10059-Issue_3496.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10060-Issue_3548.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10060-Issue_3548.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10061-Issue_3556.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10061-Issue_3556.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10062-Issue_3561.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10062-Issue_3561.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10063-Issue_3565.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10063-Issue_3565.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10064-Issue_3567.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10064-Issue_3567.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10065-Issue_3567.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10065-Issue_3567.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10066-Issue_3580.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10066-Issue_3580.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10077-Issue_3582.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10077-Issue_3582.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10078-Issue_3587.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10078-Issue_3587.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10079-Issue_3662.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10079-Issue_3662.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10080-infinite-loops.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10080-infinite-loops.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10081-infinite-loops.c135
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10082-infinite-loops.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10082-infinite-loops.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10083-infinite-loops.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10083-infinite-loops.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10084-infinite-loops.c135
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10085-infinite-loops.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10085-infinite-loops.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10086-infinite-loops.c146
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10087-infinite-loops.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10087-infinite-loops.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10088-infinite-loops.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10088-infinite-loops.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10089-infinite-loops.c146
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10090-infinite-loops.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10090-infinite-loops.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10091-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10091-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10092-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10092-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10093-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10093-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10094-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10094-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10095-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10095-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10096-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10096-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10097-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10097-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10098-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10098-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10099-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10099-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10100-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10100-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10101-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10101-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10102-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10102-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10103-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10103-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10104-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10104-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10105-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10105-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10106-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10106-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10107-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10107-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10108-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10108-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10109-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10109-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10110-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10110-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10111-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10111-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10112-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10112-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10113-int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10113-int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10114-Issue_3989.c1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10120-sp_after_sparen.c9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10121-sp_after_sparen.c9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10122-sp_after_sparen.c9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10123-sp_after_sparen.c9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10124-Issue_3985.c14
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10125-Issue_3992.c6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/02102-indent-c.cpp1024
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/02103-output.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/02103-output.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10000-621_this-spacing.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10000-621_this-spacing.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10001-622_ifdef-indentation.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10001-622_ifdef-indentation.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10002-623_caret-spacing.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10002-623_caret-spacing.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10003-633_decl-in-func-typedef.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10003-633_decl-in-func-typedef.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10004-634_extern-c-no-block.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10004-634_extern-c-no-block.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10005-define-indentation.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10005-define-indentation.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10006-dont-detab-strings.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10006-dont-detab-strings.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10007-dont-process-defines.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10007-dont-process-defines.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10008-PR326_invalid-backslash-eol-csharp.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10008-PR326_invalid-backslash-eol-csharp.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10009-STUCK_macro-difficulties.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10009-STUCK_macro-difficulties.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10020-macro_spaces.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10020-macro_spaces.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10021-braces_align.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10021-braces_align.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10022-foreach.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10022-foreach.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10023-for_auto.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10023-for_auto.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10024-ifcomment.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10024-ifcomment.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10025-qtargs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10025-qtargs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10026-gcc_case_ellipsis.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10026-gcc_case_ellipsis.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10027-Issue_3058.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10027-Issue_3058.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10028-gcc_case_ellipsis.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10028-gcc_case_ellipsis.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10029-gcc_case_ellipsis.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10029-gcc_case_ellipsis.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10047-UNI-1334.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10047-UNI-1334.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10048-UNI-1335.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10048-UNI-1335.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10050-UNI-1337.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10050-UNI-1337.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10052-UNI-1339.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10052-UNI-1339.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10053-UNI-1340.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10053-UNI-1340.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10054-UNI-1344.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10054-UNI-1344.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10056-UNI-1346.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10056-UNI-1346.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10057-UNI-1347.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10057-UNI-1347.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10060-UNI-1350.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10060-UNI-1350.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10062-UNI-1356.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10062-UNI-1356.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10063-UNI-1358.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10063-UNI-1358.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10069-UNI-1980.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10069-UNI-1980.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10070-UNI-1981.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10070-UNI-1981.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10071-UNI-1983.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10071-UNI-1983.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10079-UNI-9650.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10079-UNI-9650.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10080-UNI-10496.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10080-UNI-10496.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10100-issue_564.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10100-issue_564.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10101-issue_574.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10101-issue_574.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10102-issue_574.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10102-issue_574.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10103-issue_574.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10103-issue_574.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10566-issue_1752.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10566-issue_1752.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/11000-UNI-12046.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/11000-UNI-12046.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/20002-UNI-32657.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/20002-UNI-32657.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/20011-UNI-38381.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/20011-UNI-38381.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30000-cout.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30000-cout.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30001-alt_tokens.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30001-alt_tokens.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30002-constructor.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30002-constructor.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30003-strings.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30003-strings.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30004-Issue_4036.cpp3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30005-Issue_4042.cpp7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30006-Issue_4027.cpp1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30007-Issue_4080.cpp6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30008-Issue_4094.cpp4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30009-Issue_3236.cpp20
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30010-class.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30010-class.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30011-misc.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30011-misc.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30012-misc2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30012-misc2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30013-sim.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30013-sim.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30014-ctor-var.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30014-ctor-var.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30015-exception.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30015-exception.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30016-custom-open.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30016-custom-open.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30017-custom-open.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30017-custom-open.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30018-class-addr.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30018-class-addr.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30019-wacky-template.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30019-wacky-template.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30020-bool.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30020-bool.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30021-byref.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30021-byref.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30022-extern_c.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30022-extern_c.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30023-templates.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30023-templates.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30024-class-init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30024-class-init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30025-class-init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30025-class-init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30026-byref.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30026-byref.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30027-byref.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30027-byref.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30028-byref.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30028-byref.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30029-init_align.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30029-init_align.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30030-Timestamp.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30030-Timestamp.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30031-operator.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30031-operator.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30032-operator.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30032-operator.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30033-operator.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30033-operator.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30034-operator_proto.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30034-operator_proto.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30035-operator_proto.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30035-operator_proto.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30036-operator.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30036-operator.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30037-operator_proto.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30037-operator_proto.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30038-operator.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30038-operator.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30039-operator_proto.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30039-operator_proto.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30040-nl-class.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30040-nl-class.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30041-nl-class.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30041-nl-class.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30042-Issue_2020.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30042-Issue_2020.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30043-nl_func_call_empty.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30043-nl_func_call_empty.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30044-nl_func_call_paren_empty.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30044-nl_func_call_paren_empty.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30045-nl_func_decl.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30045-nl_func_decl.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30046-nl_func_decl.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30046-nl_func_decl.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30047-nl_func_paren_empty.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30047-nl_func_paren_empty.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30048-nl_func_def_paren_empty.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30048-nl_func_def_paren_empty.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30049-nl_func_call_paren.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30049-nl_func_call_paren.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30050-nl-namespace.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30050-nl-namespace.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30051-nl-namespace.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30051-nl-namespace.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30052-try-catch-nl.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30052-try-catch-nl.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30053-exception.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30053-exception.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30054-Issue_2091.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30054-Issue_2091.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30055-nl_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30055-nl_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30056-nl_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30056-nl_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30057-nl_inside_namespace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30057-nl_inside_namespace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30058-nl_inside_namespace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30058-nl_inside_namespace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30059-Issue_2186.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30059-Issue_2186.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30060-Issue_1734.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30060-Issue_1734.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30061-class-init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30061-class-init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30062-class-init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30062-class-init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30063-class-init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30063-class-init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30064-class-init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30064-class-init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30065-Example.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30065-Example.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30066-class-init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30066-class-init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30067-nl_func_type_name.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30067-nl_func_type_name.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30068-nl_func_scope_name.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30068-nl_func_scope_name.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30069-class-implementation.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30069-class-implementation.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30070-nl_func_scope_name.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30070-nl_func_scope_name.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30071-lineEndings-Mac.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30071-lineEndings-Mac.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30072-lineEndings-Win.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30072-lineEndings-Win.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30073-lineEndings-Unix.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30073-lineEndings-Unix.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30074-bom.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30074-bom.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30075-goto.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30075-goto.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30076-Issue_2594.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30076-Issue_2594.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30077-Issue_2596.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30077-Issue_2596.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30078-Issue_2672-a.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30078-Issue_2672-a.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30079-Issue_2672-b.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30079-Issue_2672-b.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30080-nl_brace_brace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30080-nl_brace_brace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30081-Issue_2383.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30081-Issue_2383.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30082-Issue_931.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30082-Issue_931.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30083-Issue_995-do.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30083-Issue_995-do.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30084-Issue_1184.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30084-Issue_1184.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30085-align_class.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30085-align_class.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30086-align_class-constr.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30086-align_class-constr.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30087-Issue_1511.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30087-Issue_1511.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30088-Issue_2561.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30088-Issue_2561.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30089-Issue_2281.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30089-Issue_2281.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30090-bug_488.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30090-bug_488.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30091-bug_472.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30091-bug_472.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30092-bug_481.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30092-bug_481.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30093-bug_484.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30093-bug_484.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30094-bug_495.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30094-bug_495.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30095-bug_485.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30095-bug_485.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30096-bug_1854.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30096-bug_1854.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30097-issue_1946.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30097-issue_1946.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30098-Issue_2692.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30098-Issue_2692.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30099-bug_1127.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30099-bug_1127.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30100-templates.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30100-templates.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30101-templates.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30101-templates.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30102-templates.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30102-templates.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30103-templates.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30103-templates.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30104-templ_class.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30104-templ_class.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30105-av.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30105-av.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30106-templates2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30106-templates2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30107-templates2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30107-templates2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30108-templates3.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30108-templates3.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30109-templates4.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30109-templates4.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30110-class-init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30110-class-init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30111-bug_1346.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30111-bug_1346.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30112-bug_1432.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30112-bug_1432.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30113-bug_1452.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30113-bug_1452.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30114-bug_1462.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30114-bug_1462.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30115-Issue_1704.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30115-Issue_1704.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30116-Issue_1052.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30116-Issue_1052.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30117-Issue_2343.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30117-Issue_2343.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30118-Issue_2758.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30118-Issue_2758.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30119-Issue_2879.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30119-Issue_2879.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30120-sp_after_angle.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30120-sp_after_angle.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30121-sp_after_angle.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30121-sp_after_angle.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30122-sp_after_angle.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30122-sp_after_angle.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30123-sp_after_angle.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30123-sp_after_angle.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30124-sp_after_angle.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30124-sp_after_angle.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30125-sp_after_angle.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30125-sp_after_angle.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30126-sp_after_angle.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30126-sp_after_angle.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30127-Issue_2565.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30127-Issue_2565.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30128-Issue_2873.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30128-Issue_2873.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30129-Issue_2890.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30129-Issue_2890.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30130-if-constexpr.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30130-if-constexpr.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30131-Issue_3010.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30131-Issue_3010.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30132-sp_brace_catch.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30132-sp_brace_catch.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30133-Issue_3252.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30133-Issue_3252.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30134-Issue_3357.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30134-Issue_3357.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30135-Issue_3448.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30135-Issue_3448.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30136-Issue_3413.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30136-Issue_3413.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30137-Issue_3513-0.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30137-Issue_3513-0.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30138-Issue_3513-1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30138-Issue_3513-1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30139-Issue_3604.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30139-Issue_3604.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30140-Issue_3785.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30140-Issue_3785.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30141-Issue_1130.cpp39
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30142-Issue_3915.cpp9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30143-Issue_3919.cpp5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30144-Issue_3916.cpp29
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30145-Issue_3914.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30146-Issue_3614.cpp2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30147-Issue_3965.cpp4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30148-Issue_3965-2.cpp7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30149-Issue_3967.cc4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30150-Issue_3983.cpp9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30151-Issue_3996.cpp28
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30152-Issue_4023.cpp22
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30153-Issue_4026.cpp52
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30154-Issue_4132.cpp1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30160-Issue_3980.cpp5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30161-Discussion_3987.cpp5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30162-Issue_4239.cpp10
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30200-bug_1862.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30200-bug_1862.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30201-cmt_indent.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30201-cmt_indent.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30202-cmt_indent.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30202-cmt_indent.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30203-cmt_indent.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30203-cmt_indent.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30204-comment-align.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30204-comment-align.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30205-cmt_right.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30205-cmt_right.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30206-cmt_backslash_eol.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30206-cmt_backslash_eol.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30207-cmt_indent_pp.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30207-cmt_indent_pp.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30208-bug_1108.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30208-bug_1108.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30209-bug_1134.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30209-bug_1134.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30210-bug_1338.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30210-bug_1338.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30211-indent_comment_align_thresh.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30211-indent_comment_align_thresh.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30212-indent_comment_align_thresh.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30212-indent_comment_align_thresh.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30213-align_right_comment.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30213-align_right_comment.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30214-align_across_braces.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30214-align_across_braces.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30215-Issue_2099.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30215-Issue_2099.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30216-Issue_2302.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30216-Issue_2302.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30217-2138.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30217-2138.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30218-Issue_3710.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30218-Issue_3710.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30220-bug_1340.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30220-bug_1340.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30221-Issue_2914.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30221-Issue_2914.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30223-sp_enum_colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30223-sp_enum_colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30224-sp_enum_colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30224-sp_enum_colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30225-Issue_3176.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30225-Issue_3176.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30226-sp_enum_colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30226-sp_enum_colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30227-sp_inside_braces_enum.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30227-sp_inside_braces_enum.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30228-sp_inside_braces_enum.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30228-sp_inside_braces_enum.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30229-sp_inside_braces_enum.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30229-sp_inside_braces_enum.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30230-sp_type_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30230-sp_type_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30231-sp_type_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30231-sp_type_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30232-sp_type_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30232-sp_type_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30233-sp_type_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30233-sp_type_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30234-functype_param.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30234-functype_param.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30235-functype_param.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30235-functype_param.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30236-Issue_750.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30236-Issue_750.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30237-Issue_3920.cpp4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30240-align_func_params.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30240-align_func_params.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30241-align_func_params.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30241-align_func_params.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30242-align_func_params.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30242-align_func_params.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30243-align_func_params.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30243-align_func_params.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30244-align_func_params.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30244-align_func_params.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30245-align_func_params.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30245-align_func_params.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30246-align_func_params.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30246-align_func_params.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30247-Issue_2332.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30247-Issue_2332.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30248-Issue_2831.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30248-Issue_2831.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30249-align-330.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30249-align-330.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30250-align_fcall.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30250-align_fcall.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30251-align_fcall.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30251-align_fcall.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30252-Issue_3691.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30252-Issue_3691.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30253-align_left_shift.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30253-align_left_shift.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30254-align_left_shift2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30254-align_left_shift2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30255-align_constr.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30255-align_constr.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30256-func_call.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30256-func_call.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30257-func_call_chain.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30257-func_call_chain.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30258-casts.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30258-casts.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30259-sp_after_constr_colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30259-sp_after_constr_colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30260-var_def_gap.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30260-var_def_gap.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30261-align_var_def_thresh.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30261-align_var_def_thresh.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30262-align_var_def_thresh.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30262-align_var_def_thresh.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30263-align_var_def_thresh.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30263-align_var_def_thresh.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30264-Issue_2668.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30264-Issue_2668.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30265-long_br_cmt.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30265-long_br_cmt.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30266-Issue_2921.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30266-Issue_2921.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30267-Issue_2930.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30267-Issue_2930.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30268-Issue_3018.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30268-Issue_3018.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30270-const_throw.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30270-const_throw.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30271-sp_throw_paren.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30271-sp_throw_paren.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30272-sp_throw_paren.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30272-sp_throw_paren.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30273-sp_cparen_oparen.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30273-sp_cparen_oparen.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30274-sp_cparen_oparen.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30274-sp_cparen_oparen.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30275-bug_1321.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30275-bug_1321.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30278-bug_1439.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30278-bug_1439.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30279-indent-inside-ternary-operator.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30279-indent-inside-ternary-operator.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30280-sf557.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30280-sf557.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30281-Issue_2478.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30281-Issue_2478.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30282-Issue_2703.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30282-Issue_2703.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30283-Issue_3321.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30283-Issue_3321.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30284-Issue_2957.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30284-Issue_2957.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30285-Issue_2971.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30285-Issue_2971.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30286-Issue_3558.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30286-Issue_3558.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30287-Issue_3786.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30287-Issue_3786.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30287-Issue_3786.rerun.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30287-Issue_3786.rerun.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30290-align_left_shift.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30290-align_left_shift.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30291-indent_shift.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30291-indent_shift.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30292-eigen.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30292-eigen.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30293-pos_shift.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30293-pos_shift.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30294-pos_shift.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30294-pos_shift.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30295-pos_shift.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30295-pos_shift.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30300-enum_shr.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30300-enum_shr.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30301-enum_class.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30301-enum_class.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30302-bug_1315.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30302-bug_1315.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30303-Issue_2902.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30303-Issue_2902.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30310-braced_init_list.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30310-braced_init_list.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30311-uniform_initialization.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30311-uniform_initialization.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30312-return_init_list.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30312-return_init_list.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30313-sp_brace_brace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30313-sp_brace_brace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30314-sp_brace_brace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30314-sp_brace_brace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30315-return_braced_init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30315-return_braced_init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30316-Issue_2428.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30316-Issue_2428.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30317-braced_init_template_decltype.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30317-braced_init_template_decltype.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30318-Issue_2949.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30318-Issue_2949.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30319-Issue_2886.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30319-Issue_2886.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30320-returns.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30320-returns.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30321-returns.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30321-returns.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30322-returns.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30322-returns.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30323-returns.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30323-returns.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30324-returns.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30324-returns.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30325-returns.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30325-returns.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30326-indent_off_after_return.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30326-indent_off_after_return.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30327-indent_off_after_return.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30327-indent_off_after_return.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30328-call_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30328-call_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30329-call_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30329-call_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30330-Issue_3080.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30330-Issue_3080.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30340-issue_3105_1.cpp14
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30341-issue_3105_1.cpp15
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30342-issue_3105_1.cpp17
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30343-issue_3105_2.cpp94
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30344-issue_3105_2.cpp94
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30345-issue_3105_2.cpp98
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30353-indent_ternary-1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30353-indent_ternary-1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30400-attribute_specifier_seqs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30400-attribute_specifier_seqs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30401-Issue_2570.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30401-Issue_2570.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30701-function-def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30701-function-def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30702-function-def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30702-function-def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30703-function-def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30703-function-def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30705-func_param.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30705-func_param.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30706-bug_1020.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30706-bug_1020.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30711-semicolons.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30711-semicolons.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30712-bug_1158.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30712-bug_1158.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30713-fix_for_relational_operators.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30713-fix_for_relational_operators.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30714-Issue_1733.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30714-Issue_1733.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30715-Issue_2942.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30715-Issue_2942.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30720-custom-open-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30720-custom-open-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30721-Issue_2386.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30721-Issue_2386.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30730-qt-1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30730-qt-1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30731-qt-1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30731-qt-1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30732-Issue_2734.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30732-Issue_2734.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30740-sef.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30740-sef.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30741-al.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30741-al.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30742-delete.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30742-delete.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30745-Issue_2170.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30745-Issue_2170.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30746-DefaultAndDelete.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30746-DefaultAndDelete.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30747-DefaultAndDelete.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30747-DefaultAndDelete.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30748-DefaultAndDelete.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30748-DefaultAndDelete.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30750-lambda.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30750-lambda.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30751-lambda.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30751-lambda.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30752-lambda.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30752-lambda.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30753-lambda2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30753-lambda2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30754-bug_i_682.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30754-bug_i_682.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30755-bug_i_938.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30755-bug_i_938.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30756-bug_1296.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30756-bug_1296.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30757-Issue_3054.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30757-Issue_3054.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30758-Issue_3054-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30758-Issue_3054-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30759-lambda2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30759-lambda2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30760-bug_1296.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30760-bug_1296.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30761-out-668.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30761-out-668.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30762-out-668.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30762-out-668.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30763-Issue_2166.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30763-Issue_2166.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30764-Issue_2591.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30764-Issue_2591.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30765-lambda.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30765-lambda.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30766-lambda.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30766-lambda.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30767-lambda.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30767-lambda.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30768-sp_cpp_lambda_fparen.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30768-sp_cpp_lambda_fparen.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30770-lambda.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30770-lambda.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30771-lambda.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30771-lambda.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30772-lambda.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30772-lambda.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30773-lambda.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30773-lambda.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30774-lambda.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30774-lambda.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30775-lambda.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30775-lambda.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30776-sp_cpp_lambda_fparen.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30776-sp_cpp_lambda_fparen.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30777-sp_cpp_lambda_fparen.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30777-sp_cpp_lambda_fparen.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30780-lambda_in_one_liner.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30780-lambda_in_one_liner.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30781-lambda_brace_list.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30781-lambda_brace_list.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30790-Issue_2795.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30790-Issue_2795.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30791-Issue_3203.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30791-Issue_3203.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30800-align-star-amp-pos.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30800-align-star-amp-pos.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30801-align-star-amp-pos.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30801-align-star-amp-pos.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30802-align-star-amp-pos.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30802-align-star-amp-pos.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30803-bug_1403.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30803-bug_1403.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30805-ptr-star.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30805-ptr-star.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30806-ptr-star.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30806-ptr-star.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30807-ptr-star.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30807-ptr-star.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30808-ptr-star.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30808-ptr-star.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30809-bug_1289.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30809-bug_1289.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30810-ptr-star.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30810-ptr-star.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30811-misc3.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30811-misc3.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30812-misc4.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30812-misc4.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30813-misc5.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30813-misc5.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30814-misc6.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30814-misc6.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30815-cmt-reflow.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30815-cmt-reflow.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30816-for_long.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30816-for_long.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30817-cmt-cpp-cont.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30817-cmt-cpp-cont.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30818-bug_1169.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30818-bug_1169.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30819-bug_1170.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30819-bug_1170.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30820-pp-define-indent.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30820-pp-define-indent.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30821-pp_indent_case.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30821-pp_indent_case.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30822-pp_indent_brace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30822-pp_indent_brace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30823-pp_indent_func_def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30823-pp_indent_func_def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30824-pp_indent_extern.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30824-pp_indent_extern.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30825-Issue_1966.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30825-Issue_1966.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30826-Issue_2319.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30826-Issue_2319.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30827-Issue_1167.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30827-Issue_1167.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30828-bug_1691.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30828-bug_1691.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30829-Issue_2726.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30829-Issue_2726.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30830-kw_subst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30830-kw_subst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30831-kw_subst2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30831-kw_subst2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30832-kw_subst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30832-kw_subst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30840-nl_func_type_name.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30840-nl_func_type_name.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30841-nl_func_type_name.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30841-nl_func_type_name.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30842-nl_func_type_name.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30842-nl_func_type_name.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30843-nl_func_type_name.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30843-nl_func_type_name.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30844-Issue_2771.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30844-Issue_2771.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30845-deref.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30845-deref.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30846-Issue_3197.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30846-Issue_3197.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30850-sp_cmt_cpp_start.cc (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30850-sp_cmt_cpp_start.cc)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30852-Issue_2138.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30852-Issue_2138.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30853-noexcept.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30853-noexcept.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30854-Issue_1703.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30854-Issue_1703.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30855-cpp_move.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30855-cpp_move.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30856-sp_cmt_cpp_region.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30856-sp_cmt_cpp_region.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30857-sp_cmt_cpp_region.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30857-sp_cmt_cpp_region.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30860-sf574.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30860-sf574.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30870-cmt_insert.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30870-cmt_insert.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30871-cmt_insert.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30871-cmt_insert.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30872-Issue_2752.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30872-Issue_2752.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30880-bug_1758.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30880-bug_1758.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30881-bug_1758-f.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30881-bug_1758-f.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30900-region.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30900-region.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30901-region.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30901-region.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30902-region.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30902-region.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30903-region.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30903-region.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30907-Issue_1813.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30907-Issue_1813.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30908-Issue_1813-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30908-Issue_1813-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30909-Issue_1813-3.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30909-Issue_1813-3.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30910-indent_namespace.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30910-indent_namespace.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30911-indent_namespace.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30911-indent_namespace.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30912-long_namespace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30912-long_namespace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30913-indent_namespace2.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30913-indent_namespace2.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30914-indent_namespace_single_indent.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30914-indent_namespace_single_indent.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30915-bug_1235.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30915-bug_1235.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30916-Issue_1737.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30916-Issue_1737.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30917-Issue_2345-3.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30917-Issue_2345-3.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30918-Issue_2345-4.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30918-Issue_2345-4.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30919-Issue_2387.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30919-Issue_2387.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30920-indent-off.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30920-indent-off.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30921-variadic-template.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30921-variadic-template.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30922-variadic-template.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30922-variadic-template.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30923-sf.2886991.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30923-sf.2886991.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30924-sf.2886991.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30924-sf.2886991.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30925-function-def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30925-function-def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30926-function-def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30926-function-def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30927-function-def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30927-function-def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30928-function-def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30928-function-def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30929-bug_1324.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30929-bug_1324.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30930-indent_var_def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30930-indent_var_def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30931-indent_var_def_cont.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30931-indent_var_def_cont.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30932-indent_var_def_cont.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30932-indent_var_def_cont.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30933-indent_paren_after_func_def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30933-indent_paren_after_func_def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30934-indent_paren_after_func_decl.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30934-indent_paren_after_func_decl.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30935-indent-misc.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30935-indent-misc.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30936-indent_braces_no.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30936-indent_braces_no.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30937-indent_param.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30937-indent_param.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30938-indent_switch_pp.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30938-indent_switch_pp.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30939-indent_paren_after_func_call.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30939-indent_paren_after_func_call.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30940-case-brace-remove.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30940-case-brace-remove.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30941-Issue_2150.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30941-Issue_2150.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30942-Issue_1692.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30942-Issue_1692.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30943-Issue_2735.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30943-Issue_2735.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30945-sf.3266678.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30945-sf.3266678.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30946-sf.3315874.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30946-sf.3315874.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30947-bug_1689.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30947-bug_1689.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30948-sp_before_byref_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30948-sp_before_byref_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30949-Issue_2757.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30949-Issue_2757.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30950-sp_before_tr_emb_cmt_input.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30950-sp_before_tr_emb_cmt_input.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30951-sp_before_tr_emb_cmt_input.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30951-sp_before_tr_emb_cmt_input.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30952-sp_before_constr_colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30952-sp_before_constr_colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30953-constr_colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30953-constr_colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30954-Issue_2305.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30954-Issue_2305.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30955-indent_ctor_init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30955-indent_ctor_init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30956-indent_ctor_init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30956-indent_ctor_init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30957-class-init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30957-class-init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30958-nl_for_leave_one_liners.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30958-nl_for_leave_one_liners.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30959-nl_for_leave_one_liners.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30959-nl_for_leave_one_liners.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30960-Issue_2151.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30960-Issue_2151.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30961-Issue_2232.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30961-Issue_2232.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30962-nl_assign_leave_one_liners.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30962-nl_assign_leave_one_liners.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30963-Issue_2907.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30963-Issue_2907.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30964-Issue_2823.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30964-Issue_2823.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30965-return_remove.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30966-return_remove.cpp9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30970-Issue_2219.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30970-Issue_2219.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30971-Issue_2224.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30971-Issue_2224.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30972-Issue_2229.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30972-Issue_2229.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30973-Issue_2236.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30973-Issue_2236.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30974-using-alias-in-define.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30974-using-alias-in-define.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31000-digraph.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31000-digraph.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31001-digraph.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31001-digraph.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31050-pos_assign.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31050-pos_assign.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31051-pos_assign.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31051-pos_assign.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31101-nl_before_brace_open_test.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31101-nl_before_brace_open_test.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31102-nl_before_brace_open_test.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31102-nl_before_brace_open_test.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31103-nl_before_brace_open_test.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31103-nl_before_brace_open_test.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31104-nl_before_brace_open_test.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31104-nl_before_brace_open_test.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31400-trailing_return.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31400-trailing_return.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31401-trailing_return.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31401-trailing_return.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31402-trailing_return.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31402-trailing_return.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31403-trailing_return_byref_ptr.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31403-trailing_return_byref_ptr.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31404-trailing_return_byref_ptr.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31404-trailing_return_byref_ptr.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31450-indent_func_alias_prototype.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31450-indent_func_alias_prototype.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31451-indent_func_alias_prototype.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31451-indent_func_alias_prototype.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31452-indent_func_alias_prototype.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31452-indent_func_alias_prototype.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31562-sf562.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31562-sf562.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31567-sf567.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31567-sf567.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31568-Issue_2368.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31568-Issue_2368.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31583-sf583.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31583-sf583.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31593-sf593.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31593-sf593.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31594-issue_672.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31594-issue_672.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31595-issue_1778.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31595-issue_1778.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31596-issue_1782.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31596-issue_1782.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31597-issue_1804.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31597-issue_1804.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31598-Issue_1753.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31598-Issue_1753.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31599-parameter-packs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31599-parameter-packs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31600-parameter-packs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31600-parameter-packs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31601-parameter-packs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31601-parameter-packs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31602-parameter-packs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31602-parameter-packs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31603-parameter-packs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31603-parameter-packs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31604-parameter-packs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31604-parameter-packs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31605-parameter-packs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31605-parameter-packs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31606-parameter-packs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31606-parameter-packs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31607-parameter-packs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31607-parameter-packs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31608-parameter-packs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31608-parameter-packs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31609-parameter-packs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31609-parameter-packs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31610-Issue_2085.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31610-Issue_2085.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31611-parameter-packs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31611-parameter-packs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31612-parameter-packs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31612-parameter-packs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31613-parameter-packs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31613-parameter-packs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31614-Issue_3309.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31614-Issue_3309.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31615-Issue_3309.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31615-Issue_3309.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31616-Issue_3309.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31616-Issue_3309.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31620-sp_after_type.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31620-sp_after_type.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31621-sp_after_type.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31621-sp_after_type.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31622-sp_after_type.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31622-sp_after_type.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31623-sp_after_type.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31623-sp_after_type.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31624-sp_after_type.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31624-sp_after_type.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31625-sp_after_type.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31625-sp_after_type.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31626-issue_1916.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31626-issue_1916.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31627-issue_1916.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31627-issue_1916.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31628-issue_1916.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31628-issue_1916.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31629-issue_1916.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31629-issue_1916.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31630-issue_1916.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31630-issue_1916.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31631-issue_1916.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31631-issue_1916.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31632-issue_1916.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31632-issue_1916.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31633-sp_after_decltype.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31633-sp_after_decltype.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31634-sp_after_decltype.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31634-sp_after_decltype.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31635-sp_decltype.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31635-sp_decltype.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31636-Issue_1923.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31636-Issue_1923.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31637-Issue_3446.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31637-Issue_3446.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31638-misc2.cpp58
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31639-misc2.cpp58
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31640-misc2.cpp58
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31641-misc2.cpp58
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31660-issue_1919.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31660-issue_1919.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31661-Issue_3097.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31661-Issue_3097.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31662-var_def_blks.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31662-var_def_blks.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31663-var_def_blks.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31663-var_def_blks.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31664-var_def_blks.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31664-var_def_blks.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31665-var_def_blks.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31665-var_def_blks.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31666-var_def_blks.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31666-var_def_blks.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31667-var_def_blks.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31667-var_def_blks.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31668-var_def_blks.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31668-var_def_blks.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31700-toggle_processing_cmt.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31700-toggle_processing_cmt.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31701-toggle_processing_cmt2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31701-toggle_processing_cmt2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31702-toggle_processing_cmt.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31702-toggle_processing_cmt.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31703-toggle_processing_cmt.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31703-toggle_processing_cmt.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31710-string_replace_tab_chars.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31710-string_replace_tab_chars.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31711-string_replace_tab_chars.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31711-string_replace_tab_chars.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31720-bit-colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31720-bit-colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31721-Issue_2689.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31721-Issue_2689.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31730-ms-style-ref.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31730-ms-style-ref.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31740-I2102.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31740-I2102.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32000-sp_skip_vbrace_tokens.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32000-sp_skip_vbrace_tokens.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32001-issue_547_for_each.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32001-issue_547_for_each.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32002-proto-wrap.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32002-proto-wrap.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32003-issue_633_typename.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32003-issue_633_typename.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32004-issue_624_angle.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32004-issue_624_angle.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32005-issue_633_typename.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32005-issue_633_typename.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32006-bug_i_687.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32006-bug_i_687.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32007-Issue_3052.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32007-Issue_3052.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32008-Issue_3034.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32008-Issue_3034.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32009-Issue_3422.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32009-Issue_3422.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32010-Issue_3422.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32010-Issue_3422.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32100-cpp17.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32100-cpp17.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32105-I2103.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32105-I2103.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32115-2185.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32115-2185.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33000-tab-0.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33000-tab-0.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33001-tab-1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33001-tab-1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33002-cmt_convert_tab_to_spaces.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33002-cmt_convert_tab_to_spaces.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33003-cmt_convert_tab_to_spaces.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33003-cmt_convert_tab_to_spaces.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33004-DoxygenComments.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33004-DoxygenComments.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33005-DoxygenComments.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33005-DoxygenComments.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33006-string_replace_tab_chars.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33006-string_replace_tab_chars.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33007-NewLine.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33007-NewLine.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33008-NewLine.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33008-NewLine.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33009-NewLine0.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33009-NewLine0.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33010-Q_EMIT.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33010-Q_EMIT.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33011-static.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33011-static.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33012-Q_SIGNAL_SLOT.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33012-Q_SIGNAL_SLOT.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33013-Q_2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33013-Q_2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33014-DB.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33014-DB.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33015-Q_FOREACH.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33015-Q_FOREACH.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33016-indent.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33016-indent.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33017-bug_1160.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33017-bug_1160.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33019-bug_657.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33019-bug_657.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33020-bug_662.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33020-bug_662.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33021-bug_633.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33021-bug_633.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33022-bug_634.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33022-bug_634.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33023-bug_651.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33023-bug_651.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33024-bug_653.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33024-bug_653.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33025-bug_654.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33025-bug_654.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33026-bug_631.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33026-bug_631.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33027-bug_664.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33027-bug_664.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33028-braces_empty.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33028-braces_empty.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33029-cast.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33029-cast.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33030-Q_FOREVER.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33030-Q_FOREVER.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33031-bug_612.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33031-bug_612.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33032-bug_670.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33032-bug_670.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33033-bug_670.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33033-bug_670.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33034-bug_671.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33034-bug_671.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33035-patch_32.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33035-patch_32.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33036-bug_663.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33036-bug_663.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33037-func_class.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33037-func_class.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33038-func_class.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33038-func_class.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33039-mod_remove_empty_return.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33039-mod_remove_empty_return.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33040-bug_i_411.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33040-bug_i_411.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33041-bug_i_411.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33041-bug_i_411.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33042-bug_i_411.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33042-bug_i_411.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33043-bug_i_478.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33043-bug_i_478.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33044-bug_i_481.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33044-bug_i_481.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33045-bug_i_width.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33045-bug_i_width.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33046-bug_i_409.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33046-bug_i_409.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33047-bug_i_409.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33047-bug_i_409.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33048-bug_i_405.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33048-bug_i_405.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33049-pp-pragma.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33049-pp-pragma.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33050-issue_523.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33050-issue_523.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33051-bug_i_503.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33051-bug_i_503.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33052-bug_i_512.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33052-bug_i_512.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33053-for_auto.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33053-for_auto.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33054-bug_i_825.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33054-bug_i_825.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33056-bug_33056.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33056-bug_33056.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33057-bug_1349.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33057-bug_1349.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33058-Issue_3164.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33058-Issue_3164.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33059-mod_remove_empty_return-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33059-mod_remove_empty_return-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33060-if_constexpr.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33060-if_constexpr.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33061-if_chain_braces.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33061-if_chain_braces.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33062-if_chain_braces.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33062-if_chain_braces.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33063-if_chain_braces.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33063-if_chain_braces.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33064-if_chain_braces.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33064-if_chain_braces.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33065-Issue_3316.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33065-Issue_3316.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33066-if_chain_braces.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33066-if_chain_braces.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33067-if_chain_braces.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33067-if_chain_braces.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33069-Issue_2195.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33069-Issue_2195.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33070-multi_line.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33070-multi_line.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33071-multi_line.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33071-multi_line.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33072-multi_line.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33072-multi_line.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33073-multi_line.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33073-multi_line.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33074-multi_line.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33074-multi_line.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33075-multi_line.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33075-multi_line.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33076-multi_line.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33076-multi_line.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33077-multi_line.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33077-multi_line.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33078-multi_line.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33078-multi_line.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33079-multi_line.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33079-multi_line.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33080-multi_line.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33080-multi_line.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33081-bug_i_552.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33081-bug_i_552.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33082-namespace_namespace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33082-namespace_namespace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33083-bug_i_359.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33083-bug_i_359.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33084-op_sym_empty.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33084-op_sym_empty.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33085-bug_i_323.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33085-bug_i_323.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33086-bug_i_568.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33086-bug_i_568.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33087-bug_i_596.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33087-bug_i_596.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33088-bug_i_197.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33088-bug_i_197.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33089-bug_643.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33089-bug_643.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33090-gh555.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33090-gh555.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33091-squeeze_ifdef.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33091-squeeze_ifdef.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33092-squeeze_ifdef.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33092-squeeze_ifdef.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33093-sp_angle_paren.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33093-sp_angle_paren.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33094-sp_angle_paren.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33094-sp_angle_paren.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33095-bug_i_322.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33095-bug_i_322.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33096-squeeze_ifdef.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33096-squeeze_ifdef.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33097-enum_comma.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33097-enum_comma.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33098-enum_comma.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33098-enum_comma.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33099-enum_comma.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33099-enum_comma.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33100-enum_comma.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33100-enum_comma.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33101-enum_comma.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33101-enum_comma.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33102-enum_comma.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33102-enum_comma.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33103-bug_858.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33103-bug_858.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33104-bug_858.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33104-bug_858.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33105-bug_1001.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33105-bug_1001.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33106-pos_bool_in_template.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33106-pos_bool_in_template.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33107-Issue_2688.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33107-Issue_2688.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33108-Issue_2045.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33108-Issue_2045.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33109-Issue_3205.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33109-Issue_3205.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33110-enum.cpp203
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33120-Issue_2149.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33120-Issue_2149.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33150-bug_i_753.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33150-bug_i_753.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33151-bug_i_752.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33151-bug_i_752.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33152-bug_1004.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33152-bug_1004.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33160-bug_1112.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33160-bug_1112.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33161-byref-3.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33161-byref-3.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33162-sp_not_not.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33162-sp_not_not.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33180-pp_multi_comment.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33180-pp_multi_comment.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33181-Issue_2759.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33181-Issue_2759.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33182-Issue_2794.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33182-Issue_2794.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33200-first_len_minimum.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33200-first_len_minimum.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33201-indent_ctor_members_twice.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33201-indent_ctor_members_twice.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33202-initlist_leading_commas.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33202-initlist_leading_commas.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33203-Issue_2574.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33203-Issue_2574.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33204-Issue_2582.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33204-Issue_2582.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33205-Issue_3198.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33205-Issue_3198.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33210-templates4.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33210-templates4.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33211-pp_multi_comment.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33211-pp_multi_comment.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33212-pp-define-indent.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33212-pp-define-indent.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33213-disable_macro.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33213-disable_macro.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33214-Issue_2742.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33214-Issue_2742.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33215-Issue_3055.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33215-Issue_3055.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33216-Issue_3055-a.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33216-Issue_3055-a.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33217-Issue_3113.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33217-Issue_3113.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34001-nl_before_after.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34001-nl_before_after.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34002-bug_i_793.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34002-bug_i_793.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34003-nl_max_blank_in_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34003-nl_max_blank_in_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34004-nl_max_blank_in_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34004-nl_max_blank_in_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34005-nl_max_blank_in_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34005-nl_max_blank_in_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34006-bug_i_575.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34006-bug_i_575.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34007-bug_i_928.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34007-bug_i_928.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34100-bug_i_525.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34100-bug_i_525.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34101-bug_i_646.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34101-bug_i_646.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34105-bug_i_663.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34105-bug_i_663.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34108-bug_i_666.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34108-bug_i_666.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34112-bug_i_889.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34112-bug_i_889.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34113-bug_902.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34113-bug_902.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34114-bug_902.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34114-bug_902.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34115-nl_before_func_body_def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34115-nl_before_func_body_def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34116-issue_2000.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34116-issue_2000.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34117-extern_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34117-extern_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34118-Issue_2163.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34118-Issue_2163.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34120-bug_i_999.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34120-bug_i_999.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34121-bug_1717.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34121-bug_1717.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34122-Issue_2440.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34122-Issue_2440.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34123-Issue_2440_nl.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34123-Issue_2440_nl.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34130-bug_i_1000.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34130-bug_i_1000.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34131-bug_i_1000.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34131-bug_i_1000.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34132-new_op.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34132-new_op.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34133-new_op.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34133-new_op.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34134-new_op.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34134-new_op.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34135-new_op.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34135-new_op.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34136-sp_balance_nested_parens.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34136-sp_balance_nested_parens.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34140-bug_1027.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34140-bug_1027.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34141-bug_1005.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34141-bug_1005.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34142-I1112-1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34142-I1112-1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34143-I1112-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34143-I1112-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34144-I1112-3.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34144-I1112-3.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34145-i683.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34145-i683.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34146-bug_1002.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34146-bug_1002.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34147-bug_1002.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34147-bug_1002.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34148-bug_1139.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34148-bug_1139.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34149-bug_1139.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34149-bug_1139.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34150-bug_1032.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34150-bug_1032.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34151-bug_666.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34151-bug_666.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34152-bug_1068.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34152-bug_1068.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34153-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34153-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34154-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34154-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34155-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34155-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34156-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34156-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34157-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34157-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34158-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34158-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34159-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34159-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34160-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34160-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34161-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34161-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34162-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34162-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34163-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34163-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34164-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34164-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34165-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34165-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34166-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34166-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34168-Issue_2910.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34168-Issue_2910.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34169-init-list-call.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34169-init-list-call.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34170-i1082.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34170-i1082.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34171-i1181.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34171-i1181.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34172-i1165.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34172-i1165.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34173-i1464.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34173-i1464.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34174-i1466.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34174-i1466.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34175-i1509.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34175-i1509.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34176-i1509_bug_1112_correction.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34176-i1509_bug_1112_correction.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34177-sp_func_call_paren.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34177-sp_func_call_paren.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34178-Issue_3237.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34178-Issue_3237.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34179-arith_vs_byref.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34179-arith_vs_byref.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34180-bug_1402.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34180-bug_1402.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34190-bug_1003.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34190-bug_1003.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34191-comment-align-multiline.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34191-comment-align-multiline.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34192-i1207.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34192-i1207.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34193-i1218.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34193-i1218.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34194-sp_arith_additive.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34194-sp_arith_additive.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34195-sp_arith_additive.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34195-sp_arith_additive.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34196-Issue_1460.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34196-Issue_1460.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34197-bug_1161.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34197-bug_1161.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34198-bug_1249.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34198-bug_1249.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34199-not_lambda.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34199-not_lambda.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34200-i1536.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34200-i1536.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34201-i1565.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34201-i1565.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34202-i1617.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34202-i1617.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34203-i1516.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34203-i1516.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34204-func_param_indent_leading_comma.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34204-func_param_indent_leading_comma.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34205-bug_1395.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34205-bug_1395.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34206-for_loop_head.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34206-for_loop_head.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34207-for_loop_head.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34207-for_loop_head.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34208-conversion_operator.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34208-conversion_operator.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34209-lambda_selfcalling.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34209-lambda_selfcalling.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34210-override_virtual.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34210-override_virtual.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34211-anonymous_enum.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34211-anonymous_enum.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34212-func_class.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34212-func_class.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34250-bug_1607.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34250-bug_1607.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34251-bug_1649.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34251-bug_1649.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34252-issue_2001.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34252-issue_2001.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34253-friends.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34253-friends.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34254-issue_1985.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34254-issue_1985.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34255-eat_blanks_after_codewidth.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34255-eat_blanks_after_codewidth.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34256-Issue_2836.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34256-Issue_2836.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34257-brace_init_stdint_macros.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34257-brace_init_stdint_macros.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34258-long_lines.cpp34
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34280-UNI-29935.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34280-UNI-29935.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34290-brace_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34290-brace_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34291-brace_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34291-brace_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34292-brace_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34292-brace_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34293-brace_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34293-brace_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34294-brace_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34294-brace_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34295-brace_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34295-brace_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34296-i1768.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34296-i1768.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34297-align-assign-mixed.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34297-align-assign-mixed.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34298-align-assign-mixed.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34298-align-assign-mixed.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34299-align-assign-mixed.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34299-align-assign-mixed.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34300-bug_1236.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34300-bug_1236.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34301-nl_fdef_brace_cond-f.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34301-nl_fdef_brace_cond-f.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34302-nl_fdef_brace_cond-r.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34302-nl_fdef_brace_cond-r.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34303-nl_fdef_brace_cond-fr.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34303-nl_fdef_brace_cond-fr.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34304-nl_fdef_brace_cond-rf.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34304-nl_fdef_brace_cond-rf.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34305-issue_2124-1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34305-issue_2124-1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34306-issue_2124-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34306-issue_2124-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34307-2203.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34307-2203.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34308-enum_comment_wrap.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34308-enum_comment_wrap.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34309-issue_2209-1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34309-issue_2209-1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34310-issue_2209-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34310-issue_2209-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34311-Issue_2250.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34311-Issue_2250.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34312-Issue_2101.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34312-Issue_2101.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34313-Issue_2437.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34313-Issue_2437.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34314-Issue_2604.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34314-Issue_2604.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34315-align_func_proto_thresh.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34315-align_func_proto_thresh.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34316-align_func_proto_thresh.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34316-align_func_proto_thresh.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34317-align_func_proto_thresh.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34317-align_func_proto_thresh.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34318-align_assign_func_proto.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34318-align_assign_func_proto.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34319-align_func_proto_thresh2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34319-align_func_proto_thresh2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34320-align_func_proto_thresh2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34320-align_func_proto_thresh2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34321-bug_2285.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34321-bug_2285.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34322-issue_2623.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34322-issue_2623.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34323-issue_2623.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34323-issue_2623.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34324-issue_2623.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34324-issue_2623.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34325-Issue_3025.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34325-Issue_3025.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34326-Issue_3040.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34326-Issue_3040.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34327-Issue_3044.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34327-Issue_3044.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34328-Issue_3048.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34328-Issue_3048.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34330-Issue_3061_0nl.cpp17
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34331-Issue_3061_1nl.cpp17
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34332-Issue_3061_2nl.cpp17
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34333-Issue_3061_0nl.cpp17
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34334-Issue_3061_1nl.cpp17
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34335-Issue_3061_2nl.cpp17
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34336-Issue_3061_0nl.cpp18
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34337-Issue_3061_1nl.cpp18
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34338-Issue_3061_2nl.cpp18
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34339-Issue_3061_0nl.cpp19
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34340-Issue_3061_1nl.cpp19
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34341-Issue_3061_2nl.cpp19
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34350-indent_comma_brace_glob.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34350-indent_comma_brace_glob.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34351-indent_comma_brace_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34351-indent_comma_brace_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34360-nl_before_struct_struct.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34360-nl_before_struct_struct.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34361-nl_before_struct_scoped_enum.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34361-nl_before_struct_scoped_enum.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34370-asm_block_pp.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34370-asm_block_pp.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34500-sp_before_case_colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34500-sp_before_case_colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34501-sp_endif_cmt.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34501-sp_endif_cmt.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34502-sp_enum_assign.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34502-sp_enum_assign.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34503-sp_enum_assign.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34503-sp_enum_assign.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34504-issue_574-i.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34504-issue_574-i.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34505-Issue_3220.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34505-Issue_3220.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34506-Issue_3220.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34506-Issue_3220.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34507-Issue_3220.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34507-Issue_3220.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34508-Issue_3220.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3220.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34509-byref-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34509-byref-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34510-byref-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34510-byref-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34511-byref-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34511-byref-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34512-byref-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34512-byref-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34513-sp_cond_question.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34513-sp_cond_question.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34514-sp_cond_question.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34514-sp_cond_question.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34515-sp_cond_question.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34515-sp_cond_question.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34516-sp_cond_question.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34516-sp_cond_question.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34517-semi.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34517-semi.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34518-semi.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34518-semi.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34519-semi.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34519-semi.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34520-comma.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34520-comma.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34521-comma.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34521-comma.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34522-comma.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34522-comma.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34523-gcc_case_ellipsis.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34523-gcc_case_ellipsis.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34524-bug_1002.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34524-bug_1002.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34525-sp_paren_brace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34525-sp_paren_brace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34526-sp_paren_brace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34526-sp_paren_brace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34527-sp_paren_brace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34527-sp_paren_brace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34528-cmt_trailing_single_line_c_to_cpp.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34528-cmt_trailing_single_line_c_to_cpp.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34529-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34529-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34530-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34530-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34531-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34531-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34532-type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34532-type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34533-templates.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34533-templates.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34534-templates.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34534-templates.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34535-sp_after_angle.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34535-sp_after_angle.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34536-sp_after_angle.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34536-sp_after_angle.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34540-byref-4.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34540-byref-4.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34541-byref-4.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34541-byref-4.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34542-byref-4.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34542-byref-4.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34543-byref-4.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34543-byref-4.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34550-throws.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34550-throws.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34551-throws.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34551-throws.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34552-throws.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34552-throws.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34553-throws.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34553-throws.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34554-throws.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34554-throws.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34555-throws.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34555-throws.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34556-throws.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34556-throws.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34557-throws.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34557-throws.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/39000-UNI-64325.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/39000-UNI-64325.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60001-UNI-2650.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60001-UNI-2650.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60002-UNI-16283.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60002-UNI-16283.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60003-UNI-1288.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60003-UNI-1288.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60006-UNI-2049.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60006-UNI-2049.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60017-UNI-2683.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60017-UNI-2683.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60022-UNI-18439.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60022-UNI-18439.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60025-UNI-19894.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60025-UNI-19894.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60027-UNI-21506.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60027-UNI-21506.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60028-UNI-21509.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60028-UNI-21509.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60029-UNI-21510.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60029-UNI-21510.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60030-UNI-21727.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60030-UNI-21727.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60031-UNI-21728.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60031-UNI-21728.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60032-UNI-21729.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60032-UNI-21729.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60036-UNI-2680.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60036-UNI-2680.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60038-UNI-30088.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60038-UNI-30088.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60039-UNI-30628.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60039-UNI-30628.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60042-UNI-18777.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60042-UNI-18777.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60043-i2033.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60043-i2033.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60044-i2116.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60044-i2116.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60045-align_asterisk_after_type_cast.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60045-align_asterisk_after_type_cast.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60046-align_continuation_left_shift.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60046-align_continuation_left_shift.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60047-align_default_after_override.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60047-align_default_after_override.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60048-bug_2322.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60048-bug_2322.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60049-bug_2402.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60049-bug_2402.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60051-bug_2371.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60051-bug_2371.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60052-bug_2433_1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60052-bug_2433_1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60053-bug_2433_2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60053-bug_2433_2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60054-interface-keyword-in-cpp.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60054-interface-keyword-in-cpp.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60055-issue_3116.cpp233
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60056-issue_3116-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60056-issue_3116-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60057-issue_3116.cpp233
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60058-issue_3330.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60058-issue_3330.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60059-indent_ctor_init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60059-indent_ctor_init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60060-returns.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60060-returns.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60061-returns.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60061-returns.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60062-returns.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60062-returns.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60063-returns.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60063-returns.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60064-issue_3368.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60064-issue_3368.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60065-issue_3378.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60065-issue_3378.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60066-Issue_3409.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60066-Issue_3409.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60067-Issue_3283.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60067-Issue_3283.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60068-Issue_3428.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60068-Issue_3428.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60069-Issue_3428.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60069-Issue_3428.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60070-Issue_3428.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60070-Issue_3428.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60071-Issue_3428.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60071-Issue_3428.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60072-Issue_3428.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60072-Issue_3428.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60073-Issue_3428.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60073-Issue_3428.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60074-Issue_3284.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60074-Issue_3284.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60075-Issue_3294.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60075-Issue_3294.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60076-indent_ctor_init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60076-indent_ctor_init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60077-indent_ctor_init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60077-indent_ctor_init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60078-Issue_3505.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60078-Issue_3505.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60079-Issue_3536.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60079-Issue_3536.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60080-Issue_3538.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60080-Issue_3538.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60081-Issue_3546.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60081-Issue_3546.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60082-Issue_3552.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60082-Issue_3552.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60083-Issue_3570.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60083-Issue_3570.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60084-Issue_3576.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60084-Issue_3576.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60085-Issue_3576.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60085-Issue_3576.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60086-indent_namespace_inner_only.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60086-indent_namespace_inner_only.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60087-Issue_3550.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60087-Issue_3550.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60088-Issue_3761.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60088-Issue_3761.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60089-Issue_3863.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60089-Issue_3863.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60090-Issue_3863_2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60090-Issue_3863_2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60091-Issue_3863_3.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60091-Issue_3863_3.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60092-Issue_3865.cpp34
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60093-Issue_3865.cpp34
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60100-sp_qualifier_ptr_star.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60101-sp_qualifier_ptr_star.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60102-sp_qualifier_ptr_star.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60103-sp_qualifier_ptr_star.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60104-sp_qualifier_ptr_star.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60105-sp_qualifier_ptr_star.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60106-sp_qualifier_ptr_star.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60107-sp_qualifier_ptr_star.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60108-sp_qualifier_ptr_star.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60109-sp_qualifier_ptr_star.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60110-sp_qualifier_ptr_star.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60111-sp_qualifier_ptr_star.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60112-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60113-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60114-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60115-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60116-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60117-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60118-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60119-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60120-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60121-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60122-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60123-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60124-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60125-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60126-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60127-sp_before_not_var_ptr_star.cpp131
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60160-nl_func.cpp33
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60161-nl_func-2.cpp37
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60162-nl_func.cpp23
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60163-nl_func-2.cpp28
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10000-simple.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10000-simple.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10001-getset.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10001-getset.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10002-simple.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10002-simple.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10003-region.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10003-region.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10010-var-member.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10010-var-member.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10011-strings.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10011-strings.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10012-621_this-spacing.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10012-621_this-spacing.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10013-625_where-constraints.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10013-625_where-constraints.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10014-630_bad-new-init-semicolon-removal.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10014-630_bad-new-init-semicolon-removal.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10015-misc-failures.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10015-misc-failures.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10016-new-constraint-paren-space.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10016-new-constraint-paren-space.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10020-region.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10020-region.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10021-region.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10021-region.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10022-region.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10022-region.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10023-region.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10023-region.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10027-oneline_property.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10027-oneline_property.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10028-ifcolalign.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10028-ifcolalign.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10029-when.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10029-when.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10030-sort_using.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10030-sort_using.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10031-bug_i_935.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10031-bug_i_935.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10032-sort_using_categ.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10032-sort_using_categ.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10039-615_nested-usings.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10039-615_nested-usings.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10040-tcf.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10040-tcf.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10041-gs.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10041-gs.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10042-exception-filters.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10042-exception-filters.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10044-ifcomment.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10044-ifcomment.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10045-UNI-1288.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10045-UNI-1288.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10050-generics.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10050-generics.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10051-UNI-1338.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10051-UNI-1338.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10055-UNI-1345.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10055-UNI-1345.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10060-unsafe.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10060-unsafe.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10065-UNI-1975.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10065-UNI-1975.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10066-UNI-1977.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10066-UNI-1977.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10067-UNI-1978.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10067-UNI-1978.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10070-utf16le.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10070-utf16le.cs)bin240 -> 240 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10071-utf16be.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10071-utf16be.cs)bin240 -> 240 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10072-utf16le_no_bom.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10072-utf16le_no_bom.cs)bin240 -> 240 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10073-utf16be_no_bom.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10073-utf16be_no_bom.cs)bin240 -> 240 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10074-UNI-2020.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10074-UNI-2020.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10075-UNI-2021.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10075-UNI-2021.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10076-UNI-1343.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10076-UNI-1343.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10077-UNI-1919.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10077-UNI-1919.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10078-UNI-3484.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10078-UNI-3484.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10080-property.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10080-property.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10090-string_multi.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10090-string_multi.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10100-bug_600.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10100-bug_600.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10101-sf607.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10101-sf607.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10103-UNI-2506.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10103-UNI-2506.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10104-UNI-2505.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10104-UNI-2505.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10110-mdarray_space.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10110-mdarray_space.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10111-mdarray_space.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10111-mdarray_space.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10112-mdarray_space.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10112-mdarray_space.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10119-preserveTabs.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10119-preserveTabs.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10120-cmt_backslash_eol.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10120-cmt_backslash_eol.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10130-sp_between_new_paren.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10130-sp_between_new_paren.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10140-remove_semi.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10140-remove_semi.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10150-operator-null-conditional.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10150-operator-null-conditional.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10151-operator_null-coalescing-assignment.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10151-operator_null-coalescing-assignment.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10160-delegate.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10160-delegate.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10161-delegate.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10161-delegate.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10200-logger.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10200-logger.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10300-1822.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10300-1822.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10628-sf628.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10628-sf628.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/11011-620_getset-brace.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/11011-620_getset-brace.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/11072-UNI-2007.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/11072-UNI-2007.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/11073-UNI-2008.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/11073-UNI-2008.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12001-bug_620.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12001-bug_620.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12002-nullable_prop.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12002-nullable_prop.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12003-fncall_as_ctor_in_attr.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12003-fncall_as_ctor_in_attr.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12004-verbatim_strings.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12004-verbatim_strings.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12005-bug_1591.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12005-bug_1591.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12101-bug_i_679.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12101-bug_i_679.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12102-mod_full_brace_nl_block_rem_mlcond.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12102-mod_full_brace_nl_block_rem_mlcond.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12103-mod_full_brace_nl_block_rem_mlcond.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12103-mod_full_brace_nl_block_rem_mlcond.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12104-bug_1637.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12104-bug_1637.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12105-bug_1650.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12105-bug_1650.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12106-UNI-40685.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12106-UNI-40685.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12107-mod_full_paren_if_bool.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12107-mod_full_paren_if_bool.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12108-Issue_2705.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12108-Issue_2705.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12200-comma.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12200-comma.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12201-comma.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12201-comma.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12202-comma.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12202-comma.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/19000-UNI-58354.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/19000-UNI-58354.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/20010-UNI-32658.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/20010-UNI-32658.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/20011-bug_1620.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/20011-bug_1620.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60004-UNI-2684.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60004-UNI-2684.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60005-UNI-2685.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60005-UNI-2685.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60007-UNI-3083.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60007-UNI-3083.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60008-UNI-17253.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60008-UNI-17253.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60009-UNI-9917.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60009-UNI-9917.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60012-UNI-12303.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60012-UNI-12303.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60013-UNI-13955.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60013-UNI-13955.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60015-UNI-14131.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60015-UNI-14131.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60016-UNI-11662.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60016-UNI-11662.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60018-UNI-18777.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60018-UNI-18777.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60019-UNI-18780.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60019-UNI-18780.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60020-UNI-18829.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60020-UNI-18829.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60023-UNI-18437.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60023-UNI-18437.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60024-UNI-19644.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60024-UNI-19644.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60026-UNI-19895.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60026-UNI-19895.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60033-UNI-21730.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60033-UNI-21730.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60036-UNI-11993.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60036-UNI-11993.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60037-UNI-29933.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60037-UNI-29933.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60040-UNI-30498_2.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60040-UNI-30498_2.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60041-squeeze-paren-close-Option.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60041-squeeze-paren-close-Option.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60042-indent-multistring-coulmn1.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60042-indent-multistring-coulmn1.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60044-UNI-37241.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60044-UNI-37241.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60045-add-nl-before-namespace.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60045-add-nl-before-namespace.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60046-cast.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60046-cast.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40000-HashMap.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40000-HashMap.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40001-imports.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40001-imports.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40002-volatile.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40002-volatile.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40003-volatile-1.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40003-volatile-1.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40004-volatile-2.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40004-volatile-2.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40005-volatile-3.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40005-volatile-3.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40006-Lexer.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40006-Lexer.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40007-Lexer.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40007-Lexer.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40010-template.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40010-template.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40011-template.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40011-template.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40012-template.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40012-template.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40013-template.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40013-template.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40020-funcfunc.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40020-funcfunc.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40021-tst01.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40021-tst01.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40022-tst02.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40022-tst02.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40023-bug-indent.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40023-bug-indent.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40024-tst03.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40024-tst03.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40025-tst03.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40025-tst03.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40026-wysiwyg_strings.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40026-wysiwyg_strings.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40027-static_if_in_struct.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40027-static_if_in_struct.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40030-delegate.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40030-delegate.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40035-enum.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40035-enum.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40040-sort_import.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40040-sort_import.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40050-strings.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40050-strings.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40051-numbers.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40051-numbers.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40052-numbers.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40052-numbers.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40060-casts.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40060-casts.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40061-const.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40061-const.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40070-d_sp_paren.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40070-d_sp_paren.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40080-static_if.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40080-static_if.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40090-square_indent_tab.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40090-square_indent_tab.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40100-1438.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40100-1438.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40201-invariant.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40201-invariant.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40300-extern_.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40300-extern_.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40400-vbraces000.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40400-vbraces000.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40401-vbraces001.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40401-vbraces001.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40402-vbraces002.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40402-vbraces002.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40403-template_use.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40403-template_use.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40500-template_spacing000.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40500-template_spacing000.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40501-template_spacing001.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40501-template_spacing001.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40502-template_spacing001.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40502-template_spacing001.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40503-template_spacing001.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40503-template_spacing001.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40504-type_spacing000.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40504-type_spacing000.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40505-type_spacing000.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40505-type_spacing000.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40506-type_spacing000.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40506-type_spacing000.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/ecma/90000-example-1.es (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/ecma/90000-example-1.es)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80000-assert.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80000-assert.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80010-annotation1.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80010-annotation1.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80011-annotation2.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80011-annotation2.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80012-annotation2.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80012-annotation2.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80013-annotation2.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80013-annotation2.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80014-annotation2.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80014-annotation2.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80020-foreach.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80020-foreach.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80030-variable_aligns.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80030-variable_aligns.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80040-try.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80040-try.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80050-double_brace.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80050-double_brace.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80051-double_brace.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80051-double_brace.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80060-synchronized.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80060-synchronized.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80061-synchronized.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80061-synchronized.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80062-sp_this_paren.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80062-sp_this_paren.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80063-i1121.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80063-i1121.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80064-long_cl_cmt.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80064-long_cl_cmt.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80065-Java8DoubleColon.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80065-Java8DoubleColon.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80066-sp_after_for_colon.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80066-sp_after_for_colon.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80067-doxy-javadoc-alignment.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80067-doxy-javadoc-alignment.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80068-nl_before_ignore_after_case.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80068-nl_before_ignore_after_case.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80100-sf567.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80100-sf567.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80200-sp_before_byref.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80200-sp_before_byref.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80201-generics.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80201-generics.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80202-generics_wildcard.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80202-generics_wildcard.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80203-generics_return_type.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80203-generics_return_type.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80204-cast.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80204-cast.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80205-sp_after_angle.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80205-sp_after_angle.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80206-annotation3.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80206-annotation3.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80300-Issue_670.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80300-Issue_670.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80301-issue_672.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80301-issue_672.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80302-Issue_1845.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80302-Issue_1845.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80303-Issue_1122.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80303-Issue_1122.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80304-Issue_1124.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80304-Issue_1124.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80305-Issue_1124.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80305-Issue_1124.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80306-leading-tabs-for-java-lambda.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80306-leading-tabs-for-java-lambda.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10018-delete-space-oc.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10018-delete-space-oc.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10019-func-param-wrap-oc.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10019-func-param-wrap-oc.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10020-align-objc-like-xcode.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10020-align-objc-like-xcode.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10021-double-indent-objc-dict.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10021-double-indent-objc-dict.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10022-indent-objc-block.m149
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10033-objc.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10033-objc.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10034-asm.h.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10034-asm.h.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10035-definesalign.h.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10035-definesalign.h.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10036-inttypes.h.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10036-inttypes.h.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10046-UNI-1333.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10046-UNI-1333.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10102-pp-ignore.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10102-pp-ignore.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/11030-argtypes.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/11030-argtypes.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/11031-casting.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/11031-casting.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/11032-newlines.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/11032-newlines.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50001-Fraction.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50001-Fraction.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50002-Fraction.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50002-Fraction.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50003-main.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50003-main.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50004-string.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50004-string.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50005-Declarations.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50005-Declarations.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50006-exceptions.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50006-exceptions.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50007-misc.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50007-misc.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50008-protocol.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50008-protocol.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50009-literals.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50009-literals.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50010-return_type.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50010-return_type.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50011-return_type.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50011-return_type.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50012-return_type.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50012-return_type.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50014-sp_oc_classname_paren-r.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50014-sp_oc_classname_paren-r.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50015-receiver.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50015-receiver.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50016-ternary.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50016-ternary.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50017-ternary.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50017-ternary.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50018-indent-inside-ternary-operator.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50018-indent-inside-ternary-operator.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50020-selector.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50020-selector.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50021-selector.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50021-selector.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50022-selector.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50022-selector.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50025-exceptions.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50025-exceptions.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50026-exceptions.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50026-exceptions.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50030-sort_import.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50030-sort_import.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50031-sort_import.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50031-sort_import.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50032-sort_import.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50032-sort_import.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50033-sort_import.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50033-sort_import.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50034-sort_import.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50034-sort_import.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50035-sort_import_group.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50035-sort_import_group.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50036-sort_import_group_regex.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50036-sort_import_group_regex.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50040-complex_method.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50040-complex_method.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50050-real_world_file.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50050-real_world_file.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50060-oc-split.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50060-oc-split.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50061-bug_167.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50061-bug_167.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50062-issue_2631.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50062-issue_2631.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50070-blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50070-blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50071-blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50071-blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50072-blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50072-blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50073-blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50073-blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50074-blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50074-blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50075-blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50075-blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50076-blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50076-blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50077-more_blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50077-more_blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50078-more_blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50078-more_blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50079-more_blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50079-more_blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50080-more_blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50080-more_blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50081-more_blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50081-more_blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50082-more_blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50082-more_blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50083-more_blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50083-more_blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50084-more_blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50084-more_blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50085-block_in_method.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50085-block_in_method.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50086-block_in_method.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50086-block_in_method.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50087-indent_oc_inside_msg_sel.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50087-indent_oc_inside_msg_sel.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50090-kw.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50090-kw.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50091-block_in_method.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50091-block_in_method.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50095-box.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50095-box.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50100-bug_340.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50100-bug_340.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50110-msg_align.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50110-msg_align.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50111-ns_enum.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50111-ns_enum.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50112-ns_enum.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50112-ns_enum.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50113-ns_enum.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50113-ns_enum.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50120-gh137.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50120-gh137.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50200-more_blocks_2.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50200-more_blocks_2.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50201-blocks_align.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50201-blocks_align.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50202-blocks_align.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50202-blocks_align.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50203-blocks_align.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50203-blocks_align.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50204-blocks_align.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50204-blocks_align.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50205-msg_align.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50205-msg_align.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50206-issue_2727.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50206-issue_2727.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50207-issue_3031.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50207-issue_3031.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50300-msg.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50300-msg.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50400-for.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50400-for.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50410-oc_cond_colon.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50410-oc_cond_colon.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50411-attribute_specifier_seqs.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50411-attribute_specifier_seqs.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50500-code_placeholder.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50500-code_placeholder.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50510-gh293.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50510-gh293.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50511-gh293.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50511-gh293.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50512-sp_oc_catch.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50512-sp_oc_catch.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50513-sp_oc_boxed.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50513-sp_oc_boxed.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50514-indent_boxed.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50514-indent_boxed.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50515-sp_oc_synchronized.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50515-sp_oc_synchronized.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50600-bug_i_477.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50600-bug_i_477.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50601-bug_i_408.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50601-bug_i_408.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50602-bug_i_125-412.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50602-bug_i_125-412.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50603-gh511.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50603-gh511.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50604-bug_497.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50604-bug_497.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50605-bug_404.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50605-bug_404.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50606-bug_1366.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50606-bug_1366.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50607-sp_after_oc_msg_receiver.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50607-sp_after_oc_msg_receiver.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50608-blocks_align2.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50608-blocks_align2.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50609-negative_value.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50609-negative_value.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50610-nelem.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50610-nelem.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50611-for2.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50611-for2.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50612-chunk_ends_type1.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50612-chunk_ends_type1.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50613-chunk_ends_type2.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50613-chunk_ends_type2.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50614-chunk_ends_type3.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50614-chunk_ends_type3.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50615-block_literal_protocol.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50615-block_literal_protocol.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50616-oc_msg_in_pp.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50616-oc_msg_in_pp.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50617-boxed_receiver.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50617-boxed_receiver.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50618-func_def.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50618-func_def.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50619-cast.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50619-cast.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50620-sp_after_angle.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50620-sp_after_angle.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50621-Fraction.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50621-Fraction.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50622-c-cpp-oc-wrapper.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50622-c-cpp-oc-wrapper.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50623-extern-c-attribute.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50623-extern-c-attribute.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50624-typeof.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50624-typeof.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50625-sp_inside_braces_oc_dict.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50625-sp_inside_braces_oc_dict.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50626-chunk_ends_type4.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50626-chunk_ends_type4.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50627-method_ends_semicolon.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50627-method_ends_semicolon.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50628-macro-close-brace.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50628-macro-close-brace.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50629-pp_bool.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50629-pp_bool.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50630-nl_func_call_args_multi_line_ignore_closures.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50630-nl_func_call_args_multi_line_ignore_closures.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50631-nl_oc_msg_args_min_params.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50631-nl_oc_msg_args_min_params.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50632-nl_oc_msg_args_max_code_width.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50632-nl_oc_msg_args_max_code_width.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50633-ocpp_msg_access.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50633-ocpp_msg_access.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50700-cmt_insert.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50700-cmt_insert.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50701-cmt_insert2.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50701-cmt_insert2.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50800-properties.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50800-properties.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50801-i1213.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50801-i1213.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50802-available.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50802-available.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50803-indent_single_newline.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50803-indent_single_newline.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50804-issue_2629.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50804-issue_2629.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50805-issue_2724.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50805-issue_2724.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50810-bug_841.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50810-bug_841.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50811-bug_1674.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50811-bug_1674.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50812-bug_1683.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50812-bug_1683.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50813-sp_before_oc_proto_list.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50813-sp_before_oc_proto_list.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50814-sp_before_oc_proto_list.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50814-sp_before_oc_proto_list.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50815-sp_before_oc_proto_list.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50815-sp_before_oc_proto_list.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50816-issue_2675.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50816-issue_2675.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50817-issue_2722.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50817-issue_2722.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50900-1927.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50900-1927.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50901-Issue_2172.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50901-Issue_2172.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50902-Issue_2289.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50902-Issue_2289.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50903-Issue_681.oc (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50903-Issue_681.oc)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50904-double_angle_space.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50904-double_angle_space.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50905-double_angle_space.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50905-double_angle_space.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50906-double_angle_space.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50906-double_angle_space.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50907-align_colon_with_ternary_1.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50907-align_colon_with_ternary_1.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50908-align_colon_with_ternary_2.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50908-align_colon_with_ternary_2.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50909-3766.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50909-3766.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50910-3767.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50910-3767.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50911-3811.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50911-3811.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50912-3812.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50912-3812.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50913-3813.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50913-3813.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50914-3819.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50914-3819.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50915-3822.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50915-3822.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50916-3823.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50916-3823.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/51000-sp_cond_ternary_short.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/51000-sp_cond_ternary_short.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/51001-ns_enum-i.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/51001-ns_enum-i.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/51002-sp_oc_catch.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/51002-sp_oc_catch.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/51003-sp_oc_catch.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/51003-sp_oc_catch.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/51004-block_pointer.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/51004-block_pointer.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/60011-UNI-11095.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/60011-UNI-11095.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60000-functions.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60000-functions.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60001-comment.p (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60001-comment.p)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60002-traffic.p (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60002-traffic.p)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60003-tags.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60003-tags.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60004-enum.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60004-enum.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60005-unbraced.p (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60005-unbraced.p)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60010-str-escape.p (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60010-str-escape.p)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60020-switch-vsemi.sma (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60020-switch-vsemi.sma)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60030-crusty_ex-1.sma (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60030-crusty_ex-1.sma)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60040-preproc.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60040-preproc.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60050-gh419.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60050-gh419.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60100-Issue_2586.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60100-Issue_2586.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60101-Issue_2665.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60101-Issue_2665.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/sql/02400-mysql.sqc (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/sql/02400-mysql.sqc)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/sql/02401-sta-select.sqc (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/sql/02401-sta-select.sqc)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/sql/02402-issue_527.sqc (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/sql/02402-issue_527.sqc)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70000-list.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70000-list.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70001-advanced.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70001-advanced.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70010-verbatim_str.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70010-verbatim_str.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70011-verbatim_str2.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70011-verbatim_str2.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70012-verbatim_str2.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70012-verbatim_str2.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70020-preproc.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70020-preproc.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70287-gh287.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70287-gh287.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70300-Issue_2090.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70300-Issue_2090.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70301-Issue_2270.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70301-Issue_2270.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70302-cast.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70302-cast.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70303-nullable.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70303-nullable.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70304-identifier.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70304-identifier.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70310-mdarray_space.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70310-mdarray_space.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70311-mdarray_space.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70311-mdarray_space.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70312-mdarray_space.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70312-mdarray_space.vala)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/fixtest.sh (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/fixtest.sh)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/generate_p_files.sh (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/generate_p_files.sh)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/imported.test (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/imported.test)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/1225.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/1225.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2205.c6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2278.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue-2278.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2279.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_2279.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2360.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_2360.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2411.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_2411.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2640.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_2640.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2845.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_2845.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3169.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3169.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3192.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3192.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3233.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3233.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3269.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3269.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3272.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3272.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3274.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3274.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3327.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3327.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3339.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3339.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3342.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3342.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3343.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3343.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3345.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3345.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3351.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3351.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3353.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3353.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3356.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3356.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3362.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3362.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3366.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3366.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3370.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3370.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3376.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3376.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3377.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3377.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3402.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3402.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3421.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3421.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3431.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3431.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3436.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3436.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3454.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3454.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3457.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3457.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3472.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3472.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3476.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3476.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3480.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3480.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3493.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3493.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3496.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3496.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3506.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3506.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3516.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3516.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3518.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3518.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3548.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3548.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3556.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3556.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3559.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3559.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3561.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3561.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3565.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3565.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3567.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3567.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3580.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3580.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3582.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3582.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3587.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3587.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3601.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3601.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3662.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3662.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3873.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3873.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3985.c14
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3989.c1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3992.c6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_4044.c58
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/add_long_comment.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/add_long_comment.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-equ.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-equ.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-proto-vars.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-proto-vars.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-proto.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-proto.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-string.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-string.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-struct-init.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-struct-init.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-typedef.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-typedef.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-var.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-var.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_assign_var_defs.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_assign_var_defs.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_assigns.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_assigns.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_attr.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_attr.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_func_proto_star_amp.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_func_proto_star_amp.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_keep_extra.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_keep_extra.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_sf_call_span_418.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_sf_call_span_418.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_sf_call_span_419.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_sf_call_span_419.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_sf_call_thresh_416.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_sf_call_thresh_416.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_sf_call_thresh_417.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_sf_call_thresh_417.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_stack.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_stack.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_trailing_do_cmt.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_trailing_do_cmt.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/asm.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/asm.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/attribute.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/attribute.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/backslash-newline-lex.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/backslash-newline-lex.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/beautifier-off.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/beautifier-off.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bits.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bits.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bool-pos.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bool-pos.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/br_cmt.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/br_cmt.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/brace-remove.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/brace-remove.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/brace-remove2.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/brace-remove2.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/brace-remove3.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/brace-remove3.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/brace.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/brace.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/braces-2.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/braces-2.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/braces-3.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/braces-3.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/braces-4.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/braces-4.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/braces-5.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/braces-5.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/braces.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/braces.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bsnl.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bsnl.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_1041.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_1041.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_1196.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_1196.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_1702.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_1702.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_1718.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_1718.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_2331.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_2331.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_3156.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_3156.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_489.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_489.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_637.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sp_after_sparen.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_671.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_671.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_i_222.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_i_222.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_i_771.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_i_771.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_i_876.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_i_876.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-1.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-1.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-2.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-2.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-3.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-3.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-4.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-4.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-5.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-5.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-6.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-6.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-7.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-7.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-8.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-8.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/case-nl_before_return.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/case-nl_before_return.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/case.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/case.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cast_brace.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cast_brace.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/casts.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/casts.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/clang-has_include.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/clang-has_include.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt-align.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt-align.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt_multi.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt_multi.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt_multi_utf8.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt_multi_utf8.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt_nl_end.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt_nl_end.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt_reflow.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt_reflow.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt_right_align.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt_right_align.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/code_width.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/code_width.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/colon-asm.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/colon-asm.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment-convert.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/comment-convert.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/comment-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_define.c24
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_endif.c24
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_javadoc_single.c21
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_long_lines.c12
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_trailing_c_multiline.c25
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cond.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cond.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/custom_types_ssl.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/custom_types_ssl.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/define-if-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/define-if-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/deref.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/deref.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/directfb.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/directfb.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/dos.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/dos.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/double-sparen.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/double-sparen.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/doxy-comment.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/doxy-comment.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/else-if.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/else-if.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/empty-braces.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/empty-braces.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/empty-for.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/empty-for.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/endif.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/endif.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/enum-struct-init.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/enum-struct-init.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/enum_comma_ifdef.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/enum_comma_ifdef.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/enum_gallery.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/enum_gallery.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/extern.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/extern.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/fcn_indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/fcn_indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/fcn_indent_func_def_col1.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/fcn_indent_func_def_col1.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/fcn_type.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/fcn_type.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/for-space.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/for-space.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/forever.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/forever.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/freebsd.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/freebsd.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/func_call_user.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/func_call_user.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/func_call_user2.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/func_call_user2.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/func_var_multi_paren.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/func_var_multi_paren.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/func_wrap.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/func_wrap.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/funcfunc.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/funcfunc.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/function-def.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/function-def.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/function_prototypes_alignment.c15
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/gh399.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/gh399.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/global-vars.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/global-vars.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/hello.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/hello.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/i1270.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/i1270.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/i1413.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/i1413.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/i1564.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/i1564.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/i2c-core.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/i2c-core.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/if_chain.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/if_chain.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/ifdef-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/ifdef-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/ifdef-nest.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/ifdef-nest.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/incdec_postfix_multiply.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/incdec_postfix_multiply.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/include-guard.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/include-guard.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/include_define.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/include_define.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent-assign.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent-assign.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent-macro-brace.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent-macro-brace.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent-off-after-assign.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent-off-after-assign.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent-vbrace.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent-vbrace.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent_first_bool_expr.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent_first_bool_expr.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent_ternary-1.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent_ternary-1.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent_ternary-2.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent_ternary-2.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/infinite-loops.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/infinite-loops.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/int-types.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/int-types.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/kw_subst.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/kw_subst.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/lvalue.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/lvalue.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/mac.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/mac.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/macro-returns.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/macro-returns.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/minus-minus.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/minus-minus.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/misc.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/misc.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/mod-paren.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/mod-paren.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/mod_case_brace.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/mod_case_brace.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/mod_move_case_return.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/mod_move_case_return.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/mod_move_case_return_bad.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/mod_move_case_return_bad.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/multi.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/multi.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/my_infile.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/my_infile.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/negative_value.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/negative_value.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/newline_after_endif.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/newline_after_endif.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl-comment.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl-comment.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl-cont.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl-cont.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl-cont2.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl-cont2.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl-semicolon.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl-semicolon.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl-ver-def.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl-ver-def.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_assign.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_assign.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_before_ignore_after_case.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_before_ignore_after_case.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_before_return.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_before_return.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_create_one_liner.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_create_one_liner.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_ds_struct_enum.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_ds_struct_enum.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_endif.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_endif.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_func_call.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_func_call.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_proto_endif.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_proto_endif.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_return_expr.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_return_expr.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/one-liner-define.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/one-liner-define.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/one-liner-init.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/one-liner-init.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/one_liners.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/one_liners.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/paren-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/paren-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/paren_indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/paren_indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/parenthesized_indirect_call.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/parenthesized_indirect_call.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pascal_ptr.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pascal_ptr.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pos_compare.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pos_compare.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pos_conditional.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pos_conditional.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp-before-func-def.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp-before-func-def.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp-if-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp-if-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp-nest.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp-nest.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp-space.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp-space.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_concat_asn1.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_concat_asn1.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_indent_with_tabs.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_indent_with_tabs.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_multiline_define.c71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_ret.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_ret.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_space_before_after.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_space_before_after.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pragma.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pragma.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pragma_asm.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pragma_asm.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/preproc-if.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/preproc-if.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/return-compound-literal.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/return-compound-literal.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/return-multi.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/return-multi.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/semicolons.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/semicolons.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sf588.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sf588.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sf594.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sf594.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/single_line_comment_after.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/single_line_comment_after.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sort_include.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sort_include.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sp_after_sparen.c9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sp_cmt_cpp_start.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sp_cmt_cpp_start.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sp_embed_comment.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sp_embed_comment.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sp_func_call_user_inside_fparen.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sp_func_call_user_inside_fparen.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sparen-indent.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sparen-indent.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/star-style.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/star-style.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/string_prefixes.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/string_prefixes.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/string_utf8.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/string_utf8.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/struct-brace.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/struct-brace.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/switch-case.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/switch-case.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/switch.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/switch.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/t3.in.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/t3.in.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/type-cast.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/type-cast.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/type_wrap.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/type_wrap.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/utf8-identifiers.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/utf8-identifiers.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/vardefcol.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/vardefcol.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/various_colons.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/various_colons.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/vb-do.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/vb-do.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/vb-pp.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/vb-pp.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/vb-while.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/vb-while.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/vbrace_one_liner.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/vbrace_one_liner.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/whole_file_ifdef.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/whole_file_ifdef.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/xml.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/xml.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/2138.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/2138.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/2185.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/2185.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/2203.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/2203.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/621_this-spacing.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/621_this-spacing.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/622_ifdef-indentation.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/622_ifdef-indentation.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/623_caret-spacing.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/623_caret-spacing.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/633_decl-in-func-typedef.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/633_decl-in-func-typedef.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/634_extern-c-no-block.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/634_extern-c-no-block.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/DB.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/DB.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/DefaultAndDelete.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/DefaultAndDelete.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Discussion_3987.cpp5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/DoxygenComments.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/DoxygenComments.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Example.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Example.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/I1112-1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/I1112-1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/I1112-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/I1112-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/I1112-3.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/I1112-3.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/I2102.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/I2102.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/I2103.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/I2103.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1052.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1052.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1130.cpp39
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1167.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1167.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1184.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1184.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1460.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1460.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1511.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1511.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1692.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1692.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1703.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1703.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1704.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1704.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1733.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1733.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1734.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1734.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1737.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1737.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1753.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1753.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1813-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1813-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1813-3.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1813-3.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1813.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1813.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1923.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1923.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1966.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1966.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2020.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2020.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2045.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2045.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2085.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2085.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2091.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2091.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2099.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2099.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2101.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2101.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2138.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2138.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2149.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2149.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2150.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2150.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2151.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2151.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2163.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2163.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2166.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2166.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2170.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2170.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2186.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2186.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2195.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2195.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2219.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2219.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2224.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2224.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2229.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2229.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2232.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2232.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2236.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2236.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2250.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2250.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2281.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2281.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2302.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2302.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2305.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2305.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2319.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2319.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2332.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2332.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2343.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2343.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2345-3.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2345-3.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2345-4.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2345-4.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2368.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2368.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2383.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2383.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2386.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2386.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2387.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2387.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2428.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2428.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2437.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2437.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2440.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2440.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2440_nl.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2440_nl.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2478.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2478.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2561.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2561.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2565.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2565.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2570.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2570.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2574.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2574.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2582.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2582.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2591.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2591.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2594.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2594.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2596.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2596.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2604.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2604.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2668.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2668.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2672-a.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2672-a.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2672-b.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2672-b.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2688.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2688.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2689.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2689.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2692.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2692.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2703.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2703.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2726.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2726.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2734.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2734.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2735.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2735.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2742.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2742.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2752.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2752.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2757.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2757.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2758.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2758.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2759.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2759.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2771.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2771.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2794.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2794.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2795.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2795.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2823.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2823.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2831.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2831.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2836.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2836.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2873.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2873.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2879.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2879.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2886.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2886.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2890.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2890.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2902.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2902.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2907.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2907.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2910.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2910.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2914.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2914.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2921.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2921.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2930.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2930.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2942.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2942.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2949.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2949.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2957.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2957.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2971.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2971.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3010.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3010.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3018.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3018.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3025.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3025.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3034.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3034.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3040.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3040.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3044.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3044.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3048.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3048.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3052.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3052.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3054-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3054-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3054.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3054.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3055-a.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3055-a.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3055.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3055.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3058.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3058.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3061_0nl.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3061_0nl.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3061_1nl.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3061_1nl.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3061_2nl.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3061_2nl.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3080.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3080.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3097.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3097.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3113.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3113.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3164.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3164.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3176.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3176.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3197.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3197.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3198.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3198.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3203.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3203.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3205.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3205.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3220.cpp6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3236.cpp20
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3237.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3237.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3252.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3252.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3283.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3283.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3284.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3284.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3294.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3294.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3309.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3309.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3316.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3316.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3321.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3321.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3357.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3357.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3409.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3409.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3413.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3413.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3422.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3422.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3428.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3428.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3446.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3446.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3448.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3448.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3505.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3505.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3513-0.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3513-0.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3513-1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3513-1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3536.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3536.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3538.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3538.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3546.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3546.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3550.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3550.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3552.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3552.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3558.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3558.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3570.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3570.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3576.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3576.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3604.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3604.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3614.cpp2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3691.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3691.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3710.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3710.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3761.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3761.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3785.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3785.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3786.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3786.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3863.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3863.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3863_2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3863_2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3863_3.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3863_3.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3865.cpp33
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3914.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3915.cpp9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3916.cpp29
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3919.cpp5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3920.cpp4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3965-2.cpp7
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3965.cpp4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3967.cc4
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3980.cpp5
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3983.cpp9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3996.cpp25
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4023.cpp20
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4026.cpp50
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4027.cpp1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4036.cpp3
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4042.cpp6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4080.cpp6
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4094.cpp2
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4132.cpp1
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4239.cpp10
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_750.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_750.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_931.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_931.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_995-do.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_995-do.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/NewLine.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/NewLine.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/NewLine0.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/NewLine0.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/PR326_invalid-backslash-eol-csharp.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/PR326_invalid-backslash-eol-csharp.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Q_2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Q_2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Q_EMIT.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Q_EMIT.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Q_FOREACH.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Q_FOREACH.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Q_FOREVER.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Q_FOREVER.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Q_SIGNAL_SLOT.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Q_SIGNAL_SLOT.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/STUCK_macro-difficulties.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/STUCK_macro-difficulties.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Timestamp.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Timestamp.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-10496.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-10496.cpp)0
-rw-r--r--[-rwxr-xr-x]debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-12046.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-12046.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1288.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1288.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1334.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1334.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1335.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1335.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1337.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1337.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1339.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1339.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1340.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1340.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1344.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1344.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1346.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1346.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1347.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1347.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1350.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1350.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1356.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1356.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1358.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1358.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-16283.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-16283.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-18439.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-18439.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-18777.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-18777.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1980.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1980.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1981.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1981.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1983.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1983.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-19894.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-19894.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-2049.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-2049.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21506.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21506.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21509.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21509.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21510.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21510.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21727.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21727.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21728.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21728.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21729.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21729.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-2650.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-2650.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-2680.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-2680.cpp)0
-rw-r--r--[-rwxr-xr-x]debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-2683.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-2683.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-29935.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-29935.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-30088.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-30088.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-30628.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-30628.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-32657.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-32657.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-38381.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-38381.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-64325.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-64325.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-9650.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-9650.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/al.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/al.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align-330.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align-330.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align-assign-mixed.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align-assign-mixed.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align-star-amp-pos.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align-star-amp-pos.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_across_braces.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_across_braces.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_assign_func_proto.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_assign_func_proto.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_asterisk_after_type_cast.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_asterisk_after_type_cast.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_class-constr.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_class-constr.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_class.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_class.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_constr.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_constr.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_continuation_left_shift.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_continuation_left_shift.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_default_after_override.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_default_after_override.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_fcall.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_fcall.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_func_params.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_func_params.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_func_proto_thresh.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_func_proto_thresh.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_func_proto_thresh2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_func_proto_thresh2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_left_shift.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_left_shift.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_left_shift2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_left_shift2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_right_comment.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_right_comment.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_var_def_thresh.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_var_def_thresh.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/alt_tokens.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/alt_tokens.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/anonymous_enum.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/anonymous_enum.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/arith_vs_byref.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/arith_vs_byref.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/asm_block_pp.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/asm_block_pp.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/attribute_specifier_seqs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/attribute_specifier_seqs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/av.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/av.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bit-colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bit-colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bom.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bom.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bool.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bool.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/brace_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/brace_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/brace_init_stdint_macros.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/brace_init_stdint_macros.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/braced_init_list.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/braced_init_list.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/braced_init_template_decltype.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/braced_init_template_decltype.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/braces_align.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/braces_align.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/braces_empty.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/braces_empty.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1001.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1001.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1002.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1002.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1003.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1003.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1004.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1004.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1005.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1005.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1020.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1020.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1027.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1027.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1032.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1032.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1068.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1068.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1108.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1108.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1112.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1112.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1127.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1127.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1134.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1134.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1139.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1139.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1158.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1158.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1160.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1160.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1161.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1161.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1169.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1169.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1170.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1170.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1235.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1235.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1236.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1236.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1249.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1249.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1288.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1288.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1289.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1289.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1296.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1296.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1315.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1315.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1321.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1321.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1324.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1324.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1338.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1338.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1340.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1340.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1346.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1346.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1349.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1349.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1395.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1395.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1402.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1402.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1403.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1403.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1432.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1432.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1439.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1439.cpp)0
-rw-r--r--[-rwxr-xr-x]debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1452.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1452.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1462.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1462.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1607.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1607.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1649.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1649.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1689.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1689.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1691.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1691.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1717.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1717.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1758-f.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1758-f.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1758.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1758.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1854.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1854.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1862.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1862.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2285.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2285.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2322.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2322.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2371.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2371.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2402.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2402.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2433_1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2433_1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2433_2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2433_2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_33056.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_33056.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_472.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_472.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_481.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_481.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_484.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_484.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_485.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_485.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_488.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_488.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_495.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_495.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_612.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_612.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_631.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_631.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_633.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_633.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_634.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_634.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_643.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_643.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_651.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_651.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_653.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_653.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_654.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_654.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_657.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_657.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_662.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_662.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_663.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_663.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_664.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_664.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_666.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_666.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_670.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_670.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_670.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_670.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_671.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_671.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_858.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_858.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_902.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_902.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_1000.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_1000.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_197.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_197.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_322.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_322.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_323.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_323.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_359.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_359.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_405.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_405.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_409.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_409.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_411.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_411.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_478.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_478.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_481.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_481.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_503.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_503.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_512.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_512.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_525.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_525.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_552.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_552.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_568.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_568.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_575.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_575.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_596.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_596.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_646.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_646.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_663.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_663.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_666.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_666.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_682.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_682.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_687.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_687.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_752.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_752.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_753.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_753.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_793.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_793.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_825.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_825.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_889.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_889.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_928.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_928.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_938.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_938.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_999.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_999.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_width.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_width.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/byref-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/byref-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/byref-3.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/byref-3.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/byref-4.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/byref-4.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/byref.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/byref.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/call_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/call_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/case-brace-remove.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/case-brace-remove.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cast.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cast.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/casts.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/casts.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/class-addr.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/class-addr.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/class-implementation.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/class-implementation.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/class-init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/class-init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/class.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/class.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt-cpp-cont.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt-cpp-cont.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt-reflow.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt-reflow.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_backslash_eol.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_backslash_eol.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_convert_tab_to_spaces.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_convert_tab_to_spaces.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_indent.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_indent.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_indent_pp.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_indent_pp.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_insert.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_insert.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_right.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_right.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_trailing_single_line_c_to_cpp.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_trailing_single_line_c_to_cpp.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/comma.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/comma.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/comment-align-multiline.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/comment-align-multiline.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/comment-align.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/comment-align.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/const_throw.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/const_throw.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/constr_colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/constr_colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/constructor.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/constructor.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/conversion_operator.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/conversion_operator.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cout.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cout.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cpp17.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cpp17.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cpp_move.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cpp_move.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/ctor-var.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/ctor-var.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/custom-open-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/custom-open-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/custom-open.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/custom-open.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/define-indentation.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/define-indentation.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/delete.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/delete.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/deref.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/deref.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/digraph.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/digraph.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/disable_macro.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/disable_macro.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/dont-detab-strings.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/dont-detab-strings.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/dont-process-defines.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/dont-process-defines.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/eat_blanks_after_codewidth.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/eat_blanks_after_codewidth.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/eigen.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/eigen.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum.cpp207
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum_class.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum_class.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum_comma.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum_comma.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum_comment_wrap.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum_comment_wrap.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum_shr.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum_shr.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/exception.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/exception.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/extern_c.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/extern_c.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/extern_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/extern_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/first_len_minimum.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/first_len_minimum.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/fix_for_relational_operators.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/fix_for_relational_operators.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/for_auto.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/for_auto.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/for_long.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/for_long.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/for_loop_head.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/for_loop_head.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/foreach.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/foreach.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/friends.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/friends.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func-param-wrap-oc.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func-param-wrap-oc.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_call.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_call.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_call_chain.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_call_chain.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_class.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_class.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_class.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_class.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_param.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_param.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_param_indent_leading_comma.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_param_indent_leading_comma.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/function-def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/function-def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/functype_param.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/functype_param.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/gcc_case_ellipsis.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/gcc_case_ellipsis.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/gh555.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/gh555.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/goto.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/goto.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1082.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1082.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1165.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1165.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1181.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1181.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1207.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1207.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1218.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1218.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1464.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1464.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1466.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1466.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1509.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1509.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1509_bug_1112_correction.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1509_bug_1112_correction.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1516.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1516.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1536.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1536.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1565.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1565.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1617.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1617.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1768.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1768.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i2033.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i2033.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i2116.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i2116.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i683.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i683.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/if-constexpr.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/if-constexpr.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/if_chain_braces.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/if_chain_braces.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/if_constexpr.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/if_constexpr.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/ifcomment.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/ifcomment.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent-c.cpp1084
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent-inside-ternary-operator.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent-inside-ternary-operator.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent-misc.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent-misc.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent-off.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent-off.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_braces_no.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_braces_no.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_comma_brace_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_comma_brace_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_comma_brace_glob.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_comma_brace_glob.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_comment_align_thresh.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_comment_align_thresh.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_ctor_init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_ctor_init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_ctor_members_twice.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_ctor_members_twice.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_func_alias_prototype.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_func_alias_prototype.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_namespace.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_namespace.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_namespace2.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_namespace2.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_namespace_inner_only.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_namespace_inner_only.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_namespace_single_indent.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_namespace_single_indent.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_off_after_return.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_off_after_return.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_param.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_param.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_paren_after_func_call.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_paren_after_func_call.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_paren_after_func_decl.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_paren_after_func_decl.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_paren_after_func_def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_paren_after_func_def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_shift.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_shift.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_switch_pp.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_switch_pp.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_ternary-1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_ternary-1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_var_def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_var_def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_var_def_cont.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_var_def_cont.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/init-list-call.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/init-list-call.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/init_align.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/init_align.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/initlist_leading_commas.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/initlist_leading_commas.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/interface-keyword-in-cpp.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/interface-keyword-in-cpp.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1752.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1752.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1778.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1778.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1782.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1782.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1804.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1804.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1916.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1916.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1919.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1919.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1946.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1946.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1985.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1985.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2000.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2000.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2001.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2001.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2124-1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2124-1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2124-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2124-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2209-1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2209-1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2209-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2209-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2623.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2623.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3105_1.cpp10
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3105_2.cpp107
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3116-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3116-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3116.cpp213
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3330.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3330.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3368.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3368.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3378.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3378.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_523.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_523.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_547_for_each.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_547_for_each.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_564.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_564.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_574-i.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_574-i.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_574.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_574.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_624_angle.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_624_angle.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_633_typename.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_633_typename.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_672.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_672.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/kw_subst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/kw_subst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/kw_subst2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/kw_subst2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lambda.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lambda.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lambda2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lambda2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lambda_brace_list.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lambda_brace_list.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lambda_in_one_liner.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lambda_in_one_liner.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lambda_selfcalling.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lambda_selfcalling.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lineEndings-Mac.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lineEndings-Mac.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lineEndings-Unix.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lineEndings-Unix.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lineEndings-Win.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lineEndings-Win.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/long_br_cmt.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/long_br_cmt.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/long_lines.cpp25
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/long_namespace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/long_namespace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/macro_spaces.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/macro_spaces.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc3.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc3.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc4.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc4.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc5.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc5.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc6.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc6.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/mod_remove_empty_return-2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/mod_remove_empty_return-2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/mod_remove_empty_return.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/mod_remove_empty_return.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/ms-style-ref.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/ms-style-ref.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/multi_line.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/multi_line.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/namespace_namespace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/namespace_namespace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/new_op.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/new_op.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl-class.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl-class.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl-namespace.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl-namespace.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_assign_leave_one_liners.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_assign_leave_one_liners.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_before_after.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_before_after.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_before_brace_open_test.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_before_brace_open_test.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_before_func_body_def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_before_func_body_def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_before_struct_scoped_enum.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_before_struct_scoped_enum.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_before_struct_struct.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_before_struct_struct.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_brace_brace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_brace_brace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_fdef_brace_cond-f.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_fdef_brace_cond-f.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_fdef_brace_cond-fr.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_fdef_brace_cond-fr.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_fdef_brace_cond-r.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_fdef_brace_cond-r.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_fdef_brace_cond-rf.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_fdef_brace_cond-rf.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_for_leave_one_liners.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_for_leave_one_liners.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func-2.cpp32
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_call_empty.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_call_empty.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_call_paren.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_call_paren.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_call_paren_empty.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_call_paren_empty.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_decl.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_decl.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_def_paren_empty.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_def_paren_empty.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_paren_empty.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_paren_empty.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_scope_name.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_scope_name.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_type_name.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_type_name.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_inside_namespace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_inside_namespace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_max_blank_in_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_max_blank_in_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/noexcept.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/noexcept.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/not_lambda.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/not_lambda.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/op_sym_empty.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/op_sym_empty.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/operator.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/operator.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/operator_proto.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/operator_proto.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/out-668.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/out-668.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/output.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/output.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/override_virtual.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/override_virtual.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/parameter-packs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/parameter-packs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/patch_32.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/patch_32.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pos_assign.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pos_assign.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pos_bool_in_template.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pos_bool_in_template.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pos_shift.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pos_shift.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp-define-indent.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp-define-indent.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp-pragma.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp-pragma.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp_indent_brace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp_indent_brace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp_indent_case.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp_indent_case.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp_indent_extern.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp_indent_extern.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp_indent_func_def.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp_indent_func_def.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp_multi_comment.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp_multi_comment.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/proto-wrap.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/proto-wrap.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/ptr-star.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/ptr-star.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/qt-1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/qt-1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/qtargs.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/qtargs.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/region.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/region.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/return_braced_init.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/return_braced_init.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/return_init_list.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/return_init_list.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/return_remove.cpp9
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/returns.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/returns.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sef.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sef.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/semi.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/semi.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/semicolons.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/semicolons.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf.2886991.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf.2886991.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf.3266678.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf.3266678.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf.3315874.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf.3315874.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf557.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf557.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf562.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf562.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf567.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf567.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf574.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf574.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf583.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf583.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf593.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf593.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sim.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sim.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_after_angle.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_after_angle.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_after_constr_colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_after_constr_colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_after_decltype.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_after_decltype.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_after_type.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_after_type.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_angle_paren.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_angle_paren.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_arith_additive.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_arith_additive.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_balance_nested_parens.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_balance_nested_parens.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_byref_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_before_byref_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_case_colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_before_case_colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_constr_colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_before_constr_colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_not_var_ptr_star.cpp109
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_tr_emb_cmt_input.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_before_tr_emb_cmt_input.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_brace_brace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_brace_brace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_brace_catch.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_brace_catch.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_cmt_cpp_region.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_cmt_cpp_region.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_cmt_cpp_start.cc (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_cmt_cpp_start.cc)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_cond_question.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_cond_question.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_cparen_oparen.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_cparen_oparen.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_cpp_lambda_fparen.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_cpp_lambda_fparen.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_decltype.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_decltype.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_endif_cmt.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_endif_cmt.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_enum_assign.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_enum_assign.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_enum_colon.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_enum_colon.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_func_call_paren.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_func_call_paren.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_inside_braces_enum.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_inside_braces_enum.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_not_not.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_not_not.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_paren_brace.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_paren_brace.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_qualifier_ptr_star.cpp8
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_skip_vbrace_tokens.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_skip_vbrace_tokens.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_throw_paren.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_throw_paren.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_type_func.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_type_func.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/squeeze_ifdef.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/squeeze_ifdef.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/static.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/static.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/stdcall.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/stdcall.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/string_replace_tab_chars.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/string_replace_tab_chars.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/strings.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/strings.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/tab-0.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/tab-0.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/tab-1.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/tab-1.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/templ_class.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/templ_class.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/templates.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/templates.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/templates2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/templates2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/templates3.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/templates3.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/templates4.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/templates4.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/throws.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/throws.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/toggle_processing_cmt.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/toggle_processing_cmt.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/toggle_processing_cmt2.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/toggle_processing_cmt2.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/trailing_return.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/trailing_return.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/trailing_return_byref_ptr.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/trailing_return_byref_ptr.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/try-catch-nl.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/try-catch-nl.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/type_brace_init_lst.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/type_brace_init_lst.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/uniform_initialization.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/uniform_initialization.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/using-alias-in-define.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/using-alias-in-define.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/var_def_blks.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/var_def_blks.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/var_def_gap.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/var_def_gap.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/variadic-template.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/variadic-template.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/wacky-template.cpp (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/wacky-template.cpp)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/1822.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/1822.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/615_nested-usings.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/615_nested-usings.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/620_getset-brace.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/620_getset-brace.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/621_this-spacing.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/621_this-spacing.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/625_where-constraints.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/625_where-constraints.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/630_bad-new-init-semicolon-removal.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/630_bad-new-init-semicolon-removal.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/Issue_2705.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/Issue_2705.cs)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-11662.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-11662.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-11993.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-11993.cs)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-12303.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-12303.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1288.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1288.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1338.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1338.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1343.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1343.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1345.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1345.cs)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-13955.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-13955.cs)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-14131.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-14131.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-17253.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-17253.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-18437.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-18437.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-18777.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-18777.cs)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-18780.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-18780.cs)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-18829.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-18829.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1919.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1919.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-19644.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-19644.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1975.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1975.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1977.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1977.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1978.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1978.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-19895.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-19895.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2007.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2007.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2008.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2008.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2020.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2020.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2021.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2021.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-21730.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-21730.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2505.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2505.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2506.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2506.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2684.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2684.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2685.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2685.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-29933.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-29933.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-30498_2.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-30498_2.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-3083.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-3083.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-32658.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-32658.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-3484.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-3484.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-36862.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-36862.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-37241.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-37241.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-40685.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-40685.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-58354.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-58354.cs)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-9917.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-9917.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/add-nl-before-namespace.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/add-nl-before-namespace.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_1591.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_1591.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_1620.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_1620.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_1637.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_1637.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_1650.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_1650.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_600.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_600.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_620.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_620.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_i_679.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_i_679.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_i_935.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_i_935.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/cast.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/cast.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/cmt_backslash_eol.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/cmt_backslash_eol.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/comma.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/comma.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/delegate.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/delegate.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/exception-filters.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/exception-filters.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/fncall_as_ctor_in_attr.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/fncall_as_ctor_in_attr.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/generics.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/generics.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/getset.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/getset.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/gs.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/gs.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/ifcolalign.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/ifcolalign.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/ifcomment.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/ifcomment.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/indent-multistring-coulmn1.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/indent-multistring-coulmn1.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/logger.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/logger.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/mdarray_space.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/mdarray_space.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/misc-failures.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/misc-failures.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/mod_full_brace_nl_block_rem_mlcond.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/mod_full_brace_nl_block_rem_mlcond.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/mod_full_paren_if_bool.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/mod_full_paren_if_bool.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/new-constraint-paren-space.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/new-constraint-paren-space.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/nullable_prop.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/nullable_prop.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/oneline_property.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/oneline_property.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/operator-null-conditional.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/operator-null-conditional.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/operator_null-coalescing-assignment.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/operator_null-coalescing-assignment.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/preserveTabs.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/preserveTabs.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/property.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/property.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/region.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/region.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/remove_semi.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/remove_semi.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/sf607.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/sf607.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/sf628.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/sf628.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/simple.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/simple.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/sort_using.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/sort_using.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/sort_using_categ.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/sort_using_categ.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/sp_between_new_paren.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/sp_between_new_paren.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/squeeze-paren-close-Option.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/squeeze-paren-close-Option.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/string_multi.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/string_multi.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/strings.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/strings.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/tcf.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/tcf.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/unsafe.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/unsafe.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/utf16be.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/utf16be.cs)bin200 -> 200 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/utf16be_no_bom.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/utf16be_no_bom.cs)bin198 -> 198 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/utf16le.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/utf16le.cs)bin200 -> 200 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/utf16le_no_bom.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/utf16le_no_bom.cs)bin198 -> 198 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/var-member.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/var-member.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/verbatim_strings.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/verbatim_strings.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/when.cs (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/when.cs)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/1438.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/1438.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/HashMap.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/HashMap.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/Lexer.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/Lexer.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/bug-indent.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/bug-indent.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/casts.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/casts.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/const.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/const.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/d_sp_paren.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/d_sp_paren.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/delegate.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/delegate.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/enum.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/enum.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/extern_.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/extern_.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/funcfunc.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/funcfunc.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/imports.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/imports.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/invariant.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/invariant.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/numbers.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/numbers.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/sort_import.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/sort_import.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/square_indent_tab.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/square_indent_tab.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/static_if.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/static_if.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/static_if_in_struct.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/static_if_in_struct.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/strings.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/strings.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/template.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/template.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/template_spacing000.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/template_spacing000.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/template_spacing001.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/template_spacing001.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/template_use.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/template_use.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/tst01.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/tst01.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/tst02.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/tst02.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/tst03.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/tst03.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/type_spacing000.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/type_spacing000.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/vbraces000.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/vbraces000.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/vbraces001.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/vbraces001.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/vbraces002.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/vbraces002.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/volatile-1.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/volatile-1.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/volatile-2.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/volatile-2.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/volatile-3.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/volatile-3.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/volatile.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/volatile.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/wysiwyg_strings.d (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/wysiwyg_strings.d)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/ecma/example-1.es (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/ecma/example-1.es)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/Issue_1122.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/Issue_1122.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/Issue_1124.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/Issue_1124.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/Issue_1845.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/Issue_1845.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/Issue_670.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/Issue_670.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/Java8DoubleColon.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/Java8DoubleColon.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/annotation1.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/annotation1.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/annotation2.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/annotation2.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/annotation3.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/annotation3.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/assert.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/assert.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/cast.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/cast.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/double_brace.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/double_brace.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/doxy-javadoc-alignment.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/doxy-javadoc-alignment.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/foreach.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/foreach.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/generics.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/generics.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/generics_return_type.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/generics_return_type.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/generics_wildcard.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/generics_wildcard.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/i1121.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/i1121.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/issue_672.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/issue_672.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/leading-tabs-for-java-lambda.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/leading-tabs-for-java-lambda.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/long_cl_cmt.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/long_cl_cmt.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/nl_before_ignore_after_case.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/nl_before_ignore_after_case.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/sf567.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/sf567.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/sp_after_angle.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/sp_after_angle.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/sp_after_for_colon.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/sp_after_for_colon.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/sp_before_byref.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/sp_before_byref.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/sp_this_paren.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/sp_this_paren.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/synchronized.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/synchronized.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/try.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/try.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/variable_aligns.java (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/variable_aligns.java)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/1927.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/1927.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3766.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3766.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3767.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3767.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3811.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3811.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3812.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3812.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3813.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3813.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3819.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3819.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3822.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3822.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3823.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3823.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Declarations.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Declarations.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Fraction.h (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Fraction.h)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Fraction.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Fraction.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Issue_2172.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Issue_2172.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Issue_2289.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Issue_2289.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Issue_681.oc (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Issue_681.oc)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/UNI-11095.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/UNI-11095.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/UNI-1333.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/UNI-1333.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/align-objc-like-xcode.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/align-objc-like-xcode.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/align_colon_with_ternary_1.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/align_colon_with_ternary_1.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/align_colon_with_ternary_2.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/align_colon_with_ternary_2.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/argtypes.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/argtypes.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/asm.h.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/asm.h.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/attribute_specifier_seqs.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/attribute_specifier_seqs.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/available.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/available.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/block_in_method.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/block_in_method.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/block_literal_protocol.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/block_literal_protocol.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/block_pointer.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/block_pointer.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/blocks_align.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/blocks_align.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/blocks_align2.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/blocks_align2.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/box.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/box.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/boxed_receiver.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/boxed_receiver.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_1366.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_1366.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_167.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_167.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_1674.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_1674.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_1683.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_1683.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_340.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_340.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_404.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_404.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_497.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_497.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_841.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_841.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_i_125-412.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_i_125-412.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_i_408.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_i_408.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_i_477.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_i_477.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/c-cpp-oc-wrapper.c (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/c-cpp-oc-wrapper.c)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/cast.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/cast.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/casting.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/casting.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/chunk_ends_type1.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/chunk_ends_type1.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/chunk_ends_type2.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/chunk_ends_type2.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/chunk_ends_type3.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/chunk_ends_type3.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/chunk_ends_type4.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/chunk_ends_type4.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/cmt_insert.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/cmt_insert.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/cmt_insert2.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/cmt_insert2.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/code_placeholder.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/code_placeholder.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/complex_method.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/complex_method.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/definesalign.h.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/definesalign.h.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/delete-space-oc.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/delete-space-oc.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/double-indent-objc-dict.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/double-indent-objc-dict.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/double_angle_space.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/double_angle_space.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/exceptions.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/exceptions.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/extern-c-attribute.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/extern-c-attribute.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/for.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/for.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/for2.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/for2.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/func-param-wrap-oc.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/func-param-wrap-oc.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/func_def.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/func_def.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/gh137.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/gh137.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/gh293.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/gh293.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/gh511.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/gh511.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/i1213.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/i1213.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/indent-inside-ternary-operator.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/indent-inside-ternary-operator.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/indent-objc-block.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/indent-objc-block.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/indent_boxed.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/indent_boxed.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/indent_oc_inside_msg_sel.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/indent_oc_inside_msg_sel.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/indent_single_newline.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/indent_single_newline.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/inttypes.h.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/inttypes.h.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2629.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2629.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2631.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2631.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2675.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2675.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2722.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2722.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2724.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2724.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2727.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2727.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_3031.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_3031.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/kw.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/kw.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/literals.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/literals.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/macro-close-brace.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/macro-close-brace.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/main.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/main.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/method_ends_semicolon.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/method_ends_semicolon.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/misc.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/misc.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/more_blocks.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/more_blocks.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/more_blocks_2.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/more_blocks_2.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/msg.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/msg.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/msg_align.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/msg_align.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/negative_value.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/negative_value.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/nelem.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/nelem.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/newlines.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/newlines.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/nl_func_call_args_multi_line_ignore_closures.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/nl_func_call_args_multi_line_ignore_closures.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/nl_oc_msg_args_max_code_width.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/nl_oc_msg_args_max_code_width.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/nl_oc_msg_args_min_params.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/nl_oc_msg_args_min_params.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/ns_enum-i.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/ns_enum-i.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/ns_enum.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/ns_enum.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/objc.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/objc.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/oc-split.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/oc-split.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/oc_cond_colon.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/oc_cond_colon.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/oc_msg_in_pp.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/oc_msg_in_pp.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/ocpp_msg_access.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/ocpp_msg_access.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/pp-ignore.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/pp-ignore.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/pp_bool.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/pp_bool.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/properties.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/properties.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/protocol.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/protocol.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/react_native.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/react_native.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/real_world_file.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/real_world_file.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/receiver.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/receiver.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/return_type.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/return_type.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/selector.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/selector.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sort_import.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sort_import.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sort_import_group.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sort_import_group.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sort_import_group_regex.mm (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sort_import_group_regex.mm)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_after_angle.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_after_angle.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_after_oc_msg_receiver.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_after_oc_msg_receiver.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_before_oc_proto_list.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_before_oc_proto_list.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_cond_ternary_short.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_cond_ternary_short.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_inside_braces_oc_dict.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_inside_braces_oc_dict.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_oc_boxed.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_oc_boxed.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_oc_catch.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_oc_catch.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_oc_classname_paren-r.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_oc_classname_paren-r.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_oc_synchronized.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_oc_synchronized.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/string.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/string.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/ternary.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/ternary.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/typeof.m (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/typeof.m)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/Issue_2586.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/Issue_2586.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/Issue_2665.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/Issue_2665.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/comment.p (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/comment.p)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/crusty_ex-1.sma (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/crusty_ex-1.sma)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/enum.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/enum.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/functions.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/functions.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/gh419.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/gh419.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/preproc.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/preproc.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/rpn_calc.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/rpn_calc.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/str-escape.p (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/str-escape.p)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/switch-vsemi.sma (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/switch-vsemi.sma)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/tags.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/tags.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/test1.pawn (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/test1.pawn)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/traffic.p (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/traffic.p)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/unbraced.p (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/unbraced.p)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/sql/issue_527.sqc (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/sql/issue_527.sqc)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/sql/mysql.sqc (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/sql/mysql.sqc)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/sql/sta-select.sqc (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/sql/sta-select.sqc)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/Issue_2090.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/Issue_2090.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/Issue_2270.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/Issue_2270.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/advanced.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/advanced.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/cast.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/cast.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/gh287.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/gh287.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/identifier.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/identifier.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/list.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/list.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/mdarray_space.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/mdarray_space.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/nullable.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/nullable.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/preproc.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/preproc.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/verbatim_str.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/verbatim_str.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/verbatim_str2.vala (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/verbatim_str2.vala)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/java.test (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/java.test)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/objective-c.test218
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/pawn.test (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/pawn.test)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/run_format_tests.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/run_format_tests.py)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/run_sources_tests.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/run_sources_tests.py)0
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/run_test.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/run_test.py)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/staging.test (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/staging.test)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/__init__.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/__init__.py)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/ansicolor.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/ansicolor.py)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/config.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/config.py)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/failure.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/failure.py)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/selector.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/selector.py)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/test.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/test.py)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/utilities.py (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/utilities.py)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/tests.vpj (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/tests.vpj)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/vala.test (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/vala.test)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/uncrustify.vpj (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/uncrustify.vpj)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/uncrustify.vpw (renamed from debian/uncrustify-trinity/uncrustify-trinity-0.76.0/uncrustify.vpw)0
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity_0.76.0.orig.tar.gzbin1738469 -> 0 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity_0.78.0.orig.tar.gzbin0 -> 1804404 bytes
5323 files changed, 127510 insertions, 118803 deletions
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/AUTHORS b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/AUTHORS
deleted file mode 100644
index 6c01a700..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/AUTHORS
+++ /dev/null
@@ -1,182 +0,0 @@
-Author:
-2005 - 2016 : Ben Gardner
-
-Maintenance:
-Guy Maurel
-Michele Calgaro
-Matthew Woehlke
-
-until 2022-11-22:
-Other collaborators:
-Alan Fineberg
-Alexander GQ Gerasiov
-Alex Henrie
-André Berg
-Andrei Alexandrescu
-Andrey Starodubtsev
-Anirban Pramanick
-Antti Tapaninen
-Arne Forlie
-Arseniy Shestakov
-asobhy
-atauzki
-Aurélien Gâteau
-Benio
-Ben Iofel
-Ben Mayo
-Beren Minor
-Bi-Ruei, Chiu
-Biswa96
-Biswapriyo Nath
-B. Kevin Hardman
-Bogdan Popescu
-Brandon Slack
-Brendan Long
-Brian Kelley
-CharlieYJH
-Chris Lalancette
-Clemens Rabe
-Clint Lawrence
-Code Able
-Cody Schafer
-Corentin Noël
-Dandielo
-Daniel Chumak
-Daniele Bartolini
-Dan Rose
-Dave Lee
-David Catmull
-David E. O'Brien
-David Lechner
-David Schaefgen
-Dirk Thomas
-Dittrich, Rico
-Dmitry Marakasov
-Dmitry Povolotsky
-Dmytro Povolotskyi
-Dundar Göc
-Dženan Zukić
-Eism
-Emerson Knapp
-Emmanuel Christophe
-epac-tom
-Ethan Gao
-Florin Pop
-Frank J. T. Wojcik
-Gary Ash
-Ger Hobbelt
-Hackerpilot
-Hannes Schmidt
-hghdev
-Huang-Ming Huang
-Husk3r
-Ilya Lyubimov
-Ingo Brückl
-Ivan Nazarenko
-Ivan Romanov
-Jakub Schmidtke
-Jan Weiß
-Jason
-JavDevGames
-Jeremy H
-Jeremy T Hilliker
-Jim Meyering
-Jiri Hruska
-jodi.the.tigger@gmail.com
-Jody Hagins
-Joel Ostraat
-Joergen Ibsen
-Johnny Oskarsson
-Jonas Hurrelmann
-Joshua Gross
-Joshua Parker
-Julian Picht
-Kalle Raiskila
-Keepun
-Kevin Wong
-krys
-Laurent Tréguier
-Lauri Kasanen
-lbmaian
-Leon Breedt
-Lorenz Haas
-Lykurg
-Maciej Bogusz
-Marco Stephan
-Marcus Nilsson
-Marek Fort
-Marius Zwicker
-Mark Stegeman
-Markus Geimer
-Martin Simonovsky
-Martin Storsjo
-Matthew McDole
-Matthew Woehlke
-Maxim Mikityanskiy
-Max Smolens
-MeXx
-Michaël Peeters
-Michele Calgaro
-Mihai Popescu
-Mike
-Mike Gelfand
-Mirko König
-mjbogusz
-MrTheMake
-Nate
-neok-m4700
-Nico Decker
-Oleg Liatte
-Oleg Smolsky
-Owen Rudge
-Pat Notz
-Patrick Rohr
-Paul Cercueil
-Paul Smith
-Pavel Geiger
-Paweł Benetkiewicz
-PerfectCarl
-Peter Bruin
-Peter Hartley
-Peter Jonas
-Peter Kolbus
-Peter Tao
-Peter Waller
-Piet Van Reepingen
-PMheart
-Randolph R. Settgast
-Randolph Settgast
-RaveTheTadpole
-Ray Strode
-Richard Maxwell
-Ricky Lopez
-Roland Schulz
-Roman Gordienko
-Ryan Maxwell
-Samish Chandra Kolli
-Samish Kolli
-Scott Bilas
-Sebastian Andersson
-S. Gilles
-Shazron Abdullah
-Siddharth Kannan
-Slávek Banko
-Spark-NF
-Stefan Koch
-Stefan Nunninger
-Stephen Gilles
-Steven Lee
-Suhaib Ishaque
-t-bltg
-Tim Hütz
-Timotheus Pokorra
-Todd Richmond
-Twigz
-U-RDEC\ParkerJS
-Vadim Zeitlin
-Viktor Kireev
-Vincent Rouillé
-Vojtěch Balík
-Vyacheslav Shegai
-Waldir Pimenta
-Yannick Bühler
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/CMakeLists.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/CMakeLists.txt
deleted file mode 100644
index 2e288f01..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/CMakeLists.txt
+++ /dev/null
@@ -1,551 +0,0 @@
-cmake_minimum_required(VERSION 3.2)
-
-project(uncrustify)
-
-if("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
- message(FATAL_ERROR "
- In-source builds are not supported, please remove the `CMakeFiles'
- folder and `CMakeCache.txt', and create a folder for the build:
- mkdir build; cd build; cmake ..
- ")
-endif()
-
-include(CheckCXXCompilerFlag)
-include(CheckIncludeFileCXX)
-include(CheckSymbolExists)
-include(CheckCXXSymbolExists)
-include(CheckTypeSize)
-include(CTest)
-
-if( ${CMAKE_VERSION} VERSION_LESS "3.12" )
- find_package( PythonInterp )
- if( NOT PYTHON_EXECUTABLE )
- message( FATAL_ERROR "Python is required, but was not found on your system" )
- endif()
- else( )
- find_package(Python3 REQUIRED)
- set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
-endif()
-
-#
-# Check compiler flags
-#
-if(MSVC)
- add_definitions(/D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /wd4267)
- add_definitions(/utf-8)
-elseif(CMAKE_COMPILER_IS_GNUCXX)
- set(gcc_warning_flags
- -Wall
- -Wextra
- -Wshadow
- -Wpointer-arith
- -Wcast-qual
- -Wcast-align
- -Wc++11-extensions
- )
- foreach(flag ${gcc_warning_flags})
- string(REGEX REPLACE "[^a-zA-Z0-9]+" "_" flag_var "CXXFLAG_${flag}")
- CHECK_CXX_COMPILER_FLAG("${flag}" ${flag_var})
- if(${flag_var})
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
- endif()
- unset(flag_var)
- endforeach()
- if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers")
- endif()
- unset(gcc_warning_flags)
-elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
-endif()
-
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED YES)
-
-if(ENABLE_SANITIZER)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1 -fno-omit-frame-pointer -fsanitize=${ENABLE_SANITIZER}")
-endif()
-
-#set(UNCRUSTIFY_SEPARATE_TESTS "True")
-
-include_directories(
- ${PROJECT_BINARY_DIR}/src
- ${PROJECT_SOURCE_DIR}/src
- ${PROJECT_BINARY_DIR}
-)
-
-#
-# Determine config
-#
-if(WIN32)
- # Windows builds use src/windows_compat.h instead of config.h
-else()
- # Generate config.h
- set(avail_headers "")
-
- set(headers
- inttypes.h
- memory.h
- stdint.h
- stdlib.h
- strings.h
- string.h
- sys/stat.h
- sys/types.h
- unistd.h
- utime.h
- )
- foreach(header ${headers})
- string(TOUPPER "${header}" header_uc)
- string(REGEX REPLACE "[^A-Z0-9_]" "_" include_var "HAVE_${header_uc}")
- check_include_file_cxx("${header}" ${include_var})
- if(${include_var})
- list(APPEND avail_headers ${header})
- endif()
- unset(include_var)
- unset(header_uc)
- endforeach()
- unset(headers)
-
- check_include_file("stdbool.h" HAVE_STDBOOL_H)
-
- set(symbols
- memset
- strcasecmp
- strchr
- strdup
- strerror
- strtol
- strtoul
- )
- foreach(symbol ${symbols})
- string(TOUPPER "${symbol}" symbol_uc)
- string(REGEX REPLACE "[^A-Z0-9_]" "_" symbol_var "HAVE_${symbol_uc}")
- check_cxx_symbol_exists("${symbol}" "${avail_headers}" ${symbol_var})
- unset(symbol_var)
- unset(symbol_uc)
- endforeach()
- unset(symbols)
-
- unset(avail_headers)
-
- check_type_size(_Bool _BOOL LANGUAGE C)
-
- configure_file(src/config.h.in config.h @ONLY)
-endif()
-
-#
-# Generate uncrustify_version.h
-#
-
-set(UNCRUSTIFY_VERSION "0.76.0_f")
-
-option(NoGitVersionString "Do not use make_version.py and git to build a version string" OFF)
-if(NoGitVersionString)
- configure_file(src/uncrustify_version.h.in uncrustify_version.h @ONLY)
- add_custom_target(generate_version_header) # Dummy target
-else()
- # Add target to generate version header;
- # do this every build to ensure git SHA is up to date
- add_custom_target(generate_version_header
- BYPRODUCTS "${PROJECT_BINARY_DIR}/uncrustify_version.h"
- COMMAND
- ${CMAKE_COMMAND}
- -D PYTHON_EXECUTABLE:STRING=${PYTHON_EXECUTABLE}
- -D SOURCE_DIR:PATH="${PROJECT_SOURCE_DIR}"
- -D INPUT:PATH="${PROJECT_SOURCE_DIR}/src/uncrustify_version.h.in"
- -D OUTPUT:PATH="${PROJECT_BINARY_DIR}/uncrustify_version.h"
- -D UNCRUSTIFY_VERSION:STRING="${UNCRUSTIFY_VERSION}"
- -P ${PROJECT_SOURCE_DIR}/cmake/GenerateVersionHeader.cmake
- COMMENT "Generating version header"
- )
- set_source_files_properties(
- "${PROJECT_BINARY_DIR}/uncrustify_version.h"
- PROPERTIES GENERATED TRUE
- )
-endif()
-
-#
-# Generate token_names.h
-#
-add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/token_names.h"
- COMMAND ${CMAKE_COMMAND}
- "-Dsrc_file=${PROJECT_SOURCE_DIR}/src/token_enum.h"
- "-Ddst_file=${CMAKE_CURRENT_BINARY_DIR}/token_names.h"
- -P "${PROJECT_SOURCE_DIR}/cmake/GenerateTokenNames.cmake"
- MAIN_DEPENDENCY src/token_enum.h
- COMMENT "Generating token_names.h"
-)
-
-# Set up commands for generated source files
-function(py_gen OUTPUT SCRIPT INPUT)
- set(out "${PROJECT_BINARY_DIR}/src/${OUTPUT}")
- set(deps "${PROJECT_SOURCE_DIR}/src/${INPUT}")
- get_filename_component(outdir "${out}" DIRECTORY)
- foreach(arg IN LISTS ARGN)
- if (IS_ABSOLUTE "${arg}")
- list(APPEND deps "${arg}")
- else()
- list(APPEND deps "${PROJECT_SOURCE_DIR}/src/${arg}")
- endif()
- endforeach()
-
- add_custom_command(
- OUTPUT "${out}"
- COMMAND ${CMAKE_COMMAND} -E make_directory "${outdir}"
- COMMAND ${PYTHON_EXECUTABLE}
- "${PROJECT_SOURCE_DIR}/scripts/${SCRIPT}"
- "${out}"
- ${deps}
- DEPENDS ${deps} "${PROJECT_SOURCE_DIR}/scripts/${SCRIPT}"
- MAIN_DEPENDENCY src/${INPUT}
- COMMENT "Generating ${OUTPUT}"
- )
-endfunction()
-
-py_gen(punctuator_table.h
- make_punctuator_table.py
- symbols_table.h
-)
-
-py_gen(options.cpp
- make_options.py
- options.h
- options.cpp.in
-)
-
-py_gen(option_enum.h
- make_option_enum.py
- option.h
- option_enum.h.in
-)
-
-py_gen(option_enum.cpp
- make_option_enum.py
- option.h
- option_enum.cpp.in
-)
-
-py_gen(../etc/uncrustify.xml
- make_katehl.py
- ../etc/uncrustify.xml.in
- "${PROJECT_BINARY_DIR}/uncrustify_version.h"
- options.h
- option.h
- token_enum.h
-)
-
-#
-# Uncrustify
-#
-set(uncrustify_sources
- src/align_add.cpp
- src/align_asm_colon.cpp
- src/align_assign.cpp
- src/align_braced_init_list.cpp
- src/align.cpp
- src/align_eigen_comma_init.cpp
- src/align_func_params.cpp
- src/align_func_proto.cpp
- src/align_init_brace.cpp
- src/align_left_shift.cpp
- src/align_log_al.cpp
- src/align_nl_cont.cpp
- src/align_oc_decl_colon.cpp
- src/align_oc_msg_colons.cpp
- src/align_oc_msg_spec.cpp
- src/align_preprocessor.cpp
- src/align_same_func_call_params.cpp
- src/align_stack.cpp
- src/align_struct_initializers.cpp
- src/align_tab_column.cpp
- src/align_tools.cpp
- src/align_trailing_comments.cpp
- src/align_typedefs.cpp
- src/align_var_def_brace.cpp
- src/args.cpp
- src/backup.cpp
- src/brace_cleanup.cpp
- src/braces.cpp
- src/calculate_closing_brace_position.cpp
- src/change_int_types.cpp
- src/chunk.cpp
- src/ChunkStack.cpp
- src/combine.cpp
- src/combine_fix_mark.cpp
- src/combine_labels.cpp
- src/combine_tools.cpp
- src/combine_skip.cpp
- src/compat_posix.cpp
- src/compat_win32.cpp
- src/cs_top_is_question.cpp
- src/detect.cpp
- src/enum_cleanup.cpp
- src/EnumStructUnionParser.cpp
- src/EnumStructUnionParser.h
- src/flag_braced_init_list.cpp
- src/flag_decltype.cpp
- src/flag_parens.cpp
- src/frame_list.cpp
- src/indent.cpp
- src/keywords.cpp
- src/lang_pawn.cpp
- src/language_tools.cpp
- src/logger.cpp
- src/logmask.cpp
- src/log_rules.cpp
- src/mark_question_colon.cpp
- src/md5.cpp
- src/newlines.cpp
- src/option.cpp
- src/options_for_QT.cpp
- src/output.cpp
- src/parameter_pack_cleanup.cpp
- src/parens.cpp
- src/parent_for_pp.cpp
- src/ParseFrame.cpp
- src/pragma_cleanup.cpp
- src/pcf_flags.cpp
- src/punctuators.cpp
- src/quick_align_again.cpp
- src/remove_duplicate_include.cpp
- src/remove_extra_returns.cpp
- src/rewrite_infinite_loops.cpp
- src/semicolons.cpp
- src/sorting.cpp
- src/space.cpp
- src/tokenize_cleanup.cpp
- src/tokenize.cpp
- src/uncrustify.cpp
- src/uncrustify_emscripten.cpp
- src/uncrustify_types.cpp
- src/unc_ctype.cpp
- src/unc_text.cpp
- src/unc_tools.cpp
- src/unicode.cpp
- src/universalindentgui.cpp
- src/width.cpp
- ${PROJECT_BINARY_DIR}/src/options.cpp
- ${PROJECT_BINARY_DIR}/src/option_enum.cpp
-)
-
-set(uncrustify_headers
- src/add_space_table.h
- src/align_add.h
- src/align_asm_colon.h
- src/align_assign.h
- src/align_braced_init_list.h
- src/align_func_params.h
- src/align_func_proto.h
- src/align.h
- src/align_eigen_comma_init.h
- src/align_init_brace.h
- src/align_left_shift.h
- src/align_log_al.h
- src/align_nl_cont.h
- src/align_oc_decl_colon.h
- src/align_oc_msg_colons.h
- src/align_oc_msg_spec.h
- src/align_preprocessor.h
- src/align_same_func_call_params.h
- src/align_stack.h
- src/align_struct_initializers.h
- src/align_tab_column.h
- src/align_tools.h
- src/align_trailing_comments.h
- src/align_typedefs.h
- src/align_var_def_brace.h
- src/args.h
- src/backup.h
- src/base_types.h
- src/brace_cleanup.h
- src/braces.h
- src/calculate_closing_brace_position.h
- src/change_int_types.h
- src/char_table.h
- src/chunk.h
- src/ChunkStack.h
- src/combine.h
- src/combine_fix_mark.h
- src/combine_labels.h
- src/combine_skip.h
- src/combine_tools.h
- src/compat.h
- src/cs_top_is_question.h
- src/detect.h
- src/enum_cleanup.h
- src/enum_flags.h
- src/error_types.h
- src/flag_braced_init_list.h
- src/flag_decltype.h
- src/flag_parens.h
- src/frame_list.h
- src/indent.h
- src/keywords.h
- src/lang_pawn.h
- src/language_tools.h
- src/ListManager.h
- src/logger.h
- src/log_levels.h
- src/logmask.h
- src/log_rules.h
- src/mark_question_colon.h
- src/md5.h
- src/newlines.h
- src/option.h
- src/options_for_QT.h
- src/options.h
- src/output.h
- src/parameter_pack_cleanup.h
- src/parens.h
- src/parent_for_pp.h
- src/ParseFrame.h
- src/pragma_cleanup.h
- src/pcf_flags.h
- src/prototypes.h
- src/punctuators.h
- src/quick_align_again.h
- src/remove_duplicate_include.h
- src/remove_extra_returns.h
- src/rewrite_infinite_loops.h
- src/semicolons.h
- src/sorting.h
- src/space.h
- src/symbols_table.h
- src/token_enum.h
- src/tokenize_cleanup.h
- src/tokenize.h
- src/unc_ctype.h
- src/uncrustify.h
- src/uncrustify_limits.h
- src/uncrustify_types.h
- src/unc_text.h
- src/unc_tools.h
- src/unicode.h
- src/universalindentgui.h
- src/width.h
- src/windows_compat.h
- ${PROJECT_BINARY_DIR}/src/option_enum.h
- ${PROJECT_BINARY_DIR}/uncrustify_version.h
-)
-
-set(uncrustify_docs
- "${PROJECT_SOURCE_DIR}/AUTHORS"
- "${PROJECT_SOURCE_DIR}/BUGS"
- "${PROJECT_SOURCE_DIR}/ChangeLog"
- "${PROJECT_SOURCE_DIR}/COPYING"
- "${PROJECT_SOURCE_DIR}/HELP"
- "${PROJECT_SOURCE_DIR}/README.md"
-)
-
-add_executable(uncrustify ${uncrustify_sources} ${uncrustify_headers})
-add_dependencies(uncrustify generate_version_header)
-
-set_property(TARGET uncrustify APPEND PROPERTY
- COMPILE_DEFINITIONS $<$<OR:$<CONFIG:Debug>,$<CONFIG:>>:DEBUG>
-)
-
-#
-# Generate uncrustify.1
-#
-configure_file(man/uncrustify.1.in uncrustify.1 @ONLY)
-
-#
-# Generate uncrustify.xml (katepart highlighting file)
-#
-add_custom_target(katehl
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/etc/uncrustify.xml
-)
-
-#
-# Tests
-#
-if(BUILD_TESTING)
- enable_testing()
- add_subdirectory(tests)
-endif()
-
-#
-# Coverage
-#
-OPTION(ENABLE_CODECOVERAGE "Enable code coverage testing support")
-if(ENABLE_CODECOVERAGE)
- set(CODECOVERAGE_DEPENDS uncrustify)
- include(${CMAKE_SOURCE_DIR}/cmake/CodeCoverage.cmake)
-endif(ENABLE_CODECOVERAGE)
-
-#
-# Build command to run uncrustify on its own sources
-#
-add_custom_target(format-sources)
-foreach(source IN LISTS uncrustify_sources uncrustify_headers)
- get_filename_component(source_name ${source} NAME)
- add_custom_target(format-${source_name}
- COMMAND uncrustify
- -c forUncrustifySources.cfg
- -lCPP --no-backup ${source}
- COMMENT "Formatting ${source}"
- WORKING_DIRECTORY ${uncrustify_SOURCE_DIR}
- )
- add_dependencies(format-sources format-${source_name})
-endforeach()
-
-#
-# Package
-#
-set(CPACK_PACKAGE_NAME "uncrustify")
-set(CPACK_PACKAGE_VERSION "${UNCRUSTIFY_VERSION}")
-set(CPACK_PACKAGE_VENDOR "Ben Gardner")
-set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Code beautifier")
-set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/README.md")
-set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING")
-set(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/README.md")
-set(CPACK_SOURCE_IGNORE_FILES "/\\\\.git/;/\\\\.hg/;/tests/results/;/build.*/")
-if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
- set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY FALSE)
- set(CPACK_GENERATOR "ZIP")
-endif()
-include(CPack)
-
-#
-# Install
-#
-if(MSVC)
- install(TARGETS uncrustify DESTINATION ".")
- install(FILES ${uncrustify_docs}
- DESTINATION "."
- )
- install(FILES "${PROJECT_SOURCE_DIR}/documentation/htdocs/index.html"
- DESTINATION "doc"
- )
- install(DIRECTORY "${PROJECT_SOURCE_DIR}/etc/"
- DESTINATION "cfg"
- FILES_MATCHING PATTERN "*.cfg"
- )
-else()
- include(GNUInstallDirs)
- install(TARGETS uncrustify
- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
- )
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/uncrustify.1"
- DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
- )
- install(DIRECTORY "${PROJECT_SOURCE_DIR}/etc/"
- DESTINATION "${CMAKE_INSTALL_DOCDIR}/examples"
- FILES_MATCHING PATTERN "*.cfg"
- )
- install(FILES ${uncrustify_docs}
- DESTINATION "${CMAKE_INSTALL_DOCDIR}"
- )
-endif()
-
-#
-# Uninstall
-#
-add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${PROJECT_SOURCE_DIR}/cmake/uninstall.cmake")
-
-#
-# add to build the compile_commands.json file, to be used by clang-tidy
-#
-set(CMAKE_EXPORT_COMPILE_COMMANDS "ON" CACHE BOOL "to create the compile_commands.json file" FORCE)
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/CONTRIBUTING.md b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/CONTRIBUTING.md
deleted file mode 100644
index 8a43f8a8..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/CONTRIBUTING.md
+++ /dev/null
@@ -1,90 +0,0 @@
-# Contributing to Uncrustify
-
-## How to contribute
-
-There are lots of ways to contribute to Uncrustify:
-
-- Report Issues
-
-- Propose Features or Improvements
-
-- Submit Pull Requests
-
-## Making changes
-
-* Pull latest [master][master] and create a new branch:
- - Branch name _should_ use lowercase, using `-` to separate words
- and not `_`. Other special characters _should_ be avoided.
- (However, feel free to use option names verbatim in branch names;
- `_` _should_ be used when part of an option name.)
- - A hierarchical structure _may_ be designated using `/`
- (e.g. `area/topic`), although this is uncommon.
- The last part of the name can be keywords like `bugfix`, `feature`,
- `optim`, `docs`, `refactor`, `test`, etc.
- - Branches _should_ be named after _what_ the change is about.
- - Branches _should not_ be named after the issue number,
- developer name, etc.
-
-* Organize your work:
- - Specialize your branch to target only one thing.
- Split your work in multiple branches if necessary.
- - Make commits of logical units.
- - Avoid "fix-up" commits.
- Instead, rewrite your history so that the original commit is "clean".
- - Try to write a [quality commit message][commits]:
- + Separate subject line from body with a blank line.
- + Limit subject line to 50 characters.
- + Capitalize the subject line.
- + Do not end the subject line with a period.
- + Use imperative present tense in the subject line.
- A proper subject can complete the sentence
- "If applied, this commit will, [subject]".
- + Wrap the body at 72 characters.
- + Include motivation for the change
- and contrast its implementation with previous behavior.
- Explain the _what_ and _why_ instead of _how_.
- - If the git diff command, or the diff part of the git gui,
- don't produce accurate output, it might be necessary to add
- some lines to the ~/.gitconfig file:
- [diff]
- algorithm = patience
- [gui]
- diffopts = --patience
-
-
-* Add or update unit tests:
- - All behavioral changes should come with a unit test that verifies
- that the new feature or fixed issue works as expected.
- - Consider improving existing tests if it makes sense to do so.
- - Any unused test number may be used,
- however it is preferred to keep related tests together, if possible.
- - Read [Writing Tests][tests] for more details.
-
-* Polish your work:
- - The code should be clean, with documentation where needed.
- - The change must be complete (no upcoming fix-up commits).
- - Functional changes should always be accompanied by tests (see above).
- Changes without tests should explain why tests are not present.
- (Changes that are non-functional, such as documentation changes,
- can usually omit tests without justification.)
-
-* Prepare a Pull Request (PR):
- - To reduce the likelihood of conflicts and test failures,
- consider rebasing your work on top of latest master before creating a PR.
- - Verify that your code is working properly
- by running `ctest` in your build directory.
- (Changes that fail CI will _not_ be merged.
- Running the tests locally will help to avoid this.)
- You can change the level of logging by changing the line 104 and 109
- of the file tests/test_uncrustify/test.py to another value.
- - The PR title should represent _what_ is being changed
- (a rephrasing of the branch name if set correctly).
- - The PR description should document the _why_ the change needed to be done
- and not _how_, which should be obvious by doing the code review.
- - After commiting a new PR, one may have a look to the results:
- https://coveralls.io/github/uncrustify/uncrustify
-
-
-[master]: https://github.com/uncrustify/uncrustify/tree/master
-[commits]: https://chris.beams.io/posts/git-commit/
-[tests]: https://github.com/uncrustify/uncrustify/wiki/Writing-Tests
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/ChangeLog b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/ChangeLog
deleted file mode 100644
index 6f9294b5..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/ChangeLog
+++ /dev/null
@@ -1,1644 +0,0 @@
-Change highlights in uncrustify-0.76.0 (November 2022)
--------------------------------------------------------------------------------
- 1aea3d1fcb55dc2ca40dfe2b1d548685a415ef3a
- Added : nl_collapse_empty_body_functions Apr 29 2022
- c7f5df072f56bb0e3a9b897e16b8e5fc283f3bcf
- Added : set_numbering_for_html_output May 29 2022
- 92e4a36a5a78d9af523008aeb71e7acfe199269a
- Added : mod_infinite_loop Jun 22 2022
- 6e807bcec01382b164562c8ae5939d2b5ee76877
- Added : mod_short_int Jun 28 2022
- Added : mod_long_int Jun 28 2022
- Added : mod_unsigned_int Jun 28 2022
- Added : mod_signed_int Jun 28 2022
- baad5db83faf5fb771cea8898760ad582227ccda
- Added : mod_int_prefer_int_on_left Jul 6 2022
- Added : mod_int_long Jul 6 2022
- Added : mod_int_signed Jul 6 2022
- Added : mod_int_unsigned Jul 6 2022
- Added : mod_int_short Jul 6 2022
- e6a5458d32ca26c8b7d24f514115ebc36fce2348
- Added : nl_oc_msg_args_min_params Jul 9 2022
- 862369a315763ce1286732da3713414cd2533227
- Added : pp_space_after Jul 14 2022
- Added : pp_space_before Jul 14 2022
- Removed : pp_space Jul 14 2022
- be0d1664f901d1cbfa7bf7697a883adf4b709444
- Added : nl_throw_expr Jul 19 2022
- Added : mod_paren_on_throw Jul 19 2022
- 9e65feefa2d66c5d08049e53468cae682f66800d
- Added : debug_sort_the_tracks Aug 2 2022
- b58f1298a3ddcd256ecb0688f6b18ca7c623f594
- Removed : pp_space_before Aug 6 2022
- a31e5c100de768b4fec45a3e1c2d1e008824b2c6
- Added : nl_var_def_blk_end_func_top Aug 11 2022
- Removed : nl_func_var_def_blk Aug 11 2022
- 56e2159b29c372ebd1e240d427c842b5bb0b2147
- Added : pp_indent_with_tabs Sep 6 2022
- 35075d50967014dd7127640d2505bca5dc21dfe5
- Added : pp_multiline_define_body_indent Sep 15 2022
- 5b88110f5bb685a9b298b247207e32c305366d18
- Added : nl_oc_msg_args_max_code_width Sep 20 2022
- 0c8e5e827d3b5a007247ef3d5ed937cf18378680
- Added : debug_decode_the_flags Oct 9 2022
-
-Change highlights in uncrustify-0.75.0 (May 2022)
--------------------------------------------------------------------------------
- 52131d9fa22fd0c655ae2510563ff85306d4bd27
- Added : mod_move_case_return Nov 25 2021
- d0008e933daca163ef8f7258f526e75fb8b5b160
- Added : sp_ptr_star_func_type Dec 8 2021
- a17751ae534cb7d1a8b505a111d7b8b50c9842d4
- Added : pp_indent_at_level0 Dec 14 2021
- 498c1b3a6c96c9dd8ec13a4c0f616acdb7a03cc5
- Added : align_braced_init_list_thresh Dec 16 2021
- Added : align_braced_init_list_span Dec 16 2021
- 8e811b9a57bc43d280aa592d8838cff93227968e
- Added : align_assign_on_multi_var_defs Dec 18 2021
- 75d3c536789ef23d2d8568d891a4e3ba73aa7045
- Added : sp_byref_paren Dec 24 2021
- d8507bb212aa317dce0f51227b8fd862354e03c2
- Added : sp_not_not Dec 28 2021
- d9e2ae9aad5481f9da818909893e2f55d51ba392
- Added : indent_ignore_comma_paren Jan 4 2022
- Added : indent_ignore_comma_brace Jan 4 2022
- 8eff5202a58732e17f063af8360ff3e2691713aa
- Added : indent_ignore_bool_paren Jan 13 2022
- 2c02f5c8285882ddf756992d842db12d0f98188a
- Added : indent_ignore_arith Jan 18 2022
- 0664cacee7689cf838425e83f38fb84f5e71bc63
- Added : mod_full_paren_return_bool Jan 21 2022
- Added : mod_full_paren_assign_bool Jan 21 2022
- d593f257e88161a3ed1cff15b354c85e3da68992
- Added : sp_type_colon Jan 25 2022
- 026162b8da51660126863b42d00245e21a47d7c0
- Removed : indent_ignore_comma_paren Jan 28 2022
- Removed : indent_ignore_bool_paren Jan 28 2022
- Removed : indent_ignore_comma_brace Jan 28 2022
- 6cb50031c5e2e3681d69c3dafdbb865a5b6b6a2c
- Added : indent_ignore_semicolon Feb 1 2022
- b6f55dd25fb6a12c7f81c0090f8ee42e8823ee93
- Added : sp_enum_brace Feb 2 2022
- 8aa0522fcc2ad468f1122943443f5ebf426fffc1
- Added : indent_ignore_before_class_colon Feb 4 2022
- 133fe55d6fc0b2e1695bd7a70ccd6d2dcd1b2262
- Added : indent_ignore_before_constr_colon Feb 4 2022
- c95460809c74a73459c61712ff2d9142dff101d7
- Added : indent_ignore_bool Feb 25 2022
- b37091110063b5c24b64516a49af09b8ca3cc18c
- Added : indent_ignore_first_continue Feb 25 2022
- e84f08879a7cf53b0301099a64faadeacf04a3a5
- Added : indent_ignore_assign Mar 1 2022
- 6ef69ee2a359f2e1bd8517ba4af25b969951fa71
- Added : indent_ignore_case_brace Mar 9 2022
- 02a5e50419fd1bf7c9bf0ff9d208035b47db6fbf
- Added : indent_namespace_inner_only Apr 12 2022
- 9040b9f068a179c3a09e0cf202a5ed7f91b2a12b
- Added : pp_warn_unbalanced_if Apr 15 2022
- df2ef721c95105b62a9e0cb0e9985947a739a44b
- Removed : sp_type_question Apr 30 2022
-
-Change highlights in uncrustify-0.74.0 (November 2021)
--------------------------------------------------------------------------------
- 4714d5d673d5b9c8f45d70c179f508d60130b18a
- Added : nl_before_struct Mar 12 2021
- dbb2903a94668e147b588d3eebc3be917ac4ebca
- Added : nl_before_ignore_after_case Jun 22 2021
- e97b93418c03cde680d6fd46209d7e43c5e09bfe
- Added : sp_before_ptr_star_trailing Jul 1 2021
- Added : sp_after_ptr_star_trailing Jul 1 2021
- dd5a7c3b2ab64b903e888a264693a9edb7a98ee5
- Added : sp_sparen_paren Jul 19 2021
- 94941c2f9aa8952debab1f8257eb0625bc459392
- Added : pp_indent_in_guard Jul 28 2021
- 84d3b9276c007642c4bb73ff562008253e4fe014
- Added : indent_single_line_comments_before Jul 31 2021
- Added : indent_single_line_comments_after Jul 31 2021
- Removed : indent_sing_line_comments Jul 31 2021
- 0d956a006d64fddd4f8131e6a16a23f7e447cca3
- Added : sp_after_ellipsis Jul 31 2021
- 40bbb979ecf7ad36128150f5540a462c890d5e2c
- Added : mod_remove_duplicate_include Aug 15 2021
- 97d24f3a05a53521ff2ce94928534f4bab0cc0af
- Added : sp_between_semi_for_empty Aug 22 2021
- 63109e6253387480b8bfe7f73a7f2949865fc380
- Added : nl_before_brace_open Aug 27 2021
- 03c9ac261c9282b3cf5e92d69de70d6b4566d8e9
- Added : cmt_trailing_single_line_c_to_cpp Sep 1 2021
- 1525722486dba45aa053f2c83e3015fa64880443
- Added : sp_ellipsis_parameter_pack Sep 16 2021
- Added : sp_parameter_pack_ellipsis Sep 16 2021
- 2e33ac4314dfbfc18c56ec694b0eba3e6a1318f5
- Added : sp_byref_ellipsis Sep 21 2021
- Added : sp_ptr_type_ellipsis Sep 21 2021
- f19bf09cdce5822cf3d71065cb3900ea52f6e5c7
- Added : indent_ctor_init_following Sep 30 2021
- b1274c20bea3f8e2a8d6cd05cbb23c8d66f187a7
- Added : sp_before_emb_cmt Oct 8 2021
- Added : sp_num_after_emb_cmt Oct 8 2021
- Added : sp_before_tr_cmt Oct 8 2021
- Added : sp_num_before_emb_cmt Oct 8 2021
- Added : sp_num_before_tr_cmt Oct 8 2021
- Added : sp_after_emb_cmt Oct 8 2021
- Removed : sp_before_tr_emb_cmt Oct 8 2021
- Removed : sp_num_before_tr_emb_cmt Oct 8 2021
- 563d72fcae6e0aad6e5f0ff998992a48a6767986
- Added : pp_include_at_level Oct 11 2021
- 28486dbadcc4d0ff9376776eb63f3c3bd800cf2d
- Added : sp_return Oct 12 2021
- 86105064d13fc60d14cfd134a8c3d402e7d27492
- Added : indent_comment_align_thresh Oct 13 2021
- 964db2ac20372c45621a55313cdfb1eeb8298800
- Added : indent_comment Oct 18 2021
- 92b9047256ece8d9ace2da5c743be2b9cc2b54d8
- Added : align_func_proto_amp_style Oct 23 2021
- Added : align_func_proto_star_style Oct 23 2021
- 094c79e06f6ec3111684b37b77063cf7af658105
- Added : indent_case_comment Oct 26 2021
- 7eb595caa38ced024a42ba1602d69e0387b8e3a1
- Added : indent_switch_body Nov 3 2021
- cf845deb008b45783ff94a1986131eb180fb54a8
- Added : sp_inside_for_close Nov 6 2021
- Added : sp_inside_for Nov 6 2021
- Added : sp_inside_for_open Nov 6 2021
- 2caaa17866c3b421de7e28670e85c8f8dade5a77
- Added : indent_ignore_label Nov 10 2021
- d8436ef370027bcfd289b19037c39ffdaf0ad4ff
- Added : sp_ptr_star_func_var Nov 15 2021
-
-Change highlights in uncrustify-0.73.0 (May 2021)
--------------------------------------------------------------------------------
-
- b514f25120b12db7b1ca57cdb93dd929a5bf43c4
- Added : indent_before_class_colon Nov 16 2020
- 39c969b69663f6e6cee9673e23d349a308edc44a
- Added : sp_cmt_cpp_region Dec 9 2020
- 9ca37d0c32729570de2e51c97338bc567e124ae3
- Added : cmt_sp_before_doxygen_javadoc_tags Dec 24 2020
- Added : cmt_align_doxygen_javadoc_tags Dec 24 2020
- 84e2c750d19b47bbe2547141b092855ec1f64424
- Added : cmt_reflow_fold_regex_file Dec 24 2020
- 3a8e33a12839ca3bac2e1e0b49eb279362a2ab89
- Added : processing_cmt_as_regex Dec 31 2020
- c622135751824705979d37681fe16d9a60e3d77a
- Added : cmt_reflow_indent_to_paragraph_start Jan 9 2021
- 9c0799aa096b68550507980a32a529099caf97c5
- Added : sp_cpp_lambda_argument_list Jan 19 2021
- 02054b1085166903e8c1384308ac7922cb57bd59
- Added : nl_do_leave_one_liners Jan 29 2021
- 6a4d27914fca0c64273fad979355e16021626f8a
- Added : debug_truncate Feb 7 2021
- a711e96ef7be6afc9f014c4c7e1e5ea5347aad0d
- Added : indent_comma_brace Mar 9 2021
-
-Change highlights in uncrustify-0.72.0 (November 2020)
--------------------------------------------------------------------------------
- new command option:
- --debug-csv-format : Dump debug info to file in csv-delimited format.
-
- b29dfb58d6bebb79a961d0e709543a152d260dbc
- Added : nl_inside_empty_func Aug 4 2020
- 5068a4a78d7770a7292ea7a016ab7ca0bf49cbf7
- Added : debug_timeout Sep 1 2020
- cf3e5acfb4d55b47b25b7e7daa2844e2998b47cc
- Added : sp_inside_square_empty Sep 8 2020
- b66c26c669bf9752f468115f1e6444481c0b9e6d
- Added : align_eigen_comma_init Sep 9 2020
- 7b5fd82fa5d6fc035ddfb7c087c5aeb7cf6f4bd7
- Added : pos_shift Sep 16 2020
- b61b7952835be3451cd1131baeda7b54cb61a50e
- Added : donot_indent_func_def_close_paren Sep 26 2020
- 85001632261196dc1c2f3760dc9180e4c443f9ba
- Added : donot_add_nl_before_cpp_comment Oct 14 2020
-
-Change highlights in uncrustify-0.71.0 (May 2020)
--------------------------------------------------------------------------------
-
- 6bcfb640d908038402869cb3be7bd80adcdb4708
- Added : align_oc_msg_colon_xcode_like Nov 29 2019
- 2fd5aaf255e1d0369842f54ae8d444bcbc079c7b
- Added : indent_compound_literal_return Nov 19 2019
- 4b74315b6cf8e91801b663c4171c1e0a9e12ea5b
- Added : indent_sparen_extra Nov 19 2019
- f012dd24e2d116d867404667ce15c3309466046f
- Added : sp_word_brace_init_lst Jan 21 2020
- Removed : sp_word_brace Jan 21 2020
- 466b8bcf5f8ee04686d2d7af62b5ce76241c777d
- Added : nl_func_call_args Jan 24 2020
- 807e27e81112f28ae71b21f43718a1b859ad473a
- Added : sp_before_oc_proto_list Feb 4 2020
- 94f18ac9c0c7c7fab64f14425aea69f0f49bb240
- Added : indent_off_after_assign Feb 7 2020
- 25e20f9e4ab389c06fc76bcf0dcb3fe07ab91aea
- Added : indent_off_after_return Feb 7 2020
- cee950462787ab3b7725c5fb77fa38b992527e99
- Added : indent_oc_inside_msg_sel Feb 10 2020
- 2d04118314be95654f29fb32ae50b8cd46af8682
- Added : nl_func_call_args_multi_line_ignore_closures Dec 17 2019
- 369192830c01beedcfe87c432f9c26637c1e6587
- Added : indent_inside_ternary_operator Dec 9 2019
- 100db726b938d263c6c7f07530385dec0cdd711e
- Added : use_form_feed_no_more_as_whitespace_character Feb 21 2020
- 24e27fe8cdda55e422b1db659f255da353b3022c
- Added : debug_max_number_of_loops Feb 27 2020
- 30da6cafa6b0819c48a02513cadbc256a5b450c5
- Added : debug_line_number_to_protocol Mar 17 2020
- f5d8ee093eb521ecc0c57060b0009dd5f05e039e
- Added : mod_sort_incl_import_prioritize_filename Mar 27 2020
- 8d595cb0721b299db8f1169c22d38d45df899a51
- Added : mod_sort_incl_import_ignore_extension Mar 27 2020
- 9f8b7754f03aa970ede730a5cd4e2cbd94f139cc
- Added : mod_sort_incl_import_prioritize_extensionless Mar 27 2020
- 6d5829551886ee9e643e5d6019c5389dfa738c3b
- Added : mod_sort_incl_import_prioritize_angle_over_quotes Mar 27 2020
- 27b33d779e7aa33c1ebc39a52e54c3a95bc153d4
- Added : mod_sort_incl_import_grouping_enabled Mar 27 2020
- ac62be9498fa195a54c0e2c76c438c641d68a917
- Added : disable_processing_nl_cont Apr 12 2020
- e2b17b724e00c6180c6bd6cb5b592e969c47b6a9
- Added : nl_before_opening_brace_func_class_def Apr 22 2020
- 981c761da5a4a71b059361a883c4bfff69148c49
- Added : nl_before_whole_file_endif Apr 24 2020
- Added : nl_after_whole_file_endif Apr 24 2020
- Added : nl_after_whole_file_ifdef Apr 24 2020
- Added : nl_before_whole_file_ifdef Apr 24 2020
- d55e9d21cd6377a38f741854baf1a561b984de36
- Added : nl_func_call_end Apr 29 2020
-
-Change highlights in uncrustify-0.70.1 (November 2019)
--------------------------------------------------------------------------------
-
- 5114ea856acd79cbf52fd4261b83d423fafd98da
- Added : nl_before_member Nov 17 2019
- Added : nl_after_member Nov 17 2019
- 1e911250996a7138e33006af1b664362b255f4b5
- Added : nl_template_end_multi_line Nov 17 2019
- Added : nl_template_start_multi_line Nov 17 2019
- Added : nl_template_args_multi_line Nov 17 2019
- 948bc227c46f89207346ad596e6199acb12d162f
- Added : sp_before_vardef_square Nov 18 2019
- 1ff6fc2da0b1cdef35089a2d6ac3364fbba304be
- Added : nl_template_start Nov 21 2019
- Added : nl_template_args Nov 21 2019
- Added : nl_template_end Nov 21 2019
- Removed : nl_template_end_multi_line Nov 21 2019
- Removed : nl_template_start_multi_line Nov 21 2019
- Removed : nl_template_args_multi_line Nov 21 2019
- 2df82073bb1e3bc85f75c2165a541ba906f76b8d
- Added : indent_macro_brace Nov 18 2019
- 8cb5f1be52bcbcca4148cf0514b103dec5313c55
- Added : indent_switch_break_with_case Nov 25 2019
-
-Change highlights in uncrustify-0.70.0 (is not released)
--------------------------------------------------------------------------------
-
- 710b9b90d063e1fac853b77ad9509bed37ff31ee
- Added : mod_sort_case_sensitive May 12 2019
- 40c028454904f4fc87bd93b9703eaeb58fa57dd0
- Added : sp_before_square_asm_block Jul 29 2019
- b9b7f2fffb2c73925906ca7e5c8536d03c93c4bc
- Added : nl_multi_line_sparen_open Aug 3 2019
- Added : nl_multi_line_sparen_close Aug 3 2019
- 83a014197001ea815f92d977fc30aa36dec39e1b
- Added : sp_cpp_lambda_square_paren Aug 20 2019
- Added : sp_cpp_lambda_square_brace Aug 20 2019
- Added : sp_cpp_lambda_paren_brace Aug 20 2019
- Removed : sp_cpp_lambda_paren Aug 20 2019
- 8b6455c08c4f70b04b03b48c32fa14b9014354b4
- Added : use_sp_after_angle_always Sep 13 2019
- 264ec3c988b5667c971b0d6508b17d0c9337c82c
- Added : sp_cpp_lambda_fparen Sep 13 2019
- 883ccefc3bf8c8cdf6b159f280e22c2d72ce83f5
- Added : sp_func_type_paren Oct 11 2019
- 8284db41edbb777829f26d247470c75d3d317641
- Added : nl_before_namespace Oct 8 2019
- Added : nl_after_namespace Oct 8 2019
- 3af190ceda3f8025028b5f8aae7541d35bda39c7
- Added : nl_template_class_def Oct 2 2019
- Added : nl_template_func_def_special Oct 2 2019
- Added : nl_template_using Oct 2 2019
- Added : nl_template_func_def Oct 2 2019
- Added : nl_template_class_decl Oct 2 2019
- Added : nl_template_var Oct 2 2019
- Added : nl_template_class_decl_special Oct 2 2019
- Added : nl_template_func Oct 2 2019
- Added : nl_template_func_decl_special Oct 2 2019
- Added : nl_template_func_decl Oct 2 2019
- Added : nl_template_class_def_special Oct 2 2019
- e9bc08c3baa3b7545a592b5e1d0d23e530c58b7f
- Added : sp_trailing_return Oct 23 2019
- d783ecfe7f08b525eb882ff3a7c6525d8866d54b
- Added : nl_oc_before_interface Oct 28 2019
- Added : nl_oc_before_implementation Oct 28 2019
- Added : nl_oc_before_end Oct 28 2019
- 3741e59342c5741020b84eba147b0c1dfde0154b
- Added : indent_func_def_param_paren_pos_threshold Nov 6 2019
- 829b4124c02e36156489d06a8b33e3552e58d30b
- Added : sp_brace_close_while Nov 8 2019
- Added : sp_while_paren_open Nov 8 2019
- Added : sp_do_brace_open Nov 8 2019
- ea6f4ac515c0ad5651be020a3295dcae01c3baf9
- Added : nl_create_list_one_liner Nov 11 2019
-
-Change highlights in uncrustify-0.69.0 (May 2019)
--------------------------------------------------------------------------------
-
-Changing option:
- - The option name is changed from 'align_assign_func_proto' to 'align_assign_func_proto_span'
- Mar 4 17:19:40 2019
-
-New options:
- - align_constr_value_gap Apr 24 2019
- - align_constr_value_span Apr 24 2019
- - align_constr_value_thresh Apr 24 2019
- - align_func_proto_thresh Apr 5 2019
- - indent_col1_multi_string_literal Mar 31 2019
- - sp_paren_noexcept Jan 13 2019
- - sp_paren_qualifier Jan 11 2019
- - sp_type_question Jan 11 2019
- - sp_inside_angle_empty Dec 27 2018
- - nl_fdef_brace_cond Nov 29 2018
- - nl_func_call_start Nov 29 2018
-
-
-Change highlights in uncrustify-0.68 (November 2018)
--------------------------------------------------------------------------------
-
-New options:
- - align_same_func_call_params_span Nov 9
- - align_same_func_call_params_thresh Nov 9
- - nl_class_leave_one_liner_groups Oct 17
- - nl_inside_namespace Aug 26
- - sp_return_brace Aug 21
- - align_assign_decl_func Jul 24
- - sp_brace_brace Jul 23
- - sp_after_decltype Jul 22
- - sp_decltype_paren Jul 22
- - align_right_cmt_same_level Jul 14
- - nl_oc_mdef_brace Jul 8
- - mod_enum_last_comma Jul 8
- - sp_type_ellipsis Jun 15
- - sp_paren_ellipsis Jun 15
- - sp_sizeof_ellipsis Jun 15
- - sp_sizeof_ellipsis_paren Jun 15
- - indent_continue_class_head May 30
-
-Bugfix:
- - Issue # 1709, 1713, 1729, 1736, 1739, 1740, 1748, 1752, 1755, 1758, 1760,
- 1762, 1763, 1776, 1778, 1782, 1783, 1784, 1786, 1788, 1789, 1804, 1827,
- 1832, 1838, 1839, 1854, 1865, 1867, 1870, 1875, 1876, 1888, 1904, 1916,
- 1917, 1918, 1919, 1942, 1946, 1947, 1958, 1960, 1962, 1965, 1969, 1979,
- 1982, 1985, 1997, 2000, 2001, 2009, 2014, 2015, 2024, 2028, 2032, 2033,
- 2035, 2037, 2046, 2055
-
-
-Change highlights in uncrustify-0.67 (May 2018)
--------------------------------------------------------------------------------
-
-Changing option:
-
-Removed option:
-
-New options:
- - indent_first_for_expr Apr 29
- - indent_semicolon_for_paren Apr 29
- - nl_oc_interface_brace Apr 13
- - nl_oc_implementation_brace Apr 13
- - indent_cpp_lambda_only_once Mar 24
- - indent_cs_delegate_body Mar 18
- - sp_after_noexcept Mar 18
- - indent_single_newlines Mar 6
- - sp_after_ptr_block_caret Feb 24
- - sp_after_oc_synchronized Feb 24
- - sp_inside_square_oc_array Feb 23
- - sp_oc_catch_paren Feb 23
- - sp_oc_catch_brace Feb 23
- - sp_oc_brace_catch Feb 23
- - nl_oc_catch_brace Feb 23
- - nl_oc_brace_catch Feb 23
- - nl_cs_property_leave_one_liners Feb 16
- - indent_member_single Feb 10
- - sp_func_call_user_paren_paren Feb 5
- - sp_func_call_user_inside_fparen Feb 5
- - sp_inside_braces_oc_dict Feb 5
- - nl_create_func_def_one_liner Jan 17
- - nl_namespace_two_to_one_liner Jan 15
- - nl_squeeze_paren_close Jan 15
- - sp_fparen_brace_initializer Jan 12
- - sp_cpp_before_struct_binding 2018 Jan 12
- - indent_align_paren Dec 14
- - nl_tsquare_brace Dec 9
- - indent_single_after_return Nov 28
- - indent_off_after_return_new Nov 28
- - indent_ignore_asm_block 2017 Nov 05
-
-New keyword:
- - __unused Apr 21
- - @synchronized Feb 24
- - @available Feb 23
- - fixed Feb 16
- - @protected Feb 4
- - @public Feb 4
- - __autoreleasing Feb 4
- - __bridge Feb 4
- - __bridge_retained Feb 4
- - __bridge_transfer Feb 4
- - __declspec Feb 4
- - __has_include Feb 4
- - __has_include_next Feb 4
- - __strong Feb 4
- - __typeof Feb 4
- - __unsafe_unretained Feb 4
- - __weak Feb 4
- - self Feb 4
- - unsafe_unretained 2018 Feb 4
- - where 2017 Dec 6
-
-Bugfix:
- - Debian issue #881249 "FTBFS on armel/i386/mips64el/s390x: cpp_33057 fails"
- is fixed
- - Adopt many bugfix and tests from UT:
- 10000, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009, 10011,
- 10012, 10013, 10014, 10015, 10016, 10018, 10019, 10020, 10021, 10022,
- 10023, 10024, 10025, 10027, 10028, 10029, 10030, 10031, 10032, 10033,
- 10034, 10035, 10036, 10039, 10044, 10045, 10046, 10047, 10048, 10049,
- 10050, 10051, 10052, 10053, 10054, 10054, 10055, 10056, 10057, 10058,
- 10060, 10062, 10063, 10065, 10066, 10067, 10069, 10070, 10071, 10072,
- 10073, 10074, 10075, 10076, 10077, 10078, 10079, 10080, 10100, 10102,
- 10103, 10104,
- 60001, 60002, 60003, 60004, 60005, 60006, 60007, 60008, 60009, 60011,
- 60012, 60013, 60014, 60015, 60016, 60017, 60018, 60019, 60020, 60021,
- 60022, 60023, 60024, 60025, 60026, 60027, 60028, 60029, 60030, 60031,
- 60032, 60033, 60034, 60036, 60037, 60038, 60039, 60040
-
-New:
- - Add crash handling for Windows
-
-Change highlights in uncrustify-0.66 (November 2017)
--------------------------------------------------------------------------------
-
-New options:
- - sp_arith_additive Oct 17
- - sp_angle_colon Oct 17
- - nl_func_call_empty Sep 30
- - nl_func_call_paren_empty Sep 30
- - align_func_params_span Sep 29
- - align_func_params_thresh Sep 29
- - align_func_params_gap Sep 29
- - nl_func_call_paren Jul 25
- - indent_paren_after_func_def Jul 21
- - indent_paren_after_func_decl Jul 21
- - indent_paren_after_func_call Jul 21
- - nl_func_paren_empty Jul 07
- - nl_func_def_paren_empty Jul 07
- - indent_switch_pp Jun 22
- - pp_indent_case Jun 22
- - pp_indent_func_def Jun 22
- - pp_indent_extern Jun 22
- - pp_indent_brace Jun 22
-
-Changing option:
- - The option name is changed from 'align_number_left' to 'align_number_right'
-
-Bugfix:
- - Issue # 548, 1098, 1103, 1108, 1112, 1127, 1134, 1158, 1165, 1170, 1187,
- 1200, 1203, 1236, 1249, 1310, 1315, 1340, 1349, 1352, 1366 are fixed
-
-Change highlights in uncrustify-0.65 (May 2017)
--------------------------------------------------------------------------------
-
-New options:
- - nl_before_if_closing_paren May 12
- - sp_after_type_brace_init_lst_open May 09
- - sp_before_type_brace_init_lst_close May 09
- - sp_inside_type_brace_init_lst May 09
- - sp_type_brace_init_lst May 09
- - nl_type_brace_init_lst May 09
- - nl_type_brace_init_lst_open May 09
- - nl_type_brace_init_lst_close May 09
- - mod_sort_oc_property_class_weight May 05
- - mod_full_brace_nl_block_rem_mlcond Mar 17
- - sp_inside_newop_paren_open Mar 13
- - sp_inside_newop_paren Mar 13
- - sp_after_newop_paren Mar 13
- - sp_inside_newop_paren_close Mar 13
- - pp_ignore_define_body Feb 18
- - sp_enum_colon Feb 13
- - nl_enum_class Feb 13
- - nl_enum_class_identifier Feb 13
- - nl_enum_identifier_colon Feb 13
- - nl_enum_colon_type Feb 13
- - indent_param Feb 01
- - include_category_0 Jan 24
- - include_category_1 Jan 24
- - include_category_2 2017 Jan 24
- - force_tab_after_define 2016 Dec 29
- - nl_max_blank_in_func Nov 26
- - indent_ternary_operator Nov 24
- - indent_using_block Oct 20
-
-New:
- - emscripten interface
- - removal of autogen / configure build
- - list options that are now AT_UNUM type
- - change option name from align_number_left to align_number_right
-
-Removed option:
- - dont_protect_xcode_code_placeholders
-
-Removed MS calling convention keywords:
- - __cdecl, __clrcall, __fastcall, __stdcall, __thiscall, __vectorcall
-
-Bugfix:
- - Issue # 324, 398, 404, 497, 525, 575, 633, 638, 643, 646, 663, 666,
- 679, 682, 687, 726, 752, 753, 793, 815, 825, 842, 857, 859, 869, 870,
- 889, 902, 916, 917, 928, 935, 938, 940, 972, 1002, 1005, 1020, 1030,
- 1032, 1041, 1068, 1117, 1139 are fixed
- - Proposal #381, 876 are adopted.
-
-Change highlights in uncrustify-0.64 (October 2016)
--------------------------------------------------------------------------------
-
-New:
- - Support for new C#6 language elements. (Bug #672)
- Expression filter with the keyword 'when' in try/catch is now supported.
- Null conditional operator (?.) is now supported.
-
-New options:
- - align_var_class_span Aug 23
- - align_var_class_thresh Aug 23
- - align_var_class_gap Aug 23
- - pos_enum_comma Aug 14
- - indent_token_after_brace Aug 3
- - cmt_multi_first_len_minimum Aug 2
- - nl_enum_own_lines Aug 1
- - nl_func_class_scope Jul 26
- - nl_squeeze_ifdef_top_level Jul 24
- - sp_super_paren Jul 21
- - sp_this_paren Jul 21
- - sp_angle_paren_empty Jul 21
- - sp_after_operator_sym_empty Jul 20
- - sp_skip_vbrace_tokens Jul 13
- - indent_cs_delegate_brace Jul 9
- - cmt_insert_before_inlines Jun 29
- - cmt_insert_before_ctor_dtor Jun 29
- - mod_full_brace_if_chain_only Jun 28
- - nl_func_decl_start_multi_line Jun 28
- - nl_func_def_start_multi_line Jun 28
- - nl_func_decl_args_multi_line Jun 28
- - nl_func_def_args_multi_line Jun 28
- - nl_func_decl_end_multi_line Jun 28
- - nl_func_def_end_multi_line Jun 28
- - nl_func_call_start_multi_line Jun 28
- - nl_func_call_args_multi_line Jun 28
- - nl_func_call_end_multi_line Jun 28
- - use_options_overriding_for_qt_macros Jun 16
- - sp_func_def_paren_empty Jun 15
- - sp_func_proto_paren_empty Jun 15
- - sp_func_class_paren_empty Jun 15
- - nl_oc_block_brace May 26
- - nl_split_if_one_liner May 26
- - nl_split_for_one_line May 24
- - nl_split_while_one_liner May 24
- - nl_after_func_class_proto May 12
- - nl_after_func_class_proto_group May 12 2016
-
-Bugfix:
- - Bugs #620, #651, #654, #662, #663, #664, #670, #671, #672, #674 are fixed
- - Issues #322, #323, #359, #405, #408, #412, #478, #481, #495, #503, #509, #512, #513, #514,
- #518, #519, #520, #521, #522, #524, #529, #530, #533, #536, #539, #542,
- #543, #544, #546, #568 are fixed
- - Proposals #409, #477 are implemented
- - Issue #411 is partialy fixed
-
-
-Change highlights in uncrustify-0.63 (Mar 2016)
--------------------------------------------------------------------------------
-
-New:
- - The branch uncrustify4Qt is now merged.
- - A configuration file for the sources of uncrustify is provided:
- forUncrustifySources.cfg
- - Some considerations about the problem "stable" are described at
- forUncrustifySources.txt
- - Simplify expressions such as:
- if ((cpd.lang_flags & LANG_PAWN) != 0)
- to
- if (cpd.lang_flags & LANG_PAWN)
- - introduce CT_STDCALL to work with typedef void (__stdcall *func)(); Bug # 633
- - introduce some more MS calling conventions: __cdecl, __clrcall, __fastcall, __thiscall, __vectorcall
- https://msdn.microsoft.com/en-us/library/984x0h58.aspx
-
-New options:
- - nl_before_func_class_def Apr 16
- - nl_before_func_class_proto Apr 16
- - nl_before_func_body_def Apr 25
- - nl_before_func_body_proto Apr 25
- - use_indent_continue_only_once Mar 7 2016
-
-Bugfix:
- - Simplify some more expressions.
- - Bugfix for win32 for the flags.
- - make test c/ 00617 stable
- - make test c/ 02501 stable
- - The issue #467 and the test tests/output/c/02100-i2c-core.c are not yet fixed.
- - uncrustify all the sources with forUncrustifySources.cfg
- - better descriptions for options
- - bug #631 is fixed
- - produce a better dump output
- - DbConfig::configuredDatabase()->apply(db); is NOT a declaration of a variable
- - bug # 657 is fixed: change 'mode' if necessary for 'pos_class_comma'
- - fix 3 calls of unc_add_option for "align_oc_msg_colon_span",
- "indent_oc_block_msg", "indent_oc_msg_colon"
- - bugs #664, #662, #654, #653, #651 and #633 are fixed
-
-Reverse:
- - space: drop vbrace tokens... 2014-09-01 06:33:17
- I cannot anderstand this change.
- It makes some troubles: Bug # 637
- No test file for it found
- Reverse the change until more informations could be found
-
-Change:
- - CT_DC_MEMBER + CT_FOR into CT_DC_MEMBER + CT_FUNC_CALL
-
-Some more Qt-macros:
- - Q_GADGET
- - for_each
-
-
-Change highlights in uncrustify4Qt-0.62 (Oct 2015)
--------------------------------------------------------------------------------
-This is an extention of uncrustify to support Qt-macros
- - Q_OBJECT
- - Q_EMIT
- - SLOT
- - SIGNAL
- - Q_FOREACH
- - Q_FOREVER
-
-Change highlights in uncrustify4Qt-0.62 (Oct 2015)
--------------------------------------------------------------------------------
-New options:
- - use_indent_func_call_param
-
-
-Change highlights in uncrustify-0.62 (2 Feb 2016)
--------------------------------------------------------------------------------
-This release is just a roll-up of the past year.
-Many bugs were squashed and many options were added.
-
-New options:
- - string_replace_tab_chars
- - disable_processing_cmt
- - enable_processing_cmt
- - enable_digraphs
- - indent_class_on_colon
- - indent_shift
- - indent_min_vbrace_open
- - indent_vbrace_open_on_tabstop
- - sp_after_mdatype_commas
- - sp_before_mdatype_commas
- - sp_between_mdatype_commas
- - sp_cmt_cpp_doxygen
- - sp_cmt_cpp_qttr
- - sp_between_new_paren
- - nl_while_leave_one_liners
- - nl_synchronized_brace
- - nl_before_synchronized
- - nl_after_synchronized
- - nl_after_label_colon
-
-
-Change highlights in uncrustify-0.61 (22 Dec 2014)
--------------------------------------------------------------------------------
-This release is just a roll-up of the past two years.
-Many bugs were squashed and many options were added.
-
-New options:
- - indent_paren_open_brace
- - indent_namespace_single_indent
- - indent_constr_colon
- - indent_oc_msg_prioritize_first_colon
- - indent_oc_block_msg_xcode_style
- - indent_oc_block_msg_from_keyword
- - indent_oc_block_msg_from_colon
- - indent_oc_block_msg_from_caret
- - indent_oc_block_msg_from_brace
- - sp_enum_paren
- - sp_cparen_oparen
- - sp_after_ptr_star_qualifier
- - sp_after_constr_colon
- - sp_before_constr_colon
- - sp_fparen_dbrace
- - sp_word_brace
- - sp_word_brace_ns
- - sp_cond_colon_before
- - sp_cond_colon_after
- - sp_cond_question_before
- - sp_cond_question_after
- - sp_cond_ternary_short
- - align_keep_extra_space
- - nl_cpp_lambda_leave_one_liners
- - nl_brace_square
- - nl_brace_fparen
- - nl_constr_init_args
- - nl_cpp_ldef_brace
- - nl_paren_dbrace_open
- - nl_constr_colon
- - pos_constr_comma
- - pos_constr_colon
- - mod_add_long_namespace_closebrace_comment
- - cmt_convert_tab_to_spaces
-
-
-Change highlights in uncrustify-0.60 (1 Jan 2013)
--------------------------------------------------------------------------------
-Objective C support was greatly enhanced in this release.
-Many bugs were squashed and many options were added.
-
-New options:
- - align_oc_msg_colon_first
- - align_pp_define_together
- - indent_ctor_init_leading
- - indent_func_def_force_col1
- - indent_oc_block
- - indent_oc_block_msg
- - indent_oc_msg_colon
- - ls_code_width
- - nl_after_annotation
- - nl_before_return
- - nl_between_annotation
- - nl_brace_struct_var
- - nl_oc_msg_args
- - nl_oc_msg_leave_one_liner
- - nl_remove_extra_newlines
- - nl_scope_brace
- - nl_typedef_blk_end
- - nl_typedef_blk_in
- - nl_typedef_blk_start
- - nl_unittest_brace
- - nl_var_def_blk_end
- - nl_var_def_blk_in
- - nl_var_def_blk_start
- - nl_version_brace
- - sp_after_for_colon
- - sp_after_oc_dict_colon
- - sp_after_oc_msg_receiver
- - sp_after_oc_property
- - sp_after_throw
- - sp_after_tparen_close
- - sp_annotation_paren
- - sp_before_for_colon
- - sp_before_oc_dict_colon
- - sp_before_pp_stringify
- - sp_before_template_paren
- - sp_cpp_lambda_assign
- - sp_cpp_lambda_paren
- - sp_extern_paren
- - sp_inside_sparen_open
- - sp_inside_tparen
- - sp_permit_cpp11_shift
- - sp_ptr_star_paren
-
-Changed default:
- - sp_pp_stringify = ignore (was add)
-
-See commit.log for details.
-
-
-Change highlights in uncrustify-0.59 (4 Oct 2011)
--------------------------------------------------------------------------------
-The biggest change in this release was to rework the string handling to add
-proper support for UTF-8 and UTF-16.
-
-New options:
- - nl_case_colon_brace
- - indent_ctor_init
- - sp_before_tr_emb_cmt
- - sp_num_before_tr_emb_cmt
- - utf8_bom
- - utf8_byte
- - utf8_force
- - sp_after_new
- - nl_after_struct
- - nl_after_class
- - nl_property_brace
- - nl_after_func_body_class
-
-See commit.log for details.
-
-
-Change highlights in uncrustify-0.58 (19 May 2011)
--------------------------------------------------------------------------------
-New options:
- - tok_split_gte
- - sp_catch_paren
- - sp_scope_paren
- - sp_version_paren
- - cmt_insert_oc_msg_header
-
-See commit.log for details.
-
-
-Change highlights in uncrustify-0.57 (25 Nov 2010)
--------------------------------------------------------------------------------
-New options:
- - sp_func_call_paren_empty
- - nl_func_def_start
- - nl_func_def_start_single
- - nl_func_def_paren
- - nl_func_def_args
- - nl_func_def_empty
- - nl_func_def_end
- - nl_func_def_end_single
-
-See commit.log for details.
-
-
-Change highlights in uncrustify-0.56 (27 Mar 2010)
--------------------------------------------------------------------------------
-New options:
- - indent_continue
- - indent_cmt_with_tabs
- - indent_first_bool_expr
- - indent_braces_no_class
- - indent_braces_no_struct
- - indent_var_def_cont
- - sp_assign_default
- - sp_after_oc_at_sel_parens
- - sp_inside_oc_at_sel_parens
- - align_oc_decl_colon
- - nl_after_vbrace_close
- - nl_using_brace
- - mod_full_brace_using
-
-See commit.log for details.
-
-
-Change highlights in uncrustify-0.55 (27 Nov 2009)
--------------------------------------------------------------------------------
- - See the GIT history for a full list of changes
- - Fix align_left_shift with array indexes
- - Objective C changes (Andre Berg)
- - Fix a close paren added inside a preprocessor line
- - Fix handling of 'mutable'
- - New options
- - sp_endif_cmt
- - nl_func_decl_start_single
- - nl_func_decl_end_single
- - nl_after_vbrace_open_empty
- - Improved options
- - sp_before_ellipsis
- - nl_struct_brace
- - align_on_tabstop
- - align_with_tabs
- - align_left_shift
- - nl_func_type_name
- - nl_create_if_one_liner
- - pos_assign
-
-
-Changes in uncrustify-0.54 (16 Oct 2009)
--------------------------------------------------------------------------------
- - Add mod_case_brace
- - Add sp_after_semi_for and sp_after_semi
- - Add align_oc_msg_colon
- - ObjC: Do not set the parent of everything in a message at OC_MSG (was breaking casts)
- - ObjC: sp_before_square does not apply in "if (i < [a count])"
- - Fix crash bug in chunk_get_prev() at the start of the file
- - Fix issue with #if COND followed by a cast on the next line
- - Add nl_func_decl_empty
- - Add nl_func_type_name_class
- - Add cmt_reflow_mode (Ger Hobbelt)
- - A case statement starts an expression. Fixes "case -1:"
- - Improve semicolon removal test
- - fix marking of brace/paren pairs that have a preproc inside
- - fix nl_func_type_name where the return type contains a template
- - Add mod_full_brace_if_chain
- - fix detection of deref in a macro function
- - fix detection of "std::vector<void (*)(void)> functions;"
- - Remove extra semicolons on an 'else if'
- - Add sp_before_ellipsis
- - treat a constructor the same as a function regarding nl_func_decl_*
- - Add nl_brace_brace
- - Allow any number of spaces between multi-line comments when combining them
- - Add pos_compare
- - Add pos_conditional
- - Fix indent_relative_single_line_comments
- - Add sp_after_oc_return_type and sp_after_oc_at_sel (Andre Berg)
- - Add indent_namespace_level (James LewisMoss)
- - Add indent_namespace_limit (Maciej Libera)
-
-
-Changes in uncrustify-0.53 (16 May 2009)
--------------------------------------------------------------------------------
- - Fix sp_inside_braces* options, which were broken by the fix to issue #2629652
- - Fix sp_after_cast, which was broken by a previous fix
- - Be a little more agressive in removing unecessary semicolons
- - Fix one case where the parser leaves a preprocessor #define
- - Fix indent of line starting with '(' after a function name
- - Add align_var_def_attribute
- - Fix nl_func_type_name for function without a return type (ie, cast operator)
- - Reset up state variables after processing a file
- - Fix a case where a semicolon was incorrectly removed
- - Fix a case where braces were incorrectly removed
- - Fix handling of 'force' setting for many newline options
- - Add func_wrap type for use with 'set func_wrap FSUB'
- - Add type_wrap type for use with 'set type_wrap STACK_OF'
- - Make file replacement more atomic - write to a temp file then rename
- - With the 'replace' option, only replace if the file content changes
- - Handle C# wide literal string prefix S"foo"
- - Handle the ObjC '@protocol' the same as '@interface'
- - Add 'make check' and 'make clean' (Ger Hobbelt)
- - Add align_right_cmt_at_col (Ger Hobbelt)
- - Add sp_pp_concat and sp_pp_stringify (Ger Hobbelt)
- - Add mod_add_long_ifdef_{else,endif}_comment (Ger Hobbelt)
- - Objective C improvements (Etienne Samson)
- - Only mess with escaped newlines in a comment if inside a preprocessor
- - Fix pos_xxx options when a preprocessor is near
- - Apply Debian patch to man file
- - Fix '<<' indenting/aligning (moved from indent.cpp to align.cpp)
- - Rework the sp_before_nl_cont option
- - Fix a few other bugs
-
-
-Changes in uncrustify-0.52 (28 Feb 2009)
--------------------------------------------------------------------------------
- - Add sp_before_assign and sp_after_assign
- - Add sp_enum_before_assign and sp_enum_after_assign
- - Add indent_var_def_blk
- - Add sp_inside_sparen_close for the 'CGAL' style
- - First pass at supporting ECMAScript (.es) files
- - Add support for the C# '??' operator
- - Fix conflict between nl_after_func_proto_group and nl_squeeze_ifdef
- - Add sp_cmt_cpp_start
- - Add align_on_operator
- - Fix nl_func_type_name for operators
- - Allow '$' to be part of identifiers (global change)
- - Fix detection of the '*' in 'int a = b[0] * c;'
- - Fix and improve the description of nl_multi_line_cond
- - Fix handling of global namespace type such as '::sockaddr'
- - Add nl_after_brace_close
- - Add nl_func_scope_name
- - Add cmt_insert_file_footer
-
-
-Changes in uncrustify-0.51 (27 Nov 2008)
--------------------------------------------------------------------------------
- - Prefer to split at ',' and then '=' in for() statements if at paren level
- - Fix a NULL deref crash
- - Fix nl_namespace_brace when something trails the open brace
- - Get sp_after_sparen and sp_sparen_brace to play well together
- - Ignore trailing comments when inserting the function header comment
- - Combine two C comments when they have no space between them "/***//***/"
- - Add cmt_insert_before_preproc
- - Add mod_remove_empty_return
- - Add nl_comment_func_def
- - Fix aligning of anonymous bit fields
- - Add indent_align_assign
- - Add sp_before_case_colon
- - Fix D 'invariant' handling
- - Add sp_invariant_after_paren and sp_invariant_paren
- - Fix handling of the C# [assembly: xxx] construct
- - Fix handling of the C# 'base()' construct
- - Add sp_range for the D '..' range operator as in [start .. end]
- - Update $(fclass) and $(function) to handle operators
- - Improve handling of inserted comments
- - Enable 'finally' blocks for C#
- - Add nl_after_try_catch_finally
- - Add nl_between_get_set and nl_around_cs_property
-
-
-Changes in uncrustify-0.50 (25-Oct-2008)
--------------------------------------------------------------------------------
- - Fix sp_before_unnamed_ptr_star in 'char ** n'
- - Fix crash when a open brace is at the end of a file
- - ObjC class definitions do not need { }
- - Fix ObjC msg detection
- - Add sp_after_ptr_star_func, sp_before_ptr_star_func
- - Add sp_after_byref_func, sp_before_byref_func
- - Treat an ObjC msg decl more like a function def
- - Add indent_func_const, indent_func_throw (Thanks, Ron)
- - Fix detection of prototype inside extern or namespace braces
- - Add align_left_shift to handle aligning of '<<'
- - Add sp_cpp_cast_paren
- - Add support for ObjC '@property' statements
- - Add sp_brace_typedef and sp_case_label
- - Merge in the lastest UniversalIndent support (Thanks, Thomas!)
- - Fix extra '\r' in multi-line comments and strings
- - Add sp_throw_paren
- - Assume a '<' in a preprocessor can't be part of a template
- - Don't align a constructor with class variables
- - Fix ending column error when tokenizing strings
-
-
-Changes in uncrustify-0.49 (22-Aug-2008)
--------------------------------------------------------------------------------
- - Allow the MSVC++ '64' suffix on numbers
- - Initialize align_stack class members for the MSVC++ compiler
- - Indent a line that starts with '='
- - Add pos_arith and pos_assign (Thanks, Ron!)
- - Fix pos_bool & code_width interaction (Thanks, Ron!)
- - Fix cmt_width, which was going one word over the limit. (Thanks, Ron!)
- - Major rework of the aligning code to better handle the gap options
- - Indent comments before 'case' at the same level as 'case'
- - mod_add_long_*_closebrace_comment adds the right comment type. (Thanks, Ron!)
- - Relax number parsing even further to accept stuff like "3A"
- - Add sp_after_oc_colon (Thanks, Kevin!)
- - Add better detection and labeling of Objective C messages
- - Add sp_after_send_oc_colon and sp_before_send_oc_colon (Thanks, Kevin!)
- - Fix detection of '*' in "return n * f();"
- - Add the 'set' config option which lets you create arbitrary keywords
- - Add sp_func_call_user_paren and the 'func_call_user' keyword type
-
-
-Changes in uncrustify-0.48 (18-Jul-2008)
--------------------------------------------------------------------------------
- - Fix classification of '(' in '#if defined (FOO)'
- - Add sp_defined_paren
- - Fix handling of negative in '#if X < -1'
- - Revert a change that broke indent continuation in an assignment
- - Fix interaction between nl_squeeze_ifdef and nl_after_{if,for,while,switch,do}
- - Preprocessor indents are indents, so indent_with_tabs=1 should do tabs
- - Add pp_indent_count
- - Handle C++ style casts, such as 'int(42.0)' a bit better
- - Another rework of template detection
- - Add sp_before_nl_cont, defaults to 'add'
- - If a statement starts with 'operator', it is a function call
- - Change sp_angle_word to be more generic
- - Add sp_after_operator_sym for "operator ++(" vs "operator ++ ("
- - Add sp_template_angle for "template<" vs "template <"
- - Add support for " *INDENT-OFF* " and " *INDENT-ON* "
- - Shuffle around spacing priorities
- - Add handling for '...' in variadic templates
- - Extend nl_template_class to handle anything after 'template <...>'
- - Treat the template '<' the same as '(' for indenting
- - Add indent_template_param
- - Split internal CT_CAST into CT_C_CAST, CT_CPP_CAST and CT_D_CAST
- - Swap priority of sp_after_angle and sp_before_ptr_star
- - Change cmt_multi_indent=false to disable all reformatting (needs more work)
- - Fix align_var_def_span - it wasn't counting newlines when it recursed
- - Add nl_else_if
- - mod_full_brace_if: Don't remove braces around certain 'else' statements
- - Tweak template detection a bit more
- - Rework and simplify multi-line comment indenting
- - Add indent_else_if
- - Improve right-comment aligning
- - Fix detection of functions with a 'const' return type
- - Add sp_cond_colon and sp_cond_question
- - Fine-tune the right comment align stuff
- - Add cmt_multi_check_last
- - Add align_right_cmt_gap
- - Add nl_return_expr
- - Indent FPAREN_OPEN if after a newline but not before a newline
- - Give sp_after_operator_sym priority over sp_func_call_paren
- - Add align_same_func_call_params
-
-
-Changes in uncrustify-0.47 (06-Jun-2008)
--------------------------------------------------------------------------------
- - Fix inifinite loop bug in reindent_line
- - Fix prototype detection with template parameter types
- - Fix off-by-1 error on positive values for indent_access_spec and indent_label
- - Add indent_extern to control indent extern-type namespaces
- - Add initial support for Objective C++ (extension '.mm')
- - Add nl_before_throw and indent 'throw' if after a prototype
- - Extend line numbers to 32 bits (used for logging)
- - Remove alternate token support for '<%', '%>', '<:', ':>', '%:', and '%:%:'
- - Fix recently-broken mixing of right-comment aligning (PP_ENDIF/PP_ELSE issue)
- - Indent a 'break' that follows a fully-braced 'case' at the level of the
- close brace
- - Add mod_move_case_break
- - Fix '&' and '*' after 'delete'
- - Escape opening '/*' when converting C++ comments to C comments
- - Add sp_inside_braces_empty
- - Fix cmt_sp_after_star_cont
- - Fix cmt_sp_before_star_cont
- - Explicitly disallow a tab after a space
- - Improve multi-line comment indenting a bit
- - Add sp_before_unnamed_byref and sp_before_unnamed_ptr_star
-
-
-Changes in uncrustify-0.46 (22-Apr-2008)
--------------------------------------------------------------------------------
- - Load the config file, if available, before handling '--universalindent'
- - Add align_var_def_gap, align_var_def_colon_gap, align_var_struct_gap,
- align_func_proto_gap, align_mix_var_proto, align_single_line_brace_gap
- - (internal) Eliminate the 'trailer' stuff, simplify aligning
-
-
-Changes in uncrustify-0.45 (7-Mar-2008)
--------------------------------------------------------------------------------
- - Fix buffer overflow in logger code
- - Add sp_enum_assign
- - For elipses handling in the GCC extension "case 1 ... 5:"
- - Add sp_after_class_colon, sp_before_class_colon, and sp_after_type
- - Send usage text to stdout instead of stderr
- - Fix mod_add_long_function_closebrace_comment if the file doesn't end in a newline
- - Redo alignments after splitting long lines
- - Add indent_relative_single_line_comments
- - Add indent_access_spec_body
- - Fix indent_func_proto_param to work on constructors
- - Add cmt_indent_multi
- - Add align_single_line_brace and align_single_line_func
- - Fix interaction of virtual braces and #pragma
- - Fix indenting problem with an assignment the last part of a for()
- - Fix the order of opening files so that '-f' and '-o' can be used together
- - Added a man file
- - Many improvements thanks to Stas Grabois
- - Fix a D problem due the lack of semicolons after struct/enum definitions
- - Improve the way aligning is done
-
-
-Changes in uncrustify-0.44 (12-Feb-2008)
--------------------------------------------------------------------------------
- - Fix issue with #else and unmatched braces (issue 1868493)
- - Update UnivarsalIndentGUI config output
- - Add the version to generated config files
- - Add nl_multi_line_define
- - Minimize distance between code and the backslash-newline in macros
- - Properly handle stuff like '#define MYHEADER <asm/arm.h>'
- - Fix detection of 'int foo(int);' in C++ (func proto, not class variable)
- - Improve handling of multi-line comments in a macro
- - Fix crash bug with some ctype implementations
- - Fix incorrect indenting of nested #endif with pp_if_indent_code
- - Fix problem with nl_after_if and nl_before_if w/ trailing comments
-
-
-Changes in uncrustify-0.43 (08-Jan-2008)
--------------------------------------------------------------------------------
- - Add align_right_cmt_mix to control aligning of comments after '}' and '#endif'
- - Allow a line split after an assignment
- - Fix infinite loop bug
- - Add sp_sign and sp_incdec
- - Fix vbrace conversion where some are converted and some aren't
- - Add a vbrace before a #pragma instead of after
- - Improve Objective C support
- - Add sp_before_oc_colon, sp_after_oc_scope, and sp_after_oc_type for ObjC
- - Add align_oc_msg_spec_span for ObjC
- - Add sp_member for spacing around '->' and '.'
- - More template handling improvements
- - Fix a NULL dereference related to __attribute__
-
-
-Changes in uncrustify-0.42 (30-Nov-2007)
--------------------------------------------------------------------------------
- - Fix bug that would remove a newline after a C++ comment
- - Add "--mtime" command line option to preserve the mtime
- - Remove extra semicolons before inserting newlines after semicolons
- - Fix broken struct initializer alignment
- - Fix problem with pos_class_comma in a #define
- - Fix problem with an incomplete statement in a #define and virtual braces
- - Add indent_func_proto_param and indent_func_def_param
- - Add nl_func_proto_type_name, split from nl_func_type_name
- - Add mod_add_long_switch_closebrace_comment, mod_add_long_function_closebrace_comment
- - Add mod_sort_import to sort import statements (Java/D)
- - Add mod_sort_using to sort using statements (C#)
- - Add mod_sort_include to sort #include (C/C++) and #import (ObjC) statements
- - Add indent_func_class_param, indent_func_ctor_var_param, and
- indent_func_param_double
- - Fix inserting a newline before a preprocessor
- - Don't split empty function parens for code_width stuff
-
-
-Changes in uncrustify-0.41 (07-Nov-2007)
--------------------------------------------------------------------------------
- - Add cmt_insert_func_header, cmt_insert_file_header, and cmt_insert_class_header
- - Fix detection of prototypes without named parameters
- - sp_after_byref and sp_after_ptr_star only are applied if before a word
- - internal rework
- - Add pp_define_at_level
- - Fix detection of deref in "sizeof *x"
- - Fix broken output of backslash-newline in certain situations
- - Fix pp_indent_if stuff
- - Add nl_after_brace_open_cmt
- - Properly handle anonymous namespaces
- - Add pp_space_count
-
-
-Changes in uncrustify-0.40 (12-Oct-2007)
--------------------------------------------------------------------------------
- - Simplify preprocessor indenting
- - Add pp_indent_region and pp_region_indent_code
- - Add pp_indent_at_level
- - Add pp_indent_if and pp_if_indent_code
- - Add initial VALA support
- - Fix a problem with mod_full_paren_if_bool and functions
- - Add nl_func_paren
- - Fix function type parameter marking (broken in the last few releases)
- - Don't remove newline chunks before/after a preprocessor
-
-
-Changes in uncrustify-0.39 (25-Sep-2007)
--------------------------------------------------------------------------------
- - Improve conversion operators
- - Prevent undesired chunk combining ("~ ~" vs "~~" in D)
- - Add nl_after_multiline_comment
- - Fix handling of try/catch/finally blocks in virtual braces
- - Add sp_inv, sp_not, sp_addr, sp_deref (default to remove)
- - Fix nl_class_brace
- - Fix indent_func_call_param
- - Add nl_create_if_one_liner, nl_create_for_one_liner, nl_create_while_one_liner
- - Add indent_preserve_sql
- - Fix one-liner detection with multiple statements on one line
- - Add nl_func_leave_one_liners and nl_if_leave_one_liners
- - More template improvements
-
-
-Changes in uncrustify-0.38 (04-Sep-2007)
--------------------------------------------------------------------------------
- - Fix line splitting WRT the CT_SPACE token
- - Improve function call/prototype/definition detection
- - Fix some spacing issues
- - More template improvements
- - Allow for a C++ struct constructor
- - Add nl_before_access_spec and nl_after_access_spec
- - Add cmt_width, cmt_c_group, cmt_c_nl_start, cmt_c_nl_end
- - Handle conversion operators
-
-
-Changes in uncrustify-0.37 (16-Aug-2007)
--------------------------------------------------------------------------------
- - A bunch of D language improvements
- - Add sp_d_array_colon, nl_assign_square, nl_after_square_assign
- - Fix static keyword sort order
- - Improve typedef detection and aligning
- - Split nl_ds_struct_enum_close_brace out of nl_ds_struct_enum_cmt
- - Add indent_paren_close
- - Add indent_comma_paren and indent_bool_paren
-
-
-Changes in uncrustify-0.36 (04-Aug-2007)
--------------------------------------------------------------------------------
- - Add nl_after_vbrace_open
- - Improve option descriptions
- - Fix seg faults (check for NULL)
- - Fix spacing for operators () and []
- - Add sp_before_dc and sp_after_dc to control spacing around '::'
- - Split pos_class_comma from pos_comma
- - Improve line splitting a little - no longer break at '::' or '->' or '.'
- - Add nl_enum_leave_one_liners and nl_getset_leave_one_liners
- - Add mod_remove_extra_semicolon
- - Fix handling of macro-open and macro-close
- - Add align_var_struct_thresh
- - Improve handling of comments after braces
- - Add support for Qt slots and signals
- - Add align_typedef_amp_style and align_var_def_amp_style
- - Add sp_attribute_paren and handling of the '__attribute__' macro
- - Add align_typedef_func, improve aligning of typedefs
- - Add sp_after_semi_for_empty
-
-
-Changes in uncrustify-0.35 (14-Jul-2007)
--------------------------------------------------------------------------------
- - Fix bug with nl_func_type_name and empty param list: int foo() { ... }
- - Don't parse pragma bodies
- - Properly indent multiline #error and #warning
- - Change nl_after_func_body to force the newline count (was a minimum)
- - Fix handling of CT_PTR_STAR when all options are AV_IGNORE
- - Fix problem when the first token in the file isn't in column 1
- - Properly mark catch clauses that contain parameters, ie catch (Exception *e)
- - Add a newline after the open brace for nl_catch_brace, nl_do_brace,
- nl_else_brace, nl_try_brace, nl_getset_brace, nl_finally_brace
- - Add nl_multi_line_cond
- - Fix a bug with mod_full_paren_if_bool
- - Fix handling of templated variables: Buffer<T>* buf
- - Fix handling of dynamic_cast<T*>(obj) stuff
- - Fix detection of templates in for() statements:
- for (std::map<Key, Value*>::iterator it = map.begin(); ...
- - Add --no-backup command-line option to replace w/o a backup file
- - Fix nl_class_leave_one_liners when set to false
- - Add nl_class_colon, which split the functionality of nl_class_init_args
- - Improve detection of reference variable declarations (A& B)
-
-
-Changes in uncrustify-0.34 (11-May-2007)
--------------------------------------------------------------------------------
- - Add sp_angle_paren and sp_angle_word
- - Properly handle multi-line CPP comments
- - Add sp_inside_paren_cast
- - improve indent_class_colon
- - fix indenting on open parens
- - Add sp_before_semi_for_empty
- - Fix detection of while if the do is in a preprocessor chunk (1675673)
- - (pawn) Don't add vsemi after case/switch brace close (1684840)
- - Add nl_assign_leave_one_liners to allow "foo_t foo = { 0, 1 };"
- - Change handling of #region stuff so that it is indented at brace level
- - Fix handling of missing semicolon after while-of-do.
- - Fix crash-bug in handling bad code: "if (a && );"
- - Add pos_comma
-
-
-Changes in uncrustify-0.33 (05-Mar-2007)
--------------------------------------------------------------------------------
- - Fix converting C++ comments with embedded C comments
- - Fix nl_func_var_def_blk with class variables
- - Fix some output issues with the 1st line and C++ comments
- - Eliminate indent_case_body, which wasn't used
- - Change rules for indenting case braces and the use of indent_case_brace
- - Fix variable declaration detection at the start of a code block
- - Add support for custom open/close indenting macros
- MACRO_OPEN, MACRO_ELSE, MACRO_CLOSE
- - Fix the config updating routines to NOT lose custom types and stuff
- - Add nl_after_func_body_one_liner
- - Fix nl_class_init_args
- - Add --universalindent option to output an ini file for UniversalIndentGUI
-
-
-Changes in uncrustify-0.32 (20-Feb-2007)
--------------------------------------------------------------------------------
- - Enable align_proto_var_def for constructors
- - Fix while-of-do handling inside virtual braces
- - Fix problem with comments between a close brace and else
- - Add sp_before_comma
- - Change align_var_def_star to align_var_def_star_style
- - Change align_proto_var_def to align_func_params
- - Add ls_func_split_full and ls_for_split_full
- - Rework code width code a bit
- - Start Objective C support
- - Add cmt_sp_before_star_cont and cmt_sp_after_star_cont
- - Fix spacing between (( and ))
- - Add nl_try_brace, nl_catch_brace, nl_finally_brace, nl_brace_catch,
- nl_brace_finally, sp_catch_brace, sp_brace_catch, sp_finally_brace,
- sp_brace_finally, sp_try_brace
- - Treat typedef functions the same as other function for param aligning
- - Turn any word after a enum/struct/union into a type
- - Add sp_getset_brace and nl_getset_brace
- - Add mod_full_paren_if_bool
- - Add nl_before_c_comment and nl_before_cpp_comment
- - Fix nl_class_leave_one_liners
- - Add nl_ds_struct_enum_cmt
- - Add sp_balance_nested_parens
-
-
-Changes in uncrustify-0.31 (24-Jan-2007)
--------------------------------------------------------------------------------
- - Improve mixed tab indent / space align
- - Try to fix spacing around embedded comments
- - Add indent_access_spec
- - Add __func__ and __FUNCTION__ detection for non-C99 compilers
- - General code cleanup (Thanks Tom!)
- - Add indent_xml_string
- - Add align_proto_var_def to align variables in prototypes
-
-
-Changes in uncrustify-0.30 (24-Nov-2006)
--------------------------------------------------------------------------------
- - Use environment variable UNCRUSTIFY_CONFIG if no '-c' option (non-WIN32)
- - Default to ~/.uncrustify.cfg if no '-c' option and no env var (non-WIN32)
- - Add '-q' option to the usage info
- - Added initial embedded SQL support
- - Many bug fixes
- - New options: indent_braces_no_func, indent_sing_line_comments, nl_before_if,
- nl_before_for, nl_after_for, nl_before_while, nl_after_while,
- nl_before_switch, nl_after_switch, nl_before_do, nl_after_do
-
-
-Changes in uncrustify-0.29 (26-Oct-2006)
--------------------------------------------------------------------------------
- - Add support for the 'Klaus' style
- - Fix a bunch of c++ template bugs
- - Add option nl_class_leave_one_liners
-
-
-Changes in uncrustify-0.28 (06-Oct-2006)
--------------------------------------------------------------------------------
- - Fix D range array detection a[1..4] => a[1 .. 4]
- - Fix D delegate variable aligning
- - More documentation updates (thanks Dirk!)
- - New options: nl_after_semicolon and nl_after_open_brace
-
-
-Changes in uncrustify-0.27 (23-Sep-2006)
--------------------------------------------------------------------------------
- - Improve template detection again (allow CT_TYPE in a template)
- - Fix bad formatting in "[ABC * 123]" and "[0xf & *val]"
- - Add --replace option to convert files in-place
- - Use a map for the options
- - Major configuration/option cleanup
- - add -o option to write to a file instead of stdout
-
-
-Changes in uncrustify-0.26 (09-Sep-2006) (removed a number from the version)
--------------------------------------------------------------------------------
- - Fix preprocessor labeling WRT comments
- - Fix an indenting problem
- - Add sp_after_byref
- - Fix alignment of global variable definitions
- - Fix detection of deref inside squares: a[*p]
- - Fix a weird indenting bug
- - Fix D template ! spacing
- - Add sp_after_operator
- - Add nl_template_class
- - Add start to detailed docs inside the program
- - Add --prefix and --suffix command line args
- - Add align_enum_equ_thresh and fix align_enum_equ_span
- - Fix formatting of function typedefs
- - Add indent_member
- - Simplify the indenting code a bit
- - Improve type_cast stuff (ie, dynamic_cast<> or static_cast<>) and templates
-
-
-Changes in uncrustify-0.0.25 (26-Aug-2006)
--------------------------------------------------------------------------------
- - Add sp_after_ptr_star, sp_before_ptr_star, sp_between_ptr_star
- - Fix D tokenizing for numbers and strings
- - Fix a bug with cast detection and with nl_after_func_proto
- - Improve template detection
- - Rename nl_bool_pos to pos_bool
- - Add pos_class_colon
- - Add indent_class_colon
- - Add nl_class_init_args
- - Add nl_collapse_empty_body
- - Add indent_square_nl
-
-
-Changes in uncrustify-0.0.24 (05-Aug-2006)
--------------------------------------------------------------------------------
- - Add initial PAWN support (thanks to Derek Evan Mart for testing and motivation!)
- - Fix parsing of numbers like 10.0
- - Fix double negative (- -x) vs (--x)
- - Add ability to convert C++ (//) comments into C (/* */) comments
- - Fix usage of indent_columns; output_tab_size is only needed if using tabs
- - Add first small step in code width handling
- - New options: sp_fparen_brace, sp_macro, sp_marco_func,
- nl_elseif_brace, mod_pawn_semicolon, cmt_cpp_to_c, cmt_cpp_group,
- cmt_cpp_nl_start, cmt_cpp_nl_end, sp_after_tag
-
-
-Changes in uncrustify-0.0.23 (22-Jul-2006)
--------------------------------------------------------------------------------
- - Fix some crash bugs and some formatting problems
- - Fix Windows CRLF issues (binary vs text mode)
- - Add indent_class and indent_namespace
- - Add nl_class_brace and nl_namespace_brace
- - Add handling of operator stuff in CPP
- - Improve the test script a bit
- - Add sp_inside_fparens
- - Add ability to define types in the config file
- - Started work on improving #ifdef handling by evaluating the preprocessor
-
-
-Changes in uncrustify-0.0.22 (15-Jul-2006)
--------------------------------------------------------------------------------
- - Implement nl_max, nl_before_block_comment, nl_after_func_body,
- nl_after_func_proto, nl_after_func_proto_group
- - Improve detection of function prototypes
- - Improve marking of function prototype-related tokens
- - Improve variable definition aligning
- - fix align_var_def threshold
- - Improve handling of "private:" style stuff
- - Handle types with "::" in them
- - Add preprocessor spacing and indenting
- - Fix tab indenting style 1 (tab indent, space align)
- - Improve multi-line comment formatting
-
-
-Changes in uncrustify-0.0.21 (01-Jul-2006)
--------------------------------------------------------------------------------
- - Clean up some memory leaks & uninitialized variables
- - Add option to process multiple files at once
- - Change the newlines values from [UNIX, DOS, MAC] to [LF, CRLF, CR]
- - Properly mark the parens for functions
- - Implement control over the format of the function prototypes and definitions
- - Update configuration.txt
-
-
-Changes in uncrustify-0.0.20 (10-Jun-2006)
--------------------------------------------------------------------------------
- - Fix cast on a sizeof: (INT32)sizeof(x)
- - Fix this: "#define SOME_JUNK /*lint -e123 */(const mytype_t *)-1"
- - Don't align function typedefs (fixed again)
- - Finally fix the DOS and MAC line-ending support
- - Add line-ending autodetection
- - Add Windows build support
-
-
-Changes in uncrustify-0.0.19 (27-May-2006)
--------------------------------------------------------------------------------
- - Fix C/C++/C# casts
- - Improve D casts
-
-
-Changes in uncrustify-0.0.18 (12-May-2006)
--------------------------------------------------------------------------------
- - Add nl_bool_pos to move boolean ops between eol and sol
- - Improve C99 array initializer aligning/formatting
- - Replace nl_eat_start, nl_eat_end, and nl_eof_min with nl_start_of_file,
- nl_start_of_file_min, nl_end_of_file, and nl_end_of_file_min
-
-
-Changes in uncrustify-0.0.17 (03-May-2006)
--------------------------------------------------------------------------------
- - Add nl_eat_start to remove newlines at the start of the file
- - Add nl_eat_end to remove newlines at the end of the file
- - Add nl_eof_min to set the minimum number of newlines at the end of file
- - Add newlines setting to configure the newline output
- - Add '-q' command line option to turn off logging
- - Fix bug in nl_func_var_def_blk handling
-
-
-Changes in uncrustify-0.0.16 (21-Apr-2006)
--------------------------------------------------------------------------------
- - Add a stack alignment helper class
- - Improve typedef formatting
- - Add aligning thresholds for typedefs and assignments
- - update the automake/autoconf stuff
-
-
-Changes in uncrustify-0.0.15 (14-Apr-2006)
--------------------------------------------------------------------------------
- - Switch to C++
- - Improve C++ template formatting
- - Improve C++ class handling
-
-
-Changes in uncrustify-0.0.14 (09-Apr-2006)
--------------------------------------------------------------------------------
- - Read from stdin if no file is specified
- - Build on OS X
-
-
-Changes in uncrustify-0.0.13 (07-Apr-2006)
--------------------------------------------------------------------------------
- - Rewrite the indent code
- - Fix a bunch of small problems with C casts
- - Rename a few files
- - Add more tests
-
-
-Changes in uncrustify-0.0.12 (30-Mar-2006)
--------------------------------------------------------------------------------
- - Add support for D template format "Foo!(int,char)"
- - Fix a format bug in a log
- - Fix elipsis spacing (remove space before elipsis)
- - Don't use getopt as it isn't all that portable (at least for QNX)
- - Rename some files
- - Bugfix: don't add virtual braces on the same line as a preprocessor
- - Bugfix: clean up indexed array aligning
-
-
-Changes in uncrustify-0.0.11 (27-Mar-2006)
--------------------------------------------------------------------------------
- - fix brace analysis on else statement
- - allow options to depend on other options
- - set the parent for case braces
- - handle/indent the C++ class colon thingy
- - handle C++ constructors and function defs
- - special handling for '::' operator
- - implement case indenting
- - handle cout '<<' indenting
- - handle DOS and MAC line endings in multiline comments
- - rename some indent options
- - fix ifndef handling
- - fix volatile handling
- - fix private/public/protected 'label' handling
- - alternate punctuators are also part of C++
- - handle C++ wide L"strings"
- - improve C# get/set handling
- - fix spacing bug "a++;" vs "a ++;" due to statement start misdetect
- - add nl_assign_brace
- - fix parent of vbrace close
- - more test enhancements
-
-
-Changes in uncrustify-0.0.10 (22-Mar-2006)
--------------------------------------------------------------------------------
- - Complete rewrite of tokenizer and brace parser
- - Added support for D nested comments
- - Fixed some virtual brace bugs
- - Added some documentation for the brace parsing stuff
- - Add more tests to improve coverage (still lacking)
-
-
-Changes in uncrustify-0.0.9 (18-Mar-2006)
--------------------------------------------------------------------------------
- - Major enhancements for D
- - Add handling for special "[]" sequence for C#/D
- - add some more tests
-
-
-Changes in uncrustify-0.0.8 (13-Mar-2006)
--------------------------------------------------------------------------------
- - update TODO list
- - add a threshold for brace removal
- - improve brace removal
- - keep track of whether a token follows a tab
- - add option to preserve non-indenting tabs
- - major keyword and operator cleanup for C++, C#, D, and Java
- - add 'string' variants for ARITH, COMPARE, etc
- - add C# get/set detection
- - add template <type> detection
- - add colon handling for class stuff and anonymous bitfields
- - pop the whole indent stack when leaving a preprocessor
- - fix embedded return handling in C#, ie: [ this should return negative ]
- - fix a problem with the ifdef frame stack (still a problem lurking...)
- - handle literal strings (C#)
- - handle non-keyword words (C#) -- example: @if @switch
- - set the parent on 'do' braces
- - handle C# #region preprocessor stuff
- - partially implement align on tabstop
- - fix virtual brace spacing (no more "else return;" => "elsereturn;")
- - add some more tests
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/README.md b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/README.md
deleted file mode 100644
index 08d3fd43..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/README.md
+++ /dev/null
@@ -1,394 +0,0 @@
-[![AppVeyor](https://img.shields.io/appveyor/ci/uncrustify/uncrustify/master.svg?style=flat-square&label=Windows)](https://ci.appveyor.com/project/uncrustify/uncrustify)
-[![Coverage Status](https://coveralls.io/repos/github/uncrustify/uncrustify/badge.svg?branch=master)](https://coveralls.io/github/uncrustify/uncrustify?branch=master)
-<a href="#"><img src="https://img.shields.io/badge/C++-11-blue.svg?style=flat-square"></a>
-
----------------------------
-
-# Uncrustify
-A source code beautifier for C, C++, C#, Objective-C, D, Java, Pawn and Vala.
-
-## Features
-* Highly configurable - 828 configurable options as of version 0.76.0
-- <details><summary>add/remove spaces</summary>
-
- - `sp_before_sparen`: _Add or remove space before '(' of 'if', 'for', 'switch', 'while', etc._
- - `sp_compare`: _Add or remove space around compare operator '<', '>', '==', etc_
-</details>
-
-- <details><summary>add/remove newlines</summary>
-
- - `nl_if_brace`: _Add or remove newline between 'if' and '{'_
- - `nl_brace_while`: _Add or remove newline between '}' and 'while' of 'do' statement_
-</details>
-
-- <details><summary>add/remove blanklines</summary>
-
- - `eat_blanks_before_close_brace`: _Whether to remove blank lines before '}'_
- - `nl_max`: _The maximum consecutive newlines (3 = 2 blank lines)_
-</details>
-
-- <details><summary>indent code</summary>
-
- - `indent_switch_case`: _indent_switch_case: Spaces to indent 'case' from 'switch'_
- - `indent_class_colon`: _Whether to indent the stuff after a leading base class colon_
-</details>
-
-- <details><summary>align code</summary>
-
- - `align_func_params`: _Align variable definitions in prototypes and functions_
- - `align_struct_init_span`: _The span for aligning struct initializer values (0=don't align)_
-</details>
-
-- <details><summary>modify code</summary>
-
- - `mod_full_brace_for`: _Add or remove braces on single-line 'for' statement_
- - `mod_paren_on_return`: _Add or remove unnecessary paren on 'return' statement_
-</details>
-
-Here is an example [configuration file](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/ben.cfg.txt),
-and here is a [before](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/examples/c-1.in.c)
-and [after](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/examples/c-1.out.c)
-C source example.
-That should give you a pretty good idea of what Uncrustify can do.
-
-
-
-
-
----------------------------------------------------------------------------
-
-## Binaries
-Pre compiled binaries for Windows can be downloaded [here](https://sourceforge.net/projects/uncrustify/files/).
-
-## Build
-[Python](https://www.python.org/) is an "interpreted high-level programming language for general-purpose programming", for this project it is needed to extend the capabilities of CMake.
-
-[CMake](https://cmake.org/) is a tool that generates build systems
-(Makefiles, Visual Studio project files, Xcode project files and others).
-
-To generate a build system for Uncrustify using CMake on UNIX-like systems, create a
-build folder and run CMake from it, making sure to specify Release mode:
-
-```bash
-$ mkdir build
-$ cd build
-$ cmake -DCMAKE_BUILD_TYPE=Release ..
-```
-Other systems may require other flags (e.g. `cmake -G Xcode ..` for Xcode).
-
-Then use the build tools of your build system (in many cases this will
-simply be `make`, but on Windows it could be MSBuild or Visual Studio).
-Or use CMake to invoke it:
-
-```bash
-$ cmake --build . --config Release
-```
-
-If testing is enabled, CMake generates a `test` target, which you can
-_build_ using your build system tools (usually `make test`). This can also
-be invoked using CTest:
-
-```bash
-$ ctest -V -C Debug
-```
-
-There is also an `install` target, which can be used to install the
-Uncrustify executable (typically `make install`).
-
-### A note on CMake configurations
-Some build systems are single-configuration, which means you specify the
-build type when running CMake (by setting the `CMAKE_BUILD_TYPE`
-variable), and the generated files then build that configuration.
-
-An example of a single-configuration build system are Makefiles. You can
-build the Release or Debug configurations of Uncrustify (from the build folder) with:
-
-```bash
-$ cmake -DCMAKE_BUILD_TYPE=Release ..
-$ make
-```
-or
-```bash
-$ cmake -DCMAKE_BUILD_TYPE=Debug ..
-$ make
-```
-
-Other build systems are multi-configuration, which means you specify the
-build type when building.
-
-An example of a multi-configuration build system are Visual Studios project
-files. When you open the project in Visual Studio, you can select which
-configuration to build. You can also do this while building from the
-command line with `cmake --build . --config Debug`.
-
-
-## Bugs
-Post any bugs to the issue tracker found on the projects GitHub page:
- https://github.com/uncrustify/uncrustify/issues
-
-Please include the following with your issue:
- - a description of what is not working right
- - input code sufficient to demonstrate the issue
- - expected output code
- - configuration options used to generate the output
-
-More about this is in the [ISSUE_TEMPLATE](https://github.com/uncrustify/uncrustify/blob/master/.github/ISSUE_TEMPLATE)
-
-
-### Known problems
-[Look at the Wiki](https://github.com/uncrustify/uncrustify/wiki/Known-Problems)
-
-
-## Which repositories have uncrustify?
-[Look here](https://repology.org/metapackage/uncrustify/versions)
-
-
-## Contribute
-If you want to add a feature, fix a bug, or implement missing
-functionality, feel free to do so! Patches are welcome!
-Here are some areas that need attention:
-
-- __Patches for Objective-C support__. We really need someone who knows
- this language as it has more than plenty open issues. A good starting
- point would be to integrate changes made in the
- [Unity fork](https://github.com/Unity-Technologies/uncrustify/tree/fixes/c-oc-java)
-- Test Java support and provide feedback (or patches!)
-- Test Embedded SQL to see what works
-- A logo of some sort
-- Anything else that you want to do to make it better?
-
-### A note about pull requests
-Firstly take a look at the [CONTRIBUTING.md](https://github.com/uncrustify/uncrustify/blob/master/CONTRIBUTING.md)
-
-Currently we have two continuous integration systems that test your PRs,
-TravisCI and Appveyor.
-Tested are the test cases, the formatting of the code base and
-the output of the command line options.
-
-Test cases can be found in the `tests/` directory. Every file ending with
-`.test` is a test set. Inside each line with these components is a
-single test: `testNr[!] testConfigFileName testInputFileName [lang]`
-
-The configuration file `testConfigFileName` has to be located inside `tests/config`,
-the input file `testInputFileName` inside `tests/input/<testSetName>/`,
-and expected results file inside the `tests/expected/<testSetName>/`
-directory.
-Expected results have the following naming convention: `testNr-testInputFileName`.
-
-Optionally a `!` can follow the `testNr` to enable a custom rerun
-configuration.
-Rerun configurations need to be named like this:
-`testConfigFileName`(without extension)+`.rerun`+`.extension`
-
-Also, optionally a language for the input can be provided with `lang`.
-
-The codebase has to be formatted by the options set up in
-`forUncrustifySources.cfg`. Failing to format the sources correctly will
-cause TravisCI build failures.
-
-The Command line interface (CLI) output is tested by the
-`test_cli_options.sh` script. It is located inside of `tests/cli/` and operates
-on the subdirectories of that folder.
-
-If a PR is altering the CLI output, files inside those directories might
-need to be manually updated. This often happens when options are
-added, removed or altered. Keep in mind that the version string line
-(example: `# Uncrustify-0.69.0_f`) of outputs from commands like
-`--show-config` should be replaced with a blank line.
-
-### Debugging
-
-The first method is to use uncrustify itself to get debug informations.
-Using:
-```.txt
- uncrustify -c myExample.cfg -f myExample.cpp -p myExample.p -L A 2>myExample.A
-```
-you get two files for the first informations.
-The p-file gives you details of the parsing process and indentation.
-```.txt
-# Line Tag Parent Columns Br/Lvl/pp Flag Nl Text
-# 1> CLASS[ NONE][ 1/ 1/ 6/ 0][0/0/0][ 10070000][0-0] class
-# 1> TYPE[ CLASS][ 7/ 7/ 14/ 1][0/0/0][ 10000000][0-0] Capteur
-# 1> BRACE_OPEN[ CLASS][ 15/ 15/ 16/ 1][0/0/0][ 100000400][0-0] {
-```
-
-The A-file gives you many details about the run itself, where the process is running thru,
-which values have the most important variables.
-```.txt
-tokenize(2351): orig line is 1, orig col is 1, Text() 'class', type is CLASS, orig col_end is 6
-tokenize(2351): orig line is 1, orig col is 7, Text() 'Capteur', type is WORD, orig col_end is 14
-tokenize(2351): orig line is 1, orig col is 15, Text() '{', type is BRACE_OPEN, orig col_end is 16
-```
-
-You can also dump the parsing information of each formatting step using the 'dump steps' option.
-```.txt
- uncrustify -c myExample.cfg -f myExample.cpp -ds dump
-```
-This will create a series of 'dump_nnn.log' files, each containing the parsing information at
-specific points of the formatting process ('dump_000.log' will list the formatting options in use).
-
-You can combine this option with -p and -L to get a lot of detailed debugging information.
-```.txt
- uncrustify -c myExample.cfg -f myExample.cpp -p myExample.p -L A 2>myExample.A -ds dump
-```
-
-It might be useful to add some code lines to see where something is happening.
-Use the package `unc_tools`.
-Remove the comment at line:
-```.cpp
-#define DEVELOP_ONLY
-```
-Import the package:
-```.cpp
-#include "unc_tools.h"
-```
-Add at some places the line:
-```.cpp
-prot_the_line(__LINE__, 6, 0);
-```
-Compile again with DEBUG option.
-
-
-
-### How to add an option
-
-If you need a new option, there are a few steps to follow.
-Take as example the option `sp_trailing_ret_t`
-
-First define the option:
-- Insert the code below to the file src/options.h
-_NOTE:
-This file is processed by make_options.py, and must conform to a particular
-format. Option groups are marked by '//begin ' (in upper case; this example
-is lower case to prevent being considered a region marker for code folding)
-followed by the group description. Options consist of two lines of
-declaration preceded by one or more lines of C++ comments. The comments form
-the option description and are taken verbatim, aside from stripping the
-leading '// '. Only comments immediately preceding an option declaration,
-with no blank lines, are taken as part of the description, so a blank line
-may be used to separate notations from a description.
-An option declaration is 'extern TYPE\nNAME;', optionally followed by
-' // = VALUE' if the option has a default value that is different from the
-default-constructed value type of the option. The 'VALUE' must be valid C++
-code, and is taken verbatim as an argument when creating the option's
-instantiation. Note also that the line break, as shown, is required.
-_
-```.cpp
-// Add or remove space around trailing return operator '->'.
-extern Option<iarf_e>
-sp_trailing_ret_t;
-```
-- Insert the code below to the file src/space.cpp
-```.cpp
- if (first->Is(CT_TRAILING_RET_T))
- {
- // Add or remove space around trailing return operator '->'.
- log_rule("sp_trailing_ret_t");
- return(options::sp_trailing_ret_t());
- }
-```
-
-
-### Portability
-
-We are pretty sure that nothing OS-specific is used in the code base.
-The software has been previously tested on the following operating systems:
-- Linux
-- QNX
-- OS X
-- FreeBSD, NetBSD, OpenBSD
-- Sun Solaris 9
-- Windows (binary available)
-
-
----------------------------------------------------------------------------
-
-## Running the program
-
-__NOTE__ This application works reasonably well but it has bugs. Do __not__
-apply it on your whole codebase without checking the results!
-
-Here are ways to run it:
-```
-$ uncrustify -c mystyle.cfg -f somefile.c -o somefile.c.unc
-$ uncrustify -c mystyle.cfg -f somefile.c > somefile.c.unc
-$ uncrustify -c mystyle.cfg somefile.c
-$ uncrustify -c mystyle.cfg --no-backup somefile.c
-$ uncrustify -c mystyle.cfg *.c
-$ uncrustify -c mystyle.cfg --no-backup *.c
-```
-The `-c` flag selects the configuration file.
-The `-f` flag specifies the input file.
-The `-o` flag specifies the output file.
-If flag `-f` is used without flag `-o` the output will be send to `stdout`.
-
-Alternatively multiple or single files that should be processed can be
-specified at the command end without flags.
-If the flag `--no-backup` is missing, every file is saved with the initial
-name and an additional suffix (can be changed with --suffix).
-
-For more options descriptions call:
-```bash
-$ uncrustify -h
-```
-
-## Configuring the program
-Uncrustify usually reads configuration files that are passed via the `-c`
-flag. If the flag is not provided Uncrustify will try to find a
-configuration file via the `UNCRUSTIFY_CONFIG` environment variable or a
-file with the name `.uncrustify.cfg` or `uncrustify.cfg` in your home folder.
-
-To get a list of:
-- all available options use:
- ```bash
- uncrustify --show-config
- ```
-
-- all available options in a usable configuration file format use:
- ```bash
- uncrustify --update-config
- ```
-
- or
-
- ```bash
- uncrustify --update-config-with-doc
- ```
-
- As the names suggest both options can produce output that adds newly
- introduced options to your old configuration file. For this your old
- configuration file has to be passed via the `-c` flag:
- ```bash
- uncrustify --update-config-with-doc -c path/to/your.cfg
- ```
-
-Example configuration files that can be used as a starting point can be
-found in the `etc/` directory (such as [ben.cfg](./etc/ben.cfg)).
-
-Modify to your liking. Use a quality side-by-side diff tool to determine
-if the program did what you wanted. Repeat until your style is refined.
-
-To ease the process a bit, some 3rd party tools are available:
-- [Universal Indent GUI](http://universalindent.sourceforge.net/) - A
- cross-platform graphical configuration file editor for many code
- beautifiers, including Uncrustify.
-- [uncrustify_config](https://github.com/CDanU/uncrustify_config) - A web
- configuration tool based on Uncrustify's emscripten interface.
-- [UncrustifyX](https://github.com/ryanmaxwell/UncrustifyX) - Uncrustify
- utility and documentation browser for Mac OS X
-
-Under Windows:
-Uncrustify is a command-line tool, if you run it by double-clicking the
-executable, it will open a command prompt run the executable
-(which prints the help message), and then immediately close the window
-as uncrustify exits.
-
-You can open the command prompt (which is an interactive terminal
-window that allows you to run commands without it closing as soon as
-they exit) and run uncrustify.exe there.
-
-## Using uncrustify with vim
-Have a look [here](https://github.com/cofyc/vim-uncrustify)
-
-## Using uncrustify with IntelliJ
-Have a look at https://plugins.jetbrains.com/plugin/17528-uncrustify
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/cdbs/debian-tde.mk b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/cdbs/debian-tde.mk
deleted file mode 100644
index f36e3527..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/cdbs/debian-tde.mk
+++ /dev/null
@@ -1,246 +0,0 @@
-# -*- mode: makefile; coding: utf-8 -*-
-# Copyright © 2003 Christopher L Cheney <ccheney@debian.org>
-# Copyright © 2019 TDE Team
-# Description: A class for TDE packages; sets TDE environment variables, etc
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2, or (at
-# your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-# 02111-1307 USA.
-
-ifndef _cdbs_bootstrap
-_cdbs_scripts_path ?= /usr/lib/cdbs
-_cdbs_rules_path ?= /usr/share/cdbs/1/rules
-_cdbs_class_path ?= /usr/share/cdbs/1/class
-endif
-
-ifndef _cdbs_class_debian-qt-kde
-_cdbs_class_debian-qt-kde := 1
-
-# for dh_icons
-CDBS_BUILD_DEPENDS := $(CDBS_BUILD_DEPENDS), debhelper (>= 5.0.7ubuntu4)
-
-# Note: This _must_ be included before autotools.mk, or it won't work.
-common-configure-arch common-configure-indep:: debian/stamp-cvs-make
-debian/stamp-cvs-make:
-ifndef _cdbs_class_cmake
- cp -Rp /usr/share/aclocal/libtool.m4 admin/libtool.m4.in
-ifneq "$(wildcard /usr/share/libtool/config/ltmain.sh)" ""
- cp -Rp /usr/share/libtool/config/ltmain.sh admin/ltmain.sh
-endif
-ifneq "$(wildcard /usr/share/libtool/build-aux/ltmain.sh)" ""
- cp -Rp /usr/share/libtool/build-aux/ltmain.sh admin/ltmain.sh
-endif
- $(MAKE) -C $(DEB_SRCDIR) -f admin/Makefile.common dist;
-endif
- touch debian/stamp-cvs-make
-
-include $(_cdbs_rules_path)/buildcore.mk$(_cdbs_makefile_suffix)
-
-ifdef _cdbs_tarball_dir
-DEB_BUILDDIR = $(_cdbs_tarball_dir)/obj-$(DEB_BUILD_GNU_TYPE)
-else
-DEB_BUILDDIR = obj-$(DEB_BUILD_GNU_TYPE)
-endif
-
-ifndef _cdbs_class_cmake
-include $(_cdbs_class_path)/autotools.mk$(_cdbs_makefile_suffix)
-endif
-
-ifdef _cdbs_class_cmake
-ifneq "$(wildcard /usr/bin/ninja)" ""
-MAKE = ninja -v
-DEB_MAKE_ENVVARS += DESTDIR=$(DEB_DESTDIR)
-DEB_MAKE_INSTALL_TARGET = install
-DEB_CMAKE_NORMAL_ARGS += -GNinja
-endif
-endif
-
-ifndef _cdbs_rules_patchsys_quilt
-DEB_PATCHDIRS := debian/patches/common debian/patches
-endif
-
-export kde_cgidir = \$${libdir}/cgi-bin
-export kde_confdir = \$${sysconfdir}/trinity
-export kde_htmldir = \$${datadir}/doc/tde/HTML
-
-DEB_KDE_ENABLE_FINAL := yes
-DEB_INSTALL_DOCS_ALL :=
-
-DEB_DH_MAKESHLIBS_ARGS_ALL := -V
-DEB_SHLIBDEPS_INCLUDE = $(foreach p,$(PACKAGES_WITH_LIBS),debian/$(p)/usr/lib)
-
-DEB_AC_AUX_DIR = $(DEB_SRCDIR)/admin
-DEB_CONFIGURE_INCLUDEDIR = "\$${prefix}/include"
-DEB_COMPRESS_EXCLUDE = .dcl .docbook -license .tag .sty .el
-
-# The default gzip compressor has been changed in dpkg >= 1.17.0.
-deb_default_compress = $(shell LANG=C dpkg-deb --version | head -n1 | \
- sed -e "s|.*version ||" -e "s| .*||" | \
- xargs -r dpkg --compare-versions 1.17.0 lt \
- && echo xz || echo gzip)
-ifeq ($(deb_default_compress),gzip)
-DEB_DH_BUILDDEB_ARGS += -- -Z$(shell dpkg-deb --help | grep -q ":.* xz[,.]" \
- && echo xz || echo bzip2)
-endif
-
-ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
- cdbs_treat_me_gently_arches := arm m68k alpha ppc64 armel armeb
- ifeq (,$(filter $(DEB_HOST_ARCH_CPU),$(cdbs_treat_me_gently_arches)))
- cdbs_kde_enable_final = $(if $(DEB_KDE_ENABLE_FINAL),--enable-final,)
- else
- cdbs_kde_enable_final =
- endif
-endif
-
-ifneq (,$(filter nostrip,$(DEB_BUILD_OPTIONS)))
- cdbs_kde_enable_final =
- cdbs_kde_enable_debug = --enable-debug=yes
-else
- cdbs_kde_enable_debug = --disable-debug
-endif
-
-ifneq (,$(filter debug,$(DEB_BUILD_OPTIONS)))
- cdbs_kde_enable_debug = --enable-debug=full
-endif
-
-DEB_BUILD_PARALLEL ?= true
-
-cdbs_configure_flags += \
- --with-qt-dir=/usr/share/qt3 \
- --disable-rpath \
- --with-xinerama \
- $(cdbs_kde_enable_final) \
- $(cdbs_kde_enable_debug)
-
-
-# This is a convenience target for calling manually.
-# It's not part of the build process.
-buildprep: clean apply-patches
-ifndef _cdbs_class_cmake
- $(MAKE) -f admin/Makefile.common dist
-endif
- debian/rules clean
-
-.tdepkginfo:
- echo "# TDE package information" >.tdepkginfo
- dpkg-parsechangelog | sed -n "s|^Source: |Name: |p" >>.tdepkginfo
- dpkg-parsechangelog | sed -n "s|^Version: |Version: |p" >>.tdepkginfo
- date +"DateTime: %m/%d/%Y %H:%M" -u -d "$$(dpkg-parsechangelog | sed -n 's|^Date: ||p')" >>.tdepkginfo
-
-post-patches:: .tdepkginfo
-
-common-build-arch:: debian/stamp-man-pages
-debian/stamp-man-pages:
- if ! test -d debian/man/out; then mkdir -p debian/man/out; fi
- for f in $$(find debian/man -name '*.sgml'); do \
- docbook-to-man $$f > debian/man/out/`basename $$f .sgml`.1; \
- done
- for f in $$(find debian/man -name '*.man'); do \
- soelim -I debian/man $$f \
- > debian/man/out/`basename $$f .man`.`head -n1 $$f | awk '{print $$NF}'`; \
- done
- touch debian/stamp-man-pages
-
-common-binary-indep::
- ( set -e; \
- tmpf=`mktemp debian/versions.XXXXXX`; \
- perl debian/cdbs/versions.pl >$$tmpf; \
- for p in $(DEB_INDEP_PACKAGES); do \
- cat $$tmpf >>debian/$$p.substvars; \
- done; \
- rm -f $$tmpf )
-
-common-binary-arch::
- ( set -e; \
- tmpf=`mktemp debian/versions.XXXXXX`; \
- perl debian/cdbs/versions.pl >$$tmpf; \
- for p in $(DEB_ARCH_PACKAGES); do \
- cat $$tmpf >>debian/$$p.substvars; \
- done; \
- rm -f $$tmpf )
- # update multi-arch path in install files
- ls -d debian/* | \
- grep -E "(install|links)$$" | \
- while read a; do \
- [ -d $$a ] || [ -f $$a.arch ] || \
- ! grep -q "\$$(DEB_HOST_MULTIARCH)" $$a || \
- sed -i.arch "s|\$$(DEB_HOST_MULTIARCH)|$(DEB_HOST_MULTIARCH)|g" $$a; \
- done
-
-clean::
- rm -rf debian/man/out
- -rmdir debian/man
- rm -f debian/stamp-man-pages
- rm -rf debian/shlibs-check
- # revert multi-arch path in install files
- ls -d debian/* | \
- grep -E "(install|links)$$" | \
- while read a; do \
- [ ! -f $$a.arch ] || \
- mv $$a.arch $$a; \
- done
-
-$(patsubst %,binary-install/%,$(DEB_PACKAGES)) :: binary-install/%:
- if test -x /usr/bin/dh_icons; then dh_icons -p$(cdbs_curpkg) $(DEB_DH_ICONCACHE_ARGS); fi
- if test -x /usr/bin/dh_desktop; then dh_desktop -p$(cdbs_curpkg) $(DEB_DH_DESKTOP_ARGS); fi
- if test -e debian/$(cdbs_curpkg).lintian; then \
- install -p -D -m644 debian/$(cdbs_curpkg).lintian \
- debian/$(cdbs_curpkg)/usr/share/lintian/overrides/$(cdbs_curpkg); \
- fi
- if test -e debian/$(cdbs_curpkg).presubj; then \
- install -p -D -m644 debian/$(cdbs_curpkg).presubj \
- debian/$(cdbs_curpkg)/usr/share/bug/$(cdbs_curpkg)/presubj; \
- fi
-
-binary-install/$(DEB_SOURCE_PACKAGE)-doc-html::
- set -e; \
- for doc in `cd $(DEB_DESTDIR)/opt/trinity/share/doc/tde/HTML/en; find . -name index.docbook`; do \
- pkg=$${doc%/index.docbook}; pkg=$${pkg#./}; \
- echo Building $$pkg HTML docs...; \
- mkdir -p $(CURDIR)/debian/$(DEB_SOURCE_PACKAGE)-doc-html/opt/trinity/share/doc/tde/HTML/en/$$pkg; \
- cd $(CURDIR)/debian/$(DEB_SOURCE_PACKAGE)-doc-html/opt/trinity/share/doc/tde/HTML/en/$$pkg; \
- /opt/trinity/bin/meinproc $(DEB_DESTDIR)/opt/trinity/share/doc/tde/HTML/en/$$pkg/index.docbook; \
- done
- for pkg in $(DOC_HTML_PRUNE) ; do \
- rm -rf debian/$(DEB_SOURCE_PACKAGE)-doc-html/opt/trinity/share/doc/tde/HTML/en/$$pkg; \
- done
-
-common-build-indep:: debian/stamp-kde-apidox
-debian/stamp-kde-apidox:
- $(if $(DEB_KDE_APIDOX),+$(DEB_MAKE_INVOKE) apidox)
- touch $@
-
-common-install-indep:: common-install-kde-apidox
-common-install-kde-apidox::
- $(if $(DEB_KDE_APIDOX),+DESTDIR=$(DEB_DESTDIR) $(DEB_MAKE_INVOKE) install-apidox)
-
-cleanbuilddir::
- -$(if $(call cdbs_streq,$(DEB_BUILDDIR),$(DEB_SRCDIR)),,rm -rf $(DEB_BUILDDIR))
-
-clean::
-ifndef _cdbs_class_cmake
- if test -n "$(DEB_KDE_CVS_MAKE)" && test -d $(DEB_SRCDIR); then \
- cd $(DEB_SRCDIR); \
- find . -name Makefile.in -print | \
- xargs --no-run-if-empty rm -f; \
- rm -f Makefile.am acinclude.m4 aclocal.m4 config.h.in \
- configure configure.files configure.in stamp-h.in \
- subdirs; \
- fi
-endif
- rm -f .tdepkginfo
- rm -f debian/stamp-kde-apidox
- rm -f debian/stamp-cvs-make
-
-endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/changelog b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/changelog
deleted file mode 100644
index 24a63b55..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/changelog
+++ /dev/null
@@ -1,346 +0,0 @@
-uncrustify-trinity (0.76.0-0debian12.0.0+0) unstable; urgency=medium
-
- * TDE version of upstream 0.76.0
-
- -- Michele Calgaro <michele.calgaro@yahoo.it> Sun, 04 Dec 2022 18:56:43 +0900
-
-uncrustify-trinity (0.75.0-0debian11.0.0+0) unstable; urgency=medium
-
- * TDE version of upstream 0.75.0
-
- -- Michele Calgaro <michele.calgaro@yahoo.it> Fri, 06 May 2022 13:49:07 +0900
-
-uncrustify-trinity (0.74.0-0debian11.0.0+0) unstable; urgency=medium
-
- * TDE version of upstream 0.74.0
-
- -- Michele Calgaro <michele.calgaro@yahoo.it> Wed, 19 May 2021 15:58:50 +0900
-
-uncrustify-trinity (0.73.0-0debian11.0.0+2) unstable; urgency=medium
-
- * Fix Python detection on CMake < 3.12.
-
- -- Slávek Banko <slavek.banko@axis.cz> Wed, 20 May 2021 00:00:40 +0200
-
-uncrustify-trinity (0.73.0-0debian11.0.0+1) unstable; urgency=medium
-
- * Backported commits cb1a42dd from upstream.
-
- -- Michele Calgaro <michele.calgaro@yahoo.it> Wed, 19 May 2021 15:58:50 +0900
-
-uncrustify-trinity (0.73.0-0debian11.0.0+0) unstable; urgency=medium
-
- * TDE version of upstream 0.73.0
-
- -- Michele Calgaro <michele.calgaro@yahoo.it> Wed, 19 May 2021 15:58:50 +0900
-
-uncrustify-trinity (0.72.0-0debian11.0.0+8) unstable; urgency=medium
-
- * Switch to build using ninja-build
-
- -- Slávek Banko <slavek.banko@axis.cz> Tue, 18 May 2021 19:30:49 +0200
-
-uncrustify-trinity (0.72.0-0debian11.0.0+7) unstable; urgency=medium
-
- * TDE version 0.72-0+7
- * Backported commits 5f3f392a and fb66774e from upstream.
-
- -- Michele Calgaro <michele.calgaro@yahoo.it> Thu, 05 Jan 2021 11:08:00 +0900
-
-uncrustify-trinity (0.72.0-0debian11.0.0+6) unstable; urgency=medium
-
- * TDE version 0.72-0+6
- * Backported commits 45681e88 and 64d93e3fb from upstream.
-
- -- Michele Calgaro <michele.calgaro@yahoo.it> Thu, 24 Dec 2020 20:14:00 +0900
-
-uncrustify-trinity (0.72.0-0debian11.0.0+0) unstable; urgency=medium
-
- * TDE version of upstream 0.72.0
-
- -- Michele Calgaro <michele.calgaro@yahoo.it> Thu, 20 Dec 2020 17:52:23 +0900
-
-uncrustify (0.72.0) unstable; urgency=medium
-
- * New upstream version 0.72.0
-
- -- Alexander GQ Gerasiov <gq@debian.org> Thu, 20 Dec 2020 17:34:01 +0900
-
-uncrustify (0.71.0+dfsg1-1) unstable; urgency=medium
-
- * New upstream version 0.71.0
- * d/control: Use debhelper-compat syntax, switch to level 12.
- * d/control: Use python3 in B-D (Closes: #943295).
- * d/control: Bump Standards-Version, no more changes needed.
- * d/control: Remove unnnecessary --parallel.
-
- -- Alexander GQ Gerasiov <gq@debian.org> Thu, 27 Aug 2020 17:12:57 +0300
-
-uncrustify (0.69.0+dfsg1-1) unstable; urgency=medium
-
- * New upstream version 0.69.0
- * Remove fix_parallel_test.patch: Fixed upstream.
-
- -- Alexander GQ Gerasiov <gq@debian.org> Tue, 02 Jul 2019 19:00:32 +0300
-
-uncrustify (0.68.1+dfsg1-2) unstable; urgency=medium
-
- * Add d/patches/fix_parallel_test.patch: Fix test failure on parallel run.
-
- -- Alexander GQ Gerasiov <gq@debian.org> Mon, 10 Dec 2018 02:36:22 +0300
-
-uncrustify (0.68.1+dfsg1-1) unstable; urgency=medium
-
- * New upstream version 0.68.1
- * d/control: Add python-all to Build-Depensds.
- * d/rules: Run all tests (now disabled by default by upstream).
-
- -- Alexander GQ Gerasiov <gq@debian.org> Sun, 02 Dec 2018 16:19:42 +0300
-
-uncrustify (0.67+dfsg1-1) unstable; urgency=medium
-
- * New upstream version 0.67
- * debian/control: Move git to salsa.
- * Add docs-remove-remote-images.patch: Remove remote images from docs.
-
- -- Alexander GQ Gerasiov <gq@debian.org> Mon, 18 Jun 2018 01:13:56 +0300
-
-uncrustify (0.66.1+dfsg1-1) unstable; urgency=medium
-
- * Add debian/gbp.conf.
- * New upstream version 0.66.1 Fixed FTBFS on some arches (Closes: #881249)
- * Bump Standards-Version to 4.1.2 (no additional changes needed).
-
- -- Alexander GQ Gerasiov <gq@debian.org> Sun, 17 Dec 2017 18:49:06 +0300
-
-uncrustify (0.66+dfsg1-1) unstable; urgency=medium
-
- * debian/control: Remove Fathi Boudra <fabo@debian.org> from uploaders.
- (Closes: #879444.) Thanks for your job.
- * New upstream version 0.66
- * Bump Standards-Version to 4.1.1 (no additional changes needed).
- * debian/control: Add more languages to short description.
-
- -- Alexander GQ Gerasiov <gq@debian.org> Wed, 08 Nov 2017 18:18:47 +0300
-
-uncrustify (0.65+git20170831+dfsg1-1) unstable; urgency=medium
-
- * New upstream version 0.65+git20170831. Fixes various FTBFS and autotests
- failures on exotic archs. (Closes: #867376)
- * Bump Standards-Version to 4.1.0 (no additional changes needed).
-
- -- Alexander GQ Gerasiov <gq@debian.org> Thu, 31 Aug 2017 20:25:06 +0300
-
-uncrustify (0.65+dfsg1-1) unstable; urgency=medium
-
- * New upstream version 0.65
- * debian/control: Add python-minimal to Build-Depends.
-
- -- Alexander GQ Gerasiov <gq@debian.org> Tue, 04 Jul 2017 14:50:47 +0300
-
-uncrustify (0.64+dfsg1-1) unstable; urgency=medium
-
- * Imported Upstream version 0.64
- (Closes: #748787, #814193, #594210, #775517, #594206, #616708)
- * Remove non-free documentation/htdocs/project-support.jpg.
- * Imported debian dir from previous version.
- * Remove "debian/<q" file.
- * Remove fix-ftbfs-with-gcc-4.7.patch (Fixed upstream).
- * debian/control: Switch dependence from autotools to cmake.
- * debian/control, debian/compat: Set compatibility level to 9.
- * debian/rules: Remove legacy PRONY records.
- * debian/control: Change Homepage to github.
- * debian/watch: Update to github using current naming scheme.
- * debian/copyright: Add myself.
- * Install README.md and documentation dir into package's docs.
- * debian/rules: Remove tests results on clean.
- * debian/control: Set myself as maintainer. (Johann Rudloff is out of
- business, thanks a lot for all; Fathi Boudra acked this.)
- * Bump Standards-Version to 3.9.8 (no additional changes needed).
- * Add debian/TODO file.
- * debian/cotrol: Add link to collab-maint's git.
-
- -- Alexander GQ Gerasiov <gq@debian.org> Sat, 03 Dec 2016 20:19:22 +0300
-
-uncrustify (0.59+dfsg1-1.1) unstable; urgency=medium
-
- * Non-maintainer upload.
- * Remove non-free file (project-support.jpg). Closes: #753760
-
- -- Mathieu Malaterre <malat@debian.org> Fri, 16 Jan 2015 16:52:15 +0100
-
-uncrustify (0.59-2) unstable; urgency=low
-
- * Fix FTBFS with gcc 4.7 by fixing missing <unistd.h> include.
- (Closes: #667404)
-
- -- Fathi Boudra <fabo@debian.org> Mon, 21 May 2012 15:40:46 +0300
-
-uncrustify (0.59-1) unstable; urgency=low
-
- * New upstream release.
- * Add myself to Uploaders.
-
- -- Fathi Boudra <fabo@debian.org> Sat, 31 Dec 2011 12:49:32 +0200
-
-uncrustify (0.57-1) unstable; urgency=low
-
- * New upstream release.
-
- [ Fathi Boudra ]
- * Removed patch to check for NULL - stolen upstream.
- * Bumped Standards-Version to 3.9.1 (no changes needed).
-
- -- Johann Rudloff <cypheon@gmx.net> Mon, 21 Feb 2011 11:54:28 +0200
-
-uncrustify (0.56-2) unstable; urgency=low
-
- [ Fathi Boudra ]
- * Added patch to check for NULL to prevent a segmentation fault.
- (Closes: #580195)
- * Bumped Standards-Version to 3.9.0 (no changes needed).
-
- -- Johann Rudloff <cypheon@gmx.net> Thu, 01 Jul 2010 20:34:01 +0300
-
-uncrustify (0.56-1) unstable; urgency=low
-
- * New upstream release.
-
- [ Fathi Boudra ]
- * Switch to dpkg-source 3.0 (quilt) format.
- * debian/control:
- - bumped debhelper version to 7.4.15
- - fixed typo in long description.
- * debian/copyright:
- - added email author.
- - added myself.
-
- -- Johann Rudloff <cypheon@gmx.net> Tue, 20 Apr 2010 13:08:29 +0300
-
-uncrustify (0.55-1) unstable; urgency=low
-
- * New upstream release (Closes: #540817)
-
- [ Fathi Boudra ]
- * debian/patches/manpage_fix_hyphens.diff: removed - merged upstream
- * debian/compat: bumped to 7
- * debian/control:
- - bumped debhelper version to 7.4.13
- - bumped Standards-Version to 3.8.4 (no changes needed)
- - added ${misc:Depends}
- * debian/docs: updated
- * debian/rules: rewrited from scratch to use dh and enabled parallel build
-
- -- Johann Rudloff <cypheon@gmx.net> Wed, 17 Feb 2010 09:18:41 +0100
-
-uncrustify (0.52-1) unstable; urgency=low
-
- * New upstream release (closes: #526100)
- * debian/copyright: changed years and wording of copyright
- * debian/patches/manpage_fix_hyphens.diff: added patch to fix fixed hyphens
- used as minus signs in manpage
- * debian/rules: included usage of quilt
- * debian/control: added build dependency quilt
- bumped Standards-Version to 3.8.1 (no changes required)
-
- -- Johann Rudloff <cypheon@gmx.net> Thu, 30 Apr 2009 11:32:27 +0200
-
-uncrustify (0.48-1) unstable; urgency=low
-
- * New upstream release
- * debian/rules: removed CFLAGS settings (done by dpkg-buildpackage)
-
- -- Johann Rudloff <cypheon@gmx.net> Tue, 22 Jul 2008 11:19:54 +0200
-
-uncrustify (0.47-1) unstable; urgency=low
-
- * New upstream release (closes: #479372)
- * Bumped Standards-Version to 3.8.0 (no changes required)
- * removed debian/uncrustify.1, since upstream sources now include a
- manpage
- * debian/rules: removed call to dh_installman, manpage is installed by
- make install
- * debian/rules: removed unneeded call to dh_installdirs
-
- -- Johann Rudloff <cypheon@gmx.net> Sun, 08 Jun 2008 10:09:53 +0200
-
-uncrustify (0.44-1) unstable; urgency=low
-
- * New upstream release
- * debian/uncrustify.1: updated version number and date
-
- -- Johann Rudloff <cypheon@gmx.net> Sun, 24 Feb 2008 09:13:49 +0100
-
-uncrustify (0.43-1) unstable; urgency=low
-
- * New upstream release (closes: #461631)
- * Bumped Standards-Version to 3.7.3 (no changes required)
- * debian/copyright: updated years of copyright
- * debian/control: moved homepage address from description to a separate field
- * debian/uncrustify.1: updated year and month
- * debian/rules: copy update config.{sub,guess} into source tree in
- config.status target, remove them in clean target
-
- -- Johann Rudloff <cypheon@gmx.net> Thu, 10 Jan 2008 15:37:19 +0100
-
-uncrustify (0.41-1) unstable; urgency=low
-
- * New upstream release
-
- -- Johann Rudloff <cypheon@gmx.net> Mon, 12 Nov 2007 21:22:25 +0100
-
-uncrustify (0.40-1) unstable; urgency=low
-
- * New upstream release
-
- -- Johann Rudloff <cypheon@gmx.net> Tue, 16 Oct 2007 21:26:13 +0200
-
-uncrustify (0.39-1) unstable; urgency=low
-
- * New Upstream Version
-
- -- Johann Rudloff <cypheon@gmx.net> Wed, 26 Sep 2007 23:50:30 +0200
-
-uncrustify (0.38-1) unstable; urgency=low
-
- * New upstream release
-
- -- Johann Rudloff <cypheon@gmx.net> Thu, 06 Sep 2007 22:52:16 +0200
-
-uncrustify (0.37-1) unstable; urgency=low
-
- * New upstream release
- * debian/uncrustify.1: added new command line options
- * debian/uncrustify.1: changes in formatting and description
-
- -- Johann Rudloff <cypheon@gmx.net> Sun, 19 Aug 2007 19:33:08 +0200
-
-uncrustify (0.36-1) unstable; urgency=low
-
- * New upstream release (closes: #434938, #434939)
-
- -- Johann Rudloff <cypheon@gmx.net> Tue, 07 Aug 2007 13:49:41 +0200
-
-uncrustify (0.35-1) unstable; urgency=low
-
- * New upstream release
-
- -- Johann Rudloff <cypheon@gmx.net> Sat, 21 Jul 2007 20:41:52 +0200
-
-uncrustify (0.33-1) unstable; urgency=low
-
- * New upstream release (closes: #416469)
- * Added debian/watch file
- * debian/uncrustify.1: added new command line options
- * debian/uncrustify.1: removed leading colons
- * debian/copyright: updated years of copyright
- * debian/copyright: updated parts concerning cmpcfg.pl, since it
- now contains a proper license statement
-
- -- Johann Rudloff <cypheon@gmx.net> Fri, 30 Mar 2007 20:51:27 +0200
-
-uncrustify (0.30-1) unstable; urgency=low
-
- * Initial release
-
- -- Johann Rudloff <cypheon@gmx.net> Sat, 25 Nov 2006 14:06:44 +0100
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/compat b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/compat
deleted file mode 100644
index ec635144..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
-9
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/002_trinity_customization.diff b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/002_trinity_customization.diff
deleted file mode 100644
index 4a070a0c..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/002_trinity_customization.diff
+++ /dev/null
@@ -1,215 +0,0 @@
-Customize and repackage as a TDE package.
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -1,6 +1,6 @@
- cmake_minimum_required(VERSION 3.2)
-
--project(uncrustify)
-+project(uncrustify-trinity)
-
- if("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
- message(FATAL_ERROR "
-@@ -239,7 +239,7 @@
- #
- # Uncrustify
- #
--set(uncrustify_sources
-+set(uncrustify-trinity_sources
- src/align_add.cpp
- src/align_asm_colon.cpp
- src/align_assign.cpp
-@@ -330,7 +330,7 @@
- ${PROJECT_BINARY_DIR}/src/option_enum.cpp
- )
-
--set(uncrustify_headers
-+set(uncrustify-trinity_headers
- src/add_space_table.h
- src/align_add.h
- src/align_asm_colon.h
-@@ -430,7 +430,7 @@
- ${PROJECT_BINARY_DIR}/uncrustify_version.h
- )
-
--set(uncrustify_docs
-+set(uncrustify-trinity_docs
- "${PROJECT_SOURCE_DIR}/AUTHORS"
- "${PROJECT_SOURCE_DIR}/BUGS"
- "${PROJECT_SOURCE_DIR}/ChangeLog"
-@@ -439,17 +439,17 @@
- "${PROJECT_SOURCE_DIR}/README.md"
- )
-
--add_executable(uncrustify ${uncrustify_sources} ${uncrustify_headers})
--add_dependencies(uncrustify generate_version_header)
-+add_executable(uncrustify-trinity ${uncrustify-trinity_sources} ${uncrustify-trinity_headers})
-+add_dependencies(uncrustify-trinity generate_version_header)
-
--set_property(TARGET uncrustify APPEND PROPERTY
-+set_property(TARGET uncrustify-trinity APPEND PROPERTY
- COMPILE_DEFINITIONS $<$<OR:$<CONFIG:Debug>,$<CONFIG:>>:DEBUG>
- )
-
- #
--# Generate uncrustify.1
-+# Generate uncrustify-trinity.1
- #
--configure_file(man/uncrustify.1.in uncrustify.1 @ONLY)
-+configure_file(man/uncrustify.1.in uncrustify-trinity.1 @ONLY)
-
- #
- # Generate uncrustify.xml (katepart highlighting file)
-@@ -471,7 +471,7 @@
- #
- OPTION(ENABLE_CODECOVERAGE "Enable code coverage testing support")
- if(ENABLE_CODECOVERAGE)
-- set(CODECOVERAGE_DEPENDS uncrustify)
-+ set(CODECOVERAGE_DEPENDS uncrustify-trinity)
- include(${CMAKE_SOURCE_DIR}/cmake/CodeCoverage.cmake)
- endif(ENABLE_CODECOVERAGE)
-
-@@ -479,10 +479,10 @@
- # Build command to run uncrustify on its own sources
- #
- add_custom_target(format-sources)
--foreach(source IN LISTS uncrustify_sources uncrustify_headers)
-+foreach(source IN LISTS uncrustify-trinity_sources uncrustify-trinity_headers)
- get_filename_component(source_name ${source} NAME)
- add_custom_target(format-${source_name}
-- COMMAND uncrustify
-+ COMMAND uncrustify-trinity
- -c forUncrustifySources.cfg
- -lCPP --no-backup ${source}
- COMMENT "Formatting ${source}"
-@@ -494,7 +494,7 @@
- #
- # Package
- #
--set(CPACK_PACKAGE_NAME "uncrustify")
-+set(CPACK_PACKAGE_NAME "uncrustify-trinity")
- set(CPACK_PACKAGE_VERSION "${UNCRUSTIFY_VERSION}")
- set(CPACK_PACKAGE_VENDOR "Ben Gardner")
- set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Code beautifier")
-@@ -512,8 +512,8 @@
- # Install
- #
- if(MSVC)
-- install(TARGETS uncrustify DESTINATION ".")
-- install(FILES ${uncrustify_docs}
-+ install(TARGETS uncrustify-trinity DESTINATION ".")
-+ install(FILES ${uncrustify-trinity_docs}
- DESTINATION "."
- )
- install(FILES "${PROJECT_SOURCE_DIR}/documentation/htdocs/index.html"
-@@ -525,17 +525,17 @@
- )
- else()
- include(GNUInstallDirs)
-- install(TARGETS uncrustify
-+ install(TARGETS uncrustify-trinity
- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
- )
-- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/uncrustify.1"
-+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/uncrustify-trinity.1"
- DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
- )
- install(DIRECTORY "${PROJECT_SOURCE_DIR}/etc/"
- DESTINATION "${CMAKE_INSTALL_DOCDIR}/examples"
- FILES_MATCHING PATTERN "*.cfg"
- )
-- install(FILES ${uncrustify_docs}
-+ install(FILES ${uncrustify-trinity_docs}
- DESTINATION "${CMAKE_INSTALL_DOCDIR}"
- )
- endif()
---- a/tests/CMakeLists.txt
-+++ b/tests/CMakeLists.txt
-@@ -32,7 +32,7 @@
- add_custom_command(
- OUTPUT ${tests_ctest_file}
- COMMAND ${PYTHON_EXECUTABLE} run_format_tests.py
-- --executable $<TARGET_FILE:uncrustify>
-+ --executable $<TARGET_FILE:uncrustify-trinity>
- --git ${GIT_EXECUTABLE}
- --python ${PYTHON_EXECUTABLE}
- --write-ctest ${tests_ctest_file}
-@@ -48,7 +48,7 @@
- string(REPLACE ".test" "" lang "${suite}")
- add_test(NAME ${lang}
- COMMAND ${PYTHON_EXECUTABLE} run_format_tests.py ${lang}
-- --executable $<TARGET_FILE:uncrustify>
-+ --executable $<TARGET_FILE:uncrustify-trinity>
- -d --git ${GIT_EXECUTABLE}
- --result-dir ${CMAKE_CURRENT_BINARY_DIR}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-@@ -60,7 +60,7 @@
- add_test(
- NAME sources_format
- COMMAND ${PYTHON_EXECUTABLE} run_sources_tests.py
-- --executable $<TARGET_FILE:uncrustify>
-+ --executable $<TARGET_FILE:uncrustify-trinity>
- -d --git ${GIT_EXECUTABLE}
- --result-dir ${CMAKE_CURRENT_BINARY_DIR}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-@@ -72,7 +72,7 @@
- COMMAND ${PYTHON_EXECUTABLE}
- test_cli_options.py
- --config $<CONFIG>
-- --build ${uncrustify_BINARY_DIR}
-+ --build ${uncrustify-trinity_BINARY_DIR}
- --diff
- --test ${CMAKE_CURRENT_BINARY_DIR}/cli
- ${_configs}
-@@ -83,11 +83,11 @@
- COMMAND ${PYTHON_EXECUTABLE}
- test_cli_options.py
- --config $<CONFIG>
-- --build ${uncrustify_BINARY_DIR}
-+ --build ${uncrustify-trinity_BINARY_DIR}
- --apply
- --test ${CMAKE_CURRENT_BINARY_DIR}/cli
-- DEPENDS uncrustify
-+ DEPENDS uncrustify-trinity
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cli
- )
-
--add_test(NAME sanity COMMAND uncrustify --help)
-+add_test(NAME sanity COMMAND uncrustify-trinity --help)
---- a/tests/cli/output/help.txt
-+++ b/tests/cli/output/help.txt
-@@ -1,5 +1,5 @@
- Usage:
--uncrustify [options] [files ...]
-+uncrustify-trinity [options] [files ...]
-
- If no input files are specified, the input is read from stdin
- If reading from stdin, you should specify the language using -l
---- a/tests/cli/test_cli_options.py
-+++ b/tests/cli/test_cli_options.py
-@@ -492,16 +492,16 @@
- bd_dir = parsed_args.build
- test_dir = parsed_args.test
-
-- bin_paths = [s_path_join(bd_dir, 'uncrustify'),
-- s_path_join(bd_dir, 'uncrustify.exe'),
-- s_path_join(bd_dir, 'Debug/uncrustify'),
-- s_path_join(bd_dir, 'Debug/uncrustify.exe'),
-- s_path_join(bd_dir, 'Release/uncrustify'),
-- s_path_join(bd_dir, 'Release/uncrustify.exe'),
-- s_path_join(bd_dir, 'RelWithDebInfo/uncrustify'),
-- s_path_join(bd_dir, 'RelWithDebInfo/uncrustify.exe'),
-- s_path_join(bd_dir, 'MinSizeRel/uncrustify'),
-- s_path_join(bd_dir, 'MinSizeRel/uncrustify.exe')]
-+ bin_paths = [s_path_join(bd_dir, 'uncrustify-trinity'),
-+ s_path_join(bd_dir, 'uncrustify-trinity.exe'),
-+ s_path_join(bd_dir, 'Debug/uncrustify-trinity'),
-+ s_path_join(bd_dir, 'Debug/uncrustify-trinity.exe'),
-+ s_path_join(bd_dir, 'Release/uncrustify-trinity'),
-+ s_path_join(bd_dir, 'Release/uncrustify-trinity.exe'),
-+ s_path_join(bd_dir, 'RelWithDebInfo/uncrustify-trinity'),
-+ s_path_join(bd_dir, 'RelWithDebInfo/uncrustify-trinity.exe'),
-+ s_path_join(bd_dir, 'MinSizeRel/uncrustify-trinity'),
-+ s_path_join(bd_dir, 'MinSizeRel/uncrustify-trinity.exe')]
- for uncr_bin in bin_paths:
- if not isfile(uncr_bin):
- eprint("is not a file: %s" % uncr_bin)
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/003_allow_older_distributions.diff b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/003_allow_older_distributions.diff
deleted file mode 100644
index 8643a7cd..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/003_allow_older_distributions.diff
+++ /dev/null
@@ -1,40 +0,0 @@
-Index: b/CMakeLists.txt
-===================================================================
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -1,4 +1,4 @@
--cmake_minimum_required(VERSION 3.2)
-+cmake_minimum_required(VERSION 3.0)
-
- project(uncrustify-trinity)
-
-@@ -59,8 +59,12 @@
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
- endif()
-
--set(CMAKE_CXX_STANDARD 11)
--set(CMAKE_CXX_STANDARD_REQUIRED YES)
-+if( ${CMAKE_VERSION} VERSION_LESS "3.1" )
-+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
-+else()
-+ set(CMAKE_CXX_STANDARD 11)
-+ set(CMAKE_CXX_STANDARD_REQUIRED YES)
-+endif()
-
- if(ENABLE_SANITIZER)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1 -fno-omit-frame-pointer -fsanitize=${ENABLE_SANITIZER}")
-@@ -147,8 +151,13 @@
- else()
- # Add target to generate version header;
- # do this every build to ensure git SHA is up to date
-+ if( ${CMAKE_VERSION} VERSION_LESS "3.2" )
-+ set( VERSION_HEADER_BYPRODUCTS "" )
-+ else()
-+ set( VERSION_HEADER_BYPRODUCTS "BYPRODUCTS" "${PROJECT_BINARY_DIR}/uncrustify_version.h" )
-+ endif()
- add_custom_target(generate_version_header
-- BYPRODUCTS "${PROJECT_BINARY_DIR}/uncrustify_version.h"
-+ ${VERSION_HEADER_BYPRODUCTS}
- COMMAND
- ${CMAKE_COMMAND}
- -D PYTHON_EXECUTABLE:STRING=${PYTHON_EXECUTABLE}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/004_fixed_usage.diff b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/004_fixed_usage.diff
deleted file mode 100644
index b23b40e2..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/004_fixed_usage.diff
+++ /dev/null
@@ -1,55 +0,0 @@
-Fixed usage message to match uncrustify-trinity.
---- a/src/uncrustify.cpp
-+++ b/src/uncrustify.cpp
-@@ -307,15 +307,15 @@
- " Cannot be used with the -o option'\n"
- "\n"
- "Usage Examples\n"
-- "cat foo.d | uncrustify -q -c my.cfg -l d\n"
-- "uncrustify -c my.cfg -f foo.d\n"
-- "uncrustify -c my.cfg -f foo.d -L0-2,20-23,51\n"
-- "uncrustify -c my.cfg -f foo.d -o foo.d\n"
-- "uncrustify -c my.cfg -f foo.d -o foo.d -ds dump\n"
-- "uncrustify -c my.cfg foo.d\n"
-- "uncrustify -c my.cfg --replace foo.d\n"
-- "uncrustify -c my.cfg --no-backup foo.d\n"
-- "uncrustify -c my.cfg --prefix=out -F files.txt\n"
-+ "cat foo.d | uncrustify-trinity -q -c my.cfg -l d\n"
-+ "uncrustify-trinity -c my.cfg -f foo.d\n"
-+ "uncrustify-trinity -c my.cfg -f foo.d -L0-2,20-23,51\n"
-+ "uncrustify-trinity -c my.cfg -f foo.d -o foo.d\n"
-+ "uncrustify-trinity -c my.cfg -f foo.d -o foo.d -ds dump\n"
-+ "uncrustify-trinity -c my.cfg foo.d\n"
-+ "uncrustify-trinity -c my.cfg --replace foo.d\n"
-+ "uncrustify-trinity -c my.cfg --no-backup foo.d\n"
-+ "uncrustify-trinity -c my.cfg --prefix=out -F files.txt\n"
- "\n"
- "Note: Use comments containing ' *INDENT-OFF*' and ' *INDENT-ON*' to disable\n"
- " processing of parts of the source file (these can be overridden with\n"
---- a/tests/cli/output/help.txt
-+++ b/tests/cli/output/help.txt
-@@ -66,15 +66,15 @@
- Cannot be used with the -o option'
-
- Usage Examples
--cat foo.d | uncrustify -q -c my.cfg -l d
--uncrustify -c my.cfg -f foo.d
--uncrustify -c my.cfg -f foo.d -L0-2,20-23,51
--uncrustify -c my.cfg -f foo.d -o foo.d
--uncrustify -c my.cfg -f foo.d -o foo.d -ds dump
--uncrustify -c my.cfg foo.d
--uncrustify -c my.cfg --replace foo.d
--uncrustify -c my.cfg --no-backup foo.d
--uncrustify -c my.cfg --prefix=out -F files.txt
-+cat foo.d | uncrustify-trinity -q -c my.cfg -l d
-+uncrustify-trinity -c my.cfg -f foo.d
-+uncrustify-trinity -c my.cfg -f foo.d -L0-2,20-23,51
-+uncrustify-trinity -c my.cfg -f foo.d -o foo.d
-+uncrustify-trinity -c my.cfg -f foo.d -o foo.d -ds dump
-+uncrustify-trinity -c my.cfg foo.d
-+uncrustify-trinity -c my.cfg --replace foo.d
-+uncrustify-trinity -c my.cfg --no-backup foo.d
-+uncrustify-trinity -c my.cfg --prefix=out -F files.txt
-
- Note: Use comments containing ' *INDENT-OFF*' and ' *INDENT-ON*' to disable
- processing of parts of the source file (these can be overridden with
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/series b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/series
deleted file mode 100644
index 383a9d11..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/series
+++ /dev/null
@@ -1,4 +0,0 @@
-001_docs-remove-remote-images.patch
-002_trinity_customization.diff
-003_allow_older_distributions.diff
-004_fixed_usage.diff
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/rules b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/rules
deleted file mode 100755
index dd013fa1..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/rules
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/make -f
-
-include /usr/share/cdbs/1/rules/debhelper.mk
-include /usr/share/cdbs/1/class/cmake.mk
-include debian/cdbs/debian-tde.mk
-
-DEB_CMAKE_EXTRA_FLAGS := \
- -DCMAKE_EXPORT_COMPILE_COMMANDS="ON" \
- -DCMAKE_BUILD_TYPE=RelWithDebInfo \
- -DCMAKE_VERBOSE_MAKEFILE="ON" \
- -DCMAKE_SKIP_RPATH="OFF" \
- -DBUILD_TESTING="ON" \
- -DUNCRUSTIFY_SEPARATE_TESTS="ON"
-
-DEB_MAKE_CHECK_TARGET = test
-
-DEB_MAKE_ENVVARS += PYTHONPYCACHEPREFIX=${DEB_DESTDIR}../../${DEB_BUILDDIR}/__pycache__
-DEB_MAKE_ENVVARS += CTEST_PARALLEL_LEVEL=4
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/source/options b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/source/options
deleted file mode 100644
index d71748bb..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/source/options
+++ /dev/null
@@ -1,3 +0,0 @@
-# Use xz instead of gzip
-compression = "xz"
-compression-level = 9
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/Tracking.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/Tracking.txt
deleted file mode 100644
index fc101eba..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/Tracking.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-2020-11-09
-
-Tracking is used to put some marks within a copy of the source and
-in the log file. uncrustify generate a HTML file with the marks.
-
-Using a browser, one can see where, which options are working.
-
-The command option is:
-
-uncrustify --tracking Track.html -c config-FILE -f source-FILE -L A 2>A.txt
-
-Tracking puts a red "M" in the source to show where the options are working.
-A tracking number is used and written in the Track.html file and the output file A.txt
-to make possible to link the changes together.
-
-An example:
-
-tracking.cpp
-{
- a = b + 111-55;
-}
-
-The config file:
-
-indent_with_tabs = 0
-sp_arith = force
-sp_assign = force
-
-The tracking file is:
-
-<html>
-<head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
- <title>Uncrustify: where do the Spaces options work</title>
-</head>
-<body lang="en-US">
-<p>
-</p>
-<pre>
-{
- a<a title="1,8,sp_assign"><font color="red">M</font></a>=<a title="2,9,16,sp_assign"><font color="red">M</font><
-/a>b<a title="3,10,17,22,sp_arith"><font color="red">M</font></a>+<a title="4,11,18,23,27,sp_arith"><font color="red">M<
-/font></a>111<a title="5,12,19,24,28,31,sp_arith"><font color="red">M</font></a>-<a title="6,13,20,25,29,32,34,sp_arith"
-><font color="red">M</font></a>55<a title="7,14,21,26,30,33,35,36,sp_before_semi"><font color="red">M</font></a>;
-}
-</pre>
-</body>
-</html>
-
-Use it with a browser and you can see the red "M"s.
-Let put the cursor on the "M"s, and you see the tracking number and the option used.
-(look at the picture track.jpg)
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/ben.cfg.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/ben.cfg.txt
deleted file mode 100644
index 201e8a94..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/ben.cfg.txt
+++ /dev/null
@@ -1,113 +0,0 @@
-#
-# My favorite format
-#
-
-newlines = LF # AUTO (default), CRLF, CR, or LF
-
-indent_with_tabs = 0 # 1=indent to level only, 2=indent with tabs
-input_tab_size = 8 # original tab size
-output_tab_size = 3 # new tab size
-indent_columns = output_tab_size
-# indent_label = 0 # pos: absolute col, neg: relative column
-indent_align_string = False # align broken strings
-indent_brace = 0
-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_max = 4
-nl_before_block_comment = 2
-nl_after_func_body = 2
-nl_after_func_proto_group = 2
-
-nl_assign_brace = add # "= {" vs "= \n {"
-nl_enum_brace = add # "enum {" vs "enum \n {"
-nl_union_brace = add # "union {" vs "union \n {"
-nl_struct_brace = add # "struct {" vs "struct \n {"
-nl_do_brace = add # "do {" vs "do \n {"
-nl_if_brace = add # "if () {" vs "if () \n {"
-nl_for_brace = add # "for () {" vs "for () \n {"
-nl_else_brace = add # "else {" vs "else \n {"
-nl_while_brace = add # "while () {" vs "while () \n {"
-nl_switch_brace = add # "switch () {" vs "switch () \n {"
-nl_var_def_blk_end_func_top = 1
-nl_before_case = 1
-nl_fcall_brace = add # "foo() {" vs "foo()\n{"
-nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
-nl_after_return = TRUE
-nl_brace_while = remove
-nl_brace_else = add
-nl_squeeze_ifdef = TRUE
-
-pos_bool = trail # BOOL ops on trailing end
-
-eat_blanks_before_close_brace = TRUE
-eat_blanks_after_open_brace = 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_for = 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_sparen_brace = add
-sp_fparen_brace = add
-sp_after_ptr_star = remove
-sp_before_ptr_star = force
-sp_between_ptr_star = remove
-
-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 = 1
-align_var_def_thresh = 12
-align_var_def_inline = TRUE
-align_var_def_star = TRUE
-align_var_def_colon = TRUE
-align_assign_span = 1
-align_assign_thresh = 12
-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_right = TRUE
-align_typedef_span = 5
-align_typedef_gap = 3
-
-cmt_star_cont = TRUE
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/config.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/config.txt
deleted file mode 100644
index 7c523470..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/config.txt
+++ /dev/null
@@ -1,3593 +0,0 @@
-# Uncrustify-0.76.0
-
-#
-# General options
-#
-
-# The type of line endings.
-#
-# Default: auto
-newlines = auto # lf/crlf/cr/auto
-
-# The original size of tabs in the input.
-#
-# Default: 8
-input_tab_size = 8 # unsigned number
-
-# The size of tabs in the output (only used if align_with_tabs=true).
-#
-# Default: 8
-output_tab_size = 8 # unsigned number
-
-# The ASCII value of the string escape char, usually 92 (\) or (Pawn) 94 (^).
-#
-# Default: 92
-string_escape_char = 92 # unsigned number
-
-# Alternate string escape char (usually only used for Pawn).
-# Only works right before the quote char.
-string_escape_char2 = 0 # unsigned number
-
-# Replace tab characters found in string literals with the escape sequence \t
-# instead.
-string_replace_tab_chars = false # true/false
-
-# Allow interpreting '>=' and '>>=' as part of a template in code like
-# 'void f(list<list<B>>=val);'. If true, 'assert(x<0 && y>=3)' will be broken.
-# Improvements to template detection may make this option obsolete.
-tok_split_gte = false # true/false
-
-# Disable formatting of NL_CONT ('\\n') ended lines (e.g. multi-line macros).
-disable_processing_nl_cont = false # true/false
-
-# Specify the marker used in comments to disable processing of part of the
-# file.
-#
-# Default: *INDENT-OFF*
-disable_processing_cmt = " *INDENT-OFF*" # string
-
-# Specify the marker used in comments to (re)enable processing in a file.
-#
-# Default: *INDENT-ON*
-enable_processing_cmt = " *INDENT-ON*" # string
-
-# Enable parsing of digraphs.
-enable_digraphs = false # true/false
-
-# Option to allow both disable_processing_cmt and enable_processing_cmt
-# strings, if specified, to be interpreted as ECMAScript regular expressions.
-# If true, a regex search will be performed within comments according to the
-# specified patterns in order to disable/enable processing.
-processing_cmt_as_regex = false # true/false
-
-# Add or remove the UTF-8 BOM (recommend 'remove').
-utf8_bom = ignore # ignore/add/remove/force/not_defined
-
-# If the file contains bytes with values between 128 and 255, but is not
-# UTF-8, then output as UTF-8.
-utf8_byte = false # true/false
-
-# Force the output encoding to UTF-8.
-utf8_force = false # true/false
-
-#
-# Spacing options
-#
-
-# Add or remove space around non-assignment symbolic operators ('+', '/', '%',
-# '<<', and so forth).
-sp_arith = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around arithmetic operators '+' and '-'.
-#
-# Overrides sp_arith.
-sp_arith_additive = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around assignment operator '=', '+=', etc.
-sp_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around '=' in C++11 lambda capture specifications.
-#
-# Overrides sp_assign.
-sp_cpp_lambda_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the capture specification of a C++11 lambda when
-# an argument list is present, as in '[] <here> (int x){ ... }'.
-sp_cpp_lambda_square_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the capture specification of a C++11 lambda with
-# no argument list is present, as in '[] <here> { ... }'.
-sp_cpp_lambda_square_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the opening parenthesis and before the closing
-# parenthesis of a argument list of a C++11 lambda, as in
-# '[]( <here> int x <here> ){ ... }'.
-sp_cpp_lambda_argument_list = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the argument list of a C++11 lambda, as in
-# '[](int x) <here> { ... }'.
-sp_cpp_lambda_paren_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a lambda body and its call operator of an
-# immediately invoked lambda, as in '[]( ... ){ ... } <here> ( ... )'.
-sp_cpp_lambda_fparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around assignment operator '=' in a prototype.
-#
-# If set to ignore, use sp_assign.
-sp_assign_default = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before assignment operator '=', '+=', etc.
-#
-# Overrides sp_assign.
-sp_before_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after assignment operator '=', '+=', etc.
-#
-# Overrides sp_assign.
-sp_after_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space in 'enum {'.
-#
-# Default: add
-sp_enum_brace = add # ignore/add/remove/force/not_defined
-
-# Add or remove space in 'NS_ENUM ('.
-sp_enum_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around assignment '=' in enum.
-sp_enum_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before assignment '=' in enum.
-#
-# Overrides sp_enum_assign.
-sp_enum_before_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after assignment '=' in enum.
-#
-# Overrides sp_enum_assign.
-sp_enum_after_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around assignment ':' in enum.
-sp_enum_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around preprocessor '##' concatenation operator.
-#
-# Default: add
-sp_pp_concat = add # ignore/add/remove/force/not_defined
-
-# Add or remove space after preprocessor '#' stringify operator.
-# Also affects the '#@' charizing operator.
-sp_pp_stringify = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before preprocessor '#' stringify operator
-# as in '#define x(y) L#y'.
-sp_before_pp_stringify = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around boolean operators '&&' and '||'.
-sp_bool = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around compare operator '<', '>', '==', etc.
-sp_compare = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '(' and ')'.
-sp_inside_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between nested parentheses, i.e. '((' vs. ') )'.
-sp_paren_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.
-sp_cparen_oparen = ignore # ignore/add/remove/force/not_defined
-
-# Whether to balance spaces inside nested parentheses.
-sp_balance_nested_parens = false # true/false
-
-# Add or remove space between ')' and '{'.
-sp_paren_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between nested braces, i.e. '{{' vs. '{ {'.
-sp_brace_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before pointer star '*'.
-sp_before_ptr_star = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before pointer star '*' that isn't followed by a
-# variable name. If set to ignore, sp_before_ptr_star is used instead.
-sp_before_unnamed_ptr_star = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between pointer stars '*', as in 'int ***a;'.
-sp_between_ptr_star = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after pointer star '*', if followed by a word.
-#
-# Overrides sp_type_func.
-sp_after_ptr_star = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after pointer caret '^', if followed by a word.
-sp_after_ptr_block_caret = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after pointer star '*', if followed by a qualifier.
-sp_after_ptr_star_qualifier = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after a pointer star '*', if followed by a function
-# prototype or function definition.
-#
-# Overrides sp_after_ptr_star and sp_type_func.
-sp_after_ptr_star_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after a pointer star '*' in the trailing return of a
-# function prototype or function definition.
-sp_after_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the pointer star '*' and the name of the variable
-# in a function pointer definition.
-sp_ptr_star_func_var = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the pointer star '*' and the name of the type
-# in a function pointer type definition.
-sp_ptr_star_func_type = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after a pointer star '*', if followed by an open
-# parenthesis, as in 'void* (*)()'.
-sp_ptr_star_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a pointer star '*', if followed by a function
-# prototype or function definition.
-sp_before_ptr_star_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a pointer star '*' in the trailing return of a
-# function prototype or function definition.
-sp_before_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a reference sign '&'.
-sp_before_byref = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a reference sign '&' that isn't followed by a
-# variable name. If set to ignore, sp_before_byref is used instead.
-sp_before_unnamed_byref = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after reference sign '&', if followed by a word.
-#
-# Overrides sp_type_func.
-sp_after_byref = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after a reference sign '&', if followed by a function
-# prototype or function definition.
-#
-# Overrides sp_after_byref and sp_type_func.
-sp_after_byref_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a reference sign '&', if followed by a function
-# prototype or function definition.
-sp_before_byref_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after a reference sign '&', if followed by an open
-# parenthesis, as in 'char& (*)()'.
-sp_byref_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between type and word. In cases where total removal of
-# whitespace would be a syntax error, a value of 'remove' is treated the same
-# as 'force'.
-#
-# This also affects some other instances of space following a type that are
-# not covered by other options; for example, between the return type and
-# parenthesis of a function type template argument, between the type and
-# parenthesis of an array parameter, or between 'decltype(...)' and the
-# following word.
-#
-# Default: force
-sp_after_type = force # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'decltype(...)' and word,
-# brace or function call.
-sp_after_decltype = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space before the parenthesis in the D constructs
-# 'template Foo(' and 'class Foo('.
-sp_before_template_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'template' and '<'.
-# If set to ignore, sp_before_angle is used.
-sp_template_angle = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before '<'.
-sp_before_angle = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '<' and '>'.
-sp_inside_angle = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '<>'.
-sp_inside_angle_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '>' and ':'.
-sp_angle_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after '>'.
-sp_after_angle = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '>' and '(' as found in 'new List<byte>(foo);'.
-sp_angle_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '>' and '()' as found in 'new List<byte>();'.
-sp_angle_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '>' and a word as in 'List<byte> m;' or
-# 'template <typename T> static ...'.
-sp_angle_word = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '>' and '>' in '>>' (template stuff).
-#
-# Default: add
-sp_angle_shift = add # ignore/add/remove/force/not_defined
-
-# (C++11) Permit removal of the space between '>>' in 'foo<bar<int> >'. Note
-# that sp_angle_shift cannot remove the space without this option.
-sp_permit_cpp11_shift = false # true/false
-
-# Add or remove space before '(' of control statements ('if', 'for', 'switch',
-# 'while', etc.).
-sp_before_sparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '(' and ')' of control statements other than
-# 'for'.
-sp_inside_sparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after '(' of control statements other than 'for'.
-#
-# Overrides sp_inside_sparen.
-sp_inside_sparen_open = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before ')' of control statements other than 'for'.
-#
-# Overrides sp_inside_sparen.
-sp_inside_sparen_close = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '(' and ')' of 'for' statements.
-sp_inside_for = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after '(' of 'for' statements.
-#
-# Overrides sp_inside_for.
-sp_inside_for_open = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before ')' of 'for' statements.
-#
-# Overrides sp_inside_for.
-sp_inside_for_close = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '((' or '))' of control statements.
-sp_sparen_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after ')' of control statements.
-sp_after_sparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and '{' of control statements.
-sp_sparen_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'do' and '{'.
-sp_do_brace_open = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '}' and 'while'.
-sp_brace_close_while = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'while' and '('. Overrides sp_before_sparen.
-sp_while_paren_open = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space between 'invariant' and '('.
-sp_invariant_paren = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space after the ')' in 'invariant (C) c'.
-sp_after_invariant_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before empty statement ';' on 'if', 'for' and 'while'.
-sp_special_semi = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before ';'.
-#
-# Default: remove
-sp_before_semi = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space before ';' in non-empty 'for' statements.
-sp_before_semi_for = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a semicolon of an empty left part of a for
-# statement, as in 'for ( <here> ; ; )'.
-sp_before_semi_for_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the semicolons of an empty middle part of a for
-# statement, as in 'for ( ; <here> ; )'.
-sp_between_semi_for_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after ';', except when followed by a comment.
-#
-# Default: add
-sp_after_semi = add # ignore/add/remove/force/not_defined
-
-# Add or remove space after ';' in non-empty 'for' statements.
-#
-# Default: force
-sp_after_semi_for = force # ignore/add/remove/force/not_defined
-
-# Add or remove space after the final semicolon of an empty part of a for
-# statement, as in 'for ( ; ; <here> )'.
-sp_after_semi_for_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before '[' (except '[]').
-sp_before_square = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before '[' for a variable definition.
-#
-# Default: remove
-sp_before_vardef_square = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space before '[' for asm block.
-sp_before_square_asm_block = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before '[]'.
-sp_before_squares = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before C++17 structured bindings.
-sp_cpp_before_struct_binding = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside a non-empty '[' and ']'.
-sp_inside_square = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '[]'.
-sp_inside_square_empty = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and
-# ']'. If set to ignore, sp_inside_square is used.
-sp_inside_square_oc_array = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.
-sp_after_comma = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.
-#
-# Default: remove
-sp_before_comma = remove # ignore/add/remove/force/not_defined
-
-# (C#, Vala) Add or remove space between ',' and ']' in multidimensional array type
-# like 'int[,,]'.
-sp_after_mdatype_commas = ignore # ignore/add/remove/force/not_defined
-
-# (C#, Vala) Add or remove space between '[' and ',' in multidimensional array type
-# like 'int[,,]'.
-sp_before_mdatype_commas = ignore # ignore/add/remove/force/not_defined
-
-# (C#, Vala) Add or remove space between ',' in multidimensional array type
-# like 'int[,,]'.
-sp_between_mdatype_commas = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between an open parenthesis and comma,
-# i.e. '(,' vs. '( ,'.
-#
-# Default: force
-sp_paren_comma = force # ignore/add/remove/force/not_defined
-
-# Add or remove space between a type and ':'.
-sp_type_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the variadic '...' when preceded by a
-# non-punctuator.
-# The value REMOVE will be overridden with FORCE
-sp_after_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before the variadic '...' when preceded by a
-# non-punctuator.
-# The value REMOVE will be overridden with FORCE
-sp_before_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a type and '...'.
-sp_type_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a '*' and '...'.
-sp_ptr_type_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and '...'.
-sp_paren_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '&&' and '...'.
-sp_byref_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and a qualifier such as 'const'.
-sp_paren_qualifier = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and 'noexcept'.
-sp_paren_noexcept = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after class ':'.
-sp_after_class_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before class ':'.
-sp_before_class_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after class constructor ':'.
-#
-# Default: add
-sp_after_constr_colon = add # ignore/add/remove/force/not_defined
-
-# Add or remove space before class constructor ':'.
-#
-# Default: add
-sp_before_constr_colon = add # ignore/add/remove/force/not_defined
-
-# Add or remove space before case ':'.
-#
-# Default: remove
-sp_before_case_colon = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'operator' and operator sign.
-sp_after_operator = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the operator symbol and the open parenthesis, as
-# in 'operator ++('.
-sp_after_operator_sym = ignore # ignore/add/remove/force/not_defined
-
-# Overrides sp_after_operator_sym when the operator has no arguments, as in
-# 'operator *()'.
-sp_after_operator_sym_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or
-# '(int)a' vs. '(int) a'.
-sp_after_cast = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove spaces inside cast parentheses.
-sp_inside_paren_cast = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the type and open parenthesis in a C++ cast,
-# i.e. 'int(exp)' vs. 'int (exp)'.
-sp_cpp_cast_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'sizeof' and '('.
-sp_sizeof_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'sizeof' and '...'.
-sp_sizeof_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'sizeof...' and '('.
-sp_sizeof_ellipsis_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '...' and a parameter pack.
-sp_ellipsis_parameter_pack = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a parameter pack and '...'.
-sp_parameter_pack_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'decltype' and '('.
-sp_decltype_paren = ignore # ignore/add/remove/force/not_defined
-
-# (Pawn) Add or remove space after the tag keyword.
-sp_after_tag = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside enum '{' and '}'.
-sp_inside_braces_enum = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside struct/union '{' and '}'.
-sp_inside_braces_struct = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'
-sp_inside_braces_oc_dict = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after open brace in an unnamed temporary
-# direct-list-initialization
-# if statement is a brace_init_lst
-# works only if sp_brace_brace is set to ignore.
-sp_after_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before close brace in an unnamed temporary
-# direct-list-initialization
-# if statement is a brace_init_lst
-# works only if sp_brace_brace is set to ignore.
-sp_before_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside an unnamed temporary direct-list-initialization
-# if statement is a brace_init_lst
-# works only if sp_brace_brace is set to ignore
-# works only if sp_before_type_brace_init_lst_close is set to ignore.
-sp_inside_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '{' and '}'.
-sp_inside_braces = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '{}'.
-sp_inside_braces_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around trailing return operator '->'.
-sp_trailing_return = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between return type and function name. A minimum of 1
-# is forced except for pointer return types.
-sp_type_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between type and open brace of an unnamed temporary
-# direct-list-initialization.
-sp_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '(' on function declaration.
-sp_func_proto_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '()' on function declaration
-# without parameters.
-sp_func_proto_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '(' with a typedef specifier.
-sp_func_type_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between alias name and '(' of a non-pointer function type typedef.
-sp_func_def_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '()' on function definition
-# without parameters.
-sp_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside empty function '()'.
-# Overrides sp_after_angle unless use_sp_after_angle_always is set to true.
-sp_inside_fparens = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside function '(' and ')'.
-sp_inside_fparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside the first parentheses in a function type, as in
-# 'void (*x)(...)'.
-sp_inside_tparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the ')' and '(' in a function type, as in
-# 'void (*x)(...)'.
-sp_after_tparen_close = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ']' and '(' when part of a function call.
-sp_square_fparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and '{' of function.
-sp_fparen_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and '{' of a function call in object
-# initialization.
-#
-# Overrides sp_fparen_brace.
-sp_fparen_brace_initializer = ignore # ignore/add/remove/force/not_defined
-
-# (Java) Add or remove space between ')' and '{{' of double brace initializer.
-sp_fparen_dbrace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '(' on function calls.
-sp_func_call_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '()' on function calls without
-# parameters. If set to ignore (the default), sp_func_call_paren is used.
-sp_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the user function name and '(' on function
-# calls. You need to set a keyword to be a user function in the config file,
-# like:
-# set func_call_user tr _ i18n
-sp_func_call_user_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside user function '(' and ')'.
-sp_func_call_user_inside_fparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between nested parentheses with user functions,
-# i.e. '((' vs. '( ('.
-sp_func_call_user_paren_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a constructor/destructor and the open
-# parenthesis.
-sp_func_class_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a constructor without parameters or destructor
-# and '()'.
-sp_func_class_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after 'return'.
-#
-# Default: force
-sp_return = force # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'return' and '('.
-sp_return_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'return' and '{'.
-sp_return_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '__attribute__' and '('.
-sp_attribute_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'defined' and '(' in '#if defined (FOO)'.
-sp_defined_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'throw' and '(' in 'throw (something)'.
-sp_throw_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'throw' and anything other than '(' as in
-# '@throw [...];'.
-sp_after_throw = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'catch' and '(' in 'catch (something) { }'.
-# If set to ignore, sp_before_sparen is used.
-sp_catch_paren = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between '@catch' and '('
-# in '@catch (something) { }'. If set to ignore, sp_catch_paren is used.
-sp_oc_catch_paren = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before Objective-C protocol list
-# as in '@protocol Protocol<here><Protocol_A>' or '@interface MyClass : NSObject<here><MyProtocol>'.
-sp_before_oc_proto_list = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between class name and '('
-# in '@interface className(categoryName)<ProtocolName>:BaseClass'
-sp_oc_classname_paren = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space between 'version' and '('
-# in 'version (something) { }'. If set to ignore, sp_before_sparen is used.
-sp_version_paren = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space between 'scope' and '('
-# in 'scope (something) { }'. If set to ignore, sp_before_sparen is used.
-sp_scope_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'super' and '(' in 'super (something)'.
-#
-# Default: remove
-sp_super_paren = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'this' and '(' in 'this (something)'.
-#
-# Default: remove
-sp_this_paren = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space between a macro name and its definition.
-sp_macro = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a macro function ')' and its definition.
-sp_macro_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'else' and '{' if on the same line.
-sp_else_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '}' and 'else' if on the same line.
-sp_brace_else = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '}' and the name of a typedef on the same line.
-sp_brace_typedef = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before the '{' of a 'catch' statement, if the '{' and
-# 'catch' are on the same line, as in 'catch (decl) <here> {'.
-sp_catch_brace = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before the '{' of a '@catch' statement, if the '{'
-# and '@catch' are on the same line, as in '@catch (decl) <here> {'.
-# If set to ignore, sp_catch_brace is used.
-sp_oc_catch_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '}' and 'catch' if on the same line.
-sp_brace_catch = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between '}' and '@catch' if on the same line.
-# If set to ignore, sp_brace_catch is used.
-sp_oc_brace_catch = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'finally' and '{' if on the same line.
-sp_finally_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '}' and 'finally' if on the same line.
-sp_brace_finally = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'try' and '{' if on the same line.
-sp_try_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between get/set and '{' if on the same line.
-sp_getset_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a variable and '{' for C++ uniform
-# initialization.
-sp_word_brace_init_lst = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a variable and '{' for a namespace.
-#
-# Default: add
-sp_word_brace_ns = add # ignore/add/remove/force/not_defined
-
-# Add or remove space before the '::' operator.
-sp_before_dc = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '::' operator.
-sp_after_dc = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove around the D named array initializer ':' operator.
-sp_d_array_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '!' (not) unary operator.
-#
-# Default: remove
-sp_not = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space between two '!' (not) unary operators.
-# If set to ignore, sp_not will be used.
-sp_not_not = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '~' (invert) unary operator.
-#
-# Default: remove
-sp_inv = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '&' (address-of) unary operator. This does not
-# affect the spacing after a '&' that is part of a type.
-#
-# Default: remove
-sp_addr = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space around the '.' or '->' operators.
-#
-# Default: remove
-sp_member = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '*' (dereference) unary operator. This does
-# not affect the spacing after a '*' that is part of a type.
-#
-# Default: remove
-sp_deref = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.
-#
-# Default: remove
-sp_sign = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space between '++' and '--' the word to which it is being
-# applied, as in '(--x)' or 'y++;'.
-#
-# Default: remove
-sp_incdec = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space before a backslash-newline at the end of a line.
-#
-# Default: add
-sp_before_nl_cont = add # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;'
-# or '+(int) bar;'.
-sp_after_oc_scope = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the colon in message specs,
-# i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.
-sp_after_oc_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before the colon in message specs,
-# i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.
-sp_before_oc_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the colon in immutable dictionary expression
-# 'NSDictionary *test = @{@"foo" :@"bar"};'.
-sp_after_oc_dict_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before the colon in immutable dictionary expression
-# 'NSDictionary *test = @{@"foo" :@"bar"};'.
-sp_before_oc_dict_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the colon in message specs,
-# i.e. '[object setValue:1];' vs. '[object setValue: 1];'.
-sp_after_send_oc_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before the colon in message specs,
-# i.e. '[object setValue:1];' vs. '[object setValue :1];'.
-sp_before_send_oc_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the (type) in message specs,
-# i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'.
-sp_after_oc_type = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the first (type) in message specs,
-# i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'.
-sp_after_oc_return_type = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between '@selector' and '(',
-# i.e. '@selector(msgName)' vs. '@selector (msgName)'.
-# Also applies to '@protocol()' constructs.
-sp_after_oc_at_sel = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between '@selector(x)' and the following word,
-# i.e. '@selector(foo) a:' vs. '@selector(foo)a:'.
-sp_after_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space inside '@selector' parentheses,
-# i.e. '@selector(foo)' vs. '@selector( foo )'.
-# Also applies to '@protocol()' constructs.
-sp_inside_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before a block pointer caret,
-# i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'.
-sp_before_oc_block_caret = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after a block pointer caret,
-# i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'.
-sp_after_oc_block_caret = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between the receiver and selector in a message,
-# as in '[receiver selector ...]'.
-sp_after_oc_msg_receiver = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after '@property'.
-sp_after_oc_property = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between '@synchronized' and the open parenthesis,
-# i.e. '@synchronized(foo)' vs. '@synchronized (foo)'.
-sp_after_oc_synchronized = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around the ':' in 'b ? t : f'.
-sp_cond_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before the ':' in 'b ? t : f'.
-#
-# Overrides sp_cond_colon.
-sp_cond_colon_before = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the ':' in 'b ? t : f'.
-#
-# Overrides sp_cond_colon.
-sp_cond_colon_after = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around the '?' in 'b ? t : f'.
-sp_cond_question = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before the '?' in 'b ? t : f'.
-#
-# Overrides sp_cond_question.
-sp_cond_question_before = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '?' in 'b ? t : f'.
-#
-# Overrides sp_cond_question.
-sp_cond_question_after = ignore # ignore/add/remove/force/not_defined
-
-# In the abbreviated ternary form '(a ?: b)', add or remove space between '?'
-# and ':'.
-#
-# Overrides all other sp_cond_* options.
-sp_cond_ternary_short = ignore # ignore/add/remove/force/not_defined
-
-# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make
-# sense here.
-sp_case_label = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space around the D '..' operator.
-sp_range = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after ':' in a Java/C++11 range-based 'for',
-# as in 'for (Type var : <here> expr)'.
-sp_after_for_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before ':' in a Java/C++11 range-based 'for',
-# as in 'for (Type var <here> : expr)'.
-sp_before_for_colon = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space between 'extern' and '(' as in 'extern <here> (C)'.
-sp_extern_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the opening of a C++ comment, as in '// <here> A'.
-sp_cmt_cpp_start = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space in a C++ region marker comment, as in '// <here> BEGIN'.
-# A region marker is defined as a comment which is not preceded by other text
-# (i.e. the comment is the first non-whitespace on the line), and which starts
-# with either 'BEGIN' or 'END'.
-#
-# Overrides sp_cmt_cpp_start.
-sp_cmt_cpp_region = ignore # ignore/add/remove/force/not_defined
-
-# If true, space added with sp_cmt_cpp_start will be added after Doxygen
-# sequences like '///', '///<', '//!' and '//!<'.
-sp_cmt_cpp_doxygen = false # true/false
-
-# If true, space added with sp_cmt_cpp_start will be added after Qt translator
-# or meta-data comments like '//:', '//=', and '//~'.
-sp_cmt_cpp_qttr = false # true/false
-
-# Add or remove space between #else or #endif and a trailing comment.
-sp_endif_cmt = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after 'new', 'delete' and 'delete[]'.
-sp_after_new = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'new' and '(' in 'new()'.
-sp_between_new_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and type in 'new(foo) BAR'.
-sp_after_newop_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside parentheses of the new operator
-# as in 'new(foo) BAR'.
-sp_inside_newop_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the open parenthesis of the new operator,
-# as in 'new(foo) BAR'.
-#
-# Overrides sp_inside_newop_paren.
-sp_inside_newop_paren_open = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before the close parenthesis of the new operator,
-# as in 'new(foo) BAR'.
-#
-# Overrides sp_inside_newop_paren.
-sp_inside_newop_paren_close = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a trailing comment.
-sp_before_tr_cmt = ignore # ignore/add/remove/force/not_defined
-
-# Number of spaces before a trailing comment.
-sp_num_before_tr_cmt = 0 # unsigned number
-
-# Add or remove space before an embedded comment.
-#
-# Default: force
-sp_before_emb_cmt = force # ignore/add/remove/force/not_defined
-
-# Number of spaces before an embedded comment.
-#
-# Default: 1
-sp_num_before_emb_cmt = 1 # unsigned number
-
-# Add or remove space after an embedded comment.
-#
-# Default: force
-sp_after_emb_cmt = force # ignore/add/remove/force/not_defined
-
-# Number of spaces after an embedded comment.
-#
-# Default: 1
-sp_num_after_emb_cmt = 1 # unsigned number
-
-# (Java) Add or remove space between an annotation and the open parenthesis.
-sp_annotation_paren = ignore # ignore/add/remove/force/not_defined
-
-# If true, vbrace tokens are dropped to the previous token and skipped.
-sp_skip_vbrace_tokens = false # true/false
-
-# Add or remove space after 'noexcept'.
-sp_after_noexcept = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after '_'.
-sp_vala_after_translation = ignore # ignore/add/remove/force/not_defined
-
-# If true, a <TAB> is inserted after #define.
-force_tab_after_define = false # true/false
-
-#
-# Indenting options
-#
-
-# The number of columns to indent per level. Usually 2, 3, 4, or 8.
-#
-# Default: 8
-indent_columns = 8 # unsigned number
-
-# Whether to ignore indent for the first continuation line. Subsequent
-# continuation lines will still be indented to match the first.
-indent_ignore_first_continue = false # true/false
-
-# The continuation indent. If non-zero, this overrides the indent of '(', '['
-# and '=' continuation indents. Negative values are OK; negative value is
-# absolute and not increased for each '(' or '[' level.
-#
-# For FreeBSD, this is set to 4.
-# Requires indent_ignore_first_continue=false.
-indent_continue = 0 # number
-
-# The continuation indent, only for class header line(s). If non-zero, this
-# overrides the indent of 'class' continuation indents.
-# Requires indent_ignore_first_continue=false.
-indent_continue_class_head = 0 # unsigned number
-
-# Whether to indent empty lines (i.e. lines which contain only spaces before
-# the newline character).
-indent_single_newlines = false # true/false
-
-# The continuation indent for func_*_param if they are true. If non-zero, this
-# overrides the indent.
-indent_param = 0 # unsigned number
-
-# How to use tabs when indenting code.
-#
-# 0: Spaces only
-# 1: Indent with tabs to brace level, align with spaces (default)
-# 2: Indent and align with tabs, using spaces when not on a tabstop
-#
-# Default: 1
-indent_with_tabs = 1 # unsigned number
-
-# Whether to indent comments that are not at a brace level with tabs on a
-# tabstop. Requires indent_with_tabs=2. If false, will use spaces.
-indent_cmt_with_tabs = false # true/false
-
-# Whether to indent strings broken by '\' so that they line up.
-indent_align_string = false # true/false
-
-# The number of spaces to indent multi-line XML strings.
-# Requires indent_align_string=true.
-indent_xml_string = 0 # unsigned number
-
-# Spaces to indent '{' from level.
-indent_brace = 0 # unsigned number
-
-# Whether braces are indented to the body level.
-indent_braces = false # true/false
-
-# Whether to disable indenting function braces if indent_braces=true.
-indent_braces_no_func = false # true/false
-
-# Whether to disable indenting class braces if indent_braces=true.
-indent_braces_no_class = false # true/false
-
-# Whether to disable indenting struct braces if indent_braces=true.
-indent_braces_no_struct = false # true/false
-
-# Whether to indent based on the size of the brace parent,
-# i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
-indent_brace_parent = false # true/false
-
-# Whether to indent based on the open parenthesis instead of the open brace
-# in '({\n'.
-indent_paren_open_brace = false # true/false
-
-# (C#) Whether to indent the brace of a C# delegate by another level.
-indent_cs_delegate_brace = false # true/false
-
-# (C#) Whether to indent a C# delegate (to handle delegates with no brace) by
-# another level.
-indent_cs_delegate_body = false # true/false
-
-# Whether to indent the body of a 'namespace'.
-indent_namespace = false # true/false
-
-# Whether to indent only the first namespace, and not any nested namespaces.
-# Requires indent_namespace=true.
-indent_namespace_single_indent = false # true/false
-
-# The number of spaces to indent a namespace block.
-# If set to zero, use the value indent_columns
-indent_namespace_level = 0 # unsigned number
-
-# If the body of the namespace is longer than this number, it won't be
-# indented. Requires indent_namespace=true. 0 means no limit.
-indent_namespace_limit = 0 # unsigned number
-
-# Whether to indent only in inner namespaces (nested in other namespaces).
-# Requires indent_namespace=true.
-indent_namespace_inner_only = false # true/false
-
-# Whether the 'extern "C"' body is indented.
-indent_extern = false # true/false
-
-# Whether the 'class' body is indented.
-indent_class = false # true/false
-
-# Whether to ignore indent for the leading base class colon.
-indent_ignore_before_class_colon = false # true/false
-
-# Additional indent before the leading base class colon.
-# Negative values decrease indent down to the first column.
-# Requires indent_ignore_before_class_colon=false and a newline break before
-# the colon (see pos_class_colon and nl_class_colon)
-indent_before_class_colon = 0 # number
-
-# Whether to indent the stuff after a leading base class colon.
-indent_class_colon = false # true/false
-
-# Whether to indent based on a class colon instead of the stuff after the
-# colon. Requires indent_class_colon=true.
-indent_class_on_colon = false # true/false
-
-# Whether to ignore indent for a leading class initializer colon.
-indent_ignore_before_constr_colon = false # true/false
-
-# Whether to indent the stuff after a leading class initializer colon.
-indent_constr_colon = false # true/false
-
-# Virtual indent from the ':' for leading member initializers.
-#
-# Default: 2
-indent_ctor_init_leading = 2 # unsigned number
-
-# Virtual indent from the ':' for following member initializers.
-#
-# Default: 2
-indent_ctor_init_following = 2 # unsigned number
-
-# Additional indent for constructor initializer list.
-# Negative values decrease indent down to the first column.
-indent_ctor_init = 0 # number
-
-# Whether to indent 'if' following 'else' as a new block under the 'else'.
-# If false, 'else\nif' is treated as 'else if' for indenting purposes.
-indent_else_if = false # true/false
-
-# Amount to indent variable declarations after a open brace.
-#
-# <0: Relative
-# >=0: Absolute
-indent_var_def_blk = 0 # number
-
-# Whether to indent continued variable declarations instead of aligning.
-indent_var_def_cont = false # true/false
-
-# How to indent continued shift expressions ('<<' and '>>').
-# Set align_left_shift=false when using this.
-# 0: Align shift operators instead of indenting them (default)
-# 1: Indent by one level
-# -1: Preserve original indentation
-indent_shift = 0 # number
-
-# Whether to force indentation of function definitions to start in column 1.
-indent_func_def_force_col1 = false # true/false
-
-# Whether to indent continued function call parameters one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_func_call_param = false # true/false
-
-# Whether to indent continued function definition parameters one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_func_def_param = false # true/false
-
-# for function definitions, only if indent_func_def_param is false
-# Allows to align params when appropriate and indent them when not
-# behave as if it was true if paren position is more than this value
-# if paren position is more than the option value
-indent_func_def_param_paren_pos_threshold = 0 # unsigned number
-
-# Whether to indent continued function call prototype one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_func_proto_param = false # true/false
-
-# Whether to indent continued function call declaration one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_func_class_param = false # true/false
-
-# Whether to indent continued class variable constructors one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_func_ctor_var_param = false # true/false
-
-# Whether to indent continued template parameter list one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_template_param = false # true/false
-
-# Double the indent for indent_func_xxx_param options.
-# Use both values of the options indent_columns and indent_param.
-indent_func_param_double = false # true/false
-
-# Indentation column for standalone 'const' qualifier on a function
-# prototype.
-indent_func_const = 0 # unsigned number
-
-# Indentation column for standalone 'throw' qualifier on a function
-# prototype.
-indent_func_throw = 0 # unsigned number
-
-# How to indent within a macro followed by a brace on the same line
-# This allows reducing the indent in macros that have (for example)
-# `do { ... } while (0)` blocks bracketing them.
-#
-# true: add an indent for the brace on the same line as the macro
-# false: do not add an indent for the brace on the same line as the macro
-#
-# Default: true
-indent_macro_brace = true # true/false
-
-# The number of spaces to indent a continued '->' or '.'.
-# Usually set to 0, 1, or indent_columns.
-indent_member = 0 # unsigned number
-
-# Whether lines broken at '.' or '->' should be indented by a single indent.
-# The indent_member option will not be effective if this is set to true.
-indent_member_single = false # true/false
-
-# Spaces to indent single line ('//') comments on lines before code.
-indent_single_line_comments_before = 0 # unsigned number
-
-# Spaces to indent single line ('//') comments on lines after code.
-indent_single_line_comments_after = 0 # unsigned number
-
-# When opening a paren for a control statement (if, for, while, etc), increase
-# the indent level by this value. Negative values decrease the indent level.
-indent_sparen_extra = 0 # number
-
-# Whether to indent trailing single line ('//') comments relative to the code
-# instead of trying to keep the same absolute column.
-indent_relative_single_line_comments = false # true/false
-
-# Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.
-# It might be wise to choose the same value for the option indent_case_brace.
-indent_switch_case = 0 # unsigned number
-
-# Spaces to indent the body of a 'switch' before any 'case'.
-# Usually the same as indent_columns or indent_switch_case.
-indent_switch_body = 0 # unsigned number
-
-# Whether to ignore indent for '{' following 'case'.
-indent_ignore_case_brace = false # true/false
-
-# Spaces to indent '{' from 'case'. By default, the brace will appear under
-# the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.
-# It might be wise to choose the same value for the option indent_switch_case.
-indent_case_brace = 0 # number
-
-# indent 'break' with 'case' from 'switch'.
-indent_switch_break_with_case = false # true/false
-
-# Whether to indent preprocessor statements inside of switch statements.
-#
-# Default: true
-indent_switch_pp = true # true/false
-
-# Spaces to shift the 'case' line, without affecting any other lines.
-# Usually 0.
-indent_case_shift = 0 # unsigned number
-
-# Whether to align comments before 'case' with the 'case'.
-#
-# Default: true
-indent_case_comment = true # true/false
-
-# Whether to indent comments not found in first column.
-#
-# Default: true
-indent_comment = true # true/false
-
-# Whether to indent comments found in first column.
-indent_col1_comment = false # true/false
-
-# Whether to indent multi string literal in first column.
-indent_col1_multi_string_literal = false # true/false
-
-# Align comments on adjacent lines that are this many columns apart or less.
-#
-# Default: 3
-indent_comment_align_thresh = 3 # unsigned number
-
-# Whether to ignore indent for goto labels.
-indent_ignore_label = false # true/false
-
-# How to indent goto labels. Requires indent_ignore_label=false.
-#
-# >0: Absolute column where 1 is the leftmost column
-# <=0: Subtract from brace indent
-#
-# Default: 1
-indent_label = 1 # number
-
-# How to indent access specifiers that are followed by a
-# colon.
-#
-# >0: Absolute column where 1 is the leftmost column
-# <=0: Subtract from brace indent
-#
-# Default: 1
-indent_access_spec = 1 # number
-
-# Whether to indent the code after an access specifier by one level.
-# If true, this option forces 'indent_access_spec=0'.
-indent_access_spec_body = false # true/false
-
-# If an open parenthesis is followed by a newline, whether to indent the next
-# line so that it lines up after the open parenthesis (not recommended).
-indent_paren_nl = false # true/false
-
-# How to indent a close parenthesis after a newline.
-#
-# 0: Indent to body level (default)
-# 1: Align under the open parenthesis
-# 2: Indent to the brace level
-# -1: Preserve original indentation
-indent_paren_close = 0 # number
-
-# Whether to indent the open parenthesis of a function definition,
-# if the parenthesis is on its own line.
-indent_paren_after_func_def = false # true/false
-
-# Whether to indent the open parenthesis of a function declaration,
-# if the parenthesis is on its own line.
-indent_paren_after_func_decl = false # true/false
-
-# Whether to indent the open parenthesis of a function call,
-# if the parenthesis is on its own line.
-indent_paren_after_func_call = false # true/false
-
-# How to indent a comma when inside braces.
-# 0: Indent by one level (default)
-# 1: Align under the open brace
-# -1: Preserve original indentation
-indent_comma_brace = 0 # number
-
-# How to indent a comma when inside parentheses.
-# 0: Indent by one level (default)
-# 1: Align under the open parenthesis
-# -1: Preserve original indentation
-indent_comma_paren = 0 # number
-
-# How to indent a Boolean operator when inside parentheses.
-# 0: Indent by one level (default)
-# 1: Align under the open parenthesis
-# -1: Preserve original indentation
-indent_bool_paren = 0 # number
-
-# Whether to ignore the indentation of a Boolean operator when outside
-# parentheses.
-indent_ignore_bool = false # true/false
-
-# Whether to ignore the indentation of an arithmetic operator.
-indent_ignore_arith = false # true/false
-
-# Whether to indent a semicolon when inside a for parenthesis.
-# If true, aligns under the open for parenthesis.
-indent_semicolon_for_paren = false # true/false
-
-# Whether to ignore the indentation of a semicolon outside of a 'for'
-# statement.
-indent_ignore_semicolon = false # true/false
-
-# Whether to align the first expression to following ones
-# if indent_bool_paren=1.
-indent_first_bool_expr = false # true/false
-
-# Whether to align the first expression to following ones
-# if indent_semicolon_for_paren=true.
-indent_first_for_expr = false # true/false
-
-# If an open square is followed by a newline, whether to indent the next line
-# so that it lines up after the open square (not recommended).
-indent_square_nl = false # true/false
-
-# (ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies.
-indent_preserve_sql = false # true/false
-
-# Whether to ignore the indentation of an assignment operator.
-indent_ignore_assign = false # true/false
-
-# Whether to align continued statements at the '='. If false or if the '=' is
-# followed by a newline, the next line is indent one tab.
-#
-# Default: true
-indent_align_assign = true # true/false
-
-# If true, the indentation of the chunks after a '=' sequence will be set at
-# LHS token indentation column before '='.
-indent_off_after_assign = false # true/false
-
-# Whether to align continued statements at the '('. If false or the '(' is
-# followed by a newline, the next line indent is one tab.
-#
-# Default: true
-indent_align_paren = true # true/false
-
-# (OC) Whether to indent Objective-C code inside message selectors.
-indent_oc_inside_msg_sel = false # true/false
-
-# (OC) Whether to indent Objective-C blocks at brace level instead of usual
-# rules.
-indent_oc_block = false # true/false
-
-# (OC) Indent for Objective-C blocks in a message relative to the parameter
-# name.
-#
-# =0: Use indent_oc_block rules
-# >0: Use specified number of spaces to indent
-indent_oc_block_msg = 0 # unsigned number
-
-# (OC) Minimum indent for subsequent parameters
-indent_oc_msg_colon = 0 # unsigned number
-
-# (OC) Whether to prioritize aligning with initial colon (and stripping spaces
-# from lines, if necessary).
-#
-# Default: true
-indent_oc_msg_prioritize_first_colon = true # true/false
-
-# (OC) Whether to indent blocks the way that Xcode does by default
-# (from the keyword if the parameter is on its own line; otherwise, from the
-# previous indentation level). Requires indent_oc_block_msg=true.
-indent_oc_block_msg_xcode_style = false # true/false
-
-# (OC) Whether to indent blocks from where the brace is, relative to a
-# message keyword. Requires indent_oc_block_msg=true.
-indent_oc_block_msg_from_keyword = false # true/false
-
-# (OC) Whether to indent blocks from where the brace is, relative to a message
-# colon. Requires indent_oc_block_msg=true.
-indent_oc_block_msg_from_colon = false # true/false
-
-# (OC) Whether to indent blocks from where the block caret is.
-# Requires indent_oc_block_msg=true.
-indent_oc_block_msg_from_caret = false # true/false
-
-# (OC) Whether to indent blocks from where the brace caret is.
-# Requires indent_oc_block_msg=true.
-indent_oc_block_msg_from_brace = false # true/false
-
-# When indenting after virtual brace open and newline add further spaces to
-# reach this minimum indent.
-indent_min_vbrace_open = 0 # unsigned number
-
-# Whether to add further spaces after regular indent to reach next tabstop
-# when indenting after virtual brace open and newline.
-indent_vbrace_open_on_tabstop = false # true/false
-
-# How to indent after a brace followed by another token (not a newline).
-# true: indent all contained lines to match the token
-# false: indent all contained lines to match the brace
-#
-# Default: true
-indent_token_after_brace = true # true/false
-
-# Whether to indent the body of a C++11 lambda.
-indent_cpp_lambda_body = false # true/false
-
-# How to indent compound literals that are being returned.
-# true: add both the indent from return & the compound literal open brace
-# (i.e. 2 indent levels)
-# false: only indent 1 level, don't add the indent for the open brace, only
-# add the indent for the return.
-#
-# Default: true
-indent_compound_literal_return = true # true/false
-
-# (C#) Whether to indent a 'using' block if no braces are used.
-#
-# Default: true
-indent_using_block = true # true/false
-
-# How to indent the continuation of ternary operator.
-#
-# 0: Off (default)
-# 1: When the `if_false` is a continuation, indent it under the `if_true` branch
-# 2: When the `:` is a continuation, indent it under `?`
-indent_ternary_operator = 0 # unsigned number
-
-# Whether to indent the statements inside ternary operator.
-indent_inside_ternary_operator = false # true/false
-
-# If true, the indentation of the chunks after a `return` sequence will be set at return indentation column.
-indent_off_after_return = false # true/false
-
-# If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column.
-indent_off_after_return_new = false # true/false
-
-# If true, the tokens after return are indented with regular single indentation. By default (false) the indentation is after the return token.
-indent_single_after_return = false # true/false
-
-# Whether to ignore indent and alignment for 'asm' blocks (i.e. assume they
-# have their own indentation).
-indent_ignore_asm_block = false # true/false
-
-# Don't indent the close parenthesis of a function definition,
-# if the parenthesis is on its own line.
-donot_indent_func_def_close_paren = false # true/false
-
-#
-# Newline adding and removing options
-#
-
-# Whether to collapse empty blocks between '{' and '}' except for functions.
-# Use nl_collapse_empty_body_functions to specify how empty function braces
-# should be formatted.
-nl_collapse_empty_body = false # true/false
-
-# Whether to collapse empty blocks between '{' and '}' for functions only.
-# If true, overrides nl_inside_empty_func.
-nl_collapse_empty_body_functions = false # true/false
-
-# Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'.
-nl_assign_leave_one_liners = false # true/false
-
-# Don't split one-line braced statements inside a 'class xx { }' body.
-nl_class_leave_one_liners = false # true/false
-
-# Don't split one-line enums, as in 'enum foo { BAR = 15 };'
-nl_enum_leave_one_liners = false # true/false
-
-# Don't split one-line get or set functions.
-nl_getset_leave_one_liners = false # true/false
-
-# (C#) Don't split one-line property get or set functions.
-nl_cs_property_leave_one_liners = false # true/false
-
-# Don't split one-line function definitions, as in 'int foo() { return 0; }'.
-# might modify nl_func_type_name
-nl_func_leave_one_liners = false # true/false
-
-# Don't split one-line C++11 lambdas, as in '[]() { return 0; }'.
-nl_cpp_lambda_leave_one_liners = false # true/false
-
-# Don't split one-line if/else statements, as in 'if(...) b++;'.
-nl_if_leave_one_liners = false # true/false
-
-# Don't split one-line while statements, as in 'while(...) b++;'.
-nl_while_leave_one_liners = false # true/false
-
-# Don't split one-line do statements, as in 'do { b++; } while(...);'.
-nl_do_leave_one_liners = false # true/false
-
-# Don't split one-line for statements, as in 'for(...) b++;'.
-nl_for_leave_one_liners = false # true/false
-
-# (OC) Don't split one-line Objective-C messages.
-nl_oc_msg_leave_one_liner = false # true/false
-
-# (OC) Add or remove newline between method declaration and '{'.
-nl_oc_mdef_brace = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove newline between Objective-C block signature and '{'.
-nl_oc_block_brace = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove blank line before '@interface' statement.
-nl_oc_before_interface = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove blank line before '@implementation' statement.
-nl_oc_before_implementation = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove blank line before '@end' statement.
-nl_oc_before_end = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove newline between '@interface' and '{'.
-nl_oc_interface_brace = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove newline between '@implementation' and '{'.
-nl_oc_implementation_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newlines at the start of the file.
-nl_start_of_file = ignore # ignore/add/remove/force/not_defined
-
-# The minimum 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 # unsigned number
-
-# Add or remove newline at the end of the file.
-nl_end_of_file = ignore # ignore/add/remove/force/not_defined
-
-# The minimum 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 = 0 # unsigned number
-
-# Add or remove newline between '=' and '{'.
-nl_assign_brace = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove newline between '=' and '['.
-nl_assign_square = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '[]' and '{'.
-nl_tsquare_brace = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove newline after '= ['. Will also affect the newline before
-# the ']'.
-nl_after_square_assign = ignore # ignore/add/remove/force/not_defined
-
-# 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/not_defined
-
-# Add or remove newline between 'enum' and '{'.
-nl_enum_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'enum' and 'class'.
-nl_enum_class = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'enum class' and the identifier.
-nl_enum_class_identifier = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'enum class' type and ':'.
-nl_enum_identifier_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'enum class identifier :' and type.
-nl_enum_colon_type = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'struct and '{'.
-nl_struct_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'union' and '{'.
-nl_union_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'if' and '{'.
-nl_if_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and 'else'.
-nl_brace_else = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'else if' and '{'. If set to ignore,
-# nl_if_brace is used instead.
-nl_elseif_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'else' and '{'.
-nl_else_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'else' and 'if'.
-nl_else_if = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before '{' opening brace
-nl_before_opening_brace_func_class_def = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before 'if'/'else if' closing parenthesis.
-nl_before_if_closing_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and 'finally'.
-nl_brace_finally = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'finally' and '{'.
-nl_finally_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'try' and '{'.
-nl_try_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between get/set and '{'.
-nl_getset_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'for' and '{'.
-nl_for_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before the '{' of a 'catch' statement, as in
-# 'catch (decl) <here> {'.
-nl_catch_brace = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove newline before the '{' of a '@catch' statement, as in
-# '@catch (decl) <here> {'. If set to ignore, nl_catch_brace is used.
-nl_oc_catch_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and 'catch'.
-nl_brace_catch = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove newline between '}' and '@catch'. If set to ignore,
-# nl_brace_catch is used.
-nl_oc_brace_catch = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and ']'.
-nl_brace_square = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and ')' in a function invocation.
-nl_brace_fparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'while' and '{'.
-nl_while_brace = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove newline between 'scope (x)' and '{'.
-nl_scope_brace = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove newline between 'unittest' and '{'.
-nl_unittest_brace = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove newline between 'version (x)' and '{'.
-nl_version_brace = ignore # ignore/add/remove/force/not_defined
-
-# (C#) Add or remove newline between 'using' and '{'.
-nl_using_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between two open or close braces. Due to general
-# newline/brace handling, REMOVE may not work.
-nl_brace_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'do' and '{'.
-nl_do_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and 'while' of 'do' statement.
-nl_brace_while = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'switch' and '{'.
-nl_switch_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'synchronized' and '{'.
-nl_synchronized_brace = ignore # ignore/add/remove/force/not_defined
-
-# 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 = false # true/false
-
-# Add a newline after '(' if an if/for/while/switch condition spans multiple
-# lines
-nl_multi_line_sparen_open = ignore # ignore/add/remove/force/not_defined
-
-# Add a newline before ')' if an if/for/while/switch condition spans multiple
-# lines. Overrides nl_before_if_closing_paren if both are specified.
-nl_multi_line_sparen_close = ignore # ignore/add/remove/force/not_defined
-
-# Force a newline in a define after the macro name for multi-line defines.
-nl_multi_line_define = false # true/false
-
-# Whether to add a newline before 'case', and a blank line before a 'case'
-# statement that follows a ';' or '}'.
-nl_before_case = false # true/false
-
-# Whether to add a newline after a 'case' statement.
-nl_after_case = false # true/false
-
-# Add or remove newline between a case ':' and '{'.
-#
-# Overrides nl_after_case.
-nl_case_colon_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between ')' and 'throw'.
-nl_before_throw = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'namespace' and '{'.
-nl_namespace_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template class.
-nl_template_class = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template class declaration.
-#
-# Overrides nl_template_class.
-nl_template_class_decl = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<>' of a specialized class declaration.
-#
-# Overrides nl_template_class_decl.
-nl_template_class_decl_special = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template class definition.
-#
-# Overrides nl_template_class.
-nl_template_class_def = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<>' of a specialized class definition.
-#
-# Overrides nl_template_class_def.
-nl_template_class_def_special = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template function.
-nl_template_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template function
-# declaration.
-#
-# Overrides nl_template_func.
-nl_template_func_decl = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<>' of a specialized function
-# declaration.
-#
-# Overrides nl_template_func_decl.
-nl_template_func_decl_special = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template function
-# definition.
-#
-# Overrides nl_template_func.
-nl_template_func_def = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<>' of a specialized function
-# definition.
-#
-# Overrides nl_template_func_def.
-nl_template_func_def_special = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template variable.
-nl_template_var = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'template<...>' and 'using' of a templated
-# type alias.
-nl_template_using = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'class' and '{'.
-nl_class_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before or after (depending on pos_class_comma,
-# may not be IGNORE) each',' in the base class list.
-nl_class_init_args = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after each ',' in the constructor member
-# initialization. Related to nl_constr_colon, pos_constr_colon and
-# pos_constr_comma.
-nl_constr_init_args = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before first element, after comma, and after last
-# element, in 'enum'.
-nl_enum_own_lines = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between return type and function name in a function
-# definition.
-# might be modified by nl_func_leave_one_liners
-nl_func_type_name = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between return type and function name inside a class
-# definition. If set to ignore, nl_func_type_name or nl_func_proto_type_name
-# is used instead.
-nl_func_type_name_class = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between class specification and '::'
-# in 'void A::f() { }'. Only appears in separate member implementation (does
-# not appear with in-line implementation).
-nl_func_class_scope = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between function scope and name, as in
-# 'void A :: <here> f() { }'.
-nl_func_scope_name = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between return type and function name in a prototype.
-nl_func_proto_type_name = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between a function name and the opening '(' in the
-# declaration.
-nl_func_paren = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_paren for functions with no parameters.
-nl_func_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between a function name and the opening '(' in the
-# definition.
-nl_func_def_paren = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_def_paren for functions with no parameters.
-nl_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between a function name and the opening '(' in the
-# call.
-nl_func_call_paren = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_call_paren for functions with no parameters.
-nl_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after '(' in a function declaration.
-nl_func_decl_start = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after '(' in a function definition.
-nl_func_def_start = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_decl_start when there is only one parameter.
-nl_func_decl_start_single = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_def_start when there is only one parameter.
-nl_func_def_start_single = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after '(' in a function declaration if '(' and ')'
-# are in different lines. If false, nl_func_decl_start is used instead.
-nl_func_decl_start_multi_line = false # true/false
-
-# Whether to add a newline after '(' in a function definition if '(' and ')'
-# are in different lines. If false, nl_func_def_start is used instead.
-nl_func_def_start_multi_line = false # true/false
-
-# Add or remove newline after each ',' in a function declaration.
-nl_func_decl_args = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after each ',' in a function definition.
-nl_func_def_args = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after each ',' in a function call.
-nl_func_call_args = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after each ',' in a function declaration if '('
-# and ')' are in different lines. If false, nl_func_decl_args is used instead.
-nl_func_decl_args_multi_line = false # true/false
-
-# Whether to add a newline after each ',' in a function definition if '('
-# and ')' are in different lines. If false, nl_func_def_args is used instead.
-nl_func_def_args_multi_line = false # true/false
-
-# Add or remove newline before the ')' in a function declaration.
-nl_func_decl_end = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before the ')' in a function definition.
-nl_func_def_end = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_decl_end when there is only one parameter.
-nl_func_decl_end_single = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_def_end when there is only one parameter.
-nl_func_def_end_single = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline before ')' in a function declaration if '(' and ')'
-# are in different lines. If false, nl_func_decl_end is used instead.
-nl_func_decl_end_multi_line = false # true/false
-
-# Whether to add a newline before ')' in a function definition if '(' and ')'
-# are in different lines. If false, nl_func_def_end is used instead.
-nl_func_def_end_multi_line = false # true/false
-
-# Add or remove newline between '()' in a function declaration.
-nl_func_decl_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '()' in a function definition.
-nl_func_def_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '()' in a function call.
-nl_func_call_empty = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after '(' in a function call,
-# has preference over nl_func_call_start_multi_line.
-nl_func_call_start = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline before ')' in a function call.
-nl_func_call_end = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after '(' in a function call if '(' and ')' are in
-# different lines.
-nl_func_call_start_multi_line = false # true/false
-
-# Whether to add a newline after each ',' in a function call if '(' and ')'
-# are in different lines.
-nl_func_call_args_multi_line = false # true/false
-
-# Whether to add a newline before ')' in a function call if '(' and ')' are in
-# different lines.
-nl_func_call_end_multi_line = false # true/false
-
-# Whether to respect nl_func_call_XXX option in case of closure args.
-nl_func_call_args_multi_line_ignore_closures = false # true/false
-
-# Whether to add a newline after '<' of a template parameter list.
-nl_template_start = false # true/false
-
-# Whether to add a newline after each ',' in a template parameter list.
-nl_template_args = false # true/false
-
-# Whether to add a newline before '>' of a template parameter list.
-nl_template_end = false # true/false
-
-# (OC) Whether to put each Objective-C message parameter on a separate line.
-# See nl_oc_msg_leave_one_liner.
-nl_oc_msg_args = false # true/false
-
-# (OC) Minimum number of Objective-C message parameters before applying nl_oc_msg_args.
-nl_oc_msg_args_min_params = 0 # unsigned number
-
-# (OC) Max code width of Objective-C message before applying nl_oc_msg_args.
-nl_oc_msg_args_max_code_width = 0 # unsigned number
-
-# Add or remove newline between function signature and '{'.
-nl_fdef_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between function signature and '{',
-# if signature ends with ')'. Overrides nl_fdef_brace.
-nl_fdef_brace_cond = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between C++11 lambda signature and '{'.
-nl_cpp_ldef_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'return' and the return expression.
-nl_return_expr = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'throw' and the throw expression.
-nl_throw_expr = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after semicolons, except in 'for' statements.
-nl_after_semicolon = false # true/false
-
-# (Java) Add or remove newline between the ')' and '{{' of the double brace
-# initializer.
-nl_paren_dbrace_open = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after the type in an unnamed temporary
-# direct-list-initialization, better:
-# before a direct-list-initialization.
-nl_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after the open brace in an unnamed temporary
-# direct-list-initialization.
-nl_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline before the close brace in an unnamed temporary
-# direct-list-initialization.
-nl_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline before '{'.
-nl_before_brace_open = false # true/false
-
-# Whether to add a newline after '{'.
-nl_after_brace_open = false # true/false
-
-# Whether to add a newline between the open brace and a trailing single-line
-# comment. Requires nl_after_brace_open=true.
-nl_after_brace_open_cmt = false # true/false
-
-# Whether to add a newline after a virtual brace open with a non-empty body.
-# These occur in un-braced if/while/do/for statement bodies.
-nl_after_vbrace_open = false # true/false
-
-# Whether to add a newline after a virtual brace open with an empty body.
-# These occur in un-braced if/while/do/for statement bodies.
-nl_after_vbrace_open_empty = false # true/false
-
-# Whether to add a newline after '}'. Does not apply if followed by a
-# necessary ';'.
-nl_after_brace_close = false # true/false
-
-# Whether to add a newline after a virtual brace close,
-# as in 'if (foo) a++; <here> return;'.
-nl_after_vbrace_close = false # true/false
-
-# Add or remove newline between the close brace and identifier,
-# as in 'struct { int a; } <here> b;'. Affects enumerations, unions and
-# structures. If set to ignore, uses nl_after_brace_close.
-nl_brace_struct_var = ignore # ignore/add/remove/force/not_defined
-
-# Whether to alter newlines in '#define' macros.
-nl_define_macro = false # true/false
-
-# Whether to alter newlines between consecutive parenthesis closes. The number
-# of closing parentheses in a line will depend on respective open parenthesis
-# lines.
-nl_squeeze_paren_close = false # true/false
-
-# Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and
-# '#endif'. Does not affect top-level #ifdefs.
-nl_squeeze_ifdef = false # true/false
-
-# Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well.
-nl_squeeze_ifdef_top_level = false # true/false
-
-# Add or remove blank line before 'if'.
-nl_before_if = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'if' statement. Add/Force work only if the
-# next token is not a closing brace.
-nl_after_if = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line before 'for'.
-nl_before_for = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'for' statement.
-nl_after_for = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line before 'while'.
-nl_before_while = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'while' statement.
-nl_after_while = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line before 'switch'.
-nl_before_switch = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'switch' statement.
-nl_after_switch = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line before 'synchronized'.
-nl_before_synchronized = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'synchronized' statement.
-nl_after_synchronized = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line before 'do'.
-nl_before_do = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'do/while' statement.
-nl_after_do = ignore # ignore/add/remove/force/not_defined
-
-# Ignore nl_before_{if,for,switch,do,synchronized} if the control
-# statement is immediately after a case statement.
-# if nl_before_{if,for,switch,do} is set to remove, this option
-# does nothing.
-nl_before_ignore_after_case = false # true/false
-
-# Whether to put a blank line before 'return' statements, unless after an open
-# brace.
-nl_before_return = false # true/false
-
-# Whether to put a blank line after 'return' statements, unless followed by a
-# close brace.
-nl_after_return = false # true/false
-
-# Whether to put a blank line before a member '.' or '->' operators.
-nl_before_member = ignore # ignore/add/remove/force/not_defined
-
-# (Java) Whether to put a blank line after a member '.' or '->' operators.
-nl_after_member = ignore # ignore/add/remove/force/not_defined
-
-# Whether to double-space commented-entries in 'struct'/'union'/'enum'.
-nl_ds_struct_enum_cmt = false # true/false
-
-# Whether to force a newline before '}' of a 'struct'/'union'/'enum'.
-# (Lower priority than eat_blanks_before_close_brace.)
-nl_ds_struct_enum_close_brace = false # true/false
-
-# Add or remove newline before or after (depending on pos_class_colon) a class
-# colon, as in 'class Foo <here> : <or here> public Bar'.
-nl_class_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline around a class constructor colon. The exact position
-# depends on nl_constr_init_args, pos_constr_colon and pos_constr_comma.
-nl_constr_colon = ignore # ignore/add/remove/force/not_defined
-
-# Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }'
-# into a single line. If true, prevents other brace newline rules from turning
-# such code into four lines. If true, it also preserves one-liner namespaces.
-nl_namespace_two_to_one_liner = false # true/false
-
-# Whether to remove a newline in simple unbraced if statements, turning them
-# into one-liners, as in 'if(b)\n i++;' => 'if(b) i++;'.
-nl_create_if_one_liner = false # true/false
-
-# Whether to remove a newline in simple unbraced for statements, turning them
-# into one-liners, as in 'for (...)\n stmt;' => 'for (...) stmt;'.
-nl_create_for_one_liner = false # true/false
-
-# Whether to remove a newline in simple unbraced while statements, turning
-# them into one-liners, as in 'while (expr)\n stmt;' => 'while (expr) stmt;'.
-nl_create_while_one_liner = false # true/false
-
-# Whether to collapse a function definition whose body (not counting braces)
-# is only one line so that the entire definition (prototype, braces, body) is
-# a single line.
-nl_create_func_def_one_liner = false # true/false
-
-# Whether to split one-line simple list definitions into three lines by
-# adding newlines, as in 'int a[12] = { <here> 0 <here> };'.
-nl_create_list_one_liner = false # true/false
-
-# Whether to split one-line simple unbraced if statements into two lines by
-# adding a newline, as in 'if(b) <here> i++;'.
-nl_split_if_one_liner = false # true/false
-
-# Whether to split one-line simple unbraced for statements into two lines by
-# adding a newline, as in 'for (...) <here> stmt;'.
-nl_split_for_one_liner = false # true/false
-
-# Whether to split one-line simple unbraced while statements into two lines by
-# adding a newline, as in 'while (expr) <here> stmt;'.
-nl_split_while_one_liner = false # true/false
-
-# Don't add a newline before a cpp-comment in a parameter list of a function
-# call.
-donot_add_nl_before_cpp_comment = false # true/false
-
-#
-# Blank line options
-#
-
-# The maximum number of consecutive newlines (3 = 2 blank lines).
-nl_max = 0 # unsigned number
-
-# The maximum number of consecutive newlines in a function.
-nl_max_blank_in_func = 0 # unsigned number
-
-# The number of newlines inside an empty function body.
-# This option overrides eat_blanks_after_open_brace and
-# eat_blanks_before_close_brace, but is ignored when
-# nl_collapse_empty_body_functions=true
-nl_inside_empty_func = 0 # unsigned number
-
-# The number of newlines before a function prototype.
-nl_before_func_body_proto = 0 # unsigned number
-
-# The number of newlines before a multi-line function definition. Where
-# applicable, this option is overridden with eat_blanks_after_open_brace=true
-nl_before_func_body_def = 0 # unsigned number
-
-# The number of newlines before a class constructor/destructor prototype.
-nl_before_func_class_proto = 0 # unsigned number
-
-# The number of newlines before a class constructor/destructor definition.
-nl_before_func_class_def = 0 # unsigned number
-
-# The number of newlines after a function prototype.
-nl_after_func_proto = 0 # unsigned number
-
-# The number of newlines after a function prototype, if not followed by
-# another function prototype.
-nl_after_func_proto_group = 0 # unsigned number
-
-# The number of newlines after a class constructor/destructor prototype.
-nl_after_func_class_proto = 0 # unsigned number
-
-# The number of newlines after a class constructor/destructor prototype,
-# if not followed by another constructor/destructor prototype.
-nl_after_func_class_proto_group = 0 # unsigned number
-
-# Whether one-line method definitions inside a class body should be treated
-# as if they were prototypes for the purposes of adding newlines.
-#
-# Requires nl_class_leave_one_liners=true. Overrides nl_before_func_body_def
-# and nl_before_func_class_def for one-liners.
-nl_class_leave_one_liner_groups = false # true/false
-
-# The number of newlines after '}' of a multi-line function body.
-nl_after_func_body = 0 # unsigned number
-
-# The number of newlines after '}' of a multi-line function body in a class
-# declaration. Also affects class constructors/destructors.
-#
-# Overrides nl_after_func_body.
-nl_after_func_body_class = 0 # unsigned number
-
-# The number of newlines after '}' of a single line function body. Also
-# affects class constructors/destructors.
-#
-# Overrides nl_after_func_body and nl_after_func_body_class.
-nl_after_func_body_one_liner = 0 # unsigned number
-
-# The number of newlines before a block of typedefs. If nl_after_access_spec
-# is non-zero, that option takes precedence.
-#
-# 0: No change (default).
-nl_typedef_blk_start = 0 # unsigned number
-
-# The number of newlines after a block of typedefs.
-#
-# 0: No change (default).
-nl_typedef_blk_end = 0 # unsigned number
-
-# The maximum number of consecutive newlines within a block of typedefs.
-#
-# 0: No change (default).
-nl_typedef_blk_in = 0 # unsigned number
-
-# The minimum number of blank lines after a block of variable definitions
-# at the top of a function body. If any preprocessor directives appear
-# between the opening brace of the function and the variable block, then
-# it is considered as not at the top of the function.Newlines are added
-# before trailing preprocessor directives, if any exist.
-#
-# 0: No change (default).
-nl_var_def_blk_end_func_top = 0 # unsigned number
-
-# The minimum number of empty newlines before a block of variable definitions
-# not at the top of a function body. If nl_after_access_spec is non-zero,
-# that option takes precedence. Newlines are not added at the top of the
-# file or just after an opening brace. Newlines are added above any
-# preprocessor directives before the block.
-#
-# 0: No change (default).
-nl_var_def_blk_start = 0 # unsigned number
-
-# The minimum number of empty newlines after a block of variable definitions
-# not at the top of a function body. Newlines are not added if the block
-# is at the bottom of the file or just before a preprocessor directive.
-#
-# 0: No change (default).
-nl_var_def_blk_end = 0 # unsigned number
-
-# The maximum number of consecutive newlines within a block of variable
-# definitions.
-#
-# 0: No change (default).
-nl_var_def_blk_in = 0 # unsigned 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 # unsigned 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 # unsigned 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 # unsigned number
-
-# Whether to force a newline after a multi-line comment.
-nl_after_multiline_comment = false # true/false
-
-# Whether to force a newline after a label's colon.
-nl_after_label_colon = false # true/false
-
-# The number of newlines before a struct definition.
-nl_before_struct = 0 # unsigned number
-
-# The number of newlines after '}' or ';' of a struct/enum/union definition.
-nl_after_struct = 0 # unsigned number
-
-# The number of newlines before a class definition.
-nl_before_class = 0 # unsigned number
-
-# The number of newlines after '}' or ';' of a class definition.
-nl_after_class = 0 # unsigned number
-
-# The number of newlines before a namespace.
-nl_before_namespace = 0 # unsigned number
-
-# The number of newlines after '{' of a namespace. This also adds newlines
-# before the matching '}'.
-#
-# 0: Apply eat_blanks_after_open_brace or eat_blanks_before_close_brace if
-# applicable, otherwise no change.
-#
-# Overrides eat_blanks_after_open_brace and eat_blanks_before_close_brace.
-nl_inside_namespace = 0 # unsigned number
-
-# The number of newlines after '}' of a namespace.
-nl_after_namespace = 0 # unsigned number
-
-# The number of newlines before an access specifier label. This also includes
-# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
-# if after a brace open.
-#
-# 0: No change (default).
-nl_before_access_spec = 0 # unsigned number
-
-# The number of newlines after an access specifier label. This also includes
-# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
-# if after a brace open.
-#
-# 0: No change (default).
-#
-# Overrides nl_typedef_blk_start and nl_var_def_blk_start.
-nl_after_access_spec = 0 # unsigned number
-
-# The number of newlines between a function definition and the function
-# comment, as in '// comment\n <here> void foo() {...}'.
-#
-# 0: No change (default).
-nl_comment_func_def = 0 # unsigned number
-
-# The number of newlines after a try-catch-finally block that isn't followed
-# by a brace close.
-#
-# 0: No change (default).
-nl_after_try_catch_finally = 0 # unsigned number
-
-# (C#) The number of newlines before and after a property, indexer or event
-# declaration.
-#
-# 0: No change (default).
-nl_around_cs_property = 0 # unsigned number
-
-# (C#) The number of newlines between the get/set/add/remove handlers.
-#
-# 0: No change (default).
-nl_between_get_set = 0 # unsigned number
-
-# (C#) Add or remove newline between property and the '{'.
-nl_property_brace = ignore # ignore/add/remove/force/not_defined
-
-# Whether to remove blank lines after '{'.
-eat_blanks_after_open_brace = false # true/false
-
-# Whether to remove blank lines before '}'.
-eat_blanks_before_close_brace = false # true/false
-
-# How aggressively to remove extra newlines not in preprocessor.
-#
-# 0: No change (default)
-# 1: Remove most newlines not handled by other config
-# 2: Remove all newlines and reformat completely by config
-nl_remove_extra_newlines = 0 # unsigned number
-
-# (Java) Add or remove newline after an annotation statement. Only affects
-# annotations that are after a newline.
-nl_after_annotation = ignore # ignore/add/remove/force/not_defined
-
-# (Java) Add or remove newline between two annotations.
-nl_between_annotation = ignore # ignore/add/remove/force/not_defined
-
-# The number of newlines before a whole-file #ifdef.
-#
-# 0: No change (default).
-nl_before_whole_file_ifdef = 0 # unsigned number
-
-# The number of newlines after a whole-file #ifdef.
-#
-# 0: No change (default).
-nl_after_whole_file_ifdef = 0 # unsigned number
-
-# The number of newlines before a whole-file #endif.
-#
-# 0: No change (default).
-nl_before_whole_file_endif = 0 # unsigned number
-
-# The number of newlines after a whole-file #endif.
-#
-# 0: No change (default).
-nl_after_whole_file_endif = 0 # unsigned number
-
-#
-# Positioning options
-#
-
-# The position of arithmetic operators in wrapped expressions.
-pos_arith = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of assignment in wrapped expressions. Do not affect '='
-# followed by '{'.
-pos_assign = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of Boolean operators in wrapped expressions.
-pos_bool = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of comparison operators in wrapped expressions.
-pos_compare = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of conditional operators, as in the '?' and ':' of
-# 'expr ? stmt : stmt', in wrapped expressions.
-pos_conditional = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of the comma in wrapped expressions.
-pos_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of the comma in enum entries.
-pos_enum_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of the comma in the base class list if there is more than one
-# line. Affects nl_class_init_args.
-pos_class_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of the comma in the constructor initialization list.
-# Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon.
-pos_constr_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of trailing/leading class colon, between class and base class
-# list. Affects nl_class_colon.
-pos_class_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of colons between constructor and member initialization.
-# Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.
-pos_constr_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of shift operators in wrapped expressions.
-pos_shift = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-#
-# Line splitting options
-#
-
-# Try to limit code width to N columns.
-code_width = 0 # unsigned number
-
-# Whether to fully split long 'for' statements at semi-colons.
-ls_for_split_full = false # true/false
-
-# Whether to fully split long function prototypes/calls at commas.
-# The option ls_code_width has priority over the option ls_func_split_full.
-ls_func_split_full = false # true/false
-
-# Whether to split lines as close to code_width as possible and ignore some
-# groupings.
-# The option ls_code_width has priority over the option ls_func_split_full.
-ls_code_width = false # true/false
-
-#
-# Code alignment options (not left column spaces/tabs)
-#
-
-# Whether to keep non-indenting tabs.
-align_keep_tabs = false # true/false
-
-# Whether to use tabs for aligning.
-align_with_tabs = false # true/false
-
-# Whether to bump out to the next tab when aligning.
-align_on_tabstop = false # true/false
-
-# Whether to right-align numbers.
-align_number_right = false # true/false
-
-# Whether to keep whitespace not required for alignment.
-align_keep_extra_space = false # true/false
-
-# Whether to align variable definitions in prototypes and functions.
-align_func_params = false # true/false
-
-# The span for aligning parameter definitions in function on parameter name.
-#
-# 0: Don't align (default).
-align_func_params_span = 0 # unsigned number
-
-# The threshold for aligning function parameter definitions.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_func_params_thresh = 0 # number
-
-# The gap for aligning function parameter definitions.
-align_func_params_gap = 0 # unsigned number
-
-# The span for aligning constructor value.
-#
-# 0: Don't align (default).
-align_constr_value_span = 0 # unsigned number
-
-# The threshold for aligning constructor value.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_constr_value_thresh = 0 # number
-
-# The gap for aligning constructor value.
-align_constr_value_gap = 0 # unsigned number
-
-# Whether to align parameters in single-line functions that have the same
-# name. The function names must already be aligned with each other.
-align_same_func_call_params = false # true/false
-
-# The span for aligning function-call parameters for single line functions.
-#
-# 0: Don't align (default).
-align_same_func_call_params_span = 0 # unsigned number
-
-# The threshold for aligning function-call parameters for single line
-# functions.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_same_func_call_params_thresh = 0 # number
-
-# The span for aligning variable definitions.
-#
-# 0: Don't align (default).
-align_var_def_span = 0 # unsigned number
-
-# How to consider (or treat) the '*' in the alignment of variable definitions.
-#
-# 0: Part of the type 'void * foo;' (default)
-# 1: Part of the variable 'void *foo;'
-# 2: Dangling 'void *foo;'
-# Dangling: the '*' will not be taken into account when aligning.
-align_var_def_star_style = 0 # unsigned number
-
-# How to consider (or treat) the '&' in the alignment of variable definitions.
-#
-# 0: Part of the type 'long & foo;' (default)
-# 1: Part of the variable 'long &foo;'
-# 2: Dangling 'long &foo;'
-# Dangling: the '&' will not be taken into account when aligning.
-align_var_def_amp_style = 0 # unsigned number
-
-# The threshold for aligning variable definitions.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_var_def_thresh = 0 # number
-
-# The gap for aligning variable definitions.
-align_var_def_gap = 0 # unsigned number
-
-# Whether to align the colon in struct bit fields.
-align_var_def_colon = false # true/false
-
-# The gap for aligning the colon in struct bit fields.
-align_var_def_colon_gap = 0 # unsigned number
-
-# Whether to align any attribute after the variable name.
-align_var_def_attribute = false # true/false
-
-# Whether to align inline struct/enum/union variable definitions.
-align_var_def_inline = false # true/false
-
-# The span for aligning on '=' in assignments.
-#
-# 0: Don't align (default).
-align_assign_span = 0 # unsigned number
-
-# The span for aligning on '=' in function prototype modifier.
-#
-# 0: Don't align (default).
-align_assign_func_proto_span = 0 # unsigned number
-
-# The threshold for aligning on '=' in assignments.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_assign_thresh = 0 # number
-
-# Whether to align on the left most assignment when multiple
-# definitions are found on the same line.
-# Depends on 'align_assign_span' and 'align_assign_thresh' settings.
-align_assign_on_multi_var_defs = false # true/false
-
-# The span for aligning on '{' in braced init list.
-#
-# 0: Don't align (default).
-align_braced_init_list_span = 0 # unsigned number
-
-# The threshold for aligning on '{' in braced init list.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_braced_init_list_thresh = 0 # number
-
-# How to apply align_assign_span to function declaration "assignments", i.e.
-# 'virtual void foo() = 0' or '~foo() = {default|delete}'.
-#
-# 0: Align with other assignments (default)
-# 1: Align with each other, ignoring regular assignments
-# 2: Don't align
-align_assign_decl_func = 0 # unsigned number
-
-# The span for aligning on '=' in enums.
-#
-# 0: Don't align (default).
-align_enum_equ_span = 0 # unsigned number
-
-# The threshold for aligning on '=' in enums.
-# Use a negative number for absolute thresholds.
-#
-# 0: no limit (default).
-align_enum_equ_thresh = 0 # number
-
-# The span for aligning class member definitions.
-#
-# 0: Don't align (default).
-align_var_class_span = 0 # unsigned number
-
-# The threshold for aligning class member definitions.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_var_class_thresh = 0 # number
-
-# The gap for aligning class member definitions.
-align_var_class_gap = 0 # unsigned number
-
-# The span for aligning struct/union member definitions.
-#
-# 0: Don't align (default).
-align_var_struct_span = 0 # unsigned number
-
-# The threshold for aligning struct/union member definitions.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_var_struct_thresh = 0 # number
-
-# The gap for aligning struct/union member definitions.
-align_var_struct_gap = 0 # unsigned number
-
-# The span for aligning struct initializer values.
-#
-# 0: Don't align (default).
-align_struct_init_span = 0 # unsigned number
-
-# The span for aligning single-line typedefs.
-#
-# 0: Don't align (default).
-align_typedef_span = 0 # unsigned number
-
-# The minimum space between the type and the synonym of a typedef.
-align_typedef_gap = 0 # unsigned number
-
-# How to align typedef'd functions with other typedefs.
-#
-# 0: Don't mix them at all (default)
-# 1: Align the open parenthesis with the types
-# 2: Align the function type name with the other type names
-align_typedef_func = 0 # unsigned number
-
-# How to consider (or treat) the '*' in the alignment of typedefs.
-#
-# 0: Part of the typedef type, 'typedef int * pint;' (default)
-# 1: Part of type name: 'typedef int *pint;'
-# 2: Dangling: 'typedef int *pint;'
-# Dangling: the '*' will not be taken into account when aligning.
-align_typedef_star_style = 0 # unsigned number
-
-# How to consider (or treat) the '&' in the alignment of typedefs.
-#
-# 0: Part of the typedef type, 'typedef int & intref;' (default)
-# 1: Part of type name: 'typedef int &intref;'
-# 2: Dangling: 'typedef int &intref;'
-# Dangling: the '&' will not be taken into account when aligning.
-align_typedef_amp_style = 0 # unsigned number
-
-# The span for aligning comments that end lines.
-#
-# 0: Don't align (default).
-align_right_cmt_span = 0 # unsigned number
-
-# Minimum number of columns between preceding text and a trailing comment in
-# order for the comment to qualify for being aligned. Must be non-zero to have
-# an effect.
-align_right_cmt_gap = 0 # unsigned number
-
-# If aligning comments, whether to mix with comments after '}' and #endif with
-# less than three spaces before the comment.
-align_right_cmt_mix = false # true/false
-
-# Whether to only align trailing comments that are at the same brace level.
-align_right_cmt_same_level = false # true/false
-
-# Minimum column at which to align trailing comments. Comments which are
-# aligned beyond this column, but which can be aligned in a lesser column,
-# may be "pulled in".
-#
-# 0: Ignore (default).
-align_right_cmt_at_col = 0 # unsigned number
-
-# The span for aligning function prototypes.
-#
-# 0: Don't align (default).
-align_func_proto_span = 0 # unsigned number
-
-# How to consider (or treat) the '*' in the alignment of function prototypes.
-#
-# 0: Part of the type 'void * foo();' (default)
-# 1: Part of the function 'void *foo();'
-# 2: Dangling 'void *foo();'
-# Dangling: the '*' will not be taken into account when aligning.
-align_func_proto_star_style = 0 # unsigned number
-
-# How to consider (or treat) the '&' in the alignment of function prototypes.
-#
-# 0: Part of the type 'long & foo();' (default)
-# 1: Part of the function 'long &foo();'
-# 2: Dangling 'long &foo();'
-# Dangling: the '&' will not be taken into account when aligning.
-align_func_proto_amp_style = 0 # unsigned number
-
-# The threshold for aligning function prototypes.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_func_proto_thresh = 0 # number
-
-# Minimum gap between the return type and the function name.
-align_func_proto_gap = 0 # unsigned number
-
-# Whether to align function prototypes on the 'operator' keyword instead of
-# what follows.
-align_on_operator = false # true/false
-
-# 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 # true/false
-
-# Whether to align single-line functions with function prototypes.
-# Uses align_func_proto_span.
-align_single_line_func = false # true/false
-
-# Whether to align the open brace of single-line functions.
-# Requires align_single_line_func=true. Uses align_func_proto_span.
-align_single_line_brace = false # true/false
-
-# Gap for align_single_line_brace.
-align_single_line_brace_gap = 0 # unsigned number
-
-# (OC) The span for aligning Objective-C message specifications.
-#
-# 0: Don't align (default).
-align_oc_msg_spec_span = 0 # unsigned 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 # true/false
-
-# Whether to align macro functions and variables together.
-align_pp_define_together = false # true/false
-
-# The span for aligning on '#define' bodies.
-#
-# =0: Don't align (default)
-# >0: Number of lines (including comments) between blocks
-align_pp_define_span = 0 # unsigned number
-
-# The minimum space between label and value of a preprocessor define.
-align_pp_define_gap = 0 # unsigned number
-
-# Whether to align lines that start with '<<' with previous '<<'.
-#
-# Default: true
-align_left_shift = true # true/false
-
-# Whether to align comma-separated statements following '<<' (as used to
-# initialize Eigen matrices).
-align_eigen_comma_init = false # true/false
-
-# Whether to align text after 'asm volatile ()' colons.
-align_asm_colon = false # true/false
-
-# (OC) Span for aligning parameters in an Objective-C message call
-# on the ':'.
-#
-# 0: Don't align.
-align_oc_msg_colon_span = 0 # unsigned number
-
-# (OC) Whether to always align with the first parameter, even if it is too
-# short.
-align_oc_msg_colon_first = false # true/false
-
-# (OC) Whether to align parameters in an Objective-C '+' or '-' declaration
-# on the ':'.
-align_oc_decl_colon = false # true/false
-
-# (OC) Whether to not align parameters in an Objectve-C message call if first
-# colon is not on next line of the message call (the same way Xcode does
-# alignment)
-align_oc_msg_colon_xcode_like = false # true/false
-
-#
-# Comment modification options
-#
-
-# Try to wrap comments at N columns.
-cmt_width = 0 # unsigned number
-
-# How to reflow comments.
-#
-# 0: No reflowing (apart from the line wrapping due to cmt_width) (default)
-# 1: No touching at all
-# 2: Full reflow (enable cmt_indent_multi for indent with line wrapping due to cmt_width)
-cmt_reflow_mode = 0 # unsigned number
-
-# Path to a file that contains regular expressions describing patterns for
-# which the end of one line and the beginning of the next will be folded into
-# the same sentence or paragraph during full comment reflow. The regular
-# expressions are described using ECMAScript syntax. The syntax for this
-# specification is as follows, where "..." indicates the custom regular
-# expression and "n" indicates the nth end_of_prev_line_regex and
-# beg_of_next_line_regex regular expression pair:
-#
-# end_of_prev_line_regex[1] = "...$"
-# beg_of_next_line_regex[1] = "^..."
-# end_of_prev_line_regex[2] = "...$"
-# beg_of_next_line_regex[2] = "^..."
-# .
-# .
-# .
-# end_of_prev_line_regex[n] = "...$"
-# beg_of_next_line_regex[n] = "^..."
-#
-# Note that use of this option overrides the default reflow fold regular
-# expressions, which are internally defined as follows:
-#
-# end_of_prev_line_regex[1] = "[\w,\]\)]$"
-# beg_of_next_line_regex[1] = "^[\w,\[\(]"
-# end_of_prev_line_regex[2] = "\.$"
-# beg_of_next_line_regex[2] = "^[A-Z]"
-cmt_reflow_fold_regex_file = "" # string
-
-# Whether to indent wrapped lines to the start of the encompassing paragraph
-# during full comment reflow (cmt_reflow_mode = 2). Overrides the value
-# specified by cmt_sp_after_star_cont.
-#
-# Note that cmt_align_doxygen_javadoc_tags overrides this option for
-# paragraphs associated with javadoc tags
-cmt_reflow_indent_to_paragraph_start = false # true/false
-
-# Whether to convert all tabs to spaces in comments. If false, tabs in
-# comments are left alone, unless used for indenting.
-cmt_convert_tab_to_spaces = false # true/false
-
-# Whether to apply changes to multi-line comments, including cmt_width,
-# keyword substitution and leading chars.
-#
-# Default: true
-cmt_indent_multi = true # true/false
-
-# Whether to align doxygen javadoc-style tags ('@param', '@return', etc.)
-# and corresponding fields such that groups of consecutive block tags,
-# parameter names, and descriptions align with one another. Overrides that
-# which is specified by the cmt_sp_after_star_cont. If cmt_width > 0, it may
-# be necessary to enable cmt_indent_multi and set cmt_reflow_mode = 2
-# in order to achieve the desired alignment for line-wrapping.
-cmt_align_doxygen_javadoc_tags = false # true/false
-
-# The number of spaces to insert after the star and before doxygen
-# javadoc-style tags (@param, @return, etc). Requires enabling
-# cmt_align_doxygen_javadoc_tags. Overrides that which is specified by the
-# cmt_sp_after_star_cont.
-#
-# Default: 1
-cmt_sp_before_doxygen_javadoc_tags = 1 # unsigned number
-
-# Whether to change trailing, single-line c-comments into cpp-comments.
-cmt_trailing_single_line_c_to_cpp = false # true/false
-
-# Whether to group c-comments that look like they are in a block.
-cmt_c_group = false # true/false
-
-# Whether to put an empty '/*' on the first line of the combined c-comment.
-cmt_c_nl_start = false # true/false
-
-# Whether to add a newline before the closing '*/' of the combined c-comment.
-cmt_c_nl_end = false # true/false
-
-# Whether to change cpp-comments into c-comments.
-cmt_cpp_to_c = false # true/false
-
-# Whether to group cpp-comments that look like they are in a block. Only
-# meaningful if cmt_cpp_to_c=true.
-cmt_cpp_group = false # true/false
-
-# Whether to put an empty '/*' on the first line of the combined cpp-comment
-# when converting to a c-comment.
-#
-# Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
-cmt_cpp_nl_start = false # true/false
-
-# Whether to add a newline before the closing '*/' of the combined cpp-comment
-# when converting to a c-comment.
-#
-# Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
-cmt_cpp_nl_end = false # true/false
-
-# Whether to put a star on subsequent comment lines.
-cmt_star_cont = false # true/false
-
-# The number of spaces to insert at the start of subsequent comment lines.
-cmt_sp_before_star_cont = 0 # unsigned number
-
-# The number of spaces to insert after the star on subsequent comment lines.
-cmt_sp_after_star_cont = 0 # unsigned number
-
-# For multi-line comments with a '*' lead, remove leading spaces if the first
-# and last lines of the comment are the same length.
-#
-# Default: true
-cmt_multi_check_last = true # true/false
-
-# For multi-line comments with a '*' lead, remove leading spaces if the first
-# and last lines of the comment are the same length AND if the length is
-# bigger as the first_len minimum.
-#
-# Default: 4
-cmt_multi_first_len_minimum = 4 # unsigned number
-
-# Path to a file that contains text to insert at the beginning of a file if
-# the file doesn't start with a C/C++ comment. If the inserted text contains
-# '$(filename)', that will be replaced with the current file's name.
-cmt_insert_file_header = "" # string
-
-# Path to a file that contains text to insert at the end of a file if the
-# file doesn't end with a C/C++ comment. If the inserted text contains
-# '$(filename)', that will be replaced with the current file's name.
-cmt_insert_file_footer = "" # string
-
-# Path to a file that contains text to insert before a function definition if
-# the function isn't preceded by a C/C++ comment. If the inserted text
-# contains '$(function)', '$(javaparam)' or '$(fclass)', these will be
-# replaced with, respectively, the name of the function, the javadoc '@param'
-# and '@return' stuff, or the name of the class to which the member function
-# belongs.
-cmt_insert_func_header = "" # string
-
-# Path to a file that contains text to insert before a class if the class
-# isn't preceded by a C/C++ comment. If the inserted text contains '$(class)',
-# that will be replaced with the class name.
-cmt_insert_class_header = "" # string
-
-# Path to a file that contains text to insert before an Objective-C message
-# specification, if the method isn't preceded by a C/C++ comment. If the
-# inserted text contains '$(message)' or '$(javaparam)', these will be
-# replaced with, respectively, the name of the function, or the javadoc
-# '@param' and '@return' stuff.
-cmt_insert_oc_msg_header = "" # string
-
-# Whether a comment should be inserted if a preprocessor is encountered when
-# stepping backwards from a function name.
-#
-# Applies to cmt_insert_oc_msg_header, cmt_insert_func_header and
-# cmt_insert_class_header.
-cmt_insert_before_preproc = false # true/false
-
-# Whether a comment should be inserted if a function is declared inline to a
-# class definition.
-#
-# Applies to cmt_insert_func_header.
-#
-# Default: true
-cmt_insert_before_inlines = true # true/false
-
-# Whether a comment should be inserted if the function is a class constructor
-# or destructor.
-#
-# Applies to cmt_insert_func_header.
-cmt_insert_before_ctor_dtor = false # true/false
-
-#
-# Code modifying options (non-whitespace)
-#
-
-# Add or remove braces on a single-line 'do' statement.
-mod_full_brace_do = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove braces on a single-line 'for' statement.
-mod_full_brace_for = ignore # ignore/add/remove/force/not_defined
-
-# (Pawn) Add or remove braces on a single-line function definition.
-mod_full_brace_function = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove braces on a single-line 'if' statement. Braces will not be
-# removed if the braced statement contains an 'else'.
-mod_full_brace_if = ignore # ignore/add/remove/force/not_defined
-
-# Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either
-# have, or do not have, braces. Overrides mod_full_brace_if.
-#
-# 0: Don't override mod_full_brace_if
-# 1: Add braces to all blocks if any block needs braces and remove braces if
-# they can be removed from all blocks
-# 2: Add braces to all blocks if any block already has braces, regardless of
-# whether it needs them
-# 3: Add braces to all blocks if any block needs braces and remove braces if
-# they can be removed from all blocks, except if all blocks have braces
-# despite none needing them
-mod_full_brace_if_chain = 0 # unsigned number
-
-# Whether to add braces to all blocks of an 'if'/'else if'/'else' chain.
-# If true, mod_full_brace_if_chain will only remove braces from an 'if' that
-# does not have an 'else if' or 'else'.
-mod_full_brace_if_chain_only = false # true/false
-
-# Add or remove braces on single-line 'while' statement.
-mod_full_brace_while = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove braces on single-line 'using ()' statement.
-mod_full_brace_using = ignore # ignore/add/remove/force/not_defined
-
-# Don't remove braces around statements that span N newlines
-mod_full_brace_nl = 0 # unsigned number
-
-# Whether to prevent removal of braces from 'if'/'for'/'while'/etc. blocks
-# which span multiple lines.
-#
-# Affects:
-# mod_full_brace_for
-# mod_full_brace_if
-# mod_full_brace_if_chain
-# mod_full_brace_if_chain_only
-# mod_full_brace_while
-# mod_full_brace_using
-#
-# Does not affect:
-# mod_full_brace_do
-# mod_full_brace_function
-mod_full_brace_nl_block_rem_mlcond = false # true/false
-
-# Add or remove unnecessary parentheses on 'return' statement.
-mod_paren_on_return = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove unnecessary parentheses on 'throw' statement.
-mod_paren_on_throw = ignore # ignore/add/remove/force/not_defined
-
-# (Pawn) Whether to change optional semicolons to real semicolons.
-mod_pawn_semicolon = false # true/false
-
-# Whether to fully parenthesize Boolean expressions in 'while' and 'if'
-# statement, as in 'if (a && b > c)' => 'if (a && (b > c))'.
-mod_full_paren_if_bool = false # true/false
-
-# Whether to fully parenthesize Boolean expressions after '='
-# statement, as in 'x = a && b > c;' => 'x = (a && (b > c));'.
-mod_full_paren_assign_bool = false # true/false
-
-# Whether to fully parenthesize Boolean expressions after '='
-# statement, as in 'return a && b > c;' => 'return (a && (b > c));'.
-mod_full_paren_return_bool = false # true/false
-
-# Whether to remove superfluous semicolons.
-mod_remove_extra_semicolon = false # true/false
-
-# Whether to remove duplicate include.
-mod_remove_duplicate_include = false # true/false
-
-# 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 = 0 # unsigned number
-
-# If a namespace 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_namespace_closebrace_comment = 0 # unsigned number
-
-# If a class 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_class_closebrace_comment = 0 # unsigned 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 = 0 # unsigned number
-
-# If an #ifdef body exceeds the specified number of newlines and doesn't have
-# a comment after the #endif, a comment will be added.
-mod_add_long_ifdef_endif_comment = 0 # unsigned number
-
-# If an #ifdef or #else body exceeds the specified number of newlines and
-# doesn't have a comment after the #else, a comment will be added.
-mod_add_long_ifdef_else_comment = 0 # unsigned number
-
-# Whether to take care of the case by the mod_sort_xx options.
-mod_sort_case_sensitive = false # true/false
-
-# Whether to sort consecutive single-line 'import' statements.
-mod_sort_import = false # true/false
-
-# (C#) Whether to sort consecutive single-line 'using' statements.
-mod_sort_using = false # true/false
-
-# Whether to sort consecutive single-line '#include' statements (C/C++) and
-# '#import' statements (Objective-C). Be aware that this has the potential to
-# break your code if your includes/imports have ordering dependencies.
-mod_sort_include = false # true/false
-
-# Whether to prioritize '#include' and '#import' statements that contain
-# filename without extension when sorting is enabled.
-mod_sort_incl_import_prioritize_filename = false # true/false
-
-# Whether to prioritize '#include' and '#import' statements that does not
-# contain extensions when sorting is enabled.
-mod_sort_incl_import_prioritize_extensionless = false # true/false
-
-# Whether to prioritize '#include' and '#import' statements that contain
-# angle over quotes when sorting is enabled.
-mod_sort_incl_import_prioritize_angle_over_quotes = false # true/false
-
-# Whether to ignore file extension in '#include' and '#import' statements
-# for sorting comparison.
-mod_sort_incl_import_ignore_extension = false # true/false
-
-# Whether to group '#include' and '#import' statements when sorting is enabled.
-mod_sort_incl_import_grouping_enabled = false # true/false
-
-# Whether to move a 'break' that appears after a fully braced 'case' before
-# the close brace, as in 'case X: { ... } break;' => 'case X: { ... break; }'.
-mod_move_case_break = false # true/false
-
-# Whether to move a 'return' that appears after a fully braced 'case' before
-# the close brace, as in 'case X: { ... } return;' => 'case X: { ... return; }'.
-mod_move_case_return = false # true/false
-
-# Add or remove braces around a fully braced case statement. Will only remove
-# braces if there are no variable declarations in the block.
-mod_case_brace = ignore # ignore/add/remove/force/not_defined
-
-# Whether to remove a void 'return;' that appears as the last statement in a
-# function.
-mod_remove_empty_return = false # true/false
-
-# Add or remove the comma after the last value of an enumeration.
-mod_enum_last_comma = ignore # ignore/add/remove/force/not_defined
-
-# Syntax to use for infinite loops.
-#
-# 0: Leave syntax alone (default)
-# 1: Rewrite as `for(;;)`
-# 2: Rewrite as `while(true)`
-# 3: Rewrite as `do`...`while(true);`
-# 4: Rewrite as `while(1)`
-# 5: Rewrite as `do`...`while(1);`
-#
-# Infinite loops that do not already match one of these syntaxes are ignored.
-# Other options that affect loop formatting will be applied after transforming
-# the syntax.
-mod_infinite_loop = 0 # unsigned number
-
-# Add or remove the 'int' keyword in 'int short'.
-mod_int_short = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'short int'.
-mod_short_int = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'int long'.
-mod_int_long = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'long int'.
-mod_long_int = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'int signed'.
-mod_int_signed = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'signed int'.
-mod_signed_int = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'int unsigned'.
-mod_int_unsigned = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'unsigned int'.
-mod_unsigned_int = ignore # ignore/add/remove/force/not_defined
-
-# If there is a situation where mod_int_* and mod_*_int would result in
-# multiple int keywords, whether to keep the rightmost int (the default) or the
-# leftmost int.
-mod_int_prefer_int_on_left = false # true/false
-
-# (OC) Whether to organize the properties. If true, properties will be
-# rearranged according to the mod_sort_oc_property_*_weight factors.
-mod_sort_oc_properties = false # true/false
-
-# (OC) Weight of a class property modifier.
-mod_sort_oc_property_class_weight = 0 # number
-
-# (OC) Weight of 'atomic' and 'nonatomic'.
-mod_sort_oc_property_thread_safe_weight = 0 # number
-
-# (OC) Weight of 'readwrite' when organizing properties.
-mod_sort_oc_property_readwrite_weight = 0 # number
-
-# (OC) Weight of a reference type specifier ('retain', 'copy', 'assign',
-# 'weak', 'strong') when organizing properties.
-mod_sort_oc_property_reference_weight = 0 # number
-
-# (OC) Weight of getter type ('getter=') when organizing properties.
-mod_sort_oc_property_getter_weight = 0 # number
-
-# (OC) Weight of setter type ('setter=') when organizing properties.
-mod_sort_oc_property_setter_weight = 0 # number
-
-# (OC) Weight of nullability type ('nullable', 'nonnull', 'null_unspecified',
-# 'null_resettable') when organizing properties.
-mod_sort_oc_property_nullability_weight = 0 # number
-
-#
-# Preprocessor options
-#
-
-# How to use tabs when indenting preprocessor code.
-#
-# -1: Use 'indent_with_tabs' setting (default)
-# 0: Spaces only
-# 1: Indent with tabs to brace level, align with spaces
-# 2: Indent and align with tabs, using spaces when not on a tabstop
-#
-# Default: -1
-pp_indent_with_tabs = -1 # number
-
-# Add or remove indentation of preprocessor directives inside #if blocks
-# at brace level 0 (file-level).
-pp_indent = ignore # ignore/add/remove/force/not_defined
-
-# Whether to indent #if/#else/#endif at the brace level. If false, these are
-# indented from column 1.
-pp_indent_at_level = false # true/false
-
-# Whether to indent #if/#else/#endif at the parenthesis level if the brace
-# level is 0. If false, these are indented from column 1.
-pp_indent_at_level0 = false # true/false
-
-# Specifies the number of columns to indent preprocessors per level
-# at brace level 0 (file-level). If pp_indent_at_level=false, also specifies
-# the number of columns to indent preprocessors per level
-# at brace level > 0 (function-level).
-#
-# Default: 1
-pp_indent_count = 1 # unsigned number
-
-# Add or remove space after # based on pp level of #if blocks.
-pp_space_after = ignore # ignore/add/remove/force/not_defined
-
-# Sets the number of spaces per level added with pp_space_after.
-pp_space_count = 0 # unsigned number
-
-# The indent for '#region' and '#endregion' in C# and '#pragma region' in
-# C/C++. Negative values decrease indent down to the first column.
-pp_indent_region = 0 # number
-
-# Whether to indent the code between #region and #endregion.
-pp_region_indent_code = false # true/false
-
-# If pp_indent_at_level=true, sets the indent for #if, #else and #endif when
-# not at file-level. Negative values decrease indent down to the first column.
-#
-# =0: Indent preprocessors using output_tab_size
-# >0: Column at which all preprocessors will be indented
-pp_indent_if = 0 # number
-
-# Whether to indent the code between #if, #else and #endif.
-pp_if_indent_code = false # true/false
-
-# Whether to indent the body of an #if that encompasses all the code in the file.
-pp_indent_in_guard = false # true/false
-
-# Whether to indent '#define' at the brace level. If false, these are
-# indented from column 1.
-pp_define_at_level = false # true/false
-
-# Whether to indent '#include' at the brace level.
-pp_include_at_level = false # true/false
-
-# Whether to ignore the '#define' body while formatting.
-pp_ignore_define_body = false # true/false
-
-# An offset value that controls the indentation of the body of a multiline #define.
-# 'body' refers to all the lines of a multiline #define except the first line.
-# Requires 'pp_ignore_define_body = false'.
-#
-# <0: Absolute column: the body indentation starts off at the specified column
-# (ex. -3 ==> the body is indented starting from column 3)
-# >=0: Relative to the column of the '#' of '#define'
-# (ex. 3 ==> the body is indented starting 3 columns at the right of '#')
-#
-# Default: 8
-pp_multiline_define_body_indent = 8 # number
-
-# Whether to indent case statements between #if, #else, and #endif.
-# Only applies to the indent of the preprocessor that the case statements
-# directly inside of.
-#
-# Default: true
-pp_indent_case = true # true/false
-
-# Whether to indent whole function definitions between #if, #else, and #endif.
-# Only applies to the indent of the preprocessor that the function definition
-# is directly inside of.
-#
-# Default: true
-pp_indent_func_def = true # true/false
-
-# Whether to indent extern C blocks between #if, #else, and #endif.
-# Only applies to the indent of the preprocessor that the extern block is
-# directly inside of.
-#
-# Default: true
-pp_indent_extern = true # true/false
-
-# How to indent braces directly inside #if, #else, and #endif.
-# Requires pp_if_indent_code=true and only applies to the indent of the
-# preprocessor that the braces are directly inside of.
-# 0: No extra indent
-# 1: Indent by one level
-# -1: Preserve original indentation
-#
-# Default: 1
-pp_indent_brace = 1 # number
-
-# Whether to print warning messages for unbalanced #if and #else blocks.
-# This will print a message in the following cases:
-# - if an #ifdef block ends on a different indent level than
-# where it started from. Example:
-#
-# #ifdef TEST
-# int i;
-# {
-# int j;
-# #endif
-#
-# - an #elif/#else block ends on a different indent level than
-# the corresponding #ifdef block. Example:
-#
-# #ifdef TEST
-# int i;
-# #else
-# }
-# int j;
-# #endif
-pp_warn_unbalanced_if = false # true/false
-
-#
-# Sort includes options
-#
-
-# The regex for include category with priority 0.
-include_category_0 = "" # string
-
-# The regex for include category with priority 1.
-include_category_1 = "" # string
-
-# The regex for include category with priority 2.
-include_category_2 = "" # string
-
-#
-# Use or Do not Use options
-#
-
-# true: indent_func_call_param will be used (default)
-# false: indent_func_call_param will NOT be used
-#
-# Default: true
-use_indent_func_call_param = true # true/false
-
-# The value of the indentation for a continuation line is calculated
-# differently if the statement is:
-# - a declaration: your case with QString fileName ...
-# - an assignment: your case with pSettings = new QSettings( ...
-#
-# At the second case the indentation value might be used twice:
-# - at the assignment
-# - at the function call (if present)
-#
-# To prevent the double use of the indentation value, use this option with the
-# value 'true'.
-#
-# true: indent_continue will be used only once
-# false: indent_continue will be used every time (default)
-#
-# Requires indent_ignore_first_continue=false.
-use_indent_continue_only_once = false # true/false
-
-# The indentation can be:
-# - after the assignment, at the '[' character
-# - at the beginning of the lambda body
-#
-# true: indentation will be at the beginning of the lambda body
-# false: indentation will be after the assignment (default)
-indent_cpp_lambda_only_once = false # true/false
-
-# Whether sp_after_angle takes precedence over sp_inside_fparen. This was the
-# historic behavior, but is probably not the desired behavior, so this is off
-# by default.
-use_sp_after_angle_always = false # true/false
-
-# Whether to apply special formatting for Qt SIGNAL/SLOT macros. Essentially,
-# this tries to format these so that they match Qt's normalized form (i.e. the
-# result of QMetaObject::normalizedSignature), which can slightly improve the
-# performance of the QObject::connect call, rather than how they would
-# otherwise be formatted.
-#
-# See options_for_QT.cpp for details.
-#
-# Default: true
-use_options_overriding_for_qt_macros = true # true/false
-
-# If true: the form feed character is removed from the list of whitespace
-# characters. See https://en.cppreference.com/w/cpp/string/byte/isspace.
-use_form_feed_no_more_as_whitespace_character = false # true/false
-
-#
-# Warn levels - 1: error, 2: warning (default), 3: note
-#
-
-# (C#) Warning is given if doing tab-to-\t replacement and we have found one
-# in a C# verbatim string literal.
-#
-# Default: 2
-warn_level_tabs_found_in_verbatim_string_literals = 2 # unsigned number
-
-# Limit the number of loops.
-# Used by uncrustify.cpp to exit from infinite loop.
-# 0: no limit.
-debug_max_number_of_loops = 0 # number
-
-# Set the number of the line to protocol;
-# Used in the function prot_the_line if the 2. parameter is zero.
-# 0: nothing protocol.
-debug_line_number_to_protocol = 0 # number
-
-# Set the number of second(s) before terminating formatting the current file,
-# 0: no timeout.
-# only for linux
-debug_timeout = 0 # number
-
-# Set the number of characters to be printed if the text is too long,
-# 0: do not truncate.
-debug_truncate = 0 # unsigned number
-
-# sort (or not) the tracking info.
-#
-# Default: true
-debug_sort_the_tracks = true # true/false
-
-# decode (or not) the flags as a new line.
-# only if the -p option is set.
-debug_decode_the_flags = false # true/false
-
-# insert the number of the line at the beginning of each line
-set_numbering_for_html_output = false # true/false
-
-# Meaning of the settings:
-# Ignore - do not do any changes
-# Add - makes sure there is 1 or more space/brace/newline/etc
-# Force - makes sure there is exactly 1 space/brace/newline/etc,
-# behaves like Add in some contexts
-# Remove - removes space/brace/newline/etc
-#
-#
-# - Token(s) can be treated as specific type(s) with the 'set' option:
-# `set tokenType tokenString [tokenString...]`
-#
-# Example:
-# `set BOOL __AND__ __OR__`
-#
-# tokenTypes are defined in src/token_enum.h, use them without the
-# 'CT_' prefix: 'CT_BOOL' => 'BOOL'
-#
-#
-# - Token(s) can be treated as type(s) with the 'type' option.
-# `type tokenString [tokenString...]`
-#
-# Example:
-# `type int c_uint_8 Rectangle`
-#
-# This can also be achieved with `set TYPE int c_uint_8 Rectangle`
-#
-#
-# To embed whitespace in tokenStrings use the '\' escape character, or quote
-# the tokenStrings. These quotes are supported: "'`
-#
-#
-# - Support for the auto detection of languages through the file ending can be
-# added using the 'file_ext' command.
-# `file_ext langType langString [langString..]`
-#
-# Example:
-# `file_ext CPP .ch .cxx .cpp.in`
-#
-# langTypes are defined in uncrusify_types.h in the lang_flag_e enum, use
-# them without the 'LANG_' prefix: 'LANG_CPP' => 'CPP'
-#
-#
-# - Custom macro-based indentation can be set up using 'macro-open',
-# 'macro-else' and 'macro-close'.
-# `(macro-open | macro-else | macro-close) tokenString`
-#
-# Example:
-# `macro-open BEGIN_TEMPLATE_MESSAGE_MAP`
-# `macro-open BEGIN_MESSAGE_MAP`
-# `macro-close END_MESSAGE_MAP`
-#
-#
-# option(s) with 'not default' value: 0
-#
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/default.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/default.cfg
deleted file mode 100644
index 7c523470..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/default.cfg
+++ /dev/null
@@ -1,3593 +0,0 @@
-# Uncrustify-0.76.0
-
-#
-# General options
-#
-
-# The type of line endings.
-#
-# Default: auto
-newlines = auto # lf/crlf/cr/auto
-
-# The original size of tabs in the input.
-#
-# Default: 8
-input_tab_size = 8 # unsigned number
-
-# The size of tabs in the output (only used if align_with_tabs=true).
-#
-# Default: 8
-output_tab_size = 8 # unsigned number
-
-# The ASCII value of the string escape char, usually 92 (\) or (Pawn) 94 (^).
-#
-# Default: 92
-string_escape_char = 92 # unsigned number
-
-# Alternate string escape char (usually only used for Pawn).
-# Only works right before the quote char.
-string_escape_char2 = 0 # unsigned number
-
-# Replace tab characters found in string literals with the escape sequence \t
-# instead.
-string_replace_tab_chars = false # true/false
-
-# Allow interpreting '>=' and '>>=' as part of a template in code like
-# 'void f(list<list<B>>=val);'. If true, 'assert(x<0 && y>=3)' will be broken.
-# Improvements to template detection may make this option obsolete.
-tok_split_gte = false # true/false
-
-# Disable formatting of NL_CONT ('\\n') ended lines (e.g. multi-line macros).
-disable_processing_nl_cont = false # true/false
-
-# Specify the marker used in comments to disable processing of part of the
-# file.
-#
-# Default: *INDENT-OFF*
-disable_processing_cmt = " *INDENT-OFF*" # string
-
-# Specify the marker used in comments to (re)enable processing in a file.
-#
-# Default: *INDENT-ON*
-enable_processing_cmt = " *INDENT-ON*" # string
-
-# Enable parsing of digraphs.
-enable_digraphs = false # true/false
-
-# Option to allow both disable_processing_cmt and enable_processing_cmt
-# strings, if specified, to be interpreted as ECMAScript regular expressions.
-# If true, a regex search will be performed within comments according to the
-# specified patterns in order to disable/enable processing.
-processing_cmt_as_regex = false # true/false
-
-# Add or remove the UTF-8 BOM (recommend 'remove').
-utf8_bom = ignore # ignore/add/remove/force/not_defined
-
-# If the file contains bytes with values between 128 and 255, but is not
-# UTF-8, then output as UTF-8.
-utf8_byte = false # true/false
-
-# Force the output encoding to UTF-8.
-utf8_force = false # true/false
-
-#
-# Spacing options
-#
-
-# Add or remove space around non-assignment symbolic operators ('+', '/', '%',
-# '<<', and so forth).
-sp_arith = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around arithmetic operators '+' and '-'.
-#
-# Overrides sp_arith.
-sp_arith_additive = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around assignment operator '=', '+=', etc.
-sp_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around '=' in C++11 lambda capture specifications.
-#
-# Overrides sp_assign.
-sp_cpp_lambda_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the capture specification of a C++11 lambda when
-# an argument list is present, as in '[] <here> (int x){ ... }'.
-sp_cpp_lambda_square_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the capture specification of a C++11 lambda with
-# no argument list is present, as in '[] <here> { ... }'.
-sp_cpp_lambda_square_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the opening parenthesis and before the closing
-# parenthesis of a argument list of a C++11 lambda, as in
-# '[]( <here> int x <here> ){ ... }'.
-sp_cpp_lambda_argument_list = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the argument list of a C++11 lambda, as in
-# '[](int x) <here> { ... }'.
-sp_cpp_lambda_paren_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a lambda body and its call operator of an
-# immediately invoked lambda, as in '[]( ... ){ ... } <here> ( ... )'.
-sp_cpp_lambda_fparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around assignment operator '=' in a prototype.
-#
-# If set to ignore, use sp_assign.
-sp_assign_default = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before assignment operator '=', '+=', etc.
-#
-# Overrides sp_assign.
-sp_before_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after assignment operator '=', '+=', etc.
-#
-# Overrides sp_assign.
-sp_after_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space in 'enum {'.
-#
-# Default: add
-sp_enum_brace = add # ignore/add/remove/force/not_defined
-
-# Add or remove space in 'NS_ENUM ('.
-sp_enum_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around assignment '=' in enum.
-sp_enum_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before assignment '=' in enum.
-#
-# Overrides sp_enum_assign.
-sp_enum_before_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after assignment '=' in enum.
-#
-# Overrides sp_enum_assign.
-sp_enum_after_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around assignment ':' in enum.
-sp_enum_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around preprocessor '##' concatenation operator.
-#
-# Default: add
-sp_pp_concat = add # ignore/add/remove/force/not_defined
-
-# Add or remove space after preprocessor '#' stringify operator.
-# Also affects the '#@' charizing operator.
-sp_pp_stringify = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before preprocessor '#' stringify operator
-# as in '#define x(y) L#y'.
-sp_before_pp_stringify = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around boolean operators '&&' and '||'.
-sp_bool = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around compare operator '<', '>', '==', etc.
-sp_compare = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '(' and ')'.
-sp_inside_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between nested parentheses, i.e. '((' vs. ') )'.
-sp_paren_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.
-sp_cparen_oparen = ignore # ignore/add/remove/force/not_defined
-
-# Whether to balance spaces inside nested parentheses.
-sp_balance_nested_parens = false # true/false
-
-# Add or remove space between ')' and '{'.
-sp_paren_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between nested braces, i.e. '{{' vs. '{ {'.
-sp_brace_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before pointer star '*'.
-sp_before_ptr_star = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before pointer star '*' that isn't followed by a
-# variable name. If set to ignore, sp_before_ptr_star is used instead.
-sp_before_unnamed_ptr_star = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between pointer stars '*', as in 'int ***a;'.
-sp_between_ptr_star = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after pointer star '*', if followed by a word.
-#
-# Overrides sp_type_func.
-sp_after_ptr_star = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after pointer caret '^', if followed by a word.
-sp_after_ptr_block_caret = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after pointer star '*', if followed by a qualifier.
-sp_after_ptr_star_qualifier = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after a pointer star '*', if followed by a function
-# prototype or function definition.
-#
-# Overrides sp_after_ptr_star and sp_type_func.
-sp_after_ptr_star_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after a pointer star '*' in the trailing return of a
-# function prototype or function definition.
-sp_after_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the pointer star '*' and the name of the variable
-# in a function pointer definition.
-sp_ptr_star_func_var = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the pointer star '*' and the name of the type
-# in a function pointer type definition.
-sp_ptr_star_func_type = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after a pointer star '*', if followed by an open
-# parenthesis, as in 'void* (*)()'.
-sp_ptr_star_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a pointer star '*', if followed by a function
-# prototype or function definition.
-sp_before_ptr_star_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a pointer star '*' in the trailing return of a
-# function prototype or function definition.
-sp_before_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a reference sign '&'.
-sp_before_byref = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a reference sign '&' that isn't followed by a
-# variable name. If set to ignore, sp_before_byref is used instead.
-sp_before_unnamed_byref = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after reference sign '&', if followed by a word.
-#
-# Overrides sp_type_func.
-sp_after_byref = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after a reference sign '&', if followed by a function
-# prototype or function definition.
-#
-# Overrides sp_after_byref and sp_type_func.
-sp_after_byref_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a reference sign '&', if followed by a function
-# prototype or function definition.
-sp_before_byref_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after a reference sign '&', if followed by an open
-# parenthesis, as in 'char& (*)()'.
-sp_byref_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between type and word. In cases where total removal of
-# whitespace would be a syntax error, a value of 'remove' is treated the same
-# as 'force'.
-#
-# This also affects some other instances of space following a type that are
-# not covered by other options; for example, between the return type and
-# parenthesis of a function type template argument, between the type and
-# parenthesis of an array parameter, or between 'decltype(...)' and the
-# following word.
-#
-# Default: force
-sp_after_type = force # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'decltype(...)' and word,
-# brace or function call.
-sp_after_decltype = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space before the parenthesis in the D constructs
-# 'template Foo(' and 'class Foo('.
-sp_before_template_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'template' and '<'.
-# If set to ignore, sp_before_angle is used.
-sp_template_angle = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before '<'.
-sp_before_angle = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '<' and '>'.
-sp_inside_angle = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '<>'.
-sp_inside_angle_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '>' and ':'.
-sp_angle_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after '>'.
-sp_after_angle = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '>' and '(' as found in 'new List<byte>(foo);'.
-sp_angle_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '>' and '()' as found in 'new List<byte>();'.
-sp_angle_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '>' and a word as in 'List<byte> m;' or
-# 'template <typename T> static ...'.
-sp_angle_word = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '>' and '>' in '>>' (template stuff).
-#
-# Default: add
-sp_angle_shift = add # ignore/add/remove/force/not_defined
-
-# (C++11) Permit removal of the space between '>>' in 'foo<bar<int> >'. Note
-# that sp_angle_shift cannot remove the space without this option.
-sp_permit_cpp11_shift = false # true/false
-
-# Add or remove space before '(' of control statements ('if', 'for', 'switch',
-# 'while', etc.).
-sp_before_sparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '(' and ')' of control statements other than
-# 'for'.
-sp_inside_sparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after '(' of control statements other than 'for'.
-#
-# Overrides sp_inside_sparen.
-sp_inside_sparen_open = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before ')' of control statements other than 'for'.
-#
-# Overrides sp_inside_sparen.
-sp_inside_sparen_close = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '(' and ')' of 'for' statements.
-sp_inside_for = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after '(' of 'for' statements.
-#
-# Overrides sp_inside_for.
-sp_inside_for_open = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before ')' of 'for' statements.
-#
-# Overrides sp_inside_for.
-sp_inside_for_close = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '((' or '))' of control statements.
-sp_sparen_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after ')' of control statements.
-sp_after_sparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and '{' of control statements.
-sp_sparen_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'do' and '{'.
-sp_do_brace_open = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '}' and 'while'.
-sp_brace_close_while = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'while' and '('. Overrides sp_before_sparen.
-sp_while_paren_open = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space between 'invariant' and '('.
-sp_invariant_paren = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space after the ')' in 'invariant (C) c'.
-sp_after_invariant_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before empty statement ';' on 'if', 'for' and 'while'.
-sp_special_semi = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before ';'.
-#
-# Default: remove
-sp_before_semi = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space before ';' in non-empty 'for' statements.
-sp_before_semi_for = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a semicolon of an empty left part of a for
-# statement, as in 'for ( <here> ; ; )'.
-sp_before_semi_for_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the semicolons of an empty middle part of a for
-# statement, as in 'for ( ; <here> ; )'.
-sp_between_semi_for_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after ';', except when followed by a comment.
-#
-# Default: add
-sp_after_semi = add # ignore/add/remove/force/not_defined
-
-# Add or remove space after ';' in non-empty 'for' statements.
-#
-# Default: force
-sp_after_semi_for = force # ignore/add/remove/force/not_defined
-
-# Add or remove space after the final semicolon of an empty part of a for
-# statement, as in 'for ( ; ; <here> )'.
-sp_after_semi_for_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before '[' (except '[]').
-sp_before_square = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before '[' for a variable definition.
-#
-# Default: remove
-sp_before_vardef_square = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space before '[' for asm block.
-sp_before_square_asm_block = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before '[]'.
-sp_before_squares = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before C++17 structured bindings.
-sp_cpp_before_struct_binding = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside a non-empty '[' and ']'.
-sp_inside_square = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '[]'.
-sp_inside_square_empty = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and
-# ']'. If set to ignore, sp_inside_square is used.
-sp_inside_square_oc_array = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.
-sp_after_comma = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.
-#
-# Default: remove
-sp_before_comma = remove # ignore/add/remove/force/not_defined
-
-# (C#, Vala) Add or remove space between ',' and ']' in multidimensional array type
-# like 'int[,,]'.
-sp_after_mdatype_commas = ignore # ignore/add/remove/force/not_defined
-
-# (C#, Vala) Add or remove space between '[' and ',' in multidimensional array type
-# like 'int[,,]'.
-sp_before_mdatype_commas = ignore # ignore/add/remove/force/not_defined
-
-# (C#, Vala) Add or remove space between ',' in multidimensional array type
-# like 'int[,,]'.
-sp_between_mdatype_commas = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between an open parenthesis and comma,
-# i.e. '(,' vs. '( ,'.
-#
-# Default: force
-sp_paren_comma = force # ignore/add/remove/force/not_defined
-
-# Add or remove space between a type and ':'.
-sp_type_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the variadic '...' when preceded by a
-# non-punctuator.
-# The value REMOVE will be overridden with FORCE
-sp_after_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before the variadic '...' when preceded by a
-# non-punctuator.
-# The value REMOVE will be overridden with FORCE
-sp_before_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a type and '...'.
-sp_type_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a '*' and '...'.
-sp_ptr_type_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and '...'.
-sp_paren_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '&&' and '...'.
-sp_byref_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and a qualifier such as 'const'.
-sp_paren_qualifier = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and 'noexcept'.
-sp_paren_noexcept = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after class ':'.
-sp_after_class_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before class ':'.
-sp_before_class_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after class constructor ':'.
-#
-# Default: add
-sp_after_constr_colon = add # ignore/add/remove/force/not_defined
-
-# Add or remove space before class constructor ':'.
-#
-# Default: add
-sp_before_constr_colon = add # ignore/add/remove/force/not_defined
-
-# Add or remove space before case ':'.
-#
-# Default: remove
-sp_before_case_colon = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'operator' and operator sign.
-sp_after_operator = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the operator symbol and the open parenthesis, as
-# in 'operator ++('.
-sp_after_operator_sym = ignore # ignore/add/remove/force/not_defined
-
-# Overrides sp_after_operator_sym when the operator has no arguments, as in
-# 'operator *()'.
-sp_after_operator_sym_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or
-# '(int)a' vs. '(int) a'.
-sp_after_cast = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove spaces inside cast parentheses.
-sp_inside_paren_cast = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the type and open parenthesis in a C++ cast,
-# i.e. 'int(exp)' vs. 'int (exp)'.
-sp_cpp_cast_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'sizeof' and '('.
-sp_sizeof_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'sizeof' and '...'.
-sp_sizeof_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'sizeof...' and '('.
-sp_sizeof_ellipsis_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '...' and a parameter pack.
-sp_ellipsis_parameter_pack = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a parameter pack and '...'.
-sp_parameter_pack_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'decltype' and '('.
-sp_decltype_paren = ignore # ignore/add/remove/force/not_defined
-
-# (Pawn) Add or remove space after the tag keyword.
-sp_after_tag = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside enum '{' and '}'.
-sp_inside_braces_enum = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside struct/union '{' and '}'.
-sp_inside_braces_struct = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'
-sp_inside_braces_oc_dict = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after open brace in an unnamed temporary
-# direct-list-initialization
-# if statement is a brace_init_lst
-# works only if sp_brace_brace is set to ignore.
-sp_after_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before close brace in an unnamed temporary
-# direct-list-initialization
-# if statement is a brace_init_lst
-# works only if sp_brace_brace is set to ignore.
-sp_before_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside an unnamed temporary direct-list-initialization
-# if statement is a brace_init_lst
-# works only if sp_brace_brace is set to ignore
-# works only if sp_before_type_brace_init_lst_close is set to ignore.
-sp_inside_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '{' and '}'.
-sp_inside_braces = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '{}'.
-sp_inside_braces_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around trailing return operator '->'.
-sp_trailing_return = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between return type and function name. A minimum of 1
-# is forced except for pointer return types.
-sp_type_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between type and open brace of an unnamed temporary
-# direct-list-initialization.
-sp_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '(' on function declaration.
-sp_func_proto_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '()' on function declaration
-# without parameters.
-sp_func_proto_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '(' with a typedef specifier.
-sp_func_type_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between alias name and '(' of a non-pointer function type typedef.
-sp_func_def_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '()' on function definition
-# without parameters.
-sp_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside empty function '()'.
-# Overrides sp_after_angle unless use_sp_after_angle_always is set to true.
-sp_inside_fparens = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside function '(' and ')'.
-sp_inside_fparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside the first parentheses in a function type, as in
-# 'void (*x)(...)'.
-sp_inside_tparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the ')' and '(' in a function type, as in
-# 'void (*x)(...)'.
-sp_after_tparen_close = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ']' and '(' when part of a function call.
-sp_square_fparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and '{' of function.
-sp_fparen_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and '{' of a function call in object
-# initialization.
-#
-# Overrides sp_fparen_brace.
-sp_fparen_brace_initializer = ignore # ignore/add/remove/force/not_defined
-
-# (Java) Add or remove space between ')' and '{{' of double brace initializer.
-sp_fparen_dbrace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '(' on function calls.
-sp_func_call_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '()' on function calls without
-# parameters. If set to ignore (the default), sp_func_call_paren is used.
-sp_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the user function name and '(' on function
-# calls. You need to set a keyword to be a user function in the config file,
-# like:
-# set func_call_user tr _ i18n
-sp_func_call_user_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside user function '(' and ')'.
-sp_func_call_user_inside_fparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between nested parentheses with user functions,
-# i.e. '((' vs. '( ('.
-sp_func_call_user_paren_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a constructor/destructor and the open
-# parenthesis.
-sp_func_class_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a constructor without parameters or destructor
-# and '()'.
-sp_func_class_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after 'return'.
-#
-# Default: force
-sp_return = force # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'return' and '('.
-sp_return_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'return' and '{'.
-sp_return_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '__attribute__' and '('.
-sp_attribute_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'defined' and '(' in '#if defined (FOO)'.
-sp_defined_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'throw' and '(' in 'throw (something)'.
-sp_throw_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'throw' and anything other than '(' as in
-# '@throw [...];'.
-sp_after_throw = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'catch' and '(' in 'catch (something) { }'.
-# If set to ignore, sp_before_sparen is used.
-sp_catch_paren = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between '@catch' and '('
-# in '@catch (something) { }'. If set to ignore, sp_catch_paren is used.
-sp_oc_catch_paren = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before Objective-C protocol list
-# as in '@protocol Protocol<here><Protocol_A>' or '@interface MyClass : NSObject<here><MyProtocol>'.
-sp_before_oc_proto_list = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between class name and '('
-# in '@interface className(categoryName)<ProtocolName>:BaseClass'
-sp_oc_classname_paren = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space between 'version' and '('
-# in 'version (something) { }'. If set to ignore, sp_before_sparen is used.
-sp_version_paren = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space between 'scope' and '('
-# in 'scope (something) { }'. If set to ignore, sp_before_sparen is used.
-sp_scope_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'super' and '(' in 'super (something)'.
-#
-# Default: remove
-sp_super_paren = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'this' and '(' in 'this (something)'.
-#
-# Default: remove
-sp_this_paren = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space between a macro name and its definition.
-sp_macro = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a macro function ')' and its definition.
-sp_macro_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'else' and '{' if on the same line.
-sp_else_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '}' and 'else' if on the same line.
-sp_brace_else = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '}' and the name of a typedef on the same line.
-sp_brace_typedef = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before the '{' of a 'catch' statement, if the '{' and
-# 'catch' are on the same line, as in 'catch (decl) <here> {'.
-sp_catch_brace = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before the '{' of a '@catch' statement, if the '{'
-# and '@catch' are on the same line, as in '@catch (decl) <here> {'.
-# If set to ignore, sp_catch_brace is used.
-sp_oc_catch_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '}' and 'catch' if on the same line.
-sp_brace_catch = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between '}' and '@catch' if on the same line.
-# If set to ignore, sp_brace_catch is used.
-sp_oc_brace_catch = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'finally' and '{' if on the same line.
-sp_finally_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '}' and 'finally' if on the same line.
-sp_brace_finally = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'try' and '{' if on the same line.
-sp_try_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between get/set and '{' if on the same line.
-sp_getset_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a variable and '{' for C++ uniform
-# initialization.
-sp_word_brace_init_lst = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a variable and '{' for a namespace.
-#
-# Default: add
-sp_word_brace_ns = add # ignore/add/remove/force/not_defined
-
-# Add or remove space before the '::' operator.
-sp_before_dc = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '::' operator.
-sp_after_dc = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove around the D named array initializer ':' operator.
-sp_d_array_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '!' (not) unary operator.
-#
-# Default: remove
-sp_not = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space between two '!' (not) unary operators.
-# If set to ignore, sp_not will be used.
-sp_not_not = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '~' (invert) unary operator.
-#
-# Default: remove
-sp_inv = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '&' (address-of) unary operator. This does not
-# affect the spacing after a '&' that is part of a type.
-#
-# Default: remove
-sp_addr = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space around the '.' or '->' operators.
-#
-# Default: remove
-sp_member = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '*' (dereference) unary operator. This does
-# not affect the spacing after a '*' that is part of a type.
-#
-# Default: remove
-sp_deref = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.
-#
-# Default: remove
-sp_sign = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space between '++' and '--' the word to which it is being
-# applied, as in '(--x)' or 'y++;'.
-#
-# Default: remove
-sp_incdec = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space before a backslash-newline at the end of a line.
-#
-# Default: add
-sp_before_nl_cont = add # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;'
-# or '+(int) bar;'.
-sp_after_oc_scope = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the colon in message specs,
-# i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.
-sp_after_oc_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before the colon in message specs,
-# i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.
-sp_before_oc_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the colon in immutable dictionary expression
-# 'NSDictionary *test = @{@"foo" :@"bar"};'.
-sp_after_oc_dict_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before the colon in immutable dictionary expression
-# 'NSDictionary *test = @{@"foo" :@"bar"};'.
-sp_before_oc_dict_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the colon in message specs,
-# i.e. '[object setValue:1];' vs. '[object setValue: 1];'.
-sp_after_send_oc_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before the colon in message specs,
-# i.e. '[object setValue:1];' vs. '[object setValue :1];'.
-sp_before_send_oc_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the (type) in message specs,
-# i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'.
-sp_after_oc_type = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the first (type) in message specs,
-# i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'.
-sp_after_oc_return_type = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between '@selector' and '(',
-# i.e. '@selector(msgName)' vs. '@selector (msgName)'.
-# Also applies to '@protocol()' constructs.
-sp_after_oc_at_sel = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between '@selector(x)' and the following word,
-# i.e. '@selector(foo) a:' vs. '@selector(foo)a:'.
-sp_after_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space inside '@selector' parentheses,
-# i.e. '@selector(foo)' vs. '@selector( foo )'.
-# Also applies to '@protocol()' constructs.
-sp_inside_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before a block pointer caret,
-# i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'.
-sp_before_oc_block_caret = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after a block pointer caret,
-# i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'.
-sp_after_oc_block_caret = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between the receiver and selector in a message,
-# as in '[receiver selector ...]'.
-sp_after_oc_msg_receiver = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after '@property'.
-sp_after_oc_property = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between '@synchronized' and the open parenthesis,
-# i.e. '@synchronized(foo)' vs. '@synchronized (foo)'.
-sp_after_oc_synchronized = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around the ':' in 'b ? t : f'.
-sp_cond_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before the ':' in 'b ? t : f'.
-#
-# Overrides sp_cond_colon.
-sp_cond_colon_before = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the ':' in 'b ? t : f'.
-#
-# Overrides sp_cond_colon.
-sp_cond_colon_after = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around the '?' in 'b ? t : f'.
-sp_cond_question = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before the '?' in 'b ? t : f'.
-#
-# Overrides sp_cond_question.
-sp_cond_question_before = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '?' in 'b ? t : f'.
-#
-# Overrides sp_cond_question.
-sp_cond_question_after = ignore # ignore/add/remove/force/not_defined
-
-# In the abbreviated ternary form '(a ?: b)', add or remove space between '?'
-# and ':'.
-#
-# Overrides all other sp_cond_* options.
-sp_cond_ternary_short = ignore # ignore/add/remove/force/not_defined
-
-# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make
-# sense here.
-sp_case_label = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space around the D '..' operator.
-sp_range = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after ':' in a Java/C++11 range-based 'for',
-# as in 'for (Type var : <here> expr)'.
-sp_after_for_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before ':' in a Java/C++11 range-based 'for',
-# as in 'for (Type var <here> : expr)'.
-sp_before_for_colon = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space between 'extern' and '(' as in 'extern <here> (C)'.
-sp_extern_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the opening of a C++ comment, as in '// <here> A'.
-sp_cmt_cpp_start = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space in a C++ region marker comment, as in '// <here> BEGIN'.
-# A region marker is defined as a comment which is not preceded by other text
-# (i.e. the comment is the first non-whitespace on the line), and which starts
-# with either 'BEGIN' or 'END'.
-#
-# Overrides sp_cmt_cpp_start.
-sp_cmt_cpp_region = ignore # ignore/add/remove/force/not_defined
-
-# If true, space added with sp_cmt_cpp_start will be added after Doxygen
-# sequences like '///', '///<', '//!' and '//!<'.
-sp_cmt_cpp_doxygen = false # true/false
-
-# If true, space added with sp_cmt_cpp_start will be added after Qt translator
-# or meta-data comments like '//:', '//=', and '//~'.
-sp_cmt_cpp_qttr = false # true/false
-
-# Add or remove space between #else or #endif and a trailing comment.
-sp_endif_cmt = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after 'new', 'delete' and 'delete[]'.
-sp_after_new = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'new' and '(' in 'new()'.
-sp_between_new_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and type in 'new(foo) BAR'.
-sp_after_newop_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside parentheses of the new operator
-# as in 'new(foo) BAR'.
-sp_inside_newop_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the open parenthesis of the new operator,
-# as in 'new(foo) BAR'.
-#
-# Overrides sp_inside_newop_paren.
-sp_inside_newop_paren_open = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before the close parenthesis of the new operator,
-# as in 'new(foo) BAR'.
-#
-# Overrides sp_inside_newop_paren.
-sp_inside_newop_paren_close = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a trailing comment.
-sp_before_tr_cmt = ignore # ignore/add/remove/force/not_defined
-
-# Number of spaces before a trailing comment.
-sp_num_before_tr_cmt = 0 # unsigned number
-
-# Add or remove space before an embedded comment.
-#
-# Default: force
-sp_before_emb_cmt = force # ignore/add/remove/force/not_defined
-
-# Number of spaces before an embedded comment.
-#
-# Default: 1
-sp_num_before_emb_cmt = 1 # unsigned number
-
-# Add or remove space after an embedded comment.
-#
-# Default: force
-sp_after_emb_cmt = force # ignore/add/remove/force/not_defined
-
-# Number of spaces after an embedded comment.
-#
-# Default: 1
-sp_num_after_emb_cmt = 1 # unsigned number
-
-# (Java) Add or remove space between an annotation and the open parenthesis.
-sp_annotation_paren = ignore # ignore/add/remove/force/not_defined
-
-# If true, vbrace tokens are dropped to the previous token and skipped.
-sp_skip_vbrace_tokens = false # true/false
-
-# Add or remove space after 'noexcept'.
-sp_after_noexcept = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after '_'.
-sp_vala_after_translation = ignore # ignore/add/remove/force/not_defined
-
-# If true, a <TAB> is inserted after #define.
-force_tab_after_define = false # true/false
-
-#
-# Indenting options
-#
-
-# The number of columns to indent per level. Usually 2, 3, 4, or 8.
-#
-# Default: 8
-indent_columns = 8 # unsigned number
-
-# Whether to ignore indent for the first continuation line. Subsequent
-# continuation lines will still be indented to match the first.
-indent_ignore_first_continue = false # true/false
-
-# The continuation indent. If non-zero, this overrides the indent of '(', '['
-# and '=' continuation indents. Negative values are OK; negative value is
-# absolute and not increased for each '(' or '[' level.
-#
-# For FreeBSD, this is set to 4.
-# Requires indent_ignore_first_continue=false.
-indent_continue = 0 # number
-
-# The continuation indent, only for class header line(s). If non-zero, this
-# overrides the indent of 'class' continuation indents.
-# Requires indent_ignore_first_continue=false.
-indent_continue_class_head = 0 # unsigned number
-
-# Whether to indent empty lines (i.e. lines which contain only spaces before
-# the newline character).
-indent_single_newlines = false # true/false
-
-# The continuation indent for func_*_param if they are true. If non-zero, this
-# overrides the indent.
-indent_param = 0 # unsigned number
-
-# How to use tabs when indenting code.
-#
-# 0: Spaces only
-# 1: Indent with tabs to brace level, align with spaces (default)
-# 2: Indent and align with tabs, using spaces when not on a tabstop
-#
-# Default: 1
-indent_with_tabs = 1 # unsigned number
-
-# Whether to indent comments that are not at a brace level with tabs on a
-# tabstop. Requires indent_with_tabs=2. If false, will use spaces.
-indent_cmt_with_tabs = false # true/false
-
-# Whether to indent strings broken by '\' so that they line up.
-indent_align_string = false # true/false
-
-# The number of spaces to indent multi-line XML strings.
-# Requires indent_align_string=true.
-indent_xml_string = 0 # unsigned number
-
-# Spaces to indent '{' from level.
-indent_brace = 0 # unsigned number
-
-# Whether braces are indented to the body level.
-indent_braces = false # true/false
-
-# Whether to disable indenting function braces if indent_braces=true.
-indent_braces_no_func = false # true/false
-
-# Whether to disable indenting class braces if indent_braces=true.
-indent_braces_no_class = false # true/false
-
-# Whether to disable indenting struct braces if indent_braces=true.
-indent_braces_no_struct = false # true/false
-
-# Whether to indent based on the size of the brace parent,
-# i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
-indent_brace_parent = false # true/false
-
-# Whether to indent based on the open parenthesis instead of the open brace
-# in '({\n'.
-indent_paren_open_brace = false # true/false
-
-# (C#) Whether to indent the brace of a C# delegate by another level.
-indent_cs_delegate_brace = false # true/false
-
-# (C#) Whether to indent a C# delegate (to handle delegates with no brace) by
-# another level.
-indent_cs_delegate_body = false # true/false
-
-# Whether to indent the body of a 'namespace'.
-indent_namespace = false # true/false
-
-# Whether to indent only the first namespace, and not any nested namespaces.
-# Requires indent_namespace=true.
-indent_namespace_single_indent = false # true/false
-
-# The number of spaces to indent a namespace block.
-# If set to zero, use the value indent_columns
-indent_namespace_level = 0 # unsigned number
-
-# If the body of the namespace is longer than this number, it won't be
-# indented. Requires indent_namespace=true. 0 means no limit.
-indent_namespace_limit = 0 # unsigned number
-
-# Whether to indent only in inner namespaces (nested in other namespaces).
-# Requires indent_namespace=true.
-indent_namespace_inner_only = false # true/false
-
-# Whether the 'extern "C"' body is indented.
-indent_extern = false # true/false
-
-# Whether the 'class' body is indented.
-indent_class = false # true/false
-
-# Whether to ignore indent for the leading base class colon.
-indent_ignore_before_class_colon = false # true/false
-
-# Additional indent before the leading base class colon.
-# Negative values decrease indent down to the first column.
-# Requires indent_ignore_before_class_colon=false and a newline break before
-# the colon (see pos_class_colon and nl_class_colon)
-indent_before_class_colon = 0 # number
-
-# Whether to indent the stuff after a leading base class colon.
-indent_class_colon = false # true/false
-
-# Whether to indent based on a class colon instead of the stuff after the
-# colon. Requires indent_class_colon=true.
-indent_class_on_colon = false # true/false
-
-# Whether to ignore indent for a leading class initializer colon.
-indent_ignore_before_constr_colon = false # true/false
-
-# Whether to indent the stuff after a leading class initializer colon.
-indent_constr_colon = false # true/false
-
-# Virtual indent from the ':' for leading member initializers.
-#
-# Default: 2
-indent_ctor_init_leading = 2 # unsigned number
-
-# Virtual indent from the ':' for following member initializers.
-#
-# Default: 2
-indent_ctor_init_following = 2 # unsigned number
-
-# Additional indent for constructor initializer list.
-# Negative values decrease indent down to the first column.
-indent_ctor_init = 0 # number
-
-# Whether to indent 'if' following 'else' as a new block under the 'else'.
-# If false, 'else\nif' is treated as 'else if' for indenting purposes.
-indent_else_if = false # true/false
-
-# Amount to indent variable declarations after a open brace.
-#
-# <0: Relative
-# >=0: Absolute
-indent_var_def_blk = 0 # number
-
-# Whether to indent continued variable declarations instead of aligning.
-indent_var_def_cont = false # true/false
-
-# How to indent continued shift expressions ('<<' and '>>').
-# Set align_left_shift=false when using this.
-# 0: Align shift operators instead of indenting them (default)
-# 1: Indent by one level
-# -1: Preserve original indentation
-indent_shift = 0 # number
-
-# Whether to force indentation of function definitions to start in column 1.
-indent_func_def_force_col1 = false # true/false
-
-# Whether to indent continued function call parameters one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_func_call_param = false # true/false
-
-# Whether to indent continued function definition parameters one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_func_def_param = false # true/false
-
-# for function definitions, only if indent_func_def_param is false
-# Allows to align params when appropriate and indent them when not
-# behave as if it was true if paren position is more than this value
-# if paren position is more than the option value
-indent_func_def_param_paren_pos_threshold = 0 # unsigned number
-
-# Whether to indent continued function call prototype one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_func_proto_param = false # true/false
-
-# Whether to indent continued function call declaration one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_func_class_param = false # true/false
-
-# Whether to indent continued class variable constructors one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_func_ctor_var_param = false # true/false
-
-# Whether to indent continued template parameter list one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_template_param = false # true/false
-
-# Double the indent for indent_func_xxx_param options.
-# Use both values of the options indent_columns and indent_param.
-indent_func_param_double = false # true/false
-
-# Indentation column for standalone 'const' qualifier on a function
-# prototype.
-indent_func_const = 0 # unsigned number
-
-# Indentation column for standalone 'throw' qualifier on a function
-# prototype.
-indent_func_throw = 0 # unsigned number
-
-# How to indent within a macro followed by a brace on the same line
-# This allows reducing the indent in macros that have (for example)
-# `do { ... } while (0)` blocks bracketing them.
-#
-# true: add an indent for the brace on the same line as the macro
-# false: do not add an indent for the brace on the same line as the macro
-#
-# Default: true
-indent_macro_brace = true # true/false
-
-# The number of spaces to indent a continued '->' or '.'.
-# Usually set to 0, 1, or indent_columns.
-indent_member = 0 # unsigned number
-
-# Whether lines broken at '.' or '->' should be indented by a single indent.
-# The indent_member option will not be effective if this is set to true.
-indent_member_single = false # true/false
-
-# Spaces to indent single line ('//') comments on lines before code.
-indent_single_line_comments_before = 0 # unsigned number
-
-# Spaces to indent single line ('//') comments on lines after code.
-indent_single_line_comments_after = 0 # unsigned number
-
-# When opening a paren for a control statement (if, for, while, etc), increase
-# the indent level by this value. Negative values decrease the indent level.
-indent_sparen_extra = 0 # number
-
-# Whether to indent trailing single line ('//') comments relative to the code
-# instead of trying to keep the same absolute column.
-indent_relative_single_line_comments = false # true/false
-
-# Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.
-# It might be wise to choose the same value for the option indent_case_brace.
-indent_switch_case = 0 # unsigned number
-
-# Spaces to indent the body of a 'switch' before any 'case'.
-# Usually the same as indent_columns or indent_switch_case.
-indent_switch_body = 0 # unsigned number
-
-# Whether to ignore indent for '{' following 'case'.
-indent_ignore_case_brace = false # true/false
-
-# Spaces to indent '{' from 'case'. By default, the brace will appear under
-# the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.
-# It might be wise to choose the same value for the option indent_switch_case.
-indent_case_brace = 0 # number
-
-# indent 'break' with 'case' from 'switch'.
-indent_switch_break_with_case = false # true/false
-
-# Whether to indent preprocessor statements inside of switch statements.
-#
-# Default: true
-indent_switch_pp = true # true/false
-
-# Spaces to shift the 'case' line, without affecting any other lines.
-# Usually 0.
-indent_case_shift = 0 # unsigned number
-
-# Whether to align comments before 'case' with the 'case'.
-#
-# Default: true
-indent_case_comment = true # true/false
-
-# Whether to indent comments not found in first column.
-#
-# Default: true
-indent_comment = true # true/false
-
-# Whether to indent comments found in first column.
-indent_col1_comment = false # true/false
-
-# Whether to indent multi string literal in first column.
-indent_col1_multi_string_literal = false # true/false
-
-# Align comments on adjacent lines that are this many columns apart or less.
-#
-# Default: 3
-indent_comment_align_thresh = 3 # unsigned number
-
-# Whether to ignore indent for goto labels.
-indent_ignore_label = false # true/false
-
-# How to indent goto labels. Requires indent_ignore_label=false.
-#
-# >0: Absolute column where 1 is the leftmost column
-# <=0: Subtract from brace indent
-#
-# Default: 1
-indent_label = 1 # number
-
-# How to indent access specifiers that are followed by a
-# colon.
-#
-# >0: Absolute column where 1 is the leftmost column
-# <=0: Subtract from brace indent
-#
-# Default: 1
-indent_access_spec = 1 # number
-
-# Whether to indent the code after an access specifier by one level.
-# If true, this option forces 'indent_access_spec=0'.
-indent_access_spec_body = false # true/false
-
-# If an open parenthesis is followed by a newline, whether to indent the next
-# line so that it lines up after the open parenthesis (not recommended).
-indent_paren_nl = false # true/false
-
-# How to indent a close parenthesis after a newline.
-#
-# 0: Indent to body level (default)
-# 1: Align under the open parenthesis
-# 2: Indent to the brace level
-# -1: Preserve original indentation
-indent_paren_close = 0 # number
-
-# Whether to indent the open parenthesis of a function definition,
-# if the parenthesis is on its own line.
-indent_paren_after_func_def = false # true/false
-
-# Whether to indent the open parenthesis of a function declaration,
-# if the parenthesis is on its own line.
-indent_paren_after_func_decl = false # true/false
-
-# Whether to indent the open parenthesis of a function call,
-# if the parenthesis is on its own line.
-indent_paren_after_func_call = false # true/false
-
-# How to indent a comma when inside braces.
-# 0: Indent by one level (default)
-# 1: Align under the open brace
-# -1: Preserve original indentation
-indent_comma_brace = 0 # number
-
-# How to indent a comma when inside parentheses.
-# 0: Indent by one level (default)
-# 1: Align under the open parenthesis
-# -1: Preserve original indentation
-indent_comma_paren = 0 # number
-
-# How to indent a Boolean operator when inside parentheses.
-# 0: Indent by one level (default)
-# 1: Align under the open parenthesis
-# -1: Preserve original indentation
-indent_bool_paren = 0 # number
-
-# Whether to ignore the indentation of a Boolean operator when outside
-# parentheses.
-indent_ignore_bool = false # true/false
-
-# Whether to ignore the indentation of an arithmetic operator.
-indent_ignore_arith = false # true/false
-
-# Whether to indent a semicolon when inside a for parenthesis.
-# If true, aligns under the open for parenthesis.
-indent_semicolon_for_paren = false # true/false
-
-# Whether to ignore the indentation of a semicolon outside of a 'for'
-# statement.
-indent_ignore_semicolon = false # true/false
-
-# Whether to align the first expression to following ones
-# if indent_bool_paren=1.
-indent_first_bool_expr = false # true/false
-
-# Whether to align the first expression to following ones
-# if indent_semicolon_for_paren=true.
-indent_first_for_expr = false # true/false
-
-# If an open square is followed by a newline, whether to indent the next line
-# so that it lines up after the open square (not recommended).
-indent_square_nl = false # true/false
-
-# (ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies.
-indent_preserve_sql = false # true/false
-
-# Whether to ignore the indentation of an assignment operator.
-indent_ignore_assign = false # true/false
-
-# Whether to align continued statements at the '='. If false or if the '=' is
-# followed by a newline, the next line is indent one tab.
-#
-# Default: true
-indent_align_assign = true # true/false
-
-# If true, the indentation of the chunks after a '=' sequence will be set at
-# LHS token indentation column before '='.
-indent_off_after_assign = false # true/false
-
-# Whether to align continued statements at the '('. If false or the '(' is
-# followed by a newline, the next line indent is one tab.
-#
-# Default: true
-indent_align_paren = true # true/false
-
-# (OC) Whether to indent Objective-C code inside message selectors.
-indent_oc_inside_msg_sel = false # true/false
-
-# (OC) Whether to indent Objective-C blocks at brace level instead of usual
-# rules.
-indent_oc_block = false # true/false
-
-# (OC) Indent for Objective-C blocks in a message relative to the parameter
-# name.
-#
-# =0: Use indent_oc_block rules
-# >0: Use specified number of spaces to indent
-indent_oc_block_msg = 0 # unsigned number
-
-# (OC) Minimum indent for subsequent parameters
-indent_oc_msg_colon = 0 # unsigned number
-
-# (OC) Whether to prioritize aligning with initial colon (and stripping spaces
-# from lines, if necessary).
-#
-# Default: true
-indent_oc_msg_prioritize_first_colon = true # true/false
-
-# (OC) Whether to indent blocks the way that Xcode does by default
-# (from the keyword if the parameter is on its own line; otherwise, from the
-# previous indentation level). Requires indent_oc_block_msg=true.
-indent_oc_block_msg_xcode_style = false # true/false
-
-# (OC) Whether to indent blocks from where the brace is, relative to a
-# message keyword. Requires indent_oc_block_msg=true.
-indent_oc_block_msg_from_keyword = false # true/false
-
-# (OC) Whether to indent blocks from where the brace is, relative to a message
-# colon. Requires indent_oc_block_msg=true.
-indent_oc_block_msg_from_colon = false # true/false
-
-# (OC) Whether to indent blocks from where the block caret is.
-# Requires indent_oc_block_msg=true.
-indent_oc_block_msg_from_caret = false # true/false
-
-# (OC) Whether to indent blocks from where the brace caret is.
-# Requires indent_oc_block_msg=true.
-indent_oc_block_msg_from_brace = false # true/false
-
-# When indenting after virtual brace open and newline add further spaces to
-# reach this minimum indent.
-indent_min_vbrace_open = 0 # unsigned number
-
-# Whether to add further spaces after regular indent to reach next tabstop
-# when indenting after virtual brace open and newline.
-indent_vbrace_open_on_tabstop = false # true/false
-
-# How to indent after a brace followed by another token (not a newline).
-# true: indent all contained lines to match the token
-# false: indent all contained lines to match the brace
-#
-# Default: true
-indent_token_after_brace = true # true/false
-
-# Whether to indent the body of a C++11 lambda.
-indent_cpp_lambda_body = false # true/false
-
-# How to indent compound literals that are being returned.
-# true: add both the indent from return & the compound literal open brace
-# (i.e. 2 indent levels)
-# false: only indent 1 level, don't add the indent for the open brace, only
-# add the indent for the return.
-#
-# Default: true
-indent_compound_literal_return = true # true/false
-
-# (C#) Whether to indent a 'using' block if no braces are used.
-#
-# Default: true
-indent_using_block = true # true/false
-
-# How to indent the continuation of ternary operator.
-#
-# 0: Off (default)
-# 1: When the `if_false` is a continuation, indent it under the `if_true` branch
-# 2: When the `:` is a continuation, indent it under `?`
-indent_ternary_operator = 0 # unsigned number
-
-# Whether to indent the statements inside ternary operator.
-indent_inside_ternary_operator = false # true/false
-
-# If true, the indentation of the chunks after a `return` sequence will be set at return indentation column.
-indent_off_after_return = false # true/false
-
-# If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column.
-indent_off_after_return_new = false # true/false
-
-# If true, the tokens after return are indented with regular single indentation. By default (false) the indentation is after the return token.
-indent_single_after_return = false # true/false
-
-# Whether to ignore indent and alignment for 'asm' blocks (i.e. assume they
-# have their own indentation).
-indent_ignore_asm_block = false # true/false
-
-# Don't indent the close parenthesis of a function definition,
-# if the parenthesis is on its own line.
-donot_indent_func_def_close_paren = false # true/false
-
-#
-# Newline adding and removing options
-#
-
-# Whether to collapse empty blocks between '{' and '}' except for functions.
-# Use nl_collapse_empty_body_functions to specify how empty function braces
-# should be formatted.
-nl_collapse_empty_body = false # true/false
-
-# Whether to collapse empty blocks between '{' and '}' for functions only.
-# If true, overrides nl_inside_empty_func.
-nl_collapse_empty_body_functions = false # true/false
-
-# Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'.
-nl_assign_leave_one_liners = false # true/false
-
-# Don't split one-line braced statements inside a 'class xx { }' body.
-nl_class_leave_one_liners = false # true/false
-
-# Don't split one-line enums, as in 'enum foo { BAR = 15 };'
-nl_enum_leave_one_liners = false # true/false
-
-# Don't split one-line get or set functions.
-nl_getset_leave_one_liners = false # true/false
-
-# (C#) Don't split one-line property get or set functions.
-nl_cs_property_leave_one_liners = false # true/false
-
-# Don't split one-line function definitions, as in 'int foo() { return 0; }'.
-# might modify nl_func_type_name
-nl_func_leave_one_liners = false # true/false
-
-# Don't split one-line C++11 lambdas, as in '[]() { return 0; }'.
-nl_cpp_lambda_leave_one_liners = false # true/false
-
-# Don't split one-line if/else statements, as in 'if(...) b++;'.
-nl_if_leave_one_liners = false # true/false
-
-# Don't split one-line while statements, as in 'while(...) b++;'.
-nl_while_leave_one_liners = false # true/false
-
-# Don't split one-line do statements, as in 'do { b++; } while(...);'.
-nl_do_leave_one_liners = false # true/false
-
-# Don't split one-line for statements, as in 'for(...) b++;'.
-nl_for_leave_one_liners = false # true/false
-
-# (OC) Don't split one-line Objective-C messages.
-nl_oc_msg_leave_one_liner = false # true/false
-
-# (OC) Add or remove newline between method declaration and '{'.
-nl_oc_mdef_brace = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove newline between Objective-C block signature and '{'.
-nl_oc_block_brace = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove blank line before '@interface' statement.
-nl_oc_before_interface = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove blank line before '@implementation' statement.
-nl_oc_before_implementation = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove blank line before '@end' statement.
-nl_oc_before_end = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove newline between '@interface' and '{'.
-nl_oc_interface_brace = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove newline between '@implementation' and '{'.
-nl_oc_implementation_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newlines at the start of the file.
-nl_start_of_file = ignore # ignore/add/remove/force/not_defined
-
-# The minimum 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 # unsigned number
-
-# Add or remove newline at the end of the file.
-nl_end_of_file = ignore # ignore/add/remove/force/not_defined
-
-# The minimum 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 = 0 # unsigned number
-
-# Add or remove newline between '=' and '{'.
-nl_assign_brace = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove newline between '=' and '['.
-nl_assign_square = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '[]' and '{'.
-nl_tsquare_brace = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove newline after '= ['. Will also affect the newline before
-# the ']'.
-nl_after_square_assign = ignore # ignore/add/remove/force/not_defined
-
-# 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/not_defined
-
-# Add or remove newline between 'enum' and '{'.
-nl_enum_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'enum' and 'class'.
-nl_enum_class = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'enum class' and the identifier.
-nl_enum_class_identifier = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'enum class' type and ':'.
-nl_enum_identifier_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'enum class identifier :' and type.
-nl_enum_colon_type = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'struct and '{'.
-nl_struct_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'union' and '{'.
-nl_union_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'if' and '{'.
-nl_if_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and 'else'.
-nl_brace_else = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'else if' and '{'. If set to ignore,
-# nl_if_brace is used instead.
-nl_elseif_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'else' and '{'.
-nl_else_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'else' and 'if'.
-nl_else_if = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before '{' opening brace
-nl_before_opening_brace_func_class_def = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before 'if'/'else if' closing parenthesis.
-nl_before_if_closing_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and 'finally'.
-nl_brace_finally = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'finally' and '{'.
-nl_finally_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'try' and '{'.
-nl_try_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between get/set and '{'.
-nl_getset_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'for' and '{'.
-nl_for_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before the '{' of a 'catch' statement, as in
-# 'catch (decl) <here> {'.
-nl_catch_brace = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove newline before the '{' of a '@catch' statement, as in
-# '@catch (decl) <here> {'. If set to ignore, nl_catch_brace is used.
-nl_oc_catch_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and 'catch'.
-nl_brace_catch = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove newline between '}' and '@catch'. If set to ignore,
-# nl_brace_catch is used.
-nl_oc_brace_catch = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and ']'.
-nl_brace_square = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and ')' in a function invocation.
-nl_brace_fparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'while' and '{'.
-nl_while_brace = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove newline between 'scope (x)' and '{'.
-nl_scope_brace = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove newline between 'unittest' and '{'.
-nl_unittest_brace = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove newline between 'version (x)' and '{'.
-nl_version_brace = ignore # ignore/add/remove/force/not_defined
-
-# (C#) Add or remove newline between 'using' and '{'.
-nl_using_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between two open or close braces. Due to general
-# newline/brace handling, REMOVE may not work.
-nl_brace_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'do' and '{'.
-nl_do_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and 'while' of 'do' statement.
-nl_brace_while = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'switch' and '{'.
-nl_switch_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'synchronized' and '{'.
-nl_synchronized_brace = ignore # ignore/add/remove/force/not_defined
-
-# 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 = false # true/false
-
-# Add a newline after '(' if an if/for/while/switch condition spans multiple
-# lines
-nl_multi_line_sparen_open = ignore # ignore/add/remove/force/not_defined
-
-# Add a newline before ')' if an if/for/while/switch condition spans multiple
-# lines. Overrides nl_before_if_closing_paren if both are specified.
-nl_multi_line_sparen_close = ignore # ignore/add/remove/force/not_defined
-
-# Force a newline in a define after the macro name for multi-line defines.
-nl_multi_line_define = false # true/false
-
-# Whether to add a newline before 'case', and a blank line before a 'case'
-# statement that follows a ';' or '}'.
-nl_before_case = false # true/false
-
-# Whether to add a newline after a 'case' statement.
-nl_after_case = false # true/false
-
-# Add or remove newline between a case ':' and '{'.
-#
-# Overrides nl_after_case.
-nl_case_colon_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between ')' and 'throw'.
-nl_before_throw = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'namespace' and '{'.
-nl_namespace_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template class.
-nl_template_class = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template class declaration.
-#
-# Overrides nl_template_class.
-nl_template_class_decl = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<>' of a specialized class declaration.
-#
-# Overrides nl_template_class_decl.
-nl_template_class_decl_special = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template class definition.
-#
-# Overrides nl_template_class.
-nl_template_class_def = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<>' of a specialized class definition.
-#
-# Overrides nl_template_class_def.
-nl_template_class_def_special = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template function.
-nl_template_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template function
-# declaration.
-#
-# Overrides nl_template_func.
-nl_template_func_decl = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<>' of a specialized function
-# declaration.
-#
-# Overrides nl_template_func_decl.
-nl_template_func_decl_special = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template function
-# definition.
-#
-# Overrides nl_template_func.
-nl_template_func_def = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<>' of a specialized function
-# definition.
-#
-# Overrides nl_template_func_def.
-nl_template_func_def_special = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template variable.
-nl_template_var = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'template<...>' and 'using' of a templated
-# type alias.
-nl_template_using = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'class' and '{'.
-nl_class_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before or after (depending on pos_class_comma,
-# may not be IGNORE) each',' in the base class list.
-nl_class_init_args = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after each ',' in the constructor member
-# initialization. Related to nl_constr_colon, pos_constr_colon and
-# pos_constr_comma.
-nl_constr_init_args = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before first element, after comma, and after last
-# element, in 'enum'.
-nl_enum_own_lines = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between return type and function name in a function
-# definition.
-# might be modified by nl_func_leave_one_liners
-nl_func_type_name = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between return type and function name inside a class
-# definition. If set to ignore, nl_func_type_name or nl_func_proto_type_name
-# is used instead.
-nl_func_type_name_class = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between class specification and '::'
-# in 'void A::f() { }'. Only appears in separate member implementation (does
-# not appear with in-line implementation).
-nl_func_class_scope = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between function scope and name, as in
-# 'void A :: <here> f() { }'.
-nl_func_scope_name = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between return type and function name in a prototype.
-nl_func_proto_type_name = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between a function name and the opening '(' in the
-# declaration.
-nl_func_paren = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_paren for functions with no parameters.
-nl_func_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between a function name and the opening '(' in the
-# definition.
-nl_func_def_paren = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_def_paren for functions with no parameters.
-nl_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between a function name and the opening '(' in the
-# call.
-nl_func_call_paren = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_call_paren for functions with no parameters.
-nl_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after '(' in a function declaration.
-nl_func_decl_start = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after '(' in a function definition.
-nl_func_def_start = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_decl_start when there is only one parameter.
-nl_func_decl_start_single = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_def_start when there is only one parameter.
-nl_func_def_start_single = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after '(' in a function declaration if '(' and ')'
-# are in different lines. If false, nl_func_decl_start is used instead.
-nl_func_decl_start_multi_line = false # true/false
-
-# Whether to add a newline after '(' in a function definition if '(' and ')'
-# are in different lines. If false, nl_func_def_start is used instead.
-nl_func_def_start_multi_line = false # true/false
-
-# Add or remove newline after each ',' in a function declaration.
-nl_func_decl_args = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after each ',' in a function definition.
-nl_func_def_args = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after each ',' in a function call.
-nl_func_call_args = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after each ',' in a function declaration if '('
-# and ')' are in different lines. If false, nl_func_decl_args is used instead.
-nl_func_decl_args_multi_line = false # true/false
-
-# Whether to add a newline after each ',' in a function definition if '('
-# and ')' are in different lines. If false, nl_func_def_args is used instead.
-nl_func_def_args_multi_line = false # true/false
-
-# Add or remove newline before the ')' in a function declaration.
-nl_func_decl_end = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before the ')' in a function definition.
-nl_func_def_end = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_decl_end when there is only one parameter.
-nl_func_decl_end_single = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_def_end when there is only one parameter.
-nl_func_def_end_single = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline before ')' in a function declaration if '(' and ')'
-# are in different lines. If false, nl_func_decl_end is used instead.
-nl_func_decl_end_multi_line = false # true/false
-
-# Whether to add a newline before ')' in a function definition if '(' and ')'
-# are in different lines. If false, nl_func_def_end is used instead.
-nl_func_def_end_multi_line = false # true/false
-
-# Add or remove newline between '()' in a function declaration.
-nl_func_decl_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '()' in a function definition.
-nl_func_def_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '()' in a function call.
-nl_func_call_empty = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after '(' in a function call,
-# has preference over nl_func_call_start_multi_line.
-nl_func_call_start = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline before ')' in a function call.
-nl_func_call_end = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after '(' in a function call if '(' and ')' are in
-# different lines.
-nl_func_call_start_multi_line = false # true/false
-
-# Whether to add a newline after each ',' in a function call if '(' and ')'
-# are in different lines.
-nl_func_call_args_multi_line = false # true/false
-
-# Whether to add a newline before ')' in a function call if '(' and ')' are in
-# different lines.
-nl_func_call_end_multi_line = false # true/false
-
-# Whether to respect nl_func_call_XXX option in case of closure args.
-nl_func_call_args_multi_line_ignore_closures = false # true/false
-
-# Whether to add a newline after '<' of a template parameter list.
-nl_template_start = false # true/false
-
-# Whether to add a newline after each ',' in a template parameter list.
-nl_template_args = false # true/false
-
-# Whether to add a newline before '>' of a template parameter list.
-nl_template_end = false # true/false
-
-# (OC) Whether to put each Objective-C message parameter on a separate line.
-# See nl_oc_msg_leave_one_liner.
-nl_oc_msg_args = false # true/false
-
-# (OC) Minimum number of Objective-C message parameters before applying nl_oc_msg_args.
-nl_oc_msg_args_min_params = 0 # unsigned number
-
-# (OC) Max code width of Objective-C message before applying nl_oc_msg_args.
-nl_oc_msg_args_max_code_width = 0 # unsigned number
-
-# Add or remove newline between function signature and '{'.
-nl_fdef_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between function signature and '{',
-# if signature ends with ')'. Overrides nl_fdef_brace.
-nl_fdef_brace_cond = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between C++11 lambda signature and '{'.
-nl_cpp_ldef_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'return' and the return expression.
-nl_return_expr = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'throw' and the throw expression.
-nl_throw_expr = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after semicolons, except in 'for' statements.
-nl_after_semicolon = false # true/false
-
-# (Java) Add or remove newline between the ')' and '{{' of the double brace
-# initializer.
-nl_paren_dbrace_open = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after the type in an unnamed temporary
-# direct-list-initialization, better:
-# before a direct-list-initialization.
-nl_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after the open brace in an unnamed temporary
-# direct-list-initialization.
-nl_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline before the close brace in an unnamed temporary
-# direct-list-initialization.
-nl_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline before '{'.
-nl_before_brace_open = false # true/false
-
-# Whether to add a newline after '{'.
-nl_after_brace_open = false # true/false
-
-# Whether to add a newline between the open brace and a trailing single-line
-# comment. Requires nl_after_brace_open=true.
-nl_after_brace_open_cmt = false # true/false
-
-# Whether to add a newline after a virtual brace open with a non-empty body.
-# These occur in un-braced if/while/do/for statement bodies.
-nl_after_vbrace_open = false # true/false
-
-# Whether to add a newline after a virtual brace open with an empty body.
-# These occur in un-braced if/while/do/for statement bodies.
-nl_after_vbrace_open_empty = false # true/false
-
-# Whether to add a newline after '}'. Does not apply if followed by a
-# necessary ';'.
-nl_after_brace_close = false # true/false
-
-# Whether to add a newline after a virtual brace close,
-# as in 'if (foo) a++; <here> return;'.
-nl_after_vbrace_close = false # true/false
-
-# Add or remove newline between the close brace and identifier,
-# as in 'struct { int a; } <here> b;'. Affects enumerations, unions and
-# structures. If set to ignore, uses nl_after_brace_close.
-nl_brace_struct_var = ignore # ignore/add/remove/force/not_defined
-
-# Whether to alter newlines in '#define' macros.
-nl_define_macro = false # true/false
-
-# Whether to alter newlines between consecutive parenthesis closes. The number
-# of closing parentheses in a line will depend on respective open parenthesis
-# lines.
-nl_squeeze_paren_close = false # true/false
-
-# Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and
-# '#endif'. Does not affect top-level #ifdefs.
-nl_squeeze_ifdef = false # true/false
-
-# Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well.
-nl_squeeze_ifdef_top_level = false # true/false
-
-# Add or remove blank line before 'if'.
-nl_before_if = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'if' statement. Add/Force work only if the
-# next token is not a closing brace.
-nl_after_if = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line before 'for'.
-nl_before_for = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'for' statement.
-nl_after_for = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line before 'while'.
-nl_before_while = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'while' statement.
-nl_after_while = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line before 'switch'.
-nl_before_switch = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'switch' statement.
-nl_after_switch = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line before 'synchronized'.
-nl_before_synchronized = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'synchronized' statement.
-nl_after_synchronized = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line before 'do'.
-nl_before_do = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'do/while' statement.
-nl_after_do = ignore # ignore/add/remove/force/not_defined
-
-# Ignore nl_before_{if,for,switch,do,synchronized} if the control
-# statement is immediately after a case statement.
-# if nl_before_{if,for,switch,do} is set to remove, this option
-# does nothing.
-nl_before_ignore_after_case = false # true/false
-
-# Whether to put a blank line before 'return' statements, unless after an open
-# brace.
-nl_before_return = false # true/false
-
-# Whether to put a blank line after 'return' statements, unless followed by a
-# close brace.
-nl_after_return = false # true/false
-
-# Whether to put a blank line before a member '.' or '->' operators.
-nl_before_member = ignore # ignore/add/remove/force/not_defined
-
-# (Java) Whether to put a blank line after a member '.' or '->' operators.
-nl_after_member = ignore # ignore/add/remove/force/not_defined
-
-# Whether to double-space commented-entries in 'struct'/'union'/'enum'.
-nl_ds_struct_enum_cmt = false # true/false
-
-# Whether to force a newline before '}' of a 'struct'/'union'/'enum'.
-# (Lower priority than eat_blanks_before_close_brace.)
-nl_ds_struct_enum_close_brace = false # true/false
-
-# Add or remove newline before or after (depending on pos_class_colon) a class
-# colon, as in 'class Foo <here> : <or here> public Bar'.
-nl_class_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline around a class constructor colon. The exact position
-# depends on nl_constr_init_args, pos_constr_colon and pos_constr_comma.
-nl_constr_colon = ignore # ignore/add/remove/force/not_defined
-
-# Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }'
-# into a single line. If true, prevents other brace newline rules from turning
-# such code into four lines. If true, it also preserves one-liner namespaces.
-nl_namespace_two_to_one_liner = false # true/false
-
-# Whether to remove a newline in simple unbraced if statements, turning them
-# into one-liners, as in 'if(b)\n i++;' => 'if(b) i++;'.
-nl_create_if_one_liner = false # true/false
-
-# Whether to remove a newline in simple unbraced for statements, turning them
-# into one-liners, as in 'for (...)\n stmt;' => 'for (...) stmt;'.
-nl_create_for_one_liner = false # true/false
-
-# Whether to remove a newline in simple unbraced while statements, turning
-# them into one-liners, as in 'while (expr)\n stmt;' => 'while (expr) stmt;'.
-nl_create_while_one_liner = false # true/false
-
-# Whether to collapse a function definition whose body (not counting braces)
-# is only one line so that the entire definition (prototype, braces, body) is
-# a single line.
-nl_create_func_def_one_liner = false # true/false
-
-# Whether to split one-line simple list definitions into three lines by
-# adding newlines, as in 'int a[12] = { <here> 0 <here> };'.
-nl_create_list_one_liner = false # true/false
-
-# Whether to split one-line simple unbraced if statements into two lines by
-# adding a newline, as in 'if(b) <here> i++;'.
-nl_split_if_one_liner = false # true/false
-
-# Whether to split one-line simple unbraced for statements into two lines by
-# adding a newline, as in 'for (...) <here> stmt;'.
-nl_split_for_one_liner = false # true/false
-
-# Whether to split one-line simple unbraced while statements into two lines by
-# adding a newline, as in 'while (expr) <here> stmt;'.
-nl_split_while_one_liner = false # true/false
-
-# Don't add a newline before a cpp-comment in a parameter list of a function
-# call.
-donot_add_nl_before_cpp_comment = false # true/false
-
-#
-# Blank line options
-#
-
-# The maximum number of consecutive newlines (3 = 2 blank lines).
-nl_max = 0 # unsigned number
-
-# The maximum number of consecutive newlines in a function.
-nl_max_blank_in_func = 0 # unsigned number
-
-# The number of newlines inside an empty function body.
-# This option overrides eat_blanks_after_open_brace and
-# eat_blanks_before_close_brace, but is ignored when
-# nl_collapse_empty_body_functions=true
-nl_inside_empty_func = 0 # unsigned number
-
-# The number of newlines before a function prototype.
-nl_before_func_body_proto = 0 # unsigned number
-
-# The number of newlines before a multi-line function definition. Where
-# applicable, this option is overridden with eat_blanks_after_open_brace=true
-nl_before_func_body_def = 0 # unsigned number
-
-# The number of newlines before a class constructor/destructor prototype.
-nl_before_func_class_proto = 0 # unsigned number
-
-# The number of newlines before a class constructor/destructor definition.
-nl_before_func_class_def = 0 # unsigned number
-
-# The number of newlines after a function prototype.
-nl_after_func_proto = 0 # unsigned number
-
-# The number of newlines after a function prototype, if not followed by
-# another function prototype.
-nl_after_func_proto_group = 0 # unsigned number
-
-# The number of newlines after a class constructor/destructor prototype.
-nl_after_func_class_proto = 0 # unsigned number
-
-# The number of newlines after a class constructor/destructor prototype,
-# if not followed by another constructor/destructor prototype.
-nl_after_func_class_proto_group = 0 # unsigned number
-
-# Whether one-line method definitions inside a class body should be treated
-# as if they were prototypes for the purposes of adding newlines.
-#
-# Requires nl_class_leave_one_liners=true. Overrides nl_before_func_body_def
-# and nl_before_func_class_def for one-liners.
-nl_class_leave_one_liner_groups = false # true/false
-
-# The number of newlines after '}' of a multi-line function body.
-nl_after_func_body = 0 # unsigned number
-
-# The number of newlines after '}' of a multi-line function body in a class
-# declaration. Also affects class constructors/destructors.
-#
-# Overrides nl_after_func_body.
-nl_after_func_body_class = 0 # unsigned number
-
-# The number of newlines after '}' of a single line function body. Also
-# affects class constructors/destructors.
-#
-# Overrides nl_after_func_body and nl_after_func_body_class.
-nl_after_func_body_one_liner = 0 # unsigned number
-
-# The number of newlines before a block of typedefs. If nl_after_access_spec
-# is non-zero, that option takes precedence.
-#
-# 0: No change (default).
-nl_typedef_blk_start = 0 # unsigned number
-
-# The number of newlines after a block of typedefs.
-#
-# 0: No change (default).
-nl_typedef_blk_end = 0 # unsigned number
-
-# The maximum number of consecutive newlines within a block of typedefs.
-#
-# 0: No change (default).
-nl_typedef_blk_in = 0 # unsigned number
-
-# The minimum number of blank lines after a block of variable definitions
-# at the top of a function body. If any preprocessor directives appear
-# between the opening brace of the function and the variable block, then
-# it is considered as not at the top of the function.Newlines are added
-# before trailing preprocessor directives, if any exist.
-#
-# 0: No change (default).
-nl_var_def_blk_end_func_top = 0 # unsigned number
-
-# The minimum number of empty newlines before a block of variable definitions
-# not at the top of a function body. If nl_after_access_spec is non-zero,
-# that option takes precedence. Newlines are not added at the top of the
-# file or just after an opening brace. Newlines are added above any
-# preprocessor directives before the block.
-#
-# 0: No change (default).
-nl_var_def_blk_start = 0 # unsigned number
-
-# The minimum number of empty newlines after a block of variable definitions
-# not at the top of a function body. Newlines are not added if the block
-# is at the bottom of the file or just before a preprocessor directive.
-#
-# 0: No change (default).
-nl_var_def_blk_end = 0 # unsigned number
-
-# The maximum number of consecutive newlines within a block of variable
-# definitions.
-#
-# 0: No change (default).
-nl_var_def_blk_in = 0 # unsigned 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 # unsigned 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 # unsigned 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 # unsigned number
-
-# Whether to force a newline after a multi-line comment.
-nl_after_multiline_comment = false # true/false
-
-# Whether to force a newline after a label's colon.
-nl_after_label_colon = false # true/false
-
-# The number of newlines before a struct definition.
-nl_before_struct = 0 # unsigned number
-
-# The number of newlines after '}' or ';' of a struct/enum/union definition.
-nl_after_struct = 0 # unsigned number
-
-# The number of newlines before a class definition.
-nl_before_class = 0 # unsigned number
-
-# The number of newlines after '}' or ';' of a class definition.
-nl_after_class = 0 # unsigned number
-
-# The number of newlines before a namespace.
-nl_before_namespace = 0 # unsigned number
-
-# The number of newlines after '{' of a namespace. This also adds newlines
-# before the matching '}'.
-#
-# 0: Apply eat_blanks_after_open_brace or eat_blanks_before_close_brace if
-# applicable, otherwise no change.
-#
-# Overrides eat_blanks_after_open_brace and eat_blanks_before_close_brace.
-nl_inside_namespace = 0 # unsigned number
-
-# The number of newlines after '}' of a namespace.
-nl_after_namespace = 0 # unsigned number
-
-# The number of newlines before an access specifier label. This also includes
-# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
-# if after a brace open.
-#
-# 0: No change (default).
-nl_before_access_spec = 0 # unsigned number
-
-# The number of newlines after an access specifier label. This also includes
-# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
-# if after a brace open.
-#
-# 0: No change (default).
-#
-# Overrides nl_typedef_blk_start and nl_var_def_blk_start.
-nl_after_access_spec = 0 # unsigned number
-
-# The number of newlines between a function definition and the function
-# comment, as in '// comment\n <here> void foo() {...}'.
-#
-# 0: No change (default).
-nl_comment_func_def = 0 # unsigned number
-
-# The number of newlines after a try-catch-finally block that isn't followed
-# by a brace close.
-#
-# 0: No change (default).
-nl_after_try_catch_finally = 0 # unsigned number
-
-# (C#) The number of newlines before and after a property, indexer or event
-# declaration.
-#
-# 0: No change (default).
-nl_around_cs_property = 0 # unsigned number
-
-# (C#) The number of newlines between the get/set/add/remove handlers.
-#
-# 0: No change (default).
-nl_between_get_set = 0 # unsigned number
-
-# (C#) Add or remove newline between property and the '{'.
-nl_property_brace = ignore # ignore/add/remove/force/not_defined
-
-# Whether to remove blank lines after '{'.
-eat_blanks_after_open_brace = false # true/false
-
-# Whether to remove blank lines before '}'.
-eat_blanks_before_close_brace = false # true/false
-
-# How aggressively to remove extra newlines not in preprocessor.
-#
-# 0: No change (default)
-# 1: Remove most newlines not handled by other config
-# 2: Remove all newlines and reformat completely by config
-nl_remove_extra_newlines = 0 # unsigned number
-
-# (Java) Add or remove newline after an annotation statement. Only affects
-# annotations that are after a newline.
-nl_after_annotation = ignore # ignore/add/remove/force/not_defined
-
-# (Java) Add or remove newline between two annotations.
-nl_between_annotation = ignore # ignore/add/remove/force/not_defined
-
-# The number of newlines before a whole-file #ifdef.
-#
-# 0: No change (default).
-nl_before_whole_file_ifdef = 0 # unsigned number
-
-# The number of newlines after a whole-file #ifdef.
-#
-# 0: No change (default).
-nl_after_whole_file_ifdef = 0 # unsigned number
-
-# The number of newlines before a whole-file #endif.
-#
-# 0: No change (default).
-nl_before_whole_file_endif = 0 # unsigned number
-
-# The number of newlines after a whole-file #endif.
-#
-# 0: No change (default).
-nl_after_whole_file_endif = 0 # unsigned number
-
-#
-# Positioning options
-#
-
-# The position of arithmetic operators in wrapped expressions.
-pos_arith = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of assignment in wrapped expressions. Do not affect '='
-# followed by '{'.
-pos_assign = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of Boolean operators in wrapped expressions.
-pos_bool = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of comparison operators in wrapped expressions.
-pos_compare = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of conditional operators, as in the '?' and ':' of
-# 'expr ? stmt : stmt', in wrapped expressions.
-pos_conditional = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of the comma in wrapped expressions.
-pos_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of the comma in enum entries.
-pos_enum_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of the comma in the base class list if there is more than one
-# line. Affects nl_class_init_args.
-pos_class_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of the comma in the constructor initialization list.
-# Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon.
-pos_constr_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of trailing/leading class colon, between class and base class
-# list. Affects nl_class_colon.
-pos_class_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of colons between constructor and member initialization.
-# Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.
-pos_constr_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of shift operators in wrapped expressions.
-pos_shift = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-#
-# Line splitting options
-#
-
-# Try to limit code width to N columns.
-code_width = 0 # unsigned number
-
-# Whether to fully split long 'for' statements at semi-colons.
-ls_for_split_full = false # true/false
-
-# Whether to fully split long function prototypes/calls at commas.
-# The option ls_code_width has priority over the option ls_func_split_full.
-ls_func_split_full = false # true/false
-
-# Whether to split lines as close to code_width as possible and ignore some
-# groupings.
-# The option ls_code_width has priority over the option ls_func_split_full.
-ls_code_width = false # true/false
-
-#
-# Code alignment options (not left column spaces/tabs)
-#
-
-# Whether to keep non-indenting tabs.
-align_keep_tabs = false # true/false
-
-# Whether to use tabs for aligning.
-align_with_tabs = false # true/false
-
-# Whether to bump out to the next tab when aligning.
-align_on_tabstop = false # true/false
-
-# Whether to right-align numbers.
-align_number_right = false # true/false
-
-# Whether to keep whitespace not required for alignment.
-align_keep_extra_space = false # true/false
-
-# Whether to align variable definitions in prototypes and functions.
-align_func_params = false # true/false
-
-# The span for aligning parameter definitions in function on parameter name.
-#
-# 0: Don't align (default).
-align_func_params_span = 0 # unsigned number
-
-# The threshold for aligning function parameter definitions.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_func_params_thresh = 0 # number
-
-# The gap for aligning function parameter definitions.
-align_func_params_gap = 0 # unsigned number
-
-# The span for aligning constructor value.
-#
-# 0: Don't align (default).
-align_constr_value_span = 0 # unsigned number
-
-# The threshold for aligning constructor value.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_constr_value_thresh = 0 # number
-
-# The gap for aligning constructor value.
-align_constr_value_gap = 0 # unsigned number
-
-# Whether to align parameters in single-line functions that have the same
-# name. The function names must already be aligned with each other.
-align_same_func_call_params = false # true/false
-
-# The span for aligning function-call parameters for single line functions.
-#
-# 0: Don't align (default).
-align_same_func_call_params_span = 0 # unsigned number
-
-# The threshold for aligning function-call parameters for single line
-# functions.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_same_func_call_params_thresh = 0 # number
-
-# The span for aligning variable definitions.
-#
-# 0: Don't align (default).
-align_var_def_span = 0 # unsigned number
-
-# How to consider (or treat) the '*' in the alignment of variable definitions.
-#
-# 0: Part of the type 'void * foo;' (default)
-# 1: Part of the variable 'void *foo;'
-# 2: Dangling 'void *foo;'
-# Dangling: the '*' will not be taken into account when aligning.
-align_var_def_star_style = 0 # unsigned number
-
-# How to consider (or treat) the '&' in the alignment of variable definitions.
-#
-# 0: Part of the type 'long & foo;' (default)
-# 1: Part of the variable 'long &foo;'
-# 2: Dangling 'long &foo;'
-# Dangling: the '&' will not be taken into account when aligning.
-align_var_def_amp_style = 0 # unsigned number
-
-# The threshold for aligning variable definitions.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_var_def_thresh = 0 # number
-
-# The gap for aligning variable definitions.
-align_var_def_gap = 0 # unsigned number
-
-# Whether to align the colon in struct bit fields.
-align_var_def_colon = false # true/false
-
-# The gap for aligning the colon in struct bit fields.
-align_var_def_colon_gap = 0 # unsigned number
-
-# Whether to align any attribute after the variable name.
-align_var_def_attribute = false # true/false
-
-# Whether to align inline struct/enum/union variable definitions.
-align_var_def_inline = false # true/false
-
-# The span for aligning on '=' in assignments.
-#
-# 0: Don't align (default).
-align_assign_span = 0 # unsigned number
-
-# The span for aligning on '=' in function prototype modifier.
-#
-# 0: Don't align (default).
-align_assign_func_proto_span = 0 # unsigned number
-
-# The threshold for aligning on '=' in assignments.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_assign_thresh = 0 # number
-
-# Whether to align on the left most assignment when multiple
-# definitions are found on the same line.
-# Depends on 'align_assign_span' and 'align_assign_thresh' settings.
-align_assign_on_multi_var_defs = false # true/false
-
-# The span for aligning on '{' in braced init list.
-#
-# 0: Don't align (default).
-align_braced_init_list_span = 0 # unsigned number
-
-# The threshold for aligning on '{' in braced init list.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_braced_init_list_thresh = 0 # number
-
-# How to apply align_assign_span to function declaration "assignments", i.e.
-# 'virtual void foo() = 0' or '~foo() = {default|delete}'.
-#
-# 0: Align with other assignments (default)
-# 1: Align with each other, ignoring regular assignments
-# 2: Don't align
-align_assign_decl_func = 0 # unsigned number
-
-# The span for aligning on '=' in enums.
-#
-# 0: Don't align (default).
-align_enum_equ_span = 0 # unsigned number
-
-# The threshold for aligning on '=' in enums.
-# Use a negative number for absolute thresholds.
-#
-# 0: no limit (default).
-align_enum_equ_thresh = 0 # number
-
-# The span for aligning class member definitions.
-#
-# 0: Don't align (default).
-align_var_class_span = 0 # unsigned number
-
-# The threshold for aligning class member definitions.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_var_class_thresh = 0 # number
-
-# The gap for aligning class member definitions.
-align_var_class_gap = 0 # unsigned number
-
-# The span for aligning struct/union member definitions.
-#
-# 0: Don't align (default).
-align_var_struct_span = 0 # unsigned number
-
-# The threshold for aligning struct/union member definitions.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_var_struct_thresh = 0 # number
-
-# The gap for aligning struct/union member definitions.
-align_var_struct_gap = 0 # unsigned number
-
-# The span for aligning struct initializer values.
-#
-# 0: Don't align (default).
-align_struct_init_span = 0 # unsigned number
-
-# The span for aligning single-line typedefs.
-#
-# 0: Don't align (default).
-align_typedef_span = 0 # unsigned number
-
-# The minimum space between the type and the synonym of a typedef.
-align_typedef_gap = 0 # unsigned number
-
-# How to align typedef'd functions with other typedefs.
-#
-# 0: Don't mix them at all (default)
-# 1: Align the open parenthesis with the types
-# 2: Align the function type name with the other type names
-align_typedef_func = 0 # unsigned number
-
-# How to consider (or treat) the '*' in the alignment of typedefs.
-#
-# 0: Part of the typedef type, 'typedef int * pint;' (default)
-# 1: Part of type name: 'typedef int *pint;'
-# 2: Dangling: 'typedef int *pint;'
-# Dangling: the '*' will not be taken into account when aligning.
-align_typedef_star_style = 0 # unsigned number
-
-# How to consider (or treat) the '&' in the alignment of typedefs.
-#
-# 0: Part of the typedef type, 'typedef int & intref;' (default)
-# 1: Part of type name: 'typedef int &intref;'
-# 2: Dangling: 'typedef int &intref;'
-# Dangling: the '&' will not be taken into account when aligning.
-align_typedef_amp_style = 0 # unsigned number
-
-# The span for aligning comments that end lines.
-#
-# 0: Don't align (default).
-align_right_cmt_span = 0 # unsigned number
-
-# Minimum number of columns between preceding text and a trailing comment in
-# order for the comment to qualify for being aligned. Must be non-zero to have
-# an effect.
-align_right_cmt_gap = 0 # unsigned number
-
-# If aligning comments, whether to mix with comments after '}' and #endif with
-# less than three spaces before the comment.
-align_right_cmt_mix = false # true/false
-
-# Whether to only align trailing comments that are at the same brace level.
-align_right_cmt_same_level = false # true/false
-
-# Minimum column at which to align trailing comments. Comments which are
-# aligned beyond this column, but which can be aligned in a lesser column,
-# may be "pulled in".
-#
-# 0: Ignore (default).
-align_right_cmt_at_col = 0 # unsigned number
-
-# The span for aligning function prototypes.
-#
-# 0: Don't align (default).
-align_func_proto_span = 0 # unsigned number
-
-# How to consider (or treat) the '*' in the alignment of function prototypes.
-#
-# 0: Part of the type 'void * foo();' (default)
-# 1: Part of the function 'void *foo();'
-# 2: Dangling 'void *foo();'
-# Dangling: the '*' will not be taken into account when aligning.
-align_func_proto_star_style = 0 # unsigned number
-
-# How to consider (or treat) the '&' in the alignment of function prototypes.
-#
-# 0: Part of the type 'long & foo();' (default)
-# 1: Part of the function 'long &foo();'
-# 2: Dangling 'long &foo();'
-# Dangling: the '&' will not be taken into account when aligning.
-align_func_proto_amp_style = 0 # unsigned number
-
-# The threshold for aligning function prototypes.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_func_proto_thresh = 0 # number
-
-# Minimum gap between the return type and the function name.
-align_func_proto_gap = 0 # unsigned number
-
-# Whether to align function prototypes on the 'operator' keyword instead of
-# what follows.
-align_on_operator = false # true/false
-
-# 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 # true/false
-
-# Whether to align single-line functions with function prototypes.
-# Uses align_func_proto_span.
-align_single_line_func = false # true/false
-
-# Whether to align the open brace of single-line functions.
-# Requires align_single_line_func=true. Uses align_func_proto_span.
-align_single_line_brace = false # true/false
-
-# Gap for align_single_line_brace.
-align_single_line_brace_gap = 0 # unsigned number
-
-# (OC) The span for aligning Objective-C message specifications.
-#
-# 0: Don't align (default).
-align_oc_msg_spec_span = 0 # unsigned 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 # true/false
-
-# Whether to align macro functions and variables together.
-align_pp_define_together = false # true/false
-
-# The span for aligning on '#define' bodies.
-#
-# =0: Don't align (default)
-# >0: Number of lines (including comments) between blocks
-align_pp_define_span = 0 # unsigned number
-
-# The minimum space between label and value of a preprocessor define.
-align_pp_define_gap = 0 # unsigned number
-
-# Whether to align lines that start with '<<' with previous '<<'.
-#
-# Default: true
-align_left_shift = true # true/false
-
-# Whether to align comma-separated statements following '<<' (as used to
-# initialize Eigen matrices).
-align_eigen_comma_init = false # true/false
-
-# Whether to align text after 'asm volatile ()' colons.
-align_asm_colon = false # true/false
-
-# (OC) Span for aligning parameters in an Objective-C message call
-# on the ':'.
-#
-# 0: Don't align.
-align_oc_msg_colon_span = 0 # unsigned number
-
-# (OC) Whether to always align with the first parameter, even if it is too
-# short.
-align_oc_msg_colon_first = false # true/false
-
-# (OC) Whether to align parameters in an Objective-C '+' or '-' declaration
-# on the ':'.
-align_oc_decl_colon = false # true/false
-
-# (OC) Whether to not align parameters in an Objectve-C message call if first
-# colon is not on next line of the message call (the same way Xcode does
-# alignment)
-align_oc_msg_colon_xcode_like = false # true/false
-
-#
-# Comment modification options
-#
-
-# Try to wrap comments at N columns.
-cmt_width = 0 # unsigned number
-
-# How to reflow comments.
-#
-# 0: No reflowing (apart from the line wrapping due to cmt_width) (default)
-# 1: No touching at all
-# 2: Full reflow (enable cmt_indent_multi for indent with line wrapping due to cmt_width)
-cmt_reflow_mode = 0 # unsigned number
-
-# Path to a file that contains regular expressions describing patterns for
-# which the end of one line and the beginning of the next will be folded into
-# the same sentence or paragraph during full comment reflow. The regular
-# expressions are described using ECMAScript syntax. The syntax for this
-# specification is as follows, where "..." indicates the custom regular
-# expression and "n" indicates the nth end_of_prev_line_regex and
-# beg_of_next_line_regex regular expression pair:
-#
-# end_of_prev_line_regex[1] = "...$"
-# beg_of_next_line_regex[1] = "^..."
-# end_of_prev_line_regex[2] = "...$"
-# beg_of_next_line_regex[2] = "^..."
-# .
-# .
-# .
-# end_of_prev_line_regex[n] = "...$"
-# beg_of_next_line_regex[n] = "^..."
-#
-# Note that use of this option overrides the default reflow fold regular
-# expressions, which are internally defined as follows:
-#
-# end_of_prev_line_regex[1] = "[\w,\]\)]$"
-# beg_of_next_line_regex[1] = "^[\w,\[\(]"
-# end_of_prev_line_regex[2] = "\.$"
-# beg_of_next_line_regex[2] = "^[A-Z]"
-cmt_reflow_fold_regex_file = "" # string
-
-# Whether to indent wrapped lines to the start of the encompassing paragraph
-# during full comment reflow (cmt_reflow_mode = 2). Overrides the value
-# specified by cmt_sp_after_star_cont.
-#
-# Note that cmt_align_doxygen_javadoc_tags overrides this option for
-# paragraphs associated with javadoc tags
-cmt_reflow_indent_to_paragraph_start = false # true/false
-
-# Whether to convert all tabs to spaces in comments. If false, tabs in
-# comments are left alone, unless used for indenting.
-cmt_convert_tab_to_spaces = false # true/false
-
-# Whether to apply changes to multi-line comments, including cmt_width,
-# keyword substitution and leading chars.
-#
-# Default: true
-cmt_indent_multi = true # true/false
-
-# Whether to align doxygen javadoc-style tags ('@param', '@return', etc.)
-# and corresponding fields such that groups of consecutive block tags,
-# parameter names, and descriptions align with one another. Overrides that
-# which is specified by the cmt_sp_after_star_cont. If cmt_width > 0, it may
-# be necessary to enable cmt_indent_multi and set cmt_reflow_mode = 2
-# in order to achieve the desired alignment for line-wrapping.
-cmt_align_doxygen_javadoc_tags = false # true/false
-
-# The number of spaces to insert after the star and before doxygen
-# javadoc-style tags (@param, @return, etc). Requires enabling
-# cmt_align_doxygen_javadoc_tags. Overrides that which is specified by the
-# cmt_sp_after_star_cont.
-#
-# Default: 1
-cmt_sp_before_doxygen_javadoc_tags = 1 # unsigned number
-
-# Whether to change trailing, single-line c-comments into cpp-comments.
-cmt_trailing_single_line_c_to_cpp = false # true/false
-
-# Whether to group c-comments that look like they are in a block.
-cmt_c_group = false # true/false
-
-# Whether to put an empty '/*' on the first line of the combined c-comment.
-cmt_c_nl_start = false # true/false
-
-# Whether to add a newline before the closing '*/' of the combined c-comment.
-cmt_c_nl_end = false # true/false
-
-# Whether to change cpp-comments into c-comments.
-cmt_cpp_to_c = false # true/false
-
-# Whether to group cpp-comments that look like they are in a block. Only
-# meaningful if cmt_cpp_to_c=true.
-cmt_cpp_group = false # true/false
-
-# Whether to put an empty '/*' on the first line of the combined cpp-comment
-# when converting to a c-comment.
-#
-# Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
-cmt_cpp_nl_start = false # true/false
-
-# Whether to add a newline before the closing '*/' of the combined cpp-comment
-# when converting to a c-comment.
-#
-# Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
-cmt_cpp_nl_end = false # true/false
-
-# Whether to put a star on subsequent comment lines.
-cmt_star_cont = false # true/false
-
-# The number of spaces to insert at the start of subsequent comment lines.
-cmt_sp_before_star_cont = 0 # unsigned number
-
-# The number of spaces to insert after the star on subsequent comment lines.
-cmt_sp_after_star_cont = 0 # unsigned number
-
-# For multi-line comments with a '*' lead, remove leading spaces if the first
-# and last lines of the comment are the same length.
-#
-# Default: true
-cmt_multi_check_last = true # true/false
-
-# For multi-line comments with a '*' lead, remove leading spaces if the first
-# and last lines of the comment are the same length AND if the length is
-# bigger as the first_len minimum.
-#
-# Default: 4
-cmt_multi_first_len_minimum = 4 # unsigned number
-
-# Path to a file that contains text to insert at the beginning of a file if
-# the file doesn't start with a C/C++ comment. If the inserted text contains
-# '$(filename)', that will be replaced with the current file's name.
-cmt_insert_file_header = "" # string
-
-# Path to a file that contains text to insert at the end of a file if the
-# file doesn't end with a C/C++ comment. If the inserted text contains
-# '$(filename)', that will be replaced with the current file's name.
-cmt_insert_file_footer = "" # string
-
-# Path to a file that contains text to insert before a function definition if
-# the function isn't preceded by a C/C++ comment. If the inserted text
-# contains '$(function)', '$(javaparam)' or '$(fclass)', these will be
-# replaced with, respectively, the name of the function, the javadoc '@param'
-# and '@return' stuff, or the name of the class to which the member function
-# belongs.
-cmt_insert_func_header = "" # string
-
-# Path to a file that contains text to insert before a class if the class
-# isn't preceded by a C/C++ comment. If the inserted text contains '$(class)',
-# that will be replaced with the class name.
-cmt_insert_class_header = "" # string
-
-# Path to a file that contains text to insert before an Objective-C message
-# specification, if the method isn't preceded by a C/C++ comment. If the
-# inserted text contains '$(message)' or '$(javaparam)', these will be
-# replaced with, respectively, the name of the function, or the javadoc
-# '@param' and '@return' stuff.
-cmt_insert_oc_msg_header = "" # string
-
-# Whether a comment should be inserted if a preprocessor is encountered when
-# stepping backwards from a function name.
-#
-# Applies to cmt_insert_oc_msg_header, cmt_insert_func_header and
-# cmt_insert_class_header.
-cmt_insert_before_preproc = false # true/false
-
-# Whether a comment should be inserted if a function is declared inline to a
-# class definition.
-#
-# Applies to cmt_insert_func_header.
-#
-# Default: true
-cmt_insert_before_inlines = true # true/false
-
-# Whether a comment should be inserted if the function is a class constructor
-# or destructor.
-#
-# Applies to cmt_insert_func_header.
-cmt_insert_before_ctor_dtor = false # true/false
-
-#
-# Code modifying options (non-whitespace)
-#
-
-# Add or remove braces on a single-line 'do' statement.
-mod_full_brace_do = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove braces on a single-line 'for' statement.
-mod_full_brace_for = ignore # ignore/add/remove/force/not_defined
-
-# (Pawn) Add or remove braces on a single-line function definition.
-mod_full_brace_function = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove braces on a single-line 'if' statement. Braces will not be
-# removed if the braced statement contains an 'else'.
-mod_full_brace_if = ignore # ignore/add/remove/force/not_defined
-
-# Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either
-# have, or do not have, braces. Overrides mod_full_brace_if.
-#
-# 0: Don't override mod_full_brace_if
-# 1: Add braces to all blocks if any block needs braces and remove braces if
-# they can be removed from all blocks
-# 2: Add braces to all blocks if any block already has braces, regardless of
-# whether it needs them
-# 3: Add braces to all blocks if any block needs braces and remove braces if
-# they can be removed from all blocks, except if all blocks have braces
-# despite none needing them
-mod_full_brace_if_chain = 0 # unsigned number
-
-# Whether to add braces to all blocks of an 'if'/'else if'/'else' chain.
-# If true, mod_full_brace_if_chain will only remove braces from an 'if' that
-# does not have an 'else if' or 'else'.
-mod_full_brace_if_chain_only = false # true/false
-
-# Add or remove braces on single-line 'while' statement.
-mod_full_brace_while = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove braces on single-line 'using ()' statement.
-mod_full_brace_using = ignore # ignore/add/remove/force/not_defined
-
-# Don't remove braces around statements that span N newlines
-mod_full_brace_nl = 0 # unsigned number
-
-# Whether to prevent removal of braces from 'if'/'for'/'while'/etc. blocks
-# which span multiple lines.
-#
-# Affects:
-# mod_full_brace_for
-# mod_full_brace_if
-# mod_full_brace_if_chain
-# mod_full_brace_if_chain_only
-# mod_full_brace_while
-# mod_full_brace_using
-#
-# Does not affect:
-# mod_full_brace_do
-# mod_full_brace_function
-mod_full_brace_nl_block_rem_mlcond = false # true/false
-
-# Add or remove unnecessary parentheses on 'return' statement.
-mod_paren_on_return = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove unnecessary parentheses on 'throw' statement.
-mod_paren_on_throw = ignore # ignore/add/remove/force/not_defined
-
-# (Pawn) Whether to change optional semicolons to real semicolons.
-mod_pawn_semicolon = false # true/false
-
-# Whether to fully parenthesize Boolean expressions in 'while' and 'if'
-# statement, as in 'if (a && b > c)' => 'if (a && (b > c))'.
-mod_full_paren_if_bool = false # true/false
-
-# Whether to fully parenthesize Boolean expressions after '='
-# statement, as in 'x = a && b > c;' => 'x = (a && (b > c));'.
-mod_full_paren_assign_bool = false # true/false
-
-# Whether to fully parenthesize Boolean expressions after '='
-# statement, as in 'return a && b > c;' => 'return (a && (b > c));'.
-mod_full_paren_return_bool = false # true/false
-
-# Whether to remove superfluous semicolons.
-mod_remove_extra_semicolon = false # true/false
-
-# Whether to remove duplicate include.
-mod_remove_duplicate_include = false # true/false
-
-# 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 = 0 # unsigned number
-
-# If a namespace 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_namespace_closebrace_comment = 0 # unsigned number
-
-# If a class 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_class_closebrace_comment = 0 # unsigned 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 = 0 # unsigned number
-
-# If an #ifdef body exceeds the specified number of newlines and doesn't have
-# a comment after the #endif, a comment will be added.
-mod_add_long_ifdef_endif_comment = 0 # unsigned number
-
-# If an #ifdef or #else body exceeds the specified number of newlines and
-# doesn't have a comment after the #else, a comment will be added.
-mod_add_long_ifdef_else_comment = 0 # unsigned number
-
-# Whether to take care of the case by the mod_sort_xx options.
-mod_sort_case_sensitive = false # true/false
-
-# Whether to sort consecutive single-line 'import' statements.
-mod_sort_import = false # true/false
-
-# (C#) Whether to sort consecutive single-line 'using' statements.
-mod_sort_using = false # true/false
-
-# Whether to sort consecutive single-line '#include' statements (C/C++) and
-# '#import' statements (Objective-C). Be aware that this has the potential to
-# break your code if your includes/imports have ordering dependencies.
-mod_sort_include = false # true/false
-
-# Whether to prioritize '#include' and '#import' statements that contain
-# filename without extension when sorting is enabled.
-mod_sort_incl_import_prioritize_filename = false # true/false
-
-# Whether to prioritize '#include' and '#import' statements that does not
-# contain extensions when sorting is enabled.
-mod_sort_incl_import_prioritize_extensionless = false # true/false
-
-# Whether to prioritize '#include' and '#import' statements that contain
-# angle over quotes when sorting is enabled.
-mod_sort_incl_import_prioritize_angle_over_quotes = false # true/false
-
-# Whether to ignore file extension in '#include' and '#import' statements
-# for sorting comparison.
-mod_sort_incl_import_ignore_extension = false # true/false
-
-# Whether to group '#include' and '#import' statements when sorting is enabled.
-mod_sort_incl_import_grouping_enabled = false # true/false
-
-# Whether to move a 'break' that appears after a fully braced 'case' before
-# the close brace, as in 'case X: { ... } break;' => 'case X: { ... break; }'.
-mod_move_case_break = false # true/false
-
-# Whether to move a 'return' that appears after a fully braced 'case' before
-# the close brace, as in 'case X: { ... } return;' => 'case X: { ... return; }'.
-mod_move_case_return = false # true/false
-
-# Add or remove braces around a fully braced case statement. Will only remove
-# braces if there are no variable declarations in the block.
-mod_case_brace = ignore # ignore/add/remove/force/not_defined
-
-# Whether to remove a void 'return;' that appears as the last statement in a
-# function.
-mod_remove_empty_return = false # true/false
-
-# Add or remove the comma after the last value of an enumeration.
-mod_enum_last_comma = ignore # ignore/add/remove/force/not_defined
-
-# Syntax to use for infinite loops.
-#
-# 0: Leave syntax alone (default)
-# 1: Rewrite as `for(;;)`
-# 2: Rewrite as `while(true)`
-# 3: Rewrite as `do`...`while(true);`
-# 4: Rewrite as `while(1)`
-# 5: Rewrite as `do`...`while(1);`
-#
-# Infinite loops that do not already match one of these syntaxes are ignored.
-# Other options that affect loop formatting will be applied after transforming
-# the syntax.
-mod_infinite_loop = 0 # unsigned number
-
-# Add or remove the 'int' keyword in 'int short'.
-mod_int_short = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'short int'.
-mod_short_int = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'int long'.
-mod_int_long = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'long int'.
-mod_long_int = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'int signed'.
-mod_int_signed = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'signed int'.
-mod_signed_int = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'int unsigned'.
-mod_int_unsigned = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'unsigned int'.
-mod_unsigned_int = ignore # ignore/add/remove/force/not_defined
-
-# If there is a situation where mod_int_* and mod_*_int would result in
-# multiple int keywords, whether to keep the rightmost int (the default) or the
-# leftmost int.
-mod_int_prefer_int_on_left = false # true/false
-
-# (OC) Whether to organize the properties. If true, properties will be
-# rearranged according to the mod_sort_oc_property_*_weight factors.
-mod_sort_oc_properties = false # true/false
-
-# (OC) Weight of a class property modifier.
-mod_sort_oc_property_class_weight = 0 # number
-
-# (OC) Weight of 'atomic' and 'nonatomic'.
-mod_sort_oc_property_thread_safe_weight = 0 # number
-
-# (OC) Weight of 'readwrite' when organizing properties.
-mod_sort_oc_property_readwrite_weight = 0 # number
-
-# (OC) Weight of a reference type specifier ('retain', 'copy', 'assign',
-# 'weak', 'strong') when organizing properties.
-mod_sort_oc_property_reference_weight = 0 # number
-
-# (OC) Weight of getter type ('getter=') when organizing properties.
-mod_sort_oc_property_getter_weight = 0 # number
-
-# (OC) Weight of setter type ('setter=') when organizing properties.
-mod_sort_oc_property_setter_weight = 0 # number
-
-# (OC) Weight of nullability type ('nullable', 'nonnull', 'null_unspecified',
-# 'null_resettable') when organizing properties.
-mod_sort_oc_property_nullability_weight = 0 # number
-
-#
-# Preprocessor options
-#
-
-# How to use tabs when indenting preprocessor code.
-#
-# -1: Use 'indent_with_tabs' setting (default)
-# 0: Spaces only
-# 1: Indent with tabs to brace level, align with spaces
-# 2: Indent and align with tabs, using spaces when not on a tabstop
-#
-# Default: -1
-pp_indent_with_tabs = -1 # number
-
-# Add or remove indentation of preprocessor directives inside #if blocks
-# at brace level 0 (file-level).
-pp_indent = ignore # ignore/add/remove/force/not_defined
-
-# Whether to indent #if/#else/#endif at the brace level. If false, these are
-# indented from column 1.
-pp_indent_at_level = false # true/false
-
-# Whether to indent #if/#else/#endif at the parenthesis level if the brace
-# level is 0. If false, these are indented from column 1.
-pp_indent_at_level0 = false # true/false
-
-# Specifies the number of columns to indent preprocessors per level
-# at brace level 0 (file-level). If pp_indent_at_level=false, also specifies
-# the number of columns to indent preprocessors per level
-# at brace level > 0 (function-level).
-#
-# Default: 1
-pp_indent_count = 1 # unsigned number
-
-# Add or remove space after # based on pp level of #if blocks.
-pp_space_after = ignore # ignore/add/remove/force/not_defined
-
-# Sets the number of spaces per level added with pp_space_after.
-pp_space_count = 0 # unsigned number
-
-# The indent for '#region' and '#endregion' in C# and '#pragma region' in
-# C/C++. Negative values decrease indent down to the first column.
-pp_indent_region = 0 # number
-
-# Whether to indent the code between #region and #endregion.
-pp_region_indent_code = false # true/false
-
-# If pp_indent_at_level=true, sets the indent for #if, #else and #endif when
-# not at file-level. Negative values decrease indent down to the first column.
-#
-# =0: Indent preprocessors using output_tab_size
-# >0: Column at which all preprocessors will be indented
-pp_indent_if = 0 # number
-
-# Whether to indent the code between #if, #else and #endif.
-pp_if_indent_code = false # true/false
-
-# Whether to indent the body of an #if that encompasses all the code in the file.
-pp_indent_in_guard = false # true/false
-
-# Whether to indent '#define' at the brace level. If false, these are
-# indented from column 1.
-pp_define_at_level = false # true/false
-
-# Whether to indent '#include' at the brace level.
-pp_include_at_level = false # true/false
-
-# Whether to ignore the '#define' body while formatting.
-pp_ignore_define_body = false # true/false
-
-# An offset value that controls the indentation of the body of a multiline #define.
-# 'body' refers to all the lines of a multiline #define except the first line.
-# Requires 'pp_ignore_define_body = false'.
-#
-# <0: Absolute column: the body indentation starts off at the specified column
-# (ex. -3 ==> the body is indented starting from column 3)
-# >=0: Relative to the column of the '#' of '#define'
-# (ex. 3 ==> the body is indented starting 3 columns at the right of '#')
-#
-# Default: 8
-pp_multiline_define_body_indent = 8 # number
-
-# Whether to indent case statements between #if, #else, and #endif.
-# Only applies to the indent of the preprocessor that the case statements
-# directly inside of.
-#
-# Default: true
-pp_indent_case = true # true/false
-
-# Whether to indent whole function definitions between #if, #else, and #endif.
-# Only applies to the indent of the preprocessor that the function definition
-# is directly inside of.
-#
-# Default: true
-pp_indent_func_def = true # true/false
-
-# Whether to indent extern C blocks between #if, #else, and #endif.
-# Only applies to the indent of the preprocessor that the extern block is
-# directly inside of.
-#
-# Default: true
-pp_indent_extern = true # true/false
-
-# How to indent braces directly inside #if, #else, and #endif.
-# Requires pp_if_indent_code=true and only applies to the indent of the
-# preprocessor that the braces are directly inside of.
-# 0: No extra indent
-# 1: Indent by one level
-# -1: Preserve original indentation
-#
-# Default: 1
-pp_indent_brace = 1 # number
-
-# Whether to print warning messages for unbalanced #if and #else blocks.
-# This will print a message in the following cases:
-# - if an #ifdef block ends on a different indent level than
-# where it started from. Example:
-#
-# #ifdef TEST
-# int i;
-# {
-# int j;
-# #endif
-#
-# - an #elif/#else block ends on a different indent level than
-# the corresponding #ifdef block. Example:
-#
-# #ifdef TEST
-# int i;
-# #else
-# }
-# int j;
-# #endif
-pp_warn_unbalanced_if = false # true/false
-
-#
-# Sort includes options
-#
-
-# The regex for include category with priority 0.
-include_category_0 = "" # string
-
-# The regex for include category with priority 1.
-include_category_1 = "" # string
-
-# The regex for include category with priority 2.
-include_category_2 = "" # string
-
-#
-# Use or Do not Use options
-#
-
-# true: indent_func_call_param will be used (default)
-# false: indent_func_call_param will NOT be used
-#
-# Default: true
-use_indent_func_call_param = true # true/false
-
-# The value of the indentation for a continuation line is calculated
-# differently if the statement is:
-# - a declaration: your case with QString fileName ...
-# - an assignment: your case with pSettings = new QSettings( ...
-#
-# At the second case the indentation value might be used twice:
-# - at the assignment
-# - at the function call (if present)
-#
-# To prevent the double use of the indentation value, use this option with the
-# value 'true'.
-#
-# true: indent_continue will be used only once
-# false: indent_continue will be used every time (default)
-#
-# Requires indent_ignore_first_continue=false.
-use_indent_continue_only_once = false # true/false
-
-# The indentation can be:
-# - after the assignment, at the '[' character
-# - at the beginning of the lambda body
-#
-# true: indentation will be at the beginning of the lambda body
-# false: indentation will be after the assignment (default)
-indent_cpp_lambda_only_once = false # true/false
-
-# Whether sp_after_angle takes precedence over sp_inside_fparen. This was the
-# historic behavior, but is probably not the desired behavior, so this is off
-# by default.
-use_sp_after_angle_always = false # true/false
-
-# Whether to apply special formatting for Qt SIGNAL/SLOT macros. Essentially,
-# this tries to format these so that they match Qt's normalized form (i.e. the
-# result of QMetaObject::normalizedSignature), which can slightly improve the
-# performance of the QObject::connect call, rather than how they would
-# otherwise be formatted.
-#
-# See options_for_QT.cpp for details.
-#
-# Default: true
-use_options_overriding_for_qt_macros = true # true/false
-
-# If true: the form feed character is removed from the list of whitespace
-# characters. See https://en.cppreference.com/w/cpp/string/byte/isspace.
-use_form_feed_no_more_as_whitespace_character = false # true/false
-
-#
-# Warn levels - 1: error, 2: warning (default), 3: note
-#
-
-# (C#) Warning is given if doing tab-to-\t replacement and we have found one
-# in a C# verbatim string literal.
-#
-# Default: 2
-warn_level_tabs_found_in_verbatim_string_literals = 2 # unsigned number
-
-# Limit the number of loops.
-# Used by uncrustify.cpp to exit from infinite loop.
-# 0: no limit.
-debug_max_number_of_loops = 0 # number
-
-# Set the number of the line to protocol;
-# Used in the function prot_the_line if the 2. parameter is zero.
-# 0: nothing protocol.
-debug_line_number_to_protocol = 0 # number
-
-# Set the number of second(s) before terminating formatting the current file,
-# 0: no timeout.
-# only for linux
-debug_timeout = 0 # number
-
-# Set the number of characters to be printed if the text is too long,
-# 0: do not truncate.
-debug_truncate = 0 # unsigned number
-
-# sort (or not) the tracking info.
-#
-# Default: true
-debug_sort_the_tracks = true # true/false
-
-# decode (or not) the flags as a new line.
-# only if the -p option is set.
-debug_decode_the_flags = false # true/false
-
-# insert the number of the line at the beginning of each line
-set_numbering_for_html_output = false # true/false
-
-# Meaning of the settings:
-# Ignore - do not do any changes
-# Add - makes sure there is 1 or more space/brace/newline/etc
-# Force - makes sure there is exactly 1 space/brace/newline/etc,
-# behaves like Add in some contexts
-# Remove - removes space/brace/newline/etc
-#
-#
-# - Token(s) can be treated as specific type(s) with the 'set' option:
-# `set tokenType tokenString [tokenString...]`
-#
-# Example:
-# `set BOOL __AND__ __OR__`
-#
-# tokenTypes are defined in src/token_enum.h, use them without the
-# 'CT_' prefix: 'CT_BOOL' => 'BOOL'
-#
-#
-# - Token(s) can be treated as type(s) with the 'type' option.
-# `type tokenString [tokenString...]`
-#
-# Example:
-# `type int c_uint_8 Rectangle`
-#
-# This can also be achieved with `set TYPE int c_uint_8 Rectangle`
-#
-#
-# To embed whitespace in tokenStrings use the '\' escape character, or quote
-# the tokenStrings. These quotes are supported: "'`
-#
-#
-# - Support for the auto detection of languages through the file ending can be
-# added using the 'file_ext' command.
-# `file_ext langType langString [langString..]`
-#
-# Example:
-# `file_ext CPP .ch .cxx .cpp.in`
-#
-# langTypes are defined in uncrusify_types.h in the lang_flag_e enum, use
-# them without the 'LANG_' prefix: 'LANG_CPP' => 'CPP'
-#
-#
-# - Custom macro-based indentation can be set up using 'macro-open',
-# 'macro-else' and 'macro-close'.
-# `(macro-open | macro-else | macro-close) tokenString`
-#
-# Example:
-# `macro-open BEGIN_TEMPLATE_MESSAGE_MAP`
-# `macro-open BEGIN_MESSAGE_MAP`
-# `macro-close END_MESSAGE_MAP`
-#
-#
-# option(s) with 'not default' value: 0
-#
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/index.html b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/index.html
deleted file mode 100644
index 01d057f7..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/index.html
+++ /dev/null
@@ -1,183 +0,0 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <title>Uncrustify - Source Code Beautifier for C-like languages</title>
- <link rel="stylesheet" type="text/css" href="uncrustify1.css" />
- <!-- <link rel="shortcut icon" href="images/favicon.ico" /> -->
-</head>
-<body lang="en-us" dir="ltr">
-
-<div align="center">
-<table>
-<tr>
-<td align="center">
-<div class="node1" align="center">
-<div class="node2" align="left">
-<h1>Uncrustify</h1>
-<h2>Source Code Beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA</h2>
-<table>
- <tr>
- <td valign="top">
- <script type='text/javascript' language='JavaScript' src='http://www.ohloh.net/projects/4765/badge_js'></script>
- </td>
- <td valign="top">
- <a href="https://travis-ci.org/uncrustify/uncrustify/builds">
- <img alt="Travis CI Build Status"
- src="https://travis-ci.org/uncrustify/uncrustify.svg?branch=master"/>
- </a>
- </td>
- <td valign="top">
- <a href="https://scan.coverity.com/projects/uncrustify">
- <img alt="Coverity Scan Build Status"
- src="https://scan.coverity.com/projects/8264/badge.svg"/>
- </a>
- </td>
- </tr>
-</table>
-
-<h2>Introduction</h2>
-<p>The goals of this project are simple:
-Create a highly configurable, easily modifiable source code beautifier.</p>
-
-<br />
-
-<h2>Features</h2>
-<ul>
- <li>Indent code, aligning on parens, assignments, etc</li>
- <li>Align on '=' and variable definitions</li>
- <li>Align structure initializers</li>
- <li>Align #define stuff</li>
- <li>Align backslash-newline stuff</li>
- <li>Reformat comments (a little bit)</li>
- <li>Fix inter-character spacing</li>
- <li>Add or remove parens on return statements</li>
- <li>Add or remove braces on single-statement if/do/while/for statements</li>
- <li>Supports embedded SQL 'EXEC SQL' stuff</li>
- <li>Highly configurable - 828 configurable options as of version 0.76.0</li>
-</ul>
-
-<p>
- See some example <a href="examples/example.c">output</a>.
-</p>
-
-<br />
-
-<h2>Where to get Uncrustify</h2>
-
-<h3>Project Websites</h3>
-<a href="http://sourceforge.net/projects/uncrustify/">Sourceforge project web site</a><BR>
-<a href="http://sourceforge.net/projects/uncrustify/files/">Release downloads</a><br>
-<a href="http://freshmeat.net/projects/uncrustify/">Freshmeat Project</a><BR>
-<a href="http://github.com/uncrustify/uncrustify">Git Hub</a><br>
-
-<h3>Source Code</h3>
-As of release 0.54, the source code is maintained in a <a href="http://git-scm.com/">Git</a> repository.<br>
-<br>
-The public Git URL for Sourceforge.net is <br>
-<code>git://uncrustify.git.sourceforge.net/gitroot/uncrustify/uncrustify</code><br>
-<br>
-The public Git URL for github.com is <br>
-<code>git://github.com/uncrustify/uncrustify.git</code><br>
-
-<h3>Prebuilt binaries</h3>
-Windows (i386) :
-<a href="http://sourceforge.net/project/showfiles.php?group_id=153164">Sourceforge</A><BR>
-
-<h3>Universal Indent GUI</h3>
-<a href="http://universalindent.sourceforge.net/">Universal Indent GUI</a> is a
-cross-platform graphical configuration file editor for many code beautifiers, including Uncrustify.
-
-<br />
-
-<h2>Want to help?</h2>
-<p>
-The most helpful way is to try it out and give feedback.
-Documentation and examples are available in the source tree, so check it out.
-</p>
-<p>
-You can find the output from 'uncrustify --show-config' <a href="config.txt">here</a>.<br />
-Here is the <a href="default.cfg">default config file</a>.
-And one I set up for <a href="linux.cfg.txt">Linux</a>.<br />
-And here is a <a href="examples/c-1.in.c">before</a> and <a href="examples/c-1.out.c">after</a> C source example.<br />
-That should give you a pretty good idea of what Uncrustify can do.<br />
-</p>
-
-<p>
-If you find a bug, please do the following:
-</p>
-<ul>
-<li>Reduce the input source file to the minimum that still has the problem</li>
-<li>Use the sourceforget.net bug tracker</li>
-<li>Attach the input source file, the configuration file, and a file that contains the expected output</li>
-</ul>
-
-<p>
-If you want to add a feature, fix a bug, or implement missing functionality, feel free to do so! Patches are welcome!<BR/>
-Here are some areas that need attention:
-</p>
-<ul>
- <li>Test Java support and provide feedback (or patches!)</li>
- <li>Test Objective C support and provide feedback (or patches!)</li>
- <li>Test Embedded SQL to see what works</li>
- <li>This web page need a (re)design</li>
- <li>A logo of some sort</li>
- <li>Examples that can be put on this website to show off what Uncrustify can do</li>
- <li>Anything else that you want to do to make it better?</li>
-</ul>
-
-<h3>Project Mailing list</h3>
-We don't have a mailing list for Uncrustify.<BR/>
-We are using <a href="https://github.com/uncrustify/uncrustify/">github</a>.
-<br>
-You may use <a href="https://github.com/uncrustify/uncrustify/issues">Issues</a> to publish an error report.
-<br>
-Or <a href="https://github.com/uncrustify/uncrustify/pulls">PR</a> to make a bugfix proposal.
-
-<br />
-
-<h2>Portability</h2>
-<p>
-I'm pretty sure that I'm not using anything that is OS-specific.<br />
-The software has been tested on the following operating systems:
-</p>
-<ul>
- <li>Linux</li>
- <li>QNX</li>
- <li>OS X</li>
- <li>FreeBSD, NetBSD, OpenBSD</li>
- <li>Sun Solaris 9</li>
- <li>Windows XP (binary available)</li>
-</ul>
-
-<br />
-
-<h2>Links</h2>
-<ul>
- <li><a href="http://universalindent.sourceforge.net/">Universal Indent GUI</a></li>
- <li>Don't know what D is? Check out the <a href="http://dlang.org/index.html">D Programming Language website</a>.</li>
- <li><a href="http://www.linuxlinks.com">Linux Links</a></li>
-</ul>
-<h2>Distributions that package Uncrustify</h2>
-<ul>
- <li><A href="http://www.debian.org/">Debian</A>
- <li><A href="http://fedora.redhat.com/">Fedora</A></li>
- <li><A href="http://www.altlinux.com/">ALT Linux</A></li>
- <li><A href="http://www.t2-project.org/">T2</A></li>
- <li><A href="http://www.macports.org/">MacPorts</a></li>
- <li><A href="http://www.freebsd.org/cgi/ports.cgi?query=uncrustify">FreeBSD Ports (textproc/uncrustify)</a></li>
- <li><A href="http://openports.se/textproc/uncrustify">OpenBSD Ports (textproc/uncrustify)</a></li>
- <li>Others?</li>
-</ul>
-</div>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<br />
-<a href="http://sourceforge.net/donate/index.php?group_id=153164">"Support This Project"</a>
-<br />
-
-</body>
-</html>
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/linux.cfg.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/linux.cfg.txt
deleted file mode 100644
index 7c3bc772..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/linux.cfg.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-#
-# uncrustify config file for the linux kernel
-#
-
-indent_with_tabs = 2 # 1=indent to level only, 2=indent with tabs
-input_tab_size = 8 # original tab size
-output_tab_size = 8 # new tab size
-indent_columns = output_tab_size
-
-indent_label = 1 # pos: absolute col, neg: relative column
-
-
-#
-# 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_var_def_blk_end_func_top = 1
-nl_fcall_brace = remove # "list_for_each() {" vs "list_for_each()\n{"
-nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
-# nl_after_return = TRUE;
-# nl_before_case = 1
-
-
-#
-# Source code modifications
-#
-
-mod_paren_on_return = remove # "return 1;" vs "return (1);"
-mod_full_brace_if = remove # "if (a) a--;" vs "if (a) { a--; }"
-mod_full_brace_for = remove # "for () a--;" vs "for () { a--; }"
-mod_full_brace_do = remove # "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
-
-
-#
-# 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_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();"
-
-
-#
-# Aligning stuff
-#
-
-align_with_tabs = TRUE # use tabs to align
-align_on_tabstop = TRUE # 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 = 3 # align stuff in a structure init '= { }'
-align_right_cmt_span = 3
-# align_pp_define_span = 8;
-# align_pp_define_gap = 4;
-
-# cmt_star_cont = FALSE
-
-# indent_brace = 0
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Align.html b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Align.html
deleted file mode 100644
index 474e9564..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Align.html
+++ /dev/null
@@ -1,44 +0,0 @@
-#define SUCCESS 0
- █
-align_pp_define_gap
-The minimum space between label and value of a preprocessor define
-
-#define SetType(tt) do { \
- LOG_FUNC_CALL(); \
- SetTypeReal((tt)); \
-} while (false)
-align_nl_cont = true
-
-#define LOG_STR(sev, str, len) \
- if (log_sev_on(sev)) { log_str(sev, str, len); }
- █
-nl_after_brace_close
-
-
-extern struct cp_data cpd;
-
-extern bool QT_SIGNAL_SLOT_found;
-extern int QT_SIGNAL_SLOT_level;
-extern bool restoreValues;
-align_var_def_span █
-
-enum argval_t
-{
- AV_IGNORE = 0,
- AV_ADD = 1,
- AV_REMOVE = 2,
- AV_FORCE = 3, /**< remove + add */
- AV_NOT_DEFINED = 4 /* to be used with QT, SIGNAL SLOT macros */
-};
- █
-align_var_struct_span
-
-
- UO_indent_var_def_blk, // indent a variable def block that appears at the top
- UO_indent_var_def_cont,
- UO_indent_shift, // if a shift expression spans multiple lines, indent
-
- UO_indent_min_vbrace_open, // min. indent after virtual brace open and newline
- UO_indent_vbrace_open_on_tabstop, // when identing after virtual brace open and newline add further spaces to reach next tabstop
-
-align_right_cmt_span
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/paren_stack.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/paren_stack.txt
deleted file mode 100644
index 109709dc..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/paren_stack.txt
+++ /dev/null
@@ -1,221 +0,0 @@
-
-=-----------------------------------------------------------------------------=
-* *
-* Paren Stack *
-* *
-=-----------------------------------------------------------------------------=
-
-At the heart of this algorithm are two stacks.
-There is the Paren Stack (PS) and the Frame stack.
-
-The PS (pse in the code) keeps track of braces, parens,
-if/else/switch/do/while/etc items -- anything that is nestable.
-
-Complex statements go through some of these BS_ stages:
- BS_PAREN1 - paren on if/for/switch/while, etc
- BS_PAREN2 - paren on do{}while()
- BS_BRACE_DO - brace set on do{}
- BS_BRACE2 - brace on if/else/for/switch/while
- BS_ELSE - expecting 'else' after 'if'
- BS_ELSEIF - expecting 'if' after 'else'
- BS_WHILE - expecting 'while' after 'do'
-
-The file is processed one token at a time to support #if/#else/#endif
-preprocessors at any point.
-
-Take this simple if statement as an example:
-
- if ( x )
- {
- x--;
- }
-
-The stack would look like so:
-The format is first the token processed and then the PSE stack as it appears
-AFTER the token is processed.
-
-'if' [IF - PAREN1]
-'(' [IF - PAREN1] [SPAREN OPEN]
-'x' [IF - PAREN1] [SPAREN OPEN]
-')' [IF - BRACE2] <- note that the stage was changed on SPAREN_CLOSE
-'{' [IF - BRACE2] [BRACE OPEN]
-'x' [IF - BRACE2] [BRACE OPEN]
-'--' [IF - BRACE2] [BRACE OPEN]
-';' [IF - BRACE2] [BRACE OPEN]
-'}' [IF - ELSE]
- <- lack of else kills the ELSE, closes statement
-
-Virtual brace example:
- if ( x )
- x--;
- else if (y)
- y--;
- else
- z++;
-
-'if' [IF - PAREN1]
-'(' [IF - PAREN1] [SPAREN OPEN]
-'x' [IF - PAREN1] [SPAREN OPEN]
-')' [IF - BRACE2]
-'x' [IF - BRACE2] [VBRACE OPEN] <- VBrace open inserted before because
- the token was not '{'
-'--' [IF - BRACE2] [VBRACE OPEN]
-';' [IF - ELSE] <- Semicolon causes a VBrace close to be
- inserted after the semicolon
-'else' [ELSE - ELSEIF] <- IF changed into ELSE, expect IF or BRACE
-'x' [ELSE - BRACE2] [VBRACE OPEN] <- lack of '{' -> VBrace
-'++' [ELSE - BRACE2] [VBRACE OPEN]
-';' <- VBrace close inserted after semicolon
- ELSE removed after statement close
-
-Nested virtual brace example: (EOF represents the end of the file)
- if ( x )
- if (y)
- y--;
- else
- z++;
- EOF
-
-'if' [IF - PAREN1]
-'(' [IF - PAREN1] [PAREN OPEN]
-'x' [IF - PAREN1] [PAREN OPEN]
-')' [IF - BRACE2]
-'if' [IF - BRACE2] [VBRACE OPEN] [IF - PAREN1] <- VBrace on BRACE2, IF opened
-'(' [IF - BRACE2] [VBRACE OPEN] [IF - PAREN1] [SPAREN OPEN]
-'y' [IF - BRACE2] [VBRACE OPEN] [IF - PAREN1] [SPAREN OPEN]
-')' [IF - BRACE2] [VBRACE OPEN] [IF - BRACE2]
-'y' [IF - BRACE2] [VBRACE OPEN] [IF - BRACE2] [VBRACE OPEN]
-'--' [IF - BRACE2] [VBRACE OPEN] [IF - BRACE2] [VBRACE OPEN]
-';' [IF - BRACE2] [VBRACE OPEN] [IF - ELSE]
-'else' [IF - BRACE2] [VBRACE OPEN] [ELSE - ELSEIF]
-'z' [IF - BRACE2] [VBRACE OPEN] [ELSE - BRACE2] [VBRACE OPEN]
-'++' [IF - BRACE2] [VBRACE OPEN] [ELSE - BRACE2] [VBRACE OPEN]
-';' [IF - BRACE2] [VBRACE OPEN] [ELSE - BRACE2] - step1
- [IF - BRACE2] [VBRACE OPEN] - step2
- [IF - ELSE] - step3
-EOF
-
--- this last semi is more complicated - first it terminates the VBRACE and then
- the else, which then, since it is the end of a statement, terminates the
- VBRACE. That bumps the IF stage to ELSE.
- The EOF kills that off (since it is not an else)
-
-Order of operation:
-1) if TOS=VBRACE && PC=SEMI, insert VBRACE close, PC=>VBRACE close
-2) if PC=VBRACE close or PC=BRACE close, and TOS is complex (if/else/etc)
- then advance complex stage. If statement ends, pop and advance
-
-
-Stages for each complex statement:
-if
-IF-PAREN1, IF-BRACE2, IF-ELSE
-
-if/else
-IF-PAREN1, IF-BRACE2, IF-ELSE, ELSE-ELSEIF, ELSE-BRACE2
-
-if/else if/else
-IF-PAREN1, IF-BRACE2, IF-ELSE, ELSE-ELSEIF, IF-PAREN1, IF-BRACE2, IF-ELSE, ELSE-ELSEIF, ELSE-BRACE2
-
-for
-FOR-PAREN1, FOR-BRACE2
-
-while
-WHILE-PAREN1, WHILE-BRACE2
-
-switch
-SWITCH-PAREN1, SWITCH-BRACE2
-
-synchronized
-SYNCHRONIZED-PAREN1
-
-do/while
-DO-BRACE_DO, DO-WHILE, WHILE-PAREN2
-
-
-Another less-interesting example:
-
-{
- if (x)
- volatile
- {
- y++;
- }
- return y;
-}
-
-'{' [BRACE OPEN]
-'if' [BRACE OPEN] [IF - PAREN1]
-'(' [BRACE OPEN] [IF - PAREN1] [PAREN OPEN]
-'x' [BRACE OPEN] [IF - PAREN1] [PAREN OPEN]
-')' [BRACE OPEN] [IF - BRACE2]
-'volatile' [BRACE OPEN] [IF - BRACE2] [VBRACE OPEN] [VOLATILE - BRACE2]
-'{' [BRACE OPEN] [IF - BRACE2] [VBRACE OPEN] [VOLATILE - BRACE2] [BRACE OPEN]
-'y' [BRACE OPEN] [IF - BRACE2] [VBRACE OPEN] [VOLATILE - BRACE2] [BRACE OPEN]
-'++' [BRACE OPEN] [IF - BRACE2] [VBRACE OPEN] [VOLATILE - BRACE2] [BRACE OPEN]
-';' [BRACE OPEN] [IF - BRACE2] [VBRACE OPEN] [VOLATILE - BRACE2] [BRACE OPEN]
-'}' [BRACE OPEN] [IF - ELSE] <- the brace close ends brace-open,
- volatile-brace2 and vbrace-open
-'return' [BRACE OPEN] <- not else
-'y' [BRACE OPEN]
-';' [BRACE OPEN]
-'}' <- empties the stack
-
-
-=-----------------------------------------------------------------------------=
-* *
-* Parse Frames *
-* *
-=-----------------------------------------------------------------------------=
-
-The pse stack is kept on a frame stack.
-The frame stack is need for languages that support preprocessors (C, C++, C#)
-that can arbitrarily change code flow. It also isolates #define macros so
-that they are indented independently and do not affect the rest of the program.
-
-When an #if is hit, a copy of the current frame is push on the frame stack.
-When an #else/#elif is hit, a copy of the current stack is pushed under the
-#if frame and the original (pre-#if) frame is copied to the current frame.
-When #endif is hit, the top frame is popped.
-This has the following effects:
- - a simple #if / #endif does not affect program flow
- - #if / #else /#endif - continues from the #if clause
-
-When a #define is entered, the current frame is pushed and cleared.
-When a #define is exited, the frame is popped.
-
-
-Take this example, which isn't very exciting, as both the #if and #else parts
-end up with the same paren stack. This is the usual case.
-
-{
- foo(param1,
-#ifdef DEBUG
- "debug");
-#else
- "release");
-#endif
-}
-
-Right before the #ifdef, we have this for the paren stack:
- Top> [BRACE OPEN] [PAREN OPEN]
-
-The #ifdef pushes a copy of the current stack, so we have this:
- Top> [BRACE OPEN] [PAREN OPEN]
- [BRACE OPEN] [PAREN OPEN]
-
-The close paren after "debug" closes out the PAREN-OPEN on the top of the stack.
- Top> [BRACE OPEN]
- [BRACE OPEN] [PAREN OPEN]
-
-The #else swaps the top two frames.
- Top> [BRACE OPEN] [PAREN OPEN]
- [BRACE OPEN]
-
-Right after the #else, we hit another close paren after the "release".
- Top> [BRACE OPEN]
- [BRACE OPEN]
-
-At the #endif, the top of stack is thrown out, which restores us to the #if path.
- Top> [BRACE OPEN]
-
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/preprocessor_indentation.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/preprocessor_indentation.txt
deleted file mode 100644
index 7940de28..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/preprocessor_indentation.txt
+++ /dev/null
@@ -1,414 +0,0 @@
-
-Preprocessor blocks can arbitrarily alter the program flow and make indenting
-code a challenging task.
-
-This file covers the following topics:
-1) Uncrustify approach to indentation of preprocessor blocks
-2) Rationale for the chosen approach
-3) Recommendations for the user
-
-
----------------------------------------------------------
-Uncrustify approach to indentation of preprocessor blocks
----------------------------------------------------------
-
-Uncrustify handles different preprocessor blocks in different ways.
-There are just three simple rules to remember.
-
-A. #ifdef/#endif block
-----------------------
-The contents of the block are indented starting at the same brace level of the
-code preceding the block. Once #endif is reached, any indentation change caused
-by the block is discarded and the following code continues at the same brace
-level of the code preceding the block.
-
-B. #ifdef/#elif/#else/#endif block
-----------------------------------
-The contents of the #ifdef part of the block are indented starting at the same
-brace level of the code preceding the block.
-Once an #elif/#else is reached, the indentation restarts at the brace level of
-the code preceding the #ifdef part of the block. This is repeated for each
-#else and #elif part.
-Once #endif is reached, the following code continues at the same brace level
-reached at the end of the #ifdef part.
-
-C. #define block
-----------------
-The contents of the block are indented starting anew, therefore not following the
-indentation of the code preceding the block. Once the #define ends, any indentation
-change caused by the block is discarded and the following code continues at the same
-brace level of the code preceding the block.
-
-
----------------------------------
-Rationale for the chosen approach
----------------------------------
-
-Preprocessor blocks can be very hard to handle and there is no definitive
-correct way that works in all situations. Therefore a compromise approach is
-required, coupled with warning to the user when tricky code is encountered.
-
-A. #ifdef/#endif block
-----------------------
-Let's start with the simplest case, a balanced #ifdef/#endif block. This is a
-block that starts and ends at the same brace level. For example:
-
- some code A
- #ifdef TEST
- some code B
- #endif
- some code C
-
-or
-
- some code A
- #ifdef TEST
- {
- some code B
- }
- #endif
- some code C
-
-These cases are very easy to handle, since the indentation before, through and after
-the preprocessor block is consistent. There is no alteration of the brace level
-from 'some code A' to 'some code C'. Rule A applies nicely to the above code.
-
-Let's now look at a more complex example.
-
- some code A
- #ifdef TEST
- {
- some code B
- #endif
- some code C
- #ifdef TEST
- some code D
- }
- #endif
- some code E
-
-This contains two unbalanced #ifdef blocks. Most likely the programmer intended to
-use them in pair, but that is not important when it comes to indentation. The code
-above could be indented as:
-
- some code A
- #ifdef TEST
- {
- some code B
- #endif
- some code C
- #ifdef TEST
- some code D
- }
- #endif
- some code E
-
-or as:
-
- some code A
- #ifdef TEST
- {
- some code B
- #endif
- some code C
- #ifdef TEST
- some code D
- }
- #endif
- some code E
-
-Note how 'some code C' is indented differently in the two cases: in the first, the
-indentation change caused by the first #ifdef block is discarded, while in the
-second it is taken into consideration.
-Depending on the options used at compile time, the code in the preprocessor blocks
-could be included or not included in the final code, therefore none of the two
-options is superior to the other. A better approach would be to avoid the use
-of unbalanced preprocessor blocks, so that indentation of the code could be uniquely
-defined.
-Uncrustify follows the first version, discarding indentation changes caused by
-the #ifdef block. Warning messages about unbalanced preprocessor blocks can optionally
-be printed by using the option 'pp_warn_unbalanced_if'.
-
-B. #ifdef/#elif/#else/#endif block
-----------------------------------
-Let's start with the simplest case, a balanced #ifdef/#else/#endif block. This is a
-block where each part starts and ends at the same brace level. For example:
-
- some code A
- #ifdef TEST
- some code B
- #else
- some code C
- #endif
- some code D
-
-or
-
- some code A
- #ifdef TEST
- {
- some code B
- }
- #else
- {
- some code C
- }
- #endif
- some code D
-
-or even:
-
- some code A
- #ifdef TEST
- {
- some code B
- }
- #else
- some code C
- #endif
- some code D
-
-These cases are very easy to handle, since the indentation before, through and after
-the preprocessor blocks is consistent. There is no alteration of the brace level
-from 'some code A' to 'some code D'. Rule B applies nicely to the above code.
-
-Let's now look at a more complex example.
-
- some code A
- #ifdef TEST
- {
- some code B
- #else
- some code C
- #endif
- some code D
- #ifdef TEST
- some code E
- }
- #else
- some code F
- #endif
- some code G
-
-This once again raises the question of where 'some code D' should be placed and
-there is no unique best choice.
-Uncrustify has chosen (for reasons explained further below) to:
-- indent each part of an #ifdef/#elif/#else/#endif block starting at the brace
-level of the code preceding #ifdef.
-- continue after #endif at the indentation level reached at the end of the #ifdef
-part.
-This would result in the following formatted code:
-
- some code A
- #ifdef TEST
- {
- some code B
- #else
- some code C
- #endif
- some code D
- #ifdef TEST
- some code E
- }
- #else
- some code F
- #endif
- some code G
-
-And yes, the indentation of 'some code F' may surprise you a bit.
-Here is an even trickier example:
-
- some code A
- #ifdef TEST
- some code B
- #else
- {
- some code C
- #endif
- some code D
- #ifndef TEST
- some code E
- }
- #else
- some code F
- #endif
- some code G
-
-which results in this bizarre output, where 'some code G' is no
-longer aligned with 'some code A':
-
- some code A
- #ifdef TEST
- some code B
- #else
- {
- some code C
- #endif
- some code D
- #ifndef TEST
- some code E
- }
- #else
- some code F
- #endif
- some code G
-
-So why not simply discard all the indentation changes created by an
-#ifdef/#elif/#else/#endif block? The answer is simple: to make sure things
-still work fine after the #endif line! Without going into too much detail here
-(see the overview.odt and theory.txt files for more info) in addition to the
-visible braces, there is a thing called 'virtual braces' which also affects
-indentation. A common use of #ifdef/#elif/#else/#endif blocks is to do some
-different things on the same set of variables. In this case, there may not be
-any visible brace, but virtual braces may get modified between the code before
-and after the preprocessor block. Throwing away the whole thing would result
-in the code after #endif being formatted in a completely wrong manner.
-As an example, consider this piece of code:
-
- some code A
- if (cond1)
- some var = value1;
- else
- some var =
- #ifdef TEST
- value2;
- #else
- value3;
- #endif
- some code B
-
-The formatted version looks exactly like the original. But if the complete
-#ifdef/#else/#endif block was thrown away, the result would be as if 'some code B'
-was being indented as part of the else (not #else) block, at a position just after
-the = symbol. By retaining the changes made in the #ifdef part, the 'else' block
-is correctly handled and 'some code B' is indented as per its original position.
-
-C. #define block
-----------------
-Here is an example showing how #define works. The following code:
-
- {
- {
- some code A
- #define TEST \
- { \
- some defs \
- }
- some code B
- }
- }
-
-would be formatted as:
-
- {
- {
- some code A
- #define TEST \
- { \
- some defs \
- }
- some code B
- }
- }
-
-Notice how 'some code B' and 'some code A' are indented in the same way, while the
-#define body starts from anew.
-
-
-----------------------------
-Recommendations for the user
-----------------------------
-The golden rule is to avoid unbalanced preprocessor blocks. This keeps things
-simple and indentation can be uniquely defined. Existing unbalanced blocks should
-be reworked so that all braces are properly balanced, either outside or inside the
-preprocessor blocks.
-If you have a huge code base, it may be difficult to quickly find offending blocks.
-If the option 'pp_warn_unbalanced_if' is set to true, Uncrustify will print warning
-messages at the end of each unbalanced preprocessor block part based on the following rules:
-
-1) unbalanced #ifdef part
-This works for either an #ifdef/#endif block or the first part of an #ifdef/#elif/#else/#endif
-block. If the #ifdef ends at a brace level different from where it starts, a message will
-be displayed, highlighting both the starting and ending indentation levels.
-
-2) unbalanced #elif or #else part
-If such part ends at a different brace level than the corresponding #ifdef part, a message
-will be displayed highlighting the ending indentation levels of both the part in question
-and the respective #ifdef part.
-
-3) unbalanced #define
-If a #define ends at a brace level different from where it starts, a message will
-be displayed, highlighting the ending indentation level.
-
-Here is an example with a mix of balanced and unbalanced blocks, with line numbers in front
-for easier reference:
-
- 1 void Fun(int &data)
- 2 {
- 3 data = 1;
- 4
- 5 #ifdef MANUAL_LAYOUT
- 6 {
- 7 data = 2;
- 8 }
- 9 #endif
- 10
- 11 #ifdef MANUAL_LAYOUT
- 12 {
- 13 {
- 14 data = 2;
- 15 #elif TEST1
- 16 data = 21;
- 17 #elif TEST2
- 18 {
- 19 data = 22;
- 20 #elif TEST3
- 21 {
- 22 {
- 23 data = 22;
- 24 #else
- 25 {
- 26 {
- 27 data = 22;
- 28 #endif
- 29
- 30 data = 3;
- 31
- 32 #ifdef MANUAL_LAYOUT
- 33 {
- 34 data = 4;
- 35 #else
- 36 data = 5;
- 37 #endif
- 38
- 39 #ifdef MANUAL_LAYOUT
- 40 data = 6;
- 41 #else
- 42 data = 7;
- 43 #endif
- 44
- 45 #ifdef MANUAL_LAYOUT
- 46 }
- 47 }
- 48 #endif
- 49
- 50 #ifdef MANUAL_LAYOUT
- 51 }
- 52 #endif
- 53
- 54 data = 8;
- 55
- 56 data = 9;
- 57 }
-
-These are the warning messages related to unbalanced preprocessor blocks
-printed by Uncrustify when 'pp_warn_unbalanced_if' is true.
-
-fl_check(236): orig line is 15, unbalanced #if block braces (1), in-level is 1, out-level is 3
-fl_check(248): orig line is 17, unbalanced #if-#else block braces (1), #else out-level is 1, #if out-level is 3
-fl_check(248): orig line is 20, unbalanced #if-#else block braces (1), #else out-level is 2, #if out-level is 3
-fl_check(236): orig line is 35, unbalanced #if block braces (1), in-level is 3, out-level is 4
-fl_check(291): orig line is 37, unbalanced #if-#else block braces (2), #else out-level is 3, #if out-level is 4
-fl_check(321): orig line is 48, unbalanced #if block braces (2), in-level is 4, out-level is 2
-fl_check(321): orig line is 52, unbalanced #if block braces (2), in-level is 4, out-level is 3
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/amxmodx.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/amxmodx.cfg
deleted file mode 100644
index c81a3e07..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/amxmodx.cfg
+++ /dev/null
@@ -1,208 +0,0 @@
-#
-# AMX Mod X style for Pawn (or as close as possible)
-#
-
-#######################
-# Basic Indenting Stuff
-
-# (a/i/r) comment notation for add/ignore/remove which is the actual setting
-input_tab_size = 1 # tab size on input file: usually 8
-output_tab_size = 8 # tab size for output: usually 8
-indent_columns = 8 # ie 3 or 8
-indent_with_tabs = 2 # 1=only to the 'level' indent, 2=use tab indenting
-#indent_paren_nl = 1 # indent-align under paren for open followed by nl
-
-pp_indent = remove # indent preproc 1 space per level (a/i/r)
-pp_space_after = remove # spaces between # and word (add/ignore/remove)
-
-#indent_switch_case = 1 # spaces to indent case from switch
-#indent_case_brace = 0 # spaces to indent '{' from case
- # (usually 0 or indent_columns)
-
-#indent_brace = 0 # spaces to indent '{' from level (usually 0)
-indent_braces = 0 # whether to indent the braces or not
-#indent_label = 0 # 0=left >0=col from left (absolute column),
- # <0=sub from brace indent (relative column)
-
-indent_align_string = false # True/False - indent align broken strings
-indent_col1_comment = false # indent comments in column 1
-indent_func_call_param = false # indent continued function calls to indent_columns otherwise index_columns + spaces to align with open paren.
-
-indent_namespace = true # indent stuff inside namespace braces
-indent_class = true # indent stuff inside class braces
-
-
-############################
-# Misc Inter-element Spacing
-# Force,Ignore,Add,Remove
-
-# ignored by nl_*_brace = true
-sp_paren_brace = force # space between ')' and '{'
-sp_fparen_brace = force # space between ')' and '{' of function
-sp_sparen_brace = force # space between ')' and '{' of if, while, etc
-
-sp_after_cast = force # space after cast - "(int) a" vs "(int)a"
-
-sp_before_byref = force # space before '&' of 'fcn(int& idx)'
-
-sp_inside_fparen = force # space inside 'foo( xxx )' vs 'foo(xxx)'
-sp_inside_fparens = remove # space inside 'foo( )' vs 'foo()'
-sp_inside_paren = remove # space inside '+ ( xxx )' vs '+ (xxx)'
-sp_inside_square = remove # space inside 'byte[ 5 ]' vs 'byte[5]'
-sp_inside_sparen = force # space inside 'if( xxx )' vs 'if(xxx)'
-sp_inside_for = force # space inside 'for( xxx )' vs 'for(xxx)'
-sp_inside_angle = ignore # space inside '<>', as in '<class T>'
-
-sp_before_sparen = force # space before '(' of 'if/for/while/switch'
-sp_after_sparen = force # space after ')' of 'if/for/while/switch'
- # the do-while does not get set here
-
-sp_before_angle = ignore # space before '<>', as in '<class T>'
-sp_after_angle = ignore # space after '<>', as in '<class T>'
-
-sp_before_square = ignore # space before single '['
-sp_before_squares = remove # space before '[]', as in 'byte []'
-
-sp_paren_paren = force # space between nested parens - '( (' vs '(('
-
-sp_return_paren = remove # space between 'return' and '('
-sp_sizeof_paren = remove # space between 'sizeof' and '('
-
-sp_after_comma = force # space after ','
-
-sp_arith = force # space around + - / * etc
-sp_bool = force # space around || &&
-sp_compare = force # space around < > ==, etc
-sp_assign = force # space around =, +=, etc
-
-sp_func_def_paren = remove # space between 'func' and '(' - "foo (" vs "foo("
-sp_func_call_paren = remove # space between 'func' and '(' - "foo (" vs "foo("
-sp_func_proto_paren = remove # space between 'func' and '(' - "foo (" vs "foo("
-sp_func_class_paren = remove # space between ctor/dtor and '('
-
-#sp_type_func = 1 # space between return type and 'func'
- # a minimum of 1 is forced except for '*'
-
-
-sp_special_semi = remove # space empty stmt ';' on while, if, for
- # example "while (*p++ = ' ') ;"
-sp_before_semi = remove # space before all ';'
-sp_inside_braces = force # space inside '{' and '}' - "{ 1, 2, 3 }"
-sp_inside_braces_enum = force # space inside enum '{' and '}' - "{ a, b, c }"
-sp_inside_braces_struct = force # space inside struct/union '{' and '}'
-
-sp_macro = force # space between macro and value, ie '#define a 6'
-sp_macro_func = force # space between macro and value, ie '#define a 6'
-
-sp_square_fparen = remove # weird pawn stuff: native yark[rect](a[rect])
-sp_after_tag = remove # pawn: space after a tag colon
-
-
-################################
-# Code Alignment
-# (not left column spaces/tabs)
-
-align_with_tabs = true # use tabs for aligning (0/1)
-align_keep_tabs = false # keep non-indenting tabs
-align_on_tabstop = true # always align on tabstops
-align_nl_cont = false # align the back-slash \n combo (macros)
-align_enum_equ_span = 1 # align the '=' in enums
-align_assign_span = 1 # align on '='. 0=don't align
-align_assign_thresh = 0 # threshold for aligning on '='. 0=no limit
-align_right_cmt_span = 8 # align comment that end lines. 0=don't align
-align_var_def_span = 1 # align variable defs on variable (span for regular stuff)
-align_var_def_thresh = 0 # align variable defs threshold
-align_var_def_inline = true # also align inline struct/enum/union var defs
-align_var_def_star_style = 1 # the star is part of the variable name
-align_var_def_colon = false # align the colon in struct bit fields
-align_var_struct_span = 1 # span for struct/union (0=don't align)
-align_pp_define_span = 1 # align bodies in #define statements
-align_pp_define_gap = 1 # min space between define label and value "#define a <---> 16"
-
-align_struct_init_span = 1 # align structure initializer values
-align_func_proto_span = 1 # align function prototypes
-align_number_right = false # right-align numbers (not fully supported, yet)
-align_typedef_span = 1 # align single-line typedefs
-align_typedef_gap = 1 # minimum spacing
-align_typedef_star_style = 1 # Start aligning style
- # 0: '*' not part of type
- # 1: '*' part of the type - no space
- # 2: '*' part of type, dangling
-
-
-#####################################
-# Newline Adding and Removing Options
-# Add/Remove/Ignore
-
-nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
-nl_func_decl_start = ignore # newline after the '(' in a function decl
-nl_func_decl_args = ignore # newline after each ',' in a function decl
-nl_func_decl_end = ignore # newline before the ')' in a function decl
-nl_func_type_name = ignore # newline between return type and func name in def
-nl_var_def_blk_end_func_top = 0 # newline after a block of variable defs
-nl_before_case = false # newline before 'case' statement
-nl_after_return = false # newline after return statement
-nl_after_case = false # disallow nested "case 1: a=3;"
-nl_fcall_brace = add # newline between function call and open brace
-nl_squeeze_ifdef = false # no blanks after #ifxx, #elxx, or before #endif TRUE/F
-nl_enum_brace = ignore # nl between enum and brace
-nl_struct_brace = ignore # nl between struct and brace
-nl_union_brace = ignore # nl between union and brace
-nl_assign_brace = ignore # nl between '=' and brace
-nl_class_brace = ignore # nl between class name and brace
-nl_namespace_brace = ignore # nl between namespace name and brace
-
-nl_do_brace = add # nl between do and {
-nl_if_brace = add # nl between if and {
-nl_for_brace = add # nl between for and {
-nl_else_brace = remove # nl between else and {
-nl_while_brace = add # nl between while and {
-nl_switch_brace = add # nl between switch and {
-nl_brace_else = remove # nl between } and else
-nl_brace_while = add # nl between } and while of do stmt
-
-nl_elseif_brace = add # nl between close paren and open brace in 'else if () {'
-
-nl_define_macro = 0 # alter newlines in #define macros
-nl_start_of_file = ignore # alter newlines at the start of file
-nl_start_of_file_min = 0 # min number of newlines at the start of the file
-nl_end_of_file = ignore # alter newlines at the end of file
-nl_end_of_file_min = 0 # min number of newlines at the end of the file
-
-pos_bool = start # end=move &&/|| to EOL ignore=gnore, start=move to SOL
-
-#####################
-# Blank Line Options
-
-nl_before_block_comment = 3 # before a block comment (stand-alone
- # comment-multi), except after brace open
-nl_after_func_body = 3 # after the closing brace of a function body
-nl_after_func_proto = 3 # after each prototype
-nl_after_func_proto_group = 3 # after a block of prototypes
-nl_max = 3 # maximum consecutive newlines (3=2 lines)
-
-eat_blanks_after_open_brace = true # remove blank lines after {
-eat_blanks_before_close_brace = true # remove blank lines before }
-
-########################
-# Code Modifying Options
-# (non-whitespace)
-
-mod_paren_on_return = force # add or remove paren on return
-mod_full_brace_nl = 1 # max number of newlines to span w/o braces
-mod_full_brace_if = ignore # add or remove braces on if
-mod_full_brace_for = ignore # add or remove braces on for
-mod_full_brace_do = ignore # add or remove braces on do
-mod_full_brace_while = ignore # add or remove braces on while
-mod_pawn_semicolon = True # add optional semicolons
-mod_full_brace_function = add # add optional braces on Pawn functions
-
-
-#######################
-# Comment Modifications
-
-cmt_star_cont = true # put a star on subsequent comment lines
-cmt_cpp_to_c = true # convert CPP comments to C comments
-cmt_cpp_group = true # if UO_cmt_cpp_to_c, try to group in one big C comment
-cmt_cpp_nl_start = true # put a blank /* at the start of a converted group
-cmt_cpp_nl_end = true # put a nl before the */ in a converted group
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/ben.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/ben.cfg
deleted file mode 100644
index 58e7d2bd..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/ben.cfg
+++ /dev/null
@@ -1,1213 +0,0 @@
-#
-# General options
-#
-
-# The type of line endings
-newlines = lf # auto/lf/crlf/cr
-
-# The original size of tabs in the input
-input_tab_size = 8 # number
-
-# The size of tabs in the output (only used if align_with_tabs=true)
-output_tab_size = 3 # 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
-
-# Replace tab characters found in string literals with the escape sequence \t instead.
-string_replace_tab_chars = false # false/true
-
-# Allow interpreting '>=' and '>>=' as part of a template in 'void f(list<list<B>>=val);'.
-# If true (default), 'assert(x<0 && y>=3)' will be broken.
-# Improvements to template detection may make this option obsolete.
-tok_split_gte = false # false/true
-
-# Override the default ' *INDENT-OFF*' in comments for disabling processing of part of the file.
-disable_processing_cmt = "" # string
-
-# Override the default ' *INDENT-ON*' in comments for enabling processing of part of the file.
-enable_processing_cmt = "" # string
-
-# Enable parsing of digraphs. Default=false
-enable_digraphs = false # false/true
-
-# If the file contains bytes with values between 128 and 255, but is not UTF-8, then output as UTF-8
-utf8_byte = false # false/true
-
-# Force the output encoding to UTF-8
-utf8_force = false # false/true
-
-#
-# Indenting
-#
-
-# The number of columns to indent per level.
-# Usually 2, 3, 4, or 8.
-indent_columns = 3 # number
-
-# The continuation indent. If non-zero, this overrides the indent of '(' and '=' continuation indents.
-# For FreeBSD, this is set to 4. Negative value is absolute and not increased for each ( level
-indent_continue = 0 # number
-
-# How to use tabs when indenting code
-# 0=spaces only
-# 1=indent with tabs to brace level, align with spaces
-# 2=indent and align with tabs, using spaces when not on a tabstop
-indent_with_tabs = 0 # number
-
-# Comments that are not a brace level are indented with tabs on a tabstop.
-# Requires indent_with_tabs=2. If false, will use spaces.
-indent_cmt_with_tabs = false # false/true
-
-# Whether to indent strings broken by '\' so that they line up
-indent_align_string = true # 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
-
-# Disabled indenting class braces if indent_braces is true
-indent_braces_no_class = false # false/true
-
-# Disabled indenting struct braces if indent_braces is true
-indent_braces_no_struct = false # false/true
-
-# Indent based on the size of the brace parent, i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
-indent_brace_parent = false # false/true
-
-# Indent based on the paren open instead of the brace open in '({\n', default is to indent by brace.
-indent_paren_open_brace = false # false/true
-
-# Whether the 'namespace' body is indented
-indent_namespace = false # false/true
-
-# Only indent one namespace and no sub-namespaces.
-# Requires indent_namespace=true.
-indent_namespace_single_indent = false # false/true
-
-# The number of spaces to indent a namespace block
-indent_namespace_level = 0 # number
-
-# If the body of the namespace is longer than this number, it won't be indented.
-# Requires indent_namespace=true. Default=0 (no limit)
-indent_namespace_limit = 0 # number
-
-# Whether the 'extern "C"' body is indented
-indent_extern = false # false/true
-
-# Whether the 'class' body is indented
-indent_class = true # false/true
-
-# Whether to indent the stuff after a leading base class colon
-indent_class_colon = true # false/true
-
-# Indent based on a class colon instead of the stuff after the colon.
-# Requires indent_class_colon=true. Default=false
-indent_class_on_colon = false # false/true
-
-# Whether to indent the stuff after a leading class initializer colon
-indent_constr_colon = false # false/true
-
-# Virtual indent from the ':' for member initializers. Default is 2
-indent_ctor_init_leading = 2 # number
-
-# Additional indenting for constructor initializer list
-indent_ctor_init = 0 # number
-
-# False=treat 'else\nif' as 'else if' for indenting purposes
-# True=indent the 'if' one level
-indent_else_if = false # false/true
-
-# Amount to indent variable declarations after a open brace. neg=relative, pos=absolute
-indent_var_def_blk = 0 # number
-
-# Indent continued variable declarations instead of aligning.
-indent_var_def_cont = false # false/true
-
-# How to indent continued shift expressions ('<<' and '>>').
-# Set align_left_shift=false when using this.
-# 0: Align shift operators instead of indenting them (default)
-# 1: Indent by one level
-# -1: Preserve original indentation
-indent_shift = 0 # number
-
-# True: force indentation of function definition to start in column 1
-# False: use the default behavior
-indent_func_def_force_col1 = 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
-
-# Same as indent_func_call_param, but for templates
-indent_template_param = false # false/true
-
-# Double the indent for indent_func_xxx_param options
-indent_func_param_double = false # false/true
-
-# Indentation column for standalone 'const' function decl/proto qualifier
-indent_func_const = 0 # number
-
-# Indentation column for standalone 'throw' function decl/proto qualifier
-indent_func_throw = 0 # number
-
-# The number of spaces to indent a continued '->' or '.'
-# Usually set to 0, 1, or indent_columns.
-indent_member = 3 # number
-
-# Spaces to indent single line ('//') comments on lines before code
-indent_single_line_comments_before = 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 = 0 # 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 = 3 # 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
-# -1: Preserve original indentation
-indent_paren_close = 0 # number
-
-# Controls the indent of a comma when inside a paren.If 1, aligns under the open paren
-indent_comma_paren = 0 # number
-
-# Controls the indent of a BOOL operator when inside a paren.If 1, aligns under the open paren
-indent_bool_paren = 0 # number
-
-# If 'indent_bool_paren' is 1, controls the indent of the first expression. If TRUE, aligns the first expression to the following ones
-indent_first_bool_expr = 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
-
-# Align continued statements at the '='. Default=True
-# If FALSE or the '=' is followed by a newline, the next line is indent one tab.
-indent_align_assign = true # false/true
-
-# Indent OC blocks at brace level instead of usual rules.
-indent_oc_block = false # false/true
-
-# Indent OC blocks in a message relative to the parameter name.
-# 0=use indent_oc_block rules, 1+=spaces to indent
-indent_oc_block_msg = 0 # number
-
-# Minimum indent for subsequent parameters
-indent_oc_msg_colon = 0 # number
-
-# If true, prioritize aligning with initial colon (and stripping spaces from lines, if necessary).
-# Default is true.
-indent_oc_msg_prioritize_first_colon = true # false/true
-
-# If indent_oc_block_msg and this option are on, blocks will be indented the way that Xcode does by default (from keyword if the parameter is on its own line; otherwise, from the previous indentation level).
-indent_oc_block_msg_xcode_style = false # false/true
-
-# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is relative to a msg keyword.
-indent_oc_block_msg_from_keyword = false # false/true
-
-# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is relative to a msg colon.
-indent_oc_block_msg_from_colon = false # false/true
-
-# If indent_oc_block_msg and this option are on, blocks will be indented from where the block caret is.
-indent_oc_block_msg_from_caret = false # false/true
-
-# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is.
-indent_oc_block_msg_from_brace = false # false/true
-
-# When identing after virtual brace open and newline add further spaces to reach this min. indent.
-indent_min_vbrace_open = 0 # number
-
-# TRUE: When identing after virtual brace open and newline add further spaces after regular indent to reach next tabstop.
-indent_vbrace_open_on_tabstop = false # false/true
-
-#
-# Spacing options
-#
-
-# Add or remove space around arithmetic operator '+', '-', '/', '*', etc
-# also '>>>' '<<' '>>' '%' '|'
-sp_arith = force # ignore/add/remove/force
-
-# Add or remove space around assignment operator '=', '+=', etc
-sp_assign = force # ignore/add/remove/force
-
-# Add or remove space around preprocessor '##' concatenation operator. Default=Add
-sp_pp_concat = add # ignore/add/remove/force
-
-# Add or remove space after preprocessor '#' stringify operator. Also affects the '#@' charizing operator.
-sp_pp_stringify = add # ignore/add/remove/force
-
-# Add or remove space around boolean operators '&&' and '||'
-sp_bool = force # ignore/add/remove/force
-
-# Add or remove space around compare operator '<', '>', '==', etc
-sp_compare = force # ignore/add/remove/force
-
-# Add or remove space inside '(' and ')'
-sp_inside_paren = remove # ignore/add/remove/force
-
-# Add or remove space between nested parens: '((' vs ') )'
-sp_paren_paren = remove # ignore/add/remove/force
-
-# Whether to balance spaces inside nested parens
-sp_balance_nested_parens = false # false/true
-
-# Add or remove space before pointer star '*'
-sp_before_ptr_star = force # ignore/add/remove/force
-
-# Add or remove space between pointer stars '*'
-sp_between_ptr_star = remove # ignore/add/remove/force
-
-# Add or remove space after pointer star '*', if followed by a word.
-sp_after_ptr_star = remove # ignore/add/remove/force
-
-# Add or remove space before a reference sign '&'
-sp_before_byref = remove # ignore/add/remove/force
-
-# Add or remove space after reference sign '&', if followed by a word.
-sp_after_byref = force # ignore/add/remove/force
-
-# Add or remove space between type and word. Default=Force
-sp_after_type = force # ignore/add/remove/force
-
-# Add or remove space before '<>'
-sp_before_angle = remove # ignore/add/remove/force
-
-# Add or remove space inside '<' and '>'
-sp_inside_angle = remove # ignore/add/remove/force
-
-# Add or remove space after '<>'
-sp_after_angle = force # ignore/add/remove/force
-
-# Add or remove space between '>' and '>' in '>>' (template stuff C++/C# only). Default=Add
-sp_angle_shift = add # ignore/add/remove/force
-
-# Permit removal of the space between '>>' in 'foo<bar<int> >' (C++11 only). Default=False
-# sp_angle_shift cannot remove the space without this option.
-sp_permit_cpp11_shift = false # false/true
-
-# Add or remove space before '(' of 'if', 'for', 'switch', 'while', etc.
-sp_before_sparen = force # ignore/add/remove/force
-
-# Add or remove space inside if-condition '(' and ')'
-sp_inside_sparen = remove # ignore/add/remove/force
-
-# Add or remove space inside for-loop '(' and ')'
-sp_inside_for = remove # ignore/add/remove/force
-
-# Add or remove space after ')' of 'if', 'for', 'switch', and 'while', etc.
-sp_after_sparen = force # ignore/add/remove/force
-
-# Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while', etc.
-sp_sparen_brace = add # ignore/add/remove/force
-
-# Add or remove space before ';'. Default=Remove
-sp_before_semi = remove # ignore/add/remove/force
-
-# Add or remove space before a semicolon of an empty left part of a for statement.
-sp_before_semi_for_empty = force # ignore/add/remove/force
-
-# Add or remove space between the semicolons of an empty middle part of a for statement.
-sp_between_semi_for_empty = force # ignore/add/remove/force
-
-# Add or remove space after ';', except when followed by a comment. Default=Add
-sp_after_semi = add # ignore/add/remove/force
-
-# Add or remove space after ';' in non-empty 'for' statements. Default=Force
-sp_after_semi_for = force # ignore/add/remove/force
-
-# Add or remove space inside a non-empty '[' and ']'
-sp_inside_square = remove # ignore/add/remove/force
-
-# Add or remove space after ','
-sp_after_comma = force # ignore/add/remove/force
-
-# Add or remove space before ','
-sp_before_comma = remove # ignore/add/remove/force
-
-# Add or remove space between an open paren and comma: '(,' vs '( ,'
-sp_paren_comma = force # ignore/add/remove/force
-
-# Add or remove space before case ':'. Default=Remove
-sp_before_case_colon = remove # ignore/add/remove/force
-
-# Add or remove space after C/D cast, i.e. 'cast(int)a' vs 'cast(int) a' or '(int)a' vs '(int) a'
-sp_after_cast = remove # ignore/add/remove/force
-
-# Add or remove space between 'sizeof' and '('
-sp_sizeof_paren = remove # ignore/add/remove/force
-
-# Add or remove space inside enum '{' and '}'
-sp_inside_braces_enum = force # ignore/add/remove/force
-
-# Add or remove space inside struct/union '{' and '}'
-sp_inside_braces_struct = force # ignore/add/remove/force
-
-# Add or remove space inside '{' and '}'
-sp_inside_braces = force # 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 = force # 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 function '(' and ')'
-sp_inside_fparen = remove # ignore/add/remove/force
-
-# Add or remove space between ')' and '{' of function
-sp_fparen_brace = add # 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 = remove # ignore/add/remove/force
-
-# Add or remove space between 'return' and '('
-sp_return_paren = remove # ignore/add/remove/force
-
-# Add or remove space between '}' and the name of a typedef on the same line
-sp_brace_typedef = force # ignore/add/remove/force
-
-# Add or remove space between type and open brace of an unnamed temporary
-# direct-list-initialization.
-sp_type_brace_init_lst = add # ignore/add/remove/force
-
-# Add or remove space between a variable and '{' for a namespace
-sp_word_brace_ns = add # ignore/add/remove/force
-
-# Add or remove space before the '::' operator
-sp_before_dc = remove # ignore/add/remove/force
-
-# Add or remove space after the '::' operator
-sp_after_dc = remove # ignore/add/remove/force
-
-# Add or remove space after the '!' (not) operator. Default=Remove
-sp_not = remove # ignore/add/remove/force
-
-# Add or remove space after the '~' (invert) operator. Default=Remove
-sp_inv = remove # ignore/add/remove/force
-
-# Add or remove space after the '&' (address-of) operator. Default=Remove
-# 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. Default=Remove
-sp_member = remove # ignore/add/remove/force
-
-# Add or remove space after the '*' (dereference) operator. Default=Remove
-# 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'. Default=Remove
-sp_sign = remove # ignore/add/remove/force
-
-# Add or remove space before or after '++' and '--', as in '(--x)' or 'y++;'. Default=Remove
-sp_incdec = remove # ignore/add/remove/force
-
-# Add or remove space before a backslash-newline at the end of a line. Default=Add
-sp_before_nl_cont = add # ignore/add/remove/force
-
-# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make sense here.
-sp_case_label = remove # ignore/add/remove/force
-
-# TRUE: If space is added with sp_cmt_cpp_start, do it after doxygen sequences like '///', '///<', '//!' and '//!<'.
-sp_cmt_cpp_doxygen = false # false/true
-
-# TRUE: If space is added with sp_cmt_cpp_start, do it after Qt translator or meta-data comments like '//:', '//=', and '//~'.
-sp_cmt_cpp_qttr = false # false/true
-
-# Number of spaces before a trailing comment
-sp_num_before_tr_cmt = 0 # number
-
-#
-# Code alignment (not left column spaces/tabs)
-#
-
-# Whether to keep non-indenting tabs
-align_keep_tabs = false # false/true
-
-# Whether to use tabs for aligning
-align_with_tabs = false # false/true
-
-# Whether to bump out to the next tab when aligning
-align_on_tabstop = false # false/true
-
-# Whether to right-align numbers
-align_number_right = true # false/true
-
-# Whether to keep whitespace not required for alignment.
-align_keep_extra_space = false # false/true
-
-# Align variable definitions in prototypes and functions
-align_func_params = true # false/true
-
-# Align parameters in single-line functions that have the same name.
-# The function names must already be aligned with each other.
-align_same_func_call_params = false # false/true
-
-# The span for aligning parameters in single line functions with the same name (0=don't align).
-align_same_func_call_params_span = 0 # unsigned number
-
-# The thresh for aligning function call parameters (0=no limit).
-align_same_func_call_params_thresh = 0 # unsigned number
-
-# The span for aligning variable definitions (0=don't align)
-align_var_def_span = 1 # number
-
-# How to align the star in variable definitions.
-# 0=Part of the type 'void * foo;'
-# 1=Part of the variable 'void *foo;'
-# 2=Dangling 'void *foo;'
-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 = 0 # number
-
-# The threshold for aligning variable definitions (0=no limit)
-align_var_def_thresh = 16 # 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 any attribute after the variable name
-align_var_def_attribute = false # false/true
-
-# Whether to align inline struct/enum/union variable definitions
-align_var_def_inline = true # false/true
-
-# The span for aligning on '=' in assignments (0=don't align)
-align_assign_span = 1 # number
-
-# The threshold for aligning on '=' in assignments (0=no limit)
-align_assign_thresh = 12 # number
-
-# The span for aligning on '=' in enums (0=don't align)
-align_enum_equ_span = 16 # 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 = 99 # 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 = 3 # number
-
-# The minimum space between the type and the synonym of a typedef
-align_typedef_gap = 3 # number
-
-# The span for aligning single-line typedefs (0=don't align)
-align_typedef_span = 5 # 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 typedef 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 typedef 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 = 3 # 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
-
-# If a trailing comment is more than this number of columns away from the text it follows,
-# it will qualify for being aligned. This has to be > 0 to do anything.
-align_right_cmt_gap = 0 # number
-
-# Align trailing comment at or beyond column N; 'pulls in' comments as a bonus side effect (0=ignore)
-align_right_cmt_at_col = 0 # number
-
-# 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
-
-# Align function protos on the 'operator' keyword instead of what follows
-align_on_operator = false # false/true
-
-# 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 = true # false/true
-
-# # Align macro functions and variables together
-align_pp_define_together = false # false/true
-
-# The minimum space between label and value of a preprocessor define
-align_pp_define_gap = 4 # number
-
-# The span for aligning on '#define' bodies (0=don't align, other=number of lines including comments between blocks)
-align_pp_define_span = 3 # number
-
-# Align lines that start with '<<' with previous '<<'. Default=true
-align_left_shift = true # false/true
-
-# Align text after asm volatile () colons.
-align_asm_colon = true # false/true
-
-# Span for aligning parameters in an Obj-C message call on the ':' (0=don't align)
-align_oc_msg_colon_span = 0 # number
-
-# If true, always align with the first parameter, even if it is too short.
-align_oc_msg_colon_first = false # false/true
-
-# Aligning parameters in an Obj-C '+' or '-' declaration on the ':'
-align_oc_decl_colon = false # false/true
-
-#
-# 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 = true # false/true
-
-# Don't split one-line braced statements inside a class xx { } body
-nl_class_leave_one_liners = true # 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 C++11 lambdas - '[]() { return 0; }'
-nl_cpp_lambda_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
-
-# Don't split one-line while statements - 'while(a) b++;'
-nl_while_leave_one_liners = false # false/true
-
-# Don't split one-line OC messages
-nl_oc_msg_leave_one_liner = false # false/true
-
-# Add or remove newlines at the start of the file
-nl_start_of_file = remove # 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 = force # 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
-
-# The number of blank lines after a block of variable definitions at the top of a function body
-# 0 = No change (default)
-nl_var_def_blk_end_func_top = 1 # number
-
-# The number of newlines before a block of typedefs
-# 0 = No change (default)
-nl_typedef_blk_start = 0 # number
-
-# The number of newlines after a block of typedefs
-# 0 = No change (default)
-nl_typedef_blk_end = 0 # number
-
-# The maximum consecutive newlines within a block of typedefs
-# 0 = No change (default)
-nl_typedef_blk_in = 0 # number
-
-# The number of newlines before a block of variable definitions not at the top of a function body
-# 0 = No change (default)
-nl_var_def_blk_start = 0 # number
-
-# The number of newlines after a block of variable definitions not at the top of a function body
-# 0 = No change (default)
-nl_var_def_blk_end = 0 # number
-
-# The maximum consecutive newlines within a block of variable definitions
-# 0 = No change (default)
-nl_var_def_blk_in = 0 # number
-
-# Add or remove newline between a function call's ')' and '{', as in:
-# list_for_each(item, &list) { }
-nl_fcall_brace = add # ignore/add/remove/force
-
-# Add or remove newline between 'enum' and '{'
-nl_enum_brace = force # ignore/add/remove/force
-
-# Add or remove newline between 'struct and '{'
-nl_struct_brace = force # ignore/add/remove/force
-
-# Add or remove newline between 'union' and '{'
-nl_union_brace = force # 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' and '{'
-nl_else_brace = add # ignore/add/remove/force
-
-# Add or remove newline between get/set and '{'
-nl_getset_brace = force # ignore/add/remove/force
-
-# Add or remove newline between 'for' and '{'
-nl_for_brace = add # 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 = remove # ignore/add/remove/force
-
-# Add or remove newline between 'switch' and '{'
-nl_switch_brace = add # ignore/add/remove/force
-
-# 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 = false # false/true
-
-# Force a newline in a define after the macro name for multi-line defines.
-nl_multi_line_define = true # 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
-
-# Add or remove newline between a function name and the opening '('
-nl_func_paren = remove # ignore/add/remove/force
-
-# Whether to put each OC message parameter on a separate line
-# See nl_oc_msg_leave_one_liner
-nl_oc_msg_args = false # false/true
-
-# Add or remove newline between function signature and '{'
-nl_fdef_brace = add # ignore/add/remove/force
-
-# 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.
-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 = false # false/true
-
-# Whether to put a newline after a virtual brace open with a non-empty body.
-# These occur in un-braced if/while/do/for statement bodies.
-nl_after_vbrace_open = false # false/true
-
-# Whether to put a newline after a virtual brace open with an empty body.
-# These occur in un-braced if/while/do/for statement bodies.
-nl_after_vbrace_open_empty = false # false/true
-
-# Whether to put a newline after a brace close.
-# Does not apply if followed by a necessary ';'.
-nl_after_brace_close = true # false/true
-
-# Whether to put a newline after a virtual brace close.
-# Would add a newline before return in: 'if (foo) a++; return;'
-nl_after_vbrace_close = 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'. Does not affect the whole-file #ifdef.
-nl_squeeze_ifdef = true # false/true
-
-# 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
-# (lower priority than 'eat_blanks_before_close_brace')
-nl_ds_struct_enum_close_brace = false # false/true
-
-# 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 = trail # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
-
-#
-# 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
-
-# Whether to split lines as close to code_width as possible and ignore some groupings
-ls_code_width = false # false/true
-
-#
-# Blank line options
-#
-
-# The maximum consecutive newlines
-nl_max = 4 # 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 = 2 # number
-
-# The number of newlines after '}' of a multi-line function body
-nl_after_func_body = 3 # number
-
-# The number of newlines after '}' of a multi-line function body in a class declaration
-nl_after_func_body_class = 2 # number
-
-# The number of newlines after '}' of a single line function body
-nl_after_func_body_one_liner = 0 # 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 = 2 # 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 multi-line comment.
-nl_after_multiline_comment = false # false/true
-
-# Whether to force a newline after a label's colon.
-nl_after_label_colon = false # false/true
-
-# The number of newlines after '}' or ';' of a struct/enum/union definition
-nl_after_struct = 0 # number
-
-# The number of newlines after '}' or ';' of a class definition
-nl_after_class = 0 # number
-
-# The number of newlines after '}' of a namespace
-nl_after_namespace = 0 # number
-
-# 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
-
-# The number of newlines between a function def and the function comment.
-# 0 = No change.
-nl_comment_func_def = 1 # number
-
-# The number of newlines after a try-catch-finally block that isn't followed by a brace close.
-# 0 = No change.
-nl_after_try_catch_finally = 0 # number
-
-# The number of newlines before and after a property, indexer or event decl.
-# 0 = No change.
-nl_around_cs_property = 0 # number
-
-# The number of newlines between the get/set/add/remove handlers in C#.
-# 0 = No change.
-nl_between_get_set = 0 # number
-
-# Whether to remove blank lines after '{'
-eat_blanks_after_open_brace = true # false/true
-
-# Whether to remove blank lines before '}'
-eat_blanks_before_close_brace = true # false/true
-
-# How aggressively to remove extra newlines not in preproc.
-# 0: No change
-# 1: Remove most newlines not handled by other config
-# 2: Remove all newlines and reformat completely by config
-nl_remove_extra_newlines = 0 # number
-
-# Whether to put a blank line before 'return' statements, unless after an open brace.
-nl_before_return = false # false/true
-
-# Whether to put a blank line after 'return' statements, unless followed by a close brace.
-nl_after_return = true # 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 'if' statement. Will not remove the braces if they contain an 'else'.
-mod_full_brace_if = add # ignore/add/remove/force
-
-# Make all if/elseif/else statements in a chain be braced or not. Overrides mod_full_brace_if.
-# If any must be braced, they are all braced. If all can be unbraced, then the braces are removed.
-mod_full_brace_if_chain = 0 # unsigned number
-
-# 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
-
-# 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 = true # 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 = 0 # number
-
-# If a namespace 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_namespace_closebrace_comment = 0 # 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 = 0 # number
-
-# If an #ifdef body exceeds the specified number of newlines and doesn't have a comment after
-# the #endif, a comment will be added.
-mod_add_long_ifdef_endif_comment = 0 # number
-
-# If an #ifdef or #else body exceeds the specified number of newlines and doesn't have a comment after
-# the #else, a comment will be added.
-mod_add_long_ifdef_else_comment = 0 # 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
-
-# If TRUE, it will move a 'break' that appears after a fully braced 'case' before the close brace.
-mod_move_case_break = false # false/true
-
-# Will add or remove the braces around a fully braced case statement.
-# Will only remove the braces if there are no variable declarations in the block.
-mod_case_brace = remove # ignore/add/remove/force
-
-# If TRUE, it will remove a void 'return;' that appears as the last statement in a function.
-mod_remove_empty_return = true # false/true
-
-#
-# Comment modifications
-#
-
-# Try to wrap comments at cmt_width columns
-cmt_width = 0 # number
-
-# Set the comment reflow mode (default: 0)
-# 0: no reflowing (apart from the line wrapping due to cmt_width)
-# 1: no touching at all
-# 2: full reflow
-cmt_reflow_mode = 0 # number
-
-# Whether to convert all tabs to spaces in comments. Default is to leave tabs inside comments alone, unless used for indenting.
-cmt_convert_tab_to_spaces = false # false/true
-
-# If false, disable all multi-line comment changes, including cmt_width. keyword substitution, and leading chars.
-# Default is true.
-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 = true # false/true
-
-# The number of spaces to insert at the start of subsequent comment lines
-cmt_sp_before_star_cont = 0 # number
-
-# The number of spaces to insert after the star on subsequent comment lines
-cmt_sp_after_star_cont = 0 # number
-
-# For multi-line comments with a '*' lead, remove leading spaces if the first and last lines of
-# the comment are the same length. Default=True
-cmt_multi_check_last = true # false/true
-
-# 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 substitute $(filename) with the current file's name.
-cmt_insert_file_header = "" # string
-
-# The filename that contains text to insert at the end of a file if the file doesn't end with a C/C++ comment.
-# Will substitute $(filename) with the current file's name.
-cmt_insert_file_footer = "" # string
-
-# The filename that contains text to insert before a function implementation if the function isn't preceded with a C/C++ comment.
-# Will substitute $(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 = "" # string
-
-# The filename that contains text to insert before a class if the class isn't preceded with a C/C++ comment.
-# Will substitute $(class) with the class name.
-cmt_insert_class_header = "" # string
-
-# The filename that contains text to insert before a Obj-C message specification if the method isn't preceded with a C/C++ comment.
-# Will substitute $(message) with the function name and $(javaparam) with the javadoc @param and @return stuff.
-cmt_insert_oc_msg_header = "" # string
-
-# If a preprocessor is encountered when stepping backwards from a function name, then
-# this option decides whether the comment should be inserted.
-# Affects cmt_insert_oc_msg_header, cmt_insert_func_header and cmt_insert_class_header.
-cmt_insert_before_preproc = false # false/true
-
-#
-# Preprocessor options
-#
-
-# Control indent of preprocessors inside #if blocks at brace level 0 (file-level)
-pp_indent = remove # ignore/add/remove/force
-
-# Whether to indent #if/#else/#endif at the brace level (true) or from column 1 (false)
-pp_indent_at_level = false # false/true
-
-# Whether to indent #if/#else/#endif at the parenthesis level if the brace
-# level is 0. If false, these are indented from column 1.
-pp_indent_at_level0 = false # false/true
-
-# Specifies the number of columns to indent preprocessors per level at brace level 0 (file-level).
-# If pp_indent_at_level=false, specifies the number of columns to indent preprocessors per level at brace level > 0 (function-level).
-# Default=1.
-pp_indent_count = 1 # number
-
-# Sets the number of spaces added with pp_space_after
-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.
-# 0: indent preprocessors using output_tab_size.
-# >0: column at which all preprocessors will be indented.
-pp_indent_if = 0 # number
-
-# Control whether to indent the code between #if, #else and #endif.
-pp_if_indent_code = false # false/true
-
-# Whether to indent '#define' at the brace level (true) or from column 1 (false)
-pp_define_at_level = false # false/true
-
-#
-# Use or Do not Use options
-#
-
-# True: indent_func_call_param will be used
-# False: indent_func_call_param will NOT be used
-use_indent_func_call_param = true # false/true
-
-# True: indent_continue will be used only once
-# False: indent_continue will be used every time (default)
-use_indent_continue_only_once = false # 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
-#
-# You can assign any keyword to any type with the set option.
-# set func_call_user _ N_
-#
-# The full syntax description of all custom definition config entries
-# is shown below:
-#
-# define custom tokens as:
-# - embed whitespace in token using '' escape character, or
-# put token in quotes
-# - these: ' " and ` are recognized as quote delimiters
-#
-# type token1 token2 token3 ...
-# ^ optionally specify multiple tokens on a single line
-# define def_token output_token
-# ^ output_token is optional, then NULL is assumed
-# macro-open token
-# macro-close token
-# macro-else token
-# set id token1 token2 ...
-# ^ optionally specify multiple tokens on a single line
-# ^ id is one of the names in token_enum.h sans the CT_ prefix,
-# e.g. PP_PRAGMA
-#
-# all tokens are separated by any mix of ',' commas, '=' equal signs
-# and whitespace (space, tab)
-#
-# You can add support for other file extensions using the 'file_ext' command.
-# The first arg is the language name used with the '-l' option.
-# The remaining args are file extensions, matched with 'endswith'.
-# file_ext CPP .ch .cxx .cpp.in
-#
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/ben2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/ben2.cfg
deleted file mode 100644
index fa27f08f..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/ben2.cfg
+++ /dev/null
@@ -1,84 +0,0 @@
-#
-# My favorite format
-#
-
-indent_with_tabs = 0 # 1=indent with tabs, 2=indent to level only
-input_tab_size = 8 # original tab size
-output_tab_size = 3 # new tab size
-indent_columns = output_tab_size
-indent_label = 2 # pos: absolute col, neg: relative column
-indent_align_string = False # align broken strings
-indent_brace = 0
-
-nl_enum_brace = add # "enum {" vs "enum \n {"
-nl_union_brace = add # "union {" vs "union \n {"
-nl_struct_brace = add # "struct {" vs "struct \n {"
-nl_do_brace = add # "do {" vs "do \n {"
-nl_if_brace = add # "if () {" vs "if () \n {"
-nl_for_brace = add # "for () {" vs "for () \n {"
-nl_else_brace = add # "else {" vs "else \n {"
-nl_while_brace = add # "while () {" vs "while () \n {"
-nl_switch_brace = add # "switch () {" vs "switch () \n {"
-nl_var_def_blk_end_func_top = 1
-nl_before_case = 1
-nl_fcall_brace = add # "foo() {" vs "foo()\n{"
-nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
-nl_after_return = TRUE
-nl_brace_while = remove
-nl_brace_else = add
-nl_squeeze_ifdef = 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_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_for = 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();"
-
-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 = 3
-align_right_cmt_span = 3
-align_pp_define_span = 3
-align_pp_define_gap = 4
-align_number_right = 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
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/d.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/d.cfg
deleted file mode 100644
index 7f5032d6..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/d.cfg
+++ /dev/null
@@ -1,84 +0,0 @@
-#
-# My favorite format
-#
-
-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 = 2 # pos: absolute col, neg: relative column
-indent_align_string = False # align broken strings
-indent_brace = 0
-
-nl_enum_brace = add # "enum {" vs "enum \n {"
-nl_union_brace = add # "union {" vs "union \n {"
-nl_struct_brace = add # "struct {" vs "struct \n {"
-nl_do_brace = add # "do {" vs "do \n {"
-nl_if_brace = add # "if () {" vs "if () \n {"
-nl_for_brace = add # "for () {" vs "for () \n {"
-nl_else_brace = add # "else {" vs "else \n {"
-nl_while_brace = add # "while () {" vs "while () \n {"
-nl_switch_brace = add # "switch () {" vs "switch () \n {"
-# nl_var_def_blk_end_func_top = 1
-# nl_before_case = 1
-nl_fcall_brace = add # "foo() {" vs "foo()\n{"
-nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
-# nl_after_return = TRUE
-nl_brace_while = remove
-nl_brace_else = add
-nl_squeeze_ifdef = 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_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 = add # "(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_for = 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();"
-
-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 = 3
-align_right_cmt_span = 3
-align_pp_define_span = 3
-align_pp_define_gap = 4
-align_number_right = 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
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/defaults.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/defaults.cfg
deleted file mode 100644
index 7c523470..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/defaults.cfg
+++ /dev/null
@@ -1,3593 +0,0 @@
-# Uncrustify-0.76.0
-
-#
-# General options
-#
-
-# The type of line endings.
-#
-# Default: auto
-newlines = auto # lf/crlf/cr/auto
-
-# The original size of tabs in the input.
-#
-# Default: 8
-input_tab_size = 8 # unsigned number
-
-# The size of tabs in the output (only used if align_with_tabs=true).
-#
-# Default: 8
-output_tab_size = 8 # unsigned number
-
-# The ASCII value of the string escape char, usually 92 (\) or (Pawn) 94 (^).
-#
-# Default: 92
-string_escape_char = 92 # unsigned number
-
-# Alternate string escape char (usually only used for Pawn).
-# Only works right before the quote char.
-string_escape_char2 = 0 # unsigned number
-
-# Replace tab characters found in string literals with the escape sequence \t
-# instead.
-string_replace_tab_chars = false # true/false
-
-# Allow interpreting '>=' and '>>=' as part of a template in code like
-# 'void f(list<list<B>>=val);'. If true, 'assert(x<0 && y>=3)' will be broken.
-# Improvements to template detection may make this option obsolete.
-tok_split_gte = false # true/false
-
-# Disable formatting of NL_CONT ('\\n') ended lines (e.g. multi-line macros).
-disable_processing_nl_cont = false # true/false
-
-# Specify the marker used in comments to disable processing of part of the
-# file.
-#
-# Default: *INDENT-OFF*
-disable_processing_cmt = " *INDENT-OFF*" # string
-
-# Specify the marker used in comments to (re)enable processing in a file.
-#
-# Default: *INDENT-ON*
-enable_processing_cmt = " *INDENT-ON*" # string
-
-# Enable parsing of digraphs.
-enable_digraphs = false # true/false
-
-# Option to allow both disable_processing_cmt and enable_processing_cmt
-# strings, if specified, to be interpreted as ECMAScript regular expressions.
-# If true, a regex search will be performed within comments according to the
-# specified patterns in order to disable/enable processing.
-processing_cmt_as_regex = false # true/false
-
-# Add or remove the UTF-8 BOM (recommend 'remove').
-utf8_bom = ignore # ignore/add/remove/force/not_defined
-
-# If the file contains bytes with values between 128 and 255, but is not
-# UTF-8, then output as UTF-8.
-utf8_byte = false # true/false
-
-# Force the output encoding to UTF-8.
-utf8_force = false # true/false
-
-#
-# Spacing options
-#
-
-# Add or remove space around non-assignment symbolic operators ('+', '/', '%',
-# '<<', and so forth).
-sp_arith = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around arithmetic operators '+' and '-'.
-#
-# Overrides sp_arith.
-sp_arith_additive = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around assignment operator '=', '+=', etc.
-sp_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around '=' in C++11 lambda capture specifications.
-#
-# Overrides sp_assign.
-sp_cpp_lambda_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the capture specification of a C++11 lambda when
-# an argument list is present, as in '[] <here> (int x){ ... }'.
-sp_cpp_lambda_square_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the capture specification of a C++11 lambda with
-# no argument list is present, as in '[] <here> { ... }'.
-sp_cpp_lambda_square_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the opening parenthesis and before the closing
-# parenthesis of a argument list of a C++11 lambda, as in
-# '[]( <here> int x <here> ){ ... }'.
-sp_cpp_lambda_argument_list = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the argument list of a C++11 lambda, as in
-# '[](int x) <here> { ... }'.
-sp_cpp_lambda_paren_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a lambda body and its call operator of an
-# immediately invoked lambda, as in '[]( ... ){ ... } <here> ( ... )'.
-sp_cpp_lambda_fparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around assignment operator '=' in a prototype.
-#
-# If set to ignore, use sp_assign.
-sp_assign_default = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before assignment operator '=', '+=', etc.
-#
-# Overrides sp_assign.
-sp_before_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after assignment operator '=', '+=', etc.
-#
-# Overrides sp_assign.
-sp_after_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space in 'enum {'.
-#
-# Default: add
-sp_enum_brace = add # ignore/add/remove/force/not_defined
-
-# Add or remove space in 'NS_ENUM ('.
-sp_enum_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around assignment '=' in enum.
-sp_enum_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before assignment '=' in enum.
-#
-# Overrides sp_enum_assign.
-sp_enum_before_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after assignment '=' in enum.
-#
-# Overrides sp_enum_assign.
-sp_enum_after_assign = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around assignment ':' in enum.
-sp_enum_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around preprocessor '##' concatenation operator.
-#
-# Default: add
-sp_pp_concat = add # ignore/add/remove/force/not_defined
-
-# Add or remove space after preprocessor '#' stringify operator.
-# Also affects the '#@' charizing operator.
-sp_pp_stringify = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before preprocessor '#' stringify operator
-# as in '#define x(y) L#y'.
-sp_before_pp_stringify = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around boolean operators '&&' and '||'.
-sp_bool = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around compare operator '<', '>', '==', etc.
-sp_compare = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '(' and ')'.
-sp_inside_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between nested parentheses, i.e. '((' vs. ') )'.
-sp_paren_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.
-sp_cparen_oparen = ignore # ignore/add/remove/force/not_defined
-
-# Whether to balance spaces inside nested parentheses.
-sp_balance_nested_parens = false # true/false
-
-# Add or remove space between ')' and '{'.
-sp_paren_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between nested braces, i.e. '{{' vs. '{ {'.
-sp_brace_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before pointer star '*'.
-sp_before_ptr_star = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before pointer star '*' that isn't followed by a
-# variable name. If set to ignore, sp_before_ptr_star is used instead.
-sp_before_unnamed_ptr_star = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between pointer stars '*', as in 'int ***a;'.
-sp_between_ptr_star = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after pointer star '*', if followed by a word.
-#
-# Overrides sp_type_func.
-sp_after_ptr_star = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after pointer caret '^', if followed by a word.
-sp_after_ptr_block_caret = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after pointer star '*', if followed by a qualifier.
-sp_after_ptr_star_qualifier = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after a pointer star '*', if followed by a function
-# prototype or function definition.
-#
-# Overrides sp_after_ptr_star and sp_type_func.
-sp_after_ptr_star_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after a pointer star '*' in the trailing return of a
-# function prototype or function definition.
-sp_after_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the pointer star '*' and the name of the variable
-# in a function pointer definition.
-sp_ptr_star_func_var = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the pointer star '*' and the name of the type
-# in a function pointer type definition.
-sp_ptr_star_func_type = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after a pointer star '*', if followed by an open
-# parenthesis, as in 'void* (*)()'.
-sp_ptr_star_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a pointer star '*', if followed by a function
-# prototype or function definition.
-sp_before_ptr_star_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a pointer star '*' in the trailing return of a
-# function prototype or function definition.
-sp_before_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a reference sign '&'.
-sp_before_byref = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a reference sign '&' that isn't followed by a
-# variable name. If set to ignore, sp_before_byref is used instead.
-sp_before_unnamed_byref = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after reference sign '&', if followed by a word.
-#
-# Overrides sp_type_func.
-sp_after_byref = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after a reference sign '&', if followed by a function
-# prototype or function definition.
-#
-# Overrides sp_after_byref and sp_type_func.
-sp_after_byref_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a reference sign '&', if followed by a function
-# prototype or function definition.
-sp_before_byref_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after a reference sign '&', if followed by an open
-# parenthesis, as in 'char& (*)()'.
-sp_byref_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between type and word. In cases where total removal of
-# whitespace would be a syntax error, a value of 'remove' is treated the same
-# as 'force'.
-#
-# This also affects some other instances of space following a type that are
-# not covered by other options; for example, between the return type and
-# parenthesis of a function type template argument, between the type and
-# parenthesis of an array parameter, or between 'decltype(...)' and the
-# following word.
-#
-# Default: force
-sp_after_type = force # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'decltype(...)' and word,
-# brace or function call.
-sp_after_decltype = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space before the parenthesis in the D constructs
-# 'template Foo(' and 'class Foo('.
-sp_before_template_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'template' and '<'.
-# If set to ignore, sp_before_angle is used.
-sp_template_angle = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before '<'.
-sp_before_angle = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '<' and '>'.
-sp_inside_angle = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '<>'.
-sp_inside_angle_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '>' and ':'.
-sp_angle_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after '>'.
-sp_after_angle = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '>' and '(' as found in 'new List<byte>(foo);'.
-sp_angle_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '>' and '()' as found in 'new List<byte>();'.
-sp_angle_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '>' and a word as in 'List<byte> m;' or
-# 'template <typename T> static ...'.
-sp_angle_word = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '>' and '>' in '>>' (template stuff).
-#
-# Default: add
-sp_angle_shift = add # ignore/add/remove/force/not_defined
-
-# (C++11) Permit removal of the space between '>>' in 'foo<bar<int> >'. Note
-# that sp_angle_shift cannot remove the space without this option.
-sp_permit_cpp11_shift = false # true/false
-
-# Add or remove space before '(' of control statements ('if', 'for', 'switch',
-# 'while', etc.).
-sp_before_sparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '(' and ')' of control statements other than
-# 'for'.
-sp_inside_sparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after '(' of control statements other than 'for'.
-#
-# Overrides sp_inside_sparen.
-sp_inside_sparen_open = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before ')' of control statements other than 'for'.
-#
-# Overrides sp_inside_sparen.
-sp_inside_sparen_close = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '(' and ')' of 'for' statements.
-sp_inside_for = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after '(' of 'for' statements.
-#
-# Overrides sp_inside_for.
-sp_inside_for_open = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before ')' of 'for' statements.
-#
-# Overrides sp_inside_for.
-sp_inside_for_close = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '((' or '))' of control statements.
-sp_sparen_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after ')' of control statements.
-sp_after_sparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and '{' of control statements.
-sp_sparen_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'do' and '{'.
-sp_do_brace_open = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '}' and 'while'.
-sp_brace_close_while = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'while' and '('. Overrides sp_before_sparen.
-sp_while_paren_open = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space between 'invariant' and '('.
-sp_invariant_paren = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space after the ')' in 'invariant (C) c'.
-sp_after_invariant_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before empty statement ';' on 'if', 'for' and 'while'.
-sp_special_semi = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before ';'.
-#
-# Default: remove
-sp_before_semi = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space before ';' in non-empty 'for' statements.
-sp_before_semi_for = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a semicolon of an empty left part of a for
-# statement, as in 'for ( <here> ; ; )'.
-sp_before_semi_for_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the semicolons of an empty middle part of a for
-# statement, as in 'for ( ; <here> ; )'.
-sp_between_semi_for_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after ';', except when followed by a comment.
-#
-# Default: add
-sp_after_semi = add # ignore/add/remove/force/not_defined
-
-# Add or remove space after ';' in non-empty 'for' statements.
-#
-# Default: force
-sp_after_semi_for = force # ignore/add/remove/force/not_defined
-
-# Add or remove space after the final semicolon of an empty part of a for
-# statement, as in 'for ( ; ; <here> )'.
-sp_after_semi_for_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before '[' (except '[]').
-sp_before_square = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before '[' for a variable definition.
-#
-# Default: remove
-sp_before_vardef_square = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space before '[' for asm block.
-sp_before_square_asm_block = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before '[]'.
-sp_before_squares = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before C++17 structured bindings.
-sp_cpp_before_struct_binding = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside a non-empty '[' and ']'.
-sp_inside_square = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '[]'.
-sp_inside_square_empty = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and
-# ']'. If set to ignore, sp_inside_square is used.
-sp_inside_square_oc_array = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.
-sp_after_comma = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.
-#
-# Default: remove
-sp_before_comma = remove # ignore/add/remove/force/not_defined
-
-# (C#, Vala) Add or remove space between ',' and ']' in multidimensional array type
-# like 'int[,,]'.
-sp_after_mdatype_commas = ignore # ignore/add/remove/force/not_defined
-
-# (C#, Vala) Add or remove space between '[' and ',' in multidimensional array type
-# like 'int[,,]'.
-sp_before_mdatype_commas = ignore # ignore/add/remove/force/not_defined
-
-# (C#, Vala) Add or remove space between ',' in multidimensional array type
-# like 'int[,,]'.
-sp_between_mdatype_commas = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between an open parenthesis and comma,
-# i.e. '(,' vs. '( ,'.
-#
-# Default: force
-sp_paren_comma = force # ignore/add/remove/force/not_defined
-
-# Add or remove space between a type and ':'.
-sp_type_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the variadic '...' when preceded by a
-# non-punctuator.
-# The value REMOVE will be overridden with FORCE
-sp_after_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before the variadic '...' when preceded by a
-# non-punctuator.
-# The value REMOVE will be overridden with FORCE
-sp_before_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a type and '...'.
-sp_type_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a '*' and '...'.
-sp_ptr_type_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and '...'.
-sp_paren_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '&&' and '...'.
-sp_byref_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and a qualifier such as 'const'.
-sp_paren_qualifier = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and 'noexcept'.
-sp_paren_noexcept = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after class ':'.
-sp_after_class_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before class ':'.
-sp_before_class_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after class constructor ':'.
-#
-# Default: add
-sp_after_constr_colon = add # ignore/add/remove/force/not_defined
-
-# Add or remove space before class constructor ':'.
-#
-# Default: add
-sp_before_constr_colon = add # ignore/add/remove/force/not_defined
-
-# Add or remove space before case ':'.
-#
-# Default: remove
-sp_before_case_colon = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'operator' and operator sign.
-sp_after_operator = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the operator symbol and the open parenthesis, as
-# in 'operator ++('.
-sp_after_operator_sym = ignore # ignore/add/remove/force/not_defined
-
-# Overrides sp_after_operator_sym when the operator has no arguments, as in
-# 'operator *()'.
-sp_after_operator_sym_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or
-# '(int)a' vs. '(int) a'.
-sp_after_cast = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove spaces inside cast parentheses.
-sp_inside_paren_cast = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the type and open parenthesis in a C++ cast,
-# i.e. 'int(exp)' vs. 'int (exp)'.
-sp_cpp_cast_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'sizeof' and '('.
-sp_sizeof_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'sizeof' and '...'.
-sp_sizeof_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'sizeof...' and '('.
-sp_sizeof_ellipsis_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '...' and a parameter pack.
-sp_ellipsis_parameter_pack = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a parameter pack and '...'.
-sp_parameter_pack_ellipsis = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'decltype' and '('.
-sp_decltype_paren = ignore # ignore/add/remove/force/not_defined
-
-# (Pawn) Add or remove space after the tag keyword.
-sp_after_tag = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside enum '{' and '}'.
-sp_inside_braces_enum = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside struct/union '{' and '}'.
-sp_inside_braces_struct = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'
-sp_inside_braces_oc_dict = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after open brace in an unnamed temporary
-# direct-list-initialization
-# if statement is a brace_init_lst
-# works only if sp_brace_brace is set to ignore.
-sp_after_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before close brace in an unnamed temporary
-# direct-list-initialization
-# if statement is a brace_init_lst
-# works only if sp_brace_brace is set to ignore.
-sp_before_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside an unnamed temporary direct-list-initialization
-# if statement is a brace_init_lst
-# works only if sp_brace_brace is set to ignore
-# works only if sp_before_type_brace_init_lst_close is set to ignore.
-sp_inside_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '{' and '}'.
-sp_inside_braces = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside '{}'.
-sp_inside_braces_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around trailing return operator '->'.
-sp_trailing_return = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between return type and function name. A minimum of 1
-# is forced except for pointer return types.
-sp_type_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between type and open brace of an unnamed temporary
-# direct-list-initialization.
-sp_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '(' on function declaration.
-sp_func_proto_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '()' on function declaration
-# without parameters.
-sp_func_proto_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '(' with a typedef specifier.
-sp_func_type_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between alias name and '(' of a non-pointer function type typedef.
-sp_func_def_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '()' on function definition
-# without parameters.
-sp_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside empty function '()'.
-# Overrides sp_after_angle unless use_sp_after_angle_always is set to true.
-sp_inside_fparens = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside function '(' and ')'.
-sp_inside_fparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside the first parentheses in a function type, as in
-# 'void (*x)(...)'.
-sp_inside_tparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the ')' and '(' in a function type, as in
-# 'void (*x)(...)'.
-sp_after_tparen_close = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ']' and '(' when part of a function call.
-sp_square_fparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and '{' of function.
-sp_fparen_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and '{' of a function call in object
-# initialization.
-#
-# Overrides sp_fparen_brace.
-sp_fparen_brace_initializer = ignore # ignore/add/remove/force/not_defined
-
-# (Java) Add or remove space between ')' and '{{' of double brace initializer.
-sp_fparen_dbrace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '(' on function calls.
-sp_func_call_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between function name and '()' on function calls without
-# parameters. If set to ignore (the default), sp_func_call_paren is used.
-sp_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between the user function name and '(' on function
-# calls. You need to set a keyword to be a user function in the config file,
-# like:
-# set func_call_user tr _ i18n
-sp_func_call_user_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside user function '(' and ')'.
-sp_func_call_user_inside_fparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between nested parentheses with user functions,
-# i.e. '((' vs. '( ('.
-sp_func_call_user_paren_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a constructor/destructor and the open
-# parenthesis.
-sp_func_class_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a constructor without parameters or destructor
-# and '()'.
-sp_func_class_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after 'return'.
-#
-# Default: force
-sp_return = force # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'return' and '('.
-sp_return_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'return' and '{'.
-sp_return_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '__attribute__' and '('.
-sp_attribute_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'defined' and '(' in '#if defined (FOO)'.
-sp_defined_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'throw' and '(' in 'throw (something)'.
-sp_throw_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'throw' and anything other than '(' as in
-# '@throw [...];'.
-sp_after_throw = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'catch' and '(' in 'catch (something) { }'.
-# If set to ignore, sp_before_sparen is used.
-sp_catch_paren = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between '@catch' and '('
-# in '@catch (something) { }'. If set to ignore, sp_catch_paren is used.
-sp_oc_catch_paren = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before Objective-C protocol list
-# as in '@protocol Protocol<here><Protocol_A>' or '@interface MyClass : NSObject<here><MyProtocol>'.
-sp_before_oc_proto_list = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between class name and '('
-# in '@interface className(categoryName)<ProtocolName>:BaseClass'
-sp_oc_classname_paren = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space between 'version' and '('
-# in 'version (something) { }'. If set to ignore, sp_before_sparen is used.
-sp_version_paren = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space between 'scope' and '('
-# in 'scope (something) { }'. If set to ignore, sp_before_sparen is used.
-sp_scope_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'super' and '(' in 'super (something)'.
-#
-# Default: remove
-sp_super_paren = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'this' and '(' in 'this (something)'.
-#
-# Default: remove
-sp_this_paren = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space between a macro name and its definition.
-sp_macro = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a macro function ')' and its definition.
-sp_macro_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'else' and '{' if on the same line.
-sp_else_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '}' and 'else' if on the same line.
-sp_brace_else = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '}' and the name of a typedef on the same line.
-sp_brace_typedef = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before the '{' of a 'catch' statement, if the '{' and
-# 'catch' are on the same line, as in 'catch (decl) <here> {'.
-sp_catch_brace = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before the '{' of a '@catch' statement, if the '{'
-# and '@catch' are on the same line, as in '@catch (decl) <here> {'.
-# If set to ignore, sp_catch_brace is used.
-sp_oc_catch_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '}' and 'catch' if on the same line.
-sp_brace_catch = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between '}' and '@catch' if on the same line.
-# If set to ignore, sp_brace_catch is used.
-sp_oc_brace_catch = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'finally' and '{' if on the same line.
-sp_finally_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between '}' and 'finally' if on the same line.
-sp_brace_finally = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'try' and '{' if on the same line.
-sp_try_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between get/set and '{' if on the same line.
-sp_getset_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a variable and '{' for C++ uniform
-# initialization.
-sp_word_brace_init_lst = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between a variable and '{' for a namespace.
-#
-# Default: add
-sp_word_brace_ns = add # ignore/add/remove/force/not_defined
-
-# Add or remove space before the '::' operator.
-sp_before_dc = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '::' operator.
-sp_after_dc = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove around the D named array initializer ':' operator.
-sp_d_array_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '!' (not) unary operator.
-#
-# Default: remove
-sp_not = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space between two '!' (not) unary operators.
-# If set to ignore, sp_not will be used.
-sp_not_not = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '~' (invert) unary operator.
-#
-# Default: remove
-sp_inv = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '&' (address-of) unary operator. This does not
-# affect the spacing after a '&' that is part of a type.
-#
-# Default: remove
-sp_addr = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space around the '.' or '->' operators.
-#
-# Default: remove
-sp_member = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '*' (dereference) unary operator. This does
-# not affect the spacing after a '*' that is part of a type.
-#
-# Default: remove
-sp_deref = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.
-#
-# Default: remove
-sp_sign = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space between '++' and '--' the word to which it is being
-# applied, as in '(--x)' or 'y++;'.
-#
-# Default: remove
-sp_incdec = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space before a backslash-newline at the end of a line.
-#
-# Default: add
-sp_before_nl_cont = add # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;'
-# or '+(int) bar;'.
-sp_after_oc_scope = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the colon in message specs,
-# i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.
-sp_after_oc_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before the colon in message specs,
-# i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.
-sp_before_oc_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the colon in immutable dictionary expression
-# 'NSDictionary *test = @{@"foo" :@"bar"};'.
-sp_after_oc_dict_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before the colon in immutable dictionary expression
-# 'NSDictionary *test = @{@"foo" :@"bar"};'.
-sp_before_oc_dict_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the colon in message specs,
-# i.e. '[object setValue:1];' vs. '[object setValue: 1];'.
-sp_after_send_oc_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before the colon in message specs,
-# i.e. '[object setValue:1];' vs. '[object setValue :1];'.
-sp_before_send_oc_colon = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the (type) in message specs,
-# i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'.
-sp_after_oc_type = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after the first (type) in message specs,
-# i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'.
-sp_after_oc_return_type = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between '@selector' and '(',
-# i.e. '@selector(msgName)' vs. '@selector (msgName)'.
-# Also applies to '@protocol()' constructs.
-sp_after_oc_at_sel = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between '@selector(x)' and the following word,
-# i.e. '@selector(foo) a:' vs. '@selector(foo)a:'.
-sp_after_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space inside '@selector' parentheses,
-# i.e. '@selector(foo)' vs. '@selector( foo )'.
-# Also applies to '@protocol()' constructs.
-sp_inside_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space before a block pointer caret,
-# i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'.
-sp_before_oc_block_caret = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after a block pointer caret,
-# i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'.
-sp_after_oc_block_caret = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between the receiver and selector in a message,
-# as in '[receiver selector ...]'.
-sp_after_oc_msg_receiver = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space after '@property'.
-sp_after_oc_property = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove space between '@synchronized' and the open parenthesis,
-# i.e. '@synchronized(foo)' vs. '@synchronized (foo)'.
-sp_after_oc_synchronized = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around the ':' in 'b ? t : f'.
-sp_cond_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before the ':' in 'b ? t : f'.
-#
-# Overrides sp_cond_colon.
-sp_cond_colon_before = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the ':' in 'b ? t : f'.
-#
-# Overrides sp_cond_colon.
-sp_cond_colon_after = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space around the '?' in 'b ? t : f'.
-sp_cond_question = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before the '?' in 'b ? t : f'.
-#
-# Overrides sp_cond_question.
-sp_cond_question_before = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the '?' in 'b ? t : f'.
-#
-# Overrides sp_cond_question.
-sp_cond_question_after = ignore # ignore/add/remove/force/not_defined
-
-# In the abbreviated ternary form '(a ?: b)', add or remove space between '?'
-# and ':'.
-#
-# Overrides all other sp_cond_* options.
-sp_cond_ternary_short = ignore # ignore/add/remove/force/not_defined
-
-# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make
-# sense here.
-sp_case_label = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space around the D '..' operator.
-sp_range = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after ':' in a Java/C++11 range-based 'for',
-# as in 'for (Type var : <here> expr)'.
-sp_after_for_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before ':' in a Java/C++11 range-based 'for',
-# as in 'for (Type var <here> : expr)'.
-sp_before_for_colon = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove space between 'extern' and '(' as in 'extern <here> (C)'.
-sp_extern_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the opening of a C++ comment, as in '// <here> A'.
-sp_cmt_cpp_start = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space in a C++ region marker comment, as in '// <here> BEGIN'.
-# A region marker is defined as a comment which is not preceded by other text
-# (i.e. the comment is the first non-whitespace on the line), and which starts
-# with either 'BEGIN' or 'END'.
-#
-# Overrides sp_cmt_cpp_start.
-sp_cmt_cpp_region = ignore # ignore/add/remove/force/not_defined
-
-# If true, space added with sp_cmt_cpp_start will be added after Doxygen
-# sequences like '///', '///<', '//!' and '//!<'.
-sp_cmt_cpp_doxygen = false # true/false
-
-# If true, space added with sp_cmt_cpp_start will be added after Qt translator
-# or meta-data comments like '//:', '//=', and '//~'.
-sp_cmt_cpp_qttr = false # true/false
-
-# Add or remove space between #else or #endif and a trailing comment.
-sp_endif_cmt = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after 'new', 'delete' and 'delete[]'.
-sp_after_new = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between 'new' and '(' in 'new()'.
-sp_between_new_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space between ')' and type in 'new(foo) BAR'.
-sp_after_newop_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space inside parentheses of the new operator
-# as in 'new(foo) BAR'.
-sp_inside_newop_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after the open parenthesis of the new operator,
-# as in 'new(foo) BAR'.
-#
-# Overrides sp_inside_newop_paren.
-sp_inside_newop_paren_open = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before the close parenthesis of the new operator,
-# as in 'new(foo) BAR'.
-#
-# Overrides sp_inside_newop_paren.
-sp_inside_newop_paren_close = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space before a trailing comment.
-sp_before_tr_cmt = ignore # ignore/add/remove/force/not_defined
-
-# Number of spaces before a trailing comment.
-sp_num_before_tr_cmt = 0 # unsigned number
-
-# Add or remove space before an embedded comment.
-#
-# Default: force
-sp_before_emb_cmt = force # ignore/add/remove/force/not_defined
-
-# Number of spaces before an embedded comment.
-#
-# Default: 1
-sp_num_before_emb_cmt = 1 # unsigned number
-
-# Add or remove space after an embedded comment.
-#
-# Default: force
-sp_after_emb_cmt = force # ignore/add/remove/force/not_defined
-
-# Number of spaces after an embedded comment.
-#
-# Default: 1
-sp_num_after_emb_cmt = 1 # unsigned number
-
-# (Java) Add or remove space between an annotation and the open parenthesis.
-sp_annotation_paren = ignore # ignore/add/remove/force/not_defined
-
-# If true, vbrace tokens are dropped to the previous token and skipped.
-sp_skip_vbrace_tokens = false # true/false
-
-# Add or remove space after 'noexcept'.
-sp_after_noexcept = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove space after '_'.
-sp_vala_after_translation = ignore # ignore/add/remove/force/not_defined
-
-# If true, a <TAB> is inserted after #define.
-force_tab_after_define = false # true/false
-
-#
-# Indenting options
-#
-
-# The number of columns to indent per level. Usually 2, 3, 4, or 8.
-#
-# Default: 8
-indent_columns = 8 # unsigned number
-
-# Whether to ignore indent for the first continuation line. Subsequent
-# continuation lines will still be indented to match the first.
-indent_ignore_first_continue = false # true/false
-
-# The continuation indent. If non-zero, this overrides the indent of '(', '['
-# and '=' continuation indents. Negative values are OK; negative value is
-# absolute and not increased for each '(' or '[' level.
-#
-# For FreeBSD, this is set to 4.
-# Requires indent_ignore_first_continue=false.
-indent_continue = 0 # number
-
-# The continuation indent, only for class header line(s). If non-zero, this
-# overrides the indent of 'class' continuation indents.
-# Requires indent_ignore_first_continue=false.
-indent_continue_class_head = 0 # unsigned number
-
-# Whether to indent empty lines (i.e. lines which contain only spaces before
-# the newline character).
-indent_single_newlines = false # true/false
-
-# The continuation indent for func_*_param if they are true. If non-zero, this
-# overrides the indent.
-indent_param = 0 # unsigned number
-
-# How to use tabs when indenting code.
-#
-# 0: Spaces only
-# 1: Indent with tabs to brace level, align with spaces (default)
-# 2: Indent and align with tabs, using spaces when not on a tabstop
-#
-# Default: 1
-indent_with_tabs = 1 # unsigned number
-
-# Whether to indent comments that are not at a brace level with tabs on a
-# tabstop. Requires indent_with_tabs=2. If false, will use spaces.
-indent_cmt_with_tabs = false # true/false
-
-# Whether to indent strings broken by '\' so that they line up.
-indent_align_string = false # true/false
-
-# The number of spaces to indent multi-line XML strings.
-# Requires indent_align_string=true.
-indent_xml_string = 0 # unsigned number
-
-# Spaces to indent '{' from level.
-indent_brace = 0 # unsigned number
-
-# Whether braces are indented to the body level.
-indent_braces = false # true/false
-
-# Whether to disable indenting function braces if indent_braces=true.
-indent_braces_no_func = false # true/false
-
-# Whether to disable indenting class braces if indent_braces=true.
-indent_braces_no_class = false # true/false
-
-# Whether to disable indenting struct braces if indent_braces=true.
-indent_braces_no_struct = false # true/false
-
-# Whether to indent based on the size of the brace parent,
-# i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
-indent_brace_parent = false # true/false
-
-# Whether to indent based on the open parenthesis instead of the open brace
-# in '({\n'.
-indent_paren_open_brace = false # true/false
-
-# (C#) Whether to indent the brace of a C# delegate by another level.
-indent_cs_delegate_brace = false # true/false
-
-# (C#) Whether to indent a C# delegate (to handle delegates with no brace) by
-# another level.
-indent_cs_delegate_body = false # true/false
-
-# Whether to indent the body of a 'namespace'.
-indent_namespace = false # true/false
-
-# Whether to indent only the first namespace, and not any nested namespaces.
-# Requires indent_namespace=true.
-indent_namespace_single_indent = false # true/false
-
-# The number of spaces to indent a namespace block.
-# If set to zero, use the value indent_columns
-indent_namespace_level = 0 # unsigned number
-
-# If the body of the namespace is longer than this number, it won't be
-# indented. Requires indent_namespace=true. 0 means no limit.
-indent_namespace_limit = 0 # unsigned number
-
-# Whether to indent only in inner namespaces (nested in other namespaces).
-# Requires indent_namespace=true.
-indent_namespace_inner_only = false # true/false
-
-# Whether the 'extern "C"' body is indented.
-indent_extern = false # true/false
-
-# Whether the 'class' body is indented.
-indent_class = false # true/false
-
-# Whether to ignore indent for the leading base class colon.
-indent_ignore_before_class_colon = false # true/false
-
-# Additional indent before the leading base class colon.
-# Negative values decrease indent down to the first column.
-# Requires indent_ignore_before_class_colon=false and a newline break before
-# the colon (see pos_class_colon and nl_class_colon)
-indent_before_class_colon = 0 # number
-
-# Whether to indent the stuff after a leading base class colon.
-indent_class_colon = false # true/false
-
-# Whether to indent based on a class colon instead of the stuff after the
-# colon. Requires indent_class_colon=true.
-indent_class_on_colon = false # true/false
-
-# Whether to ignore indent for a leading class initializer colon.
-indent_ignore_before_constr_colon = false # true/false
-
-# Whether to indent the stuff after a leading class initializer colon.
-indent_constr_colon = false # true/false
-
-# Virtual indent from the ':' for leading member initializers.
-#
-# Default: 2
-indent_ctor_init_leading = 2 # unsigned number
-
-# Virtual indent from the ':' for following member initializers.
-#
-# Default: 2
-indent_ctor_init_following = 2 # unsigned number
-
-# Additional indent for constructor initializer list.
-# Negative values decrease indent down to the first column.
-indent_ctor_init = 0 # number
-
-# Whether to indent 'if' following 'else' as a new block under the 'else'.
-# If false, 'else\nif' is treated as 'else if' for indenting purposes.
-indent_else_if = false # true/false
-
-# Amount to indent variable declarations after a open brace.
-#
-# <0: Relative
-# >=0: Absolute
-indent_var_def_blk = 0 # number
-
-# Whether to indent continued variable declarations instead of aligning.
-indent_var_def_cont = false # true/false
-
-# How to indent continued shift expressions ('<<' and '>>').
-# Set align_left_shift=false when using this.
-# 0: Align shift operators instead of indenting them (default)
-# 1: Indent by one level
-# -1: Preserve original indentation
-indent_shift = 0 # number
-
-# Whether to force indentation of function definitions to start in column 1.
-indent_func_def_force_col1 = false # true/false
-
-# Whether to indent continued function call parameters one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_func_call_param = false # true/false
-
-# Whether to indent continued function definition parameters one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_func_def_param = false # true/false
-
-# for function definitions, only if indent_func_def_param is false
-# Allows to align params when appropriate and indent them when not
-# behave as if it was true if paren position is more than this value
-# if paren position is more than the option value
-indent_func_def_param_paren_pos_threshold = 0 # unsigned number
-
-# Whether to indent continued function call prototype one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_func_proto_param = false # true/false
-
-# Whether to indent continued function call declaration one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_func_class_param = false # true/false
-
-# Whether to indent continued class variable constructors one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_func_ctor_var_param = false # true/false
-
-# Whether to indent continued template parameter list one indent level,
-# rather than aligning parameters under the open parenthesis.
-indent_template_param = false # true/false
-
-# Double the indent for indent_func_xxx_param options.
-# Use both values of the options indent_columns and indent_param.
-indent_func_param_double = false # true/false
-
-# Indentation column for standalone 'const' qualifier on a function
-# prototype.
-indent_func_const = 0 # unsigned number
-
-# Indentation column for standalone 'throw' qualifier on a function
-# prototype.
-indent_func_throw = 0 # unsigned number
-
-# How to indent within a macro followed by a brace on the same line
-# This allows reducing the indent in macros that have (for example)
-# `do { ... } while (0)` blocks bracketing them.
-#
-# true: add an indent for the brace on the same line as the macro
-# false: do not add an indent for the brace on the same line as the macro
-#
-# Default: true
-indent_macro_brace = true # true/false
-
-# The number of spaces to indent a continued '->' or '.'.
-# Usually set to 0, 1, or indent_columns.
-indent_member = 0 # unsigned number
-
-# Whether lines broken at '.' or '->' should be indented by a single indent.
-# The indent_member option will not be effective if this is set to true.
-indent_member_single = false # true/false
-
-# Spaces to indent single line ('//') comments on lines before code.
-indent_single_line_comments_before = 0 # unsigned number
-
-# Spaces to indent single line ('//') comments on lines after code.
-indent_single_line_comments_after = 0 # unsigned number
-
-# When opening a paren for a control statement (if, for, while, etc), increase
-# the indent level by this value. Negative values decrease the indent level.
-indent_sparen_extra = 0 # number
-
-# Whether to indent trailing single line ('//') comments relative to the code
-# instead of trying to keep the same absolute column.
-indent_relative_single_line_comments = false # true/false
-
-# Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.
-# It might be wise to choose the same value for the option indent_case_brace.
-indent_switch_case = 0 # unsigned number
-
-# Spaces to indent the body of a 'switch' before any 'case'.
-# Usually the same as indent_columns or indent_switch_case.
-indent_switch_body = 0 # unsigned number
-
-# Whether to ignore indent for '{' following 'case'.
-indent_ignore_case_brace = false # true/false
-
-# Spaces to indent '{' from 'case'. By default, the brace will appear under
-# the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.
-# It might be wise to choose the same value for the option indent_switch_case.
-indent_case_brace = 0 # number
-
-# indent 'break' with 'case' from 'switch'.
-indent_switch_break_with_case = false # true/false
-
-# Whether to indent preprocessor statements inside of switch statements.
-#
-# Default: true
-indent_switch_pp = true # true/false
-
-# Spaces to shift the 'case' line, without affecting any other lines.
-# Usually 0.
-indent_case_shift = 0 # unsigned number
-
-# Whether to align comments before 'case' with the 'case'.
-#
-# Default: true
-indent_case_comment = true # true/false
-
-# Whether to indent comments not found in first column.
-#
-# Default: true
-indent_comment = true # true/false
-
-# Whether to indent comments found in first column.
-indent_col1_comment = false # true/false
-
-# Whether to indent multi string literal in first column.
-indent_col1_multi_string_literal = false # true/false
-
-# Align comments on adjacent lines that are this many columns apart or less.
-#
-# Default: 3
-indent_comment_align_thresh = 3 # unsigned number
-
-# Whether to ignore indent for goto labels.
-indent_ignore_label = false # true/false
-
-# How to indent goto labels. Requires indent_ignore_label=false.
-#
-# >0: Absolute column where 1 is the leftmost column
-# <=0: Subtract from brace indent
-#
-# Default: 1
-indent_label = 1 # number
-
-# How to indent access specifiers that are followed by a
-# colon.
-#
-# >0: Absolute column where 1 is the leftmost column
-# <=0: Subtract from brace indent
-#
-# Default: 1
-indent_access_spec = 1 # number
-
-# Whether to indent the code after an access specifier by one level.
-# If true, this option forces 'indent_access_spec=0'.
-indent_access_spec_body = false # true/false
-
-# If an open parenthesis is followed by a newline, whether to indent the next
-# line so that it lines up after the open parenthesis (not recommended).
-indent_paren_nl = false # true/false
-
-# How to indent a close parenthesis after a newline.
-#
-# 0: Indent to body level (default)
-# 1: Align under the open parenthesis
-# 2: Indent to the brace level
-# -1: Preserve original indentation
-indent_paren_close = 0 # number
-
-# Whether to indent the open parenthesis of a function definition,
-# if the parenthesis is on its own line.
-indent_paren_after_func_def = false # true/false
-
-# Whether to indent the open parenthesis of a function declaration,
-# if the parenthesis is on its own line.
-indent_paren_after_func_decl = false # true/false
-
-# Whether to indent the open parenthesis of a function call,
-# if the parenthesis is on its own line.
-indent_paren_after_func_call = false # true/false
-
-# How to indent a comma when inside braces.
-# 0: Indent by one level (default)
-# 1: Align under the open brace
-# -1: Preserve original indentation
-indent_comma_brace = 0 # number
-
-# How to indent a comma when inside parentheses.
-# 0: Indent by one level (default)
-# 1: Align under the open parenthesis
-# -1: Preserve original indentation
-indent_comma_paren = 0 # number
-
-# How to indent a Boolean operator when inside parentheses.
-# 0: Indent by one level (default)
-# 1: Align under the open parenthesis
-# -1: Preserve original indentation
-indent_bool_paren = 0 # number
-
-# Whether to ignore the indentation of a Boolean operator when outside
-# parentheses.
-indent_ignore_bool = false # true/false
-
-# Whether to ignore the indentation of an arithmetic operator.
-indent_ignore_arith = false # true/false
-
-# Whether to indent a semicolon when inside a for parenthesis.
-# If true, aligns under the open for parenthesis.
-indent_semicolon_for_paren = false # true/false
-
-# Whether to ignore the indentation of a semicolon outside of a 'for'
-# statement.
-indent_ignore_semicolon = false # true/false
-
-# Whether to align the first expression to following ones
-# if indent_bool_paren=1.
-indent_first_bool_expr = false # true/false
-
-# Whether to align the first expression to following ones
-# if indent_semicolon_for_paren=true.
-indent_first_for_expr = false # true/false
-
-# If an open square is followed by a newline, whether to indent the next line
-# so that it lines up after the open square (not recommended).
-indent_square_nl = false # true/false
-
-# (ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies.
-indent_preserve_sql = false # true/false
-
-# Whether to ignore the indentation of an assignment operator.
-indent_ignore_assign = false # true/false
-
-# Whether to align continued statements at the '='. If false or if the '=' is
-# followed by a newline, the next line is indent one tab.
-#
-# Default: true
-indent_align_assign = true # true/false
-
-# If true, the indentation of the chunks after a '=' sequence will be set at
-# LHS token indentation column before '='.
-indent_off_after_assign = false # true/false
-
-# Whether to align continued statements at the '('. If false or the '(' is
-# followed by a newline, the next line indent is one tab.
-#
-# Default: true
-indent_align_paren = true # true/false
-
-# (OC) Whether to indent Objective-C code inside message selectors.
-indent_oc_inside_msg_sel = false # true/false
-
-# (OC) Whether to indent Objective-C blocks at brace level instead of usual
-# rules.
-indent_oc_block = false # true/false
-
-# (OC) Indent for Objective-C blocks in a message relative to the parameter
-# name.
-#
-# =0: Use indent_oc_block rules
-# >0: Use specified number of spaces to indent
-indent_oc_block_msg = 0 # unsigned number
-
-# (OC) Minimum indent for subsequent parameters
-indent_oc_msg_colon = 0 # unsigned number
-
-# (OC) Whether to prioritize aligning with initial colon (and stripping spaces
-# from lines, if necessary).
-#
-# Default: true
-indent_oc_msg_prioritize_first_colon = true # true/false
-
-# (OC) Whether to indent blocks the way that Xcode does by default
-# (from the keyword if the parameter is on its own line; otherwise, from the
-# previous indentation level). Requires indent_oc_block_msg=true.
-indent_oc_block_msg_xcode_style = false # true/false
-
-# (OC) Whether to indent blocks from where the brace is, relative to a
-# message keyword. Requires indent_oc_block_msg=true.
-indent_oc_block_msg_from_keyword = false # true/false
-
-# (OC) Whether to indent blocks from where the brace is, relative to a message
-# colon. Requires indent_oc_block_msg=true.
-indent_oc_block_msg_from_colon = false # true/false
-
-# (OC) Whether to indent blocks from where the block caret is.
-# Requires indent_oc_block_msg=true.
-indent_oc_block_msg_from_caret = false # true/false
-
-# (OC) Whether to indent blocks from where the brace caret is.
-# Requires indent_oc_block_msg=true.
-indent_oc_block_msg_from_brace = false # true/false
-
-# When indenting after virtual brace open and newline add further spaces to
-# reach this minimum indent.
-indent_min_vbrace_open = 0 # unsigned number
-
-# Whether to add further spaces after regular indent to reach next tabstop
-# when indenting after virtual brace open and newline.
-indent_vbrace_open_on_tabstop = false # true/false
-
-# How to indent after a brace followed by another token (not a newline).
-# true: indent all contained lines to match the token
-# false: indent all contained lines to match the brace
-#
-# Default: true
-indent_token_after_brace = true # true/false
-
-# Whether to indent the body of a C++11 lambda.
-indent_cpp_lambda_body = false # true/false
-
-# How to indent compound literals that are being returned.
-# true: add both the indent from return & the compound literal open brace
-# (i.e. 2 indent levels)
-# false: only indent 1 level, don't add the indent for the open brace, only
-# add the indent for the return.
-#
-# Default: true
-indent_compound_literal_return = true # true/false
-
-# (C#) Whether to indent a 'using' block if no braces are used.
-#
-# Default: true
-indent_using_block = true # true/false
-
-# How to indent the continuation of ternary operator.
-#
-# 0: Off (default)
-# 1: When the `if_false` is a continuation, indent it under the `if_true` branch
-# 2: When the `:` is a continuation, indent it under `?`
-indent_ternary_operator = 0 # unsigned number
-
-# Whether to indent the statements inside ternary operator.
-indent_inside_ternary_operator = false # true/false
-
-# If true, the indentation of the chunks after a `return` sequence will be set at return indentation column.
-indent_off_after_return = false # true/false
-
-# If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column.
-indent_off_after_return_new = false # true/false
-
-# If true, the tokens after return are indented with regular single indentation. By default (false) the indentation is after the return token.
-indent_single_after_return = false # true/false
-
-# Whether to ignore indent and alignment for 'asm' blocks (i.e. assume they
-# have their own indentation).
-indent_ignore_asm_block = false # true/false
-
-# Don't indent the close parenthesis of a function definition,
-# if the parenthesis is on its own line.
-donot_indent_func_def_close_paren = false # true/false
-
-#
-# Newline adding and removing options
-#
-
-# Whether to collapse empty blocks between '{' and '}' except for functions.
-# Use nl_collapse_empty_body_functions to specify how empty function braces
-# should be formatted.
-nl_collapse_empty_body = false # true/false
-
-# Whether to collapse empty blocks between '{' and '}' for functions only.
-# If true, overrides nl_inside_empty_func.
-nl_collapse_empty_body_functions = false # true/false
-
-# Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'.
-nl_assign_leave_one_liners = false # true/false
-
-# Don't split one-line braced statements inside a 'class xx { }' body.
-nl_class_leave_one_liners = false # true/false
-
-# Don't split one-line enums, as in 'enum foo { BAR = 15 };'
-nl_enum_leave_one_liners = false # true/false
-
-# Don't split one-line get or set functions.
-nl_getset_leave_one_liners = false # true/false
-
-# (C#) Don't split one-line property get or set functions.
-nl_cs_property_leave_one_liners = false # true/false
-
-# Don't split one-line function definitions, as in 'int foo() { return 0; }'.
-# might modify nl_func_type_name
-nl_func_leave_one_liners = false # true/false
-
-# Don't split one-line C++11 lambdas, as in '[]() { return 0; }'.
-nl_cpp_lambda_leave_one_liners = false # true/false
-
-# Don't split one-line if/else statements, as in 'if(...) b++;'.
-nl_if_leave_one_liners = false # true/false
-
-# Don't split one-line while statements, as in 'while(...) b++;'.
-nl_while_leave_one_liners = false # true/false
-
-# Don't split one-line do statements, as in 'do { b++; } while(...);'.
-nl_do_leave_one_liners = false # true/false
-
-# Don't split one-line for statements, as in 'for(...) b++;'.
-nl_for_leave_one_liners = false # true/false
-
-# (OC) Don't split one-line Objective-C messages.
-nl_oc_msg_leave_one_liner = false # true/false
-
-# (OC) Add or remove newline between method declaration and '{'.
-nl_oc_mdef_brace = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove newline between Objective-C block signature and '{'.
-nl_oc_block_brace = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove blank line before '@interface' statement.
-nl_oc_before_interface = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove blank line before '@implementation' statement.
-nl_oc_before_implementation = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove blank line before '@end' statement.
-nl_oc_before_end = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove newline between '@interface' and '{'.
-nl_oc_interface_brace = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove newline between '@implementation' and '{'.
-nl_oc_implementation_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newlines at the start of the file.
-nl_start_of_file = ignore # ignore/add/remove/force/not_defined
-
-# The minimum 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 # unsigned number
-
-# Add or remove newline at the end of the file.
-nl_end_of_file = ignore # ignore/add/remove/force/not_defined
-
-# The minimum 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 = 0 # unsigned number
-
-# Add or remove newline between '=' and '{'.
-nl_assign_brace = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove newline between '=' and '['.
-nl_assign_square = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '[]' and '{'.
-nl_tsquare_brace = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove newline after '= ['. Will also affect the newline before
-# the ']'.
-nl_after_square_assign = ignore # ignore/add/remove/force/not_defined
-
-# 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/not_defined
-
-# Add or remove newline between 'enum' and '{'.
-nl_enum_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'enum' and 'class'.
-nl_enum_class = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'enum class' and the identifier.
-nl_enum_class_identifier = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'enum class' type and ':'.
-nl_enum_identifier_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'enum class identifier :' and type.
-nl_enum_colon_type = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'struct and '{'.
-nl_struct_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'union' and '{'.
-nl_union_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'if' and '{'.
-nl_if_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and 'else'.
-nl_brace_else = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'else if' and '{'. If set to ignore,
-# nl_if_brace is used instead.
-nl_elseif_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'else' and '{'.
-nl_else_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'else' and 'if'.
-nl_else_if = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before '{' opening brace
-nl_before_opening_brace_func_class_def = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before 'if'/'else if' closing parenthesis.
-nl_before_if_closing_paren = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and 'finally'.
-nl_brace_finally = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'finally' and '{'.
-nl_finally_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'try' and '{'.
-nl_try_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between get/set and '{'.
-nl_getset_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'for' and '{'.
-nl_for_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before the '{' of a 'catch' statement, as in
-# 'catch (decl) <here> {'.
-nl_catch_brace = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove newline before the '{' of a '@catch' statement, as in
-# '@catch (decl) <here> {'. If set to ignore, nl_catch_brace is used.
-nl_oc_catch_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and 'catch'.
-nl_brace_catch = ignore # ignore/add/remove/force/not_defined
-
-# (OC) Add or remove newline between '}' and '@catch'. If set to ignore,
-# nl_brace_catch is used.
-nl_oc_brace_catch = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and ']'.
-nl_brace_square = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and ')' in a function invocation.
-nl_brace_fparen = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'while' and '{'.
-nl_while_brace = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove newline between 'scope (x)' and '{'.
-nl_scope_brace = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove newline between 'unittest' and '{'.
-nl_unittest_brace = ignore # ignore/add/remove/force/not_defined
-
-# (D) Add or remove newline between 'version (x)' and '{'.
-nl_version_brace = ignore # ignore/add/remove/force/not_defined
-
-# (C#) Add or remove newline between 'using' and '{'.
-nl_using_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between two open or close braces. Due to general
-# newline/brace handling, REMOVE may not work.
-nl_brace_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'do' and '{'.
-nl_do_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '}' and 'while' of 'do' statement.
-nl_brace_while = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'switch' and '{'.
-nl_switch_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'synchronized' and '{'.
-nl_synchronized_brace = ignore # ignore/add/remove/force/not_defined
-
-# 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 = false # true/false
-
-# Add a newline after '(' if an if/for/while/switch condition spans multiple
-# lines
-nl_multi_line_sparen_open = ignore # ignore/add/remove/force/not_defined
-
-# Add a newline before ')' if an if/for/while/switch condition spans multiple
-# lines. Overrides nl_before_if_closing_paren if both are specified.
-nl_multi_line_sparen_close = ignore # ignore/add/remove/force/not_defined
-
-# Force a newline in a define after the macro name for multi-line defines.
-nl_multi_line_define = false # true/false
-
-# Whether to add a newline before 'case', and a blank line before a 'case'
-# statement that follows a ';' or '}'.
-nl_before_case = false # true/false
-
-# Whether to add a newline after a 'case' statement.
-nl_after_case = false # true/false
-
-# Add or remove newline between a case ':' and '{'.
-#
-# Overrides nl_after_case.
-nl_case_colon_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between ')' and 'throw'.
-nl_before_throw = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'namespace' and '{'.
-nl_namespace_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template class.
-nl_template_class = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template class declaration.
-#
-# Overrides nl_template_class.
-nl_template_class_decl = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<>' of a specialized class declaration.
-#
-# Overrides nl_template_class_decl.
-nl_template_class_decl_special = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template class definition.
-#
-# Overrides nl_template_class.
-nl_template_class_def = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<>' of a specialized class definition.
-#
-# Overrides nl_template_class_def.
-nl_template_class_def_special = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template function.
-nl_template_func = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template function
-# declaration.
-#
-# Overrides nl_template_func.
-nl_template_func_decl = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<>' of a specialized function
-# declaration.
-#
-# Overrides nl_template_func_decl.
-nl_template_func_decl_special = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template function
-# definition.
-#
-# Overrides nl_template_func.
-nl_template_func_def = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<>' of a specialized function
-# definition.
-#
-# Overrides nl_template_func_def.
-nl_template_func_def_special = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after 'template<...>' of a template variable.
-nl_template_var = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'template<...>' and 'using' of a templated
-# type alias.
-nl_template_using = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'class' and '{'.
-nl_class_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before or after (depending on pos_class_comma,
-# may not be IGNORE) each',' in the base class list.
-nl_class_init_args = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after each ',' in the constructor member
-# initialization. Related to nl_constr_colon, pos_constr_colon and
-# pos_constr_comma.
-nl_constr_init_args = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before first element, after comma, and after last
-# element, in 'enum'.
-nl_enum_own_lines = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between return type and function name in a function
-# definition.
-# might be modified by nl_func_leave_one_liners
-nl_func_type_name = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between return type and function name inside a class
-# definition. If set to ignore, nl_func_type_name or nl_func_proto_type_name
-# is used instead.
-nl_func_type_name_class = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between class specification and '::'
-# in 'void A::f() { }'. Only appears in separate member implementation (does
-# not appear with in-line implementation).
-nl_func_class_scope = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between function scope and name, as in
-# 'void A :: <here> f() { }'.
-nl_func_scope_name = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between return type and function name in a prototype.
-nl_func_proto_type_name = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between a function name and the opening '(' in the
-# declaration.
-nl_func_paren = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_paren for functions with no parameters.
-nl_func_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between a function name and the opening '(' in the
-# definition.
-nl_func_def_paren = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_def_paren for functions with no parameters.
-nl_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between a function name and the opening '(' in the
-# call.
-nl_func_call_paren = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_call_paren for functions with no parameters.
-nl_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after '(' in a function declaration.
-nl_func_decl_start = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after '(' in a function definition.
-nl_func_def_start = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_decl_start when there is only one parameter.
-nl_func_decl_start_single = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_def_start when there is only one parameter.
-nl_func_def_start_single = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after '(' in a function declaration if '(' and ')'
-# are in different lines. If false, nl_func_decl_start is used instead.
-nl_func_decl_start_multi_line = false # true/false
-
-# Whether to add a newline after '(' in a function definition if '(' and ')'
-# are in different lines. If false, nl_func_def_start is used instead.
-nl_func_def_start_multi_line = false # true/false
-
-# Add or remove newline after each ',' in a function declaration.
-nl_func_decl_args = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after each ',' in a function definition.
-nl_func_def_args = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline after each ',' in a function call.
-nl_func_call_args = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after each ',' in a function declaration if '('
-# and ')' are in different lines. If false, nl_func_decl_args is used instead.
-nl_func_decl_args_multi_line = false # true/false
-
-# Whether to add a newline after each ',' in a function definition if '('
-# and ')' are in different lines. If false, nl_func_def_args is used instead.
-nl_func_def_args_multi_line = false # true/false
-
-# Add or remove newline before the ')' in a function declaration.
-nl_func_decl_end = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline before the ')' in a function definition.
-nl_func_def_end = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_decl_end when there is only one parameter.
-nl_func_decl_end_single = ignore # ignore/add/remove/force/not_defined
-
-# Overrides nl_func_def_end when there is only one parameter.
-nl_func_def_end_single = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline before ')' in a function declaration if '(' and ')'
-# are in different lines. If false, nl_func_decl_end is used instead.
-nl_func_decl_end_multi_line = false # true/false
-
-# Whether to add a newline before ')' in a function definition if '(' and ')'
-# are in different lines. If false, nl_func_def_end is used instead.
-nl_func_def_end_multi_line = false # true/false
-
-# Add or remove newline between '()' in a function declaration.
-nl_func_decl_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '()' in a function definition.
-nl_func_def_empty = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between '()' in a function call.
-nl_func_call_empty = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after '(' in a function call,
-# has preference over nl_func_call_start_multi_line.
-nl_func_call_start = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline before ')' in a function call.
-nl_func_call_end = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after '(' in a function call if '(' and ')' are in
-# different lines.
-nl_func_call_start_multi_line = false # true/false
-
-# Whether to add a newline after each ',' in a function call if '(' and ')'
-# are in different lines.
-nl_func_call_args_multi_line = false # true/false
-
-# Whether to add a newline before ')' in a function call if '(' and ')' are in
-# different lines.
-nl_func_call_end_multi_line = false # true/false
-
-# Whether to respect nl_func_call_XXX option in case of closure args.
-nl_func_call_args_multi_line_ignore_closures = false # true/false
-
-# Whether to add a newline after '<' of a template parameter list.
-nl_template_start = false # true/false
-
-# Whether to add a newline after each ',' in a template parameter list.
-nl_template_args = false # true/false
-
-# Whether to add a newline before '>' of a template parameter list.
-nl_template_end = false # true/false
-
-# (OC) Whether to put each Objective-C message parameter on a separate line.
-# See nl_oc_msg_leave_one_liner.
-nl_oc_msg_args = false # true/false
-
-# (OC) Minimum number of Objective-C message parameters before applying nl_oc_msg_args.
-nl_oc_msg_args_min_params = 0 # unsigned number
-
-# (OC) Max code width of Objective-C message before applying nl_oc_msg_args.
-nl_oc_msg_args_max_code_width = 0 # unsigned number
-
-# Add or remove newline between function signature and '{'.
-nl_fdef_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between function signature and '{',
-# if signature ends with ')'. Overrides nl_fdef_brace.
-nl_fdef_brace_cond = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between C++11 lambda signature and '{'.
-nl_cpp_ldef_brace = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'return' and the return expression.
-nl_return_expr = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline between 'throw' and the throw expression.
-nl_throw_expr = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after semicolons, except in 'for' statements.
-nl_after_semicolon = false # true/false
-
-# (Java) Add or remove newline between the ')' and '{{' of the double brace
-# initializer.
-nl_paren_dbrace_open = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after the type in an unnamed temporary
-# direct-list-initialization, better:
-# before a direct-list-initialization.
-nl_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline after the open brace in an unnamed temporary
-# direct-list-initialization.
-nl_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline before the close brace in an unnamed temporary
-# direct-list-initialization.
-nl_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined
-
-# Whether to add a newline before '{'.
-nl_before_brace_open = false # true/false
-
-# Whether to add a newline after '{'.
-nl_after_brace_open = false # true/false
-
-# Whether to add a newline between the open brace and a trailing single-line
-# comment. Requires nl_after_brace_open=true.
-nl_after_brace_open_cmt = false # true/false
-
-# Whether to add a newline after a virtual brace open with a non-empty body.
-# These occur in un-braced if/while/do/for statement bodies.
-nl_after_vbrace_open = false # true/false
-
-# Whether to add a newline after a virtual brace open with an empty body.
-# These occur in un-braced if/while/do/for statement bodies.
-nl_after_vbrace_open_empty = false # true/false
-
-# Whether to add a newline after '}'. Does not apply if followed by a
-# necessary ';'.
-nl_after_brace_close = false # true/false
-
-# Whether to add a newline after a virtual brace close,
-# as in 'if (foo) a++; <here> return;'.
-nl_after_vbrace_close = false # true/false
-
-# Add or remove newline between the close brace and identifier,
-# as in 'struct { int a; } <here> b;'. Affects enumerations, unions and
-# structures. If set to ignore, uses nl_after_brace_close.
-nl_brace_struct_var = ignore # ignore/add/remove/force/not_defined
-
-# Whether to alter newlines in '#define' macros.
-nl_define_macro = false # true/false
-
-# Whether to alter newlines between consecutive parenthesis closes. The number
-# of closing parentheses in a line will depend on respective open parenthesis
-# lines.
-nl_squeeze_paren_close = false # true/false
-
-# Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and
-# '#endif'. Does not affect top-level #ifdefs.
-nl_squeeze_ifdef = false # true/false
-
-# Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well.
-nl_squeeze_ifdef_top_level = false # true/false
-
-# Add or remove blank line before 'if'.
-nl_before_if = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'if' statement. Add/Force work only if the
-# next token is not a closing brace.
-nl_after_if = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line before 'for'.
-nl_before_for = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'for' statement.
-nl_after_for = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line before 'while'.
-nl_before_while = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'while' statement.
-nl_after_while = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line before 'switch'.
-nl_before_switch = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'switch' statement.
-nl_after_switch = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line before 'synchronized'.
-nl_before_synchronized = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'synchronized' statement.
-nl_after_synchronized = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line before 'do'.
-nl_before_do = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove blank line after 'do/while' statement.
-nl_after_do = ignore # ignore/add/remove/force/not_defined
-
-# Ignore nl_before_{if,for,switch,do,synchronized} if the control
-# statement is immediately after a case statement.
-# if nl_before_{if,for,switch,do} is set to remove, this option
-# does nothing.
-nl_before_ignore_after_case = false # true/false
-
-# Whether to put a blank line before 'return' statements, unless after an open
-# brace.
-nl_before_return = false # true/false
-
-# Whether to put a blank line after 'return' statements, unless followed by a
-# close brace.
-nl_after_return = false # true/false
-
-# Whether to put a blank line before a member '.' or '->' operators.
-nl_before_member = ignore # ignore/add/remove/force/not_defined
-
-# (Java) Whether to put a blank line after a member '.' or '->' operators.
-nl_after_member = ignore # ignore/add/remove/force/not_defined
-
-# Whether to double-space commented-entries in 'struct'/'union'/'enum'.
-nl_ds_struct_enum_cmt = false # true/false
-
-# Whether to force a newline before '}' of a 'struct'/'union'/'enum'.
-# (Lower priority than eat_blanks_before_close_brace.)
-nl_ds_struct_enum_close_brace = false # true/false
-
-# Add or remove newline before or after (depending on pos_class_colon) a class
-# colon, as in 'class Foo <here> : <or here> public Bar'.
-nl_class_colon = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove newline around a class constructor colon. The exact position
-# depends on nl_constr_init_args, pos_constr_colon and pos_constr_comma.
-nl_constr_colon = ignore # ignore/add/remove/force/not_defined
-
-# Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }'
-# into a single line. If true, prevents other brace newline rules from turning
-# such code into four lines. If true, it also preserves one-liner namespaces.
-nl_namespace_two_to_one_liner = false # true/false
-
-# Whether to remove a newline in simple unbraced if statements, turning them
-# into one-liners, as in 'if(b)\n i++;' => 'if(b) i++;'.
-nl_create_if_one_liner = false # true/false
-
-# Whether to remove a newline in simple unbraced for statements, turning them
-# into one-liners, as in 'for (...)\n stmt;' => 'for (...) stmt;'.
-nl_create_for_one_liner = false # true/false
-
-# Whether to remove a newline in simple unbraced while statements, turning
-# them into one-liners, as in 'while (expr)\n stmt;' => 'while (expr) stmt;'.
-nl_create_while_one_liner = false # true/false
-
-# Whether to collapse a function definition whose body (not counting braces)
-# is only one line so that the entire definition (prototype, braces, body) is
-# a single line.
-nl_create_func_def_one_liner = false # true/false
-
-# Whether to split one-line simple list definitions into three lines by
-# adding newlines, as in 'int a[12] = { <here> 0 <here> };'.
-nl_create_list_one_liner = false # true/false
-
-# Whether to split one-line simple unbraced if statements into two lines by
-# adding a newline, as in 'if(b) <here> i++;'.
-nl_split_if_one_liner = false # true/false
-
-# Whether to split one-line simple unbraced for statements into two lines by
-# adding a newline, as in 'for (...) <here> stmt;'.
-nl_split_for_one_liner = false # true/false
-
-# Whether to split one-line simple unbraced while statements into two lines by
-# adding a newline, as in 'while (expr) <here> stmt;'.
-nl_split_while_one_liner = false # true/false
-
-# Don't add a newline before a cpp-comment in a parameter list of a function
-# call.
-donot_add_nl_before_cpp_comment = false # true/false
-
-#
-# Blank line options
-#
-
-# The maximum number of consecutive newlines (3 = 2 blank lines).
-nl_max = 0 # unsigned number
-
-# The maximum number of consecutive newlines in a function.
-nl_max_blank_in_func = 0 # unsigned number
-
-# The number of newlines inside an empty function body.
-# This option overrides eat_blanks_after_open_brace and
-# eat_blanks_before_close_brace, but is ignored when
-# nl_collapse_empty_body_functions=true
-nl_inside_empty_func = 0 # unsigned number
-
-# The number of newlines before a function prototype.
-nl_before_func_body_proto = 0 # unsigned number
-
-# The number of newlines before a multi-line function definition. Where
-# applicable, this option is overridden with eat_blanks_after_open_brace=true
-nl_before_func_body_def = 0 # unsigned number
-
-# The number of newlines before a class constructor/destructor prototype.
-nl_before_func_class_proto = 0 # unsigned number
-
-# The number of newlines before a class constructor/destructor definition.
-nl_before_func_class_def = 0 # unsigned number
-
-# The number of newlines after a function prototype.
-nl_after_func_proto = 0 # unsigned number
-
-# The number of newlines after a function prototype, if not followed by
-# another function prototype.
-nl_after_func_proto_group = 0 # unsigned number
-
-# The number of newlines after a class constructor/destructor prototype.
-nl_after_func_class_proto = 0 # unsigned number
-
-# The number of newlines after a class constructor/destructor prototype,
-# if not followed by another constructor/destructor prototype.
-nl_after_func_class_proto_group = 0 # unsigned number
-
-# Whether one-line method definitions inside a class body should be treated
-# as if they were prototypes for the purposes of adding newlines.
-#
-# Requires nl_class_leave_one_liners=true. Overrides nl_before_func_body_def
-# and nl_before_func_class_def for one-liners.
-nl_class_leave_one_liner_groups = false # true/false
-
-# The number of newlines after '}' of a multi-line function body.
-nl_after_func_body = 0 # unsigned number
-
-# The number of newlines after '}' of a multi-line function body in a class
-# declaration. Also affects class constructors/destructors.
-#
-# Overrides nl_after_func_body.
-nl_after_func_body_class = 0 # unsigned number
-
-# The number of newlines after '}' of a single line function body. Also
-# affects class constructors/destructors.
-#
-# Overrides nl_after_func_body and nl_after_func_body_class.
-nl_after_func_body_one_liner = 0 # unsigned number
-
-# The number of newlines before a block of typedefs. If nl_after_access_spec
-# is non-zero, that option takes precedence.
-#
-# 0: No change (default).
-nl_typedef_blk_start = 0 # unsigned number
-
-# The number of newlines after a block of typedefs.
-#
-# 0: No change (default).
-nl_typedef_blk_end = 0 # unsigned number
-
-# The maximum number of consecutive newlines within a block of typedefs.
-#
-# 0: No change (default).
-nl_typedef_blk_in = 0 # unsigned number
-
-# The minimum number of blank lines after a block of variable definitions
-# at the top of a function body. If any preprocessor directives appear
-# between the opening brace of the function and the variable block, then
-# it is considered as not at the top of the function.Newlines are added
-# before trailing preprocessor directives, if any exist.
-#
-# 0: No change (default).
-nl_var_def_blk_end_func_top = 0 # unsigned number
-
-# The minimum number of empty newlines before a block of variable definitions
-# not at the top of a function body. If nl_after_access_spec is non-zero,
-# that option takes precedence. Newlines are not added at the top of the
-# file or just after an opening brace. Newlines are added above any
-# preprocessor directives before the block.
-#
-# 0: No change (default).
-nl_var_def_blk_start = 0 # unsigned number
-
-# The minimum number of empty newlines after a block of variable definitions
-# not at the top of a function body. Newlines are not added if the block
-# is at the bottom of the file or just before a preprocessor directive.
-#
-# 0: No change (default).
-nl_var_def_blk_end = 0 # unsigned number
-
-# The maximum number of consecutive newlines within a block of variable
-# definitions.
-#
-# 0: No change (default).
-nl_var_def_blk_in = 0 # unsigned 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 # unsigned 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 # unsigned 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 # unsigned number
-
-# Whether to force a newline after a multi-line comment.
-nl_after_multiline_comment = false # true/false
-
-# Whether to force a newline after a label's colon.
-nl_after_label_colon = false # true/false
-
-# The number of newlines before a struct definition.
-nl_before_struct = 0 # unsigned number
-
-# The number of newlines after '}' or ';' of a struct/enum/union definition.
-nl_after_struct = 0 # unsigned number
-
-# The number of newlines before a class definition.
-nl_before_class = 0 # unsigned number
-
-# The number of newlines after '}' or ';' of a class definition.
-nl_after_class = 0 # unsigned number
-
-# The number of newlines before a namespace.
-nl_before_namespace = 0 # unsigned number
-
-# The number of newlines after '{' of a namespace. This also adds newlines
-# before the matching '}'.
-#
-# 0: Apply eat_blanks_after_open_brace or eat_blanks_before_close_brace if
-# applicable, otherwise no change.
-#
-# Overrides eat_blanks_after_open_brace and eat_blanks_before_close_brace.
-nl_inside_namespace = 0 # unsigned number
-
-# The number of newlines after '}' of a namespace.
-nl_after_namespace = 0 # unsigned number
-
-# The number of newlines before an access specifier label. This also includes
-# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
-# if after a brace open.
-#
-# 0: No change (default).
-nl_before_access_spec = 0 # unsigned number
-
-# The number of newlines after an access specifier label. This also includes
-# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
-# if after a brace open.
-#
-# 0: No change (default).
-#
-# Overrides nl_typedef_blk_start and nl_var_def_blk_start.
-nl_after_access_spec = 0 # unsigned number
-
-# The number of newlines between a function definition and the function
-# comment, as in '// comment\n <here> void foo() {...}'.
-#
-# 0: No change (default).
-nl_comment_func_def = 0 # unsigned number
-
-# The number of newlines after a try-catch-finally block that isn't followed
-# by a brace close.
-#
-# 0: No change (default).
-nl_after_try_catch_finally = 0 # unsigned number
-
-# (C#) The number of newlines before and after a property, indexer or event
-# declaration.
-#
-# 0: No change (default).
-nl_around_cs_property = 0 # unsigned number
-
-# (C#) The number of newlines between the get/set/add/remove handlers.
-#
-# 0: No change (default).
-nl_between_get_set = 0 # unsigned number
-
-# (C#) Add or remove newline between property and the '{'.
-nl_property_brace = ignore # ignore/add/remove/force/not_defined
-
-# Whether to remove blank lines after '{'.
-eat_blanks_after_open_brace = false # true/false
-
-# Whether to remove blank lines before '}'.
-eat_blanks_before_close_brace = false # true/false
-
-# How aggressively to remove extra newlines not in preprocessor.
-#
-# 0: No change (default)
-# 1: Remove most newlines not handled by other config
-# 2: Remove all newlines and reformat completely by config
-nl_remove_extra_newlines = 0 # unsigned number
-
-# (Java) Add or remove newline after an annotation statement. Only affects
-# annotations that are after a newline.
-nl_after_annotation = ignore # ignore/add/remove/force/not_defined
-
-# (Java) Add or remove newline between two annotations.
-nl_between_annotation = ignore # ignore/add/remove/force/not_defined
-
-# The number of newlines before a whole-file #ifdef.
-#
-# 0: No change (default).
-nl_before_whole_file_ifdef = 0 # unsigned number
-
-# The number of newlines after a whole-file #ifdef.
-#
-# 0: No change (default).
-nl_after_whole_file_ifdef = 0 # unsigned number
-
-# The number of newlines before a whole-file #endif.
-#
-# 0: No change (default).
-nl_before_whole_file_endif = 0 # unsigned number
-
-# The number of newlines after a whole-file #endif.
-#
-# 0: No change (default).
-nl_after_whole_file_endif = 0 # unsigned number
-
-#
-# Positioning options
-#
-
-# The position of arithmetic operators in wrapped expressions.
-pos_arith = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of assignment in wrapped expressions. Do not affect '='
-# followed by '{'.
-pos_assign = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of Boolean operators in wrapped expressions.
-pos_bool = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of comparison operators in wrapped expressions.
-pos_compare = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of conditional operators, as in the '?' and ':' of
-# 'expr ? stmt : stmt', in wrapped expressions.
-pos_conditional = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of the comma in wrapped expressions.
-pos_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of the comma in enum entries.
-pos_enum_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of the comma in the base class list if there is more than one
-# line. Affects nl_class_init_args.
-pos_class_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of the comma in the constructor initialization list.
-# Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon.
-pos_constr_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of trailing/leading class colon, between class and base class
-# list. Affects nl_class_colon.
-pos_class_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of colons between constructor and member initialization.
-# Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.
-pos_constr_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-# The position of shift operators in wrapped expressions.
-pos_shift = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
-
-#
-# Line splitting options
-#
-
-# Try to limit code width to N columns.
-code_width = 0 # unsigned number
-
-# Whether to fully split long 'for' statements at semi-colons.
-ls_for_split_full = false # true/false
-
-# Whether to fully split long function prototypes/calls at commas.
-# The option ls_code_width has priority over the option ls_func_split_full.
-ls_func_split_full = false # true/false
-
-# Whether to split lines as close to code_width as possible and ignore some
-# groupings.
-# The option ls_code_width has priority over the option ls_func_split_full.
-ls_code_width = false # true/false
-
-#
-# Code alignment options (not left column spaces/tabs)
-#
-
-# Whether to keep non-indenting tabs.
-align_keep_tabs = false # true/false
-
-# Whether to use tabs for aligning.
-align_with_tabs = false # true/false
-
-# Whether to bump out to the next tab when aligning.
-align_on_tabstop = false # true/false
-
-# Whether to right-align numbers.
-align_number_right = false # true/false
-
-# Whether to keep whitespace not required for alignment.
-align_keep_extra_space = false # true/false
-
-# Whether to align variable definitions in prototypes and functions.
-align_func_params = false # true/false
-
-# The span for aligning parameter definitions in function on parameter name.
-#
-# 0: Don't align (default).
-align_func_params_span = 0 # unsigned number
-
-# The threshold for aligning function parameter definitions.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_func_params_thresh = 0 # number
-
-# The gap for aligning function parameter definitions.
-align_func_params_gap = 0 # unsigned number
-
-# The span for aligning constructor value.
-#
-# 0: Don't align (default).
-align_constr_value_span = 0 # unsigned number
-
-# The threshold for aligning constructor value.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_constr_value_thresh = 0 # number
-
-# The gap for aligning constructor value.
-align_constr_value_gap = 0 # unsigned number
-
-# Whether to align parameters in single-line functions that have the same
-# name. The function names must already be aligned with each other.
-align_same_func_call_params = false # true/false
-
-# The span for aligning function-call parameters for single line functions.
-#
-# 0: Don't align (default).
-align_same_func_call_params_span = 0 # unsigned number
-
-# The threshold for aligning function-call parameters for single line
-# functions.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_same_func_call_params_thresh = 0 # number
-
-# The span for aligning variable definitions.
-#
-# 0: Don't align (default).
-align_var_def_span = 0 # unsigned number
-
-# How to consider (or treat) the '*' in the alignment of variable definitions.
-#
-# 0: Part of the type 'void * foo;' (default)
-# 1: Part of the variable 'void *foo;'
-# 2: Dangling 'void *foo;'
-# Dangling: the '*' will not be taken into account when aligning.
-align_var_def_star_style = 0 # unsigned number
-
-# How to consider (or treat) the '&' in the alignment of variable definitions.
-#
-# 0: Part of the type 'long & foo;' (default)
-# 1: Part of the variable 'long &foo;'
-# 2: Dangling 'long &foo;'
-# Dangling: the '&' will not be taken into account when aligning.
-align_var_def_amp_style = 0 # unsigned number
-
-# The threshold for aligning variable definitions.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_var_def_thresh = 0 # number
-
-# The gap for aligning variable definitions.
-align_var_def_gap = 0 # unsigned number
-
-# Whether to align the colon in struct bit fields.
-align_var_def_colon = false # true/false
-
-# The gap for aligning the colon in struct bit fields.
-align_var_def_colon_gap = 0 # unsigned number
-
-# Whether to align any attribute after the variable name.
-align_var_def_attribute = false # true/false
-
-# Whether to align inline struct/enum/union variable definitions.
-align_var_def_inline = false # true/false
-
-# The span for aligning on '=' in assignments.
-#
-# 0: Don't align (default).
-align_assign_span = 0 # unsigned number
-
-# The span for aligning on '=' in function prototype modifier.
-#
-# 0: Don't align (default).
-align_assign_func_proto_span = 0 # unsigned number
-
-# The threshold for aligning on '=' in assignments.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_assign_thresh = 0 # number
-
-# Whether to align on the left most assignment when multiple
-# definitions are found on the same line.
-# Depends on 'align_assign_span' and 'align_assign_thresh' settings.
-align_assign_on_multi_var_defs = false # true/false
-
-# The span for aligning on '{' in braced init list.
-#
-# 0: Don't align (default).
-align_braced_init_list_span = 0 # unsigned number
-
-# The threshold for aligning on '{' in braced init list.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_braced_init_list_thresh = 0 # number
-
-# How to apply align_assign_span to function declaration "assignments", i.e.
-# 'virtual void foo() = 0' or '~foo() = {default|delete}'.
-#
-# 0: Align with other assignments (default)
-# 1: Align with each other, ignoring regular assignments
-# 2: Don't align
-align_assign_decl_func = 0 # unsigned number
-
-# The span for aligning on '=' in enums.
-#
-# 0: Don't align (default).
-align_enum_equ_span = 0 # unsigned number
-
-# The threshold for aligning on '=' in enums.
-# Use a negative number for absolute thresholds.
-#
-# 0: no limit (default).
-align_enum_equ_thresh = 0 # number
-
-# The span for aligning class member definitions.
-#
-# 0: Don't align (default).
-align_var_class_span = 0 # unsigned number
-
-# The threshold for aligning class member definitions.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_var_class_thresh = 0 # number
-
-# The gap for aligning class member definitions.
-align_var_class_gap = 0 # unsigned number
-
-# The span for aligning struct/union member definitions.
-#
-# 0: Don't align (default).
-align_var_struct_span = 0 # unsigned number
-
-# The threshold for aligning struct/union member definitions.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_var_struct_thresh = 0 # number
-
-# The gap for aligning struct/union member definitions.
-align_var_struct_gap = 0 # unsigned number
-
-# The span for aligning struct initializer values.
-#
-# 0: Don't align (default).
-align_struct_init_span = 0 # unsigned number
-
-# The span for aligning single-line typedefs.
-#
-# 0: Don't align (default).
-align_typedef_span = 0 # unsigned number
-
-# The minimum space between the type and the synonym of a typedef.
-align_typedef_gap = 0 # unsigned number
-
-# How to align typedef'd functions with other typedefs.
-#
-# 0: Don't mix them at all (default)
-# 1: Align the open parenthesis with the types
-# 2: Align the function type name with the other type names
-align_typedef_func = 0 # unsigned number
-
-# How to consider (or treat) the '*' in the alignment of typedefs.
-#
-# 0: Part of the typedef type, 'typedef int * pint;' (default)
-# 1: Part of type name: 'typedef int *pint;'
-# 2: Dangling: 'typedef int *pint;'
-# Dangling: the '*' will not be taken into account when aligning.
-align_typedef_star_style = 0 # unsigned number
-
-# How to consider (or treat) the '&' in the alignment of typedefs.
-#
-# 0: Part of the typedef type, 'typedef int & intref;' (default)
-# 1: Part of type name: 'typedef int &intref;'
-# 2: Dangling: 'typedef int &intref;'
-# Dangling: the '&' will not be taken into account when aligning.
-align_typedef_amp_style = 0 # unsigned number
-
-# The span for aligning comments that end lines.
-#
-# 0: Don't align (default).
-align_right_cmt_span = 0 # unsigned number
-
-# Minimum number of columns between preceding text and a trailing comment in
-# order for the comment to qualify for being aligned. Must be non-zero to have
-# an effect.
-align_right_cmt_gap = 0 # unsigned number
-
-# If aligning comments, whether to mix with comments after '}' and #endif with
-# less than three spaces before the comment.
-align_right_cmt_mix = false # true/false
-
-# Whether to only align trailing comments that are at the same brace level.
-align_right_cmt_same_level = false # true/false
-
-# Minimum column at which to align trailing comments. Comments which are
-# aligned beyond this column, but which can be aligned in a lesser column,
-# may be "pulled in".
-#
-# 0: Ignore (default).
-align_right_cmt_at_col = 0 # unsigned number
-
-# The span for aligning function prototypes.
-#
-# 0: Don't align (default).
-align_func_proto_span = 0 # unsigned number
-
-# How to consider (or treat) the '*' in the alignment of function prototypes.
-#
-# 0: Part of the type 'void * foo();' (default)
-# 1: Part of the function 'void *foo();'
-# 2: Dangling 'void *foo();'
-# Dangling: the '*' will not be taken into account when aligning.
-align_func_proto_star_style = 0 # unsigned number
-
-# How to consider (or treat) the '&' in the alignment of function prototypes.
-#
-# 0: Part of the type 'long & foo();' (default)
-# 1: Part of the function 'long &foo();'
-# 2: Dangling 'long &foo();'
-# Dangling: the '&' will not be taken into account when aligning.
-align_func_proto_amp_style = 0 # unsigned number
-
-# The threshold for aligning function prototypes.
-# Use a negative number for absolute thresholds.
-#
-# 0: No limit (default).
-align_func_proto_thresh = 0 # number
-
-# Minimum gap between the return type and the function name.
-align_func_proto_gap = 0 # unsigned number
-
-# Whether to align function prototypes on the 'operator' keyword instead of
-# what follows.
-align_on_operator = false # true/false
-
-# 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 # true/false
-
-# Whether to align single-line functions with function prototypes.
-# Uses align_func_proto_span.
-align_single_line_func = false # true/false
-
-# Whether to align the open brace of single-line functions.
-# Requires align_single_line_func=true. Uses align_func_proto_span.
-align_single_line_brace = false # true/false
-
-# Gap for align_single_line_brace.
-align_single_line_brace_gap = 0 # unsigned number
-
-# (OC) The span for aligning Objective-C message specifications.
-#
-# 0: Don't align (default).
-align_oc_msg_spec_span = 0 # unsigned 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 # true/false
-
-# Whether to align macro functions and variables together.
-align_pp_define_together = false # true/false
-
-# The span for aligning on '#define' bodies.
-#
-# =0: Don't align (default)
-# >0: Number of lines (including comments) between blocks
-align_pp_define_span = 0 # unsigned number
-
-# The minimum space between label and value of a preprocessor define.
-align_pp_define_gap = 0 # unsigned number
-
-# Whether to align lines that start with '<<' with previous '<<'.
-#
-# Default: true
-align_left_shift = true # true/false
-
-# Whether to align comma-separated statements following '<<' (as used to
-# initialize Eigen matrices).
-align_eigen_comma_init = false # true/false
-
-# Whether to align text after 'asm volatile ()' colons.
-align_asm_colon = false # true/false
-
-# (OC) Span for aligning parameters in an Objective-C message call
-# on the ':'.
-#
-# 0: Don't align.
-align_oc_msg_colon_span = 0 # unsigned number
-
-# (OC) Whether to always align with the first parameter, even if it is too
-# short.
-align_oc_msg_colon_first = false # true/false
-
-# (OC) Whether to align parameters in an Objective-C '+' or '-' declaration
-# on the ':'.
-align_oc_decl_colon = false # true/false
-
-# (OC) Whether to not align parameters in an Objectve-C message call if first
-# colon is not on next line of the message call (the same way Xcode does
-# alignment)
-align_oc_msg_colon_xcode_like = false # true/false
-
-#
-# Comment modification options
-#
-
-# Try to wrap comments at N columns.
-cmt_width = 0 # unsigned number
-
-# How to reflow comments.
-#
-# 0: No reflowing (apart from the line wrapping due to cmt_width) (default)
-# 1: No touching at all
-# 2: Full reflow (enable cmt_indent_multi for indent with line wrapping due to cmt_width)
-cmt_reflow_mode = 0 # unsigned number
-
-# Path to a file that contains regular expressions describing patterns for
-# which the end of one line and the beginning of the next will be folded into
-# the same sentence or paragraph during full comment reflow. The regular
-# expressions are described using ECMAScript syntax. The syntax for this
-# specification is as follows, where "..." indicates the custom regular
-# expression and "n" indicates the nth end_of_prev_line_regex and
-# beg_of_next_line_regex regular expression pair:
-#
-# end_of_prev_line_regex[1] = "...$"
-# beg_of_next_line_regex[1] = "^..."
-# end_of_prev_line_regex[2] = "...$"
-# beg_of_next_line_regex[2] = "^..."
-# .
-# .
-# .
-# end_of_prev_line_regex[n] = "...$"
-# beg_of_next_line_regex[n] = "^..."
-#
-# Note that use of this option overrides the default reflow fold regular
-# expressions, which are internally defined as follows:
-#
-# end_of_prev_line_regex[1] = "[\w,\]\)]$"
-# beg_of_next_line_regex[1] = "^[\w,\[\(]"
-# end_of_prev_line_regex[2] = "\.$"
-# beg_of_next_line_regex[2] = "^[A-Z]"
-cmt_reflow_fold_regex_file = "" # string
-
-# Whether to indent wrapped lines to the start of the encompassing paragraph
-# during full comment reflow (cmt_reflow_mode = 2). Overrides the value
-# specified by cmt_sp_after_star_cont.
-#
-# Note that cmt_align_doxygen_javadoc_tags overrides this option for
-# paragraphs associated with javadoc tags
-cmt_reflow_indent_to_paragraph_start = false # true/false
-
-# Whether to convert all tabs to spaces in comments. If false, tabs in
-# comments are left alone, unless used for indenting.
-cmt_convert_tab_to_spaces = false # true/false
-
-# Whether to apply changes to multi-line comments, including cmt_width,
-# keyword substitution and leading chars.
-#
-# Default: true
-cmt_indent_multi = true # true/false
-
-# Whether to align doxygen javadoc-style tags ('@param', '@return', etc.)
-# and corresponding fields such that groups of consecutive block tags,
-# parameter names, and descriptions align with one another. Overrides that
-# which is specified by the cmt_sp_after_star_cont. If cmt_width > 0, it may
-# be necessary to enable cmt_indent_multi and set cmt_reflow_mode = 2
-# in order to achieve the desired alignment for line-wrapping.
-cmt_align_doxygen_javadoc_tags = false # true/false
-
-# The number of spaces to insert after the star and before doxygen
-# javadoc-style tags (@param, @return, etc). Requires enabling
-# cmt_align_doxygen_javadoc_tags. Overrides that which is specified by the
-# cmt_sp_after_star_cont.
-#
-# Default: 1
-cmt_sp_before_doxygen_javadoc_tags = 1 # unsigned number
-
-# Whether to change trailing, single-line c-comments into cpp-comments.
-cmt_trailing_single_line_c_to_cpp = false # true/false
-
-# Whether to group c-comments that look like they are in a block.
-cmt_c_group = false # true/false
-
-# Whether to put an empty '/*' on the first line of the combined c-comment.
-cmt_c_nl_start = false # true/false
-
-# Whether to add a newline before the closing '*/' of the combined c-comment.
-cmt_c_nl_end = false # true/false
-
-# Whether to change cpp-comments into c-comments.
-cmt_cpp_to_c = false # true/false
-
-# Whether to group cpp-comments that look like they are in a block. Only
-# meaningful if cmt_cpp_to_c=true.
-cmt_cpp_group = false # true/false
-
-# Whether to put an empty '/*' on the first line of the combined cpp-comment
-# when converting to a c-comment.
-#
-# Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
-cmt_cpp_nl_start = false # true/false
-
-# Whether to add a newline before the closing '*/' of the combined cpp-comment
-# when converting to a c-comment.
-#
-# Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
-cmt_cpp_nl_end = false # true/false
-
-# Whether to put a star on subsequent comment lines.
-cmt_star_cont = false # true/false
-
-# The number of spaces to insert at the start of subsequent comment lines.
-cmt_sp_before_star_cont = 0 # unsigned number
-
-# The number of spaces to insert after the star on subsequent comment lines.
-cmt_sp_after_star_cont = 0 # unsigned number
-
-# For multi-line comments with a '*' lead, remove leading spaces if the first
-# and last lines of the comment are the same length.
-#
-# Default: true
-cmt_multi_check_last = true # true/false
-
-# For multi-line comments with a '*' lead, remove leading spaces if the first
-# and last lines of the comment are the same length AND if the length is
-# bigger as the first_len minimum.
-#
-# Default: 4
-cmt_multi_first_len_minimum = 4 # unsigned number
-
-# Path to a file that contains text to insert at the beginning of a file if
-# the file doesn't start with a C/C++ comment. If the inserted text contains
-# '$(filename)', that will be replaced with the current file's name.
-cmt_insert_file_header = "" # string
-
-# Path to a file that contains text to insert at the end of a file if the
-# file doesn't end with a C/C++ comment. If the inserted text contains
-# '$(filename)', that will be replaced with the current file's name.
-cmt_insert_file_footer = "" # string
-
-# Path to a file that contains text to insert before a function definition if
-# the function isn't preceded by a C/C++ comment. If the inserted text
-# contains '$(function)', '$(javaparam)' or '$(fclass)', these will be
-# replaced with, respectively, the name of the function, the javadoc '@param'
-# and '@return' stuff, or the name of the class to which the member function
-# belongs.
-cmt_insert_func_header = "" # string
-
-# Path to a file that contains text to insert before a class if the class
-# isn't preceded by a C/C++ comment. If the inserted text contains '$(class)',
-# that will be replaced with the class name.
-cmt_insert_class_header = "" # string
-
-# Path to a file that contains text to insert before an Objective-C message
-# specification, if the method isn't preceded by a C/C++ comment. If the
-# inserted text contains '$(message)' or '$(javaparam)', these will be
-# replaced with, respectively, the name of the function, or the javadoc
-# '@param' and '@return' stuff.
-cmt_insert_oc_msg_header = "" # string
-
-# Whether a comment should be inserted if a preprocessor is encountered when
-# stepping backwards from a function name.
-#
-# Applies to cmt_insert_oc_msg_header, cmt_insert_func_header and
-# cmt_insert_class_header.
-cmt_insert_before_preproc = false # true/false
-
-# Whether a comment should be inserted if a function is declared inline to a
-# class definition.
-#
-# Applies to cmt_insert_func_header.
-#
-# Default: true
-cmt_insert_before_inlines = true # true/false
-
-# Whether a comment should be inserted if the function is a class constructor
-# or destructor.
-#
-# Applies to cmt_insert_func_header.
-cmt_insert_before_ctor_dtor = false # true/false
-
-#
-# Code modifying options (non-whitespace)
-#
-
-# Add or remove braces on a single-line 'do' statement.
-mod_full_brace_do = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove braces on a single-line 'for' statement.
-mod_full_brace_for = ignore # ignore/add/remove/force/not_defined
-
-# (Pawn) Add or remove braces on a single-line function definition.
-mod_full_brace_function = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove braces on a single-line 'if' statement. Braces will not be
-# removed if the braced statement contains an 'else'.
-mod_full_brace_if = ignore # ignore/add/remove/force/not_defined
-
-# Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either
-# have, or do not have, braces. Overrides mod_full_brace_if.
-#
-# 0: Don't override mod_full_brace_if
-# 1: Add braces to all blocks if any block needs braces and remove braces if
-# they can be removed from all blocks
-# 2: Add braces to all blocks if any block already has braces, regardless of
-# whether it needs them
-# 3: Add braces to all blocks if any block needs braces and remove braces if
-# they can be removed from all blocks, except if all blocks have braces
-# despite none needing them
-mod_full_brace_if_chain = 0 # unsigned number
-
-# Whether to add braces to all blocks of an 'if'/'else if'/'else' chain.
-# If true, mod_full_brace_if_chain will only remove braces from an 'if' that
-# does not have an 'else if' or 'else'.
-mod_full_brace_if_chain_only = false # true/false
-
-# Add or remove braces on single-line 'while' statement.
-mod_full_brace_while = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove braces on single-line 'using ()' statement.
-mod_full_brace_using = ignore # ignore/add/remove/force/not_defined
-
-# Don't remove braces around statements that span N newlines
-mod_full_brace_nl = 0 # unsigned number
-
-# Whether to prevent removal of braces from 'if'/'for'/'while'/etc. blocks
-# which span multiple lines.
-#
-# Affects:
-# mod_full_brace_for
-# mod_full_brace_if
-# mod_full_brace_if_chain
-# mod_full_brace_if_chain_only
-# mod_full_brace_while
-# mod_full_brace_using
-#
-# Does not affect:
-# mod_full_brace_do
-# mod_full_brace_function
-mod_full_brace_nl_block_rem_mlcond = false # true/false
-
-# Add or remove unnecessary parentheses on 'return' statement.
-mod_paren_on_return = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove unnecessary parentheses on 'throw' statement.
-mod_paren_on_throw = ignore # ignore/add/remove/force/not_defined
-
-# (Pawn) Whether to change optional semicolons to real semicolons.
-mod_pawn_semicolon = false # true/false
-
-# Whether to fully parenthesize Boolean expressions in 'while' and 'if'
-# statement, as in 'if (a && b > c)' => 'if (a && (b > c))'.
-mod_full_paren_if_bool = false # true/false
-
-# Whether to fully parenthesize Boolean expressions after '='
-# statement, as in 'x = a && b > c;' => 'x = (a && (b > c));'.
-mod_full_paren_assign_bool = false # true/false
-
-# Whether to fully parenthesize Boolean expressions after '='
-# statement, as in 'return a && b > c;' => 'return (a && (b > c));'.
-mod_full_paren_return_bool = false # true/false
-
-# Whether to remove superfluous semicolons.
-mod_remove_extra_semicolon = false # true/false
-
-# Whether to remove duplicate include.
-mod_remove_duplicate_include = false # true/false
-
-# 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 = 0 # unsigned number
-
-# If a namespace 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_namespace_closebrace_comment = 0 # unsigned number
-
-# If a class 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_class_closebrace_comment = 0 # unsigned 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 = 0 # unsigned number
-
-# If an #ifdef body exceeds the specified number of newlines and doesn't have
-# a comment after the #endif, a comment will be added.
-mod_add_long_ifdef_endif_comment = 0 # unsigned number
-
-# If an #ifdef or #else body exceeds the specified number of newlines and
-# doesn't have a comment after the #else, a comment will be added.
-mod_add_long_ifdef_else_comment = 0 # unsigned number
-
-# Whether to take care of the case by the mod_sort_xx options.
-mod_sort_case_sensitive = false # true/false
-
-# Whether to sort consecutive single-line 'import' statements.
-mod_sort_import = false # true/false
-
-# (C#) Whether to sort consecutive single-line 'using' statements.
-mod_sort_using = false # true/false
-
-# Whether to sort consecutive single-line '#include' statements (C/C++) and
-# '#import' statements (Objective-C). Be aware that this has the potential to
-# break your code if your includes/imports have ordering dependencies.
-mod_sort_include = false # true/false
-
-# Whether to prioritize '#include' and '#import' statements that contain
-# filename without extension when sorting is enabled.
-mod_sort_incl_import_prioritize_filename = false # true/false
-
-# Whether to prioritize '#include' and '#import' statements that does not
-# contain extensions when sorting is enabled.
-mod_sort_incl_import_prioritize_extensionless = false # true/false
-
-# Whether to prioritize '#include' and '#import' statements that contain
-# angle over quotes when sorting is enabled.
-mod_sort_incl_import_prioritize_angle_over_quotes = false # true/false
-
-# Whether to ignore file extension in '#include' and '#import' statements
-# for sorting comparison.
-mod_sort_incl_import_ignore_extension = false # true/false
-
-# Whether to group '#include' and '#import' statements when sorting is enabled.
-mod_sort_incl_import_grouping_enabled = false # true/false
-
-# Whether to move a 'break' that appears after a fully braced 'case' before
-# the close brace, as in 'case X: { ... } break;' => 'case X: { ... break; }'.
-mod_move_case_break = false # true/false
-
-# Whether to move a 'return' that appears after a fully braced 'case' before
-# the close brace, as in 'case X: { ... } return;' => 'case X: { ... return; }'.
-mod_move_case_return = false # true/false
-
-# Add or remove braces around a fully braced case statement. Will only remove
-# braces if there are no variable declarations in the block.
-mod_case_brace = ignore # ignore/add/remove/force/not_defined
-
-# Whether to remove a void 'return;' that appears as the last statement in a
-# function.
-mod_remove_empty_return = false # true/false
-
-# Add or remove the comma after the last value of an enumeration.
-mod_enum_last_comma = ignore # ignore/add/remove/force/not_defined
-
-# Syntax to use for infinite loops.
-#
-# 0: Leave syntax alone (default)
-# 1: Rewrite as `for(;;)`
-# 2: Rewrite as `while(true)`
-# 3: Rewrite as `do`...`while(true);`
-# 4: Rewrite as `while(1)`
-# 5: Rewrite as `do`...`while(1);`
-#
-# Infinite loops that do not already match one of these syntaxes are ignored.
-# Other options that affect loop formatting will be applied after transforming
-# the syntax.
-mod_infinite_loop = 0 # unsigned number
-
-# Add or remove the 'int' keyword in 'int short'.
-mod_int_short = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'short int'.
-mod_short_int = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'int long'.
-mod_int_long = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'long int'.
-mod_long_int = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'int signed'.
-mod_int_signed = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'signed int'.
-mod_signed_int = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'int unsigned'.
-mod_int_unsigned = ignore # ignore/add/remove/force/not_defined
-
-# Add or remove the 'int' keyword in 'unsigned int'.
-mod_unsigned_int = ignore # ignore/add/remove/force/not_defined
-
-# If there is a situation where mod_int_* and mod_*_int would result in
-# multiple int keywords, whether to keep the rightmost int (the default) or the
-# leftmost int.
-mod_int_prefer_int_on_left = false # true/false
-
-# (OC) Whether to organize the properties. If true, properties will be
-# rearranged according to the mod_sort_oc_property_*_weight factors.
-mod_sort_oc_properties = false # true/false
-
-# (OC) Weight of a class property modifier.
-mod_sort_oc_property_class_weight = 0 # number
-
-# (OC) Weight of 'atomic' and 'nonatomic'.
-mod_sort_oc_property_thread_safe_weight = 0 # number
-
-# (OC) Weight of 'readwrite' when organizing properties.
-mod_sort_oc_property_readwrite_weight = 0 # number
-
-# (OC) Weight of a reference type specifier ('retain', 'copy', 'assign',
-# 'weak', 'strong') when organizing properties.
-mod_sort_oc_property_reference_weight = 0 # number
-
-# (OC) Weight of getter type ('getter=') when organizing properties.
-mod_sort_oc_property_getter_weight = 0 # number
-
-# (OC) Weight of setter type ('setter=') when organizing properties.
-mod_sort_oc_property_setter_weight = 0 # number
-
-# (OC) Weight of nullability type ('nullable', 'nonnull', 'null_unspecified',
-# 'null_resettable') when organizing properties.
-mod_sort_oc_property_nullability_weight = 0 # number
-
-#
-# Preprocessor options
-#
-
-# How to use tabs when indenting preprocessor code.
-#
-# -1: Use 'indent_with_tabs' setting (default)
-# 0: Spaces only
-# 1: Indent with tabs to brace level, align with spaces
-# 2: Indent and align with tabs, using spaces when not on a tabstop
-#
-# Default: -1
-pp_indent_with_tabs = -1 # number
-
-# Add or remove indentation of preprocessor directives inside #if blocks
-# at brace level 0 (file-level).
-pp_indent = ignore # ignore/add/remove/force/not_defined
-
-# Whether to indent #if/#else/#endif at the brace level. If false, these are
-# indented from column 1.
-pp_indent_at_level = false # true/false
-
-# Whether to indent #if/#else/#endif at the parenthesis level if the brace
-# level is 0. If false, these are indented from column 1.
-pp_indent_at_level0 = false # true/false
-
-# Specifies the number of columns to indent preprocessors per level
-# at brace level 0 (file-level). If pp_indent_at_level=false, also specifies
-# the number of columns to indent preprocessors per level
-# at brace level > 0 (function-level).
-#
-# Default: 1
-pp_indent_count = 1 # unsigned number
-
-# Add or remove space after # based on pp level of #if blocks.
-pp_space_after = ignore # ignore/add/remove/force/not_defined
-
-# Sets the number of spaces per level added with pp_space_after.
-pp_space_count = 0 # unsigned number
-
-# The indent for '#region' and '#endregion' in C# and '#pragma region' in
-# C/C++. Negative values decrease indent down to the first column.
-pp_indent_region = 0 # number
-
-# Whether to indent the code between #region and #endregion.
-pp_region_indent_code = false # true/false
-
-# If pp_indent_at_level=true, sets the indent for #if, #else and #endif when
-# not at file-level. Negative values decrease indent down to the first column.
-#
-# =0: Indent preprocessors using output_tab_size
-# >0: Column at which all preprocessors will be indented
-pp_indent_if = 0 # number
-
-# Whether to indent the code between #if, #else and #endif.
-pp_if_indent_code = false # true/false
-
-# Whether to indent the body of an #if that encompasses all the code in the file.
-pp_indent_in_guard = false # true/false
-
-# Whether to indent '#define' at the brace level. If false, these are
-# indented from column 1.
-pp_define_at_level = false # true/false
-
-# Whether to indent '#include' at the brace level.
-pp_include_at_level = false # true/false
-
-# Whether to ignore the '#define' body while formatting.
-pp_ignore_define_body = false # true/false
-
-# An offset value that controls the indentation of the body of a multiline #define.
-# 'body' refers to all the lines of a multiline #define except the first line.
-# Requires 'pp_ignore_define_body = false'.
-#
-# <0: Absolute column: the body indentation starts off at the specified column
-# (ex. -3 ==> the body is indented starting from column 3)
-# >=0: Relative to the column of the '#' of '#define'
-# (ex. 3 ==> the body is indented starting 3 columns at the right of '#')
-#
-# Default: 8
-pp_multiline_define_body_indent = 8 # number
-
-# Whether to indent case statements between #if, #else, and #endif.
-# Only applies to the indent of the preprocessor that the case statements
-# directly inside of.
-#
-# Default: true
-pp_indent_case = true # true/false
-
-# Whether to indent whole function definitions between #if, #else, and #endif.
-# Only applies to the indent of the preprocessor that the function definition
-# is directly inside of.
-#
-# Default: true
-pp_indent_func_def = true # true/false
-
-# Whether to indent extern C blocks between #if, #else, and #endif.
-# Only applies to the indent of the preprocessor that the extern block is
-# directly inside of.
-#
-# Default: true
-pp_indent_extern = true # true/false
-
-# How to indent braces directly inside #if, #else, and #endif.
-# Requires pp_if_indent_code=true and only applies to the indent of the
-# preprocessor that the braces are directly inside of.
-# 0: No extra indent
-# 1: Indent by one level
-# -1: Preserve original indentation
-#
-# Default: 1
-pp_indent_brace = 1 # number
-
-# Whether to print warning messages for unbalanced #if and #else blocks.
-# This will print a message in the following cases:
-# - if an #ifdef block ends on a different indent level than
-# where it started from. Example:
-#
-# #ifdef TEST
-# int i;
-# {
-# int j;
-# #endif
-#
-# - an #elif/#else block ends on a different indent level than
-# the corresponding #ifdef block. Example:
-#
-# #ifdef TEST
-# int i;
-# #else
-# }
-# int j;
-# #endif
-pp_warn_unbalanced_if = false # true/false
-
-#
-# Sort includes options
-#
-
-# The regex for include category with priority 0.
-include_category_0 = "" # string
-
-# The regex for include category with priority 1.
-include_category_1 = "" # string
-
-# The regex for include category with priority 2.
-include_category_2 = "" # string
-
-#
-# Use or Do not Use options
-#
-
-# true: indent_func_call_param will be used (default)
-# false: indent_func_call_param will NOT be used
-#
-# Default: true
-use_indent_func_call_param = true # true/false
-
-# The value of the indentation for a continuation line is calculated
-# differently if the statement is:
-# - a declaration: your case with QString fileName ...
-# - an assignment: your case with pSettings = new QSettings( ...
-#
-# At the second case the indentation value might be used twice:
-# - at the assignment
-# - at the function call (if present)
-#
-# To prevent the double use of the indentation value, use this option with the
-# value 'true'.
-#
-# true: indent_continue will be used only once
-# false: indent_continue will be used every time (default)
-#
-# Requires indent_ignore_first_continue=false.
-use_indent_continue_only_once = false # true/false
-
-# The indentation can be:
-# - after the assignment, at the '[' character
-# - at the beginning of the lambda body
-#
-# true: indentation will be at the beginning of the lambda body
-# false: indentation will be after the assignment (default)
-indent_cpp_lambda_only_once = false # true/false
-
-# Whether sp_after_angle takes precedence over sp_inside_fparen. This was the
-# historic behavior, but is probably not the desired behavior, so this is off
-# by default.
-use_sp_after_angle_always = false # true/false
-
-# Whether to apply special formatting for Qt SIGNAL/SLOT macros. Essentially,
-# this tries to format these so that they match Qt's normalized form (i.e. the
-# result of QMetaObject::normalizedSignature), which can slightly improve the
-# performance of the QObject::connect call, rather than how they would
-# otherwise be formatted.
-#
-# See options_for_QT.cpp for details.
-#
-# Default: true
-use_options_overriding_for_qt_macros = true # true/false
-
-# If true: the form feed character is removed from the list of whitespace
-# characters. See https://en.cppreference.com/w/cpp/string/byte/isspace.
-use_form_feed_no_more_as_whitespace_character = false # true/false
-
-#
-# Warn levels - 1: error, 2: warning (default), 3: note
-#
-
-# (C#) Warning is given if doing tab-to-\t replacement and we have found one
-# in a C# verbatim string literal.
-#
-# Default: 2
-warn_level_tabs_found_in_verbatim_string_literals = 2 # unsigned number
-
-# Limit the number of loops.
-# Used by uncrustify.cpp to exit from infinite loop.
-# 0: no limit.
-debug_max_number_of_loops = 0 # number
-
-# Set the number of the line to protocol;
-# Used in the function prot_the_line if the 2. parameter is zero.
-# 0: nothing protocol.
-debug_line_number_to_protocol = 0 # number
-
-# Set the number of second(s) before terminating formatting the current file,
-# 0: no timeout.
-# only for linux
-debug_timeout = 0 # number
-
-# Set the number of characters to be printed if the text is too long,
-# 0: do not truncate.
-debug_truncate = 0 # unsigned number
-
-# sort (or not) the tracking info.
-#
-# Default: true
-debug_sort_the_tracks = true # true/false
-
-# decode (or not) the flags as a new line.
-# only if the -p option is set.
-debug_decode_the_flags = false # true/false
-
-# insert the number of the line at the beginning of each line
-set_numbering_for_html_output = false # true/false
-
-# Meaning of the settings:
-# Ignore - do not do any changes
-# Add - makes sure there is 1 or more space/brace/newline/etc
-# Force - makes sure there is exactly 1 space/brace/newline/etc,
-# behaves like Add in some contexts
-# Remove - removes space/brace/newline/etc
-#
-#
-# - Token(s) can be treated as specific type(s) with the 'set' option:
-# `set tokenType tokenString [tokenString...]`
-#
-# Example:
-# `set BOOL __AND__ __OR__`
-#
-# tokenTypes are defined in src/token_enum.h, use them without the
-# 'CT_' prefix: 'CT_BOOL' => 'BOOL'
-#
-#
-# - Token(s) can be treated as type(s) with the 'type' option.
-# `type tokenString [tokenString...]`
-#
-# Example:
-# `type int c_uint_8 Rectangle`
-#
-# This can also be achieved with `set TYPE int c_uint_8 Rectangle`
-#
-#
-# To embed whitespace in tokenStrings use the '\' escape character, or quote
-# the tokenStrings. These quotes are supported: "'`
-#
-#
-# - Support for the auto detection of languages through the file ending can be
-# added using the 'file_ext' command.
-# `file_ext langType langString [langString..]`
-#
-# Example:
-# `file_ext CPP .ch .cxx .cpp.in`
-#
-# langTypes are defined in uncrusify_types.h in the lang_flag_e enum, use
-# them without the 'LANG_' prefix: 'LANG_CPP' => 'CPP'
-#
-#
-# - Custom macro-based indentation can be set up using 'macro-open',
-# 'macro-else' and 'macro-close'.
-# `(macro-open | macro-else | macro-close) tokenString`
-#
-# Example:
-# `macro-open BEGIN_TEMPLATE_MESSAGE_MAP`
-# `macro-open BEGIN_MESSAGE_MAP`
-# `macro-close END_MESSAGE_MAP`
-#
-#
-# option(s) with 'not default' value: 0
-#
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/freebsd.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/freebsd.cfg
deleted file mode 100644
index 6cf0a155..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/freebsd.cfg
+++ /dev/null
@@ -1,386 +0,0 @@
-# Uncrustify 0.55
-newlines = lf
-input_tab_size = 8
-output_tab_size = 8
-string_escape_char = 92
-string_escape_char2 = 0
-indent_columns = 8
-indent_continue = 4
-indent_with_tabs = 2
-indent_align_string = false
-indent_xml_string = 0
-indent_brace = 0
-indent_braces = false
-indent_braces_no_func = false
-indent_brace_parent = false
-indent_namespace = false
-indent_namespace_level = 0
-indent_namespace_limit = 0
-indent_extern = false
-indent_class = true
-indent_class_colon = true
-indent_else_if = false
-indent_var_def_blk = 0
-indent_func_call_param = false
-indent_func_def_param = false
-indent_func_proto_param = false
-indent_func_class_param = false
-indent_func_ctor_var_param = false
-indent_template_param = false
-indent_func_param_double = false
-indent_func_const = 0
-indent_func_throw = 0
-indent_member = 0
-indent_single_line_comments_before = 0
-indent_relative_single_line_comments = false
-indent_switch_case = 0
-indent_case_shift = 0
-indent_case_brace = 0
-indent_col1_comment = false
-indent_label = 1
-indent_access_spec = 1
-indent_access_spec_body = false
-indent_paren_nl = false
-indent_paren_close = 0
-indent_comma_paren = 0
-indent_bool_paren = 0
-indent_square_nl = false
-indent_preserve_sql = false
-indent_align_assign = true
-indent_off_after_assign = false
-sp_arith = ignore
-sp_assign = force
-sp_before_assign = ignore
-sp_after_assign = ignore
-sp_enum_assign = ignore
-sp_enum_before_assign = ignore
-sp_enum_after_assign = ignore
-sp_pp_concat = add
-sp_pp_stringify = add
-sp_bool = force
-sp_compare = force
-sp_inside_paren = remove
-sp_paren_paren = remove
-sp_balance_nested_parens = false
-sp_paren_brace = ignore
-sp_before_ptr_star = force
-sp_before_unnamed_ptr_star = ignore
-sp_between_ptr_star = remove
-sp_after_ptr_star = remove
-sp_after_ptr_star_func = ignore
-sp_before_ptr_star_func = ignore
-sp_before_byref = remove
-sp_before_unnamed_byref = ignore
-sp_after_byref = force
-sp_after_byref_func = ignore
-sp_before_byref_func = ignore
-sp_after_type = force
-sp_template_angle = ignore
-sp_before_angle = remove
-sp_inside_angle = remove
-sp_after_angle = force
-sp_angle_paren = ignore
-sp_angle_word = ignore
-sp_before_sparen = force
-sp_inside_sparen = remove
-sp_inside_sparen_close = ignore
-sp_inside_for = remove
-sp_inside_for_close = ignore
-sp_after_sparen = force
-sp_sparen_brace = add
-sp_invariant_paren = ignore
-sp_after_invariant_paren = ignore
-sp_special_semi = ignore
-sp_before_semi = remove
-sp_before_semi_for = ignore
-sp_before_semi_for_empty = force
-sp_between_semi_for_empty = force
-sp_after_semi = add
-sp_after_semi_for = force
-sp_after_semi_for_empty = ignore
-sp_before_square = ignore
-sp_before_squares = ignore
-sp_inside_square = remove
-sp_after_comma = force
-sp_before_comma = remove
-sp_before_ellipsis = ignore
-sp_after_class_colon = ignore
-sp_before_class_colon = ignore
-sp_before_case_colon = remove
-sp_after_operator = ignore
-sp_after_operator_sym = ignore
-sp_after_cast = remove
-sp_inside_paren_cast = ignore
-sp_cpp_cast_paren = ignore
-sp_sizeof_paren = remove
-sp_after_tag = ignore
-sp_inside_braces_enum = force
-sp_inside_braces_struct = force
-sp_inside_braces = force
-sp_inside_braces_empty = ignore
-sp_type_func = force
-sp_func_proto_paren = remove
-sp_func_def_paren = remove
-sp_inside_fparens = ignore
-sp_inside_fparen = remove
-sp_square_fparen = ignore
-sp_fparen_brace = add
-sp_func_call_paren = remove
-sp_func_call_user_paren = ignore
-sp_func_class_paren = remove
-sp_return_paren = force
-sp_attribute_paren = ignore
-sp_defined_paren = ignore
-sp_throw_paren = ignore
-sp_macro = ignore
-sp_macro_func = ignore
-sp_else_brace = ignore
-sp_brace_else = ignore
-sp_brace_typedef = force
-sp_catch_brace = ignore
-sp_brace_catch = ignore
-sp_finally_brace = ignore
-sp_brace_finally = ignore
-sp_try_brace = ignore
-sp_getset_brace = ignore
-sp_before_dc = remove
-sp_after_dc = remove
-sp_d_array_colon = ignore
-sp_not = remove
-sp_inv = remove
-sp_addr = remove
-sp_member = remove
-sp_deref = remove
-sp_sign = remove
-sp_incdec = remove
-sp_before_nl_cont = add
-sp_after_oc_scope = ignore
-sp_after_oc_colon = ignore
-sp_before_oc_colon = ignore
-sp_after_send_oc_colon = ignore
-sp_before_send_oc_colon = ignore
-sp_after_oc_type = ignore
-sp_after_oc_return_type = ignore
-sp_after_oc_at_sel = ignore
-sp_before_oc_block_caret = ignore
-sp_after_oc_block_caret = ignore
-sp_cond_colon = ignore
-sp_cond_question = ignore
-sp_case_label = remove
-sp_range = ignore
-sp_cmt_cpp_start = ignore
-sp_endif_cmt = ignore
-force_tab_after_define = true
-align_keep_tabs = false
-align_with_tabs = true
-align_on_tabstop = true
-align_number_right = true
-align_func_params = false
-align_same_func_call_params = false
-align_same_func_call_params_span = 0
-align_same_func_call_params_thresh = 0
-align_var_def_span = 0
-align_var_def_star_style = 0
-align_var_def_amp_style = 0
-align_var_def_thresh = 0
-align_var_def_gap = 0
-align_var_def_colon = false
-align_var_def_attribute = false
-align_var_def_inline = false
-align_assign_span = 0
-align_assign_thresh = 12
-align_enum_equ_span = 16
-align_enum_equ_thresh = 0
-align_var_struct_span = 99
-align_var_struct_thresh = 0
-align_var_struct_gap = 0
-align_struct_init_span = 3
-align_typedef_gap = 3
-align_typedef_span = 5
-align_typedef_func = 0
-align_typedef_star_style = 0
-align_typedef_amp_style = 0
-align_right_cmt_span = 3
-align_right_cmt_mix = false
-align_right_cmt_gap = 0
-align_right_cmt_at_col = 0
-align_func_proto_span = 0
-align_func_proto_gap = 0
-align_on_operator = false
-align_mix_var_proto = false
-align_single_line_func = false
-align_single_line_brace = false
-align_single_line_brace_gap = 0
-align_oc_msg_spec_span = 0
-align_nl_cont = true
-align_pp_define_gap = 4
-align_pp_define_span = 3
-align_left_shift = true
-align_oc_msg_colon_span = 0
-nl_collapse_empty_body = false
-nl_assign_leave_one_liners = true
-nl_class_leave_one_liners = true
-nl_enum_leave_one_liners = false
-nl_getset_leave_one_liners = false
-nl_func_leave_one_liners = false
-nl_if_leave_one_liners = false
-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 = add
-nl_assign_square = ignore
-nl_after_square_assign = ignore
-nl_var_def_blk_end_func_top = 1
-nl_fcall_brace = add
-nl_enum_brace = remove
-nl_struct_brace = remove
-nl_union_brace = remove
-nl_if_brace = remove
-nl_brace_else = remove
-nl_elseif_brace = ignore
-nl_else_brace = remove
-nl_else_if = remove
-nl_brace_finally = ignore
-nl_finally_brace = ignore
-nl_try_brace = ignore
-nl_getset_brace = force
-nl_for_brace = add
-nl_catch_brace = ignore
-nl_brace_catch = ignore
-nl_while_brace = add
-nl_brace_brace = ignore
-nl_do_brace = add
-nl_brace_while = remove
-nl_switch_brace = add
-nl_multi_line_cond = false
-nl_multi_line_define = true
-nl_before_case = true
-nl_before_throw = ignore
-nl_after_case = true
-nl_namespace_brace = ignore
-nl_template_class = ignore
-nl_class_brace = ignore
-nl_class_init_args = ignore
-nl_func_type_name = ignore
-nl_func_type_name_class = ignore
-nl_func_scope_name = ignore
-nl_func_proto_type_name = ignore
-nl_func_paren = remove
-nl_func_decl_start = ignore
-nl_func_decl_start_single = ignore
-nl_func_decl_args = ignore
-nl_func_decl_end = ignore
-nl_func_decl_end_single = ignore
-nl_func_decl_empty = ignore
-nl_fdef_brace = add
-nl_after_return = true
-nl_return_expr = ignore
-nl_after_semicolon = true
-nl_after_brace_open = true
-nl_after_brace_open_cmt = false
-nl_after_vbrace_open = false
-nl_after_vbrace_open_empty = false
-nl_after_brace_close = true
-nl_define_macro = false
-nl_squeeze_ifdef = true
-nl_before_if = ignore
-nl_after_if = ignore
-nl_before_for = ignore
-nl_after_for = ignore
-nl_before_while = ignore
-nl_after_while = ignore
-nl_before_switch = ignore
-nl_after_switch = ignore
-nl_before_do = ignore
-nl_after_do = ignore
-nl_ds_struct_enum_cmt = false
-nl_ds_struct_enum_close_brace = false
-nl_class_colon = ignore
-nl_create_if_one_liner = false
-nl_create_for_one_liner = false
-nl_create_while_one_liner = false
-pos_arith = ignore
-pos_assign = ignore
-pos_bool = trail
-pos_compare = ignore
-pos_conditional = ignore
-pos_comma = ignore
-pos_class_comma = ignore
-pos_class_colon = ignore
-code_width = 80
-ls_for_split_full = false
-ls_func_split_full = false
-nl_max = 4
-nl_after_func_proto = 0
-nl_after_func_proto_group = 2
-nl_after_func_body = 3
-nl_after_func_body_one_liner = 0
-nl_before_block_comment = 2
-nl_before_c_comment = 0
-nl_before_cpp_comment = 0
-nl_after_multiline_comment = false
-nl_before_access_spec = 0
-nl_after_access_spec = 0
-nl_comment_func_def = 1
-nl_after_try_catch_finally = 0
-nl_around_cs_property = 0
-nl_between_get_set = 0
-eat_blanks_after_open_brace = true
-eat_blanks_before_close_brace = true
-mod_full_brace_do = add
-mod_full_brace_for = add
-mod_full_brace_function = ignore
-mod_full_brace_if = add
-mod_full_brace_if_chain = 0
-mod_full_brace_nl = 0
-mod_full_brace_while = add
-mod_paren_on_return = add
-mod_pawn_semicolon = false
-mod_full_paren_if_bool = true
-mod_remove_extra_semicolon = true
-mod_add_long_function_closebrace_comment = 0
-mod_add_long_switch_closebrace_comment = 0
-mod_add_long_ifdef_endif_comment = 0
-mod_add_long_ifdef_else_comment = 0
-mod_sort_import = false
-mod_sort_using = false
-mod_sort_include = false
-mod_sort_incl_import_prioritize_filename = false
-mod_sort_incl_import_prioritize_extensionless = false
-mod_sort_incl_import_prioritize_angle_over_quotes = false
-mod_sort_incl_import_ignore_extension = false
-mod_sort_incl_import_grouping_enabled = false
-mod_move_case_break = false
-mod_case_brace = remove
-mod_remove_empty_return = true
-cmt_width = 0
-cmt_reflow_mode = 0
-cmt_indent_multi = true
-cmt_c_group = false
-cmt_c_nl_start = false
-cmt_c_nl_end = false
-cmt_cpp_group = false
-cmt_cpp_nl_start = false
-cmt_cpp_nl_end = false
-cmt_cpp_to_c = false
-cmt_star_cont = true
-cmt_sp_before_star_cont = 0
-cmt_sp_after_star_cont = 0
-cmt_multi_check_last = true
-cmt_insert_file_header = ""
-cmt_insert_file_footer = ""
-cmt_insert_func_header = ""
-cmt_insert_class_header = ""
-cmt_insert_before_preproc = false
-pp_indent = remove
-pp_indent_at_level = false
-pp_indent_at_level0 = false
-pp_indent_count = 1
-pp_space_after = ignore
-pp_space_count = 0
-pp_indent_region = 0
-pp_region_indent_code = false
-pp_indent_if = 0
-pp_if_indent_code = false
-pp_define_at_level = false
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/gnu-indent.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/gnu-indent.cfg
deleted file mode 100644
index f30ba47d..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/gnu-indent.cfg
+++ /dev/null
@@ -1,83 +0,0 @@
-#
-# GNU format (sorta)
-#
-
-indent_with_tabs = 0 # 1=indent to level only, 2=indent with tabs
-input_tab_size = 8 # original tab size
-output_tab_size = 8 # new tab size
-indent_columns = 2
-# indent_label = 2 # pos: absolute col, neg: relative column
-indent_align_string = False # align broken strings
-indent_brace = 2
-
-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 = add # "do {" vs "do \n {"
-nl_if_brace = add # "if () {" vs "if () \n {"
-nl_for_brace = add # "for () {" vs "for () \n {"
-nl_else_brace = add # "else {" vs "else \n {"
-nl_while_brace = add # "while () {" vs "while () \n {"
-nl_switch_brace = add # "switch () {" vs "switch () \n {"
-nl_var_def_blk_end_func_top = 1
-nl_before_case = 1
-nl_fcall_brace = add # "foo() {" vs "foo()\n{"
-nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
-# nl_after_return = TRUE
-nl_brace_while = remove
-nl_brace_else = add
-nl_squeeze_ifdef = TRUE
-
-# 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 = ignore # "for () a--;" vs "for () { a--; }"
-# mod_full_brace_do = ignore # "do a--; while ();" vs "do { a--; } while ();"
-# mod_full_brace_while = ignore # "while (a) a--;" vs "while (a) { a--; }"
-
-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_for = remove
-#sp_type_func = ignore
-sp_assign = force
-sp_arith = force
-sp_bool = force
-sp_compare = 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();"
-
-# 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 = TRUE
-# align_var_def_colon = TRUE
-# align_assign_span = 1
-# align_struct_init_span = 3
-# align_var_struct_span = 3
-# align_right_cmt_span = 3
-# align_pp_define_span = 3
-# align_pp_define_gap = 4
-# align_number_right = 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
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/klaus.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/klaus.cfg
deleted file mode 100644
index 93e38ed5..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/klaus.cfg
+++ /dev/null
@@ -1,508 +0,0 @@
-
-#
-# General options
-#
-
-# The type of line endings
-newlines = lf # auto/lf/crlf/cr
-
-# The original size of tabs in the input
-input_tab_size = 8 # number
-
-# The size of tabs in the output (only used if align_with_tabs=true)
-output_tab_size = 3 # number
-
-# The ascii value of the string escape char, usually 92 (\). (Pawn)
-string_escape_char = 92 # number
-
-#
-# Indenting
-#
-
-# The number of columns to indent per level (usually 2, 3, 4, or 8)
-indent_columns = 3 # 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
-
-# Spaces to indent '{' from level
-indent_brace = 0 # number
-
-# Whether braces are indented to the body level
-indent_braces = false # false/true
-
-# Indent based on the size of the brace parent, ie 'if' => 3 spaces, 'for' => 4 spaces, etc.
-indent_brace_parent = true # false/true
-
-# Whether the 'namespace' body is indented
-indent_namespace = false # false/true
-
-# Whether the 'class' body is indented
-indent_class = true # false/true
-
-# Whether to indent the stuff after a leading class colon
-indent_class_colon = false # false/true
-
-# Whether to indent continued function call parameters one indent level (true) or aligns instead of indent (false)
-indent_func_call_param = false # false/true
-
-# The number of spaces to indent a continued '->' or '.'
-# Usually set to indent_columns.
-indent_member = 3 # number
-
-# Spaces to indent 'case' from 'switch'
-indent_switch_case = 0 # number
-
-# Spaces to indent '{' from 'case'
-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
-
-# 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
-
-# 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
-
-#
-# Spacing options
-#
-
-# Add or remove space around arithmetic operator '+', '-', '/', '*', etc
-sp_arith = force # ignore/add/remove/force
-
-# Add or remove space around assignment operator '=', '+=', etc
-sp_assign = force # ignore/add/remove/force
-
-# Add or remove space around boolean operators '&&' and '||'
-sp_bool = force # ignore/add/remove/force
-
-# Add or remove space around compare operator '<', '>', '==', etc
-sp_compare = force # ignore/add/remove/force
-
-# Add or remove space inside '(' and ')'
-sp_inside_paren = remove # ignore/add/remove/force
-
-# Add or remove space between nested parens
-sp_paren_paren = remove # ignore/add/remove/force
-
-# 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 = force # ignore/add/remove/force
-
-# Add or remove space between pointer stars '*'
-sp_between_ptr_star = remove # ignore/add/remove/force
-
-# Add or remove space after pointer star '*'
-sp_after_ptr_star = remove # ignore/add/remove/force
-
-# Add or remove space between the pointer star '*' and the name of the variable
-# in a function pointer definition.
-sp_ptr_star_func_var = remove # ignore/add/remove/force
-
-# Add or remove space before reference sign '&'
-sp_before_byref = remove # ignore/add/remove/force
-
-# Add or remove space after reference sign '&'
-sp_after_byref = ignore # ignore/add/remove/force
-
-# Add or remove space before '<>'
-sp_before_angle = force # ignore/add/remove/force
-
-# Add or remove space after '<>'
-sp_after_angle = force # ignore/add/remove/force
-
-# Add or remove space before '(' of 'if', 'for', 'switch', and 'while'
-sp_before_sparen = remove # ignore/add/remove/force
-
-# Add or remove space inside if-condition '(' and ')'
-sp_inside_sparen = remove # ignore/add/remove/force
-
-# Add or remove space inside for-loop '(' and ')'
-sp_inside_for = remove # ignore/add/remove/force
-
-# Add or remove space after ')' of 'if', 'for', 'switch', and 'while'
-sp_after_sparen = remove # ignore/add/remove/force
-
-# Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while'
-sp_sparen_brace = remove # ignore/add/remove/force
-
-# Add or remove space before empty statement ';' on 'if', 'for' and 'while'
-sp_special_semi = ignore # ignore/add/remove/force
-
-# Add or remove space before ';'
-sp_before_semi = remove # 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 = remove # ignore/add/remove/force
-
-# Add or remove space after ','
-sp_after_comma = force # 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 = remove # 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 = force # ignore/add/remove/force
-
-# Add or remove space inside struct/union '{' and '}'
-sp_inside_braces_struct = force # ignore/add/remove/force
-
-# Add or remove space inside '{' and '}'
-sp_inside_braces = force # ignore/add/remove/force
-
-# Add or remove space inside '<' and '>'
-sp_inside_angle = remove # 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 = ignore # 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 = ignore # 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 = add # 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 = remove # ignore/add/remove/force
-
-# Add or remove space between 'return' and '('
-sp_return_paren = remove # 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 = remove # ignore/add/remove/force
-
-# Add or remove space between '}' and 'else' if on the same line
-sp_brace_else = remove # 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 right-align numbers
-align_number_right = true # false/true
-
-# The span for aligning variable definitions (0=don't align)
-align_var_def_span = 1 # number
-
-# Whether the pointer star is part of the variable name or not
-align_var_def_star_style = 1
-
-# The threshold for aligning variable definitions (0=no limit)
-align_var_def_thresh = 12 # 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 = true # false/true
-
-# The span for aligning on '=' in assignments (0=don't align)
-align_assign_span = 1 # number
-
-# The threshold for aligning on '=' in assignments (0=no limit)
-align_assign_thresh = 12 # number
-
-# The span for aligning on '=' in enums (0=don't align)
-align_enum_equ_span = 16 # 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 = 99 # number
-
-# The span for aligning struct initializer values (0=don't align)
-align_struct_init_span = 3 # number
-
-# The minimum space between the type and the synonym of a typedef
-align_typedef_gap = 3 # number
-
-# The span for aligning single-line typedefs (0=don't align)
-align_typedef_span = 5 # 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: typedef int * pint;
-align_typedef_star_style = 0 # number
-
-# The span for aligning comments that end lines (0=don't align)
-align_right_cmt_span = 3 # number
-
-# The span for aligning function prototypes (0=don't align)
-align_func_proto_span = 0 # number
-
-# Whether to align macros wrapped with a backslash and a newline
-align_nl_cont = true # false/true
-
-# The minimum space between label and value of a preprocessor define
-align_pp_define_gap = 4 # number
-
-# The span for aligning on '#define' bodies (0=don't align)
-align_pp_define_span = 3 # number
-
-#
-# Newline adding and removing options
-#
-
-# Try to limit code width to N number of columns
-code_width = 0 # number
-
-# Whether to collapse empty blocks between '{' and '}'
-nl_collapse_empty_body = false # false/true
-
-# Add or remove newlines at the start of the file
-nl_start_of_file = remove # 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 = force # 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
-
-# The number of newlines after a block of variable definitions
-nl_var_def_blk_end_func_top = 1 # number
-
-# Add or remove newline between function call and '('
-nl_fcall_brace = add # 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 = remove # ignore/add/remove/force
-
-# Add or remove newline between '}' and 'else'
-nl_brace_else = force # 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 = ignore # ignore/add/remove/force
-
-# Add or remove newline between 'else' and '{'
-nl_else_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'for' and '{'
-nl_for_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'while' and '{'
-nl_while_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'do' and '{'
-nl_do_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between '}' and 'while' of 'do' statement
-nl_brace_while = remove # ignore/add/remove/force
-
-# Add or remove newline between 'switch' and '{'
-nl_switch_brace = remove # ignore/add/remove/force
-
-# 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 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
-nl_after_brace_open = true # 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 = true # false/true
-
-#
-# Positioning options
-#
-
-# The position of boolean operators in wrapped expressions
-pos_bool = trail # ignore/lead/trail
-
-# The position of colons between constructor and member initialization
-pos_class_colon = ignore # ignore/lead/trail
-
-#
-# Blank line options
-#
-
-# The maximum consecutive newlines
-nl_max = 4 # 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 = 2 # number
-
-# The number of newlines after '}' of the function body
-nl_after_func_body = 2 # number
-
-# The minimum number of newlines before a multi-line comment (doesn't apply if after a brace open)
-nl_before_block_comment = 2 # number
-
-# Whether to remove blank lines after '{'
-eat_blanks_after_open_brace = true # false/true
-
-# Whether to remove blank lines before '}'
-eat_blanks_before_close_brace = true # 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 = add # ignore/add/remove/force
-
-# Whether to change optional semicolons to real semicolons
-mod_pawn_semicolon = false # false/true
-
-#
-# Comment modifications
-#
-
-# 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 = true # false/true
-
-#
-# Preprocessor options
-#
-
-# Add or remove indent of preprocessor directives
-pp_indent = ignore # ignore/add/remove/force
-
-# Add or remove space between # and, say, define
-pp_space_after = ignore # ignore/add/remove/force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/kr-indent.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/kr-indent.cfg
deleted file mode 100644
index d2940437..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/kr-indent.cfg
+++ /dev/null
@@ -1,83 +0,0 @@
-#
-# K&R (sort-of)
-#
-
-indent_with_tabs = 2 # 1=indent to level only, 2=indent with tabs
-input_tab_size = 8 # original tab size
-output_tab_size = 8 # new tab size
-indent_columns = output_tab_size
-indent_label = 2 # pos: absolute col, neg: relative column
-# indent_align_string = False # align broken strings
-# indent_brace = 0
-
-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_var_def_blk_end_func_top = 1
-# nl_before_case = 1
-nl_fcall_brace = add # "foo() {" vs "foo()\n{"
-nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
-# nl_after_return = TRUE
-nl_brace_while = remove
-nl_brace_else = remove
-nl_squeeze_ifdef = 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_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 # "( 1 )" vs "(1)"
-sp_inside_fparen = remove # "( 1 )" vs "(1)" - functions
-sp_inside_sparen = remove # "( 1 )" vs "(1)" - if etc
-sp_inside_for = remove # "( 1 )" vs "(1)" - for
-# sp_type_func = ignore
-sp_assign = force
-sp_arith = force
-sp_bool = force
-sp_compare = 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();"
-
-# 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 = TRUE
-# align_var_def_colon = TRUE
-# align_assign_span = 1
-# align_struct_init_span = 3
-# align_var_struct_span = 3
-# align_right_cmt_span = 3
-# align_pp_define_span = 3
-# align_pp_define_gap = 4
-# align_number_right = 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
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/linux-indent.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/linux-indent.cfg
deleted file mode 100644
index 3d924d45..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/linux-indent.cfg
+++ /dev/null
@@ -1,90 +0,0 @@
-#
-# uncrustify config file for the linux kernel
-#
-
-indent_with_tabs = 2 # 1=indent to level only, 2=indent with tabs
-align_with_tabs = TRUE # use tabs to align
-align_on_tabstop = TRUE # align on tabstops
-input_tab_size = 8 # original tab size
-output_tab_size = 8 # new tab size
-indent_columns = output_tab_size
-
-indent_label = 2 # pos: absolute col, neg: relative column
-
-
-#
-# 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_var_def_blk_end_func_top = 1
-nl_fcall_brace = remove # "list_for_each() {" vs "list_for_each()\n{"
-nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
-# nl_after_return = TRUE;
-# nl_before_case = 1
-
-
-#
-# Source code modifications
-#
-
-# mod_paren_on_return = remove # "return 1;" vs "return (1);"
-# mod_full_brace_if = remove # "if (a) a--;" vs "if (a) { a--; }"
-# mod_full_brace_for = remove # "for () a--;" vs "for () { a--; }"
-# mod_full_brace_do = remove # "do a--; while ();" vs "do { a--; } while ();"
-# mod_full_brace_while = remove # "while (a) a--;" vs "while (a) { a--; }"
-
-
-#
-# 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_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();"
-
-
-#
-# Aligning stuff
-#
-
-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 = 3 # align stuff in a structure init '= { }'
-align_right_cmt_span = 3
-# align_pp_define_span = 8;
-# align_pp_define_gap = 4;
-
-# cmt_star_cont = FALSE
-
-# indent_brace = 0
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/linux.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/linux.cfg
deleted file mode 100644
index 6e10303c..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/linux.cfg
+++ /dev/null
@@ -1,123 +0,0 @@
-#
-# uncrustify config file for the linux kernel
-#
-
-indent_with_tabs = 2 # 1=indent to level only, 2=indent with tabs
-input_tab_size = 8 # original tab size
-output_tab_size = 8 # new tab size
-indent_columns = output_tab_size
-
-indent_label = 1 # pos: absolute col, neg: relative column
-
-
-#
-# 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
-sp_brace_else = force
-sp_else_brace = force
-nl_var_def_blk_end_func_top = 1
-nl_fcall_brace = remove # "list_for_each() {" vs "list_for_each()\n{"
-nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
-nl_after_label_colon = true # "fail:\nfree(foo);" vs "fail: free(foo);"
-# nl_after_return = TRUE;
-# nl_before_case = 1
-
-
-#
-# Source code modifications
-#
-
-mod_paren_on_return = remove # "return 1;" vs "return (1);"
-#mod_full_brace_if = remove # "if (a) a--;" vs "if (a) { a--; }"
-mod_full_brace_if_chain = 1
-mod_full_brace_for = remove # "for () a--;" vs "for () { a--; }"
-mod_full_brace_do = remove # "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
-
-
-#
-# 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 = force # "{ 1 }" vs "{1}"
-sp_inside_braces_struct = force # "{ 1 }" vs "{1}"
-sp_inside_braces_enum = force # "{ 1 }" vs "{1}"
-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();"
-
-
-#
-# Aligning stuff
-#
-
-align_with_tabs = TRUE # use tabs to align
-align_on_tabstop = TRUE # 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 = 3 # align stuff in a structure init '= { }'
-align_right_cmt_span = 3
-# align_pp_define_span = 8;
-# align_pp_define_gap = 4;
-
-cmt_star_cont = true
-
-# indent_brace = 0
-
-nl_func_paren = remove
-nl_func_decl_start = remove
-nl_func_decl_empty = remove
-nl_func_decl_args = remove
-nl_func_decl_end = remove
-sp_inside_paren = remove
-sp_inside_square = remove
-sp_inside_paren_cast = remove
-sp_inside_fparen = remove
-sp_inside_sparen = remove
-sp_inside_for = remove
-sp_paren_paren = remove
-sp_before_ptr_star = force
-sp_after_ptr_star = remove
-sp_ptr_star_func_var = remove
-sp_between_ptr_star = remove
-align_func_params = true
-align_var_struct_span = 6
-
-eat_blanks_after_open_brace = true
-eat_blanks_before_close_brace = true
-pp_indent = remove
-
-nl_start_of_file = remove
-nl_end_of_file = force
-nl_end_of_file_min = 1
-nl_comment_func_def = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/mono.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/mono.cfg
deleted file mode 100644
index 43ecdc8d..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/mono.cfg
+++ /dev/null
@@ -1,87 +0,0 @@
-#
-# Mono library format
-#
-
-indent_with_tabs = 0 # 1=indent to level only, 2=indent with tabs
-input_tab_size = 8 # original tab size
-output_tab_size = 8 # new tab size
-indent_columns = output_tab_size
-indent_label = 2 # pos: absolute col, neg: relative column
-# indent_align_string = False # align broken strings
-# indent_brace = 0
-indent_func_call_param = true # use indent tabstop
-
-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_var_def_blk_end_func_top = 1
-nl_before_case = 1
-nl_fcall_brace = remove # "foo() {" vs "foo()\n{"
-nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
-# nl_after_return = TRUE
-nl_brace_while = remove
-nl_brace_else = add
-nl_squeeze_ifdef = 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_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_for = remove
-sp_inside_square = remove
-sp_before_square = add
-#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 = force # "int foo (){" vs "int foo(){"
-sp_func_call_paren = force # "foo (" vs "foo("
-sp_func_proto_paren = force # "int foo ();" vs "int foo();"
-
-# 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 = TRUE
-# align_var_def_colon = TRUE
-# align_assign_span = 1
-# align_struct_init_span = 3
-# align_var_struct_span = 3
-# align_right_cmt_span = 3
-# align_pp_define_span = 3
-# align_pp_define_gap = 4
-# align_number_right = 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
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/objc.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/objc.cfg
deleted file mode 100644
index 265078b8..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/objc.cfg
+++ /dev/null
@@ -1,138 +0,0 @@
-#
-# uncrustify config file for objective-c and objective-c++
-#
-
-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_var_def_blk_end_func_top = 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_endif_comment
-mod_add_long_switch_closebrace_comment = mod_add_long_ifdef_endif_comment
-mod_add_long_function_closebrace_comment = mod_add_long_ifdef_endif_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_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
-sp_before_oc_block_caret = ignore
-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 = 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
-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
-
-
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/sun.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/sun.cfg
deleted file mode 100644
index b1c16263..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/sun.cfg
+++ /dev/null
@@ -1,1803 +0,0 @@
-#
-# Sun C/C++/Java
-# https://www.cis.upenn.edu/~lee/06cse480/data/cstyle.ms.pdf
-# http://www.oracle.com/technetwork/java/codeconventions-150003.pdf
-#
-
-# The type of line endings
-newlines = auto # auto/lf/crlf/cr
-
-# The original size of tabs in the input
-input_tab_size = 8 # number
-
-# The size of tabs in the output (only used if align_with_tabs=true)
-output_tab_size = 8 # 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
-
-# Replace tab characters found in string literals with the escape sequence \t instead.
-string_replace_tab_chars = true # false/true
-
-# Allow interpreting '>=' and '>>=' as part of a template in 'void f(list<list<B>>=val);'.
-# If true (default), 'assert(x<0 && y>=3)' will be broken.
-# Improvements to template detection may make this option obsolete.
-tok_split_gte = false # false/true
-
-# Override the default ' *INDENT-OFF*' in comments for disabling processing of part of the file.
-disable_processing_cmt = "" # string
-
-# Override the default ' *INDENT-ON*' in comments for enabling processing of part of the file.
-enable_processing_cmt = "" # string
-
-# Enable parsing of digraphs. Default=false
-enable_digraphs = false # false/true
-
-# If the file contains bytes with values between 128 and 255, but is not UTF-8, then output as UTF-8
-utf8_byte = false # false/true
-
-# Force the output encoding to UTF-8
-utf8_force = false # false/true
-
-#
-# Indenting
-#
-
-# The number of columns to indent per level.
-# Usually 2, 3, 4, or 8.
-indent_columns = 4 # number
-
-# The continuation indent. If non-zero, this overrides the indent of '(' and '=' continuation indents.
-# For FreeBSD, this is set to 4. Negative value is absolute and not increased for each ( level
-indent_continue = -4 # number
-
-# How to use tabs when indenting code
-# 0=spaces only
-# 1=indent with tabs to brace level, align with spaces
-# 2=indent and align with tabs, using spaces when not on a tabstop
-indent_with_tabs = 2 # number
-
-# Comments that are not a brace level are indented with tabs on a tabstop.
-# Requires indent_with_tabs=2. If false, will use spaces.
-indent_cmt_with_tabs = false # false/true
-
-# 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 = 2 # 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
-
-# Disabled indenting class braces if indent_braces is true
-indent_braces_no_class = false # false/true
-
-# Disabled indenting struct braces if indent_braces is true
-indent_braces_no_struct = false # false/true
-
-# Indent based on the size of the brace parent, i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
-indent_brace_parent = false # false/true
-
-# Indent based on the paren open instead of the brace open in '({\n', default is to indent by brace.
-indent_paren_open_brace = false # false/true
-
-# Whether the 'namespace' body is indented
-indent_namespace = false # false/true
-
-# Only indent one namespace and no sub-namespaces.
-# Requires indent_namespace=true.
-indent_namespace_single_indent = false # false/true
-
-# The number of spaces to indent a namespace block
-indent_namespace_level = 0 # number
-
-# If the body of the namespace is longer than this number, it won't be indented.
-# Requires indent_namespace=true. Default=0 (no limit)
-indent_namespace_limit = 0 # number
-
-# Whether the 'extern "C"' body is indented
-indent_extern = false # false/true
-
-# Whether the 'class' body is indented
-indent_class = true # false/true
-
-# Whether to indent the stuff after a leading base class colon
-indent_class_colon = false # false/true
-
-# Indent based on a class colon instead of the stuff after the colon.
-# Requires indent_class_colon=true. Default=false
-indent_class_on_colon = false # false/true
-
-# Whether to indent the stuff after a leading class initializer colon
-indent_constr_colon = false # false/true
-
-# Virtual indent from the ':' for member initializers. Default is 2
-indent_ctor_init_leading = 0 # number
-
-# Additional indenting for constructor initializer list
-indent_ctor_init = 0 # number
-
-# False=treat 'else\nif' as 'else if' for indenting purposes
-# True=indent the 'if' one level
-indent_else_if = false # false/true
-
-# Amount to indent variable declarations after a open brace. neg=relative, pos=absolute
-indent_var_def_blk = 0 # number
-
-# Indent continued variable declarations instead of aligning.
-indent_var_def_cont = true # false/true
-
-# How to indent continued shift expressions ('<<' and '>>').
-# Set align_left_shift=false when using this.
-# 0: Align shift operators instead of indenting them (default)
-# 1: Indent by one level
-# -1: Preserve original indentation
-indent_shift = 0 # number
-
-# True: force indentation of function definition to start in column 1
-# False: use the default behavior
-indent_func_def_force_col1 = false # false/true
-
-# True: indent continued function call parameters one indent level
-# False: align parameters under the open paren
-indent_func_call_param = true # false/true
-
-# Same as indent_func_call_param, but for function defs
-indent_func_def_param = true # false/true
-
-# Same as indent_func_call_param, but for function protos
-indent_func_proto_param = true # false/true
-
-# Same as indent_func_call_param, but for class declarations
-indent_func_class_param = true # false/true
-
-# Same as indent_func_call_param, but for class variable constructors
-indent_func_ctor_var_param = true # false/true
-
-# Same as indent_func_call_param, but for templates
-indent_template_param = true # false/true
-
-# Double the indent for indent_func_xxx_param options
-indent_func_param_double = false # false/true
-
-# Indentation column for standalone 'const' function decl/proto qualifier
-indent_func_const = 0 # number
-
-# Indentation column for standalone 'throw' function decl/proto qualifier
-indent_func_throw = 0 # number
-
-# The number of spaces to indent a continued '->' or '.'
-# Usually set to 0, 1, or indent_columns.
-indent_member = 4 # number
-
-# Spaces to indent single line ('//') comments on lines before code
-indent_single_line_comments_before = 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 = 0 # 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 = -4 # number
-
-# Same as indent_label, but for access specifiers that are followed by a colon
-indent_access_spec = -4 # 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 1, aligns under the open paren
-indent_comma_paren = 0 # number
-
-# Controls the indent of a BOOL operator when inside a paren.If 1, aligns under the open paren
-indent_bool_paren = 0 # number
-
-# If 'indent_bool_paren' is 1, controls the indent of the first expression. If TRUE, aligns the first expression to the following ones
-indent_first_bool_expr = 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
-
-# Align continued statements at the '='. Default=True
-# If FALSE or the '=' is followed by a newline, the next line is indent one tab.
-indent_align_assign = false # false/true
-
-# If true, the indentation of the chunks after a '=' sequence will be set at
-# LHS token indentation column before '='.
-indent_off_after_assign = false # true/false
-
-# Indent OC blocks at brace level instead of usual rules.
-indent_oc_block = false # false/true
-
-# Indent OC blocks in a message relative to the parameter name.
-# 0=use indent_oc_block rules, 1+=spaces to indent
-indent_oc_block_msg = 0 # number
-
-# Minimum indent for subsequent parameters
-indent_oc_msg_colon = 0 # number
-
-# If true, prioritize aligning with initial colon (and stripping spaces from lines, if necessary).
-# Default is true.
-indent_oc_msg_prioritize_first_colon = true # false/true
-
-# If indent_oc_block_msg and this option are on, blocks will be indented the way that Xcode does by default (from keyword if the parameter is on its own line; otherwise, from the previous indentation level).
-indent_oc_block_msg_xcode_style = false # false/true
-
-# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is relative to a msg keyword.
-indent_oc_block_msg_from_keyword = false # false/true
-
-# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is relative to a msg colon.
-indent_oc_block_msg_from_colon = false # false/true
-
-# If indent_oc_block_msg and this option are on, blocks will be indented from where the block caret is.
-indent_oc_block_msg_from_caret = false # false/true
-
-# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is.
-indent_oc_block_msg_from_brace = false # false/true
-
-# When identing after virtual brace open and newline add further spaces to reach this min. indent.
-indent_min_vbrace_open = 0 # number
-
-# TRUE: When identing after virtual brace open and newline add further spaces after regular indent to reach next tabstop.
-indent_vbrace_open_on_tabstop = false # false/true
-
-#
-# Spacing options
-#
-
-# Add or remove space around arithmetic operator '+', '-', '/', '*', etc
-# also '>>>' '<<' '>>' '%' '|'
-sp_arith = force # ignore/add/remove/force
-
-# Add or remove space around assignment operator '=', '+=', etc
-sp_assign = force # ignore/add/remove/force
-
-# Add or remove space around '=' in C++11 lambda capture specifications. Overrides sp_assign
-sp_cpp_lambda_assign = force # ignore/add/remove/force
-
-# Add or remove space around assignment operator '=' in a prototype
-sp_assign_default = force # ignore/add/remove/force
-
-# Add or remove space before assignment operator '=', '+=', etc. Overrides sp_assign.
-sp_before_assign = force # ignore/add/remove/force
-
-# Add or remove space after assignment operator '=', '+=', etc. Overrides sp_assign.
-sp_after_assign = force # ignore/add/remove/force
-
-# Add or remove space in 'NS_ENUM ('
-sp_enum_paren = force # ignore/add/remove/force
-
-# Add or remove space around assignment '=' in enum
-sp_enum_assign = force # ignore/add/remove/force
-
-# Add or remove space before assignment '=' in enum. Overrides sp_enum_assign.
-sp_enum_before_assign = force # ignore/add/remove/force
-
-# Add or remove space after assignment '=' in enum. Overrides sp_enum_assign.
-sp_enum_after_assign = force # ignore/add/remove/force
-
-# Add or remove space around preprocessor '##' concatenation operator. Default=Add
-sp_pp_concat = force # ignore/add/remove/force
-
-# Add or remove space after preprocessor '#' stringify operator. Also affects the '#@' charizing operator.
-sp_pp_stringify = force # ignore/add/remove/force
-
-# Add or remove space before preprocessor '#' stringify operator as in '#define x(y) L#y'.
-sp_before_pp_stringify = force # ignore/add/remove/force
-
-# Add or remove space around boolean operators '&&' and '||'
-sp_bool = force # ignore/add/remove/force
-
-# Add or remove space around compare operator '<', '>', '==', etc
-sp_compare = force # ignore/add/remove/force
-
-# Add or remove space inside '(' and ')'
-sp_inside_paren = remove # ignore/add/remove/force
-
-# Add or remove space between nested parens: '((' vs ') )'
-sp_paren_paren = remove # ignore/add/remove/force
-
-# Add or remove space between back-to-back parens: ')(' vs ') ('
-sp_cparen_oparen = remove # 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 = force # ignore/add/remove/force
-
-# Add or remove space before pointer star '*'
-sp_before_ptr_star = force # ignore/add/remove/force
-
-# Add or remove space before pointer star '*' that isn't followed by a variable name
-# If set to 'ignore', sp_before_ptr_star is used instead.
-sp_before_unnamed_ptr_star = force # ignore/add/remove/force
-
-# Add or remove space between pointer stars '*'
-sp_between_ptr_star = remove # ignore/add/remove/force
-
-# Add or remove space after pointer star '*', if followed by a word.
-sp_after_ptr_star = remove # ignore/add/remove/force
-
-# Add or remove space after pointer star '*', if followed by a qualifier.
-sp_after_ptr_star_qualifier = force # ignore/add/remove/force
-
-# Add or remove space after a pointer star '*', if followed by a func proto/def.
-sp_after_ptr_star_func = remove # ignore/add/remove/force
-
-# Add or remove space between the pointer star '*' and the name of the variable
-# in a function pointer definition.
-sp_ptr_star_func_var = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space after a pointer star '*', if followed by an open paren (function types).
-sp_ptr_star_paren = remove # ignore/add/remove/force
-
-# Add or remove space before a pointer star '*', if followed by a func proto/def.
-sp_before_ptr_star_func = force # ignore/add/remove/force
-
-# Add or remove space before a reference sign '&'
-sp_before_byref = force # ignore/add/remove/force
-
-# Add or remove space before a reference sign '&' that isn't followed by a variable name
-# If set to 'ignore', sp_before_byref is used instead.
-sp_before_unnamed_byref = force # ignore/add/remove/force
-
-# Add or remove space after reference sign '&', if followed by a word.
-sp_after_byref = remove # ignore/add/remove/force
-
-# Add or remove space after a reference sign '&', if followed by a func proto/def.
-sp_after_byref_func = remove # ignore/add/remove/force
-
-# Add or remove space before a reference sign '&', if followed by a func proto/def.
-sp_before_byref_func = force # ignore/add/remove/force
-
-# Add or remove space between type and word. Default=Force
-sp_after_type = force # ignore/add/remove/force
-
-# Add or remove space before the paren in the D constructs 'template Foo(' and 'class Foo('.
-sp_before_template_paren = remove # ignore/add/remove/force
-
-# Add or remove space in 'template <' vs 'template<'.
-# If set to ignore, sp_before_angle is used.
-sp_template_angle = remove # ignore/add/remove/force
-
-# Add or remove space before '<>'
-sp_before_angle = remove # ignore/add/remove/force
-
-# Add or remove space inside '<' and '>'
-sp_inside_angle = remove # ignore/add/remove/force
-
-# Add or remove space after '<>'
-sp_after_angle = force # ignore/add/remove/force
-
-# Add or remove space between '<>' and '(' as found in 'new List<byte>();'
-sp_angle_paren = remove # ignore/add/remove/force
-
-# Add or remove space between '<>' and a word as in 'List<byte> m;' or 'template <typename T> static ...'
-sp_angle_word = force # ignore/add/remove/force
-
-# Add or remove space between '>' and '>' in '>>' (template stuff C++/C# only). Default=Add
-sp_angle_shift = force # ignore/add/remove/force
-
-# Permit removal of the space between '>>' in 'foo<bar<int> >' (C++11 only). Default=False
-# sp_angle_shift cannot remove the space without this option.
-sp_permit_cpp11_shift = false # false/true
-
-# Add or remove space before '(' of 'if', 'for', 'switch', 'while', etc.
-sp_before_sparen = force # ignore/add/remove/force
-
-# Add or remove space inside if-condition '(' and ')'
-sp_inside_sparen = remove # ignore/add/remove/force
-
-# Add or remove space before if-condition ')'. Overrides sp_inside_sparen.
-sp_inside_sparen_close = remove # ignore/add/remove/force
-
-# Add or remove space after if-condition '('. Overrides sp_inside_sparen.
-sp_inside_sparen_open = remove # ignore/add/remove/force
-
-# Add or remove space inside for-loop '(' and ')'
-sp_inside_for = remove # ignore/add/remove/force
-
-# Add or remove space before for-loop ')'. Overrides sp_inside_for.
-sp_inside_for_close = remove # ignore/add/remove/force
-
-# Add or remove space after for-loop '('. Overrides sp_inside_for.
-sp_inside_for_open = remove # ignore/add/remove/force
-
-# Add or remove space after ')' of 'if', 'for', 'switch', and 'while', etc.
-sp_after_sparen = force # ignore/add/remove/force
-
-# Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while', etc.
-sp_sparen_brace = force # ignore/add/remove/force
-
-# Add or remove space between 'invariant' and '(' in the D language.
-sp_invariant_paren = remove # ignore/add/remove/force
-
-# Add or remove space after the ')' in 'invariant (C) c' in the D language.
-sp_after_invariant_paren = force # ignore/add/remove/force
-
-# Add or remove space before empty statement ';' on 'if', 'for' and 'while'
-sp_special_semi = remove # ignore/add/remove/force
-
-# Add or remove space before ';'. Default=Remove
-sp_before_semi = remove # ignore/add/remove/force
-
-# Add or remove space before ';' in non-empty 'for' statements
-sp_before_semi_for = remove # ignore/add/remove/force
-
-# Add or remove space before a semicolon of an empty left part of a for statement.
-sp_before_semi_for_empty = remove # ignore/add/remove/force
-
-# Add or remove space between the semicolons of an empty middle part of a for statement.
-sp_between_semi_for_empty = remove # ignore/add/remove/force/not_defined
-
-# Add or remove space after ';', except when followed by a comment. Default=Add
-sp_after_semi = force # ignore/add/remove/force
-
-# Add or remove space after ';' in non-empty 'for' statements. Default=Force
-sp_after_semi_for = force # ignore/add/remove/force
-
-# Add or remove space after the final semicolon of an empty part of a for statement: for ( ; ; <here> ).
-sp_after_semi_for_empty = remove # ignore/add/remove/force
-
-# Add or remove space before '[' (except '[]')
-sp_before_square = remove # ignore/add/remove/force
-
-# Add or remove space before '[]'
-sp_before_squares = remove # ignore/add/remove/force
-
-# Add or remove space inside a non-empty '[' and ']'
-sp_inside_square = remove # ignore/add/remove/force
-
-# Add or remove space after ','
-sp_after_comma = force # ignore/add/remove/force
-
-# Add or remove space before ','
-sp_before_comma = remove # ignore/add/remove/force
-
-# Add or remove space between ',' and ']' in multidimensional array type 'int[,,]'
-sp_after_mdatype_commas = remove # ignore/add/remove/force
-
-# Add or remove space between '[' and ',' in multidimensional array type 'int[,,]'
-sp_before_mdatype_commas = remove # ignore/add/remove/force
-
-# Add or remove space between ',' in multidimensional array type 'int[,,]'
-sp_between_mdatype_commas = remove # ignore/add/remove/force
-
-# Add or remove space between an open paren and comma: '(,' vs '( ,'
-sp_paren_comma = force # ignore/add/remove/force
-
-# Add or remove space before the variadic '...' when preceded by a non-punctuator
-sp_before_ellipsis = force # ignore/add/remove/force
-
-# Add or remove space after class ':'
-sp_after_class_colon = force # ignore/add/remove/force
-
-# Add or remove space before class ':'
-sp_before_class_colon = remove # ignore/add/remove/force
-
-# Add or remove space after class constructor ':'
-sp_after_constr_colon = force # ignore/add/remove/force
-
-# Add or remove space before class constructor ':'
-sp_before_constr_colon = remove # ignore/add/remove/force
-
-# Add or remove space before case ':'. Default=Remove
-sp_before_case_colon = remove # ignore/add/remove/force
-
-# Add or remove space between 'operator' and operator sign
-sp_after_operator = force # ignore/add/remove/force
-
-# Add or remove space between the operator symbol and the open paren, as in 'operator ++('
-sp_after_operator_sym = remove # ignore/add/remove/force
-
-# Add or remove space after C/D cast, i.e. 'cast(int)a' vs 'cast(int) a' or '(int)a' vs '(int) a'
-sp_after_cast = remove # ignore/add/remove/force
-
-# Add or remove spaces inside cast parens
-sp_inside_paren_cast = remove # ignore/add/remove/force
-
-# Add or remove space between the type and open paren in a C++ cast, i.e. 'int(exp)' vs 'int (exp)'
-sp_cpp_cast_paren = remove # ignore/add/remove/force
-
-# Add or remove space between 'sizeof' and '('
-sp_sizeof_paren = force # ignore/add/remove/force
-
-# Add or remove space after the tag keyword (Pawn)
-sp_after_tag = force # ignore/add/remove/force
-
-# Add or remove space inside enum '{' and '}'
-sp_inside_braces_enum = force # ignore/add/remove/force
-
-# Add or remove space inside struct/union '{' and '}'
-sp_inside_braces_struct = force # ignore/add/remove/force
-
-# Add or remove space inside '{' and '}'
-sp_inside_braces = force # ignore/add/remove/force
-
-# Add or remove space inside '{}'
-sp_inside_braces_empty = remove # 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 = remove # 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 inside the first parens in the function type: 'void (*x)(...)'
-sp_inside_tparen = remove # ignore/add/remove/force
-
-# Add or remove between the parens in the function type: 'void (*x)(...)'
-sp_after_tparen_close = remove # ignore/add/remove/force
-
-# Add or remove space between ']' and '(' when part of a function call.
-sp_square_fparen = remove # ignore/add/remove/force
-
-# Add or remove space between ')' and '{' of function
-sp_fparen_brace = force # ignore/add/remove/force
-
-# Java: Add or remove space between ')' and '{{' of double brace initializer.
-sp_fparen_dbrace = force # 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 function name and '()' on function calls without parameters.
-# If set to 'ignore' (the default), sp_func_call_paren is used.
-sp_func_call_paren_empty = remove # ignore/add/remove/force
-
-# Add or remove space between the user function name and '(' on function calls
-# You need to set a keyword to be a user function, like this: 'set func_call_user _' in the config file.
-sp_func_call_user_paren = remove # ignore/add/remove/force
-
-# Add or remove space between a constructor/destructor and the open paren
-sp_func_class_paren = remove # ignore/add/remove/force
-
-# Add or remove space between 'return' and '('
-sp_return_paren = force # ignore/add/remove/force
-
-# Add or remove space between '__attribute__' and '('
-sp_attribute_paren = force # ignore/add/remove/force
-
-# Add or remove space between 'defined' and '(' in '#if defined (FOO)'
-sp_defined_paren = remove # ignore/add/remove/force
-
-# Add or remove space between 'throw' and '(' in 'throw (something)'
-sp_throw_paren = force # ignore/add/remove/force
-
-# Add or remove space between 'throw' and anything other than '(' as in '@throw [...];'
-sp_after_throw = force # ignore/add/remove/force
-
-# Add or remove space between 'catch' and '(' in 'catch (something) { }'
-# If set to ignore, sp_before_sparen is used.
-sp_catch_paren = force # ignore/add/remove/force
-
-# Add or remove space between 'version' and '(' in 'version (something) { }' (D language)
-# If set to ignore, sp_before_sparen is used.
-sp_version_paren = force # ignore/add/remove/force
-
-# Add or remove space between 'scope' and '(' in 'scope (something) { }' (D language)
-# If set to ignore, sp_before_sparen is used.
-sp_scope_paren = force # ignore/add/remove/force
-
-# Add or remove space between macro and value
-sp_macro = force # ignore/add/remove/force
-
-# Add or remove space between macro function ')' and value
-sp_macro_func = force # ignore/add/remove/force
-
-# Add or remove space between 'else' and '{' if on the same line
-sp_else_brace = force # ignore/add/remove/force
-
-# Add or remove space between '}' and 'else' if on the same line
-sp_brace_else = force # ignore/add/remove/force
-
-# Add or remove space between '}' and the name of a typedef on the same line
-sp_brace_typedef = force # ignore/add/remove/force
-
-# Add or remove space between 'catch' and '{' if on the same line
-sp_catch_brace = force # ignore/add/remove/force
-
-# Add or remove space between '}' and 'catch' if on the same line
-sp_brace_catch = force # ignore/add/remove/force
-
-# Add or remove space between 'finally' and '{' if on the same line
-sp_finally_brace = force # ignore/add/remove/force
-
-# Add or remove space between '}' and 'finally' if on the same line
-sp_brace_finally = force # ignore/add/remove/force
-
-# Add or remove space between 'try' and '{' if on the same line
-sp_try_brace = force # ignore/add/remove/force
-
-# Add or remove space between get/set and '{' if on the same line
-sp_getset_brace = force # ignore/add/remove/force
-
-# Add or remove space between type and open brace of an unnamed temporary
-# direct-list-initialization.
-sp_type_brace_init_lst = add # ignore/add/remove/force
-
-# Add or remove space between a variable and '{' for a namespace
-sp_word_brace_ns = force # ignore/add/remove/force
-
-# Add or remove space before the '::' operator
-sp_before_dc = remove # ignore/add/remove/force
-
-# Add or remove space after the '::' operator
-sp_after_dc = remove # ignore/add/remove/force
-
-# Add or remove around the D named array initializer ':' operator
-sp_d_array_colon = force # ignore/add/remove/force
-
-# Add or remove space after the '!' (not) operator. Default=Remove
-sp_not = remove # ignore/add/remove/force
-
-# Add or remove space after the '~' (invert) operator. Default=Remove
-sp_inv = remove # ignore/add/remove/force
-
-# Add or remove space after the '&' (address-of) operator. Default=Remove
-# 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. Default=Remove
-sp_member = remove # ignore/add/remove/force
-
-# Add or remove space after the '*' (dereference) operator. Default=Remove
-# 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'. Default=Remove
-sp_sign = remove # ignore/add/remove/force
-
-# Add or remove space before or after '++' and '--', as in '(--x)' or 'y++;'. Default=Remove
-sp_incdec = remove # ignore/add/remove/force
-
-# Add or remove space before a backslash-newline at the end of a line. Default=Add
-sp_before_nl_cont = force # ignore/add/remove/force
-
-# Add or remove space after the scope '+' or '-', as in '-(void) foo;' or '+(int) bar;'
-sp_after_oc_scope = remove # ignore/add/remove/force
-
-# Add or remove space after the colon in message specs
-# '-(int) f:(int) x;' vs '-(int) f: (int) x;'
-sp_after_oc_colon = force # ignore/add/remove/force
-
-# Add or remove space before the colon in message specs
-# '-(int) f: (int) x;' vs '-(int) f : (int) x;'
-sp_before_oc_colon = force # ignore/add/remove/force
-
-# Add or remove space after the colon in immutable dictionary expression
-# 'NSDictionary *test = @{@"foo" :@"bar"};'
-sp_after_oc_dict_colon = force # ignore/add/remove/force
-
-# Add or remove space before the colon in immutable dictionary expression
-# 'NSDictionary *test = @{@"foo" :@"bar"};'
-sp_before_oc_dict_colon = force # ignore/add/remove/force
-
-# Add or remove space after the colon in message specs
-# '[object setValue:1];' vs '[object setValue: 1];'
-sp_after_send_oc_colon = force # ignore/add/remove/force
-
-# Add or remove space before the colon in message specs
-# '[object setValue:1];' vs '[object setValue :1];'
-sp_before_send_oc_colon = remove # 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 = remove # ignore/add/remove/force
-
-# Add or remove space after the first (type) in message specs
-# '-(int) f:(int)x;' vs '-(int)f:(int)x;'
-sp_after_oc_return_type = remove # ignore/add/remove/force
-
-# Add or remove space between '@selector' and '('
-# '@selector(msgName)' vs '@selector (msgName)'
-# Also applies to @protocol() constructs
-sp_after_oc_at_sel = remove # ignore/add/remove/force
-
-# Add or remove space between '@selector(x)' and the following word
-# '@selector(foo) a:' vs '@selector(foo)a:'
-sp_after_oc_at_sel_parens = force # ignore/add/remove/force
-
-# Add or remove space inside '@selector' parens
-# '@selector(foo)' vs '@selector( foo )'
-# Also applies to @protocol() constructs
-sp_inside_oc_at_sel_parens = remove # ignore/add/remove/force
-
-# Add or remove space before a block pointer caret
-# '^int (int arg){...}' vs. ' ^int (int arg){...}'
-sp_before_oc_block_caret = remove # ignore/add/remove/force
-
-# Add or remove space after a block pointer caret
-# '^int (int arg){...}' vs. '^ int (int arg){...}'
-sp_after_oc_block_caret = remove # ignore/add/remove/force
-
-# Add or remove space between the receiver and selector in a message.
-# '[receiver selector ...]'
-sp_after_oc_msg_receiver = remove # ignore/add/remove/force
-
-# Add or remove space after @property.
-sp_after_oc_property = force # ignore/add/remove/force
-
-# Add or remove space around the ':' in 'b ? t : f'
-sp_cond_colon = force # ignore/add/remove/force
-
-# Add or remove space before the ':' in 'b ? t : f'. Overrides sp_cond_colon.
-sp_cond_colon_before = force # ignore/add/remove/force
-
-# Add or remove space after the ':' in 'b ? t : f'. Overrides sp_cond_colon.
-sp_cond_colon_after = force # ignore/add/remove/force
-
-# Add or remove space around the '?' in 'b ? t : f'
-sp_cond_question = force # ignore/add/remove/force
-
-# Add or remove space before the '?' in 'b ? t : f'. Overrides sp_cond_question.
-sp_cond_question_before = force # ignore/add/remove/force
-
-# Add or remove space after the '?' in 'b ? t : f'. Overrides sp_cond_question.
-sp_cond_question_after = force # ignore/add/remove/force
-
-# In the abbreviated ternary form (a ?: b), add/remove space between ? and :.'. Overrides all other sp_cond_* options.
-sp_cond_ternary_short = force # ignore/add/remove/force
-
-# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make sense here.
-sp_case_label = force # ignore/add/remove/force
-
-# Control the space around the D '..' operator.
-sp_range = force # ignore/add/remove/force
-
-# Control the spacing after ':' in 'for (TYPE VAR : EXPR)'
-sp_after_for_colon = force # ignore/add/remove/force
-
-# Control the spacing before ':' in 'for (TYPE VAR : EXPR)'
-sp_before_for_colon = force # ignore/add/remove/force
-
-# Control the spacing in 'extern (C)' (D)
-sp_extern_paren = force # ignore/add/remove/force
-
-# Control the space after the opening of a C++ comment '// A' vs '//A'
-sp_cmt_cpp_start = force # ignore/add/remove/force
-
-# TRUE: If space is added with sp_cmt_cpp_start, do it after doxygen sequences like '///', '///<', '//!' and '//!<'.
-sp_cmt_cpp_doxygen = false # false/true
-
-# TRUE: If space is added with sp_cmt_cpp_start, do it after Qt translator or meta-data comments like '//:', '//=', and '//~'.
-sp_cmt_cpp_qttr = false # false/true
-
-# Controls the spaces between #else or #endif and a trailing comment
-sp_endif_cmt = force # ignore/add/remove/force
-
-# Controls the spaces after 'new', 'delete' and 'delete[]'
-sp_after_new = force # ignore/add/remove/force
-
-# Controls the spaces between new and '(' in 'new()'
-sp_between_new_paren = remove # ignore/add/remove/force
-
-# Controls the spaces before a trailing or embedded comment
-sp_before_tr_cmt = force # ignore/add/remove/force
-
-# Number of spaces before a trailing or embedded comment
-sp_num_before_tr_cmt = 0 # number
-
-# Control space between a Java annotation and the open paren.
-sp_annotation_paren = remove # 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 aligning
-align_with_tabs = true # false/true
-
-# Whether to bump out to the next tab when aligning
-align_on_tabstop = true # false/true
-
-# Whether to right-align numbers
-align_number_right = true # false/true
-
-# Whether to keep whitespace not required for alignment.
-align_keep_extra_space = false # false/true
-
-# Align variable definitions in prototypes and functions
-align_func_params = false # false/true
-
-# Align parameters in single-line functions that have the same name.
-# The function names must already be aligned with each other.
-align_same_func_call_params = false # false/true
-
-# The span for aligning parameters in single line functions with the same name (0=don't align).
-align_same_func_call_params_span = 0 # unsigned number
-
-# The thresh for aligning function call parameters (0=no limit).
-align_same_func_call_params_thresh = 0 # unsigned number
-
-# The span for aligning variable definitions (0=don't align)
-align_var_def_span = 0 # number
-
-# How to align the star in variable definitions.
-# 0=Part of the type 'void * foo;'
-# 1=Part of the variable 'void *foo;'
-# 2=Dangling 'void *foo;'
-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 = 10 # 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 = false # false/true
-
-# Whether to align any attribute after the variable name
-align_var_def_attribute = false # 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 = 0 # number
-
-# The threshold for aligning on '=' in assignments (0=no limit)
-align_assign_thresh = 0 # number
-
-# The span for aligning on '=' in enums (0=don't align)
-align_enum_equ_span = 0 # 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 = 1 # 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 typedef 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 = 1 # number
-
-# Controls the positioning of the '&' in typedefs. Just try it.
-# 0: Align on typedef 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 = 1 # number
-
-# The span for aligning comments that end lines (0=don't align)
-align_right_cmt_span = 4 # 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
-
-# If a trailing comment is more than this number of columns away from the text it follows,
-# it will qualify for being aligned. This has to be > 0 to do anything.
-align_right_cmt_gap = 1 # number
-
-# Align trailing comment at or beyond column N; 'pulls in' comments as a bonus side effect (0=ignore)
-align_right_cmt_at_col = 41 # number
-
-# 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
-
-# Align function protos on the 'operator' keyword instead of what follows
-align_on_operator = false # false/true
-
-# 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 = true # 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 = 1 # 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
-
-# # Align macro functions and variables together
-align_pp_define_together = true # false/true
-
-# The minimum space between label and value of a preprocessor define
-align_pp_define_gap = 1 # number
-
-# The span for aligning on '#define' bodies (0=don't align, other=number of lines including comments between blocks)
-align_pp_define_span = 8 # number
-
-# Align lines that start with '<<' with previous '<<'. Default=true
-align_left_shift = false # false/true
-
-# Align text after asm volatile () colons.
-align_asm_colon = true # false/true
-
-# Span for aligning parameters in an Obj-C message call on the ':' (0=don't align)
-align_oc_msg_colon_span = 0 # number
-
-# If true, always align with the first parameter, even if it is too short.
-align_oc_msg_colon_first = false # false/true
-
-# Aligning parameters in an Obj-C '+' or '-' declaration on the ':'
-align_oc_decl_colon = false # false/true
-
-#
-# Newline adding and removing options
-#
-
-# Whether to collapse empty blocks between '{' and '}'
-nl_collapse_empty_body = true # false/true
-
-# Don't split one-line braced assignments - 'foo_t f = { 1, 2 };'
-nl_assign_leave_one_liners = true # false/true
-
-# Don't split one-line braced statements inside a class xx { } body
-nl_class_leave_one_liners = true # false/true
-
-# Don't split one-line enums: 'enum foo { BAR = 15 };'
-nl_enum_leave_one_liners = true # false/true
-
-# Don't split one-line get or set functions
-nl_getset_leave_one_liners = true # false/true
-
-# Don't split one-line function definitions - 'int foo() { return 0; }'
-nl_func_leave_one_liners = true # false/true
-
-# Don't split one-line C++11 lambdas - '[]() { return 0; }'
-nl_cpp_lambda_leave_one_liners = true # false/true
-
-# Don't split one-line if/else statements - 'if(a) b++;'
-nl_if_leave_one_liners = false # false/true
-
-# Don't split one-line while statements - 'while(a) b++;'
-nl_while_leave_one_liners = false # false/true
-
-# Don't split one-line OC messages
-nl_oc_msg_leave_one_liner = true # false/true
-
-# Add or remove newlines at the start of the file
-nl_start_of_file = remove # 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 = force # 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 = remove # ignore/add/remove/force
-
-# Add or remove newline between '=' and '[' (D only)
-nl_assign_square = remove # ignore/add/remove/force
-
-# Add or remove newline after '= [' (D only). Will also affect the newline before the ']'
-nl_after_square_assign = remove # ignore/add/remove/force
-
-# The number of blank lines after a block of variable definitions at the top of a function body
-# 0 = No change (default)
-nl_var_def_blk_end_func_top = 1 # number
-
-# The number of newlines before a block of typedefs
-# 0 = No change (default)
-# the option 'nl_after_access_spec' takes preference over 'nl_typedef_blk_start'
-nl_typedef_blk_start = 2 # number
-
-# The number of newlines after a block of typedefs
-# 0 = No change (default)
-nl_typedef_blk_end = 2 # number
-
-# The maximum consecutive newlines within a block of typedefs
-# 0 = No change (default)
-nl_typedef_blk_in = 1 # number
-
-# The number of newlines before a block of variable definitions not at the top of a function body
-# 0 = No change (default)
-# the option 'nl_after_access_spec' takes preference over 'nl_var_def_blk_start'
-nl_var_def_blk_start = 2 # number
-
-# The number of newlines after a block of variable definitions not at the top of a function body
-# 0 = No change (default)
-nl_var_def_blk_end = 2 # number
-
-# The maximum consecutive newlines within a block of variable definitions
-# 0 = No change (default)
-nl_var_def_blk_in = 1 # number
-
-# Add or remove newline between a function call's ')' and '{', as in:
-# list_for_each(item, &list) { }
-nl_fcall_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'enum' and '{'
-nl_enum_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'struct and '{'
-nl_struct_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'union' and '{'
-nl_union_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'if' and '{'
-nl_if_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between '}' and 'else'
-nl_brace_else = remove # 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 = remove # ignore/add/remove/force
-
-# Add or remove newline between 'else' and '{'
-nl_else_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'else' and 'if'
-nl_else_if = remove # ignore/add/remove/force
-
-# Add or remove newline between '}' and 'finally'
-nl_brace_finally = remove # ignore/add/remove/force
-
-# Add or remove newline between 'finally' and '{'
-nl_finally_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'try' and '{'
-nl_try_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between get/set and '{'
-nl_getset_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'for' and '{'
-nl_for_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'catch' and '{'
-nl_catch_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between '}' and 'catch'
-nl_brace_catch = remove # ignore/add/remove/force
-
-# Add or remove newline between '}' and ']'
-nl_brace_square = remove # ignore/add/remove/force
-
-# Add or remove newline between '}' and ')' in a function invocation
-nl_brace_fparen = remove # ignore/add/remove/force
-
-# Add or remove newline between 'while' and '{'
-nl_while_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'scope (x)' and '{' (D)
-nl_scope_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'unittest' and '{' (D)
-nl_unittest_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'version (x)' and '{' (D)
-nl_version_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'using' and '{'
-nl_using_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between two open or close braces.
-# Due to general newline/brace handling, REMOVE may not work.
-nl_brace_brace = force # ignore/add/remove/force
-
-# Add or remove newline between 'do' and '{'
-nl_do_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between '}' and 'while' of 'do' statement
-nl_brace_while = remove # ignore/add/remove/force
-
-# Add or remove newline between 'switch' and '{'
-nl_switch_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'synchronized' and '{'
-nl_synchronized_brace = remove # ignore/add/remove/force
-
-# 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 = 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, not after the first 'case'
-nl_before_case = false # false/true
-
-# Add or remove newline between ')' and 'throw'
-nl_before_throw = force # ignore/add/remove/force
-
-# Whether to put a newline after 'case' statement
-nl_after_case = true # false/true
-
-# Add or remove a newline between a case ':' and '{'. Overrides nl_after_case.
-nl_case_colon_brace = remove # ignore/add/remove/force
-
-# Newline between namespace and {
-nl_namespace_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between 'template<>' and whatever follows.
-nl_template_class = force # ignore/add/remove/force
-
-# Add or remove newline between 'class' and '{'
-nl_class_brace = remove # ignore/add/remove/force
-
-# Add or remove newline before/after each ',' in the base class list,
-# (tied to pos_class_comma).
-nl_class_init_args = remove # ignore/add/remove/force
-
-# Add or remove newline after each ',' in the constructor member initialization.
-# Related to nl_constr_colon, pos_constr_colon and pos_constr_comma.
-nl_constr_init_args = remove # ignore/add/remove/force
-
-# Add or remove newline between return type and function name in a function definition
-nl_func_type_name = remove # ignore/add/remove/force
-
-# Add or remove newline between return type and function name inside a class {}
-# Uses nl_func_type_name or nl_func_proto_type_name if set to ignore.
-nl_func_type_name_class = remove # ignore/add/remove/force
-
-# Add or remove newline between function scope and name
-# Controls the newline after '::' in 'void A::f() { }'
-nl_func_scope_name = remove # ignore/add/remove/force
-
-# Add or remove newline between return type and function name in a prototype
-nl_func_proto_type_name = remove # ignore/add/remove/force
-
-# Add or remove newline between a function name and the opening '(' in the declaration
-nl_func_paren = remove # ignore/add/remove/force
-
-# Add or remove newline between a function name and the opening '(' in the definition
-nl_func_def_paren = remove # ignore/add/remove/force
-
-# Add or remove newline after '(' in a function declaration
-nl_func_decl_start = remove # ignore/add/remove/force
-
-# Add or remove newline after '(' in a function definition
-nl_func_def_start = remove # ignore/add/remove/force
-
-# Overrides nl_func_decl_start when there is only one parameter.
-nl_func_decl_start_single = remove # ignore/add/remove/force
-
-# Overrides nl_func_def_start when there is only one parameter.
-nl_func_def_start_single = remove # ignore/add/remove/force
-
-# Add or remove newline after each ',' in a function declaration
-nl_func_decl_args = remove # ignore/add/remove/force
-
-# Add or remove newline after each ',' in a function definition
-nl_func_def_args = remove # ignore/add/remove/force
-
-# Add or remove newline before the ')' in a function declaration
-nl_func_decl_end = remove # ignore/add/remove/force
-
-# Add or remove newline before the ')' in a function definition
-nl_func_def_end = remove # ignore/add/remove/force
-
-# Overrides nl_func_decl_end when there is only one parameter.
-nl_func_decl_end_single = remove # ignore/add/remove/force
-
-# Overrides nl_func_def_end when there is only one parameter.
-nl_func_def_end_single = remove # ignore/add/remove/force
-
-# Add or remove newline between '()' in a function declaration.
-nl_func_decl_empty = remove # ignore/add/remove/force
-
-# Add or remove newline between '()' in a function definition.
-nl_func_def_empty = remove # ignore/add/remove/force
-
-# Whether to put each OC message parameter on a separate line
-# See nl_oc_msg_leave_one_liner
-nl_oc_msg_args = false # false/true
-
-# Add or remove newline between function signature and '{'
-nl_fdef_brace = remove # ignore/add/remove/force
-
-# Add or remove newline between C++11 lambda signature and '{'
-nl_cpp_ldef_brace = remove # ignore/add/remove/force
-
-# Add or remove a newline between the return keyword and return expression.
-nl_return_expr = remove # ignore/add/remove/force
-
-# Whether to put a newline after semicolons, except in 'for' statements
-nl_after_semicolon = true # false/true
-
-# Java: Control the newline between the ')' and '{{' of the double brace initializer.
-nl_paren_dbrace_open = remove # ignore/add/remove/force
-
-# Whether to put a newline after brace open.
-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 = false # false/true
-
-# Whether to put a newline after a virtual brace open with a non-empty body.
-# These occur in un-braced if/while/do/for statement bodies.
-nl_after_vbrace_open = true # false/true
-
-# Whether to put a newline after a virtual brace open with an empty body.
-# These occur in un-braced if/while/do/for statement bodies.
-nl_after_vbrace_open_empty = true # false/true
-
-# Whether to put a newline after a brace close.
-# Does not apply if followed by a necessary ';'.
-nl_after_brace_close = true # false/true
-
-# Whether to put a newline after a virtual brace close.
-# Would add a newline before return in: 'if (foo) a++; return;'
-nl_after_vbrace_close = true # false/true
-
-# Control the newline between the close brace and 'b' in: 'struct { int a; } b;'
-# Affects enums, unions and structures. If set to ignore, uses nl_after_brace_close
-nl_brace_struct_var = remove # ignore/add/remove/force
-
-# Whether to alter newlines in '#define' macros
-nl_define_macro = false # false/true
-
-# Whether to not put blanks after '#ifxx', '#elxx', or before '#endif'. Does not affect the whole-file #ifdef.
-nl_squeeze_ifdef = true # false/true
-
-# Add or remove blank line before 'if'
-nl_before_if = remove # ignore/add/remove/force
-
-# Add or remove blank line after 'if' statement
-nl_after_if = remove # ignore/add/remove/force
-
-# Add or remove blank line before 'for'
-nl_before_for = remove # ignore/add/remove/force
-
-# Add or remove blank line after 'for' statement
-nl_after_for = remove # ignore/add/remove/force
-
-# Add or remove blank line before 'while'
-nl_before_while = remove # ignore/add/remove/force
-
-# Add or remove blank line after 'while' statement
-nl_after_while = remove # ignore/add/remove/force
-
-# Add or remove blank line before 'switch'
-nl_before_switch = remove # ignore/add/remove/force
-
-# Add or remove blank line after 'switch' statement
-nl_after_switch = remove # ignore/add/remove/force
-
-# Add or remove blank line before 'synchronized'
-nl_before_synchronized = remove # ignore/add/remove/force
-
-# Add or remove blank line after 'synchronized' statement
-nl_after_synchronized = remove # ignore/add/remove/force
-
-# Add or remove blank line before 'do'
-nl_before_do = remove # ignore/add/remove/force
-
-# Add or remove blank line after 'do/while' statement
-nl_after_do = remove # ignore/add/remove/force
-
-# Whether to double-space commented-entries in struct/union/enum
-nl_ds_struct_enum_cmt = false # false/true
-
-# force nl before } of a struct/union/enum
-# (lower priority than 'eat_blanks_before_close_brace')
-nl_ds_struct_enum_close_brace = false # false/true
-
-# Add or remove a newline before/after a class colon,
-# (tied to pos_class_colon).
-nl_class_colon = remove # ignore/add/remove/force
-
-# Add or remove a newline around a class constructor colon.
-# Related to nl_constr_init_args, pos_constr_colon and pos_constr_comma.
-nl_constr_colon = remove # 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 arithmetic operators in wrapped expressions
-pos_arith = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
-
-# The position of assignment in wrapped expressions.
-# Do not affect '=' followed by '{'
-pos_assign = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
-
-# The position of boolean operators in wrapped expressions
-pos_bool = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
-
-# The position of comparison operators in wrapped expressions
-pos_compare = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
-
-# The position of conditional (b ? t : f) operators in wrapped expressions
-pos_conditional = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
-
-# The position of the comma in wrapped expressions
-pos_comma = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
-
-# The position of the comma in the base class list if there are more than one line,
-# (tied to nl_class_init_args).
-pos_class_comma = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
-
-# The position of the comma in the constructor initialization list.
-# Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon.
-pos_constr_comma = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
-
-# The position of trailing/leading class colon, between class and base class list
-# (tied to nl_class_colon).
-pos_class_colon = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
-
-# The position of colons between constructor and member initialization,
-# (tied to UO_nl_constr_colon).
-# Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.
-pos_constr_colon = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
-
-#
-# Line Splitting options
-#
-
-# Try to limit code width to N number of columns
-code_width = 80 # 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
-
-# Whether to split lines as close to code_width as possible and ignore some groupings
-ls_code_width = true # false/true
-
-#
-# Blank line options
-#
-
-# The maximum consecutive newlines (3 = 2 blank lines)
-nl_max = 2 # number
-
-# The number of newlines after a function prototype, if followed by another function prototype
-nl_after_func_proto = 1 # number
-
-# The number of newlines after a function prototype, if not followed by another function prototype
-nl_after_func_proto_group = 2 # number
-
-# The number of newlines after '}' of a multi-line function body
-nl_after_func_body = 2 # number
-
-# The number of newlines after '}' of a multi-line function body in a class declaration
-nl_after_func_body_class = 1 # number
-
-# The number of newlines after '}' of a single line function body
-nl_after_func_body_one_liner = 1 # 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 = 2 # 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 = 1 # 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 = 1 # number
-
-# Whether to force a newline after a multi-line comment.
-nl_after_multiline_comment = true # false/true
-
-# Whether to force a newline after a label's colon.
-nl_after_label_colon = false # false/true
-
-# The number of newlines after '}' or ';' of a struct/enum/union definition
-nl_after_struct = 2 # number
-
-# The number of newlines after '}' or ';' of a class definition
-nl_after_class = 2 # number
-
-# The number of newlines after '}' of a namespace
-nl_after_namespace = 2 # number
-
-# 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 = 2 # number
-
-# The number of newlines after a 'private:', 'public:', 'protected:', 'signals:' or 'slots:' label.
-# 0 = No change.
-# the option 'nl_after_access_spec' takes preference over 'nl_typedef_blk_start' and 'nl_var_def_blk_start'
-nl_after_access_spec = 1 # number
-
-# The number of newlines between a function def and the function comment.
-# 0 = No change.
-nl_comment_func_def = 1 # number
-
-# The number of newlines after a try-catch-finally block that isn't followed by a brace close.
-# 0 = No change.
-nl_after_try_catch_finally = 1 # number
-
-# The number of newlines before and after a property, indexer or event decl.
-# 0 = No change.
-nl_around_cs_property = 1 # number
-
-# The number of newlines between the get/set/add/remove handlers in C#.
-# 0 = No change.
-nl_between_get_set = 1 # number
-
-# Add or remove newline between C# property and the '{'
-nl_property_brace = remove # ignore/add/remove/force
-
-# Whether to remove blank lines after '{'
-eat_blanks_after_open_brace = true # false/true
-
-# Whether to remove blank lines before '}'
-eat_blanks_before_close_brace = true # false/true
-
-# How aggressively to remove extra newlines not in preproc.
-# 0: No change
-# 1: Remove most newlines not handled by other config
-# 2: Remove all newlines and reformat completely by config
-nl_remove_extra_newlines = 1 # number
-
-# Whether to put a blank line before 'return' statements, unless after an open brace.
-nl_before_return = false # false/true
-
-# Whether to put a blank line after 'return' statements, unless followed by a close brace.
-nl_after_return = false # false/true
-
-# Whether to put a newline after a Java annotation statement.
-# Only affects annotations that are after a newline.
-nl_after_annotation = force # ignore/add/remove/force
-
-#
-# Code modifying options (non-whitespace)
-#
-
-# Add or remove braces on single-line 'do' statement
-mod_full_brace_do = force # ignore/add/remove/force
-
-# Add or remove braces on single-line 'for' statement
-mod_full_brace_for = remove # ignore/add/remove/force
-
-# Add or remove braces on single-line 'if' statement. Will not remove the braces if they contain an 'else'.
-mod_full_brace_if = remove # ignore/add/remove/force
-
-# Make all if/elseif/else statements in a chain be braced or not. Overrides mod_full_brace_if.
-# If any must be braced, they are all braced. If all can be unbraced, then the braces are removed.
-mod_full_brace_if_chain = 1 # unsigned number
-
-# Don't remove braces around statements that span N newlines
-mod_full_brace_nl = 2 # number
-
-# Add or remove braces on single-line 'while' statement
-mod_full_brace_while = remove # ignore/add/remove/force
-
-# Add or remove braces on single-line 'using ()' statement
-mod_full_brace_using = remove # ignore/add/remove/force
-
-# Add or remove unnecessary paren on 'return' statement
-mod_paren_on_return = remove # 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 = 0 # number
-
-# If a namespace 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_namespace_closebrace_comment = 0 # 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 = 0 # number
-
-# If an #ifdef body exceeds the specified number of newlines and doesn't have a comment after
-# the #endif, a comment will be added.
-mod_add_long_ifdef_endif_comment = 0 # number
-
-# If an #ifdef or #else body exceeds the specified number of newlines and doesn't have a comment after
-# the #else, a comment will be added.
-mod_add_long_ifdef_else_comment = 0 # number
-
-# If TRUE, will sort consecutive single-line 'import' statements [Java, D]
-mod_sort_import = true # false/true
-
-# If TRUE, will sort consecutive single-line 'using' statements [C#]
-mod_sort_using = true # 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
-
-# If TRUE, it will move a 'break' that appears after a fully braced 'case' before the close brace.
-mod_move_case_break = false # false/true
-
-# If TRUE, it will remove a void 'return;' that appears as the last statement in a function.
-mod_remove_empty_return = true # false/true
-
-#
-# Comment modifications
-#
-
-# Try to wrap comments at cmt_width columns
-cmt_width = 80 # number
-
-# Set the comment reflow mode (default: 0)
-# 0: no reflowing (apart from the line wrapping due to cmt_width)
-# 1: no touching at all
-# 2: full reflow
-cmt_reflow_mode = 1 # number
-
-# Whether to convert all tabs to spaces in comments. Default is to leave tabs inside comments alone, unless used for indenting.
-cmt_convert_tab_to_spaces = false # false/true
-
-# If false, disable all multi-line comment changes, including cmt_width. keyword substitution and leading chars.
-# Default is true.
-cmt_indent_multi = true # false/true
-
-# Whether to group c-comments that look like they are in a block
-cmt_c_group = true # false/true
-
-# Whether to put an empty '/*' on the first line of the combined c-comment
-cmt_c_nl_start = true # false/true
-
-# Whether to put a newline before the closing '*/' of the combined c-comment
-cmt_c_nl_end = true # false/true
-
-# Whether to group cpp-comments that look like they are in a block
-cmt_cpp_group = true # false/true
-
-# Whether to put an empty '/*' on the first line of the combined cpp-comment
-cmt_cpp_nl_start = true # false/true
-
-# Whether to put a newline before the closing '*/' of the combined cpp-comment
-cmt_cpp_nl_end = true # 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 = true # false/true
-
-# The number of spaces to insert at the start of subsequent comment lines
-cmt_sp_before_star_cont = 0 # number
-
-# The number of spaces to insert after the star on subsequent comment lines
-cmt_sp_after_star_cont = 0 # number
-
-# For multi-line comments with a '*' lead, remove leading spaces if the first and last lines of
-# the comment are the same length. Default=True
-cmt_multi_check_last = false # false/true
-
-# 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 substitute $(filename) with the current file's name.
-cmt_insert_file_header = "" # string
-
-# The filename that contains text to insert at the end of a file if the file doesn't end with a C/C++ comment.
-# Will substitute $(filename) with the current file's name.
-cmt_insert_file_footer = "" # string
-
-# The filename that contains text to insert before a function implementation if the function isn't preceded with a C/C++ comment.
-# Will substitute $(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 = "" # string
-
-# The filename that contains text to insert before a class if the class isn't preceded with a C/C++ comment.
-# Will substitute $(class) with the class name.
-cmt_insert_class_header = "" # string
-
-# The filename that contains text to insert before a Obj-C message specification if the method isn't preceded with a C/C++ comment.
-# Will substitute $(message) with the function name and $(javaparam) with the javadoc @param and @return stuff.
-cmt_insert_oc_msg_header = "" # string
-
-# If a preprocessor is encountered when stepping backwards from a function name, then
-# this option decides whether the comment should be inserted.
-# Affects cmt_insert_oc_msg_header, cmt_insert_func_header and cmt_insert_class_header.
-cmt_insert_before_preproc = false # false/true
-
-#
-# Preprocessor options
-#
-
-# Whether to indent #if/#else/#endif at the brace level (true) or from column 1 (false)
-pp_indent_at_level = false # false/true
-
-# Whether to indent #if/#else/#endif at the parenthesis level if the brace
-# level is 0. If false, these are indented from column 1.
-pp_indent_at_level0 = false # false/true
-
-# Specifies the number of columns to indent preprocessors per level at brace level 0 (file-level).
-# If pp_indent_at_level=false, specifies the number of columns to indent preprocessors per level at brace level > 0 (function-level).
-# Default=1.
-pp_indent_count = 1 # number
-
-# Add or remove space after # based on pp level of #if blocks
-pp_space_after = remove # ignore/add/remove/force
-
-# Sets the number of spaces added with pp_space_after
-pp_space_count = 1 # 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.
-# 0: indent preprocessors using output_tab_size.
-# >0: column at which all preprocessors will be indented.
-pp_indent_if = 0 # number
-
-# Control whether to indent the code between #if, #else and #endif.
-pp_if_indent_code = false # false/true
-
-# Whether to indent '#define' at the brace level (true) or from column 1 (false)
-pp_define_at_level = false # false/true
-
-# Use or Do not Use options
-#
-
-# True: indent_func_call_param will be used
-# False: indent_func_call_param will NOT be used
-use_indent_func_call_param = true # false/true
-
-# True: indent_continue will be used only once
-# False: indent_continue will be used every time (default)
-use_indent_continue_only_once = false # 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
-#
-# You can assign any keyword to any type with the set option.
-# set func_call_user _ N_
-#
-# The full syntax description of all custom definition config entries
-# is shown below:
-#
-# define custom tokens as:
-# - embed whitespace in token using '' escape character, or
-# put token in quotes
-# - these: ' " and ` are recognized as quote delimiters
-#
-# type token1 token2 token3 ...
-# ^ optionally specify multiple tokens on a single line
-# define def_token output_token
-# ^ output_token is optional, then NULL is assumed
-# macro-open token
-# macro-close token
-# macro-else token
-# set id token1 token2 ...
-# ^ optionally specify multiple tokens on a single line
-# ^ id is one of the names in token_enum.h sans the CT_ prefix,
-# e.g. PP_PRAGMA
-#
-# all tokens are separated by any mix of ',' commas, '=' equal signs
-# and whitespace (space, tab)
-#
-# You can add support for other file extensions using the 'file_ext' command.
-# The first arg is the language name used with the '-l' option.
-# The remaining args are file extensions, matched with 'endswith'.
-# file_ext CPP .ch .cxx .cpp.in
-#
-type byte cchar uchar ushort word uint ulong llong ullong
-type int8 uint8 int16 uint16 int32 uint32 int64 uint64
-type FILE size_t ssize_t va_list wchar_t
-type BOOL BSTR BYTE CHAR DOUBLE DWORD DWORD64 DWORD_PTR FALSE FLOAT
-type HANDLE HKEY HRESULT HWND INT INT8 INT16 INT32 INT64 LONG LONG64 LONG_PTR
-type LPARAM LPSTR LPCSTR LPCWSTR LPTSTR LPVOID LPWSTR PSZ SHORT TRUE
-type UCHAR UINT UINT8 UINT16 UINT32 UINT64 UINT_PTR ULONG ULONG64 ULONG_PTR
-type USHORT WCHAR WORD WORD_PTR WPARAM
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/uigui_uncrustify.ini b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/uigui_uncrustify.ini
deleted file mode 100644
index 80a27c58..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/uigui_uncrustify.ini
+++ /dev/null
@@ -1,7386 +0,0 @@
-[header]
-categories=General options|Spacing options|Indenting options|Newline adding and removing options|Blank line options|Positioning options|Line splitting options|Code alignment options (not left column spaces/tabs)|Comment modification options|Code modifying options (non-whitespace)|Preprocessor options|Sort includes options|Use or Do not Use options|Warn levels - 1: error, 2: warning (default), 3: note
-cfgFileParameterEnding=cr
-configFilename=uncrustify.cfg
-fileTypes=*.c|*.c++|*.cc|*.cp|*.cpp|*.cs|*.cxx|*.d|*.di|*.es|*.h|*.h++|*.hh|*.hp|*.hpp|*.hxx|*.inl|*.java|*.js|*.m|*.mm|*.p|*.pawn|*.sma|*.sqc|*.sql|*.vala
-indenterFileName=uncrustify
-indenterName=Uncrustify (C, C++, C#, ObjectiveC, D, Java, Pawn, VALA)
-inputFileName=indentinput
-inputFileParameter="-f "
-manual=http://uncrustify.sourceforge.net/config.txt
-outputFileName=indentoutput
-outputFileParameter="-o "
-stringparaminquotes=false
-parameterOrder=ipo
-showHelpParameter=-h
-stringparaminquotes=false
-useCfgFileParameter="-c "
-version=Uncrustify-0.76.0
-
-[Newlines]
-Category=0
-Description="<html>The type of line endings.<br/><br/>Default: auto</html>"
-Enabled=false
-EditorType=multiple
-Choices=newlines=lf|newlines=crlf|newlines=cr|newlines=auto
-ChoicesReadable="Newlines Unix|Newlines Win|Newlines Mac|Newlines Auto"
-ValueDefault=auto
-
-[Input Tab Size]
-Category=0
-Description="<html>The original size of tabs in the input.<br/><br/>Default: 8</html>"
-Enabled=false
-EditorType=numeric
-CallName="input_tab_size="
-MinVal=1
-MaxVal=32
-ValueDefault=8
-
-[Output Tab Size]
-Category=0
-Description="<html>The size of tabs in the output (only used if align_with_tabs=true).<br/><br/>Default: 8</html>"
-Enabled=false
-EditorType=numeric
-CallName="output_tab_size="
-MinVal=1
-MaxVal=32
-ValueDefault=8
-
-[String Escape Char]
-Category=0
-Description="<html>The ASCII value of the string escape char, usually 92 (\) or (Pawn) 94 (^).<br/><br/>Default: 92</html>"
-Enabled=false
-EditorType=numeric
-CallName="string_escape_char="
-MinVal=0
-MaxVal=255
-ValueDefault=92
-
-[String Escape Char2]
-Category=0
-Description="<html>Alternate string escape char (usually only used for Pawn).<br/>Only works right before the quote char.</html>"
-Enabled=false
-EditorType=numeric
-CallName="string_escape_char2="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[String Replace Tab Chars]
-Category=0
-Description="<html>Replace tab characters found in string literals with the escape sequence \t<br/>instead.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=string_replace_tab_chars=true|string_replace_tab_chars=false
-ValueDefault=false
-
-[Tok Split Gte]
-Category=0
-Description="<html>Allow interpreting '&gt;=' and '&gt;&gt;=' as part of a template in code like<br/>'void f(list&lt;list&lt;B&gt;&gt;=val);'. If true, 'assert(x&lt;0 &amp;&amp; y&gt;=3)' will be broken.<br/>Improvements to template detection may make this option obsolete.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=tok_split_gte=true|tok_split_gte=false
-ValueDefault=false
-
-[Disable Processing Nl Cont]
-Category=0
-Description="<html>Disable formatting of NL_CONT ('\\n') ended lines (e.g. multi-line macros).</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=disable_processing_nl_cont=true|disable_processing_nl_cont=false
-ValueDefault=false
-
-[Disable Processing Cmt]
-Category=0
-Description="<html>Specify the marker used in comments to disable processing of part of the<br/>file.<br/><br/>Default: *INDENT-OFF*</html>"
-Enabled=false
-CallName=disable_processing_cmt=
-EditorType=string
-ValueDefault= *INDENT-OFF*
-
-[Enable Processing Cmt]
-Category=0
-Description="<html>Specify the marker used in comments to (re)enable processing in a file.<br/><br/>Default: *INDENT-ON*</html>"
-Enabled=false
-CallName=enable_processing_cmt=
-EditorType=string
-ValueDefault= *INDENT-ON*
-
-[Enable Digraphs]
-Category=0
-Description="<html>Enable parsing of digraphs.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=enable_digraphs=true|enable_digraphs=false
-ValueDefault=false
-
-[Processing Cmt As Regex]
-Category=0
-Description="<html>Option to allow both disable_processing_cmt and enable_processing_cmt<br/>strings, if specified, to be interpreted as ECMAScript regular expressions.<br/>If true, a regex search will be performed within comments according to the<br/>specified patterns in order to disable/enable processing.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=processing_cmt_as_regex=true|processing_cmt_as_regex=false
-ValueDefault=false
-
-[Utf8 Bom]
-Category=0
-Description="<html>Add or remove the UTF-8 BOM (recommend 'remove').</html>"
-Enabled=false
-EditorType=multiple
-Choices=utf8_bom=ignore|utf8_bom=add|utf8_bom=remove|utf8_bom=force|utf8_bom=not_defined
-ChoicesReadable="Ignore Utf8 Bom|Add Utf8 Bom|Remove Utf8 Bom|Force Utf8 Bom"
-ValueDefault=ignore
-
-[Utf8 Byte]
-Category=0
-Description="<html>If the file contains bytes with values between 128 and 255, but is not<br/>UTF-8, then output as UTF-8.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=utf8_byte=true|utf8_byte=false
-ValueDefault=false
-
-[Utf8 Force]
-Category=0
-Description="<html>Force the output encoding to UTF-8.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=utf8_force=true|utf8_force=false
-ValueDefault=false
-
-[Sp Arith]
-Category=1
-Description="<html>Add or remove space around non-assignment symbolic operators ('+', '/', '%',<br/>'&lt;&lt;', and so forth).</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_arith=ignore|sp_arith=add|sp_arith=remove|sp_arith=force|sp_arith=not_defined
-ChoicesReadable="Ignore Sp Arith|Add Sp Arith|Remove Sp Arith|Force Sp Arith"
-ValueDefault=ignore
-
-[Sp Arith Additive]
-Category=1
-Description="<html>Add or remove space around arithmetic operators '+' and '-'.<br/><br/>Overrides sp_arith.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_arith_additive=ignore|sp_arith_additive=add|sp_arith_additive=remove|sp_arith_additive=force|sp_arith_additive=not_defined
-ChoicesReadable="Ignore Sp Arith Additive|Add Sp Arith Additive|Remove Sp Arith Additive|Force Sp Arith Additive"
-ValueDefault=ignore
-
-[Sp Assign]
-Category=1
-Description="<html>Add or remove space around assignment operator '=', '+=', etc.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_assign=ignore|sp_assign=add|sp_assign=remove|sp_assign=force|sp_assign=not_defined
-ChoicesReadable="Ignore Sp Assign|Add Sp Assign|Remove Sp Assign|Force Sp Assign"
-ValueDefault=ignore
-
-[Sp Cpp Lambda Assign]
-Category=1
-Description="<html>Add or remove space around '=' in C++11 lambda capture specifications.<br/><br/>Overrides sp_assign.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_lambda_assign=ignore|sp_cpp_lambda_assign=add|sp_cpp_lambda_assign=remove|sp_cpp_lambda_assign=force|sp_cpp_lambda_assign=not_defined
-ChoicesReadable="Ignore Sp Cpp Lambda Assign|Add Sp Cpp Lambda Assign|Remove Sp Cpp Lambda Assign|Force Sp Cpp Lambda Assign"
-ValueDefault=ignore
-
-[Sp Cpp Lambda Square Paren]
-Category=1
-Description="<html>Add or remove space after the capture specification of a C++11 lambda when<br/>an argument list is present, as in '[] &lt;here&gt; (int x){ ... }'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_lambda_square_paren=ignore|sp_cpp_lambda_square_paren=add|sp_cpp_lambda_square_paren=remove|sp_cpp_lambda_square_paren=force|sp_cpp_lambda_square_paren=not_defined
-ChoicesReadable="Ignore Sp Cpp Lambda Square Paren|Add Sp Cpp Lambda Square Paren|Remove Sp Cpp Lambda Square Paren|Force Sp Cpp Lambda Square Paren"
-ValueDefault=ignore
-
-[Sp Cpp Lambda Square Brace]
-Category=1
-Description="<html>Add or remove space after the capture specification of a C++11 lambda with<br/>no argument list is present, as in '[] &lt;here&gt; { ... }'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_lambda_square_brace=ignore|sp_cpp_lambda_square_brace=add|sp_cpp_lambda_square_brace=remove|sp_cpp_lambda_square_brace=force|sp_cpp_lambda_square_brace=not_defined
-ChoicesReadable="Ignore Sp Cpp Lambda Square Brace|Add Sp Cpp Lambda Square Brace|Remove Sp Cpp Lambda Square Brace|Force Sp Cpp Lambda Square Brace"
-ValueDefault=ignore
-
-[Sp Cpp Lambda Argument List]
-Category=1
-Description="<html>Add or remove space after the opening parenthesis and before the closing<br/>parenthesis of a argument list of a C++11 lambda, as in<br/>'[]( &lt;here&gt; int x &lt;here&gt; ){ ... }'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_lambda_argument_list=ignore|sp_cpp_lambda_argument_list=add|sp_cpp_lambda_argument_list=remove|sp_cpp_lambda_argument_list=force|sp_cpp_lambda_argument_list=not_defined
-ChoicesReadable="Ignore Sp Cpp Lambda Argument List|Add Sp Cpp Lambda Argument List|Remove Sp Cpp Lambda Argument List|Force Sp Cpp Lambda Argument List"
-ValueDefault=ignore
-
-[Sp Cpp Lambda Paren Brace]
-Category=1
-Description="<html>Add or remove space after the argument list of a C++11 lambda, as in<br/>'[](int x) &lt;here&gt; { ... }'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_lambda_paren_brace=ignore|sp_cpp_lambda_paren_brace=add|sp_cpp_lambda_paren_brace=remove|sp_cpp_lambda_paren_brace=force|sp_cpp_lambda_paren_brace=not_defined
-ChoicesReadable="Ignore Sp Cpp Lambda Paren Brace|Add Sp Cpp Lambda Paren Brace|Remove Sp Cpp Lambda Paren Brace|Force Sp Cpp Lambda Paren Brace"
-ValueDefault=ignore
-
-[Sp Cpp Lambda Fparen]
-Category=1
-Description="<html>Add or remove space between a lambda body and its call operator of an<br/>immediately invoked lambda, as in '[]( ... ){ ... } &lt;here&gt; ( ... )'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_lambda_fparen=ignore|sp_cpp_lambda_fparen=add|sp_cpp_lambda_fparen=remove|sp_cpp_lambda_fparen=force|sp_cpp_lambda_fparen=not_defined
-ChoicesReadable="Ignore Sp Cpp Lambda Fparen|Add Sp Cpp Lambda Fparen|Remove Sp Cpp Lambda Fparen|Force Sp Cpp Lambda Fparen"
-ValueDefault=ignore
-
-[Sp Assign Default]
-Category=1
-Description="<html>Add or remove space around assignment operator '=' in a prototype.<br/><br/>If set to ignore, use sp_assign.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_assign_default=ignore|sp_assign_default=add|sp_assign_default=remove|sp_assign_default=force|sp_assign_default=not_defined
-ChoicesReadable="Ignore Sp Assign Default|Add Sp Assign Default|Remove Sp Assign Default|Force Sp Assign Default"
-ValueDefault=ignore
-
-[Sp Before Assign]
-Category=1
-Description="<html>Add or remove space before assignment operator '=', '+=', etc.<br/><br/>Overrides sp_assign.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_assign=ignore|sp_before_assign=add|sp_before_assign=remove|sp_before_assign=force|sp_before_assign=not_defined
-ChoicesReadable="Ignore Sp Before Assign|Add Sp Before Assign|Remove Sp Before Assign|Force Sp Before Assign"
-ValueDefault=ignore
-
-[Sp After Assign]
-Category=1
-Description="<html>Add or remove space after assignment operator '=', '+=', etc.<br/><br/>Overrides sp_assign.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_assign=ignore|sp_after_assign=add|sp_after_assign=remove|sp_after_assign=force|sp_after_assign=not_defined
-ChoicesReadable="Ignore Sp After Assign|Add Sp After Assign|Remove Sp After Assign|Force Sp After Assign"
-ValueDefault=ignore
-
-[Sp Enum Brace]
-Category=1
-Description="<html>Add or remove space in 'enum {'.<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_enum_brace=ignore|sp_enum_brace=add|sp_enum_brace=remove|sp_enum_brace=force|sp_enum_brace=not_defined
-ChoicesReadable="Ignore Sp Enum Brace|Add Sp Enum Brace|Remove Sp Enum Brace|Force Sp Enum Brace"
-ValueDefault=add
-
-[Sp Enum Paren]
-Category=1
-Description="<html>Add or remove space in 'NS_ENUM ('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_enum_paren=ignore|sp_enum_paren=add|sp_enum_paren=remove|sp_enum_paren=force|sp_enum_paren=not_defined
-ChoicesReadable="Ignore Sp Enum Paren|Add Sp Enum Paren|Remove Sp Enum Paren|Force Sp Enum Paren"
-ValueDefault=ignore
-
-[Sp Enum Assign]
-Category=1
-Description="<html>Add or remove space around assignment '=' in enum.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_enum_assign=ignore|sp_enum_assign=add|sp_enum_assign=remove|sp_enum_assign=force|sp_enum_assign=not_defined
-ChoicesReadable="Ignore Sp Enum Assign|Add Sp Enum Assign|Remove Sp Enum Assign|Force Sp Enum Assign"
-ValueDefault=ignore
-
-[Sp Enum Before Assign]
-Category=1
-Description="<html>Add or remove space before assignment '=' in enum.<br/><br/>Overrides sp_enum_assign.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_enum_before_assign=ignore|sp_enum_before_assign=add|sp_enum_before_assign=remove|sp_enum_before_assign=force|sp_enum_before_assign=not_defined
-ChoicesReadable="Ignore Sp Enum Before Assign|Add Sp Enum Before Assign|Remove Sp Enum Before Assign|Force Sp Enum Before Assign"
-ValueDefault=ignore
-
-[Sp Enum After Assign]
-Category=1
-Description="<html>Add or remove space after assignment '=' in enum.<br/><br/>Overrides sp_enum_assign.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_enum_after_assign=ignore|sp_enum_after_assign=add|sp_enum_after_assign=remove|sp_enum_after_assign=force|sp_enum_after_assign=not_defined
-ChoicesReadable="Ignore Sp Enum After Assign|Add Sp Enum After Assign|Remove Sp Enum After Assign|Force Sp Enum After Assign"
-ValueDefault=ignore
-
-[Sp Enum Colon]
-Category=1
-Description="<html>Add or remove space around assignment ':' in enum.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_enum_colon=ignore|sp_enum_colon=add|sp_enum_colon=remove|sp_enum_colon=force|sp_enum_colon=not_defined
-ChoicesReadable="Ignore Sp Enum Colon|Add Sp Enum Colon|Remove Sp Enum Colon|Force Sp Enum Colon"
-ValueDefault=ignore
-
-[Sp Pp Concat]
-Category=1
-Description="<html>Add or remove space around preprocessor '##' concatenation operator.<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_pp_concat=ignore|sp_pp_concat=add|sp_pp_concat=remove|sp_pp_concat=force|sp_pp_concat=not_defined
-ChoicesReadable="Ignore Sp Pp Concat|Add Sp Pp Concat|Remove Sp Pp Concat|Force Sp Pp Concat"
-ValueDefault=add
-
-[Sp Pp Stringify]
-Category=1
-Description="<html>Add or remove space after preprocessor '#' stringify operator.<br/>Also affects the '#@' charizing operator.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_pp_stringify=ignore|sp_pp_stringify=add|sp_pp_stringify=remove|sp_pp_stringify=force|sp_pp_stringify=not_defined
-ChoicesReadable="Ignore Sp Pp Stringify|Add Sp Pp Stringify|Remove Sp Pp Stringify|Force Sp Pp Stringify"
-ValueDefault=ignore
-
-[Sp Before Pp Stringify]
-Category=1
-Description="<html>Add or remove space before preprocessor '#' stringify operator<br/>as in '#define x(y) L#y'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_pp_stringify=ignore|sp_before_pp_stringify=add|sp_before_pp_stringify=remove|sp_before_pp_stringify=force|sp_before_pp_stringify=not_defined
-ChoicesReadable="Ignore Sp Before Pp Stringify|Add Sp Before Pp Stringify|Remove Sp Before Pp Stringify|Force Sp Before Pp Stringify"
-ValueDefault=ignore
-
-[Sp Bool]
-Category=1
-Description="<html>Add or remove space around boolean operators '&amp;&amp;' and '||'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_bool=ignore|sp_bool=add|sp_bool=remove|sp_bool=force|sp_bool=not_defined
-ChoicesReadable="Ignore Sp Bool|Add Sp Bool|Remove Sp Bool|Force Sp Bool"
-ValueDefault=ignore
-
-[Sp Compare]
-Category=1
-Description="<html>Add or remove space around compare operator '&lt;', '&gt;', '==', etc.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_compare=ignore|sp_compare=add|sp_compare=remove|sp_compare=force|sp_compare=not_defined
-ChoicesReadable="Ignore Sp Compare|Add Sp Compare|Remove Sp Compare|Force Sp Compare"
-ValueDefault=ignore
-
-[Sp Inside Paren]
-Category=1
-Description="<html>Add or remove space inside '(' and ')'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_paren=ignore|sp_inside_paren=add|sp_inside_paren=remove|sp_inside_paren=force|sp_inside_paren=not_defined
-ChoicesReadable="Ignore Sp Inside Paren|Add Sp Inside Paren|Remove Sp Inside Paren|Force Sp Inside Paren"
-ValueDefault=ignore
-
-[Sp Paren Paren]
-Category=1
-Description="<html>Add or remove space between nested parentheses, i.e. '((' vs. ') )'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_paren_paren=ignore|sp_paren_paren=add|sp_paren_paren=remove|sp_paren_paren=force|sp_paren_paren=not_defined
-ChoicesReadable="Ignore Sp Paren Paren|Add Sp Paren Paren|Remove Sp Paren Paren|Force Sp Paren Paren"
-ValueDefault=ignore
-
-[Sp Cparen Oparen]
-Category=1
-Description="<html>Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cparen_oparen=ignore|sp_cparen_oparen=add|sp_cparen_oparen=remove|sp_cparen_oparen=force|sp_cparen_oparen=not_defined
-ChoicesReadable="Ignore Sp Cparen Oparen|Add Sp Cparen Oparen|Remove Sp Cparen Oparen|Force Sp Cparen Oparen"
-ValueDefault=ignore
-
-[Sp Balance Nested Parens]
-Category=1
-Description="<html>Whether to balance spaces inside nested parentheses.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=sp_balance_nested_parens=true|sp_balance_nested_parens=false
-ValueDefault=false
-
-[Sp Paren Brace]
-Category=1
-Description="<html>Add or remove space between ')' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_paren_brace=ignore|sp_paren_brace=add|sp_paren_brace=remove|sp_paren_brace=force|sp_paren_brace=not_defined
-ChoicesReadable="Ignore Sp Paren Brace|Add Sp Paren Brace|Remove Sp Paren Brace|Force Sp Paren Brace"
-ValueDefault=ignore
-
-[Sp Brace Brace]
-Category=1
-Description="<html>Add or remove space between nested braces, i.e. '{{' vs. '{ {'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_brace_brace=ignore|sp_brace_brace=add|sp_brace_brace=remove|sp_brace_brace=force|sp_brace_brace=not_defined
-ChoicesReadable="Ignore Sp Brace Brace|Add Sp Brace Brace|Remove Sp Brace Brace|Force Sp Brace Brace"
-ValueDefault=ignore
-
-[Sp Before Ptr Star]
-Category=1
-Description="<html>Add or remove space before pointer star '*'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_ptr_star=ignore|sp_before_ptr_star=add|sp_before_ptr_star=remove|sp_before_ptr_star=force|sp_before_ptr_star=not_defined
-ChoicesReadable="Ignore Sp Before Ptr Star|Add Sp Before Ptr Star|Remove Sp Before Ptr Star|Force Sp Before Ptr Star"
-ValueDefault=ignore
-
-[Sp Before Unnamed Ptr Star]
-Category=1
-Description="<html>Add or remove space before pointer star '*' that isn't followed by a<br/>variable name. If set to ignore, sp_before_ptr_star is used instead.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_unnamed_ptr_star=ignore|sp_before_unnamed_ptr_star=add|sp_before_unnamed_ptr_star=remove|sp_before_unnamed_ptr_star=force|sp_before_unnamed_ptr_star=not_defined
-ChoicesReadable="Ignore Sp Before Unnamed Ptr Star|Add Sp Before Unnamed Ptr Star|Remove Sp Before Unnamed Ptr Star|Force Sp Before Unnamed Ptr Star"
-ValueDefault=ignore
-
-[Sp Between Ptr Star]
-Category=1
-Description="<html>Add or remove space between pointer stars '*', as in 'int ***a;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_between_ptr_star=ignore|sp_between_ptr_star=add|sp_between_ptr_star=remove|sp_between_ptr_star=force|sp_between_ptr_star=not_defined
-ChoicesReadable="Ignore Sp Between Ptr Star|Add Sp Between Ptr Star|Remove Sp Between Ptr Star|Force Sp Between Ptr Star"
-ValueDefault=ignore
-
-[Sp After Ptr Star]
-Category=1
-Description="<html>Add or remove space after pointer star '*', if followed by a word.<br/><br/>Overrides sp_type_func.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_ptr_star=ignore|sp_after_ptr_star=add|sp_after_ptr_star=remove|sp_after_ptr_star=force|sp_after_ptr_star=not_defined
-ChoicesReadable="Ignore Sp After Ptr Star|Add Sp After Ptr Star|Remove Sp After Ptr Star|Force Sp After Ptr Star"
-ValueDefault=ignore
-
-[Sp After Ptr Block Caret]
-Category=1
-Description="<html>Add or remove space after pointer caret '^', if followed by a word.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_ptr_block_caret=ignore|sp_after_ptr_block_caret=add|sp_after_ptr_block_caret=remove|sp_after_ptr_block_caret=force|sp_after_ptr_block_caret=not_defined
-ChoicesReadable="Ignore Sp After Ptr Block Caret|Add Sp After Ptr Block Caret|Remove Sp After Ptr Block Caret|Force Sp After Ptr Block Caret"
-ValueDefault=ignore
-
-[Sp After Ptr Star Qualifier]
-Category=1
-Description="<html>Add or remove space after pointer star '*', if followed by a qualifier.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_ptr_star_qualifier=ignore|sp_after_ptr_star_qualifier=add|sp_after_ptr_star_qualifier=remove|sp_after_ptr_star_qualifier=force|sp_after_ptr_star_qualifier=not_defined
-ChoicesReadable="Ignore Sp After Ptr Star Qualifier|Add Sp After Ptr Star Qualifier|Remove Sp After Ptr Star Qualifier|Force Sp After Ptr Star Qualifier"
-ValueDefault=ignore
-
-[Sp After Ptr Star Func]
-Category=1
-Description="<html>Add or remove space after a pointer star '*', if followed by a function<br/>prototype or function definition.<br/><br/>Overrides sp_after_ptr_star and sp_type_func.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_ptr_star_func=ignore|sp_after_ptr_star_func=add|sp_after_ptr_star_func=remove|sp_after_ptr_star_func=force|sp_after_ptr_star_func=not_defined
-ChoicesReadable="Ignore Sp After Ptr Star Func|Add Sp After Ptr Star Func|Remove Sp After Ptr Star Func|Force Sp After Ptr Star Func"
-ValueDefault=ignore
-
-[Sp After Ptr Star Trailing]
-Category=1
-Description="<html>Add or remove space after a pointer star '*' in the trailing return of a<br/>function prototype or function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_ptr_star_trailing=ignore|sp_after_ptr_star_trailing=add|sp_after_ptr_star_trailing=remove|sp_after_ptr_star_trailing=force|sp_after_ptr_star_trailing=not_defined
-ChoicesReadable="Ignore Sp After Ptr Star Trailing|Add Sp After Ptr Star Trailing|Remove Sp After Ptr Star Trailing|Force Sp After Ptr Star Trailing"
-ValueDefault=ignore
-
-[Sp Ptr Star Func Var]
-Category=1
-Description="<html>Add or remove space between the pointer star '*' and the name of the variable<br/>in a function pointer definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_ptr_star_func_var=ignore|sp_ptr_star_func_var=add|sp_ptr_star_func_var=remove|sp_ptr_star_func_var=force|sp_ptr_star_func_var=not_defined
-ChoicesReadable="Ignore Sp Ptr Star Func Var|Add Sp Ptr Star Func Var|Remove Sp Ptr Star Func Var|Force Sp Ptr Star Func Var"
-ValueDefault=ignore
-
-[Sp Ptr Star Func Type]
-Category=1
-Description="<html>Add or remove space between the pointer star '*' and the name of the type<br/>in a function pointer type definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_ptr_star_func_type=ignore|sp_ptr_star_func_type=add|sp_ptr_star_func_type=remove|sp_ptr_star_func_type=force|sp_ptr_star_func_type=not_defined
-ChoicesReadable="Ignore Sp Ptr Star Func Type|Add Sp Ptr Star Func Type|Remove Sp Ptr Star Func Type|Force Sp Ptr Star Func Type"
-ValueDefault=ignore
-
-[Sp Ptr Star Paren]
-Category=1
-Description="<html>Add or remove space after a pointer star '*', if followed by an open<br/>parenthesis, as in 'void* (*)()'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_ptr_star_paren=ignore|sp_ptr_star_paren=add|sp_ptr_star_paren=remove|sp_ptr_star_paren=force|sp_ptr_star_paren=not_defined
-ChoicesReadable="Ignore Sp Ptr Star Paren|Add Sp Ptr Star Paren|Remove Sp Ptr Star Paren|Force Sp Ptr Star Paren"
-ValueDefault=ignore
-
-[Sp Before Ptr Star Func]
-Category=1
-Description="<html>Add or remove space before a pointer star '*', if followed by a function<br/>prototype or function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_ptr_star_func=ignore|sp_before_ptr_star_func=add|sp_before_ptr_star_func=remove|sp_before_ptr_star_func=force|sp_before_ptr_star_func=not_defined
-ChoicesReadable="Ignore Sp Before Ptr Star Func|Add Sp Before Ptr Star Func|Remove Sp Before Ptr Star Func|Force Sp Before Ptr Star Func"
-ValueDefault=ignore
-
-[Sp Before Ptr Star Trailing]
-Category=1
-Description="<html>Add or remove space before a pointer star '*' in the trailing return of a<br/>function prototype or function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_ptr_star_trailing=ignore|sp_before_ptr_star_trailing=add|sp_before_ptr_star_trailing=remove|sp_before_ptr_star_trailing=force|sp_before_ptr_star_trailing=not_defined
-ChoicesReadable="Ignore Sp Before Ptr Star Trailing|Add Sp Before Ptr Star Trailing|Remove Sp Before Ptr Star Trailing|Force Sp Before Ptr Star Trailing"
-ValueDefault=ignore
-
-[Sp Before Byref]
-Category=1
-Description="<html>Add or remove space before a reference sign '&amp;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_byref=ignore|sp_before_byref=add|sp_before_byref=remove|sp_before_byref=force|sp_before_byref=not_defined
-ChoicesReadable="Ignore Sp Before Byref|Add Sp Before Byref|Remove Sp Before Byref|Force Sp Before Byref"
-ValueDefault=ignore
-
-[Sp Before Unnamed Byref]
-Category=1
-Description="<html>Add or remove space before a reference sign '&amp;' that isn't followed by a<br/>variable name. If set to ignore, sp_before_byref is used instead.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_unnamed_byref=ignore|sp_before_unnamed_byref=add|sp_before_unnamed_byref=remove|sp_before_unnamed_byref=force|sp_before_unnamed_byref=not_defined
-ChoicesReadable="Ignore Sp Before Unnamed Byref|Add Sp Before Unnamed Byref|Remove Sp Before Unnamed Byref|Force Sp Before Unnamed Byref"
-ValueDefault=ignore
-
-[Sp After Byref]
-Category=1
-Description="<html>Add or remove space after reference sign '&amp;', if followed by a word.<br/><br/>Overrides sp_type_func.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_byref=ignore|sp_after_byref=add|sp_after_byref=remove|sp_after_byref=force|sp_after_byref=not_defined
-ChoicesReadable="Ignore Sp After Byref|Add Sp After Byref|Remove Sp After Byref|Force Sp After Byref"
-ValueDefault=ignore
-
-[Sp After Byref Func]
-Category=1
-Description="<html>Add or remove space after a reference sign '&amp;', if followed by a function<br/>prototype or function definition.<br/><br/>Overrides sp_after_byref and sp_type_func.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_byref_func=ignore|sp_after_byref_func=add|sp_after_byref_func=remove|sp_after_byref_func=force|sp_after_byref_func=not_defined
-ChoicesReadable="Ignore Sp After Byref Func|Add Sp After Byref Func|Remove Sp After Byref Func|Force Sp After Byref Func"
-ValueDefault=ignore
-
-[Sp Before Byref Func]
-Category=1
-Description="<html>Add or remove space before a reference sign '&amp;', if followed by a function<br/>prototype or function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_byref_func=ignore|sp_before_byref_func=add|sp_before_byref_func=remove|sp_before_byref_func=force|sp_before_byref_func=not_defined
-ChoicesReadable="Ignore Sp Before Byref Func|Add Sp Before Byref Func|Remove Sp Before Byref Func|Force Sp Before Byref Func"
-ValueDefault=ignore
-
-[Sp Byref Paren]
-Category=1
-Description="<html>Add or remove space after a reference sign '&amp;', if followed by an open<br/>parenthesis, as in 'char&amp; (*)()'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_byref_paren=ignore|sp_byref_paren=add|sp_byref_paren=remove|sp_byref_paren=force|sp_byref_paren=not_defined
-ChoicesReadable="Ignore Sp Byref Paren|Add Sp Byref Paren|Remove Sp Byref Paren|Force Sp Byref Paren"
-ValueDefault=ignore
-
-[Sp After Type]
-Category=1
-Description="<html>Add or remove space between type and word. In cases where total removal of<br/>whitespace would be a syntax error, a value of 'remove' is treated the same<br/>as 'force'.<br/><br/>This also affects some other instances of space following a type that are<br/>not covered by other options; for example, between the return type and<br/>parenthesis of a function type template argument, between the type and<br/>parenthesis of an array parameter, or between 'decltype(...)' and the<br/>following word.<br/><br/>Default: force</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_type=ignore|sp_after_type=add|sp_after_type=remove|sp_after_type=force|sp_after_type=not_defined
-ChoicesReadable="Ignore Sp After Type|Add Sp After Type|Remove Sp After Type|Force Sp After Type"
-ValueDefault=force
-
-[Sp After Decltype]
-Category=1
-Description="<html>Add or remove space between 'decltype(...)' and word,<br/>brace or function call.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_decltype=ignore|sp_after_decltype=add|sp_after_decltype=remove|sp_after_decltype=force|sp_after_decltype=not_defined
-ChoicesReadable="Ignore Sp After Decltype|Add Sp After Decltype|Remove Sp After Decltype|Force Sp After Decltype"
-ValueDefault=ignore
-
-[Sp Before Template Paren]
-Category=1
-Description="<html>(D) Add or remove space before the parenthesis in the D constructs<br/>'template Foo(' and 'class Foo('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_template_paren=ignore|sp_before_template_paren=add|sp_before_template_paren=remove|sp_before_template_paren=force|sp_before_template_paren=not_defined
-ChoicesReadable="Ignore Sp Before Template Paren|Add Sp Before Template Paren|Remove Sp Before Template Paren|Force Sp Before Template Paren"
-ValueDefault=ignore
-
-[Sp Template Angle]
-Category=1
-Description="<html>Add or remove space between 'template' and '&lt;'.<br/>If set to ignore, sp_before_angle is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_template_angle=ignore|sp_template_angle=add|sp_template_angle=remove|sp_template_angle=force|sp_template_angle=not_defined
-ChoicesReadable="Ignore Sp Template Angle|Add Sp Template Angle|Remove Sp Template Angle|Force Sp Template Angle"
-ValueDefault=ignore
-
-[Sp Before Angle]
-Category=1
-Description="<html>Add or remove space before '&lt;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_angle=ignore|sp_before_angle=add|sp_before_angle=remove|sp_before_angle=force|sp_before_angle=not_defined
-ChoicesReadable="Ignore Sp Before Angle|Add Sp Before Angle|Remove Sp Before Angle|Force Sp Before Angle"
-ValueDefault=ignore
-
-[Sp Inside Angle]
-Category=1
-Description="<html>Add or remove space inside '&lt;' and '&gt;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_angle=ignore|sp_inside_angle=add|sp_inside_angle=remove|sp_inside_angle=force|sp_inside_angle=not_defined
-ChoicesReadable="Ignore Sp Inside Angle|Add Sp Inside Angle|Remove Sp Inside Angle|Force Sp Inside Angle"
-ValueDefault=ignore
-
-[Sp Inside Angle Empty]
-Category=1
-Description="<html>Add or remove space inside '&lt;&gt;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_angle_empty=ignore|sp_inside_angle_empty=add|sp_inside_angle_empty=remove|sp_inside_angle_empty=force|sp_inside_angle_empty=not_defined
-ChoicesReadable="Ignore Sp Inside Angle Empty|Add Sp Inside Angle Empty|Remove Sp Inside Angle Empty|Force Sp Inside Angle Empty"
-ValueDefault=ignore
-
-[Sp Angle Colon]
-Category=1
-Description="<html>Add or remove space between '&gt;' and ':'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_angle_colon=ignore|sp_angle_colon=add|sp_angle_colon=remove|sp_angle_colon=force|sp_angle_colon=not_defined
-ChoicesReadable="Ignore Sp Angle Colon|Add Sp Angle Colon|Remove Sp Angle Colon|Force Sp Angle Colon"
-ValueDefault=ignore
-
-[Sp After Angle]
-Category=1
-Description="<html>Add or remove space after '&gt;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_angle=ignore|sp_after_angle=add|sp_after_angle=remove|sp_after_angle=force|sp_after_angle=not_defined
-ChoicesReadable="Ignore Sp After Angle|Add Sp After Angle|Remove Sp After Angle|Force Sp After Angle"
-ValueDefault=ignore
-
-[Sp Angle Paren]
-Category=1
-Description="<html>Add or remove space between '&gt;' and '(' as found in 'new List&lt;byte&gt;(foo);'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_angle_paren=ignore|sp_angle_paren=add|sp_angle_paren=remove|sp_angle_paren=force|sp_angle_paren=not_defined
-ChoicesReadable="Ignore Sp Angle Paren|Add Sp Angle Paren|Remove Sp Angle Paren|Force Sp Angle Paren"
-ValueDefault=ignore
-
-[Sp Angle Paren Empty]
-Category=1
-Description="<html>Add or remove space between '&gt;' and '()' as found in 'new List&lt;byte&gt;();'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_angle_paren_empty=ignore|sp_angle_paren_empty=add|sp_angle_paren_empty=remove|sp_angle_paren_empty=force|sp_angle_paren_empty=not_defined
-ChoicesReadable="Ignore Sp Angle Paren Empty|Add Sp Angle Paren Empty|Remove Sp Angle Paren Empty|Force Sp Angle Paren Empty"
-ValueDefault=ignore
-
-[Sp Angle Word]
-Category=1
-Description="<html>Add or remove space between '&gt;' and a word as in 'List&lt;byte&gt; m;' or<br/>'template &lt;typename T&gt; static ...'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_angle_word=ignore|sp_angle_word=add|sp_angle_word=remove|sp_angle_word=force|sp_angle_word=not_defined
-ChoicesReadable="Ignore Sp Angle Word|Add Sp Angle Word|Remove Sp Angle Word|Force Sp Angle Word"
-ValueDefault=ignore
-
-[Sp Angle Shift]
-Category=1
-Description="<html>Add or remove space between '&gt;' and '&gt;' in '&gt;&gt;' (template stuff).<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_angle_shift=ignore|sp_angle_shift=add|sp_angle_shift=remove|sp_angle_shift=force|sp_angle_shift=not_defined
-ChoicesReadable="Ignore Sp Angle Shift|Add Sp Angle Shift|Remove Sp Angle Shift|Force Sp Angle Shift"
-ValueDefault=add
-
-[Sp Permit Cpp11 Shift]
-Category=1
-Description="<html>(C++11) Permit removal of the space between '&gt;&gt;' in 'foo&lt;bar&lt;int&gt; &gt;'. Note<br/>that sp_angle_shift cannot remove the space without this option.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=sp_permit_cpp11_shift=true|sp_permit_cpp11_shift=false
-ValueDefault=false
-
-[Sp Before Sparen]
-Category=1
-Description="<html>Add or remove space before '(' of control statements ('if', 'for', 'switch',<br/>'while', etc.).</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_sparen=ignore|sp_before_sparen=add|sp_before_sparen=remove|sp_before_sparen=force|sp_before_sparen=not_defined
-ChoicesReadable="Ignore Sp Before Sparen|Add Sp Before Sparen|Remove Sp Before Sparen|Force Sp Before Sparen"
-ValueDefault=ignore
-
-[Sp Inside Sparen]
-Category=1
-Description="<html>Add or remove space inside '(' and ')' of control statements other than<br/>'for'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_sparen=ignore|sp_inside_sparen=add|sp_inside_sparen=remove|sp_inside_sparen=force|sp_inside_sparen=not_defined
-ChoicesReadable="Ignore Sp Inside Sparen|Add Sp Inside Sparen|Remove Sp Inside Sparen|Force Sp Inside Sparen"
-ValueDefault=ignore
-
-[Sp Inside Sparen Open]
-Category=1
-Description="<html>Add or remove space after '(' of control statements other than 'for'.<br/><br/>Overrides sp_inside_sparen.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_sparen_open=ignore|sp_inside_sparen_open=add|sp_inside_sparen_open=remove|sp_inside_sparen_open=force|sp_inside_sparen_open=not_defined
-ChoicesReadable="Ignore Sp Inside Sparen Open|Add Sp Inside Sparen Open|Remove Sp Inside Sparen Open|Force Sp Inside Sparen Open"
-ValueDefault=ignore
-
-[Sp Inside Sparen Close]
-Category=1
-Description="<html>Add or remove space before ')' of control statements other than 'for'.<br/><br/>Overrides sp_inside_sparen.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_sparen_close=ignore|sp_inside_sparen_close=add|sp_inside_sparen_close=remove|sp_inside_sparen_close=force|sp_inside_sparen_close=not_defined
-ChoicesReadable="Ignore Sp Inside Sparen Close|Add Sp Inside Sparen Close|Remove Sp Inside Sparen Close|Force Sp Inside Sparen Close"
-ValueDefault=ignore
-
-[Sp Inside For]
-Category=1
-Description="<html>Add or remove space inside '(' and ')' of 'for' statements.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_for=ignore|sp_inside_for=add|sp_inside_for=remove|sp_inside_for=force|sp_inside_for=not_defined
-ChoicesReadable="Ignore Sp Inside For|Add Sp Inside For|Remove Sp Inside For|Force Sp Inside For"
-ValueDefault=ignore
-
-[Sp Inside For Open]
-Category=1
-Description="<html>Add or remove space after '(' of 'for' statements.<br/><br/>Overrides sp_inside_for.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_for_open=ignore|sp_inside_for_open=add|sp_inside_for_open=remove|sp_inside_for_open=force|sp_inside_for_open=not_defined
-ChoicesReadable="Ignore Sp Inside For Open|Add Sp Inside For Open|Remove Sp Inside For Open|Force Sp Inside For Open"
-ValueDefault=ignore
-
-[Sp Inside For Close]
-Category=1
-Description="<html>Add or remove space before ')' of 'for' statements.<br/><br/>Overrides sp_inside_for.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_for_close=ignore|sp_inside_for_close=add|sp_inside_for_close=remove|sp_inside_for_close=force|sp_inside_for_close=not_defined
-ChoicesReadable="Ignore Sp Inside For Close|Add Sp Inside For Close|Remove Sp Inside For Close|Force Sp Inside For Close"
-ValueDefault=ignore
-
-[Sp Sparen Paren]
-Category=1
-Description="<html>Add or remove space between '((' or '))' of control statements.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_sparen_paren=ignore|sp_sparen_paren=add|sp_sparen_paren=remove|sp_sparen_paren=force|sp_sparen_paren=not_defined
-ChoicesReadable="Ignore Sp Sparen Paren|Add Sp Sparen Paren|Remove Sp Sparen Paren|Force Sp Sparen Paren"
-ValueDefault=ignore
-
-[Sp After Sparen]
-Category=1
-Description="<html>Add or remove space after ')' of control statements.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_sparen=ignore|sp_after_sparen=add|sp_after_sparen=remove|sp_after_sparen=force|sp_after_sparen=not_defined
-ChoicesReadable="Ignore Sp After Sparen|Add Sp After Sparen|Remove Sp After Sparen|Force Sp After Sparen"
-ValueDefault=ignore
-
-[Sp Sparen Brace]
-Category=1
-Description="<html>Add or remove space between ')' and '{' of control statements.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_sparen_brace=ignore|sp_sparen_brace=add|sp_sparen_brace=remove|sp_sparen_brace=force|sp_sparen_brace=not_defined
-ChoicesReadable="Ignore Sp Sparen Brace|Add Sp Sparen Brace|Remove Sp Sparen Brace|Force Sp Sparen Brace"
-ValueDefault=ignore
-
-[Sp Do Brace Open]
-Category=1
-Description="<html>Add or remove space between 'do' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_do_brace_open=ignore|sp_do_brace_open=add|sp_do_brace_open=remove|sp_do_brace_open=force|sp_do_brace_open=not_defined
-ChoicesReadable="Ignore Sp Do Brace Open|Add Sp Do Brace Open|Remove Sp Do Brace Open|Force Sp Do Brace Open"
-ValueDefault=ignore
-
-[Sp Brace Close While]
-Category=1
-Description="<html>Add or remove space between '}' and 'while'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_brace_close_while=ignore|sp_brace_close_while=add|sp_brace_close_while=remove|sp_brace_close_while=force|sp_brace_close_while=not_defined
-ChoicesReadable="Ignore Sp Brace Close While|Add Sp Brace Close While|Remove Sp Brace Close While|Force Sp Brace Close While"
-ValueDefault=ignore
-
-[Sp While Paren Open]
-Category=1
-Description="<html>Add or remove space between 'while' and '('. Overrides sp_before_sparen.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_while_paren_open=ignore|sp_while_paren_open=add|sp_while_paren_open=remove|sp_while_paren_open=force|sp_while_paren_open=not_defined
-ChoicesReadable="Ignore Sp While Paren Open|Add Sp While Paren Open|Remove Sp While Paren Open|Force Sp While Paren Open"
-ValueDefault=ignore
-
-[Sp Invariant Paren]
-Category=1
-Description="<html>(D) Add or remove space between 'invariant' and '('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_invariant_paren=ignore|sp_invariant_paren=add|sp_invariant_paren=remove|sp_invariant_paren=force|sp_invariant_paren=not_defined
-ChoicesReadable="Ignore Sp Invariant Paren|Add Sp Invariant Paren|Remove Sp Invariant Paren|Force Sp Invariant Paren"
-ValueDefault=ignore
-
-[Sp After Invariant Paren]
-Category=1
-Description="<html>(D) Add or remove space after the ')' in 'invariant (C) c'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_invariant_paren=ignore|sp_after_invariant_paren=add|sp_after_invariant_paren=remove|sp_after_invariant_paren=force|sp_after_invariant_paren=not_defined
-ChoicesReadable="Ignore Sp After Invariant Paren|Add Sp After Invariant Paren|Remove Sp After Invariant Paren|Force Sp After Invariant Paren"
-ValueDefault=ignore
-
-[Sp Special Semi]
-Category=1
-Description="<html>Add or remove space before empty statement ';' on 'if', 'for' and 'while'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_special_semi=ignore|sp_special_semi=add|sp_special_semi=remove|sp_special_semi=force|sp_special_semi=not_defined
-ChoicesReadable="Ignore Sp Special Semi|Add Sp Special Semi|Remove Sp Special Semi|Force Sp Special Semi"
-ValueDefault=ignore
-
-[Sp Before Semi]
-Category=1
-Description="<html>Add or remove space before ';'.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_semi=ignore|sp_before_semi=add|sp_before_semi=remove|sp_before_semi=force|sp_before_semi=not_defined
-ChoicesReadable="Ignore Sp Before Semi|Add Sp Before Semi|Remove Sp Before Semi|Force Sp Before Semi"
-ValueDefault=remove
-
-[Sp Before Semi For]
-Category=1
-Description="<html>Add or remove space before ';' in non-empty 'for' statements.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_semi_for=ignore|sp_before_semi_for=add|sp_before_semi_for=remove|sp_before_semi_for=force|sp_before_semi_for=not_defined
-ChoicesReadable="Ignore Sp Before Semi For|Add Sp Before Semi For|Remove Sp Before Semi For|Force Sp Before Semi For"
-ValueDefault=ignore
-
-[Sp Before Semi For Empty]
-Category=1
-Description="<html>Add or remove space before a semicolon of an empty left part of a for<br/>statement, as in 'for ( &lt;here&gt; ; ; )'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_semi_for_empty=ignore|sp_before_semi_for_empty=add|sp_before_semi_for_empty=remove|sp_before_semi_for_empty=force|sp_before_semi_for_empty=not_defined
-ChoicesReadable="Ignore Sp Before Semi For Empty|Add Sp Before Semi For Empty|Remove Sp Before Semi For Empty|Force Sp Before Semi For Empty"
-ValueDefault=ignore
-
-[Sp Between Semi For Empty]
-Category=1
-Description="<html>Add or remove space between the semicolons of an empty middle part of a for<br/>statement, as in 'for ( ; &lt;here&gt; ; )'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_between_semi_for_empty=ignore|sp_between_semi_for_empty=add|sp_between_semi_for_empty=remove|sp_between_semi_for_empty=force|sp_between_semi_for_empty=not_defined
-ChoicesReadable="Ignore Sp Between Semi For Empty|Add Sp Between Semi For Empty|Remove Sp Between Semi For Empty|Force Sp Between Semi For Empty"
-ValueDefault=ignore
-
-[Sp After Semi]
-Category=1
-Description="<html>Add or remove space after ';', except when followed by a comment.<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_semi=ignore|sp_after_semi=add|sp_after_semi=remove|sp_after_semi=force|sp_after_semi=not_defined
-ChoicesReadable="Ignore Sp After Semi|Add Sp After Semi|Remove Sp After Semi|Force Sp After Semi"
-ValueDefault=add
-
-[Sp After Semi For]
-Category=1
-Description="<html>Add or remove space after ';' in non-empty 'for' statements.<br/><br/>Default: force</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_semi_for=ignore|sp_after_semi_for=add|sp_after_semi_for=remove|sp_after_semi_for=force|sp_after_semi_for=not_defined
-ChoicesReadable="Ignore Sp After Semi For|Add Sp After Semi For|Remove Sp After Semi For|Force Sp After Semi For"
-ValueDefault=force
-
-[Sp After Semi For Empty]
-Category=1
-Description="<html>Add or remove space after the final semicolon of an empty part of a for<br/>statement, as in 'for ( ; ; &lt;here&gt; )'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_semi_for_empty=ignore|sp_after_semi_for_empty=add|sp_after_semi_for_empty=remove|sp_after_semi_for_empty=force|sp_after_semi_for_empty=not_defined
-ChoicesReadable="Ignore Sp After Semi For Empty|Add Sp After Semi For Empty|Remove Sp After Semi For Empty|Force Sp After Semi For Empty"
-ValueDefault=ignore
-
-[Sp Before Square]
-Category=1
-Description="<html>Add or remove space before '[' (except '[]').</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_square=ignore|sp_before_square=add|sp_before_square=remove|sp_before_square=force|sp_before_square=not_defined
-ChoicesReadable="Ignore Sp Before Square|Add Sp Before Square|Remove Sp Before Square|Force Sp Before Square"
-ValueDefault=ignore
-
-[Sp Before Vardef Square]
-Category=1
-Description="<html>Add or remove space before '[' for a variable definition.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_vardef_square=ignore|sp_before_vardef_square=add|sp_before_vardef_square=remove|sp_before_vardef_square=force|sp_before_vardef_square=not_defined
-ChoicesReadable="Ignore Sp Before Vardef Square|Add Sp Before Vardef Square|Remove Sp Before Vardef Square|Force Sp Before Vardef Square"
-ValueDefault=remove
-
-[Sp Before Square Asm Block]
-Category=1
-Description="<html>Add or remove space before '[' for asm block.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_square_asm_block=ignore|sp_before_square_asm_block=add|sp_before_square_asm_block=remove|sp_before_square_asm_block=force|sp_before_square_asm_block=not_defined
-ChoicesReadable="Ignore Sp Before Square Asm Block|Add Sp Before Square Asm Block|Remove Sp Before Square Asm Block|Force Sp Before Square Asm Block"
-ValueDefault=ignore
-
-[Sp Before Squares]
-Category=1
-Description="<html>Add or remove space before '[]'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_squares=ignore|sp_before_squares=add|sp_before_squares=remove|sp_before_squares=force|sp_before_squares=not_defined
-ChoicesReadable="Ignore Sp Before Squares|Add Sp Before Squares|Remove Sp Before Squares|Force Sp Before Squares"
-ValueDefault=ignore
-
-[Sp Cpp Before Struct Binding]
-Category=1
-Description="<html>Add or remove space before C++17 structured bindings.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_before_struct_binding=ignore|sp_cpp_before_struct_binding=add|sp_cpp_before_struct_binding=remove|sp_cpp_before_struct_binding=force|sp_cpp_before_struct_binding=not_defined
-ChoicesReadable="Ignore Sp Cpp Before Struct Binding|Add Sp Cpp Before Struct Binding|Remove Sp Cpp Before Struct Binding|Force Sp Cpp Before Struct Binding"
-ValueDefault=ignore
-
-[Sp Inside Square]
-Category=1
-Description="<html>Add or remove space inside a non-empty '[' and ']'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_square=ignore|sp_inside_square=add|sp_inside_square=remove|sp_inside_square=force|sp_inside_square=not_defined
-ChoicesReadable="Ignore Sp Inside Square|Add Sp Inside Square|Remove Sp Inside Square|Force Sp Inside Square"
-ValueDefault=ignore
-
-[Sp Inside Square Empty]
-Category=1
-Description="<html>Add or remove space inside '[]'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_square_empty=ignore|sp_inside_square_empty=add|sp_inside_square_empty=remove|sp_inside_square_empty=force|sp_inside_square_empty=not_defined
-ChoicesReadable="Ignore Sp Inside Square Empty|Add Sp Inside Square Empty|Remove Sp Inside Square Empty|Force Sp Inside Square Empty"
-ValueDefault=ignore
-
-[Sp Inside Square Oc Array]
-Category=1
-Description="<html>(OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and<br/>']'. If set to ignore, sp_inside_square is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_square_oc_array=ignore|sp_inside_square_oc_array=add|sp_inside_square_oc_array=remove|sp_inside_square_oc_array=force|sp_inside_square_oc_array=not_defined
-ChoicesReadable="Ignore Sp Inside Square Oc Array|Add Sp Inside Square Oc Array|Remove Sp Inside Square Oc Array|Force Sp Inside Square Oc Array"
-ValueDefault=ignore
-
-[Sp After Comma]
-Category=1
-Description="<html>Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_comma=ignore|sp_after_comma=add|sp_after_comma=remove|sp_after_comma=force|sp_after_comma=not_defined
-ChoicesReadable="Ignore Sp After Comma|Add Sp After Comma|Remove Sp After Comma|Force Sp After Comma"
-ValueDefault=ignore
-
-[Sp Before Comma]
-Category=1
-Description="<html>Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_comma=ignore|sp_before_comma=add|sp_before_comma=remove|sp_before_comma=force|sp_before_comma=not_defined
-ChoicesReadable="Ignore Sp Before Comma|Add Sp Before Comma|Remove Sp Before Comma|Force Sp Before Comma"
-ValueDefault=remove
-
-[Sp After Mdatype Commas]
-Category=1
-Description="<html>(C#, Vala) Add or remove space between ',' and ']' in multidimensional array type<br/>like 'int[,,]'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_mdatype_commas=ignore|sp_after_mdatype_commas=add|sp_after_mdatype_commas=remove|sp_after_mdatype_commas=force|sp_after_mdatype_commas=not_defined
-ChoicesReadable="Ignore Sp After Mdatype Commas|Add Sp After Mdatype Commas|Remove Sp After Mdatype Commas|Force Sp After Mdatype Commas"
-ValueDefault=ignore
-
-[Sp Before Mdatype Commas]
-Category=1
-Description="<html>(C#, Vala) Add or remove space between '[' and ',' in multidimensional array type<br/>like 'int[,,]'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_mdatype_commas=ignore|sp_before_mdatype_commas=add|sp_before_mdatype_commas=remove|sp_before_mdatype_commas=force|sp_before_mdatype_commas=not_defined
-ChoicesReadable="Ignore Sp Before Mdatype Commas|Add Sp Before Mdatype Commas|Remove Sp Before Mdatype Commas|Force Sp Before Mdatype Commas"
-ValueDefault=ignore
-
-[Sp Between Mdatype Commas]
-Category=1
-Description="<html>(C#, Vala) Add or remove space between ',' in multidimensional array type<br/>like 'int[,,]'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_between_mdatype_commas=ignore|sp_between_mdatype_commas=add|sp_between_mdatype_commas=remove|sp_between_mdatype_commas=force|sp_between_mdatype_commas=not_defined
-ChoicesReadable="Ignore Sp Between Mdatype Commas|Add Sp Between Mdatype Commas|Remove Sp Between Mdatype Commas|Force Sp Between Mdatype Commas"
-ValueDefault=ignore
-
-[Sp Paren Comma]
-Category=1
-Description="<html>Add or remove space between an open parenthesis and comma,<br/>i.e. '(,' vs. '( ,'.<br/><br/>Default: force</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_paren_comma=ignore|sp_paren_comma=add|sp_paren_comma=remove|sp_paren_comma=force|sp_paren_comma=not_defined
-ChoicesReadable="Ignore Sp Paren Comma|Add Sp Paren Comma|Remove Sp Paren Comma|Force Sp Paren Comma"
-ValueDefault=force
-
-[Sp Type Colon]
-Category=1
-Description="<html>Add or remove space between a type and ':'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_type_colon=ignore|sp_type_colon=add|sp_type_colon=remove|sp_type_colon=force|sp_type_colon=not_defined
-ChoicesReadable="Ignore Sp Type Colon|Add Sp Type Colon|Remove Sp Type Colon|Force Sp Type Colon"
-ValueDefault=ignore
-
-[Sp After Ellipsis]
-Category=1
-Description="<html>Add or remove space after the variadic '...' when preceded by a<br/>non-punctuator.<br/>The value REMOVE will be overridden with FORCE</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_ellipsis=ignore|sp_after_ellipsis=add|sp_after_ellipsis=remove|sp_after_ellipsis=force|sp_after_ellipsis=not_defined
-ChoicesReadable="Ignore Sp After Ellipsis|Add Sp After Ellipsis|Remove Sp After Ellipsis|Force Sp After Ellipsis"
-ValueDefault=ignore
-
-[Sp Before Ellipsis]
-Category=1
-Description="<html>Add or remove space before the variadic '...' when preceded by a<br/>non-punctuator.<br/>The value REMOVE will be overridden with FORCE</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_ellipsis=ignore|sp_before_ellipsis=add|sp_before_ellipsis=remove|sp_before_ellipsis=force|sp_before_ellipsis=not_defined
-ChoicesReadable="Ignore Sp Before Ellipsis|Add Sp Before Ellipsis|Remove Sp Before Ellipsis|Force Sp Before Ellipsis"
-ValueDefault=ignore
-
-[Sp Type Ellipsis]
-Category=1
-Description="<html>Add or remove space between a type and '...'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_type_ellipsis=ignore|sp_type_ellipsis=add|sp_type_ellipsis=remove|sp_type_ellipsis=force|sp_type_ellipsis=not_defined
-ChoicesReadable="Ignore Sp Type Ellipsis|Add Sp Type Ellipsis|Remove Sp Type Ellipsis|Force Sp Type Ellipsis"
-ValueDefault=ignore
-
-[Sp Ptr Type Ellipsis]
-Category=1
-Description="<html>Add or remove space between a '*' and '...'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_ptr_type_ellipsis=ignore|sp_ptr_type_ellipsis=add|sp_ptr_type_ellipsis=remove|sp_ptr_type_ellipsis=force|sp_ptr_type_ellipsis=not_defined
-ChoicesReadable="Ignore Sp Ptr Type Ellipsis|Add Sp Ptr Type Ellipsis|Remove Sp Ptr Type Ellipsis|Force Sp Ptr Type Ellipsis"
-ValueDefault=ignore
-
-[Sp Paren Ellipsis]
-Category=1
-Description="<html>Add or remove space between ')' and '...'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_paren_ellipsis=ignore|sp_paren_ellipsis=add|sp_paren_ellipsis=remove|sp_paren_ellipsis=force|sp_paren_ellipsis=not_defined
-ChoicesReadable="Ignore Sp Paren Ellipsis|Add Sp Paren Ellipsis|Remove Sp Paren Ellipsis|Force Sp Paren Ellipsis"
-ValueDefault=ignore
-
-[Sp Byref Ellipsis]
-Category=1
-Description="<html>Add or remove space between '&amp;&amp;' and '...'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_byref_ellipsis=ignore|sp_byref_ellipsis=add|sp_byref_ellipsis=remove|sp_byref_ellipsis=force|sp_byref_ellipsis=not_defined
-ChoicesReadable="Ignore Sp Byref Ellipsis|Add Sp Byref Ellipsis|Remove Sp Byref Ellipsis|Force Sp Byref Ellipsis"
-ValueDefault=ignore
-
-[Sp Paren Qualifier]
-Category=1
-Description="<html>Add or remove space between ')' and a qualifier such as 'const'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_paren_qualifier=ignore|sp_paren_qualifier=add|sp_paren_qualifier=remove|sp_paren_qualifier=force|sp_paren_qualifier=not_defined
-ChoicesReadable="Ignore Sp Paren Qualifier|Add Sp Paren Qualifier|Remove Sp Paren Qualifier|Force Sp Paren Qualifier"
-ValueDefault=ignore
-
-[Sp Paren Noexcept]
-Category=1
-Description="<html>Add or remove space between ')' and 'noexcept'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_paren_noexcept=ignore|sp_paren_noexcept=add|sp_paren_noexcept=remove|sp_paren_noexcept=force|sp_paren_noexcept=not_defined
-ChoicesReadable="Ignore Sp Paren Noexcept|Add Sp Paren Noexcept|Remove Sp Paren Noexcept|Force Sp Paren Noexcept"
-ValueDefault=ignore
-
-[Sp After Class Colon]
-Category=1
-Description="<html>Add or remove space after class ':'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_class_colon=ignore|sp_after_class_colon=add|sp_after_class_colon=remove|sp_after_class_colon=force|sp_after_class_colon=not_defined
-ChoicesReadable="Ignore Sp After Class Colon|Add Sp After Class Colon|Remove Sp After Class Colon|Force Sp After Class Colon"
-ValueDefault=ignore
-
-[Sp Before Class Colon]
-Category=1
-Description="<html>Add or remove space before class ':'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_class_colon=ignore|sp_before_class_colon=add|sp_before_class_colon=remove|sp_before_class_colon=force|sp_before_class_colon=not_defined
-ChoicesReadable="Ignore Sp Before Class Colon|Add Sp Before Class Colon|Remove Sp Before Class Colon|Force Sp Before Class Colon"
-ValueDefault=ignore
-
-[Sp After Constr Colon]
-Category=1
-Description="<html>Add or remove space after class constructor ':'.<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_constr_colon=ignore|sp_after_constr_colon=add|sp_after_constr_colon=remove|sp_after_constr_colon=force|sp_after_constr_colon=not_defined
-ChoicesReadable="Ignore Sp After Constr Colon|Add Sp After Constr Colon|Remove Sp After Constr Colon|Force Sp After Constr Colon"
-ValueDefault=add
-
-[Sp Before Constr Colon]
-Category=1
-Description="<html>Add or remove space before class constructor ':'.<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_constr_colon=ignore|sp_before_constr_colon=add|sp_before_constr_colon=remove|sp_before_constr_colon=force|sp_before_constr_colon=not_defined
-ChoicesReadable="Ignore Sp Before Constr Colon|Add Sp Before Constr Colon|Remove Sp Before Constr Colon|Force Sp Before Constr Colon"
-ValueDefault=add
-
-[Sp Before Case Colon]
-Category=1
-Description="<html>Add or remove space before case ':'.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_case_colon=ignore|sp_before_case_colon=add|sp_before_case_colon=remove|sp_before_case_colon=force|sp_before_case_colon=not_defined
-ChoicesReadable="Ignore Sp Before Case Colon|Add Sp Before Case Colon|Remove Sp Before Case Colon|Force Sp Before Case Colon"
-ValueDefault=remove
-
-[Sp After Operator]
-Category=1
-Description="<html>Add or remove space between 'operator' and operator sign.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_operator=ignore|sp_after_operator=add|sp_after_operator=remove|sp_after_operator=force|sp_after_operator=not_defined
-ChoicesReadable="Ignore Sp After Operator|Add Sp After Operator|Remove Sp After Operator|Force Sp After Operator"
-ValueDefault=ignore
-
-[Sp After Operator Sym]
-Category=1
-Description="<html>Add or remove space between the operator symbol and the open parenthesis, as<br/>in 'operator ++('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_operator_sym=ignore|sp_after_operator_sym=add|sp_after_operator_sym=remove|sp_after_operator_sym=force|sp_after_operator_sym=not_defined
-ChoicesReadable="Ignore Sp After Operator Sym|Add Sp After Operator Sym|Remove Sp After Operator Sym|Force Sp After Operator Sym"
-ValueDefault=ignore
-
-[Sp After Operator Sym Empty]
-Category=1
-Description="<html>Overrides sp_after_operator_sym when the operator has no arguments, as in<br/>'operator *()'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_operator_sym_empty=ignore|sp_after_operator_sym_empty=add|sp_after_operator_sym_empty=remove|sp_after_operator_sym_empty=force|sp_after_operator_sym_empty=not_defined
-ChoicesReadable="Ignore Sp After Operator Sym Empty|Add Sp After Operator Sym Empty|Remove Sp After Operator Sym Empty|Force Sp After Operator Sym Empty"
-ValueDefault=ignore
-
-[Sp After Cast]
-Category=1
-Description="<html>Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or<br/>'(int)a' vs. '(int) a'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_cast=ignore|sp_after_cast=add|sp_after_cast=remove|sp_after_cast=force|sp_after_cast=not_defined
-ChoicesReadable="Ignore Sp After Cast|Add Sp After Cast|Remove Sp After Cast|Force Sp After Cast"
-ValueDefault=ignore
-
-[Sp Inside Paren Cast]
-Category=1
-Description="<html>Add or remove spaces inside cast parentheses.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_paren_cast=ignore|sp_inside_paren_cast=add|sp_inside_paren_cast=remove|sp_inside_paren_cast=force|sp_inside_paren_cast=not_defined
-ChoicesReadable="Ignore Sp Inside Paren Cast|Add Sp Inside Paren Cast|Remove Sp Inside Paren Cast|Force Sp Inside Paren Cast"
-ValueDefault=ignore
-
-[Sp Cpp Cast Paren]
-Category=1
-Description="<html>Add or remove space between the type and open parenthesis in a C++ cast,<br/>i.e. 'int(exp)' vs. 'int (exp)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_cast_paren=ignore|sp_cpp_cast_paren=add|sp_cpp_cast_paren=remove|sp_cpp_cast_paren=force|sp_cpp_cast_paren=not_defined
-ChoicesReadable="Ignore Sp Cpp Cast Paren|Add Sp Cpp Cast Paren|Remove Sp Cpp Cast Paren|Force Sp Cpp Cast Paren"
-ValueDefault=ignore
-
-[Sp Sizeof Paren]
-Category=1
-Description="<html>Add or remove space between 'sizeof' and '('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_sizeof_paren=ignore|sp_sizeof_paren=add|sp_sizeof_paren=remove|sp_sizeof_paren=force|sp_sizeof_paren=not_defined
-ChoicesReadable="Ignore Sp Sizeof Paren|Add Sp Sizeof Paren|Remove Sp Sizeof Paren|Force Sp Sizeof Paren"
-ValueDefault=ignore
-
-[Sp Sizeof Ellipsis]
-Category=1
-Description="<html>Add or remove space between 'sizeof' and '...'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_sizeof_ellipsis=ignore|sp_sizeof_ellipsis=add|sp_sizeof_ellipsis=remove|sp_sizeof_ellipsis=force|sp_sizeof_ellipsis=not_defined
-ChoicesReadable="Ignore Sp Sizeof Ellipsis|Add Sp Sizeof Ellipsis|Remove Sp Sizeof Ellipsis|Force Sp Sizeof Ellipsis"
-ValueDefault=ignore
-
-[Sp Sizeof Ellipsis Paren]
-Category=1
-Description="<html>Add or remove space between 'sizeof...' and '('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_sizeof_ellipsis_paren=ignore|sp_sizeof_ellipsis_paren=add|sp_sizeof_ellipsis_paren=remove|sp_sizeof_ellipsis_paren=force|sp_sizeof_ellipsis_paren=not_defined
-ChoicesReadable="Ignore Sp Sizeof Ellipsis Paren|Add Sp Sizeof Ellipsis Paren|Remove Sp Sizeof Ellipsis Paren|Force Sp Sizeof Ellipsis Paren"
-ValueDefault=ignore
-
-[Sp Ellipsis Parameter Pack]
-Category=1
-Description="<html>Add or remove space between '...' and a parameter pack.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_ellipsis_parameter_pack=ignore|sp_ellipsis_parameter_pack=add|sp_ellipsis_parameter_pack=remove|sp_ellipsis_parameter_pack=force|sp_ellipsis_parameter_pack=not_defined
-ChoicesReadable="Ignore Sp Ellipsis Parameter Pack|Add Sp Ellipsis Parameter Pack|Remove Sp Ellipsis Parameter Pack|Force Sp Ellipsis Parameter Pack"
-ValueDefault=ignore
-
-[Sp Parameter Pack Ellipsis]
-Category=1
-Description="<html>Add or remove space between a parameter pack and '...'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_parameter_pack_ellipsis=ignore|sp_parameter_pack_ellipsis=add|sp_parameter_pack_ellipsis=remove|sp_parameter_pack_ellipsis=force|sp_parameter_pack_ellipsis=not_defined
-ChoicesReadable="Ignore Sp Parameter Pack Ellipsis|Add Sp Parameter Pack Ellipsis|Remove Sp Parameter Pack Ellipsis|Force Sp Parameter Pack Ellipsis"
-ValueDefault=ignore
-
-[Sp Decltype Paren]
-Category=1
-Description="<html>Add or remove space between 'decltype' and '('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_decltype_paren=ignore|sp_decltype_paren=add|sp_decltype_paren=remove|sp_decltype_paren=force|sp_decltype_paren=not_defined
-ChoicesReadable="Ignore Sp Decltype Paren|Add Sp Decltype Paren|Remove Sp Decltype Paren|Force Sp Decltype Paren"
-ValueDefault=ignore
-
-[Sp After Tag]
-Category=1
-Description="<html>(Pawn) Add or remove space after the tag keyword.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_tag=ignore|sp_after_tag=add|sp_after_tag=remove|sp_after_tag=force|sp_after_tag=not_defined
-ChoicesReadable="Ignore Sp After Tag|Add Sp After Tag|Remove Sp After Tag|Force Sp After Tag"
-ValueDefault=ignore
-
-[Sp Inside Braces Enum]
-Category=1
-Description="<html>Add or remove space inside enum '{' and '}'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_braces_enum=ignore|sp_inside_braces_enum=add|sp_inside_braces_enum=remove|sp_inside_braces_enum=force|sp_inside_braces_enum=not_defined
-ChoicesReadable="Ignore Sp Inside Braces Enum|Add Sp Inside Braces Enum|Remove Sp Inside Braces Enum|Force Sp Inside Braces Enum"
-ValueDefault=ignore
-
-[Sp Inside Braces Struct]
-Category=1
-Description="<html>Add or remove space inside struct/union '{' and '}'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_braces_struct=ignore|sp_inside_braces_struct=add|sp_inside_braces_struct=remove|sp_inside_braces_struct=force|sp_inside_braces_struct=not_defined
-ChoicesReadable="Ignore Sp Inside Braces Struct|Add Sp Inside Braces Struct|Remove Sp Inside Braces Struct|Force Sp Inside Braces Struct"
-ValueDefault=ignore
-
-[Sp Inside Braces Oc Dict]
-Category=1
-Description="<html>(OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_braces_oc_dict=ignore|sp_inside_braces_oc_dict=add|sp_inside_braces_oc_dict=remove|sp_inside_braces_oc_dict=force|sp_inside_braces_oc_dict=not_defined
-ChoicesReadable="Ignore Sp Inside Braces Oc Dict|Add Sp Inside Braces Oc Dict|Remove Sp Inside Braces Oc Dict|Force Sp Inside Braces Oc Dict"
-ValueDefault=ignore
-
-[Sp After Type Brace Init Lst Open]
-Category=1
-Description="<html>Add or remove space after open brace in an unnamed temporary<br/>direct-list-initialization<br/>if statement is a brace_init_lst<br/>works only if sp_brace_brace is set to ignore.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_type_brace_init_lst_open=ignore|sp_after_type_brace_init_lst_open=add|sp_after_type_brace_init_lst_open=remove|sp_after_type_brace_init_lst_open=force|sp_after_type_brace_init_lst_open=not_defined
-ChoicesReadable="Ignore Sp After Type Brace Init Lst Open|Add Sp After Type Brace Init Lst Open|Remove Sp After Type Brace Init Lst Open|Force Sp After Type Brace Init Lst Open"
-ValueDefault=ignore
-
-[Sp Before Type Brace Init Lst Close]
-Category=1
-Description="<html>Add or remove space before close brace in an unnamed temporary<br/>direct-list-initialization<br/>if statement is a brace_init_lst<br/>works only if sp_brace_brace is set to ignore.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_type_brace_init_lst_close=ignore|sp_before_type_brace_init_lst_close=add|sp_before_type_brace_init_lst_close=remove|sp_before_type_brace_init_lst_close=force|sp_before_type_brace_init_lst_close=not_defined
-ChoicesReadable="Ignore Sp Before Type Brace Init Lst Close|Add Sp Before Type Brace Init Lst Close|Remove Sp Before Type Brace Init Lst Close|Force Sp Before Type Brace Init Lst Close"
-ValueDefault=ignore
-
-[Sp Inside Type Brace Init Lst]
-Category=1
-Description="<html>Add or remove space inside an unnamed temporary direct-list-initialization<br/>if statement is a brace_init_lst<br/>works only if sp_brace_brace is set to ignore<br/>works only if sp_before_type_brace_init_lst_close is set to ignore.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_type_brace_init_lst=ignore|sp_inside_type_brace_init_lst=add|sp_inside_type_brace_init_lst=remove|sp_inside_type_brace_init_lst=force|sp_inside_type_brace_init_lst=not_defined
-ChoicesReadable="Ignore Sp Inside Type Brace Init Lst|Add Sp Inside Type Brace Init Lst|Remove Sp Inside Type Brace Init Lst|Force Sp Inside Type Brace Init Lst"
-ValueDefault=ignore
-
-[Sp Inside Braces]
-Category=1
-Description="<html>Add or remove space inside '{' and '}'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_braces=ignore|sp_inside_braces=add|sp_inside_braces=remove|sp_inside_braces=force|sp_inside_braces=not_defined
-ChoicesReadable="Ignore Sp Inside Braces|Add Sp Inside Braces|Remove Sp Inside Braces|Force Sp Inside Braces"
-ValueDefault=ignore
-
-[Sp Inside Braces Empty]
-Category=1
-Description="<html>Add or remove space inside '{}'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_braces_empty=ignore|sp_inside_braces_empty=add|sp_inside_braces_empty=remove|sp_inside_braces_empty=force|sp_inside_braces_empty=not_defined
-ChoicesReadable="Ignore Sp Inside Braces Empty|Add Sp Inside Braces Empty|Remove Sp Inside Braces Empty|Force Sp Inside Braces Empty"
-ValueDefault=ignore
-
-[Sp Trailing Return]
-Category=1
-Description="<html>Add or remove space around trailing return operator '-&gt;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_trailing_return=ignore|sp_trailing_return=add|sp_trailing_return=remove|sp_trailing_return=force|sp_trailing_return=not_defined
-ChoicesReadable="Ignore Sp Trailing Return|Add Sp Trailing Return|Remove Sp Trailing Return|Force Sp Trailing Return"
-ValueDefault=ignore
-
-[Sp Type Func]
-Category=1
-Description="<html>Add or remove space between return type and function name. A minimum of 1<br/>is forced except for pointer return types.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_type_func=ignore|sp_type_func=add|sp_type_func=remove|sp_type_func=force|sp_type_func=not_defined
-ChoicesReadable="Ignore Sp Type Func|Add Sp Type Func|Remove Sp Type Func|Force Sp Type Func"
-ValueDefault=ignore
-
-[Sp Type Brace Init Lst]
-Category=1
-Description="<html>Add or remove space between type and open brace of an unnamed temporary<br/>direct-list-initialization.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_type_brace_init_lst=ignore|sp_type_brace_init_lst=add|sp_type_brace_init_lst=remove|sp_type_brace_init_lst=force|sp_type_brace_init_lst=not_defined
-ChoicesReadable="Ignore Sp Type Brace Init Lst|Add Sp Type Brace Init Lst|Remove Sp Type Brace Init Lst|Force Sp Type Brace Init Lst"
-ValueDefault=ignore
-
-[Sp Func Proto Paren]
-Category=1
-Description="<html>Add or remove space between function name and '(' on function declaration.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_proto_paren=ignore|sp_func_proto_paren=add|sp_func_proto_paren=remove|sp_func_proto_paren=force|sp_func_proto_paren=not_defined
-ChoicesReadable="Ignore Sp Func Proto Paren|Add Sp Func Proto Paren|Remove Sp Func Proto Paren|Force Sp Func Proto Paren"
-ValueDefault=ignore
-
-[Sp Func Proto Paren Empty]
-Category=1
-Description="<html>Add or remove space between function name and '()' on function declaration<br/>without parameters.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_proto_paren_empty=ignore|sp_func_proto_paren_empty=add|sp_func_proto_paren_empty=remove|sp_func_proto_paren_empty=force|sp_func_proto_paren_empty=not_defined
-ChoicesReadable="Ignore Sp Func Proto Paren Empty|Add Sp Func Proto Paren Empty|Remove Sp Func Proto Paren Empty|Force Sp Func Proto Paren Empty"
-ValueDefault=ignore
-
-[Sp Func Type Paren]
-Category=1
-Description="<html>Add or remove space between function name and '(' with a typedef specifier.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_type_paren=ignore|sp_func_type_paren=add|sp_func_type_paren=remove|sp_func_type_paren=force|sp_func_type_paren=not_defined
-ChoicesReadable="Ignore Sp Func Type Paren|Add Sp Func Type Paren|Remove Sp Func Type Paren|Force Sp Func Type Paren"
-ValueDefault=ignore
-
-[Sp Func Def Paren]
-Category=1
-Description="<html>Add or remove space between alias name and '(' of a non-pointer function type typedef.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_def_paren=ignore|sp_func_def_paren=add|sp_func_def_paren=remove|sp_func_def_paren=force|sp_func_def_paren=not_defined
-ChoicesReadable="Ignore Sp Func Def Paren|Add Sp Func Def Paren|Remove Sp Func Def Paren|Force Sp Func Def Paren"
-ValueDefault=ignore
-
-[Sp Func Def Paren Empty]
-Category=1
-Description="<html>Add or remove space between function name and '()' on function definition<br/>without parameters.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_def_paren_empty=ignore|sp_func_def_paren_empty=add|sp_func_def_paren_empty=remove|sp_func_def_paren_empty=force|sp_func_def_paren_empty=not_defined
-ChoicesReadable="Ignore Sp Func Def Paren Empty|Add Sp Func Def Paren Empty|Remove Sp Func Def Paren Empty|Force Sp Func Def Paren Empty"
-ValueDefault=ignore
-
-[Sp Inside Fparens]
-Category=1
-Description="<html>Add or remove space inside empty function '()'.<br/>Overrides sp_after_angle unless use_sp_after_angle_always is set to true.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_fparens=ignore|sp_inside_fparens=add|sp_inside_fparens=remove|sp_inside_fparens=force|sp_inside_fparens=not_defined
-ChoicesReadable="Ignore Sp Inside Fparens|Add Sp Inside Fparens|Remove Sp Inside Fparens|Force Sp Inside Fparens"
-ValueDefault=ignore
-
-[Sp Inside Fparen]
-Category=1
-Description="<html>Add or remove space inside function '(' and ')'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_fparen=ignore|sp_inside_fparen=add|sp_inside_fparen=remove|sp_inside_fparen=force|sp_inside_fparen=not_defined
-ChoicesReadable="Ignore Sp Inside Fparen|Add Sp Inside Fparen|Remove Sp Inside Fparen|Force Sp Inside Fparen"
-ValueDefault=ignore
-
-[Sp Inside Tparen]
-Category=1
-Description="<html>Add or remove space inside the first parentheses in a function type, as in<br/>'void (*x)(...)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_tparen=ignore|sp_inside_tparen=add|sp_inside_tparen=remove|sp_inside_tparen=force|sp_inside_tparen=not_defined
-ChoicesReadable="Ignore Sp Inside Tparen|Add Sp Inside Tparen|Remove Sp Inside Tparen|Force Sp Inside Tparen"
-ValueDefault=ignore
-
-[Sp After Tparen Close]
-Category=1
-Description="<html>Add or remove space between the ')' and '(' in a function type, as in<br/>'void (*x)(...)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_tparen_close=ignore|sp_after_tparen_close=add|sp_after_tparen_close=remove|sp_after_tparen_close=force|sp_after_tparen_close=not_defined
-ChoicesReadable="Ignore Sp After Tparen Close|Add Sp After Tparen Close|Remove Sp After Tparen Close|Force Sp After Tparen Close"
-ValueDefault=ignore
-
-[Sp Square Fparen]
-Category=1
-Description="<html>Add or remove space between ']' and '(' when part of a function call.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_square_fparen=ignore|sp_square_fparen=add|sp_square_fparen=remove|sp_square_fparen=force|sp_square_fparen=not_defined
-ChoicesReadable="Ignore Sp Square Fparen|Add Sp Square Fparen|Remove Sp Square Fparen|Force Sp Square Fparen"
-ValueDefault=ignore
-
-[Sp Fparen Brace]
-Category=1
-Description="<html>Add or remove space between ')' and '{' of function.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_fparen_brace=ignore|sp_fparen_brace=add|sp_fparen_brace=remove|sp_fparen_brace=force|sp_fparen_brace=not_defined
-ChoicesReadable="Ignore Sp Fparen Brace|Add Sp Fparen Brace|Remove Sp Fparen Brace|Force Sp Fparen Brace"
-ValueDefault=ignore
-
-[Sp Fparen Brace Initializer]
-Category=1
-Description="<html>Add or remove space between ')' and '{' of a function call in object<br/>initialization.<br/><br/>Overrides sp_fparen_brace.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_fparen_brace_initializer=ignore|sp_fparen_brace_initializer=add|sp_fparen_brace_initializer=remove|sp_fparen_brace_initializer=force|sp_fparen_brace_initializer=not_defined
-ChoicesReadable="Ignore Sp Fparen Brace Initializer|Add Sp Fparen Brace Initializer|Remove Sp Fparen Brace Initializer|Force Sp Fparen Brace Initializer"
-ValueDefault=ignore
-
-[Sp Fparen Dbrace]
-Category=1
-Description="<html>(Java) Add or remove space between ')' and '{{' of double brace initializer.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_fparen_dbrace=ignore|sp_fparen_dbrace=add|sp_fparen_dbrace=remove|sp_fparen_dbrace=force|sp_fparen_dbrace=not_defined
-ChoicesReadable="Ignore Sp Fparen Dbrace|Add Sp Fparen Dbrace|Remove Sp Fparen Dbrace|Force Sp Fparen Dbrace"
-ValueDefault=ignore
-
-[Sp Func Call Paren]
-Category=1
-Description="<html>Add or remove space between function name and '(' on function calls.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_call_paren=ignore|sp_func_call_paren=add|sp_func_call_paren=remove|sp_func_call_paren=force|sp_func_call_paren=not_defined
-ChoicesReadable="Ignore Sp Func Call Paren|Add Sp Func Call Paren|Remove Sp Func Call Paren|Force Sp Func Call Paren"
-ValueDefault=ignore
-
-[Sp Func Call Paren Empty]
-Category=1
-Description="<html>Add or remove space between function name and '()' on function calls without<br/>parameters. If set to ignore (the default), sp_func_call_paren is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_call_paren_empty=ignore|sp_func_call_paren_empty=add|sp_func_call_paren_empty=remove|sp_func_call_paren_empty=force|sp_func_call_paren_empty=not_defined
-ChoicesReadable="Ignore Sp Func Call Paren Empty|Add Sp Func Call Paren Empty|Remove Sp Func Call Paren Empty|Force Sp Func Call Paren Empty"
-ValueDefault=ignore
-
-[Sp Func Call User Paren]
-Category=1
-Description="<html>Add or remove space between the user function name and '(' on function<br/>calls. You need to set a keyword to be a user function in the config file,<br/>like:<br/> set func_call_user tr _ i18n</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_call_user_paren=ignore|sp_func_call_user_paren=add|sp_func_call_user_paren=remove|sp_func_call_user_paren=force|sp_func_call_user_paren=not_defined
-ChoicesReadable="Ignore Sp Func Call User Paren|Add Sp Func Call User Paren|Remove Sp Func Call User Paren|Force Sp Func Call User Paren"
-ValueDefault=ignore
-
-[Sp Func Call User Inside Fparen]
-Category=1
-Description="<html>Add or remove space inside user function '(' and ')'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_call_user_inside_fparen=ignore|sp_func_call_user_inside_fparen=add|sp_func_call_user_inside_fparen=remove|sp_func_call_user_inside_fparen=force|sp_func_call_user_inside_fparen=not_defined
-ChoicesReadable="Ignore Sp Func Call User Inside Fparen|Add Sp Func Call User Inside Fparen|Remove Sp Func Call User Inside Fparen|Force Sp Func Call User Inside Fparen"
-ValueDefault=ignore
-
-[Sp Func Call User Paren Paren]
-Category=1
-Description="<html>Add or remove space between nested parentheses with user functions,<br/>i.e. '((' vs. '( ('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_call_user_paren_paren=ignore|sp_func_call_user_paren_paren=add|sp_func_call_user_paren_paren=remove|sp_func_call_user_paren_paren=force|sp_func_call_user_paren_paren=not_defined
-ChoicesReadable="Ignore Sp Func Call User Paren Paren|Add Sp Func Call User Paren Paren|Remove Sp Func Call User Paren Paren|Force Sp Func Call User Paren Paren"
-ValueDefault=ignore
-
-[Sp Func Class Paren]
-Category=1
-Description="<html>Add or remove space between a constructor/destructor and the open<br/>parenthesis.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_class_paren=ignore|sp_func_class_paren=add|sp_func_class_paren=remove|sp_func_class_paren=force|sp_func_class_paren=not_defined
-ChoicesReadable="Ignore Sp Func Class Paren|Add Sp Func Class Paren|Remove Sp Func Class Paren|Force Sp Func Class Paren"
-ValueDefault=ignore
-
-[Sp Func Class Paren Empty]
-Category=1
-Description="<html>Add or remove space between a constructor without parameters or destructor<br/>and '()'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_class_paren_empty=ignore|sp_func_class_paren_empty=add|sp_func_class_paren_empty=remove|sp_func_class_paren_empty=force|sp_func_class_paren_empty=not_defined
-ChoicesReadable="Ignore Sp Func Class Paren Empty|Add Sp Func Class Paren Empty|Remove Sp Func Class Paren Empty|Force Sp Func Class Paren Empty"
-ValueDefault=ignore
-
-[Sp Return]
-Category=1
-Description="<html>Add or remove space after 'return'.<br/><br/>Default: force</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_return=ignore|sp_return=add|sp_return=remove|sp_return=force|sp_return=not_defined
-ChoicesReadable="Ignore Sp Return|Add Sp Return|Remove Sp Return|Force Sp Return"
-ValueDefault=force
-
-[Sp Return Paren]
-Category=1
-Description="<html>Add or remove space between 'return' and '('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_return_paren=ignore|sp_return_paren=add|sp_return_paren=remove|sp_return_paren=force|sp_return_paren=not_defined
-ChoicesReadable="Ignore Sp Return Paren|Add Sp Return Paren|Remove Sp Return Paren|Force Sp Return Paren"
-ValueDefault=ignore
-
-[Sp Return Brace]
-Category=1
-Description="<html>Add or remove space between 'return' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_return_brace=ignore|sp_return_brace=add|sp_return_brace=remove|sp_return_brace=force|sp_return_brace=not_defined
-ChoicesReadable="Ignore Sp Return Brace|Add Sp Return Brace|Remove Sp Return Brace|Force Sp Return Brace"
-ValueDefault=ignore
-
-[Sp Attribute Paren]
-Category=1
-Description="<html>Add or remove space between '__attribute__' and '('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_attribute_paren=ignore|sp_attribute_paren=add|sp_attribute_paren=remove|sp_attribute_paren=force|sp_attribute_paren=not_defined
-ChoicesReadable="Ignore Sp Attribute Paren|Add Sp Attribute Paren|Remove Sp Attribute Paren|Force Sp Attribute Paren"
-ValueDefault=ignore
-
-[Sp Defined Paren]
-Category=1
-Description="<html>Add or remove space between 'defined' and '(' in '#if defined (FOO)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_defined_paren=ignore|sp_defined_paren=add|sp_defined_paren=remove|sp_defined_paren=force|sp_defined_paren=not_defined
-ChoicesReadable="Ignore Sp Defined Paren|Add Sp Defined Paren|Remove Sp Defined Paren|Force Sp Defined Paren"
-ValueDefault=ignore
-
-[Sp Throw Paren]
-Category=1
-Description="<html>Add or remove space between 'throw' and '(' in 'throw (something)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_throw_paren=ignore|sp_throw_paren=add|sp_throw_paren=remove|sp_throw_paren=force|sp_throw_paren=not_defined
-ChoicesReadable="Ignore Sp Throw Paren|Add Sp Throw Paren|Remove Sp Throw Paren|Force Sp Throw Paren"
-ValueDefault=ignore
-
-[Sp After Throw]
-Category=1
-Description="<html>Add or remove space between 'throw' and anything other than '(' as in<br/>'@throw [...];'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_throw=ignore|sp_after_throw=add|sp_after_throw=remove|sp_after_throw=force|sp_after_throw=not_defined
-ChoicesReadable="Ignore Sp After Throw|Add Sp After Throw|Remove Sp After Throw|Force Sp After Throw"
-ValueDefault=ignore
-
-[Sp Catch Paren]
-Category=1
-Description="<html>Add or remove space between 'catch' and '(' in 'catch (something) { }'.<br/>If set to ignore, sp_before_sparen is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_catch_paren=ignore|sp_catch_paren=add|sp_catch_paren=remove|sp_catch_paren=force|sp_catch_paren=not_defined
-ChoicesReadable="Ignore Sp Catch Paren|Add Sp Catch Paren|Remove Sp Catch Paren|Force Sp Catch Paren"
-ValueDefault=ignore
-
-[Sp Oc Catch Paren]
-Category=1
-Description="<html>(OC) Add or remove space between '@catch' and '('<br/>in '@catch (something) { }'. If set to ignore, sp_catch_paren is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_oc_catch_paren=ignore|sp_oc_catch_paren=add|sp_oc_catch_paren=remove|sp_oc_catch_paren=force|sp_oc_catch_paren=not_defined
-ChoicesReadable="Ignore Sp Oc Catch Paren|Add Sp Oc Catch Paren|Remove Sp Oc Catch Paren|Force Sp Oc Catch Paren"
-ValueDefault=ignore
-
-[Sp Before Oc Proto List]
-Category=1
-Description="<html>(OC) Add or remove space before Objective-C protocol list<br/>as in '@protocol Protocol&lt;here&gt;&lt;Protocol_A&gt;' or '@interface MyClass : NSObject&lt;here&gt;&lt;MyProtocol&gt;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_oc_proto_list=ignore|sp_before_oc_proto_list=add|sp_before_oc_proto_list=remove|sp_before_oc_proto_list=force|sp_before_oc_proto_list=not_defined
-ChoicesReadable="Ignore Sp Before Oc Proto List|Add Sp Before Oc Proto List|Remove Sp Before Oc Proto List|Force Sp Before Oc Proto List"
-ValueDefault=ignore
-
-[Sp Oc Classname Paren]
-Category=1
-Description="<html>(OC) Add or remove space between class name and '('<br/>in '@interface className(categoryName)&lt;ProtocolName&gt;:BaseClass'</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_oc_classname_paren=ignore|sp_oc_classname_paren=add|sp_oc_classname_paren=remove|sp_oc_classname_paren=force|sp_oc_classname_paren=not_defined
-ChoicesReadable="Ignore Sp Oc Classname Paren|Add Sp Oc Classname Paren|Remove Sp Oc Classname Paren|Force Sp Oc Classname Paren"
-ValueDefault=ignore
-
-[Sp Version Paren]
-Category=1
-Description="<html>(D) Add or remove space between 'version' and '('<br/>in 'version (something) { }'. If set to ignore, sp_before_sparen is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_version_paren=ignore|sp_version_paren=add|sp_version_paren=remove|sp_version_paren=force|sp_version_paren=not_defined
-ChoicesReadable="Ignore Sp Version Paren|Add Sp Version Paren|Remove Sp Version Paren|Force Sp Version Paren"
-ValueDefault=ignore
-
-[Sp Scope Paren]
-Category=1
-Description="<html>(D) Add or remove space between 'scope' and '('<br/>in 'scope (something) { }'. If set to ignore, sp_before_sparen is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_scope_paren=ignore|sp_scope_paren=add|sp_scope_paren=remove|sp_scope_paren=force|sp_scope_paren=not_defined
-ChoicesReadable="Ignore Sp Scope Paren|Add Sp Scope Paren|Remove Sp Scope Paren|Force Sp Scope Paren"
-ValueDefault=ignore
-
-[Sp Super Paren]
-Category=1
-Description="<html>Add or remove space between 'super' and '(' in 'super (something)'.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_super_paren=ignore|sp_super_paren=add|sp_super_paren=remove|sp_super_paren=force|sp_super_paren=not_defined
-ChoicesReadable="Ignore Sp Super Paren|Add Sp Super Paren|Remove Sp Super Paren|Force Sp Super Paren"
-ValueDefault=remove
-
-[Sp This Paren]
-Category=1
-Description="<html>Add or remove space between 'this' and '(' in 'this (something)'.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_this_paren=ignore|sp_this_paren=add|sp_this_paren=remove|sp_this_paren=force|sp_this_paren=not_defined
-ChoicesReadable="Ignore Sp This Paren|Add Sp This Paren|Remove Sp This Paren|Force Sp This Paren"
-ValueDefault=remove
-
-[Sp Macro]
-Category=1
-Description="<html>Add or remove space between a macro name and its definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_macro=ignore|sp_macro=add|sp_macro=remove|sp_macro=force|sp_macro=not_defined
-ChoicesReadable="Ignore Sp Macro|Add Sp Macro|Remove Sp Macro|Force Sp Macro"
-ValueDefault=ignore
-
-[Sp Macro Func]
-Category=1
-Description="<html>Add or remove space between a macro function ')' and its definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_macro_func=ignore|sp_macro_func=add|sp_macro_func=remove|sp_macro_func=force|sp_macro_func=not_defined
-ChoicesReadable="Ignore Sp Macro Func|Add Sp Macro Func|Remove Sp Macro Func|Force Sp Macro Func"
-ValueDefault=ignore
-
-[Sp Else Brace]
-Category=1
-Description="<html>Add or remove space between 'else' and '{' if on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_else_brace=ignore|sp_else_brace=add|sp_else_brace=remove|sp_else_brace=force|sp_else_brace=not_defined
-ChoicesReadable="Ignore Sp Else Brace|Add Sp Else Brace|Remove Sp Else Brace|Force Sp Else Brace"
-ValueDefault=ignore
-
-[Sp Brace Else]
-Category=1
-Description="<html>Add or remove space between '}' and 'else' if on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_brace_else=ignore|sp_brace_else=add|sp_brace_else=remove|sp_brace_else=force|sp_brace_else=not_defined
-ChoicesReadable="Ignore Sp Brace Else|Add Sp Brace Else|Remove Sp Brace Else|Force Sp Brace Else"
-ValueDefault=ignore
-
-[Sp Brace Typedef]
-Category=1
-Description="<html>Add or remove space between '}' and the name of a typedef on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_brace_typedef=ignore|sp_brace_typedef=add|sp_brace_typedef=remove|sp_brace_typedef=force|sp_brace_typedef=not_defined
-ChoicesReadable="Ignore Sp Brace Typedef|Add Sp Brace Typedef|Remove Sp Brace Typedef|Force Sp Brace Typedef"
-ValueDefault=ignore
-
-[Sp Catch Brace]
-Category=1
-Description="<html>Add or remove space before the '{' of a 'catch' statement, if the '{' and<br/>'catch' are on the same line, as in 'catch (decl) &lt;here&gt; {'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_catch_brace=ignore|sp_catch_brace=add|sp_catch_brace=remove|sp_catch_brace=force|sp_catch_brace=not_defined
-ChoicesReadable="Ignore Sp Catch Brace|Add Sp Catch Brace|Remove Sp Catch Brace|Force Sp Catch Brace"
-ValueDefault=ignore
-
-[Sp Oc Catch Brace]
-Category=1
-Description="<html>(OC) Add or remove space before the '{' of a '@catch' statement, if the '{'<br/>and '@catch' are on the same line, as in '@catch (decl) &lt;here&gt; {'.<br/>If set to ignore, sp_catch_brace is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_oc_catch_brace=ignore|sp_oc_catch_brace=add|sp_oc_catch_brace=remove|sp_oc_catch_brace=force|sp_oc_catch_brace=not_defined
-ChoicesReadable="Ignore Sp Oc Catch Brace|Add Sp Oc Catch Brace|Remove Sp Oc Catch Brace|Force Sp Oc Catch Brace"
-ValueDefault=ignore
-
-[Sp Brace Catch]
-Category=1
-Description="<html>Add or remove space between '}' and 'catch' if on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_brace_catch=ignore|sp_brace_catch=add|sp_brace_catch=remove|sp_brace_catch=force|sp_brace_catch=not_defined
-ChoicesReadable="Ignore Sp Brace Catch|Add Sp Brace Catch|Remove Sp Brace Catch|Force Sp Brace Catch"
-ValueDefault=ignore
-
-[Sp Oc Brace Catch]
-Category=1
-Description="<html>(OC) Add or remove space between '}' and '@catch' if on the same line.<br/>If set to ignore, sp_brace_catch is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_oc_brace_catch=ignore|sp_oc_brace_catch=add|sp_oc_brace_catch=remove|sp_oc_brace_catch=force|sp_oc_brace_catch=not_defined
-ChoicesReadable="Ignore Sp Oc Brace Catch|Add Sp Oc Brace Catch|Remove Sp Oc Brace Catch|Force Sp Oc Brace Catch"
-ValueDefault=ignore
-
-[Sp Finally Brace]
-Category=1
-Description="<html>Add or remove space between 'finally' and '{' if on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_finally_brace=ignore|sp_finally_brace=add|sp_finally_brace=remove|sp_finally_brace=force|sp_finally_brace=not_defined
-ChoicesReadable="Ignore Sp Finally Brace|Add Sp Finally Brace|Remove Sp Finally Brace|Force Sp Finally Brace"
-ValueDefault=ignore
-
-[Sp Brace Finally]
-Category=1
-Description="<html>Add or remove space between '}' and 'finally' if on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_brace_finally=ignore|sp_brace_finally=add|sp_brace_finally=remove|sp_brace_finally=force|sp_brace_finally=not_defined
-ChoicesReadable="Ignore Sp Brace Finally|Add Sp Brace Finally|Remove Sp Brace Finally|Force Sp Brace Finally"
-ValueDefault=ignore
-
-[Sp Try Brace]
-Category=1
-Description="<html>Add or remove space between 'try' and '{' if on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_try_brace=ignore|sp_try_brace=add|sp_try_brace=remove|sp_try_brace=force|sp_try_brace=not_defined
-ChoicesReadable="Ignore Sp Try Brace|Add Sp Try Brace|Remove Sp Try Brace|Force Sp Try Brace"
-ValueDefault=ignore
-
-[Sp Getset Brace]
-Category=1
-Description="<html>Add or remove space between get/set and '{' if on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_getset_brace=ignore|sp_getset_brace=add|sp_getset_brace=remove|sp_getset_brace=force|sp_getset_brace=not_defined
-ChoicesReadable="Ignore Sp Getset Brace|Add Sp Getset Brace|Remove Sp Getset Brace|Force Sp Getset Brace"
-ValueDefault=ignore
-
-[Sp Word Brace Init Lst]
-Category=1
-Description="<html>Add or remove space between a variable and '{' for C++ uniform<br/>initialization.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_word_brace_init_lst=ignore|sp_word_brace_init_lst=add|sp_word_brace_init_lst=remove|sp_word_brace_init_lst=force|sp_word_brace_init_lst=not_defined
-ChoicesReadable="Ignore Sp Word Brace Init Lst|Add Sp Word Brace Init Lst|Remove Sp Word Brace Init Lst|Force Sp Word Brace Init Lst"
-ValueDefault=ignore
-
-[Sp Word Brace Ns]
-Category=1
-Description="<html>Add or remove space between a variable and '{' for a namespace.<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_word_brace_ns=ignore|sp_word_brace_ns=add|sp_word_brace_ns=remove|sp_word_brace_ns=force|sp_word_brace_ns=not_defined
-ChoicesReadable="Ignore Sp Word Brace Ns|Add Sp Word Brace Ns|Remove Sp Word Brace Ns|Force Sp Word Brace Ns"
-ValueDefault=add
-
-[Sp Before Dc]
-Category=1
-Description="<html>Add or remove space before the '::' operator.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_dc=ignore|sp_before_dc=add|sp_before_dc=remove|sp_before_dc=force|sp_before_dc=not_defined
-ChoicesReadable="Ignore Sp Before Dc|Add Sp Before Dc|Remove Sp Before Dc|Force Sp Before Dc"
-ValueDefault=ignore
-
-[Sp After Dc]
-Category=1
-Description="<html>Add or remove space after the '::' operator.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_dc=ignore|sp_after_dc=add|sp_after_dc=remove|sp_after_dc=force|sp_after_dc=not_defined
-ChoicesReadable="Ignore Sp After Dc|Add Sp After Dc|Remove Sp After Dc|Force Sp After Dc"
-ValueDefault=ignore
-
-[Sp D Array Colon]
-Category=1
-Description="<html>(D) Add or remove around the D named array initializer ':' operator.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_d_array_colon=ignore|sp_d_array_colon=add|sp_d_array_colon=remove|sp_d_array_colon=force|sp_d_array_colon=not_defined
-ChoicesReadable="Ignore Sp D Array Colon|Add Sp D Array Colon|Remove Sp D Array Colon|Force Sp D Array Colon"
-ValueDefault=ignore
-
-[Sp Not]
-Category=1
-Description="<html>Add or remove space after the '!' (not) unary operator.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_not=ignore|sp_not=add|sp_not=remove|sp_not=force|sp_not=not_defined
-ChoicesReadable="Ignore Sp Not|Add Sp Not|Remove Sp Not|Force Sp Not"
-ValueDefault=remove
-
-[Sp Not Not]
-Category=1
-Description="<html>Add or remove space between two '!' (not) unary operators.<br/>If set to ignore, sp_not will be used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_not_not=ignore|sp_not_not=add|sp_not_not=remove|sp_not_not=force|sp_not_not=not_defined
-ChoicesReadable="Ignore Sp Not Not|Add Sp Not Not|Remove Sp Not Not|Force Sp Not Not"
-ValueDefault=ignore
-
-[Sp Inv]
-Category=1
-Description="<html>Add or remove space after the '~' (invert) unary operator.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inv=ignore|sp_inv=add|sp_inv=remove|sp_inv=force|sp_inv=not_defined
-ChoicesReadable="Ignore Sp Inv|Add Sp Inv|Remove Sp Inv|Force Sp Inv"
-ValueDefault=remove
-
-[Sp Addr]
-Category=1
-Description="<html>Add or remove space after the '&amp;' (address-of) unary operator. This does not<br/>affect the spacing after a '&amp;' that is part of a type.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_addr=ignore|sp_addr=add|sp_addr=remove|sp_addr=force|sp_addr=not_defined
-ChoicesReadable="Ignore Sp Addr|Add Sp Addr|Remove Sp Addr|Force Sp Addr"
-ValueDefault=remove
-
-[Sp Member]
-Category=1
-Description="<html>Add or remove space around the '.' or '-&gt;' operators.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_member=ignore|sp_member=add|sp_member=remove|sp_member=force|sp_member=not_defined
-ChoicesReadable="Ignore Sp Member|Add Sp Member|Remove Sp Member|Force Sp Member"
-ValueDefault=remove
-
-[Sp Deref]
-Category=1
-Description="<html>Add or remove space after the '*' (dereference) unary operator. This does<br/>not affect the spacing after a '*' that is part of a type.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_deref=ignore|sp_deref=add|sp_deref=remove|sp_deref=force|sp_deref=not_defined
-ChoicesReadable="Ignore Sp Deref|Add Sp Deref|Remove Sp Deref|Force Sp Deref"
-ValueDefault=remove
-
-[Sp Sign]
-Category=1
-Description="<html>Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_sign=ignore|sp_sign=add|sp_sign=remove|sp_sign=force|sp_sign=not_defined
-ChoicesReadable="Ignore Sp Sign|Add Sp Sign|Remove Sp Sign|Force Sp Sign"
-ValueDefault=remove
-
-[Sp Incdec]
-Category=1
-Description="<html>Add or remove space between '++' and '--' the word to which it is being<br/>applied, as in '(--x)' or 'y++;'.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_incdec=ignore|sp_incdec=add|sp_incdec=remove|sp_incdec=force|sp_incdec=not_defined
-ChoicesReadable="Ignore Sp Incdec|Add Sp Incdec|Remove Sp Incdec|Force Sp Incdec"
-ValueDefault=remove
-
-[Sp Before Nl Cont]
-Category=1
-Description="<html>Add or remove space before a backslash-newline at the end of a line.<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_nl_cont=ignore|sp_before_nl_cont=add|sp_before_nl_cont=remove|sp_before_nl_cont=force|sp_before_nl_cont=not_defined
-ChoicesReadable="Ignore Sp Before Nl Cont|Add Sp Before Nl Cont|Remove Sp Before Nl Cont|Force Sp Before Nl Cont"
-ValueDefault=add
-
-[Sp After Oc Scope]
-Category=1
-Description="<html>(OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;'<br/>or '+(int) bar;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_scope=ignore|sp_after_oc_scope=add|sp_after_oc_scope=remove|sp_after_oc_scope=force|sp_after_oc_scope=not_defined
-ChoicesReadable="Ignore Sp After Oc Scope|Add Sp After Oc Scope|Remove Sp After Oc Scope|Force Sp After Oc Scope"
-ValueDefault=ignore
-
-[Sp After Oc Colon]
-Category=1
-Description="<html>(OC) Add or remove space after the colon in message specs,<br/>i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_colon=ignore|sp_after_oc_colon=add|sp_after_oc_colon=remove|sp_after_oc_colon=force|sp_after_oc_colon=not_defined
-ChoicesReadable="Ignore Sp After Oc Colon|Add Sp After Oc Colon|Remove Sp After Oc Colon|Force Sp After Oc Colon"
-ValueDefault=ignore
-
-[Sp Before Oc Colon]
-Category=1
-Description="<html>(OC) Add or remove space before the colon in message specs,<br/>i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_oc_colon=ignore|sp_before_oc_colon=add|sp_before_oc_colon=remove|sp_before_oc_colon=force|sp_before_oc_colon=not_defined
-ChoicesReadable="Ignore Sp Before Oc Colon|Add Sp Before Oc Colon|Remove Sp Before Oc Colon|Force Sp Before Oc Colon"
-ValueDefault=ignore
-
-[Sp After Oc Dict Colon]
-Category=1
-Description="<html>(OC) Add or remove space after the colon in immutable dictionary expression<br/>'NSDictionary *test = @{@"foo" :@"bar"};'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_dict_colon=ignore|sp_after_oc_dict_colon=add|sp_after_oc_dict_colon=remove|sp_after_oc_dict_colon=force|sp_after_oc_dict_colon=not_defined
-ChoicesReadable="Ignore Sp After Oc Dict Colon|Add Sp After Oc Dict Colon|Remove Sp After Oc Dict Colon|Force Sp After Oc Dict Colon"
-ValueDefault=ignore
-
-[Sp Before Oc Dict Colon]
-Category=1
-Description="<html>(OC) Add or remove space before the colon in immutable dictionary expression<br/>'NSDictionary *test = @{@"foo" :@"bar"};'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_oc_dict_colon=ignore|sp_before_oc_dict_colon=add|sp_before_oc_dict_colon=remove|sp_before_oc_dict_colon=force|sp_before_oc_dict_colon=not_defined
-ChoicesReadable="Ignore Sp Before Oc Dict Colon|Add Sp Before Oc Dict Colon|Remove Sp Before Oc Dict Colon|Force Sp Before Oc Dict Colon"
-ValueDefault=ignore
-
-[Sp After Send Oc Colon]
-Category=1
-Description="<html>(OC) Add or remove space after the colon in message specs,<br/>i.e. '[object setValue:1];' vs. '[object setValue: 1];'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_send_oc_colon=ignore|sp_after_send_oc_colon=add|sp_after_send_oc_colon=remove|sp_after_send_oc_colon=force|sp_after_send_oc_colon=not_defined
-ChoicesReadable="Ignore Sp After Send Oc Colon|Add Sp After Send Oc Colon|Remove Sp After Send Oc Colon|Force Sp After Send Oc Colon"
-ValueDefault=ignore
-
-[Sp Before Send Oc Colon]
-Category=1
-Description="<html>(OC) Add or remove space before the colon in message specs,<br/>i.e. '[object setValue:1];' vs. '[object setValue :1];'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_send_oc_colon=ignore|sp_before_send_oc_colon=add|sp_before_send_oc_colon=remove|sp_before_send_oc_colon=force|sp_before_send_oc_colon=not_defined
-ChoicesReadable="Ignore Sp Before Send Oc Colon|Add Sp Before Send Oc Colon|Remove Sp Before Send Oc Colon|Force Sp Before Send Oc Colon"
-ValueDefault=ignore
-
-[Sp After Oc Type]
-Category=1
-Description="<html>(OC) Add or remove space after the (type) in message specs,<br/>i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_type=ignore|sp_after_oc_type=add|sp_after_oc_type=remove|sp_after_oc_type=force|sp_after_oc_type=not_defined
-ChoicesReadable="Ignore Sp After Oc Type|Add Sp After Oc Type|Remove Sp After Oc Type|Force Sp After Oc Type"
-ValueDefault=ignore
-
-[Sp After Oc Return Type]
-Category=1
-Description="<html>(OC) Add or remove space after the first (type) in message specs,<br/>i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_return_type=ignore|sp_after_oc_return_type=add|sp_after_oc_return_type=remove|sp_after_oc_return_type=force|sp_after_oc_return_type=not_defined
-ChoicesReadable="Ignore Sp After Oc Return Type|Add Sp After Oc Return Type|Remove Sp After Oc Return Type|Force Sp After Oc Return Type"
-ValueDefault=ignore
-
-[Sp After Oc At Sel]
-Category=1
-Description="<html>(OC) Add or remove space between '@selector' and '(',<br/>i.e. '@selector(msgName)' vs. '@selector (msgName)'.<br/>Also applies to '@protocol()' constructs.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_at_sel=ignore|sp_after_oc_at_sel=add|sp_after_oc_at_sel=remove|sp_after_oc_at_sel=force|sp_after_oc_at_sel=not_defined
-ChoicesReadable="Ignore Sp After Oc At Sel|Add Sp After Oc At Sel|Remove Sp After Oc At Sel|Force Sp After Oc At Sel"
-ValueDefault=ignore
-
-[Sp After Oc At Sel Parens]
-Category=1
-Description="<html>(OC) Add or remove space between '@selector(x)' and the following word,<br/>i.e. '@selector(foo) a:' vs. '@selector(foo)a:'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_at_sel_parens=ignore|sp_after_oc_at_sel_parens=add|sp_after_oc_at_sel_parens=remove|sp_after_oc_at_sel_parens=force|sp_after_oc_at_sel_parens=not_defined
-ChoicesReadable="Ignore Sp After Oc At Sel Parens|Add Sp After Oc At Sel Parens|Remove Sp After Oc At Sel Parens|Force Sp After Oc At Sel Parens"
-ValueDefault=ignore
-
-[Sp Inside Oc At Sel Parens]
-Category=1
-Description="<html>(OC) Add or remove space inside '@selector' parentheses,<br/>i.e. '@selector(foo)' vs. '@selector( foo )'.<br/>Also applies to '@protocol()' constructs.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_oc_at_sel_parens=ignore|sp_inside_oc_at_sel_parens=add|sp_inside_oc_at_sel_parens=remove|sp_inside_oc_at_sel_parens=force|sp_inside_oc_at_sel_parens=not_defined
-ChoicesReadable="Ignore Sp Inside Oc At Sel Parens|Add Sp Inside Oc At Sel Parens|Remove Sp Inside Oc At Sel Parens|Force Sp Inside Oc At Sel Parens"
-ValueDefault=ignore
-
-[Sp Before Oc Block Caret]
-Category=1
-Description="<html>(OC) Add or remove space before a block pointer caret,<br/>i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_oc_block_caret=ignore|sp_before_oc_block_caret=add|sp_before_oc_block_caret=remove|sp_before_oc_block_caret=force|sp_before_oc_block_caret=not_defined
-ChoicesReadable="Ignore Sp Before Oc Block Caret|Add Sp Before Oc Block Caret|Remove Sp Before Oc Block Caret|Force Sp Before Oc Block Caret"
-ValueDefault=ignore
-
-[Sp After Oc Block Caret]
-Category=1
-Description="<html>(OC) Add or remove space after a block pointer caret,<br/>i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_block_caret=ignore|sp_after_oc_block_caret=add|sp_after_oc_block_caret=remove|sp_after_oc_block_caret=force|sp_after_oc_block_caret=not_defined
-ChoicesReadable="Ignore Sp After Oc Block Caret|Add Sp After Oc Block Caret|Remove Sp After Oc Block Caret|Force Sp After Oc Block Caret"
-ValueDefault=ignore
-
-[Sp After Oc Msg Receiver]
-Category=1
-Description="<html>(OC) Add or remove space between the receiver and selector in a message,<br/>as in '[receiver selector ...]'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_msg_receiver=ignore|sp_after_oc_msg_receiver=add|sp_after_oc_msg_receiver=remove|sp_after_oc_msg_receiver=force|sp_after_oc_msg_receiver=not_defined
-ChoicesReadable="Ignore Sp After Oc Msg Receiver|Add Sp After Oc Msg Receiver|Remove Sp After Oc Msg Receiver|Force Sp After Oc Msg Receiver"
-ValueDefault=ignore
-
-[Sp After Oc Property]
-Category=1
-Description="<html>(OC) Add or remove space after '@property'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_property=ignore|sp_after_oc_property=add|sp_after_oc_property=remove|sp_after_oc_property=force|sp_after_oc_property=not_defined
-ChoicesReadable="Ignore Sp After Oc Property|Add Sp After Oc Property|Remove Sp After Oc Property|Force Sp After Oc Property"
-ValueDefault=ignore
-
-[Sp After Oc Synchronized]
-Category=1
-Description="<html>(OC) Add or remove space between '@synchronized' and the open parenthesis,<br/>i.e. '@synchronized(foo)' vs. '@synchronized (foo)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_synchronized=ignore|sp_after_oc_synchronized=add|sp_after_oc_synchronized=remove|sp_after_oc_synchronized=force|sp_after_oc_synchronized=not_defined
-ChoicesReadable="Ignore Sp After Oc Synchronized|Add Sp After Oc Synchronized|Remove Sp After Oc Synchronized|Force Sp After Oc Synchronized"
-ValueDefault=ignore
-
-[Sp Cond Colon]
-Category=1
-Description="<html>Add or remove space around the ':' in 'b ? t : f'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cond_colon=ignore|sp_cond_colon=add|sp_cond_colon=remove|sp_cond_colon=force|sp_cond_colon=not_defined
-ChoicesReadable="Ignore Sp Cond Colon|Add Sp Cond Colon|Remove Sp Cond Colon|Force Sp Cond Colon"
-ValueDefault=ignore
-
-[Sp Cond Colon Before]
-Category=1
-Description="<html>Add or remove space before the ':' in 'b ? t : f'.<br/><br/>Overrides sp_cond_colon.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cond_colon_before=ignore|sp_cond_colon_before=add|sp_cond_colon_before=remove|sp_cond_colon_before=force|sp_cond_colon_before=not_defined
-ChoicesReadable="Ignore Sp Cond Colon Before|Add Sp Cond Colon Before|Remove Sp Cond Colon Before|Force Sp Cond Colon Before"
-ValueDefault=ignore
-
-[Sp Cond Colon After]
-Category=1
-Description="<html>Add or remove space after the ':' in 'b ? t : f'.<br/><br/>Overrides sp_cond_colon.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cond_colon_after=ignore|sp_cond_colon_after=add|sp_cond_colon_after=remove|sp_cond_colon_after=force|sp_cond_colon_after=not_defined
-ChoicesReadable="Ignore Sp Cond Colon After|Add Sp Cond Colon After|Remove Sp Cond Colon After|Force Sp Cond Colon After"
-ValueDefault=ignore
-
-[Sp Cond Question]
-Category=1
-Description="<html>Add or remove space around the '?' in 'b ? t : f'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cond_question=ignore|sp_cond_question=add|sp_cond_question=remove|sp_cond_question=force|sp_cond_question=not_defined
-ChoicesReadable="Ignore Sp Cond Question|Add Sp Cond Question|Remove Sp Cond Question|Force Sp Cond Question"
-ValueDefault=ignore
-
-[Sp Cond Question Before]
-Category=1
-Description="<html>Add or remove space before the '?' in 'b ? t : f'.<br/><br/>Overrides sp_cond_question.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cond_question_before=ignore|sp_cond_question_before=add|sp_cond_question_before=remove|sp_cond_question_before=force|sp_cond_question_before=not_defined
-ChoicesReadable="Ignore Sp Cond Question Before|Add Sp Cond Question Before|Remove Sp Cond Question Before|Force Sp Cond Question Before"
-ValueDefault=ignore
-
-[Sp Cond Question After]
-Category=1
-Description="<html>Add or remove space after the '?' in 'b ? t : f'.<br/><br/>Overrides sp_cond_question.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cond_question_after=ignore|sp_cond_question_after=add|sp_cond_question_after=remove|sp_cond_question_after=force|sp_cond_question_after=not_defined
-ChoicesReadable="Ignore Sp Cond Question After|Add Sp Cond Question After|Remove Sp Cond Question After|Force Sp Cond Question After"
-ValueDefault=ignore
-
-[Sp Cond Ternary Short]
-Category=1
-Description="<html>In the abbreviated ternary form '(a ?: b)', add or remove space between '?'<br/>and ':'.<br/><br/>Overrides all other sp_cond_* options.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cond_ternary_short=ignore|sp_cond_ternary_short=add|sp_cond_ternary_short=remove|sp_cond_ternary_short=force|sp_cond_ternary_short=not_defined
-ChoicesReadable="Ignore Sp Cond Ternary Short|Add Sp Cond Ternary Short|Remove Sp Cond Ternary Short|Force Sp Cond Ternary Short"
-ValueDefault=ignore
-
-[Sp Case Label]
-Category=1
-Description="<html>Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make<br/>sense here.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_case_label=ignore|sp_case_label=add|sp_case_label=remove|sp_case_label=force|sp_case_label=not_defined
-ChoicesReadable="Ignore Sp Case Label|Add Sp Case Label|Remove Sp Case Label|Force Sp Case Label"
-ValueDefault=ignore
-
-[Sp Range]
-Category=1
-Description="<html>(D) Add or remove space around the D '..' operator.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_range=ignore|sp_range=add|sp_range=remove|sp_range=force|sp_range=not_defined
-ChoicesReadable="Ignore Sp Range|Add Sp Range|Remove Sp Range|Force Sp Range"
-ValueDefault=ignore
-
-[Sp After For Colon]
-Category=1
-Description="<html>Add or remove space after ':' in a Java/C++11 range-based 'for',<br/>as in 'for (Type var : &lt;here&gt; expr)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_for_colon=ignore|sp_after_for_colon=add|sp_after_for_colon=remove|sp_after_for_colon=force|sp_after_for_colon=not_defined
-ChoicesReadable="Ignore Sp After For Colon|Add Sp After For Colon|Remove Sp After For Colon|Force Sp After For Colon"
-ValueDefault=ignore
-
-[Sp Before For Colon]
-Category=1
-Description="<html>Add or remove space before ':' in a Java/C++11 range-based 'for',<br/>as in 'for (Type var &lt;here&gt; : expr)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_for_colon=ignore|sp_before_for_colon=add|sp_before_for_colon=remove|sp_before_for_colon=force|sp_before_for_colon=not_defined
-ChoicesReadable="Ignore Sp Before For Colon|Add Sp Before For Colon|Remove Sp Before For Colon|Force Sp Before For Colon"
-ValueDefault=ignore
-
-[Sp Extern Paren]
-Category=1
-Description="<html>(D) Add or remove space between 'extern' and '(' as in 'extern &lt;here&gt; (C)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_extern_paren=ignore|sp_extern_paren=add|sp_extern_paren=remove|sp_extern_paren=force|sp_extern_paren=not_defined
-ChoicesReadable="Ignore Sp Extern Paren|Add Sp Extern Paren|Remove Sp Extern Paren|Force Sp Extern Paren"
-ValueDefault=ignore
-
-[Sp Cmt Cpp Start]
-Category=1
-Description="<html>Add or remove space after the opening of a C++ comment, as in '// &lt;here&gt; A'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cmt_cpp_start=ignore|sp_cmt_cpp_start=add|sp_cmt_cpp_start=remove|sp_cmt_cpp_start=force|sp_cmt_cpp_start=not_defined
-ChoicesReadable="Ignore Sp Cmt Cpp Start|Add Sp Cmt Cpp Start|Remove Sp Cmt Cpp Start|Force Sp Cmt Cpp Start"
-ValueDefault=ignore
-
-[Sp Cmt Cpp Region]
-Category=1
-Description="<html>Add or remove space in a C++ region marker comment, as in '// &lt;here&gt; BEGIN'.<br/>A region marker is defined as a comment which is not preceded by other text<br/>(i.e. the comment is the first non-whitespace on the line), and which starts<br/>with either 'BEGIN' or 'END'.<br/><br/>Overrides sp_cmt_cpp_start.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cmt_cpp_region=ignore|sp_cmt_cpp_region=add|sp_cmt_cpp_region=remove|sp_cmt_cpp_region=force|sp_cmt_cpp_region=not_defined
-ChoicesReadable="Ignore Sp Cmt Cpp Region|Add Sp Cmt Cpp Region|Remove Sp Cmt Cpp Region|Force Sp Cmt Cpp Region"
-ValueDefault=ignore
-
-[Sp Cmt Cpp Doxygen]
-Category=1
-Description="<html>If true, space added with sp_cmt_cpp_start will be added after Doxygen<br/>sequences like '///', '///&lt;', '//!' and '//!&lt;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=sp_cmt_cpp_doxygen=true|sp_cmt_cpp_doxygen=false
-ValueDefault=false
-
-[Sp Cmt Cpp Qttr]
-Category=1
-Description="<html>If true, space added with sp_cmt_cpp_start will be added after Qt translator<br/>or meta-data comments like '//:', '//=', and '//~'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=sp_cmt_cpp_qttr=true|sp_cmt_cpp_qttr=false
-ValueDefault=false
-
-[Sp Endif Cmt]
-Category=1
-Description="<html>Add or remove space between #else or #endif and a trailing comment.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_endif_cmt=ignore|sp_endif_cmt=add|sp_endif_cmt=remove|sp_endif_cmt=force|sp_endif_cmt=not_defined
-ChoicesReadable="Ignore Sp Endif Cmt|Add Sp Endif Cmt|Remove Sp Endif Cmt|Force Sp Endif Cmt"
-ValueDefault=ignore
-
-[Sp After New]
-Category=1
-Description="<html>Add or remove space after 'new', 'delete' and 'delete[]'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_new=ignore|sp_after_new=add|sp_after_new=remove|sp_after_new=force|sp_after_new=not_defined
-ChoicesReadable="Ignore Sp After New|Add Sp After New|Remove Sp After New|Force Sp After New"
-ValueDefault=ignore
-
-[Sp Between New Paren]
-Category=1
-Description="<html>Add or remove space between 'new' and '(' in 'new()'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_between_new_paren=ignore|sp_between_new_paren=add|sp_between_new_paren=remove|sp_between_new_paren=force|sp_between_new_paren=not_defined
-ChoicesReadable="Ignore Sp Between New Paren|Add Sp Between New Paren|Remove Sp Between New Paren|Force Sp Between New Paren"
-ValueDefault=ignore
-
-[Sp After Newop Paren]
-Category=1
-Description="<html>Add or remove space between ')' and type in 'new(foo) BAR'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_newop_paren=ignore|sp_after_newop_paren=add|sp_after_newop_paren=remove|sp_after_newop_paren=force|sp_after_newop_paren=not_defined
-ChoicesReadable="Ignore Sp After Newop Paren|Add Sp After Newop Paren|Remove Sp After Newop Paren|Force Sp After Newop Paren"
-ValueDefault=ignore
-
-[Sp Inside Newop Paren]
-Category=1
-Description="<html>Add or remove space inside parentheses of the new operator<br/>as in 'new(foo) BAR'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_newop_paren=ignore|sp_inside_newop_paren=add|sp_inside_newop_paren=remove|sp_inside_newop_paren=force|sp_inside_newop_paren=not_defined
-ChoicesReadable="Ignore Sp Inside Newop Paren|Add Sp Inside Newop Paren|Remove Sp Inside Newop Paren|Force Sp Inside Newop Paren"
-ValueDefault=ignore
-
-[Sp Inside Newop Paren Open]
-Category=1
-Description="<html>Add or remove space after the open parenthesis of the new operator,<br/>as in 'new(foo) BAR'.<br/><br/>Overrides sp_inside_newop_paren.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_newop_paren_open=ignore|sp_inside_newop_paren_open=add|sp_inside_newop_paren_open=remove|sp_inside_newop_paren_open=force|sp_inside_newop_paren_open=not_defined
-ChoicesReadable="Ignore Sp Inside Newop Paren Open|Add Sp Inside Newop Paren Open|Remove Sp Inside Newop Paren Open|Force Sp Inside Newop Paren Open"
-ValueDefault=ignore
-
-[Sp Inside Newop Paren Close]
-Category=1
-Description="<html>Add or remove space before the close parenthesis of the new operator,<br/>as in 'new(foo) BAR'.<br/><br/>Overrides sp_inside_newop_paren.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_newop_paren_close=ignore|sp_inside_newop_paren_close=add|sp_inside_newop_paren_close=remove|sp_inside_newop_paren_close=force|sp_inside_newop_paren_close=not_defined
-ChoicesReadable="Ignore Sp Inside Newop Paren Close|Add Sp Inside Newop Paren Close|Remove Sp Inside Newop Paren Close|Force Sp Inside Newop Paren Close"
-ValueDefault=ignore
-
-[Sp Before Tr Cmt]
-Category=1
-Description="<html>Add or remove space before a trailing comment.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_tr_cmt=ignore|sp_before_tr_cmt=add|sp_before_tr_cmt=remove|sp_before_tr_cmt=force|sp_before_tr_cmt=not_defined
-ChoicesReadable="Ignore Sp Before Tr Cmt|Add Sp Before Tr Cmt|Remove Sp Before Tr Cmt|Force Sp Before Tr Cmt"
-ValueDefault=ignore
-
-[Sp Num Before Tr Cmt]
-Category=1
-Description="<html>Number of spaces before a trailing comment.</html>"
-Enabled=false
-EditorType=numeric
-CallName="sp_num_before_tr_cmt="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Sp Before Emb Cmt]
-Category=1
-Description="<html>Add or remove space before an embedded comment.<br/><br/>Default: force</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_emb_cmt=ignore|sp_before_emb_cmt=add|sp_before_emb_cmt=remove|sp_before_emb_cmt=force|sp_before_emb_cmt=not_defined
-ChoicesReadable="Ignore Sp Before Emb Cmt|Add Sp Before Emb Cmt|Remove Sp Before Emb Cmt|Force Sp Before Emb Cmt"
-ValueDefault=force
-
-[Sp Num Before Emb Cmt]
-Category=1
-Description="<html>Number of spaces before an embedded comment.<br/><br/>Default: 1</html>"
-Enabled=false
-EditorType=numeric
-CallName="sp_num_before_emb_cmt="
-MinVal=0
-MaxVal=16
-ValueDefault=1
-
-[Sp After Emb Cmt]
-Category=1
-Description="<html>Add or remove space after an embedded comment.<br/><br/>Default: force</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_emb_cmt=ignore|sp_after_emb_cmt=add|sp_after_emb_cmt=remove|sp_after_emb_cmt=force|sp_after_emb_cmt=not_defined
-ChoicesReadable="Ignore Sp After Emb Cmt|Add Sp After Emb Cmt|Remove Sp After Emb Cmt|Force Sp After Emb Cmt"
-ValueDefault=force
-
-[Sp Num After Emb Cmt]
-Category=1
-Description="<html>Number of spaces after an embedded comment.<br/><br/>Default: 1</html>"
-Enabled=false
-EditorType=numeric
-CallName="sp_num_after_emb_cmt="
-MinVal=0
-MaxVal=16
-ValueDefault=1
-
-[Sp Annotation Paren]
-Category=1
-Description="<html>(Java) Add or remove space between an annotation and the open parenthesis.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_annotation_paren=ignore|sp_annotation_paren=add|sp_annotation_paren=remove|sp_annotation_paren=force|sp_annotation_paren=not_defined
-ChoicesReadable="Ignore Sp Annotation Paren|Add Sp Annotation Paren|Remove Sp Annotation Paren|Force Sp Annotation Paren"
-ValueDefault=ignore
-
-[Sp Skip Vbrace Tokens]
-Category=1
-Description="<html>If true, vbrace tokens are dropped to the previous token and skipped.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=sp_skip_vbrace_tokens=true|sp_skip_vbrace_tokens=false
-ValueDefault=false
-
-[Sp After Noexcept]
-Category=1
-Description="<html>Add or remove space after 'noexcept'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_noexcept=ignore|sp_after_noexcept=add|sp_after_noexcept=remove|sp_after_noexcept=force|sp_after_noexcept=not_defined
-ChoicesReadable="Ignore Sp After Noexcept|Add Sp After Noexcept|Remove Sp After Noexcept|Force Sp After Noexcept"
-ValueDefault=ignore
-
-[Sp Vala After Translation]
-Category=1
-Description="<html>Add or remove space after '_'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_vala_after_translation=ignore|sp_vala_after_translation=add|sp_vala_after_translation=remove|sp_vala_after_translation=force|sp_vala_after_translation=not_defined
-ChoicesReadable="Ignore Sp Vala After Translation|Add Sp Vala After Translation|Remove Sp Vala After Translation|Force Sp Vala After Translation"
-ValueDefault=ignore
-
-[Force Tab After Define]
-Category=1
-Description="<html>If true, a &lt;TAB&gt; is inserted after #define.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=force_tab_after_define=true|force_tab_after_define=false
-ValueDefault=false
-
-[Indent Columns]
-Category=2
-Description="<html>The number of columns to indent per level. Usually 2, 3, 4, or 8.<br/><br/>Default: 8</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_columns="
-MinVal=0
-MaxVal=16
-ValueDefault=8
-
-[Indent Ignore First Continue]
-Category=2
-Description="<html>Whether to ignore indent for the first continuation line. Subsequent<br/>continuation lines will still be indented to match the first.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_first_continue=true|indent_ignore_first_continue=false
-ValueDefault=false
-
-[Indent Continue]
-Category=2
-Description="<html>The continuation indent. If non-zero, this overrides the indent of '(', '['<br/>and '=' continuation indents. Negative values are OK; negative value is<br/>absolute and not increased for each '(' or '[' level.<br/><br/>For FreeBSD, this is set to 4.<br/>Requires indent_ignore_first_continue=false.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_continue="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Indent Continue Class Head]
-Category=2
-Description="<html>The continuation indent, only for class header line(s). If non-zero, this<br/>overrides the indent of 'class' continuation indents.<br/>Requires indent_ignore_first_continue=false.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_continue_class_head="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Single Newlines]
-Category=2
-Description="<html>Whether to indent empty lines (i.e. lines which contain only spaces before<br/>the newline character).</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_single_newlines=true|indent_single_newlines=false
-ValueDefault=false
-
-[Indent Param]
-Category=2
-Description="<html>The continuation indent for func_*_param if they are true. If non-zero, this<br/>overrides the indent.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_param="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent With Tabs]
-Category=2
-Description="<html>How to use tabs when indenting code.<br/><br/>0: Spaces only<br/>1: Indent with tabs to brace level, align with spaces (default)<br/>2: Indent and align with tabs, using spaces when not on a tabstop<br/><br/>Default: 1</html>"
-Enabled=true
-EditorType=multiple
-Choices="indent_with_tabs=0|indent_with_tabs=1|indent_with_tabs=2"
-ChoicesReadable="Spaces only|Indent with tabs, align with spaces|Indent and align with tabs"
-ValueDefault=1
-
-[Indent Cmt With Tabs]
-Category=2
-Description="<html>Whether to indent comments that are not at a brace level with tabs on a<br/>tabstop. Requires indent_with_tabs=2. If false, will use spaces.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_cmt_with_tabs=true|indent_cmt_with_tabs=false
-ValueDefault=false
-
-[Indent Align String]
-Category=2
-Description="<html>Whether to indent strings broken by '\' so that they line up.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_align_string=true|indent_align_string=false
-ValueDefault=false
-
-[Indent Xml String]
-Category=2
-Description="<html>The number of spaces to indent multi-line XML strings.<br/>Requires indent_align_string=true.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_xml_string="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Brace]
-Category=2
-Description="<html>Spaces to indent '{' from level.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_brace="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Braces]
-Category=2
-Description="<html>Whether braces are indented to the body level.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_braces=true|indent_braces=false
-ValueDefault=false
-
-[Indent Braces No Func]
-Category=2
-Description="<html>Whether to disable indenting function braces if indent_braces=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_braces_no_func=true|indent_braces_no_func=false
-ValueDefault=false
-
-[Indent Braces No Class]
-Category=2
-Description="<html>Whether to disable indenting class braces if indent_braces=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_braces_no_class=true|indent_braces_no_class=false
-ValueDefault=false
-
-[Indent Braces No Struct]
-Category=2
-Description="<html>Whether to disable indenting struct braces if indent_braces=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_braces_no_struct=true|indent_braces_no_struct=false
-ValueDefault=false
-
-[Indent Brace Parent]
-Category=2
-Description="<html>Whether to indent based on the size of the brace parent,<br/>i.e. 'if' =&gt; 3 spaces, 'for' =&gt; 4 spaces, etc.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_brace_parent=true|indent_brace_parent=false
-ValueDefault=false
-
-[Indent Paren Open Brace]
-Category=2
-Description="<html>Whether to indent based on the open parenthesis instead of the open brace<br/>in '({\n'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_paren_open_brace=true|indent_paren_open_brace=false
-ValueDefault=false
-
-[Indent Cs Delegate Brace]
-Category=2
-Description="<html>(C#) Whether to indent the brace of a C# delegate by another level.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_cs_delegate_brace=true|indent_cs_delegate_brace=false
-ValueDefault=false
-
-[Indent Cs Delegate Body]
-Category=2
-Description="<html>(C#) Whether to indent a C# delegate (to handle delegates with no brace) by<br/>another level.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_cs_delegate_body=true|indent_cs_delegate_body=false
-ValueDefault=false
-
-[Indent Namespace]
-Category=2
-Description="<html>Whether to indent the body of a 'namespace'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_namespace=true|indent_namespace=false
-ValueDefault=false
-
-[Indent Namespace Single Indent]
-Category=2
-Description="<html>Whether to indent only the first namespace, and not any nested namespaces.<br/>Requires indent_namespace=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_namespace_single_indent=true|indent_namespace_single_indent=false
-ValueDefault=false
-
-[Indent Namespace Level]
-Category=2
-Description="<html>The number of spaces to indent a namespace block.<br/>If set to zero, use the value indent_columns</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_namespace_level="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Namespace Limit]
-Category=2
-Description="<html>If the body of the namespace is longer than this number, it won't be<br/>indented. Requires indent_namespace=true. 0 means no limit.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_namespace_limit="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[Indent Namespace Inner Only]
-Category=2
-Description="<html>Whether to indent only in inner namespaces (nested in other namespaces).<br/>Requires indent_namespace=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_namespace_inner_only=true|indent_namespace_inner_only=false
-ValueDefault=false
-
-[Indent Extern]
-Category=2
-Description="<html>Whether the 'extern "C"' body is indented.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_extern=true|indent_extern=false
-ValueDefault=false
-
-[Indent Class]
-Category=2
-Description="<html>Whether the 'class' body is indented.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_class=true|indent_class=false
-ValueDefault=false
-
-[Indent Ignore Before Class Colon]
-Category=2
-Description="<html>Whether to ignore indent for the leading base class colon.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_before_class_colon=true|indent_ignore_before_class_colon=false
-ValueDefault=false
-
-[Indent Before Class Colon]
-Category=2
-Description="<html>Additional indent before the leading base class colon.<br/>Negative values decrease indent down to the first column.<br/>Requires indent_ignore_before_class_colon=false and a newline break before<br/>the colon (see pos_class_colon and nl_class_colon)</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_before_class_colon="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Indent Class Colon]
-Category=2
-Description="<html>Whether to indent the stuff after a leading base class colon.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_class_colon=true|indent_class_colon=false
-ValueDefault=false
-
-[Indent Class On Colon]
-Category=2
-Description="<html>Whether to indent based on a class colon instead of the stuff after the<br/>colon. Requires indent_class_colon=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_class_on_colon=true|indent_class_on_colon=false
-ValueDefault=false
-
-[Indent Ignore Before Constr Colon]
-Category=2
-Description="<html>Whether to ignore indent for a leading class initializer colon.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_before_constr_colon=true|indent_ignore_before_constr_colon=false
-ValueDefault=false
-
-[Indent Constr Colon]
-Category=2
-Description="<html>Whether to indent the stuff after a leading class initializer colon.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_constr_colon=true|indent_constr_colon=false
-ValueDefault=false
-
-[Indent Ctor Init Leading]
-Category=2
-Description="<html>Virtual indent from the ':' for leading member initializers.<br/><br/>Default: 2</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_ctor_init_leading="
-MinVal=0
-MaxVal=16
-ValueDefault=2
-
-[Indent Ctor Init Following]
-Category=2
-Description="<html>Virtual indent from the ':' for following member initializers.<br/><br/>Default: 2</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_ctor_init_following="
-MinVal=0
-MaxVal=16
-ValueDefault=2
-
-[Indent Ctor Init]
-Category=2
-Description="<html>Additional indent for constructor initializer list.<br/>Negative values decrease indent down to the first column.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_ctor_init="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Indent Else If]
-Category=2
-Description="<html>Whether to indent 'if' following 'else' as a new block under the 'else'.<br/>If false, 'else\nif' is treated as 'else if' for indenting purposes.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_else_if=true|indent_else_if=false
-ValueDefault=false
-
-[Indent Var Def Blk]
-Category=2
-Description="<html>Amount to indent variable declarations after a open brace.<br/><br/> &lt;0: Relative<br/>&gt;=0: Absolute</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_var_def_blk="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Indent Var Def Cont]
-Category=2
-Description="<html>Whether to indent continued variable declarations instead of aligning.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_var_def_cont=true|indent_var_def_cont=false
-ValueDefault=false
-
-[Indent Shift]
-Category=2
-Description="<html>How to indent continued shift expressions ('&lt;&lt;' and '&gt;&gt;').<br/>Set align_left_shift=false when using this.<br/> 0: Align shift operators instead of indenting them (default)<br/> 1: Indent by one level<br/>-1: Preserve original indentation</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_shift="
-MinVal=-1
-MaxVal=1
-ValueDefault=0
-
-[Indent Func Def Force Col1]
-Category=2
-Description="<html>Whether to force indentation of function definitions to start in column 1.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_func_def_force_col1=true|indent_func_def_force_col1=false
-ValueDefault=false
-
-[Indent Func Call Param]
-Category=2
-Description="<html>Whether to indent continued function call parameters one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_func_call_param=true|indent_func_call_param=false
-ValueDefault=false
-
-[Indent Func Def Param]
-Category=2
-Description="<html>Whether to indent continued function definition parameters one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_func_def_param=true|indent_func_def_param=false
-ValueDefault=false
-
-[Indent Func Def Param Paren Pos Threshold]
-Category=2
-Description="<html>for function definitions, only if indent_func_def_param is false<br/>Allows to align params when appropriate and indent them when not<br/>behave as if it was true if paren position is more than this value<br/>if paren position is more than the option value</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_func_def_param_paren_pos_threshold="
-MinVal=0
-MaxVal=160
-ValueDefault=0
-
-[Indent Func Proto Param]
-Category=2
-Description="<html>Whether to indent continued function call prototype one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_func_proto_param=true|indent_func_proto_param=false
-ValueDefault=false
-
-[Indent Func Class Param]
-Category=2
-Description="<html>Whether to indent continued function call declaration one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_func_class_param=true|indent_func_class_param=false
-ValueDefault=false
-
-[Indent Func Ctor Var Param]
-Category=2
-Description="<html>Whether to indent continued class variable constructors one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_func_ctor_var_param=true|indent_func_ctor_var_param=false
-ValueDefault=false
-
-[Indent Template Param]
-Category=2
-Description="<html>Whether to indent continued template parameter list one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_template_param=true|indent_template_param=false
-ValueDefault=false
-
-[Indent Func Param Double]
-Category=2
-Description="<html>Double the indent for indent_func_xxx_param options.<br/>Use both values of the options indent_columns and indent_param.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_func_param_double=true|indent_func_param_double=false
-ValueDefault=false
-
-[Indent Func Const]
-Category=2
-Description="<html>Indentation column for standalone 'const' qualifier on a function<br/>prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_func_const="
-MinVal=0
-MaxVal=69
-ValueDefault=0
-
-[Indent Func Throw]
-Category=2
-Description="<html>Indentation column for standalone 'throw' qualifier on a function<br/>prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_func_throw="
-MinVal=0
-MaxVal=41
-ValueDefault=0
-
-[Indent Macro Brace]
-Category=2
-Description="<html>How to indent within a macro followed by a brace on the same line<br/>This allows reducing the indent in macros that have (for example)<br/>`do { ... } while (0)` blocks bracketing them.<br/><br/>true: add an indent for the brace on the same line as the macro<br/>false: do not add an indent for the brace on the same line as the macro<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_macro_brace=true|indent_macro_brace=false
-ValueDefault=true
-
-[Indent Member]
-Category=2
-Description="<html>The number of spaces to indent a continued '-&gt;' or '.'.<br/>Usually set to 0, 1, or indent_columns.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_member="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Member Single]
-Category=2
-Description="<html>Whether lines broken at '.' or '-&gt;' should be indented by a single indent.<br/>The indent_member option will not be effective if this is set to true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_member_single=true|indent_member_single=false
-ValueDefault=false
-
-[Indent Single Line Comments Before]
-Category=2
-Description="<html>Spaces to indent single line ('//') comments on lines before code.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_single_line_comments_before="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Single Line Comments After]
-Category=2
-Description="<html>Spaces to indent single line ('//') comments on lines after code.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_single_line_comments_after="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Sparen Extra]
-Category=2
-Description="<html>When opening a paren for a control statement (if, for, while, etc), increase<br/>the indent level by this value. Negative values decrease the indent level.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_sparen_extra="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Indent Relative Single Line Comments]
-Category=2
-Description="<html>Whether to indent trailing single line ('//') comments relative to the code<br/>instead of trying to keep the same absolute column.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_relative_single_line_comments=true|indent_relative_single_line_comments=false
-ValueDefault=false
-
-[Indent Switch Case]
-Category=2
-Description="<html>Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.<br/>It might be wise to choose the same value for the option indent_case_brace.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_switch_case="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Switch Body]
-Category=2
-Description="<html>Spaces to indent the body of a 'switch' before any 'case'.<br/>Usually the same as indent_columns or indent_switch_case.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_switch_body="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Ignore Case Brace]
-Category=2
-Description="<html>Whether to ignore indent for '{' following 'case'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_case_brace=true|indent_ignore_case_brace=false
-ValueDefault=false
-
-[Indent Case Brace]
-Category=2
-Description="<html>Spaces to indent '{' from 'case'. By default, the brace will appear under<br/>the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.<br/>It might be wise to choose the same value for the option indent_switch_case.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_case_brace="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Indent Switch Break With Case]
-Category=2
-Description="<html>indent 'break' with 'case' from 'switch'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_switch_break_with_case=true|indent_switch_break_with_case=false
-ValueDefault=false
-
-[Indent Switch Pp]
-Category=2
-Description="<html>Whether to indent preprocessor statements inside of switch statements.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_switch_pp=true|indent_switch_pp=false
-ValueDefault=true
-
-[Indent Case Shift]
-Category=2
-Description="<html>Spaces to shift the 'case' line, without affecting any other lines.<br/>Usually 0.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_case_shift="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Case Comment]
-Category=2
-Description="<html>Whether to align comments before 'case' with the 'case'.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_case_comment=true|indent_case_comment=false
-ValueDefault=true
-
-[Indent Comment]
-Category=2
-Description="<html>Whether to indent comments not found in first column.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_comment=true|indent_comment=false
-ValueDefault=true
-
-[Indent Col1 Comment]
-Category=2
-Description="<html>Whether to indent comments found in first column.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_col1_comment=true|indent_col1_comment=false
-ValueDefault=false
-
-[Indent Col1 Multi String Literal]
-Category=2
-Description="<html>Whether to indent multi string literal in first column.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_col1_multi_string_literal=true|indent_col1_multi_string_literal=false
-ValueDefault=false
-
-[Indent Comment Align Thresh]
-Category=2
-Description="<html>Align comments on adjacent lines that are this many columns apart or less.<br/><br/>Default: 3</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_comment_align_thresh="
-MinVal=0
-MaxVal=16
-ValueDefault=3
-
-[Indent Ignore Label]
-Category=2
-Description="<html>Whether to ignore indent for goto labels.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_label=true|indent_ignore_label=false
-ValueDefault=false
-
-[Indent Label]
-Category=2
-Description="<html>How to indent goto labels. Requires indent_ignore_label=false.<br/><br/> &gt;0: Absolute column where 1 is the leftmost column<br/>&lt;=0: Subtract from brace indent<br/><br/>Default: 1</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_label="
-MinVal=-16
-MaxVal=16
-ValueDefault=1
-
-[Indent Access Spec]
-Category=2
-Description="<html>How to indent access specifiers that are followed by a<br/>colon.<br/><br/> &gt;0: Absolute column where 1 is the leftmost column<br/>&lt;=0: Subtract from brace indent<br/><br/>Default: 1</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_access_spec="
-MinVal=-16
-MaxVal=16
-ValueDefault=1
-
-[Indent Access Spec Body]
-Category=2
-Description="<html>Whether to indent the code after an access specifier by one level.<br/>If true, this option forces 'indent_access_spec=0'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_access_spec_body=true|indent_access_spec_body=false
-ValueDefault=false
-
-[Indent Paren Nl]
-Category=2
-Description="<html>If an open parenthesis is followed by a newline, whether to indent the next<br/>line so that it lines up after the open parenthesis (not recommended).</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_paren_nl=true|indent_paren_nl=false
-ValueDefault=false
-
-[Indent Paren Close]
-Category=2
-Description="<html>How to indent a close parenthesis after a newline.<br/><br/> 0: Indent to body level (default)<br/> 1: Align under the open parenthesis<br/> 2: Indent to the brace level<br/>-1: Preserve original indentation</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_paren_close="
-MinVal=-1
-MaxVal=2
-ValueDefault=0
-
-[Indent Paren After Func Def]
-Category=2
-Description="<html>Whether to indent the open parenthesis of a function definition,<br/>if the parenthesis is on its own line.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_paren_after_func_def=true|indent_paren_after_func_def=false
-ValueDefault=false
-
-[Indent Paren After Func Decl]
-Category=2
-Description="<html>Whether to indent the open parenthesis of a function declaration,<br/>if the parenthesis is on its own line.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_paren_after_func_decl=true|indent_paren_after_func_decl=false
-ValueDefault=false
-
-[Indent Paren After Func Call]
-Category=2
-Description="<html>Whether to indent the open parenthesis of a function call,<br/>if the parenthesis is on its own line.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_paren_after_func_call=true|indent_paren_after_func_call=false
-ValueDefault=false
-
-[Indent Comma Brace]
-Category=2
-Description="<html>How to indent a comma when inside braces.<br/> 0: Indent by one level (default)<br/> 1: Align under the open brace<br/>-1: Preserve original indentation</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_comma_brace="
-MinVal=-1
-MaxVal=1
-ValueDefault=0
-
-[Indent Comma Paren]
-Category=2
-Description="<html>How to indent a comma when inside parentheses.<br/> 0: Indent by one level (default)<br/> 1: Align under the open parenthesis<br/>-1: Preserve original indentation</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_comma_paren="
-MinVal=-1
-MaxVal=1
-ValueDefault=0
-
-[Indent Bool Paren]
-Category=2
-Description="<html>How to indent a Boolean operator when inside parentheses.<br/> 0: Indent by one level (default)<br/> 1: Align under the open parenthesis<br/>-1: Preserve original indentation</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_bool_paren="
-MinVal=-1
-MaxVal=1
-ValueDefault=0
-
-[Indent Ignore Bool]
-Category=2
-Description="<html>Whether to ignore the indentation of a Boolean operator when outside<br/>parentheses.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_bool=true|indent_ignore_bool=false
-ValueDefault=false
-
-[Indent Ignore Arith]
-Category=2
-Description="<html>Whether to ignore the indentation of an arithmetic operator.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_arith=true|indent_ignore_arith=false
-ValueDefault=false
-
-[Indent Semicolon For Paren]
-Category=2
-Description="<html>Whether to indent a semicolon when inside a for parenthesis.<br/>If true, aligns under the open for parenthesis.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_semicolon_for_paren=true|indent_semicolon_for_paren=false
-ValueDefault=false
-
-[Indent Ignore Semicolon]
-Category=2
-Description="<html>Whether to ignore the indentation of a semicolon outside of a 'for'<br/>statement.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_semicolon=true|indent_ignore_semicolon=false
-ValueDefault=false
-
-[Indent First Bool Expr]
-Category=2
-Description="<html>Whether to align the first expression to following ones<br/>if indent_bool_paren=1.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_first_bool_expr=true|indent_first_bool_expr=false
-ValueDefault=false
-
-[Indent First For Expr]
-Category=2
-Description="<html>Whether to align the first expression to following ones<br/>if indent_semicolon_for_paren=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_first_for_expr=true|indent_first_for_expr=false
-ValueDefault=false
-
-[Indent Square Nl]
-Category=2
-Description="<html>If an open square is followed by a newline, whether to indent the next line<br/>so that it lines up after the open square (not recommended).</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_square_nl=true|indent_square_nl=false
-ValueDefault=false
-
-[Indent Preserve Sql]
-Category=2
-Description="<html>(ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_preserve_sql=true|indent_preserve_sql=false
-ValueDefault=false
-
-[Indent Ignore Assign]
-Category=2
-Description="<html>Whether to ignore the indentation of an assignment operator.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_assign=true|indent_ignore_assign=false
-ValueDefault=false
-
-[Indent Align Assign]
-Category=2
-Description="<html>Whether to align continued statements at the '='. If false or if the '=' is<br/>followed by a newline, the next line is indent one tab.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_align_assign=true|indent_align_assign=false
-ValueDefault=true
-
-[Indent Off After Assign]
-Category=2
-Description="<html>If true, the indentation of the chunks after a '=' sequence will be set at<br/>LHS token indentation column before '='.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_off_after_assign=true|indent_off_after_assign=false
-ValueDefault=false
-
-[Indent Align Paren]
-Category=2
-Description="<html>Whether to align continued statements at the '('. If false or the '(' is<br/>followed by a newline, the next line indent is one tab.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_align_paren=true|indent_align_paren=false
-ValueDefault=true
-
-[Indent Oc Inside Msg Sel]
-Category=2
-Description="<html>(OC) Whether to indent Objective-C code inside message selectors.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_inside_msg_sel=true|indent_oc_inside_msg_sel=false
-ValueDefault=false
-
-[Indent Oc Block]
-Category=2
-Description="<html>(OC) Whether to indent Objective-C blocks at brace level instead of usual<br/>rules.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_block=true|indent_oc_block=false
-ValueDefault=false
-
-[Indent Oc Block Msg]
-Category=2
-Description="<html>(OC) Indent for Objective-C blocks in a message relative to the parameter<br/>name.<br/><br/>=0: Use indent_oc_block rules<br/>&gt;0: Use specified number of spaces to indent</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_oc_block_msg="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Oc Msg Colon]
-Category=2
-Description="<html>(OC) Minimum indent for subsequent parameters</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_oc_msg_colon="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Indent Oc Msg Prioritize First Colon]
-Category=2
-Description="<html>(OC) Whether to prioritize aligning with initial colon (and stripping spaces<br/>from lines, if necessary).<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_msg_prioritize_first_colon=true|indent_oc_msg_prioritize_first_colon=false
-ValueDefault=true
-
-[Indent Oc Block Msg Xcode Style]
-Category=2
-Description="<html>(OC) Whether to indent blocks the way that Xcode does by default<br/>(from the keyword if the parameter is on its own line; otherwise, from the<br/>previous indentation level). Requires indent_oc_block_msg=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_block_msg_xcode_style=true|indent_oc_block_msg_xcode_style=false
-ValueDefault=false
-
-[Indent Oc Block Msg From Keyword]
-Category=2
-Description="<html>(OC) Whether to indent blocks from where the brace is, relative to a<br/>message keyword. Requires indent_oc_block_msg=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_block_msg_from_keyword=true|indent_oc_block_msg_from_keyword=false
-ValueDefault=false
-
-[Indent Oc Block Msg From Colon]
-Category=2
-Description="<html>(OC) Whether to indent blocks from where the brace is, relative to a message<br/>colon. Requires indent_oc_block_msg=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_block_msg_from_colon=true|indent_oc_block_msg_from_colon=false
-ValueDefault=false
-
-[Indent Oc Block Msg From Caret]
-Category=2
-Description="<html>(OC) Whether to indent blocks from where the block caret is.<br/>Requires indent_oc_block_msg=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_block_msg_from_caret=true|indent_oc_block_msg_from_caret=false
-ValueDefault=false
-
-[Indent Oc Block Msg From Brace]
-Category=2
-Description="<html>(OC) Whether to indent blocks from where the brace caret is.<br/>Requires indent_oc_block_msg=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_block_msg_from_brace=true|indent_oc_block_msg_from_brace=false
-ValueDefault=false
-
-[Indent Min Vbrace Open]
-Category=2
-Description="<html>When indenting after virtual brace open and newline add further spaces to<br/>reach this minimum indent.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_min_vbrace_open="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Vbrace Open On Tabstop]
-Category=2
-Description="<html>Whether to add further spaces after regular indent to reach next tabstop<br/>when indenting after virtual brace open and newline.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_vbrace_open_on_tabstop=true|indent_vbrace_open_on_tabstop=false
-ValueDefault=false
-
-[Indent Token After Brace]
-Category=2
-Description="<html>How to indent after a brace followed by another token (not a newline).<br/>true: indent all contained lines to match the token<br/>false: indent all contained lines to match the brace<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_token_after_brace=true|indent_token_after_brace=false
-ValueDefault=true
-
-[Indent Cpp Lambda Body]
-Category=2
-Description="<html>Whether to indent the body of a C++11 lambda.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_cpp_lambda_body=true|indent_cpp_lambda_body=false
-ValueDefault=false
-
-[Indent Compound Literal Return]
-Category=2
-Description="<html>How to indent compound literals that are being returned.<br/>true: add both the indent from return &amp; the compound literal open brace<br/> (i.e. 2 indent levels)<br/>false: only indent 1 level, don't add the indent for the open brace, only<br/> add the indent for the return.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_compound_literal_return=true|indent_compound_literal_return=false
-ValueDefault=true
-
-[Indent Using Block]
-Category=2
-Description="<html>(C#) Whether to indent a 'using' block if no braces are used.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_using_block=true|indent_using_block=false
-ValueDefault=true
-
-[Indent Ternary Operator]
-Category=2
-Description="<html>How to indent the continuation of ternary operator.<br/><br/>0: Off (default)<br/>1: When the `if_false` is a continuation, indent it under the `if_true` branch<br/>2: When the `:` is a continuation, indent it under `?`</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_ternary_operator="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Indent Inside Ternary Operator]
-Category=2
-Description="<html>Whether to indent the statements inside ternary operator.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_inside_ternary_operator=true|indent_inside_ternary_operator=false
-ValueDefault=false
-
-[Indent Off After Return]
-Category=2
-Description="<html>If true, the indentation of the chunks after a `return` sequence will be set at return indentation column.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_off_after_return=true|indent_off_after_return=false
-ValueDefault=false
-
-[Indent Off After Return New]
-Category=2
-Description="<html>If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_off_after_return_new=true|indent_off_after_return_new=false
-ValueDefault=false
-
-[Indent Single After Return]
-Category=2
-Description="<html>If true, the tokens after return are indented with regular single indentation. By default (false) the indentation is after the return token.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_single_after_return=true|indent_single_after_return=false
-ValueDefault=false
-
-[Indent Ignore Asm Block]
-Category=2
-Description="<html>Whether to ignore indent and alignment for 'asm' blocks (i.e. assume they<br/>have their own indentation).</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_asm_block=true|indent_ignore_asm_block=false
-ValueDefault=false
-
-[Donot Indent Func Def Close Paren]
-Category=2
-Description="<html>Don't indent the close parenthesis of a function definition,<br/>if the parenthesis is on its own line.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=donot_indent_func_def_close_paren=true|donot_indent_func_def_close_paren=false
-ValueDefault=false
-
-[Nl Collapse Empty Body]
-Category=3
-Description="<html>Whether to collapse empty blocks between '{' and '}' except for functions.<br/>Use nl_collapse_empty_body_functions to specify how empty function braces<br/>should be formatted.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_collapse_empty_body=true|nl_collapse_empty_body=false
-ValueDefault=false
-
-[Nl Collapse Empty Body Functions]
-Category=3
-Description="<html>Whether to collapse empty blocks between '{' and '}' for functions only.<br/>If true, overrides nl_inside_empty_func.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_collapse_empty_body_functions=true|nl_collapse_empty_body_functions=false
-ValueDefault=false
-
-[Nl Assign Leave One Liners]
-Category=3
-Description="<html>Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_assign_leave_one_liners=true|nl_assign_leave_one_liners=false
-ValueDefault=false
-
-[Nl Class Leave One Liners]
-Category=3
-Description="<html>Don't split one-line braced statements inside a 'class xx { }' body.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_class_leave_one_liners=true|nl_class_leave_one_liners=false
-ValueDefault=false
-
-[Nl Enum Leave One Liners]
-Category=3
-Description="<html>Don't split one-line enums, as in 'enum foo { BAR = 15 };'</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_enum_leave_one_liners=true|nl_enum_leave_one_liners=false
-ValueDefault=false
-
-[Nl Getset Leave One Liners]
-Category=3
-Description="<html>Don't split one-line get or set functions.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_getset_leave_one_liners=true|nl_getset_leave_one_liners=false
-ValueDefault=false
-
-[Nl Cs Property Leave One Liners]
-Category=3
-Description="<html>(C#) Don't split one-line property get or set functions.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_cs_property_leave_one_liners=true|nl_cs_property_leave_one_liners=false
-ValueDefault=false
-
-[Nl Func Leave One Liners]
-Category=3
-Description="<html>Don't split one-line function definitions, as in 'int foo() { return 0; }'.<br/>might modify nl_func_type_name</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_leave_one_liners=true|nl_func_leave_one_liners=false
-ValueDefault=false
-
-[Nl Cpp Lambda Leave One Liners]
-Category=3
-Description="<html>Don't split one-line C++11 lambdas, as in '[]() { return 0; }'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_cpp_lambda_leave_one_liners=true|nl_cpp_lambda_leave_one_liners=false
-ValueDefault=false
-
-[Nl If Leave One Liners]
-Category=3
-Description="<html>Don't split one-line if/else statements, as in 'if(...) b++;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_if_leave_one_liners=true|nl_if_leave_one_liners=false
-ValueDefault=false
-
-[Nl While Leave One Liners]
-Category=3
-Description="<html>Don't split one-line while statements, as in 'while(...) b++;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_while_leave_one_liners=true|nl_while_leave_one_liners=false
-ValueDefault=false
-
-[Nl Do Leave One Liners]
-Category=3
-Description="<html>Don't split one-line do statements, as in 'do { b++; } while(...);'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_do_leave_one_liners=true|nl_do_leave_one_liners=false
-ValueDefault=false
-
-[Nl For Leave One Liners]
-Category=3
-Description="<html>Don't split one-line for statements, as in 'for(...) b++;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_for_leave_one_liners=true|nl_for_leave_one_liners=false
-ValueDefault=false
-
-[Nl Oc Msg Leave One Liner]
-Category=3
-Description="<html>(OC) Don't split one-line Objective-C messages.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_oc_msg_leave_one_liner=true|nl_oc_msg_leave_one_liner=false
-ValueDefault=false
-
-[Nl Oc Mdef Brace]
-Category=3
-Description="<html>(OC) Add or remove newline between method declaration and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_mdef_brace=ignore|nl_oc_mdef_brace=add|nl_oc_mdef_brace=remove|nl_oc_mdef_brace=force|nl_oc_mdef_brace=not_defined
-ChoicesReadable="Ignore Nl Oc Mdef Brace|Add Nl Oc Mdef Brace|Remove Nl Oc Mdef Brace|Force Nl Oc Mdef Brace"
-ValueDefault=ignore
-
-[Nl Oc Block Brace]
-Category=3
-Description="<html>(OC) Add or remove newline between Objective-C block signature and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_block_brace=ignore|nl_oc_block_brace=add|nl_oc_block_brace=remove|nl_oc_block_brace=force|nl_oc_block_brace=not_defined
-ChoicesReadable="Ignore Nl Oc Block Brace|Add Nl Oc Block Brace|Remove Nl Oc Block Brace|Force Nl Oc Block Brace"
-ValueDefault=ignore
-
-[Nl Oc Before Interface]
-Category=3
-Description="<html>(OC) Add or remove blank line before '@interface' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_before_interface=ignore|nl_oc_before_interface=add|nl_oc_before_interface=remove|nl_oc_before_interface=force|nl_oc_before_interface=not_defined
-ChoicesReadable="Ignore Nl Oc Before Interface|Add Nl Oc Before Interface|Remove Nl Oc Before Interface|Force Nl Oc Before Interface"
-ValueDefault=ignore
-
-[Nl Oc Before Implementation]
-Category=3
-Description="<html>(OC) Add or remove blank line before '@implementation' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_before_implementation=ignore|nl_oc_before_implementation=add|nl_oc_before_implementation=remove|nl_oc_before_implementation=force|nl_oc_before_implementation=not_defined
-ChoicesReadable="Ignore Nl Oc Before Implementation|Add Nl Oc Before Implementation|Remove Nl Oc Before Implementation|Force Nl Oc Before Implementation"
-ValueDefault=ignore
-
-[Nl Oc Before End]
-Category=3
-Description="<html>(OC) Add or remove blank line before '@end' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_before_end=ignore|nl_oc_before_end=add|nl_oc_before_end=remove|nl_oc_before_end=force|nl_oc_before_end=not_defined
-ChoicesReadable="Ignore Nl Oc Before End|Add Nl Oc Before End|Remove Nl Oc Before End|Force Nl Oc Before End"
-ValueDefault=ignore
-
-[Nl Oc Interface Brace]
-Category=3
-Description="<html>(OC) Add or remove newline between '@interface' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_interface_brace=ignore|nl_oc_interface_brace=add|nl_oc_interface_brace=remove|nl_oc_interface_brace=force|nl_oc_interface_brace=not_defined
-ChoicesReadable="Ignore Nl Oc Interface Brace|Add Nl Oc Interface Brace|Remove Nl Oc Interface Brace|Force Nl Oc Interface Brace"
-ValueDefault=ignore
-
-[Nl Oc Implementation Brace]
-Category=3
-Description="<html>(OC) Add or remove newline between '@implementation' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_implementation_brace=ignore|nl_oc_implementation_brace=add|nl_oc_implementation_brace=remove|nl_oc_implementation_brace=force|nl_oc_implementation_brace=not_defined
-ChoicesReadable="Ignore Nl Oc Implementation Brace|Add Nl Oc Implementation Brace|Remove Nl Oc Implementation Brace|Force Nl Oc Implementation Brace"
-ValueDefault=ignore
-
-[Nl Start Of File]
-Category=3
-Description="<html>Add or remove newlines at the start of the file.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_start_of_file=ignore|nl_start_of_file=add|nl_start_of_file=remove|nl_start_of_file=force|nl_start_of_file=not_defined
-ChoicesReadable="Ignore Nl Start Of File|Add Nl Start Of File|Remove Nl Start Of File|Force Nl Start Of File"
-ValueDefault=ignore
-
-[Nl Start Of File Min]
-Category=3
-Description="<html>The minimum number of newlines at the start of the file (only used if<br/>nl_start_of_file is 'add' or 'force').</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_start_of_file_min="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl End Of File]
-Category=3
-Description="<html>Add or remove newline at the end of the file.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_end_of_file=ignore|nl_end_of_file=add|nl_end_of_file=remove|nl_end_of_file=force|nl_end_of_file=not_defined
-ChoicesReadable="Ignore Nl End Of File|Add Nl End Of File|Remove Nl End Of File|Force Nl End Of File"
-ValueDefault=ignore
-
-[Nl End Of File Min]
-Category=3
-Description="<html>The minimum number of newlines at the end of the file (only used if<br/>nl_end_of_file is 'add' or 'force').</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_end_of_file_min="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Assign Brace]
-Category=3
-Description="<html>Add or remove newline between '=' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_assign_brace=ignore|nl_assign_brace=add|nl_assign_brace=remove|nl_assign_brace=force|nl_assign_brace=not_defined
-ChoicesReadable="Ignore Nl Assign Brace|Add Nl Assign Brace|Remove Nl Assign Brace|Force Nl Assign Brace"
-ValueDefault=ignore
-
-[Nl Assign Square]
-Category=3
-Description="<html>(D) Add or remove newline between '=' and '['.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_assign_square=ignore|nl_assign_square=add|nl_assign_square=remove|nl_assign_square=force|nl_assign_square=not_defined
-ChoicesReadable="Ignore Nl Assign Square|Add Nl Assign Square|Remove Nl Assign Square|Force Nl Assign Square"
-ValueDefault=ignore
-
-[Nl Tsquare Brace]
-Category=3
-Description="<html>Add or remove newline between '[]' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_tsquare_brace=ignore|nl_tsquare_brace=add|nl_tsquare_brace=remove|nl_tsquare_brace=force|nl_tsquare_brace=not_defined
-ChoicesReadable="Ignore Nl Tsquare Brace|Add Nl Tsquare Brace|Remove Nl Tsquare Brace|Force Nl Tsquare Brace"
-ValueDefault=ignore
-
-[Nl After Square Assign]
-Category=3
-Description="<html>(D) Add or remove newline after '= ['. Will also affect the newline before<br/>the ']'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_square_assign=ignore|nl_after_square_assign=add|nl_after_square_assign=remove|nl_after_square_assign=force|nl_after_square_assign=not_defined
-ChoicesReadable="Ignore Nl After Square Assign|Add Nl After Square Assign|Remove Nl After Square Assign|Force Nl After Square Assign"
-ValueDefault=ignore
-
-[Nl Fcall Brace]
-Category=3
-Description="<html>Add or remove newline between a function call's ')' and '{', as in<br/>'list_for_each(item, &amp;list) { }'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_fcall_brace=ignore|nl_fcall_brace=add|nl_fcall_brace=remove|nl_fcall_brace=force|nl_fcall_brace=not_defined
-ChoicesReadable="Ignore Nl Fcall Brace|Add Nl Fcall Brace|Remove Nl Fcall Brace|Force Nl Fcall Brace"
-ValueDefault=ignore
-
-[Nl Enum Brace]
-Category=3
-Description="<html>Add or remove newline between 'enum' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_enum_brace=ignore|nl_enum_brace=add|nl_enum_brace=remove|nl_enum_brace=force|nl_enum_brace=not_defined
-ChoicesReadable="Ignore Nl Enum Brace|Add Nl Enum Brace|Remove Nl Enum Brace|Force Nl Enum Brace"
-ValueDefault=ignore
-
-[Nl Enum Class]
-Category=3
-Description="<html>Add or remove newline between 'enum' and 'class'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_enum_class=ignore|nl_enum_class=add|nl_enum_class=remove|nl_enum_class=force|nl_enum_class=not_defined
-ChoicesReadable="Ignore Nl Enum Class|Add Nl Enum Class|Remove Nl Enum Class|Force Nl Enum Class"
-ValueDefault=ignore
-
-[Nl Enum Class Identifier]
-Category=3
-Description="<html>Add or remove newline between 'enum class' and the identifier.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_enum_class_identifier=ignore|nl_enum_class_identifier=add|nl_enum_class_identifier=remove|nl_enum_class_identifier=force|nl_enum_class_identifier=not_defined
-ChoicesReadable="Ignore Nl Enum Class Identifier|Add Nl Enum Class Identifier|Remove Nl Enum Class Identifier|Force Nl Enum Class Identifier"
-ValueDefault=ignore
-
-[Nl Enum Identifier Colon]
-Category=3
-Description="<html>Add or remove newline between 'enum class' type and ':'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_enum_identifier_colon=ignore|nl_enum_identifier_colon=add|nl_enum_identifier_colon=remove|nl_enum_identifier_colon=force|nl_enum_identifier_colon=not_defined
-ChoicesReadable="Ignore Nl Enum Identifier Colon|Add Nl Enum Identifier Colon|Remove Nl Enum Identifier Colon|Force Nl Enum Identifier Colon"
-ValueDefault=ignore
-
-[Nl Enum Colon Type]
-Category=3
-Description="<html>Add or remove newline between 'enum class identifier :' and type.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_enum_colon_type=ignore|nl_enum_colon_type=add|nl_enum_colon_type=remove|nl_enum_colon_type=force|nl_enum_colon_type=not_defined
-ChoicesReadable="Ignore Nl Enum Colon Type|Add Nl Enum Colon Type|Remove Nl Enum Colon Type|Force Nl Enum Colon Type"
-ValueDefault=ignore
-
-[Nl Struct Brace]
-Category=3
-Description="<html>Add or remove newline between 'struct and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_struct_brace=ignore|nl_struct_brace=add|nl_struct_brace=remove|nl_struct_brace=force|nl_struct_brace=not_defined
-ChoicesReadable="Ignore Nl Struct Brace|Add Nl Struct Brace|Remove Nl Struct Brace|Force Nl Struct Brace"
-ValueDefault=ignore
-
-[Nl Union Brace]
-Category=3
-Description="<html>Add or remove newline between 'union' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_union_brace=ignore|nl_union_brace=add|nl_union_brace=remove|nl_union_brace=force|nl_union_brace=not_defined
-ChoicesReadable="Ignore Nl Union Brace|Add Nl Union Brace|Remove Nl Union Brace|Force Nl Union Brace"
-ValueDefault=ignore
-
-[Nl If Brace]
-Category=3
-Description="<html>Add or remove newline between 'if' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_if_brace=ignore|nl_if_brace=add|nl_if_brace=remove|nl_if_brace=force|nl_if_brace=not_defined
-ChoicesReadable="Ignore Nl If Brace|Add Nl If Brace|Remove Nl If Brace|Force Nl If Brace"
-ValueDefault=ignore
-
-[Nl Brace Else]
-Category=3
-Description="<html>Add or remove newline between '}' and 'else'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_else=ignore|nl_brace_else=add|nl_brace_else=remove|nl_brace_else=force|nl_brace_else=not_defined
-ChoicesReadable="Ignore Nl Brace Else|Add Nl Brace Else|Remove Nl Brace Else|Force Nl Brace Else"
-ValueDefault=ignore
-
-[Nl Elseif Brace]
-Category=3
-Description="<html>Add or remove newline between 'else if' and '{'. If set to ignore,<br/>nl_if_brace is used instead.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_elseif_brace=ignore|nl_elseif_brace=add|nl_elseif_brace=remove|nl_elseif_brace=force|nl_elseif_brace=not_defined
-ChoicesReadable="Ignore Nl Elseif Brace|Add Nl Elseif Brace|Remove Nl Elseif Brace|Force Nl Elseif Brace"
-ValueDefault=ignore
-
-[Nl Else Brace]
-Category=3
-Description="<html>Add or remove newline between 'else' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_else_brace=ignore|nl_else_brace=add|nl_else_brace=remove|nl_else_brace=force|nl_else_brace=not_defined
-ChoicesReadable="Ignore Nl Else Brace|Add Nl Else Brace|Remove Nl Else Brace|Force Nl Else Brace"
-ValueDefault=ignore
-
-[Nl Else If]
-Category=3
-Description="<html>Add or remove newline between 'else' and 'if'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_else_if=ignore|nl_else_if=add|nl_else_if=remove|nl_else_if=force|nl_else_if=not_defined
-ChoicesReadable="Ignore Nl Else If|Add Nl Else If|Remove Nl Else If|Force Nl Else If"
-ValueDefault=ignore
-
-[Nl Before Opening Brace Func Class Def]
-Category=3
-Description="<html>Add or remove newline before '{' opening brace</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_opening_brace_func_class_def=ignore|nl_before_opening_brace_func_class_def=add|nl_before_opening_brace_func_class_def=remove|nl_before_opening_brace_func_class_def=force|nl_before_opening_brace_func_class_def=not_defined
-ChoicesReadable="Ignore Nl Before Opening Brace Func Class Def|Add Nl Before Opening Brace Func Class Def|Remove Nl Before Opening Brace Func Class Def|Force Nl Before Opening Brace Func Class Def"
-ValueDefault=ignore
-
-[Nl Before If Closing Paren]
-Category=3
-Description="<html>Add or remove newline before 'if'/'else if' closing parenthesis.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_if_closing_paren=ignore|nl_before_if_closing_paren=add|nl_before_if_closing_paren=remove|nl_before_if_closing_paren=force|nl_before_if_closing_paren=not_defined
-ChoicesReadable="Ignore Nl Before If Closing Paren|Add Nl Before If Closing Paren|Remove Nl Before If Closing Paren|Force Nl Before If Closing Paren"
-ValueDefault=ignore
-
-[Nl Brace Finally]
-Category=3
-Description="<html>Add or remove newline between '}' and 'finally'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_finally=ignore|nl_brace_finally=add|nl_brace_finally=remove|nl_brace_finally=force|nl_brace_finally=not_defined
-ChoicesReadable="Ignore Nl Brace Finally|Add Nl Brace Finally|Remove Nl Brace Finally|Force Nl Brace Finally"
-ValueDefault=ignore
-
-[Nl Finally Brace]
-Category=3
-Description="<html>Add or remove newline between 'finally' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_finally_brace=ignore|nl_finally_brace=add|nl_finally_brace=remove|nl_finally_brace=force|nl_finally_brace=not_defined
-ChoicesReadable="Ignore Nl Finally Brace|Add Nl Finally Brace|Remove Nl Finally Brace|Force Nl Finally Brace"
-ValueDefault=ignore
-
-[Nl Try Brace]
-Category=3
-Description="<html>Add or remove newline between 'try' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_try_brace=ignore|nl_try_brace=add|nl_try_brace=remove|nl_try_brace=force|nl_try_brace=not_defined
-ChoicesReadable="Ignore Nl Try Brace|Add Nl Try Brace|Remove Nl Try Brace|Force Nl Try Brace"
-ValueDefault=ignore
-
-[Nl Getset Brace]
-Category=3
-Description="<html>Add or remove newline between get/set and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_getset_brace=ignore|nl_getset_brace=add|nl_getset_brace=remove|nl_getset_brace=force|nl_getset_brace=not_defined
-ChoicesReadable="Ignore Nl Getset Brace|Add Nl Getset Brace|Remove Nl Getset Brace|Force Nl Getset Brace"
-ValueDefault=ignore
-
-[Nl For Brace]
-Category=3
-Description="<html>Add or remove newline between 'for' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_for_brace=ignore|nl_for_brace=add|nl_for_brace=remove|nl_for_brace=force|nl_for_brace=not_defined
-ChoicesReadable="Ignore Nl For Brace|Add Nl For Brace|Remove Nl For Brace|Force Nl For Brace"
-ValueDefault=ignore
-
-[Nl Catch Brace]
-Category=3
-Description="<html>Add or remove newline before the '{' of a 'catch' statement, as in<br/>'catch (decl) &lt;here&gt; {'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_catch_brace=ignore|nl_catch_brace=add|nl_catch_brace=remove|nl_catch_brace=force|nl_catch_brace=not_defined
-ChoicesReadable="Ignore Nl Catch Brace|Add Nl Catch Brace|Remove Nl Catch Brace|Force Nl Catch Brace"
-ValueDefault=ignore
-
-[Nl Oc Catch Brace]
-Category=3
-Description="<html>(OC) Add or remove newline before the '{' of a '@catch' statement, as in<br/>'@catch (decl) &lt;here&gt; {'. If set to ignore, nl_catch_brace is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_catch_brace=ignore|nl_oc_catch_brace=add|nl_oc_catch_brace=remove|nl_oc_catch_brace=force|nl_oc_catch_brace=not_defined
-ChoicesReadable="Ignore Nl Oc Catch Brace|Add Nl Oc Catch Brace|Remove Nl Oc Catch Brace|Force Nl Oc Catch Brace"
-ValueDefault=ignore
-
-[Nl Brace Catch]
-Category=3
-Description="<html>Add or remove newline between '}' and 'catch'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_catch=ignore|nl_brace_catch=add|nl_brace_catch=remove|nl_brace_catch=force|nl_brace_catch=not_defined
-ChoicesReadable="Ignore Nl Brace Catch|Add Nl Brace Catch|Remove Nl Brace Catch|Force Nl Brace Catch"
-ValueDefault=ignore
-
-[Nl Oc Brace Catch]
-Category=3
-Description="<html>(OC) Add or remove newline between '}' and '@catch'. If set to ignore,<br/>nl_brace_catch is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_brace_catch=ignore|nl_oc_brace_catch=add|nl_oc_brace_catch=remove|nl_oc_brace_catch=force|nl_oc_brace_catch=not_defined
-ChoicesReadable="Ignore Nl Oc Brace Catch|Add Nl Oc Brace Catch|Remove Nl Oc Brace Catch|Force Nl Oc Brace Catch"
-ValueDefault=ignore
-
-[Nl Brace Square]
-Category=3
-Description="<html>Add or remove newline between '}' and ']'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_square=ignore|nl_brace_square=add|nl_brace_square=remove|nl_brace_square=force|nl_brace_square=not_defined
-ChoicesReadable="Ignore Nl Brace Square|Add Nl Brace Square|Remove Nl Brace Square|Force Nl Brace Square"
-ValueDefault=ignore
-
-[Nl Brace Fparen]
-Category=3
-Description="<html>Add or remove newline between '}' and ')' in a function invocation.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_fparen=ignore|nl_brace_fparen=add|nl_brace_fparen=remove|nl_brace_fparen=force|nl_brace_fparen=not_defined
-ChoicesReadable="Ignore Nl Brace Fparen|Add Nl Brace Fparen|Remove Nl Brace Fparen|Force Nl Brace Fparen"
-ValueDefault=ignore
-
-[Nl While Brace]
-Category=3
-Description="<html>Add or remove newline between 'while' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_while_brace=ignore|nl_while_brace=add|nl_while_brace=remove|nl_while_brace=force|nl_while_brace=not_defined
-ChoicesReadable="Ignore Nl While Brace|Add Nl While Brace|Remove Nl While Brace|Force Nl While Brace"
-ValueDefault=ignore
-
-[Nl Scope Brace]
-Category=3
-Description="<html>(D) Add or remove newline between 'scope (x)' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_scope_brace=ignore|nl_scope_brace=add|nl_scope_brace=remove|nl_scope_brace=force|nl_scope_brace=not_defined
-ChoicesReadable="Ignore Nl Scope Brace|Add Nl Scope Brace|Remove Nl Scope Brace|Force Nl Scope Brace"
-ValueDefault=ignore
-
-[Nl Unittest Brace]
-Category=3
-Description="<html>(D) Add or remove newline between 'unittest' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_unittest_brace=ignore|nl_unittest_brace=add|nl_unittest_brace=remove|nl_unittest_brace=force|nl_unittest_brace=not_defined
-ChoicesReadable="Ignore Nl Unittest Brace|Add Nl Unittest Brace|Remove Nl Unittest Brace|Force Nl Unittest Brace"
-ValueDefault=ignore
-
-[Nl Version Brace]
-Category=3
-Description="<html>(D) Add or remove newline between 'version (x)' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_version_brace=ignore|nl_version_brace=add|nl_version_brace=remove|nl_version_brace=force|nl_version_brace=not_defined
-ChoicesReadable="Ignore Nl Version Brace|Add Nl Version Brace|Remove Nl Version Brace|Force Nl Version Brace"
-ValueDefault=ignore
-
-[Nl Using Brace]
-Category=3
-Description="<html>(C#) Add or remove newline between 'using' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_using_brace=ignore|nl_using_brace=add|nl_using_brace=remove|nl_using_brace=force|nl_using_brace=not_defined
-ChoicesReadable="Ignore Nl Using Brace|Add Nl Using Brace|Remove Nl Using Brace|Force Nl Using Brace"
-ValueDefault=ignore
-
-[Nl Brace Brace]
-Category=3
-Description="<html>Add or remove newline between two open or close braces. Due to general<br/>newline/brace handling, REMOVE may not work.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_brace=ignore|nl_brace_brace=add|nl_brace_brace=remove|nl_brace_brace=force|nl_brace_brace=not_defined
-ChoicesReadable="Ignore Nl Brace Brace|Add Nl Brace Brace|Remove Nl Brace Brace|Force Nl Brace Brace"
-ValueDefault=ignore
-
-[Nl Do Brace]
-Category=3
-Description="<html>Add or remove newline between 'do' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_do_brace=ignore|nl_do_brace=add|nl_do_brace=remove|nl_do_brace=force|nl_do_brace=not_defined
-ChoicesReadable="Ignore Nl Do Brace|Add Nl Do Brace|Remove Nl Do Brace|Force Nl Do Brace"
-ValueDefault=ignore
-
-[Nl Brace While]
-Category=3
-Description="<html>Add or remove newline between '}' and 'while' of 'do' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_while=ignore|nl_brace_while=add|nl_brace_while=remove|nl_brace_while=force|nl_brace_while=not_defined
-ChoicesReadable="Ignore Nl Brace While|Add Nl Brace While|Remove Nl Brace While|Force Nl Brace While"
-ValueDefault=ignore
-
-[Nl Switch Brace]
-Category=3
-Description="<html>Add or remove newline between 'switch' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_switch_brace=ignore|nl_switch_brace=add|nl_switch_brace=remove|nl_switch_brace=force|nl_switch_brace=not_defined
-ChoicesReadable="Ignore Nl Switch Brace|Add Nl Switch Brace|Remove Nl Switch Brace|Force Nl Switch Brace"
-ValueDefault=ignore
-
-[Nl Synchronized Brace]
-Category=3
-Description="<html>Add or remove newline between 'synchronized' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_synchronized_brace=ignore|nl_synchronized_brace=add|nl_synchronized_brace=remove|nl_synchronized_brace=force|nl_synchronized_brace=not_defined
-ChoicesReadable="Ignore Nl Synchronized Brace|Add Nl Synchronized Brace|Remove Nl Synchronized Brace|Force Nl Synchronized Brace"
-ValueDefault=ignore
-
-[Nl Multi Line Cond]
-Category=3
-Description="<html>Add a newline between ')' and '{' if the ')' is on a different line than the<br/>if/for/etc.<br/><br/>Overrides nl_for_brace, nl_if_brace, nl_switch_brace, nl_while_switch and<br/>nl_catch_brace.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_multi_line_cond=true|nl_multi_line_cond=false
-ValueDefault=false
-
-[Nl Multi Line Sparen Open]
-Category=3
-Description="<html>Add a newline after '(' if an if/for/while/switch condition spans multiple<br/>lines</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_multi_line_sparen_open=ignore|nl_multi_line_sparen_open=add|nl_multi_line_sparen_open=remove|nl_multi_line_sparen_open=force|nl_multi_line_sparen_open=not_defined
-ChoicesReadable="Ignore Nl Multi Line Sparen Open|Add Nl Multi Line Sparen Open|Remove Nl Multi Line Sparen Open|Force Nl Multi Line Sparen Open"
-ValueDefault=ignore
-
-[Nl Multi Line Sparen Close]
-Category=3
-Description="<html>Add a newline before ')' if an if/for/while/switch condition spans multiple<br/>lines. Overrides nl_before_if_closing_paren if both are specified.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_multi_line_sparen_close=ignore|nl_multi_line_sparen_close=add|nl_multi_line_sparen_close=remove|nl_multi_line_sparen_close=force|nl_multi_line_sparen_close=not_defined
-ChoicesReadable="Ignore Nl Multi Line Sparen Close|Add Nl Multi Line Sparen Close|Remove Nl Multi Line Sparen Close|Force Nl Multi Line Sparen Close"
-ValueDefault=ignore
-
-[Nl Multi Line Define]
-Category=3
-Description="<html>Force a newline in a define after the macro name for multi-line defines.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_multi_line_define=true|nl_multi_line_define=false
-ValueDefault=false
-
-[Nl Before Case]
-Category=3
-Description="<html>Whether to add a newline before 'case', and a blank line before a 'case'<br/>statement that follows a ';' or '}'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_before_case=true|nl_before_case=false
-ValueDefault=false
-
-[Nl After Case]
-Category=3
-Description="<html>Whether to add a newline after a 'case' statement.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_case=true|nl_after_case=false
-ValueDefault=false
-
-[Nl Case Colon Brace]
-Category=3
-Description="<html>Add or remove newline between a case ':' and '{'.<br/><br/>Overrides nl_after_case.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_case_colon_brace=ignore|nl_case_colon_brace=add|nl_case_colon_brace=remove|nl_case_colon_brace=force|nl_case_colon_brace=not_defined
-ChoicesReadable="Ignore Nl Case Colon Brace|Add Nl Case Colon Brace|Remove Nl Case Colon Brace|Force Nl Case Colon Brace"
-ValueDefault=ignore
-
-[Nl Before Throw]
-Category=3
-Description="<html>Add or remove newline between ')' and 'throw'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_throw=ignore|nl_before_throw=add|nl_before_throw=remove|nl_before_throw=force|nl_before_throw=not_defined
-ChoicesReadable="Ignore Nl Before Throw|Add Nl Before Throw|Remove Nl Before Throw|Force Nl Before Throw"
-ValueDefault=ignore
-
-[Nl Namespace Brace]
-Category=3
-Description="<html>Add or remove newline between 'namespace' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_namespace_brace=ignore|nl_namespace_brace=add|nl_namespace_brace=remove|nl_namespace_brace=force|nl_namespace_brace=not_defined
-ChoicesReadable="Ignore Nl Namespace Brace|Add Nl Namespace Brace|Remove Nl Namespace Brace|Force Nl Namespace Brace"
-ValueDefault=ignore
-
-[Nl Template Class]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template class.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_class=ignore|nl_template_class=add|nl_template_class=remove|nl_template_class=force|nl_template_class=not_defined
-ChoicesReadable="Ignore Nl Template Class|Add Nl Template Class|Remove Nl Template Class|Force Nl Template Class"
-ValueDefault=ignore
-
-[Nl Template Class Decl]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template class declaration.<br/><br/>Overrides nl_template_class.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_class_decl=ignore|nl_template_class_decl=add|nl_template_class_decl=remove|nl_template_class_decl=force|nl_template_class_decl=not_defined
-ChoicesReadable="Ignore Nl Template Class Decl|Add Nl Template Class Decl|Remove Nl Template Class Decl|Force Nl Template Class Decl"
-ValueDefault=ignore
-
-[Nl Template Class Decl Special]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized class declaration.<br/><br/>Overrides nl_template_class_decl.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_class_decl_special=ignore|nl_template_class_decl_special=add|nl_template_class_decl_special=remove|nl_template_class_decl_special=force|nl_template_class_decl_special=not_defined
-ChoicesReadable="Ignore Nl Template Class Decl Special|Add Nl Template Class Decl Special|Remove Nl Template Class Decl Special|Force Nl Template Class Decl Special"
-ValueDefault=ignore
-
-[Nl Template Class Def]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template class definition.<br/><br/>Overrides nl_template_class.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_class_def=ignore|nl_template_class_def=add|nl_template_class_def=remove|nl_template_class_def=force|nl_template_class_def=not_defined
-ChoicesReadable="Ignore Nl Template Class Def|Add Nl Template Class Def|Remove Nl Template Class Def|Force Nl Template Class Def"
-ValueDefault=ignore
-
-[Nl Template Class Def Special]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized class definition.<br/><br/>Overrides nl_template_class_def.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_class_def_special=ignore|nl_template_class_def_special=add|nl_template_class_def_special=remove|nl_template_class_def_special=force|nl_template_class_def_special=not_defined
-ChoicesReadable="Ignore Nl Template Class Def Special|Add Nl Template Class Def Special|Remove Nl Template Class Def Special|Force Nl Template Class Def Special"
-ValueDefault=ignore
-
-[Nl Template Func]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template function.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_func=ignore|nl_template_func=add|nl_template_func=remove|nl_template_func=force|nl_template_func=not_defined
-ChoicesReadable="Ignore Nl Template Func|Add Nl Template Func|Remove Nl Template Func|Force Nl Template Func"
-ValueDefault=ignore
-
-[Nl Template Func Decl]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template function<br/>declaration.<br/><br/>Overrides nl_template_func.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_func_decl=ignore|nl_template_func_decl=add|nl_template_func_decl=remove|nl_template_func_decl=force|nl_template_func_decl=not_defined
-ChoicesReadable="Ignore Nl Template Func Decl|Add Nl Template Func Decl|Remove Nl Template Func Decl|Force Nl Template Func Decl"
-ValueDefault=ignore
-
-[Nl Template Func Decl Special]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized function<br/>declaration.<br/><br/>Overrides nl_template_func_decl.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_func_decl_special=ignore|nl_template_func_decl_special=add|nl_template_func_decl_special=remove|nl_template_func_decl_special=force|nl_template_func_decl_special=not_defined
-ChoicesReadable="Ignore Nl Template Func Decl Special|Add Nl Template Func Decl Special|Remove Nl Template Func Decl Special|Force Nl Template Func Decl Special"
-ValueDefault=ignore
-
-[Nl Template Func Def]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template function<br/>definition.<br/><br/>Overrides nl_template_func.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_func_def=ignore|nl_template_func_def=add|nl_template_func_def=remove|nl_template_func_def=force|nl_template_func_def=not_defined
-ChoicesReadable="Ignore Nl Template Func Def|Add Nl Template Func Def|Remove Nl Template Func Def|Force Nl Template Func Def"
-ValueDefault=ignore
-
-[Nl Template Func Def Special]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized function<br/>definition.<br/><br/>Overrides nl_template_func_def.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_func_def_special=ignore|nl_template_func_def_special=add|nl_template_func_def_special=remove|nl_template_func_def_special=force|nl_template_func_def_special=not_defined
-ChoicesReadable="Ignore Nl Template Func Def Special|Add Nl Template Func Def Special|Remove Nl Template Func Def Special|Force Nl Template Func Def Special"
-ValueDefault=ignore
-
-[Nl Template Var]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template variable.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_var=ignore|nl_template_var=add|nl_template_var=remove|nl_template_var=force|nl_template_var=not_defined
-ChoicesReadable="Ignore Nl Template Var|Add Nl Template Var|Remove Nl Template Var|Force Nl Template Var"
-ValueDefault=ignore
-
-[Nl Template Using]
-Category=3
-Description="<html>Add or remove newline between 'template&lt;...&gt;' and 'using' of a templated<br/>type alias.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_using=ignore|nl_template_using=add|nl_template_using=remove|nl_template_using=force|nl_template_using=not_defined
-ChoicesReadable="Ignore Nl Template Using|Add Nl Template Using|Remove Nl Template Using|Force Nl Template Using"
-ValueDefault=ignore
-
-[Nl Class Brace]
-Category=3
-Description="<html>Add or remove newline between 'class' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_class_brace=ignore|nl_class_brace=add|nl_class_brace=remove|nl_class_brace=force|nl_class_brace=not_defined
-ChoicesReadable="Ignore Nl Class Brace|Add Nl Class Brace|Remove Nl Class Brace|Force Nl Class Brace"
-ValueDefault=ignore
-
-[Nl Class Init Args]
-Category=3
-Description="<html>Add or remove newline before or after (depending on pos_class_comma,<br/>may not be IGNORE) each',' in the base class list.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_class_init_args=ignore|nl_class_init_args=add|nl_class_init_args=remove|nl_class_init_args=force|nl_class_init_args=not_defined
-ChoicesReadable="Ignore Nl Class Init Args|Add Nl Class Init Args|Remove Nl Class Init Args|Force Nl Class Init Args"
-ValueDefault=ignore
-
-[Nl Constr Init Args]
-Category=3
-Description="<html>Add or remove newline after each ',' in the constructor member<br/>initialization. Related to nl_constr_colon, pos_constr_colon and<br/>pos_constr_comma.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_constr_init_args=ignore|nl_constr_init_args=add|nl_constr_init_args=remove|nl_constr_init_args=force|nl_constr_init_args=not_defined
-ChoicesReadable="Ignore Nl Constr Init Args|Add Nl Constr Init Args|Remove Nl Constr Init Args|Force Nl Constr Init Args"
-ValueDefault=ignore
-
-[Nl Enum Own Lines]
-Category=3
-Description="<html>Add or remove newline before first element, after comma, and after last<br/>element, in 'enum'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_enum_own_lines=ignore|nl_enum_own_lines=add|nl_enum_own_lines=remove|nl_enum_own_lines=force|nl_enum_own_lines=not_defined
-ChoicesReadable="Ignore Nl Enum Own Lines|Add Nl Enum Own Lines|Remove Nl Enum Own Lines|Force Nl Enum Own Lines"
-ValueDefault=ignore
-
-[Nl Func Type Name]
-Category=3
-Description="<html>Add or remove newline between return type and function name in a function<br/>definition.<br/>might be modified by nl_func_leave_one_liners</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_type_name=ignore|nl_func_type_name=add|nl_func_type_name=remove|nl_func_type_name=force|nl_func_type_name=not_defined
-ChoicesReadable="Ignore Nl Func Type Name|Add Nl Func Type Name|Remove Nl Func Type Name|Force Nl Func Type Name"
-ValueDefault=ignore
-
-[Nl Func Type Name Class]
-Category=3
-Description="<html>Add or remove newline between return type and function name inside a class<br/>definition. If set to ignore, nl_func_type_name or nl_func_proto_type_name<br/>is used instead.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_type_name_class=ignore|nl_func_type_name_class=add|nl_func_type_name_class=remove|nl_func_type_name_class=force|nl_func_type_name_class=not_defined
-ChoicesReadable="Ignore Nl Func Type Name Class|Add Nl Func Type Name Class|Remove Nl Func Type Name Class|Force Nl Func Type Name Class"
-ValueDefault=ignore
-
-[Nl Func Class Scope]
-Category=3
-Description="<html>Add or remove newline between class specification and '::'<br/>in 'void A::f() { }'. Only appears in separate member implementation (does<br/>not appear with in-line implementation).</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_class_scope=ignore|nl_func_class_scope=add|nl_func_class_scope=remove|nl_func_class_scope=force|nl_func_class_scope=not_defined
-ChoicesReadable="Ignore Nl Func Class Scope|Add Nl Func Class Scope|Remove Nl Func Class Scope|Force Nl Func Class Scope"
-ValueDefault=ignore
-
-[Nl Func Scope Name]
-Category=3
-Description="<html>Add or remove newline between function scope and name, as in<br/>'void A :: &lt;here&gt; f() { }'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_scope_name=ignore|nl_func_scope_name=add|nl_func_scope_name=remove|nl_func_scope_name=force|nl_func_scope_name=not_defined
-ChoicesReadable="Ignore Nl Func Scope Name|Add Nl Func Scope Name|Remove Nl Func Scope Name|Force Nl Func Scope Name"
-ValueDefault=ignore
-
-[Nl Func Proto Type Name]
-Category=3
-Description="<html>Add or remove newline between return type and function name in a prototype.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_proto_type_name=ignore|nl_func_proto_type_name=add|nl_func_proto_type_name=remove|nl_func_proto_type_name=force|nl_func_proto_type_name=not_defined
-ChoicesReadable="Ignore Nl Func Proto Type Name|Add Nl Func Proto Type Name|Remove Nl Func Proto Type Name|Force Nl Func Proto Type Name"
-ValueDefault=ignore
-
-[Nl Func Paren]
-Category=3
-Description="<html>Add or remove newline between a function name and the opening '(' in the<br/>declaration.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_paren=ignore|nl_func_paren=add|nl_func_paren=remove|nl_func_paren=force|nl_func_paren=not_defined
-ChoicesReadable="Ignore Nl Func Paren|Add Nl Func Paren|Remove Nl Func Paren|Force Nl Func Paren"
-ValueDefault=ignore
-
-[Nl Func Paren Empty]
-Category=3
-Description="<html>Overrides nl_func_paren for functions with no parameters.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_paren_empty=ignore|nl_func_paren_empty=add|nl_func_paren_empty=remove|nl_func_paren_empty=force|nl_func_paren_empty=not_defined
-ChoicesReadable="Ignore Nl Func Paren Empty|Add Nl Func Paren Empty|Remove Nl Func Paren Empty|Force Nl Func Paren Empty"
-ValueDefault=ignore
-
-[Nl Func Def Paren]
-Category=3
-Description="<html>Add or remove newline between a function name and the opening '(' in the<br/>definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_paren=ignore|nl_func_def_paren=add|nl_func_def_paren=remove|nl_func_def_paren=force|nl_func_def_paren=not_defined
-ChoicesReadable="Ignore Nl Func Def Paren|Add Nl Func Def Paren|Remove Nl Func Def Paren|Force Nl Func Def Paren"
-ValueDefault=ignore
-
-[Nl Func Def Paren Empty]
-Category=3
-Description="<html>Overrides nl_func_def_paren for functions with no parameters.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_paren_empty=ignore|nl_func_def_paren_empty=add|nl_func_def_paren_empty=remove|nl_func_def_paren_empty=force|nl_func_def_paren_empty=not_defined
-ChoicesReadable="Ignore Nl Func Def Paren Empty|Add Nl Func Def Paren Empty|Remove Nl Func Def Paren Empty|Force Nl Func Def Paren Empty"
-ValueDefault=ignore
-
-[Nl Func Call Paren]
-Category=3
-Description="<html>Add or remove newline between a function name and the opening '(' in the<br/>call.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_call_paren=ignore|nl_func_call_paren=add|nl_func_call_paren=remove|nl_func_call_paren=force|nl_func_call_paren=not_defined
-ChoicesReadable="Ignore Nl Func Call Paren|Add Nl Func Call Paren|Remove Nl Func Call Paren|Force Nl Func Call Paren"
-ValueDefault=ignore
-
-[Nl Func Call Paren Empty]
-Category=3
-Description="<html>Overrides nl_func_call_paren for functions with no parameters.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_call_paren_empty=ignore|nl_func_call_paren_empty=add|nl_func_call_paren_empty=remove|nl_func_call_paren_empty=force|nl_func_call_paren_empty=not_defined
-ChoicesReadable="Ignore Nl Func Call Paren Empty|Add Nl Func Call Paren Empty|Remove Nl Func Call Paren Empty|Force Nl Func Call Paren Empty"
-ValueDefault=ignore
-
-[Nl Func Decl Start]
-Category=3
-Description="<html>Add or remove newline after '(' in a function declaration.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_decl_start=ignore|nl_func_decl_start=add|nl_func_decl_start=remove|nl_func_decl_start=force|nl_func_decl_start=not_defined
-ChoicesReadable="Ignore Nl Func Decl Start|Add Nl Func Decl Start|Remove Nl Func Decl Start|Force Nl Func Decl Start"
-ValueDefault=ignore
-
-[Nl Func Def Start]
-Category=3
-Description="<html>Add or remove newline after '(' in a function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_start=ignore|nl_func_def_start=add|nl_func_def_start=remove|nl_func_def_start=force|nl_func_def_start=not_defined
-ChoicesReadable="Ignore Nl Func Def Start|Add Nl Func Def Start|Remove Nl Func Def Start|Force Nl Func Def Start"
-ValueDefault=ignore
-
-[Nl Func Decl Start Single]
-Category=3
-Description="<html>Overrides nl_func_decl_start when there is only one parameter.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_decl_start_single=ignore|nl_func_decl_start_single=add|nl_func_decl_start_single=remove|nl_func_decl_start_single=force|nl_func_decl_start_single=not_defined
-ChoicesReadable="Ignore Nl Func Decl Start Single|Add Nl Func Decl Start Single|Remove Nl Func Decl Start Single|Force Nl Func Decl Start Single"
-ValueDefault=ignore
-
-[Nl Func Def Start Single]
-Category=3
-Description="<html>Overrides nl_func_def_start when there is only one parameter.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_start_single=ignore|nl_func_def_start_single=add|nl_func_def_start_single=remove|nl_func_def_start_single=force|nl_func_def_start_single=not_defined
-ChoicesReadable="Ignore Nl Func Def Start Single|Add Nl Func Def Start Single|Remove Nl Func Def Start Single|Force Nl Func Def Start Single"
-ValueDefault=ignore
-
-[Nl Func Decl Start Multi Line]
-Category=3
-Description="<html>Whether to add a newline after '(' in a function declaration if '(' and ')'<br/>are in different lines. If false, nl_func_decl_start is used instead.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_decl_start_multi_line=true|nl_func_decl_start_multi_line=false
-ValueDefault=false
-
-[Nl Func Def Start Multi Line]
-Category=3
-Description="<html>Whether to add a newline after '(' in a function definition if '(' and ')'<br/>are in different lines. If false, nl_func_def_start is used instead.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_def_start_multi_line=true|nl_func_def_start_multi_line=false
-ValueDefault=false
-
-[Nl Func Decl Args]
-Category=3
-Description="<html>Add or remove newline after each ',' in a function declaration.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_decl_args=ignore|nl_func_decl_args=add|nl_func_decl_args=remove|nl_func_decl_args=force|nl_func_decl_args=not_defined
-ChoicesReadable="Ignore Nl Func Decl Args|Add Nl Func Decl Args|Remove Nl Func Decl Args|Force Nl Func Decl Args"
-ValueDefault=ignore
-
-[Nl Func Def Args]
-Category=3
-Description="<html>Add or remove newline after each ',' in a function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_args=ignore|nl_func_def_args=add|nl_func_def_args=remove|nl_func_def_args=force|nl_func_def_args=not_defined
-ChoicesReadable="Ignore Nl Func Def Args|Add Nl Func Def Args|Remove Nl Func Def Args|Force Nl Func Def Args"
-ValueDefault=ignore
-
-[Nl Func Call Args]
-Category=3
-Description="<html>Add or remove newline after each ',' in a function call.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_call_args=ignore|nl_func_call_args=add|nl_func_call_args=remove|nl_func_call_args=force|nl_func_call_args=not_defined
-ChoicesReadable="Ignore Nl Func Call Args|Add Nl Func Call Args|Remove Nl Func Call Args|Force Nl Func Call Args"
-ValueDefault=ignore
-
-[Nl Func Decl Args Multi Line]
-Category=3
-Description="<html>Whether to add a newline after each ',' in a function declaration if '('<br/>and ')' are in different lines. If false, nl_func_decl_args is used instead.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_decl_args_multi_line=true|nl_func_decl_args_multi_line=false
-ValueDefault=false
-
-[Nl Func Def Args Multi Line]
-Category=3
-Description="<html>Whether to add a newline after each ',' in a function definition if '('<br/>and ')' are in different lines. If false, nl_func_def_args is used instead.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_def_args_multi_line=true|nl_func_def_args_multi_line=false
-ValueDefault=false
-
-[Nl Func Decl End]
-Category=3
-Description="<html>Add or remove newline before the ')' in a function declaration.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_decl_end=ignore|nl_func_decl_end=add|nl_func_decl_end=remove|nl_func_decl_end=force|nl_func_decl_end=not_defined
-ChoicesReadable="Ignore Nl Func Decl End|Add Nl Func Decl End|Remove Nl Func Decl End|Force Nl Func Decl End"
-ValueDefault=ignore
-
-[Nl Func Def End]
-Category=3
-Description="<html>Add or remove newline before the ')' in a function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_end=ignore|nl_func_def_end=add|nl_func_def_end=remove|nl_func_def_end=force|nl_func_def_end=not_defined
-ChoicesReadable="Ignore Nl Func Def End|Add Nl Func Def End|Remove Nl Func Def End|Force Nl Func Def End"
-ValueDefault=ignore
-
-[Nl Func Decl End Single]
-Category=3
-Description="<html>Overrides nl_func_decl_end when there is only one parameter.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_decl_end_single=ignore|nl_func_decl_end_single=add|nl_func_decl_end_single=remove|nl_func_decl_end_single=force|nl_func_decl_end_single=not_defined
-ChoicesReadable="Ignore Nl Func Decl End Single|Add Nl Func Decl End Single|Remove Nl Func Decl End Single|Force Nl Func Decl End Single"
-ValueDefault=ignore
-
-[Nl Func Def End Single]
-Category=3
-Description="<html>Overrides nl_func_def_end when there is only one parameter.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_end_single=ignore|nl_func_def_end_single=add|nl_func_def_end_single=remove|nl_func_def_end_single=force|nl_func_def_end_single=not_defined
-ChoicesReadable="Ignore Nl Func Def End Single|Add Nl Func Def End Single|Remove Nl Func Def End Single|Force Nl Func Def End Single"
-ValueDefault=ignore
-
-[Nl Func Decl End Multi Line]
-Category=3
-Description="<html>Whether to add a newline before ')' in a function declaration if '(' and ')'<br/>are in different lines. If false, nl_func_decl_end is used instead.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_decl_end_multi_line=true|nl_func_decl_end_multi_line=false
-ValueDefault=false
-
-[Nl Func Def End Multi Line]
-Category=3
-Description="<html>Whether to add a newline before ')' in a function definition if '(' and ')'<br/>are in different lines. If false, nl_func_def_end is used instead.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_def_end_multi_line=true|nl_func_def_end_multi_line=false
-ValueDefault=false
-
-[Nl Func Decl Empty]
-Category=3
-Description="<html>Add or remove newline between '()' in a function declaration.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_decl_empty=ignore|nl_func_decl_empty=add|nl_func_decl_empty=remove|nl_func_decl_empty=force|nl_func_decl_empty=not_defined
-ChoicesReadable="Ignore Nl Func Decl Empty|Add Nl Func Decl Empty|Remove Nl Func Decl Empty|Force Nl Func Decl Empty"
-ValueDefault=ignore
-
-[Nl Func Def Empty]
-Category=3
-Description="<html>Add or remove newline between '()' in a function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_empty=ignore|nl_func_def_empty=add|nl_func_def_empty=remove|nl_func_def_empty=force|nl_func_def_empty=not_defined
-ChoicesReadable="Ignore Nl Func Def Empty|Add Nl Func Def Empty|Remove Nl Func Def Empty|Force Nl Func Def Empty"
-ValueDefault=ignore
-
-[Nl Func Call Empty]
-Category=3
-Description="<html>Add or remove newline between '()' in a function call.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_call_empty=ignore|nl_func_call_empty=add|nl_func_call_empty=remove|nl_func_call_empty=force|nl_func_call_empty=not_defined
-ChoicesReadable="Ignore Nl Func Call Empty|Add Nl Func Call Empty|Remove Nl Func Call Empty|Force Nl Func Call Empty"
-ValueDefault=ignore
-
-[Nl Func Call Start]
-Category=3
-Description="<html>Whether to add a newline after '(' in a function call,<br/>has preference over nl_func_call_start_multi_line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_call_start=ignore|nl_func_call_start=add|nl_func_call_start=remove|nl_func_call_start=force|nl_func_call_start=not_defined
-ChoicesReadable="Ignore Nl Func Call Start|Add Nl Func Call Start|Remove Nl Func Call Start|Force Nl Func Call Start"
-ValueDefault=ignore
-
-[Nl Func Call End]
-Category=3
-Description="<html>Whether to add a newline before ')' in a function call.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_call_end=ignore|nl_func_call_end=add|nl_func_call_end=remove|nl_func_call_end=force|nl_func_call_end=not_defined
-ChoicesReadable="Ignore Nl Func Call End|Add Nl Func Call End|Remove Nl Func Call End|Force Nl Func Call End"
-ValueDefault=ignore
-
-[Nl Func Call Start Multi Line]
-Category=3
-Description="<html>Whether to add a newline after '(' in a function call if '(' and ')' are in<br/>different lines.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_call_start_multi_line=true|nl_func_call_start_multi_line=false
-ValueDefault=false
-
-[Nl Func Call Args Multi Line]
-Category=3
-Description="<html>Whether to add a newline after each ',' in a function call if '(' and ')'<br/>are in different lines.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_call_args_multi_line=true|nl_func_call_args_multi_line=false
-ValueDefault=false
-
-[Nl Func Call End Multi Line]
-Category=3
-Description="<html>Whether to add a newline before ')' in a function call if '(' and ')' are in<br/>different lines.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_call_end_multi_line=true|nl_func_call_end_multi_line=false
-ValueDefault=false
-
-[Nl Func Call Args Multi Line Ignore Closures]
-Category=3
-Description="<html>Whether to respect nl_func_call_XXX option in case of closure args.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_call_args_multi_line_ignore_closures=true|nl_func_call_args_multi_line_ignore_closures=false
-ValueDefault=false
-
-[Nl Template Start]
-Category=3
-Description="<html>Whether to add a newline after '&lt;' of a template parameter list.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_template_start=true|nl_template_start=false
-ValueDefault=false
-
-[Nl Template Args]
-Category=3
-Description="<html>Whether to add a newline after each ',' in a template parameter list.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_template_args=true|nl_template_args=false
-ValueDefault=false
-
-[Nl Template End]
-Category=3
-Description="<html>Whether to add a newline before '&gt;' of a template parameter list.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_template_end=true|nl_template_end=false
-ValueDefault=false
-
-[Nl Oc Msg Args]
-Category=3
-Description="<html>(OC) Whether to put each Objective-C message parameter on a separate line.<br/>See nl_oc_msg_leave_one_liner.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_oc_msg_args=true|nl_oc_msg_args=false
-ValueDefault=false
-
-[Nl Oc Msg Args Min Params]
-Category=3
-Description="<html>(OC) Minimum number of Objective-C message parameters before applying nl_oc_msg_args.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_oc_msg_args_min_params="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Oc Msg Args Max Code Width]
-Category=3
-Description="<html>(OC) Max code width of Objective-C message before applying nl_oc_msg_args.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_oc_msg_args_max_code_width="
-MinVal=0
-MaxVal=10000
-ValueDefault=0
-
-[Nl Fdef Brace]
-Category=3
-Description="<html>Add or remove newline between function signature and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_fdef_brace=ignore|nl_fdef_brace=add|nl_fdef_brace=remove|nl_fdef_brace=force|nl_fdef_brace=not_defined
-ChoicesReadable="Ignore Nl Fdef Brace|Add Nl Fdef Brace|Remove Nl Fdef Brace|Force Nl Fdef Brace"
-ValueDefault=ignore
-
-[Nl Fdef Brace Cond]
-Category=3
-Description="<html>Add or remove newline between function signature and '{',<br/>if signature ends with ')'. Overrides nl_fdef_brace.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_fdef_brace_cond=ignore|nl_fdef_brace_cond=add|nl_fdef_brace_cond=remove|nl_fdef_brace_cond=force|nl_fdef_brace_cond=not_defined
-ChoicesReadable="Ignore Nl Fdef Brace Cond|Add Nl Fdef Brace Cond|Remove Nl Fdef Brace Cond|Force Nl Fdef Brace Cond"
-ValueDefault=ignore
-
-[Nl Cpp Ldef Brace]
-Category=3
-Description="<html>Add or remove newline between C++11 lambda signature and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_cpp_ldef_brace=ignore|nl_cpp_ldef_brace=add|nl_cpp_ldef_brace=remove|nl_cpp_ldef_brace=force|nl_cpp_ldef_brace=not_defined
-ChoicesReadable="Ignore Nl Cpp Ldef Brace|Add Nl Cpp Ldef Brace|Remove Nl Cpp Ldef Brace|Force Nl Cpp Ldef Brace"
-ValueDefault=ignore
-
-[Nl Return Expr]
-Category=3
-Description="<html>Add or remove newline between 'return' and the return expression.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_return_expr=ignore|nl_return_expr=add|nl_return_expr=remove|nl_return_expr=force|nl_return_expr=not_defined
-ChoicesReadable="Ignore Nl Return Expr|Add Nl Return Expr|Remove Nl Return Expr|Force Nl Return Expr"
-ValueDefault=ignore
-
-[Nl Throw Expr]
-Category=3
-Description="<html>Add or remove newline between 'throw' and the throw expression.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_throw_expr=ignore|nl_throw_expr=add|nl_throw_expr=remove|nl_throw_expr=force|nl_throw_expr=not_defined
-ChoicesReadable="Ignore Nl Throw Expr|Add Nl Throw Expr|Remove Nl Throw Expr|Force Nl Throw Expr"
-ValueDefault=ignore
-
-[Nl After Semicolon]
-Category=3
-Description="<html>Whether to add a newline after semicolons, except in 'for' statements.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_semicolon=true|nl_after_semicolon=false
-ValueDefault=false
-
-[Nl Paren Dbrace Open]
-Category=3
-Description="<html>(Java) Add or remove newline between the ')' and '{{' of the double brace<br/>initializer.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_paren_dbrace_open=ignore|nl_paren_dbrace_open=add|nl_paren_dbrace_open=remove|nl_paren_dbrace_open=force|nl_paren_dbrace_open=not_defined
-ChoicesReadable="Ignore Nl Paren Dbrace Open|Add Nl Paren Dbrace Open|Remove Nl Paren Dbrace Open|Force Nl Paren Dbrace Open"
-ValueDefault=ignore
-
-[Nl Type Brace Init Lst]
-Category=3
-Description="<html>Whether to add a newline after the type in an unnamed temporary<br/>direct-list-initialization, better:<br/>before a direct-list-initialization.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_type_brace_init_lst=ignore|nl_type_brace_init_lst=add|nl_type_brace_init_lst=remove|nl_type_brace_init_lst=force|nl_type_brace_init_lst=not_defined
-ChoicesReadable="Ignore Nl Type Brace Init Lst|Add Nl Type Brace Init Lst|Remove Nl Type Brace Init Lst|Force Nl Type Brace Init Lst"
-ValueDefault=ignore
-
-[Nl Type Brace Init Lst Open]
-Category=3
-Description="<html>Whether to add a newline after the open brace in an unnamed temporary<br/>direct-list-initialization.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_type_brace_init_lst_open=ignore|nl_type_brace_init_lst_open=add|nl_type_brace_init_lst_open=remove|nl_type_brace_init_lst_open=force|nl_type_brace_init_lst_open=not_defined
-ChoicesReadable="Ignore Nl Type Brace Init Lst Open|Add Nl Type Brace Init Lst Open|Remove Nl Type Brace Init Lst Open|Force Nl Type Brace Init Lst Open"
-ValueDefault=ignore
-
-[Nl Type Brace Init Lst Close]
-Category=3
-Description="<html>Whether to add a newline before the close brace in an unnamed temporary<br/>direct-list-initialization.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_type_brace_init_lst_close=ignore|nl_type_brace_init_lst_close=add|nl_type_brace_init_lst_close=remove|nl_type_brace_init_lst_close=force|nl_type_brace_init_lst_close=not_defined
-ChoicesReadable="Ignore Nl Type Brace Init Lst Close|Add Nl Type Brace Init Lst Close|Remove Nl Type Brace Init Lst Close|Force Nl Type Brace Init Lst Close"
-ValueDefault=ignore
-
-[Nl Before Brace Open]
-Category=3
-Description="<html>Whether to add a newline before '{'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_before_brace_open=true|nl_before_brace_open=false
-ValueDefault=false
-
-[Nl After Brace Open]
-Category=3
-Description="<html>Whether to add a newline after '{'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_brace_open=true|nl_after_brace_open=false
-ValueDefault=false
-
-[Nl After Brace Open Cmt]
-Category=3
-Description="<html>Whether to add a newline between the open brace and a trailing single-line<br/>comment. Requires nl_after_brace_open=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_brace_open_cmt=true|nl_after_brace_open_cmt=false
-ValueDefault=false
-
-[Nl After Vbrace Open]
-Category=3
-Description="<html>Whether to add a newline after a virtual brace open with a non-empty body.<br/>These occur in un-braced if/while/do/for statement bodies.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_vbrace_open=true|nl_after_vbrace_open=false
-ValueDefault=false
-
-[Nl After Vbrace Open Empty]
-Category=3
-Description="<html>Whether to add a newline after a virtual brace open with an empty body.<br/>These occur in un-braced if/while/do/for statement bodies.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_vbrace_open_empty=true|nl_after_vbrace_open_empty=false
-ValueDefault=false
-
-[Nl After Brace Close]
-Category=3
-Description="<html>Whether to add a newline after '}'. Does not apply if followed by a<br/>necessary ';'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_brace_close=true|nl_after_brace_close=false
-ValueDefault=false
-
-[Nl After Vbrace Close]
-Category=3
-Description="<html>Whether to add a newline after a virtual brace close,<br/>as in 'if (foo) a++; &lt;here&gt; return;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_vbrace_close=true|nl_after_vbrace_close=false
-ValueDefault=false
-
-[Nl Brace Struct Var]
-Category=3
-Description="<html>Add or remove newline between the close brace and identifier,<br/>as in 'struct { int a; } &lt;here&gt; b;'. Affects enumerations, unions and<br/>structures. If set to ignore, uses nl_after_brace_close.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_struct_var=ignore|nl_brace_struct_var=add|nl_brace_struct_var=remove|nl_brace_struct_var=force|nl_brace_struct_var=not_defined
-ChoicesReadable="Ignore Nl Brace Struct Var|Add Nl Brace Struct Var|Remove Nl Brace Struct Var|Force Nl Brace Struct Var"
-ValueDefault=ignore
-
-[Nl Define Macro]
-Category=3
-Description="<html>Whether to alter newlines in '#define' macros.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_define_macro=true|nl_define_macro=false
-ValueDefault=false
-
-[Nl Squeeze Paren Close]
-Category=3
-Description="<html>Whether to alter newlines between consecutive parenthesis closes. The number<br/>of closing parentheses in a line will depend on respective open parenthesis<br/>lines.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_squeeze_paren_close=true|nl_squeeze_paren_close=false
-ValueDefault=false
-
-[Nl Squeeze Ifdef]
-Category=3
-Description="<html>Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and<br/>'#endif'. Does not affect top-level #ifdefs.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_squeeze_ifdef=true|nl_squeeze_ifdef=false
-ValueDefault=false
-
-[Nl Squeeze Ifdef Top Level]
-Category=3
-Description="<html>Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_squeeze_ifdef_top_level=true|nl_squeeze_ifdef_top_level=false
-ValueDefault=false
-
-[Nl Before If]
-Category=3
-Description="<html>Add or remove blank line before 'if'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_if=ignore|nl_before_if=add|nl_before_if=remove|nl_before_if=force|nl_before_if=not_defined
-ChoicesReadable="Ignore Nl Before If|Add Nl Before If|Remove Nl Before If|Force Nl Before If"
-ValueDefault=ignore
-
-[Nl After If]
-Category=3
-Description="<html>Add or remove blank line after 'if' statement. Add/Force work only if the<br/>next token is not a closing brace.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_if=ignore|nl_after_if=add|nl_after_if=remove|nl_after_if=force|nl_after_if=not_defined
-ChoicesReadable="Ignore Nl After If|Add Nl After If|Remove Nl After If|Force Nl After If"
-ValueDefault=ignore
-
-[Nl Before For]
-Category=3
-Description="<html>Add or remove blank line before 'for'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_for=ignore|nl_before_for=add|nl_before_for=remove|nl_before_for=force|nl_before_for=not_defined
-ChoicesReadable="Ignore Nl Before For|Add Nl Before For|Remove Nl Before For|Force Nl Before For"
-ValueDefault=ignore
-
-[Nl After For]
-Category=3
-Description="<html>Add or remove blank line after 'for' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_for=ignore|nl_after_for=add|nl_after_for=remove|nl_after_for=force|nl_after_for=not_defined
-ChoicesReadable="Ignore Nl After For|Add Nl After For|Remove Nl After For|Force Nl After For"
-ValueDefault=ignore
-
-[Nl Before While]
-Category=3
-Description="<html>Add or remove blank line before 'while'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_while=ignore|nl_before_while=add|nl_before_while=remove|nl_before_while=force|nl_before_while=not_defined
-ChoicesReadable="Ignore Nl Before While|Add Nl Before While|Remove Nl Before While|Force Nl Before While"
-ValueDefault=ignore
-
-[Nl After While]
-Category=3
-Description="<html>Add or remove blank line after 'while' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_while=ignore|nl_after_while=add|nl_after_while=remove|nl_after_while=force|nl_after_while=not_defined
-ChoicesReadable="Ignore Nl After While|Add Nl After While|Remove Nl After While|Force Nl After While"
-ValueDefault=ignore
-
-[Nl Before Switch]
-Category=3
-Description="<html>Add or remove blank line before 'switch'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_switch=ignore|nl_before_switch=add|nl_before_switch=remove|nl_before_switch=force|nl_before_switch=not_defined
-ChoicesReadable="Ignore Nl Before Switch|Add Nl Before Switch|Remove Nl Before Switch|Force Nl Before Switch"
-ValueDefault=ignore
-
-[Nl After Switch]
-Category=3
-Description="<html>Add or remove blank line after 'switch' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_switch=ignore|nl_after_switch=add|nl_after_switch=remove|nl_after_switch=force|nl_after_switch=not_defined
-ChoicesReadable="Ignore Nl After Switch|Add Nl After Switch|Remove Nl After Switch|Force Nl After Switch"
-ValueDefault=ignore
-
-[Nl Before Synchronized]
-Category=3
-Description="<html>Add or remove blank line before 'synchronized'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_synchronized=ignore|nl_before_synchronized=add|nl_before_synchronized=remove|nl_before_synchronized=force|nl_before_synchronized=not_defined
-ChoicesReadable="Ignore Nl Before Synchronized|Add Nl Before Synchronized|Remove Nl Before Synchronized|Force Nl Before Synchronized"
-ValueDefault=ignore
-
-[Nl After Synchronized]
-Category=3
-Description="<html>Add or remove blank line after 'synchronized' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_synchronized=ignore|nl_after_synchronized=add|nl_after_synchronized=remove|nl_after_synchronized=force|nl_after_synchronized=not_defined
-ChoicesReadable="Ignore Nl After Synchronized|Add Nl After Synchronized|Remove Nl After Synchronized|Force Nl After Synchronized"
-ValueDefault=ignore
-
-[Nl Before Do]
-Category=3
-Description="<html>Add or remove blank line before 'do'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_do=ignore|nl_before_do=add|nl_before_do=remove|nl_before_do=force|nl_before_do=not_defined
-ChoicesReadable="Ignore Nl Before Do|Add Nl Before Do|Remove Nl Before Do|Force Nl Before Do"
-ValueDefault=ignore
-
-[Nl After Do]
-Category=3
-Description="<html>Add or remove blank line after 'do/while' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_do=ignore|nl_after_do=add|nl_after_do=remove|nl_after_do=force|nl_after_do=not_defined
-ChoicesReadable="Ignore Nl After Do|Add Nl After Do|Remove Nl After Do|Force Nl After Do"
-ValueDefault=ignore
-
-[Nl Before Ignore After Case]
-Category=3
-Description="<html>Ignore nl_before_{if,for,switch,do,synchronized} if the control<br/>statement is immediately after a case statement.<br/>if nl_before_{if,for,switch,do} is set to remove, this option<br/>does nothing.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_before_ignore_after_case=true|nl_before_ignore_after_case=false
-ValueDefault=false
-
-[Nl Before Return]
-Category=3
-Description="<html>Whether to put a blank line before 'return' statements, unless after an open<br/>brace.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_before_return=true|nl_before_return=false
-ValueDefault=false
-
-[Nl After Return]
-Category=3
-Description="<html>Whether to put a blank line after 'return' statements, unless followed by a<br/>close brace.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_return=true|nl_after_return=false
-ValueDefault=false
-
-[Nl Before Member]
-Category=3
-Description="<html>Whether to put a blank line before a member '.' or '-&gt;' operators.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_member=ignore|nl_before_member=add|nl_before_member=remove|nl_before_member=force|nl_before_member=not_defined
-ChoicesReadable="Ignore Nl Before Member|Add Nl Before Member|Remove Nl Before Member|Force Nl Before Member"
-ValueDefault=ignore
-
-[Nl After Member]
-Category=3
-Description="<html>(Java) Whether to put a blank line after a member '.' or '-&gt;' operators.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_member=ignore|nl_after_member=add|nl_after_member=remove|nl_after_member=force|nl_after_member=not_defined
-ChoicesReadable="Ignore Nl After Member|Add Nl After Member|Remove Nl After Member|Force Nl After Member"
-ValueDefault=ignore
-
-[Nl Ds Struct Enum Cmt]
-Category=3
-Description="<html>Whether to double-space commented-entries in 'struct'/'union'/'enum'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_ds_struct_enum_cmt=true|nl_ds_struct_enum_cmt=false
-ValueDefault=false
-
-[Nl Ds Struct Enum Close Brace]
-Category=3
-Description="<html>Whether to force a newline before '}' of a 'struct'/'union'/'enum'.<br/>(Lower priority than eat_blanks_before_close_brace.)</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_ds_struct_enum_close_brace=true|nl_ds_struct_enum_close_brace=false
-ValueDefault=false
-
-[Nl Class Colon]
-Category=3
-Description="<html>Add or remove newline before or after (depending on pos_class_colon) a class<br/>colon, as in 'class Foo &lt;here&gt; : &lt;or here&gt; public Bar'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_class_colon=ignore|nl_class_colon=add|nl_class_colon=remove|nl_class_colon=force|nl_class_colon=not_defined
-ChoicesReadable="Ignore Nl Class Colon|Add Nl Class Colon|Remove Nl Class Colon|Force Nl Class Colon"
-ValueDefault=ignore
-
-[Nl Constr Colon]
-Category=3
-Description="<html>Add or remove newline around a class constructor colon. The exact position<br/>depends on nl_constr_init_args, pos_constr_colon and pos_constr_comma.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_constr_colon=ignore|nl_constr_colon=add|nl_constr_colon=remove|nl_constr_colon=force|nl_constr_colon=not_defined
-ChoicesReadable="Ignore Nl Constr Colon|Add Nl Constr Colon|Remove Nl Constr Colon|Force Nl Constr Colon"
-ValueDefault=ignore
-
-[Nl Namespace Two To One Liner]
-Category=3
-Description="<html>Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }'<br/>into a single line. If true, prevents other brace newline rules from turning<br/>such code into four lines. If true, it also preserves one-liner namespaces.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_namespace_two_to_one_liner=true|nl_namespace_two_to_one_liner=false
-ValueDefault=false
-
-[Nl Create If One Liner]
-Category=3
-Description="<html>Whether to remove a newline in simple unbraced if statements, turning them<br/>into one-liners, as in 'if(b)\n i++;' =&gt; 'if(b) i++;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_create_if_one_liner=true|nl_create_if_one_liner=false
-ValueDefault=false
-
-[Nl Create For One Liner]
-Category=3
-Description="<html>Whether to remove a newline in simple unbraced for statements, turning them<br/>into one-liners, as in 'for (...)\n stmt;' =&gt; 'for (...) stmt;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_create_for_one_liner=true|nl_create_for_one_liner=false
-ValueDefault=false
-
-[Nl Create While One Liner]
-Category=3
-Description="<html>Whether to remove a newline in simple unbraced while statements, turning<br/>them into one-liners, as in 'while (expr)\n stmt;' =&gt; 'while (expr) stmt;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_create_while_one_liner=true|nl_create_while_one_liner=false
-ValueDefault=false
-
-[Nl Create Func Def One Liner]
-Category=3
-Description="<html>Whether to collapse a function definition whose body (not counting braces)<br/>is only one line so that the entire definition (prototype, braces, body) is<br/>a single line.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_create_func_def_one_liner=true|nl_create_func_def_one_liner=false
-ValueDefault=false
-
-[Nl Create List One Liner]
-Category=3
-Description="<html>Whether to split one-line simple list definitions into three lines by<br/>adding newlines, as in 'int a[12] = { &lt;here&gt; 0 &lt;here&gt; };'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_create_list_one_liner=true|nl_create_list_one_liner=false
-ValueDefault=false
-
-[Nl Split If One Liner]
-Category=3
-Description="<html>Whether to split one-line simple unbraced if statements into two lines by<br/>adding a newline, as in 'if(b) &lt;here&gt; i++;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_split_if_one_liner=true|nl_split_if_one_liner=false
-ValueDefault=false
-
-[Nl Split For One Liner]
-Category=3
-Description="<html>Whether to split one-line simple unbraced for statements into two lines by<br/>adding a newline, as in 'for (...) &lt;here&gt; stmt;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_split_for_one_liner=true|nl_split_for_one_liner=false
-ValueDefault=false
-
-[Nl Split While One Liner]
-Category=3
-Description="<html>Whether to split one-line simple unbraced while statements into two lines by<br/>adding a newline, as in 'while (expr) &lt;here&gt; stmt;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_split_while_one_liner=true|nl_split_while_one_liner=false
-ValueDefault=false
-
-[Donot Add Nl Before Cpp Comment]
-Category=3
-Description="<html>Don't add a newline before a cpp-comment in a parameter list of a function<br/>call.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=donot_add_nl_before_cpp_comment=true|donot_add_nl_before_cpp_comment=false
-ValueDefault=false
-
-[Nl Max]
-Category=4
-Description="<html>The maximum number of consecutive newlines (3 = 2 blank lines).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_max="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Max Blank In Func]
-Category=4
-Description="<html>The maximum number of consecutive newlines in a function.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_max_blank_in_func="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Inside Empty Func]
-Category=4
-Description="<html>The number of newlines inside an empty function body.<br/>This option overrides eat_blanks_after_open_brace and<br/>eat_blanks_before_close_brace, but is ignored when<br/>nl_collapse_empty_body_functions=true</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_inside_empty_func="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Func Body Proto]
-Category=4
-Description="<html>The number of newlines before a function prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_func_body_proto="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Func Body Def]
-Category=4
-Description="<html>The number of newlines before a multi-line function definition. Where<br/>applicable, this option is overridden with eat_blanks_after_open_brace=true</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_func_body_def="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Func Class Proto]
-Category=4
-Description="<html>The number of newlines before a class constructor/destructor prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_func_class_proto="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Func Class Def]
-Category=4
-Description="<html>The number of newlines before a class constructor/destructor definition.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_func_class_def="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Func Proto]
-Category=4
-Description="<html>The number of newlines after a function prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_func_proto="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Func Proto Group]
-Category=4
-Description="<html>The number of newlines after a function prototype, if not followed by<br/>another function prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_func_proto_group="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Func Class Proto]
-Category=4
-Description="<html>The number of newlines after a class constructor/destructor prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_func_class_proto="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Func Class Proto Group]
-Category=4
-Description="<html>The number of newlines after a class constructor/destructor prototype,<br/>if not followed by another constructor/destructor prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_func_class_proto_group="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Class Leave One Liner Groups]
-Category=4
-Description="<html>Whether one-line method definitions inside a class body should be treated<br/>as if they were prototypes for the purposes of adding newlines.<br/><br/>Requires nl_class_leave_one_liners=true. Overrides nl_before_func_body_def<br/>and nl_before_func_class_def for one-liners.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_class_leave_one_liner_groups=true|nl_class_leave_one_liner_groups=false
-ValueDefault=false
-
-[Nl After Func Body]
-Category=4
-Description="<html>The number of newlines after '}' of a multi-line function body.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_func_body="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Func Body Class]
-Category=4
-Description="<html>The number of newlines after '}' of a multi-line function body in a class<br/>declaration. Also affects class constructors/destructors.<br/><br/>Overrides nl_after_func_body.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_func_body_class="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Func Body One Liner]
-Category=4
-Description="<html>The number of newlines after '}' of a single line function body. Also<br/>affects class constructors/destructors.<br/><br/>Overrides nl_after_func_body and nl_after_func_body_class.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_func_body_one_liner="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Typedef Blk Start]
-Category=4
-Description="<html>The number of newlines before a block of typedefs. If nl_after_access_spec<br/>is non-zero, that option takes precedence.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_typedef_blk_start="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Typedef Blk End]
-Category=4
-Description="<html>The number of newlines after a block of typedefs.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_typedef_blk_end="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Typedef Blk In]
-Category=4
-Description="<html>The maximum number of consecutive newlines within a block of typedefs.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_typedef_blk_in="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Var Def Blk End Func Top]
-Category=4
-Description="<html>The minimum number of blank lines after a block of variable definitions<br/>at the top of a function body. If any preprocessor directives appear<br/>between the opening brace of the function and the variable block, then<br/>it is considered as not at the top of the function.Newlines are added<br/>before trailing preprocessor directives, if any exist.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_var_def_blk_end_func_top="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Var Def Blk Start]
-Category=4
-Description="<html>The minimum number of empty newlines before a block of variable definitions<br/>not at the top of a function body. If nl_after_access_spec is non-zero,<br/>that option takes precedence. Newlines are not added at the top of the<br/>file or just after an opening brace. Newlines are added above any<br/>preprocessor directives before the block.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_var_def_blk_start="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Var Def Blk End]
-Category=4
-Description="<html>The minimum number of empty newlines after a block of variable definitions<br/>not at the top of a function body. Newlines are not added if the block<br/>is at the bottom of the file or just before a preprocessor directive.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_var_def_blk_end="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Var Def Blk In]
-Category=4
-Description="<html>The maximum number of consecutive newlines within a block of variable<br/>definitions.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_var_def_blk_in="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Block Comment]
-Category=4
-Description="<html>The minimum number of newlines before a multi-line comment.<br/>Doesn't apply if after a brace open or another multi-line comment.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_block_comment="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before C Comment]
-Category=4
-Description="<html>The minimum number of newlines before a single-line C comment.<br/>Doesn't apply if after a brace open or other single-line C comments.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_c_comment="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Cpp Comment]
-Category=4
-Description="<html>The minimum number of newlines before a CPP comment.<br/>Doesn't apply if after a brace open or other CPP comments.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_cpp_comment="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Multiline Comment]
-Category=4
-Description="<html>Whether to force a newline after a multi-line comment.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_multiline_comment=true|nl_after_multiline_comment=false
-ValueDefault=false
-
-[Nl After Label Colon]
-Category=4
-Description="<html>Whether to force a newline after a label's colon.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_label_colon=true|nl_after_label_colon=false
-ValueDefault=false
-
-[Nl Before Struct]
-Category=4
-Description="<html>The number of newlines before a struct definition.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_struct="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Struct]
-Category=4
-Description="<html>The number of newlines after '}' or ';' of a struct/enum/union definition.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_struct="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Class]
-Category=4
-Description="<html>The number of newlines before a class definition.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_class="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Class]
-Category=4
-Description="<html>The number of newlines after '}' or ';' of a class definition.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_class="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Namespace]
-Category=4
-Description="<html>The number of newlines before a namespace.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_namespace="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Inside Namespace]
-Category=4
-Description="<html>The number of newlines after '{' of a namespace. This also adds newlines<br/>before the matching '}'.<br/><br/>0: Apply eat_blanks_after_open_brace or eat_blanks_before_close_brace if<br/> applicable, otherwise no change.<br/><br/>Overrides eat_blanks_after_open_brace and eat_blanks_before_close_brace.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_inside_namespace="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Namespace]
-Category=4
-Description="<html>The number of newlines after '}' of a namespace.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_namespace="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Access Spec]
-Category=4
-Description="<html>The number of newlines before an access specifier label. This also includes<br/>the Qt-specific 'signals:' and 'slots:'. Will not change the newline count<br/>if after a brace open.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_access_spec="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Access Spec]
-Category=4
-Description="<html>The number of newlines after an access specifier label. This also includes<br/>the Qt-specific 'signals:' and 'slots:'. Will not change the newline count<br/>if after a brace open.<br/><br/>0: No change (default).<br/><br/>Overrides nl_typedef_blk_start and nl_var_def_blk_start.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_access_spec="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Comment Func Def]
-Category=4
-Description="<html>The number of newlines between a function definition and the function<br/>comment, as in '// comment\n &lt;here&gt; void foo() {...}'.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_comment_func_def="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Try Catch Finally]
-Category=4
-Description="<html>The number of newlines after a try-catch-finally block that isn't followed<br/>by a brace close.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_try_catch_finally="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Around Cs Property]
-Category=4
-Description="<html>(C#) The number of newlines before and after a property, indexer or event<br/>declaration.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_around_cs_property="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Between Get Set]
-Category=4
-Description="<html>(C#) The number of newlines between the get/set/add/remove handlers.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_between_get_set="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Property Brace]
-Category=4
-Description="<html>(C#) Add or remove newline between property and the '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_property_brace=ignore|nl_property_brace=add|nl_property_brace=remove|nl_property_brace=force|nl_property_brace=not_defined
-ChoicesReadable="Ignore Nl Property Brace|Add Nl Property Brace|Remove Nl Property Brace|Force Nl Property Brace"
-ValueDefault=ignore
-
-[Eat Blanks After Open Brace]
-Category=4
-Description="<html>Whether to remove blank lines after '{'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=eat_blanks_after_open_brace=true|eat_blanks_after_open_brace=false
-ValueDefault=false
-
-[Eat Blanks Before Close Brace]
-Category=4
-Description="<html>Whether to remove blank lines before '}'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=eat_blanks_before_close_brace=true|eat_blanks_before_close_brace=false
-ValueDefault=false
-
-[Nl Remove Extra Newlines]
-Category=4
-Description="<html>How aggressively to remove extra newlines not in preprocessor.<br/><br/>0: No change (default)<br/>1: Remove most newlines not handled by other config<br/>2: Remove all newlines and reformat completely by config</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_remove_extra_newlines="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Nl After Annotation]
-Category=4
-Description="<html>(Java) Add or remove newline after an annotation statement. Only affects<br/>annotations that are after a newline.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_annotation=ignore|nl_after_annotation=add|nl_after_annotation=remove|nl_after_annotation=force|nl_after_annotation=not_defined
-ChoicesReadable="Ignore Nl After Annotation|Add Nl After Annotation|Remove Nl After Annotation|Force Nl After Annotation"
-ValueDefault=ignore
-
-[Nl Between Annotation]
-Category=4
-Description="<html>(Java) Add or remove newline between two annotations.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_between_annotation=ignore|nl_between_annotation=add|nl_between_annotation=remove|nl_between_annotation=force|nl_between_annotation=not_defined
-ChoicesReadable="Ignore Nl Between Annotation|Add Nl Between Annotation|Remove Nl Between Annotation|Force Nl Between Annotation"
-ValueDefault=ignore
-
-[Nl Before Whole File Ifdef]
-Category=4
-Description="<html>The number of newlines before a whole-file #ifdef.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_whole_file_ifdef="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Whole File Ifdef]
-Category=4
-Description="<html>The number of newlines after a whole-file #ifdef.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_whole_file_ifdef="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Whole File Endif]
-Category=4
-Description="<html>The number of newlines before a whole-file #endif.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_whole_file_endif="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Whole File Endif]
-Category=4
-Description="<html>The number of newlines after a whole-file #endif.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_whole_file_endif="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Pos Arith]
-Category=5
-Description="<html>The position of arithmetic operators in wrapped expressions.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_arith=ignore|pos_arith=break|pos_arith=force|pos_arith=lead|pos_arith=trail|pos_arith=join|pos_arith=lead_break|pos_arith=lead_force|pos_arith=trail_break|pos_arith=trail_force
-ChoicesReadable="Ignore Pos Arith|Break Pos Arith|Force Pos Arith|Lead Pos Arith|Trail Pos Arith|Join Pos Arith|Lead Break Pos Arith|Lead Force Pos Arith|Trail Break Pos Arith|Trail Force Pos Arith"
-ValueDefault=ignore
-
-[Pos Assign]
-Category=5
-Description="<html>The position of assignment in wrapped expressions. Do not affect '='<br/>followed by '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_assign=ignore|pos_assign=break|pos_assign=force|pos_assign=lead|pos_assign=trail|pos_assign=join|pos_assign=lead_break|pos_assign=lead_force|pos_assign=trail_break|pos_assign=trail_force
-ChoicesReadable="Ignore Pos Assign|Break Pos Assign|Force Pos Assign|Lead Pos Assign|Trail Pos Assign|Join Pos Assign|Lead Break Pos Assign|Lead Force Pos Assign|Trail Break Pos Assign|Trail Force Pos Assign"
-ValueDefault=ignore
-
-[Pos Bool]
-Category=5
-Description="<html>The position of Boolean operators in wrapped expressions.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_bool=ignore|pos_bool=break|pos_bool=force|pos_bool=lead|pos_bool=trail|pos_bool=join|pos_bool=lead_break|pos_bool=lead_force|pos_bool=trail_break|pos_bool=trail_force
-ChoicesReadable="Ignore Pos Bool|Break Pos Bool|Force Pos Bool|Lead Pos Bool|Trail Pos Bool|Join Pos Bool|Lead Break Pos Bool|Lead Force Pos Bool|Trail Break Pos Bool|Trail Force Pos Bool"
-ValueDefault=ignore
-
-[Pos Compare]
-Category=5
-Description="<html>The position of comparison operators in wrapped expressions.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_compare=ignore|pos_compare=break|pos_compare=force|pos_compare=lead|pos_compare=trail|pos_compare=join|pos_compare=lead_break|pos_compare=lead_force|pos_compare=trail_break|pos_compare=trail_force
-ChoicesReadable="Ignore Pos Compare|Break Pos Compare|Force Pos Compare|Lead Pos Compare|Trail Pos Compare|Join Pos Compare|Lead Break Pos Compare|Lead Force Pos Compare|Trail Break Pos Compare|Trail Force Pos Compare"
-ValueDefault=ignore
-
-[Pos Conditional]
-Category=5
-Description="<html>The position of conditional operators, as in the '?' and ':' of<br/>'expr ? stmt : stmt', in wrapped expressions.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_conditional=ignore|pos_conditional=break|pos_conditional=force|pos_conditional=lead|pos_conditional=trail|pos_conditional=join|pos_conditional=lead_break|pos_conditional=lead_force|pos_conditional=trail_break|pos_conditional=trail_force
-ChoicesReadable="Ignore Pos Conditional|Break Pos Conditional|Force Pos Conditional|Lead Pos Conditional|Trail Pos Conditional|Join Pos Conditional|Lead Break Pos Conditional|Lead Force Pos Conditional|Trail Break Pos Conditional|Trail Force Pos Conditional"
-ValueDefault=ignore
-
-[Pos Comma]
-Category=5
-Description="<html>The position of the comma in wrapped expressions.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_comma=ignore|pos_comma=break|pos_comma=force|pos_comma=lead|pos_comma=trail|pos_comma=join|pos_comma=lead_break|pos_comma=lead_force|pos_comma=trail_break|pos_comma=trail_force
-ChoicesReadable="Ignore Pos Comma|Break Pos Comma|Force Pos Comma|Lead Pos Comma|Trail Pos Comma|Join Pos Comma|Lead Break Pos Comma|Lead Force Pos Comma|Trail Break Pos Comma|Trail Force Pos Comma"
-ValueDefault=ignore
-
-[Pos Enum Comma]
-Category=5
-Description="<html>The position of the comma in enum entries.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_enum_comma=ignore|pos_enum_comma=break|pos_enum_comma=force|pos_enum_comma=lead|pos_enum_comma=trail|pos_enum_comma=join|pos_enum_comma=lead_break|pos_enum_comma=lead_force|pos_enum_comma=trail_break|pos_enum_comma=trail_force
-ChoicesReadable="Ignore Pos Enum Comma|Break Pos Enum Comma|Force Pos Enum Comma|Lead Pos Enum Comma|Trail Pos Enum Comma|Join Pos Enum Comma|Lead Break Pos Enum Comma|Lead Force Pos Enum Comma|Trail Break Pos Enum Comma|Trail Force Pos Enum Comma"
-ValueDefault=ignore
-
-[Pos Class Comma]
-Category=5
-Description="<html>The position of the comma in the base class list if there is more than one<br/>line. Affects nl_class_init_args.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_class_comma=ignore|pos_class_comma=break|pos_class_comma=force|pos_class_comma=lead|pos_class_comma=trail|pos_class_comma=join|pos_class_comma=lead_break|pos_class_comma=lead_force|pos_class_comma=trail_break|pos_class_comma=trail_force
-ChoicesReadable="Ignore Pos Class Comma|Break Pos Class Comma|Force Pos Class Comma|Lead Pos Class Comma|Trail Pos Class Comma|Join Pos Class Comma|Lead Break Pos Class Comma|Lead Force Pos Class Comma|Trail Break Pos Class Comma|Trail Force Pos Class Comma"
-ValueDefault=ignore
-
-[Pos Constr Comma]
-Category=5
-Description="<html>The position of the comma in the constructor initialization list.<br/>Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_constr_comma=ignore|pos_constr_comma=break|pos_constr_comma=force|pos_constr_comma=lead|pos_constr_comma=trail|pos_constr_comma=join|pos_constr_comma=lead_break|pos_constr_comma=lead_force|pos_constr_comma=trail_break|pos_constr_comma=trail_force
-ChoicesReadable="Ignore Pos Constr Comma|Break Pos Constr Comma|Force Pos Constr Comma|Lead Pos Constr Comma|Trail Pos Constr Comma|Join Pos Constr Comma|Lead Break Pos Constr Comma|Lead Force Pos Constr Comma|Trail Break Pos Constr Comma|Trail Force Pos Constr Comma"
-ValueDefault=ignore
-
-[Pos Class Colon]
-Category=5
-Description="<html>The position of trailing/leading class colon, between class and base class<br/>list. Affects nl_class_colon.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_class_colon=ignore|pos_class_colon=break|pos_class_colon=force|pos_class_colon=lead|pos_class_colon=trail|pos_class_colon=join|pos_class_colon=lead_break|pos_class_colon=lead_force|pos_class_colon=trail_break|pos_class_colon=trail_force
-ChoicesReadable="Ignore Pos Class Colon|Break Pos Class Colon|Force Pos Class Colon|Lead Pos Class Colon|Trail Pos Class Colon|Join Pos Class Colon|Lead Break Pos Class Colon|Lead Force Pos Class Colon|Trail Break Pos Class Colon|Trail Force Pos Class Colon"
-ValueDefault=ignore
-
-[Pos Constr Colon]
-Category=5
-Description="<html>The position of colons between constructor and member initialization.<br/>Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_constr_colon=ignore|pos_constr_colon=break|pos_constr_colon=force|pos_constr_colon=lead|pos_constr_colon=trail|pos_constr_colon=join|pos_constr_colon=lead_break|pos_constr_colon=lead_force|pos_constr_colon=trail_break|pos_constr_colon=trail_force
-ChoicesReadable="Ignore Pos Constr Colon|Break Pos Constr Colon|Force Pos Constr Colon|Lead Pos Constr Colon|Trail Pos Constr Colon|Join Pos Constr Colon|Lead Break Pos Constr Colon|Lead Force Pos Constr Colon|Trail Break Pos Constr Colon|Trail Force Pos Constr Colon"
-ValueDefault=ignore
-
-[Pos Shift]
-Category=5
-Description="<html>The position of shift operators in wrapped expressions.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_shift=ignore|pos_shift=break|pos_shift=force|pos_shift=lead|pos_shift=trail|pos_shift=join|pos_shift=lead_break|pos_shift=lead_force|pos_shift=trail_break|pos_shift=trail_force
-ChoicesReadable="Ignore Pos Shift|Break Pos Shift|Force Pos Shift|Lead Pos Shift|Trail Pos Shift|Join Pos Shift|Lead Break Pos Shift|Lead Force Pos Shift|Trail Break Pos Shift|Trail Force Pos Shift"
-ValueDefault=ignore
-
-[Code Width]
-Category=6
-Description="<html>Try to limit code width to N columns.</html>"
-Enabled=false
-EditorType=numeric
-CallName="code_width="
-MinVal=0
-MaxVal=10000
-ValueDefault=0
-
-[Ls For Split Full]
-Category=6
-Description="<html>Whether to fully split long 'for' statements at semi-colons.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=ls_for_split_full=true|ls_for_split_full=false
-ValueDefault=false
-
-[Ls Func Split Full]
-Category=6
-Description="<html>Whether to fully split long function prototypes/calls at commas.<br/>The option ls_code_width has priority over the option ls_func_split_full.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=ls_func_split_full=true|ls_func_split_full=false
-ValueDefault=false
-
-[Ls Code Width]
-Category=6
-Description="<html>Whether to split lines as close to code_width as possible and ignore some<br/>groupings.<br/>The option ls_code_width has priority over the option ls_func_split_full.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=ls_code_width=true|ls_code_width=false
-ValueDefault=false
-
-[Align Keep Tabs]
-Category=7
-Description="<html>Whether to keep non-indenting tabs.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_keep_tabs=true|align_keep_tabs=false
-ValueDefault=false
-
-[Align With Tabs]
-Category=7
-Description="<html>Whether to use tabs for aligning.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_with_tabs=true|align_with_tabs=false
-ValueDefault=false
-
-[Align On Tabstop]
-Category=7
-Description="<html>Whether to bump out to the next tab when aligning.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_on_tabstop=true|align_on_tabstop=false
-ValueDefault=false
-
-[Align Number Right]
-Category=7
-Description="<html>Whether to right-align numbers.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_number_right=true|align_number_right=false
-ValueDefault=false
-
-[Align Keep Extra Space]
-Category=7
-Description="<html>Whether to keep whitespace not required for alignment.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_keep_extra_space=true|align_keep_extra_space=false
-ValueDefault=false
-
-[Align Func Params]
-Category=7
-Description="<html>Whether to align variable definitions in prototypes and functions.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_func_params=true|align_func_params=false
-ValueDefault=false
-
-[Align Func Params Span]
-Category=7
-Description="<html>The span for aligning parameter definitions in function on parameter name.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_params_span="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Func Params Thresh]
-Category=7
-Description="<html>The threshold for aligning function parameter definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_params_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Func Params Gap]
-Category=7
-Description="<html>The gap for aligning function parameter definitions.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_params_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Constr Value Span]
-Category=7
-Description="<html>The span for aligning constructor value.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_constr_value_span="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Constr Value Thresh]
-Category=7
-Description="<html>The threshold for aligning constructor value.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_constr_value_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Constr Value Gap]
-Category=7
-Description="<html>The gap for aligning constructor value.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_constr_value_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Same Func Call Params]
-Category=7
-Description="<html>Whether to align parameters in single-line functions that have the same<br/>name. The function names must already be aligned with each other.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_same_func_call_params=true|align_same_func_call_params=false
-ValueDefault=false
-
-[Align Same Func Call Params Span]
-Category=7
-Description="<html>The span for aligning function-call parameters for single line functions.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_same_func_call_params_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Same Func Call Params Thresh]
-Category=7
-Description="<html>The threshold for aligning function-call parameters for single line<br/>functions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_same_func_call_params_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Def Span]
-Category=7
-Description="<html>The span for aligning variable definitions.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_def_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Def Star Style]
-Category=7
-Description="<html>How to consider (or treat) the '*' in the alignment of variable definitions.<br/><br/>0: Part of the type 'void * foo;' (default)<br/>1: Part of the variable 'void *foo;'<br/>2: Dangling 'void *foo;'<br/>Dangling: the '*' will not be taken into account when aligning.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_def_star_style="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Var Def Amp Style]
-Category=7
-Description="<html>How to consider (or treat) the '&amp;' in the alignment of variable definitions.<br/><br/>0: Part of the type 'long &amp; foo;' (default)<br/>1: Part of the variable 'long &amp;foo;'<br/>2: Dangling 'long &amp;foo;'<br/>Dangling: the '&amp;' will not be taken into account when aligning.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_def_amp_style="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Var Def Thresh]
-Category=7
-Description="<html>The threshold for aligning variable definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_def_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Def Gap]
-Category=7
-Description="<html>The gap for aligning variable definitions.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_def_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Var Def Colon]
-Category=7
-Description="<html>Whether to align the colon in struct bit fields.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_var_def_colon=true|align_var_def_colon=false
-ValueDefault=false
-
-[Align Var Def Colon Gap]
-Category=7
-Description="<html>The gap for aligning the colon in struct bit fields.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_def_colon_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Var Def Attribute]
-Category=7
-Description="<html>Whether to align any attribute after the variable name.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_var_def_attribute=true|align_var_def_attribute=false
-ValueDefault=false
-
-[Align Var Def Inline]
-Category=7
-Description="<html>Whether to align inline struct/enum/union variable definitions.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_var_def_inline=true|align_var_def_inline=false
-ValueDefault=false
-
-[Align Assign Span]
-Category=7
-Description="<html>The span for aligning on '=' in assignments.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_assign_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Assign Func Proto Span]
-Category=7
-Description="<html>The span for aligning on '=' in function prototype modifier.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_assign_func_proto_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Assign Thresh]
-Category=7
-Description="<html>The threshold for aligning on '=' in assignments.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_assign_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Assign On Multi Var Defs]
-Category=7
-Description="<html>Whether to align on the left most assignment when multiple<br/>definitions are found on the same line.<br/>Depends on 'align_assign_span' and 'align_assign_thresh' settings.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_assign_on_multi_var_defs=true|align_assign_on_multi_var_defs=false
-ValueDefault=false
-
-[Align Braced Init List Span]
-Category=7
-Description="<html>The span for aligning on '{' in braced init list.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_braced_init_list_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Braced Init List Thresh]
-Category=7
-Description="<html>The threshold for aligning on '{' in braced init list.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_braced_init_list_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Assign Decl Func]
-Category=7
-Description="<html>How to apply align_assign_span to function declaration "assignments", i.e.<br/>'virtual void foo() = 0' or '~foo() = {default|delete}'.<br/><br/>0: Align with other assignments (default)<br/>1: Align with each other, ignoring regular assignments<br/>2: Don't align</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_assign_decl_func="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Enum Equ Span]
-Category=7
-Description="<html>The span for aligning on '=' in enums.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_enum_equ_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Enum Equ Thresh]
-Category=7
-Description="<html>The threshold for aligning on '=' in enums.<br/>Use a negative number for absolute thresholds.<br/><br/>0: no limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_enum_equ_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Class Span]
-Category=7
-Description="<html>The span for aligning class member definitions.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_class_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Class Thresh]
-Category=7
-Description="<html>The threshold for aligning class member definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_class_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Class Gap]
-Category=7
-Description="<html>The gap for aligning class member definitions.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_class_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Var Struct Span]
-Category=7
-Description="<html>The span for aligning struct/union member definitions.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_struct_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Struct Thresh]
-Category=7
-Description="<html>The threshold for aligning struct/union member definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_struct_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Struct Gap]
-Category=7
-Description="<html>The gap for aligning struct/union member definitions.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_struct_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Struct Init Span]
-Category=7
-Description="<html>The span for aligning struct initializer values.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_struct_init_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Typedef Span]
-Category=7
-Description="<html>The span for aligning single-line typedefs.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_typedef_span="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Typedef Gap]
-Category=7
-Description="<html>The minimum space between the type and the synonym of a typedef.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_typedef_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Typedef Func]
-Category=7
-Description="<html>How to align typedef'd functions with other typedefs.<br/><br/>0: Don't mix them at all (default)<br/>1: Align the open parenthesis with the types<br/>2: Align the function type name with the other type names</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_typedef_func="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Typedef Star Style]
-Category=7
-Description="<html>How to consider (or treat) the '*' in the alignment of typedefs.<br/><br/>0: Part of the typedef type, 'typedef int * pint;' (default)<br/>1: Part of type name: 'typedef int *pint;'<br/>2: Dangling: 'typedef int *pint;'<br/>Dangling: the '*' will not be taken into account when aligning.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_typedef_star_style="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Typedef Amp Style]
-Category=7
-Description="<html>How to consider (or treat) the '&amp;' in the alignment of typedefs.<br/><br/>0: Part of the typedef type, 'typedef int &amp; intref;' (default)<br/>1: Part of type name: 'typedef int &amp;intref;'<br/>2: Dangling: 'typedef int &amp;intref;'<br/>Dangling: the '&amp;' will not be taken into account when aligning.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_typedef_amp_style="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Right Cmt Span]
-Category=7
-Description="<html>The span for aligning comments that end lines.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_right_cmt_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Right Cmt Gap]
-Category=7
-Description="<html>Minimum number of columns between preceding text and a trailing comment in<br/>order for the comment to qualify for being aligned. Must be non-zero to have<br/>an effect.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_right_cmt_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Right Cmt Mix]
-Category=7
-Description="<html>If aligning comments, whether to mix with comments after '}' and #endif with<br/>less than three spaces before the comment.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_right_cmt_mix=true|align_right_cmt_mix=false
-ValueDefault=false
-
-[Align Right Cmt Same Level]
-Category=7
-Description="<html>Whether to only align trailing comments that are at the same brace level.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_right_cmt_same_level=true|align_right_cmt_same_level=false
-ValueDefault=false
-
-[Align Right Cmt At Col]
-Category=7
-Description="<html>Minimum column at which to align trailing comments. Comments which are<br/>aligned beyond this column, but which can be aligned in a lesser column,<br/>may be "pulled in".<br/><br/>0: Ignore (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_right_cmt_at_col="
-MinVal=0
-MaxVal=200
-ValueDefault=0
-
-[Align Func Proto Span]
-Category=7
-Description="<html>The span for aligning function prototypes.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_proto_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Func Proto Star Style]
-Category=7
-Description="<html>How to consider (or treat) the '*' in the alignment of function prototypes.<br/><br/>0: Part of the type 'void * foo();' (default)<br/>1: Part of the function 'void *foo();'<br/>2: Dangling 'void *foo();'<br/>Dangling: the '*' will not be taken into account when aligning.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_proto_star_style="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Func Proto Amp Style]
-Category=7
-Description="<html>How to consider (or treat) the '&amp;' in the alignment of function prototypes.<br/><br/>0: Part of the type 'long &amp; foo();' (default)<br/>1: Part of the function 'long &amp;foo();'<br/>2: Dangling 'long &amp;foo();'<br/>Dangling: the '&amp;' will not be taken into account when aligning.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_proto_amp_style="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Func Proto Thresh]
-Category=7
-Description="<html>The threshold for aligning function prototypes.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_proto_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Func Proto Gap]
-Category=7
-Description="<html>Minimum gap between the return type and the function name.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_proto_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align On Operator]
-Category=7
-Description="<html>Whether to align function prototypes on the 'operator' keyword instead of<br/>what follows.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_on_operator=true|align_on_operator=false
-ValueDefault=false
-
-[Align Mix Var Proto]
-Category=7
-Description="<html>Whether to mix aligning prototype and variable declarations. If true,<br/>align_var_def_XXX options are used instead of align_func_proto_XXX options.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_mix_var_proto=true|align_mix_var_proto=false
-ValueDefault=false
-
-[Align Single Line Func]
-Category=7
-Description="<html>Whether to align single-line functions with function prototypes.<br/>Uses align_func_proto_span.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_single_line_func=true|align_single_line_func=false
-ValueDefault=false
-
-[Align Single Line Brace]
-Category=7
-Description="<html>Whether to align the open brace of single-line functions.<br/>Requires align_single_line_func=true. Uses align_func_proto_span.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_single_line_brace=true|align_single_line_brace=false
-ValueDefault=false
-
-[Align Single Line Brace Gap]
-Category=7
-Description="<html>Gap for align_single_line_brace.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_single_line_brace_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Oc Msg Spec Span]
-Category=7
-Description="<html>(OC) The span for aligning Objective-C message specifications.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_oc_msg_spec_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Nl Cont]
-Category=7
-Description="<html>Whether to align macros wrapped with a backslash and a newline. This will<br/>not work right if the macro contains a multi-line comment.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_nl_cont=true|align_nl_cont=false
-ValueDefault=false
-
-[Align Pp Define Together]
-Category=7
-Description="<html>Whether to align macro functions and variables together.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_pp_define_together=true|align_pp_define_together=false
-ValueDefault=false
-
-[Align Pp Define Span]
-Category=7
-Description="<html>The span for aligning on '#define' bodies.<br/><br/>=0: Don't align (default)<br/>&gt;0: Number of lines (including comments) between blocks</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_pp_define_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Pp Define Gap]
-Category=7
-Description="<html>The minimum space between label and value of a preprocessor define.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_pp_define_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Left Shift]
-Category=7
-Description="<html>Whether to align lines that start with '&lt;&lt;' with previous '&lt;&lt;'.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_left_shift=true|align_left_shift=false
-ValueDefault=true
-
-[Align Eigen Comma Init]
-Category=7
-Description="<html>Whether to align comma-separated statements following '&lt;&lt;' (as used to<br/>initialize Eigen matrices).</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_eigen_comma_init=true|align_eigen_comma_init=false
-ValueDefault=false
-
-[Align Asm Colon]
-Category=7
-Description="<html>Whether to align text after 'asm volatile ()' colons.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_asm_colon=true|align_asm_colon=false
-ValueDefault=false
-
-[Align Oc Msg Colon Span]
-Category=7
-Description="<html>(OC) Span for aligning parameters in an Objective-C message call<br/>on the ':'.<br/><br/>0: Don't align.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_oc_msg_colon_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Oc Msg Colon First]
-Category=7
-Description="<html>(OC) Whether to always align with the first parameter, even if it is too<br/>short.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_oc_msg_colon_first=true|align_oc_msg_colon_first=false
-ValueDefault=false
-
-[Align Oc Decl Colon]
-Category=7
-Description="<html>(OC) Whether to align parameters in an Objective-C '+' or '-' declaration<br/>on the ':'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_oc_decl_colon=true|align_oc_decl_colon=false
-ValueDefault=false
-
-[Align Oc Msg Colon Xcode Like]
-Category=7
-Description="<html>(OC) Whether to not align parameters in an Objectve-C message call if first<br/>colon is not on next line of the message call (the same way Xcode does<br/>alignment)</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_oc_msg_colon_xcode_like=true|align_oc_msg_colon_xcode_like=false
-ValueDefault=false
-
-[Cmt Width]
-Category=8
-Description="<html>Try to wrap comments at N columns.</html>"
-Enabled=false
-EditorType=numeric
-CallName="cmt_width="
-MinVal=0
-MaxVal=256
-ValueDefault=0
-
-[Cmt Reflow Mode]
-Category=8
-Description="<html>How to reflow comments.<br/><br/>0: No reflowing (apart from the line wrapping due to cmt_width) (default)<br/>1: No touching at all<br/>2: Full reflow (enable cmt_indent_multi for indent with line wrapping due to cmt_width)</html>"
-Enabled=false
-EditorType=numeric
-CallName="cmt_reflow_mode="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Cmt Reflow Fold Regex File]
-Category=8
-Description="<html>Path to a file that contains regular expressions describing patterns for<br/>which the end of one line and the beginning of the next will be folded into<br/>the same sentence or paragraph during full comment reflow. The regular<br/>expressions are described using ECMAScript syntax. The syntax for this<br/>specification is as follows, where "..." indicates the custom regular<br/>expression and "n" indicates the nth end_of_prev_line_regex and<br/>beg_of_next_line_regex regular expression pair:<br/><br/>end_of_prev_line_regex[1] = "...$"<br/>beg_of_next_line_regex[1] = "^..."<br/>end_of_prev_line_regex[2] = "...$"<br/>beg_of_next_line_regex[2] = "^..."<br/> .<br/> .<br/> .<br/>end_of_prev_line_regex[n] = "...$"<br/>beg_of_next_line_regex[n] = "^..."<br/><br/>Note that use of this option overrides the default reflow fold regular<br/>expressions, which are internally defined as follows:<br/><br/>end_of_prev_line_regex[1] = "[\w,\]\)]$"<br/>beg_of_next_line_regex[1] = "^[\w,\[\(]"<br/>end_of_prev_line_regex[2] = "\.$"<br/>beg_of_next_line_regex[2] = "^[A-Z]"</html>"
-Enabled=false
-CallName=cmt_reflow_fold_regex_file=
-EditorType=string
-ValueDefault=
-
-[Cmt Reflow Indent To Paragraph Start]
-Category=8
-Description="<html>Whether to indent wrapped lines to the start of the encompassing paragraph<br/>during full comment reflow (cmt_reflow_mode = 2). Overrides the value<br/>specified by cmt_sp_after_star_cont.<br/><br/>Note that cmt_align_doxygen_javadoc_tags overrides this option for<br/>paragraphs associated with javadoc tags</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_reflow_indent_to_paragraph_start=true|cmt_reflow_indent_to_paragraph_start=false
-ValueDefault=false
-
-[Cmt Convert Tab To Spaces]
-Category=8
-Description="<html>Whether to convert all tabs to spaces in comments. If false, tabs in<br/>comments are left alone, unless used for indenting.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_convert_tab_to_spaces=true|cmt_convert_tab_to_spaces=false
-ValueDefault=false
-
-[Cmt Indent Multi]
-Category=8
-Description="<html>Whether to apply changes to multi-line comments, including cmt_width,<br/>keyword substitution and leading chars.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_indent_multi=true|cmt_indent_multi=false
-ValueDefault=true
-
-[Cmt Align Doxygen Javadoc Tags]
-Category=8
-Description="<html>Whether to align doxygen javadoc-style tags ('@param', '@return', etc.)<br/>and corresponding fields such that groups of consecutive block tags,<br/>parameter names, and descriptions align with one another. Overrides that<br/>which is specified by the cmt_sp_after_star_cont. If cmt_width &gt; 0, it may<br/>be necessary to enable cmt_indent_multi and set cmt_reflow_mode = 2<br/>in order to achieve the desired alignment for line-wrapping.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_align_doxygen_javadoc_tags=true|cmt_align_doxygen_javadoc_tags=false
-ValueDefault=false
-
-[Cmt Sp Before Doxygen Javadoc Tags]
-Category=8
-Description="<html>The number of spaces to insert after the star and before doxygen<br/>javadoc-style tags (@param, @return, etc). Requires enabling<br/>cmt_align_doxygen_javadoc_tags. Overrides that which is specified by the<br/>cmt_sp_after_star_cont.<br/><br/>Default: 1</html>"
-Enabled=false
-EditorType=numeric
-CallName="cmt_sp_before_doxygen_javadoc_tags="
-MinVal=0
-MaxVal=16
-ValueDefault=1
-
-[Cmt Trailing Single Line C To Cpp]
-Category=8
-Description="<html>Whether to change trailing, single-line c-comments into cpp-comments.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_trailing_single_line_c_to_cpp=true|cmt_trailing_single_line_c_to_cpp=false
-ValueDefault=false
-
-[Cmt C Group]
-Category=8
-Description="<html>Whether to group c-comments that look like they are in a block.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_c_group=true|cmt_c_group=false
-ValueDefault=false
-
-[Cmt C Nl Start]
-Category=8
-Description="<html>Whether to put an empty '/*' on the first line of the combined c-comment.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_c_nl_start=true|cmt_c_nl_start=false
-ValueDefault=false
-
-[Cmt C Nl End]
-Category=8
-Description="<html>Whether to add a newline before the closing '*/' of the combined c-comment.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_c_nl_end=true|cmt_c_nl_end=false
-ValueDefault=false
-
-[Cmt Cpp To C]
-Category=8
-Description="<html>Whether to change cpp-comments into c-comments.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_cpp_to_c=true|cmt_cpp_to_c=false
-ValueDefault=false
-
-[Cmt Cpp Group]
-Category=8
-Description="<html>Whether to group cpp-comments that look like they are in a block. Only<br/>meaningful if cmt_cpp_to_c=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_cpp_group=true|cmt_cpp_group=false
-ValueDefault=false
-
-[Cmt Cpp Nl Start]
-Category=8
-Description="<html>Whether to put an empty '/*' on the first line of the combined cpp-comment<br/>when converting to a c-comment.<br/><br/>Requires cmt_cpp_to_c=true and cmt_cpp_group=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_cpp_nl_start=true|cmt_cpp_nl_start=false
-ValueDefault=false
-
-[Cmt Cpp Nl End]
-Category=8
-Description="<html>Whether to add a newline before the closing '*/' of the combined cpp-comment<br/>when converting to a c-comment.<br/><br/>Requires cmt_cpp_to_c=true and cmt_cpp_group=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_cpp_nl_end=true|cmt_cpp_nl_end=false
-ValueDefault=false
-
-[Cmt Star Cont]
-Category=8
-Description="<html>Whether to put a star on subsequent comment lines.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_star_cont=true|cmt_star_cont=false
-ValueDefault=false
-
-[Cmt Sp Before Star Cont]
-Category=8
-Description="<html>The number of spaces to insert at the start of subsequent comment lines.</html>"
-Enabled=false
-EditorType=numeric
-CallName="cmt_sp_before_star_cont="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Cmt Sp After Star Cont]
-Category=8
-Description="<html>The number of spaces to insert after the star on subsequent comment lines.</html>"
-Enabled=false
-EditorType=numeric
-CallName="cmt_sp_after_star_cont="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Cmt Multi Check Last]
-Category=8
-Description="<html>For multi-line comments with a '*' lead, remove leading spaces if the first<br/>and last lines of the comment are the same length.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_multi_check_last=true|cmt_multi_check_last=false
-ValueDefault=true
-
-[Cmt Multi First Len Minimum]
-Category=8
-Description="<html>For multi-line comments with a '*' lead, remove leading spaces if the first<br/>and last lines of the comment are the same length AND if the length is<br/>bigger as the first_len minimum.<br/><br/>Default: 4</html>"
-Enabled=false
-EditorType=numeric
-CallName="cmt_multi_first_len_minimum="
-MinVal=1
-MaxVal=20
-ValueDefault=4
-
-[Cmt Insert File Header]
-Category=8
-Description="<html>Path to a file that contains text to insert at the beginning of a file if<br/>the file doesn't start with a C/C++ comment. If the inserted text contains<br/>'$(filename)', that will be replaced with the current file's name.</html>"
-Enabled=false
-CallName=cmt_insert_file_header=
-EditorType=string
-ValueDefault=
-
-[Cmt Insert File Footer]
-Category=8
-Description="<html>Path to a file that contains text to insert at the end of a file if the<br/>file doesn't end with a C/C++ comment. If the inserted text contains<br/>'$(filename)', that will be replaced with the current file's name.</html>"
-Enabled=false
-CallName=cmt_insert_file_footer=
-EditorType=string
-ValueDefault=
-
-[Cmt Insert Func Header]
-Category=8
-Description="<html>Path to a file that contains text to insert before a function definition if<br/>the function isn't preceded by a C/C++ comment. If the inserted text<br/>contains '$(function)', '$(javaparam)' or '$(fclass)', these will be<br/>replaced with, respectively, the name of the function, the javadoc '@param'<br/>and '@return' stuff, or the name of the class to which the member function<br/>belongs.</html>"
-Enabled=false
-CallName=cmt_insert_func_header=
-EditorType=string
-ValueDefault=
-
-[Cmt Insert Class Header]
-Category=8
-Description="<html>Path to a file that contains text to insert before a class if the class<br/>isn't preceded by a C/C++ comment. If the inserted text contains '$(class)',<br/>that will be replaced with the class name.</html>"
-Enabled=false
-CallName=cmt_insert_class_header=
-EditorType=string
-ValueDefault=
-
-[Cmt Insert Oc Msg Header]
-Category=8
-Description="<html>Path to a file that contains text to insert before an Objective-C message<br/>specification, if the method isn't preceded by a C/C++ comment. If the<br/>inserted text contains '$(message)' or '$(javaparam)', these will be<br/>replaced with, respectively, the name of the function, or the javadoc<br/>'@param' and '@return' stuff.</html>"
-Enabled=false
-CallName=cmt_insert_oc_msg_header=
-EditorType=string
-ValueDefault=
-
-[Cmt Insert Before Preproc]
-Category=8
-Description="<html>Whether a comment should be inserted if a preprocessor is encountered when<br/>stepping backwards from a function name.<br/><br/>Applies to cmt_insert_oc_msg_header, cmt_insert_func_header and<br/>cmt_insert_class_header.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_insert_before_preproc=true|cmt_insert_before_preproc=false
-ValueDefault=false
-
-[Cmt Insert Before Inlines]
-Category=8
-Description="<html>Whether a comment should be inserted if a function is declared inline to a<br/>class definition.<br/><br/>Applies to cmt_insert_func_header.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_insert_before_inlines=true|cmt_insert_before_inlines=false
-ValueDefault=true
-
-[Cmt Insert Before Ctor Dtor]
-Category=8
-Description="<html>Whether a comment should be inserted if the function is a class constructor<br/>or destructor.<br/><br/>Applies to cmt_insert_func_header.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_insert_before_ctor_dtor=true|cmt_insert_before_ctor_dtor=false
-ValueDefault=false
-
-[Mod Full Brace Do]
-Category=9
-Description="<html>Add or remove braces on a single-line 'do' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_full_brace_do=ignore|mod_full_brace_do=add|mod_full_brace_do=remove|mod_full_brace_do=force|mod_full_brace_do=not_defined
-ChoicesReadable="Ignore Mod Full Brace Do|Add Mod Full Brace Do|Remove Mod Full Brace Do|Force Mod Full Brace Do"
-ValueDefault=ignore
-
-[Mod Full Brace For]
-Category=9
-Description="<html>Add or remove braces on a single-line 'for' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_full_brace_for=ignore|mod_full_brace_for=add|mod_full_brace_for=remove|mod_full_brace_for=force|mod_full_brace_for=not_defined
-ChoicesReadable="Ignore Mod Full Brace For|Add Mod Full Brace For|Remove Mod Full Brace For|Force Mod Full Brace For"
-ValueDefault=ignore
-
-[Mod Full Brace Function]
-Category=9
-Description="<html>(Pawn) Add or remove braces on a single-line function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_full_brace_function=ignore|mod_full_brace_function=add|mod_full_brace_function=remove|mod_full_brace_function=force|mod_full_brace_function=not_defined
-ChoicesReadable="Ignore Mod Full Brace Function|Add Mod Full Brace Function|Remove Mod Full Brace Function|Force Mod Full Brace Function"
-ValueDefault=ignore
-
-[Mod Full Brace If]
-Category=9
-Description="<html>Add or remove braces on a single-line 'if' statement. Braces will not be<br/>removed if the braced statement contains an 'else'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_full_brace_if=ignore|mod_full_brace_if=add|mod_full_brace_if=remove|mod_full_brace_if=force|mod_full_brace_if=not_defined
-ChoicesReadable="Ignore Mod Full Brace If|Add Mod Full Brace If|Remove Mod Full Brace If|Force Mod Full Brace If"
-ValueDefault=ignore
-
-[Mod Full Brace If Chain]
-Category=9
-Description="<html>Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either<br/>have, or do not have, braces. Overrides mod_full_brace_if.<br/><br/>0: Don't override mod_full_brace_if<br/>1: Add braces to all blocks if any block needs braces and remove braces if<br/> they can be removed from all blocks<br/>2: Add braces to all blocks if any block already has braces, regardless of<br/> whether it needs them<br/>3: Add braces to all blocks if any block needs braces and remove braces if<br/> they can be removed from all blocks, except if all blocks have braces<br/> despite none needing them</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_full_brace_if_chain="
-MinVal=0
-MaxVal=3
-ValueDefault=0
-
-[Mod Full Brace If Chain Only]
-Category=9
-Description="<html>Whether to add braces to all blocks of an 'if'/'else if'/'else' chain.<br/>If true, mod_full_brace_if_chain will only remove braces from an 'if' that<br/>does not have an 'else if' or 'else'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_full_brace_if_chain_only=true|mod_full_brace_if_chain_only=false
-ValueDefault=false
-
-[Mod Full Brace While]
-Category=9
-Description="<html>Add or remove braces on single-line 'while' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_full_brace_while=ignore|mod_full_brace_while=add|mod_full_brace_while=remove|mod_full_brace_while=force|mod_full_brace_while=not_defined
-ChoicesReadable="Ignore Mod Full Brace While|Add Mod Full Brace While|Remove Mod Full Brace While|Force Mod Full Brace While"
-ValueDefault=ignore
-
-[Mod Full Brace Using]
-Category=9
-Description="<html>Add or remove braces on single-line 'using ()' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_full_brace_using=ignore|mod_full_brace_using=add|mod_full_brace_using=remove|mod_full_brace_using=force|mod_full_brace_using=not_defined
-ChoicesReadable="Ignore Mod Full Brace Using|Add Mod Full Brace Using|Remove Mod Full Brace Using|Force Mod Full Brace Using"
-ValueDefault=ignore
-
-[Mod Full Brace Nl]
-Category=9
-Description="<html>Don't remove braces around statements that span N newlines</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_full_brace_nl="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Mod Full Brace Nl Block Rem Mlcond]
-Category=9
-Description="<html>Whether to prevent removal of braces from 'if'/'for'/'while'/etc. blocks<br/>which span multiple lines.<br/><br/>Affects:<br/> mod_full_brace_for<br/> mod_full_brace_if<br/> mod_full_brace_if_chain<br/> mod_full_brace_if_chain_only<br/> mod_full_brace_while<br/> mod_full_brace_using<br/><br/>Does not affect:<br/> mod_full_brace_do<br/> mod_full_brace_function</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_full_brace_nl_block_rem_mlcond=true|mod_full_brace_nl_block_rem_mlcond=false
-ValueDefault=false
-
-[Mod Paren On Return]
-Category=9
-Description="<html>Add or remove unnecessary parentheses on 'return' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_paren_on_return=ignore|mod_paren_on_return=add|mod_paren_on_return=remove|mod_paren_on_return=force|mod_paren_on_return=not_defined
-ChoicesReadable="Ignore Mod Paren On Return|Add Mod Paren On Return|Remove Mod Paren On Return|Force Mod Paren On Return"
-ValueDefault=ignore
-
-[Mod Paren On Throw]
-Category=9
-Description="<html>Add or remove unnecessary parentheses on 'throw' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_paren_on_throw=ignore|mod_paren_on_throw=add|mod_paren_on_throw=remove|mod_paren_on_throw=force|mod_paren_on_throw=not_defined
-ChoicesReadable="Ignore Mod Paren On Throw|Add Mod Paren On Throw|Remove Mod Paren On Throw|Force Mod Paren On Throw"
-ValueDefault=ignore
-
-[Mod Pawn Semicolon]
-Category=9
-Description="<html>(Pawn) Whether to change optional semicolons to real semicolons.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_pawn_semicolon=true|mod_pawn_semicolon=false
-ValueDefault=false
-
-[Mod Full Paren If Bool]
-Category=9
-Description="<html>Whether to fully parenthesize Boolean expressions in 'while' and 'if'<br/>statement, as in 'if (a &amp;&amp; b &gt; c)' =&gt; 'if (a &amp;&amp; (b &gt; c))'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_full_paren_if_bool=true|mod_full_paren_if_bool=false
-ValueDefault=false
-
-[Mod Full Paren Assign Bool]
-Category=9
-Description="<html>Whether to fully parenthesize Boolean expressions after '='<br/>statement, as in 'x = a &amp;&amp; b &gt; c;' =&gt; 'x = (a &amp;&amp; (b &gt; c));'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_full_paren_assign_bool=true|mod_full_paren_assign_bool=false
-ValueDefault=false
-
-[Mod Full Paren Return Bool]
-Category=9
-Description="<html>Whether to fully parenthesize Boolean expressions after '='<br/>statement, as in 'return a &amp;&amp; b &gt; c;' =&gt; 'return (a &amp;&amp; (b &gt; c));'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_full_paren_return_bool=true|mod_full_paren_return_bool=false
-ValueDefault=false
-
-[Mod Remove Extra Semicolon]
-Category=9
-Description="<html>Whether to remove superfluous semicolons.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_remove_extra_semicolon=true|mod_remove_extra_semicolon=false
-ValueDefault=false
-
-[Mod Remove Duplicate Include]
-Category=9
-Description="<html>Whether to remove duplicate include.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_remove_duplicate_include=true|mod_remove_duplicate_include=false
-ValueDefault=false
-
-[Mod Add Long Function Closebrace Comment]
-Category=9
-Description="<html>If a function body exceeds the specified number of newlines and doesn't have<br/>a comment after the close brace, a comment will be added.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_add_long_function_closebrace_comment="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[Mod Add Long Namespace Closebrace Comment]
-Category=9
-Description="<html>If a namespace body exceeds the specified number of newlines and doesn't<br/>have a comment after the close brace, a comment will be added.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_add_long_namespace_closebrace_comment="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[Mod Add Long Class Closebrace Comment]
-Category=9
-Description="<html>If a class body exceeds the specified number of newlines and doesn't have a<br/>comment after the close brace, a comment will be added.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_add_long_class_closebrace_comment="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[Mod Add Long Switch Closebrace Comment]
-Category=9
-Description="<html>If a switch body exceeds the specified number of newlines and doesn't have a<br/>comment after the close brace, a comment will be added.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_add_long_switch_closebrace_comment="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[Mod Add Long Ifdef Endif Comment]
-Category=9
-Description="<html>If an #ifdef body exceeds the specified number of newlines and doesn't have<br/>a comment after the #endif, a comment will be added.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_add_long_ifdef_endif_comment="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[Mod Add Long Ifdef Else Comment]
-Category=9
-Description="<html>If an #ifdef or #else body exceeds the specified number of newlines and<br/>doesn't have a comment after the #else, a comment will be added.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_add_long_ifdef_else_comment="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[Mod Sort Case Sensitive]
-Category=9
-Description="<html>Whether to take care of the case by the mod_sort_xx options.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_case_sensitive=true|mod_sort_case_sensitive=false
-ValueDefault=false
-
-[Mod Sort Import]
-Category=9
-Description="<html>Whether to sort consecutive single-line 'import' statements.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_import=true|mod_sort_import=false
-ValueDefault=false
-
-[Mod Sort Using]
-Category=9
-Description="<html>(C#) Whether to sort consecutive single-line 'using' statements.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_using=true|mod_sort_using=false
-ValueDefault=false
-
-[Mod Sort Include]
-Category=9
-Description="<html>Whether to sort consecutive single-line '#include' statements (C/C++) and<br/>'#import' statements (Objective-C). Be aware that this has the potential to<br/>break your code if your includes/imports have ordering dependencies.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_include=true|mod_sort_include=false
-ValueDefault=false
-
-[Mod Sort Incl Import Prioritize Filename]
-Category=9
-Description="<html>Whether to prioritize '#include' and '#import' statements that contain<br/>filename without extension when sorting is enabled.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_incl_import_prioritize_filename=true|mod_sort_incl_import_prioritize_filename=false
-ValueDefault=false
-
-[Mod Sort Incl Import Prioritize Extensionless]
-Category=9
-Description="<html>Whether to prioritize '#include' and '#import' statements that does not<br/>contain extensions when sorting is enabled.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_incl_import_prioritize_extensionless=true|mod_sort_incl_import_prioritize_extensionless=false
-ValueDefault=false
-
-[Mod Sort Incl Import Prioritize Angle Over Quotes]
-Category=9
-Description="<html>Whether to prioritize '#include' and '#import' statements that contain<br/>angle over quotes when sorting is enabled.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_incl_import_prioritize_angle_over_quotes=true|mod_sort_incl_import_prioritize_angle_over_quotes=false
-ValueDefault=false
-
-[Mod Sort Incl Import Ignore Extension]
-Category=9
-Description="<html>Whether to ignore file extension in '#include' and '#import' statements<br/>for sorting comparison.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_incl_import_ignore_extension=true|mod_sort_incl_import_ignore_extension=false
-ValueDefault=false
-
-[Mod Sort Incl Import Grouping Enabled]
-Category=9
-Description="<html>Whether to group '#include' and '#import' statements when sorting is enabled.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_incl_import_grouping_enabled=true|mod_sort_incl_import_grouping_enabled=false
-ValueDefault=false
-
-[Mod Move Case Break]
-Category=9
-Description="<html>Whether to move a 'break' that appears after a fully braced 'case' before<br/>the close brace, as in 'case X: { ... } break;' =&gt; 'case X: { ... break; }'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_move_case_break=true|mod_move_case_break=false
-ValueDefault=false
-
-[Mod Move Case Return]
-Category=9
-Description="<html>Whether to move a 'return' that appears after a fully braced 'case' before<br/>the close brace, as in 'case X: { ... } return;' =&gt; 'case X: { ... return; }'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_move_case_return=true|mod_move_case_return=false
-ValueDefault=false
-
-[Mod Case Brace]
-Category=9
-Description="<html>Add or remove braces around a fully braced case statement. Will only remove<br/>braces if there are no variable declarations in the block.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_case_brace=ignore|mod_case_brace=add|mod_case_brace=remove|mod_case_brace=force|mod_case_brace=not_defined
-ChoicesReadable="Ignore Mod Case Brace|Add Mod Case Brace|Remove Mod Case Brace|Force Mod Case Brace"
-ValueDefault=ignore
-
-[Mod Remove Empty Return]
-Category=9
-Description="<html>Whether to remove a void 'return;' that appears as the last statement in a<br/>function.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_remove_empty_return=true|mod_remove_empty_return=false
-ValueDefault=false
-
-[Mod Enum Last Comma]
-Category=9
-Description="<html>Add or remove the comma after the last value of an enumeration.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_enum_last_comma=ignore|mod_enum_last_comma=add|mod_enum_last_comma=remove|mod_enum_last_comma=force|mod_enum_last_comma=not_defined
-ChoicesReadable="Ignore Mod Enum Last Comma|Add Mod Enum Last Comma|Remove Mod Enum Last Comma|Force Mod Enum Last Comma"
-ValueDefault=ignore
-
-[Mod Infinite Loop]
-Category=9
-Description="<html>Syntax to use for infinite loops.<br/><br/>0: Leave syntax alone (default)<br/>1: Rewrite as `for(;;)`<br/>2: Rewrite as `while(true)`<br/>3: Rewrite as `do`...`while(true);`<br/>4: Rewrite as `while(1)`<br/>5: Rewrite as `do`...`while(1);`<br/><br/>Infinite loops that do not already match one of these syntaxes are ignored.<br/>Other options that affect loop formatting will be applied after transforming<br/>the syntax.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_infinite_loop="
-MinVal=0
-MaxVal=5
-ValueDefault=0
-
-[Mod Int Short]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'int short'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_int_short=ignore|mod_int_short=add|mod_int_short=remove|mod_int_short=force|mod_int_short=not_defined
-ChoicesReadable="Ignore Mod Int Short|Add Mod Int Short|Remove Mod Int Short|Force Mod Int Short"
-ValueDefault=ignore
-
-[Mod Short Int]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'short int'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_short_int=ignore|mod_short_int=add|mod_short_int=remove|mod_short_int=force|mod_short_int=not_defined
-ChoicesReadable="Ignore Mod Short Int|Add Mod Short Int|Remove Mod Short Int|Force Mod Short Int"
-ValueDefault=ignore
-
-[Mod Int Long]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'int long'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_int_long=ignore|mod_int_long=add|mod_int_long=remove|mod_int_long=force|mod_int_long=not_defined
-ChoicesReadable="Ignore Mod Int Long|Add Mod Int Long|Remove Mod Int Long|Force Mod Int Long"
-ValueDefault=ignore
-
-[Mod Long Int]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'long int'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_long_int=ignore|mod_long_int=add|mod_long_int=remove|mod_long_int=force|mod_long_int=not_defined
-ChoicesReadable="Ignore Mod Long Int|Add Mod Long Int|Remove Mod Long Int|Force Mod Long Int"
-ValueDefault=ignore
-
-[Mod Int Signed]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'int signed'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_int_signed=ignore|mod_int_signed=add|mod_int_signed=remove|mod_int_signed=force|mod_int_signed=not_defined
-ChoicesReadable="Ignore Mod Int Signed|Add Mod Int Signed|Remove Mod Int Signed|Force Mod Int Signed"
-ValueDefault=ignore
-
-[Mod Signed Int]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'signed int'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_signed_int=ignore|mod_signed_int=add|mod_signed_int=remove|mod_signed_int=force|mod_signed_int=not_defined
-ChoicesReadable="Ignore Mod Signed Int|Add Mod Signed Int|Remove Mod Signed Int|Force Mod Signed Int"
-ValueDefault=ignore
-
-[Mod Int Unsigned]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'int unsigned'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_int_unsigned=ignore|mod_int_unsigned=add|mod_int_unsigned=remove|mod_int_unsigned=force|mod_int_unsigned=not_defined
-ChoicesReadable="Ignore Mod Int Unsigned|Add Mod Int Unsigned|Remove Mod Int Unsigned|Force Mod Int Unsigned"
-ValueDefault=ignore
-
-[Mod Unsigned Int]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'unsigned int'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_unsigned_int=ignore|mod_unsigned_int=add|mod_unsigned_int=remove|mod_unsigned_int=force|mod_unsigned_int=not_defined
-ChoicesReadable="Ignore Mod Unsigned Int|Add Mod Unsigned Int|Remove Mod Unsigned Int|Force Mod Unsigned Int"
-ValueDefault=ignore
-
-[Mod Int Prefer Int On Left]
-Category=9
-Description="<html>If there is a situation where mod_int_* and mod_*_int would result in<br/>multiple int keywords, whether to keep the rightmost int (the default) or the<br/>leftmost int.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_int_prefer_int_on_left=true|mod_int_prefer_int_on_left=false
-ValueDefault=false
-
-[Mod Sort Oc Properties]
-Category=9
-Description="<html>(OC) Whether to organize the properties. If true, properties will be<br/>rearranged according to the mod_sort_oc_property_*_weight factors.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_oc_properties=true|mod_sort_oc_properties=false
-ValueDefault=false
-
-[Mod Sort Oc Property Class Weight]
-Category=9
-Description="<html>(OC) Weight of a class property modifier.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_sort_oc_property_class_weight="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Mod Sort Oc Property Thread Safe Weight]
-Category=9
-Description="<html>(OC) Weight of 'atomic' and 'nonatomic'.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_sort_oc_property_thread_safe_weight="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Mod Sort Oc Property Readwrite Weight]
-Category=9
-Description="<html>(OC) Weight of 'readwrite' when organizing properties.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_sort_oc_property_readwrite_weight="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Mod Sort Oc Property Reference Weight]
-Category=9
-Description="<html>(OC) Weight of a reference type specifier ('retain', 'copy', 'assign',<br/>'weak', 'strong') when organizing properties.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_sort_oc_property_reference_weight="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Mod Sort Oc Property Getter Weight]
-Category=9
-Description="<html>(OC) Weight of getter type ('getter=') when organizing properties.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_sort_oc_property_getter_weight="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Mod Sort Oc Property Setter Weight]
-Category=9
-Description="<html>(OC) Weight of setter type ('setter=') when organizing properties.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_sort_oc_property_setter_weight="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Mod Sort Oc Property Nullability Weight]
-Category=9
-Description="<html>(OC) Weight of nullability type ('nullable', 'nonnull', 'null_unspecified',<br/>'null_resettable') when organizing properties.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_sort_oc_property_nullability_weight="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Pp Indent With Tabs]
-Category=10
-Description="<html>How to use tabs when indenting preprocessor code.<br/><br/>-1: Use 'indent_with_tabs' setting (default)<br/> 0: Spaces only<br/> 1: Indent with tabs to brace level, align with spaces<br/> 2: Indent and align with tabs, using spaces when not on a tabstop<br/><br/>Default: -1</html>"
-Enabled=false
-EditorType=numeric
-CallName="pp_indent_with_tabs="
-MinVal=-1
-MaxVal=2
-ValueDefault=-1
-
-[Pp Indent]
-Category=10
-Description="<html>Add or remove indentation of preprocessor directives inside #if blocks<br/>at brace level 0 (file-level).</html>"
-Enabled=false
-EditorType=multiple
-Choices=pp_indent=ignore|pp_indent=add|pp_indent=remove|pp_indent=force|pp_indent=not_defined
-ChoicesReadable="Ignore Pp Indent|Add Pp Indent|Remove Pp Indent|Force Pp Indent"
-ValueDefault=ignore
-
-[Pp Indent At Level]
-Category=10
-Description="<html>Whether to indent #if/#else/#endif at the brace level. If false, these are<br/>indented from column 1.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_indent_at_level=true|pp_indent_at_level=false
-ValueDefault=false
-
-[Pp Indent At Level0]
-Category=10
-Description="<html>Whether to indent #if/#else/#endif at the parenthesis level if the brace<br/>level is 0. If false, these are indented from column 1.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_indent_at_level0=true|pp_indent_at_level0=false
-ValueDefault=false
-
-[Pp Indent Count]
-Category=10
-Description="<html>Specifies the number of columns to indent preprocessors per level<br/>at brace level 0 (file-level). If pp_indent_at_level=false, also specifies<br/>the number of columns to indent preprocessors per level<br/>at brace level &gt; 0 (function-level).<br/><br/>Default: 1</html>"
-Enabled=false
-EditorType=numeric
-CallName="pp_indent_count="
-MinVal=0
-MaxVal=16
-ValueDefault=1
-
-[Pp Space After]
-Category=10
-Description="<html>Add or remove space after # based on pp level of #if blocks.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pp_space_after=ignore|pp_space_after=add|pp_space_after=remove|pp_space_after=force|pp_space_after=not_defined
-ChoicesReadable="Ignore Pp Space After|Add Pp Space After|Remove Pp Space After|Force Pp Space After"
-ValueDefault=ignore
-
-[Pp Space Count]
-Category=10
-Description="<html>Sets the number of spaces per level added with pp_space_after.</html>"
-Enabled=false
-EditorType=numeric
-CallName="pp_space_count="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Pp Indent Region]
-Category=10
-Description="<html>The indent for '#region' and '#endregion' in C# and '#pragma region' in<br/>C/C++. Negative values decrease indent down to the first column.</html>"
-Enabled=false
-EditorType=numeric
-CallName="pp_indent_region="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Pp Region Indent Code]
-Category=10
-Description="<html>Whether to indent the code between #region and #endregion.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_region_indent_code=true|pp_region_indent_code=false
-ValueDefault=false
-
-[Pp Indent If]
-Category=10
-Description="<html>If pp_indent_at_level=true, sets the indent for #if, #else and #endif when<br/>not at file-level. Negative values decrease indent down to the first column.<br/><br/>=0: Indent preprocessors using output_tab_size<br/>&gt;0: Column at which all preprocessors will be indented</html>"
-Enabled=false
-EditorType=numeric
-CallName="pp_indent_if="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Pp If Indent Code]
-Category=10
-Description="<html>Whether to indent the code between #if, #else and #endif.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_if_indent_code=true|pp_if_indent_code=false
-ValueDefault=false
-
-[Pp Indent In Guard]
-Category=10
-Description="<html>Whether to indent the body of an #if that encompasses all the code in the file.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_indent_in_guard=true|pp_indent_in_guard=false
-ValueDefault=false
-
-[Pp Define At Level]
-Category=10
-Description="<html>Whether to indent '#define' at the brace level. If false, these are<br/>indented from column 1.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_define_at_level=true|pp_define_at_level=false
-ValueDefault=false
-
-[Pp Include At Level]
-Category=10
-Description="<html>Whether to indent '#include' at the brace level.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_include_at_level=true|pp_include_at_level=false
-ValueDefault=false
-
-[Pp Ignore Define Body]
-Category=10
-Description="<html>Whether to ignore the '#define' body while formatting.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_ignore_define_body=true|pp_ignore_define_body=false
-ValueDefault=false
-
-[Pp Multiline Define Body Indent]
-Category=10
-Description="<html>An offset value that controls the indentation of the body of a multiline #define.<br/>'body' refers to all the lines of a multiline #define except the first line.<br/>Requires 'pp_ignore_define_body = false'.<br/><br/> &lt;0: Absolute column: the body indentation starts off at the specified column<br/> (ex. -3 ==&gt; the body is indented starting from column 3)<br/>&gt;=0: Relative to the column of the '#' of '#define'<br/> (ex. 3 ==&gt; the body is indented starting 3 columns at the right of '#')<br/><br/>Default: 8</html>"
-Enabled=false
-EditorType=numeric
-CallName="pp_multiline_define_body_indent="
-MinVal=-32
-MaxVal=32
-ValueDefault=8
-
-[Pp Indent Case]
-Category=10
-Description="<html>Whether to indent case statements between #if, #else, and #endif.<br/>Only applies to the indent of the preprocessor that the case statements<br/>directly inside of.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_indent_case=true|pp_indent_case=false
-ValueDefault=true
-
-[Pp Indent Func Def]
-Category=10
-Description="<html>Whether to indent whole function definitions between #if, #else, and #endif.<br/>Only applies to the indent of the preprocessor that the function definition<br/>is directly inside of.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_indent_func_def=true|pp_indent_func_def=false
-ValueDefault=true
-
-[Pp Indent Extern]
-Category=10
-Description="<html>Whether to indent extern C blocks between #if, #else, and #endif.<br/>Only applies to the indent of the preprocessor that the extern block is<br/>directly inside of.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_indent_extern=true|pp_indent_extern=false
-ValueDefault=true
-
-[Pp Indent Brace]
-Category=10
-Description="<html>How to indent braces directly inside #if, #else, and #endif.<br/>Requires pp_if_indent_code=true and only applies to the indent of the<br/>preprocessor that the braces are directly inside of.<br/> 0: No extra indent<br/> 1: Indent by one level<br/>-1: Preserve original indentation<br/><br/>Default: 1</html>"
-Enabled=false
-EditorType=numeric
-CallName="pp_indent_brace="
-MinVal=-1
-MaxVal=1
-ValueDefault=1
-
-[Pp Warn Unbalanced If]
-Category=10
-Description="<html>Whether to print warning messages for unbalanced #if and #else blocks.<br/>This will print a message in the following cases:<br/>- if an #ifdef block ends on a different indent level than<br/> where it started from. Example:<br/><br/> #ifdef TEST<br/> int i;<br/> {<br/> int j;<br/> #endif<br/><br/>- an #elif/#else block ends on a different indent level than<br/> the corresponding #ifdef block. Example:<br/><br/> #ifdef TEST<br/> int i;<br/> #else<br/> }<br/> int j;<br/> #endif</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_warn_unbalanced_if=true|pp_warn_unbalanced_if=false
-ValueDefault=false
-
-[Include Category 0]
-Category=11
-Description="<html>The regex for include category with priority 0.</html>"
-Enabled=false
-CallName=include_category_0=
-EditorType=string
-ValueDefault=
-
-[Include Category 1]
-Category=11
-Description="<html>The regex for include category with priority 1.</html>"
-Enabled=false
-CallName=include_category_1=
-EditorType=string
-ValueDefault=
-
-[Include Category 2]
-Category=11
-Description="<html>The regex for include category with priority 2.</html>"
-Enabled=false
-CallName=include_category_2=
-EditorType=string
-ValueDefault=
-
-[Use Indent Func Call Param]
-Category=12
-Description="<html>true: indent_func_call_param will be used (default)<br/>false: indent_func_call_param will NOT be used<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=use_indent_func_call_param=true|use_indent_func_call_param=false
-ValueDefault=true
-
-[Use Indent Continue Only Once]
-Category=12
-Description="<html>The value of the indentation for a continuation line is calculated<br/>differently if the statement is:<br/>- a declaration: your case with QString fileName ...<br/>- an assignment: your case with pSettings = new QSettings( ...<br/><br/>At the second case the indentation value might be used twice:<br/>- at the assignment<br/>- at the function call (if present)<br/><br/>To prevent the double use of the indentation value, use this option with the<br/>value 'true'.<br/><br/>true: indent_continue will be used only once<br/>false: indent_continue will be used every time (default)<br/><br/>Requires indent_ignore_first_continue=false.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=use_indent_continue_only_once=true|use_indent_continue_only_once=false
-ValueDefault=false
-
-[Indent Cpp Lambda Only Once]
-Category=12
-Description="<html>The indentation can be:<br/>- after the assignment, at the '[' character<br/>- at the beginning of the lambda body<br/><br/>true: indentation will be at the beginning of the lambda body<br/>false: indentation will be after the assignment (default)</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_cpp_lambda_only_once=true|indent_cpp_lambda_only_once=false
-ValueDefault=false
-
-[Use Sp After Angle Always]
-Category=12
-Description="<html>Whether sp_after_angle takes precedence over sp_inside_fparen. This was the<br/>historic behavior, but is probably not the desired behavior, so this is off<br/>by default.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=use_sp_after_angle_always=true|use_sp_after_angle_always=false
-ValueDefault=false
-
-[Use Options Overriding For Qt Macros]
-Category=12
-Description="<html>Whether to apply special formatting for Qt SIGNAL/SLOT macros. Essentially,<br/>this tries to format these so that they match Qt's normalized form (i.e. the<br/>result of QMetaObject::normalizedSignature), which can slightly improve the<br/>performance of the QObject::connect call, rather than how they would<br/>otherwise be formatted.<br/><br/>See options_for_QT.cpp for details.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=use_options_overriding_for_qt_macros=true|use_options_overriding_for_qt_macros=false
-ValueDefault=true
-
-[Use Form Feed No More As Whitespace Character]
-Category=12
-Description="<html>If true: the form feed character is removed from the list of whitespace<br/>characters. See https://en.cppreference.com/w/cpp/string/byte/isspace.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=use_form_feed_no_more_as_whitespace_character=true|use_form_feed_no_more_as_whitespace_character=false
-ValueDefault=false
-
-[Warn Level Tabs Found In Verbatim String Literals]
-Category=13
-Description="<html>(C#) Warning is given if doing tab-to-\t replacement and we have found one<br/>in a C# verbatim string literal.<br/><br/>Default: 2</html>"
-Enabled=false
-EditorType=numeric
-CallName="warn_level_tabs_found_in_verbatim_string_literals="
-MinVal=1
-MaxVal=3
-ValueDefault=2
-
-[Debug Max Number Of Loops]
-Category=13
-Description="<html>Limit the number of loops.<br/>Used by uncrustify.cpp to exit from infinite loop.<br/>0: no limit.</html>"
-Enabled=false
-EditorType=numeric
-CallName="debug_max_number_of_loops="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Debug Line Number To Protocol]
-Category=13
-Description="<html>Set the number of the line to protocol;<br/>Used in the function prot_the_line if the 2. parameter is zero.<br/>0: nothing protocol.</html>"
-Enabled=false
-EditorType=numeric
-CallName="debug_line_number_to_protocol="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Debug Timeout]
-Category=13
-Description="<html>Set the number of second(s) before terminating formatting the current file,<br/>0: no timeout.<br/>only for linux</html>"
-Enabled=false
-EditorType=numeric
-CallName="debug_timeout="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Debug Truncate]
-Category=13
-Description="<html>Set the number of characters to be printed if the text is too long,<br/>0: do not truncate.</html>"
-Enabled=false
-EditorType=numeric
-CallName="debug_truncate="
-MinVal=0
-MaxVal=960
-ValueDefault=0
-
-[Debug Sort The Tracks]
-Category=13
-Description="<html>sort (or not) the tracking info.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=debug_sort_the_tracks=true|debug_sort_the_tracks=false
-ValueDefault=true
-
-[Debug Decode The Flags]
-Category=13
-Description="<html>decode (or not) the flags as a new line.<br/>only if the -p option is set.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=debug_decode_the_flags=true|debug_decode_the_flags=false
-ValueDefault=false
-
-[Set Numbering For Html Output]
-Category=13
-Description="<html>insert the number of the line at the beginning of each line</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=set_numbering_for_html_output=true|set_numbering_for_html_output=false
-ValueDefault=false
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/xsupplicant.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/xsupplicant.cfg
deleted file mode 100644
index 66a93d78..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/xsupplicant.cfg
+++ /dev/null
@@ -1,82 +0,0 @@
-#
-# GNU-like format
-#
-
-indent_with_tabs = 0 # 1=indent to level only, 2=indent with tabs
-input_tab_size = 8 # original tab size
-output_tab_size = 2 # new tab size
-indent_columns = 2 # should usually match output_tab_size
-indent_label = 2 # pos: absolute col, neg: relative column
-indent_align_string = False # align broken strings
-indent_brace = 2
-
-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 = add # "do {" vs "do \n {"
-nl_if_brace = add # "if () {" vs "if () \n {"
-nl_for_brace = add # "for () {" vs "for () \n {"
-nl_else_brace = add # "else {" vs "else \n {"
-nl_while_brace = add # "while () {" vs "while () \n {"
-nl_switch_brace = add # "switch () {" vs "switch () \n {"
-nl_var_def_blk_end_func_top = 1
-nl_before_case = 1
-nl_fcall_brace = add # "foo() {" vs "foo()\n{"
-nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
-# nl_after_return = TRUE
-nl_brace_while = remove
-nl_brace_else = add
-nl_squeeze_ifdef = TRUE
-
-# 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 = ignore # "for () a--;" vs "for () { a--; }"
-# mod_full_brace_do = ignore # "do a--; while ();" vs "do { a--; } while ();"
-# mod_full_brace_while = ignore # "while (a) a--;" vs "while (a) { a--; }"
-
-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_type_func = ignore
-sp_assign = force
-sp_arith = force
-sp_bool = force
-sp_compare = 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();"
-
-# 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 = TRUE
-# align_var_def_colon = TRUE
-# align_assign_span = 1
-# align_struct_init_span = 3
-# align_var_struct_span = 3
-# align_right_cmt_span = 3
-# align_pp_define_span = 3
-# align_pp_define_gap = 4
-# align_number_right = 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
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/forUncrustifySources.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/forUncrustifySources.cfg
deleted file mode 100644
index 1f115593..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/forUncrustifySources.cfg
+++ /dev/null
@@ -1,473 +0,0 @@
-# The uncrustify sources are uncrustified with this config file.
-using 0.70.0
-
-# General options
-output_tab_size = 3
-tok_split_gte = true
-
-# Code alignment options
-align_asm_colon = true
-align_assign_decl_func = 2
-align_assign_func_proto_span = 4
-align_assign_span = 1
-align_enum_equ_span = 4
-align_enum_equ_thresh = 8
-align_func_params = true
-align_func_proto_star_style = 1
-align_nl_cont = true
-align_number_right = true
-align_pp_define_gap = 4
-align_pp_define_span = 3
-align_right_cmt_same_level = true
-align_right_cmt_span = 3
-align_struct_init_span = 3
-align_typedef_gap = 3
-align_typedef_span = 5
-align_typedef_star_style = 1
-align_var_class_span = 2
-align_var_def_amp_style = 1
-align_var_def_colon = true
-align_var_def_inline = true
-align_var_def_span = 2
-align_var_def_star_style = 1
-align_var_struct_span = 3
-
-# Indenting options
-indent_bool_paren = 1
-indent_class = true
-indent_columns = 3
-indent_compound_literal_return = false
-indent_cpp_lambda_only_once = true
-indent_first_bool_expr = true
-indent_macro_brace = true
-indent_member = 3
-indent_sparen_extra = 0
-indent_with_tabs = 0
-indent_oc_inside_msg_sel = false
-indent_off_after_assign = false
-indent_inside_ternary_operator = false
-
-# Newline adding and removing options
-nl_after_access_spec = 1
-nl_after_brace_close = true
-nl_after_brace_open = true
-nl_after_case = true
-nl_after_do = force
-nl_after_for = force
-nl_after_func_proto = 1
-nl_after_func_proto_group = 2
-nl_after_if = remove
-nl_after_member = remove
-nl_after_namespace = 2
-nl_after_return = true
-nl_after_semicolon = true
-nl_after_switch = remove
-nl_after_vbrace_open = true
-nl_after_while = remove
-nl_assign_brace = add
-nl_assign_leave_one_liners = true
-nl_before_brace_open = false
-nl_before_case = true
-nl_before_do = force
-nl_before_for = force
-nl_before_func_body_def = 3
-nl_before_if = force
-nl_before_if_closing_paren = remove
-nl_before_namespace = 2
-nl_before_opening_brace_func_class_def = force
-nl_before_switch = force
-nl_before_while = force
-nl_brace_catch = force
-nl_brace_else = add
-nl_brace_fparen = remove
-nl_brace_while = remove
-nl_case_colon_brace = force
-nl_catch_brace = add
-nl_class_brace = force
-nl_class_colon = remove
-nl_class_leave_one_liner_groups = true
-nl_class_leave_one_liners = true
-nl_template_args = false
-nl_template_class_decl = remove
-nl_template_class_def = force
-nl_template_end = false
-nl_template_func_decl = remove
-nl_template_func_def = force
-nl_template_start = false
-nl_template_var = remove
-nl_template_using = remove
-nl_comment_func_def = 1
-nl_constr_colon = force
-nl_constr_init_args = force
-nl_do_brace = add
-nl_else_brace = add
-nl_else_if = remove
-nl_elseif_brace = add
-nl_end_of_file = force
-nl_end_of_file_min = 1
-nl_enum_brace = force
-nl_enum_class_identifier = remove
-nl_enum_class = remove
-nl_enum_colon_type = remove
-nl_enum_identifier_colon = remove
-nl_enum_leave_one_liners = true
-nl_fcall_brace = add
-nl_fdef_brace = force
-nl_fdef_brace_cond = force
-nl_finally_brace = add
-nl_for_brace = add
-nl_func_call_empty = remove
-nl_func_call_paren = remove
-nl_func_call_paren_empty = remove
-nl_func_class_scope = remove
-nl_func_decl_args = remove
-nl_func_decl_empty = remove
-nl_func_decl_end = remove
-nl_func_decl_end_single = remove
-nl_func_decl_start = remove
-nl_func_decl_start_single = remove
-nl_func_def_empty = remove
-nl_func_def_end = remove
-nl_func_def_end_single = remove
-nl_func_def_paren = remove
-nl_func_def_paren_empty = remove
-nl_func_def_start = remove
-nl_func_def_start_single = remove
-nl_func_paren = remove
-nl_func_paren_empty = remove
-nl_func_proto_type_name = remove
-nl_func_scope_name = remove
-nl_func_type_name = remove
-nl_func_type_name_class = remove
-nl_getset_leave_one_liners = true
-nl_if_brace = add
-nl_inside_empty_func = 1
-nl_inside_namespace = 2
-nl_max = 3
-nl_namespace_brace = force
-nl_return_expr = remove
-nl_squeeze_ifdef = true
-nl_start_of_file = remove
-nl_struct_brace = add
-nl_switch_brace = add
-nl_try_brace = add
-nl_type_brace_init_lst = force
-nl_type_brace_init_lst_close = force
-nl_type_brace_init_lst_open = force
-nl_union_brace = add
-nl_var_def_blk_end_func_top = 1
-nl_while_brace = add
-
-# Positioning options
-pos_bool = lead
-pos_constr_colon = lead_break
-pos_constr_comma = lead_force
-pos_enum_comma = trail_force
-
-# Preprocessor options
-pp_indent = remove
-pp_space_after = remove
-pp_multiline_define_body_indent = 3
-
-# Spacing options
-sp_addr = remove
-sp_after_angle = force
-sp_after_byref_func = remove
-sp_after_byref = remove
-sp_after_cast = remove
-sp_after_class_colon = force
-sp_after_comma = force
-sp_after_constr_colon = force
-sp_after_dc = remove
-sp_after_for_colon = force
-sp_after_new = force
-sp_after_operator = remove
-sp_after_operator_sym = remove
-sp_after_ptr_star_func = remove
-sp_after_ptr_star_qualifier = remove
-sp_after_ptr_star = remove
-sp_after_semi = force
-sp_after_semi_for = force
-sp_after_semi_for_empty = remove
-sp_after_sparen = force
-sp_after_tparen_close = remove
-sp_after_type = force
-sp_after_type_brace_init_lst_open = force
-sp_angle_paren_empty = remove
-sp_angle_paren = remove
-sp_angle_word = force
-sp_arith_additive = force
-sp_arith = force
-sp_assign_default = force
-sp_assign = force
-sp_attribute_paren = remove
-sp_balance_nested_parens = false
-sp_before_angle = remove
-sp_before_byref = force
-sp_before_byref_func = force
-sp_before_case_colon = remove
-sp_before_class_colon = force
-sp_before_comma = remove
-sp_before_dc = remove
-sp_before_ellipsis = remove
-sp_before_for_colon = force
-sp_before_ptr_star = force
-sp_before_ptr_star_func = force
-sp_before_semi = remove
-sp_before_semi_for_empty = force
-sp_before_semi_for = remove
-sp_before_sparen = force
-sp_before_square = remove
-sp_before_squares = remove
-sp_before_type_brace_init_lst_close = force
-sp_before_unnamed_byref = force
-sp_before_unnamed_ptr_star = force
-sp_before_vardef_square = remove
-sp_between_ptr_star = remove
-sp_between_semi_for_empty = force
-sp_bool = force
-sp_brace_brace = force
-sp_brace_close_while = force
-sp_brace_typedef = force
-sp_catch_paren = force
-sp_compare = force
-sp_cond_colon_after = force
-sp_cond_colon_before = force
-sp_cond_question_after = force
-sp_cond_question_before = force
-sp_cpp_before_struct_binding = remove
-sp_cpp_cast_paren = remove
-sp_cpp_lambda_fparen = remove
-sp_cpp_lambda_paren_brace = force
-sp_cpp_lambda_square_brace = force
-sp_cpp_lambda_square_paren = remove
-sp_decltype_paren = remove
-sp_defined_paren = force
-sp_deref = remove
-sp_do_brace_open = force
-sp_endif_cmt = force
-sp_enum_after_assign = force
-sp_enum_assign = force
-sp_enum_before_assign = force
-sp_enum_colon = force
-sp_fparen_brace = force
-sp_fparen_brace_initializer = force
-sp_func_call_paren_empty = remove
-sp_func_call_paren = remove
-sp_func_class_paren = remove
-sp_func_class_paren_empty = remove
-sp_func_def_paren_empty = remove
-sp_func_def_paren = remove
-sp_func_proto_paren_empty = remove
-sp_func_proto_paren = remove
-sp_func_type_paren = remove
-sp_incdec = remove
-sp_inside_angle_empty = remove
-sp_inside_angle = remove
-sp_inside_braces_empty = remove
-sp_inside_braces_enum = force
-sp_inside_braces = force
-sp_inside_braces_struct = force
-sp_inside_fparen = remove
-sp_inside_fparens = remove
-sp_inside_paren = remove
-sp_inside_paren_cast = remove
-sp_inside_sparen = remove
-sp_inside_sparen_close = remove
-sp_inside_sparen_open = remove
-sp_inside_square = remove
-sp_inside_square_empty = remove
-sp_inside_tparen = remove
-sp_inv = remove
-sp_member = remove
-sp_not = remove
-sp_paren_paren = remove
-sp_paren_qualifier = force
-sp_pp_concat = force
-sp_pp_stringify = force
-sp_ptr_star_func_var = remove
-sp_ptr_star_func_type = remove
-sp_ptr_star_paren = force
-sp_return_brace = remove
-sp_return_paren = remove
-sp_sign = remove
-sp_sizeof_paren = remove
-sp_sparen_brace = force
-sp_template_angle = remove
-sp_trailing_return = force
-sp_type_brace_init_lst = remove
-sp_type_func = force
-sp_while_paren_open = force
-sp_word_brace_init_lst = remove
-
-# Comment modification options
-cmt_star_cont = true
-
-# eat
-eat_blanks_after_open_brace = true
-eat_blanks_before_close_brace = true
-
-# Code modifying options
-mod_add_long_function_closebrace_comment = 40
-mod_add_long_namespace_closebrace_comment = 5
-mod_add_long_switch_closebrace_comment = 40
-mod_full_brace_do = add
-mod_full_brace_for = add
-mod_full_brace_if = add
-mod_full_brace_while = add
-mod_paren_on_return = add
-#mod_remove_empty_return = true
-mod_remove_empty_return = false
-mod_remove_extra_semicolon = true
-mod_sort_include = true
-mod_sort_incl_import_prioritize_filename = false
-mod_sort_incl_import_prioritize_extensionless = false
-mod_sort_incl_import_prioritize_angle_over_quotes = false
-mod_sort_incl_import_ignore_extension = false
-mod_sort_incl_import_grouping_enabled = false
-debug_timeout = 0
-
-# the build of uncrustify needs the options to be set to ignore
-sp_after_assign = ignore
-sp_before_assign = ignore
-sp_before_tr_cmt = ignore
-sp_cmt_cpp_start = ignore
-nl_before_member = ignore
-nl_brace_brace = ignore
-nl_cpp_ldef_brace = ignore // TODO
-nl_enum_own_lines = ignore
-nl_func_call_args = ignore
-nl_func_call_start = ignore // remove
-nl_func_call_end = ignore // remove
-nl_func_def_args = ignore
-
-use_form_feed_no_more_as_whitespace_character = false
-
-# NOT yet used sp_xx options
-# sp_after_decltype
-# sp_after_invariant_paren
-# sp_after_mdatype_commas
-# sp_after_newop_paren
-# sp_after_noexcept
-# sp_after_oc_at_sel
-# sp_after_oc_at_sel_parens
-# sp_after_oc_block_caret
-# sp_after_oc_colon
-# sp_after_oc_dict_colon
-# sp_after_oc_msg_receiver
-# sp_after_oc_property
-# sp_after_oc_return_type
-# sp_after_oc_scope
-# sp_after_oc_synchronized
-# sp_after_oc_type
-# sp_after_operator_sym_empty
-# sp_after_ptr_block_caret
-# sp_after_send_oc_colon
-# sp_after_tag
-# sp_after_throw
-# sp_angle_colon
-# sp_angle_shift
-# sp_annotation_paren
-# sp_before_constr_colon
-# sp_before_mdatype_commas
-# sp_before_nl_cont
-# sp_before_oc_block_caret
-# sp_before_oc_colon
-# sp_before_oc_dict_colon
-# sp_before_oc_proto_list
-# sp_before_pp_stringify
-# sp_before_send_oc_colon
-# sp_before_square_asm_block
-# sp_before_template_paren
-# sp_between_mdatype_commas
-# sp_between_new_paren
-# sp_brace_catch
-# sp_brace_else
-# sp_brace_finally
-# sp_case_label
-# sp_catch_brace
-# sp_cond_question
-# sp_cond_ternary_short
-# sp_cparen_oparen
-# sp_cpp_lambda_assign
-# sp_d_array_colon
-# sp_else_brace
-# sp_enum_brace
-# sp_enum_paren
-# sp_extern_paren
-# sp_finally_brace
-# sp_fparen_dbrace
-# sp_func_call_user_inside_fparen
-# sp_func_call_user_paren
-# sp_func_call_user_paren_paren
-# sp_getset_brace
-# sp_inside_braces_oc_dict
-# sp_inside_newop_paren
-# sp_inside_newop_paren_close
-# sp_inside_newop_paren_open
-# sp_inside_oc_at_sel_parens
-# sp_inside_square_oc_array
-# sp_inside_type_brace_init_lst
-# sp_invariant_paren
-# sp_macro
-# sp_macro_func
-# sp_oc_brace_catch
-# sp_oc_catch_brace
-# sp_oc_catch_paren
-# sp_oc_classname_paren
-# sp_paren_brace
-# sp_paren_comma
-# sp_paren_ellipsis
-# sp_paren_noexcept
-# sp_range
-# sp_scope_paren
-# sp_sizeof_ellipsis
-# sp_sizeof_ellipsis_paren
-# sp_special_semi
-# sp_square_fparen
-# sp_super_paren
-# sp_this_paren
-# sp_throw_paren
-# sp_trailing_ret_t
-# sp_try_brace
-# sp_type_ellipsis
-# sp_vala_after_translation
-# sp_version_paren
-# sp_word_brace
-# sp_word_brace_ns
-
-# NOT yet used nl_xx options
-# nl_after_annotation
-# nl_after_square_assign
-# nl_after_synchronized
-# nl_assign_square
-# nl_before_synchronized
-# nl_before_throw
-# nl_between_annotation
-# nl_brace_finally
-# nl_brace_square
-# nl_brace_struct_var
-# nl_class_init_args
-# nl_getset_brace
-# nl_oc_before_end
-# nl_oc_before_implementation
-# nl_oc_before_interface
-# nl_oc_block_brace
-# nl_oc_brace_catch
-# nl_oc_catch_brace
-# nl_oc_implementation_brace
-# nl_oc_interface_brace
-# nl_oc_mdef_brace
-# nl_paren_dbrace_open
-# nl_property_brace
-# nl_scope_brace
-# nl_synchronized_brace
-# nl_template_class
-# nl_tsquare_brace
-# nl_unittest_brace
-# nl_using_brace
-# nl_version_brace
-# nl_func_call_args_multi_line_ignore_closures
-
-# NOT yet used indent_xx options
-# indent_off_after_return
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/package.json b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/package.json
deleted file mode 100644
index f8fcb2a0..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/package.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "uncrustify",
- "version": "0.76.0",
- "description": "A highly configurable, easily modifiable source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA",
- "main": "uncrustify",
- "scripts": {
- "preinstall": "mkdir -p build && cd build && cmake .. && make"
- },
- "bin": "src/uncrustify",
- "repository": {
- "type": "git",
- "url": "https://github.com/uncrustify/uncrustify"
- },
- "keywords": [
- "uncrustify",
- "source code beautifier"
- ],
- "author": "Ben Gardner",
- "author": "Guy Maurel",
- "license": "GPL-2.0-or-later"
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/release-process.rst b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/release-process.rst
deleted file mode 100644
index c208330a..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/release-process.rst
+++ /dev/null
@@ -1,325 +0,0 @@
-============================
- Uncrustify Release Process
-============================
-
-.. Update the date in the next line when editing this document!
-
-*This document was last updated on 2022-11-22, for Uncrustify 0.76.0.*
-
-This document uses "0.1.2" throughout as an example version number.
-Whenever you see this, you should substitute the version number
-of the new release being prepared.
-
-Paths are specified in git syntax, i.e. ``:/`` is the repository root.
-
-Requirements
-============
-
-This document assumes you are using a Linux-based OS.
-While it should be possible to cut a release on Windows,
-using e.g. the `Git for Windows SDK <https://gitforwindows.org/>`_
-or a MinGW_ environment, the names and/or arguments to some commands
-may be different.
-
-
-In addition to the build and test requirements for Uncrustify itself
-(CMake, a C++ compiler, Python, git), you will also need:
-
-- tar
-- python3-git
-- Binutils-mingw-w64
-- Gcc-mingw-w64
-- G++-mingw-w64
-- zip
-- wget (optional)
-- scp (to update documentation on the SourceForge page)
-
-Using packages provided by your OS distribution is *strongly* recommended.
-(Exact package names may vary depending on your distribution.)
-Examples use ``wget`` to download files via command line,
-but any mechanism of obtaining files over HTTPS may be employed.
-
-Preparing a Candidate
-=====================
-
-The first step, obviously, is deciding to make a release.
-Prior to making a release, verify that the repository is in a stable state
-and that all CI (continuous integration - AppVeyor) has passed.
-This should ensure all tests pass and building
-(including cross-compiling) for Windows is working.
-
-Once the release process is started,
-only pull requests needed to fix critical bugs,
-or related to the release process, should be accepted.
-(This will minimize the need to redo or repeat work
-such as updating the documentation, especially the change log.)
-
-To start the release process, first check that:
-
-- You are on the ``master`` branch
-- Your local clone is up to date
-- ``CMAKE_BUILD_TYPE`` is set to ``Release`` (or ``RelWithDebInfo``)
-- Your build is up to date
-- check the list of authors with scripts/prepare_list_of_authors.sh
-
-Then, run::
-
- $ scripts/release_tool.py init
- $ scripts/release_tool.py update path/to/uncrustify
-
-(Replace ``path/to/uncrustify`` with the path to the Uncrustify executable
-you just built, e.g. ``build/uncrustify``.)
-
-This will create a branch for the release candidate
-and perform some automated updates to various files.
-With no arguments, ``init`` will prompt you for the new version number,
-defaulting to ``x.(y+1).0``, where ``x.y.z`` is the previous release.
-The ``--version`` argument may also be used to specify the version
-(e.g. if the script will not be able to prompt for input).
-
-After, you should check that the following files
-show the correct version number and option count:
-
-- ``:/CMakeLists.txt`` (version number only; look for ``UNCRUSTIFY_VERSION``)
-- ``:/package.json`` (version number only; you'll see it, the file is tiny)
-- ``:/README.md`` (look for "options as of version")
-- ``:/documentation/htdocs/index.html`` (look for "options as of version")
-
-(Note that ``uncrustify`` itself will not show the new version number
-until the final release has been tagged.)
-
-Update Documentation
-====================
-
-Update ``:/ChangeLog``.
-There is a helper script, ``:/scripts/gen_changelog.py``,
-that can help extract new options since the previous release:
-
-.. code::
-
- $ scripts/gen_changelog.py uncrustify-0.0.0
-
-Replace ``0.0.0`` with the version of the *previous* release.
-This will generate a bunch of output like::
-
- 0123456789abcdef0123456789abcdef01234567
- Added : better_name Jan 13 1970
- Removed : poor_name Jan 13 1970
- fedcba9876543210fedcba9876543210fedcba98
- Added : new_option_1 Jan 18 1970
- Added : new_option_2 Jan 18 1970
-
-Your goal is to turn the "raw" output into something like this::
-
- Deprecated options:
- - poor_name Jan 13 1970
- Renamed to better_name
-
- New options:
- - new_option_1 Jan 18 1970
- - new_option_1 Jan 18 1970
-
-To accomplish this, you will need to inspect any removed options,
-possibly consulting the commits in which they were removed,
-to determine the reason for deprecation and what replacement is recommended.
-(Note that it may not be as simple as "use X instead".)
-Also watch for options that were added and subsequently renamed
-since the last release. (This has happened a few times.
-In such cases, the new name should show up as an ordinary "new" option,
-and the old name should be entirely omitted from the change log.)
-
-It helps to copy the output to a scratch file for editing.
-Move deprecated options to the top and add a "Deprecated options:" header,
-then add a "New options:" header in front of what's left,
-and remove the commit SHAs (``sed -r '/^[[:xdigit:]]{40}/d``
-if you don't want to do it by hand).
-Then, check that the options are in order by date;
-date of authorship vs. date of merge may cause discrepancies.
-Finally, replace occurrences of ``\w+ +:`` with ``-``
-(if your editor supports regular expressions;
-otherwise you can individually replace ``Added :`` and ``Removed :``).
-
-Add a new release header (don't forget to add the date!) to the change log
-and insert the list of option changes as created above.
-Also fill in the list of resolved issues, new keywords (if any),
-as well as any other changes that need to be mentioned.
-
-If any command line arguments have been added or changed,
-including descriptions for the same, check to see if
-``:/man/uncrustify.1.in`` needs to be updated.
-(Hopefully this happened when the source was changed!)
-
-Finalize the Code Changes
-=========================
-
-Inspect your working tree.
-Use ``git add -p`` to stage the changes made to the documentation
-and other artifacts that contain version-dependent information.
-Verify that only desired changes are staged,
-and that your working tree is otherwise clean.
-
-Now is a good time to recheck
-that everything builds, and that all the tests pass.
-This is also a good time to manually test 32- and 64-bit builds.
-
-When you are ready, commit the changes using:
-
-.. code::
-
- $ scripts/release_tool.py commit
-
-(If you prefer, you can also commit the changes manually;
-the script just fills in the commit message for you.)
-
-Submit and Tag the Release
-==========================
-
-Push the release candidate branch to GitHub, and create a pull request.
-Once the pull request is merged, tag the release using:
-Make sure, the file .git/config has the right value:
-[remote "origin"]
- url = https://github.com/uncrustify/uncrustify.git
-
-.. code::
-
- $ scripts/release_tool.py tag
-
-Note that this will only work if the merge of the release candidate
-is the most recent commit upstream.
-Otherwise, the merge commit must be specified by using the ``-c`` option.
-
-(Tagging the release does not need to be done on any particular branch.
-The command will not affect or look at your work tree at all.)
-
-Create Binaries
-===============
-
-Now that the release is published, grab a copy of the sources from GitHub:
-
-.. code::
-
- $ wget https://github.com/uncrustify/uncrustify/archive/uncrustify-0.1.2.zip
- $ unzip -e uncrustify-0.1.2.zip
-
-Next, build the 32- and 64-bit Windows binaries:
-
-.. code::
-
- $ cd /path/to/uncrustify-uncrustify-0.1.2
- $ mkdir buildwin-32
- $ cd buildwin-32
- $ cmake -G Ninja \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw32.cmake \
- -DCMAKE_EXE_LINKER_FLAGS="-static -s" \
- ..
- $ ninja
- $ cpack
-
-.. code::
-
- $ cd /path/to/uncrustify-uncrustify-0.1.2
- $ mkdir buildwin-64
- $ cd buildwin-64
- $ cmake -G Ninja \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw64.cmake \
- -DCMAKE_EXE_LINKER_FLAGS="-static -s" \
- ..
- $ ninja
- $ cpack
-
-Create a tarball:
-
-.. code::
-
- $ cd /path/to/uncrustify
- $ git archive -o uncrustify-0.1.2.tar.gz --prefix=uncrustify-0.1.2/ uncrustify-0.1.2
-TODO: find the best strategie...
-
-(If you don't have Ninja_, or just don't want to use it for whatever reason,
-omit ``-G Ninja`` and run ``make`` instead of ``ninja``.)
-
-This is also a good time to test the tagged build on Linux:
-
-.. code::
-
- $ wget https://github.com/uncrustify/uncrustify/archive/uncrustify-0.1.2.tar.gz
- $ tar xzf uncrustify-0.1.2.tar.gz
- $ cd uncrustify-uncrustify-0.1.2
- $ mkdir build
- $ cd build
- $ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
- $ ninja
- $ ctest
- $ ./uncrustify --version
-
-Upload to SourceForge
-=====================
-
-- Login as admin under https://sourceforge.net/projects/uncrustify/
-- Change to https://sourceforge.net/projects/uncrustify/files/
-- "Add Folder"; the name should be e.g. "uncrustify-0.1.2"
-- Navigate to the new folder
- (e.g. https://sourceforge.net/projects/uncrustify/files/uncrustify-0.1.2/)
-- "Add File"; upload the following files
- (adjusting for the actual version number):
-
- - README.md
- - uncrustify-0.1.2.tar.gz
- - buildwin-32/uncrustify-0.1.2_f-win32.zip
- - buildwin-64/uncrustify-0.1.2_f-win64.zip
-
-- "Done"
-- Upload the documentation:
-
- .. code::
-
- $ scp -r documentation/htdocs/* ChangeLog \
- USER,uncrustify@web.sourceforge.net:htdocs/
-
-- Use the web interface (file manager) to create the release folder
- and upload the files to SourceForge.
-
-Announce the Release (Optional)
-===============================
-
-The new release is live! Spread the word! Consider these ideas:
-
-- Create a news item.
-- Update freshmeat.net project.
-
-Release Checklist
-=================
-
-The following list serves as a quick reference for making a release.
-These items are explained in greater detail above.
-
-#. Verify that CI passes
-
-#. Use ``release_tool.py`` to initialize the release
- and perform automated updates. Check:
-
- #. ``:/CMakeLists.txt``
- #. ``:/package.json``
- #. ``:/README.md``
- #. ``:/documentation/htdocs/index.html``
-
-#. Update documentation as needed:
-
- #. ``:/ChangeLog``
- #. ``:/man/uncrustify.1.in``
-
-#. Stage changes.
-#. Test everything again.
-#. Finalize the code changes.
-#. Push to GitHub and create a merge request.
-#. Tag the merged release branch.
-#. Create Windows (32- and 64-bit) binaries.
-#. Run a test build on Linux.
-#. Upload the release and documentation to SourceForge.
-#. Announce the release!
-
-.. _MinGW: http://www.mingw.org/
-.. _GitPython: https://github.com/gitpython-developers/GitPython
-.. _Ninja: https://ninja-build.org/
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/gen_changelog.py b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/gen_changelog.py
deleted file mode 100755
index 8e042385..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/gen_changelog.py
+++ /dev/null
@@ -1,111 +0,0 @@
-#!/usr/bin/env python
-
-'''
-This script attempts to extract what options have been added since the
-specified revision (usually a tag, but any revision that git recognizes may be
-provided). It accepts an optional second revision to use as the cut-off. The
-default is your LOCAL "master". Thus, you should ensure that this is up to date
-before running this script.
-
-This script works by extracting the set of options before and after every
-commit that affected ':src/options.h' and computing the differences. It should,
-therefore, be fairly robust (for example, options that moved around won't show
-up). However, if an option is removed and subsequently re-added, or if an
-option was added and subsequently removed, the resulting records will need to
-be reconciled manually.
-'''
-
-import argparse
-import git
-import os
-import re
-import sys
-import time
-
-re_option = re.compile(r'extern (Bounded)?Option<[^>]+>')
-
-
-# -----------------------------------------------------------------------------
-def extract_options(repo, blob_id):
- from git.util import hex_to_bin
-
- blob = git.Blob(repo, hex_to_bin(blob_id))
- content = blob.data_stream.stream
- options = set()
-
- for line in iter(content.readline, b''):
- line = line.decode('utf-8').strip()
-
- if re_option.match(line):
- line = content.readline().decode('utf-8').strip()
- options.add(line.split(';')[0])
-
- return options
-
-
-# =============================================================================
-class Changeset(object):
- # -------------------------------------------------------------------------
- def __init__(self, repo, sha):
- self.sha = sha
- self.added_options = set()
- self.removed_options = set()
-
- commit = repo.commit(sha)
- ad = time.gmtime(commit.authored_date)
- self.date = time.strftime('%b %d %Y', ad).replace(' 0', ' ')
-
- info = repo.git.log('-1', '--raw', '--abbrev=40', '--pretty=',
- sha, '--', ':src/options.h').split(' ')
- if len(info) < 5:
- return
-
- old_options = extract_options(repo, info[2])
- new_options = extract_options(repo, info[3])
- self.added_options = new_options.difference(old_options)
- self.removed_options = old_options.difference(new_options)
-
-
-# -----------------------------------------------------------------------------
-def main():
- parser = argparse.ArgumentParser(
- description='Generate changelog for new options')
-
- root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
- parser.add_argument('--repo', type=str, default=root,
- help='Path to uncrustify git repository')
- parser.add_argument('since', type=str,
- help='Revision (tag) of previous uncrustify version')
- parser.add_argument('until', type=str, default='master', nargs='?',
- help='Revision (tag) of next uncrustify version')
-
- args = parser.parse_args()
- repo = git.Repo(args.repo)
- revs = repo.git.log('--pretty=%H', '--reverse',
- '{}..{}'.format(args.since, args.until),
- '--', ':src/options.h').split('\n')
-
- if revs == ['']:
- print('No changes were found')
- return 1
-
- changes = []
- for r in revs:
- c = Changeset(repo, r)
- if len(c.added_options) or len(c.removed_options):
- changes.append(c)
-
- for c in changes:
- print(c.sha)
- for o in c.added_options:
- print(' Added : {:36} {}'.format(o, c.date))
- for o in c.removed_options:
- print(' Removed : {:36} {}'.format(o, c.date))
-
- return 0
-
-
-# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/release_tool.py b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/release_tool.py
deleted file mode 100755
index b90f543b..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/release_tool.py
+++ /dev/null
@@ -1,247 +0,0 @@
-#!/usr/bin/env python
-
-import argparse
-import git
-import os
-import re
-import sys
-
-if sys.version_info[0] < 3:
- input = raw_input
-
-re_desc = re.compile(r'^uncrustify-([0-9]+[.][0-9]+[.][0-9]+)')
-re_branch = re.compile(r'^uncrustify-RC-([0-9]+[.][0-9]+[.][0-9]+)')
-re_merge = re.compile(r'^Merge pull request #[0-9]+ from [^/]+/(.*)')
-re_version = re.compile(r'^[0-9]+[.][0-9]+[.][0-9]+$')
-re_option_count = re.compile(r'There are currently ([0-9]+) options')
-
-
-# -----------------------------------------------------------------------------
-def fatal(msg):
- raise Exception(msg)
-
-
-# -----------------------------------------------------------------------------
-def get_version_str(repo, candidate=True, required=True):
- if candidate:
- b = repo.git.symbolic_ref('-q', '--short', 'HEAD')
- m = re_branch.match(b)
- if m:
- return m.group(1)
-
- d = repo.git.describe('HEAD')
- m = re_desc.match(d)
- if m:
- return m.group(1)
-
- if required:
- fatal('Unable to determine current version')
-
- return None
-
-
-# -----------------------------------------------------------------------------
-def get_version_info(repo, candidate=True, required=True):
- s = get_version_str(repo, candidate, required)
- return tuple(map(int, s.split('.')))
-
-
-# -----------------------------------------------------------------------------
-def get_option_count(executable):
- import subprocess
-
- out = subprocess.check_output([executable, '--count-options'])
- m = re_option_count.match(out.decode('utf-8'))
- if m is None:
- fatal('Failed to get option count from \'{}\''.format(executable))
-
- return int(m.group(1))
-
-
-# -----------------------------------------------------------------------------
-def alter(repo, path, old, new):
- p = os.path.join(repo.working_tree_dir, path)
- with open(p, 'r') as f:
- content = f.read()
- content = re.sub(old, new, content)
- with open(p, 'w') as f:
- f.write(content)
- print('Updated: {}'.format(path))
-
-
-# -----------------------------------------------------------------------------
-def generate(repo, version, path, *args):
- import subprocess
-
- p = os.path.join(repo.working_tree_dir, path)
- with open(p, 'w') as f:
- c = subprocess.check_call(args, stdout=f)
- print('Created: {}'.format(path))
-
- alter(repo, path,
- r'Uncrustify-[0-9.]+(-[0-9]+-[0-9a-f]+(-dirty)?)?',
- r'Uncrustify-{}'.format(version))
-
-
-# -----------------------------------------------------------------------------
-def cmd_init(repo, args):
- v = args.version
- if v is None:
- c = get_version_info(repo, candidate=False, required=False)
- if c:
- n = '.'.join(map(str, (c[0], c[1] + 1, 0)))
- v = input('Version to be created? [{}] '.format(n))
- if len(v) == 0:
- v = n
-
- else:
- v = input('Version to be created? ')
-
- if not re_version.match(v):
- fatal('Bad version number, \'{}\''.format(v))
-
- repo.git.checkout('-b', 'uncrustify-RC-{}'.format(v))
-
-
-# -----------------------------------------------------------------------------
-def cmd_update(repo, args):
- v = get_version_str(repo)
- c = get_option_count(args.executable)
-
- alter(repo, 'CMakeLists.txt',
- r'(set *[(] *UNCRUSTIFY_VERSION +")[0-9.]+',
- r'\g<1>{}'.format(v))
- alter(repo, 'package.json',
- r'("version" *): *"[0-9.]+"',
- r'\g<1>: "{}"'.format(v))
- alter(repo, 'README.md',
- r'[0-9]+ configurable options as of version [0-9.]+',
- r'{} configurable options as of version {}'.format(c, v))
- alter(repo, 'documentation/htdocs/index.html',
- r'[0-9]+ configurable options as of version [0-9.]+',
- r'{} configurable options as of version {}'.format(c, v))
-
- generate(repo, v, 'etc/defaults.cfg',
- args.executable, '--show-config')
- generate(repo, v, 'documentation/htdocs/default.cfg',
- args.executable, '--show-config')
- generate(repo, v, 'documentation/htdocs/config.txt',
- args.executable, '--show-config')
- generate(repo, v, 'etc/uigui_uncrustify.ini',
- args.executable, '--universalindent')
-
-
-# -----------------------------------------------------------------------------
-def cmd_commit(repo, args):
- v = get_version_str(repo)
- message = 'Prepare Uncrustify v{} release'.format(v)
-
- extra_args = []
- if args.amend:
- extra_args += ['--amend', '--date=now']
-
- repo.git.commit('-m', message, *extra_args)
-
-
-# -----------------------------------------------------------------------------
-def cmd_tag(repo, args):
- import uuid
-
- # Determine location of remote repository
- if args.ssh:
- s = 'git@{}:'.format(args.server)
- else:
- s = 'https://{}/'.format(args.server)
- r = '{}{}/{}.git'.format(s, args.organization, args.project)
-
- # Fetch upstream
- u = repo.create_remote(str(uuid.uuid4()), r)
- try:
- u.fetch(refspec='master')
-
- # Get log
- if hasattr(args, 'commit'):
- c = repo.commit(args.commit)
- else:
- c = repo.commit('{}/master'.format(u.name))
- m = re_merge.match(c.message.split('\n')[0])
- if m is None:
- fatal('Last commit is not a merge of a release candidate?')
-
- m = re_branch.match(m.group(1))
- if m is None:
- fatal('Failed to extract version from release candidate merge')
- v = m.group(1)
-
- # Create and push tag
- extra_args = {}
- if args.force:
- extra_args['force_with_lease'] = True
-
- tag = 'uncrustify-{}'.format(v)
- message = 'Create Uncrustify v{} release'.format(v)
- repo.git.tag('-a', tag, c, '-m', message, '--force')
- u.push(refspec=tag, **extra_args)
-
- finally:
- repo.delete_remote(u)
-
-
-# -----------------------------------------------------------------------------
-def main():
- parser = argparse.ArgumentParser(
- description='Perform release-related actions')
-
- root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
- parser.add_argument('--repo', type=str, default=root,
- help='path to uncrustify git repository')
-
- subparsers = parser.add_subparsers(title='subcommands',
- help='action to perform')
-
- parser_init = subparsers.add_parser(
- 'init', help='initialize new version')
- parser_init.set_defaults(func=cmd_init)
- parser_init.add_argument('-v', '--version',
- help='version number for release')
-
- parser_update = subparsers.add_parser(
- 'update', help='update version information')
- parser_update.set_defaults(func=cmd_update, keepversion=False)
- parser_update.add_argument('executable',
- help='path to uncrustify executable')
-
- parser_commit = subparsers.add_parser(
- 'commit', help='commit changes for new version')
- parser_commit.set_defaults(func=cmd_commit)
- parser_commit.add_argument('-a', '--amend', action='store_true',
- help='amend a previous release commit')
-
- parser_tag = subparsers.add_parser(
- 'tag', help='tag release and push tag to github')
- parser_tag.set_defaults(func=cmd_tag)
- parser_tag.add_argument('--ssh', action='store_true',
- help='use ssh (instead of HTTPS) to push')
- parser_tag.add_argument('-s', '--server', default='github.com',
- help='push to specified server')
- parser_tag.add_argument('-o', '--organization', default='uncrustify',
- help='push to specified user or organization')
- parser_tag.add_argument('-p', '--project', default='uncrustify',
- help='push to specified project')
- parser_tag.add_argument('-c', '--commit',
- help='tag specified commit '
- '(instead of latest \'master\')')
- parser_tag.add_argument('-f', '--force', action='store_true',
- help='force push the tag')
-
- args = parser.parse_args()
- repo = git.Repo(args.repo)
- args.func(repo, args)
-
- return 0
-
-
-# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/run_ctest.py b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/run_ctest.py
deleted file mode 100755
index 0267e0ad..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/run_ctest.py
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env python
-
-import argparse
-import math
-import os
-import subprocess
-import sys
-
-from multiprocessing import cpu_count
-
-default_jobs = min(cpu_count() + 2, cpu_count() * 2)
-
-# -----------------------------------------------------------------------------
-def main():
- parser = argparse.ArgumentParser(description='Run CTest')
- parser.add_argument('-q', '--quiet', action='store_true',
- help='suppress output of failing tests')
- parser.add_argument('-j', '--parallel', type=int, default=default_jobs,
- help='number of jobs to use for parallel execution')
- parser.add_argument('args', metavar='ARGS', nargs='*', default=[],
- help='additional arguments to pass to CTest')
- args = parser.parse_args()
-
- if not os.path.exists('CTestTestfile.cmake'):
- print('No test configuration file found!')
- print('(Note: This script must be run from your build directory.)')
- sys.exit(-1)
-
- cmd = ['ctest', '-j{}'.format(args.parallel)]
- if not args.quiet:
- cmd.append('--output-on-failure')
- cmd += args.args
-
- try:
- subprocess.check_call(cmd)
- except subprocess.CalledProcessError as exc:
- sys.exit(exc.returncode)
-
-
-# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-if __name__ == '__main__':
- main()
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ChunkStack.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ChunkStack.cpp
deleted file mode 100644
index dfa0f888..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ChunkStack.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * @file ChunkStack.cpp
- * Manages a chunk stack
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "ChunkStack.h"
-
-
-void ChunkStack::Set(const ChunkStack &cs)
-{
- m_cse.resize(cs.m_cse.size());
-
- for (size_t idx = 0; idx < m_cse.size(); idx++)
- {
- m_cse[idx].m_pc = cs.m_cse[idx].m_pc;
- m_cse[idx].m_seqnum = cs.m_cse[idx].m_seqnum;
- }
-
- m_seqnum = cs.m_seqnum;
-}
-
-
-const ChunkStack::Entry *ChunkStack::Top() const
-{
- if (!m_cse.empty())
- {
- return(&m_cse[m_cse.size() - 1]);
- }
- return(nullptr);
-}
-
-
-const ChunkStack::Entry *ChunkStack::Get(size_t idx) const
-{
- if (idx < m_cse.size())
- {
- return(&m_cse[idx]);
- }
- return(nullptr);
-}
-
-
-Chunk *ChunkStack::GetChunk(size_t idx) const
-{
- if (idx < m_cse.size())
- {
- return(m_cse[idx].m_pc);
- }
- return(nullptr);
-}
-
-
-Chunk *ChunkStack::Pop_Front()
-{
- Chunk *pc = nullptr;
-
- if (!m_cse.empty())
- {
- pc = m_cse[0].m_pc;
- m_cse.pop_front();
- }
- return(pc);
-}
-
-
-Chunk *ChunkStack::Pop_Back()
-{
- Chunk *pc = nullptr;
-
- if (!m_cse.empty())
- {
- pc = m_cse[m_cse.size() - 1].m_pc;
- m_cse.pop_back();
- }
- return(pc);
-}
-
-
-void ChunkStack::Push_Back(Chunk *pc, size_t seqnum)
-{
- m_cse.push_back(Entry(seqnum, pc));
-
- if (m_seqnum < seqnum)
- {
- m_seqnum = seqnum;
- }
-}
-
-
-void ChunkStack::Zap(size_t idx)
-{
- if (idx < m_cse.size())
- {
- m_cse[idx].m_pc = nullptr;
- }
-}
-
-
-void ChunkStack::Collapse()
-{
- size_t wr_idx = 0;
-
- for (size_t rd_idx = 0; rd_idx < m_cse.size(); rd_idx++)
- {
- if (m_cse[rd_idx].m_pc != nullptr)
- {
- if (rd_idx != wr_idx)
- {
- m_cse[wr_idx].m_pc = m_cse[rd_idx].m_pc;
- m_cse[wr_idx].m_seqnum = m_cse[rd_idx].m_seqnum;
- }
- wr_idx++;
- }
- }
-
- m_cse.resize(wr_idx);
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ChunkStack.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ChunkStack.h
deleted file mode 100644
index b33e1dd5..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ChunkStack.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * @file ChunkStack.h
- * Manages a simple stack of chunks
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-#ifndef CHUNKSTACK_H_INCLUDED
-#define CHUNKSTACK_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-class ChunkStack
-{
-public:
- struct Entry
- {
- Entry()
- : m_seqnum(0)
- , m_pc(0)
- {
- }
-
-
- Entry(const Entry &ref)
- : m_seqnum(ref.m_seqnum)
- , m_pc(ref.m_pc)
- {
- }
-
-
- Entry(size_t sn, Chunk *pc)
- : m_seqnum(sn)
- , m_pc(pc)
- {
- }
-
-
- size_t m_seqnum;
- Chunk *m_pc;
- };
-
-protected:
- std::deque<Entry> m_cse;
- size_t m_seqnum; //! current sequence number
-
-public:
- ChunkStack()
- : m_seqnum(0)
- {
- }
-
-
- ChunkStack(const ChunkStack &cs)
- {
- Set(cs);
- }
-
-
- virtual ~ChunkStack()
- {
- }
-
-
- void Set(const ChunkStack &cs);
-
-
- void Push_Back(Chunk *pc)
- {
- Push_Back(pc, ++m_seqnum);
- }
-
-
- bool Empty() const
- {
- return(m_cse.empty());
- }
-
-
- size_t Len() const
- {
- return(m_cse.size());
- }
-
-
- const Entry *Top() const;
-
-
- const Entry *Get(size_t idx) const;
-
-
- Chunk *GetChunk(size_t idx) const;
-
-
- Chunk *Pop_Back();
-
-
- void Push_Back(Chunk *pc, size_t seqnum);
-
-
- Chunk *Pop_Front();
-
-
- void Reset()
- {
- m_cse.clear();
- }
-
-
- /**
- * Mark an entry to be removed by Collapse()
- *
- * @param idx The item to remove
- */
- void Zap(size_t idx);
-
-
- //! Compresses down the stack by removing dead entries
- void Collapse();
-};
-
-
-#endif /* CHUNKSTACK_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/EnumStructUnionParser.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/EnumStructUnionParser.cpp
deleted file mode 100644
index d1c7bc67..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/EnumStructUnionParser.cpp
+++ /dev/null
@@ -1,2968 +0,0 @@
-/**
- * @file EnumStructUnionParser.cpp
- *
- * @author
- * @license GPL v2+
- */
-
-#include "EnumStructUnionParser.h"
-
-#include "combine_fix_mark.h"
-#include "combine_skip.h"
-#include "combine_tools.h"
-#include "flag_parens.h"
-#include "lang_pawn.h"
-
-
-/**
- * Extern declarations
- */
-extern const char *get_token_name(E_Token);
-
-
-/**
- * Forward declarations
- */
-static std::pair<Chunk *, Chunk *> match_variable_end(Chunk *, std::size_t);
-static std::pair<Chunk *, Chunk *> match_variable_start(Chunk *, std::size_t);
-static Chunk *skip_scope_resolution_and_nested_name_specifiers(Chunk *);
-static Chunk *skip_scope_resolution_and_nested_name_specifiers_rev(Chunk *);
-
-
-/**
- * Returns true if two adjacent chunks potentially match a pattern consistent
- * with that of a qualified identifier
- */
-static bool adj_tokens_match_qualified_identifier_pattern(Chunk *prev, Chunk *next)
-{
- LOG_FUNC_ENTRY();
-
- if ( prev != nullptr
- && next != nullptr)
- {
- auto prev_token_type = prev->GetType();
- auto next_token_type = next->GetType();
-
- switch (prev_token_type)
- {
- case CT_ANGLE_CLOSE:
- /**
- * assuming the previous token is possibly the closing angle of a
- * templated type, the next token may be a scope resolution operator ("::")
- */
- return(next_token_type == CT_DC_MEMBER);
-
- case CT_ANGLE_OPEN:
- /**
- * assuming the previous token is possibly the opening angle of a
- * templated type, just check to see if there's a matching closing
- * angle
- */
- return(prev->GetClosingParen(E_Scope::PREPROC)->IsNotNullChunk());
-
- case CT_DC_MEMBER:
- /**
- * if the previous token is a double colon ("::"), it is likely part
- * of a chain of scope-resolution qualifications preceding a word or
- * type
- */
- return( next_token_type == CT_TYPE
- || next_token_type == CT_WORD);
-
- case CT_TYPE:
- case CT_WORD:
- /**
- * if the previous token is an identifier, the next token may be
- * one of the following:
- * - an opening angle, which may indicate a templated type as part of a
- * scope resolution preceding the actual variable identifier
- * - a double colon ("::")
- */
- return( next_token_type == CT_ANGLE_OPEN
- || next_token_type == CT_DC_MEMBER);
-
- default:
- // do nothing
- break;
- } // switch
- }
- return(false);
-} // adj_tokens_match_qualified_identifier_pattern
-
-
-/**
- * Returns true if two adjacent chunks potentially match a pattern consistent
- * with that of a variable definition
- */
-static bool adj_tokens_match_var_def_pattern(Chunk *prev, Chunk *next)
-{
- LOG_FUNC_ENTRY();
-
- if ( prev != nullptr
- && next != nullptr)
- {
- auto prev_token_type = prev->GetType();
- auto next_token_type = next->GetType();
-
- switch (prev_token_type)
- {
- case CT_ANGLE_CLOSE:
- /**
- * assuming the previous token is possibly the closing angle of a
- * templated type, the next token may be one of the following:
- * - a pointer symbol ('*', '^')
- * - a double colon ("::")
- * - a reference symbol ('&')
- * - a qualifier (const, etc.)
- * - an identifier
- */
- return( next->IsPointerOrReference()
- || next_token_type == CT_DC_MEMBER
- || next_token_type == CT_QUALIFIER
- || next_token_type == CT_WORD);
-
-
- case CT_ANGLE_OPEN:
- /**
- * assuming the previous token is possibly the opening angle of a
- * templated type, just check to see if there's a matching closing
- * angle
- */
- return(prev->GetClosingParen(E_Scope::PREPROC)->IsNotNullChunk());
-
- case CT_BRACE_CLOSE:
- /**
- * assuming the previous token is possibly the closing brace of a
- * class/enum/struct/union definition, one or more inline variable
- * definitions may follow; in that case, the next token may be one of
- * the following:
- * - a pointer symbol ('*', '^')
- * - a reference symbol ('&')
- * - a qualifier (const, etc.)
- * - an identifier
- */
- return( next->IsPointerOrReference()
- || next_token_type == CT_QUALIFIER
- || next_token_type == CT_WORD);
-
- case CT_BRACE_OPEN:
- /**
- * if the previous token is an opening brace, it may indicate the
- * start of a braced initializer list - skip ahead to find a matching
- * closing brace
- */
- return(prev->GetClosingParen(E_Scope::PREPROC)->IsNotNullChunk());
-
- case CT_BYREF:
- /**
- * if the previous token is a reference symbol ('&'), the next token
- * may be an identifier
- */
- return(next_token_type == CT_WORD);
-
- case CT_CARET:
- /**
- * if the previous token is a managed C++/CLI pointer symbol ('^'),
- * the next token may be one of the following:
- * - a pointer symbol ('*', '^')
- * - a reference symbol ('&')
- * - a qualifier (const, etc.)
- * - an identifier
- */
- return( language_is_set(LANG_CPP)
- && ( next->IsPointerOrReference()
- || next_token_type == CT_QUALIFIER
- || next_token_type == CT_WORD));
-
- case CT_COMMA:
- /**
- * if the previous token is a comma, this may indicate a variable
- * declaration trailing a prior declaration; in that case, the next
- * token may be one of the following:
- * - a pointer symbol ('*', '^')
- * - a reference symbol ('&')
- * - an identifier
- */
- return( next->IsPointerOrReference()
- || next_token_type == CT_WORD);
-
- case CT_DC_MEMBER:
- /**
- * if the previous token is a double colon ("::"), it is likely part
- * of a chain of scope-resolution qualifications preceding a word or
- * type
- */
- return( next_token_type == CT_TYPE
- || next_token_type == CT_WORD);
-
- case CT_PAREN_OPEN:
- /**
- * if the previous token is an opening paren, it may indicate the
- * start of a constructor call parameter list - skip ahead to find a
- * matching closing paren
- */
- next = prev->GetClosingParen(E_Scope::PREPROC);
-
- if (next->IsNotNullChunk())
- {
- next_token_type = next->GetType();
- }
- return(next_token_type == CT_PAREN_CLOSE);
-
- case CT_PTR_TYPE:
- /**
- * if the previous token is a pointer type, ('*', '^'), the next token
- * may be one of the following:
- * - another pointer symbol ('*', '^')
- * - a reference symbol ('&')
- * - a qualifier (const, etc.)
- * - an identifier
- */
- return( next->IsPointerOrReference()
- || next_token_type == CT_QUALIFIER
- || next_token_type == CT_WORD);
-
- case CT_QUALIFIER:
- /**
- * if the previous token is a qualifier (const, etc.), the next token
- * may be one of the following:
- * - a pointer symbol ('*', '^')
- * - a reference symbol ('&')
- * - another qualifier
- * - an identifier
- */
- return( next->IsPointerOrReference()
- || next_token_type == CT_QUALIFIER
- || next_token_type == CT_WORD);
-
- case CT_SQUARE_CLOSE:
- /**
- * if the previous token is a closing bracket, the next token may be
- * an assignment following an array variable declaration
- */
- return(next_token_type == CT_ASSIGN);
-
- case CT_SQUARE_OPEN:
- /**
- * if the previous token is an opening bracket, it may indicate an
- * array declaration - skip ahead to find a matching closing bracket
- */
- return(prev->GetClosingParen(E_Scope::PREPROC)->IsNotNullChunk());
-
- case CT_STAR:
- /**
- * if the previous token is a pointer symbol, ('*'), the next token
- * may be one of the following:
- * - another pointer symbol ('*', '^')
- * - a reference symbol ('&')
- * - a qualifier (const, etc.)
- * - an identifier
- */
- return( next->IsPointerOrReference()
- || next_token_type == CT_QUALIFIER
- || next_token_type == CT_WORD);
-
- case CT_TSQUARE:
- /**
- * if the previous token is a set of brackets, the next token may be
- * an assignment following an array variable declaration
- */
- return(next_token_type == CT_ASSIGN);
-
- case CT_TYPE:
- /**
- * if the previous token is marked as a type, the next token may be
- * one of the following:
- * - a pointer symbol ('*', '^')
- * - a reference symbol ('&')
- * - an opening angle, which may indicate a templated type as part of a
- * scope resolution preceding the actual variable identifier
- * - a double colon ("::")
- * - a qualifier (const, etc.)
- * - an identifier
- */
- return( next->IsPointerOrReference()
- || next_token_type == CT_ANGLE_OPEN
- || next_token_type == CT_DC_MEMBER
- || next_token_type == CT_QUALIFIER
- || next_token_type == CT_WORD);
-
- case CT_WORD:
- /**
- * if the previous token is an identifier, the next token may be one
- * of the following:
- * - an assignment symbol ('=')
- * - an opening angle, which may indicate a templated type as part of a
- * scope resolution preceding the actual variable identifier
- * - an opening brace, which may indicate a braced-initializer list
- * - a double colon ("::")
- * - an opening paren, which may indicate a constructor call parameter
- * list
- * - an opening square bracket, which may indicate an array variable
- * - an set of empty square brackets, which also may indicate an array
- * variable
- */
- return( next_token_type == CT_ANGLE_OPEN
- || next_token_type == CT_ASSIGN
- || next_token_type == CT_BRACE_OPEN
- || next_token_type == CT_DC_MEMBER
- || next_token_type == CT_PAREN_OPEN
- || next_token_type == CT_SQUARE_OPEN
- || next_token_type == CT_TSQUARE);
-
- default:
- // do nothing
- break;
- } // switch
- }
- return(false);
-} // adj_tokens_match_var_def_pattern
-
-
-/**
- * Returns true if the first chunk occurs AFTER the second chunk in the argument
- * list
- * @param pc points to the first chunk
- * @param after points to the second chunk
- * @param test_equal if true, returns true when both chunks refer to the same chunk
- */
-static bool chunk_is_after(Chunk *pc, Chunk *after, bool test_equal = true)
-{
- LOG_FUNC_ENTRY();
-
- if ( pc != nullptr
- && pc->IsNotNullChunk())
- {
- if ( test_equal
- && pc == after)
- {
- return(true);
- }
- else if (after != nullptr)
- {
- auto pc_column = pc->GetOrigCol();
- auto pc_line = pc->GetOrigLine();
- auto after_column = after->GetOrigCol();
- auto after_line = after->GetOrigLine();
-
- return( pc_line > after_line
- || ( pc_line == after_line
- && pc_column > after_column));
- }
- }
- return(false);
-} // chunk_is_after
-
-
-/**
- * Returns true if the first chunk occurs BEFORE the second chunk in the argument
- * list
- * @param pc points to the first chunk
- * @param before points to the second chunk
- * @param test_equal if true, returns true when both chunks refer to the same chunk
- */
-static bool chunk_is_before(Chunk *pc, Chunk *before, bool test_equal = true)
-{
- LOG_FUNC_ENTRY();
-
- if ( pc != nullptr
- && pc->IsNotNullChunk())
- {
- if ( test_equal
- && pc == before)
- {
- return(true);
- }
- else if (before != nullptr)
- {
- auto pc_column = pc->GetOrigCol();
- auto pc_line = pc->GetOrigLine();
- auto before_column = before->GetOrigCol();
- auto before_line = before->GetOrigLine();
-
- return( pc_line < before_line
- || ( pc_line == before_line
- && pc_column < before_column));
- }
- }
- return(false);
-} // chunk_is_before
-
-
-/**
- * Returns true if the first chunk occurs both AFTER and BEFORE
- * the second and third chunks, respectively, in the argument list
- * @param pc points to the first chunk
- * @param after points to the second chunk
- * @param before points to the third chunk
- * @param test_equal if true, returns true when the first chunk tests equal to
- * either the second or third chunk
- */
-static bool chunk_is_between(Chunk *pc, Chunk *after, Chunk *before, bool test_equal = true)
-{
- LOG_FUNC_ENTRY();
-
- return( chunk_is_before(pc, before, test_equal)
- && chunk_is_after(pc, after, test_equal));
-} // chunk_is_between
-
-
-/**
- * Returns true if the chunk under test is a reference to a macro defined elsewhere in
- * the source file currently being processed. Note that a macro may be defined in
- * another source or header file, for which this function does not currently account
- */
-static bool chunk_is_macro_reference(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *next = Chunk::GetHead();
-
- if ( ( language_is_set(LANG_CPP)
- || language_is_set(LANG_C))
- && pc->Is(CT_WORD)
- && !pc->TestFlags(PCF_IN_PREPROC))
- {
- while (next->IsNotNullChunk())
- {
- if ( next->TestFlags(PCF_IN_PREPROC)
- && std::strcmp(pc->GetStr().c_str(), next->GetStr().c_str()) == 0)
- {
- return(true);
- }
- next = next->GetNextType(CT_MACRO);
- }
- }
- return(false);
-} // chunk_is_macro_reference
-
-
-bool Chunk::IsPointerReferenceOrQualifier() const
-{
- LOG_FUNC_ENTRY();
-
- return( IsPointerOrReference()
- || ( Is(CT_QUALIFIER)
- && !IsCppInheritanceAccessSpecifier()));
-}
-
-
-/**
- * This function attempts to match the starting and ending chunks of a qualified
- * identifier, which consists of one or more scope resolution operator(s) and
- * zero or more nested name specifiers
- * specifiers
- * @param pc the starting chunk
- * @return an std::pair, where the first chunk indicates the starting chunk of the
- * match and second indicates the ending chunk. Upon finding a successful
- * match, the starting chunk may consist of an identifier or a scope
- * resolution operator, while the ending chunk may consist of identifier
- * or the closing angle bracket of a template. If no match is found, a
- * pair of null chunks is returned
- */
-static std::pair<Chunk *, Chunk *> match_qualified_identifier(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- auto *end = skip_scope_resolution_and_nested_name_specifiers(pc);
- auto *start = skip_scope_resolution_and_nested_name_specifiers_rev(pc);
-
- if ( end != nullptr
- && start != nullptr)
- {
- auto *double_colon = start->GetNextType(CT_DC_MEMBER);
-
- if ( double_colon->IsNotNullChunk()
- && chunk_is_between(double_colon, start, end))
- {
- return(std::make_pair(start, end));
- }
- }
- return(std::make_pair(nullptr, nullptr));
-} // match_qualified_identifier
-
-
-/**
- * Starting from the input chunk, this function attempts to match a variable
- * declaration/definition in both the forward and reverse directions; each pair of
- * consecutive chunks is tested to determine if a potential match is satisfied.
- * @param pc the starting chunk
- * @param level the brace level
- * @return upon successful match, function returns an std::tuple, where the
- * first chunk indicates the starting chunk, the second chunk indicates
- * the identifier name, and the third chunk indicates the end associated
- * with the variable declaration/definition
- */
-static std::tuple<Chunk *, Chunk *, Chunk *> match_variable(Chunk *pc, std::size_t level)
-{
- LOG_FUNC_ENTRY();
-
- auto identifier_end_pair = match_variable_end(pc, level);
- auto start_identifier_pair = match_variable_start(pc, level);
- auto *end = identifier_end_pair.second;
- auto *identifier = identifier_end_pair.first != nullptr ? identifier_end_pair.first : start_identifier_pair.second;
- auto *start = start_identifier_pair.first;
-
- /**
- * a forward search starting at the chunk under test will fail if two consecutive chunks marked as CT_WORD
- * are encountered; in that case, it's likely that the preceding chunk indicates a type and the subsequent
- * chunk indicates a variable declaration/definition
- */
-
- if ( identifier->IsNotNullChunk()
- && start->IsNotNullChunk()
- && ( end != nullptr
- || identifier->GetPrevNcNnlNi()->Is(CT_WORD)))
- {
- return(std::make_tuple(start, identifier, end));
- }
- return(std::make_tuple(nullptr, nullptr, nullptr));
-} // match_variable
-
-
-/**
- * Starting from the input chunk, this function attempts to match a variable in the
- * forward direction, and tests each pair of consecutive chunks to determine if a
- * potential variable declaration/definition match is satisfied. Secondly, the
- * function attempts to identify the end chunk associated with the candidate variable
- * match. For scalar variables (simply declared and not defined), both the end chunk
- * and identifier chunk should be one in the same
- * @param pc the starting chunk
- * @param level the brace level
- * @return an std::pair, where the first chunk indicates the identifier
- * (if non-null) and the second chunk indicates the end associated with
- * the variable declaration/definition; assuming a valid match, the first
- * chunk may be null if the function is called with a starting chunk
- * that occurs after the identifier
- */
-static std::pair<Chunk *, Chunk *> match_variable_end(Chunk *pc, std::size_t level)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *identifier = nullptr;
-
- while ( pc != nullptr
- && pc->IsNotNullChunk())
- {
- /**
- * skip any right-hand side assignments
- */
- Chunk *rhs_exp_end = nullptr;
-
- if (pc->Is(CT_ASSIGN))
- {
- /**
- * store a pointer to the end chunk of the rhs expression;
- * use it later to test against setting the identifier
- */
- rhs_exp_end = skip_to_expression_end(pc);
- pc = rhs_exp_end;
- }
-
- /**
- * skip current and preceding chunks if at a higher brace level
- */
- while ( pc != nullptr
- && pc->IsNotNullChunk()
- && pc->GetLevel() > level)
- {
- pc = pc->GetNextNcNnl();
- }
-
- /**
- * skip to any following match for angle brackets, braces, parens,
- * or square brackets
- */
- if ( pc->Is(CT_ANGLE_OPEN)
- || pc->Is(CT_BRACE_OPEN)
- || pc->IsParenOpen()
- || pc->Is(CT_SQUARE_OPEN))
- {
- pc = pc->GetClosingParen(E_Scope::PREPROC);
- }
- /**
- * call a separate function to validate adjacent tokens as potentially
- * matching a variable declaration/definition
- */
-
- Chunk *next = pc->GetNextNcNnl();
-
- if ( next->IsNot(CT_COMMA)
- && next->IsNot(CT_FPAREN_CLOSE)
- && !next->IsSemicolon()
- && !adj_tokens_match_var_def_pattern(pc, next))
- {
- /**
- * error, pattern is not consistent with a variable declaration/definition
- */
- break;
- }
-
- if ( pc->Is(CT_WORD)
- && pc != rhs_exp_end)
- {
- /**
- * we've encountered a candidate for the variable name
- */
-
- identifier = pc;
- }
-
- /**
- * we're done searching if we've previously identified a variable name
- * and then encounter a comma or semicolon
- */
- if ( next->Is(CT_COMMA)
- || next->Is(CT_FPAREN_CLOSE)
- || next->IsSemicolon())
- {
- return(std::make_pair(identifier, pc));
- }
- pc = next;
- }
- return(std::make_pair(nullptr, nullptr));
-} // match_variable_end
-
-
-/**
- * Starting from the input chunk, this function attempts to match a variable in the
- * reverse direction, and tests each pair of consecutive chunks to determine if a
- * potential variable declaration/definition match is satisfied. Secondly, the
- * function attempts to identify the starting chunk associated with the candidate
- * variable match. The start and identifier chunks may refer to each other in cases
- * where the identifier is not preceded by pointer or reference operators or qualifiers,
- * etc.
- * @param pc the starting chunk
- * @param level the brace level
- * @return an std::pair, where the first chunk indicates the starting chunk and
- * the second chunk indicates the identifier associated with the variable
- * match; assuming a valid match, the second chunk may be null if the
- * function is called with a starting chunk that occurs before the
- * identifier
- */
-static std::pair<Chunk *, Chunk *> match_variable_start(Chunk *pc, std::size_t level)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *identifier = Chunk::NullChunkPtr;
-
- if (pc == nullptr)
- {
- pc = Chunk::NullChunkPtr;
- }
-
- while (pc->IsNotNullChunk())
- {
- /**
- * skip any right-hand side assignments
- */
- Chunk *before_rhs_exp_start = skip_expression_rev(pc);
- Chunk *prev = Chunk::NullChunkPtr;
- Chunk *next = pc;
-
- while ( chunk_is_after(next, before_rhs_exp_start)
- && pc != prev)
- {
- next = prev;
- prev = next->GetPrevNcNnlNi();
-
- if (next->Is(CT_ASSIGN))
- {
- pc = prev;
- }
- }
- /**
- * skip current and preceding chunks if at a higher brace level
- */
-
- while ( pc->IsNotNullChunk()
- && pc->GetLevel() > level)
- {
- pc = pc->GetPrevNcNnlNi();
- }
-
- /**
- * skip to any preceding match for angle brackets, braces, parens,
- * or square brackets
- */
- if ( pc->Is(CT_ANGLE_CLOSE)
- || pc->Is(CT_BRACE_CLOSE)
- || pc->IsParenClose()
- || pc->Is(CT_SQUARE_CLOSE))
- {
- pc = pc->GetOpeningParen(E_Scope::PREPROC);
- }
- /**
- * call a separate function to validate adjacent tokens as potentially
- * matching a variable declaration/definition
- */
-
- prev = pc->GetPrevNcNnlNi();
-
- if (!adj_tokens_match_var_def_pattern(prev, pc))
- {
- /**
- * perhaps the previous chunk possibly indicates a type that yet to be
- * marked? if not, then break
- */
- if ( prev->IsNot(CT_WORD)
- || ( !pc->IsPointerOrReference()
- && pc->IsNot(CT_WORD)))
- {
- /**
- * error, pattern is not consistent with a variable declaration/definition
- */
-
- break;
- }
- }
-
- if ( identifier->IsNullChunk()
- && pc->Is(CT_WORD))
- {
- /**
- * we've encountered a candidate for the variable name
- */
-
- identifier = pc;
- }
-
- /**
- * we're done searching if we've previously identified a variable name
- * and then encounter another identifier, or we encounter a closing
- * brace (which would likely indicate an inline variable definition)
- */
- if ( prev->Is(CT_ANGLE_CLOSE)
- || prev->Is(CT_BRACE_CLOSE)
- || prev->Is(CT_COMMA)
- || prev->Is(CT_TYPE)
- || prev->Is(CT_WORD))
- {
- return(std::make_pair(pc, identifier));
- }
- pc = prev;
- }
- return(std::make_pair(Chunk::NullChunkPtr, Chunk::NullChunkPtr));
-} // match_variable_start
-
-
-/**
- * Skip forward past any scope resolution operators and nested name specifiers and return
- * just the qualified identifier name; while similar to the existing skip_dc_member()
- * function, this function also takes into account templates that may comprise any
- * nested name specifiers
- */
-static Chunk *skip_scope_resolution_and_nested_name_specifiers(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- if ( ( pc != nullptr
- && pc->TestFlags(PCF_IN_TEMPLATE))
- || pc->Is(CT_DC_MEMBER)
- || pc->Is(CT_TYPE)
- || pc->Is(CT_WORD))
- {
- while (pc->IsNotNullChunk())
- {
- /**
- * skip to any following match for angle brackets
- */
- if (pc->Is(CT_ANGLE_OPEN))
- {
- pc = pc->GetClosingParen(E_Scope::PREPROC);
- }
- Chunk *next = pc->GetNextNcNnl();
-
- /**
- * call a separate function to validate adjacent tokens as potentially
- * matching a qualified identifier
- */
- if (!adj_tokens_match_qualified_identifier_pattern(pc, next))
- {
- break;
- }
- pc = next;
- }
- }
- return(pc);
-} // skip_scope_resolution_and_nested_name_specifiers
-
-
-/**
- * Skip in reverse to the beginning chunk of a qualified identifier; while similar to
- * the existing skip_dc_member_rev() function, this function also takes into account
- * templates that may comprise any nested name specifiers
- */
-static Chunk *skip_scope_resolution_and_nested_name_specifiers_rev(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- if (pc == nullptr)
- {
- pc = Chunk::NullChunkPtr;
- }
-
- if ( ( pc->IsNotNullChunk()
- && pc->TestFlags(PCF_IN_TEMPLATE))
- || pc->Is(CT_DC_MEMBER)
- || pc->Is(CT_TYPE)
- || pc->Is(CT_WORD))
- {
- while (pc->IsNotNullChunk())
- {
- /**
- * skip to any preceding match for angle brackets
- */
- if (pc->Is(CT_ANGLE_CLOSE))
- {
- pc = pc->GetOpeningParen(E_Scope::PREPROC);
- }
- Chunk *prev = pc->GetPrevNcNnlNi();
-
- /**
- * call a separate function to validate adjacent tokens as potentially
- * matching a qualified identifier
- */
- if (!adj_tokens_match_qualified_identifier_pattern(prev, pc))
- {
- break;
- }
- pc = prev;
- }
- }
- return(pc);
-} // skip_scope_resolution_and_nested_name_specifiers_rev
-
-
-EnumStructUnionParser::EnumStructUnionParser()
- : m_end(nullptr)
- , m_parse_error(false)
- , m_start(nullptr)
- , m_type(nullptr)
-{
-} // EnumStructUnionParser::EnumStructUnionParser
-
-
-EnumStructUnionParser::~EnumStructUnionParser()
-{
-} // EnumStructUnionParser::~EnumStructUnionParser
-
-
-void EnumStructUnionParser::analyze_identifiers()
-{
- LOG_FUNC_ENTRY();
-
- /**
- * the enum (and variable declarations thereof) could be of
- * the following forms:
- *
- * "enum type [: integral_type] { ... } [x, ...]"
- * "enum type : integral_type"
- * "enum type x, ..."
- * "enum class type [: integral_type] { ... } [x, ...]"
- * "enum class type [: integral_type]"
- * "enum [: integral_type] { ... } x, ..."
- */
-
- /**
- * the class/struct (and variable declarations thereof) could be of
- * the following forms:
- *
- * "template<...> class/struct[<...>] [macros/attributes ...] type [: bases ...] { }"
- * "template<...> class/struct[<...>] [macros/attributes ...] type"
- * "class/struct [macros/attributes ...] type [: bases ...] { } [x, ...]"
- * "class/struct [macros/attributes ...] type [x, ...]"
- * "class/struct [macros/attributes ...] [: bases] { } x, ..."
- */
-
- Chunk *template_end = get_template_end();
- auto *body_end = get_body_end();
- auto *body_start = get_body_start();
- T_PcfFlags flags = PCF_VAR_1ST_DEF;
- auto *inheritance_start = get_inheritance_start();
- Chunk *pc = body_end ? body_end : m_start;
-
- /**
- * first, try a simple approach to identify any associated type
- */
- if (try_pre_identify_type())
- {
- /**
- * a type was identified, meaning a pair of braces, angle brackets, or
- * a colon was found; if a colon was found, then there should be a
- * balanced set of braces that follow; therefore, start the search for
- * variable identifiers after the closing brace or close angle bracket
- */
-
- if (body_end != nullptr)
- {
- pc = body_end;
- }
- else if (template_end != nullptr)
- {
- pc = template_end;
- }
- }
-
- if (pc == nullptr)
- {
- pc = Chunk::NullChunkPtr;
- }
-
- if (pc->GetNextNcNnl() == m_end)
- {
- /**
- * we're likely at the end of a class/enum/struct/union body which lacks
- * any trailing inline definitions
- */
-
- pc = m_end->GetNextNcNnl();
- }
-
- if ( type_identified()
- || pc->IsClassEnumStructOrUnion()
- || pc == m_end)
- {
- /**
- * in case we're pointing at the end chunk, advance the chunk pointer
- * by one more so that we don't perform a variable identifier search
- * below
- */
- pc = pc->GetNextNcNnl();
- }
-
- if (body_end != nullptr)
- {
- /**
- * a closing brace was found, so any identifiers trailing the closing
- * brace are probably inline variable declarations following a
- * class/enum/struct/union definition
- */
- flags |= PCF_VAR_INLINE;
- }
- else if (!type_identified())
- {
- /**
- * skip any chain of one or more function-like macro calls,
- * declspecs, and attributes
- */
-
- Chunk *tmp = pc;
-
- do
- {
- pc = tmp;
- tmp = skip_attribute_next(tmp);
- tmp = skip_declspec_next(tmp);
- } while (tmp != pc);
- }
- /**
- * try to match some variable identifiers in the loop below
- */
-
- while (chunk_is_between(pc, m_start, m_end, false))
- {
- auto match = match_variable(pc, m_start->GetLevel());
- auto *start = std::get<0>(match);
- auto *identifier = std::get<1>(match);
- auto *end = std::get<2>(match);
-
- if ( start != nullptr
- && identifier != nullptr)
- {
- if (end != nullptr)
- {
- mark_variable(identifier, flags);
-
- if (flags & PCF_VAR_1ST)
- {
- flags &= ~PCF_VAR_1ST; // clear the first flag for the next items
- }
- }
- }
-
- if (end != nullptr)
- {
- pc = end;
- }
- pc = pc->GetNextNcNnl();
-
- /**
- * skip any right-hand side assignments
- */
- if (pc->Is(CT_ASSIGN))
- {
- pc = skip_to_expression_end(pc);
- }
-
- /**
- * if we're sitting at a comma or semicolon, skip it
- */
- if ( pc->IsSemicolon()
- || ( pc->Is(CT_COMMA)
- && !pc->GetFlags().test_any(PCF_IN_FCN_DEF | PCF_IN_FCN_CALL | PCF_IN_TEMPLATE)
- && !chunk_is_between(pc, inheritance_start, body_start)))
- {
- pc = pc->GetNextNcNnl();
- }
- }
- /**
- * if we still haven't identified a type, try doing so now that the
- * variables, if any, have been marked
- */
- try_post_identify_type();
-
- /**
- * identify possible macros preceding the type name
- */
- try_post_identify_macro_calls();
-
- if ( m_start->IsClassOrStruct()
- && ( m_start->IsNot(CT_STRUCT)
- || !language_is_set(LANG_C)))
- {
- /**
- * if a type has been identified, mark any constructor matching constructor
- * declarations/definitions
- */
- mark_constructors();
- }
-
- if (type_identified())
- {
- if (~flags & PCF_VAR_1ST)
- {
- /**
- * PCF_VAR_1ST was cleared and a type was identified; therefore, set
- * PCF_VAR_TYPE for the identified type
- */
- m_type->SetFlagBits(PCF_VAR_TYPE);
- }
- else if (~flags & PCF_VAR_INLINE)
- {
- /**
- * if a type was identified but no braced-enclosed body was found and no
- * identifiers were marked as variables, then we're likely we're likely
- * dealing with a forward declaration
- */
- flag_series(m_start, m_type, PCF_INCOMPLETE);
- }
- }
-} // EnumStructUnionParser::analyze_identifiers
-
-
-bool EnumStructUnionParser::body_detected() const
-{
- LOG_FUNC_ENTRY();
-
- auto *body_end = get_body_end();
- auto *body_start = get_body_start();
-
- return( body_end != nullptr
- && body_start != nullptr);
-} // EnumStructUnionParser::body_detected
-
-
-bool EnumStructUnionParser::comma_separated_values_detected() const
-{
- LOG_FUNC_ENTRY();
-
- return(!get_top_level_commas().empty());
-} // EnumStructUnionParser::comma_separated_values_detected
-
-
-bool EnumStructUnionParser::enum_base_detected() const
-{
- LOG_FUNC_ENTRY();
-
- return(m_chunk_map.find(CT_BIT_COLON) != m_chunk_map.cend());
-} // EnumStructUnionParser::enum_base_detected
-
-
-Chunk *EnumStructUnionParser::get_body_end() const
-{
- LOG_FUNC_ENTRY();
-
- auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_BRACE_CLOSE);
-
- if (it_token_chunk_map_pair != m_chunk_map.cend())
- {
- return(it_token_chunk_map_pair->second.at(0));
- }
- return(nullptr);
-} // EnumStructUnionParser::get_body_end
-
-
-Chunk *EnumStructUnionParser::get_body_start() const
-{
- LOG_FUNC_ENTRY();
-
- auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_BRACE_OPEN);
-
- if (it_token_chunk_map_pair != m_chunk_map.cend())
- {
- return(it_token_chunk_map_pair->second.at(0));
- }
- return(nullptr);
-} // EnumStructUnionParser::get_body_start
-
-
-Chunk *EnumStructUnionParser::get_enum_base_start() const
-{
- LOG_FUNC_ENTRY();
-
- auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_BIT_COLON);
-
- if (it_token_chunk_map_pair != m_chunk_map.cend())
- {
- return(it_token_chunk_map_pair->second.at(0));
- }
- return(nullptr);
-} // EnumStructUnionParser::get_enum_base_start
-
-
-Chunk *EnumStructUnionParser::get_first_top_level_comma() const
-{
- LOG_FUNC_ENTRY();
-
- auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_COMMA);
-
- if (it_token_chunk_map_pair != m_chunk_map.cend())
- {
- return(it_token_chunk_map_pair->second.at(0));
- }
- return(nullptr);
-} // EnumStructUnionParser::get_first_top_level_comma
-
-
-Chunk *EnumStructUnionParser::get_inheritance_end() const
-{
- LOG_FUNC_ENTRY();
-
- Chunk *brace_open = nullptr;
- auto *inheritance_start = get_inheritance_start();
-
- if (inheritance_start != nullptr)
- {
- brace_open = get_body_start();
-
- if (brace_open == nullptr)
- {
- brace_open = inheritance_start->GetNextType(CT_BRACE_OPEN, m_start->GetLevel(), E_Scope::ALL);
- }
- }
- return(brace_open);
-} // EnumStructUnionParser::get_inheritance_end
-
-
-Chunk *EnumStructUnionParser::get_inheritance_start() const
-{
- LOG_FUNC_ENTRY();
-
- auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_COLON);
-
- if (it_token_chunk_map_pair != m_chunk_map.cend())
- {
- return(it_token_chunk_map_pair->second.at(0));
- }
- return(nullptr);
-} // EnumStructUnionParser::get_inheritance_start
-
-
-std::map<std::size_t, Chunk *> EnumStructUnionParser::get_question_operators() const
-{
- LOG_FUNC_ENTRY();
-
- auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_QUESTION);
-
- if (it_token_chunk_map_pair != m_chunk_map.cend())
- {
- return(it_token_chunk_map_pair->second);
- }
- return(std::map<std::size_t, Chunk *>());
-} // EnumStructUnionParser::get_question_operators
-
-
-Chunk *EnumStructUnionParser::get_template_end() const
-{
- LOG_FUNC_ENTRY();
-
- auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_ANGLE_CLOSE);
-
- if (it_token_chunk_map_pair != m_chunk_map.cend())
- {
- return(it_token_chunk_map_pair->second.at(0));
- }
- return(nullptr);
-} // EnumStructUnionParser::get_template_end
-
-
-Chunk *EnumStructUnionParser::get_template_start() const
-{
- LOG_FUNC_ENTRY();
-
- auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_ANGLE_OPEN);
-
- if (it_token_chunk_map_pair != m_chunk_map.cend())
- {
- return(it_token_chunk_map_pair->second.at(0));
- }
- return(nullptr);
-} // EnumStructUnionParser::get_template_start
-
-
-std::map<std::size_t, Chunk *> EnumStructUnionParser::get_top_level_commas() const
-{
- LOG_FUNC_ENTRY();
-
- auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_COMMA);
-
- if (it_token_chunk_map_pair != m_chunk_map.cend())
- {
- return(it_token_chunk_map_pair->second);
- }
- return(std::map<std::size_t, Chunk *>());
-} // EnumStructUnionParser::get_top_level_commas
-
-
-Chunk *EnumStructUnionParser::get_where_end() const
-{
- LOG_FUNC_ENTRY();
-
- Chunk *brace_open = nullptr;
- auto *where_start = get_where_start();
-
- if (where_start != nullptr)
- {
- brace_open = get_body_start();
-
- if (brace_open == nullptr)
- {
- brace_open = where_start->GetNextType(CT_BRACE_OPEN, m_start->GetLevel(), E_Scope::ALL);
- }
- }
- return(brace_open);
-} // EnumStructUnionParser::get_where_end
-
-
-Chunk *EnumStructUnionParser::get_where_start() const
-{
- LOG_FUNC_ENTRY();
-
- auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_WHERE);
-
- if (it_token_chunk_map_pair != m_chunk_map.cend())
- {
- return(it_token_chunk_map_pair->second.at(0));
- }
- return(nullptr);
-} // EnumStructUnionParser::get_where_start
-
-
-bool EnumStructUnionParser::inheritance_detected() const
-{
- LOG_FUNC_ENTRY();
-
- return(m_chunk_map.find(CT_COLON) != m_chunk_map.cend());
-} // EnumStructUnionParser::inheritance_detected
-
-
-void EnumStructUnionParser::initialize(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- parse_error_detected(false);
- m_chunk_map.clear();
-
- m_start = pc;
- m_type = nullptr;
- pc = try_find_end_chunk(pc);
-
- if (parse_error_detected())
- {
- return;
- }
- m_end = refine_end_chunk(pc);
-} // EnumStructUnionParser::initialize
-
-
-bool EnumStructUnionParser::is_potential_end_chunk(Chunk *pc) const
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
- __unqualified_func__, __LINE__,
- pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
-
- /**
- * test for a semicolon or closing brace at the level of the starting chunk
- */
- if ( pc->IsNullChunk()
- || parse_error_detected()
- || ( ( pc->IsSemicolon()
- || pc->Is(CT_BRACE_CLOSE))
- && pc->GetLevel() == m_start->GetLevel()))
- {
- LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
- __unqualified_func__, __LINE__,
- pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
- return(true);
- }
- /**
- * check for the following:
- * 1) did we encounter a closing paren, which may indicate the end of cast?
- * 2) did we cross a preprocessor boundary?
- * 3) did we cross the closing paren of a function signature?
- */
-
- auto const pc_in_funcdef = pc->GetFlags() & PCF_IN_FCN_DEF;
- auto const pc_in_preproc = pc->GetFlags() & PCF_IN_PREPROC;
- auto const start_in_funcdef = m_start->GetFlags() & PCF_IN_FCN_DEF;
- auto const start_in_preproc = m_start->GetFlags() & PCF_IN_PREPROC;
-
- /**
- * the following may identify cases where we've reached the
- * end of a cast terminated by a closing paren
- */
- if ( ( pc->IsParenClose() // Issue #3538
- && pc->GetLevel() < m_start->GetLevel())
- || (start_in_funcdef ^ pc_in_funcdef).test_any()
- || (start_in_preproc ^ pc_in_preproc).test_any())
- {
- LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
- __unqualified_func__, __LINE__,
- pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
- return(true);
- }
- /**
- * check whether the current chunk's nest level is less than that
- * of the starting chunk
- */
-
- std::size_t pc_template_nest = get_cpp_template_angle_nest_level(pc);
- std::size_t start_template_nest = get_cpp_template_angle_nest_level(m_start);
-
- if (start_template_nest > pc_template_nest)
- {
- LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
- __unqualified_func__, __LINE__,
- pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
- return(true);
- }
- /**
- * assuming the chunk is within a function call/definition, check the following:
- * 1) chunk is a closing function paren at a lower level than the starting chunk
- * 2) chunk is an assignment ('=') or comma at the level of the starting chunk
- */
-
- auto const pc_in_funccall = pc->GetFlags() & PCF_IN_FCN_CALL;
- auto const start_in_funccall = m_start->GetFlags() & PCF_IN_FCN_CALL;
-
- if ( ( pc_in_funccall.test_any()
- && start_in_funccall.test_any()
- && pc->Is(CT_COMMA)
- && pc->GetLevel() == m_start->GetLevel())
- || ( pc_in_funcdef.test_any()
- && ( ( pc->Is(CT_FPAREN_CLOSE)
- && pc->GetLevel() < m_start->GetLevel())
- || ( ( pc->Is(CT_ASSIGN)
- || pc->Is(CT_COMMA))
- && pc->GetLevel() == m_start->GetLevel()))))
- {
- LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
- __unqualified_func__, __LINE__,
- pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
- return(true);
- }
- LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
- __unqualified_func__, __LINE__,
- pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
- return(false);
-} // EnumStructUnionParser::is_potential_end_chunk
-
-
-bool EnumStructUnionParser::is_within_conditional(Chunk *pc) const
-{
- LOG_FUNC_ENTRY();
-
- auto question_operators = get_question_operators();
-
- if (!question_operators.empty())
- {
- auto &&it_token_chunk_pair = question_operators.cbegin();
-
- while (it_token_chunk_pair != question_operators.cend())
- {
- auto *question = it_token_chunk_pair->second;
- auto *end = skip_to_expression_end(question);
- auto *start = skip_to_expression_start(question);
-
- if (chunk_is_between(pc, start, end))
- {
- return(true);
- }
- ++it_token_chunk_pair;
- }
- }
- return(false);
-} // EnumStructUnionParser::is_within_conditional
-
-
-bool EnumStructUnionParser::is_within_inheritance_list(Chunk *pc) const
-{
- LOG_FUNC_ENTRY();
-
- if ( pc != nullptr
- && pc->TestFlags(PCF_IN_CLASS_BASE))
- {
- return(true);
- }
- auto *inheritance_end = get_inheritance_end();
- auto *inheritance_start = get_inheritance_start();
-
- if ( inheritance_end != nullptr
- && inheritance_start != nullptr)
- {
- return(chunk_is_between(pc, inheritance_start, inheritance_end));
- }
- return(false);
-} // EnumStructUnionParser::is_within_inheritance_list
-
-
-bool EnumStructUnionParser::is_within_where_clause(Chunk *pc) const
-{
- LOG_FUNC_ENTRY();
-
- if ( pc != nullptr
- && pc->TestFlags(PCF_IN_WHERE_SPEC))
- {
- return(true);
- }
- auto *where_end = get_where_end();
- auto *where_start = get_where_start();
-
- if ( where_end != nullptr
- && where_start != nullptr)
- {
- return(chunk_is_between(pc, where_start, where_end));
- }
- return(false);
-} // EnumStructUnionParser::is_within_where_clause
-
-
-void EnumStructUnionParser::mark_base_classes(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- T_PcfFlags flags = PCF_VAR_1ST_DEF;
-
- while ( pc != nullptr
- && pc->IsNotNullChunk())
- {
- pc->SetFlagBits(PCF_IN_CLASS_BASE);
- /**
- * clear the PCF_VAR_TYPE flag for all chunks within the inheritance list
- * TODO: this may not be necessary in the future once code outside this
- * class is improved such that PCF_VAR_TYPE is not set for these chunks
- */
- pc->ResetFlagBits(PCF_VAR_TYPE);
-
- Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
-
- if (next->Is(CT_DC_MEMBER))
- {
- /**
- * just in case it's a templated type
- */
- pc = skip_template_prev(pc);
-
- if (pc->Is(CT_WORD))
- {
- /**
- * TODO:
- * To comply with conventions used elsewhere in the code, we're going
- * to change chunks marked CT_WORD to CT_TYPE if followed by a scope-
- * resolution operator; if a chunk marked CT_WORD is followed by a set
- * of angle brackets, then it's obviously a templated type. However,
- * in the absence of a pair trailing angle brackets, the chunk may be
- * a namespace rather than a type. Need to revisit this!
- */
- pc->SetType(CT_TYPE);
- }
- }
- else if ( ( next->Is(CT_BRACE_OPEN)
- || ( next->Is(CT_COMMA)
- && !is_within_where_clause(next)))
- && next->GetLevel() == m_start->GetLevel())
- {
- /**
- * just in case it's a templated type
- */
- pc = skip_template_prev(pc);
-
- if (pc->Is(CT_WORD))
- {
- pc->SetFlagBits(flags);
-
- if (flags & PCF_VAR_1ST)
- {
- flags &= ~PCF_VAR_1ST; // clear the first flag for the next items
- }
- }
-
- if (next->Is(CT_BRACE_OPEN))
- {
- break;
- }
- }
- pc = next;
- }
- pc->SetFlagBits(PCF_IN_CLASS_BASE);
-} // EnumStructUnionParser::mark_base_classes
-
-
-void EnumStructUnionParser::mark_braces(Chunk *brace_open)
-{
- LOG_FUNC_ENTRY();
-
- T_PcfFlags flags = PCF_NONE;
-
- if (m_start->Is(CT_CLASS))
- {
- flags = PCF_IN_CLASS;
- }
- else if (m_start->IsEnum())
- {
- flags = PCF_IN_ENUM;
- }
- else if (m_start->Is(CT_STRUCT))
- {
- flags = PCF_IN_STRUCT;
- }
- /**
- * TODO: why does flag_parens() flag the closing paren,
- * but it doesn't flag the opening paren?
- */
-
- flag_parens(brace_open,
- flags,
- CT_NONE,
- CT_NONE,
- false);
-
- if (m_start->IsClassStructOrUnion())
- {
- mark_struct_union_body(brace_open);
-
- auto *inheritance_start = get_inheritance_start();
-
- if (inheritance_start != nullptr)
- {
- /**
- * the class/struct/union is a derived class; mark the base
- * classes between the colon/java "implements" keyword and the
- * opening brace
- */
-
- mark_base_classes(inheritance_start);
- }
- }
- brace_open->SetParentType(m_start->GetType());
-
- auto *brace_close = brace_open->GetClosingParen(E_Scope::PREPROC);
-
- if (brace_close->IsNotNullChunk())
- {
- brace_close->SetParentType(m_start->GetType());
- }
-} // EnumStructUnionParser::mark_braces
-
-
-void EnumStructUnionParser::mark_class_colon(Chunk *colon)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LFTOR,
- "%s(%d): Class colon detected: orig line is %zu, orig col is %zu\n",
- __unqualified_func__,
- __LINE__,
- colon->GetOrigLine(),
- colon->GetOrigCol());
-
- colon->SetType(CT_CLASS_COLON);
- colon->SetParentType(m_start->GetType());
-} // EnumStructUnionParser::mark_class_colon
-
-
-void EnumStructUnionParser::mark_conditional_colon(Chunk *colon)
-{
- colon->SetType(CT_COND_COLON);
-} // EnumStructUnionParser::mark_conditional_colon
-
-
-void EnumStructUnionParser::mark_constructors()
-{
- LOG_FUNC_ENTRY();
-
- /**
- * if a type was previously identified, then look for
- * class/struct constructors in the body
- */
- if ( body_detected()
- && type_identified()
- && m_start->IsClassOrStruct())
- {
- LOG_FMT(LFTOR,
- "%s(%d): orig line is %zu, orig col is %zu, start is '%s', parent type is %s\n",
- __unqualified_func__,
- __LINE__,
- m_start->GetOrigLine(),
- m_start->GetOrigCol(),
- m_start->Text(),
- get_token_name(m_start->GetParentType()));
-
- log_pcf_flags(LFTOR, m_start->GetFlags());
-
- /**
- * get the name of the type
- */
- auto *body_end = get_body_end();
- auto *body_start = get_body_start();
- auto *name = m_type->Text();
-
- LOG_FMT(LFTOR,
- "%s(%d): Name of type is '%s'\n",
- __unqualified_func__,
- __LINE__,
- name);
- log_pcf_flags(LFTOR, m_type->GetFlags());
-
- Chunk *next = Chunk::NullChunkPtr;
- std::size_t level = m_type->GetBraceLevel() + 1;
-
- for (auto *prev = body_start; next != body_end; prev = next)
- {
- prev->SetFlagBits(PCF_IN_CLASS);
-
- next = skip_template_next(prev->GetNextNcNnl(E_Scope::PREPROC)); // Issue #3368
-
- /**
- * find a chunk within the class/struct body that
- */
- if ( prev->IsNotNullChunk()
- && std::strcmp(prev->Text(), name) == 0
- && prev->GetLevel() == level
- && next->IsParenOpen())
- {
- prev->SetType(CT_FUNC_CLASS_DEF);
-
- LOG_FMT(LFTOR,
- "%s(%d): Constructor/destructor detected: '%s' at orig line is %zu, orig col is %zu, type is %s\n",
- __unqualified_func__,
- __LINE__,
- name,
- prev->GetOrigLine(),
- prev->GetOrigCol(),
- get_token_name(prev->GetType()));
-
- mark_cpp_constructor(prev);
- }
- }
-
- next->SetFlagBits(PCF_IN_CLASS);
- }
-} // EnumStructUnionParser::mark_constructor
-
-
-void EnumStructUnionParser::mark_enum_integral_type(Chunk *colon)
-{
- LOG_FUNC_ENTRY();
-
- colon->SetType(CT_BIT_COLON);
- colon->SetParentType(m_start->GetType());
-
- auto *body_start = get_body_start();
- auto *pc = colon->GetNextNcNnl();
-
- /**
- * the chunk(s) between the colon and opening
- * brace (if present) should specify the enum's
- * integral type
- */
-
- while ( chunk_is_between(pc, m_start, m_end)
- && pc != body_start
- && pc->IsNot(CT_BRACE_OPEN)
- && !pc->IsSemicolon())
- {
- /**
- * clear the PCF_VAR_TYPE flag for all chunks within the enum integral base
- * TODO: this may not be necessary in the future once code outside this
- * class is improved such that PCF_VAR_TYPE is not set for these chunks
- */
- if (pc->IsNot(CT_DC_MEMBER)) // Issue #3198
- {
- pc->ResetFlagBits(PCF_VAR_TYPE);
- pc->SetType(CT_TYPE);
- pc->SetParentType(colon->GetType());
- }
- pc = pc->GetNextNcNnl();
- }
-} // EnumStructUnionParser::mark_enum_integral_type
-
-
-void EnumStructUnionParser::mark_extracorporeal_lvalues()
-{
- /**
- * clear the PCF_LVALUE flag for all chunks outside the body definition,
- * as this flag may have been set elsewhere by code outside this class
- * TODO: the mark_lvalue() function needs some improvement so that the
- * following isn't necessary
- */
- Chunk *next = m_start;
- Chunk *prev = Chunk::NullChunkPtr;
-
- /**
- * if the class is a template, go the extra step and correct the
- * erroneously marked chunks - as previously mentioned, this likely
- * won't be necessary with improvements to the mark_lvalue() function
- */
- if (next->GetParentType() == CT_TEMPLATE)
- {
- while (true)
- {
- prev = next->GetPrevNcNnlNi();
-
- if ( prev->IsNullChunk()
- || ( !prev->TestFlags(PCF_IN_TEMPLATE)
- && prev->IsNot(CT_TEMPLATE)))
- {
- break;
- }
- next = prev;
- }
- }
- Chunk *body_end = get_body_end();
- Chunk *body_start = get_body_start();
-
- while (next != m_end)
- {
- if ( !chunk_is_between(next, body_start, body_end)
- && next->TestFlags(PCF_LVALUE))
- {
- next->ResetFlagBits(PCF_LVALUE);
- }
- else if ( ( next->Is(CT_ASSIGN)
- || next->Is(CT_BRACE_OPEN))
- && prev->Is(CT_WORD)
- && prev->GetFlags().test_any(PCF_VAR_DEF | PCF_VAR_1ST | PCF_VAR_INLINE))
- {
- prev->SetFlagBits(PCF_LVALUE);
- }
- prev = next;
- next = next->GetNextNcNnl();
- }
-} // EnumStructUnionParser::mark_extracorporeal_lavlues
-
-
-void EnumStructUnionParser::mark_nested_name_specifiers(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- auto start_end_pair = match_qualified_identifier(pc);
- auto start = start_end_pair.first;
- auto end = start_end_pair.second;
-
- for (pc = start; chunk_is_between(pc, start, end); pc = pc->GetNextNcNnl())
- {
- if (pc->Is(CT_WORD))
- {
- /**
- * if the next token is an opening angle, then we can safely
- * mark the current identifier as a type
- */
- auto *next = pc->GetNextNcNnl();
-
- if (next->Is(CT_ANGLE_OPEN))
- {
- /**
- * the template may have already been previously marked elsewhere...
- */
- auto *angle_open = next;
- auto *angle_close = angle_open->GetClosingParen(E_Scope::PREPROC);
-
- if (angle_close->IsNullChunk())
- {
- // parse error
- parse_error_detected(true);
-
- // TODO: should this be just a warning or an error (with exit condition?)
- LOG_FMT(LWARN,
- "%s(%d): Unmatched '<' at orig line is %zu, orig col is %zu\n",
- __unqualified_func__,
- __LINE__,
- angle_open->GetOrigLine(),
- angle_open->GetOrigCol());
-
- break;
- }
- pc->SetType(CT_TYPE);
- mark_template(next);
- pc = angle_close;
- }
- else if ( is_within_inheritance_list(pc)
- && ( next->Is(CT_COMMA)
- || next->Is(CT_BRACE_OPEN)))
- {
- pc->SetType(CT_TYPE);
- }
- }
- }
-} // EnumStructUnionParser::mark_nested_name_specifiers
-
-
-void EnumStructUnionParser::mark_pointer_types(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- if (pc->Is(CT_WORD))
- {
- do
- {
- // TODO: should there be a CT_BYREF_TYPE?
- pc = pc->GetPrevNcNnlNi();
-
- if (pc->IsPointerOperator())
- {
- pc->SetParentType(m_start->GetType());
- pc->SetType(CT_PTR_TYPE);
- }
- } while (pc->IsPointerReferenceOrQualifier());
- }
-} // EnumStructUnionParser::mark_pointer_types
-
-
-void EnumStructUnionParser::mark_template(Chunk *start) const
-{
- LOG_FUNC_ENTRY();
-
- if (start != nullptr)
- {
- LOG_FMT(LTEMPL,
- "%s(%d): Template detected: '%s' at orig line %zu, orig col %zu\n",
- __unqualified_func__,
- __LINE__,
- start->Text(),
- start->GetOrigLine(),
- start->GetOrigCol());
- }
- start->SetParentType(CT_TEMPLATE);
-
- auto *end = start->GetClosingParen(E_Scope::PREPROC);
-
- if (end->IsNotNullChunk())
- {
- end->SetParentType(CT_TEMPLATE);
-
- mark_template_args(start, end);
- }
-} // EnumStructUnionParser::mark_template
-
-
-void EnumStructUnionParser::mark_template_args(Chunk *start, Chunk *end) const
-{
- LOG_FUNC_ENTRY();
-
- if ( end != nullptr
- && start != nullptr)
- {
- LOG_FMT(LTEMPL,
- "%s(%d): Start of template detected: '%s' at orig line %zu, orig col %zu\n",
- __unqualified_func__,
- __LINE__,
- start->Text(),
- start->GetOrigLine(),
- start->GetOrigCol());
-
- T_PcfFlags flags = PCF_IN_TEMPLATE;
- Chunk *next = start;
-
- /**
- * TODO: for now, just mark the chunks within the template as PCF_IN_TEMPLATE;
- * we probably need to create a TemplateParser class to handle all
- * things template-related
- */
-
- while (true)
- {
- next = next->GetNextNcNnl();
-
- if (next == end)
- {
- break;
- }
- next->SetFlagBits(flags);
- }
- LOG_FMT(LTEMPL,
- "%s(%d): End of template detected: '%s' at orig line %zu, orig col %zu\n",
- __unqualified_func__,
- __LINE__,
- end->Text(),
- end->GetOrigLine(),
- end->GetOrigCol());
- }
-} // EnumStructUnionParser::mark_template_args
-
-
-void EnumStructUnionParser::mark_type(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- if (pc != nullptr)
- {
- m_type = pc;
-
- do
- {
- make_type(pc);
- pc->SetParentType(m_start->GetType());
- pc = pc->GetNextNcNnl(E_Scope::PREPROC);
- } while (pc->IsPointerOrReference());
- }
-} // EnumStructUnionParser::mark_type
-
-
-void EnumStructUnionParser::mark_variable(Chunk *variable, T_PcfFlags flags)
-{
- LOG_FUNC_ENTRY();
-
- if (variable != nullptr)
- {
- LOG_FMT(LVARDEF,
- "%s(%d): Variable definition detected: '%s' at orig line is %zu, orig col is %zu, set %s\n",
- __unqualified_func__,
- __LINE__,
- variable->Text(),
- variable->GetOrigLine(),
- variable->GetOrigCol(),
- flags & PCF_VAR_1ST_DEF ? "PCF_VAR_1ST_DEF" : "PCF_VAR_1ST");
-
- variable->SetFlagBits(flags);
- variable->SetType(CT_WORD);
- mark_pointer_types(variable);
- }
-} // EnumStructUnionParser::mark_variable
-
-
-void EnumStructUnionParser::mark_where_clause(Chunk *where)
-{
- LOG_FUNC_ENTRY();
-
- if (where != nullptr)
- {
- LOG_FMT(LFTOR,
- "%s(%d): Where clause detected: orig line is %zu, orig col is %zu\n",
- __unqualified_func__,
- __LINE__,
- where->GetOrigLine(),
- where->GetOrigCol());
- }
- set_where_start(where);
-
- auto *where_end = get_where_end();
- auto *where_start = get_where_start();
-
- set_where_end(where_end);
-
- T_PcfFlags flags;
-
- for (auto *pc = where_start; pc != where_end; pc = pc->GetNextNcNnl())
- {
- flags = mark_where_chunk(pc, m_start->GetType(), flags);
- }
-} // EnumStructUnionParser::mark_where_clause
-
-
-void EnumStructUnionParser::mark_where_colon(Chunk *colon)
-{
- LOG_FUNC_ENTRY();
-
- if (colon != nullptr)
- {
- LOG_FMT(LFTOR,
- "%s(%d): Where colon detected: orig line is %zu, orig col is %zu\n",
- __unqualified_func__,
- __LINE__,
- colon->GetOrigLine(),
- colon->GetOrigCol());
- }
- colon->SetType(CT_WHERE_COLON);
- colon->SetParentType(m_start->GetType());
-} // EnumStructUnionParser::mark_where_colon
-
-
-void EnumStructUnionParser::parse(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- initialize(pc);
-
- if (parse_error_detected())
- {
- return;
- }
-
- /**
- * make sure this wasn't a cast, and also make sure we're
- * actually dealing with a class/enum/struct/union type
- */
- if ( m_start->GetParentType() == CT_C_CAST
- || !m_start->IsClassEnumStructOrUnion())
- {
- return;
- }
- Chunk *prev = m_start;
- Chunk *next = prev->GetNextNcNnl();
-
- /**
- * the enum-key might be enum, enum class or enum struct
- */
- if (next->IsEnum())
- {
- prev = next;
- next = prev->GetNextNcNnl();
- }
- else if (prev->IsEnum())
- {
- Chunk *prev_prev = prev->GetPrevNcNnlNi();
-
- if ( prev_prev->IsEnum()
- && prev->IsEnum())
- {
- m_start = prev_prev;
- }
- }
- /**
- * pre-process all chunks between the starting and ending chunks identified
- * in the initial pass
- */
-
- while (chunk_is_between(next, m_start, m_end))
- {
- /**
- * skip attributes
- */
- next = skip_attribute(next);
-
- /**
- * skip declspec
- */
- next = skip_declspec(next);
-
- /**
- * skip any right-hand side assignments
- */
- if (next->Is(CT_ASSIGN))
- {
- next = skip_to_expression_end(next);
- }
-
- if ( next->Is(CT_ANGLE_OPEN)
- && !template_detected())
- {
- next = parse_angles(next);
- }
- else if ( next->Is(CT_BRACE_OPEN)
- && !body_detected())
- {
- next = parse_braces(next);
- }
- else if (next->IsColon())
- {
- parse_colon(next);
- }
- else if (next->Is(CT_COMMA))
- {
- record_top_level_comma(next);
- }
- else if (next->Is(CT_DC_MEMBER))
- {
- next = parse_double_colon(next);
- }
- else if ( next->IsParenOpen()
- && ( language_is_set(LANG_D)
- || ( language_is_set(LANG_PAWN)
- && m_start->IsEnum())))
- {
- set_paren_parent(next, m_start->GetType());
-
- if ( prev->Is(CT_WORD)
- && language_is_set(LANG_D))
- {
- mark_template(next);
- }
- next = next->GetClosingParen(E_Scope::PREPROC);
- }
- else if ( next->Is(CT_QUALIFIER)
- && language_is_set(LANG_JAVA)
- && std::strncmp(next->GetStr().c_str(), "implements", 10) == 0)
- {
- mark_base_classes(next);
- }
- else if (next->Is(CT_QUESTION))
- {
- record_question_operator(next);
- }
- else if ( next->Is(CT_WHERE)
- && !where_clause_detected())
- {
- mark_where_clause(next);
- }
- prev = next;
-
- do
- {
- next = next->GetNextNcNnl();
- } while ( next->IsNotNullChunk()
- && next->GetLevel() > m_start->GetLevel());
- }
- /**
- * identify the type and/or variable(s)
- */
- analyze_identifiers();
-
- /**
- * identify and mark lvalues occurring outside the body definition
- */
- mark_extracorporeal_lvalues();
-
- if ( prev->IsNotNullChunk()
- && prev->IsSemicolon()
- && prev->GetLevel() == m_start->GetLevel()
- && !prev->TestFlags(PCF_IN_FOR))
- {
- prev->SetParentType(m_start->GetType());
- }
-} // EnumStructUnionParser::parse
-
-
-Chunk *EnumStructUnionParser::parse_angles(Chunk *angle_open)
-{
- LOG_FUNC_ENTRY();
-
- /**
- * first check to see if the open angle occurs within an inheritance list
- */
- auto *pc = angle_open;
-
- if (!is_within_inheritance_list(pc))
- {
- /**
- * check to see if there's a matching closing angle bracket
- */
- auto *angle_close = angle_open->GetClosingParen(E_Scope::PREPROC);
-
- if (angle_close->IsNullChunk())
- {
- // parse error
- parse_error_detected(true);
-
- // TODO: should this be just a warning or an error (with exit condition?)
- LOG_FMT(LWARN,
- "%s(%d): Unmatched '<' at orig line is %zu, orig col is %zu\n",
- __unqualified_func__,
- __LINE__,
- angle_open->GetOrigLine(),
- angle_open->GetOrigCol());
- }
- else
- {
- /**
- * check to make sure that the template is the final chunk in a list
- * of scope-resolution qualifications
- */
- auto *next = angle_close->GetNextNcNnl();
-
- if (next->IsNot(CT_DC_MEMBER))
- {
- set_template_start(angle_open);
-
- /**
- * we could be dealing with a template type; if so, the opening angle
- * bracket should be preceded by a CT_WORD token and we should have
- * found a closing angle bracket
- */
- auto *prev = angle_open->GetPrevNcNnlNi();
-
- if (prev->IsNot(CT_WORD))
- {
- // parse error
- parse_error_detected(true);
-
- // TODO: should this be just a warning or an error (with exit condition?)
- LOG_FMT(LWARN,
- "%s(%d): Identifier missing before '<' at orig line is %zu, orig col is %zu\n",
- __unqualified_func__,
- __LINE__,
- angle_open->GetOrigLine(),
- angle_open->GetOrigCol());
- }
- else
- {
- set_template_end(angle_close);
- mark_template(angle_open);
- }
- }
- /**
- * update input argument to point to the closing angle bracket
- */
- pc = angle_close;
- }
- }
- return(pc);
-} // EnumStructUnionParser::parse_angles
-
-
-Chunk *EnumStructUnionParser::parse_braces(Chunk *brace_open)
-{
- LOG_FUNC_ENTRY();
-
- /**
- * check to see if there's a matching closing brace
- */
-
- auto *pc = brace_open;
- auto *brace_close = pc->GetClosingParen(E_Scope::PREPROC);
-
- if (brace_close->IsNotNullChunk())
- {
- /**
- * we could be dealing with a variable definition preceded by
- * the class/struct keyword. It's possible that the variable is
- * assigned via direct-list initialization, hence the open brace
- * is NOT part of a class/struct type definition.
- */
- auto *first_comma = get_first_top_level_comma();
-
- if (chunk_is_after(pc, first_comma))
- {
- /**
- * the open brace occurs after a top-level comma was encountered, which
- * likely implies a direct-initialization or braced initializer list in
- * the midst of a list of variable definitions
- */
-
- return(pc);
- }
- set_body_end(brace_close);
- set_body_start(brace_open);
-
- auto *enum_base_start = get_enum_base_start();
- auto *inheritance_start = get_inheritance_start();
- auto *prev = pc->GetPrevNcNnlNi();
-
- /**
- * check to see if the open brace was preceded by a closing paren;
- * it could possibly be a function-like macro call preceding the
- * open brace, but it's more likely that we're dealing with a
- * signature associated with a function definition
- */
- bool is_potential_function_definition = false;
-
- if ( ( language_is_set(LANG_C)
- || language_is_set(LANG_CPP))
- && prev->IsParenClose())
- {
- /**
- * we may be dealing with a c/cpp function definition, where the 'struct'
- * or 'class' keywords appear as the return type preceding a pair of braces
- * and therefore may be associated with a function definition body
- */
- auto *paren_close = prev;
-
- // skip in reverse to the matching open paren
- auto *paren_open = paren_close->GetOpeningParen();
-
- if (paren_open->IsNotNullChunk())
- {
- /**
- * determine if there's an identifier preceding the open paren;
- * if so, the identifier is very likely to be associated with
- * a function definition
- */
- auto *type = m_start->GetNextNcNnl();
- auto *identifier = paren_open->GetPrevNcNnlNi(E_Scope::PREPROC);
- is_potential_function_definition = ( ( identifier->Is(CT_FUNCTION)
- || identifier->Is(CT_FUNC_DEF)
- || identifier->Is(CT_WORD))
- && type != identifier);
- }
- }
-
- if ( language_is_set(LANG_D)
- || language_is_set(LANG_PAWN)
- || !prev->IsParenClose()
- || is_potential_function_definition
- || chunk_is_between(prev, enum_base_start, brace_open)
- || chunk_is_between(prev, inheritance_start, brace_open))
- {
- mark_braces(brace_open);
-
- /**
- * D does not require a semicolon after an enum, but we add one to make
- * other code happy.
- */
- if ( language_is_set(LANG_D)
- && m_start->IsEnum())
- {
- pawn_add_vsemi_after(brace_close); // Issue #2279
- }
- pc = brace_close;
- }
- else
- {
- // TODO: should this be just a warning or an error (with exit condition?)
- LOG_FMT(LWARN,
- "%s(%d): Parsing error precedes start of body '{' at orig line is %zu, orig col is %zu\n",
- __unqualified_func__,
- __LINE__,
- brace_open->GetOrigLine(),
- brace_open->GetOrigCol());
-
- // parse error
- parse_error_detected(true);
- }
- }
- return(pc);
-} // EnumStructUnionParser::parse_braces
-
-
-void EnumStructUnionParser::parse_colon(Chunk *colon)
-{
- LOG_FUNC_ENTRY();
-
- if (m_start->Is(CT_UNION))
- {
- /**
- * unions do not implement inheritance
- */
-
- // TODO: should this be just a warning or an error (with exit condition?)
- LOG_FMT(LWARN,
- "%s(%d): Colon follows union declaration at orig line is %zu, orig col is %zu\n",
- __unqualified_func__,
- __LINE__,
- colon->GetOrigLine(),
- colon->GetOrigCol());
-
- // parse error
- parse_error_detected(true);
- }
- else if (is_within_conditional(colon))
- {
- mark_conditional_colon(colon);
- }
- else if (is_within_where_clause(colon))
- {
- mark_where_colon(colon);
- }
- else if (!inheritance_detected())
- {
- if (m_start->IsClassOrStruct())
- {
- /**
- * the colon likely specifies an inheritance list for a struct
- * or class type
- */
-
- set_inheritance_start(colon);
- mark_class_colon(colon);
- }
- else if (m_start->IsEnum())
- {
- set_enum_base_start(colon);
- mark_enum_integral_type(colon);
- }
- }
-} // EnumStructUnionParser::parse_colon
-
-
-Chunk *EnumStructUnionParser::parse_double_colon(Chunk *double_colon)
-{
- LOG_FUNC_ENTRY();
-
- auto *pc = double_colon;
-
- if ( language_is_set(LANG_CPP)
- && pc->Is(CT_DC_MEMBER))
- {
- mark_nested_name_specifiers(pc);
- pc = skip_scope_resolution_and_nested_name_specifiers(pc);
- }
- return(pc);
-} // EnumStructUnionParser::parse_double_colon
-
-
-bool EnumStructUnionParser::parse_error_detected() const
-{
- LOG_FUNC_ENTRY();
-
- return(m_parse_error);
-} // EnumStructUnionParser::parse_error_detected
-
-
-void EnumStructUnionParser::parse_error_detected(bool status)
-{
- LOG_FUNC_ENTRY();
-
- m_parse_error = status;
-} // EnumStructUnionParser::parse_error_detected
-
-
-void EnumStructUnionParser::record_question_operator(Chunk *question)
-{
- LOG_FUNC_ENTRY();
-
- if (question->Is(CT_QUESTION))
- {
- std::size_t index = m_chunk_map[CT_QUESTION].size();
-
- m_chunk_map[CT_QUESTION][index] = question;
- }
-} // EnumStructUnionParser::record_question_operator
-
-
-void EnumStructUnionParser::record_top_level_comma(Chunk *comma)
-{
- if ( comma != nullptr
- && comma->GetLevel() == m_start->GetLevel()
- && !is_within_conditional(comma)
- && !is_within_inheritance_list(comma))
- {
- std::size_t index = m_chunk_map[CT_COMMA].size();
-
- m_chunk_map[CT_COMMA][index] = comma;
- }
-} // EnumStructUnionParser::record_top_level_comma
-
-
-Chunk *EnumStructUnionParser::refine_end_chunk(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- if ( ( language_is_set(LANG_C)
- || language_is_set(LANG_CPP))
- && pc->Is(CT_BRACE_CLOSE))
- {
- /**
- * if dealing with C/C++, one or more trailing variable definitions may
- * follow the closing brace; a semi-colon should've been good enough to
- * indicate the terminating condition, however some of the classes defined
- * in the input tests cases for Continuous Integration DO NOT correctly
- * terminate classes/struct with a semicolon (which is compilation error).
- * As a consequence, more checks must be performed to determine where
- * the terminating chunk is located. For instance, see operator.cpp and
- * enum_comma.h for examples of offenders
- */
- auto *next = pc->GetNextNcNnl();
-
- while (true)
- {
- if (next->IsSemicolon())
- {
- pc = next;
-
- break;
- }
- else
- {
- /**
- * if we're sitting at a comma, skip it
- */
- if (next->Is(CT_COMMA))
- {
- next = next->GetNextNcNnl();
- }
- auto match = match_variable(next, m_start->GetLevel());
- auto *start = std::get<0>(match);
- auto *identifier = std::get<1>(match);
- auto *end = std::get<2>(match);
-
- if ( end == nullptr
- || identifier == nullptr
- || start == nullptr)
- {
- break;
- }
- else
- {
- pc = end->GetNextNcNnl();
-
- /**
- * skip any right-hand side assignments
- */
- if (pc->Is(CT_ASSIGN))
- {
- pc = skip_to_expression_end(pc);
- }
- next = pc;
- }
- }
- }
- }
- return(pc);
-} // EnumStructUnionParser::refine_end_chunk
-
-
-void EnumStructUnionParser::set_body_end(Chunk *body_end)
-{
- LOG_FUNC_ENTRY();
-
- if (body_end->Is(CT_BRACE_CLOSE))
- {
- m_chunk_map[CT_BRACE_CLOSE][0] = body_end;
- }
-} // EnumStructUnionParser::set_body_end
-
-
-void EnumStructUnionParser::set_body_start(Chunk *body_start)
-{
- LOG_FUNC_ENTRY();
-
- if (body_start->Is(CT_BRACE_OPEN))
- {
- m_chunk_map[CT_BRACE_OPEN][0] = body_start;
- }
-} // EnumStructUnionParser::set_body_start
-
-
-void EnumStructUnionParser::set_enum_base_start(Chunk *enum_base_start)
-{
- LOG_FUNC_ENTRY();
-
- if (enum_base_start->IsColon())
- {
- m_chunk_map[CT_BIT_COLON][0] = enum_base_start;
- }
-} // EnumStructUnionParser::set_enum_base_start
-
-
-void EnumStructUnionParser::set_inheritance_start(Chunk *inheritance_start)
-{
- LOG_FUNC_ENTRY();
-
- if (inheritance_start->IsColon())
- {
- m_chunk_map[CT_COLON][0] = inheritance_start;
- }
-} // EnumStructUnionParser::set_inheritance_start
-
-
-void EnumStructUnionParser::set_template_end(Chunk *template_end)
-{
- LOG_FUNC_ENTRY();
-
- if (template_end->Is(CT_ANGLE_CLOSE))
- {
- m_chunk_map[CT_ANGLE_CLOSE][0] = template_end;
- }
-} // EnumStructUnionParser::set_template_end
-
-
-void EnumStructUnionParser::set_template_start(Chunk *template_start)
-{
- LOG_FUNC_ENTRY();
-
- if (template_start->Is(CT_ANGLE_OPEN))
- {
- m_chunk_map[CT_ANGLE_OPEN][0] = template_start;
- }
-} // EnumStructUnionParser::set_template_start
-
-
-void EnumStructUnionParser::set_where_end(Chunk *where_end)
-{
- LOG_FUNC_ENTRY();
-
- if (where_end->Is(CT_BRACE_OPEN))
- {
- m_chunk_map[CT_WHERE][0] = where_end;
- }
-} // EnumStructUnionParser::set_where_end
-
-
-void EnumStructUnionParser::set_where_start(Chunk *where_start)
-{
- LOG_FUNC_ENTRY();
-
- if (where_start->Is(CT_WHERE))
- {
- m_chunk_map[CT_WHERE][0] = where_start;
- }
-} // EnumStructUnionParser::set_where_start
-
-
-bool EnumStructUnionParser::template_detected() const
-{
- LOG_FUNC_ENTRY();
-
- auto *template_end = get_template_end();
- auto *template_start = get_template_start();
-
- return( template_end != nullptr
- && template_start != nullptr);
-} // EnumStructUnionParser::template_detected
-
-
-Chunk *EnumStructUnionParser::try_find_end_chunk(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
- __unqualified_func__, __LINE__,
- pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
-
- do
- {
- LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
- __unqualified_func__, __LINE__,
- pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
-
- /**
- * clear some previously marked token types, some of which have likely
- * been erroneously marked up to this point; a good example of this
- * arises when macro variables and/or macro function calls follow the
- * class/enum/struct/union keyword and precede the actual type name
- */
- if ( pc->Is(CT_TYPE)
- || pc->Is(CT_WORD))
- {
- pc->SetType(CT_WORD);
- pc->SetParentType(CT_NONE);
- }
- LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
- __unqualified_func__, __LINE__,
- pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
-
- do
- {
- pc = pc->GetNextNcNnl(E_Scope::PREPROC);
- LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
- __unqualified_func__, __LINE__,
- pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
- } while ( pc->IsNotNullChunk()
- && pc->GetLevel() > m_start->GetLevel());
-
- if (pc->IsNullChunk())
- {
- LOG_FMT(LFTOR, "%s(%d): IsNullChunk\n",
- __unqualified_func__, __LINE__);
- // parse error
- parse_error_detected(true);
- return(Chunk::NullChunkPtr);
- }
- else
- {
- LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
- __unqualified_func__, __LINE__,
- pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
- }
- } while (!is_potential_end_chunk(pc));
-
- /**
- * perform a second pass for c++ that
- */
- pc = refine_end_chunk(pc);
-
- return(pc);
-} // EnumStructUnionParser::try_find_end_chunk
-
-
-void EnumStructUnionParser::try_post_identify_macro_calls()
-{
- LOG_FUNC_ENTRY();
-
- if ( language_is_set(LANG_CPP)
- && type_identified())
- {
- /**
- * for all chunks at class/enum/struct/union level, identify function-like
- * macro calls and mark them as CT_MACRO_FUNC_CALL. The reason for doing
- * so is to avoid mis-interpretation by code executed at a later time
- */
-
- auto *body_start = get_body_start();
- auto *inheritance_start = get_inheritance_start();
- Chunk *pc = m_start;
- Chunk *prev = Chunk::NullChunkPtr;
-
- do
- {
- if ( !chunk_is_between(prev, inheritance_start, body_start)
- && ( prev->Is(CT_WORD)
- || prev->Is(CT_FUNCTION)
- || prev->Is(CT_FUNC_DEF))
- && !prev->GetFlags().test_any(PCF_VAR_DEF | PCF_VAR_1ST | PCF_VAR_INLINE)
- && prev->GetLevel() == m_start->GetLevel())
- {
- if (pc->IsParenOpen())
- {
- auto *paren_open = pc;
- auto *paren_close = paren_open->GetClosingParen(E_Scope::PREPROC);
-
- if (paren_close->IsNotNullChunk())
- {
- paren_open->SetType(CT_FPAREN_OPEN);
- paren_open->SetParentType(CT_MACRO_FUNC_CALL);
- paren_close->SetType(CT_FPAREN_CLOSE);
- paren_close->SetParentType(CT_MACRO_FUNC_CALL);
- prev->SetType(CT_MACRO_FUNC_CALL);
- }
- }
- }
- prev = pc;
- pc = prev->GetNextNcNnl();
- } while (chunk_is_between(pc, m_start, m_end));
- }
-} // EnumStructUnionParser::try_post_identify_macro_calls
-
-
-void EnumStructUnionParser::try_post_identify_type()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *body_end = get_body_end();
-
- if ( !type_identified()
- && body_end == nullptr)
- {
- /**
- * a type wasn't identified and no closing brace is present; we're
- * likely not dealing with an anonymous enum/class/struct
- */
-
- /**
- * a type has yet to be identified, so search for the last word
- * that hasn't been marked as a variable
- */
- Chunk *type = nullptr;
- Chunk *pc = m_start;
-
- do
- {
- /**
- * in case it's a qualified identifier, skip scope-resolution and
- * nested name specifiers and return just the qualified identifier name
- */
- pc = skip_scope_resolution_and_nested_name_specifiers(pc);
-
- if (pc->GetFlags().test_any(PCF_VAR_DEF | PCF_VAR_1ST | PCF_VAR_INLINE))
- {
- break;
- }
- else if ( pc->Is(CT_WORD)
- || pc->Is(CT_ANGLE_CLOSE))
- {
- type = skip_template_prev(pc);
- }
- pc = pc->GetNextNcNnl();
- } while (chunk_is_between(pc, m_start, m_end));
-
- if (type != nullptr)
- {
- mark_type(type);
- }
- }
-} // EnumStructUnionParser::try_post_identify_type
-
-
-bool EnumStructUnionParser::try_pre_identify_type()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc = get_body_start();
-
- if ( language_is_set(LANG_PAWN)
- && m_start->IsEnum())
- {
- set_paren_parent(pc, m_start->GetType());
- }
- else if (template_detected())
- {
- pc = get_template_start();
- }
- else if (enum_base_detected())
- {
- pc = get_enum_base_start();
- }
- else if (inheritance_detected())
- {
- pc = get_inheritance_start();
-
- if (m_start->Is(CT_UNION))
- {
- /**
- * unions do not implement inheritance
- */
-
- // TODO: should this be just a warning or an error (with exit condition?)
- LOG_FMT(LWARN,
- "%s(%d): Bad union declaration detected at orig line is %zu, orig col is %zu\n",
- __unqualified_func__,
- __LINE__,
- m_start->GetOrigLine(),
- m_start->GetOrigCol());
-
- parse_error_detected(true);
-
- return(false);
- }
- }
-
- if (pc == nullptr)
- {
- Chunk *next = m_start->GetNextNcNnl();
-
- /**
- * in case it's a qualified identifier, skip scope-resolution and
- * nested name specifiers and return just the qualified identifier name
- */
- next = skip_scope_resolution_and_nested_name_specifiers(next);
-
- Chunk *next_next = next->GetNextNcNnl();
-
- /**
- * in case it's a qualified identifier, skip scope-resolution and
- * nested name specifiers and return just the qualified identifier name
- */
- next_next = skip_scope_resolution_and_nested_name_specifiers(next_next);
-
- /**
- * if there is one word between the start and end chunks, then we've likely
- * identified the type; if there are two words, then the first is likely a
- * type and the second is an instantiation thereof; however, it is possible
- * that the first word is actually a reference to a macro definition, in which
- * the second word would be the type
- */
- if (next_next == m_end)
- {
- pc = next_next;
- }
- else if ( next->IsNotNullChunk()
- && next->Is(CT_WORD)
- && next_next->Is(CT_WORD)
- && m_end->GetPrevNcNnlNi() == next_next)
- {
- /**
- * check to see if we've got a macro reference preceding the last word chunk;
- * this won't work in all cases, because a macro may be defined in another header
- * file, but this is an attempt to increase the chances of identifying the correct
- * chunk as the type
- */
- if ( chunk_is_macro_reference(next)
- || m_start->GetParentType() == CT_TEMPLATE)
- {
- pc = m_end;
- }
- else
- {
- pc = next_next;
- }
- }
- else
- {
- /**
- * search for some common patterns that may indicate a type
- */
- Chunk *prev = m_start;
-
- while ( chunk_is_between(next, m_start, m_end)
- && ( ( next->IsNot(CT_ASSIGN)
- && next->IsNot(CT_COMMA))
- || next->GetLevel() != m_start->GetLevel())
- && !next->IsSemicolon())
- {
- prev = next;
- next = next->GetNextNcNnl();
-
- /**
- * in case it's a qualified identifier, skip scope-resolution and
- * nested name specifiers and return just the qualified identifier name
- */
- next = skip_scope_resolution_and_nested_name_specifiers(next);
-
- /**
- * skip array brackets, as the type cannot be located within;
- * also skip a set of parens - there may be a type embedded within,
- * but it's not the type with which we're concerned
- */
- if ( next->IsSquareBracket() // Issue #3601
- || next->IsParenOpen())
- {
- prev = next->GetClosingParen(E_Scope::PREPROC);
- next = prev->GetNextNcNnl(E_Scope::PREPROC);
- }
-
- if ( prev->Is(CT_WORD)
- && next->IsPointerOrReference())
- {
- pc = next;
-
- break;
- }
- }
- }
- }
-
- if ( pc != nullptr
- && pc->IsNotNullChunk())
- {
- /**
- * the chunk preceding the previously selected chunk should indicate the type
- */
-
- pc = pc->GetPrevNcNnlNi(E_Scope::PREPROC);
-
- if ( pc->Is(CT_QUALIFIER)
- && std::strncmp(pc->GetStr().c_str(), "final", 5) == 0)
- {
- pc = pc->GetPrevNcNnlNi(E_Scope::PREPROC);
- }
-
- if ( language_is_set(LANG_D)
- && pc->IsParenClose())
- {
- pc = pc->GetOpeningParen();
- pc = pc->GetPrevNcNnlNi();
- }
-
- if (pc->Is(CT_WORD))
- {
- mark_type(pc);
-
- return(true);
- }
- }
- return(false);
-} // EnumStructUnionParser::try_pre_identify_type
-
-
-bool EnumStructUnionParser::type_identified() const
-{
- LOG_FUNC_ENTRY();
-
- return(m_type != nullptr);
-} // EnumStructUnionParser::type_identified
-
-
-/**
- * Returns true if a where clause was detected during parsing
- */
-bool EnumStructUnionParser::where_clause_detected() const
-{
- LOG_FUNC_ENTRY();
-
- auto *where_end = get_where_end();
- auto *where_start = get_where_start();
-
- return( where_end != nullptr
- && where_start != nullptr);
-} // EnumStructUnionParser::where_clause_detected
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/EnumStructUnionParser.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/EnumStructUnionParser.h
deleted file mode 100644
index 15536e67..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/EnumStructUnionParser.h
+++ /dev/null
@@ -1,497 +0,0 @@
-/**
- * @file combine_fix_mark_enum_struct_union.h
- *
- * @author Joshua Parker
- * @license GPL v2+
- * extract from combine_fix_mark.h
- */
-
-#ifndef ENUM_STRUCT_UNION_PARSER_H_INCLUDED
-#define ENUM_STRUCT_UNION_PARSER_H_INCLUDED
-
-#include "pcf_flags.h"
-#include "token_enum.h"
-#include "uncrustify_types.h"
-#include <map>
-
-
-/**
- * Class EnumStructUnionParser : This class facilitates the parsing and interpretation
- * of ALL instances of the class, enum, union, and
- * struct keywords, including user-defined types with
- * a body {} and any trailing inline variable declarations
- * that may follow the definition (as permitted by
- * the coding language in question). The class also
- * interprets variable declarations preceded by one
- * of those keywords, as well as any C/C++ forward
- * declarations
- */
-class EnumStructUnionParser
-{
-public:
- /**
- * Constructor
- */
- EnumStructUnionParser();
-
-
- /**
- * Destructor
- */
- ~EnumStructUnionParser();
-
-
-private:
- /**
- * Analyzes all identifiers (marked as CT_WORD) between the starting and
- * ending chunks and changes CT_WORD to one of CT_TYPE, CT_MACRO_FUNC_CALL,
- * etc. and sets flags (PCF_VAR_1ST, PCF_VAR_1ST_DEF, PCF_VAR_INLINE, etc.)
- * for variable identifiers accordingly. Flags C++ forward declarations as
- * PCF_INCOMPLETE
- */
- void analyze_identifiers();
-
-
- /**
- * Returns true if a pair of braces were both detected AND determined to be
- * part of a class/enum/struct/union body
- */
- bool body_detected() const;
-
-
- /**
- * Returns true if comma-separated values were detected during parsing
- */
- bool comma_separated_values_detected() const;
-
-
- /**
- * Returns true if an enumerated integral type was detected during parsing
- */
- bool enum_base_detected() const;
-
-
- /**
- * Returns the end chunk of a class/enum/struct/union body, if detected
- * during parsing
- */
- Chunk *get_body_end() const;
-
-
- /**
- * Returns the starting chunk of a class/enum/struct/union body, if detected
- * during parsing
- */
- Chunk *get_body_start() const;
-
-
- /**
- * Returns the starting chunk associated with an enumerated type's base
- * specifier statement, if detected during parsing
- */
- Chunk *get_enum_base_start() const;
-
-
- /**
- * Returns the first comma encountered at the level of the starting chunk,
- * if detected during parsing
- */
- Chunk *get_first_top_level_comma() const;
-
-
- /**
- * Returns the ending chunk associated with an class/struct inheritance
- * list, if detected during parsing
- */
- Chunk *get_inheritance_end() const;
-
-
- /**
- * Returns the starting chunk associated with an class/struct inheritance
- * list, if detected during parsing
- */
- Chunk *get_inheritance_start() const;
-
-
- /**
- * Returns a numerically-indexed map of all question operators encountered
- * during parsing
- */
- std::map<std::size_t, Chunk *> get_question_operators() const;
-
-
- /**
- * Returns the end chunk associated with a template parameter list, if
- * detected during parsing
- */
- Chunk *get_template_end() const;
-
-
- /**
- * Return the starting chunk associated with a template parameter list, if
- * detected during parsing
- */
- Chunk *get_template_start() const;
-
-
- /**
- * Returns a numerically-indexed map of all top-level commas encountered
- * during parsing
- */
- std::map<std::size_t, Chunk *> get_top_level_commas() const;
-
-
- /**
- * Return the starting chunk associated with a where clause, if
- * detected during parsing
- */
- Chunk *get_where_end() const;
-
-
- /**
- * Return the starting chunk associated with a where clause, if
- * detected during parsing
- */
- Chunk *get_where_start() const;
-
-
- /**
- * Returns true if an inheritance list associated with a class or struct was
- * discovered during parsing
- */
- bool inheritance_detected() const;
-
-
-public:
- /**
- * Performs object initialization prior to parsing
- */
- void initialize(Chunk *pc);
-
-
-private:
- /**
- * Returns true if the chunk under test represents a potential end chunk past
- * which further parsing is not likely warranted
- */
- bool is_potential_end_chunk(Chunk *pc) const;
-
-
- /**
- * Returns true if the chunk under test is deemed to be located within a
- * conditional/ternary statement
- */
- bool is_within_conditional(Chunk *pc) const;
-
-
- /**
- * Returns true if the chunk under test is deemed to be located within an
- * inheritance list
- */
- bool is_within_inheritance_list(Chunk *pc) const;
-
-
- /**
- * Returns true if the chunk under test is deemed to be located within a
- * where clause
- */
- bool is_within_where_clause(Chunk *pc) const;
-
-
- /**
- * Marks all base classes that appear as part of an inheritance list
- */
- void mark_base_classes(Chunk *pc);
-
-
- /**
- * Marks pairs of braces associated with the body of a class/enum/struct/union,
- * and additionally calls a separate routine to mark any base classes for that
- * may precede the opening brace
- */
- void mark_braces(Chunk *start);
-
-
- /**
- * Marks the beginning chunk of an inheritance list
- */
- void mark_class_colon(Chunk *colon);
-
-
- /**
- * Mark a colon as a conditional
- */
- void mark_conditional_colon(Chunk *colon);
-
-
- /**
- * Mark any struct/class constructor declarations/definitions
- */
- void mark_constructors();
-
-
- /**
- * Marks the beginning chunk of an enumerated integral type specification
- */
- void mark_enum_integral_type(Chunk *colon);
-
-
- /**
- * Scan chunks outside the definition body and mark lvalues accordingly
- */
- void mark_extracorporeal_lvalues();
-
-
- /**
- * Mark nested name specifiers preceding qualified identifiers
- */
- void mark_nested_name_specifiers(Chunk *pc);
-
-
- /**
- * Marks pointer operators preceding a variable identifier
- */
- void mark_pointer_types(Chunk *pc);
-
-
- /**
- * Marks the beginning and ending chunks associated with a template
- * (templates may appear after the identifier type name as part of a class
- * specialization)
- */
- void mark_template(Chunk *start) const;
-
-
- /**
- * Marks the arguments within a template argument list bounded by the
- * starting and ending chunks
- */
- void mark_template_args(Chunk *start, Chunk *end) const;
-
-
- /**
- * Marks the type identifier associated with the class/enum/struct/union,
- * if not anonymously defined
- */
- void mark_type(Chunk *pc);
-
-
- /**
- * Marks all variable identifiers associated with the class/enum/struct/union
- */
- void mark_variable(Chunk *variable, T_PcfFlags flags);
-
-
- /**
- * Marks all chunks belonging to a c# where clause
- */
- void mark_where_clause(Chunk *where);
-
-
- /**
- * Marks the beginning of a where clause
- */
- void mark_where_colon(Chunk *colon);
-
-
-public:
- /**
- * Parses the class/enum/struct/union and all associated chunks
- */
- void parse(Chunk *pc);
-
-
-private:
- /**
- * Parses closing and opening angle brackets
- */
- Chunk *parse_angles(Chunk *angle_open);
-
-
- /**
- * Parses closing and opening braces
- */
- Chunk *parse_braces(Chunk *brace_open);
-
-
- /**
- * Parses a single colon, which may precede an inheritance list or
- * enumerated integral type specification
- */
- void parse_colon(Chunk *colon);
-
-
- /**
- * Parses a double colon, which may indicate a scope resolution chain
- */
- Chunk *parse_double_colon(Chunk *double_colon);
-
-
- /**
- * Returns the parsing error status
- */
- bool parse_error_detected() const;
-
-
- /**
- * Sets the parsing error status
- */
- void parse_error_detected(bool status);
-
-
- /**
- * Records all question operators encountered during parsing
- */
- void record_question_operator(Chunk *question);
-
-
- /**
- * Records a comma chunk given one the following conditions are satisfied:
- * 1) it is encountered at the level of the starting chunk
- * 2) it is not part of a right-hand side assignment
- * 3) it is not part of an inheritance list
- * 4) it is not part of a conditional/ternary expression
- */
- void record_top_level_comma(Chunk *comma);
-
-
- /**
- * Adjusts the end chunk returned by the try_find_end_chunk() function
- * for any potential trailing inline variable declarations that may follow
- * the body of a class/enum/struct/union definition
- */
- Chunk *refine_end_chunk(Chunk *pc);
-
-
- /**
- * Sets the chunk associated with the end of a class/enum/struct/union
- * body
- */
- void set_body_end(Chunk *body_end);
-
-
- /**
- * Sets the chunk associated with the start of a class/enum/struct/union
- * body
- */
- void set_body_start(Chunk *body_start);
-
-
- /**
- * Sets the chunk associated with the start of an enumerated integral
- * base type specification
- */
- void set_enum_base_start(Chunk *enum_base_start);
-
-
- /**
- * Sets the chunk associated with the start of an inheritance list
- */
- void set_inheritance_start(Chunk *inheritance_start);
-
-
- /**
- * Sets the chunk associated with the end of a template
- */
- void set_template_end(Chunk *template_end);
-
-
- /**
- * Sets the chunk associated with the start of a template
- */
- void set_template_start(Chunk *template_start);
-
-
- /**
- * Return the ending chunk associated with a where clause, if
- * detected during parsing
- */
- void set_where_end(Chunk *where_end);
-
-
- /**
- * Return the starting chunk associated with a where clause, if
- * detected during parsing
- */
- void set_where_start(Chunk *where_start);
-
-
- /**
- * Returns true if a template was detected during parsing
- */
- bool template_detected() const;
-
-
- /**
- * Attempts to find the last chunk associated with the class/enum/struct/union
- */
- Chunk *try_find_end_chunk(Chunk *pc);
-
-
- /**
- * Attempts to identify any function-like macro calls which may precede the
- * actual type identifier
- */
- void try_post_identify_macro_calls();
-
-
- /**
- * Attempts to find the identifier type name (if not anonymously-defined) post
- * variable identifier interpretation
- */
- void try_post_identify_type();
-
-
- /**
- * Attempts to find the identifier type name prior to variable identifier
- * interpretation
- */
- bool try_pre_identify_type();
-
-
- /**
- * Returns true if a corresponding type was identified for the class/enum/struct/union
- */
- bool type_identified() const;
-
-
- /**
- * Returns true if a where clause was detected during parsing
- */
- bool where_clause_detected() const;
-
-
- /**
- * Map of token-type, chunk pairs
- */
- std::map<E_Token, std::map<std::size_t, Chunk *> > m_chunk_map;
-
-
- /**
- * Indicates the last chunk associated with the class/enum/struct/union keyword
- */
- Chunk *m_end;
-
-
- /**
- * Indicates whether or not a parse error has occurred
- */
- bool m_parse_error;
-
-
- /**
- * Stores a pointer to the class/enum/struct/union keyword chunk with which the
- * parse() routine was invoked
- */
- Chunk *m_start;
-
-
- /**
- * Stores a pointer to the type identifier associated with the class/enum/struct/union,
- * if not anonymously defined
- */
- Chunk *m_type;
-};
-
-
-#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ParseFrame.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ParseFrame.cpp
deleted file mode 100644
index 837871cb..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ParseFrame.cpp
+++ /dev/null
@@ -1,352 +0,0 @@
-/**
- * @file ParseFrame.cpp
- *
- * Container that holds data needed for indenting and brace parsing
- *
- * @author Daniel Chumak
- * @license GPL v2+
- */
-
-#include "ParseFrame.h"
-
-#include "chunk.h"
-#include "uncrustify.h"
-
-#include <stdexcept> // to get std::logic_error
-
-
-using std::string;
-using std::to_string;
-using std::invalid_argument;
-
-using ContainerType = paren_stack_entry_t;
-using Container = std::vector<ContainerType>;
-
-
-//! amount of elements for which memory is going to be pre-initialized
-static constexpr const int CONTAINER_INIT_SIZE = 16;
-
-
-static ContainerType genDummy()
-{
- ContainerType tmp_dummy{};
-
- tmp_dummy.indent = 1;
- tmp_dummy.indent_tmp = 1;
- tmp_dummy.indent_tab = 1;
- tmp_dummy.type = CT_EOF;
- tmp_dummy.pc = Chunk::NullChunkPtr;
- tmp_dummy.pop_pc = Chunk::NullChunkPtr;
-
- return(tmp_dummy);
-}
-
-
-void ParseFrame::clear()
-{
- last_poped = genDummy();
-
- pse = Container{};
- pse.reserve(CONTAINER_INIT_SIZE);
- pse.push_back(genDummy());
-
- ref_no = 0;
- level = 0;
- brace_level = 0;
- pp_level = 0;
- sparen_count = 0;
- paren_count = 0;
- in_ifdef = E_Token::CT_NONE;
- stmt_count = 0;
- expr_count = 0;
-}
-
-
-ParseFrame::ParseFrame()
-{
- ParseFrame::clear();
-}
-
-
-bool ParseFrame::empty() const
-{
- // always at least one (dummy) element inside pse guaranteed
- return(false);
-// return(pse.empty());
-}
-
-
-ContainerType &ParseFrame::at(size_t idx)
-{
- return(pse.at(idx));
-}
-
-
-const ContainerType &ParseFrame::at(size_t idx) const
-{
- return(pse.at(idx));
-}
-
-
-ContainerType &ParseFrame::prev(size_t idx)
-{
- LOG_FUNC_ENTRY();
-
- if (idx == 0)
- {
- throw invalid_argument(string(__FILE__) + ":" + to_string(__LINE__)
- + " idx can't be zero");
- }
-
- if (idx >= pse.size())
- {
- LOG_FMT(LINDPSE, "%s(%d): idx is %zu, size is %zu\n",
- __func__, __LINE__, idx, pse.size());
- throw invalid_argument(string(__FILE__) + ":" + to_string(__LINE__)
- + " idx can't be >= size()");
- }
- return(*std::prev(std::end(pse), idx + 1));
-}
-
-
-const ContainerType &ParseFrame::prev(size_t idx) const
-{
- LOG_FUNC_ENTRY();
-
- if ( idx == 0
- || idx >= pse.size())
- {
- throw invalid_argument(string(__FILE__) + ":" + to_string(__LINE__)
- + " idx can't be zero or >= size()");
- }
- return(*std::prev(std::end(pse), idx + 1));
-}
-
-
-ContainerType &ParseFrame::top()
-{
- // always at least one (dummy) element inside pse guaranteed
-// if (pse.empty())
-// {
-// throw logic_error(string(__FILE__) + ":" + to_string(__LINE__)
-// + " called top on an empty stack");
-// }
- return(*std::prev(std::end(pse)));
-}
-
-
-const ContainerType &ParseFrame::top() const
-{
- // always at least one (dummy) element inside pse guaranteed
-// if (pse.empty())
-// {
-// throw logic_error(string(__FILE__) + ":" + to_string(__LINE__)
-// + " called top on an empty stack");
-// }
- return(*std::prev(std::end(pse)));
-}
-
-
-void ParseFrame::push(std::nullptr_t, brace_stage_e stage)
-{
- static Chunk dummy;
-
- push(&dummy, __func__, __LINE__, stage);
- top().pc = Chunk::NullChunkPtr;
-}
-
-
-void ParseFrame::push(Chunk *pc, const char *func, int line, brace_stage_e stage)
-{
- LOG_FUNC_ENTRY();
-
- ContainerType new_entry = {};
-
- new_entry.type = pc->GetType();
- new_entry.level = pc->GetLevel();
- new_entry.open_line = pc->GetOrigLine();
- new_entry.open_colu = pc->GetOrigCol();
- new_entry.pc = pc;
-
- new_entry.indent_tab = top().indent_tab;
- new_entry.indent_cont = top().indent_cont;
- new_entry.stage = stage;
-
- new_entry.in_preproc = pc->TestFlags(PCF_IN_PREPROC);
- new_entry.non_vardef = false;
- new_entry.ip = top().ip;
- new_entry.pop_pc = Chunk::NullChunkPtr;
-
- pse.push_back(new_entry);
-
-// uncomment the line below to get the address of the pse
-// #define DEBUG_PUSH_POP
-#ifdef DEBUG_PUSH_POP
- LOG_FMT(LINDPSE, "ParseFrame::push(%s:%d) Add is %4zu: orig line is %4zu, orig col is %4zu, type is %12s, "
- "brace level is %2zu, level is %2zu, pse_tos: %2zu -> %2zu\n",
- func, line, (size_t)this, pc->GetOrigLine(), pc->GetOrigCol(),
- get_token_name(pc->GetType()), pc->GetBraceLevel(), pc->GetLevel(),
- (pse.size() - 2), (pse.size() - 1));
-#else /* DEBUG_PUSH_POP */
- LOG_FMT(LINDPSE, "ParseFrame::push(%s:%d): orig line is %4zu, orig col is %4zu, type is %12s, "
- "brace level is %2zu, level is %2zu, pse_tos: %2zu -> %2zu\n",
- func, line, pc->GetOrigLine(), pc->GetOrigCol(),
- get_token_name(pc->GetType()), pc->GetBraceLevel(), pc->GetLevel(),
- (pse.size() - 2), (pse.size() - 1));
-#endif /* DEBUG_PUSH_POP */
-}
-
-
-void ParseFrame::pop(const char *func, int line, Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- // always at least one (dummy) element inside pse guaranteed
-// if (pse.empty())
-// {
-// throw logic_error(string(__FILE__) + ":" + to_string(__LINE__)
-// + "the stack index is already zero");
-// }
-
- if ( pc->GetType() == CT_PAREN_CLOSE
- || pc->GetType() == CT_BRACE_CLOSE
- || pc->GetType() == CT_VBRACE_CLOSE
- || pc->GetType() == CT_FPAREN_CLOSE
- || pc->GetType() == CT_LPAREN_CLOSE
- || pc->GetType() == CT_SPAREN_CLOSE
- || pc->GetType() == CT_TPAREN_CLOSE
- || pc->GetType() == CT_CLASS_COLON
- || pc->GetType() == CT_ANGLE_CLOSE
- || pc->GetType() == CT_SEMICOLON
- || pc->GetType() == CT_SQUARE_CLOSE)
- {
- LOG_FMT(LINDPSE, "ParseFrame::pop (%s:%d): orig line is %4zu, orig col is %4zu, type is %12s, pushed with\n",
- func, line, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
- }
- else if ( pc->GetType() == CT_ACCESS
- || pc->GetType() == CT_ASSIGN
- || pc->GetType() == CT_BRACE_OPEN
- || pc->GetType() == CT_BOOL
- || pc->GetType() == CT_CASE
- || pc->GetType() == CT_COMMA
- || pc->GetType() == CT_COMMENT
- || pc->GetType() == CT_COMMENT_CPP
- || pc->GetType() == CT_COMMENT_MULTI
- || pc->GetType() == CT_COND_COLON
- || pc->GetType() == CT_FPAREN_OPEN
- || pc->GetType() == CT_PAREN_OPEN
- || pc->GetType() == CT_TPAREN_OPEN
- || pc->GetType() == CT_MACRO_CLOSE
- || pc->GetType() == CT_MACRO_OPEN
- || pc->GetType() == CT_NEWLINE
- || pc->GetType() == CT_NONE
- || pc->GetType() == CT_OC_END
- || pc->GetType() == CT_OC_MSG_NAME
- || pc->GetType() == CT_OC_SCOPE
- || pc->GetType() == CT_OC_PROPERTY
- || pc->GetType() == CT_PREPROC
- || pc->GetType() == CT_SQUARE_OPEN
- || pc->GetType() == CT_SQL_END
- || pc->GetType() == CT_TYPEDEF
- || pc->GetType() == CT_VSEMICOLON
- || pc->GetType() == CT_WORD)
- {
- LOG_FMT(LINDPSE, "ParseFrame::pop (%s:%d): orig line is %4zu, orig col is %4zu, type is %12s\n",
- func, line, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
- }
- else
- {
- LOG_FMT(LINDPSE, "ParseFrame::pop (%s:%d): orig line is %4zu, orig col is %4zu, type is %12s,\n",
- func, line, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
- LOG_FMT(LINDPSE, "ParseFrame::pop (%s:%d): the type is %s, is not coded. Please make a call.\n",
- func, line, get_token_name(pc->GetType()));
- log_flush(true);
- exit(EX_SOFTWARE);
- }
-#ifdef DEBUG_PUSH_POP
- LOG_FMT(LINDPSE, "ParseFrame::pop (%s:%d) Add is %4zu: open_line is %4zu, clos_col is %4zu, type is %12s, "
- "cpd.level is %2d, level is %2zu, pse_tos: %2zu -> %2zu\n",
- func, line, (size_t)this, pse.back().open_line, pse.back().open_colu,
- get_token_name(pse.back().type), cpd.pp_level, pse.back().level,
- (pse.size() - 1), (pse.size() - 2));
-#else /* DEBUG_PUSH_POP */
- LOG_FMT(LINDPSE, "ParseFrame::pop (%s:%d): open_line is %4zu, clos_col is %4zu, type is %12s, "
- "cpd.level is %2d, level is %2zu, pse_tos: %2zu -> %2zu\n",
- func, line, pse.back().open_line, pse.back().open_colu,
- get_token_name(pse.back().type), cpd.pp_level, pse.back().level,
- (pse.size() - 1), (pse.size() - 2));
-#endif /* DEBUG_PUSH_POP */
-
- last_poped = *std::prev(std::end(pse));
-
- if (pse.size() == 1)
- {
- *std::begin(pse) = genDummy();
- }
- else
- {
- pse.pop_back();
- }
-} // ParseFrame::pop
-
-
-size_t ParseFrame::size() const
-{
- // always at least one (dummy) element inside pse guaranteed
- return(pse.size());
-}
-
-
-const paren_stack_entry_t &ParseFrame::poped() const
-{
- return(last_poped);
-}
-
-
-// TODO C++14: see abstract versions: std::rend, std::cend, std::crend ...
-ParseFrame::iterator ParseFrame::begin()
-{
- return(std::begin(pse));
-}
-
-
-ParseFrame::const_iterator ParseFrame::begin() const
-{
- return(std::begin(pse));
-}
-
-
-ParseFrame::reverse_iterator ParseFrame::rbegin()
-{
- return(pse.rbegin());
-}
-
-
-ParseFrame::const_reverse_iterator ParseFrame::rbegin() const
-{
- return(pse.rbegin());
-}
-
-
-ParseFrame::iterator ParseFrame::end()
-{
- return(std::end(pse));
-}
-
-
-ParseFrame::const_iterator ParseFrame::end() const
-{
- return(std::end(pse));
-}
-
-
-ParseFrame::reverse_iterator ParseFrame::rend()
-{
- return(pse.rend());
-}
-
-
-ParseFrame::const_reverse_iterator ParseFrame::rend() const
-{
- return(pse.rend());
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ParseFrame.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ParseFrame.h
deleted file mode 100644
index 1ca0e2d5..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ParseFrame.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * @file ParseFrame.h
- *
- * Container that holds data needed for indenting and brace parsing
- *
- * @author Daniel Chumak
- * @license GPL v2+
- */
-
-#ifndef SRC_PARSEFRAME_H_
-#define SRC_PARSEFRAME_H_
-
-#include "uncrustify_types.h"
-
-#include <memory>
-
-
-//! Structure for counting nested level
-struct paren_stack_entry_t
-{
- E_Token type; //! the type that opened the entry
- size_t level; //! Level of opening type
- size_t open_line; //! line that open symbol is on, only for logging purposes
- size_t open_colu; //! column that open symbol is on, only for logging purposes
- Chunk *pc; //! Chunk that opened the level, TODO: make const
- size_t brace_indent; //! indent for braces - may not relate to indent
- size_t indent; //! indent level (depends on use)
- size_t indent_tmp; //! temporary indent level (depends on use)
- size_t indent_tab; //! the 'tab' indent (always <= real column)
- bool indent_cont; //! indent_continue was applied
- E_Token parent; //! if, for, function, etc
- brace_stage_e stage; //! used to check progression of complex statements.
- bool in_preproc; //! whether this was created in a preprocessor
- size_t ns_cnt; //! Number of consecutive namespace levels
- bool non_vardef; //! Hit a non-vardef line
- T_IndentData ip;
- Chunk *pop_pc;
-};
-
-class ParseFrame
-{
-private:
- std::vector<paren_stack_entry_t> pse;
- paren_stack_entry_t last_poped;
-
- void clear();
-
-public:
- size_t ref_no;
- size_t level; //! level of parens/square/angle/brace
- size_t brace_level; //! level of brace/vbrace
- size_t pp_level; //! level of preproc #if stuff
- size_t sparen_count;
- size_t paren_count;
- E_Token in_ifdef;
- size_t stmt_count;
- size_t expr_count;
-
-
- ParseFrame();
- virtual ~ParseFrame() = default;
-
- bool empty() const;
-
- paren_stack_entry_t &at(size_t idx);
- const paren_stack_entry_t &at(size_t idx) const;
-
- paren_stack_entry_t &prev(size_t idx = 1);
- const paren_stack_entry_t &prev(size_t idx = 1) const;
-
- paren_stack_entry_t &top();
- const paren_stack_entry_t &top() const;
-
- const paren_stack_entry_t &poped() const;
-
- void push(Chunk *pc, const char *func, int line, brace_stage_e stage = brace_stage_e::NONE);
- void push(std::nullptr_t, brace_stage_e stage = brace_stage_e::NONE);
- void pop(const char *func, int line, Chunk *pc);
-
- size_t size() const;
-
- using iterator = std::vector<paren_stack_entry_t>::iterator;
- iterator begin();
- iterator end();
-
- using const_iterator = std::vector<paren_stack_entry_t>::const_iterator;
- const_iterator begin() const;
- const_iterator end() const;
-
- using reverse_iterator = std::vector<paren_stack_entry_t>::reverse_iterator;
- reverse_iterator rbegin();
- reverse_iterator rend();
-
- using const_reverse_iterator = std::vector<paren_stack_entry_t>::const_reverse_iterator;
- const_reverse_iterator rbegin() const;
- const_reverse_iterator rend() const;
-};
-
-#endif /* SRC_PARSEFRAME_H_ */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/add_space_table.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/add_space_table.h
deleted file mode 100644
index d9c89388..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/add_space_table.h
+++ /dev/null
@@ -1,366 +0,0 @@
-// *INDENT-OFF*
-
-#include "token_enum.h"
-
-//! type that stores two chunks between those no space shall occur
-struct no_space_table_t
-{
- E_Token first; //! first chunk
- E_Token second; //! second chunk
-};
-
-/**
- * this table lists out all combos where a space MUST be present
- * CT_UNKNOWN is a wildcard.
- *
- * TODO: some of these are no longer needed.
- */
-const no_space_table_t add_space_table[] =
-{
- { CT_ACCESS, CT_TYPE },
- { CT_ACCESS, CT_WORD },
- { CT_ALIGN, CT_PAREN_OPEN },
- { CT_AMP, CT_WORD },
- { CT_ANGLE_CLOSE, CT_BRACE_OPEN },
- { CT_ANNOTATION, CT_ANNOTATION },
- { CT_ANNOTATION, CT_TYPE },
- { CT_ASM_COLON, CT_ASM_COLON },
- { CT_ASM_COLON, CT_STRING },
- { CT_ASM, CT_FUNC_CALL },
- { CT_ASM, CT_PAREN_OPEN },
- { CT_ASM, CT_QUALIFIER },
- { CT_ASSERT, CT_PAREN_OPEN },
- { CT_ASSIGN_FUNC_PROTO, CT_DEFAULT },
- { CT_ASSIGN_FUNC_PROTO, CT_DELETE },
- { CT_ASSIGN_FUNC_PROTO, CT_NUMBER },
- { CT_ATTRIBUTE, CT_ATTRIBUTE },
- { CT_ATTRIBUTE, CT_BRACE_OPEN },
- { CT_ATTRIBUTE, CT_CASE },
- { CT_ATTRIBUTE, CT_QUALIFIER },
- { CT_ATTRIBUTE, CT_TYPE },
- { CT_ATTRIBUTE, CT_WORD },
- { CT_AUTORELEASEPOOL, CT_BRACE_OPEN },
- { CT_BIT_COLON, CT_NUMBER },
- { CT_BIT_COLON, CT_SIZEOF },
- { CT_BIT_COLON, CT_TYPE },
- { CT_BIT_COLON, CT_WORD },
- { CT_BODY, CT_BRACE_OPEN },
- { CT_BRACE_CLOSE, CT_BRACE_OPEN },
- { CT_BRACE_CLOSE, CT_CLASS },
- { CT_BRACE_CLOSE, CT_FUNC_CALL },
- { CT_BRACE_CLOSE, CT_GETSET },
- { CT_BRACE_CLOSE, CT_IF },
- { CT_BRACE_CLOSE, CT_OC_MSG_NAME },
- { CT_BRACE_CLOSE, CT_PAREN_OPEN },
- { CT_BRACE_CLOSE, CT_QUALIFIER },
- { CT_BRACE_CLOSE, CT_RETURN },
- { CT_BRACE_CLOSE, CT_TYPE },
- { CT_BRACE_CLOSE, CT_WORD },
- { CT_BREAK, CT_WORD },
- { CT_BYREF, CT_INV },
- { CT_CASE_COLON, CT_ATTRIBUTE },
- { CT_CASE_COLON, CT_BRACE_OPEN },
- { CT_CASE_COLON, CT_BREAK },
- { CT_CASE_COLON, CT_RETURN },
- { CT_CASE_COLON, CT_WORD },
- { CT_CASE, CT_NEG },
- { CT_CASE, CT_PAREN_OPEN },
- { CT_CASE, CT_STRING },
- { CT_CATCH, CT_FUNC_CALL },
- { CT_CLASS_COLON, CT_FUNC_CALL },
- { CT_CLASS_COLON, CT_QUALIFIER },
- { CT_CLASS_COLON, CT_TYPE },
- { CT_CLASS_COLON, CT_WORD },
- { CT_COLON, CT_COLON },
- { CT_COLON, CT_NUMBER },
- { CT_COLON, CT_QUALIFIER },
- { CT_COLON, CT_STRING },
- { CT_COLON, CT_TYPE },
- { CT_COLON, CT_WORD },
- { CT_COMMENT_EMBED, CT_FUNC_CLASS_PROTO },
- { CT_COMMENT_MULTI, CT_ELSE },
- { CT_CONCAT, CT_STRING },
- { CT_CONCAT, CT_WORD },
- { CT_COND_COLON, CT_FUNC_CALL },
- { CT_COND_COLON, CT_STRING },
- { CT_COND_COLON, CT_WORD },
- { CT_CONSTRUCT, CT_TYPE },
- { CT_CONTINUE, CT_WORD },
- { CT_CS_PROPERTY, CT_BRACE_OPEN },
- { CT_DEFAULT, CT_STRING },
- { CT_DEFAULT, CT_WORD },
- { CT_DELEGATE, CT_BRACE_OPEN },
- { CT_D_MODULE, CT_WORD },
- { CT_ELLIPSIS, CT_NUMBER },
- { CT_ELSE, CT_FOR },
- { CT_ELSE, CT_IF },
- { CT_ELSE, CT_PAREN_OPEN },
- { CT_ELSE, CT_WORD },
- { CT_ELSEIF, CT_CONSTEXPR },
- { CT_ENUM_CLASS, CT_ATTRIBUTE },
- { CT_ENUM_CLASS, CT_TYPE },
- { CT_ENUM, CT_ATTRIBUTE },
- { CT_ENUM, CT_BIT_COLON },
- { CT_ENUM, CT_BRACE_OPEN },
- { CT_ENUM, CT_ENUM_CLASS },
- { CT_ENUM, CT_FPAREN_OPEN },
- { CT_ENUM, CT_FUNCTION },
- { CT_ENUM, CT_TYPE },
- { CT_ENUM, CT_WORD },
- { CT_EXECUTION_CONTEXT, CT_EXECUTION_CONTEXT },
- { CT_EXECUTION_CONTEXT, CT_FPAREN_OPEN },
- { CT_EXTERN, CT_STRING },
- { CT_FPAREN_CLOSE, CT_ASSIGN_FUNC_PROTO },
- { CT_FPAREN_CLOSE, CT_ATTRIBUTE },
- { CT_FPAREN_CLOSE, CT_CLASS_COLON },
- { CT_FPAREN_CLOSE, CT_COND_COLON },
- { CT_FPAREN_CLOSE, CT_DEFAULT },
- { CT_FPAREN_CLOSE, CT_FUNC_CALL },
- { CT_FPAREN_CLOSE, CT_NEG },
- { CT_FPAREN_CLOSE, CT_NOT },
- { CT_FPAREN_CLOSE, CT_OC_MSG_NAME },
- { CT_FPAREN_CLOSE, CT_QUESTION },
- { CT_FPAREN_CLOSE, CT_STRING },
- { CT_FPAREN_CLOSE, CT_THROW },
- { CT_FPAREN_CLOSE, CT_TYPE },
- { CT_FPAREN_CLOSE, CT_WHERE_SPEC },
- { CT_FPAREN_CLOSE, CT_WORD },
- { CT_FRIEND, CT_CLASS },
- { CT_FRIEND, CT_STRUCT },
- { CT_FRIEND, CT_TYPE },
- { CT_FUNCTION, CT_PAREN_OPEN },
- { CT_FUNC_VAR, CT_PPAREN_CLOSE },
- { CT_GOTO, CT_WORD },
- { CT_IF, CT_CONSTEXPR },
- { CT_IGNORED, CT_IGNORED },
- { CT_IMPORT, CT_WORD },
- { CT_INCDEC_AFTER, CT_DEREF },
- { CT_IN, CT_TYPE },
- { CT_IN, CT_WORD },
- { CT_LABEL_COLON, CT_CS_PROPERTY },
- { CT_LABEL_COLON, CT_FUNC_CALL },
- { CT_LABEL_COLON, CT_NEW },
- { CT_LABEL_COLON, CT_PAREN_OPEN },
- { CT_LABEL_COLON, CT_RETURN },
- { CT_LABEL_COLON, CT_STRING },
- { CT_LABEL_COLON, CT_TYPE },
- { CT_LABEL_COLON, CT_WORD },
- { CT_LOCK, CT_PAREN_OPEN },
- { CT_NAMESPACE, CT_BRACE_OPEN },
- { CT_NAMESPACE, CT_TYPE },
- { CT_NAMESPACE, CT_WORD },
- { CT_NATIVE, CT_TAG },
- { CT_NUMBER, CT_CHAR },
- { CT_NUMBER, CT_COLON },
- { CT_NUMBER, CT_ELLIPSIS },
- { CT_NUMBER, CT_OC_MSG_NAME },
- { CT_NUMBER, CT_PAREN_OPEN },
- { CT_NUMBER, CT_WORD },
- { CT_NUMBER_FP, CT_NUMBER },
- { CT_NUMBER_FP, CT_OC_MSG_NAME },
- { CT_NUMBER_FP, CT_WORD },
- { CT_OC_CLASS, CT_CLASS_COLON },
- { CT_OC_CLASS, CT_PAREN_OPEN },
- { CT_OC_DYNAMIC, CT_WORD },
- { CT_OC_IMPL, CT_OC_CLASS },
- { CT_OC_INTF, CT_OC_CLASS },
- { CT_OC_MSG_DECL, CT_BRACE_OPEN },
- { CT_OC_PROTOCOL, CT_OC_CLASS },
- { CT_PACKAGE, CT_WORD },
- { CT_PAREN_CLOSE, CT_ASM_COLON },
- { CT_PAREN_CLOSE, CT_COLON },
- { CT_PAREN_CLOSE, CT_COND_COLON },
- { CT_PAREN_CLOSE, CT_CS_PROPERTY },
- { CT_PAREN_CLOSE, CT_DEREF },
- { CT_PAREN_CLOSE, CT_NOT },
- { CT_PAREN_CLOSE, CT_NUMBER },
- { CT_PAREN_CLOSE, CT_OC_MSG_NAME },
- { CT_PAREN_CLOSE, CT_POS },
- { CT_PAREN_CLOSE, CT_QUALIFIER },
- { CT_PAREN_CLOSE, CT_TYPE },
- { CT_PP_DEFINE, CT_MACRO },
- { CT_PP_DEFINE, CT_MACRO_FUNC },
- { CT_PP_DEFINE, CT_NUMBER },
- { CT_PP_DEFINE, CT_PP_IGNORE },
- { CT_PP_DEFINED, CT_TYPE },
- { CT_PP_DEFINED, CT_WORD },
- { CT_PP_ELSE, CT_FUNC_CALL },
- { CT_PP_ELSE, CT_NOT },
- { CT_PP_ELSE, CT_NUMBER },
- { CT_PP_ELSE, CT_PAREN_OPEN },
- { CT_PP_ELSE, CT_PP_DEFINED },
- { CT_PP_ELSE, CT_WORD },
- { CT_PP_EMIT, CT_MACRO },
- { CT_PP_ENDIF, CT_WORD },
- { CT_PP_ENDREGION, CT_PREPROC_BODY },
- { CT_PP_IF, CT_CNG_HASINC },
- { CT_PP_IF, CT_FUNC_CALL },
- { CT_PP_IF, CT_NOT },
- { CT_PP_IF, CT_NUMBER },
- { CT_PP_IF, CT_PAREN_OPEN },
- { CT_PP_IF, CT_PP_ASM },
- { CT_PP_IF, CT_PP_DEFINE },
- { CT_PP_IF, CT_PP_DEFINED },
- { CT_PP_IF, CT_TYPE },
- { CT_PP_IF, CT_WORD },
- { CT_PP_INCLUDE, CT_STRING },
- { CT_PP_INCLUDE, CT_WORD },
- { CT_PP_OTHER, CT_PREPROC_BODY },
- { CT_PP_PRAGMA, CT_PP_ENDASM },
- { CT_PP_PRAGMA, CT_PP_ENDREGION },
- { CT_PP_PRAGMA, CT_PP_REGION },
- { CT_PP_PROPERTY, CT_WORD },
- { CT_PP_REGION, CT_IGNORED },
- { CT_PP_REGION, CT_PREPROC_BODY },
- { CT_PP_UNDEF, CT_TYPE },
- { CT_PP_UNDEF, CT_WORD },
- { CT_Q_EMIT, CT_FUNC_CALL },
- { CT_Q_FOREVER, CT_BRACE_OPEN },
- { CT_QUESTION, CT_FUNC_CALL },
- { CT_QUESTION, CT_PAREN_OPEN },
- { CT_QUESTION, CT_STRING },
- { CT_QUESTION, CT_WORD },
- { CT_SBOOL, CT_TYPE },
- { CT_SCOMPARE, CT_WORD },
- { CT_SPAREN_CLOSE, CT_ATTRIBUTE },
- { CT_SPAREN_CLOSE, CT_AUTORELEASEPOOL },
- { CT_SPAREN_CLOSE, CT_BRACE_OPEN },
- { CT_SPAREN_CLOSE, CT_FUNC_CALL },
- { CT_SPAREN_CLOSE, CT_WORD },
- { CT_SQL_ASSIGN, CT_FUNC_CALL },
- { CT_SQL_ASSIGN, CT_WORD },
- { CT_SQL_BEGIN, CT_SQL_WORD },
- { CT_SQL_END, CT_SQL_WORD },
- { CT_SQL_EXEC, CT_SQL_WORD },
- { CT_SQL_WORD, CT_COLON },
- { CT_SQL_WORD, CT_PAREN_OPEN },
- { CT_SQL_WORD, CT_SQL_WORD },
- { CT_SQUARE_CLOSE, CT_ATTRIBUTE },
- { CT_SQUARE_CLOSE, CT_BRACE_OPEN },
- { CT_SQUARE_CLOSE, CT_COLON },
- { CT_SQUARE_CLOSE, CT_EXECUTION_CONTEXT },
- { CT_SQUARE_CLOSE, CT_OC_MSG_NAME },
- { CT_SQUARE_CLOSE, CT_STRING },
- { CT_SQUARE_CLOSE, CT_WORD },
- { CT_STATE, CT_TYPE },
- { CT_STOCK, CT_QUALIFIER },
- { CT_STOCK, CT_TAG },
- { CT_STRING, CT_ATTRIBUTE },
- { CT_STRING, CT_BRACE_OPEN },
- { CT_STRING, CT_COLON },
- { CT_STRING, CT_CONCAT },
- { CT_STRING, CT_OC_MSG_NAME },
- { CT_STRING, CT_PAREN_OPEN },
- { CT_STRING, CT_STRING },
- { CT_STRING, CT_STRUCT },
- { CT_STRING, CT_TYPE },
- { CT_STRING, CT_WORD },
- { CT_STRUCT, CT_BRACE_OPEN },
- { CT_STRUCT, CT_CLASS_COLON },
- { CT_STRUCT, CT_MACRO_FUNC_CALL },
- { CT_STRUCT, CT_TYPE },
- { CT_STRUCT, CT_WORD },
- { CT_TEMPLATE, CT_CLASS },
- { CT_TEMPLATE, CT_TYPE },
- { CT_THIS, CT_OC_MSG_NAME },
- { CT_THIS, CT_TYPE },
- { CT_TSQUARE, CT_BRACE_OPEN },
- { CT_TSQUARE, CT_PAREN_OPEN },
- { CT_TSQUARE, CT_WORD },
- { CT_TYPEDEF, CT_ENUM },
- { CT_TYPEDEF, CT_FUNC_TYPE },
- { CT_TYPEDEF, CT_PAREN_OPEN },
- { CT_TYPEDEF, CT_QUALIFIER },
- { CT_TYPEDEF, CT_STRUCT },
- { CT_TYPEDEF, CT_TYPE },
- { CT_TYPEDEF, CT_TYPENAME },
- { CT_TYPEDEF, CT_UNION },
- { CT_TYPENAME, CT_ELLIPSIS },
- { CT_TYPENAME, CT_WORD },
- { CT_UNION, CT_BRACE_OPEN },
- { CT_UNION, CT_TYPE },
- { CT_UNION, CT_WORD },
- { CT_USING, CT_NAMESPACE },
- { CT_USING, CT_TYPE },
- { CT_USING, CT_WORD },
- { CT_USING_STMT, CT_PAREN_OPEN },
- { CT_VOLATILE, CT_BRACE_OPEN },
- { CT_WHERE_COLON, CT_CS_PROPERTY },
- { CT_WHERE_COLON, CT_NEW },
- { CT_WHERE_COLON, CT_TYPE },
- { CT_WHERE_COLON, CT_WORD },
- { CT_WHERE_SPEC, CT_WORD },
- { CT_WORD, CT_ATTRIBUTE },
- { CT_WORD, CT_BIT_COLON },
- { CT_WORD, CT_BRACE_OPEN },
- { CT_WORD, CT_CLASS_COLON },
- { CT_WORD, CT_COLON },
- { CT_WORD, CT_COMMENT_CPP },
- { CT_WORD, CT_CONCAT },
- { CT_WORD, CT_ELLIPSIS },
- { CT_WORD, CT_IN },
- { CT_WORD, CT_NEW },
- { CT_WORD, CT_NOT },
- { CT_WORD, CT_NUMBER },
- { CT_WORD, CT_NUMBER_FP },
- { CT_WORD, CT_OPERATOR },
- { CT_WORD, CT_QUALIFIER },
- { CT_WORD, CT_QUESTION },
- { CT_WORD, CT_SCOMPARE },
- { CT_WORD, CT_SQL_ASSIGN },
- { CT_WORD, CT_STRING },
- { CT_WORD, CT_STRUCT },
- { CT_WORD, CT_TYPE },
- { CT_WORD, CT_TYPE_CAST },
- { CT_WORD, CT_TYPEDEF },
- { CT_WORD, CT_WHERE_COLON },
- { CT_WORD, CT_WHERE_SPEC },
- { CT_WORD, CT_WORD },
-};
-
-/**
- * this table lists out all combos where a space should NOT be present
- * CT_UNKNOWN is a wildcard.
- *
- * TODO: some of these are no longer needed.
- */
-const no_space_table_t no_space_table[] =
-{
- { CT_OC_AT, CT_UNKNOWN },
- { CT_INCDEC_BEFORE, CT_WORD },
- { CT_UNKNOWN, CT_INCDEC_AFTER },
- { CT_UNKNOWN, CT_LABEL_COLON },
- { CT_UNKNOWN, CT_ACCESS_COLON },
- { CT_UNKNOWN, CT_SEMICOLON },
- { CT_UNKNOWN, CT_D_TEMPLATE },
- { CT_D_TEMPLATE, CT_UNKNOWN },
- { CT_MACRO_FUNC, CT_FPAREN_OPEN },
- { CT_PAREN_OPEN, CT_UNKNOWN },
- { CT_UNKNOWN, CT_PAREN_CLOSE },
- { CT_FPAREN_OPEN, CT_UNKNOWN },
- { CT_UNKNOWN, CT_SPAREN_CLOSE },
- { CT_SPAREN_OPEN, CT_UNKNOWN },
- { CT_UNKNOWN, CT_FPAREN_CLOSE },
- { CT_UNKNOWN, CT_COMMA },
- { CT_POS, CT_UNKNOWN },
- { CT_STAR, CT_UNKNOWN },
- { CT_VBRACE_CLOSE, CT_UNKNOWN },
- { CT_VBRACE_OPEN, CT_UNKNOWN },
- { CT_UNKNOWN, CT_VBRACE_CLOSE },
- { CT_UNKNOWN, CT_VBRACE_OPEN },
- { CT_PREPROC, CT_UNKNOWN },
- { CT_PREPROC_INDENT, CT_UNKNOWN },
- { CT_NEG, CT_UNKNOWN },
- { CT_UNKNOWN, CT_SQUARE_OPEN },
- { CT_UNKNOWN, CT_SQUARE_CLOSE },
- { CT_SQUARE_OPEN, CT_UNKNOWN },
- { CT_PAREN_CLOSE, CT_WORD },
- { CT_PAREN_CLOSE, CT_FUNC_DEF },
- { CT_PAREN_CLOSE, CT_FUNC_CALL },
- { CT_PAREN_CLOSE, CT_ADDR },
- { CT_PAREN_CLOSE, CT_FPAREN_OPEN },
- { CT_OC_SEL_NAME, CT_OC_SEL_NAME },
- { CT_TYPENAME, CT_TYPE },
-};
-
-// *INDENT-ON*
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align.cpp
deleted file mode 100644
index 66e5af3f..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-/**
- * @file align.cpp
- * Does all the aligning stuff.
- *
- * @author Ben Gardner
- * @author Guy Maurel since version 0.62 for uncrustify4Qt
- * October 2015, 2016
- * @license GPL v2+
- */
-
-#include "align.h"
-
-#include "align_asm_colon.h"
-#include "align_assign.h"
-#include "align_braced_init_list.h"
-#include "align_eigen_comma_init.h"
-#include "align_func_params.h"
-#include "align_func_proto.h"
-#include "align_init_brace.h"
-#include "align_left_shift.h"
-#include "align_oc_decl_colon.h"
-#include "align_oc_msg_colons.h"
-#include "align_oc_msg_spec.h"
-#include "align_preprocessor.h"
-#include "align_same_func_call_params.h"
-#include "align_stack.h"
-#include "align_struct_initializers.h"
-#include "align_trailing_comments.h"
-#include "align_typedefs.h"
-#include "align_var_def_brace.h"
-#include "log_rules.h"
-#include "quick_align_again.h"
-
-constexpr static auto LCURRENT = LALIGN;
-
-using namespace uncrustify;
-
-
-/*
- * Here are the items aligned:
- *
- * - enum value assignments
- * enum {
- * cat = 1,
- * fred = 2,
- * };
- *
- * - struct/union variable & bit definitions
- * struct foo {
- * char cat;
- * int id : 5;
- * int name_len : 6;
- * int height : 12;
- * };
- *
- * - variable definitions & assignments in normal code
- * const char *cat = "feline";
- * int id = 4;
- * a = 5;
- * bat = 14;
- *
- * - simple array initializers
- * int a[] = {
- * 1, 2, 3, 4, 5,
- * 6, 7, 8, 9, 10
- * };
- *
- * - c99 array initializers
- * const char *name[] = {
- * [FRED] = "fred",
- * [JOE] = "joe",
- * [PETER] = "peter",
- * };
- * struct foo b[] = {
- * { .id = 1, .name = "text 1" },
- * { .id = 567, .name = "text 2" },
- * };
- * struct foo_t bars[] =
- * {
- * [0] = { .name = "bar",
- * .age = 21 },
- * [1] = { .name = "barley",
- * .age = 55 },
- * };
- *
- * - compact array initializers
- * struct foo b[] = {
- * { 3, "dog" }, { 6, "spider" },
- * { 8, "elephant" }, { 3, "cat" },
- * };
- *
- * - multiline array initializers (2nd line indented, not aligned)
- * struct foo b[] = {
- * { AD_NOT_ALLOWED, "Sorry, you failed to guess the password.",
- * "Try again?", "Yes", "No" },
- * { AD_SW_ERROR, "A software error has occurred.", "Bye!", NULL, NULL },
- * };
- *
- * - Trailing comments
- *
- * - Back-slash newline groups
- *
- * - Function prototypes
- * int foo();
- * void bar();
- *
- * - Preprocessors
- * #define FOO_VAL 15
- * #define MAX_TIMEOUT 60
- * #define FOO(x) ((x) * 65)
- *
- * - typedefs
- * typedef uint8_t BYTE;
- * typedef int32_t INT32;
- * typedef uint32_t UINT32;
- */
-void align_all()
-{
- LOG_FUNC_ENTRY();
-
- log_rule_B("align_typedef_span");
-
- if (options::align_typedef_span() > 0)
- {
- align_typedefs(options::align_typedef_span());
- }
- log_rule_B("align_left_shift");
-
- if (options::align_left_shift())
- {
- align_left_shift();
- }
- log_rule_B("align_eigen_comma_init");
-
- if (options::align_eigen_comma_init())
- {
- align_eigen_comma_init();
- }
- log_rule_B("align_oc_msg_colon_span");
-
- if (options::align_oc_msg_colon_span() > 0)
- {
- align_oc_msg_colons();
- }
- // Align variable definitions
- log_rule_B("align_var_def_span");
- log_rule_B("align_var_struct_span");
- log_rule_B("align_var_class_span");
-
- if ( (options::align_var_def_span() > 0)
- || (options::align_var_struct_span() > 0)
- || (options::align_var_class_span() > 0))
- {
- align_var_def_brace(Chunk::GetHead(), options::align_var_def_span(), nullptr);
- }
- // Align assignments
- log_rule_B("align_enum_equ_span");
- log_rule_B("align_assign_span");
- log_rule_B("align_assign_thresh");
-
- if ( (options::align_enum_equ_span() > 0)
- || (options::align_assign_span() > 0))
- {
- align_assign(Chunk::GetHead(),
- options::align_assign_span(),
- options::align_assign_thresh(),
- nullptr);
- }
-
- if ( (options::align_braced_init_list_span() > 0) // Issue #750
- || (options::align_braced_init_list_thresh() > 0))
- {
- align_braced_init_list(Chunk::GetHead(),
- options::align_braced_init_list_span(),
- options::align_braced_init_list_thresh(),
- nullptr);
- }
- // Align structure initializers
- log_rule_B("align_struct_init_span");
-
- if (options::align_struct_init_span() > 0)
- {
- align_struct_initializers();
- }
- // Align function prototypes
- log_rule_B("align_func_proto_span");
- log_rule_B("align_mix_var_proto");
-
- if ( (options::align_func_proto_span() > 0)
- && !options::align_mix_var_proto())
- {
- align_func_proto(options::align_func_proto_span());
- }
- // Align function prototypes
- log_rule_B("align_oc_msg_spec_span");
-
- if (options::align_oc_msg_spec_span() > 0)
- {
- align_oc_msg_spec(options::align_oc_msg_spec_span());
- }
- // Align OC colons
- log_rule_B("align_oc_decl_colon");
-
- if (options::align_oc_decl_colon())
- {
- align_oc_decl_colon();
- }
- log_rule_B("align_asm_colon");
-
- if (options::align_asm_colon())
- {
- align_asm_colon();
- }
- // Align variable definitions in function prototypes
- log_rule_B("align_func_params");
- log_rule_B("align_func_params_span");
-
- if ( options::align_func_params()
- || options::align_func_params_span() > 0)
- {
- align_func_params();
- }
- log_rule_B("align_same_func_call_params");
-
- if (options::align_same_func_call_params())
- {
- align_same_func_call_params();
- }
- // Just in case something was aligned out of order... do it again
- quick_align_again();
-} // align_all
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align.h
deleted file mode 100644
index 91e87f25..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * @file align.h
- * prototypes for align.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-#ifndef ALIGN_H_INCLUDED
-#define ALIGN_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-
-void align_all();
-
-#endif /* ALIGN_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_add.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_add.cpp
deleted file mode 100644
index 48d20a05..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_add.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * @file align_add.cpp
- *
- * @author Guy Maurel
- * split from align.cpp
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "align_add.h"
-#include "uncrustify.h"
-
-
-void align_add(ChunkStack &cs, Chunk *pc, size_t &max_col)
-{
- LOG_FUNC_ENTRY();
-
- size_t min_col;
- Chunk *prev = Chunk::NullChunkPtr;
-
- if (pc != nullptr)
- {
- prev = pc->GetPrev();
- }
-
- if ( prev->IsNullChunk()
- || prev->IsNewline())
- {
- min_col = 1;
- LOG_FMT(LALADD, "%s(%d): pc orig line=%zu, pc->col=%zu max_col=%zu min_col=%zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetColumn(), max_col, min_col);
- }
- else
- {
- if (prev->Is(CT_COMMENT_MULTI))
- {
- min_col = prev->GetOrigColEnd() + 1;
- }
- else
- {
- min_col = prev->GetColumn() + prev->Len() + 1;
- }
- LOG_FMT(LALADD, "%s(%d): pc orig line=%zu, pc->col=%zu max_col=%zu min_col=%zu multi:%s prev->col=%zu prev->Len()=%zu %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetColumn(), max_col, min_col, (prev->Is(CT_COMMENT_MULTI)) ? "Y" : "N",
- (prev->Is(CT_COMMENT_MULTI)) ? prev->GetOrigColEnd() : (UINT32)prev->GetColumn(), prev->Len(), get_token_name(prev->GetType()));
- }
-
- if (cs.Empty())
- {
- max_col = 0;
- }
- cs.Push_Back(pc);
-
- if (min_col > max_col)
- {
- max_col = min_col;
- }
-} // align_add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_assign.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_assign.cpp
deleted file mode 100644
index 1943e353..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_assign.cpp
+++ /dev/null
@@ -1,290 +0,0 @@
-/**
- * @file align_assign.cpp
- *
- * @author Guy Maurel
- * split from align.cpp
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "align_assign.h"
-
-#include "align_stack.h"
-#include "log_rules.h"
-
-constexpr static auto LCURRENT = LALASS;
-
-using namespace uncrustify;
-
-
-Chunk *align_assign(Chunk *first, size_t span, size_t thresh, size_t *p_nl_count)
-{
- LOG_FUNC_ENTRY();
-
- if ( first == nullptr
- || first->IsNullChunk())
- {
- // coveralls will complain here. There are no example for that.
- // see https://en.wikipedia.org/wiki/Robustness_principle
- return(nullptr);
- }
- size_t my_level = first->GetLevel();
-
- char copy[1000];
-
- LOG_FMT(LALASS, "%s(%d): [my_level is %zu]: start checking with '%s', on orig line %zu, span is %zu, thresh is %zu\n",
- __func__, __LINE__, my_level, first->ElidedText(copy), first->GetOrigLine(), span, thresh);
-
- // If we are aligning on a tabstop, we shouldn't right-align
- AlignStack as; // regular assigns
-
- as.Start(span, thresh);
- log_rule_B("align_on_tabstop");
- as.m_right_align = !options::align_on_tabstop();
-
- AlignStack vdas; // variable def assigns
-
- vdas.Start(span, thresh);
- vdas.m_right_align = as.m_right_align;
-
- std::deque<AlignStack> fcnDefault(1);
-
- fcnDefault.back().Start(span, thresh);
- fcnDefault.back().m_right_align = as.m_right_align;
-
- AlignStack fcnProto;
-
- fcnProto.Start(span, thresh);
- fcnProto.m_right_align = as.m_right_align;
-
- size_t var_def_cnt = 0;
- size_t equ_count = 0;
- size_t nl_count = 0;
- size_t fcn_idx = 0;
- size_t tmp;
- Chunk *pc = first;
- Chunk *vdas_pc = nullptr;
-
- while (pc->IsNotNullChunk())
- {
- LOG_FMT(LALASS, "%s(%d): orig line is %zu, check pc->Text() is '%s', type is %s, m_parentType is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->ElidedText(copy), get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
-
- if (nl_count != 0)
- {
- if (vdas_pc != nullptr)
- {
- LOG_FMT(LALASS, "%s(%d): vdas.Add on '%s' on orig line %zu, orig col is %zu\n",
- __func__, __LINE__, vdas_pc->Text(), vdas_pc->GetOrigLine(), vdas_pc->GetOrigCol());
- vdas.Add(vdas_pc);
- vdas_pc = nullptr;
- }
-
- if (p_nl_count != nullptr)
- {
- *p_nl_count += nl_count;
- }
- as.NewLines(nl_count);
- vdas.NewLines(nl_count);
- fcnProto.NewLines(nl_count);
-
- for (auto &fcn : fcnDefault)
- {
- fcn.NewLines(nl_count);
- }
-
- fcn_idx = 0;
- nl_count = 0;
- var_def_cnt = 0;
- equ_count = 0;
- }
-
- // Don't check inside SPAREN, PAREN or SQUARE groups
- if ( pc->Is(CT_SPAREN_OPEN)
- // || pc->Is(CT_FPAREN_OPEN) Issue #1340
- || pc->Is(CT_SQUARE_OPEN)
- || pc->Is(CT_PAREN_OPEN))
- {
- LOG_FMT(LALASS, "%s(%d): Don't check inside SPAREN, PAREN or SQUARE groups, type is %s\n",
- __func__, __LINE__, get_token_name(pc->GetType()));
- tmp = pc->GetOrigLine();
- pc = pc->GetClosingParen();
-
- if (pc->IsNotNullChunk())
- {
- nl_count = pc->GetOrigLine() - tmp;
- }
- continue;
- }
-
- // Recurse if a brace set is found
- if ( ( pc->Is(CT_BRACE_OPEN)
- || pc->Is(CT_VBRACE_OPEN))
- && !(pc->GetParentType() == CT_BRACED_INIT_LIST))
- {
- size_t myspan;
- size_t mythresh;
-
- if (pc->GetParentType() == CT_ENUM)
- {
- log_rule_B("align_enum_equ_span");
- myspan = options::align_enum_equ_span();
- log_rule_B("align_enum_equ_thresh");
- mythresh = options::align_enum_equ_thresh();
- }
- else
- {
- log_rule_B("align_assign_span");
- myspan = options::align_assign_span();
- log_rule_B("align_assign_thresh");
- mythresh = options::align_assign_thresh();
- }
- pc = align_assign(pc->GetNext(), myspan, mythresh, &nl_count);
- continue;
- }
-
- // Done with this brace set?
- if ( ( pc->Is(CT_BRACE_CLOSE)
- || pc->Is(CT_VBRACE_CLOSE))
- && !(pc->GetParentType() == CT_BRACED_INIT_LIST))
- {
- pc = pc->GetNext();
- break;
- }
-
- if (pc->IsNewline())
- {
- nl_count = pc->GetNlCount();
- }
- else if ( pc->TestFlags(PCF_VAR_DEF)
- && !pc->TestFlags(PCF_IN_CONST_ARGS) // Issue #1717
- && !pc->TestFlags(PCF_IN_FCN_DEF) // Issue #1717
- && !pc->TestFlags(PCF_IN_FCN_CALL)) // Issue #1717
- {
- // produces much more log output. Use it only debugging purpose
- //LOG_FMT(LALASS, "%s(%d): log_pcf_flags pc->GetFlags():\n ", __func__, __LINE__);
- //log_pcf_flags(LALASS, pc->GetFlags());
- var_def_cnt++;
- }
- else if ( var_def_cnt > 1
- && !options::align_assign_on_multi_var_defs())
- {
- // we hit the second variable def and align was not requested - don't look for assigns, don't align
- LOG_FMT(LALASS, "%s(%d): multiple var defs found and alignment was not requested\n",
- __func__, __LINE__);
- vdas_pc = nullptr;
- }
- else if ( equ_count == 0 // indent only if first '=' in line
- && !pc->TestFlags(PCF_IN_TEMPLATE) // and it is not inside a template #999
- && ( pc->Is(CT_ASSIGN)
- || pc->Is(CT_ASSIGN_DEFAULT_ARG)
- || pc->Is(CT_ASSIGN_FUNC_PROTO)))
- {
- if (pc->Is(CT_ASSIGN)) // Issue #2236
- {
- equ_count++;
- }
- LOG_FMT(LALASS, "%s(%d): align_assign_decl_func() is %d\n",
- __func__, __LINE__, options::align_assign_decl_func());
- // produces much more log output. Use it only debugging purpose
- //LOG_FMT(LALASS, "%s(%d): log_pcf_flags pc->GetFlags(): ", __func__, __LINE__);
- //log_pcf_flags(LALASS, pc->GetFlags());
-
- log_rule_B("align_assign_decl_func");
-
- if ( options::align_assign_decl_func() == 0 // Align with other assignments (default)
- && ( pc->Is(CT_ASSIGN_DEFAULT_ARG) // Foo( int bar = 777 );
- || pc->Is(CT_ASSIGN_FUNC_PROTO))) // Foo( const Foo & ) = delete;
- {
- LOG_FMT(LALASS, "%s(%d): fcnDefault[%zu].Add on '%s' on orig line %zu, orig col is %zu\n",
- __func__, __LINE__, fcn_idx, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
-
- if (++fcn_idx == fcnDefault.size())
- {
- fcnDefault.emplace_back();
- fcnDefault.back().Start(span, thresh);
- fcnDefault.back().m_right_align = as.m_right_align;
- }
- fcnDefault[fcn_idx].Add(pc);
- }
- else if (options::align_assign_decl_func() == 1) // Align with each other
- {
- log_rule_B("align_assign_decl_func");
-
- if (pc->Is(CT_ASSIGN_DEFAULT_ARG)) // Foo( int bar = 777 );
- {
- LOG_FMT(LALASS, "%s(%d): default: fcnDefault[%zu].Add on '%s' on orig line %zu, orig col is %zu\n",
- __func__, __LINE__, fcn_idx, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
-
- if (++fcn_idx == fcnDefault.size())
- {
- fcnDefault.emplace_back();
- fcnDefault.back().Start(span, thresh);
- fcnDefault.back().m_right_align = as.m_right_align;
- }
- fcnDefault[fcn_idx].Add(pc);
- }
- else if (pc->Is(CT_ASSIGN_FUNC_PROTO)) // Foo( const Foo & ) = delete;
- {
- LOG_FMT(LALASS, "%s(%d): proto: fcnProto.Add on '%s' on orig line %zu, orig col is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- fcnProto.Add(pc);
- }
- else if (pc->Is(CT_ASSIGN)) // Issue #2197
- {
- vdas_pc = pc;
- }
- }
- else if ( options::align_assign_decl_func() == 2 // Don't align
- && ( pc->Is(CT_ASSIGN_DEFAULT_ARG) // Foo( int bar = 777 );
- || pc->Is(CT_ASSIGN_FUNC_PROTO))) // Foo( const Foo & ) = delete;
- {
- log_rule_B("align_assign_decl_func");
- LOG_FMT(LALASS, "%s(%d): Don't align\n", // Issue #2236
- __func__, __LINE__);
- }
- else if (var_def_cnt != 0)
- {
- vdas_pc = pc;
- }
- else
- {
- if (pc->Is(CT_ASSIGN))
- {
- LOG_FMT(LALASS, "%s(%d): as.Add on '%s' on orig line %zu, orig col is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- as.Add(pc);
- }
- }
- }
- pc = pc->GetNext();
- }
-
- if (vdas_pc != nullptr)
- {
- LOG_FMT(LALASS, "%s(%d): vdas.Add on '%s' on orig line %zu, orig col is %zu\n",
- __func__, __LINE__, vdas_pc->Text(), vdas_pc->GetOrigLine(), vdas_pc->GetOrigCol());
- vdas.Add(vdas_pc);
- vdas_pc = nullptr;
- }
- as.End();
- vdas.End();
-
- for (auto &fcn : fcnDefault)
- {
- fcn.End();
- }
-
- fcnProto.End();
-
- if (pc->IsNotNullChunk())
- {
- LOG_FMT(LALASS, "%s(%d): done on '%s' on orig line %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine());
- }
- else
- {
- LOG_FMT(LALASS, "%s(%d): done on NULL\n", __func__, __LINE__);
- }
- return(pc);
-} // align_assign
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_braced_init_list.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_braced_init_list.cpp
deleted file mode 100644
index 5322586b..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_braced_init_list.cpp
+++ /dev/null
@@ -1,168 +0,0 @@
-/**
- * @file align_braced_init_list.cpp
- *
- * @author Guy Maurel
- * @license GPL v2+
- */
-
-#include "align_braced_init_list.h"
-
-#include "align_stack.h"
-#include "log_rules.h"
-
-constexpr static auto LCURRENT = LALASS;
-
-using namespace uncrustify;
-
-
-Chunk *align_braced_init_list(Chunk *first, size_t span, size_t thresh, size_t *p_nl_count)
-{
- LOG_FUNC_ENTRY();
-
- if ( first == nullptr
- || first->IsNullChunk())
- {
- // coveralls will complain here. There are no example for that.
- // see https://en.wikipedia.org/wiki/Robustness_principle
- return(nullptr);
- }
- size_t my_level = first->GetLevel();
-
- char copy[1000];
-
- LOG_FMT(LALASS, "%s(%d): [my_level is %zu]: start checking with '%s', on orig line %zu, span is %zu, thresh is %zu\n",
- __func__, __LINE__, my_level, first->ElidedText(copy), first->GetOrigLine(), span, thresh);
-
- // If we are aligning on a tabstop, we shouldn't right-align
-
- AlignStack vdas; // variable def assigns
-
- vdas.Start(span, thresh);
- vdas.m_right_align = !options::align_on_tabstop();
-
- size_t var_def_cnt = 0;
- size_t equ_count = 0;
- size_t tmp;
- Chunk *pc = first;
-
- while ( pc != nullptr
- && pc->IsNotNullChunk())
- {
- LOG_FMT(LALASS, "%s(%d): orig line is %zu, check pc->Text() is '%s', type is %s, parent type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->ElidedText(copy), get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
-
- // Don't check inside SPAREN, PAREN or SQUARE groups
- if ( pc->Is(CT_SPAREN_OPEN)
- || pc->Is(CT_SQUARE_OPEN)
- || pc->Is(CT_PAREN_OPEN))
- {
- LOG_FMT(LALASS, "%s(%d)OK: Don't check inside SPAREN, PAREN or SQUARE groups, type is %s\n",
- __func__, __LINE__, get_token_name(pc->GetType()));
- tmp = pc->GetOrigLine();
- pc = pc->GetClosingParen();
-
- if (pc->IsNotNullChunk())
- {
- vdas.NewLines(pc->GetOrigLine() - tmp);
- }
- continue;
- }
-
- // Recurse if a brace set is found
- if ( pc->Is(CT_BRACE_OPEN)
- && !(pc->GetParentType() == CT_BRACED_INIT_LIST))
- {
- size_t myspan;
- size_t mythresh;
-
- size_t sub_nl_count = 0;
-
- log_rule_B("align_braced_init_list_span");
- myspan = options::align_braced_init_list_span();
- log_rule_B("align_braced_init_list_thresh");
- mythresh = options::align_braced_init_list_thresh();
- pc = align_braced_init_list(pc->GetNextNcNnl(), myspan, mythresh, &sub_nl_count);
-
- if (sub_nl_count > 0)
- {
- vdas.NewLines(sub_nl_count);
-
- if (p_nl_count != nullptr)
- {
- *p_nl_count += sub_nl_count;
- }
- }
- continue;
- }
-
- // Done with this brace set?
- if ( ( pc->Is(CT_BRACE_CLOSE)
- || pc->Is(CT_VBRACE_CLOSE))
- && !(pc->GetParentType() == CT_BRACED_INIT_LIST))
- {
- pc = pc->GetNext();
- break;
- }
-
- if (pc->IsNewline())
- {
- vdas.NewLines(pc->GetNlCount());
-
- if (p_nl_count != nullptr)
- {
- *p_nl_count += pc->GetNlCount();
- }
- var_def_cnt = 0;
- equ_count = 0;
- }
- else if ( pc->TestFlags(PCF_VAR_DEF)
- && !pc->TestFlags(PCF_IN_CONST_ARGS) // Issue #1717
- && !pc->TestFlags(PCF_IN_FCN_DEF) // Issue #1717
- && !pc->TestFlags(PCF_IN_FCN_CALL)) // Issue #1717
- {
- // produces much more log output. Use it only debugging purpose
- //LOG_FMT(LALASS, "%s(%d): log_pcf_flags pc->GetFlags():\n ", __func__, __LINE__);
- //log_pcf_flags(LALASS, pc->GetFlags());
- var_def_cnt++;
- }
- else if (var_def_cnt > 1)
- {
- // we hit the second variable def - don't look, don't align
- vdas.Reset();
- }
- else if ( equ_count == 0
- && !pc->TestFlags(PCF_IN_TEMPLATE)
- && pc->Is(CT_BRACE_OPEN)
- && (pc->GetParentType() == CT_BRACED_INIT_LIST))
-
- {
- equ_count++;
- LOG_FMT(LALASS, "%s(%d)OK: align_braced_init_list_span() is %d\n",
- __func__, __LINE__, options::align_braced_init_list_span());
- // produces much more log output. Use it only debugging purpose
- //LOG_FMT(LALASS, "%s(%d): log_pcf_flags pc->GetFlags(): ", __func__, __LINE__);
- //log_pcf_flags(LALASS, pc->GetFlags());
-
- if (var_def_cnt != 0)
- {
- LOG_FMT(LALASS, "%s(%d)OK: vdas.Add on '%s' on orig line %zu, orig col is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- vdas.Add(pc);
- }
- }
- pc = pc->GetNext();
- }
- vdas.End();
-
- if ( pc != nullptr
- && pc->IsNotNullChunk())
- {
- LOG_FMT(LALASS, "%s(%d): done on '%s' on orig line %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine());
- }
- else
- {
- LOG_FMT(LALASS, "%s(%d): done on NULL\n", __func__, __LINE__);
- }
- return(pc);
-} // align_braced_init_list
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_func_proto.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_func_proto.cpp
deleted file mode 100644
index f56cb254..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_func_proto.cpp
+++ /dev/null
@@ -1,227 +0,0 @@
-/**
- * @file align_func_proto.cpp
- *
- * @author Guy Maurel
- * split from align.cpp
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "align_func_proto.h"
-
-#include "align_stack.h"
-#include "align_tools.h"
-#include "log_rules.h"
-
-#include <algorithm> // to get max
-
-constexpr static auto LCURRENT = LALPROTO;
-
-using namespace uncrustify;
-
-
-void align_func_proto(size_t span)
-{
- LOG_FUNC_ENTRY();
-
- size_t myspan = span;
- size_t mythresh = 0;
-
- log_rule_B("align_func_proto_gap");
- size_t mygap = options::align_func_proto_gap();
-
- log_rule_B("align_func_proto_thresh");
- mythresh = options::align_func_proto_thresh();
-
- // Issue #2771
- // we align token-1 and token-2 if:
- // token-1->GetLevel() == token-2->GetLevel()
- // and
- // token-1->GetBraceLevel() == token-2->GetBraceLevel()
- // we don't check if token-1 and token-2 are in the same block
-
- log_rule_B("align_func_proto_star_style");
- size_t mystar_style = options::align_func_proto_star_style();
-
- log_rule_B("align_func_proto_amp_style");
- size_t myamp_style = options::align_func_proto_amp_style();
-
-
- size_t num_of_column = 1;
- size_t num_of_row = 1;
- AlignStack *stack_init_value = nullptr;
-
-
- // Issue #2984
- vector<vector<AlignStack *> > many_as;
- // Issue #2771
- vector<vector<AlignStack *> > many_as_brace;
-
- // init the vector ...
- many_as.resize(num_of_column, vector<AlignStack *>(num_of_row, stack_init_value));
- many_as_brace.resize(num_of_column, vector<AlignStack *>(num_of_row, stack_init_value));
-
- log_rule_B("align_single_line_brace_gap");
- size_t mybr_gap = options::align_single_line_brace_gap();
-
-
- bool look_bro = false;
- Chunk *toadd;
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- char copy[1000];
- LOG_FMT(LAS, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s', type is %s, level is %zu, brace level is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy),
- get_token_name(pc->GetType()), pc->GetLevel(), pc->GetBraceLevel());
-
- // make the vector larger if necessary
- if ( pc->GetLevel() >= num_of_column // Issue #2960
- || pc->GetBraceLevel() >= num_of_row)
- {
- num_of_column = pc->GetLevel() + 1;
- num_of_row = pc->GetBraceLevel() + 1;
-
- many_as.resize(num_of_column);
- many_as_brace.resize(num_of_column);
-
- for (size_t i = 0; i < num_of_column; ++i)
- {
- many_as[i].resize(num_of_row);
- many_as_brace[i].resize(num_of_row);
- }
- }
-
- if ( pc->IsNewline()
- && !pc->TestFlags(PCF_IN_FCN_CALL)) // Issue #2831
- {
- look_bro = false;
- AlignStack *stack_at_l_bl = many_as.at(pc->GetLevel()).at(pc->GetBraceLevel());
-
- if (stack_at_l_bl == nullptr)
- {
- // get a Stack
- stack_at_l_bl = new AlignStack();
- // start it
- stack_at_l_bl->Start(myspan, mythresh);
- stack_at_l_bl->m_gap = mygap;
- stack_at_l_bl->m_star_style = static_cast<AlignStack::StarStyle>(mystar_style);
- stack_at_l_bl->m_amp_style = static_cast<AlignStack::StarStyle>(myamp_style);
- // store
- many_as.at(pc->GetLevel()).at(pc->GetBraceLevel()) = stack_at_l_bl;
- }
- stack_at_l_bl->Debug();
-
- for (size_t idx = 0; idx < num_of_column; idx++)
- {
- for (size_t idx_brace = 0; idx_brace < num_of_row; idx_brace++)
- {
- stack_at_l_bl = many_as.at(idx).at(idx_brace);
-
- if (stack_at_l_bl != nullptr)
- {
- stack_at_l_bl->NewLines(pc->GetNlCount());
- }
- }
- }
-
- AlignStack *stack_at_l_bl_brace = many_as_brace.at(pc->GetLevel()).at(pc->GetBraceLevel());
-
- if (stack_at_l_bl_brace == nullptr)
- {
- // get a Stack
- stack_at_l_bl_brace = new AlignStack();
- // start it
- stack_at_l_bl_brace->Start(myspan, mythresh);
- stack_at_l_bl_brace->m_gap = mybr_gap;
- // store
- many_as_brace.at(pc->GetLevel()).at(pc->GetBraceLevel()) = stack_at_l_bl_brace;
- }
- stack_at_l_bl_brace->Debug();
- stack_at_l_bl_brace->NewLines(pc->GetNlCount());
- }
- else if ( pc->Is(CT_FUNC_PROTO)
- || ( pc->Is(CT_FUNC_DEF)
- && options::align_single_line_func()))
- {
- log_rule_B("align_single_line_func");
- log_rule_B("align_on_operator");
-
- if ( pc->GetParentType() == CT_OPERATOR
- && options::align_on_operator())
- {
- toadd = pc->GetPrevNcNnl();
- }
- else
- {
- toadd = pc;
- }
- Chunk *tmp = step_back_over_member(toadd);
- LOG_FMT(LAS, "%s(%d): tmp->Text() is '%s', orig line is %zu, orig col is %zu, level is %zu, brace level is %zu\n",
- __func__, __LINE__, tmp->Text(), tmp->GetOrigLine(), tmp->GetOrigCol(),
- tmp->GetLevel(), tmp->GetBraceLevel());
- // test the Stack
- AlignStack *stack_at_l_bl = many_as.at(pc->GetLevel()).at(pc->GetBraceLevel());
-
- if (stack_at_l_bl == nullptr)
- {
- // get a Stack
- stack_at_l_bl = new AlignStack();
- // start it
- stack_at_l_bl->Start(myspan, mythresh);
- stack_at_l_bl->m_gap = mygap;
- stack_at_l_bl->m_star_style = static_cast<AlignStack::StarStyle>(mystar_style);
- stack_at_l_bl->m_amp_style = static_cast<AlignStack::StarStyle>(myamp_style);
- // store
- many_as.at(pc->GetLevel()).at(pc->GetBraceLevel()) = stack_at_l_bl;
- }
- stack_at_l_bl->Add(tmp);
- log_rule_B("align_single_line_brace");
- look_bro = (pc->Is(CT_FUNC_DEF))
- && options::align_single_line_brace();
- }
- else if ( look_bro
- && pc->Is(CT_BRACE_OPEN)
- && pc->TestFlags(PCF_ONE_LINER))
- {
- AlignStack *stack_at_l_bl_brace = many_as_brace.at(pc->GetLevel()).at(pc->GetBraceLevel());
-
- if (stack_at_l_bl_brace == nullptr)
- {
- stack_at_l_bl_brace = new AlignStack();
- stack_at_l_bl_brace->Start(myspan, mythresh);
- stack_at_l_bl_brace->m_gap = mybr_gap;
- many_as_brace.at(pc->GetLevel()).at(pc->GetBraceLevel()) = stack_at_l_bl_brace;
- }
- stack_at_l_bl_brace->Debug();
- stack_at_l_bl_brace->Add(pc);
- look_bro = false;
- }
- }
-
- LOG_FMT(LAS, "%s(%d): as\n", __func__, __LINE__);
-
- // purge
- for (size_t idx = 0; idx < num_of_column; idx++)
- {
- for (size_t idx_brace = 0; idx_brace < num_of_row; idx_brace++)
- {
- AlignStack *stack_at_l_bl = many_as.at(idx).at(idx_brace);
-
- if (stack_at_l_bl != nullptr)
- {
- stack_at_l_bl->End();
- delete stack_at_l_bl;
- stack_at_l_bl = nullptr;
- }
- AlignStack *stack_at_l_bl_brace = many_as_brace.at(idx).at(idx_brace);
-
- if (stack_at_l_bl_brace != nullptr)
- {
- stack_at_l_bl_brace->End();
- delete stack_at_l_bl_brace;
- stack_at_l_bl_brace = nullptr;
- }
- }
- }
-} // align_func_proto
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_init_brace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_init_brace.cpp
deleted file mode 100644
index 02d60f17..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_init_brace.cpp
+++ /dev/null
@@ -1,206 +0,0 @@
-/**
- * @file align_init_brace.cpp
- *
- * @author Guy Maurel
- * split from align.cpp
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "align_init_brace.h"
-
-#include "align_log_al.h"
-#include "align_tab_column.h"
-#include "align_tools.h"
-#include "indent.h"
-#include "log_rules.h"
-
-constexpr static auto LCURRENT = LALBR;
-
-using namespace uncrustify;
-
-
-void align_init_brace(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *num_token = nullptr;
-
- cpd.al_cnt = 0;
- cpd.al_c99_array = false;
-
- LOG_FMT(LALBR, "%s(%d): start @ orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol());
-
- Chunk *pc = start->GetNextNcNnl();
- Chunk *pcSingle = scan_ib_line(pc);
-
- if ( pcSingle == nullptr
- || ( pcSingle->Is(CT_BRACE_CLOSE)
- && pcSingle->GetParentType() == CT_ASSIGN))
- {
- // single line - nothing to do
- LOG_FMT(LALBR, "%s(%d): single line - nothing to do\n", __func__, __LINE__);
- return;
- }
- LOG_FMT(LALBR, "%s(%d): is not a single line\n", __func__, __LINE__);
-
- do
- {
- pc = scan_ib_line(pc);
-
- // debug dump the current frame
- LOG_FMT(LALBR, "%s(%d): debug dump after, orig line is %zu\n",
- __func__, __LINE__, pc->GetOrigLine());
- align_log_al(LALBR, pc->GetOrigLine());
-
- while (pc->IsNewline())
- {
- pc = pc->GetNext();
- }
- } while ( pc != nullptr
- && pc->IsNotNullChunk()
- && pc->GetLevel() > start->GetLevel());
-
- // debug dump the current frame
- align_log_al(LALBR, start->GetOrigLine());
-
- log_rule_B("align_on_tabstop");
-
- if ( options::align_on_tabstop()
- && cpd.al_cnt >= 1
- && (cpd.al[0].type == CT_ASSIGN))
- {
- cpd.al[0].col = align_tab_column(cpd.al[0].col);
- }
- pc = start->GetNext();
- size_t idx = 0;
-
- do
- {
- Chunk *tmp;
-
- if ( idx == 0
- && ((tmp = skip_c99_array(pc)) != nullptr))
- {
- pc = tmp;
-
- LOG_FMT(LALBR, " -%zu- skipped '[] =' to %s\n",
- pc->GetOrigLine(), get_token_name(pc->GetType()));
- continue;
- }
- Chunk *next = pc;
-
- if (idx < cpd.al_cnt)
- {
- LOG_FMT(LALBR, "%s(%d): (%zu) check %s vs %s -- ??\n",
- __func__, __LINE__, idx, get_token_name(pc->GetType()), get_token_name(cpd.al[idx].type));
-
- if (pc->Is(cpd.al[idx].type))
- {
- if ( idx == 0
- && cpd.al_c99_array)
- {
- Chunk *prev = pc->GetPrev();
-
- if (prev->IsNewline())
- {
- pc->SetFlagBits(PCF_DONT_INDENT);
- }
- }
- LOG_FMT(LALBR, "%s(%d): cpd.al[%zu].col is %zu\n",
- __func__, __LINE__, idx, cpd.al[idx].col);
- LOG_FMT(LALBR, "%s(%d): (idx is %zu) check %s vs %s -- [%s] to col %zu\n",
- __func__, __LINE__,
- idx, get_token_name(pc->GetType()), get_token_name(cpd.al[idx].type), pc->Text(), cpd.al[idx].col);
-
- if (num_token != nullptr)
- {
- int col_diff = pc->GetColumn() - num_token->GetColumn();
-
- reindent_line(num_token, cpd.al[idx].col - col_diff);
- //LOG_FMT(LSYS, "-= %zu =- NUM indent [%s] col=%d diff=%d\n",
- // num_token->GetOrigLine(),
- // num_token->Text(), cpd.al[idx - 1].col, col_diff);
-
- num_token->SetFlagBits(PCF_WAS_ALIGNED);
- num_token = nullptr;
- }
-
- // Comma's need to 'fall back' to the previous token
- if (pc->Is(CT_COMMA))
- {
- next = pc->GetNext();
-
- if (!next->IsNewline())
- {
- //LOG_FMT(LSYS, "-= %zu =- indent [%s] col=%d len=%d\n",
- // next->GetOrigLine(),
- // next->Text(), cpd.al[idx].col, cpd.al[idx].len);
-
- log_rule_B("align_number_right");
-
- if ( (idx < (cpd.al_cnt - 1))
- && options::align_number_right()
- && ( next->Is(CT_NUMBER_FP)
- || next->Is(CT_NUMBER)
- || next->Is(CT_POS)
- || next->Is(CT_NEG)))
- {
- // Need to wait until the next match to indent numbers
- num_token = next;
- }
- else if (idx < (cpd.al_cnt - 1))
- {
- LOG_FMT(LALBR, "%s(%d): idx is %zu, al_cnt is %zu, cpd.al[%zu].col is %zu, cpd.al[%zu].len is %zu\n",
- __func__, __LINE__, idx, cpd.al_cnt, idx, cpd.al[idx].col, idx, cpd.al[idx].len);
- reindent_line(next, cpd.al[idx].col + cpd.al[idx].len);
- next->SetFlagBits(PCF_WAS_ALIGNED);
- }
- }
- }
- else
- {
- // first item on the line
- LOG_FMT(LALBR, "%s(%d): idx is %zu, cpd.al[%zu].col is %zu\n",
- __func__, __LINE__, idx, idx, cpd.al[idx].col);
- reindent_line(pc, cpd.al[idx].col);
- pc->SetFlagBits(PCF_WAS_ALIGNED);
-
- // see if we need to right-align a number
- log_rule_B("align_number_right");
-
- if ( (idx < (cpd.al_cnt - 1))
- && options::align_number_right())
- {
- next = pc->GetNext();
-
- if ( !next->IsNewline()
- && ( next->Is(CT_NUMBER_FP)
- || next->Is(CT_NUMBER)
- || next->Is(CT_POS)
- || next->Is(CT_NEG)))
- {
- // Need to wait until the next match to indent numbers
- num_token = next;
- }
- }
- }
- idx++;
- }
- else
- {
- LOG_FMT(LALBR, "%s(%d): (%zu) check %s vs %s -- no match\n",
- __func__, __LINE__, idx, get_token_name(pc->GetType()), get_token_name(cpd.al[idx].type));
- }
- }
-
- if ( pc->IsNewline()
- || next->IsNewline())
- {
- idx = 0;
- }
- pc = pc->GetNext();
- } while ( pc->IsNotNullChunk()
- && pc->GetLevel() > start->GetLevel());
-} // align_init_brace
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_nl_cont.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_nl_cont.cpp
deleted file mode 100644
index 8ff71508..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_nl_cont.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * @file align_nl_cont.cpp
- *
- * @author Guy Maurel
- * split from align.cpp
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "align_nl_cont.h"
-
-#include "align_add.h"
-#include "uncrustify.h"
-
-
-Chunk *align_nl_cont(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LALNLC, "%s(%d): start on [%s] on line %zu\n",
- __func__, __LINE__, get_token_name(start->GetType()), start->GetOrigLine());
-
- // Find the max column
- ChunkStack cs;
- size_t max_col = 0;
- Chunk *pc = start;
-
- while ( pc->IsNotNullChunk()
- && pc->IsNot(CT_NEWLINE)
- && pc->IsNot(CT_COMMENT_MULTI))
- {
- if (pc->Is(CT_NL_CONT))
- {
- align_add(cs, pc, max_col);
- }
- pc = pc->GetNext();
- }
- // NL_CONT is always the last thing on a line
- Chunk *tmp;
-
- while ((tmp = cs.Pop_Back()) != nullptr)
- {
- tmp->SetFlagBits(PCF_WAS_ALIGNED);
- tmp->SetColumn(max_col);
- }
- return(pc);
-} // align_nl_cont
-
-
-void align_backslash_newline()
-{
- LOG_FUNC_ENTRY();
- Chunk *pc = Chunk::GetHead();
-
- while (pc->IsNotNullChunk())
- {
- if (pc->IsNot(CT_NL_CONT))
- {
- pc = pc->GetNextType(CT_NL_CONT);
- continue;
- }
- pc = align_nl_cont(pc);
- }
-} // align_backslash_newline
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_nl_cont.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_nl_cont.h
deleted file mode 100644
index 05a046ec..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_nl_cont.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * @file align_nl_cont.h
- *
- * @author Guy Maurel
- * split from align.cpp
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef ALIGN_NL_COUNT_H_INCLUDED
-#define ALIGN_NL_COUNT_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-#include "chunk.h"
-
-/**
- * For a series of lines ending in backslash-newline, align them.
- * The series ends when a newline or multi-line C comment is encountered.
- *
- * @param start Start point
- *
- * @return pointer the last item looked at (nullptr/newline/comment)
- */
-Chunk *align_nl_cont(Chunk *start);
-
-/**
- * Aligns all backslash-newline combos in the file.
- * This should be done LAST.
- */
-void align_backslash_newline();
-
-#endif /* ALIGN_NL_COUNT_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_msg_colons.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_msg_colons.cpp
deleted file mode 100644
index ffb6a4eb..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_msg_colons.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-/**
- * @file align_oc_msg_colons.cpp
- *
- * @author Guy Maurel
- * @license GPL v2+
- */
-
-#include "align_oc_msg_colons.h"
-
-#include "align_stack.h"
-#include "log_rules.h"
-
-constexpr static auto LCURRENT = LOCMSG;
-
-using namespace uncrustify;
-
-
-void align_oc_msg_colon(Chunk *so)
-{
- LOG_FUNC_ENTRY();
-
- AlignStack nas; // for the parameter tag
-
- nas.Start(1);
- nas.Reset();
- log_rule_B("align_on_tabstop");
- nas.m_right_align = !options::align_on_tabstop();
-
- AlignStack cas; // for the colons
-
- log_rule_B("align_oc_msg_colon_span");
- size_t span = options::align_oc_msg_colon_span();
-
- cas.Start(span);
-
- size_t level = so->GetLevel();
- Chunk *pc = so->GetNextNcNnl(E_Scope::PREPROC);
-
- bool did_line = false;
- bool has_colon = false;
- size_t lcnt = 0; // line count with no colon for span
- bool first_line = true;
-
- while ( pc->IsNotNullChunk()
- && pc->GetLevel() > level)
- {
- if (pc->GetLevel() > (level + 1))
- {
- // do nothing
- }
- else if (pc->IsNewline())
- {
- if (!has_colon)
- {
- ++lcnt;
- }
- did_line = false;
-
- log_rule_B("align_oc_msg_colon_xcode_like");
-
- if ( options::align_oc_msg_colon_xcode_like()
- && first_line
- && !has_colon)
- {
- span = 0;
- }
- has_colon = !has_colon;
- first_line = false;
- }
- else if ( !did_line
- && (lcnt < span + 1)
- && pc->Is(CT_OC_COLON))
- {
- has_colon = true;
- cas.Add(pc);
- Chunk *tmp = pc->GetPrev();
-
- if ( tmp->IsNotNullChunk()
- && ( tmp->Is(CT_OC_MSG_FUNC)
- || tmp->Is(CT_OC_MSG_NAME)))
- {
- nas.Add(tmp);
- tmp->SetFlagBits(PCF_DONT_INDENT);
- }
- did_line = true;
- }
- pc = pc->GetNext(E_Scope::PREPROC);
- }
- log_rule_B("align_oc_msg_colon_first");
- nas.m_skip_first = !options::align_oc_msg_colon_first();
- cas.m_skip_first = !options::align_oc_msg_colon_first();
-
- // find the longest args that isn't the first one
- size_t first_len = 0;
- size_t mlen = 0;
- Chunk *longest = nullptr;
-
- size_t len = nas.m_aligned.Len();
-
- for (size_t idx = 0; idx < len; idx++)
- {
- Chunk *tmp = nas.m_aligned.GetChunk(idx);
-
- if (tmp != nullptr)
- {
- size_t tlen = tmp->GetStr().size();
-
- if (tlen > mlen)
- {
- mlen = tlen;
-
- if (idx != 0)
- {
- longest = tmp;
- }
- }
-
- if (idx == 0)
- {
- first_len = tlen + 1;
- }
- }
- }
-
- // add spaces before the longest arg
- log_rule_B("indent_oc_msg_colon");
- len = options::indent_oc_msg_colon();
- size_t len_diff = mlen - first_len;
-
- log_rule_B("indent_columns");
- size_t indent_size = options::indent_columns();
-
- // Align with first colon if possible by removing spaces
- log_rule_B("indent_oc_msg_prioritize_first_colon");
-
- if ( longest != nullptr
- && options::indent_oc_msg_prioritize_first_colon()
- && len_diff > 0
- && ( (longest->GetColumn() >= len_diff)
- && (longest->GetColumn() - len_diff) > (longest->GetBraceLevel() * indent_size)))
- {
- longest->SetColumn(longest->GetColumn() - len_diff);
- }
- else if ( longest != nullptr
- && len > 0)
- {
- Chunk chunk;
-
- chunk.SetType(CT_SPACE);
- chunk.SetParentType(CT_NONE);
- chunk.SetOrigLine(longest->GetOrigLine());
- chunk.SetOrigCol(longest->GetOrigCol());
- chunk.SetLevel(longest->GetLevel());
- chunk.SetBraceLevel(longest->GetBraceLevel());
- chunk.SetFlags(longest->GetFlags() & PCF_COPY_FLAGS);
-
- // start at one since we already indent for the '['
- for (size_t idx = 1; idx < len; idx++)
- {
- chunk.Str().append(' ');
- }
-
- chunk.CopyAndAddBefore(longest);
- }
- nas.End();
- cas.End();
-} // align_oc_msg_colon
-
-
-void align_oc_msg_colons()
-{
- LOG_FUNC_ENTRY();
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if ( pc->Is(CT_SQUARE_OPEN)
- && pc->GetParentType() == CT_OC_MSG)
- {
- align_oc_msg_colon(pc);
- }
- }
-} // align_oc_msg_colons
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_same_func_call_params.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_same_func_call_params.cpp
deleted file mode 100644
index 6b17ab90..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_same_func_call_params.cpp
+++ /dev/null
@@ -1,283 +0,0 @@
-/**
- * @file align_same_func_call_params.cpp
- *
- * @author Guy Maurel
- * split from align.cpp
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "align_same_func_call_params.h"
-
-#include "align_stack.h"
-#include "log_rules.h"
-
-constexpr static auto LCURRENT = LASFCP;
-
-using namespace uncrustify;
-
-
-void align_same_func_call_params()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc;
- Chunk *align_root = Chunk::NullChunkPtr;
- Chunk *align_cur = Chunk::NullChunkPtr;
- size_t align_len = 0;
- size_t span = 3;
- size_t thresh;
- Chunk *align_fcn;
- unc_text align_fcn_name;
- unc_text align_root_name;
- deque<Chunk *> chunks;
- deque<AlignStack> array_of_AlignStack;
- AlignStack fcn_as;
- const char *add_str;
-
- // Default span is 3 if align_same_func_call_params is true
- log_rule_B("align_same_func_call_params_span");
-
- if (options::align_same_func_call_params_span() > 0)
- {
- span = options::align_same_func_call_params_span();
- }
- log_rule_B("align_same_func_call_params_thresh");
- thresh = options::align_same_func_call_params_thresh();
-
- fcn_as.Start(span, thresh);
- LOG_FMT(LAS, "%s(%d): (3): span is %zu, thresh is %zu\n",
- __func__, __LINE__, span, thresh);
-
- for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if (pc->IsNewline())
- {
- LOG_FMT(LAS, "%s(%d): orig line is %zu, <Newline>\n", __func__, __LINE__, pc->GetOrigLine());
- }
- else
- {
- LOG_FMT(LAS, "%s(%d): orig line is %zu, orig col is %zu, pc->Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- }
-
- if (pc->IsNot(CT_FUNC_CALL))
- {
- if (pc->IsNewline())
- {
- for (auto &as_v : array_of_AlignStack)
- {
- as_v.NewLines(pc->GetNlCount());
- }
-
- fcn_as.NewLines(pc->GetNlCount());
- }
- else
- {
- // if we drop below the brace level that started it, we are done
- if ( align_root->IsNotNullChunk()
- && align_root->GetBraceLevel() > pc->GetBraceLevel())
- {
- LOG_FMT(LASFCP, " ++ (drop) Ended with %zu fcns\n", align_len);
-
- // Flush it all!
- fcn_as.Flush();
-
- for (auto &as_v : array_of_AlignStack)
- {
- as_v.Flush();
- }
-
- align_root = Chunk::NullChunkPtr;
- }
- }
- continue;
- }
- // Only align function calls that are right after a newline
- Chunk *prev = pc->GetPrev();
-
- while ( prev->Is(CT_MEMBER)
- || prev->Is(CT_DC_MEMBER))
- {
- Chunk *tprev = prev->GetPrev();
-
- if (tprev->IsNot(CT_TYPE))
- {
- prev = tprev;
- break;
- }
- prev = tprev->GetPrev();
- }
-
- if (!prev->IsNewline())
- {
- continue;
- }
- prev = prev->GetNext();
- align_fcn = prev;
- align_fcn_name.clear();
- LOG_FMT(LASFCP, "%s(%d):\n", __func__, __LINE__);
-
- while (prev != pc)
- {
- align_fcn_name += prev->GetStr();
- prev = prev->GetNext();
- }
- align_fcn_name += pc->GetStr();
- LOG_FMT(LASFCP, "%s(%d): Func Call found at orig line is %zu, orig col is %zu, c_str() '%s'\n",
- __func__, __LINE__, align_fcn->GetOrigLine(),
- align_fcn->GetOrigCol(),
- align_fcn_name.c_str());
-
- add_str = nullptr;
-
- if (align_root->IsNotNullChunk())
- {
- // Issue # 1395
- // can only align functions on the same brace level
- // and on the same level
- LOG_FMT(LASFCP, "%s(%d):align_root is not nullptr\n", __func__, __LINE__);
-
- if ( align_root->GetBraceLevel() == pc->GetBraceLevel()
- && align_root->GetLevel() == pc->GetLevel()
- && align_fcn_name.equals(align_root_name))
- {
- fcn_as.Add(pc);
- align_cur->AlignmentData().next = pc;
- align_cur = pc;
- align_len++;
- add_str = " Add";
- }
- else
- {
- LOG_FMT(LASFCP, " ++ Ended with %zu fcns\n", align_len);
-
- // Flush it all!
- fcn_as.Flush();
-
- for (auto &as_v : array_of_AlignStack)
- {
- as_v.Flush();
- }
-
- align_root = Chunk::NullChunkPtr;
- }
- }
- LOG_FMT(LASFCP, "%s(%d):\n", __func__, __LINE__);
-
- if (align_root->IsNullChunk())
- {
- LOG_FMT(LASFCP, "%s(%d):align_root is null chunk, Add pc '%s'\n", __func__, __LINE__, pc->Text());
- fcn_as.Add(pc);
- align_root = align_fcn;
- align_root_name = align_fcn_name;
- align_cur = pc;
- align_len = 1;
- add_str = "Start";
- }
- LOG_FMT(LASFCP, "%s(%d):\n", __func__, __LINE__);
-
- if (add_str != nullptr)
- {
- LOG_FMT(LASFCP, "%s(%d): %s with function '%s', on orig line %zu, ",
- __func__, __LINE__, add_str, align_fcn_name.c_str(), pc->GetOrigLine());
- align_params(pc, chunks);
- LOG_FMT(LASFCP, "%zu items:", chunks.size());
-
- for (size_t idx = 0; idx < chunks.size(); idx++)
- {
- // show the chunk(s)
- LOG_FMT(LASFCP, " [%s]", chunks[idx]->Text());
-
- if (idx < chunks.size() - 1)
- {
- LOG_FMT(LASFCP, ",");
- }
- }
-
- LOG_FMT(LASFCP, "\n");
-
- for (size_t idx = 0; idx < chunks.size(); idx++)
- {
- LOG_FMT(LASFCP, "%s(%d): chunks[%zu] is [%s]\n", __func__, __LINE__, idx, chunks[idx]->Text());
- // Issue #2368
-
- if (array_of_AlignStack.size() > idx)
- {
- // Issue #2368
- array_of_AlignStack[idx].m_right_align = false;
- }
-
- if (idx >= array_of_AlignStack.size())
- {
- LOG_FMT(LASFCP, "%s(%d): resize with %zu\n", __func__, __LINE__, idx + 1);
- array_of_AlignStack.resize(idx + 1);
- LOG_FMT(LASFCP, "%s(%d): Start for the new\n", __func__, __LINE__);
- array_of_AlignStack[idx].Start(span, thresh);
-
- log_rule_B("align_number_right");
-
- if (!options::align_number_right())
- {
- if ( chunks[idx]->Is(CT_NUMBER_FP)
- || chunks[idx]->Is(CT_NUMBER)
- || chunks[idx]->Is(CT_POS)
- || chunks[idx]->Is(CT_NEG))
- {
- log_rule_B("align_on_tabstop");
- array_of_AlignStack[idx].m_right_align = !options::align_on_tabstop();
- }
- }
- }
- LOG_FMT(LASFCP, "%s(%d): save the chunk %s\n", __func__, __LINE__, chunks[idx]->Text());
- array_of_AlignStack[idx].Add(chunks[idx]);
- }
- }
- }
-
- if (align_len > 1)
- {
- LOG_FMT(LASFCP, " ++ Ended with %zu fcns\n", align_len);
- fcn_as.End();
-
- for (auto &as_v : array_of_AlignStack)
- {
- as_v.End();
- }
- }
-} // align_same_func_call_params
-
-
-void align_params(Chunk *start, deque<Chunk *> &chunks)
-{
- LOG_FUNC_ENTRY();
-
- chunks.clear();
-
- bool hit_comma = true;
- Chunk *pc = start->GetNextType(CT_FPAREN_OPEN, start->GetLevel());
-
- while ((pc = pc->GetNext())->IsNotNullChunk())
- {
- if ( pc->IsNewline()
- || pc->Is(CT_SEMICOLON)
- || ( pc->Is(CT_FPAREN_CLOSE)
- && pc->GetLevel() == start->GetLevel()))
- {
- break;
- }
-
- if (pc->GetLevel() == (start->GetLevel() + 1))
- {
- if (hit_comma)
- {
- chunks.push_back(pc);
- hit_comma = false;
- }
- else if (pc->Is(CT_COMMA))
- {
- hit_comma = true;
- }
- }
- }
-} // void align_params
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_same_func_call_params.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_same_func_call_params.h
deleted file mode 100644
index 648d7174..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_same_func_call_params.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * @file align_same_func_call_params.h
- *
- * @author Guy Maurel
- * split from align.cpp
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef ALIGN_SAME_FUNC_CALL_PARAMS_H_INCLUDED
-#define ALIGN_SAME_FUNC_CALL_PARAMS_H_INCLUDED
-
-#include "ChunkStack.h"
-#include <deque>
-
-using namespace std;
-
-void align_params(Chunk *start, deque<Chunk *> &chunks);
-
-void align_same_func_call_params();
-
-#endif /* ALIGN_SAME_FUNC_CALL_PARAMS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_stack.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_stack.cpp
deleted file mode 100644
index 4ed5da0a..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_stack.cpp
+++ /dev/null
@@ -1,661 +0,0 @@
-/**
- * @file align_stack.cpp
- * Manages an align stack, which is just a pair of chunk stacks.
- * There can be at most 1 item per line in the stack.
- * The seqnum is actually a line counter.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "align_stack.h"
-
-#include "align_tab_column.h"
-#include "indent.h"
-#include "space.h"
-#include "unc_tools.h" // to get stackID and get_A_Number()
-
-
-constexpr static auto LCURRENT = LAS;
-
-using namespace uncrustify;
-
-using std::numeric_limits;
-
-
-void AlignStack::Start(size_t span, int thresh)
-{
- stackID = get_A_Number(); // for debugging purpose only
-
- // produces much more log output. Use it only debugging purpose
- //WITH_STACKID_DEBUG;
-
- //LOG_FMT(LAS, "AlignStack::Start(%d):m_aligned.Reset()\n", __LINE__);
- m_aligned.Reset();
- //LOG_FMT(LAS, "AlignStack::Start(%d):m_skipped.Reset()\n", __LINE__);
- m_skipped.Reset();
-
- if (thresh > 0)
- {
- m_absolute_thresh = false;
- m_thresh = thresh;
- }
- else
- {
- m_absolute_thresh = true;
- m_thresh = -thresh;
- }
- m_span = span;
- m_min_col = numeric_limits<size_t>::max();
- m_max_col = 0;
- m_nl_seqnum = 0;
- m_seqnum = 0;
- m_gap = 0;
- m_right_align = false;
- m_star_style = SS_IGNORE;
- m_amp_style = SS_IGNORE;
-}
-
-
-void AlignStack::ReAddSkipped()
-{
- // produces much more log output. Use it only debugging purpose
- //WITH_STACKID_DEBUG;
-
- if (m_skipped.Empty())
- {
- return;
- }
- // Make a copy of the ChunkStack and clear m_skipped
- m_scratch.Set(m_skipped);
- //LOG_FMT(LAS, "AlignStack::ReAddSkipped(%d):m_skipped.Reset()\n", __LINE__);
- m_skipped.Reset();
-
- // Need to add them in order so that m_nl_seqnum is correct
- for (size_t idx = 0; idx < m_scratch.Len(); idx++)
- {
- const ChunkStack::Entry *ce = m_scratch.Get(idx);
- LOG_FMT(LAS, "AlignStack::ReAddSkipped [%zu] - ", ce->m_seqnum);
- Add(ce->m_pc, ce->m_seqnum);
- }
-
- NewLines(0); // Check to see if we need to flush right away
-}
-
-
-void AlignStack::Add(Chunk *start, size_t seqnum)
-{
- // produces much more log output. Use it only debugging purpose
- //WITH_STACKID_DEBUG;
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LAS, "AlignStack::%s(%d): Candidate is '%s': orig line is %zu, column is %zu, type is %s, level is %zu\n",
- __func__, __LINE__, start->Text(), start->GetOrigLine(), start->GetColumn(), get_token_name(start->GetType()), start->GetLevel());
- LOG_FMT(LAS, "AlignStack::%s(%d): seqnum is %zu\n", __func__, __LINE__, seqnum);
-
- // Assign a seqnum if needed
- if (seqnum == 0)
- {
- LOG_FMT(LAS, "AlignStack::%s(%d): m_seqnum is %zu\n", __func__, __LINE__, m_seqnum);
- seqnum = m_seqnum;
- LOG_FMT(LAS, "AlignStack::%s(%d): seqnum is %zu\n", __func__, __LINE__, seqnum);
- }
- m_last_added = 0;
-
- // Threshold check should begin after
- // tighten down the spacing between ref and start
-
- /*
- * SS_IGNORE: no special handling of '*' or '&', only 'foo' is aligned
- * void foo; // gap=5, 'foo' is aligned
- * char * foo; // gap=3, 'foo' is aligned
- * foomatic foo; // gap=1, 'foo' is aligned
- * The gap is the columns between 'foo' and the previous token.
- * [void - foo], ['*' - foo], etc
- *
- * SS_INCLUDE: - space between variable and '*' or '&' is eaten
- * void foo; // gap=5, 'foo' is aligned
- * char *foo; // gap=5, '*' is aligned
- * foomatic foo; // gap=1, 'foo' is aligned
- * The gap is the columns between the first '*' or '&' before foo
- * and the previous token. [void - foo], [char - '*'], etc
- *
- * SS_DANGLE: - space between variable and '*' or '&' is eaten
- * void foo; // gap=5
- * char *bar; // gap=5, as the '*' doesn't count
- * foomatic foo; // gap=1
- * The gap is the columns between 'foo' and the chunk before the first
- * '*' or '&'. [void - foo], [char - bar], etc
- *
- * If the gap < m_gap, then the column is bumped out by the difference.
- * So, if m_gap is 2, then the above would be:
- * SS_IGNORE:
- * void foo; // gap=6
- * char * foo; // gap=4
- * foomatic foo; // gap=2
- * SS_INCLUDE:
- * void foo; // gap=6
- * char *foo; // gap=6
- * foomatic foo; // gap=2
- * SS_DANGLE:
- * void foo; // gap=6
- * char *bar; // gap=6, as the '*' doesn't count
- * foomatic foo; // gap=2
- * Right aligned numbers:
- * #define A -1
- * #define B 631
- * #define C 3
- * Left aligned numbers:
- * #define A -1
- * #define B 631
- * #define C 3
- *
- * In the code below, pc is set to the item that is aligned.
- * In the above examples, that is 'foo', '*', '-', or 63.
- *
- * Ref is set to the last part of the type.
- * In the above examples, that is 'void', 'char', 'foomatic', 'A', or 'B'.
- *
- * The '*' and '&' can float between the two.
- *
- * If align_on_tabstop=true, then SS_DANGLE is changed to SS_INCLUDE.
- */
- log_rule_B("align_on_tabstop");
-
- if ( options::align_on_tabstop()
- && m_star_style == SS_DANGLE)
- {
- m_star_style = SS_INCLUDE;
- }
- LOG_FMT(LAS, "AlignStack::%s(%d): m_star_style is %s\n",
- __func__, __LINE__, get_StarStyle_name(m_star_style));
- // Find ref. Back up to the real item that is aligned.
- Chunk *prev = start;
-
- while ( (prev = prev->GetPrev())->IsNotNullChunk()
- && ( prev->IsPointerOperator()
- || prev->Is(CT_TPAREN_OPEN)))
- {
- // do nothing - we want prev when this exits
- }
-
- if (prev->IsNullChunk())
- {
- return;
- }
- Chunk *ref = prev;
-
- if (ref->IsNewline())
- {
- ref = ref->GetNext();
- }
- // Find the item that we are going to align.
- Chunk *ali = Chunk::NullChunkPtr;
-
- if (start != nullptr)
- {
- ali = start;
- }
-
- if (m_star_style != SS_IGNORE)
- {
- // back up to the first '*' or '^' preceding the token
- Chunk *tmp_prev = ali->GetPrev();
-
- while ( tmp_prev->IsStar()
- || tmp_prev->IsMsRef())
- {
- ali = tmp_prev;
- tmp_prev = ali->GetPrev();
- }
-
- if (tmp_prev->Is(CT_TPAREN_OPEN))
- {
- ali = tmp_prev;
- tmp_prev = ali->GetPrev();
- // this is correct, even Coverity says:
- // CID 76021 (#1 of 1): Unused value (UNUSED_VALUE)returned_pointer: Assigning value from
- // ali->GetPrev(nav_e::ALL) to prev here, but that stored value is overwritten before it can be used.
- }
- }
-
- if (m_amp_style != SS_IGNORE)
- {
- // back up to the first '&' preceding the token
- Chunk *tmp_prev = ali->GetPrev();
-
- while (tmp_prev->IsAddress())
- {
- ali = tmp_prev;
- tmp_prev = ali->GetPrev();
- }
- }
- log_rule_B("align_keep_extra_space");
-
- // Tighten down the spacing between ref and start
- if (!options::align_keep_extra_space())
- {
- size_t tmp_col = ref->GetColumn();
- Chunk *tmp = ref;
- LOG_FMT(LAS, "AlignStack::%s(%d): tmp_col is %zu\n",
- __func__, __LINE__, tmp_col);
-
- while ( tmp->IsNotNullChunk()
- && tmp != start)
- {
- Chunk *next = tmp->GetNext();
-
- if (next->IsNotNullChunk())
- {
- LOG_FMT(LAS, "AlignStack::%s(%d): next orig line is %zu, orig col is %zu, Text() '%s', level is %zu, type is %s\n",
- __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->Text(), next->GetLevel(), get_token_name(next->GetType()));
- tmp_col += space_col_align(tmp, next);
- LOG_FMT(LAS, "AlignStack::%s(%d): next column is %zu, level is %zu, tmp_col is %zu\n",
- __func__, __LINE__, next->GetColumn(), next->GetLevel(), tmp_col);
-
- if (next->GetColumn() != tmp_col)
- {
- LOG_FMT(LAS, "AlignStack::%s(%d): Call align_to_column\n", __func__, __LINE__);
- align_to_column(next, tmp_col);
- }
- }
- tmp = next;
- }
- }
-
- // Check threshold limits
- if ( m_max_col == 0
- || m_thresh == 0
- || ( ((start->GetColumn() + m_gap) <= (m_thresh + (m_absolute_thresh ? m_min_col : m_max_col))) // don't use subtraction here to prevent underflow
- && ( (start->GetColumn() + m_gap + m_thresh) >= m_max_col // change the expression to mind negative expression
- || start->GetColumn() >= m_min_col)))
- {
- // we are adding it, so update the newline seqnum
- if (seqnum > m_nl_seqnum)
- {
- m_nl_seqnum = seqnum;
- }
- // Set the column adjust and gap
- size_t col_adj = 0; // Amount the column is shifted for 'dangle' mode
- size_t gap = 0;
-
- if (ref != ali)
- {
- gap = ali->GetColumn() - (ref->GetColumn() + ref->Len());
- }
- Chunk *tmp = ali;
-
- if (tmp->Is(CT_TPAREN_OPEN))
- {
- tmp = tmp->GetNext();
- }
-
- if ( ( tmp->IsStar()
- && m_star_style == SS_DANGLE)
- || ( tmp->IsAddress()
- && m_amp_style == SS_DANGLE)
- || ( tmp->IsNullable()
- && (m_star_style == SS_DANGLE))
- || ( tmp->IsMsRef()
- && m_star_style == SS_DANGLE)) // TODO: add m_msref_style
- {
- col_adj = start->GetColumn() - ali->GetColumn();
- gap = start->GetColumn() - (ref->GetColumn() + ref->Len());
- }
- // See if this pushes out the max_col
- const size_t endcol = ali->GetColumn() + col_adj
- + (gap < m_gap ? m_gap - gap : 0);
-
- ali->AlignmentData().col_adj = col_adj;
- ali->AlignmentData().ref = ref;
- ali->AlignmentData().start = start;
- m_aligned.Push_Back(ali, seqnum);
- m_last_added = 1;
-
- // Issue #2278
- if (ali->Is(CT_PTR_TYPE))
- {
- LOG_FMT(LAS, "AlignStack::%s(%d): Add-[%s][%s]: ali orig line is %zu, column is %zu, type is %s, level is %zu\n",
- __func__, __LINE__, ali->Text(), start->Text(), ali->GetOrigLine(), ali->GetColumn(), get_token_name(ali->GetType()), ali->GetLevel());
- }
- else
- {
- LOG_FMT(LAS, "AlignStack::%s(%d): Add-[%s]: ali orig line is %zu, column is %zu, type is %s, level is %zu\n",
- __func__, __LINE__, ali->Text(), ali->GetOrigLine(), ali->GetColumn(), get_token_name(ali->GetType()), ali->GetLevel());
- }
- LOG_FMT(LAS, "AlignStack::%s(%d): ali alignment col_adj is %d, ref '%s', endcol is %zu\n",
- __func__, __LINE__, ali->GetAlignmentData().col_adj, ref->Text(), endcol);
-
- if (m_min_col > endcol)
- {
- m_min_col = endcol;
- }
-
- if (endcol > m_max_col)
- {
- LOG_FMT(LAS, "AlignStack::%s(%d): Add-aligned: seqnum is %zu, m_nl_seqnum is %zu, m_seqnum is %zu\n",
- __func__, __LINE__, seqnum, m_nl_seqnum, m_seqnum);
- LOG_FMT(LAS, "AlignStack::%s(%d): ali orig line is %zu, column is %zu, max_col old is %zu, new is %zu, m_min_col is %zu\n",
- __func__, __LINE__, ali->GetOrigLine(), ali->GetColumn(), m_max_col, endcol, m_min_col);
- m_max_col = endcol;
-
- /*
- * If there were any entries that were skipped, re-add them as they
- * may now be within the threshold
- */
- if (!m_skipped.Empty())
- {
- ReAddSkipped();
- }
- }
- else
- {
- LOG_FMT(LAS, "AlignStack::%s(%d): Add-aligned: seqnum is %zu, m_nl_seqnum is %zu, m_seqnum is %zu\n",
- __func__, __LINE__, seqnum, m_nl_seqnum, m_seqnum);
- LOG_FMT(LAS, "AlignStack::%s(%d): ali orig line is %zu, column is %zu, max_col old is %zu, new is %zu, m_min_col is %zu\n",
- __func__, __LINE__, ali->GetOrigLine(), ali->GetColumn(), m_max_col, endcol, m_min_col);
- }
- }
- else
- {
- // The threshold check failed, so add it to the skipped list
- m_skipped.Push_Back(start, seqnum);
- m_last_added = 2;
-
- LOG_FMT(LAS, "AlignStack::Add-skipped [%zu/%zu/%zu]: line %zu, col %zu <= %zu + %zu\n",
- seqnum, m_nl_seqnum, m_seqnum,
- start->GetOrigLine(), start->GetColumn(), m_max_col, m_thresh);
- }
- // produces much more log output. Use it only debugging purpose
- //WITH_STACKID_DEBUG;
-} // AlignStack::Add
-
-
-void AlignStack::NewLines(size_t cnt)
-{
- // produces much more log output. Use it only debugging purpose
- //WITH_STACKID_DEBUG;
-
- if (m_aligned.Empty())
- {
- //LOG_FMT(LAS, "AlignStack::Newlines(%d): nothing to do, is empty\n", __LINE__);
- return;
- }
- LOG_FMT(LAS, "AlignStack::Newlines(%d): cnt is %zu\n", __LINE__, cnt);
- m_seqnum += cnt;
- LOG_FMT(LAS, "AlignStack::Newlines(%d): m_seqnum is %zu, m_nl_seqnum is %zu, m_span is %zu\n",
- __LINE__, m_seqnum, m_nl_seqnum, m_span);
-
- if (m_seqnum > (m_nl_seqnum + m_span))
- {
- LOG_FMT(LAS, "AlignStack::Newlines(%d): cnt is %zu\n", __LINE__, cnt);
- Flush();
- }
-}
-
-
-void AlignStack::Flush()
-{
- // produces much more log output. Use it only debugging purpose
- //WITH_STACKID_DEBUG;
-
- LOG_FMT(LAS, "AlignStack::%s(%d): Len() is %zu\n",
- __func__, __LINE__, Len());
-
- if (Len() > 0)
- {
- LOG_FMT(LAS, " (min is %zu, max is %zu)\n",
- m_min_col, m_max_col);
- }
-
- if (Len() == 1)
- {
- // check if we have *one* typedef in the line
- Chunk *pc = m_aligned.Get(0)->m_pc;
- Chunk *temp = pc->GetPrevType(CT_TYPEDEF, pc->GetLevel());
-
- if (temp->IsNotNullChunk())
- {
- if (pc->GetOrigLine() == temp->GetOrigLine())
- {
- // reset the gap only for *this* stack
- m_gap = 1;
- }
- }
- }
- m_last_added = 0;
- m_max_col = 0;
-
- // produces much more log output. Use it only debugging purpose
- //WITH_STACKID_DEBUG;
- LOG_FMT(LAS, "AlignStack::%s(%d): Debug the stack, Len is %zu\n",
- __func__, __LINE__, Len());
-
- for (size_t idx = 0; idx < Len(); idx++)
- {
- Chunk *pc = m_aligned.Get(idx)->m_pc;
- LOG_FMT(LAS, "AlignStack::%s(%d): idx is %zu, pc->Text() is '%s', pc alignment col_adj is %d\n",
- __func__, __LINE__, idx, pc->Text(), pc->GetAlignmentData().col_adj);
- }
-
- // Recalculate the max_col - it may have shifted since the last Add()
- for (size_t idx = 0; idx < Len(); idx++)
- {
- Chunk *pc = m_aligned.Get(idx)->m_pc;
-
- // Set the column adjust and gap
- size_t col_adj = 0;
- size_t gap = 0;
-
- if (pc != pc->GetAlignmentData().ref)
- {
- gap = pc->GetColumn() - (pc->GetAlignmentData().ref->GetColumn() + pc->GetAlignmentData().ref->Len());
- }
-
- if (m_star_style == SS_DANGLE)
- {
- Chunk *tmp = (pc->Is(CT_TPAREN_OPEN)) ? pc->GetNext() : pc;
-
- if (tmp->IsPointerOperator())
- {
- col_adj = pc->GetAlignmentData().start->GetColumn() - pc->GetColumn();
- gap = pc->GetAlignmentData().start->GetColumn() - (pc->GetAlignmentData().ref->GetColumn() + pc->GetAlignmentData().ref->Len());
- }
- }
-
- if (m_right_align)
- {
- // Adjust the width for signed numbers
- if (pc->GetAlignmentData().start != nullptr)
- {
- size_t start_len = pc->GetAlignmentData().start->Len();
-
- if (pc->GetAlignmentData().start->GetType() == CT_NEG)
- {
- Chunk *next = pc->GetAlignmentData().start->GetNext();
-
- if (next->Is(CT_NUMBER))
- {
- start_len += next->Len();
- }
- }
- col_adj += start_len;
- }
- }
- pc->AlignmentData().col_adj = col_adj;
-
- // See if this pushes out the max_col
- const size_t endcol = pc->GetColumn() + col_adj
- + (gap < m_gap ? m_gap - gap : 0);
-
- if (endcol > m_max_col)
- {
- m_max_col = endcol;
- }
- }
-
- log_rule_B("align_on_tabstop");
-
- if ( options::align_on_tabstop()
- && Len() > 1)
- {
- m_max_col = align_tab_column(m_max_col);
- }
- LOG_FMT(LAS, "AlignStack::%s(%d): Len() is %zu\n",
- __func__, __LINE__, Len());
-
- const ChunkStack::Entry *ce = nullptr;
-
- for (size_t idx = 0; idx < Len(); idx++)
- {
- ce = m_aligned.Get(idx);
- LOG_FMT(LAS, "AlignStack::%s(%d): idx is %zu, ce->m_pc->Text() is '%s', orig line is %zu, orig col is %zu, alignment col_adj is %d\n",
- __func__, __LINE__, idx, ce->m_pc->Text(), ce->m_pc->GetOrigLine(), ce->m_pc->GetOrigCol(), ce->m_pc->GetAlignmentData().col_adj);
- }
-
- for (size_t idx = 0; idx < Len(); idx++)
- {
- ce = m_aligned.Get(idx);
- Chunk *pc = ce->m_pc;
-
- const size_t tmp_col = m_max_col - pc->GetAlignmentData().col_adj;
-
- if (idx == 0)
- {
- if ( m_skip_first
- && pc->GetColumn() != tmp_col)
- {
- LOG_FMT(LAS, "AlignStack::%s(%d): orig line is %zu, orig col is %zu, dropping first item due to skip_first\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- m_skip_first = false;
- m_aligned.Pop_Front();
- Flush();
- m_skip_first = true;
- return;
- }
- pc->SetFlagBits(PCF_ALIGN_START);
-
- pc->AlignmentData().right_align = m_right_align;
- pc->AlignmentData().amp_style = m_amp_style;
- pc->AlignmentData().star_style = m_star_style;
- }
- pc->AlignmentData().gap = m_gap;
- pc->AlignmentData().next = m_aligned.GetChunk(idx + 1);
-
- // Indent the token, taking col_adj into account
- LOG_FMT(LAS, "AlignStack::%s(%d): orig line is %zu, orig col is %zu, Text() '%s', set to col %zu (adj is %d)\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), tmp_col, pc->GetAlignmentData().col_adj);
- align_to_column(pc, tmp_col);
- }
-
- size_t last_seqnum = 0;
-
- if (ce != nullptr)
- {
- last_seqnum = ce->m_seqnum;
- //LOG_FMT(LAS, "AlignStack::Flush(%d):m_aligned.Reset()\n", __LINE__);
- m_aligned.Reset();
- }
- m_min_col = numeric_limits<size_t>::max(); // use unrealistic high numbers
- m_max_col = 0; // as start value
-
- if (m_skipped.Empty())
- {
- // Nothing was skipped, sync the sequence numbers
- m_nl_seqnum = m_seqnum;
- }
- else
- {
- // Remove all items with seqnum < last_seqnum
- for (size_t idx = 0; idx < m_skipped.Len(); idx++)
- {
- if (m_skipped.Get(idx)->m_seqnum < last_seqnum)
- {
- m_skipped.Zap(idx);
- }
- }
-
- m_skipped.Collapse();
-
- ReAddSkipped(); // Add all items from the skipped list
- }
-} // AlignStack::Flush
-
-
-void AlignStack::Reset()
-{
- //WITH_STACKID_DEBUG;
- //LOG_FMT(LAS, "AlignStack::Reset(%d):m_aligned.Reset()\n", __LINE__);
- m_aligned.Reset();
- //LOG_FMT(LAS, "AlignStack::Reset(%d):m_skipped.Reset()\n", __LINE__);
- m_skipped.Reset();
-}
-
-
-void AlignStack::End()
-{
- //WITH_STACKID_DEBUG;
-
- if (!m_aligned.Empty())
- {
- //LOG_FMT(LAS, "AlignStack::End(%d):\n", __LINE__);
- Flush();
- }
- //LOG_FMT(LAS, "AlignStack::End(%d):m_aligned.Reset()\n", __LINE__);
- m_aligned.Reset();
- //LOG_FMT(LAS, "AlignStack::End(%d):m_skipped.Reset()\n", __LINE__);
- m_skipped.Reset();
-}
-
-
-size_t AlignStack::Len()
-{
- return(m_aligned.Len());
-}
-
-
-void AlignStack::Debug()
-{
- //WITH_STACKID_DEBUG;
-
- size_t length = Len();
-
- if (length > 0)
- {
- LOG_FMT(LAS, "AlignStack::%s(%d): Debug the stack, Len is %zu\n",
- __func__, __LINE__, Len());
-
- for (size_t idx = 0; idx < length; idx++)
- {
- Chunk *pc = m_aligned.Get(idx)->m_pc;
-
- if (pc->Is(CT_PTR_TYPE))
- {
- LOG_FMT(LAS, "AlignStack::%s(%d): idx is %zu, [%s][%s]: orig line is %zu, orig col is %zu, type is %s, level is %zu, brace level is %zu\n",
- __func__, __LINE__, idx, pc->Text(), pc->GetNext()->Text(), pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()), pc->GetLevel(), pc->GetBraceLevel());
- }
- else
- {
- LOG_FMT(LAS, "AlignStack::%s(%d): idx is %zu, [%s]: orig line is %zu, orig col is %zu, type is %s, level is %zu, brace level is %zu\n",
- __func__, __LINE__, idx, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()), pc->GetLevel(), pc->GetBraceLevel());
- }
- }
- }
-}
-
-
-const char *AlignStack::get_StarStyle_name(StarStyle star_style)
-{
- switch (star_style)
- {
- case StarStyle::SS_IGNORE:
- return("SS_IGNORE");
-
- case StarStyle::SS_INCLUDE:
- return("SS_INCLUDE");
-
- case StarStyle::SS_DANGLE:
- return("SS_DANGLE");
- }
- return("?????");
-} // get_StarStyle_name
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_tools.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_tools.cpp
deleted file mode 100644
index 2a3bbc09..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_tools.cpp
+++ /dev/null
@@ -1,197 +0,0 @@
-/**
- * @file align_tools.cpp
- *
- * @author Guy Maurel
- * split from align.cpp
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "align_tools.h"
-
-#include "space.h"
-#include "uncrustify.h"
-
-
-Chunk *skip_c99_array(Chunk *sq_open)
-{
- if (sq_open->Is(CT_SQUARE_OPEN))
- {
- Chunk *tmp = sq_open->GetClosingParen()->GetNextNc();
-
- if (tmp->Is(CT_ASSIGN))
- {
- return(tmp->GetNextNc());
- }
- }
- return(nullptr);
-} // skip_c99_array
-
-
-Chunk *scan_ib_line(Chunk *start)
-{
- LOG_FUNC_ENTRY();
- Chunk *prev_match = nullptr;
- size_t idx = 0;
-
- // Skip past C99 "[xx] =" stuff
- Chunk *tmp = skip_c99_array(start);
-
- if (tmp != nullptr)
- {
- start->SetParentType(CT_TSQUARE);
- start = tmp;
- cpd.al_c99_array = true;
- }
- Chunk *pc = start;
-
- if (pc != nullptr)
- {
- LOG_FMT(LSIB, "%s(%d): start: orig line is %zu, orig col is %zu, column is %zu, type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetColumn(), get_token_name(pc->GetType()));
- }
- else
- {
- pc = Chunk::NullChunkPtr;
- }
-
- while ( pc->IsNotNullChunk()
- && !pc->IsNewline()
- && pc->GetLevel() >= start->GetLevel())
- {
- //LOG_FMT(LSIB, "%s: '%s' col %d/%d line %zu\n", __func__,
- // pc->Text(), pc->GetColumn(), pc->GetOrigCol(), pc->GetOrigLine());
-
- Chunk *next = pc->GetNext();
-
- if ( next->IsNullChunk()
- || next->IsComment())
- {
- // do nothing
- }
- else if ( pc->Is(CT_ASSIGN)
- || pc->Is(CT_BRACE_OPEN)
- || pc->Is(CT_BRACE_CLOSE)
- || pc->Is(CT_COMMA))
- {
- size_t token_width = space_col_align(pc, next);
-
- // TODO: need to handle missing structure defs? ie NULL vs { ... } ??
-
- // Is this a new entry?
- if (idx >= cpd.al_cnt)
- {
- if (idx == 0)
- {
- LOG_FMT(LSIB, "%s(%d): Prepare the 'idx's\n", __func__, __LINE__);
- }
- LOG_FMT(LSIB, "%s(%d): New idx is %2.1zu, pc->GetColumn() is %2.1zu, Text() '%s', token_width is %zu, type is %s\n",
- __func__, __LINE__, idx, pc->GetColumn(), pc->Text(), token_width, get_token_name(pc->GetType()));
- cpd.al[cpd.al_cnt].type = pc->GetType();
- cpd.al[cpd.al_cnt].col = pc->GetColumn();
- cpd.al[cpd.al_cnt].len = token_width;
- cpd.al[cpd.al_cnt].ref = pc; // Issue #3786
- cpd.al_cnt++;
-
- if (cpd.al_cnt == uncrustify::limits::AL_SIZE)
- {
- fprintf(stderr, "Number of 'entry' to be aligned is too big for the current value %d,\n",
- uncrustify::limits::AL_SIZE);
- fprintf(stderr, "at line %zu, column %zu.\n",
- pc->GetOrigLine(), pc->GetOrigCol());
- fprintf(stderr, "Please make a report.\n");
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- idx++;
- }
- else
- {
- // expect to match stuff
- if (cpd.al[idx].type == pc->GetType())
- {
- LOG_FMT(LSIB, "%s(%d): Match? idx is %2.1zu, orig line is %2.1zu, column is %2.1zu, token_width is %zu, type is %s\n",
- __func__, __LINE__, idx, pc->GetOrigLine(), pc->GetColumn(), token_width, get_token_name(pc->GetType()));
-
- // Shift out based on column
- if (prev_match == nullptr)
- {
- if (pc->GetColumn() > cpd.al[idx].col)
- {
- LOG_FMT(LSIB, "%s(%d): [ pc column (%zu) > cpd.al[%zu].col(%zu) ] \n",
- __func__, __LINE__, pc->GetColumn(), idx, cpd.al[idx].col);
-
- ib_shift_out(idx, pc->GetColumn() - cpd.al[idx].col);
- cpd.al[idx].col = pc->GetColumn();
- }
- }
- else if (idx > 0)
- {
- LOG_FMT(LSIB, "%s(%d): prev_match '%s', orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, prev_match->Text(), prev_match->GetOrigLine(), prev_match->GetOrigCol());
- int min_col_diff = pc->GetColumn() - prev_match->GetColumn();
- int cur_col_diff = cpd.al[idx].col - cpd.al[idx - 1].col;
-
- if (cur_col_diff < min_col_diff)
- {
- LOG_FMT(LSIB, "%s(%d): pc orig line is %zu\n",
- __func__, __LINE__, pc->GetOrigLine());
- ib_shift_out(idx, min_col_diff - cur_col_diff);
- }
- }
- LOG_FMT(LSIB, "%s(%d): at ende of the loop: now is col %zu, len is %zu\n",
- __func__, __LINE__, cpd.al[idx].col, cpd.al[idx].len);
- idx++;
- }
- }
- prev_match = pc;
- }
- pc = pc->GetNextNc();
- }
- return(pc);
-} // scan_ib_line
-
-
-void ib_shift_out(size_t idx, size_t num)
-{
- while (idx < cpd.al_cnt)
- {
- bool is_empty = false; // Issue #3786
- Chunk *tmp = cpd.al[idx].ref;
-
- if (tmp->Is(CT_BRACE_CLOSE))
- {
- Chunk *pre = tmp->GetPrev();
-
- if (pre->Is(CT_COMMA))
- {
- is_empty = true;
- }
- }
-
- if (!is_empty)
- {
- cpd.al[idx].col += num;
- }
- idx++;
- }
-} // ib_shift_out
-
-
-Chunk *step_back_over_member(Chunk *pc)
-{
- if (pc == nullptr)
- {
- pc = Chunk::NullChunkPtr;
- }
- Chunk *tmp = pc->GetPrevNcNnl();
-
- // Skip over any class stuff: bool CFoo::bar()
- while ( tmp->IsNotNullChunk()
- && tmp->Is(CT_DC_MEMBER))
- {
- pc = tmp->GetPrevNcNnl();
- tmp = pc->GetPrevNcNnl();
- }
- return(pc);
-} // step_back_over_member
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_tools.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_tools.h
deleted file mode 100644
index 6153ba34..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_tools.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * @file align_tools.h
- *
- * @author Guy Maurel
- * split from align.cpp
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef ALIGN_TOOLS_H_INCLUDED
-#define ALIGN_TOOLS_H_INCLUDED
-
-#include "chunk.h"
-#include "uncrustify_types.h"
-
-
-/**
- * @brief return the chunk the follows after a C array
- *
- * The provided chunk is considered an array if it is an opening square
- * (CT_SQUARE_OPEN) and the matching close is followed by an equal sign '='
- *
- * Example: array[25] = 12;
- * /|\ /|\
- * | |
- * provided chunk has to point to [ |
- * returned chunk points to 12
- *
- * @param chunk chunk to operate on
- *
- * @return the chunk after the '=' if the check succeeds
- * @return nullptr in all other cases
- */
-Chunk *skip_c99_array(Chunk *sq_open);
-
-/**
- * Scans a line for stuff to align on.
- *
- * We trigger on BRACE_OPEN, FPAREN_OPEN, ASSIGN, and COMMA.
- * We want to align the NEXT item.
- */
-Chunk *scan_ib_line(Chunk *start);
-
-void ib_shift_out(size_t idx, size_t num);
-
-Chunk *step_back_over_member(Chunk *pc);
-
-#endif /* ALIGN_TOOLS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_trailing_comments.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_trailing_comments.cpp
deleted file mode 100644
index 777c3dee..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_trailing_comments.cpp
+++ /dev/null
@@ -1,235 +0,0 @@
-/**
- * @file align_trailing_comments.cpp
- *
- * @author Guy Maurel
- * split from align.cpp
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "align_trailing_comments.h"
-
-#include "align_add.h"
-#include "align_tab_column.h"
-#include "indent.h"
-#include "log_rules.h"
-
-constexpr static auto LCURRENT = LALTC;
-
-using namespace uncrustify;
-
-
-void align_stack(ChunkStack &cs, size_t col, bool align_single, log_sev_t sev)
-{
- LOG_FUNC_ENTRY();
-
- log_rule_B("align_on_tabstop");
-
- if (options::align_on_tabstop())
- {
- col = align_tab_column(col);
- }
-
- if ( (cs.Len() > 1)
- || ( align_single
- && (cs.Len() == 1)))
- {
- LOG_FMT(sev, "%s(%d): max_col=%zu\n", __func__, __LINE__, col);
- Chunk *pc;
-
- while ((pc = cs.Pop_Back()) != nullptr)
- {
- align_to_column(pc, col);
- pc->SetFlagBits(PCF_WAS_ALIGNED);
-
- LOG_FMT(sev, "%s(%d): indented [%s] on line %zu to %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetColumn());
- }
- }
- cs.Reset();
-} // align_stack
-
-
-Chunk *align_trailing_comments(Chunk *start)
-{
- LOG_FUNC_ENTRY();
- size_t min_col = 0;
- size_t min_orig = 0;
- Chunk *pc = start;
- const size_t lvl = start->GetBraceLevel();
- size_t nl_count = 0;
- ChunkStack cs;
- size_t col;
-
- log_rule_B("align_right_cmt_at_col");
- size_t intended_col = options::align_right_cmt_at_col();
-
- log_rule_B("align_right_cmt_same_level");
- const bool same_level = options::align_right_cmt_same_level();
- comment_align_e cmt_type_cur;
- comment_align_e cmt_type_start = get_comment_align_type(pc);
-
- LOG_FMT(LALADD, "%s(%d): start on line=%zu\n",
- __func__, __LINE__, pc->GetOrigLine());
-
- // Find the max column
- log_rule_B("align_right_cmt_span");
-
- while ( pc->IsNotNullChunk()
- && (nl_count < options::align_right_cmt_span()))
- {
- if ( pc->TestFlags(PCF_RIGHT_COMMENT)
- && pc->GetColumn() > 1)
- {
- if ( same_level
- && pc->GetBraceLevel() != lvl)
- {
- pc = pc->GetPrev();
- break;
- }
- cmt_type_cur = get_comment_align_type(pc);
-
- if (cmt_type_cur == cmt_type_start)
- {
- LOG_FMT(LALADD, "%s(%d): line=%zu min_col=%zu pc->col=%zu pc->len=%zu %s\n",
- __func__, __LINE__, pc->GetOrigLine(), min_col, pc->GetColumn(), pc->Len(),
- get_token_name(pc->GetType()));
-
- if ( min_orig == 0
- || min_orig > pc->GetColumn())
- {
- min_orig = pc->GetColumn();
- }
- align_add(cs, pc, min_col); // (intended_col < col));
- nl_count = 0;
- }
- }
-
- if (pc->IsNewline())
- {
- nl_count += pc->GetNlCount();
- }
- pc = pc->GetNext();
- }
- // Start with the minimum original column
- col = min_orig;
-
- // fall back to the intended column
- if ( intended_col > 0
- && col > intended_col)
- {
- col = intended_col;
- }
-
- // if less than allowed, bump it out
- if (col < min_col)
- {
- col = min_col;
- }
-
- // bump out to the intended column
- if (col < intended_col)
- {
- col = intended_col;
- }
- LOG_FMT(LALADD, "%s(%d): -- min_orig=%zu intended_col=%zu min_allowed=%zu ==> col=%zu\n",
- __func__, __LINE__, min_orig, intended_col, min_col, col);
-
- if ( cpd.frag_cols > 0
- && cpd.frag_cols <= col)
- {
- col -= cpd.frag_cols;
- }
- align_stack(cs, col, (intended_col != 0), LALTC);
-
- return(pc->GetNext());
-} // align_trailing_comments
-
-
-comment_align_e get_comment_align_type(Chunk *cmt)
-{
- Chunk *prev;
- comment_align_e cmt_type = comment_align_e::REGULAR;
-
- log_rule_B("align_right_cmt_mix");
-
- if ( !options::align_right_cmt_mix()
- && cmt != nullptr
- && ((prev = cmt->GetPrev())->IsNotNullChunk()))
- {
- if ( prev->Is(CT_PP_ENDIF)
- || prev->Is(CT_PP_ELSE)
- || prev->Is(CT_ELSE)
- || prev->Is(CT_BRACE_CLOSE))
- {
- // TODO: make the magic 3 configurable
- if ((cmt->GetColumn() - (prev->GetColumn() + prev->Len())) < 3)
- {
- cmt_type = (prev->Is(CT_PP_ENDIF)) ? comment_align_e::ENDIF : comment_align_e::BRACE;
- }
- }
- }
- return(cmt_type);
-} // get_comment_align_type
-
-
-void align_right_comments()
-{
- LOG_FUNC_ENTRY();
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if ( pc->Is(CT_COMMENT)
- || pc->Is(CT_COMMENT_CPP)
- || pc->Is(CT_COMMENT_MULTI))
- {
- if (pc->GetParentType() == CT_COMMENT_END)
- {
- log_rule_B("align_right_cmt_gap");
-
- if (pc->GetOrigPrevSp() < options::align_right_cmt_gap())
- {
- LOG_FMT(LALTC, "NOT changing END comment on line %zu (%zu < %u)\n",
- pc->GetOrigLine(), pc->GetOrigPrevSp(),
- options::align_right_cmt_gap());
- }
- else
- {
- LOG_FMT(LALTC, "Changing END comment on line %zu into a RIGHT-comment\n",
- pc->GetOrigLine());
- pc->SetFlagBits(PCF_RIGHT_COMMENT);
- }
- }
-
- // Change certain WHOLE comments into RIGHT-alignable comments
- if (pc->GetParentType() == CT_COMMENT_WHOLE)
- {
- log_rule_B("input_tab_size");
- size_t max_col = pc->GetColumnIndent() + options::input_tab_size();
-
- // If the comment is further right than the brace level...
- if (pc->GetColumn() >= max_col)
- {
- LOG_FMT(LALTC, "Changing WHOLE comment on line %zu into a RIGHT-comment (col=%zu col_ind=%zu max_col=%zu)\n",
- pc->GetOrigLine(), pc->GetColumn(), pc->GetColumnIndent(), max_col);
-
- pc->SetFlagBits(PCF_RIGHT_COMMENT);
- }
- }
- }
- }
-
- Chunk *pc = Chunk::GetHead();
-
- while (pc->IsNotNullChunk())
- {
- if (pc->TestFlags(PCF_RIGHT_COMMENT))
- {
- pc = align_trailing_comments(pc);
- }
- else
- {
- pc = pc->GetNext();
- }
- }
-} // align_right_comments
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_var_def_brace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_var_def_brace.cpp
deleted file mode 100644
index a8cc2563..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_var_def_brace.cpp
+++ /dev/null
@@ -1,362 +0,0 @@
-/**
- * @file align_var_def_brace.cpp
- *
- * @author Guy Maurel
- * split from align.cpp
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "align_var_def_brace.h"
-
-#include "align_stack.h"
-#include "align_tools.h"
-#include "log_rules.h"
-
-constexpr static auto LCURRENT = LAVDB;
-
-using namespace uncrustify;
-
-
-Chunk *align_var_def_brace(Chunk *start, size_t span, size_t *p_nl_count)
-{
- LOG_FUNC_ENTRY();
-
- if (start->IsNullChunk())
- {
- return(nullptr);
- }
- Chunk *next;
- size_t myspan = span;
- size_t mythresh = 0;
- size_t mygap = 0;
-
- // Override the span, if this is a struct/union
- if ( start->GetParentType() == CT_STRUCT
- || start->GetParentType() == CT_UNION)
- {
- log_rule_B("align_var_struct_span");
- myspan = options::align_var_struct_span();
- log_rule_B("align_var_struct_thresh");
- mythresh = options::align_var_struct_thresh();
- log_rule_B("align_var_struct_gap");
- mygap = options::align_var_struct_gap();
- }
- else if (start->GetParentType() == CT_CLASS)
- {
- log_rule_B("align_var_class_span");
- myspan = options::align_var_class_span();
- log_rule_B("align_var_class_thresh");
- mythresh = options::align_var_class_thresh();
- log_rule_B("align_var_class_gap");
- mygap = options::align_var_class_gap();
- }
- else
- {
- log_rule_B("align_var_def_thresh");
- mythresh = options::align_var_def_thresh();
- log_rule_B("align_var_def_gap");
- mygap = options::align_var_def_gap();
- }
- // can't be any variable definitions in a "= {" block
- Chunk *prev = start->GetPrevNcNnl();
-
- if (prev->Is(CT_ASSIGN))
- {
- LOG_FMT(LAVDB, "%s(%d): start->Text() '%s', type is %s, on orig line %zu (abort due to assign)\n",
- __func__, __LINE__, start->Text(), get_token_name(start->GetType()), start->GetOrigLine());
-
- Chunk *pc = start->GetNextType(CT_BRACE_CLOSE, start->GetLevel());
- return(pc->GetNextNcNnl());
- }
- char copy[1000];
-
- LOG_FMT(LAVDB, "%s(%d): start->Text() '%s', type is %s, on orig line %zu\n",
- __func__, __LINE__, start->ElidedText(copy), get_token_name(start->GetType()), start->GetOrigLine());
-
- log_rule_B("align_var_def_inline");
- auto const align_mask =
- PCF_IN_FCN_DEF | PCF_VAR_1ST |
- (options::align_var_def_inline() ? PCF_NONE : PCF_VAR_INLINE);
-
- // Set up the variable/prototype/definition aligner
- AlignStack as;
-
- as.Start(myspan, mythresh);
- as.m_gap = mygap;
- log_rule_B("align_var_def_star_style");
- as.m_star_style = static_cast<AlignStack::StarStyle>(options::align_var_def_star_style());
- log_rule_B("align_var_def_amp_style");
- as.m_amp_style = static_cast<AlignStack::StarStyle>(options::align_var_def_amp_style());
-
- // Set up the bit colon aligner
- AlignStack as_bc;
-
- as_bc.Start(myspan, 0);
- log_rule_B("align_var_def_colon_gap");
- as_bc.m_gap = options::align_var_def_colon_gap();
-
- AlignStack as_at; // attribute
-
- as_at.Start(myspan, 0);
-
- // Set up the brace open aligner
- AlignStack as_br;
-
- as_br.Start(myspan, mythresh);
- log_rule_B("align_single_line_brace_gap");
- as_br.m_gap = options::align_single_line_brace_gap();
-
- bool fp_look_bro = false;
- bool did_this_line = false;
-
- log_rule_B("align_mix_var_proto");
- bool fp_active = options::align_mix_var_proto();
- Chunk *pc = start->GetNext();
- LOG_FMT(LAVDB, "%s(%d): start->Text() is '%s', level is %zu, brace level is %zu\n",
- __func__, __LINE__, start->IsNewline() ? "Newline" : start->Text(), start->GetLevel(), start->GetBraceLevel());
-
- while (pc->IsNotNullChunk())
- {
- LOG_CHUNK(LAVDB, pc);
-
- if ( pc->GetLevel() < start->GetLevel()
- && pc->GetLevel() != 0
- && !pc->IsPreproc())
- {
- LOG_FMT(LAVDB, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s, PRE is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()), pc->IsPreproc() ? "true" : "false");
- break;
- }
-
- if (pc->IsComment())
- {
- if (pc->GetNlCount() > 0)
- {
- as.NewLines(pc->GetNlCount());
- as_bc.NewLines(pc->GetNlCount());
- as_at.NewLines(pc->GetNlCount());
- as_br.NewLines(pc->GetNlCount());
- }
- pc = pc->GetNext();
- LOG_FMT(LAVDB, "%s(%d): pc->Text() is '%s', level is %zu, brace level is %zu\n",
- __func__, __LINE__, pc->IsNewline() ? "Newline" : pc->Text(), pc->GetLevel(), pc->GetBraceLevel());
- continue;
- }
-
- if ( fp_active
- && !pc->TestFlags(PCF_IN_CLASS_BASE))
- {
- // WARNING: Duplicate from the align_func_proto()
- log_rule_B("align_single_line_func");
-
- if ( pc->Is(CT_FUNC_PROTO)
- || ( pc->Is(CT_FUNC_DEF)
- && options::align_single_line_func()))
- {
- LOG_FMT(LAVDB, "%s(%d): add = '%s', orig line is %zu, orig col is %zu, level is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
-
- Chunk *toadd;
-
- log_rule_B("align_on_operator");
-
- if ( pc->GetParentType() == CT_OPERATOR
- && options::align_on_operator())
- {
- toadd = pc->GetPrevNcNnl();
- }
- else
- {
- toadd = pc;
- }
- as.Add(step_back_over_member(toadd));
- log_rule_B("align_single_line_brace");
- fp_look_bro = (pc->Is(CT_FUNC_DEF))
- && options::align_single_line_brace();
- }
- else if ( fp_look_bro
- && pc->Is(CT_BRACE_OPEN)
- && pc->TestFlags(PCF_ONE_LINER))
- {
- as_br.Add(pc);
- fp_look_bro = false;
- }
- }
-
- // process nested braces
- if (pc->Is(CT_BRACE_OPEN))
- {
- size_t sub_nl_count = 0;
-
- pc = align_var_def_brace(pc, span, &sub_nl_count);
-
- if (sub_nl_count > 0)
- {
- fp_look_bro = false;
- did_this_line = false;
- as.NewLines(sub_nl_count);
- as_bc.NewLines(sub_nl_count);
- as_at.NewLines(sub_nl_count);
- as_br.NewLines(sub_nl_count);
-
- if (p_nl_count != nullptr)
- {
- *p_nl_count += sub_nl_count;
- }
- }
- continue;
- }
-
- // Done with this brace set?
- if (pc->Is(CT_BRACE_CLOSE))
- {
- pc = pc->GetNext();
- LOG_FMT(LAVDB, "%s(%d): pc->Text() is '%s', level is %zu, brace level is %zu\n",
- __func__, __LINE__, pc->IsNewline() ? "Newline" : pc->Text(), pc->GetLevel(), pc->GetBraceLevel());
- break;
- }
-
- if (pc->IsNewline())
- {
- fp_look_bro = false;
- did_this_line = false;
- as.NewLines(pc->GetNlCount());
- as_bc.NewLines(pc->GetNlCount());
- as_at.NewLines(pc->GetNlCount());
- as_br.NewLines(pc->GetNlCount());
-
- if (p_nl_count != nullptr)
- {
- *p_nl_count += pc->GetNlCount();
- }
- }
- LOG_FMT(LAVDB, "%s(%d): pc->Text() is '%s', level is %zu, brace level is %zu\n",
- __func__, __LINE__, pc->IsNewline() ? "Newline" : pc->Text(), pc->GetLevel(), pc->GetBraceLevel());
-
- if (!pc->IsNewline())
- {
- LOG_FMT(LAVDB, "%s(%d): pc orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
-
- if (pc->IsNot(CT_IGNORED))
- {
- LOG_FMT(LAVDB, " ");
- log_pcf_flags(LAVDB, pc->GetFlags());
- }
- }
-
- // don't align stuff inside parenthesis/squares/angles
- if (pc->GetLevel() > pc->GetBraceLevel())
- {
- pc = pc->GetNext();
- LOG_FMT(LAVDB, "%s(%d): pc->Text() is '%s', level is %zu, brace level is %zu\n",
- __func__, __LINE__, pc->IsNewline() ? "Newline" : pc->Text(), pc->GetLevel(), pc->GetBraceLevel());
- continue;
- }
-
- // If this is a variable def, update the max_col
- if ( !pc->TestFlags(PCF_IN_CLASS_BASE)
- && pc->IsNot(CT_FUNC_CLASS_DEF)
- && pc->IsNot(CT_FUNC_CLASS_PROTO)
- && ((pc->GetFlags() & align_mask) == PCF_VAR_1ST)
- && pc->IsNot(CT_FUNC_DEF) // Issue 1452
- && ( (pc->GetLevel() == (start->GetLevel() + 1))
- || pc->GetLevel() == 0)
- && pc->GetPrev()->IsNot(CT_MEMBER))
- {
- LOG_FMT(LAVDB, "%s(%d): a-did_this_line is %s\n",
- __func__, __LINE__, did_this_line ? "TRUE" : "FALSE");
- LOG_FMT(LAVDB, "%s(%d): Text() is '%s', orig line is %zu, orig col is %zu, level is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
-
- if (!did_this_line)
- {
- if ( start->GetParentType() == CT_STRUCT
- && (as.m_star_style == AlignStack::SS_INCLUDE))
- {
- // we must look after the previous token
- Chunk *prev_local = pc->GetPrev();
-
- while ( prev_local->Is(CT_PTR_TYPE)
- || prev_local->Is(CT_ADDR))
- {
- LOG_FMT(LAVDB, "%s(%d): prev_local '%s', prev_local->GetType() %s\n",
- __func__, __LINE__, prev_local->Text(), get_token_name(prev_local->GetType()));
- prev_local = prev_local->GetPrev();
- }
- pc = prev_local->GetNext();
- LOG_FMT(LAVDB, "%s(%d): pc->Text() is '%s', level is %zu, brace level is %zu\n",
- __func__, __LINE__, pc->IsNewline() ? "Newline" : pc->Text(), pc->GetLevel(), pc->GetBraceLevel());
- }
- // we must look after the previous token
- Chunk *prev_local = pc->GetPrev();
-
- if (prev_local->IsNot(CT_DEREF)) // Issue #2971
- {
- LOG_FMT(LAVDB, "%s(%d): add = '%s', orig line is %zu, orig col is %zu, level is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
-
- as.Add(step_back_over_member(pc));
- }
- log_rule_B("align_var_def_colon");
-
- if (options::align_var_def_colon())
- {
- next = pc->GetNextNc();
- LOG_FMT(LAVDB, "%s(%d): pc->Text() is '%s', level is %zu, brace level is %zu\n",
- __func__, __LINE__, pc->IsNewline() ? "Newline" : pc->Text(), pc->GetLevel(), pc->GetBraceLevel());
-
- if (next->Is(CT_BIT_COLON))
- {
- as_bc.Add(next);
- }
- }
- log_rule_B("align_var_def_attribute");
-
- if (options::align_var_def_attribute())
- {
- next = pc;
-
- while ((next = next->GetNextNc())->IsNotNullChunk())
- {
- if (next->Is(CT_ATTRIBUTE))
- {
- as_at.Add(next);
- break;
- }
-
- if ( next->Is(CT_SEMICOLON)
- || next->IsNewline())
- {
- break;
- }
- }
- }
- }
- did_this_line = true;
- }
- else if (pc->Is(CT_BIT_COLON))
- {
- if (!did_this_line)
- {
- as_bc.Add(pc);
- did_this_line = true;
- }
- }
- else
- {
- LOG_FMT(LAVDB, "%s(%d): b-did_this_line is %s\n",
- __func__, __LINE__, did_this_line ? "TRUE" : "FALSE");
- }
- pc = pc->GetNext();
- LOG_FMT(LAVDB, "%s(%d): pc->Text() is '%s', level is %zu, brace level is %zu\n",
- __func__, __LINE__, pc->IsNewline() ? "Newline" : pc->Text(), pc->GetLevel(), pc->GetBraceLevel());
- }
- as.End();
- as_bc.End();
- as_at.End();
- as_br.End();
-
- return(pc);
-} // align_var_def_brace
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/brace_cleanup.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/brace_cleanup.cpp
deleted file mode 100644
index 2cfe2ac2..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/brace_cleanup.cpp
+++ /dev/null
@@ -1,1449 +0,0 @@
-/**
- * @file brace_cleanup.cpp
- * Determines the brace level and paren level.
- * Inserts virtual braces as needed.
- * Handles all that preprocessor stuff.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "brace_cleanup.h"
-
-#include "flag_parens.h"
-#include "frame_list.h"
-#include "keywords.h"
-#include "lang_pawn.h"
-#include "prototypes.h"
-
-#include <stdexcept> // to get std::invalid_argument
-
-constexpr static auto LCURRENT = LBC;
-
-using namespace uncrustify;
-
-using std::invalid_argument;
-using std::string;
-using std::to_string;
-using std::stringstream;
-
-
-/*
- * abbreviations used:
- * - sparen = tbd
- * - PS = Parenthesis Stack
- * - pse = Parenthesis Stack
- */
-
-
-struct BraceState
-{
- std::vector<ParseFrame> frames = {};
- E_Token in_preproc = CT_NONE;
- int pp_level = 0;
- bool consumed = false;
-};
-
-/**
- * Called when a statement was just closed and the pse_tos was just
- * decremented.
- *
- * - if the TOS is now VBRACE, insert a CT_VBRACE_CLOSE and recurse.
- * - if the TOS is a complex statement, call handle_complex_close()
- *
- * @retval true done with this chunk
- * @retval false keep processing
- */
-static bool close_statement(ParseFrame &frm, Chunk *pc, const BraceState &braceState);
-
-
-static size_t preproc_start(BraceState &braceState, ParseFrame &frm, Chunk *pc);
-
-
-static void print_stack(log_sev_t logsev, const char *str, const ParseFrame &frm);
-
-
-/**
- * pc is a CT_WHILE.
- * Scan backwards to see if we find a brace/vbrace with the parent set to CT_DO
- */
-static bool maybe_while_of_do(Chunk *pc);
-
-
-/**
- * @param after determines: true - insert_vbrace_close_after(pc, frm)
- * false - insert_vbrace_open_before(pc, frm)
- */
-static Chunk *insert_vbrace(Chunk *pc, bool after, const ParseFrame &frm);
-
-#define insert_vbrace_close_after(pc, frm) insert_vbrace(pc, true, frm)
-#define insert_vbrace_open_before(pc, frm) insert_vbrace(pc, false, frm)
-
-static void parse_cleanup(BraceState &braceState, ParseFrame &frm, Chunk *pc);
-
-
-/**
- * Checks the progression of complex statements.
- * - checks for else after if
- * - checks for if after else
- * - checks for while after do
- * - checks for open brace in BRACE2 and BRACE_DO stages, inserts open VBRACE
- * - checks for open paren in PAREN1 and BRACE2 stages, complains
- *
- * @param frm The parse frame
- * @param pc The current chunk
- *
- * @return true - done with this chunk, false - keep processing
- */
-static bool check_complex_statements(ParseFrame &frm, Chunk *pc, const BraceState &braceState);
-
-
-/**
- * Handles a close paren or brace - just progress the stage, if the end
- * of the statement is hit, call close_statement()
- *
- * @param frm The parse frame
- * @param pc The current chunk
- *
- * @return true - done with this chunk, false - keep processing
- */
-static bool handle_complex_close(ParseFrame &frm, Chunk *pc, const BraceState &braceState);
-
-
-//! We're on a 'namespace' skip the word and then set the parent of the braces.
-static void mark_namespace(Chunk *pns);
-
-
-static size_t preproc_start(BraceState &braceState, ParseFrame &frm, Chunk *pc)
-{
- LOG_FUNC_ENTRY();
- const size_t pp_level = braceState.pp_level;
-
- Chunk *next = pc->GetNextNcNnl();
-
- if (next->IsNullChunk())
- {
- return(pp_level);
- }
- // Get the type of preprocessor and handle it
- braceState.in_preproc = next->GetType();
-
- // If we are not in a define, check for #if, #else, #endif, etc
- if (braceState.in_preproc != CT_PP_DEFINE)
- {
- int pp_indent = fl_check(braceState.frames, frm, braceState.pp_level, pc);
- return(pp_indent);
- }
- // else push the frame stack
- fl_push(braceState.frames, frm);
-
- // a preproc body starts a new, blank frame
- frm = {};
- frm.level = 1;
- frm.brace_level = 1;
-
- // TODO: not sure about the next 3 lines
- frm.push(nullptr);
- frm.top().type = CT_PP_DEFINE;
-
- return(pp_level);
-}
-
-
-static void print_stack(log_sev_t logsev, const char *str,
- const ParseFrame &frm)
-{
- LOG_FUNC_ENTRY();
-
- if (!log_sev_on(logsev))
- {
- return;
- }
- log_fmt(logsev, "%s(%d): str is '%s'", __func__, __LINE__, str);
-
- for (size_t idx = 1; idx < frm.size(); idx++)
- {
- if (frm.at(idx).stage != brace_stage_e::NONE)
- {
- LOG_FMT(logsev, " [%s - %u]", get_token_name(frm.at(idx).type),
- (unsigned int)frm.at(idx).stage);
- }
- else
- {
- LOG_FMT(logsev, " [%s]", get_token_name(frm.at(idx).type));
- }
- }
-
- log_fmt(logsev, "\n");
-}
-
-
-//TODO: This can be cleaned up and simplified - we can look both forward and backward!
-void brace_cleanup()
-{
- LOG_FUNC_ENTRY();
-
- BraceState braceState;
- ParseFrame frm{};
- Chunk *pc = Chunk::GetHead();
-
- while (pc->IsNotNullChunk())
- {
- LOG_CHUNK(LTOK, pc);
-
- // Check for leaving a #define body
- if ( braceState.in_preproc != CT_NONE
- && !pc->TestFlags(PCF_IN_PREPROC))
- {
- if (braceState.in_preproc == CT_PP_DEFINE)
- {
- // out of the #define body, restore the frame
- size_t brace_level = frm.brace_level;
-
- if ( options::pp_warn_unbalanced_if()
- && brace_level != 1)
- {
- LOG_FMT(LWARN, "%s(%d): orig line is %zu, unbalanced #define block braces, out-level is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), brace_level);
- }
- fl_pop(braceState.frames, frm);
- }
- braceState.in_preproc = CT_NONE;
- }
- // Check for a preprocessor start
- size_t pp_level;
-
- if (pc->Is(CT_PREPROC))
- {
- pp_level = preproc_start(braceState, frm, pc);
- }
- else
- {
- pp_level = braceState.pp_level;
- }
- LOG_FMT(LTOK, "%s(%d): pp level is %zu\n",
- __func__, __LINE__, pp_level);
-
- // Do before assigning stuff from the frame
- if ( language_is_set(LANG_PAWN)
- && frm.top().type == CT_VBRACE_OPEN
- && pc->Is(CT_NEWLINE))
- {
- pc = pawn_check_vsemicolon(pc);
-
- if (pc == nullptr)
- {
- return;
- }
- }
-
- // Issue #1813
- if (pc->Is(CT_NAMESPACE))
- {
- mark_namespace(pc);
- }
- // Assume the level won't change
- pc->SetLevel(frm.level);
- pc->SetBraceLevel(frm.brace_level);
- pc->SetPpLevel(pp_level);
-
- /*
- * #define bodies get the full formatting treatment
- * Also need to pass in the initial '#' to close out any virtual braces.
- */
- if ( !pc->IsCommentOrNewline()
- && !pc->Is(CT_ATTRIBUTE)
- && !pc->Is(CT_IGNORED) // Issue #2279
- && ( braceState.in_preproc == CT_PP_DEFINE
- || braceState.in_preproc == CT_NONE))
- {
- braceState.consumed = false;
- parse_cleanup(braceState, frm, pc);
- print_stack(LBCSAFTER, (pc->Is(CT_VBRACE_CLOSE)) ? "Virt-}\n" : pc->GetStr().c_str(), frm);
- }
- pc = pc->GetNext();
- }
-} // brace_cleanup
-
-
-static bool maybe_while_of_do(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *prev = pc->GetPrevNcNnl();
-
- if ( prev->IsNullChunk()
- || !prev->TestFlags(PCF_IN_PREPROC))
- {
- return(false);
- }
-
- // Find the chunk before the preprocessor
- while ( prev->IsNullChunk()
- && prev->TestFlags(PCF_IN_PREPROC))
- {
- prev = prev->GetPrevNcNnl();
- }
-
- if ( ( prev->Is(CT_VBRACE_CLOSE)
- || prev->Is(CT_BRACE_CLOSE))
- && prev->GetParentType() == CT_DO)
- {
- return(true);
- }
- return(false);
-}
-
-
-/**
- * At the heart of this algorithm are two stacks.
- * There is the Paren Stack (PS) and the Frame stack.
- *
- * The PS (pse in the code) keeps track of braces, parens,
- * if/else/switch/do/while/etc items -- anything that is nestable.
- * Complex statements go through stages.
- * Take this simple if statement as an example:
- * if ( x ) { x--; }
- *
- * The stack would change like so: 'token' stack afterwards
- * 'if' [IF - 1]
- * '(' [IF - 1] [PAREN OPEN]
- * 'x' [IF - 1] [PAREN OPEN]
- * ')' [IF - 2] <- note that the state was incremented
- * '{' [IF - 2] [BRACE OPEN]
- * 'x' [IF - 2] [BRACE OPEN]
- * '--' [IF - 2] [BRACE OPEN]
- * ';' [IF - 2] [BRACE OPEN]
- * '}' [IF - 3]
- * <- lack of else kills the IF, closes statement
- *
- * Virtual braces example:
- * if ( x ) x--; else x++;
- *
- * 'if' [IF - 1]
- * '(' [IF - 1] [PAREN OPEN]
- * 'x' [IF - 1] [PAREN OPEN]
- * ')' [IF - 2]
- * 'x' [IF - 2] [VBRACE OPEN] <- VBrace open inserted before because '{' was not next
- * '--' [IF - 2] [VBRACE OPEN]
- * ';' [IF - 3] <- VBrace close inserted after semicolon
- * 'else' [ELSE - 0] <- IF changed into ELSE
- * 'x' [ELSE - 0] [VBRACE OPEN] <- lack of '{' -> VBrace
- * '++' [ELSE - 0] [VBRACE OPEN]
- * ';' [ELSE - 0] <- VBrace close inserted after semicolon
- * <- ELSE removed after statement close
- *
- * The pse stack is kept on a frame stack.
- * The frame stack is need for languages that support preprocessors (C, C++, C#)
- * that can arbitrarily change code flow. It also isolates #define macros so
- * that they are indented independently and do not affect the rest of the program.
- *
- * When an #if is hit, a copy of the current frame is push on the frame stack.
- * When an #else/#elif is hit, a copy of the current stack is pushed under the
- * #if frame and the original (pre-#if) frame is copied to the current frame.
- * When #endif is hit, the top frame is popped.
- * This has the following effects:
- * - a simple #if / #endif does not affect program flow
- * - #if / #else /#endif - continues from the #if clause
- *
- * When a #define is entered, the current frame is pushed and cleared.
- * When a #define is exited, the frame is popped.
- */
-static void parse_cleanup(BraceState &braceState, ParseFrame &frm, Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LTOK, "%s(%d): orig line is %zu, orig col is %zu, type is %s, tos is %zu, TOS.type is %s, TOS.stage is %s, ",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()),
- frm.size() - 1, get_token_name(frm.top().type),
- get_brace_stage_name(frm.top().stage));
- log_pcf_flags(LTOK, pc->GetFlags());
-
- // Mark statement starts
- LOG_FMT(LTOK, "%s(%d): orig line is %zu, type is %s, Text() is '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), get_token_name(pc->GetType()), pc->Text());
- LOG_FMT(LTOK, "%s(%d): frm.stmt_count is %zu, frm.expr_count is %zu\n",
- __func__, __LINE__, frm.stmt_count, frm.expr_count);
-
- if ( ( frm.stmt_count == 0
- || frm.expr_count == 0)
- && !pc->IsSemicolon()
- && pc->IsNot(CT_BRACE_CLOSE)
- && pc->IsNot(CT_VBRACE_CLOSE)
- && !pc->IsString(")")
- && !pc->IsString("]"))
- {
- pc->SetFlagBits(PCF_EXPR_START | ((frm.stmt_count == 0) ? PCF_STMT_START : PCF_NONE));
- LOG_FMT(LSTMT, "%s(%d): orig line is %zu, 1.marked '%s' as %s, start stmt_count is %zu, expr_count is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->Text(),
- pc->TestFlags(PCF_STMT_START) ? "stmt" : "expr", frm.stmt_count,
- frm.expr_count);
- }
- frm.stmt_count++;
- frm.expr_count++;
- LOG_FMT(LTOK, "%s(%d): frm.stmt_count is %zu, frm.expr_count is %zu\n",
- __func__, __LINE__, frm.stmt_count, frm.expr_count);
-
- if (frm.sparen_count > 0)
- {
- pc->SetFlagBits(PCF_IN_SPAREN);
-
- // Mark everything in the for statement
- for (int tmp = static_cast<int>(frm.size()) - 2; tmp >= 0; tmp--)
- {
- if (frm.at(tmp).type == CT_FOR)
- {
- pc->SetFlagBits(PCF_IN_FOR);
- break;
- }
- }
-
- // Mark the parent on semicolons in for() statements
- if ( pc->Is(CT_SEMICOLON)
- && frm.size() > 2
- && frm.prev().type == CT_FOR)
- {
- pc->SetParentType(CT_FOR);
- }
- }
-
- // Check the progression of complex statements
- if ( frm.top().stage != brace_stage_e::NONE
- && !pc->Is(CT_AUTORELEASEPOOL)
- && check_complex_statements(frm, pc, braceState))
- {
- return;
- }
-
- /*
- * Check for a virtual brace statement close due to a semicolon.
- * The virtual brace will get handled the next time through.
- * The semicolon isn't handled at all.
- * TODO: may need to float VBRACE past comments until newline?
- */
- if (frm.top().type == CT_VBRACE_OPEN)
- {
- if (pc->IsSemicolon())
- {
- braceState.consumed = true;
- close_statement(frm, pc, braceState);
- }
- else if ( language_is_set(LANG_PAWN)
- && pc->Is(CT_BRACE_CLOSE))
- {
- close_statement(frm, pc, braceState);
- }
- else if ( language_is_set(LANG_D)
- && pc->Is(CT_BRACE_CLOSE))
- {
- close_statement(frm, pc, braceState);
- }
- }
-
- // Handle close parenthesis, vbrace, brace, and square
- if ( pc->Is(CT_PAREN_CLOSE)
- || pc->Is(CT_BRACE_CLOSE)
- || pc->Is(CT_VBRACE_CLOSE)
- || pc->Is(CT_ANGLE_CLOSE)
- || pc->Is(CT_MACRO_CLOSE)
- || pc->Is(CT_SQUARE_CLOSE))
- {
- // Change CT_PAREN_CLOSE into CT_SPAREN_CLOSE or CT_FPAREN_CLOSE
- if ( pc->Is(CT_PAREN_CLOSE)
- && ( (frm.top().type == CT_FPAREN_OPEN)
- || (frm.top().type == CT_SPAREN_OPEN)))
- {
- // TODO: fix enum hack
- pc->SetType(static_cast<E_Token>(frm.top().type + 1));
-
- if (pc->Is(CT_SPAREN_CLOSE))
- {
- frm.sparen_count--;
- pc->ResetFlagBits(PCF_IN_SPAREN);
- }
- }
-
- // Make sure the open / close match
- if (pc->IsNot((E_Token)(frm.top().type + 1)))
- {
- if (pc->TestFlags(PCF_IN_PREPROC)) // Issue #3113, #3283
- {
- // do nothing
- }
- else
- {
- LOG_FMT(LWARN, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- paren_stack_entry_t AA = frm.top(); // Issue #3055
-
- if (AA.type != CT_EOF)
- {
- LOG_FMT(LWARN, "%s(%d): (frm.top().type + 1) is %s\n",
- __func__, __LINE__, get_token_name((E_Token)(frm.top().type + 1)));
- }
-
- if ( frm.top().type != CT_EOF
- && frm.top().type != CT_PP_DEFINE)
- {
- LOG_FMT(LWARN, "%s(%d): File: %s, orig line is %zu, orig col is %zu, Error: Unexpected '%s' for '%s', which was on line %zu\n",
- __func__, __LINE__, cpd.filename.c_str(), pc->GetOrigLine(), pc->GetOrigCol(),
- pc->Text(), get_token_name(frm.top().pc->GetType()),
- frm.top().pc->GetOrigLine());
- print_stack(LBCSPOP, "=Error ", frm);
- exit(EXIT_FAILURE);
- }
- }
- }
- else
- {
- braceState.consumed = true;
-
- // Copy the parent, update the parenthesis/brace levels
- pc->SetParentType(frm.top().parent);
- frm.level--;
-
- if ( pc->Is(CT_BRACE_CLOSE)
- || pc->Is(CT_VBRACE_CLOSE)
- || pc->Is(CT_MACRO_CLOSE))
- {
- frm.brace_level--;
- LOG_FMT(LBCSPOP, "%s(%d): frm.brace_level decreased to %zu",
- __func__, __LINE__, frm.brace_level);
- log_pcf_flags(LBCSPOP, pc->GetFlags());
- }
- pc->SetLevel(frm.level);
- pc->SetBraceLevel(frm.brace_level);
-
- // Pop the entry
- LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- print_stack(LBCSPOP, "-Close ", frm);
-
- if ( frm.top().stage == brace_stage_e::NONE
- && ( pc->Is(CT_VBRACE_CLOSE)
- || pc->Is(CT_BRACE_CLOSE)
- || pc->Is(CT_SEMICOLON))
- && frm.top().pc->Is(CT_VBRACE_OPEN))
- {
- // frames for functions are not created as they are for an if
- // this here is a hackish solution to close a vbrace of a block that
- // contains the function
- frm.push(nullptr); // <- dummy frame for the function
- frm.top().stage = brace_stage_e::BRACE2;
- }
-
- // See if we are in a complex statement
- if (frm.top().stage != brace_stage_e::NONE)
- {
- handle_complex_close(frm, pc, braceState);
- }
- }
- }
-
- /*
- * In this state, we expect a semicolon, but we'll also hit the closing
- * sparen, so we need to check braceState.consumed to see if the close sparen
- * was already handled.
- */
- if (frm.top().stage == brace_stage_e::WOD_SEMI)
- {
- if (braceState.consumed)
- {
- /*
- * If consumed, then we are on the close sparen.
- * PAWN: Check the next chunk for a semicolon. If it isn't, then
- * add a virtual semicolon, which will get handled on the next pass.
- */
- if (language_is_set(LANG_PAWN))
- {
- Chunk *tmp = pc->GetNextNcNnl();
-
- if (!tmp->IsSemicolon())
- {
- pawn_add_vsemi_after(pc);
- }
- }
- }
- else
- {
- // Complain if this ISN'T a semicolon, but close out WHILE_OF_DO anyway
- if (pc->IsSemicolon())
- {
- braceState.consumed = true;
- pc->SetParentType(CT_WHILE_OF_DO);
- }
- else
- {
- LOG_FMT(LWARN, "%s: %s(%d): %zu: Error: Expected a semicolon for WHILE_OF_DO, but got '%s'\n",
- cpd.filename.c_str(), __func__, __LINE__, pc->GetOrigLine(),
- get_token_name(pc->GetType()));
- exit(EX_SOFTWARE);
- }
- handle_complex_close(frm, pc, braceState);
- }
- }
- // Get the parent type for brace and parenthesis open
- E_Token parentType = pc->GetParentType();
-
- if ( pc->Is(CT_PAREN_OPEN)
- || pc->Is(CT_FPAREN_OPEN)
- || pc->Is(CT_SPAREN_OPEN)
- || pc->Is(CT_BRACE_OPEN))
- {
- Chunk *prev = pc->GetPrevNcNnl();
-
- if (prev->IsNotNullChunk())
- {
- if ( pc->Is(CT_PAREN_OPEN)
- || pc->Is(CT_FPAREN_OPEN)
- || pc->Is(CT_SPAREN_OPEN))
- {
- // Set the parent for parenthesis and change parenthesis type
- if ( prev->Is(CT_IF)
- || prev->Is(CT_CONSTEXPR)
- || prev->Is(CT_ELSEIF)
- || prev->Is(CT_WHILE)
- || prev->Is(CT_WHILE_OF_DO)
- || prev->Is(CT_DO)
- || prev->Is(CT_FOR)
- || prev->Is(CT_SWITCH)
- || prev->Is(CT_CATCH)
- || prev->Is(CT_SYNCHRONIZED)
- || prev->Is(CT_D_VERSION)
- || prev->Is(CT_D_VERSION_IF)
- || prev->Is(CT_D_SCOPE)
- || prev->Is(CT_D_SCOPE_IF))
- {
- pc->SetType(CT_SPAREN_OPEN);
- parentType = frm.top().type;
- frm.sparen_count++;
- }
- else if (prev->Is(CT_FUNCTION))
- {
- pc->SetType(CT_FPAREN_OPEN);
- parentType = CT_FUNCTION;
- }
- // NS_ENUM and NS_OPTIONS are followed by a (type, name) pair
- else if ( prev->Is(CT_ENUM)
- && language_is_set(LANG_OC))
- {
- // Treat both as CT_ENUM since the syntax is identical
- pc->SetType(CT_FPAREN_OPEN);
- parentType = CT_ENUM;
- }
- else if (prev->Is(CT_DECLSPEC)) // Issue 1289
- {
- parentType = CT_DECLSPEC;
- }
- // else: no need to set parent
- }
- else // must be CT_BRACE_OPEN
- {
- // Set the parent for open braces
- if (frm.top().stage != brace_stage_e::NONE)
- {
- parentType = frm.top().type;
- }
- else if ( prev->Is(CT_ASSIGN)
- && (prev->GetStr()[0] == '='))
- {
- parentType = CT_ASSIGN;
- }
- else if ( prev->Is(CT_RETURN)
- && language_is_set(LANG_CPP))
- {
- parentType = CT_RETURN;
- }
- // Carry through CT_ENUM parent in NS_ENUM (type, name) {
- // only to help the vim command }
- else if ( prev->Is(CT_FPAREN_CLOSE)
- && language_is_set(LANG_OC)
- && prev->GetParentType() == CT_ENUM)
- {
- parentType = CT_ENUM;
- }
- else if (prev->Is(CT_FPAREN_CLOSE))
- {
- parentType = CT_FUNCTION;
- }
- // else: no need to set parent
- }
- }
- }
-
- /*
- * Adjust the level for opens & create a stack entry
- * Note that CT_VBRACE_OPEN has already been handled.
- */
- if ( pc->Is(CT_BRACE_OPEN)
- || pc->Is(CT_PAREN_OPEN)
- || pc->Is(CT_FPAREN_OPEN)
- || pc->Is(CT_SPAREN_OPEN)
- || pc->Is(CT_ANGLE_OPEN)
- || pc->Is(CT_MACRO_OPEN)
- || pc->Is(CT_SQUARE_OPEN))
- {
- frm.level++;
-
- if ( pc->Is(CT_BRACE_OPEN)
- || pc->Is(CT_MACRO_OPEN))
- {
- // Issue #1813
- bool single = false;
-
- if (pc->GetParentType() == CT_NAMESPACE)
- {
- LOG_FMT(LBCSPOP, "%s(%d): parent type is NAMESPACE\n",
- __func__, __LINE__);
- Chunk *tmp = frm.top().pc;
-
- if ( tmp != nullptr
- && tmp->GetParentType() == CT_NAMESPACE)
- {
- LOG_FMT(LBCSPOP, "%s(%d): tmp->GetParentType() is NAMESPACE\n",
- __func__, __LINE__);
-
- log_rule_B("indent_namespace");
- log_rule_B("indent_namespace_single_indent");
-
- if ( options::indent_namespace()
- && options::indent_namespace_single_indent())
- {
- LOG_FMT(LBCSPOP, "%s(%d): Options are SINGLE\n",
- __func__, __LINE__);
- single = true;
- }
- }
- }
- LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s, parent type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
-
- if (!single)
- {
- frm.brace_level++;
- LOG_FMT(LBCSPOP, "%s(%d): frm.brace_level increased to %zu\n",
- __func__, __LINE__, frm.brace_level);
- }
- }
- frm.push(pc, __func__, __LINE__);
- frm.top().parent = parentType;
- pc->SetParentType(parentType);
- }
- // Issue #2281
-
- if ( pc->Is(CT_BRACE_OPEN)
- && pc->GetParentType() == CT_SWITCH)
- {
- size_t idx = frm.size();
- LOG_FMT(LBCSPOP, "%s(%d): idx is %zu\n",
- __func__, __LINE__, idx);
- Chunk *saved = frm.at(idx - 2).pc;
-
- if (saved != nullptr)
- {
- // set parent member
- pc->SetParent(saved);
- }
- }
-
- if ( pc->Is(CT_CASE)
- || pc->Is(CT_DEFAULT))
- {
- Chunk *prev = pc->GetPrevNcNnl(); // Issue #3176
-
- if ( pc->Is(CT_CASE)
- || ( pc->Is(CT_DEFAULT)
- && prev->IsNot(CT_ASSIGN)))
- {
- // it is a CT_DEFAULT from a switch
- LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- pc->SetParentType(CT_SWITCH);
- size_t idx = frm.size();
- LOG_FMT(LBCSPOP, "%s(%d): idx is %zu\n",
- __func__, __LINE__, idx);
- Chunk *saved = frm.at(idx - 2).pc;
-
- if (saved != nullptr)
- {
- // set parent member
- pc->SetParent(saved);
- }
- }
- }
-
- if (pc->Is(CT_BREAK))
- {
- LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- size_t idx = frm.size();
- LOG_FMT(LBCSPOP, "%s(%d): idx is %zu\n",
- __func__, __LINE__, idx);
- Chunk *saved = frm.at(idx - 2).pc;
-
- if (saved != nullptr)
- {
- // set parent member
- pc->SetParent(saved);
- }
- }
- const pattern_class_e patcls = get_token_pattern_class(pc->GetType());
-
- /*
- * Create a stack entry for complex statements:
- * if, elseif, switch, for, while, synchronized, using, lock, with,
- * version, CT_D_SCOPE_IF
- */
- if (patcls == pattern_class_e::BRACED)
- {
- frm.push(pc, __func__, __LINE__, (pc->Is(CT_DO) ? brace_stage_e::BRACE_DO
- : brace_stage_e::BRACE2));
- // "+ComplexBraced"
- }
- else if (patcls == pattern_class_e::PBRACED)
- {
- brace_stage_e bs = brace_stage_e::PAREN1;
-
- if ( pc->Is(CT_WHILE)
- && maybe_while_of_do(pc))
- {
- pc->SetType(CT_WHILE_OF_DO);
- bs = brace_stage_e::WOD_PAREN;
- }
- frm.push(pc, __func__, __LINE__, bs);
- // "+ComplexParenBraced"
- }
- else if (patcls == pattern_class_e::OPBRACED)
- {
- frm.push(pc, __func__, __LINE__, brace_stage_e::OP_PAREN1);
- // "+ComplexOpParenBraced");
- }
- else if (patcls == pattern_class_e::ELSE)
- {
- frm.push(pc, __func__, __LINE__, brace_stage_e::ELSEIF);
- // "+ComplexElse");
- }
-
- /*
- * Mark simple statement/expression starts
- * - after { or }
- * - after ';', but not if the paren stack top is a paren
- * - after '(' that has a parent type of CT_FOR
- */
- if ( pc->Is(CT_SQUARE_OPEN)
- || ( pc->Is(CT_BRACE_OPEN)
- && pc->GetParentType() != CT_ASSIGN)
- || pc->Is(CT_BRACE_CLOSE)
- || pc->Is(CT_VBRACE_CLOSE)
- || ( pc->Is(CT_SPAREN_OPEN)
- && pc->GetParentType() == CT_FOR)
- || pc->Is(CT_COLON)
- || pc->Is(CT_OC_END)
- || ( pc->IsSemicolon()
- && frm.top().type != CT_PAREN_OPEN
- && frm.top().type != CT_FPAREN_OPEN
- && frm.top().type != CT_SPAREN_OPEN)
- || pc->Is(CT_MACRO)) // Issue #2742
- {
- LOG_FMT(LSTMT, "%s(%d): orig line is %zu, reset1 stmt on '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->Text());
- frm.stmt_count = 0;
- frm.expr_count = 0;
- LOG_FMT(LTOK, "%s(%d): frm.stmt_count is %zu, frm.expr_count is %zu\n",
- __func__, __LINE__, frm.stmt_count, frm.expr_count);
- }
- // Mark expression starts
- LOG_FMT(LSTMT, "%s(%d): Mark expression starts: orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- Chunk *tmp = pc->GetNextNcNnl();
-
- if ( pc->Is(CT_ARITH)
- || pc->Is(CT_SHIFT)
- || pc->Is(CT_ASSIGN)
- || pc->Is(CT_CASE)
- || pc->Is(CT_COMPARE)
- || ( pc->Is(CT_STAR)
- && tmp->IsNot(CT_STAR))
- || pc->Is(CT_BOOL)
- || pc->Is(CT_MINUS)
- || pc->Is(CT_PLUS)
- || pc->Is(CT_CARET)
- || pc->Is(CT_ANGLE_OPEN)
- || pc->Is(CT_ANGLE_CLOSE)
- || pc->Is(CT_RETURN)
- || pc->Is(CT_THROW)
- || pc->Is(CT_GOTO)
- || pc->Is(CT_CONTINUE)
- || pc->Is(CT_PAREN_OPEN)
- || pc->Is(CT_FPAREN_OPEN)
- || pc->Is(CT_SPAREN_OPEN)
- || pc->Is(CT_BRACE_OPEN)
- || pc->IsSemicolon()
- || pc->Is(CT_COMMA)
- || pc->Is(CT_NOT)
- || pc->Is(CT_INV)
- || pc->Is(CT_COLON)
- || pc->Is(CT_QUESTION))
- {
- frm.expr_count = 0;
- LOG_FMT(LSTMT, "%s(%d): orig line is %zu, orig col is %zu, reset expr on '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- }
-} // parse_cleanup
-
-
-static bool check_complex_statements(ParseFrame &frm, Chunk *pc, const BraceState &braceState)
-{
- LOG_FUNC_ENTRY();
-
- brace_stage_e atest = frm.top().stage;
-
- LOG_FMT(LBCSPOP, "%s(%d): atest is %s\n",
- __func__, __LINE__, get_brace_stage_name(atest));
-
- // Turn an optional parenthesis into either a real parenthesis or a brace
- if (frm.top().stage == brace_stage_e::OP_PAREN1)
- {
- frm.top().stage = (pc->IsNot(CT_PAREN_OPEN))
- ? brace_stage_e::BRACE2
- : brace_stage_e::PAREN1;
- LOG_FMT(LBCSPOP, "%s(%d): frm.top().stage is now %s\n",
- __func__, __LINE__, get_brace_stage_name(frm.top().stage));
- }
-
- // Check for CT_ELSE after CT_IF
- while (frm.top().stage == brace_stage_e::ELSE)
- {
- if (pc->Is(CT_ELSE))
- {
- // Replace CT_IF with CT_ELSE on the stack & we are done
- frm.top().type = CT_ELSE;
- frm.top().stage = brace_stage_e::ELSEIF;
- print_stack(LBCSSWAP, "=Swap ", frm);
-
- return(true);
- }
- // Remove the CT_IF and close the statement
- LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- print_stack(LBCSPOP, "-IF-CCS ", frm);
-
- if (close_statement(frm, pc, braceState))
- {
- return(true);
- }
- }
-
- // Check for CT_IF after CT_ELSE
- if (frm.top().stage == brace_stage_e::ELSEIF)
- {
- log_rule_B("indent_else_if");
-
- if ( pc->Is(CT_IF)
- && ( !options::indent_else_if()
- || !pc->GetPrevNc()->IsNewline()))
- {
- // Replace CT_ELSE with CT_IF
- pc->SetType(CT_ELSEIF);
- frm.top().type = CT_ELSEIF;
- frm.top().stage = brace_stage_e::PAREN1;
- return(true);
- }
- // Jump to the 'expecting brace' stage
- frm.top().stage = brace_stage_e::BRACE2;
- }
-
- // Check for CT_CATCH or CT_FINALLY after CT_TRY or CT_CATCH
- while (frm.top().stage == brace_stage_e::CATCH)
- {
- if ( pc->Is(CT_CATCH)
- || pc->Is(CT_FINALLY))
- {
- // Replace CT_TRY with CT_CATCH or CT_FINALLY on the stack & we are done
- frm.top().type = pc->GetType();
-
- if (language_is_set(LANG_CS))
- {
- frm.top().stage = (pc->Is(CT_CATCH)) ? brace_stage_e::CATCH_WHEN : brace_stage_e::BRACE2;
- }
- else
- {
- // historically this used OP_PAREN1; however, to my knowledge the expression after a catch clause
- // is only optional for C# which has been handled above; therefore, this should now always expect
- // a parenthetical expression after the catch keyword and brace after the finally keyword
- frm.top().stage = (pc->Is(CT_CATCH)) ? brace_stage_e::PAREN1 : brace_stage_e::BRACE2;
- }
- print_stack(LBCSSWAP, "=Swap ", frm);
-
- return(true);
- }
- // Remove the CT_TRY and close the statement
- LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- print_stack(LBCSPOP, "-TRY-CCS ", frm);
-
- if (close_statement(frm, pc, braceState))
- {
- return(true);
- }
- }
-
- // Check for optional parenthesis and optional CT_WHEN after CT_CATCH
- if (frm.top().stage == brace_stage_e::CATCH_WHEN)
- {
- if (pc->Is(CT_PAREN_OPEN)) // this is for the paren after "catch"
- {
- // Replace CT_PAREN_OPEN with CT_SPAREN_OPEN
- pc->SetType(CT_SPAREN_OPEN);
- frm.top().type = pc->GetType();
- frm.top().stage = brace_stage_e::PAREN1;
-
- return(false);
- }
-
- if (pc->Is(CT_WHEN))
- {
- frm.top().type = pc->GetType();
- frm.top().stage = brace_stage_e::OP_PAREN1;
-
- return(true);
- }
-
- if (pc->Is(CT_BRACE_OPEN))
- {
- frm.top().stage = brace_stage_e::BRACE2;
-
- return(false);
- }
- }
-
- // Check for CT_WHILE after the CT_DO
- if (frm.top().stage == brace_stage_e::WHILE)
- {
- if (pc->Is(CT_WHILE))
- {
- pc->SetType(CT_WHILE_OF_DO);
- frm.top().type = CT_WHILE_OF_DO; //CT_WHILE;
- frm.top().stage = brace_stage_e::WOD_PAREN;
-
- return(true);
- }
- LOG_FMT(LWARN, "%s(%d): %s, orig line is %zu, Error: Expected 'while', got '%s'\n",
- __func__, __LINE__, cpd.filename.c_str(), pc->GetOrigLine(),
- pc->Text());
- LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- print_stack(LBCSPOP, "-Error ", frm);
- exit(EX_SOFTWARE);
- }
- // Insert a CT_VBRACE_OPEN, if needed
- // but not in a preprocessor
- atest = frm.top().stage;
-
- if ( pc->IsNot(CT_BRACE_OPEN)
- && !pc->TestFlags(PCF_IN_PREPROC)
- && ( (frm.top().stage == brace_stage_e::BRACE2)
- || (frm.top().stage == brace_stage_e::BRACE_DO)))
- {
- log_rule_B("indent_using_block");
-
- if ( language_is_set(LANG_CS)
- && pc->Is(CT_USING_STMT)
- && (!options::indent_using_block()))
- {
- // don't indent the using block
- }
- else
- {
- const E_Token parentType = frm.top().type;
-
- Chunk *vbrace = insert_vbrace_open_before(pc, frm);
- vbrace->SetParentType(parentType);
-
- frm.level++;
- frm.brace_level++;
- LOG_FMT(LBCSPOP, "%s(%d): frm.brace_level increased to %zu\n",
- __func__, __LINE__, frm.brace_level);
- log_pcf_flags(LBCSPOP, pc->GetFlags());
-
- frm.push(vbrace, __func__, __LINE__, brace_stage_e::NONE);
- // "+VBrace");
-
- frm.top().parent = parentType;
-
- // update the level of pc
- pc->SetLevel(frm.level);
- pc->SetBraceLevel(frm.brace_level);
-
- // Mark as a start of a statement
- frm.stmt_count = 0;
- frm.expr_count = 0;
- LOG_FMT(LTOK, "%s(%d): frm.stmt_count is %zu, frm.expr_count is %zu\n",
- __func__, __LINE__, frm.stmt_count, frm.expr_count);
- pc->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
- frm.stmt_count = 1;
- frm.expr_count = 1;
- LOG_FMT(LSTMT, "%s(%d): orig line is %zu, 2.marked '%s' as stmt start\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->Text());
- }
- }
-
- // Check for "constexpr" after CT_IF or CT_ELSEIF
- if ( frm.top().stage == brace_stage_e::PAREN1
- && ( frm.top().type == CT_IF
- || frm.top().type == CT_ELSEIF)
- && pc->Is(CT_CONSTEXPR))
- {
- return(false);
- }
-
- // Verify open parenthesis in complex statement
- if ( pc->IsNot(CT_PAREN_OPEN)
- && ( (frm.top().stage == brace_stage_e::PAREN1)
- || (frm.top().stage == brace_stage_e::WOD_PAREN)))
- {
- LOG_FMT(LWARN, "%s(%d): %s, orig line is %zu, Error: Expected '(', got '%s' for '%s'\n",
- __func__, __LINE__, cpd.filename.c_str(), pc->GetOrigLine(), pc->Text(),
- get_token_name(frm.top().type));
-
- // Throw out the complex statement
- LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- print_stack(LBCSPOP, "-Error ", frm);
- exit(EX_SOFTWARE);
- }
- return(false);
-} // check_complex_statements
-
-
-static bool handle_complex_close(ParseFrame &frm, Chunk *pc, const BraceState &braceState)
-{
- LOG_FUNC_ENTRY();
-
- if (frm.top().stage == brace_stage_e::PAREN1)
- {
- if (pc->GetNext()->GetType() == CT_WHEN)
- {
- frm.top().type = pc->GetType();
- frm.top().stage = brace_stage_e::CATCH_WHEN;
-
- return(true);
- }
- // PAREN1 always => BRACE2
- frm.top().stage = brace_stage_e::BRACE2;
- }
- else if (frm.top().stage == brace_stage_e::BRACE2)
- {
- // BRACE2: IF => ELSE, anything else => close
- if ( (frm.top().type == CT_IF)
- || (frm.top().type == CT_ELSEIF))
- {
- frm.top().stage = brace_stage_e::ELSE;
-
- // If the next chunk isn't CT_ELSE, close the statement
- Chunk *next = pc->GetNextNcNnl();
-
- if ( next->IsNullChunk()
- || next->IsNot(CT_ELSE))
- {
- LOG_FMT(LBCSPOP, "%s(%d): no CT_ELSE, pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- print_stack(LBCSPOP, "-IF-HCS ", frm);
-
- return(close_statement(frm, pc, braceState));
- }
- }
- else if ( (frm.top().type == CT_TRY)
- || (frm.top().type == CT_CATCH))
- {
- frm.top().stage = brace_stage_e::CATCH;
-
- // If the next chunk isn't CT_CATCH or CT_FINALLY, close the statement
- Chunk *next = pc->GetNextNcNnl();
-
- if ( next->IsNot(CT_CATCH)
- && next->IsNot(CT_FINALLY))
- {
- LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- print_stack(LBCSPOP, "-TRY-HCS ", frm);
-
- return(close_statement(frm, pc, braceState));
- }
- }
- else
- {
- LOG_FMT(LNOTE, "%s(%d): close_statement on %s brace_stage_e::BRACE2\n",
- __func__, __LINE__, get_token_name(frm.top().type));
- LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- print_stack(LBCSPOP, "-HCC B2 ", frm);
-
- return(close_statement(frm, pc, braceState));
- }
- }
- else if (frm.top().stage == brace_stage_e::BRACE_DO)
- {
- frm.top().stage = brace_stage_e::WHILE;
- }
- else if (frm.top().stage == brace_stage_e::WOD_PAREN)
- {
- LOG_FMT(LNOTE, "%s(%d): close_statement on %s brace_stage_e::WOD_PAREN\n",
- __func__, __LINE__, get_token_name(frm.top().type));
- frm.top().stage = brace_stage_e::WOD_SEMI;
- print_stack(LBCSPOP, "-HCC WoDP ", frm);
- }
- else if (frm.top().stage == brace_stage_e::WOD_SEMI)
- {
- LOG_FMT(LNOTE, "%s(%d): close_statement on %s brace_stage_e::WOD_SEMI\n",
- __func__, __LINE__, get_token_name(frm.top().type));
- LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- print_stack(LBCSPOP, "-HCC WoDS ", frm);
-
- return(close_statement(frm, pc, braceState));
- }
- else
- {
- // PROBLEM
- LOG_FMT(LWARN, "%s(%d): %s:%zu Error: TOS.type='%s' TOS.stage=%u\n",
- __func__, __LINE__, cpd.filename.c_str(), pc->GetOrigLine(),
- get_token_name(frm.top().type),
- (unsigned int)frm.top().stage);
- exit(EX_SOFTWARE);
- }
- return(false);
-} // handle_complex_close
-
-
-static void mark_namespace(Chunk *pns)
-{
- LOG_FUNC_ENTRY();
- // Issue #1813
- Chunk *br_close;
- bool is_using = false;
-
- Chunk *pc = pns->GetPrevNcNnl();
-
- if (pc->Is(CT_USING))
- {
- is_using = true;
- pns->SetParentType(CT_USING);
- }
- pc = pns->GetNextNcNnl();
-
- while (pc->IsNotNullChunk())
- {
- pc->SetParentType(CT_NAMESPACE);
-
- if (pc->IsNot(CT_BRACE_OPEN))
- {
- if (pc->Is(CT_SEMICOLON))
- {
- if (is_using)
- {
- pc->SetParentType(CT_USING);
- }
- return;
- }
- pc = pc->GetNextNcNnl();
- continue;
- }
- log_rule_B("indent_namespace_limit");
-
- if ( (options::indent_namespace_limit() > 0)
- && ((br_close = pc->GetClosingParen())->IsNotNullChunk()))
- {
- // br_close->GetOrigLine() is always >= pc->GetOrigLine();
- size_t numberOfLines = br_close->GetOrigLine() - pc->GetOrigLine() - 1; // Issue #2345
- LOG_FMT(LTOK, "%s(%d): br_close orig line is %zu, pc orig line is %zu\n",
- __func__, __LINE__, br_close->GetOrigLine(), pc->GetOrigLine());
- LOG_FMT(LTOK, "%s(%d): numberOfLines is %zu, indent_namespace_limit() is %d\n",
- __func__, __LINE__, numberOfLines, options::indent_namespace_limit());
-
- log_rule_B("indent_namespace_limit");
-
- if (numberOfLines > options::indent_namespace_limit())
- {
- LOG_FMT(LTOK, "%s(%d): PCF_LONG_BLOCK is set\n", __func__, __LINE__);
- pc->SetFlagBits(PCF_LONG_BLOCK);
- br_close->SetFlagBits(PCF_LONG_BLOCK);
- }
- }
- flag_parens(pc, PCF_IN_NAMESPACE, CT_NONE, CT_NAMESPACE, false);
- return;
- }
-} // mark_namespace
-
-
-static Chunk *insert_vbrace(Chunk *pc, bool after, const ParseFrame &frm)
-{
- LOG_FUNC_ENTRY();
-
- Chunk chunk;
-
- chunk.SetParentType(frm.top().type);
- chunk.SetOrigLine(pc->GetOrigLine());
- chunk.SetLevel(frm.level);
- chunk.SetPpLevel(frm.pp_level);
- chunk.SetBraceLevel(frm.brace_level);
- chunk.SetFlags(pc->GetFlags() & PCF_COPY_FLAGS);
- chunk.Str() = "";
-
- if (after)
- {
- chunk.SetOrigCol(pc->GetOrigCol());
- chunk.SetType(CT_VBRACE_CLOSE);
- return(chunk.CopyAndAddAfter(pc));
- }
- Chunk *ref = pc->GetPrev();
-
- if (ref->IsNullChunk())
- {
- return(nullptr);
- }
-
- if (!ref->TestFlags(PCF_IN_PREPROC))
- {
- chunk.ResetFlagBits(PCF_IN_PREPROC);
- }
- bool ref_is_comment = ref->IsComment(); // Issue #3351
-
- while (ref->IsCommentOrNewline())
- {
- ref->SetLevel(ref->GetLevel() + 1);
- ref->SetBraceLevel(ref->GetBraceLevel() + 1);
- ref = ref->GetPrev();
- }
-
- if (ref->IsNullChunk())
- {
- return(nullptr);
- }
-
- // Don't back into a preprocessor
- if ( !pc->TestFlags(PCF_IN_PREPROC)
- && ref->TestFlags(PCF_IN_PREPROC))
- {
- if (ref->Is(CT_PREPROC_BODY))
- {
- while ( ref->IsNotNullChunk()
- && ref->TestFlags(PCF_IN_PREPROC))
- {
- ref = ref->GetPrev();
- }
- }
- else
- {
- ref = ref->GetNext();
-
- if (ref->Is(CT_COMMENT)) // Issue #3034
- {
- ref = ref->GetNextNc();
- }
- }
- }
-
- if (ref_is_comment) // Issue #3351
- {
- ref = ref->GetNext();
- }
-
- if (ref->IsNullChunk())
- {
- return(nullptr);
- }
- chunk.SetOrigLine(ref->GetOrigLine());
- chunk.SetOrigCol(ref->GetOrigCol());
- chunk.SetColumn(ref->GetColumn() + ref->Len() + 1);
- chunk.SetPpLevel(ref->GetPpLevel()); // Issue #3055
- chunk.SetType(CT_VBRACE_OPEN);
-
- return(chunk.CopyAndAddAfter(ref));
-} // insert_vbrace
-
-
-bool close_statement(ParseFrame &frm, Chunk *pc, const BraceState &braceState)
-{
- LOG_FUNC_ENTRY();
-
- if ( pc == nullptr
- || pc->IsNullChunk())
- {
- throw invalid_argument(string(__func__) + ":" + to_string(__LINE__)
- + "args cannot be nullptr");
- }
- LOG_FMT(LTOK, "%s(%d): orig line is %zu, type is %s, '%s' type is %s, stage is %u\n",
- __func__, __LINE__, pc->GetOrigLine(),
- get_token_name(pc->GetType()), pc->Text(),
- get_token_name(frm.top().type),
- (unsigned int)frm.top().stage);
-
- if (braceState.consumed)
- {
- frm.stmt_count = 0;
- frm.expr_count = 0;
- LOG_FMT(LSTMT, "%s(%d): orig line is %zu> reset2 stmt on '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->Text());
- }
- /*
- * Insert a CT_VBRACE_CLOSE, if needed:
- * If we are in a virtual brace and we are not ON a CT_VBRACE_CLOSE add one
- */
- Chunk *vbc = pc;
-
- if (frm.top().type == CT_VBRACE_OPEN)
- {
- // If the current token has already been consumed, then add after it
- if (braceState.consumed)
- {
- insert_vbrace_close_after(pc, frm);
- }
- else
- {
- // otherwise, add before it and consume the vbrace
- vbc = pc->GetPrevNcNnl();
-
- frm.level--;
- frm.brace_level--;
- vbc = insert_vbrace_close_after(vbc, frm);
- vbc->SetParentType(frm.top().parent);
-
- LOG_FMT(LBCSPOP, "%s(%d): frm.brace_level decreased to %zu\n",
- __func__, __LINE__, frm.brace_level);
- log_pcf_flags(LBCSPOP, pc->GetFlags());
- LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
-
- // Update the token level
- pc->SetLevel(frm.level);
- pc->SetBraceLevel(frm.brace_level);
-
- print_stack(LBCSPOP, "-CS VB ", frm);
-
- // And repeat the close
- close_statement(frm, pc, braceState);
- return(true);
- }
- }
-
- // See if we are done with a complex statement
- if (frm.top().stage != brace_stage_e::NONE)
- {
- if (handle_complex_close(frm, vbc, braceState))
- {
- return(true);
- }
- }
- return(false);
-} // close_statement
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/brace_cleanup.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/brace_cleanup.h
deleted file mode 100644
index e281d2e3..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/brace_cleanup.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * @file brace_cleanup.h
- * prototypes for brace_cleanup.cpp
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef BRACE_CLEANUP_H_INCLUDED
-#define BRACE_CLEANUP_H_INCLUDED
-
-#include "uncrustify_types.h"
-// necessary to not sort
-#include "ParseFrame.h"
-
-/**
- * Scans through the whole list and does stuff.
- * It has to do some tricks to parse preprocessors.
- */
-void brace_cleanup();
-
-
-#endif /* BRACE_CLEANUP_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/braces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/braces.cpp
deleted file mode 100644
index 1737e79e..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/braces.cpp
+++ /dev/null
@@ -1,1697 +0,0 @@
-/**
- * @file braces.cpp
- * Adds or removes braces.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "braces.h"
-
-#include "calculate_closing_brace_position.h"
-#include "combine_tools.h"
-#include "newlines.h"
-#include "prototypes.h"
-
-constexpr static auto LCURRENT = LBR;
-
-using namespace uncrustify;
-
-using std::vector;
-
-
-//! Converts a single brace into a virtual brace
-static void convert_brace(Chunk *br);
-
-
-//! Converts a single virtual brace into a real brace
-static void convert_vbrace(Chunk *br);
-
-
-static void convert_vbrace_to_brace();
-
-
-//! Go backwards to honor brace newline removal limits
-static void examine_braces();
-
-
-/**
- * Step forward and count the number of semi colons at the current level.
- * Abort if more than 1 or if we enter a preprocessor
- */
-static void examine_brace(Chunk *bopen);
-
-
-static void move_case_break();
-
-
-static void move_case_return();
-
-
-static void mod_case_brace();
-
-
-static void mod_full_brace_if_chain();
-
-
-/**
- * Checks to see if the braces can be removed.
- * - less than a certain length
- * - doesn't mess up if/else stuff
- */
-static bool can_remove_braces(Chunk *bopen);
-
-
-/**
- * Checks to see if the virtual braces should be converted to real braces.
- * - over a certain length
- *
- * @param vbopen Virtual Brace Open chunk
- *
- * @return true (convert to real braces) or false (leave alone)
- */
-static bool should_add_braces(Chunk *vbopen);
-
-
-/**
- * Collect the text into txt that contains the full tag name.
- * Mainly for collecting namespace 'a.b.c' or function 'foo::bar()' names.
- */
-static void append_tag_name(unc_text &txt, Chunk *pc);
-
-
-//! Remove the case brace, if allowable.
-static Chunk *mod_case_brace_remove(Chunk *br_open);
-
-
-//! Add the case brace, if allowable.
-static Chunk *mod_case_brace_add(Chunk *cl_colon);
-
-
-/**
- * Traverse the if chain and see if all can be removed
- *
- * @param br_start chunk pointing to opening brace of if clause
- */
-static void process_if_chain(Chunk *br_start);
-
-
-/**
- * Check if parenthesis pair that comes before a brace spans multiple lines
- *
- *
- * @param brace the brace chunk whose predecessing parenthesis will be checked
- *
- * @pre the brace chunk cannot be a nullptr,
- * it needs to be of type CT_BRACE_OPEN or CT_BRACE_CLOSE,
- * its parent type needs to be one of this types:
- * CT_IF, CT_ELSEIF, CT_FOR, CT_USING_STMT, CT_WHILE,
- * CT_FUNC_CLASS_DEF, CT_FUNC_DEF
- *
- * @return false: if preconditions are not met,
- * if an error occurs while counting the newline between the
- * parenthesis or
- * when no newlines are found between the parenthesis
- */
-static bool paren_multiline_before_brace(Chunk *brace)
-{
- if ( brace == nullptr
- || ( brace->IsNot(CT_BRACE_OPEN)
- && brace->IsNot(CT_BRACE_CLOSE))
- || ( brace->GetParentType() != CT_IF
- && brace->GetParentType() != CT_ELSEIF
- && brace->GetParentType() != CT_FOR
- && brace->GetParentType() != CT_USING_STMT
- && brace->GetParentType() != CT_WHILE
- && brace->GetParentType() != CT_FUNC_CLASS_DEF
- && brace->GetParentType() != CT_FUNC_DEF))
- {
- return(false);
- }
- const auto paren_t = CT_SPAREN_CLOSE;
-
- // find parenthesis pair of the if/for/while/...
- auto paren_close = brace->GetPrevType(paren_t, brace->GetLevel(), E_Scope::ALL);
- auto paren_open = paren_close->GetOpeningParen();
-
- if ( paren_close->IsNullChunk()
- || paren_open->IsNullChunk()
- || paren_close == brace
- || paren_open == paren_close)
- {
- return(false);
- }
- // determine number of lines in the parenthesis pair spans
- auto nl_count = size_t{};
- const auto ret_flag = newlines_between(paren_open, paren_close, nl_count);
-
- if (!ret_flag)
- {
- LOG_FMT(LERR, "%s(%d): newlines_between error\n", __func__, __LINE__);
- return(false);
- }
- // nl_count = 0 -> 1 line
- return(nl_count > 0);
-}
-
-
-void do_braces()
-{
- LOG_FUNC_ENTRY();
- // Mark one-liners
- // Issue #2232 put this at the beginning
- Chunk *pc = Chunk::GetHead()->GetNextNcNnl();
-
- while (pc->IsNotNullChunk())
- {
- if ( pc->IsNot(CT_BRACE_OPEN)
- && pc->IsNot(CT_VBRACE_OPEN))
- {
- pc = pc->GetNextNcNnl();
- continue;
- }
- Chunk *br_open = pc;
- const E_Token brc_type = E_Token(pc->GetType() + 1); // corresponds to closing type
- // Detect empty bodies
- Chunk *tmp = pc->GetNextNcNnl();
-
- if (tmp->Is(brc_type))
- {
- br_open->SetFlagBits(PCF_EMPTY_BODY);
- tmp->SetFlagBits(PCF_EMPTY_BODY);
- }
- // Scan for the brace close or a newline
- tmp = br_open->GetNextNc();
-
- while (tmp->IsNotNullChunk())
- {
- if (tmp->IsNewline())
- {
- break;
- }
-
- if ( tmp->Is(brc_type)
- && br_open->GetLevel() == tmp->GetLevel())
- {
- flag_series(br_open, tmp, PCF_ONE_LINER);
- break;
- }
- tmp = tmp->GetNextNc();
- }
- pc = pc->GetNextNcNnl();
- }
- log_rule_B("mod_full_brace_if_chain");
- log_rule_B("mod_full_brace_if_chain_only");
-
- if ( options::mod_full_brace_if_chain()
- || options::mod_full_brace_if_chain_only())
- {
- mod_full_brace_if_chain();
- }
- log_rule_B("mod_full_brace_if");
- log_rule_B("mod_full_brace_do");
- log_rule_B("mod_full_brace_for");
- log_rule_B("mod_full_brace_using");
- log_rule_B("mod_full_brace_while");
-
- if ((options::mod_full_brace_if() |
- options::mod_full_brace_do() |
- options::mod_full_brace_for() |
- options::mod_full_brace_using() |
- options::mod_full_brace_while()) & IARF_REMOVE)
- {
- examine_braces();
- }
- // convert vbraces if needed
- log_rule_B("mod_full_brace_if");
- log_rule_B("mod_full_brace_do");
- log_rule_B("mod_full_brace_for");
- log_rule_B("mod_full_brace_function");
- log_rule_B("mod_full_brace_using");
- log_rule_B("mod_full_brace_while");
-
- if ((options::mod_full_brace_if() |
- options::mod_full_brace_do() |
- options::mod_full_brace_for() |
- options::mod_full_brace_function() |
- options::mod_full_brace_using() |
- options::mod_full_brace_while()) & IARF_ADD)
- {
- convert_vbrace_to_brace();
- }
- log_rule_B("mod_case_brace");
-
- if (options::mod_case_brace() != IARF_IGNORE)
- {
- mod_case_brace();
- }
- log_rule_B("mod_move_case_break");
-
- if (options::mod_move_case_break())
- {
- move_case_break();
- }
- log_rule_B("mod_move_case_return");
-
- if (options::mod_move_case_return())
- {
- move_case_return();
- }
-} // do_braces
-
-
-static void examine_braces()
-{
- LOG_FUNC_ENTRY();
-
- log_rule_B("mod_full_brace_nl_block_rem_mlcond");
- const auto multiline_block = options::mod_full_brace_nl_block_rem_mlcond();
-
- log_rule_B("mod_full_brace_if");
- log_rule_B("mod_full_brace_do");
- log_rule_B("mod_full_brace_for");
- log_rule_B("mod_full_brace_using");
- log_rule_B("mod_full_brace_while");
-
- for (Chunk *pc = Chunk::GetTail(); pc->IsNotNullChunk();)
- {
- Chunk *prev = pc->GetPrevType(CT_BRACE_OPEN);
-
- if ( pc->Is(CT_BRACE_OPEN)
- && !pc->TestFlags(PCF_IN_PREPROC)
- && ( ( ( pc->GetParentType() == CT_IF
- || pc->GetParentType() == CT_ELSE
- || pc->GetParentType() == CT_ELSEIF)
- && options::mod_full_brace_if() == IARF_REMOVE)
- || ( pc->GetParentType() == CT_DO
- && options::mod_full_brace_do() == IARF_REMOVE)
- || ( pc->GetParentType() == CT_FOR
- && options::mod_full_brace_for() == IARF_REMOVE)
- || ( pc->GetParentType() == CT_USING_STMT
- && options::mod_full_brace_using() == IARF_REMOVE)
- || ( pc->GetParentType() == CT_WHILE
- && options::mod_full_brace_while() == IARF_REMOVE)))
- {
- if ( multiline_block
- && paren_multiline_before_brace(pc))
- {
- pc = prev;
- continue;
- }
- examine_brace(pc);
- }
- pc = prev;
- }
-} // examine_braces
-
-
-static bool should_add_braces(Chunk *vbopen)
-{
- LOG_FUNC_ENTRY();
- log_rule_B("mod_full_brace_nl");
- const size_t nl_max = options::mod_full_brace_nl();
-
- if (nl_max == 0)
- {
- return(false);
- }
- LOG_FMT(LBRDEL, "%s(%d): start on %zu:\n",
- __func__, __LINE__, vbopen->GetOrigLine());
-
- size_t nl_count = 0;
-
- Chunk *pc = Chunk::NullChunkPtr;
-
- for (pc = vbopen->GetNextNc(E_Scope::PREPROC);
- (pc->IsNotNullChunk() && pc->GetLevel() > vbopen->GetLevel());
- pc = pc->GetNextNc(E_Scope::PREPROC))
- {
- if (pc->IsNewline())
- {
- nl_count += pc->GetNlCount();
- }
- }
-
- if ( pc->IsNotNullChunk()
- && nl_count > nl_max
- && vbopen->GetPpLevel() == pc->GetPpLevel())
- {
- LOG_FMT(LBRDEL, "%s(%d): exceeded %zu newlines\n",
- __func__, __LINE__, nl_max);
- return(true);
- }
- return(false);
-}
-
-
-static bool can_remove_braces(Chunk *bopen)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LBRDEL, "%s(%d): start on line %zu:\n",
- __func__, __LINE__, bopen->GetOrigLine());
-
- // Cannot remove braces inside a preprocessor
- if (bopen->TestFlags(PCF_IN_PREPROC))
- {
- return(false);
- }
- Chunk *pc = bopen->GetNextNcNnl(E_Scope::PREPROC);
-
- if (pc->Is(CT_BRACE_CLOSE))
- {
- // Can't remove empty statement
- return(false);
- }
- const size_t level = bopen->GetLevel() + 1;
-
- log_rule_B("mod_full_brace_nl");
- const size_t nl_max = options::mod_full_brace_nl();
- Chunk *prev = Chunk::NullChunkPtr;
-
- size_t semi_count = 0;
- bool hit_semi = false;
- size_t nl_count = 0;
- size_t if_count = 0;
- int br_count = 0;
-
- pc = bopen->GetNextNc(E_Scope::ALL);
- LOG_FMT(LBRDEL, "%s(%d): - begin with token '%s', orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
-
- while ( pc->IsNotNullChunk()
- && pc->GetLevel() >= level)
- {
- LOG_FMT(LBRDEL, "%s(%d): test token '%s', orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
-
- if (pc->TestFlags(PCF_IN_PREPROC))
- {
- // Cannot remove braces that contain a preprocessor
- return(false);
- }
-
- if (pc->IsNewline())
- {
- nl_count += pc->GetNlCount();
-
- if ( nl_max > 0
- && nl_count > nl_max)
- {
- LOG_FMT(LBRDEL, "%s(%d): exceeded %zu newlines\n",
- __func__, __LINE__, nl_max);
- return(false);
- }
- }
- else
- {
- if (pc->Is(CT_BRACE_OPEN))
- {
- br_count++;
- }
- else if (pc->Is(CT_BRACE_CLOSE))
- {
- if (br_count == 0)
- {
- fprintf(stderr, "%s(%d): br_count is ZERO, cannot be decremented, at line %zu, column %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- br_count--;
-
- if (pc->GetLevel() == level)
- {
- // mean a statement in a braces { stmt; }
- // as a statement with a semicolon { stmt; };
- ++semi_count;
- hit_semi = true;
- }
- }
- else if ( ( pc->Is(CT_IF)
- || pc->Is(CT_ELSEIF))
- && br_count == 0)
- {
- if_count++;
- }
-
- if (pc->GetLevel() == level)
- {
- if ( semi_count > 0
- && hit_semi)
- {
- // should have bailed due to close brace level drop
- LOG_FMT(LBRDEL, "%s(%d): no close brace\n", __func__, __LINE__);
- return(false);
- }
- LOG_FMT(LBRDEL, "%s(%d): Text() '%s', orig line is %zu, semi_count is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), semi_count);
-
- if (pc->Is(CT_ELSE))
- {
- LOG_FMT(LBRDEL, "%s(%d): bailed on '%s' on line %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine());
- return(false);
- }
-
- if ( pc->IsSemicolon()
- || pc->Is(CT_IF)
- || pc->Is(CT_ELSEIF)
- || pc->Is(CT_FOR)
- || pc->Is(CT_DO)
- || pc->Is(CT_WHILE)
- || pc->Is(CT_USING_STMT)
- || ( pc->Is(CT_BRACE_OPEN)
- && prev->Is(CT_FPAREN_CLOSE)))
- {
- hit_semi |= pc->IsSemicolon();
-
- if (++semi_count > 1)
- {
- LOG_FMT(LBRDEL, "%s(%d): bailed on %zu because of '%s' on line %zu\n",
- __func__, __LINE__, bopen->GetOrigLine(), pc->Text(), pc->GetOrigLine());
- return(false);
- }
- }
- }
- }
- prev = pc;
- pc = pc->GetNextNc();
- }
-
- if (pc->IsNullChunk())
- {
- LOG_FMT(LBRDEL, "%s(%d): pc is null chunk\n", __func__, __LINE__);
- return(false);
- }
-
- if ( pc->Is(CT_BRACE_CLOSE)
- && pc->GetParentType() == CT_IF)
- {
- Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
- Chunk *tmp_prev = pc->GetPrevNcNnl(E_Scope::PREPROC);
-
- if ( next->Is(CT_ELSE)
- && tmp_prev->IsBraceClose()
- && tmp_prev->GetParentType() == CT_IF)
- {
- LOG_FMT(LBRDEL, "%s(%d): - bailed on '%s'[%s] on line %zu due to 'if' and 'else' sequence\n",
- __func__, __LINE__, get_token_name(pc->GetType()), get_token_name(pc->GetParentType()),
- pc->GetOrigLine());
- return(false);
- }
- }
- LOG_FMT(LBRDEL, "%s(%d): - end on '%s' on line %zu. if_count is %zu semi_count is %zu\n",
- __func__, __LINE__, get_token_name(pc->GetType()), pc->GetOrigLine(), if_count, semi_count);
-
- return( pc->Is(CT_BRACE_CLOSE)
- && pc->GetPpLevel() == bopen->GetPpLevel());
-} // can_remove_braces
-
-
-static void examine_brace(Chunk *bopen)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LBRDEL, "%s(%d): start on orig line %zu, bopen->GetLevel() is %zu\n",
- __func__, __LINE__, bopen->GetOrigLine(), bopen->GetLevel());
-
- const size_t level = bopen->GetLevel() + 1;
-
- log_rule_B("mod_full_brace_nl");
- const size_t nl_max = options::mod_full_brace_nl();
-
- Chunk *prev = Chunk::NullChunkPtr;
- size_t semi_count = 0;
- bool hit_semi = false;
- size_t nl_count = 0;
- size_t if_count = 0;
- int br_count = 0;
-
- Chunk *pc = bopen->GetNextNc();
-
- while ( pc->IsNotNullChunk()
- && pc->GetLevel() >= level)
- {
- if (pc->Is(CT_NEWLINE))
- {
- LOG_FMT(LBRDEL, "%s(%d): orig line is %zu, orig col is %zu, <Newline>\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- }
- else
- {
- LOG_FMT(LBRDEL, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- }
-
- if (pc->TestFlags(PCF_IN_PREPROC))
- {
- // Cannot remove braces that contain a preprocessor
- LOG_FMT(LBRDEL, "%s(%d): PREPROC\n", __func__, __LINE__);
- return;
- }
-
- if (pc->IsNewline())
- {
- nl_count += pc->GetNlCount();
-
- if ( nl_max > 0
- && nl_count > nl_max)
- {
- LOG_FMT(LBRDEL, "%s(%d): exceeded %zu newlines\n",
- __func__, __LINE__, nl_max);
- return;
- }
- }
- else
- {
- LOG_FMT(LBRDEL, "%s(%d): for pc->Text() '%s', pc->GetLevel() is %zu, bopen->GetLevel() is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetLevel(), bopen->GetLevel());
-
- if ( pc->Is(CT_BRACE_OPEN)
- && pc->GetLevel() == bopen->GetLevel())
- {
- br_count++;
- LOG_FMT(LBRDEL, "%s(%d): br_count is now %d, pc->GetLevel() is %zu, bopen->GetLevel() is %zu\n",
- __func__, __LINE__, br_count, pc->GetLevel(), bopen->GetLevel());
- }
- else if ( pc->Is(CT_BRACE_CLOSE)
- && pc->GetLevel() == bopen->GetLevel())
- {
- if (br_count == 0)
- {
- fprintf(stderr, "%s(%d): br_count is ZERO, cannot be decremented, at line %zu, column %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- br_count--;
- LOG_FMT(LBRDEL, "%s(%d): br_count is now %d, pc->GetLevel() is %zu, bopen->GetLevel() is %zu\n",
- __func__, __LINE__, br_count, pc->GetLevel(), bopen->GetLevel());
-
- if (br_count == 0)
- {
- Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
-
- if ( next->IsNullChunk()
- || next->IsNot(CT_BRACE_CLOSE))
- {
- LOG_FMT(LBRDEL, "%s(%d): junk after close brace\n", __func__, __LINE__);
- return;
- }
- }
- }
- else if ( ( pc->Is(CT_IF)
- || pc->Is(CT_ELSEIF))
- && br_count == 0)
- {
- if_count++;
- }
- LOG_FMT(LBRDEL, "%s(%d): pc->GetLevel() is %zu, level is %zu\n",
- __func__, __LINE__, pc->GetLevel(), level);
-
- if (pc->GetLevel() == level)
- {
- if ( semi_count > 0
- && hit_semi)
- {
- // should have bailed due to close brace level drop
- LOG_FMT(LBRDEL, "%s(%d): no close brace\n", __func__, __LINE__);
- return;
- }
- LOG_FMT(LBRDEL, "%s(%d): Text() '%s', orig line is %zu, semi_count is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), semi_count);
-
- if (pc->Is(CT_ELSE))
- {
- LOG_FMT(LBRDEL, "%s(%d): bailed on '%s' on line %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine());
- return;
- }
-
- if (prev->IsNotNullChunk())
- {
- LOG_FMT(LBRDEL, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', prev->Text '%s', prev->GetType() %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), prev->Text(), get_token_name(prev->GetType()));
- }
- else
- {
- LOG_FMT(LBRDEL, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', prev is a null chunk\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- }
- LOG_FMT(LBRDEL, "%s(%d): for pc->Text() '%s', pc->GetLevel() is %zu, bopen->GetLevel() is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetLevel(), bopen->GetLevel());
-
- if ( pc->IsSemicolon()
- || pc->Is(CT_IF)
- || pc->Is(CT_ELSEIF)
- || pc->Is(CT_FOR)
- || pc->Is(CT_DO)
- || pc->Is(CT_WHILE)
- || pc->Is(CT_SWITCH)
- || pc->Is(CT_USING_STMT)
- || ( pc->Is(CT_BRACE_OPEN)
- && pc->GetLevel() == bopen->GetLevel())) // Issue #1758
- {
- LOG_FMT(LBRDEL, "%s(%d): pc->Text() '%s', orig line is %zu, orig col is %zu, level is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
- hit_semi |= pc->IsSemicolon();
- semi_count++;
- LOG_FMT(LBRDEL, "%s(%d): semi_count is %zu\n",
- __func__, __LINE__, semi_count);
-
- if (semi_count > 1)
- {
- LOG_FMT(LBRDEL, "%s(%d): bailed on %zu because of '%s' on line %zu\n",
- __func__, __LINE__, bopen->GetOrigLine(), pc->Text(), pc->GetOrigLine());
- return;
- }
- }
- }
- }
- prev = pc;
- pc = pc->GetNext(); // Issue #1907
- }
-
- if (pc->IsNullChunk())
- {
- LOG_FMT(LBRDEL, "%s(%d): pc is nullptr\n", __func__, __LINE__);
- return;
- }
- LOG_FMT(LBRDEL, "%s(%d): - end on '%s' on line %zu. if_count is %zu, semi_count is %zu\n",
- __func__, __LINE__, get_token_name(pc->GetType()), pc->GetOrigLine(), if_count, semi_count);
-
- if (pc->Is(CT_BRACE_CLOSE))
- {
- Chunk *next = pc->GetNextNcNnl();
-
- if (next->IsNotNullChunk())
- {
- while (next->Is(CT_VBRACE_CLOSE))
- {
- next = next->GetNextNcNnl();
- }
-
- if (next->IsNotNullChunk())
- {
- LOG_FMT(LBRDEL, "%s(%d): orig line is %zu, orig col is %zu, next is '%s'\n",
- __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), get_token_name(next->GetType()));
- }
-
- if ( if_count > 0
- && ( next->Is(CT_ELSE)
- || next->Is(CT_ELSEIF)))
- {
- LOG_FMT(LBRDEL, "%s(%d): bailed on because 'else' is next and %zu ifs\n",
- __func__, __LINE__, if_count);
- return;
- }
- }
- LOG_FMT(LBRDEL, "%s(%d): semi_count is %zu\n",
- __func__, __LINE__, semi_count);
-
- if (semi_count > 0)
- {
- LOG_FMT(LBRDEL, "%s(%d): bopen->GetParentType() is %s\n",
- __func__, __LINE__, get_token_name(bopen->GetParentType()));
-
- if (bopen->GetParentType() == CT_ELSE)
- {
- Chunk *tmp_next = bopen->GetNextNcNnl();
-
- if (tmp_next->Is(CT_IF))
- {
- Chunk *tmp_prev = bopen->GetPrevNcNnl();
- LOG_FMT(LBRDEL, "%s(%d): else-if removing braces on line %zu and %zu\n",
- __func__, __LINE__, bopen->GetOrigLine(), pc->GetOrigLine());
-
- Chunk::Delete(bopen);
- Chunk::Delete(pc);
- newline_del_between(tmp_prev, tmp_next);
-
- log_rule_B("nl_else_if");
-
- if (options::nl_else_if() & IARF_ADD)
- {
- newline_add_between(tmp_prev, tmp_next);
- }
- return;
- }
- }
- // we have a pair of braces with only 1 statement inside
- LOG_FMT(LBRDEL, "%s(%d): we have a pair of braces with only 1 statement inside\n",
- __func__, __LINE__);
- LOG_FMT(LBRDEL, "%s(%d): removing braces on line %zu and %zu\n",
- __func__, __LINE__, bopen->GetOrigLine(), pc->GetOrigLine());
- convert_brace(bopen);
- convert_brace(pc);
- }
- else
- {
- LOG_FMT(LBRDEL, "%s(%d): empty statement\n", __func__, __LINE__);
- }
- }
- else
- {
- LOG_FMT(LBRDEL, "%s(%d): not a close brace? - '%s'\n",
- __func__, __LINE__, pc->Text());
- }
-} // examine_brace
-
-
-static void convert_brace(Chunk *br)
-{
- LOG_FUNC_ENTRY();
-
- if ( br == nullptr
- || br->TestFlags(PCF_KEEP_BRACE))
- {
- return;
- }
- Chunk *tmp;
-
- if (br->Is(CT_BRACE_OPEN))
- {
- br->SetType(CT_VBRACE_OPEN);
- br->Str().clear();
- tmp = br->GetPrev();
-
- if (tmp->IsNullChunk())
- {
- return;
- }
- }
- else if (br->Is(CT_BRACE_CLOSE))
- {
- br->SetType(CT_VBRACE_CLOSE);
- br->Str().clear();
- tmp = br->GetNext();
-
- if (tmp->IsNullChunk())
- {
- return;
- }
- }
- else
- {
- return;
- }
-
- if (tmp->IsNewline())
- {
- if (tmp->GetNlCount() > 1)
- {
- if (!br->TestFlags(PCF_ONE_LINER)) // Issue #2232
- {
- tmp->SetNlCount(tmp->GetNlCount() - 1);
- LOG_FMT(LBRDEL, "%s(%d): tmp new line count is %zu\n",
- __func__, __LINE__, tmp->GetNlCount());
- }
- }
- else
- {
- // Issue #2219
- // look for opening brace
- Chunk *brace = Chunk::NullChunkPtr;
-
- if (br->Is(CT_VBRACE_OPEN))
- {
- brace = tmp;
- }
- else if (br->Is(CT_VBRACE_CLOSE))
- {
- brace = br->GetOpeningParen();
-
- if (brace->IsNullChunk())
- {
- brace = br->GetPrevType(CT_BRACE_OPEN, br->GetLevel());
- }
- }
-
- if ( br->Is(CT_VBRACE_OPEN)
- || ( br->Is(CT_VBRACE_CLOSE)
- && brace->GetOrigLine() < tmp->GetOrigLine()))
- {
- if (tmp->SafeToDeleteNl())
- {
- Chunk::Delete(tmp);
- }
- }
- }
- }
-} // convert_brace
-
-
-static void convert_vbrace(Chunk *vbr)
-{
- LOG_FUNC_ENTRY();
-
- if (vbr == nullptr)
- {
- return;
- }
-
- if (vbr->Is(CT_VBRACE_OPEN))
- {
- vbr->SetType(CT_BRACE_OPEN);
- vbr->Str() = "{";
-
- /*
- * If the next chunk is a preprocessor, then move the open brace after the
- * preprocessor.
- */
- Chunk *tmp = vbr->GetNext();
-
- if (tmp->Is(CT_PREPROC))
- {
- tmp = vbr->GetNext(E_Scope::PREPROC);
- vbr->MoveAfter(tmp);
- newline_add_after(vbr);
- }
- }
- else if (vbr->Is(CT_VBRACE_CLOSE))
- {
- vbr->SetType(CT_BRACE_CLOSE);
- vbr->Str() = "}";
-
- /*
- * If the next chunk is a comment, followed by a newline, then
- * move the brace after the newline and add another newline after
- * the close brace, unless we're keeping a one-liner.
- */
- Chunk *tmp = vbr->GetNext();
-
- if ( tmp->IsComment()
- && ( !vbr->TestFlags(PCF_ONE_LINER)
- || !options::nl_if_leave_one_liners()))
- {
- tmp = tmp->GetNext();
-
- if (tmp->IsNewline())
- {
- vbr->MoveAfter(tmp);
- newline_add_after(vbr);
- }
- }
- }
-} // convert_vbrace
-
-
-static void convert_vbrace_to_brace()
-{
- LOG_FUNC_ENTRY();
-
- // Find every vbrace open
- log_rule_B("mod_full_brace_if");
- log_rule_B("mod_full_brace_if_chain");
- log_rule_B("mod_full_brace_for");
- log_rule_B("mod_full_brace_do");
- log_rule_B("mod_full_brace_while");
- log_rule_B("mod_full_brace_using");
- log_rule_B("mod_full_brace_function");
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- if (pc->IsNot(CT_VBRACE_OPEN))
- {
- continue;
- }
- auto const in_preproc = pc->TestFlags(PCF_IN_PREPROC);
-
- if ( ( ( pc->GetParentType() == CT_IF
- || pc->GetParentType() == CT_ELSE
- || pc->GetParentType() == CT_ELSEIF)
- && (options::mod_full_brace_if() & IARF_ADD)
- && !options::mod_full_brace_if_chain())
- || ( pc->GetParentType() == CT_FOR
- && (options::mod_full_brace_for() & IARF_ADD))
- || ( pc->GetParentType() == CT_DO
- && (options::mod_full_brace_do() & IARF_ADD))
- || ( pc->GetParentType() == CT_WHILE
- && (options::mod_full_brace_while() & IARF_ADD))
- || ( pc->GetParentType() == CT_USING_STMT
- && (options::mod_full_brace_using() & IARF_ADD))
- || ( pc->GetParentType() == CT_FUNC_DEF
- && (options::mod_full_brace_function() & IARF_ADD)))
- {
- // Find the matching vbrace close
- Chunk *vbc = Chunk::NullChunkPtr;
- Chunk *tmp = pc->GetNext();
-
- while (tmp->IsNotNullChunk())
- {
- if ( in_preproc
- && !tmp->TestFlags(PCF_IN_PREPROC))
- {
- // Can't leave a preprocessor
- break;
- }
-
- if ( pc->GetBraceLevel() == tmp->GetBraceLevel()
- && tmp->Is(CT_VBRACE_CLOSE)
- && pc->GetParentType() == tmp->GetParentType()
- && ((tmp->GetFlags() & PCF_IN_PREPROC) == (pc->GetFlags() & PCF_IN_PREPROC)))
- {
- vbc = tmp;
- break;
- }
- tmp = tmp->GetNext();
- }
-
- if (vbc->IsNullChunk())
- {
- continue;
- }
- // if we found a corresponding virtual closing brace
- convert_vbrace(pc); // convert both the opening
- convert_vbrace(vbc); // and closing brace
- }
- }
-} // convert_vbrace_to_brace
-
-
-Chunk *insert_comment_after(Chunk *ref, E_Token cmt_type,
- const unc_text &cmt_text)
-{
- LOG_FUNC_ENTRY();
-
- Chunk new_cmt = *ref;
-
- new_cmt.SetFlags(ref->GetFlags() & PCF_COPY_FLAGS);
- new_cmt.SetType(cmt_type);
- new_cmt.Str().clear();
-
- if (cmt_type == CT_COMMENT_CPP)
- {
- new_cmt.Str().append("// ");
- new_cmt.Str().append(cmt_text);
- }
- else
- {
- if (ref->Is(CT_PP_ELSE))
- { // make test c/ 02501 stable
- new_cmt.Str().append(" ");
- }
- new_cmt.Str().append("/* ");
- new_cmt.Str().append(cmt_text);
- new_cmt.Str().append(" */");
- }
- // TODO: expand comment type to cover other comment styles?
-
- new_cmt.SetColumn(ref->GetColumn() + ref->Len() + 1);
- new_cmt.SetOrigCol(new_cmt.GetColumn());
-
- return(new_cmt.CopyAndAddAfter(ref));
-}
-
-
-static void append_tag_name(unc_text &txt, Chunk *pc)
-{
- LOG_FUNC_ENTRY();
- Chunk *tmp = pc->GetPrevNcNnl();
-
- LOG_FMT(LMCB, "%s(%d): txt is '%s'\n",
- __func__, __LINE__, txt.c_str());
-
- // step backwards over all a::b stuff
- while (tmp->IsNotNullChunk())
- {
- if ( tmp->IsNot(CT_DC_MEMBER)
- && tmp->IsNot(CT_MEMBER))
- {
- break;
- }
- tmp = tmp->GetPrevNcNnl();
- pc = tmp;
-
- if (!tmp->IsWord())
- {
- break;
- }
- }
- txt += pc->GetStr();
- LOG_FMT(LMCB, "%s(%d): txt is '%s'\n",
- __func__, __LINE__, txt.c_str());
-
- pc = pc->GetNextNcNnl();
-
- while (pc->IsNotNullChunk())
- {
- if ( pc->IsNot(CT_DC_MEMBER)
- && pc->IsNot(CT_MEMBER))
- {
- break;
- }
- txt += pc->GetStr();
- LOG_FMT(LMCB, "%s(%d): txt is '%s'\n",
- __func__, __LINE__, txt.c_str());
- pc = pc->GetNextNcNnl();
-
- if (pc->IsNotNullChunk())
- {
- txt += pc->GetStr();
- LOG_FMT(LMCB, "%s(%d): txt is '%s'\n",
- __func__, __LINE__, txt.c_str());
- }
- pc = pc->GetNextNcNnl();
- }
-} // append_tag_name
-
-
-void add_long_closebrace_comment()
-{
- LOG_FUNC_ENTRY();
- Chunk *fcn_pc = Chunk::NullChunkPtr;
- Chunk *sw_pc = Chunk::NullChunkPtr;
- Chunk *ns_pc = Chunk::NullChunkPtr;
- Chunk *cl_pc = Chunk::NullChunkPtr;
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- if ( pc->Is(CT_FUNC_DEF)
- || pc->Is(CT_OC_MSG_DECL))
- {
- fcn_pc = pc;
- }
- else if (pc->Is(CT_SWITCH))
- {
- // pointless, since it always has the text "switch"
- sw_pc = pc;
- }
- else if (pc->Is(CT_NAMESPACE))
- {
- ns_pc = pc;
- }
- else if (pc->Is(CT_CLASS))
- {
- cl_pc = pc;
- }
-
- if ( pc->IsNot(CT_BRACE_OPEN)
- || pc->TestFlags(PCF_IN_PREPROC))
- {
- continue;
- }
- Chunk *br_open = pc;
- size_t nl_count = 0;
-
- Chunk *tmp = pc;
-
- while ((tmp = tmp->GetNext(E_Scope::PREPROC))->IsNotNullChunk())
- {
- if (tmp->IsNewline())
- {
- nl_count += tmp->GetNlCount();
- continue;
- }
-
- // handle only matching closing braces, skip other chunks
- if ( tmp->GetLevel() != br_open->GetLevel()
- || tmp->IsNot(CT_BRACE_CLOSE))
- {
- continue;
- }
- Chunk *br_close = tmp;
-
- tmp = tmp->GetNext();
-
- // check for a possible end semicolon
- if (tmp->Is(CT_SEMICOLON))
- {
- // set br_close to the semi token,
- // as br_close is used to add the comment after it
- br_close = tmp;
- tmp = tmp->GetNext();
- }
-
- // make sure a newline follows in order to not overwrite an already
- // existring comment
- if ( tmp->IsNotNullChunk()
- && !tmp->IsNewline())
- {
- break;
- }
- size_t nl_min = 0;
- Chunk *tag_pc = Chunk::NullChunkPtr;
- unc_text xstr;
-
- if ( br_open->GetParentType() == CT_FUNC_DEF
- || br_open->GetParentType() == CT_OC_MSG_DECL)
- {
- log_rule_B("mod_add_long_function_closebrace_comment");
- nl_min = options::mod_add_long_function_closebrace_comment();
- tag_pc = fcn_pc;
-
- if (tag_pc->IsNotNullChunk())
- {
- append_tag_name(xstr, tag_pc);
- LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
- __func__, __LINE__, xstr.c_str());
- }
- }
- else if ( br_open->GetParentType() == CT_SWITCH
- && sw_pc != nullptr)
- {
- log_rule_B("mod_add_long_switch_closebrace_comment");
- nl_min = options::mod_add_long_switch_closebrace_comment();
- tag_pc = sw_pc;
- xstr = sw_pc->GetStr();
- LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
- __func__, __LINE__, xstr.c_str());
- }
- else if ( br_open->GetParentType() == CT_NAMESPACE
- && ns_pc != nullptr)
- {
- log_rule_B("mod_add_long_namespace_closebrace_comment");
- nl_min = options::mod_add_long_namespace_closebrace_comment();
- tag_pc = ns_pc;
- xstr = tag_pc->GetStr(); // add 'namespace' to the string
- LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
- __func__, __LINE__, xstr.c_str());
-
- // next chunk, normally is going to be the namespace name
- // append it with a space to generate "namespace xyz"
- Chunk *tmp_next = tag_pc->GetNextNcNnl();
-
- if (tmp_next->IsNot(CT_BRACE_OPEN)) // anonymous namespace -> ignore
- {
- xstr.append(" ");
- LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
- __func__, __LINE__, xstr.c_str());
- append_tag_name(xstr, tmp_next);
- LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
- __func__, __LINE__, xstr.c_str());
- }
- }
- else if ( br_open->GetParentType() == CT_CLASS
- && cl_pc->IsNotNullChunk()
- && ( !language_is_set(LANG_CPP) // proceed if not C++
- || br_close->Is(CT_SEMICOLON))) // else a C++ class needs to end with a semicolon
- {
- log_rule_B("mod_add_long_class_closebrace_comment");
- nl_min = options::mod_add_long_class_closebrace_comment();
- tag_pc = cl_pc;
- xstr = tag_pc->GetStr();
- LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
- __func__, __LINE__, xstr.c_str());
-
- Chunk *tmp_next = cl_pc->GetNext();
-
- if (tag_pc->IsNotNullChunk())
- {
- xstr.append(" ");
- LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
- __func__, __LINE__, xstr.c_str());
- append_tag_name(xstr, tmp_next);
- LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
- __func__, __LINE__, xstr.c_str());
- }
- }
-
- if ( nl_min > 0
- && nl_count >= nl_min
- && tag_pc->IsNotNullChunk())
- {
- // use the comment style that fits to the selected language
- const E_Token style = language_is_set(LANG_CPP | LANG_CS)
- ? CT_COMMENT_CPP : CT_COMMENT;
-
- // Add a comment after the close brace
- LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
- __func__, __LINE__, xstr.c_str());
- insert_comment_after(br_close, style, xstr);
- }
- break;
- }
- }
-} // add_long_closebrace_comment
-
-
-static void move_case_break()
-{
- LOG_FUNC_ENTRY();
- Chunk *prev = Chunk::NullChunkPtr;
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- if ( pc->Is(CT_BREAK)
- && prev->Is(CT_BRACE_CLOSE)
- && prev->GetParentType() == CT_CASE
- && pc->GetPrev()->IsNewline()
- && prev->GetPrev()->IsNewline())
- {
- prev->SwapLines(pc);
- }
- prev = pc;
- }
-}
-
-
-static void move_case_return()
-{
- LOG_FUNC_ENTRY();
- Chunk *prev = Chunk::NullChunkPtr;
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- if ( pc->Is(CT_RETURN)
- && prev->Is(CT_BRACE_CLOSE)
- && prev->GetParentType() == CT_CASE
- && pc->GetPrev()->IsNewline()
- && prev->GetPrev()->IsNewline())
- {
- // Find the end of the return statement
- while (pc->IsNot(CT_SEMICOLON))
- {
- if ( pc->Is(CT_CASE)
- || pc->Is(CT_BRACE_CLOSE))
- {
- // This may indicate a semicolon was missing in the code to format.
- // Avoid moving the return statement to prevent potential unwanted errors.
- pc = Chunk::NullChunkPtr;
- break;
- }
- pc = pc->GetNext();
- }
- pc = pc->GetNextNl();
- pc = pc->GetNextNcNnl();
-
- if (pc->IsNotNullChunk())
- {
- // Swap all lines between brace close and current token
- LOG_FMT(LMCB, "%s(%d): move line %zu before line %zu\n",
- __func__, __LINE__, prev->GetOrigLine(), pc->GetOrigLine());
- Chunk *curr = prev->GetNextNcNnl();
-
- while (curr != pc)
- {
- prev->SwapLines(curr);
- curr = prev->GetNextNcNnl();
- }
- }
- }
- prev = pc;
- }
-} // move_case_return
-
-
-static Chunk *mod_case_brace_remove(Chunk *br_open)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LMCB, "%s(%d): line %zu",
- __func__, __LINE__, br_open->GetOrigLine());
-
- // Find the matching brace close
- Chunk *next = br_open->GetNextNcNnl(E_Scope::PREPROC);
- Chunk *br_close = br_open->GetNextType(CT_BRACE_CLOSE, br_open->GetLevel(), E_Scope::PREPROC);
-
- if (br_close->IsNullChunk())
- {
- LOG_FMT(LMCB, "%s(%d): - no close\n", __func__, __LINE__);
- return(next);
- }
- // Make sure 'break', 'return', 'goto', 'case' or '}' is after the close brace
- Chunk *pc = br_close->GetNextNcNnl(E_Scope::PREPROC);
-
- if ( pc->IsNullChunk()
- || ( pc->IsNot(CT_BREAK)
- && pc->IsNot(CT_RETURN)
- && pc->IsNot(CT_CASE)
- && pc->IsNot(CT_GOTO)
- && pc->IsNot(CT_BRACE_CLOSE)))
- {
- LOG_FMT(LMCB, "%s(%d): - after '%s'\n",
- __func__, __LINE__, (pc == nullptr) ? "<null>" : get_token_name(pc->GetType()));
- return(next);
- }
-
- // scan to make sure there are no definitions at brace level between braces
- for (Chunk *tmp_pc = br_open;
- tmp_pc != br_close;
- tmp_pc = tmp_pc->GetNextNcNnl(E_Scope::PREPROC))
- {
- if ( tmp_pc->GetLevel() == (br_open->GetLevel() + 1)
- && tmp_pc->TestFlags(PCF_VAR_DEF))
- {
- LOG_FMT(LMCB, "%s(%d): - vardef on line %zu: '%s'\n",
- __func__, __LINE__, tmp_pc->GetOrigLine(), pc->Text());
- return(next);
- }
- }
-
- LOG_FMT(LMCB, "%s(%d): - removing braces on lines %zu and %zu\n",
- __func__, __LINE__, br_open->GetOrigLine(), br_close->GetOrigLine());
-
- for (Chunk *tmp_pc = br_open;
- tmp_pc != br_close;
- tmp_pc = tmp_pc->GetNextNcNnl(E_Scope::PREPROC))
- {
- if (tmp_pc->GetBraceLevel() == 0)
- {
- fprintf(stderr, "%s(%d): brace level is ZERO, cannot be decremented, at line %zu, column %zu\n",
- __func__, __LINE__, tmp_pc->GetOrigLine(), tmp_pc->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- tmp_pc->SetBraceLevel(tmp_pc->GetBraceLevel() - 1);
-
- if (tmp_pc->GetLevel() == 0)
- {
- fprintf(stderr, "%s(%d): tmp_pc->GetLevel() is ZERO, cannot be decremented, at line %zu, column %zu\n",
- __func__, __LINE__, tmp_pc->GetOrigLine(), tmp_pc->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- tmp_pc->SetLevel(tmp_pc->GetLevel() - 1);
- }
-
- next = br_open->GetPrev(E_Scope::PREPROC);
-
- Chunk::Delete(br_open);
- Chunk::Delete(br_close);
-
- return(next->GetNext(E_Scope::PREPROC));
-} // mod_case_brace_remove
-
-
-static Chunk *mod_case_brace_add(Chunk *cl_colon)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LMCB, "%s(%d): orig line %zu, orig col is %zu\n",
- __func__, __LINE__, cl_colon->GetOrigLine(), cl_colon->GetOrigCol());
-
- Chunk *pc = cl_colon;
- Chunk *last = Chunk::NullChunkPtr;
- // look for the case token to the colon
- Chunk *cas_ = cl_colon->GetPrevType(CT_CASE, cl_colon->GetLevel());
- // look for the parent
- Chunk *swit = cas_->GetParent();
- // look for the opening brace of the switch
- Chunk *open = swit->GetNextType(CT_BRACE_OPEN, swit->GetLevel());
- // look for the closing brace of the switch
- Chunk *clos = open->GetClosingParen();
-
- // find the end of the case-block
- pc = pc->GetNextNcNnl(E_Scope::PREPROC);
-
- while (pc->IsNotNullChunk())
- {
- LOG_FMT(LMCB, "%s(%d): Text() is '%s', orig line %zu, orig col is %zu, pp level is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetPpLevel());
-
- if (pc->GetLevel() == cl_colon->GetLevel())
- {
- if (pc->Is(CT_CASE))
- {
- LOG_FMT(LMCB, "%s(%d): Text() is '%s', orig line %zu, orig col is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- last = calculate_closing_brace_position(cl_colon, pc);
- break;
- }
- }
- else if (pc->GetLevel() == cl_colon->GetLevel() - 1)
- {
- if (pc == clos)
- {
- LOG_FMT(LMCB, "%s(%d): Text() is '%s', orig line %zu, orig col is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- // end of switch is reached
- last = calculate_closing_brace_position(cl_colon, pc);
- LOG_FMT(LMCB, "%s(%d): last->Text() is '%s', orig line %zu, orig col is %zu\n",
- __func__, __LINE__, last->Text(), last->GetOrigLine(), last->GetOrigCol());
- break;
- }
- }
- pc = pc->GetNextNcNnl(E_Scope::PREPROC);
- }
-
- if (last->IsNullChunk())
- {
- LOG_FMT(LMCB, "%s(%d): - last is null chunk\n", __func__, __LINE__);
- Chunk *next = cl_colon->GetNextNcNnl(E_Scope::PREPROC);
- return(next);
- }
- LOG_FMT(LMCB, "%s(%d): last->Text() is '%s', orig line %zu, orig col is %zu\n",
- __func__, __LINE__, last->Text(), last->GetOrigLine(), last->GetOrigCol());
- LOG_FMT(LMCB, "%s(%d): adding braces after '%s' on line %zu\n",
- __func__, __LINE__, cl_colon->Text(), cl_colon->GetOrigLine());
-
- Chunk chunk;
-
- chunk.SetType(CT_BRACE_OPEN);
- chunk.SetParentType(CT_CASE);
- chunk.SetOrigLine(cl_colon->GetOrigLine());
- chunk.SetOrigCol(cl_colon->GetOrigCol());
- chunk.SetLevel(cl_colon->GetLevel());
- chunk.SetPpLevel(cl_colon->GetPpLevel());
- chunk.SetBraceLevel(cl_colon->GetBraceLevel());
- chunk.SetFlags(pc->GetFlags() & PCF_COPY_FLAGS);
- chunk.Str() = "{";
- Chunk *br_open = chunk.CopyAndAddAfter(cl_colon);
-
- chunk.SetType(CT_BRACE_CLOSE);
- chunk.SetOrigLine(last->GetOrigLine());
- chunk.SetOrigCol(last->GetOrigCol());
- chunk.Str() = "}";
- Chunk *br_close = chunk.CopyAndAddAfter(last);
-
- for (pc = br_open->GetNext(E_Scope::PREPROC);
- pc != br_close;
- pc = pc->GetNext(E_Scope::PREPROC))
- {
- pc->SetLevel(pc->GetLevel() + 1);
- pc->SetBraceLevel(pc->GetBraceLevel() + 1);
- }
-
- return(br_open);
-} // mod_case_brace_add
-
-
-static void mod_case_brace()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc = Chunk::GetHead();
-
- // Make sure to start outside of a preprocessor line (see issue #3366)
- if (pc->IsPreproc())
- {
- pc = pc->GetNextNcNnlNpp();
- }
-
- while ( pc != nullptr
- && pc->IsNotNullChunk())
- {
- Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
-
- if (next->IsNullChunk())
- {
- return;
- }
- log_rule_B("mod_case_brace");
-
- if ( options::mod_case_brace() == IARF_REMOVE
- && pc->Is(CT_BRACE_OPEN)
- && pc->GetParentType() == CT_CASE)
- {
- log_rule_B("mod_case_brace - add");
- pc = mod_case_brace_remove(pc);
- }
- else if ( (options::mod_case_brace() & IARF_ADD)
- && pc->Is(CT_CASE_COLON)
- && next->IsNot(CT_BRACE_OPEN)
- && next->IsNot(CT_BRACE_CLOSE)
- && next->IsNot(CT_CASE))
- {
- log_rule_B("mod_case_brace - remove");
- pc = mod_case_brace_add(pc);
- }
- else
- {
- pc = pc->GetNextNcNnl(E_Scope::PREPROC);
- }
- }
-} // mod_case_brace
-
-
-static void process_if_chain(Chunk *br_start)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LBRCH, "%s(%d): if starts on line %zu, orig col is %zu.\n",
- __func__, __LINE__, br_start->GetOrigLine(), br_start->GetOrigCol());
-
- vector<Chunk *> braces;
-
- braces.reserve(16);
-
- bool must_have_braces = false;
- bool has_unbraced_block = false;
-
- Chunk *pc = br_start;
-
- while ( pc != nullptr
- && pc->IsNotNullChunk())
- {
- LOG_CHUNK(LTOK, pc);
-
- if (pc->Is(CT_BRACE_OPEN))
- {
- const bool tmp = can_remove_braces(pc);
- LOG_FMT(LBRCH, "%s(%d): braces.size() is %zu, line is %zu, - can%s remove %s\n",
- __func__, __LINE__, braces.size(), pc->GetOrigLine(), tmp ? "" : "not",
- get_token_name(pc->GetType()));
-
- if ( !tmp
- || options::mod_full_brace_if_chain() == 2)
- {
- must_have_braces = true;
- }
- }
- else
- {
- const bool tmp = should_add_braces(pc);
-
- if (tmp)
- {
- must_have_braces = true;
- }
- LOG_FMT(LBRCH, "%s(%d): braces.size() is %zu, line is %zu, - %s %s\n",
- __func__, __LINE__, braces.size(), pc->GetOrigLine(), tmp ? "should add" : "ignore",
- get_token_name(pc->GetType()));
-
- has_unbraced_block = true;
- }
-
- if ( options::mod_full_brace_if_chain() == 3
- && !has_unbraced_block)
- {
- must_have_braces = true;
- }
- braces.push_back(pc);
- Chunk *br_close = pc->GetClosingParen(E_Scope::PREPROC);
-
- if (br_close->IsNullChunk())
- {
- break;
- }
- braces.push_back(br_close);
-
- pc = br_close->GetNextNcNnl(E_Scope::PREPROC);
-
- if ( pc->IsNullChunk()
- || pc->IsNot(CT_ELSE))
- {
- break;
- }
- log_rule_B("mod_full_brace_if_chain_only");
-
- if (options::mod_full_brace_if_chain_only())
- {
- // There is an 'else' - we want full braces.
- must_have_braces = true;
- }
- pc = pc->GetNextNcNnl(E_Scope::PREPROC);
-
- if (pc->Is(CT_ELSEIF))
- {
- while ( pc->IsNot(CT_VBRACE_OPEN)
- && pc->IsNot(CT_BRACE_OPEN))
- {
- pc = pc->GetNextNcNnl(E_Scope::PREPROC);
- }
- }
-
- if (pc->IsNullChunk())
- {
- break;
- }
-
- if ( pc->IsNot(CT_BRACE_OPEN)
- && pc->IsNot(CT_VBRACE_OPEN))
- {
- break;
- }
- }
-
- if (must_have_braces)
- {
- LOG_FMT(LBRCH, "%s(%d): add braces on lines[%zu]:",
- __func__, __LINE__, braces.size());
-
- const auto ite = braces.rend();
-
- for (auto itc = braces.rbegin(); itc != ite; ++itc)
- {
- const auto brace = *itc;
-
- brace->SetFlagBits(PCF_KEEP_BRACE);
-
- if (brace->IsVBrace())
- {
- LOG_FMT(LBRCH, "%s(%d): %zu",
- __func__, __LINE__, brace->GetOrigLine());
- convert_vbrace(brace);
- }
- else
- {
- LOG_FMT(LBRCH, "%s(%d): {%zu}",
- __func__, __LINE__, brace->GetOrigLine());
- }
- }
-
- LOG_FMT(LBRCH, "\n");
- }
- else if (options::mod_full_brace_if_chain())
- {
- log_rule_B("mod_full_brace_if_chain");
- LOG_FMT(LBRCH, "%s(%d): remove braces on lines[%zu]:\n",
- __func__, __LINE__, braces.size());
-
- /*
- * This might run because either
- * mod_full_brace_if_chain or mod_full_brace_if_chain_only
- * is used.
- * We only want to remove braces if the first one is active.
- */
- log_rule_B("mod_full_brace_nl_block_rem_mlcond");
- const auto multiline_block = options::mod_full_brace_nl_block_rem_mlcond();
-
- LOG_FMT(LBRCH, "%s(%d): remove braces on lines:\n", __func__, __LINE__);
-
- // Issue #2229
- const auto ite = braces.end();
-
- for (auto itc = braces.begin(); itc != ite; ++itc)
- {
- const auto brace = *itc;
-
- if ( ( brace->Is(CT_BRACE_OPEN)
- || brace->Is(CT_BRACE_CLOSE))
- && (brace->GetParentType() != CT_BRACED_INIT_LIST)
- && (multiline_block ? !paren_multiline_before_brace(brace) : true))
- {
- LOG_FMT(LBRCH, "%s(%d): brace orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, brace->GetOrigLine(), brace->GetOrigCol());
- convert_brace(brace);
- }
- else
- {
- LOG_FMT(LBRCH, "%s(%d): brace orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, brace->GetOrigLine(), brace->GetOrigCol());
- }
- }
- }
-} // process_if_chain
-
-
-static void mod_full_brace_if_chain()
-{
- LOG_FUNC_ENTRY();
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if ( pc->IsBraceOpen()
- && pc->GetParentType() == CT_IF)
- {
- process_if_chain(pc);
- }
- }
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/braces.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/braces.h
deleted file mode 100644
index 763b6470..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/braces.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * @file braces.h
- * prototypes for braces.cpp
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef BRACES_H_INCLUDED
-#define BRACES_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-
-//! Change virtual braces into real braces
-void do_braces();
-
-/**
- * See the preprocessor counterpart:
- * add_long_preprocessor_conditional_block_comment
- * in output.cpp
- */
-void add_long_closebrace_comment();
-
-
-/**
- * Adds a comment after the ref chunk
- * Returns the added chunk or nullptr
- */
-Chunk *insert_comment_after(Chunk *ref, E_Token cmt_type, const unc_text &cmt_text);
-
-
-#endif /* BRACES_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/calculate_closing_brace_position.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/calculate_closing_brace_position.cpp
deleted file mode 100644
index db48a5e3..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/calculate_closing_brace_position.cpp
+++ /dev/null
@@ -1,197 +0,0 @@
-/**
- * @file calculate_closing_brace_position.cpp
- *
- * @author Guy Maurel
- * @license GPL v2+
- */
-
-#include "calculate_closing_brace_position.h"
-
-#include "chunk.h"
-
-using namespace uncrustify;
-
-
-Chunk *calculate_closing_brace_position(const Chunk *cl_colon, Chunk *pc)
-{
- LOG_FMT(LMCB, "%s(%d): cl_colon->Text() is '%s', orig line %zu, orig col is %zu, level is %zu\n",
- __func__, __LINE__, cl_colon->Text(), cl_colon->GetOrigLine(), cl_colon->GetOrigCol(), cl_colon->GetLevel());
- LOG_FMT(LMCB, "%s(%d): pc->Text() is '%s', orig line %zu, orig col is %zu, level is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
- // end of block is reached
- // look back over newline, preprocessor BUT NOT #endif
-
- // Issue #3058
-
- // examine going back the tokens: look for a "brace closing" or a "semi colon" until the colon
- // look back over comment, newline, preprocessor BUT NOT #endif
-
- size_t check_level = 0;
-
- if (pc->Is(CT_BRACE_CLOSE))
- {
- check_level = pc->GetLevel() + 1;
- }
- else
- {
- check_level = pc->GetLevel();
- }
- size_t erst_found = 0;
- Chunk *is_brace_close = Chunk::NullChunkPtr;
- Chunk *is_semicolon = Chunk::NullChunkPtr;
- Chunk *is_comment = Chunk::NullChunkPtr;
- Chunk *back = pc->GetPrevNnl();
-
- while (back->IsNotNullChunk())
- {
- if (back == cl_colon)
- {
- break;
- }
-
- if (erst_found != 0)
- {
- break;
- }
-
- if (back->GetLevel() == check_level)
- {
- if (back->IsBraceClose())
- {
- // brace_close found
- is_brace_close = back;
- LOG_FMT(LMCB, "%s(%d): BRACE_CLOSE: line is %zu, col is %zu, level is %zu\n",
- __func__, __LINE__, is_brace_close->GetOrigLine(), is_brace_close->GetOrigCol(), is_brace_close->GetLevel());
- erst_found = 3;
- }
-
- if (back->Is(CT_SEMICOLON))
- {
- // semicolon found
- is_semicolon = back;
- LOG_FMT(LMCB, "%s(%d): SEMICOLON: line is %zu, col is %zu, level is %zu\n",
- __func__, __LINE__, is_semicolon->GetOrigLine(), is_semicolon->GetOrigCol(), is_semicolon->GetLevel());
- erst_found = 4;
- }
-
- if (back->IsComment())
- {
- // comment found
- is_comment = back;
- LOG_FMT(LMCB, "%s(%d): COMMENT: line is %zu, col is %zu, level is %zu\n",
- __func__, __LINE__, back->GetOrigLine(), back->GetOrigCol(), back->GetLevel());
- }
- }
- back = back->GetPrev();
- }
- LOG_FMT(LMCB, "%s(%d): erst_found is %zu\n",
- __func__, __LINE__, erst_found);
- Chunk *last = Chunk::NullChunkPtr;
-
- if ( erst_found == 3
- || erst_found == 4)
- {
- if (is_comment->IsNotNullChunk())
- {
- Chunk *second = Chunk::NullChunkPtr;
-
- if (erst_found == 3)
- {
- second = is_brace_close;
- }
- else
- {
- // erst_found == 4
- second = is_semicolon;
- }
-
- if (second->IsNotNullChunk())
- {
- if (is_comment->GetOrigLine() == second->GetOrigLine())
- {
- last = is_comment;
-
- if (cl_colon->GetOrigLine() == is_comment->GetOrigLine())
- {
- last = is_comment->GetNext();
- }
- }
- else
- {
- last = pc->GetPrevNcNnl();
- }
- }
- else
- {
- LOG_FMT(LMCB, "\n\n%s(%d):\n", __func__, __LINE__);
- fprintf(stderr, "FATAL: second is nullptr\n");
- fprintf(stderr, "Please make a report.\n");
- exit(EX_SOFTWARE);
- }
- }
- else
- {
- last = pc->GetPrevNcNnl();
- }
- }
- else
- {
- LOG_FMT(LMCB, "\n\n%s(%d):\n", __func__, __LINE__);
- fprintf(stderr, "FATAL: erst_found is not 3 or 4\n");
- fprintf(stderr, "Please make a report.\n");
- exit(EX_SOFTWARE);
- }
-
- if (last->Is(CT_COMMENT_CPP)) // Issue #3058
- {
- last = last->GetNext();
- }
- LOG_FMT(LMCB, "%s(%d): last->Text() is '%s', orig line %zu, orig col is %zu\n",
- __func__, __LINE__, last->Text(), last->GetOrigLine(), last->GetOrigCol());
-
- if (last->IsPreproc())
- {
- // we have a preprocessor token
- while (last->IsNotNullChunk())
- {
- LOG_FMT(LMCB, "%s(%d): Text() is '%s', orig line %zu, orig col is %zu\n",
- __func__, __LINE__, last->Text(), last->GetOrigLine(), last->GetOrigCol());
-
- if (last->Is(CT_PP_ENDIF))
- {
- // look for the parent and compare the positions
- Chunk *parent_last = last->GetParent();
- int comp = parent_last->ComparePosition(cl_colon);
- LOG_FMT(LMCB, "%s(%d): comp is %d\n",
- __func__, __LINE__, comp);
-
- if (comp == -1)
- {
- // cl_colon is after parent_last ==>
- // the closing brace will be set before #endif
- Chunk *pp_start = last->GetPpStart();
- last = pp_start->GetPrevNnl();
- LOG_FMT(LMCB, "%s(%d): Text() is '%s', orig line %zu, orig col is %zu\n",
- __func__, __LINE__, last->Text(), last->GetOrigLine(), last->GetOrigCol());
- }
- else if (comp == 1)
- {
- // cl_colon is before parent_last ==>
- // the closing brace will be set after #endif
- LOG_FMT(LMCB, "%s(%d): Text() is '%s', orig line %zu, orig col is %zu\n",
- __func__, __LINE__, last->Text(), last->GetOrigLine(), last->GetOrigCol());
- }
- break;
- }
- last = last->GetPrevNcNnl();
- LOG_FMT(LMCB, "%s(%d): Text() is '%s', orig line %zu, orig col is %zu\n",
- __func__, __LINE__, last->Text(), last->GetOrigLine(), last->GetOrigCol());
-
- if (!last->IsPreproc())
- {
- break;
- }
- }
- }
- return(last);
-} // calculate_closing_brace_position
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/change_int_types.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/change_int_types.cpp
deleted file mode 100644
index 06875edb..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/change_int_types.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-/**
- * @file change_int_types.cpp
- *
- * @author Alex Henrie
- * @license GPL v2+
- */
-
-#include "change_int_types.h"
-
-#include "chunk.h"
-#include "uncrustify.h"
-
-
-using namespace uncrustify;
-
-
-static bool is_storage_keyword(const Chunk *pc)
-{
- return( strcmp(pc->Text(), "auto") == 0
- || strcmp(pc->Text(), "const") == 0
- || strcmp(pc->Text(), "extern") == 0
- || strcmp(pc->Text(), "mutable") == 0
- || strcmp(pc->Text(), "register") == 0
- || strcmp(pc->Text(), "static") == 0
- || strcmp(pc->Text(), "thread_local") == 0
- || strcmp(pc->Text(), "typedef") == 0
- || strcmp(pc->Text(), "volatile") == 0
- || strcmp(pc->Text(), "_Atomic") == 0
- || strcmp(pc->Text(), "_Thread_local") == 0);
-}
-
-
-static bool is_non_integer(const Chunk *pc)
-{
- return( strcmp(pc->Text(), "char") == 0
- || strcmp(pc->Text(), "double") == 0);
-}
-
-
-static bool find_non_storage_siblings(const Chunk *pc, Chunk * &prev, Chunk * &next)
-{
- prev = pc->GetPrevNcNnl();
- next = pc->GetNextNcNnl();
-
- // Find the last token that was not a storage keyword
- while (is_storage_keyword(prev))
- {
- prev = prev->GetPrevNcNnl();
- }
-
- // Return false if the last token indicates that this is not an integer type
- if (is_non_integer(prev))
- {
- return(false);
- }
-
- // Find the next token that is not a storage keyword
- while (is_storage_keyword(next))
- {
- next = next->GetNextNcNnl();
- }
-
- // Return false if the next token indicates that this is not an integer type
- if (is_non_integer(next))
- {
- return(false);
- }
- // Return true if this is indeed an integer type
- return(true);
-}
-
-
-static void add_or_remove_int_keyword(Chunk *pc, Chunk *sibling, iarf_e action, E_Direction dir, Chunk * &int_keyword)
-{
- if (strcmp(sibling->Text(), "int") == 0)
- {
- if (action == IARF_REMOVE)
- {
- if (sibling == int_keyword)
- {
- int_keyword = nullptr;
- }
- Chunk::Delete(sibling);
- }
- else if ( int_keyword != nullptr
- && int_keyword != sibling)
- {
- // We added an int keyword, but now we see that there already was one.
- // Keep one or the other but not both.
- if (options::mod_int_prefer_int_on_left())
- {
- Chunk::Delete(sibling);
- }
- else
- {
- Chunk::Delete(int_keyword);
- int_keyword = sibling;
- }
- }
- else
- {
- int_keyword = sibling;
- }
- }
- else
- {
- if ( action == IARF_ADD
- || action == IARF_FORCE)
- {
- if (int_keyword)
- {
- // There was already an int keyword. Either keep it and don't add a
- // new one or delete it to make way for the new one.
- if (options::mod_int_prefer_int_on_left())
- {
- return;
- }
- else
- {
- Chunk::Delete(int_keyword);
- }
- }
-
- if (dir == E_Direction::BACKWARD)
- {
- int_keyword = pc->CopyAndAddBefore(pc);
- }
- else
- {
- int_keyword = pc->CopyAndAddAfter(pc);
- }
- int_keyword->Str() = "int";
- }
- }
-} // add_or_remove_int_keyword
-
-
-void change_int_types()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *prev;
- Chunk *next;
- Chunk *int_keyword = nullptr;
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- if (strcmp(pc->Text(), "short") == 0)
- {
- if (find_non_storage_siblings(pc, prev, next))
- {
- add_or_remove_int_keyword(pc, prev, options::mod_int_short(), E_Direction::BACKWARD, int_keyword);
- add_or_remove_int_keyword(pc, next, options::mod_short_int(), E_Direction::FORWARD, int_keyword);
- }
- }
- else if (strcmp(pc->Text(), "long") == 0)
- {
- if (find_non_storage_siblings(pc, prev, next))
- {
- add_or_remove_int_keyword(pc, prev, options::mod_int_long(), E_Direction::BACKWARD, int_keyword);
- add_or_remove_int_keyword(pc, next, options::mod_long_int(), E_Direction::FORWARD, int_keyword);
- }
- }
- else if (strcmp(pc->Text(), "signed") == 0)
- {
- if (find_non_storage_siblings(pc, prev, next))
- {
- add_or_remove_int_keyword(pc, prev, options::mod_int_signed(), E_Direction::BACKWARD, int_keyword);
- add_or_remove_int_keyword(pc, next, options::mod_signed_int(), E_Direction::FORWARD, int_keyword);
- }
- }
- else if (strcmp(pc->Text(), "unsigned") == 0)
- {
- if (find_non_storage_siblings(pc, prev, next))
- {
- add_or_remove_int_keyword(pc, prev, options::mod_int_unsigned(), E_Direction::BACKWARD, int_keyword);
- add_or_remove_int_keyword(pc, next, options::mod_unsigned_int(), E_Direction::FORWARD, int_keyword);
- }
- }
- else if ( strcmp(pc->Text(), "int") != 0
- && !is_storage_keyword(pc))
- {
- int_keyword = nullptr; // We are no longer in a variable declaration
- }
- }
-} // change_int_types
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/chunk.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/chunk.cpp
deleted file mode 100644
index 125879b6..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/chunk.cpp
+++ /dev/null
@@ -1,896 +0,0 @@
-/**
- * @file chunk.cpp
- * Manages and navigates the list of chunks.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "chunk.h"
-
-#include "ListManager.h"
-#include "prototypes.h"
-#include "space.h"
-
-static ChunkListManager gChunkList; // global chunk list
-
-
-/*
- * Chunk class methods
- */
-
-// Null Chunk
-Chunk Chunk::NullChunk(true);
-Chunk *const Chunk::NullChunkPtr(&Chunk::NullChunk);
-
-
-void Chunk::CopyFrom(const Chunk &o)
-{
- m_type = o.m_type;
- m_parentType = o.m_parentType;
- m_origLine = o.m_origLine;
- m_origCol = o.m_origCol;
- m_origColEnd = o.m_origColEnd;
- m_origPrevSp = o.m_origPrevSp;
- m_column = o.m_column;
- m_columnIndent = o.m_columnIndent;
- m_nlCount = o.m_nlCount;
- m_nlColumn = o.m_nlColumn;
- m_level = o.m_level;
- m_braceLevel = o.m_braceLevel;
- m_ppLevel = o.m_ppLevel;
- m_afterTab = o.m_afterTab;
-
- m_flags = o.m_flags;
- m_alignmentData = o.m_alignmentData;
- m_indentData = o.m_indentData;
-
- m_next = Chunk::NullChunkPtr;
- m_prev = Chunk::NullChunkPtr;
- m_parent = Chunk::NullChunkPtr;
-
- m_str = o.m_str;
- m_trackingData = o.m_trackingData;
-}
-
-
-void Chunk::Reset()
-{
- m_type = CT_NONE;
- m_parentType = CT_NONE;
- m_origLine = 0;
- m_origCol = 0;
- m_origColEnd = 0;
- m_origPrevSp = 0;
- m_column = 0;
- m_columnIndent = 0;
- m_nlCount = 0;
- m_nlColumn = 0;
- m_level = 0;
- m_braceLevel = 0;
- m_ppLevel = 999; // use a big value to find some errors
- m_afterTab = false;
-
- m_flags = PCF_NONE;
- memset(&m_alignmentData, 0, sizeof(m_alignmentData));
- memset(&m_indentData, 0, sizeof(m_indentData));
-
- m_next = Chunk::NullChunkPtr;
- m_prev = Chunk::NullChunkPtr;
- m_parent = Chunk::NullChunkPtr;
-
- // for debugging purpose only
- m_str.clear();
- m_trackingData = nullptr;
-}
-
-
-const char *Chunk::ElidedText(char *for_the_copy) const
-{
- const char *test_it = Text();
- size_t test_it_length = strlen(test_it);
-
- size_t truncate_value = uncrustify::options::debug_truncate();
-
- if (truncate_value != 0)
- {
- if (test_it_length > truncate_value)
- {
- memset(for_the_copy, 0, 1000);
-
- if (test_it_length < truncate_value + 30)
- {
- strncpy(for_the_copy, test_it, truncate_value - 30);
- for_the_copy[truncate_value - 30] = 0;
- }
- else
- {
- strncpy(for_the_copy, test_it, truncate_value);
- for_the_copy[truncate_value] = 0;
- }
- char *message = strcat(for_the_copy, " ... <The string is truncated>");
-
- return(message);
- }
- else
- {
- return(test_it);
- }
- }
- return(test_it);
-}
-
-
-Chunk *Chunk::GetNext(const E_Scope scope) const
-{
- if (scope == E_Scope::ALL)
- {
- return(m_next);
- }
- Chunk *pc = m_next;
-
- if (TestFlags(PCF_IN_PREPROC))
- {
- // If in a preproc, return a null chunk if trying to leave
- if (!pc->TestFlags(PCF_IN_PREPROC))
- {
- return(NullChunkPtr);
- }
- return(pc);
- }
-
- // Not in a preproc, skip any preproc
- while ( pc->IsNotNullChunk()
- && pc->TestFlags(PCF_IN_PREPROC))
- {
- pc = pc->m_next;
- }
- return(pc);
-} // Chunk::GetNext
-
-
-Chunk *Chunk::GetPrev(const E_Scope scope) const
-{
- if (scope == E_Scope::ALL)
- {
- return(m_prev);
- }
- Chunk *pc = m_prev;
-
- if (TestFlags(PCF_IN_PREPROC))
- {
- // If in a preproc, return a null chunk if trying to leave
- if (!pc->TestFlags(PCF_IN_PREPROC))
- {
- return(NullChunkPtr);
- }
- return(pc);
- }
-
- // Not in a preproc, skip any preproc
- while ( pc->IsNotNullChunk()
- && pc->TestFlags(PCF_IN_PREPROC))
- {
- pc = pc->m_prev;
- }
- return(pc);
-} // Chunk::GetPrev
-
-
-static void chunk_log(Chunk *pc, const char *text);
-
-
-Chunk *Chunk::GetHead()
-{
- return(gChunkList.GetHead());
-}
-
-
-Chunk *Chunk::GetTail()
-{
- return(gChunkList.GetTail());
-}
-
-
-Chunk::T_SearchFnPtr Chunk::GetSearchFn(const E_Direction dir)
-{
- return((dir == E_Direction::FORWARD) ? &Chunk::GetNext : &Chunk::GetPrev);
-}
-
-
-Chunk *Chunk::Search(const T_CheckFnPtr checkFn, const E_Scope scope,
- const E_Direction dir, const bool cond) const
-{
- T_SearchFnPtr searchFnPtr = GetSearchFn(dir);
- Chunk *pc = const_cast<Chunk *>(this);
-
- do // loop over the chunk list
- {
- pc = (pc->*searchFnPtr)(scope); // in either direction while
- } while ( pc->IsNotNullChunk() // the end of the list was not reached yet
- && ((pc->*checkFn)() != cond)); // and the demanded chunk was not found either
-
- return(pc); // the latest chunk is the searched one
-}
-
-
-bool Chunk::IsOnSameLine(const Chunk *end) const
-{
- if (IsNullChunk())
- {
- return(false);
- }
- Chunk *tmp = GetNext();
-
- while ( tmp->IsNotNullChunk()
- && tmp != end)
- {
- if (tmp->Is(CT_NEWLINE))
- {
- return(false);
- }
- tmp = tmp->GetNext();
- }
- return(true);
-}
-
-
-Chunk *Chunk::SearchTypeLevel(const E_Token type, const E_Scope scope,
- const E_Direction dir, const int level) const
-{
- T_SearchFnPtr searchFnPtr = GetSearchFn(dir);
- Chunk *pc = const_cast<Chunk *>(this);
-
- do // loop over the chunk list
- {
- pc = (pc->*searchFnPtr)(scope); // in either direction while
- } while ( pc->IsNotNullChunk() // the end of the list was not reached yet
- && (!pc->IsTypeAndLevel(type, level))); // and the chunk was not found either
-
- return(pc); // the latest chunk is the searched one
-}
-
-
-Chunk *Chunk::SearchStringLevel(const char *cStr, const size_t len, int level,
- const E_Scope scope, const E_Direction dir) const
-{
- T_SearchFnPtr searchFnPtr = GetSearchFn(dir);
- Chunk *pc = const_cast<Chunk *>(this);
-
- do // loop over the chunk list
- {
- pc = (pc->*searchFnPtr)(scope); // in either direction while
- } while ( pc->IsNotNullChunk() // the end of the list was not reached yet
- && !pc->IsStringAndLevel(cStr, len, true, level)); // and the demanded chunk was not found either
-
- return(pc); // the latest chunk is the searched one
-}
-
-
-Chunk *Chunk::SearchPpa(const T_CheckFnPtr checkFn, const bool cond) const
-{
- if (!TestFlags(PCF_IN_PREPROC))
- {
- // if not in preprocessor, do a regular search
- return(Search(checkFn, E_Scope::ALL, E_Direction::FORWARD, cond));
- }
- Chunk *pc = GetNext();
-
- while (pc->IsNotNullChunk())
- {
- if (!pc->TestFlags(PCF_IN_PREPROC))
- {
- // Bail if we run off the end of the preprocessor directive, but return
- // the token because the caller may need to know where the search ended
- assert(pc->Is(CT_NEWLINE));
- return(pc);
- }
-
- if (pc->Is(CT_NL_CONT))
- {
- // Skip line continuation
- pc = pc->GetNext();
- continue;
- }
-
- if ((pc->*checkFn)() == cond)
- {
- // Requested token was found
- return(pc);
- }
- pc = pc->GetNext();
- }
- // Ran out of tokens
- return(Chunk::NullChunkPtr);
-}
-
-
-static void chunk_log_msg(Chunk *chunk, const log_sev_t log, const char *str)
-{
- LOG_FMT(log, "%s orig line is %zu, orig col is %zu, ",
- str, chunk->GetOrigLine(), chunk->GetOrigCol());
-
- if (chunk->Is(CT_NEWLINE))
- {
- LOG_FMT(log, "<Newline>,\n");
- }
- else if (chunk->Is(CT_VBRACE_OPEN))
- {
- LOG_FMT(log, "<VBRACE_OPEN>,\n");
- }
- else if (chunk->Is(CT_VBRACE_CLOSE))
- {
- LOG_FMT(log, "<VBRACE_CLOSE>,\n");
- }
- else
- {
- LOG_FMT(log, "Text() is '%s', type is %s,\n", chunk->Text(), get_token_name(chunk->GetType()));
- }
-}
-
-
-static void chunk_log(Chunk *pc, const char *text)
-{
- if ( pc != nullptr
- && pc->IsNotNullChunk()
- && (cpd.unc_stage != unc_stage_e::TOKENIZE)
- && (cpd.unc_stage != unc_stage_e::CLEANUP))
- {
- const log_sev_t log = LCHUNK;
- Chunk *prev = pc->GetPrev();
- Chunk *next = pc->GetNext();
-
- chunk_log_msg(pc, log, text);
-
- if ( prev->IsNotNullChunk()
- && next->IsNotNullChunk())
- {
- chunk_log_msg(prev, log, " @ between");
- chunk_log_msg(next, log, " and");
- }
- else if (next->IsNotNullChunk())
- {
- chunk_log_msg(next, log, " @ before");
- }
- else if (prev->IsNotNullChunk())
- {
- chunk_log_msg(prev, log, " @ after");
- }
- LOG_FMT(log, " stage is %s", // Issue #3034
- get_unc_stage_name(cpd.unc_stage));
- log_func_stack_inline(log);
- }
-}
-
-
-void Chunk::Delete(Chunk * &pc)
-{
- gChunkList.Remove(pc);
- delete pc;
- pc = Chunk::NullChunkPtr;
-}
-
-
-void Chunk::MoveAfter(Chunk *ref)
-{
- LOG_FUNC_ENTRY();
-
- if (ref == this)
- {
- return;
- }
- gChunkList.Remove(this);
- gChunkList.AddAfter(this, ref);
-
- // Adjust the original column
- m_column = ref->m_column + space_col_align(ref, this);
- m_origCol = m_column;
- m_origColEnd = m_origCol + Len();
-}
-
-
-void Chunk::Swap(Chunk *other)
-{
- gChunkList.Swap(this, other);
-}
-
-
-bool Chunk::IsAddress() const
-{
- if ( IsNotNullChunk()
- && ( Is(CT_BYREF)
- || ( Len() == 1
- && m_str[0] == '&'
- && IsNot(CT_OPERATOR_VAL))))
- {
- Chunk *prevc = GetPrev();
-
- if ( TestFlags(PCF_IN_TEMPLATE)
- && ( prevc->Is(CT_COMMA)
- || prevc->Is(CT_ANGLE_OPEN)))
- {
- return(false);
- }
- return(true);
- }
- return(false);
-}
-
-
-Chunk *Chunk::GetFirstChunkOnLine() const
-{
- Chunk *pc = const_cast<Chunk *>(this);
- Chunk *first = pc;
-
- pc = pc->GetPrev();
-
- while ( pc->IsNotNullChunk()
- && !pc->IsNewline())
- {
- first = pc;
- pc = pc->GetPrev();
- }
- return(first);
-}
-
-
-bool Chunk::IsLastChunkOnLine() const
-{
- if (this == Chunk::GetTail())
- {
- return(true);
- }
-
- // if the next chunk is a newline then pc is the last chunk on its line
- if (GetNext()->Is(CT_NEWLINE))
- {
- return(true);
- }
- return(false);
-}
-
-
-void Chunk::SwapLines(Chunk *other)
-{
- // to swap lines we need to find the first chunk of the lines
- Chunk *pc1 = GetFirstChunkOnLine();
- Chunk *pc2 = other->GetFirstChunkOnLine();
-
- if ( pc1->IsNullChunk()
- || pc2->IsNullChunk()
- || pc1 == pc2)
- {
- return;
- }
- /*
- * Example start:
- * ? - start1 - a1 - b1 - nl1 - ? - ref2 - start2 - a2 - b2 - nl2 - ?
- * ^- pc1 ^- pc2
- */
- Chunk *ref2 = pc2->GetPrev();
-
- // Move the line started at pc2 before pc1
- while ( pc2->IsNotNullChunk()
- && !pc2->IsNewline())
- {
- Chunk *tmp = pc2->GetNext();
- gChunkList.Remove(pc2);
- gChunkList.AddBefore(pc2, pc1);
- pc2 = tmp;
- }
- /*
- * Should now be:
- * ? - start2 - a2 - b2 - start1 - a1 - b1 - nl1 - ? - ref2 - nl2 - ?
- * ^- pc1 ^- pc2
- */
-
- // Now move the line started at pc1 after ref2
- while ( pc1->IsNotNullChunk()
- && !pc1->IsNewline())
- {
- Chunk *tmp = pc1->GetNext();
- gChunkList.Remove(pc1);
-
- if (ref2->IsNotNullChunk())
- {
- gChunkList.AddAfter(pc1, ref2);
- }
- else
- {
- gChunkList.AddHead(pc1);
- }
- ref2 = pc1;
- pc1 = tmp;
- }
- /*
- * Should now be:
- * ? - start2 - a2 - b2 - nl1 - ? - ref2 - start1 - a1 - b1 - nl2 - ?
- * ^- pc1 ^- pc2
- */
-
- /*
- * pc1 and pc2 should be the newlines for their lines.
- * swap the chunks and the new line count so that the spacing remains the same.
- */
- if ( pc1->IsNotNullChunk()
- && pc2->IsNotNullChunk())
- {
- size_t nlCount = pc1->GetNlCount();
-
- pc1->SetNlCount(pc2->GetNlCount());
- pc2->SetNlCount(nlCount);
-
- pc1->Swap(pc2);
- }
-} // Chunk::SwapLines
-
-
-void Chunk::SetResetFlags(T_PcfFlags resetBits, T_PcfFlags setBits)
-{
- if (IsNotNullChunk())
- {
- LOG_FUNC_ENTRY();
- const T_PcfFlags newFlags = (m_flags & ~resetBits) | setBits;
-
- if (m_flags != newFlags)
- {
- LOG_FMT(LSETFLG,
- "%s(%d): %016llx^%016llx=%016llx\n"
- "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s', type is %s,",
- __func__, __LINE__,
- static_cast<T_PcfFlags::int_t>(m_flags),
- static_cast<T_PcfFlags::int_t>(m_flags ^ newFlags),
- static_cast<T_PcfFlags::int_t>(newFlags),
- __func__, __LINE__, m_origLine, m_origCol, Text(), get_token_name(m_type));
- LOG_FMT(LSETFLG, " parent type is %s,\n",
- get_token_name(m_parentType));
- log_func_stack_inline(LSETFLG);
-
- LOG_FMT(LSETFLG, " before: ");
- log_pcf_flags(LSETFLG, m_flags);
- LOG_FMT(LSETFLG, " after: ");
- log_pcf_flags(LSETFLG, newFlags);
- m_flags = newFlags;
- }
- }
-}
-
-
-void Chunk::SetTypeReal(const E_Token token, const char *func, const int line)
-{
- LOG_FUNC_ENTRY();
-
- if ( IsNullChunk()
- || m_type == token)
- {
- return;
- }
- LOG_FMT(LSETTYP, "%s(%d): orig line is %zu, orig col is %zu, Text() is ",
- func, line, m_origLine, m_origCol);
-
- if (token == CT_NEWLINE)
- {
- LOG_FMT(LSETTYP, "<Newline>\n");
- }
- else
- {
- LOG_FMT(LSETTYP, "'%s'\n", Text());
- }
- LOG_FMT(LSETTYP, " type is %s, parent type is %s => new type is %s\n",
- get_token_name(m_type), get_token_name(m_parentType), get_token_name(token));
- m_type = token;
-}
-
-
-void Chunk::SetParentTypeReal(const E_Token token, const char *func, const int line)
-{
- LOG_FUNC_ENTRY();
-
- if ( IsNullChunk()
- || m_parentType == token)
- {
- return;
- }
- LOG_FMT(LSETPAR, "%s(%d): orig line is %zu, orig col is %zu, Text() is ",
- func, line, m_origLine, m_origCol);
-
- if (token == CT_NEWLINE)
- {
- LOG_FMT(LSETPAR, "<Newline>\n");
- }
- else
- {
- LOG_FMT(LSETPAR, "'%s'\n", Text());
- }
- LOG_FMT(LSETPAR, " type is %s, parent type is %s => new parent type is %s\n",
- get_token_name(m_type), get_token_name(m_parentType), get_token_name(token));
- m_parentType = token;
-}
-
-
-Chunk *Chunk::CopyAndAdd(Chunk *pos, const E_Direction dir) const
-{
-#ifdef DEBUG
- // test if this chunk is properly set
- if (m_ppLevel == 999)
- {
- fprintf(stderr, "%s(%d): pp level is not set\n", __func__, __LINE__);
- log_func_stack_inline(LSETFLG);
- log_flush(true);
- exit(EX_SOFTWARE);
- }
-
- if (m_origLine == 0)
- {
- fprintf(stderr, "%s(%d): no line number\n", __func__, __LINE__);
- log_func_stack_inline(LSETFLG);
- log_flush(true);
- exit(EX_SOFTWARE);
- }
-
- if (m_origCol == 0)
- {
- fprintf(stderr, "%s(%d): no column number\n", __func__, __LINE__);
- log_func_stack_inline(LSETFLG);
- log_flush(true);
- exit(EX_SOFTWARE);
- }
-#endif /* DEBUG */
-
- Chunk *pc = new Chunk(*this);
-
- if ( pos != nullptr
- && pos->IsNotNullChunk())
- {
- (dir == E_Direction::FORWARD) ? gChunkList.AddAfter(pc, pos) : gChunkList.AddBefore(pc, pos);
- }
- else
- {
- (dir == E_Direction::FORWARD) ? gChunkList.AddHead(pc) : gChunkList.AddTail(pc);
- }
- chunk_log(pc, "CopyAndAdd(A):");
- return(pc);
-} // Chunk::CopyAndAdd
-
-
-Chunk *Chunk::GetNextNbsb() const
-{
- Chunk *pc = const_cast<Chunk *>(this);
-
- while ( pc->Is(CT_TSQUARE)
- || pc->Is(CT_SQUARE_OPEN))
- {
- if (pc->Is(CT_SQUARE_OPEN))
- {
- pc = pc->GetClosingParen();
- }
- pc = pc->GetNextNcNnl();
- }
- return(pc);
-}
-
-
-Chunk *Chunk::GetPrevNbsb() const
-{
- Chunk *pc = const_cast<Chunk *>(this);
-
- while ( pc->Is(CT_TSQUARE)
- || pc->Is(CT_SQUARE_CLOSE))
- {
- if (pc->Is(CT_SQUARE_CLOSE))
- {
- pc = pc->GetOpeningParen();
- }
- pc = pc->GetPrevNcNnl();
- }
- return(pc);
-}
-
-
-Chunk *Chunk::GetPpStart() const
-{
- if (!IsPreproc())
- {
- return(Chunk::NullChunkPtr);
- }
- Chunk *pc = const_cast<Chunk *>(this);
-
- while (pc->IsNot(CT_PREPROC))
- {
- pc = pc->GetPrev(E_Scope::PREPROC);
- }
- return(pc);
-}
-
-
-Chunk *Chunk::SkipDcMember() const
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc = const_cast<Chunk *>(this);
- Chunk *nxt = pc->Is(CT_DC_MEMBER) ? pc : pc->GetNextNcNnl(E_Scope::ALL);
-
- while (nxt->Is(CT_DC_MEMBER))
- {
- pc = nxt->GetNextNcNnl(E_Scope::ALL);
-
- if (pc->IsNullChunk())
- {
- return(Chunk::NullChunkPtr);
- }
- nxt = pc->GetNextNcNnl(E_Scope::ALL);
- }
- return(pc);
-}
-
-
-int Chunk::ComparePosition(const Chunk *other) const
-{
- if (m_origLine < other->m_origLine)
- {
- return(-1);
- }
- else if (m_origLine == other->m_origLine)
- {
- if (m_origCol < other->m_origCol)
- {
- return(-1);
- }
- else if (m_origCol == other->m_origCol)
- {
- return(0);
- }
- }
- return(1);
-}
-
-
-bool Chunk::IsOCForinOpenParen() const
-{
- if ( language_is_set(LANG_OC)
- && Is(CT_SPAREN_OPEN)
- && GetPrevNcNnl()->Is(CT_FOR))
- {
- Chunk *nxt = const_cast<Chunk *>(this);
-
- while ( nxt->IsNotNullChunk()
- && nxt->IsNot(CT_SPAREN_CLOSE)
- && nxt->IsNot(CT_IN))
- {
- nxt = nxt->GetNextNcNnl();
- }
-
- if (nxt->Is(CT_IN))
- {
- return(true);
- }
- }
- return(false);
-}
-
-
-bool Chunk::IsStringAndLevel(const char *cStr, const size_t len,
- bool caseSensitive, const int level) const
-{
- return( ( level < 0
- || m_level == static_cast<size_t>(level))
- && Len() == len // the length is as expected
- && ( ( caseSensitive
- && memcmp(Text(), cStr, len) == 0)
- || ( !caseSensitive
- && strncasecmp(Text(), cStr, len) == 0))); // the strings are equal
-}
-
-
-Chunk *Chunk::GetClosingParen(E_Scope scope) const
-{
- if ( Is(CT_PAREN_OPEN)
- || Is(CT_SPAREN_OPEN)
- || Is(CT_FPAREN_OPEN)
- || Is(CT_TPAREN_OPEN)
- || Is(CT_BRACE_OPEN)
- || Is(CT_VBRACE_OPEN)
- || Is(CT_ANGLE_OPEN)
- || Is(CT_SQUARE_OPEN))
- {
- return(GetNextType((E_Token)(m_type + 1), m_level, scope));
- }
- return(const_cast<Chunk *>(this));
-}
-
-
-Chunk *Chunk::GetOpeningParen(E_Scope scope) const
-{
- if ( Is(CT_PAREN_CLOSE)
- || Is(CT_SPAREN_CLOSE)
- || Is(CT_FPAREN_CLOSE)
- || Is(CT_TPAREN_CLOSE)
- || Is(CT_BRACE_CLOSE)
- || Is(CT_VBRACE_CLOSE)
- || Is(CT_ANGLE_CLOSE)
- || Is(CT_SQUARE_CLOSE))
- {
- return(GetPrevType((E_Token)(m_type - 1), m_level, scope));
- }
- return(const_cast<Chunk *>(this));
-}
-
-
-bool Chunk::IsCppInheritanceAccessSpecifier() const
-{
- return( language_is_set(LANG_CPP)
- && ( Is(CT_ACCESS)
- || Is(CT_QUALIFIER))
- && ( IsString("private")
- || IsString("protected")
- || IsString("public")));
-}
-
-
-bool Chunk::IsColon() const
-{
- return( Is(CT_ACCESS_COLON)
- || Is(CT_ASM_COLON)
- || Is(CT_BIT_COLON)
- || Is(CT_CASE_COLON)
- || Is(CT_CLASS_COLON)
- || Is(CT_COLON)
- || Is(CT_COND_COLON)
- || Is(CT_CONSTR_COLON)
- || Is(CT_CS_SQ_COLON)
- || Is(CT_D_ARRAY_COLON)
- || Is(CT_FOR_COLON)
- || Is(CT_LABEL_COLON)
- || Is(CT_OC_COLON)
- || Is(CT_OC_DICT_COLON)
- || Is(CT_TAG_COLON)
- || Is(CT_WHERE_COLON));
-}
-
-
-bool Chunk::IsDoxygenComment() const
-{
- if (!IsComment())
- {
- return(false);
- }
-
- if (Len() < 3)
- {
- return(false);
- }
- // check the third character
- const char *sComment = Text();
- return( (sComment[2] == '/')
- || (sComment[2] == '!')
- || (sComment[2] == '@'));
-}
-
-
-bool Chunk::IsTypeDefinition() const
-{
- return( Is(CT_TYPE)
- || Is(CT_PTR_TYPE)
- || Is(CT_BYREF)
- || Is(CT_DC_MEMBER)
- || Is(CT_QUALIFIER)
- || Is(CT_STRUCT)
- || Is(CT_ENUM)
- || Is(CT_UNION));
-}
-
-
-bool Chunk::IsNewlineBetween(const Chunk *other) const
-{
- Chunk *pc = const_cast<Chunk *>(this);
-
- while (pc != other)
- {
- if (pc->IsNewline())
- {
- return(true);
- }
- pc = pc->GetNext();
- }
- return(false);
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/chunk.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/chunk.h
deleted file mode 100644
index fe705fe1..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/chunk.h
+++ /dev/null
@@ -1,1801 +0,0 @@
-/**
- * @file chunk.h
- * Manages and navigates the list of chunks.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef CHUNK_LIST_H_INCLUDED
-#define CHUNK_LIST_H_INCLUDED
-
-#include "uncrustify_types.h"
-// necessary to not sort it
-#include "char_table.h"
-#include "language_tools.h"
-
-
-static constexpr int ANY_LEVEL = -1;
-
-
-/**
- * Specifies which chunks should/should not be found.
- * ALL (default)
- * - return the true next/prev
- *
- * PREPROC
- * - If not in a preprocessor, skip over any encountered preprocessor stuff
- * - If in a preprocessor, fail to leave (return Chunk::NullChunkPtr)
- */
-enum class E_Scope : unsigned int
-{
- ALL, //! search in all kind of chunks
- PREPROC, //! search only in preprocessor chunks
-};
-
-
-/**
- * Specifies which direction or location an operation shall be performed.
- */
-enum class E_Direction : unsigned int
-{
- FORWARD,
- BACKWARD
-};
-
-
-class ChunkListManager;
-
-// This is the main type of this program
-class Chunk
-{
- friend ChunkListManager;
-
-public:
- //! constructors
- Chunk(bool null_c = false); // default
- Chunk(const Chunk &o); // !!! partial copy: chunk is not linked to others
-
- Chunk &operator=(const Chunk &o); // !!! partial copy: chunk is not linked to others
-
- //! whether this is a null Chunk or not
- bool IsNullChunk() const { return(null_chunk); }
- bool IsNotNullChunk() const { return(!null_chunk); }
-
- //! sets all elements of the struct to their default value
- void Reset();
-
-
- // --------- Access methods
-
- /**
- * @brief returns the type of the chunk
- */
- E_Token GetType() const;
-
- /**
- * @brief Sets the chunk type
- * @param token the type to set
- * @param func the name of the function from where this method is called (for log purposes)
- * @param line the line number from where this method is called (for log purposes)
- */
- void SetTypeReal(const E_Token token, const char *func, const int line);
-
- /**
- * @brief Returns the parent type of the chunk
- */
- E_Token GetParentType() const;
-
- /**
- * @brief Sets the type of the parent chunk
- * @param token the type to set
- * @param func the name of the function from where this method is called (for log purposes)
- * @param line the line number from where this method is called (for log purposes)
- */
- void SetParentTypeReal(const E_Token token, const char *func, const int line);
-
- /**
- * @brief Returns the parent of the chunk
- */
- Chunk *GetParent() const;
-
- /**
- * @brief Sets the parent of the chunk
- * @param parent the parent chunk to set
- */
- void SetParent(Chunk *parent);
-
- /**
- * @brief Returns the alignment data of the chunk as a const reference
- */
- const T_AlignData &GetAlignmentData() const;
-
- /**
- * @brief Returns the alignment data of the chunk as a modifiable reference
- */
- T_AlignData &AlignmentData();
-
- /**
- * @brief Returns the indentation data of the chunk as a const reference
- */
- const T_IndentData &GetIndentData() const;
-
- /**
- * @brief Returns the indentation data of the chunk as a modifiable reference
- */
- T_IndentData &IndentData();
-
- /**
- * @brief Returns the text data of the chunk as a const reference
- */
- const unc_text &GetStr() const;
-
- /**
- * @brief Returns the text data of the chunk as a modifiable reference
- */
- unc_text &Str();
-
- /**
- * @brief returns the number of characters in the chunk text string
- */
- size_t Len() const;
-
- /**
- * @brief returns the content of the chunk text as C string
- */
- const char *Text() const;
-
- /**
- * Returns a filled up (if necessary) copy of the first chars of the Text() string
- */
- const char *ElidedText(char *for_the_copy) const;
-
- /**
- * @brief Returns the tracking data of the chunk as a const reference
- */
- const track_list *GetTrackingData() const;
-
- /**
- * @brief Returns the tracking data of the chunk as a modifiable reference
- */
- track_list * &TrackingData();
-
- /**
- * @brief Returns the type of the parent chunk
- */
- E_Token GetTypeOfParent() const;
-
- /**
- * @brief Returns the chunk flags
- */
- T_PcfFlags GetFlags() const;
-
- /**
- * @brief Sets the chunk flags
- * @param flags the new chunk flags
- */
- void SetFlags(T_PcfFlags flags);
-
- /**
- * @brief Tests if some chunk flags are set
- * @param flags the flag bits to test
- * @return true if the specified bits are set, false otherwise
- */
- bool TestFlags(T_PcfFlags flags) const;
-
- /**
- * @brief Resets some of the chunk flag bits
- * @param resetBits the flag bits to reset
- */
- void ResetFlagBits(T_PcfFlags resetBits);
-
- /**
- * @brief Sets some of the chunk flag bits
- * @param setBits the flag bits to set
- */
- void SetFlagBits(T_PcfFlags setBits);
-
- /**
- * @brief Sets and reset some of the chunk flag bits
- * @param resetBits the flag bits to reset
- * @param setBits the flag bits to set
- */
- void UpdateFlagBits(T_PcfFlags resetBits, T_PcfFlags setBits);
-
- /**
- * @brief Returns the line number of the chunk in the input file
- */
- size_t GetOrigLine() const;
-
- /**
- * @brief Sets the line number of the chunk in the input file
- * @param line the line number of the chunk
- */
- void SetOrigLine(size_t line);
-
- /**
- * @brief Returns the column number of the chunk in the input file
- */
- size_t GetOrigCol() const;
-
- /**
- * @brief Sets the column number of the chunk in the input file
- * @param col the column number of the chunk
- */
- void SetOrigCol(size_t col);
-
- /**
- * @brief Returns the end column number of the chunk in the input file
- */
- size_t GetOrigColEnd() const;
-
- /**
- * @brief Sets the end column number of the chunk in the input file
- * @param col the end column number of the chunk
- */
- void SetOrigColEnd(size_t col);
-
- /**
- * @brief Returns the position of the whitespace before this chunk
- */
- size_t GetOrigPrevSp() const;
-
- /**
- * @brief Sets the position of the whitespace before this chunk
- * @param col the end column number of the chunk in the input file
- */
- void SetOrigPrevSp(size_t col);
-
- /**
- * @brief Returns the column of the chunk
- */
- size_t GetColumn() const;
-
- /**
- * @brief Sets the column of the chunk
- * @param col the column of the chunk
- */
- void SetColumn(size_t col);
-
- /**
- * @brief Returns the column indentation of the chunk
- */
- size_t GetColumnIndent() const;
-
- /**
- * @brief Sets the column indentation of the chunk
- * @param col the column indentation of the chunk
- */
- void SetColumnIndent(size_t col);
-
- /**
- * @brief Returns the number of newlines in a CT_NEWLINE chunk
- */
- size_t GetNlCount() const;
-
- /**
- * @brief Sets the number of newlines in a CT_NEWLINE chunk
- * @param cnt the number of newlines
- */
- void SetNlCount(size_t cnt);
-
- /**
- * @brief Returns the column of the newline entries
- */
- size_t GetNlColumn() const;
-
- /**
- * @brief Sets the column of the newline entries
- * @param col the number of the column
- */
- void SetNlColumn(size_t col);
-
- /**
- * @brief Returns the level of the chunk
- */
- size_t GetLevel() const;
-
- /**
- * @brief Sets the level of the chunk
- * @param col the level of the chunk
- */
- void SetLevel(size_t level);
-
- /**
- * @brief Returns the brace level of the chunk
- */
- size_t GetBraceLevel() const;
-
- /**
- * @brief Sets the brace level of the chunk
- * @param level the brace level of the chunk
- */
- void SetBraceLevel(size_t lvl);
-
- /**
- * @brief Returns the preprocessor level of the chunk
- */
- size_t GetPpLevel() const;
-
- /**
- * @brief Sets the preprocessor level of the chunk
- * @param level the preprocessor level of the chunk
- */
- void SetPpLevel(size_t lvl);
-
- /**
- * @brief Returns the after tab property of the chunk
- */
- bool GetAfterTab() const;
-
- /**
- * @brief Sets the after tab property of the chunk
- * @param afterTab the after tab property of the chunk
- */
- void SetAfterTab(bool afterTab);
-
-
- // --------- Get* chunk functions
-
- /**
- * @brief returns the head of the chunk list
- * @return pointer to the first chunk
- */
- static Chunk *GetHead();
-
- /**
- * @brief returns the tail of the chunk list
- * @return pointer to the last chunk
- */
- static Chunk *GetTail();
-
- /**
- * @brief returns the next chunk in a list of chunks
- * @param scope code region to search in
- * @return pointer to next chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetNext(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the previous chunk in a list of chunks
- * @param scope code region to search in
- * @return pointer to previous chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetPrev(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the next newline chunk
- * @param scope code region to search in
- * @return pointer to next newline chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetNextNl(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the prev newline chunk
- * @param scope code region to search in
- * @return pointer to prev newline chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetPrevNl(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the next non-newline chunk
- * @param scope code region to search in
- * @return pointer to next non-newline chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetNextNnl(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the prev non-newline chunk
- * @param scope code region to search in
- * @return pointer to prev non-newline chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetPrevNnl(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the next non-comment chunk
- * @param scope code region to search in
- * @return pointer to next non-comment chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetNextNc(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the prev non-comment chunk
- * @param scope code region to search in
- * @return pointer to prev non-comment chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetPrevNc(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the next non-comment and non-newline chunk
- * @param scope code region to search in
- * @return pointer to next non-comment and non-newline chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetNextNcNnl(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the prev non-comment and non-newline chunk
- * @param scope code region to search in
- * @return pointer to prev non-comment and non-newline chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetPrevNcNnl(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the next non-comment, non-newline, non-preprocessor chunk
- * @param scope code region to search in
- * @return pointer to next non-comment, non-newline, non-preprocessor chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetNextNcNnlNpp(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the prev non-comment, non-newline, non-preprocessor chunk
- * @param scope code region to search in
- * @return pointer to prev non-comment, non-newline, non-preprocessor chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetPrevNcNnlNpp(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the next non-preprocessor or non-comment, non-newline chunk
- * @param scope code region to search in
- * @return pointer to next non-preprocessor or non-comment, non-newline chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetNextNppOrNcNnl(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the prev non-preprocessor or non-comment, non-newline chunk
- * @param scope code region to search in
- * @return pointer to prev non-preprocessor or non-comment, non-newline chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetPrevNppOrNcNnl(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the next preprocessor aware non-comment and non-newline chunk
- * Unlike Chunk::GetNextNcNnl, this will also ignore a line continuation if
- * the starting chunk is in a preprocessor directive, and may return a newline
- * if the search reaches the end of a preprocessor directive.
- * @return pointer to next preprocessor aware non-comment and non-newline chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *PpaGetNextNcNnl() const;
-
- /**
- * @brief returns the next non-comment, non-newline, non-empty text chunk
- * @param scope code region to search in
- * @return pointer to next non-comment, non-newline, non-empty text chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetNextNcNnlNet(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the prev non-comment, non-newline, non-empty text chunk
- * @param scope code region to search in
- * @return pointer to prev non-comment, non-newline, non-empty text chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetPrevNcNnlNet(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the prev non-comment, non-newline, non-ignored chunk
- * @param scope code region to search in
- * @return pointer to prev non-comment, non-newline, non-ignored chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetPrevNcNnlNi(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the next chunk not in or part of balanced square
- * brackets. This handles stacked [] instances to accommodate
- * multi-dimensional array declarations
- * @param scope code region to search in
- * @return nullptr or the next chunk not in or part of square brackets
- */
- Chunk *GetNextNisq(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the next non-virtual brace chunk
- * @param scope code region to search in
- * @return pointer to next non-virtual brace chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetNextNvb(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the prev non-virtual brace chunk
- * @param scope code region to search in
- * @return pointer to prev non-virtual brace chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetPrevNvb(const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the next chunk of the given type at the level.
- * @param type the type to look for
- * @param level the level to match or ANY_LEVEL
- * @param scope code region to search in
- * @return pointer to the next matching chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetNextType(const E_Token type, const int level = ANY_LEVEL, const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the prev chunk of the given type at the level.
- * @param type the type to look for
- * @param level the level to match or ANY_LEVEL
- * @param scope code region to search in
- * @return pointer to the prev matching chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetPrevType(const E_Token type, int level = ANY_LEVEL, E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the next chunk that holds a given string at a given level.
- * @param cStr string to search for
- * @param len length of string
- * @param level the level to match or ANY_LEVEL
- * @param scope code region to search in
- * @return pointer to the next matching chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetNextString(const char *cStr, const size_t len, const int level, const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the prev chunk that holds a given string at a given level.
- * @param cStr string to search for
- * @param len length of string
- * @param level the level to match or ANY_LEVEL
- * @param scope code region to search in
- * @return pointer to the prev matching chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetPrevString(const char *cStr, const size_t len, const int level, const E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the next chunk that is not part of balanced square brackets.
- * This handles stacked[] instances to accommodate multidimensional arrays.
- * @return pointer to the next matching chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetNextNbsb() const;
-
- /**
- * @brief returns the prev chunk that is not part of balanced square brackets.
- * This handles stacked[] instances to accommodate multidimensional arrays.
- * @return pointer to the prev matching chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetPrevNbsb() const;
-
- /**
- * @brief returns the corresponding start chunk if the given chunk is within a
- * preprocessor directive, or Chunk::NullChunkPtr otherwise.
- * @return start chunk of the preprocessor directive or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetPpStart() const;
-
- /**
- * @brief Finds the first chunk on the line the current chunk is on.
- * This just backs up until a newline or nullptr is hit.
- *
- * given: [ a - b - c - n1 - d - e - n2 ]
- * input: [ a | b | c | n1 ] => a
- * input: [ d | e | n2 ] => d
- *
- * @return pointer to the first chunk on the line the current chunk is on.
- */
- Chunk *GetFirstChunkOnLine() const;
-
-
- // --------- Search functions
-
- /**
- * @brief defines a member function pointer for a function of type
- * Chunk *Chunk::function(const E_Scope scope)
- * that will search for a new chunk
- */
- typedef Chunk *(Chunk::*T_SearchFnPtr)(const E_Scope scope) const;
-
- /**
- * @brief defines a member function pointer for a function of type
- * bool Chunk::function() const;
- * that checks whether a chunk satisty a specific condition
- */
- typedef bool (Chunk::*T_CheckFnPtr)() const;
-
- /**
- * @brief determines the search direction to use and returns a pointer
- * to the corresponding search function.
- * @param dir search direction
- * @return pointer to search function
- */
- static T_SearchFnPtr GetSearchFn(const E_Direction dir = E_Direction::FORWARD);
-
- /**
- * @brief search for a chunk that satisfies a condition in a chunk list
- *
- * A generic function that traverses a chunks list either
- * in forward or reverse direction. The traversal continues until a
- * chunk satisfies the condition defined by the compare function.
- * Depending on the parameter cond the condition will either be
- * checked to be true or false.
- *
- * @param checkFn compare function
- * @param scope code parts to consider for search
- * @param dir search direction (forward or backward)
- * @param cond success condition
- * @return pointer to the found chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *Search(const T_CheckFnPtr checkFn, const E_Scope scope = E_Scope::ALL, const E_Direction dir = E_Direction::FORWARD, const bool cond = true) const;
-
- /**
- * @brief search for a chunk that satisfies a condition in a chunk list,
- * but being aware of preprocessor chucks.
- *
- * This function is similar to Search, except that it is tweaked to
- * handle searches inside of preprocessor directives. Specifically, if the
- * starting token is inside a preprocessor directive, it will ignore a line
- * continuation, and will abort the search if it reaches the end of the
- * directive. This function only searches forward.
- *
- * @param checkFn compare function
- * @param cond success condition
- * @return pointer to the found chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *SearchPpa(const T_CheckFnPtr checkFn, const bool cond = true) const;
-
- /**
- * @brief search a chunk of a given type and level. Traverses a chunk list in the
- * specified direction until a chunk of a given type and level is found.
- *
- * This function is a specialization of Chunk::Search.
- *
- * @param type category to search for
- * @param scope code parts to consider for search
- * @param dir search direction
- * @param level nesting level to match or ANY_LEVEL
- * @return pointer to the found chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *SearchTypeLevel(const E_Token type, const E_Scope scope = E_Scope::ALL, const E_Direction dir = E_Direction::FORWARD, const int level = ANY_LEVEL) const;
-
- /**
- * @brief searches a chunk that holds a specific string
- *
- * Traverses a chunk list either in forward or backward direction until a chunk
- * with the provided string was found. Additionally a nesting level can be
- * provided to narrow down the search.
- *
- * @param cStr string that searched chunk needs to have
- * @param len length of the string
- * @param level nesting level of the searched chunk, ignored when negative
- * @param scope code parts to consider for search
- * @param dir search direction
- * @return pointer to the found chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *SearchStringLevel(const char *cStr, const size_t len, const int level, const E_Scope scope = E_Scope::ALL, const E_Direction dir = E_Direction::FORWARD) const;
-
- /**
- * @brief returns the closing match for the current paren/brace/square.
- * @param scope chunk section to consider
- * @return pointer to the next matching chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetClosingParen(E_Scope scope = E_Scope::ALL) const;
-
- /**
- * @brief returns the opening match for the current paren/brace/square.
- * @param scope chunk section to consider
- * @return pointer to the prev matching chunk or Chunk::NullChunkPtr if no chunk was found
- */
- Chunk *GetOpeningParen(E_Scope scope = E_Scope::ALL) const;
-
-
- // --------- Is* functions
-
- /**
- * @brief checks whether the chunk is a specific token
- * @token the token to check for
- * @return true if the chunk type matches the specified token, false otherwise
- */
- bool Is(E_Token token) const;
-
- /**
- * @brief checks whether the chunk token name is a specific string
- * @param cStr string to compare token name with
- * @param caseSensitive whether to do a case sensitive or insensitive comparison
- * @return true if the chunk token name matches the specified string, false otherwise
- */
- bool IsString(const char *cStr, bool caseSensitive = true) const;
-
- /**
- * @brief checks whether the chunk is not a specific token
- * @token the token to check for
- * @return true if the chunk type does not matches the specified token, false otherwise
- */
- bool IsNot(E_Token token) const;
-
- /**
- * @brief checks whether the chunk is a newline
- * @return true if the chunk is a newline, false otherwise
- */
- bool IsNewline() const;
-
- /**
- * @brief checks whether the chunk is a comment
- * This means any kind of:
- * - single line comment
- * - multiline comment
- * - C comment
- * - C++ comment
- */
- bool IsComment() const;
-
- /**
- * @brief checks whether the chunk is valid and has an empty text
- * @return true if the chunk is valid and has an empty text
- */
- bool IsEmptyText() const;
-
- /**
- * @brief checks whether the chunk is a preprocessor
- * @return true if the chunk is a preprocessor, false otherwise
- */
- bool IsPreproc() const;
-
- /**
- * @brief checks whether the other chunk has the same preproc flags
- * @return true if the other chunk has the same preproc flags
- */
- bool IsSamePreproc(const Chunk *other) const;
-
- /**
- * @brief checks whether the chunk is either a comment or a newline
- * @return true if the chunk is either a comment or a newline, false otherwise
- */
- bool IsCommentOrNewline() const;
-
- /**
- * @brief checks whether the chunk is either a comment, a newline or ignored
- * @return true if the chunk is either a comment, a newline or ignored, false otherwise
- */
- bool IsCommentNewlineOrIgnored() const;
-
- /**
- * @brief checks whether the chunk is a comment, a newline or a preprocessor
- * @return true if the chunk is a comment, a newline or a preprocessor, false otherwise
- */
- bool IsCommentNewlineOrPreproc() const;
-
- /**
- * @brief checks whether the chunk is a preprocessor and either a comment or a newline
- * @return true if the chunk is a preprocessor and either a comment or a newline, false otherwise
- */
- bool IsCommentOrNewlineInPreproc() const;
-
- /**
- * @brief checks whether the chunk is a comment, a newline or has an empty text
- * @return true if the chunk is a comment, a newline or has an empty text
- */
- bool IsCommentNewlineOrEmptyText() const;
-
- /**
- * @brief checks whether the chunk is a single line comment
- * @return true if the chunk is a single line comment
- */
- bool IsSingleLineComment() const;
-
- /**
- * @brief checks whether the chunk is a Doxygen comment
- * @return true if the chunk is a Doxygen comment
- */
- bool IsDoxygenComment() const;
-
- /**
- * @brief checks whether the chunk is a square bracket
- * @return true if the chunk is a square bracket
- */
- bool IsSquareBracket() const;
-
- /**
- * @brief checks whether the chunk is a virtual brace
- * @return true if the chunk is a virtual brace
- */
- bool IsVBrace() const;
-
- /**
- * @brief checks whether the chunk matches a given type and level
- * @param type category to search for
- * @param level nesting level to match
- * @return true if the chunk matches a given type and level
- */
- bool IsTypeAndLevel(const E_Token type, const int level) const;
-
- /**
- * @brief checks whether the chunk matches a given string and level
- * @param cStr the expected string
- * @param len length of the string
- * @param caseSensitive whether to do a case sensitive or insensitive comparison
- * @param level nesting level of the searched chunk, ignored when negative
- * @return true if the chunk matches a given string and level
- */
- bool IsStringAndLevel(const char *cStr, const size_t len, bool caseSensitive, const int level) const;
-
- /**
- * @brief checks whether the chunk is a star/asterisk
- * @return true if the chunk is a star/asterisk
- */
- bool IsStar() const;
-
- /**
- * @brief checks whether the chunk is a colon
- * @return true if the chunk is a colon
- */
- bool IsColon() const;
-
- /**
- * @brief checks whether the chunk is a semicolon
- * @return true if the chunk is a semicolon
- */
- bool IsSemicolon() const;
-
- /**
- * @brief checks whether the chunk is a pointer operator
- * @return true if the chunk is a pointer operator
- */
- bool IsPointerOperator() const;
-
- /**
- * @brief checks whether the chunk is a pointer or a reference
- * @return true if the chunk is a pointer or a reference
- */
- bool IsPointerOrReference() const;
-
- /**
- * @brief checks whether the chunk is an inheritance access specifier
- * @return true if the chunk is an inheritance access specifier
- */
- bool IsCppInheritanceAccessSpecifier() const;
-
- /**
- * @brief checks whether the chunk is a pointer, reference or a qualifier
- * @return true if the chunk is a pointer, reference or a qualifier
- */
- bool IsPointerReferenceOrQualifier() const;
-
- /**
- * @brief checks whether the chunk is an address
- * @return true if the chunk is an address
- */
- bool IsAddress() const;
-
- /**
- * @brief checks whether the chunk is a MS reference
- * @return true if the chunk is a MS reference
- * NOTE: MS compilers for C++/CLI and WinRT use '^' instead of '*'
- * for marking up reference types vs pointer types
- */
- bool IsMsRef() const;
-
- /**
- * @brief checks whether the chunk is nullable
- * @return true if the chunk is nullable
- */
- bool IsNullable() const;
-
- /**
- * @brief Checks if a given chunk is the last on its line
- * @return true or false depending on whether a given chunk is the last on its line
- */
- bool IsLastChunkOnLine() const;
-
- /**
- * @brief checks whether the current chunk is on same line of the given 'end' chunk.
- * The current chunk must be before the 'end' chunk
- * @param end the end chunk
- * @return true if there is no newline between the current chunk and end chunk
- */
- bool IsOnSameLine(const Chunk *end) const;
-
- /**
- * @brief checks whether the chunk is an opening brace
- * @return true if the chunk is an opening brace
- */
- bool IsBraceOpen() const;
-
- /**
- * @brief checks whether the chunk is a closing brace
- * @return true if the chunk is a closing brace
- */
- bool IsBraceClose() const;
-
- /**
- * @brief checks whether the chunk is an opening parenthesis
- * @return true if the chunk is an opening parenthesis
- */
- bool IsParenOpen() const;
-
- /**
- * @brief checks whether the chunk is a closing parenthesis
- * @return true if the chunk is a closing parenthesis
- */
- bool IsParenClose() const;
-
- /**
- * @brief checks if a chunk points to the opening parentheses of a
- * for (...in...) loop in Objective-C.
- * @return true if the chunk is the opening parentheses of a for-in loop
- */
- bool IsOCForinOpenParen() const;
-
- /**
- * @brief checks whether the chunk is a type defining token
- * @return true if the chunk is a type defining token
- */
- bool IsTypeDefinition() const;
-
- /**
- * @brief checks whether the chunk is a word
- * @return true if the chunk is a word
- */
- bool IsWord() const;
-
- /**
- * @brief checks whether the chunk is an enum or an enum class
- * @return true if the chunk is an enum or an enum class
- */
- bool IsEnum() const;
-
- /**
- * @brief checks whether the chunk is a class or a struct
- * @return true if the chunk is a class or a struct
- */
- bool IsClassOrStruct() const;
-
- /**
- * @brief checks whether the chunk is a class, struct or union
- * @return true if the chunk is a class, struct or union
- */
- bool IsClassStructOrUnion() const;
-
- /**
- * @brief checks whether the chunk is a class, enum, struct or union
- * @return true if the chunk is a class, enum, struct or union
- */
- bool IsClassEnumStructOrUnion() const;
-
- /**
- * @brief checks whether there is a newline between this chunk and the other
- * @return true if there is a newline between this chunk and the other
- */
- bool IsNewlineBetween(const Chunk *other) const;
-
-
- // --------- Util functions
-
- /**
- * @brief delete the chunk from the chunk list
- * @param pc the chunk to remove from the list
- */
- static void Delete(Chunk * &pc);
-
- /**
- * @brief add a copy of this chunk after the given position in a chunk list.
- * @note If pos is NullChunk, add at the tail of the chunk list
- * @param pos insert position in list
- * @return pointer to the newly added chunk
- */
- Chunk *CopyAndAddAfter(Chunk *pos) const;
-
- /**
- * @brief add a copy of this chunk before the given position in a chunk list.
- * @note If pos is NullChunk, add at the head of the chunk list
- * @param pos insert position in list
- * @return pointer to the newly added chunk
- */
- Chunk *CopyAndAddBefore(Chunk *pos) const;
-
- /**
- * @brief move the chunk after the reference position in the chunk list
- * @param ref chunk after which to move the current chunk
- */
- void MoveAfter(Chunk *ref);
-
- /**
- * @brief swaps the place of this chunk with the given one
- * @param other the other chunk
- */
- void Swap(Chunk *other);
-
- /**
- * @brief swaps the two lines that are started by the current chunk and the other chunk
- * @param other the other chunk
- */
- void SwapLines(Chunk *other);
-
- //!
- /**
- * @brief skips to the final word/type in a :: chain
- * @return pointer to the chunk after the final word/type in a :: chain
- */
- Chunk *SkipDcMember() const;
-
- /**
- * @brief compare the positions of the chunk with another one
- * @param other the other chunk
- * @return returns -1 if this chunk comes first, +1 if it comes after, or 0.
- */
- int ComparePosition(const Chunk *other) const;
-
- /**
- * Returns true if it is safe to delete the newline token.
- * The prev and next chunks must have the same PCF_IN_PREPROC flag AND
- * the newline can't be after a C++ comment.
- */
- bool SafeToDeleteNl() const;
-
-
-protected:
- // --------- Protected util functions
-
- /**
- * @brief copy the values from another chunk.
- * @NOTE: this is a partial copy only: the chunk is not linked to others
- * @param o the chunk to copy from
- */
- void CopyFrom(const Chunk &o);
-
- /**
- * @brief add a copy of this chunk before/after the given position in a chunk list.
- * @note If pos is NullChunk, add the new chuck either at the head or tail of the
- * list based on the specified direction.
- * @param pos insert position in list
- * @param dir insert before or after the given position chunk
- * @return pointer to the newly added chunk
- */
- Chunk *CopyAndAdd(Chunk *pos, const E_Direction dir = E_Direction::FORWARD) const;
-
- /**
- * @brief set and/or clear the chunk flags
- * @param setBits the flag bits to set
- * @param resetBits the flag bits to reset
- */
- void SetResetFlags(T_PcfFlags resetBits, T_PcfFlags setBits);
-
-
- // --------- Data members
- E_Token m_type; //! type of the chunk itself
- E_Token m_parentType; //! type of the parent chunk usually CT_NONE
- size_t m_origLine; //! line number of chunk in input file
- size_t m_origCol; //! column where chunk started in the input file, is always > 0
- size_t m_origColEnd; //! column where chunk ended in the input file, is always > 1
- size_t m_origPrevSp; //! whitespace before this token
- size_t m_column; //! column of the chunk
- size_t m_columnIndent; //! if 1st chunk on a line, set to the 'indent' column, which may
- //! be less than the real column used to indent with tabs
- size_t m_nlCount; //! number of newlines in CT_NEWLINE
- size_t m_nlColumn; //! column of the subsequent newline entries(all of them should have the same column)
- size_t m_level; //! nest level in {, (, or [. Only to help vim command }
- size_t m_braceLevel; //! nest level in braces only
- size_t m_ppLevel; //! nest level in preprocessor
- bool m_afterTab; //! whether this token was after a tab
-
- T_PcfFlags m_flags; //! see PCF_xxx
- T_AlignData m_alignmentData; //! alignment data of the chunk
- T_IndentData m_indentData; //! indentation data of the chunk
-
- Chunk *m_next; //! pointer to next chunk in list
- Chunk *m_prev; //! pointer to previous chunk in list
- Chunk *m_parent; //! pointer to parent chunk (not always set)
-
- unc_text m_str; //! the token text
- track_list *m_trackingData; //! for debugging purpose only
-
-
-private:
- const bool null_chunk; //! true for null chunks
-
-
-public:
- static Chunk NullChunk; //! Null Chunk
- static Chunk *const NullChunkPtr; //! Pointer to the Null Chunk
-};
-
-
-inline Chunk::Chunk(bool null_c)
- : null_chunk(null_c)
-{
- Reset();
-}
-
-
-inline Chunk::Chunk(const Chunk &o)
- : null_chunk(o.null_chunk)
-{
- CopyFrom(o);
-}
-
-
-inline Chunk &Chunk::operator=(const Chunk &o)
-{
- if (this != &o)
- {
- CopyFrom(o);
- }
- return(*this);
-}
-
-
-inline size_t Chunk::Len() const
-{
- return(m_str.size());
-}
-
-
-inline const char *Chunk::Text() const
-{
- return(m_str.c_str());
-}
-
-
-inline Chunk *Chunk::GetParent() const
-{
- return(m_parent);
-}
-
-
-inline void Chunk::SetParent(Chunk *parent)
-{
- if (this != parent)
- {
- m_parent = parent;
- }
-}
-
-
-inline const T_AlignData &Chunk::GetAlignmentData() const
-{
- return(m_alignmentData);
-}
-
-
-inline T_AlignData &Chunk::AlignmentData()
-{
- return(m_alignmentData);
-}
-
-
-inline const T_IndentData &Chunk::GetIndentData() const
-{
- return(m_indentData);
-}
-
-
-inline T_IndentData &Chunk::IndentData()
-{
- return(m_indentData);
-}
-
-
-inline const unc_text &Chunk::GetStr() const
-{
- return(m_str);
-}
-
-
-inline unc_text &Chunk::Str()
-{
- return(m_str);
-}
-
-
-inline const track_list *Chunk::GetTrackingData() const
-{
- return(m_trackingData);
-}
-
-
-inline track_list * &Chunk::TrackingData()
-{
- return(m_trackingData);
-}
-
-
-inline E_Token Chunk::GetType() const
-{
- return(m_type);
-}
-
-
-inline E_Token Chunk::GetParentType() const
-{
- return(m_parentType);
-}
-
-
-inline E_Token Chunk::GetTypeOfParent() const
-{
- if (GetParent()->IsNullChunk())
- {
- return(CT_PARENT_NOT_SET);
- }
- return(GetParent()->GetType());
-}
-
-
-inline T_PcfFlags Chunk::GetFlags() const
-{
- return(m_flags);
-}
-
-
-inline void Chunk::SetFlags(T_PcfFlags flags)
-{
- m_flags = flags;
-}
-
-
-inline bool Chunk::TestFlags(T_PcfFlags flags) const
-{
- return(m_flags.test(flags));
-}
-
-
-inline void Chunk::ResetFlagBits(T_PcfFlags resetBits)
-{
- SetResetFlags(resetBits, PCF_NONE);
-}
-
-
-inline void Chunk::SetFlagBits(T_PcfFlags setBits)
-{
- SetResetFlags(PCF_NONE, setBits);
-}
-
-
-inline void Chunk::UpdateFlagBits(T_PcfFlags resetBits, T_PcfFlags setBits)
-{
- SetResetFlags(resetBits, setBits);
-}
-
-
-inline size_t Chunk::GetOrigLine() const
-{
- return(m_origLine);
-}
-
-
-inline void Chunk::SetOrigLine(size_t line)
-{
- m_origLine = line;
-}
-
-
-inline size_t Chunk::GetOrigCol() const
-{
- return(m_origCol);
-}
-
-
-inline void Chunk::SetOrigCol(size_t col)
-{
- m_origCol = col;
-}
-
-
-inline size_t Chunk::GetOrigColEnd() const
-{
- return(m_origColEnd);
-}
-
-
-inline void Chunk::SetOrigColEnd(size_t col)
-{
- m_origColEnd = col;
-}
-
-
-inline size_t Chunk::GetOrigPrevSp() const
-{
- return(m_origPrevSp);
-}
-
-
-inline void Chunk::SetOrigPrevSp(size_t col)
-{
- m_origPrevSp = col;
-}
-
-
-inline size_t Chunk::GetColumn() const
-{
- return(m_column);
-}
-
-
-inline void Chunk::SetColumn(size_t col)
-{
- m_column = col;
-}
-
-
-inline size_t Chunk::GetColumnIndent() const
-{
- return(m_columnIndent);
-}
-
-
-inline void Chunk::SetColumnIndent(size_t col)
-{
- m_columnIndent = col;
-}
-
-
-inline size_t Chunk::GetNlCount() const
-{
- return(m_nlCount);
-}
-
-
-inline void Chunk::SetNlCount(size_t cnt)
-{
- m_nlCount = cnt;
-}
-
-
-inline size_t Chunk::GetNlColumn() const
-{
- return(m_nlColumn);
-}
-
-
-inline void Chunk::SetNlColumn(size_t col)
-{
- m_nlColumn = col;
-}
-
-
-inline size_t Chunk::GetLevel() const
-{
- return(m_level);
-}
-
-
-inline void Chunk::SetLevel(size_t level)
-{
- m_level = level;
-}
-
-
-inline size_t Chunk::GetBraceLevel() const
-{
- return(m_braceLevel);
-}
-
-
-inline void Chunk::SetBraceLevel(size_t lvl)
-{
- m_braceLevel = lvl;
-}
-
-
-inline size_t Chunk::GetPpLevel() const
-{
- return(m_ppLevel);
-}
-
-
-inline void Chunk::SetPpLevel(size_t lvl)
-{
- m_ppLevel = lvl;
-}
-
-
-inline bool Chunk::GetAfterTab() const
-{
- return(m_afterTab);
-}
-
-
-inline void Chunk::SetAfterTab(bool afterTab)
-{
- m_afterTab = afterTab;
-}
-
-
-inline Chunk *Chunk::GetNextNl(const E_Scope scope) const
-{
- return(Search(&Chunk::IsNewline, scope, E_Direction::FORWARD, true));
-}
-
-
-inline Chunk *Chunk::GetPrevNl(const E_Scope scope) const
-{
- return(Search(&Chunk::IsNewline, scope, E_Direction::BACKWARD, true));
-}
-
-
-inline Chunk *Chunk::GetNextNnl(const E_Scope scope) const
-{
- return(Search(&Chunk::IsNewline, scope, E_Direction::FORWARD, false));
-}
-
-
-inline Chunk *Chunk::GetPrevNnl(const E_Scope scope) const
-{
- return(Search(&Chunk::IsNewline, scope, E_Direction::BACKWARD, false));
-}
-
-
-inline Chunk *Chunk::GetNextNc(const E_Scope scope) const
-{
- return(Search(&Chunk::IsComment, scope, E_Direction::FORWARD, false));
-}
-
-
-inline Chunk *Chunk::GetPrevNc(const E_Scope scope) const
-{
- return(Search(&Chunk::IsComment, scope, E_Direction::BACKWARD, false));
-}
-
-
-inline Chunk *Chunk::GetNextNcNnl(const E_Scope scope) const
-{
- return(Search(&Chunk::IsCommentOrNewline, scope, E_Direction::FORWARD, false));
-}
-
-
-inline Chunk *Chunk::GetPrevNcNnl(const E_Scope scope) const
-{
- return(Search(&Chunk::IsCommentOrNewline, scope, E_Direction::BACKWARD, false));
-}
-
-
-inline Chunk *Chunk::GetNextNcNnlNpp(const E_Scope scope) const
-{
- return(Search(&Chunk::IsCommentNewlineOrPreproc, scope, E_Direction::FORWARD, false));
-}
-
-
-inline Chunk *Chunk::GetPrevNcNnlNpp(const E_Scope scope) const
-{
- return(Search(&Chunk::IsCommentNewlineOrPreproc, scope, E_Direction::BACKWARD, false));
-}
-
-
-inline Chunk *Chunk::GetNextNppOrNcNnl(const E_Scope scope) const
-{
- return(Search(&Chunk::IsCommentOrNewlineInPreproc, scope, E_Direction::FORWARD, false));
-}
-
-
-inline Chunk *Chunk::GetPrevNppOrNcNnl(const E_Scope scope) const
-{
- return(Search(&Chunk::IsCommentOrNewlineInPreproc, scope, E_Direction::BACKWARD, false));
-}
-
-
-inline Chunk *Chunk::PpaGetNextNcNnl() const
-{
- return(SearchPpa(&Chunk::IsCommentOrNewline, false));
-}
-
-
-inline Chunk *Chunk::GetNextNcNnlNet(const E_Scope scope) const
-{
- return(Search(&Chunk::IsCommentNewlineOrEmptyText, scope, E_Direction::FORWARD, false));
-}
-
-
-inline Chunk *Chunk::GetPrevNcNnlNet(const E_Scope scope) const
-{
- return(Search(&Chunk::IsCommentNewlineOrEmptyText, scope, E_Direction::BACKWARD, false));
-}
-
-
-inline Chunk *Chunk::GetPrevNcNnlNi(const E_Scope scope) const
-{
- return(Search(&Chunk::IsCommentNewlineOrIgnored, scope, E_Direction::BACKWARD, false));
-}
-
-
-inline Chunk *Chunk::GetNextNisq(const E_Scope scope) const
-{
- return(Search(&Chunk::IsSquareBracket, scope, E_Direction::FORWARD, false));
-}
-
-
-inline Chunk *Chunk::GetNextType(const E_Token type, const int level, const E_Scope scope) const
-{
- return(SearchTypeLevel(type, scope, E_Direction::FORWARD, level));
-}
-
-
-inline Chunk *Chunk::GetPrevType(const E_Token type, const int level, const E_Scope scope) const
-{
- return(SearchTypeLevel(type, scope, E_Direction::BACKWARD, level));
-}
-
-
-inline Chunk *Chunk::GetNextString(const char *cStr, const size_t len, const int level, const E_Scope scope) const
-{
- return(SearchStringLevel(cStr, len, level, scope, E_Direction::FORWARD));
-}
-
-
-inline Chunk *Chunk::GetPrevString(const char *cStr, const size_t len, const int level, const E_Scope scope) const
-{
- return(SearchStringLevel(cStr, len, level, scope, E_Direction::BACKWARD));
-}
-
-
-inline Chunk *Chunk::GetNextNvb(const E_Scope scope) const
-{
- return(Search(&Chunk::IsVBrace, scope, E_Direction::FORWARD, false));
-}
-
-
-inline Chunk *Chunk::GetPrevNvb(const E_Scope scope) const
-{
- return(Search(&Chunk::IsVBrace, scope, E_Direction::BACKWARD, false));
-}
-
-
-inline bool Chunk::IsTypeAndLevel(const E_Token type, const int level) const
-{
- return( ( level < 0
- || m_level == static_cast<size_t>(level))
- && m_type == type);
-}
-
-
-inline bool Chunk::Is(E_Token token) const
-{
- return( IsNotNullChunk()
- && m_type == token);
-}
-
-
-inline bool Chunk::IsString(const char *cStr, bool caseSensitive) const
-{
- return(IsStringAndLevel(cStr, strlen(cStr), caseSensitive, ANY_LEVEL));
-}
-
-
-inline bool Chunk::IsNot(E_Token token) const
-{
- return(!Is(token));
-}
-
-
-inline bool Chunk::IsNewline() const
-{
- return( Is(CT_NEWLINE)
- || Is(CT_NL_CONT));
-}
-
-
-inline bool Chunk::IsComment() const
-{
- return( Is(CT_COMMENT)
- || Is(CT_COMMENT_MULTI)
- || Is(CT_COMMENT_CPP));
-}
-
-
-inline bool Chunk::IsEmptyText() const
-{
- return( IsNotNullChunk()
- && Len() == 0);
-}
-
-
-inline bool Chunk::IsPreproc() const
-{
- return( IsNotNullChunk()
- && TestFlags(PCF_IN_PREPROC));
-}
-
-
-inline bool Chunk::IsCommentOrNewline() const
-{
- return( IsComment()
- || IsNewline());
-}
-
-
-inline bool Chunk::IsCommentNewlineOrPreproc() const
-{
- return( IsComment()
- || IsNewline()
- || IsPreproc());
-}
-
-
-inline bool Chunk::IsCommentOrNewlineInPreproc() const
-{
- return( IsPreproc()
- && ( IsComment()
- || IsNewline()));
-}
-
-
-inline bool Chunk::IsCommentNewlineOrEmptyText() const
-{
- return( IsComment()
- || IsNewline()
- || IsEmptyText());
-}
-
-
-inline bool Chunk::IsCommentNewlineOrIgnored() const
-{
- return( IsComment()
- || IsNewline()
- || Is(CT_IGNORED));
-}
-
-
-inline bool Chunk::IsSingleLineComment() const
-{
- return( Is(CT_COMMENT)
- || Is(CT_COMMENT_CPP));
-}
-
-
-inline bool Chunk::IsSquareBracket() const
-{
- return( Is(CT_SQUARE_OPEN)
- || Is(CT_TSQUARE)
- || Is(CT_SQUARE_CLOSE));
-}
-
-
-inline bool Chunk::IsVBrace() const
-{
- return( Is(CT_VBRACE_OPEN)
- || Is(CT_VBRACE_CLOSE));
-}
-
-
-inline bool Chunk::IsStar() const
-{
- return( Len() == 1
- && m_str[0] == '*'
- && IsNot(CT_OPERATOR_VAL));
-}
-
-
-inline bool Chunk::IsSemicolon() const
-{
- return( Is(CT_SEMICOLON)
- || Is(CT_VSEMICOLON));
-}
-
-
-inline bool Chunk::IsWord() const
-{
- return( Len() >= 1
- && CharTable::IsKw1(m_str[0]));
-}
-
-
-inline bool Chunk::IsNullable() const
-{
- return( language_is_set(LANG_CS | LANG_VALA)
- && Len() == 1
- && m_str[0] == '?');
-}
-
-
-inline bool Chunk::IsMsRef() const
-{
- return( language_is_set(LANG_CPP)
- && Len() == 1
- && m_str[0] == '^'
- && IsNot(CT_OPERATOR_VAL));
-}
-
-
-inline bool Chunk::IsPointerOperator() const
-{
- return( IsStar()
- || IsAddress()
- || IsMsRef()
- || IsNullable());
-}
-
-
-inline bool Chunk::IsPointerOrReference() const
-{
- return( IsPointerOperator()
- || Is(CT_BYREF));
-}
-
-
-inline bool Chunk::IsBraceOpen() const
-{
- return( Is(CT_BRACE_OPEN)
- || Is(CT_VBRACE_OPEN));
-}
-
-
-inline bool Chunk::IsBraceClose() const
-{
- return( Is(CT_BRACE_CLOSE)
- || Is(CT_VBRACE_CLOSE));
-}
-
-
-inline bool Chunk::IsParenOpen() const
-{
- return( Is(CT_PAREN_OPEN)
- || Is(CT_SPAREN_OPEN)
- || Is(CT_PPAREN_OPEN)
- || Is(CT_TPAREN_OPEN)
- || Is(CT_FPAREN_OPEN)
- || Is(CT_LPAREN_OPEN));
-}
-
-
-inline bool Chunk::IsParenClose() const
-{
- return( Is(CT_PAREN_CLOSE)
- || Is(CT_SPAREN_CLOSE)
- || Is(CT_PPAREN_CLOSE)
- || Is(CT_TPAREN_CLOSE)
- || Is(CT_FPAREN_CLOSE)
- || Is(CT_LPAREN_CLOSE));
-}
-
-
-inline bool Chunk::IsSamePreproc(const Chunk *other) const
-{
- return( IsNotNullChunk()
- && other->IsNotNullChunk()
- && (TestFlags(PCF_IN_PREPROC) == other->TestFlags(PCF_IN_PREPROC)));
-}
-
-
-inline bool Chunk::SafeToDeleteNl() const
-{
- Chunk *tmp = GetPrev();
-
- if (tmp->Is(CT_COMMENT_CPP))
- {
- return(false);
- }
- return(tmp->IsSamePreproc(GetNext()));
-}
-
-
-inline bool Chunk::IsEnum() const
-{
- return( Is(CT_ENUM)
- || Is(CT_ENUM_CLASS));
-}
-
-
-inline bool Chunk::IsClassOrStruct() const
-{
- return( Is(CT_CLASS)
- || Is(CT_STRUCT));
-}
-
-
-inline bool Chunk::IsClassStructOrUnion() const
-{
- return( IsClassOrStruct()
- || Is(CT_UNION));
-}
-
-
-inline bool Chunk::IsClassEnumStructOrUnion() const
-{
- return( IsClassStructOrUnion()
- || IsEnum());
-}
-
-
-inline Chunk *Chunk::CopyAndAddAfter(Chunk *ref) const
-{
- return(CopyAndAdd(ref, E_Direction::FORWARD));
-}
-
-
-inline Chunk *Chunk::CopyAndAddBefore(Chunk *ref) const
-{
- return(CopyAndAdd(ref, E_Direction::BACKWARD));
-}
-
-
-#define SetType(tt) SetTypeReal((tt), __unqualified_func__, __LINE__)
-
-
-#define SetParentType(tt) SetParentTypeReal((tt), __unqualified_func__, __LINE__)
-
-
-#endif /* CHUNK_LIST_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine.cpp
deleted file mode 100644
index d7f95472..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine.cpp
+++ /dev/null
@@ -1,4088 +0,0 @@
-/**
- * @file combine.cpp
- * Labels the chunks as needed.
- *
- * @author Ben Gardner
- * @author Guy Maurel
- * @license GPL v2+
- */
-
-#include "combine.h"
-
-#include "combine_fix_mark.h"
-#include "combine_skip.h"
-#include "combine_tools.h"
-#include "EnumStructUnionParser.h"
-#include "flag_braced_init_list.h"
-#include "flag_parens.h"
-#include "lang_pawn.h"
-#include "mark_question_colon.h"
-#include "newlines.h"
-#include "prototypes.h"
-#include "tokenize_cleanup.h"
-#include "unc_tools.h"
-
-#include <limits>
-
-constexpr static auto LCURRENT = LCOMBINE;
-
-using namespace std;
-using namespace uncrustify;
-
-
-/**
- * Mark the parens and colons in:
- * asm volatile ( "xx" : "xx" (l), "yy"(h) : ... );
- *
- * @param pc the CT_ASM item
- */
-static void flag_asm(Chunk *pc);
-
-
-/**
- * Combines two tokens into {{ and }} if inside parens and nothing is between
- * either pair.
- */
-static void check_double_brace_init(Chunk *bo1);
-
-
-static void process_returns_and_throws();
-
-
-/**
- * Processes a 'return' or 'throw' statement, labeling the parens and marking
- * the parent. May remove or add parens around the return/throw statement.
- *
- * @param pc Pointer to the return or throw chunk
- */
-static Chunk *process_return_or_throw(Chunk *pc);
-
-
-/**
- * Process an ObjC 'class'
- * pc is the chunk after '@implementation' or '@interface' or '@protocol'.
- * Change colons, etc. Processes stuff until '@end'.
- * Skips anything in braces.
- */
-static void handle_oc_class(Chunk *pc);
-
-
-/**
- * Mark Objective-C blocks (aka lambdas or closures)
- * The syntax and usage is exactly like C function pointers
- * but instead of an asterisk they have a caret as pointer symbol.
- * Although it may look expensive this functions is only triggered
- * on appearance of an OC_BLOCK_CARET for LANG_OC.
- * repeat(10, ^{ putc('0'+d); });
- * typedef void (^workBlk_t)(void);
- *
- * @param pc points to the '^'
- */
-static void handle_oc_block_literal(Chunk *pc);
-
-
-/**
- * Mark Objective-C block types.
- * The syntax and usage is exactly like C function pointers
- * but instead of an asterisk they have a caret as pointer symbol.
- * typedef void (^workBlk_t)(void);
- * const char * (^workVar)(void);
- * -(void)Foo:(void(^)())blk { }
- *
- * This is triggered when the sequence '(' '^' is found.
- *
- * @param pc points to the '^'
- */
-static void handle_oc_block_type(Chunk *pc);
-
-
-/**
- * Process an ObjC message spec/dec
- *
- * Specs:
- * -(void) foo ARGS;
- *
- * Declaration:
- * -(void) foo ARGS { }
- *
- * LABEL : (ARGTYPE) ARGNAME
- *
- * ARGS is ': (ARGTYPE) ARGNAME [MOREARGS...]'
- * MOREARGS is ' [ LABEL] : (ARGTYPE) ARGNAME '
- * -(void) foo: (int) arg: { }
- * -(void) foo: (int) arg: { }
- * -(void) insertObject:(id)anObject atIndex:(int)index
- */
-static void handle_oc_message_decl(Chunk *pc);
-
-
-/**
- * Process an ObjC message send statement:
- * [ class func: val1 name2: val2 name3: val3] ; // named params
- * [ class func: val1 : val2 : val3] ; // unnamed params
- * [ class <proto> self method ] ; // with protocol
- * [[NSMutableString alloc] initWithString: @"" ] // class from msg
- * [func(a,b,c) lastObject ] // class from func
- *
- * Mainly find the matching ']' and ';' and mark the colons.
- *
- * @param pc points to the open square '['
- */
-static void handle_oc_message_send(Chunk *pc);
-
-
-//! Process @Property values and re-arrange them if necessary
-static void handle_oc_property_decl(Chunk *pc);
-
-//! Process @available annotation
-static void handle_oc_available(Chunk *pc);
-
-/**
- * Process a type that is enclosed in parens in message declarations.
- * TODO: handle block types, which get special formatting
- *
- * @param pc points to the open paren
- *
- * @return the chunk after the type
- */
-static Chunk *handle_oc_md_type(Chunk *paren_open, E_Token ptype, T_PcfFlags flags, bool &did_it);
-
-/**
- * Process an C# [] thingy:
- * [assembly: xxx]
- * [AttributeUsage()]
- * [@X]
- *
- * Set the next chunk to a statement start after the close ']'
- *
- * @param pc points to the open square '['
- */
-static void handle_cs_square_stmt(Chunk *pc);
-
-
-/**
- * We are on a brace open that is preceded by a word or square close.
- * Set the brace parent to CT_CS_PROPERTY and find the first item in the
- * property and set its parent, too.
- */
-static void handle_cs_property(Chunk *pc);
-
-
-/**
- * We hit a ']' followed by a WORD. This may be a multidimensional array type.
- * Example: int[,,] x;
- * If there is nothing but commas between the open and close, then mark it.
- */
-static void handle_cs_array_type(Chunk *pc);
-
-
-/**
- * We are on the C++ 'template' keyword.
- * What follows should be the following:
- *
- * template <class identifier> function_declaration;
- * template <typename identifier> function_declaration;
- * template <class identifier> class class_declaration;
- * template <typename identifier> class class_declaration;
- *
- * Change the 'class' inside the <> to CT_TYPE.
- * Set the parent to the class after the <> to CT_TEMPLATE.
- * Set the parent of the semicolon to CT_TEMPLATE.
- */
-static void handle_cpp_template(Chunk *pc);
-
-
-/**
- * Verify and then mark C++ lambda expressions.
- * The expected format is '[...](...){...}' or '[...](...) -> type {...}'
- * sq_o is '[' CT_SQUARE_OPEN or '[]' CT_TSQUARE
- * Split the '[]' so we can control the space
- */
-static void handle_cpp_lambda(Chunk *pc);
-
-
-/**
- * We are on the D 'template' keyword.
- * What follows should be the following:
- *
- * template NAME ( TYPELIST ) { BODY }
- *
- * Set the parent of NAME to template, change NAME to CT_TYPE.
- * Set the parent of the parens and braces to CT_TEMPLATE.
- * Scan the body for each type in TYPELIST and change the type to CT_TYPE.
- */
-static void handle_d_template(Chunk *pc);
-
-
-/**
- * A func wrap chunk and what follows should be treated as a function name.
- * Create new text for the chunk and call it a CT_FUNCTION.
- *
- * A type wrap chunk and what follows should be treated as a simple type.
- * Create new text for the chunk and call it a CT_TYPE.
- */
-static void handle_wrap(Chunk *pc);
-
-
-/**
- * A proto wrap chunk and what follows should be treated as a function proto.
- *
- * RETTYPE PROTO_WRAP( NAME, PARAMS ); or RETTYPE PROTO_WRAP( NAME, (PARAMS) );
- * RETTYPE gets changed with make_type().
- * PROTO_WRAP is marked as CT_FUNC_PROTO or CT_FUNC_DEF.
- * NAME is marked as CT_WORD.
- * PARAMS is all marked as prototype parameters.
- */
-static void handle_proto_wrap(Chunk *pc);
-
-
-static bool is_oc_block(Chunk *pc);
-
-
-/**
- * Java assert statements are: "assert EXP1 [: EXP2] ;"
- * Mark the parent of the colon and semicolon
- */
-static void handle_java_assert(Chunk *pc);
-
-
-static void flag_asm(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *tmp = pc->GetNextNcNnl(E_Scope::PREPROC);
-
- if (tmp->IsNot(CT_QUALIFIER))
- {
- return;
- }
- Chunk *po = tmp->GetNextNcNnl(E_Scope::PREPROC);
-
- if (!po->IsParenOpen())
- {
- return;
- }
- Chunk *end = po->GetClosingParen(E_Scope::PREPROC);
-
- if (end->IsNullChunk())
- {
- return;
- }
- po->SetParentType(CT_ASM);
- end->SetParentType(CT_ASM);
-
- for ( tmp = po->GetNextNcNnl(E_Scope::PREPROC);
- tmp->IsNotNullChunk()
- && tmp != end;
- tmp = tmp->GetNextNcNnl(E_Scope::PREPROC))
- {
- if (tmp->Is(CT_COLON))
- {
- tmp->SetType(CT_ASM_COLON);
- }
- else if (tmp->Is(CT_DC_MEMBER))
- {
- // if there is a string on both sides, then this is two ASM_COLONs
- if ( tmp->GetNextNcNnl(E_Scope::PREPROC)->Is(CT_STRING)
- && tmp->GetPrevNcNnlNi(E_Scope::PREPROC)->Is(CT_STRING)) // Issue #2279
- {
- Chunk nc;
-
- nc = *tmp;
-
- tmp->Str().resize(1);
- tmp->SetOrigColEnd(tmp->GetOrigCol() + 1);
- tmp->SetType(CT_ASM_COLON);
-
- nc.SetType(tmp->GetType());
- nc.Str().pop_front();
- nc.SetOrigCol(nc.GetOrigCol() + 1);
- nc.SetColumn(nc.GetColumn() + 1);
- nc.CopyAndAddAfter(tmp);
- }
- }
- }
-
- tmp = end->GetNextNcNnl(E_Scope::PREPROC);
-
- if (tmp->IsNullChunk())
- {
- return;
- }
-
- if (tmp->Is(CT_SEMICOLON))
- {
- tmp->SetParentType(CT_ASM);
- }
-} // flag_asm
-
-
-void do_symbol_check(Chunk *prev, Chunk *pc, Chunk *next)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LFCNR, "%s(%d): prev is '%s' %s\n",
- __func__, __LINE__,
- prev->Text(), get_token_name(prev->GetType()));
- log_pcf_flags(LFCNR, prev->GetFlags());
- LOG_FMT(LFCNR, "%s(%d): pc is '%s' %s\n",
- __func__, __LINE__,
- pc->Text(), get_token_name(pc->GetType()));
- log_pcf_flags(LFCNR, pc->GetFlags());
- LOG_FMT(LFCNR, "%s(%d): next is '%s' %s\n",
- __func__, __LINE__,
- next->Text(), get_token_name(next->GetType()));
- log_pcf_flags(LFCNR, next->GetFlags());
-
- if ( pc->Is(CT_NOEXCEPT) // Issue #3284
- && next->Is(CT_ASSIGN)) // skip over noexcept
- {
- LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc = next;
- next = pc->GetNext();
- }
-
- // separate the uses of CT_ASSIGN sign '='
- // into CT_ASSIGN_DEFAULT_ARG, CT_ASSIGN_FUNC_PROTO
- if ( pc->Is(CT_ASSIGN)
- && pc->GetParentType() == CT_FUNC_PROTO
- && ( pc->TestFlags(PCF_IN_FCN_DEF) // Issue #2236
- || pc->TestFlags(PCF_IN_CONST_ARGS)))
- {
- LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- log_pcf_flags(LFCNR, pc->GetFlags());
- pc->SetType(CT_ASSIGN_DEFAULT_ARG);
- return;
- }
-
- if ( ( prev->Is(CT_FPAREN_CLOSE)
- || ( ( prev->IsString("const")
- || prev->IsString("override"))
- && prev->GetPrev()->Is(CT_FPAREN_CLOSE)))
- && pc->Is(CT_ASSIGN)
- && ( next->Is(CT_DEFAULT)
- || next->Is(CT_DELETE)
- || next->IsString("0")))
- {
- pc->SetType(CT_ASSIGN_FUNC_PROTO);
- return; // cpp 30031
- }
-
- if (pc->Is(CT_OC_AT))
- {
- if ( next->Is(CT_PAREN_OPEN)
- || next->Is(CT_BRACE_OPEN)
- || next->Is(CT_SQUARE_OPEN))
- {
- flag_parens(next, PCF_OC_BOXED, next->GetType(), CT_OC_AT, false);
- }
- else
- {
- next->SetParentType(CT_OC_AT);
- return; // objective-c_50095
- }
- }
-
- // D stuff
- if ( language_is_set(LANG_D)
- && pc->Is(CT_QUALIFIER)
- && pc->IsString("const")
- && next->Is(CT_PAREN_OPEN))
- {
- pc->SetType(CT_D_CAST);
- set_paren_parent(next, pc->GetType());
- return; // d_40061
- }
-
- if ( next->Is(CT_PAREN_OPEN)
- && ( pc->Is(CT_D_CAST)
- || pc->Is(CT_DELEGATE)
- || pc->Is(CT_ALIGN)))
- {
- // mark the parenthesis parent
- Chunk *tmp = set_paren_parent(next, pc->GetType());
-
- // For a D cast - convert the next item
- if ( pc->Is(CT_D_CAST)
- && tmp != nullptr)
- {
- if (tmp->Is(CT_STAR))
- {
- tmp->SetType(CT_DEREF);
- return; // d_40006
- }
- else if (tmp->Is(CT_AMP))
- {
- tmp->SetType(CT_ADDR);
- return; // d_40060
- }
- else if (tmp->Is(CT_MINUS))
- {
- tmp->SetType(CT_NEG);
- return; // d_40060
- }
- else if (tmp->Is(CT_PLUS))
- {
- tmp->SetType(CT_POS);
- return; // d_40060
- }
- }
-
- /*
- * For a delegate, mark previous words as types and the item after the
- * close paren as a variable def
- */
- if (pc->Is(CT_DELEGATE))
- {
- if (tmp != nullptr)
- {
- tmp->SetParentType(CT_DELEGATE);
-
- if (tmp->GetLevel() == tmp->GetBraceLevel())
- {
- tmp->SetFlagBits(PCF_VAR_1ST_DEF);
- }
- }
-
- for (tmp = pc->GetPrevNcNnlNi(); tmp->IsNotNullChunk(); tmp = tmp->GetPrevNcNnlNi()) // Issue #2279
- {
- if ( tmp->IsSemicolon()
- || tmp->Is(CT_BRACE_OPEN)
- || tmp->Is(CT_VBRACE_OPEN))
- {
- break;
- }
- make_type(tmp);
- }
-
- return; // c-sharp_10160
- }
-
- if ( pc->Is(CT_ALIGN)
- && tmp != nullptr)
- {
- if (tmp->Is(CT_BRACE_OPEN))
- {
- set_paren_parent(tmp, pc->GetType());
- return; // d_40024
- }
- else if (tmp->Is(CT_COLON))
- {
- tmp->SetParentType(pc->GetType());
- return; // d_40024
- }
- }
- } // paren open + cast/align/delegate
-
- if (pc->Is(CT_INVARIANT))
- {
- if (next->Is(CT_PAREN_OPEN))
- {
- next->SetParentType(pc->GetType());
- Chunk *tmp = next->GetNext();
-
- if (tmp == nullptr)
- {
- tmp = Chunk::NullChunkPtr;
- }
-
- while (tmp->IsNotNullChunk())
- {
- if (tmp->Is(CT_PAREN_CLOSE))
- {
- tmp->SetParentType(pc->GetType());
- break;
- }
- make_type(tmp);
- tmp = tmp->GetNext();
- }
- return; // d_40100
- }
- else
- {
- pc->SetType(CT_QUALIFIER);
- return;
- }
- }
-
- if ( prev->Is(CT_BRACE_OPEN)
- && prev->GetParentType() != CT_CS_PROPERTY
- && ( pc->Is(CT_GETSET)
- || pc->Is(CT_GETSET_EMPTY)))
- {
- flag_parens(prev, PCF_NONE, CT_NONE, CT_GETSET, false);
- return;
- }
-
- if (pc->Is(CT_ASM))
- {
- flag_asm(pc);
- return;
- }
-
- // clang stuff - A new derived type is introduced to C and, by extension, Objective-C, C++, and Objective-C++
- if (language_is_set(LANG_C | LANG_CPP | LANG_OC))
- {
- if (pc->Is(CT_CARET))
- {
- if ( pc->TestFlags(PCF_EXPR_START)
- || pc->TestFlags(PCF_IN_PREPROC))
- {
- handle_oc_block_literal(pc);
- return;
- }
- }
- }
-
- // Objective C stuff
- if (language_is_set(LANG_OC))
- {
- // Check for message declarations
- if (pc->TestFlags(PCF_STMT_START))
- {
- if ( ( pc->IsString("-")
- || pc->IsString("+"))
- && next->IsString("("))
- {
- handle_oc_message_decl(pc);
- return;
- }
- }
-
- if ( pc->TestFlags(PCF_EXPR_START)
- || pc->TestFlags(PCF_IN_PREPROC))
- {
- if (pc->Is(CT_SQUARE_OPEN))
- {
- handle_oc_message_send(pc);
-
- // Only return early if the '[' was determined to be an OC MSG
- // Otherwise, it could have been a lambda capture list (ie '[&]')
- if (pc->GetParentType() == CT_OC_MSG)
- {
- return; // objective-c_50003
- }
- }
- }
-
- if (pc->Is(CT_OC_PROPERTY))
- {
- handle_oc_property_decl(pc);
- return;
- }
-
- if (pc->Is(CT_OC_AVAILABLE))
- {
- handle_oc_available(pc);
- return;
- }
- }
-
- // C# and Vala stuff
- if (language_is_set(LANG_CS | LANG_VALA))
- {
- // '[assembly: xxx]' stuff
- if ( language_is_set(LANG_CS)
- && pc->TestFlags(PCF_EXPR_START)
- && pc->Is(CT_SQUARE_OPEN))
- {
- handle_cs_square_stmt(pc);
- return;
- }
-
- if ( language_is_set(LANG_CS)
- && next->Is(CT_BRACE_OPEN)
- && next->GetParentType() == CT_NONE
- && ( pc->Is(CT_SQUARE_CLOSE)
- || pc->Is(CT_ANGLE_CLOSE)
- || pc->Is(CT_WORD)))
- {
- handle_cs_property(next);
- return;
- }
-
- if ( pc->Is(CT_SQUARE_CLOSE)
- && next->Is(CT_WORD))
- {
- handle_cs_array_type(pc);
- return;
- }
-
- if ( ( pc->Is(CT_LAMBDA)
- || pc->Is(CT_DELEGATE))
- && next->Is(CT_BRACE_OPEN))
- {
- set_paren_parent(next, pc->GetType());
- return;
- }
-
- if ( language_is_set(LANG_CS)
- && pc->Is(CT_WHEN)
- && pc->GetNext()->IsNotNullChunk()
- && pc->GetNext()->IsNot(CT_SPAREN_OPEN))
- {
- pc->SetType(CT_WORD);
- return;
- }
- }
-
- if ( language_is_set(LANG_JAVA)
- && pc->Is(CT_LAMBDA)
- && next->Is(CT_BRACE_OPEN))
- {
- set_paren_parent(next, pc->GetType());
- return;
- }
-
- if (pc->Is(CT_NEW))
- {
- Chunk *ts = nullptr;
- Chunk *tmp = next;
-
- if (tmp->Is(CT_TSQUARE))
- {
- ts = tmp;
- tmp = tmp->GetNextNcNnl();
- }
-
- if ( tmp->Is(CT_BRACE_OPEN)
- || tmp->Is(CT_PAREN_OPEN))
- {
- set_paren_parent(tmp, pc->GetType());
-
- if (ts != nullptr)
- {
- ts->SetParentType(pc->GetType());
- }
- }
- return;
- }
-
- // C++11 Lambda stuff
- if ( language_is_set(LANG_CPP)
- && ( pc->Is(CT_SQUARE_OPEN)
- || pc->Is(CT_TSQUARE)))
- {
- handle_cpp_lambda(pc);
- }
-
- // FIXME: which language does this apply to?
- // Issue #2432
- if (!language_is_set(LANG_OC))
- {
- if ( pc->Is(CT_ASSIGN)
- && next->Is(CT_SQUARE_OPEN))
- {
- set_paren_parent(next, CT_ASSIGN);
-
- // Mark one-liner assignment
- Chunk *tmp = next;
-
- while ((tmp = tmp->GetNextNc())->IsNotNullChunk())
- {
- if (tmp->IsNewline())
- {
- break;
- }
-
- if ( tmp->Is(CT_SQUARE_CLOSE)
- && next->GetLevel() == tmp->GetLevel())
- {
- tmp->SetFlagBits(PCF_ONE_LINER);
- next->SetFlagBits(PCF_ONE_LINER);
- break;
- }
- }
- return;
- }
- }
-
- if (pc->Is(CT_ASSERT))
- {
- handle_java_assert(pc);
- return;
- }
-
- if (pc->Is(CT_ANNOTATION))
- {
- Chunk *tmp = pc->GetNextNcNnl();
-
- if (tmp->IsParenOpen())
- {
- set_paren_parent(tmp, CT_ANNOTATION);
- }
- return;
- }
-
- if ( pc->Is(CT_SIZEOF)
- && language_is_set(LANG_ALLC))
- {
- Chunk *tmp = pc->GetNextNcNnl();
-
- if (tmp->Is(CT_ELLIPSIS))
- {
- tmp->SetParentType(CT_SIZEOF);
- }
- return;
- }
-
- if ( pc->Is(CT_DECLTYPE)
- && pc->GetParentType() != CT_FUNC_DEF)
- {
- Chunk *tmp = pc->GetNextNcNnl();
-
- if (tmp->IsParenOpen())
- {
- // decltype may be followed by a braced-init-list
- tmp = set_paren_parent(tmp, CT_DECLTYPE);
-
- if (tmp->IsBraceOpen() && !pc->TestFlags(PCF_IN_LAMBDA))
- {
- tmp = set_paren_parent(tmp, CT_BRACED_INIT_LIST);
-
- if ( tmp != nullptr
- && tmp->IsNotNullChunk())
- {
- tmp->ResetFlagBits(PCF_EXPR_START | PCF_STMT_START);
- }
- }
- else
- {
- if ( tmp != nullptr
- && tmp->Is(CT_WORD))
- {
- tmp->SetFlagBits(PCF_VAR_1ST_DEF);
- }
- }
- }
- return;
- }
-
- // A [] in C#, D and Vala only follows a type
- if ( pc->Is(CT_TSQUARE)
- && language_is_set(LANG_D | LANG_CS | LANG_VALA))
- {
- if (prev->Is(CT_WORD))
- {
- prev->SetType(CT_TYPE);
- }
-
- if (next->Is(CT_WORD))
- {
- next->SetFlagBits(PCF_VAR_1ST_DEF);
- }
- return;
- }
-
- if ( pc->Is(CT_SQL_EXEC)
- || pc->Is(CT_SQL_BEGIN)
- || pc->Is(CT_SQL_END))
- {
- mark_exec_sql(pc);
- return;
- }
-
- if (pc->Is(CT_PROTO_WRAP))
- {
- handle_proto_wrap(pc);
- return;
- }
-
- // Handle the typedef
- if (pc->Is(CT_TYPEDEF))
- {
- fix_typedef(pc);
- return;
- }
-
- if ( pc->IsClassEnumStructOrUnion()
- && prev->IsNot(CT_TYPEDEF))
- {
- // Issue #3811
- // Sometimes the enum chunk can exist in a parameter (ie. `void foo(enum EnumType param)`)
- // In this case we don't need to run the parser since we are not declaring an enum.
- if (pc->IsEnum())
- {
- const size_t level = pc->GetLevel();
- Chunk *tmp = pc;
-
- while (tmp->GetLevel() == level && tmp->IsNotNullChunk())
- {
- tmp = tmp->GetNextNcNnl();
- }
-
- if (tmp->GetLevel() < level)
- {
- return;
- }
- }
- EnumStructUnionParser parser;
- parser.parse(pc);
- return;
- }
-
- if (pc->Is(CT_EXTERN))
- {
- if (next->IsParenOpen())
- {
- Chunk *tmp = flag_parens(next, PCF_NONE, CT_NONE, CT_EXTERN, true);
-
- if ( tmp != nullptr
- && tmp->Is(CT_BRACE_OPEN))
- {
- set_paren_parent(tmp, CT_EXTERN);
- }
- }
- else
- {
- // next likely is a string (see tokenize_cleanup.cpp)
- next->SetParentType(CT_EXTERN);
- Chunk *tmp = next->GetNextNcNnl();
-
- if (tmp->Is(CT_BRACE_OPEN))
- {
- set_paren_parent(tmp, CT_EXTERN);
- }
- }
- return;
- }
-
- if (pc->Is(CT_TEMPLATE))
- {
- if (language_is_set(LANG_D))
- {
- handle_d_template(pc);
- }
- else
- {
- handle_cpp_template(pc);
- }
- return;
- }
-
- if ( pc->Is(CT_WORD)
- && next->Is(CT_ANGLE_OPEN)
- && next->GetParentType() == CT_TEMPLATE)
- {
- mark_template_func(pc, next);
- return;
- }
-
- if ( pc->Is(CT_SQUARE_CLOSE)
- && next->Is(CT_PAREN_OPEN))
- {
- flag_parens(next, PCF_NONE, CT_FPAREN_OPEN, CT_NONE, false);
- return;
- }
-
- if (pc->Is(CT_TYPE_CAST))
- {
- fix_type_cast(pc);
- return;
- }
-
- if ( pc->GetParentType() == CT_ASSIGN
- && ( pc->Is(CT_BRACE_OPEN)
- || pc->Is(CT_SQUARE_OPEN)))
- {
- // Mark everything in here as in assign
- flag_parens(pc, PCF_IN_ARRAY_ASSIGN, pc->GetType(), CT_NONE, false);
- return;
- }
-
- if (pc->Is(CT_D_TEMPLATE))
- {
- set_paren_parent(next, pc->GetType());
- return;
- }
-
- /*
- * A word before an open paren is a function call or definition.
- * CT_WORD => CT_FUNC_CALL or CT_FUNC_DEF
- */
- if (next->Is(CT_PAREN_OPEN))
- {
- Chunk *tmp = next->GetNextNcNnl();
-
- if ( language_is_set(LANG_C | LANG_CPP | LANG_OC)
- && tmp->Is(CT_CARET))
- {
- handle_oc_block_type(tmp);
-
- // This is the case where a block literal is passed as the first argument of a C-style method invocation.
- if ( ( tmp->Is(CT_OC_BLOCK_CARET)
- || tmp->Is(CT_CARET))
- && pc->Is(CT_WORD))
- {
- LOG_FMT(LFCN, "%s(%d): (1) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc->SetType(CT_FUNC_CALL);
- }
- }
- else if ( pc->Is(CT_WORD)
- || pc->Is(CT_OPERATOR_VAL))
- {
- pc->SetType(CT_FUNCTION);
- }
- else if (pc->Is(CT_FIXED))
- {
- pc->SetType(CT_FUNCTION);
- pc->SetParentType(CT_FIXED);
- }
- else if (pc->Is(CT_TYPE))
- {
- /*
- * If we are on a type, then we are either on a C++ style cast, an
- * array reference, a function or we are on a function type.
- * The only way to tell for sure is to find the close paren and see
- * if it is followed by an open paren.
- * "int(5.6)"
- * "int()"
- * "int(foo)(void)"
- *
- * FIXME: this check can be done better...
- */
- LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
-
- bool is_byref_array = false;
-
- if (language_is_set(LANG_CPP))
- {
- // If the open paren is followed by an ampersand, an optional word,
- // a close parenthesis, and an open square bracket, then it is an
- // array being passed by reference, not a cast
- tmp = next->GetNextNcNnl();
-
- if (tmp->Is(CT_AMP))
- {
- auto tmp2 = tmp->GetNextNcNnl();
-
- if (tmp2->Is(CT_WORD))
- {
- tmp2 = tmp2->GetNextNcNnl();
- }
-
- if (tmp2->Is(CT_PAREN_CLOSE))
- {
- tmp2 = tmp2->GetNextNcNnl();
-
- if (tmp2->Is(CT_SQUARE_OPEN))
- {
- is_byref_array = true;
- tmp->SetType(CT_BYREF);
- }
- }
- }
- }
-
- if (!is_byref_array)
- {
- tmp = next->GetNextType(CT_PAREN_CLOSE, next->GetLevel());
-
- if (tmp->IsNotNullChunk())
- {
- tmp = tmp->GetNext();
-
- if (tmp->Is(CT_PAREN_OPEN))
- {
- pc->SetType(CT_FUNCTION);
- }
- else
- {
- if ( pc->GetParentType() == CT_NONE
- && !pc->TestFlags(PCF_IN_TYPEDEF))
- {
- tmp = next->GetNextNcNnl();
-
- if (tmp->Is(CT_PAREN_CLOSE))
- {
- // we have TYPE()
- pc->SetType(CT_FUNCTION);
- }
- else
- {
- // we have TYPE(...)
- pc->SetType(CT_CPP_CAST);
- set_paren_parent(next, CT_CPP_CAST);
- }
- }
- }
- }
- }
- }
- }
-
- if (language_is_set(LANG_PAWN))
- {
- if ( pc->Is(CT_FUNCTION)
- && pc->GetBraceLevel() > 0)
- {
- LOG_FMT(LFCN, "%s(%d): (2) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc->SetType(CT_FUNC_CALL);
- }
-
- if ( pc->Is(CT_STATE)
- && next->Is(CT_PAREN_OPEN))
- {
- set_paren_parent(next, pc->GetType());
- }
- }
- else
- {
- if ( ( pc->Is(CT_FUNCTION)
- || pc->Is(CT_FUNC_DEF))
- && ( (pc->GetParentType() == CT_OC_BLOCK_EXPR)
- || !is_oc_block(pc)))
- {
- mark_function(pc);
- }
- }
-
- // Detect C99 member stuff
- if ( pc->Is(CT_MEMBER)
- && ( prev->Is(CT_COMMA)
- || prev->Is(CT_BRACE_OPEN)))
- {
- pc->SetType(CT_C99_MEMBER);
- next->SetParentType(CT_C99_MEMBER);
- return;
- }
-
- // Mark function parens and braces
- if ( pc->Is(CT_FUNC_DEF)
- || pc->Is(CT_FUNC_CALL)
- || pc->Is(CT_FUNC_CALL_USER)
- || pc->Is(CT_FUNC_PROTO))
- {
- Chunk *tmp = next;
-
- if (tmp->Is(CT_SQUARE_OPEN))
- {
- tmp = set_paren_parent(tmp, pc->GetType());
- }
- else if ( tmp->Is(CT_TSQUARE)
- || tmp->GetParentType() == CT_OPERATOR)
- {
- tmp = tmp->GetNextNcNnl();
- }
-
- if ( tmp != nullptr
- && tmp->IsNotNullChunk())
- {
- if (tmp->IsParenOpen())
- {
- tmp = flag_parens(tmp, PCF_NONE, CT_FPAREN_OPEN, pc->GetType(), false);
-
- if ( tmp != nullptr
- && tmp->IsNotNullChunk())
- {
- if (tmp->Is(CT_BRACE_OPEN))
- {
- if ( tmp->GetParentType() != CT_DOUBLE_BRACE
- && !pc->TestFlags(PCF_IN_CONST_ARGS))
- {
- set_paren_parent(tmp, pc->GetType());
- }
- }
- else if ( tmp->IsSemicolon()
- && pc->Is(CT_FUNC_PROTO))
- {
- tmp->SetParentType(pc->GetType());
- }
- }
- }
- }
- return;
- }
-
- // Mark the parameters in catch()
- if ( pc->Is(CT_CATCH)
- && next->Is(CT_SPAREN_OPEN))
- {
- fix_fcn_def_params(next);
- return;
- }
-
- if ( pc->Is(CT_THROW)
- && prev->Is(CT_FPAREN_CLOSE))
- {
- pc->SetParentType(prev->GetParentType());
-
- if (next->Is(CT_PAREN_OPEN))
- {
- set_paren_parent(next, CT_THROW);
- }
- return;
- }
-
- // Mark the braces in: "for_each_entry(xxx) { }"
- if ( pc->Is(CT_BRACE_OPEN)
- && pc->GetParentType() != CT_DOUBLE_BRACE
- && prev->Is(CT_FPAREN_CLOSE)
- && ( prev->GetParentType() == CT_FUNC_CALL
- || prev->GetParentType() == CT_FUNC_CALL_USER)
- && !pc->TestFlags(PCF_IN_CONST_ARGS))
- {
- LOG_FMT(LFCN, "%s(%d): (3) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- set_paren_parent(pc, CT_FUNC_CALL);
- return;
- }
-
- /*
- * Check for a close parenthesis followed by an open parenthesis,
- * which means that we are on a function type declaration (C/C++ only?).
- * Note that typedefs are already taken care of.
- */
- if ( !pc->TestFlags(PCF_IN_TEMPLATE) // Issue #3252
- && pc->GetParentType() != CT_CPP_CAST
- && pc->GetParentType() != CT_C_CAST
- && !pc->TestFlags(PCF_IN_PREPROC)
- && !is_oc_block(pc)
- && pc->GetParentType() != CT_OC_MSG_DECL
- && pc->GetParentType() != CT_OC_MSG_SPEC
- && pc->IsString(")")
- && next->IsString("("))
- {
- if (language_is_set(LANG_D))
- {
- flag_parens(next, PCF_NONE, CT_FPAREN_OPEN, CT_FUNC_CALL, false);
- }
- else
- {
- mark_function_type(pc);
- }
- return;
- }
-
- if (pc->Is(CT_OC_CLASS))
- {
- handle_oc_class(pc);
- return;
- }
- // TODO: Check for stuff that can only occur at the start of an statement
-
- if (!language_is_set(LANG_D))
- {
- /*
- * Check a parenthesis pair to see if it is a cast.
- * Note that SPAREN and FPAREN have already been marked.
- */
- if ( pc->Is(CT_PAREN_OPEN)
- && ( pc->GetParentType() == CT_NONE
- || pc->GetParentType() == CT_OC_MSG
- || pc->GetParentType() == CT_OC_BLOCK_EXPR
- || pc->GetParentType() == CT_CS_SQ_STMT) // Issue # 1256
- && ( next->Is(CT_WORD)
- || next->Is(CT_TYPE)
- || next->Is(CT_STRUCT)
- || next->Is(CT_QUALIFIER)
- || next->Is(CT_MEMBER)
- || next->Is(CT_DC_MEMBER)
- || next->Is(CT_ENUM)
- || next->Is(CT_UNION))
- && prev->IsNot(CT_DECLTYPE)
- && prev->IsNot(CT_SIZEOF)
- && prev->GetParentType() != CT_SIZEOF
- && prev->GetParentType() != CT_OPERATOR
- && !pc->TestFlags(PCF_IN_TYPEDEF))
- {
- fix_casts(pc);
- return;
- }
- }
-
- if (language_is_set(LANG_CPP))
- {
- Chunk *nnext = next->GetNextNcNnl();
-
- // handle parent_type of assigns in special functions (ro5 + pure virtual)
- if ( pc->GetFlags().test_any(PCF_IN_STRUCT | PCF_IN_CLASS)
- && pc->Is(CT_ASSIGN)
- && nnext->Is(CT_SEMICOLON)
- && ( next->Is(CT_DEFAULT)
- || next->Is(CT_DELETE)
- || ( next->Is(CT_NUMBER)
- && next->IsString("0"))))
- {
- const size_t level = pc->GetLevel();
- bool found_status = false;
- Chunk *pprev = pc->GetPrev();
-
- for ( ; ( pprev->IsNotNullChunk()
- && pprev->GetLevel() >= level
- && pprev->IsNot(CT_SEMICOLON)
- && pprev->IsNot(CT_ACCESS_COLON))
- ; pprev = pprev->GetPrev())
- {
- if (pprev->GetLevel() != level)
- {
- continue;
- }
-
- if (next->Is(CT_NUMBER))
- {
- if ( pprev->Is(CT_QUALIFIER)
- && pprev->IsString("virtual"))
- {
- found_status = true;
- break;
- }
- }
- else
- {
- if ( pprev->Is(CT_FUNC_CLASS_PROTO) // ctor/dtor
- || pprev->Is(CT_FUNC_PROTO)) // normal function
- {
- found_status = true;
- break;
- }
- }
- }
-
- if (found_status)
- {
- pc->SetParentType(pprev->GetType());
- }
- }
-
- if (detect_cpp_braced_init_list(pc, next))
- {
- flag_cpp_braced_init_list(pc, next);
- }
- }
-
- // Check for stuff that can only occur at the start of an expression
- if ( pc->TestFlags(PCF_EXPR_START)
- || ( prev->TestFlags(PCF_EXPR_START)
- && pc->GetParentType() == CT_OC_AT))
- {
- // Change STAR, MINUS, and PLUS in the easy cases
- if (pc->Is(CT_STAR))
- {
- // issue #596
- // [0x100062020:IN_SPAREN,IN_FOR,STMT_START,EXPR_START,PUNCTUATOR]
- // prev->GetType() is CT_COLON ==> CT_DEREF
- if (prev->Is(CT_ANGLE_CLOSE))
- {
- pc->SetType(CT_PTR_TYPE);
- }
- else if (prev->Is(CT_COLON))
- {
- pc->SetType(CT_DEREF);
- }
- else
- {
- pc->SetType(CT_DEREF);
- }
- }
-
- if ( language_is_set(LANG_CPP)
- && pc->Is(CT_CARET)
- && prev->Is(CT_ANGLE_CLOSE))
- {
- pc->SetType(CT_PTR_TYPE);
- }
-
- if ( language_is_set(LANG_CS | LANG_VALA)
- && pc->Is(CT_QUESTION)
- && prev->Is(CT_ANGLE_CLOSE))
- {
- pc->SetType(CT_PTR_TYPE);
- }
-
- else if (pc->Is(CT_MINUS))
- {
- pc->SetType(CT_NEG);
- }
-
- else if (pc->Is(CT_PLUS))
- {
- pc->SetType(CT_POS);
- }
-
- else if (pc->Is(CT_INCDEC_AFTER))
- {
- pc->SetType(CT_INCDEC_BEFORE);
- }
-
- else if (pc->Is(CT_AMP))
- {
- if (prev->Is(CT_ANGLE_CLOSE)) // Issue #2324
- {
- pc->SetType(CT_BYREF);
- }
- else
- {
- pc->SetType(CT_ADDR);
- }
- }
-
- else if (pc->Is(CT_CARET))
- {
- if (language_is_set(LANG_C | LANG_CPP | LANG_OC))
- {
- // This is likely the start of a block literal
- handle_oc_block_literal(pc);
- }
- }
- }
-
- /*
- * Change the parenthesis pair after a function/macro-function
- * CT_PAREN_OPEN => CT_FPAREN_OPEN
- */
- if (pc->Is(CT_MACRO_FUNC))
- {
- flag_parens(next, PCF_IN_FCN_CALL, CT_FPAREN_OPEN, CT_MACRO_FUNC, false);
- }
-
- if ( pc->Is(CT_MACRO_OPEN)
- || pc->Is(CT_MACRO_ELSE)
- || pc->Is(CT_MACRO_CLOSE))
- {
- if (next->Is(CT_PAREN_OPEN))
- {
- flag_parens(next, PCF_NONE, CT_FPAREN_OPEN, pc->GetType(), false);
- }
- }
-
- if ( pc->Is(CT_DELETE)
- && next->Is(CT_TSQUARE))
- {
- next->SetParentType(CT_DELETE);
- }
-
- // Change CT_STAR to CT_PTR_TYPE or CT_ARITH or CT_DEREF
- if ( pc->Is(CT_STAR)
- || ( language_is_set(LANG_CPP)
- && pc->Is(CT_CARET)))
- {
- if ( next->IsParenClose()
- || next->Is(CT_COMMA))
- {
- pc->SetType(CT_PTR_TYPE);
- }
- else if ( language_is_set(LANG_OC)
- && next->Is(CT_STAR))
- {
- /*
- * Change pointer-to-pointer types in OC_MSG_DECLs
- * from ARITH <===> DEREF to PTR_TYPE <===> PTR_TYPE
- */
- pc->SetType(CT_PTR_TYPE);
- pc->SetParentType(prev->GetParentType());
-
- next->SetType(CT_PTR_TYPE);
- next->SetParentType(pc->GetParentType());
- }
- else if ( pc->Is(CT_STAR)
- && ( prev->Is(CT_DECLTYPE)
- || prev->Is(CT_SIZEOF)
- || prev->Is(CT_DELETE)
- || pc->GetParentType() == CT_SIZEOF))
- {
- pc->SetType(CT_DEREF);
- }
- else if ( ( prev->Is(CT_WORD)
- && chunk_ends_type(prev)
- && !prev->TestFlags(PCF_IN_FCN_CTOR)
- && !prev->TestFlags(PCF_IN_ARRAY_ASSIGN)) // Issue #3345
- || prev->Is(CT_DC_MEMBER)
- || prev->Is(CT_PTR_TYPE))
- {
- LOG_FMT(LFCNR, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n ",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- log_pcf_flags(LFCNR, pc->GetFlags());
- pc->SetType(CT_PTR_TYPE);
- }
- else if ( next->Is(CT_SQUARE_OPEN)
- && !language_is_set(LANG_OC)) // Issue #408
- {
- pc->SetType(CT_PTR_TYPE);
- }
- else if (pc->Is(CT_STAR))
- {
- // Add check for CT_DC_MEMBER CT_WORD CT_STAR sequence
- // to convert CT_WORD into CT_TYPE
- // and CT_STAR into CT_PTR_TYPE
- // look for an assign backward, function call, return to distinguish between
- // double result = Constants::PI * factor;
- // and
- // ::some::name * foo;
- if ( prev->Is(CT_WORD)
- && prev->GetPrev()->Is(CT_DC_MEMBER)
- && language_is_set(LANG_CPP))
- {
- // Issue 1402
- bool is_multiplication = false;
- Chunk *tmp = pc;
-
- while (tmp->IsNotNullChunk())
- {
- if ( tmp->Is(CT_SEMICOLON)
- || tmp->GetParentType() == CT_CLASS)
- {
- break;
- }
- else if ( tmp->Is(CT_ASSIGN)
- || tmp->Is(CT_FUNC_CALL)
- || tmp->Is(CT_RETURN))
- {
- is_multiplication = true;
- break;
- }
- tmp = tmp->GetPrevNcNnlNi(); // Issue #2279
- }
-
- if (is_multiplication)
- {
- // double result = Constants::PI * factor;
- pc->SetType(CT_ARITH);
- }
- else
- {
- // ::some::name * foo;
- prev->SetType(CT_TYPE);
- pc->SetType(CT_PTR_TYPE);
- }
- }
-
- /*
- * A star can have three meanings
- * 1. CT_DEREF = pointer dereferencing
- * 2. CT_PTR_TYPE = pointer definition
- * 3. CT_ARITH = arithmetic multiplication
- *
- * most PCF_PUNCTUATOR chunks except a paren close would make this
- * a deref. A paren close may end a cast or may be part of a macro fcn.
- */
- if (prev->Is(CT_TYPE))
- {
- pc->SetType(CT_PTR_TYPE);
- }
- else if ( pc->GetNext()->Is(CT_SEMICOLON) // Issue #2319
- || ( pc->GetNext()->Is(CT_STAR)
- && pc->GetNext()->GetNext()->Is(CT_SEMICOLON)))
- {
- // example:
- // using AbstractLinkPtr = AbstractLink*;
- // using AbstractLinkPtrPtr = AbstractLink**;
- pc->SetType(CT_PTR_TYPE);
- }
- else if ( ( pc->GetParentType() == CT_FUNC_DEF
- && ( next->IsBraceOpen()
- || pc->GetNext()->IsStar()))
- || next->Is(CT_QUALIFIER)) // Issue #2648
- {
- // example:
- // auto getComponent(Color *color) -> Component * {
- // auto getComponent(Color *color) -> Component ** {
- // auto getComponent(Color *color) -> Component * _Nonnull
- // only to help the vim command }}
- pc->SetType(CT_PTR_TYPE);
- }
- else if ( pc->GetNext()->Is(CT_SEMICOLON) // Issue #2319
- || ( pc->GetNext()->Is(CT_STAR)
- && pc->GetNext()->GetNext()->Is(CT_STAR)))
- {
- // more pointers are NOT yet possible
- fprintf(stderr, "Too many pointers: the maximum level of pointer indirection is 3 (i.e., ***p)\n");
- fprintf(stderr, "at line %zu, column %zu.\n", pc->GetOrigLine(), pc->GetOrigCol());
- fprintf(stderr, "Please make a report.\n");
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- else if ( !prev->TestFlags(PCF_PUNCTUATOR)
- || prev->Is(CT_INCDEC_AFTER)
- || prev->Is(CT_SQUARE_CLOSE)
- || prev->Is(CT_DC_MEMBER)) // Issue 1402
- {
- pc->SetType(CT_ARITH);
- }
- else if ( !prev->IsParenClose()
- || prev->Is(CT_SPAREN_CLOSE)
- || prev->GetParentType() == CT_MACRO_FUNC)
- {
- pc->SetType(CT_DEREF);
- }
- else
- {
- pc->SetType(CT_ARITH);
- }
-
- if (pc->TestFlags(PCF_IN_TYPEDEF)) // Issue #1255/#633
- {
- Chunk *tmp = pc;
-
- while (tmp->IsNotNullChunk())
- {
- if ( tmp->Is(CT_SEMICOLON)
- || tmp->Is(CT_BRACE_OPEN)
- || tmp->Is(CT_SQUARE_OPEN)) // Issue #3342
- {
- break;
- }
- else if (tmp->Is(CT_TYPEDEF))
- {
- pc->SetType(CT_PTR_TYPE);
- }
- tmp = tmp->GetPrevNcNnlNi(); // Issue #2279
- }
- }
- }
- }
-
- if (pc->Is(CT_AMP))
- {
- if (prev->Is(CT_DELETE))
- {
- pc->SetType(CT_ADDR);
- }
- else if ( prev->Is(CT_TYPE)
- || prev->Is(CT_QUALIFIER))
- {
- pc->SetType(CT_BYREF);
- }
- else if ( prev->Is(CT_WORD) // Issue #3204
- && next->Is(CT_OPERATOR))
- {
- pc->SetType(CT_BYREF);
- }
- else if ( next->Is(CT_FPAREN_CLOSE)
- || next->Is(CT_COMMA))
- {
- // fix the bug #654
- // connect(&mapper, SIGNAL(mapped(QString &)), this, SLOT(onSomeEvent(QString &)));
- pc->SetType(CT_BYREF);
- }
- else if (pc->GetParentType() == CT_USING_ALIAS)
- {
- // fix the Issue # 1689
- // using reference = value_type &;
- pc->GetPrev()->SetType(CT_TYPE);
- pc->SetType(CT_BYREF);
- }
- else
- {
- // Issue # 1398
- if ( pc->TestFlags(PCF_IN_FCN_DEF)
- && prev->Is(CT_WORD)
- && pc->Is(CT_AMP)
- && next->Is(CT_WORD))
- {
- /*
- * Change CT_WORD before CT_AMP before CT_WORD to CT_TYPE
- */
- prev->SetType(CT_TYPE);
- }
- else if ( pc->TestFlags(PCF_IN_PREPROC) // Issue #3559
- && pc->Is(CT_AMP)
- && next->Is(CT_WORD))
- {
- //LOG_FMT(LGUY, " ++++++++++ pc->GetFlags(): ");
- //log_pcf_flags(LGUY, pc->GetFlags());
- pc->SetType(CT_ADDR);
- }
- else
- {
- pc->SetType(CT_ARITH);
-
- if ( prev->Is(CT_WORD)
- && !next->Is(CT_NUMBER)) // Issue #3407
- {
- Chunk *tmp = prev->GetPrevNcNnlNi(); // Issue #2279
-
- if (tmp->IsNotNullChunk())
- {
- if ( tmp->IsSemicolon()
- || tmp->Is(CT_BRACE_OPEN)
- || tmp->Is(CT_QUALIFIER))
- {
- pc->SetType(CT_BYREF);
- prev->SetType(CT_TYPE);
-
- if (!( next->Is(CT_OPERATOR)
- || next->Is(CT_TYPE)
- || next->Is(CT_DC_MEMBER)))
- {
- LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', set PCF_VAR_1ST\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- next->SetFlagBits(PCF_VAR_1ST);
- }
- }
- else if (tmp->Is(CT_DC_MEMBER))
- {
- prev->SetType(CT_TYPE);
- }
- }
- }
- }
- }
- }
-
- if ( pc->Is(CT_MINUS)
- || pc->Is(CT_PLUS))
- {
- if ( prev->Is(CT_POS)
- || prev->Is(CT_NEG)
- || prev->Is(CT_ARITH)
- || prev->Is(CT_SHIFT))
- {
- pc->SetType(pc->Is(CT_MINUS) ? CT_NEG : CT_POS);
- }
- else if (prev->Is(CT_OC_CLASS))
- {
- pc->SetType((pc->Is(CT_MINUS)) ? CT_NEG : CT_POS);
- }
- else
- {
- pc->SetType(CT_ARITH);
- }
- }
-
- /*
- * Bug # 634
- * Check for extern "C" NSString* i;
- * NSString is a type
- * change CT_WORD => CT_TYPE for pc
- * change CT_STAR => CT_PTR_TYPE for pc-next
- */
- if (pc->Is(CT_WORD)) // here NSString
- {
- Chunk *pcNext = pc->GetNext();
- Chunk *pcPrev = pc->GetPrev();
-
- if (pcNext->Is(CT_STAR)) // here *
- {
- // compare text with "C" to find extern "C" instructions
- if (pcPrev->Is(CT_STRING))
- {
- if (unc_text::compare(pcPrev->Text(), "\"C\"") == 0)
- {
- if (pcPrev->GetPrev()->Is(CT_EXTERN))
- {
- pc->SetType(CT_TYPE); // change CT_WORD => CT_TYPE
- pcNext->SetType(CT_PTR_TYPE); // change CT_STAR => CT_PTR_TYPE
- }
- }
- }
- // Issue #322 STDMETHOD(GetValues)(BSTR bsName, REFDATA** pData);
- Chunk *nnext = pcNext->GetNext();
-
- if ( nnext->Is(CT_STAR)
- && pc->TestFlags(PCF_IN_CONST_ARGS))
- {
- // change CT_STAR => CT_PTR_TYPE
- pcNext->SetType(CT_PTR_TYPE);
- nnext->SetType(CT_PTR_TYPE);
- }
-
- // Issue #222 whatever3 *(func_ptr)( whatever4 *foo2, ...
- if ( nnext->Is(CT_WORD)
- && pc->TestFlags(PCF_IN_FCN_DEF))
- {
- // look for the opening parenthesis
- // Issue 1403
- Chunk *tmp = pc->GetPrevType(CT_FPAREN_OPEN, pc->GetLevel() - 1);
-
- if ( tmp->IsNotNullChunk()
- && tmp->GetParentType() != CT_FUNC_CTOR_VAR)
- {
- pcNext->SetType(CT_PTR_TYPE);
- }
- }
- }
- }
-
- /*
- * Bug # 634
- * Check for __attribute__((visibility ("default"))) NSString* i;
- * NSString is a type
- * change CT_WORD => CT_TYPE for pc
- * change CT_STAR => CT_PTR_TYPE for pc-next
- */
- if (pc->Is(CT_WORD)) // here NSString
- {
- Chunk *pcNext = pc->GetNext();
-
- if (pcNext->Is(CT_STAR)) // here *
- {
- Chunk *tmp = pc;
-
- while (tmp->IsNotNullChunk())
- {
- if (tmp->Is(CT_ATTRIBUTE))
- {
- LOG_FMT(LFCNR, "%s(%d): ATTRIBUTE found, type is %s, Text() '%s'\n",
- __func__, __LINE__, get_token_name(tmp->GetType()), tmp->Text());
- LOG_FMT(LFCNR, "for token, type is %s, Text() '%s'\n", get_token_name(pc->GetType()), pc->Text());
- // change CT_WORD => CT_TYPE
- pc->SetType(CT_TYPE);
- // change CT_STAR => CT_PTR_TYPE
- pcNext->SetType(CT_PTR_TYPE);
- }
-
- if (tmp->TestFlags(PCF_STMT_START))
- {
- // we are at beginning of the line
- break;
- }
- tmp = tmp->GetPrev();
- }
- }
- }
-
- /*
- * Issue # 1689
- * Check for using reference = value_type&;
- * is it a Type alias, alias template?
- */
- if (pc->Is(CT_USING))
- {
- // look for CT_ASSIGN before CT_SEMICOLON at the end of the statement
-
- bool is_preproc = pc->TestFlags(PCF_IN_PREPROC);
- auto const search_assign = [&pc, &is_preproc]()
- {
- for (Chunk *temp = pc; temp->IsNotNullChunk(); temp = temp->GetNextNcNnl())
- {
- LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, temp->GetOrigLine(), temp->GetOrigCol(),
- temp->Text(), get_token_name(temp->GetType()));
-
- if (temp->Is(CT_ASSIGN))
- {
- return(true);
- }
-
- if ( temp->Is(CT_SEMICOLON)
- || ( is_preproc
- && ( !temp->TestFlags(PCF_IN_PREPROC)
- || temp->Is(CT_PREPROC))))
- {
- return(false);
- }
- }
-
- return(false);
- };
-
- const bool assign_found = language_is_set(LANG_D) || search_assign();
-
- if (assign_found)
- {
- // it is a Type alias, alias template
- for (Chunk *temp = pc; temp->IsNotNullChunk(); temp = temp->GetNextNcNnl())
- {
- if (temp->GetParentType() == CT_NONE)
- {
- temp->SetParentType(CT_USING_ALIAS);
- }
-
- if ( temp->Is(CT_SEMICOLON)
- || ( is_preproc
- && ( !temp->TestFlags(PCF_IN_PREPROC)
- || temp->Is(CT_PREPROC))))
- {
- break;
- }
- }
- }
- }
-
- // Issue #548: inline T && someFunc(foo * *p, bar && q) { }
- if ( pc->Is(CT_BOOL)
- && !pc->TestFlags(PCF_IN_PREPROC)
- && pc->IsString("&&")
- && chunk_ends_type(pc->GetPrev()))
- {
- Chunk *tmp = pc->GetPrev(); // Issue #2688
- LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(),
- tmp->Text(), get_token_name(tmp->GetType()));
- log_pcf_flags(LFCNR, tmp->GetFlags());
- // look for a type
-
- if (tmp->Is(CT_TYPE))
- {
- LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(),
- pc->Text(), get_token_name(pc->GetType()));
- log_pcf_flags(LFCNR, pc->GetFlags());
- pc->SetType(CT_BYREF);
- }
- // look next, is there a "assign" before the ";"
- Chunk *semi = pc->GetNextType(CT_SEMICOLON, pc->GetLevel()); // Issue #2688
-
- if (semi->IsNotNullChunk())
- {
- LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, semi->GetOrigLine(), semi->GetOrigCol(),
- semi->Text(), get_token_name(semi->GetType()));
-
- for (Chunk *test_it = pc; test_it != semi; test_it = test_it->GetNext())
- {
- LOG_FMT(LFCNR, "%s(%d): test_it orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, test_it->GetOrigLine(), test_it->GetOrigCol(),
- test_it->Text(), get_token_name(test_it->GetType()));
-
- if (test_it->Is(CT_ASSIGN))
- {
- // the statement is an assignment
- // && is before assign
- pc->SetType(CT_BYREF);
- break;
- }
- }
- }
- }
-
- // Issue #1704
- if ( pc->Is(CT_INCDEC_AFTER)
- && pc->TestFlags(PCF_IN_PREPROC))
- {
- Chunk *tmp_2 = pc->GetNext();
- LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(),
- pc->Text(), get_token_name(pc->GetType()));
- log_pcf_flags(LFTYPE, pc->GetFlags());
-
- if (tmp_2->Is(CT_WORD))
- {
- pc->SetType(CT_INCDEC_BEFORE);
- }
- }
-} // do_symbol_check
-
-
-static void check_double_brace_init(Chunk *bo1)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LJDBI, "%s(%d): orig line is %zu, orig col is %zu", __func__, __LINE__, bo1->GetOrigLine(), bo1->GetOrigCol());
- Chunk *pc = bo1->GetPrevNcNnlNi(); // Issue #2279
-
- if (pc->IsNullChunk())
- {
- return;
- }
-
- if (pc->IsParenClose())
- {
- Chunk *bo2 = bo1->GetNext();
-
- if (bo2->IsNullChunk())
- {
- return;
- }
-
- if (bo2->Is(CT_BRACE_OPEN))
- {
- // found a potential double brace
- Chunk *bc2 = bo2->GetClosingParen();
-
- if (bc2->IsNullChunk())
- {
- return;
- }
- Chunk *bc1 = bc2->GetNext();
-
- if (bc1->IsNullChunk())
- {
- return;
- }
-
- if (bc1->Is(CT_BRACE_CLOSE))
- {
- LOG_FMT(LJDBI, " - end, orig line is %zu, orig col is %zu\n", bc2->GetOrigLine(), bc2->GetOrigCol());
- // delete bo2 and bc1
- bo1->Str() += bo2->GetStr();
- bo1->SetOrigColEnd(bo2->GetOrigColEnd());
- Chunk::Delete(bo2);
- bo1->SetParentType(CT_DOUBLE_BRACE);
-
- bc2->Str() += bc1->GetStr();
- bc2->SetOrigColEnd(bc1->GetOrigColEnd());
- Chunk::Delete(bc1);
- bc2->SetParentType(CT_DOUBLE_BRACE);
- return;
- }
- }
- }
- LOG_FMT(LJDBI, " - no\n");
-} // check_double_brace_init
-
-
-void fix_symbols()
-{
- LOG_FUNC_ENTRY();
- Chunk *pc;
-
- cpd.unc_stage = unc_stage_e::FIX_SYMBOLS;
-
- mark_define_expressions();
-
- bool is_cpp = language_is_set(LANG_CPP);
- bool is_java = language_is_set(LANG_JAVA);
-
- for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- LOG_FMT(LFCNR, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
-
- if ( pc->Is(CT_FUNC_WRAP)
- || pc->Is(CT_TYPE_WRAP))
- {
- handle_wrap(pc);
- }
-
- if (pc->Is(CT_ASSIGN))
- {
- mark_lvalue(pc);
- }
- // a brace immediately preceded by word in C++11 is an initializer list though it may also
- // by a type casting initializer list if the word is really a type; sadly uncrustify knows
- // only built-in types and knows nothing of user-defined types
- Chunk *prev = pc->GetPrevNcNnlNi(); // Issue #2279
-
- if ( is_cpp
- && pc->Is(CT_BRACE_OPEN)
- && ( prev->Is(CT_WORD)
- || prev->Is(CT_TYPE)))
- {
- mark_lvalue(pc);
- }
-
- if ( is_java
- && pc->Is(CT_BRACE_OPEN))
- {
- check_double_brace_init(pc);
- }
-
- if (pc->Is(CT_ATTRIBUTE))
- {
- Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
-
- if ( next->IsNotNullChunk()
- && next->Is(CT_PAREN_OPEN))
- {
- flag_parens(next, PCF_NONE, CT_FPAREN_OPEN, CT_ATTRIBUTE, false);
- }
- }
- }
-
- pc = Chunk::GetHead();
-
- if (pc->IsCommentOrNewline())
- {
- pc = pc->GetNextNcNnl();
- }
-
- while (pc->IsNotNullChunk())
- {
- if (pc->Is(CT_IGNORED))
- {
- pc = pc->GetNextNcNnl();
- continue;
- }
- LOG_FMT(LFCNR, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- Chunk *prev = pc->GetPrevNcNnlNi(E_Scope::PREPROC); // Issue #2279
-
- if (prev->Is(CT_QUALIFIER))
- {
- prev = prev->GetPrevNcNnlNi(E_Scope::PREPROC); // Issue #3513
- }
-
- if (prev->IsNullChunk())
- {
- LOG_FMT(LFCNR, "%s(%d): WARNING: prev is NOT defined\n", __func__, __LINE__);
- }
- else
- {
- // Issue #2279
- LOG_FMT(LFCNR, "%s(%d): prev(ni) orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text(), get_token_name(prev->GetType()));
- }
- Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
-
- if (next->IsNullChunk())
- {
- LOG_FMT(LFCNR, "%s(%d): WARNING: next is NOT defined\n", __func__, __LINE__);
- }
- else
- {
- // Issue #2279
- LOG_FMT(LFCNR, "%s(%d): next orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->Text(), get_token_name(next->GetType()));
- }
- LOG_FMT(LFCNR, "%s(%d): do_symbol_check(%s, %s, %s)\n",
- __func__, __LINE__, prev->Text(), pc->Text(), next->Text());
- do_symbol_check(prev, pc, next);
- pc = pc->GetNextNcNnl();
- }
- pawn_add_virtual_semicolons();
- process_returns_and_throws();
-
- /*
- * 2nd pass - handle variable definitions
- * REVISIT: We need function params marked to do this (?)
- */
- pc = Chunk::GetHead();
- int square_level = -1;
-
- while ( pc != nullptr
- && pc->IsNotNullChunk())
- {
- char copy[1000];
- LOG_FMT(LFCNR, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s, parent type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy), get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
-
- // Can't have a variable definition inside [ ]
- if (square_level < 0)
- {
- if (pc->Is(CT_SQUARE_OPEN))
- {
- square_level = pc->GetLevel();
- }
- }
- else
- {
- if (pc->GetLevel() <= static_cast<size_t>(square_level))
- {
- square_level = -1;
- }
- }
-
- if ( pc->Is(CT_EXTERN)
- && language_is_set(LANG_ALLC))
- {
- Chunk *next = pc->GetNextNcNnl();
-
- if (next->Is(CT_STRING))
- {
- Chunk *tmp = next->GetNextNcNnl();
-
- while (tmp->IsNotNullChunk())
- {
- if ( tmp->Is(CT_TYPE)
- || tmp->Is(CT_BRACE_OPEN)
- || tmp->Is(CT_ATTRIBUTE))
- {
- break;
- }
-
- if (tmp->Is(CT_WORD))
- {
- tmp->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
- break;
- }
- tmp = tmp->GetNextNcNnl();
- }
- }
- }
-
- if ( pc->Is(CT_ATTRIBUTE)
- && language_is_set(LANG_ALLC))
- {
- Chunk *tmp = skip_attribute_next(pc);
-
- if (tmp->Is(CT_WORD))
- {
- tmp->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
- }
- }
-
- if ( pc->Is(CT_BRACE_OPEN) // Issue #2332
- && pc->GetParentType() == CT_BRACED_INIT_LIST)
- {
- LOG_FMT(LFCNR, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', look for CT_BRACE_OPEN\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc = pc->GetNextType(CT_BRACE_CLOSE, pc->GetLevel());
- }
- /*
- * A variable definition is possible after at the start of a statement
- * that starts with: DC_MEMBER, QUALIFIER, TYPE, or WORD
- */
- // Issue #2279
- // Issue #2478
- LOG_FMT(LFCNR, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s, parent type is %s\n ",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy), get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
- log_pcf_flags(LFCNR, pc->GetFlags());
-
- if ( (square_level < 0)
- && pc->TestFlags(PCF_STMT_START)
- && ( pc->Is(CT_QUALIFIER)
- || pc->Is(CT_TYPE)
- || pc->Is(CT_TYPENAME)
- || pc->Is(CT_DC_MEMBER) // Issue #2478
- || ( pc->Is(CT_WORD)
- && !pc->TestFlags(PCF_IN_CONDITIONAL) // Issue #3558
-// && language_is_set(LANG_CPP)
- )
- )
- && pc->GetParentType() != CT_BIT_COLON
- && pc->GetParentType() != CT_ENUM
- && !pc->TestFlags(PCF_IN_CLASS_BASE)
- && !pc->TestFlags(PCF_IN_ENUM))
- {
- pc = fix_variable_definition(pc);
- }
- else
- {
- pc = pc->GetNextNcNnl();
- }
- }
-} // fix_symbols
-
-
-static void process_returns_and_throws()
-{
- LOG_FUNC_ENTRY();
- Chunk *pc;
-
- pc = Chunk::GetHead();
-
- while (pc->IsNotNullChunk())
- {
- if ( pc->Is(CT_RETURN)
- || pc->Is(CT_THROW))
- {
- pc = process_return_or_throw(pc);
- }
- else
- {
- pc = pc->GetNext();
- }
- }
-}
-
-
-static Chunk *process_return_or_throw(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- const char *nl_expr_name;
- iarf_e nl_expr_value;
- const char *mod_paren_name;
- iarf_e mod_paren_value;
-
- if (pc->Is(CT_RETURN))
- {
- nl_expr_name = "nl_return_expr";
- nl_expr_value = options::nl_return_expr();
- mod_paren_name = "mod_paren_on_return";
- mod_paren_value = options::mod_paren_on_return();
- }
- else if (pc->Is(CT_THROW))
- {
- nl_expr_name = "nl_throw_expr";
- nl_expr_value = options::nl_throw_expr();
- mod_paren_name = "mod_paren_on_throw";
- mod_paren_value = options::mod_paren_on_throw();
- }
- else // should never happen
- {
- return(pc->GetNext());
- }
- Chunk *next;
- Chunk *temp;
- Chunk *semi;
- Chunk *cpar;
- Chunk chunk;
-
- // grab next and bail if it is a semicolon
- next = pc->PpaGetNextNcNnl();
-
- if ( next->IsNullChunk()
- || next->IsSemicolon()
- || next->Is(CT_NEWLINE))
- {
- return(next);
- }
- log_rule_B(nl_expr_name);
-
- if ( nl_expr_value != IARF_IGNORE
- && !pc->TestFlags(PCF_IN_PREPROC))
- {
- newline_iarf(pc, nl_expr_value);
- }
-
- if (next->Is(CT_PAREN_OPEN))
- {
- // See if the return/throw is fully paren'd
- cpar = next->GetNextType(CT_PAREN_CLOSE, next->GetLevel());
-
- if (cpar->IsNullChunk())
- {
- return(Chunk::NullChunkPtr);
- }
- semi = cpar->PpaGetNextNcNnl();
-
- if (semi->IsNullChunk())
- {
- return(Chunk::NullChunkPtr);
- }
-
- if ( semi->Is(CT_NEWLINE)
- || semi->IsSemicolon())
- {
- log_rule_B(mod_paren_name);
-
- if (mod_paren_value == IARF_REMOVE)
- {
- LOG_FMT(LRETURN, "%s(%d): removing parens on orig line %zu\n",
- __func__, __LINE__, pc->GetOrigLine());
-
- // lower the level of everything
- for (temp = next; temp != cpar; temp = temp->GetNext())
- {
- if (temp->GetLevel() == 0)
- {
- fprintf(stderr, "%s(%d): temp->GetLevel() is ZERO, cannot be decremented, at line %zu, column %zu\n",
- __func__, __LINE__, temp->GetOrigLine(), temp->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- temp->SetLevel(temp->GetLevel() - 1);
- }
-
- // delete the parenthesis
- Chunk::Delete(next);
- Chunk::Delete(cpar);
-
- // back up following chunks
- temp = semi;
-
- while ( temp->IsNotNullChunk()
- && temp->IsNot(CT_NEWLINE))
- {
- temp->SetColumn(temp->GetColumn() - 2);
- temp->SetOrigCol(temp->GetOrigCol() - 2);
- temp->SetOrigColEnd(temp->GetOrigColEnd() - 2);
- temp = temp->GetNext();
- }
- }
- else
- {
- LOG_FMT(LRETURN, "%s(%d): keeping parens on orig line %zu\n",
- __func__, __LINE__, pc->GetOrigLine());
-
- // mark & keep them
- next->SetParentType(pc->GetType());
- cpar->SetParentType(pc->GetType());
- }
- return(semi);
- }
- }
- // We don't have a fully paren'd return/throw. Should we add some?
- log_rule_B(mod_paren_name);
-
- if (!(mod_paren_value & IARF_ADD))
- {
- return(next);
- }
-
- // Issue #1917
- // Never add parens to a braced init list; that breaks the code
- // return {args...}; // C++11 type elision; okay
- // return ({args...}); // ill-formed
- if ( language_is_set(LANG_CPP)
- && next->Is(CT_BRACE_OPEN)
- && next->GetParentType() == CT_BRACED_INIT_LIST)
- {
- LOG_FMT(LRETURN, "%s(%d): not adding parens around braced initializer"
- " on orig line %zd\n",
- __func__, __LINE__, pc->GetOrigLine());
- return(next);
- }
- // find the next semicolon on the same level
- semi = next;
-
- if (pc->TestFlags(PCF_IN_PREPROC))
- {
- while ((semi = semi->GetNext())->IsNotNullChunk())
- {
- if (!semi->TestFlags(PCF_IN_PREPROC))
- {
- break;
- }
-
- if (semi->GetLevel() < pc->GetLevel())
- {
- return(semi);
- }
-
- if ( semi->IsSemicolon()
- && pc->GetLevel() == semi->GetLevel())
- {
- break;
- }
- }
- }
- else
- {
- while ((semi = semi->GetNext())->IsNotNullChunk())
- {
- if (semi->GetLevel() < pc->GetLevel())
- {
- return(semi);
- }
-
- if ( semi->IsSemicolon()
- && pc->GetLevel() == semi->GetLevel())
- {
- break;
- }
- }
- }
-
- if (semi)
- {
- // add the parenthesis
- chunk.SetType(CT_PAREN_OPEN);
- chunk.SetParentType(pc->GetType());
- chunk.Str() = "(";
- chunk.SetLevel(pc->GetLevel());
- chunk.SetPpLevel(pc->GetPpLevel());
- chunk.SetBraceLevel(pc->GetBraceLevel());
- chunk.SetOrigLine(pc->GetOrigLine());
- chunk.SetOrigCol(next->GetOrigCol() - 1);
- chunk.SetFlags(pc->GetFlags() & PCF_COPY_FLAGS);
- chunk.CopyAndAddBefore(next);
-
- chunk.SetType(CT_PAREN_CLOSE);
- chunk.Str() = ")";
- chunk.SetOrigLine(semi->GetOrigLine());
- chunk.SetOrigCol(semi->GetOrigCol() - 1);
- cpar = chunk.CopyAndAddBefore(semi);
-
- LOG_FMT(LRETURN, "%s(%d): added parens on orig line %zu\n",
- __func__, __LINE__, pc->GetOrigLine());
-
- for (temp = next; temp != cpar; temp = temp->GetNext())
- {
- temp->SetLevel(temp->GetLevel() + 1);
- }
- }
- return(semi);
-} // process_return_or_throw
-
-
-static bool is_oc_block(Chunk *pc)
-{
- return( pc != nullptr
- && ( pc->GetParentType() == CT_OC_BLOCK_TYPE
- || pc->GetParentType() == CT_OC_BLOCK_EXPR
- || pc->GetParentType() == CT_OC_BLOCK_ARG
- || pc->GetParentType() == CT_OC_BLOCK
- || pc->Is(CT_OC_BLOCK_CARET)
- || pc->GetNext()->Is(CT_OC_BLOCK_CARET)
- || pc->GetPrev()->Is(CT_OC_BLOCK_CARET)));
-}
-
-
-void mark_comments()
-{
- LOG_FUNC_ENTRY();
-
- cpd.unc_stage = unc_stage_e::MARK_COMMENTS;
-
- bool prev_nl = true;
- Chunk *cur = Chunk::GetHead();
-
- while (cur->IsNotNullChunk())
- {
- Chunk *next = cur->GetNextNvb();
- bool next_nl = next->IsNullChunk() || next->IsNewline();
-
- if (cur->IsComment())
- {
- if ( next_nl
- && prev_nl)
- {
- cur->SetParentType(CT_COMMENT_WHOLE);
- }
- else if (next_nl)
- {
- cur->SetParentType(CT_COMMENT_END);
- }
- else if (prev_nl)
- {
- cur->SetParentType(CT_COMMENT_START);
- }
- else
- {
- cur->SetParentType(CT_COMMENT_EMBED);
- }
- }
- prev_nl = cur->IsNewline();
- cur = next;
- }
-}
-
-
-static void handle_cpp_template(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *tmp = pc->GetNextNcNnl();
-
- if (tmp->IsNot(CT_ANGLE_OPEN))
- {
- return;
- }
- tmp->SetParentType(CT_TEMPLATE);
-
- size_t level = tmp->GetLevel();
-
- tmp = tmp->GetNext();
-
- while (tmp->IsNotNullChunk())
- {
- if ( tmp->Is(CT_CLASS)
- || tmp->Is(CT_STRUCT))
- {
- tmp->SetType(CT_TYPE);
- }
- else if ( tmp->Is(CT_ANGLE_CLOSE)
- && tmp->GetLevel() == level)
- {
- tmp->SetParentType(CT_TEMPLATE);
- break;
- }
- tmp = tmp->GetNext();
- }
-
- if (tmp->IsNotNullChunk())
- {
- tmp = tmp->GetNextNcNnl();
-
- if (tmp->Is(CT_FRIEND))
- {
- // Account for a template friend declaration
- tmp->SetParentType(CT_TEMPLATE);
-
- tmp = tmp->GetNextNcNnl();
- }
-
- if (tmp->IsClassOrStruct())
- {
- tmp->SetParentType(CT_TEMPLATE);
-
- // REVISIT: This may be a bit risky - might need to track the { };
- tmp = tmp->GetNextType(CT_SEMICOLON, tmp->GetLevel());
-
- if (tmp->IsNotNullChunk())
- {
- tmp->SetParentType(CT_TEMPLATE);
- }
- }
- }
-} // handle_cpp_template
-
-
-static void handle_cpp_lambda(Chunk *sq_o)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *ret = Chunk::NullChunkPtr;
-
- // abort if type of the previous token is not contained in this whitelist
- Chunk *prev = sq_o->GetPrevNcNnlNi(); // Issue #2279
-
- if (prev->IsNullChunk())
- {
- LOG_FMT(LFCNR, "%s(%d): prev is nullptr\n", __func__, __LINE__);
- }
-
- if ( prev->IsNullChunk()
- || ( prev->IsNot(CT_ASSIGN)
- && prev->IsNot(CT_COMMA)
- && prev->IsNot(CT_PAREN_OPEN) // allow Js like self invoking lambda syntax: ([](){})();
- && prev->IsNot(CT_FPAREN_OPEN)
- && prev->IsNot(CT_SQUARE_OPEN)
- && prev->IsNot(CT_BRACE_OPEN)
- && prev->IsNot(CT_SEMICOLON)
- && prev->IsNot(CT_RETURN)))
- {
- LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
- return;
- }
- Chunk *sq_c = sq_o; // assuming '[]'
-
- if (sq_o->Is(CT_SQUARE_OPEN))
- {
- // make sure there is a ']'
- sq_c = sq_o->GetClosingParen();
-
- if (sq_c->IsNullChunk())
- {
- LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
- return;
- }
- }
- Chunk *pa_o = sq_c->GetNextNcNnl();
-
- // check to see if there is a lambda-specifier in the pa_o chunk;
- // assuming chunk is CT_EXECUTION_CONTEXT, ignore lambda-specifier
- while (pa_o->Is(CT_EXECUTION_CONTEXT))
- {
- // set pa_o to next chunk after this specifier
- pa_o = pa_o->GetNextNcNnl();
- }
-
- if (pa_o->IsNullChunk())
- {
- LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
- return;
- }
- Chunk *pa_c = Chunk::NullChunkPtr;
-
- // lambda-declarator '( params )' is optional
- if (pa_o->Is(CT_PAREN_OPEN))
- {
- // and now find the ')'
- pa_c = pa_o->GetClosingParen();
-
- if (pa_c->IsNullChunk())
- {
- LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
- return;
- }
- }
- // Check for 'mutable' keyword: '[]() mutable {}' or []() mutable -> ret {}
- Chunk *br_o = pa_c->IsNotNullChunk() ? pa_c->GetNextNcNnl() : pa_o;
-
- if (br_o->IsString("mutable"))
- {
- br_o = br_o->GetNextNcNnl();
- }
- //TODO: also check for exception and attribute between [] ... {}
-
- // skip possible arrow syntax: '-> ret'
- if (br_o->IsString("->"))
- {
- ret = br_o;
- // REVISIT: really should check the stuff we are skipping
- br_o = br_o->GetNextType(CT_BRACE_OPEN, br_o->GetLevel());
- }
-
- // skip possible CT_NOEXCEPT
- if (br_o->Is(CT_NOEXCEPT)) // Issue #3321
- {
- ret = br_o;
- // REVISIT: really should check the stuff we are skipping
- br_o = br_o->GetNextType(CT_BRACE_OPEN, br_o->GetLevel());
- }
-
- if (br_o->IsNullChunk())
- {
- LOG_FMT(LFCNR, "%s(%d): br_o is null. Return\n", __func__, __LINE__);
- return;
- }
-
- if (br_o->IsNot(CT_BRACE_OPEN))
- {
- LOG_FMT(LFCNR, "%s(%d): br_o is '%s'/%s\n",
- __func__, __LINE__,
- br_o->Text(), get_token_name(br_o->GetType()));
- LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
- return;
- }
- // and now find the '}'
- Chunk *br_c = br_o->GetClosingParen();
-
- if (br_c->IsNullChunk())
- {
- LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
- return;
- }
-
- // This looks like a lambda expression
- if (sq_o->Is(CT_TSQUARE))
- {
- // split into two chunks
- Chunk nc;
-
- nc = *sq_o;
- sq_o->SetType(CT_SQUARE_OPEN);
- sq_o->Str().resize(1);
- /*
- * bug # 664
- *
- * The original m_origCol of CT_SQUARE_CLOSE is stored at m_origColEnd
- * of CT_TSQUARE. CT_SQUARE_CLOSE m_origCol and m_origColEnd values
- * are calculate from m_origColEnd of CT_TSQUARE.
- */
- nc.SetOrigCol(sq_o->GetOrigColEnd() - 1);
- nc.SetColumn(nc.GetOrigCol());
- nc.SetOrigColEnd(sq_o->GetOrigColEnd());
- sq_o->SetOrigColEnd(sq_o->GetOrigCol() + 1);
-
- nc.SetType(CT_SQUARE_CLOSE);
- nc.Str().pop_front();
- sq_c = nc.CopyAndAddAfter(sq_o);
- }
- sq_o->SetParentType(CT_CPP_LAMBDA);
- sq_c->SetParentType(CT_CPP_LAMBDA);
-
- if (pa_c->IsNotNullChunk())
- {
- pa_o->SetType(CT_LPAREN_OPEN); // Issue #3054
- pa_o->SetParentType(CT_CPP_LAMBDA);
- pa_o->SetParent(sq_o);
- br_o->SetParent(sq_o);
- pa_c->SetType(CT_LPAREN_CLOSE);
- pa_c->SetParentType(CT_CPP_LAMBDA);
- pa_c->SetParent(sq_o);
- br_c->SetParent(sq_o);
- }
- br_o->SetParentType(CT_CPP_LAMBDA);
- br_c->SetParentType(CT_CPP_LAMBDA);
-
- if (ret->IsNotNullChunk())
- {
- ret->SetType(CT_CPP_LAMBDA_RET);
- ret = ret->GetNextNcNnl();
-
- while (ret != br_o)
- {
- make_type(ret);
- ret = ret->GetNextNcNnl();
- }
- }
-
- if (pa_c->IsNotNullChunk())
- {
- fix_fcn_def_params(pa_o);
- }
- //handle self calling lambda paren
- Chunk *call_pa_o = br_c->GetNextNcNnl();
-
- if (call_pa_o->Is(CT_PAREN_OPEN))
- {
- Chunk *call_pa_c = call_pa_o->GetClosingParen();
-
- if (call_pa_c->IsNotNullChunk())
- {
- call_pa_o->SetType(CT_FPAREN_OPEN);
- call_pa_o->SetParentType(CT_FUNC_CALL);
- call_pa_c->SetType(CT_FPAREN_CLOSE);
- call_pa_c->SetParentType(CT_FUNC_CALL);
- }
- }
- mark_cpp_lambda(sq_o);
-} // handle_cpp_lambda
-
-
-static void handle_d_template(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *name = pc->GetNextNcNnl();
- Chunk *po = name->GetNextNcNnl();
-
- if ( name->IsNullChunk()
- || name->IsNot(CT_WORD))
- {
- // TODO: log an error, expected NAME
- return;
- }
-
- if ( po->IsNullChunk()
- || po->IsNot(CT_PAREN_OPEN))
- {
- // TODO: log an error, expected '('
- return;
- }
- name->SetType(CT_TYPE);
- name->SetParentType(CT_TEMPLATE);
- po->SetParentType(CT_TEMPLATE);
-
- ChunkStack cs;
- Chunk *tmp = get_d_template_types(cs, po);
-
- if ( tmp == nullptr
- || tmp->IsNot(CT_PAREN_CLOSE))
- {
- // TODO: log an error, expected ')'
- return;
- }
- tmp->SetParentType(CT_TEMPLATE);
-
- tmp = tmp->GetNextNcNnl();
-
- if (tmp->IsNot(CT_BRACE_OPEN))
- {
- // TODO: log an error, expected '{'
- return;
- }
- tmp->SetParentType(CT_TEMPLATE);
- po = tmp;
- tmp = tmp->GetNextNcNnl();
-
- while ( tmp->IsNotNullChunk()
- && tmp->GetLevel() > po->GetLevel())
- {
- if ( tmp->Is(CT_WORD)
- && chunkstack_match(cs, tmp))
- {
- tmp->SetType(CT_TYPE);
- }
- tmp = tmp->GetNextNcNnl();
- }
-// if (!tmp->Is(CT_BRACE_CLOSE))
-// {
-// // TODO: log an error, expected '}'
-// }
- tmp->SetParentType(CT_TEMPLATE);
-} // handle_d_template
-
-
-Chunk *skip_template_next(Chunk *ang_open)
-{
- if (ang_open == nullptr)
- {
- return(Chunk::NullChunkPtr);
- }
-
- if (ang_open->Is(CT_ANGLE_OPEN))
- {
- Chunk *pc = ang_open->GetNextType(CT_ANGLE_CLOSE, ang_open->GetLevel());
-
- if (pc->IsNullChunk())
- {
- return(Chunk::NullChunkPtr);
- }
- return(pc->GetNextNcNnl());
- }
- return(ang_open);
-}
-
-
-static void handle_oc_class(Chunk *pc)
-{
- enum class angle_state_e : unsigned int
- {
- NONE = 0,
- OPEN = 1, // '<' found
- CLOSE = 2, // '>' found
- };
-
- LOG_FUNC_ENTRY();
- Chunk *tmp;
- bool hit_scope = false;
- bool passed_name = false; // Did we pass the name of the class and now there can be only protocols, not generics
- int generic_level = 0; // level of depth of generic
- angle_state_e as = angle_state_e::NONE;
-
- LOG_FMT(LOCCLASS, "%s(%d): start [%s] [%s] line %zu\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetParentType()), pc->GetOrigLine());
-
- if (pc->GetParentType() == CT_OC_PROTOCOL)
- {
- tmp = pc->GetNextNcNnl();
-
- if (tmp->IsSemicolon())
- {
- tmp->SetParentType(pc->GetParentType());
- LOG_FMT(LOCCLASS, "%s(%d): bail on semicolon\n", __func__, __LINE__);
- return;
- }
- }
- tmp = pc;
-
- while ( (tmp = tmp->GetNextNnl()) != nullptr
- && tmp->IsNotNullChunk())
- {
- LOG_FMT(LOCCLASS, "%s(%d): orig line is %zu, [%s]\n",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->Text());
-
- if (tmp->Is(CT_OC_END))
- {
- break;
- }
-
- if (tmp->Is(CT_PAREN_OPEN))
- {
- passed_name = true;
- }
-
- if (tmp->IsString("<"))
- {
- tmp->SetType(CT_ANGLE_OPEN);
-
- if (passed_name)
- {
- tmp->SetParentType(CT_OC_PROTO_LIST);
- }
- else
- {
- tmp->SetParentType(CT_OC_GENERIC_SPEC);
- generic_level++;
- }
- as = angle_state_e::OPEN;
- }
-
- if (tmp->IsString(">"))
- {
- tmp->SetType(CT_ANGLE_CLOSE);
-
- if (passed_name)
- {
- tmp->SetParentType(CT_OC_PROTO_LIST);
- as = angle_state_e::CLOSE;
- }
- else
- {
- tmp->SetParentType(CT_OC_GENERIC_SPEC);
-
- if (generic_level == 0)
- {
- fprintf(stderr, "%s(%d): generic_level is ZERO, cannot be decremented, at line %zu, column %zu\n",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- generic_level--;
-
- if (generic_level == 0)
- {
- as = angle_state_e::CLOSE;
- }
- }
- }
-
- if (tmp->IsString(">>"))
- {
- tmp->SetType(CT_ANGLE_CLOSE);
- tmp->SetParentType(CT_OC_GENERIC_SPEC);
- split_off_angle_close(tmp);
- generic_level -= 1;
-
- if (generic_level == 0)
- {
- as = angle_state_e::CLOSE;
- }
- }
-
- if ( tmp->Is(CT_BRACE_OPEN)
- && tmp->GetParentType() != CT_ASSIGN)
- {
- as = angle_state_e::CLOSE;
- tmp->SetParentType(CT_OC_CLASS);
- tmp = tmp->GetNextType(CT_BRACE_CLOSE, tmp->GetLevel());
-
- if ( tmp->IsNotNullChunk()
- && tmp->GetParentType() != CT_ASSIGN)
- {
- tmp->SetParentType(CT_OC_CLASS);
- }
- }
- else if (tmp->Is(CT_COLON))
- {
- if (as != angle_state_e::OPEN)
- {
- passed_name = true;
- }
- tmp->SetType(hit_scope ? CT_OC_COLON : CT_CLASS_COLON);
-
- if (tmp->Is(CT_CLASS_COLON))
- {
- tmp->SetParentType(CT_OC_CLASS);
- }
- }
- else if ( tmp->IsString("-")
- || tmp->IsString("+"))
- {
- as = angle_state_e::CLOSE;
-
- if (tmp->GetPrev()->IsNewline())
- {
- tmp->SetType(CT_OC_SCOPE);
- tmp->SetFlagBits(PCF_STMT_START);
- hit_scope = true;
- }
- }
-
- if (as == angle_state_e::OPEN)
- {
- if (passed_name)
- {
- tmp->SetParentType(CT_OC_PROTO_LIST);
- }
- else
- {
- tmp->SetParentType(CT_OC_GENERIC_SPEC);
- }
- }
- }
-
- if (tmp->Is(CT_BRACE_OPEN))
- {
- tmp = tmp->GetNextType(CT_BRACE_CLOSE, tmp->GetLevel());
-
- if (tmp->IsNotNullChunk())
- {
- tmp->SetParentType(CT_OC_CLASS);
- }
- }
-} // handle_oc_class
-
-
-static void handle_oc_block_literal(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- if (pc == nullptr)
- {
- return; // let's be paranoid
- }
- Chunk *prev = pc->GetPrevNcNnlNi(); // Issue #2279
- Chunk *next = pc->GetNextNcNnl();
-
- if ( prev->IsNullChunk()
- || next->IsNullChunk())
- {
- return; // let's be paranoid
- }
- /*
- * block literal: '^ RTYPE ( ARGS ) { }'
- * RTYPE and ARGS are optional
- */
- LOG_FMT(LOCBLK, "%s(%d): block literal @ orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
-
- Chunk *apo = Chunk::NullChunkPtr; // arg paren open
- Chunk *bbo = Chunk::NullChunkPtr; // block brace open
- Chunk *bbc; // block brace close
-
- LOG_FMT(LOCBLK, "%s(%d): + scan", __func__, __LINE__);
- Chunk *tmp;
-
- for (tmp = next; tmp->IsNotNullChunk(); tmp = tmp->GetNextNcNnl())
- {
- /* handle '< protocol >' */
- if (tmp->IsString("<"))
- {
- Chunk *ao = tmp;
- Chunk *ac = ao->GetNextString(">", 1, ao->GetLevel());
-
- if (ac->IsNotNullChunk())
- {
- ao->SetType(CT_ANGLE_OPEN);
- ao->SetParentType(CT_OC_PROTO_LIST);
- ac->SetType(CT_ANGLE_CLOSE);
- ac->SetParentType(CT_OC_PROTO_LIST);
-
- for (tmp = ao->GetNext(); tmp != ac; tmp = tmp->GetNext())
- {
- tmp->SetLevel(tmp->GetLevel() + 1);
- tmp->SetParentType(CT_OC_PROTO_LIST);
- }
-
- tmp = ac->GetNextNcNnl();
- }
- else
- {
- tmp = Chunk::NullChunkPtr;
- }
- }
- LOG_FMT(LOCBLK, " '%s'", tmp->Text());
-
- if ( tmp->GetLevel() < pc->GetLevel()
- || tmp->Is(CT_SEMICOLON))
- {
- LOG_FMT(LOCBLK, "[DONE]");
- break;
- }
-
- if (tmp->GetLevel() == pc->GetLevel())
- {
- if (tmp->IsParenOpen())
- {
- apo = tmp;
- LOG_FMT(LOCBLK, "[PAREN]");
- }
-
- if (tmp->Is(CT_BRACE_OPEN))
- {
- LOG_FMT(LOCBLK, "[BRACE]");
- bbo = tmp;
- break;
- }
- }
- }
-
- // make sure we have braces
- bbc = bbo->GetClosingParen();
-
- if ( bbo->IsNullChunk()
- || bbc->IsNullChunk())
- {
- LOG_FMT(LOCBLK, " -- no braces found\n");
- return;
- }
- LOG_FMT(LOCBLK, "\n");
-
- // we are on a block literal for sure
- pc->SetType(CT_OC_BLOCK_CARET);
- pc->SetParentType(CT_OC_BLOCK_EXPR);
-
- // handle the optional args
- Chunk *lbp; // last before paren - end of return type, if any
-
- if (apo->IsNotNullChunk())
- {
- Chunk *apc = apo->GetClosingParen(); // arg parenthesis close
-
- if (apc->IsParenClose())
- {
- LOG_FMT(LOCBLK, " -- marking parens @ apo orig line is %zu, orig col is %zu and apc orig line is %zu, orig col is %zu\n",
- apo->GetOrigLine(), apo->GetOrigCol(), apc->GetOrigLine(), apc->GetOrigCol());
- flag_parens(apo, PCF_OC_ATYPE, CT_FPAREN_OPEN, CT_OC_BLOCK_EXPR, true);
- fix_fcn_def_params(apo);
- }
- lbp = apo->GetPrevNcNnlNi(); // Issue #2279
- }
- else
- {
- lbp = bbo->GetPrevNcNnlNi(); // Issue #2279
- }
-
- // mark the return type, if any
- while (lbp != pc)
- {
- LOG_FMT(LOCBLK, " -- lbp %s[%s]\n", lbp->Text(), get_token_name(lbp->GetType()));
- make_type(lbp);
- lbp->SetFlagBits(PCF_OC_RTYPE);
- lbp->SetParentType(CT_OC_BLOCK_EXPR);
- lbp = lbp->GetPrevNcNnlNi(); // Issue #2279
- }
- // mark the braces
- bbo->SetParentType(CT_OC_BLOCK_EXPR);
- bbc->SetParentType(CT_OC_BLOCK_EXPR);
-
- // mark the OC_BLOCK
- for (Chunk *tmp1 = bbo; tmp1 != bbc; tmp1 = tmp1->GetNextNcNnl())
- {
- tmp1->SetFlagBits(PCF_OC_IN_BLOCK);
- }
-} // handle_oc_block_literal
-
-
-static void handle_oc_block_type(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- if (pc == nullptr)
- {
- return;
- }
-
- if (pc->TestFlags(PCF_IN_TYPEDEF))
- {
- LOG_FMT(LOCBLK, "%s(%d): skip block type @ orig line is %zu, orig col is %zu, -- in typedef\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- return;
- }
- // make sure we have '( ^'
- Chunk *tpo = pc->GetPrevNcNnlNi(); // type paren open Issue #2279
-
- if (tpo->IsParenOpen())
- {
- /*
- * block type: 'RTYPE (^LABEL)(ARGS)'
- * LABEL is optional.
- */
- Chunk *tpc = tpo->GetClosingParen(); // type close paren (after '^')
- Chunk *nam = tpc->GetPrevNcNnlNi(); // name (if any) or '^' Issue #2279
- Chunk *apo = tpc->GetNextNcNnl(); // arg open paren
- Chunk *apc = apo->GetClosingParen(); // arg close paren
-
- /*
- * If this is a block literal instead of a block type, 'nam'
- * will actually be the closing bracket of the block. We run into
- * this situation if a block literal is enclosed in parentheses.
- */
- if (nam->IsBraceClose())
- {
- return(handle_oc_block_literal(pc));
- }
-
- // Check apo is '(' or else this might be a block literal. Issue 2643.
- if (!apo->IsParenOpen())
- {
- return(handle_oc_block_literal(pc));
- }
-
- if (apc->IsParenClose())
- {
- Chunk *aft = apc->GetNextNcNnl();
- E_Token pt;
-
- if (nam->IsString("^"))
- {
- nam->SetType(CT_PTR_TYPE);
- pt = CT_FUNC_TYPE;
- }
- else if ( aft->Is(CT_ASSIGN)
- || aft->Is(CT_SEMICOLON))
- {
- nam->SetType(CT_FUNC_VAR);
- pt = CT_FUNC_VAR;
- }
- else
- {
- nam->SetType(CT_FUNC_TYPE);
- pt = CT_FUNC_TYPE;
- }
- LOG_FMT(LOCBLK, "%s(%d): block type @ orig line is %zu, orig col is %zu, Text() '%s'[%s]\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), nam->Text(), get_token_name(nam->GetType()));
- pc->SetType(CT_PTR_TYPE);
- pc->SetParentType(pt); //CT_OC_BLOCK_TYPE;
- tpo->SetType(CT_TPAREN_OPEN);
- tpo->SetParentType(pt); //CT_OC_BLOCK_TYPE;
- tpc->SetType(CT_TPAREN_CLOSE);
- tpc->SetParentType(pt); //CT_OC_BLOCK_TYPE;
- apo->SetType(CT_FPAREN_OPEN);
- apo->SetParentType(CT_FUNC_PROTO);
- apc->SetType(CT_FPAREN_CLOSE);
- apc->SetParentType(CT_FUNC_PROTO);
- fix_fcn_def_params(apo);
- mark_function_return_type(nam, tpo->GetPrevNcNnlNi(), pt); // Issue #2279
- }
- }
-} // handle_oc_block_type
-
-
-static Chunk *handle_oc_md_type(Chunk *paren_open, E_Token ptype, T_PcfFlags flags, bool &did_it)
-{
- Chunk *paren_close;
-
- if ( !paren_open->IsParenOpen()
- || ((paren_close = paren_open->GetClosingParen())->IsNullChunk()))
- {
- did_it = false;
- return(paren_open);
- }
- did_it = true;
-
- paren_open->SetParentType(ptype);
- paren_open->SetFlagBits(flags);
- paren_close->SetParentType(ptype);
- paren_close->SetFlagBits(flags);
-
- for (Chunk *cur = paren_open->GetNextNcNnl();
- cur != paren_close;
- cur = cur->GetNextNcNnl())
- {
- LOG_FMT(LOCMSGD, " <%s|%s>", cur->Text(), get_token_name(cur->GetType()));
- cur->SetFlagBits(flags);
- make_type(cur);
- }
-
- // returning the chunk after the paren close
- return(paren_close->GetNextNcNnl());
-}
-
-
-static void handle_oc_message_decl(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- bool did_it;
- //bool in_paren = false;
- //int paren_cnt = 0;
- //int arg_cnt = 0;
-
- // Figure out if this is a spec or decl
- Chunk *tmp = pc;
-
- if (tmp == nullptr)
- {
- tmp = Chunk::NullChunkPtr;
- }
-
- while ((tmp = tmp->GetNext())->IsNotNullChunk())
- {
- if (tmp->GetLevel() < pc->GetLevel())
- {
- // should not happen
- return;
- }
-
- if ( tmp->Is(CT_SEMICOLON)
- || tmp->Is(CT_BRACE_OPEN))
- {
- break;
- }
- }
-
- if (tmp == nullptr)
- {
- return;
- }
- E_Token pt = tmp->Is(CT_SEMICOLON) ? CT_OC_MSG_SPEC : CT_OC_MSG_DECL;
-
- pc->SetType(CT_OC_SCOPE);
- pc->SetParentType(pt);
-
- LOG_FMT(LOCMSGD, "%s(%d): %s @ orig line is %zu, orig col is %zu -",
- __func__, __LINE__, get_token_name(pt), pc->GetOrigLine(), pc->GetOrigCol());
-
- // format: -(TYPE) NAME [: (TYPE)NAME
-
- // handle the return type
- tmp = handle_oc_md_type(pc->GetNextNcNnl(), pt, PCF_OC_RTYPE, did_it);
-
- if (!did_it)
- {
- LOG_FMT(LOCMSGD, " -- missing type parens\n");
- return;
- }
-
- // expect the method name/label
- if (tmp->IsNot(CT_WORD))
- {
- LOG_FMT(LOCMSGD, " -- missing method name\n");
- return;
- } // expect the method name/label
-
- Chunk *label = tmp;
-
- tmp->SetType(pt);
- tmp->SetParentType(pt);
- pc = tmp->GetNextNcNnl();
-
- LOG_FMT(LOCMSGD, " [%s]%s", pc->Text(), get_token_name(pc->GetType()));
-
- // if we have a colon next, we have args
- if ( pc->Is(CT_COLON)
- || pc->Is(CT_OC_COLON))
- {
- pc = label;
-
- while (true)
- {
- // skip optional label
- if ( pc->Is(CT_WORD)
- || pc->Is(pt))
- {
- pc->SetParentType(pt);
- pc = pc->GetNextNcNnl();
- }
-
- // a colon must be next
- if (!pc->IsString(":"))
- {
- break;
- }
- pc->SetType(CT_OC_COLON);
- pc->SetParentType(pt);
- pc = pc->GetNextNcNnl();
-
- // next is the type in parens
- LOG_FMT(LOCMSGD, " (%s)", pc->Text());
- tmp = handle_oc_md_type(pc, pt, PCF_OC_ATYPE, did_it);
-
- if (!did_it)
- {
- LOG_FMT(LWARN, "%s(%d): orig line is %zu, orig col is %zu expected type\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- break;
- }
- // attributes for a method parameter sit between the parameter type and the parameter name
- pc = skip_attribute_next(tmp);
- // we should now be on the arg name
- pc->SetFlagBits(PCF_VAR_DEF);
- LOG_FMT(LOCMSGD, " arg[%s]", pc->Text());
- pc = pc->GetNextNcNnl();
- }
- }
- LOG_FMT(LOCMSGD, " end[%s]", pc->Text());
-
- if (pc->Is(CT_BRACE_OPEN))
- {
- pc->SetParentType(pt);
- pc = pc->GetClosingParen();
-
- if (pc->IsNotNullChunk())
- {
- pc->SetParentType(pt);
- }
- }
- else if (pc->Is(CT_SEMICOLON))
- {
- pc->SetParentType(pt);
- }
- LOG_FMT(LOCMSGD, "\n");
-} // handle_oc_message_decl
-
-
-static void handle_oc_message_send(Chunk *os)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *cs = Chunk::NullChunkPtr;
-
- if (os != nullptr)
- {
- cs = os->GetNext();
- }
-
- while ( cs->IsNotNullChunk()
- && cs->GetLevel() > os->GetLevel())
- {
- cs = cs->GetNext();
- }
-
- if ( cs->IsNullChunk()
- || cs->IsNot(CT_SQUARE_CLOSE))
- {
- return;
- }
- LOG_FMT(LOCMSG, "%s(%d): orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, os->GetOrigLine(), os->GetOrigCol());
-
- Chunk *tmp = cs->GetNextNcNnl();
-
- if (tmp->IsSemicolon())
- {
- tmp->SetParentType(CT_OC_MSG);
- }
- // expect a word first thing or [...]
- tmp = Chunk::NullChunkPtr;
-
- if (os != nullptr)
- {
- tmp = os->GetNextNcNnl();
- }
-
- if ( tmp->Is(CT_SQUARE_OPEN)
- || tmp->Is(CT_PAREN_OPEN)
- || tmp->Is(CT_OC_AT))
- {
- Chunk *tt = tmp->GetNextNcNnl();
-
- if ( tmp->Is(CT_OC_AT)
- && tt->IsNotNullChunk())
- {
- if ( tt->Is(CT_PAREN_OPEN)
- || tt->Is(CT_BRACE_OPEN)
- || tt->Is(CT_SQUARE_OPEN))
- {
- tmp = tt;
- }
- else
- {
- LOG_FMT(LOCMSG, "%s(%d): tmp orig line is %zu, orig col is %zu, expected identifier, not '%s' [%s]\n",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(),
- tmp->Text(), get_token_name(tmp->GetType()));
- return;
- }
- }
- tmp = tmp->GetClosingParen();
- }
- else if ( tmp->IsNot(CT_WORD)
- && tmp->IsNot(CT_TYPE)
- && tmp->IsNot(CT_THIS)
- && tmp->IsNot(CT_STAR)
- && tmp->IsNot(CT_STRING))
- {
- LOG_FMT(LOCMSG, "%s(%d): orig line is %zu, orig col is %zu, expected identifier, not '%s' [%s]\n",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(),
- tmp->Text(), get_token_name(tmp->GetType()));
- return;
- }
- else
- {
- if (tmp->IsStar()) // Issue #2722
- {
- tmp->SetType(CT_PTR_TYPE);
- tmp = tmp->GetNextNcNnl();
- }
- Chunk *tt = tmp->GetNextNcNnl();
-
- if (tt->IsParenOpen())
- {
- LOG_FMT(LFCN, "%s(%d): (18) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
- tmp->SetType(CT_FUNC_CALL);
- tmp = set_paren_parent(tt, CT_FUNC_CALL)->GetPrevNcNnlNi(); // Issue #2279
- }
- else
- {
- tmp->SetType(CT_OC_MSG_CLASS);
- }
- }
- os->SetParentType(CT_OC_MSG);
- os->SetFlagBits(PCF_IN_OC_MSG);
- cs->SetParentType(CT_OC_MSG);
- cs->SetFlagBits(PCF_IN_OC_MSG);
-
- // handle '< protocol >'
- tmp = tmp->GetNextNcNnl();
-
- if (tmp->IsString("<"))
- {
- Chunk *ao = tmp;
- Chunk *ac = ao->GetNextString(">", 1, ao->GetLevel());
-
- if (ac->IsNotNullChunk())
- {
- ao->SetType(CT_ANGLE_OPEN);
- ao->SetParentType(CT_OC_PROTO_LIST);
- ac->SetType(CT_ANGLE_CLOSE);
- ac->SetParentType(CT_OC_PROTO_LIST);
-
- for (tmp = ao->GetNext(); tmp != ac; tmp = tmp->GetNext())
- {
- tmp->SetLevel(tmp->GetLevel() + 1);
- tmp->SetParentType(CT_OC_PROTO_LIST);
- }
-
- tmp = ac->GetNextNcNnl();
- }
- else
- {
- tmp = Chunk::NullChunkPtr;
- }
- }
- // handle 'object.property' and 'collection[index]'
- else
- {
- while (tmp->IsNotNullChunk())
- {
- if (tmp->Is(CT_MEMBER)) // move past [object.prop1.prop2
- {
- Chunk *typ = tmp->GetNextNcNnl();
-
- if ( typ->Is(CT_WORD)
- || typ->Is(CT_TYPE))
- {
- tmp = typ->GetNextNcNnl();
- }
- else
- {
- break;
- }
- }
- else if (tmp->Is(CT_SQUARE_OPEN)) // move past [collection[index]
- {
- Chunk *tcs = tmp->GetNextNcNnl();
-
- while ( tcs->IsNotNullChunk()
- && tcs->GetLevel() > tmp->GetLevel())
- {
- tcs = tcs->GetNextNcNnl();
- }
-
- if (tcs->Is(CT_SQUARE_CLOSE))
- {
- tmp = tcs->GetNextNcNnl();
- }
- else
- {
- break;
- }
- }
- else
- {
- break;
- }
- }
- }
-
- // [(self.foo.bar) method]
- if (tmp->IsParenOpen())
- {
- tmp = tmp->GetClosingParen()->GetNextNcNnl();
- }
-
- if ( tmp->Is(CT_WORD)
- || tmp->Is(CT_ACCESS)
- || tmp->Is(CT_TYPE))
- {
- tmp->SetType(CT_OC_MSG_FUNC);
- }
- Chunk *prev = Chunk::NullChunkPtr;
-
- for (tmp = os->GetNext(); tmp != cs; tmp = tmp->GetNext())
- {
- tmp->SetFlagBits(PCF_IN_OC_MSG);
-
- if (tmp->GetLevel() == cs->GetLevel() + 1)
- {
- if ( tmp->Is(CT_COLON)
- || tmp->Is(CT_ACCESS_COLON))
- {
- tmp->SetType(CT_OC_COLON);
-
- if ( prev->Is(CT_WORD)
- || prev->Is(CT_ACCESS)
- || prev->Is(CT_TYPE))
- {
- // Might be a named param, check previous block
- Chunk *pp = prev->GetPrev();
-
- if ( pp->IsNotNullChunk()
- && pp->IsNot(CT_OC_COLON)
- && pp->IsNot(CT_ARITH)
- && pp->IsNot(CT_SHIFT)
- && pp->IsNot(CT_CARET))
- {
- prev->SetType(CT_OC_MSG_NAME);
- tmp->SetParentType(CT_OC_MSG_NAME);
- }
- }
- }
- }
- prev = tmp;
- }
-} // handle_oc_message_send
-
-
-static void handle_oc_available(Chunk *os)
-{
- if (os != nullptr)
- {
- os = os->GetNext();
- }
- else
- {
- os = Chunk::NullChunkPtr;
- }
-
- while (os->IsNotNullChunk())
- {
- E_Token origType = os->GetType();
- os->SetType(CT_OC_AVAILABLE_VALUE);
-
- if (origType == CT_PAREN_CLOSE)
- {
- break;
- }
- os = os->GetNext();
- }
-}
-
-
-static void handle_oc_property_decl(Chunk *os)
-{
- log_rule_B("mod_sort_oc_properties");
-
- if (options::mod_sort_oc_properties())
- {
- typedef std::vector<Chunk *> ChunkGroup;
-
- Chunk *next = Chunk::NullChunkPtr;
-
- if (os != nullptr)
- {
- next = os->GetNext();
- }
- Chunk *open_paren = nullptr;
-
- std::vector<ChunkGroup> class_chunks; // class
- std::vector<ChunkGroup> thread_chunks; // atomic, nonatomic
- std::vector<ChunkGroup> readwrite_chunks; // readwrite, readonly
- std::vector<ChunkGroup> ref_chunks; // retain, copy, assign, weak, strong, unsafe_unretained
- std::vector<ChunkGroup> getter_chunks; // getter
- std::vector<ChunkGroup> setter_chunks; // setter
- std::vector<ChunkGroup> nullability_chunks; // nonnull, nullable, null_unspecified, null_resettable
- std::vector<ChunkGroup> other_chunks; // any words other than above
-
- if (next->Is(CT_PAREN_OPEN))
- {
- open_paren = next;
- next = next->GetNext();
-
- /*
- * Determine location of the property attributes
- * NOTE: Did not do this in the combine.cpp do_symbol_check as
- * I was not sure what the ramifications of adding a new type
- * for each of the below types would be. It did break some items
- * when I attempted to add them so this is my hack for now.
- */
- while ( next->IsNotNullChunk()
- && next->IsNot(CT_PAREN_CLOSE))
- {
- if (next->Is(CT_OC_PROPERTY_ATTR))
- {
- if ( next->IsString("atomic")
- || next->IsString("nonatomic"))
- {
- ChunkGroup chunkGroup;
- chunkGroup.push_back(next);
- thread_chunks.push_back(chunkGroup);
- }
- else if ( next->IsString("readonly")
- || next->IsString("readwrite"))
- {
- ChunkGroup chunkGroup;
- chunkGroup.push_back(next);
- readwrite_chunks.push_back(chunkGroup);
- }
- else if ( next->IsString("assign")
- || next->IsString("retain")
- || next->IsString("copy")
- || next->IsString("strong")
- || next->IsString("weak")
- || next->IsString("unsafe_unretained"))
- {
- ChunkGroup chunkGroup;
- chunkGroup.push_back(next);
- ref_chunks.push_back(chunkGroup);
- }
- else if (next->IsString("getter"))
- {
- ChunkGroup chunkGroup;
-
- do
- {
- chunkGroup.push_back(next);
- next = next->GetNext();
- } while ( next->IsNotNullChunk()
- && next->IsNot(CT_COMMA)
- && next->IsNot(CT_PAREN_CLOSE));
-
- next = next->GetPrev();
-
- // coverity CID 160946
- if (next->IsNullChunk())
- {
- break;
- }
- getter_chunks.push_back(chunkGroup);
- }
- else if (next->IsString("setter"))
- {
- ChunkGroup chunkGroup;
-
- do
- {
- chunkGroup.push_back(next);
- next = next->GetNext();
- } while ( next->IsNotNullChunk()
- && next->IsNot(CT_COMMA)
- && next->IsNot(CT_PAREN_CLOSE));
-
- if (next->IsNotNullChunk())
- {
- next = next->GetPrev();
- }
-
- if (next->IsNullChunk())
- {
- break;
- }
- setter_chunks.push_back(chunkGroup);
- }
- else if ( next->IsString("nullable")
- || next->IsString("nonnull")
- || next->IsString("null_resettable")
- || next->IsString("null_unspecified"))
- {
- ChunkGroup chunkGroup;
- chunkGroup.push_back(next);
- nullability_chunks.push_back(chunkGroup);
- }
- else if (next->IsString("class"))
- {
- ChunkGroup chunkGroup;
- chunkGroup.push_back(next);
- class_chunks.push_back(chunkGroup);
- }
- else
- {
- ChunkGroup chunkGroup;
- chunkGroup.push_back(next);
- other_chunks.push_back(chunkGroup);
- }
- }
- else if (next->IsWord())
- {
- if (next->IsString("class"))
- {
- ChunkGroup chunkGroup;
- chunkGroup.push_back(next);
- class_chunks.push_back(chunkGroup);
- }
- else
- {
- ChunkGroup chunkGroup;
- chunkGroup.push_back(next);
- other_chunks.push_back(chunkGroup);
- }
- }
- next = next->GetNext();
- }
- log_rule_B("mod_sort_oc_property_class_weight");
- int class_w = options::mod_sort_oc_property_class_weight();
- log_rule_B("mod_sort_oc_property_thread_safe_weight");
- int thread_w = options::mod_sort_oc_property_thread_safe_weight();
- log_rule_B("mod_sort_oc_property_readwrite_weight");
- int readwrite_w = options::mod_sort_oc_property_readwrite_weight();
- log_rule_B("mod_sort_oc_property_reference_weight");
- int ref_w = options::mod_sort_oc_property_reference_weight();
- log_rule_B("mod_sort_oc_property_getter_weight");
- int getter_w = options::mod_sort_oc_property_getter_weight();
- log_rule_B("mod_sort_oc_property_setter_weight");
- int setter_w = options::mod_sort_oc_property_setter_weight();
- log_rule_B("mod_sort_oc_property_nullability_weight");
- int nullability_w = options::mod_sort_oc_property_nullability_weight();
-
- //
- std::multimap<int, std::vector<ChunkGroup> > sorted_chunk_map;
- sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(class_w, class_chunks));
- sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(thread_w, thread_chunks));
- sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(readwrite_w, readwrite_chunks));
- sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(ref_w, ref_chunks));
- sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(getter_w, getter_chunks));
- sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(setter_w, setter_chunks));
- sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(nullability_w, nullability_chunks));
- sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(std::numeric_limits<int>::min(), other_chunks));
-
- Chunk *curr_chunk = open_paren;
-
- for (multimap<int, std::vector<ChunkGroup> >::reverse_iterator it = sorted_chunk_map.rbegin(); it != sorted_chunk_map.rend(); ++it)
- {
- std::vector<ChunkGroup> chunk_groups = (*it).second;
-
- for (auto chunk_group : chunk_groups)
- {
- for (auto chunk : chunk_group)
- {
- chunk->SetOrigPrevSp(0);
-
- if (chunk != curr_chunk)
- {
- chunk->MoveAfter(curr_chunk);
- curr_chunk = chunk;
- }
- else
- {
- curr_chunk = curr_chunk->GetNext();
- }
- }
-
- // add the parenthesis
- Chunk endchunk;
- endchunk.SetType(CT_COMMA);
- endchunk.SetParentType(curr_chunk->GetParentType());
- endchunk.Str() = ",";
- endchunk.SetLevel(curr_chunk->GetLevel());
- endchunk.SetPpLevel(curr_chunk->GetPpLevel());
- endchunk.SetBraceLevel(curr_chunk->GetBraceLevel());
- endchunk.SetOrigLine(curr_chunk->GetOrigLine());
- endchunk.SetOrigCol(curr_chunk->GetOrigCol());
- endchunk.SetColumn(curr_chunk->GetOrigColEnd() + 1);
- endchunk.SetFlags(curr_chunk->GetFlags() & PCF_COPY_FLAGS);
- endchunk.CopyAndAddAfter(curr_chunk);
- curr_chunk = curr_chunk->GetNext();
- }
- }
-
- // Remove the extra comma's that we did not move
- while ( curr_chunk != nullptr
- && curr_chunk->IsNotNullChunk()
- && curr_chunk->IsNot(CT_PAREN_CLOSE))
- {
- Chunk *rm_chunk = curr_chunk;
- curr_chunk = curr_chunk->GetNext();
- Chunk::Delete(rm_chunk);
- }
- }
- }
- Chunk *tmp = Chunk::NullChunkPtr;
-
- if (os != nullptr)
- {
- tmp = os->GetNextNcNnl();
- }
-
- if (tmp->IsParenOpen())
- {
- tmp = tmp->GetClosingParen()->GetNextNcNnl();
- }
- fix_variable_definition(tmp);
-} // handle_oc_property_decl
-
-
-static void handle_cs_square_stmt(Chunk *os)
-{
- LOG_FUNC_ENTRY();
-
- if (os == nullptr)
- {
- os = Chunk::NullChunkPtr;
- }
- Chunk *cs = os->GetNext();
-
- while ( cs->IsNotNullChunk()
- && cs->GetLevel() > os->GetLevel())
- {
- cs = cs->GetNext();
- }
-
- if ( cs->IsNullChunk()
- || cs->IsNot(CT_SQUARE_CLOSE))
- {
- return;
- }
- os->SetParentType(CT_CS_SQ_STMT);
- cs->SetParentType(CT_CS_SQ_STMT);
-
- Chunk *tmp;
-
- for (tmp = os->GetNext(); tmp != cs; tmp = tmp->GetNext())
- {
- tmp->SetParentType(CT_CS_SQ_STMT);
-
- if (tmp->Is(CT_COLON))
- {
- tmp->SetType(CT_CS_SQ_COLON);
- }
- }
-
- tmp = cs->GetNextNcNnl();
-
- if (tmp->IsNotNullChunk())
- {
- tmp->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
- }
-} // handle_cs_square_stmt
-
-
-static void handle_cs_property(Chunk *bro)
-{
- LOG_FUNC_ENTRY();
-
- set_paren_parent(bro, CT_CS_PROPERTY);
-
- bool did_prop = false;
- Chunk *pc = bro;
-
- while ((pc = pc->GetPrevNcNnlNi())->IsNotNullChunk()) // Issue #2279
- {
- if (pc->GetLevel() == bro->GetLevel())
- {
- //prevent scanning back past 'new' in expressions like new List<int> {1,2,3}
- // Issue # 1620, UNI-24090.cs
- if (pc->Is(CT_NEW))
- {
- break;
- }
-
- if ( !did_prop
- && ( pc->Is(CT_WORD)
- || pc->Is(CT_THIS)))
- {
- pc->SetType(CT_CS_PROPERTY);
- did_prop = true;
- }
- else
- {
- pc->SetParentType(CT_CS_PROPERTY);
- make_type(pc);
- }
-
- if (pc->TestFlags(PCF_STMT_START))
- {
- break;
- }
- }
- }
-}
-
-
-static void handle_cs_array_type(Chunk *pc)
-{
- if ( pc == nullptr
- || pc->IsNullChunk())
- {
- return;
- }
- Chunk *prev = pc->GetPrev();
-
- for ( ;
- prev->Is(CT_COMMA);
- prev = prev->GetPrev())
- {
- // empty
- }
-
- if (prev->Is(CT_SQUARE_OPEN))
- {
- while (pc != prev)
- {
- pc->SetParentType(CT_TYPE);
- pc = pc->GetPrev();
- }
- prev->SetParentType(CT_TYPE);
- }
-}
-
-
-static void handle_wrap(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
- Chunk *opp = Chunk::NullChunkPtr;
-
- if (pc != nullptr)
- {
- opp = pc->GetNext();
- }
- Chunk *name = opp->GetNext();
- Chunk *clp = name->GetNext();
-
- log_rule_B("sp_func_call_paren");
- log_rule_B("sp_cpp_cast_paren");
- iarf_e pav = pc->Is(CT_FUNC_WRAP) ?
- options::sp_func_call_paren() :
- options::sp_cpp_cast_paren();
-
- log_rule_B("sp_inside_fparen");
- log_rule_B("sp_inside_paren_cast");
- iarf_e av = pc->Is(CT_FUNC_WRAP) ?
- options::sp_inside_fparen() :
- options::sp_inside_paren_cast();
-
- if ( clp->Is(CT_PAREN_CLOSE)
- && opp->Is(CT_PAREN_OPEN)
- && ( name->Is(CT_WORD)
- || name->Is(CT_TYPE)))
- {
- const char *psp = (pav & IARF_ADD) ? " " : "";
- const char *fsp = (av & IARF_ADD) ? " " : "";
-
- pc->Str().append(psp);
- pc->Str().append("(");
- pc->Str().append(fsp);
- pc->Str().append(name->GetStr());
- pc->Str().append(fsp);
- pc->Str().append(")");
-
- pc->SetType(pc->Is(CT_FUNC_WRAP) ? CT_FUNCTION : CT_TYPE);
-
- pc->SetOrigColEnd(pc->GetOrigCol() + pc->Len());
-
- Chunk::Delete(opp);
- Chunk::Delete(name);
- Chunk::Delete(clp);
- }
-} // handle_wrap
-
-
-static void handle_proto_wrap(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
- Chunk *opp = pc->GetNextNcNnl();
- Chunk *name = opp->GetNextNcNnl();
- Chunk *tmp = name->GetNextNcNnl()->GetNextNcNnl();
- Chunk *clp = opp->GetClosingParen();
- Chunk *cma = clp->GetNextNcNnl();
-
- if ( opp->IsNullChunk()
- || name->IsNullChunk()
- || tmp->IsNullChunk()
- || clp == nullptr
- || cma->IsNullChunk()
- || ( name->IsNot(CT_WORD)
- && name->IsNot(CT_TYPE))
- || opp->IsNot(CT_PAREN_OPEN))
- {
- return;
- }
-
- if (cma->Is(CT_SEMICOLON))
- {
- pc->SetType(CT_FUNC_PROTO);
- }
- else if (cma->Is(CT_BRACE_OPEN))
- {
- LOG_FMT(LFCN, "%s(%d): (19) SET TO CT_FUNC_DEF: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc->SetType(CT_FUNC_DEF);
- }
- else
- {
- return;
- }
- opp->SetParentType(pc->GetType());
- clp->SetParentType(pc->GetType());
-
- tmp->SetParentType(CT_PROTO_WRAP);
-
- if (tmp->Is(CT_PAREN_OPEN))
- {
- fix_fcn_def_params(tmp);
- }
- else
- {
- fix_fcn_def_params(opp);
- name->SetType(CT_WORD);
- }
- tmp = tmp->GetClosingParen();
-
- if (tmp->IsNotNullChunk())
- {
- tmp->SetParentType(CT_PROTO_WRAP);
- }
- // Mark return type (TODO: move to own function)
- tmp = pc;
-
- while ((tmp = tmp->GetPrevNcNnlNi())->IsNotNullChunk()) // Issue #2279
- {
- if ( !tmp->IsTypeDefinition()
- && tmp->IsNot(CT_OPERATOR)
- && tmp->IsNot(CT_WORD)
- && tmp->IsNot(CT_ADDR))
- {
- break;
- }
- tmp->SetParentType(pc->GetType());
- make_type(tmp);
- }
-} // handle_proto_wrap
-
-
-/**
- * Java assert statements are: "assert EXP1 [: EXP2] ;"
- * Mark the parent of the colon and semicolon
- */
-static void handle_java_assert(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
- bool did_colon = false;
- Chunk *tmp = pc;
-
- if (tmp == nullptr)
- {
- tmp = Chunk::NullChunkPtr;
- }
-
- while ((tmp = tmp->GetNext())->IsNotNullChunk())
- {
- if (tmp->GetLevel() == pc->GetLevel())
- {
- if ( !did_colon
- && tmp->Is(CT_COLON))
- {
- did_colon = true;
- tmp->SetParentType(pc->GetType());
- }
-
- if (tmp->Is(CT_SEMICOLON))
- {
- tmp->SetParentType(pc->GetType());
- break;
- }
- }
- }
-} // handle_java_assert
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine.h
deleted file mode 100644
index 5cab3494..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * @file combine.h
- * prototypes for combine.cpp
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef COMBINE_H_INCLUDED
-#define COMBINE_H_INCLUDED
-
-#include "chunk.h"
-#include "uncrustify_types.h"
-
-void mark_question_colon();
-
-
-/**
- * Change CT_INCDEC_AFTER + WORD to CT_INCDEC_BEFORE
- * Change number/word + CT_ADDR to CT_ARITH
- * Change number/word + CT_STAR to CT_ARITH
- * Change number/word + CT_NEG to CT_ARITH
- * Change word + ( to a CT_FUNCTION
- * Change struct/union/enum + CT_WORD => CT_TYPE
- * Force parens on return.
- *
- * TODO: This could be done earlier.
- *
- * Patterns detected:
- * STRUCT/ENUM/UNION + WORD :: WORD => TYPE
- * WORD + '(' :: WORD => FUNCTION
- */
-void fix_symbols();
-
-
-/**
- * Examines the whole file and changes CT_COLON to
- * CT_Q_COLON, CT_LABEL_COLON, or CT_CASE_COLON.
- * It also changes the CT_WORD before CT_LABEL_COLON into CT_LABEL.
- */
-void combine_labels();
-
-
-//! help function for mark_variable_definition...
-bool go_on(Chunk *pc, Chunk *start);
-
-
-//! Sets the parent for comments.
-void mark_comments();
-
-
-void make_type(Chunk *pc);
-
-
-/**
- * Sets the parent of the open paren/brace/square/angle and the closing.
- * Note - it is assumed that pc really does point to an open item and the
- * close must be open + 1.
- *
- * @param start The open paren
- * @param parent The type to assign as the parent
- *
- * @return The chunk after the close paren
- */
-Chunk *set_paren_parent(Chunk *start, E_Token parent);
-
-
-/**
- * This is called on every chunk.
- * First on all non-preprocessor chunks and then on each preprocessor chunk.
- * It does all the detection and classifying.
- * This is only called by fix_symbols.
- * The three parameters never get the value nullptr.
- * it is not necessary to test.
- */
-void do_symbol_check(Chunk *prev, Chunk *pc, Chunk *next);
-
-
-#endif /* COMBINE_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_fix_mark.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_fix_mark.cpp
deleted file mode 100644
index ebaedce0..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_fix_mark.cpp
+++ /dev/null
@@ -1,2623 +0,0 @@
-/**
- * @file combine_fix_mark.cpp
- *
- * @author Guy Maurel
- * @license GPL v2+
- * extract fom combine.cpp
- */
-
-#include "combine_fix_mark.h"
-
-#include "combine_skip.h"
-#include "combine_tools.h"
-#include "flag_parens.h"
-#include "log_rules.h"
-
-constexpr static auto LCURRENT = LCOMBINE;
-
-
-void fix_casts(Chunk *start)
-{
- LOG_FUNC_ENTRY();
- Chunk *pc;
- Chunk *prev;
- Chunk *first;
- Chunk *after;
- Chunk *last = Chunk::NullChunkPtr;
- Chunk *paren_close;
- const char *verb = "likely";
- const char *detail = "";
- size_t count = 0;
- int word_count = 0;
- bool nope;
- bool doubtful_cast = false;
-
-
- LOG_FMT(LCASTS, "%s(%d): start->Text() is '%s', orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, start->Text(), start->GetOrigLine(), start->GetOrigCol());
-
- prev = start->GetPrevNcNnlNi(); // Issue #2279
-
- if (prev->IsNullChunk())
- {
- return;
- }
-
- if (prev->Is(CT_PP_DEFINED))
- {
- LOG_FMT(LCASTS, "%s(%d): -- not a cast - after defined\n",
- __func__, __LINE__);
- return;
- }
-
- if (prev->Is(CT_ANGLE_CLOSE))
- {
- LOG_FMT(LCASTS, "%s(%d): -- not a cast - after > (template)\n",
- __func__, __LINE__);
- return;
- }
- // Make sure there is only WORD, TYPE, and '*' or '^' before the close paren
- pc = start->GetNextNcNnl();
- first = pc;
-
- while ( pc->IsNotNullChunk()
- && ( pc->IsTypeDefinition()
- || pc->Is(CT_WORD)
- || pc->Is(CT_QUALIFIER)
- || pc->Is(CT_DC_MEMBER)
- || pc->Is(CT_PP)
- || pc->Is(CT_STAR)
- || pc->Is(CT_QUESTION)
- || pc->Is(CT_CARET)
- || pc->Is(CT_TSQUARE)
- || ( ( pc->Is(CT_ANGLE_OPEN)
- || pc->Is(CT_ANGLE_CLOSE))
- && language_is_set(LANG_OC | LANG_JAVA | LANG_CS | LANG_VALA | LANG_CPP))
- || ( ( pc->Is(CT_QUESTION)
- || pc->Is(CT_COMMA)
- || pc->Is(CT_MEMBER))
- && language_is_set(LANG_JAVA | LANG_CS | LANG_VALA))
- || ( pc->Is(CT_COMMA)
- && language_is_set(LANG_CPP))
- || pc->Is(CT_AMP)))
- {
- LOG_FMT(LCASTS, "%s(%d): pc->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
-
- if ( pc->Is(CT_WORD)
- || ( last->Is(CT_ANGLE_CLOSE)
- && pc->Is(CT_DC_MEMBER)))
- {
- word_count++;
- }
- else if ( pc->Is(CT_DC_MEMBER)
- || pc->Is(CT_MEMBER)
- || pc->Is(CT_PP))
- {
- // might be negative, such as with:
- // a = val + (CFoo::bar_t)7;
- word_count--;
- }
- last = pc;
- pc = pc->GetNextNcNnl();
- count++;
- }
-
- if ( pc->IsNullChunk()
- || pc->IsNot(CT_PAREN_CLOSE)
- || prev->Is(CT_OC_CLASS))
- {
- LOG_FMT(LCASTS, "%s(%d): -- not a cast, hit type is %s\n",
- __func__, __LINE__, pc->IsNullChunk() ? "Null chunk" : get_token_name(pc->GetType()));
- return;
- }
-
- if (word_count > 1)
- {
- LOG_FMT(LCASTS, "%s(%d): -- too many words: %d\n",
- __func__, __LINE__, word_count);
- return;
- }
- paren_close = pc;
-
- // If last is a type or star/caret, we have a cast for sure
- if ( last->Is(CT_STAR)
- || last->Is(CT_CARET)
- || last->Is(CT_PTR_TYPE)
- || last->Is(CT_TYPE)
- || ( last->Is(CT_ANGLE_CLOSE)
- && language_is_set(LANG_OC | LANG_JAVA | LANG_CS | LANG_VALA | LANG_CPP)))
- {
- verb = "for sure";
- }
- else if (count == 1)
- {
- /*
- * We are on a potential cast of the form "(word)".
- * We don't know if the word is a type. So lets guess based on some
- * simple rules:
- * - if all caps, likely a type
- * - if it ends in _t, likely a type
- * - if it's objective-c and the type is id, likely valid
- */
- verb = "guessed";
-
- if ( (last->Len() > 3)
- && (last->GetStr()[last->Len() - 2] == '_')
- && (last->GetStr()[last->Len() - 1] == 't'))
- {
- detail = " -- '_t'";
- }
- else if (is_ucase_str(last->Text(), last->Len()))
- {
- detail = " -- upper case";
- }
- else if ( language_is_set(LANG_OC)
- && last->IsString("id"))
- {
- detail = " -- Objective-C id";
- }
- else
- {
- // If we can't tell for sure whether this is a cast, decide against it
- detail = " -- mixed case";
- doubtful_cast = true;
- }
- /*
- * If the next item is a * or &, the next item after that can't be a
- * number or string.
- *
- * If the next item is a +, the next item has to be a number.
- *
- * If the next item is a -, the next item can't be a string.
- *
- * For this to be a cast, the close paren must be followed by:
- * - constant (number or string)
- * - paren open
- * - word
- *
- * Find the next non-open paren item.
- */
- pc = paren_close->GetNextNcNnl();
- after = pc;
-
- do
- {
- after = after->GetNextNcNnl();
- } while (after->Is(CT_PAREN_OPEN));
-
- if (after->IsNullChunk())
- {
- LOG_FMT(LCASTS, "%s(%d): -- not a cast - hit null chunk\n",
- __func__, __LINE__);
- return;
- }
- nope = false;
-
- if (pc->IsPointerOperator())
- {
- // star (*) and address (&) are ambiguous
- if ( after->Is(CT_NUMBER_FP)
- || after->Is(CT_NUMBER)
- || after->Is(CT_STRING)
- || doubtful_cast)
- {
- nope = true;
- }
- }
- else if (pc->Is(CT_MINUS))
- {
- // (UINT8)-1 or (foo)-1 or (FOO)-'a'
- if ( after->Is(CT_STRING)
- || doubtful_cast)
- {
- nope = true;
- }
- }
- else if (pc->Is(CT_PLUS))
- {
- // (UINT8)+1 or (foo)+1
- if ( ( after->IsNot(CT_NUMBER)
- && after->IsNot(CT_NUMBER_FP))
- || doubtful_cast)
- {
- nope = true;
- }
- }
- else if ( pc->IsNot(CT_NUMBER_FP)
- && pc->IsNot(CT_NUMBER)
- && pc->IsNot(CT_WORD)
- && pc->IsNot(CT_THIS)
- && pc->IsNot(CT_TYPE)
- && pc->IsNot(CT_PAREN_OPEN)
- && pc->IsNot(CT_STRING)
- && pc->IsNot(CT_DECLTYPE)
- && pc->IsNot(CT_SIZEOF)
- && pc->GetParentType() != CT_SIZEOF
- && pc->IsNot(CT_FUNC_CALL)
- && pc->IsNot(CT_FUNC_CALL_USER)
- && pc->IsNot(CT_FUNCTION)
- && pc->IsNot(CT_BRACE_OPEN)
- && (!( pc->Is(CT_SQUARE_OPEN)
- && language_is_set(LANG_OC))))
- {
- LOG_FMT(LCASTS, "%s(%d): -- not a cast - followed by Text() '%s', type is %s\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
- return;
- }
-
- if (nope)
- {
- LOG_FMT(LCASTS, "%s(%d): -- not a cast - Text() '%s' followed by type %s\n",
- __func__, __LINE__, pc->Text(), get_token_name(after->GetType()));
- return;
- }
- }
- // if the 'cast' is followed by a semicolon, comma, bool or close parenthesis, it isn't
- pc = paren_close->GetNextNcNnl();
-
- if (pc->IsNullChunk())
- {
- return;
- }
-
- if ( pc->IsSemicolon()
- || pc->Is(CT_COMMA)
- || pc->Is(CT_BOOL) // Issue #2151
- || pc->IsParenClose())
- {
- LOG_FMT(LCASTS, "%s(%d): -- not a cast - followed by type %s\n",
- __func__, __LINE__, get_token_name(pc->GetType()));
- return;
- }
- start->SetParentType(CT_C_CAST);
- paren_close->SetParentType(CT_C_CAST);
-
- LOG_FMT(LCASTS, "%s(%d): -- %s c-cast: (",
- __func__, __LINE__, verb);
-
- for (pc = first;
- pc->IsNotNullChunk() && pc != paren_close;
- pc = pc->GetNextNcNnl())
- {
- pc->SetParentType(CT_C_CAST);
- make_type(pc);
- LOG_FMT(LCASTS, " %s", pc->Text());
- }
-
- LOG_FMT(LCASTS, " )%s\n", detail);
-
- // Mark the next item as an expression start
- pc = paren_close->GetNextNcNnl();
-
- if (pc->IsNotNullChunk())
- {
- pc->SetFlagBits(PCF_EXPR_START);
-
- if (pc->IsBraceOpen())
- {
- set_paren_parent(pc, start->GetParentType());
- }
- }
-} // fix_casts
-
-
-void fix_fcn_def_params(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- if (start == nullptr)
- {
- return;
- }
- LOG_FMT(LFCNP, "%s(%d): Text() '%s', type is %s, on orig line %zu, level is %zu\n",
- __func__, __LINE__, start->Text(), get_token_name(start->GetType()), start->GetOrigLine(), start->GetLevel());
-
- while ( start->IsNotNullChunk()
- && !start->IsParenOpen())
- {
- start = start->GetNextNcNnl();
- }
-
- if (start->IsNullChunk()) // Coverity CID 76003, 1100782
- {
- return;
- }
- // ensure start chunk holds a single '(' character
- assert( (start->Len() == 1)
- && (start->GetStr()[0] == '('));
-
- ChunkStack cs;
- size_t level = start->GetLevel() + 1;
- Chunk *pc = start->GetNextNcNnl();
-
- while (pc->IsNotNullChunk())
- {
- if ( ( (start->Len() == 1)
- && (start->GetStr()[0] == ')'))
- || pc->GetLevel() < level)
- {
- LOG_FMT(LFCNP, "%s(%d): bailed on Text() '%s', on orig line %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine());
- break;
- }
- LOG_FMT(LFCNP, "%s(%d): %s, Text() '%s' on orig line %zu, level %zu\n",
- __func__, __LINE__, (pc->GetLevel() > level) ? "skipping" : "looking at",
- pc->Text(), pc->GetOrigLine(), pc->GetLevel());
-
- if (pc->GetLevel() > level)
- {
- pc = pc->GetNextNcNnl();
- continue;
- }
-
- if ( pc->IsStar()
- || pc->IsMsRef()
- || pc->IsNullable())
- {
- pc->SetType(CT_PTR_TYPE);
- cs.Push_Back(pc);
- }
- else if ( language_is_set(LANG_CPP) // Issue #3662
- && ( pc->Is(CT_AMP)
- || pc->IsString("&&")))
- {
- pc->SetType(CT_BYREF);
- cs.Push_Back(pc);
- }
- else if (pc->Is(CT_TYPE_WRAP))
- {
- cs.Push_Back(pc);
- }
- else if ( pc->Is(CT_WORD)
- || pc->Is(CT_TYPE))
- {
- cs.Push_Back(pc);
- }
- else if ( pc->Is(CT_COMMA)
- || pc->Is(CT_ASSIGN))
- {
- mark_variable_stack(cs, LFCNP);
-
- if (pc->Is(CT_ASSIGN))
- {
- // Mark assignment for default param spacing
- pc->SetParentType(CT_FUNC_PROTO);
- }
- }
- pc = pc->GetNextNcNnl();
- }
- mark_variable_stack(cs, LFCNP);
-} // fix_fcn_def_params
-
-
-void fix_type_cast(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- if (start == nullptr)
- {
- return;
- }
- Chunk *pc = start->GetNextNcNnl();
-
- if ( pc->IsNullChunk()
- || pc->IsNot(CT_ANGLE_OPEN))
- {
- return;
- }
- pc = pc->GetNextNcNnl();
-
- while ( pc->IsNotNullChunk()
- && pc->GetLevel() >= start->GetLevel())
- {
- if ( pc->GetLevel() == start->GetLevel()
- && pc->Is(CT_ANGLE_CLOSE))
- {
- pc = pc->GetNextNcNnl();
-
- if (pc->IsNullChunk())
- {
- return;
- }
-
- if (pc->IsString("("))
- {
- set_paren_parent(pc, CT_TYPE_CAST);
- }
- return;
- }
- make_type(pc);
- pc = pc->GetNextNcNnl();
- }
-} // fix_type_cast
-
-
-void fix_typedef(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- if (start == nullptr)
- {
- return;
- }
- LOG_FMT(LTYPEDEF, "%s(%d): typedef @ orig line %zu, orig col %zu\n",
- __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol());
-
- Chunk *the_type = Chunk::NullChunkPtr;
- Chunk *last_op = Chunk::NullChunkPtr;
-
- /*
- * Mark everything in the typedef and scan for ")(", which makes it a
- * function type
- */
- for (Chunk *next = start->GetNextNcNnl(E_Scope::PREPROC)
- ; next->IsNotNullChunk() && next->GetLevel() >= start->GetLevel()
- ; next = next->GetNextNcNnl(E_Scope::PREPROC))
- {
- next->SetFlagBits(PCF_IN_TYPEDEF);
-
- if (start->GetLevel() == next->GetLevel())
- {
- if (next->IsSemicolon())
- {
- next->SetParentType(CT_TYPEDEF);
- break;
- }
-
- if (next->Is(CT_ATTRIBUTE))
- {
- break;
- }
-
- if ( language_is_set(LANG_D)
- && next->Is(CT_ASSIGN))
- {
- next->SetParentType(CT_TYPEDEF);
- break;
- }
- make_type(next);
-
- if (next->Is(CT_TYPE))
- {
- the_type = next;
- }
- next->ResetFlagBits(PCF_VAR_1ST_DEF);
-
- if (*next->GetStr().c_str() == '(')
- {
- last_op = next;
- }
- }
- }
-
- // avoid interpreting typedef NS_ENUM (NSInteger, MyEnum) as a function def
- if ( last_op->IsNotNullChunk()
- && !( language_is_set(LANG_OC)
- && last_op->GetParentType() == CT_ENUM))
- {
- flag_parens(last_op, PCF_NONE, CT_FPAREN_OPEN, CT_TYPEDEF, false);
- fix_fcn_def_params(last_op);
-
- the_type = last_op->GetPrevNcNnlNi(E_Scope::PREPROC); // Issue #2279
-
- if (the_type->IsNullChunk())
- {
- return;
- }
- Chunk *open_paren = Chunk::NullChunkPtr;
-
- if (the_type->IsParenClose())
- {
- open_paren = the_type->GetOpeningParen();
- mark_function_type(the_type);
- the_type = the_type->GetPrevNcNnlNi(E_Scope::PREPROC); // Issue #2279
-
- if (the_type->IsNullChunk())
- {
- return;
- }
- }
- else
- {
- // must be: "typedef <return type>func(params);"
- the_type->SetType(CT_FUNC_TYPE);
- }
- the_type->SetParentType(CT_TYPEDEF);
-
- LOG_FMT(LTYPEDEF, "%s(%d): fcn typedef Text() '%s', on orig line %zu\n",
- __func__, __LINE__, the_type->Text(), the_type->GetOrigLine());
-
- // If we are aligning on the open parenthesis, grab that instead
- log_rule_B("align_typedef_func");
-
- if ( open_paren->IsNotNullChunk()
- && options::align_typedef_func() == 1)
- {
- the_type = open_paren;
- }
- log_rule_B("align_typedef_func");
-
- if (options::align_typedef_func() != 0)
- {
- LOG_FMT(LTYPEDEF, "%s(%d): -- align anchor on Text() %s, @ orig line %zu, orig col %zu\n",
- __func__, __LINE__, the_type->Text(), the_type->GetOrigLine(), the_type->GetOrigCol());
- the_type->SetFlagBits(PCF_ANCHOR);
- }
- // already did everything we need to do
- return;
- }
- /*
- * Skip over enum/struct/union stuff, as we know it isn't a return type
- * for a function type
- */
- Chunk *after = start->GetNextNcNnl(E_Scope::PREPROC);
-
- if (after->IsNullChunk())
- {
- return;
- }
-
- if ( after->IsNot(CT_ENUM)
- && after->IsNot(CT_STRUCT)
- && after->IsNot(CT_UNION))
- {
- if ( the_type != nullptr
- && the_type->IsNotNullChunk())
- {
- // We have just a regular typedef
- LOG_FMT(LTYPEDEF, "%s(%d): regular typedef Text() %s, on orig line %zu\n",
- __func__, __LINE__, the_type->Text(), the_type->GetOrigLine());
- the_type->SetFlagBits(PCF_ANCHOR);
- }
- return;
- }
- // We have a struct/union/enum, next should be either a type or {
- Chunk *next = after->GetNextNcNnl(E_Scope::PREPROC);
-
- if (next->IsNullChunk())
- {
- return;
- }
-
- if (next->Is(CT_TYPE))
- {
- next = next->GetNextNcNnl(E_Scope::PREPROC);
-
- if (next->IsNullChunk())
- {
- return;
- }
- }
-
- if (next->Is(CT_BRACE_OPEN))
- {
- // Skip to the closing brace
- Chunk *br_c = next->GetNextType(CT_BRACE_CLOSE, next->GetLevel(), E_Scope::PREPROC);
-
- if (br_c->IsNotNullChunk())
- {
- const E_Token tag = after->GetType();
- next->SetParentType(tag);
- br_c->SetParentType(tag);
-
- if (tag == CT_ENUM)
- {
- flag_series(after, br_c, PCF_IN_ENUM);
- }
- else if (tag == CT_STRUCT)
- {
- flag_series(after, br_c, PCF_IN_STRUCT);
- }
- }
- }
-
- if ( the_type != nullptr
- && the_type->IsNotNullChunk())
- {
- LOG_FMT(LTYPEDEF, "%s(%d): %s typedef Text() %s, on orig line %zu\n",
- __func__, __LINE__, get_token_name(after->GetType()), the_type->Text(),
- the_type->GetOrigLine());
- the_type->SetFlagBits(PCF_ANCHOR);
- }
-} // fix_typedef
-
-
-Chunk *fix_variable_definition(Chunk *start)
-{
- LOG_FUNC_ENTRY();
- Chunk *pc = start;
- Chunk *end;
- Chunk *tmp_pc;
- ChunkStack cs;
- int idx;
- int ref_idx;
-
- LOG_FMT(LFVD, "%s(%d): start at pc orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- log_pcf_flags(LFCNR, pc->GetFlags());
-
- // Scan for words and types and stars oh my!
- while ( pc->Is(CT_TYPE)
- || pc->Is(CT_WORD)
- || pc->Is(CT_QUALIFIER)
- || pc->Is(CT_TYPENAME)
- || pc->Is(CT_DC_MEMBER)
- || pc->Is(CT_MEMBER)
- || pc->Is(CT_PP) // Issue #3169
- || pc->IsPointerOperator())
- {
- LOG_FMT(LFVD, "%s(%d): 1:pc->Text() '%s', type is %s\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
- cs.Push_Back(pc);
- pc = pc->GetNextNcNnl();
-
- if (pc->IsNullChunk())
- {
- LOG_FMT(LFVD, "%s(%d): pc is null chunk\n", __func__, __LINE__);
- return(Chunk::NullChunkPtr);
- }
- LOG_FMT(LFVD, "%s(%d): 2:pc->Text() '%s', type is %s\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
-
- // Skip templates and attributes
- pc = skip_template_next(pc);
-
- if (pc->IsNullChunk())
- {
- LOG_FMT(LFVD, "%s(%d): pc is null chunk\n", __func__, __LINE__);
- return(Chunk::NullChunkPtr);
- }
- LOG_FMT(LFVD, "%s(%d): 3:pc->Text() '%s', type is %s\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
-
- pc = skip_attribute_next(pc);
-
- if (pc->IsNullChunk())
- {
- LOG_FMT(LFVD, "%s(%d): pc is null chunk\n", __func__, __LINE__);
- return(Chunk::NullChunkPtr);
- }
- LOG_FMT(LFVD, "%s(%d): 4:pc->Text() '%s', type is %s\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
-
- if (language_is_set(LANG_JAVA))
- {
- pc = skip_tsquare_next(pc);
-
- if (pc->IsNotNullChunk())
- {
- LOG_FMT(LFVD, "%s(%d): 5:pc->Text() '%s', type is %s\n", __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
- }
- else
- {
- pc = Chunk::NullChunkPtr;
- }
- }
- }
- end = pc;
-
- if (end->IsNullChunk())
- {
- LOG_FMT(LFVD, "%s(%d): end is null chunk\n", __func__, __LINE__);
- return(nullptr);
- }
- LOG_FMT(LFVD, "%s(%d): end->GetType() is %s\n", __func__, __LINE__, get_token_name(end->GetType()));
-
- if (end->Is(CT_FUNC_CTOR_VAR)) // Issue #3010
- {
- return(end);
- }
-
- if ( cs.Len() == 1
- && end->Is(CT_BRACE_OPEN)
- && end->GetParentType() == CT_BRACED_INIT_LIST)
- {
- cs.Get(0)->m_pc->SetType(CT_TYPE);
- }
-
- // Function defs are handled elsewhere
- if ( (cs.Len() <= 1)
- || end->Is(CT_FUNC_DEF)
- || end->Is(CT_FUNC_PROTO)
- || end->Is(CT_FUNC_CLASS_DEF)
- || end->Is(CT_FUNC_CLASS_PROTO)
- || end->Is(CT_OPERATOR))
- {
- return(skip_to_next_statement(end));
- }
- // ref_idx points to the alignable part of the variable definition
- ref_idx = cs.Len() - 1;
-
- // Check for the '::' stuff: "char *Engine::name"
- if ( (cs.Len() >= 3)
- && ( (cs.Get(cs.Len() - 2)->m_pc->GetType() == CT_MEMBER)
- || (cs.Get(cs.Len() - 2)->m_pc->GetType() == CT_DC_MEMBER)))
- {
- idx = cs.Len() - 2;
-
- while (idx > 0)
- {
- tmp_pc = cs.Get(idx)->m_pc;
-
- if ( tmp_pc->IsNot(CT_DC_MEMBER)
- && tmp_pc->IsNot(CT_MEMBER))
- {
- break;
- }
- idx--;
- tmp_pc = cs.Get(idx)->m_pc;
-
- if ( tmp_pc->IsNot(CT_WORD)
- && tmp_pc->IsNot(CT_TYPE))
- {
- break;
- }
- make_type(tmp_pc);
- idx--;
- }
- ref_idx = idx + 1;
- }
- tmp_pc = cs.Get(ref_idx)->m_pc;
- LOG_FMT(LFVD, "%s(%d): ref_idx(%d) is '%s'\n", __func__, __LINE__, ref_idx, tmp_pc->Text());
-
- // No type part found!
- if (ref_idx <= 0)
- {
- return(skip_to_next_statement(end));
- }
- LOG_FMT(LFVD2, "%s(%d): orig line is %zu, TYPE : ", __func__, __LINE__, start->GetOrigLine());
-
- for (size_t idxForCs = 0; idxForCs < cs.Len() - 1; idxForCs++)
- {
- tmp_pc = cs.Get(idxForCs)->m_pc;
- make_type(tmp_pc);
- tmp_pc->SetFlagBits(PCF_VAR_TYPE);
- LOG_FMT(LFVD2, " Text() is '%s', type is %s", tmp_pc->Text(), get_token_name(tmp_pc->GetType()));
- }
-
- LOG_FMT(LFVD2, "\n");
-
- // OK we have two or more items, mark types up to the end.
- LOG_FMT(LFVD, "%s(%d): pc orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- mark_variable_definition(cs.Get(cs.Len() - 1)->m_pc);
-
- if (end->Is(CT_COMMA))
- {
- return(end->GetNextNcNnl());
- }
- return(skip_to_next_statement(end));
-} // fix_variable_definition
-
-
-void mark_cpp_constructor(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
- Chunk *paren_open;
- Chunk *tmp;
- Chunk *after;
- Chunk *var;
- bool is_destr = false;
-
- tmp = pc->GetPrevNcNnlNi(); // Issue #2279
-
- if ( tmp->Is(CT_INV)
- || tmp->Is(CT_DESTRUCTOR))
- {
- tmp->SetType(CT_DESTRUCTOR);
- pc->SetParentType(CT_DESTRUCTOR);
- is_destr = true;
- }
- LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, FOUND %sSTRUCTOR for '%s'[%s] prev '%s'[%s]\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(),
- is_destr ? "DE" : "CON",
- pc->Text(), get_token_name(pc->GetType()),
- tmp->Text(), get_token_name(tmp->GetType()));
-
- paren_open = skip_template_next(pc->GetNextNcNnl());
-
- if (!paren_open->IsString("("))
- {
- LOG_FMT(LWARN, "%s:%zu Expected '(', got: [%s]\n",
- cpd.filename.c_str(), paren_open->GetOrigLine(),
- paren_open->Text());
- return;
- }
- // Mark parameters
- fix_fcn_def_params(paren_open);
- after = flag_parens(paren_open, PCF_IN_FCN_CALL, CT_FPAREN_OPEN, CT_FUNC_CLASS_PROTO, false);
-
- LOG_FMT(LFTOR, "%s(%d): Text() '%s'\n", __func__, __LINE__, after->Text());
-
- // Scan until the brace open, mark everything
- tmp = paren_open;
- bool hit_colon = false;
-
- while ( tmp->IsNotNullChunk()
- && ( tmp->IsNot(CT_BRACE_OPEN)
- || tmp->GetLevel() != paren_open->GetLevel())
- && !tmp->IsSemicolon())
- {
- LOG_FMT(LFTOR, "%s(%d): tmp is '%s', orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, tmp->Text(), tmp->GetOrigLine(), tmp->GetOrigCol());
- tmp->SetFlagBits(PCF_IN_CONST_ARGS);
- tmp = tmp->GetNextNcNnl();
-
- if ( tmp->IsString(":")
- && tmp->GetLevel() == paren_open->GetLevel())
- {
- tmp->SetType(CT_CONSTR_COLON);
- hit_colon = true;
- }
-
- if ( hit_colon
- && ( tmp->IsParenOpen()
- || tmp->IsBraceOpen())
- && tmp->GetLevel() == paren_open->GetLevel())
- {
- var = skip_template_prev(tmp->GetPrevNcNnlNi()); // Issue #2279
-
- if ( var->Is(CT_TYPE)
- || var->Is(CT_WORD))
- {
- var->SetType(CT_FUNC_CTOR_VAR);
- flag_parens(tmp, PCF_IN_FCN_CALL, CT_FPAREN_OPEN, CT_FUNC_CTOR_VAR, false);
- }
- }
- }
-
- if (tmp->Is(CT_BRACE_OPEN))
- {
- set_paren_parent(paren_open, CT_FUNC_CLASS_DEF);
- set_paren_parent(tmp, CT_FUNC_CLASS_DEF);
- LOG_FMT(LFCN, "%s(%d): Marked '%s' as FUNC_CLASS_DEF on orig line %zu, orig col %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- }
- else
- {
- tmp->SetParentType(CT_FUNC_CLASS_PROTO);
- pc->SetType(CT_FUNC_CLASS_PROTO);
- LOG_FMT(LFCN, "%s(%d): Marked '%s' as FUNC_CLASS_PROTO on orig line %zu, orig col %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- }
- tmp = pc->GetPrevNcNnlNi(); // Issue #2907
-
- if (tmp->Is(CT_DESTRUCTOR))
- {
- tmp->SetParentType(pc->GetType());
- tmp = tmp->GetPrevNcNnlNi();
- }
-
- while (tmp->Is(CT_QUALIFIER))
- {
- tmp->SetParentType(pc->GetType());
- tmp = tmp->GetPrevNcNnlNi();
- }
-} // mark_cpp_constructor
-
-
-void mark_cpp_lambda(Chunk *square_open)
-{
- if ( square_open->Is(CT_SQUARE_OPEN)
- && square_open->GetParentType() == CT_CPP_LAMBDA)
- {
- auto *brace_close = square_open->GetNextType(CT_BRACE_CLOSE, square_open->GetLevel());
-
- if (brace_close->GetParentType() == CT_CPP_LAMBDA)
- {
- for (auto *pc = square_open; pc != brace_close; pc = pc->GetNextNcNnl())
- {
- pc->SetFlagBits(PCF_IN_LAMBDA);
- }
- }
- }
-} // mark_cpp_lambda
-
-
-void mark_define_expressions()
-{
- LOG_FUNC_ENTRY();
-
- bool in_define = false;
- bool first = true;
- Chunk *pc = Chunk::GetHead();
- Chunk *prev = pc;
-
- while (pc->IsNotNullChunk())
- {
- if (!in_define)
- {
- if ( pc->Is(CT_PP_DEFINE)
- || pc->Is(CT_PP_IF)
- || pc->Is(CT_PP_ELSE))
- {
- in_define = true;
- first = true;
- }
- }
- else
- {
- if ( !pc->TestFlags(PCF_IN_PREPROC)
- || pc->Is(CT_PREPROC))
- {
- in_define = false;
- }
- else
- {
- if ( pc->IsNot(CT_MACRO)
- && ( first
- || prev->Is(CT_PAREN_OPEN)
- || prev->Is(CT_ARITH)
- || prev->Is(CT_SHIFT)
- || prev->Is(CT_CARET)
- || prev->Is(CT_ASSIGN)
- || prev->Is(CT_COMPARE)
- || prev->Is(CT_RETURN)
- || prev->Is(CT_GOTO)
- || prev->Is(CT_CONTINUE)
- || prev->Is(CT_FPAREN_OPEN)
- || prev->Is(CT_SPAREN_OPEN)
- || prev->Is(CT_BRACE_OPEN)
- || prev->IsSemicolon()
- || prev->Is(CT_COMMA)
- || prev->Is(CT_COLON)
- || prev->Is(CT_QUESTION)))
- {
- pc->SetFlagBits(PCF_EXPR_START);
- first = false;
- }
- }
- }
- prev = pc;
- pc = pc->GetNext();
- }
-} // mark_define_expressions
-
-
-void mark_exec_sql(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
- Chunk *tmp;
-
- // Change CT_WORD to CT_SQL_WORD
- for (tmp = pc->GetNext(); tmp->IsNotNullChunk(); tmp = tmp->GetNext())
- {
- tmp->SetParentType(pc->GetType());
-
- if (tmp->Is(CT_WORD))
- {
- tmp->SetType(CT_SQL_WORD);
- }
-
- if (tmp->Is(CT_SEMICOLON))
- {
- break;
- }
- }
-
- if ( pc->IsNot(CT_SQL_BEGIN)
- || tmp->IsNullChunk()
- || tmp->IsNot(CT_SEMICOLON))
- {
- return;
- }
-
- for (tmp = tmp->GetNext();
- tmp->IsNotNullChunk() && tmp->IsNot(CT_SQL_END);
- tmp = tmp->GetNext())
- {
- tmp->SetLevel(tmp->GetLevel() + 1);
- }
-} // mark_exec_sql
-
-
-void mark_function_return_type(Chunk *fname, Chunk *start, E_Token parent_type)
-{
- LOG_FUNC_ENTRY();
- Chunk *pc = start;
-
- if ( pc != nullptr
- && pc->IsNotNullChunk())
- {
- // Step backwards from pc and mark the parent of the return type
- LOG_FMT(LFCNR, "%s(%d): (backwards) return type for '%s' @ orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, fname->Text(), fname->GetOrigLine(), fname->GetOrigCol());
-
- Chunk *first = pc;
-
- while (pc->IsNotNullChunk())
- {
- LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s, ",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- log_pcf_flags(LFCNR, pc->GetFlags());
-
- if (pc->Is(CT_ANGLE_CLOSE))
- {
- pc = skip_template_prev(pc);
-
- if ( pc->IsNullChunk()
- || pc->Is(CT_TEMPLATE))
- {
- //either expression is not complete or this is smth like 'template<T> void func()'
- // - we are not interested in 'template<T>' part
- break;
- }
- else
- {
- //this is smth like 'vector<int> func()' and 'pc' is currently on 'vector' - just proceed
- }
- }
-
- if ( ( !pc->IsTypeDefinition()
- && pc->IsNot(CT_OPERATOR)
- && pc->IsNot(CT_WORD)
- && pc->IsNot(CT_ADDR))
- || pc->TestFlags(PCF_IN_PREPROC))
- {
- break;
- }
-
- if (!pc->IsPointerOperator())
- {
- first = pc;
- }
- pc = pc->GetPrevNcNnlNi(); // Issue #2279
- }
- LOG_FMT(LFCNR, "%s(%d): marking returns...", __func__, __LINE__);
-
- // Changing words to types into tuple return types in CS.
- bool is_return_tuple = false;
-
- if ( pc->Is(CT_PAREN_CLOSE)
- && !pc->TestFlags(PCF_IN_PREPROC))
- {
- first = pc->GetOpeningParen();
- is_return_tuple = true;
- }
- pc = first;
-
- while (pc->IsNotNullChunk())
- {
- LOG_CHUNK(LTOK, pc);
-
- if (parent_type != CT_NONE)
- {
- pc->SetParentType(parent_type);
- }
- Chunk *prev = pc->GetPrevNcNnlNi(); // Issue #2279
-
- if ( !is_return_tuple
- || pc->IsNot(CT_WORD)
- || ( prev->IsNullChunk()
- && prev->IsNot(CT_TYPE)))
- {
- make_type(pc);
- }
-
- if (pc == start)
- {
- break;
- }
- pc = pc->GetNextNcNnl();
-
- //template angles should keep parent type CT_TEMPLATE
- if (pc->Is(CT_ANGLE_OPEN))
- {
- pc = pc->GetNextType(CT_ANGLE_CLOSE, pc->GetLevel());
-
- if (pc == start)
- {
- break;
- }
- pc = pc->GetNextNcNnl();
- }
- }
- LOG_FMT(LFCNR, "\n");
-
- // Back up and mark parent type on friend declarations
- if ( parent_type != CT_NONE
- && first
- && first->TestFlags(PCF_IN_CLASS))
- {
- pc = first->GetPrevNcNnlNi(); // Issue #2279
-
- if (pc->Is(CT_FRIEND))
- {
- LOG_FMT(LFCNR, "%s(%d): marking friend\n", __func__, __LINE__);
- pc->SetParentType(parent_type);
- // A friend might be preceded by a template specification, as in:
- // template <...> friend type func(...);
- // If so, we need to mark that also
- pc = pc->GetPrevNcNnlNi(); // Issue #2279
-
- if (pc->Is(CT_ANGLE_CLOSE))
- {
- pc = skip_template_prev(pc);
-
- if (pc->Is(CT_TEMPLATE))
- {
- LOG_FMT(LFCNR, "%s(%d): marking friend template\n",
- __func__, __LINE__);
- pc->SetParentType(parent_type);
- }
- }
- }
- }
- }
-} // mark_function_return_type
-
-
-void mark_function(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- if (pc == nullptr)
- {
- return;
- }
- LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- Chunk *prev = pc->GetPrevNcNnlNi(); // Issue #2279
- Chunk *next = pc->GetNextNppOrNcNnl();
-
- if (next->IsNullChunk())
- {
- return;
- }
- Chunk *tmp;
- Chunk *semi = nullptr;
- Chunk *paren_open;
- Chunk *paren_close;
-
- // Find out what is before the operator
- if (pc->GetParentType() == CT_OPERATOR)
- {
- LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- log_pcf_flags(LGUY, pc->GetFlags());
- Chunk *pc_op = pc->GetPrevType(CT_OPERATOR, pc->GetLevel());
-
- if ( pc_op->IsNotNullChunk()
- && pc_op->TestFlags(PCF_EXPR_START))
- {
- LOG_FMT(LFCN, "%s(%d): (4) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc->SetType(CT_FUNC_CALL);
- }
-
- if (language_is_set(LANG_CPP))
- {
- tmp = pc;
-
- while ((tmp = tmp->GetPrevNcNnlNi())->IsNotNullChunk()) // Issue #2279
- {
- if ( tmp->Is(CT_BRACE_CLOSE)
- || tmp->Is(CT_BRACE_OPEN) // Issue 575
- || tmp->Is(CT_SEMICOLON))
- {
- break;
- }
-
- if ( tmp->IsParenOpen()
- && !pc->TestFlags(PCF_IN_PREPROC)) // Issue #2703
- {
- LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
- LOG_FMT(LFCN, "%s(%d): (5) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc->SetType(CT_FUNC_CALL);
- break;
- }
-
- if (tmp->Is(CT_ASSIGN))
- {
- LOG_FMT(LFCN, "%s(%d): (6) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc->SetType(CT_FUNC_CALL);
- break;
- }
-
- if (tmp->Is(CT_TEMPLATE))
- {
- LOG_FMT(LFCN, "%s(%d): (7) SET TO CT_FUNC_DEF: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc->SetType(CT_FUNC_DEF);
- break;
- }
-
- if (tmp->Is(CT_BRACE_OPEN))
- {
- if (tmp->GetParentType() == CT_FUNC_DEF)
- {
- LOG_FMT(LFCN, "%s(%d): (8) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc->SetType(CT_FUNC_CALL);
- }
-
- if ( tmp->GetParentType() == CT_CLASS
- || tmp->GetParentType() == CT_STRUCT)
- {
- LOG_FMT(LFCN, "%s(%d): (9) SET TO CT_FUNC_DEF: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc->SetType(CT_FUNC_DEF);
- }
- break;
- }
- }
-
- if ( tmp != nullptr
- && pc->IsNot(CT_FUNC_CALL))
- {
- // Mark the return type
- tmp = tmp->GetNextNcNnl();
-
- while ( tmp != pc
- && tmp->IsNotNullChunk())
- {
- make_type(tmp); // Mark the return type
- tmp = tmp->GetNextNcNnl();
- }
- }
- }
- }
-
- if ( next->IsPointerOperator()
- || next->IsNewline())
- {
- next = next->GetNextNppOrNcNnl();
-
- if (next->IsNullChunk())
- {
- return;
- }
- }
- LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s, type is %s, parent type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(),
- get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
- LOG_FMT(LFCN, " level is %zu, brace level is %zu, next->Text() '%s', next->GetType() is %s, next->GetLevel() is %zu\n",
- pc->GetLevel(), pc->GetBraceLevel(),
- next->Text(), get_token_name(next->GetType()), next->GetLevel());
-
- if (pc->TestFlags(PCF_IN_CONST_ARGS))
- {
- pc->SetType(CT_FUNC_CTOR_VAR);
- LOG_FMT(LFCN, "%s(%d): 1) Marked [%s] as FUNC_CTOR_VAR on line %zu col %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- next = skip_template_next(next);
-
- if (next == nullptr)
- {
- return;
- }
- flag_parens(next, PCF_NONE, CT_FPAREN_OPEN, pc->GetType(), true);
- return;
- }
- // Skip over any template and attribute madness
- next = skip_template_next(next);
-
- if (next == nullptr)
- {
- return;
- }
- next = skip_attribute_next(next);
-
- if (next == nullptr)
- {
- return;
- }
- // Find the open and close parenthesis
- paren_open = pc->GetNextString("(", 1, pc->GetLevel());
- paren_close = paren_open->GetNextString(")", 1, pc->GetLevel());
-
- if ( paren_open->IsNullChunk()
- || paren_close->IsNullChunk())
- {
- LOG_FMT(LFCN, "%s(%d): No parens found for [%s] on orig line %zu, orig col %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- return;
- }
- /*
- * This part detects either chained function calls or a function ptr definition.
- * MYTYPE (*func)(void);
- * MYTYPE (*func(param))(void);
- * MYTYPE (*func(param_call1)(param_call2))(void);
- * mWriter( "class Clst_"c )( somestr.getText() )( " : Cluster {"c ).newline;
- *
- * For it to be a function variable def, there must be a '*' followed by a
- * single word or by a sequence of one or more expressions each within brackets.
- *
- * Otherwise, it must be chained function calls.
- */
- tmp = paren_close->GetNextNcNnl();
-
- if ( tmp->IsNotNullChunk()
- && tmp->IsString("("))
- {
- Chunk *tmp1;
- Chunk *tmp2;
- Chunk *tmp3;
-
- // skip over any leading class/namespace in: "T(F::*A)();"
- tmp1 = next->GetNextNcNnl();
-
- while (tmp1->IsNotNullChunk())
- {
- tmp2 = tmp1->GetNextNcNnl();
-
- if ( !tmp1->IsWord()
- || tmp2->IsNot(CT_DC_MEMBER))
- {
- break;
- }
- tmp1 = tmp2->GetNextNcNnl();
- }
- tmp2 = tmp1->GetNextNcNnl();
-
- if (tmp2->IsString(")"))
- {
- tmp3 = tmp2;
- tmp2 = Chunk::NullChunkPtr;
- }
- else
- {
- tmp3 = tmp2->GetNextNcNnl();
- }
- tmp3 = tmp3->GetNextNbsb();
-
- // Issue #3852
- while (tmp3->IsString("("))
- {
- tmp3 = tmp3->GetClosingParen();
- tmp3 = tmp3->GetNextNcNnl();
- }
-
- if ( tmp3->IsString(")")
- && ( tmp1->IsStar()
- || tmp1->IsMsRef()
- || ( language_is_set(LANG_OC)
- && tmp1->Is(CT_CARET)))
- && ( tmp2->IsNullChunk()
- || tmp2->Is(CT_WORD)))
- {
- if (tmp2->IsNotNullChunk())
- {
- LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu, function variable '%s', changing '%s' into a type\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), tmp2->Text(), pc->Text());
- tmp2->SetType(CT_FUNC_VAR);
- flag_parens(paren_open, PCF_NONE, CT_PAREN_OPEN, CT_FUNC_VAR, false);
-
- LOG_FMT(LFCN, "%s(%d): paren open @ orig line %zu, orig col %zu\n",
- __func__, __LINE__, paren_open->GetOrigLine(), paren_open->GetOrigCol());
- }
- else
- {
- LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu, function type, changing '%s' into a type\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
-
- if (tmp2)
- {
- tmp2->SetType(CT_FUNC_TYPE);
- }
- flag_parens(paren_open, PCF_NONE, CT_PAREN_OPEN, CT_FUNC_TYPE, false);
- }
- pc->SetType(CT_TYPE);
- tmp1->SetType(CT_PTR_TYPE);
- pc->ResetFlagBits(PCF_VAR_1ST_DEF);
-
- if (tmp2->IsNotNullChunk())
- {
- tmp2->SetFlagBits(PCF_VAR_1ST_DEF);
- }
- flag_parens(tmp, PCF_NONE, CT_FPAREN_OPEN, CT_FUNC_PROTO, false);
- fix_fcn_def_params(tmp);
- return;
- }
- LOG_FMT(LFCN, "%s(%d): chained function calls? Text() is '%s', orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- }
-
- // Assume it is a function call if not already labeled
- if (pc->Is(CT_FUNCTION))
- {
- LOG_FMT(LFCN, "%s(%d): examine: Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
- // look for an assignment. Issue #575
- Chunk *temp = pc->GetNextType(CT_ASSIGN, pc->GetLevel());
-
- if (temp->IsNotNullChunk())
- {
- LOG_FMT(LFCN, "%s(%d): assignment found, orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, temp->GetOrigLine(), temp->GetOrigCol(), temp->Text());
- LOG_FMT(LFCN, "%s(%d): (10) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc->SetType(CT_FUNC_CALL);
- }
- else
- {
- LOG_FMT(LFCN, "%s(%d): (11) SET TO %s: orig line is %zu, orig col is %zu, Text() '%s'",
- __func__, __LINE__, (pc->GetParentType() == CT_OPERATOR) ? "CT_FUNC_DEF" : "CT_FUNC_CALL",
- pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc->SetType((pc->GetParentType() == CT_OPERATOR) ? CT_FUNC_DEF : CT_FUNC_CALL);
- }
- }
- LOG_FMT(LFCN, "%s(%d): Check for C++ function def, Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
-
- if ( prev != nullptr
- && prev->IsNotNullChunk())
- {
- LOG_FMT(LFCN, "%s(%d): prev->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(), get_token_name(prev->GetType()));
- }
- else
- {
- prev = Chunk::NullChunkPtr;
- }
-
- // Check for C++ function def
- if ( pc->Is(CT_FUNC_CLASS_DEF)
- || ( prev->IsNotNullChunk()
- && ( prev->Is(CT_INV)
- || prev->Is(CT_DC_MEMBER))))
- {
- Chunk *destr = Chunk::NullChunkPtr;
-
- if (prev->Is(CT_INV))
- {
- // TODO: do we care that this is the destructor?
- prev->SetType(CT_DESTRUCTOR);
- pc->SetType(CT_FUNC_CLASS_DEF);
-
- pc->SetParentType(CT_DESTRUCTOR);
-
- destr = prev;
- // Point to the item previous to the class name
- prev = prev->GetPrevNcNnlNpp();
- }
-
- if (prev->Is(CT_DC_MEMBER))
- {
- prev = prev->GetPrevNcNnlNpp();
-
- if (prev->IsNotNullChunk())
- {
- LOG_FMT(LFCN, "%s(%d): prev->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(),
- get_token_name(prev->GetType()));
- prev = skip_template_prev(prev);
- LOG_FMT(LFCN, "%s(%d): prev->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(),
- get_token_name(prev->GetType()));
- prev = skip_attribute_prev(prev);
- LOG_FMT(LFCN, "%s(%d): prev->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(),
- get_token_name(prev->GetType()));
- }
-
- if ( prev->Is(CT_WORD)
- || prev->Is(CT_TYPE))
- {
- if (pc->GetStr().equals(prev->GetStr()))
- {
- LOG_FMT(LFCN, "%s(%d): pc->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(),
- get_token_name(prev->GetType()));
- pc->SetType(CT_FUNC_CLASS_DEF);
- LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu - FOUND %sSTRUCTOR for '%s', type is %s\n",
- __func__, __LINE__,
- prev->GetOrigLine(), prev->GetOrigCol(),
- (destr->IsNotNullChunk()) ? "DE" : "CON",
- prev->Text(), get_token_name(prev->GetType()));
-
- mark_cpp_constructor(pc);
- return;
- }
- // Point to the item previous to the class name
- prev = prev->GetPrevNcNnlNpp();
- }
- }
- }
-
- /*
- * Determine if this is a function call or a function def/proto
- * We check for level==1 to allow the case that a function prototype is
- * wrapped in a macro: "MACRO(void foo(void));"
- */
- if ( pc->Is(CT_FUNC_CALL)
- && ( pc->GetLevel() == pc->GetBraceLevel()
- || pc->GetLevel() == 1)
- && !pc->TestFlags(PCF_IN_ARRAY_ASSIGN))
- {
- bool isa_def = false;
- bool hit_star = false;
- LOG_FMT(LFCN, "%s(%d): pc->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(),
- get_token_name(pc->GetType()));
-
- if (prev->IsNullChunk())
- {
- LOG_FMT(LFCN, "%s(%d): Checking func call: prev is null chunk\n",
- __func__, __LINE__);
- }
- else
- {
- LOG_FMT(LFCN, "%s(%d): Checking func call: prev->Text() '%s', prev->GetType() is %s\n",
- __func__, __LINE__, prev->Text(), get_token_name(prev->GetType()));
- }
- // if (!chunk_ends_type(prev))
- // {
- // goto bad_ret_type;
- // }
-
- /*
- * REVISIT:
- * a function def can only occur at brace level, but not inside an
- * assignment, structure, enum, or union.
- * The close paren must be followed by an open brace, with an optional
- * qualifier (const) in between.
- * There can be all sorts of template stuff and/or '[]' in the type.
- * This hack mostly checks that.
- *
- * Examples:
- * foo->bar(maid); -- fcn call
- * FOO * bar(); -- fcn proto or class variable
- * FOO foo(); -- fcn proto or class variable
- * FOO foo(1); -- class variable
- * a = FOO * bar(); -- fcn call
- * a.y = foo() * bar(); -- fcn call
- * static const char * const fizz(); -- fcn def
- */
- while (prev->IsNotNullChunk())
- {
- LOG_FMT(LFCN, "%s(%d): next step with: prev orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text());
-
- if (pc->GetParentType() == CT_FIXED)
- {
- isa_def = true;
- }
-
- if (prev->TestFlags(PCF_IN_PREPROC))
- {
- prev = prev->GetPrevNcNnlNpp();
- continue;
- }
-
- // Some code slips an attribute between the type and function
- if ( prev->Is(CT_FPAREN_CLOSE)
- && prev->GetParentType() == CT_ATTRIBUTE)
- {
- prev = skip_attribute_prev(prev);
- continue;
- }
-
- // skip const(TYPE)
- if ( prev->Is(CT_PAREN_CLOSE)
- && prev->GetParentType() == CT_D_CAST)
- {
- LOG_FMT(LFCN, "%s(%d): --> For sure a prototype or definition\n",
- __func__, __LINE__);
- isa_def = true;
- break;
- }
-
- if (prev->GetParentType() == CT_DECLSPEC) // Issue 1289
- {
- prev = prev->GetOpeningParen();
-
- if (prev->IsNotNullChunk())
- {
- prev = prev->GetPrev();
- }
-
- if (prev->Is(CT_DECLSPEC))
- {
- if (prev->IsNotNullChunk())
- {
- prev = prev->GetPrev();
- }
- }
- }
-
- // if it was determined that this could be a function definition
- // but one of the preceding tokens is a CT_MEMBER than this is not a
- // fcn def, issue #1466
- if ( isa_def
- && prev->Is(CT_MEMBER))
- {
- isa_def = false;
- }
-
- // get first chunk before: A::B::pc | this.B.pc | this->B->pc
- if ( prev->Is(CT_DC_MEMBER)
- || prev->Is(CT_MEMBER))
- {
- while ( prev->Is(CT_DC_MEMBER)
- || prev->Is(CT_MEMBER))
- {
- prev = prev->GetPrevNcNnlNpp();
-
- if ( prev->IsNullChunk()
- || ( prev->IsNot(CT_WORD)
- && prev->IsNot(CT_TYPE)
- && prev->IsNot(CT_THIS)))
- {
- LOG_FMT(LFCN, "%s(%d): --? skipped MEMBER and landed on %s\n",
- __func__, __LINE__, (prev->IsNullChunk()) ? "<null chunk>" : get_token_name(prev->GetType()));
- break;
- }
- LOG_FMT(LFCN, "%s(%d): <skip> '%s'\n",
- __func__, __LINE__, prev->Text());
-
- // Issue #1112
- // clarification: this will skip the CT_WORD, CT_TYPE or CT_THIS landing on either
- // another CT_DC_MEMBER or CT_MEMBER or a token that indicates the context of the
- // token in question; therefore, exit loop when not a CT_DC_MEMBER or CT_MEMBER
- prev = prev->GetPrevNcNnlNpp();
-
- if (prev->IsNullChunk())
- {
- LOG_FMT(LFCN, "%s(%d): prev is null chunk\n",
- __func__, __LINE__);
- }
- else
- {
- LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text());
- }
- }
-
- if (prev->IsNullChunk())
- {
- break;
- }
- }
-
- // If we are on a TYPE or WORD, then this could be a proto or def
- if ( prev->Is(CT_TYPE)
- || prev->Is(CT_WORD))
- {
- if (!hit_star)
- {
- LOG_FMT(LFCN, "%s(%d): --> For sure a prototype or definition\n",
- __func__, __LINE__);
- isa_def = true;
- break;
- }
- Chunk *prev_prev = prev->GetPrevNcNnlNpp();
-
- if (!prev_prev->Is(CT_QUESTION)) // Issue #1753
- {
- LOG_FMT(LFCN, "%s(%d): --> maybe a proto/def\n",
- __func__, __LINE__);
-
- LOG_FMT(LFCN, "%s(%d): prev is '%s', orig line is %zu, orig col is %zu, type is %s, parent type is %s\n",
- __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(),
- get_token_name(prev->GetType()), get_token_name(prev->GetParentType()));
- log_pcf_flags(LFCN, pc->GetFlags());
- isa_def = true;
- }
- }
-
- if (prev->IsPointerOperator())
- {
- hit_star = true;
- }
-
- if ( prev->IsNot(CT_OPERATOR)
- && prev->IsNot(CT_TSQUARE)
- && prev->IsNot(CT_ANGLE_CLOSE)
- && prev->IsNot(CT_QUALIFIER)
- && prev->IsNot(CT_TYPE)
- && prev->IsNot(CT_WORD)
- && !prev->IsPointerOperator())
- {
- LOG_FMT(LFCN, "%s(%d): --> Stopping on prev is '%s', orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(), get_token_name(prev->GetType()));
-
- // certain tokens are unlikely to precede a prototype or definition
- if ( prev->Is(CT_ARITH)
- || prev->Is(CT_SHIFT)
- || prev->Is(CT_ASSIGN)
- || prev->Is(CT_COMMA)
- || ( prev->Is(CT_STRING)
- && prev->GetParentType() != CT_EXTERN) // fixes issue 1259
- || prev->Is(CT_STRING_MULTI)
- || prev->Is(CT_NUMBER)
- || prev->Is(CT_NUMBER_FP)
- || prev->Is(CT_FPAREN_OPEN)) // issue #1464
- {
- isa_def = false;
- }
- break;
- }
-
- // Skip over template and attribute stuff
- if (prev->Is(CT_ANGLE_CLOSE))
- {
- prev = skip_template_prev(prev);
- }
- else
- {
- prev = prev->GetPrevNcNnlNpp();
- }
- }
- //LOG_FMT(LFCN, " -- stopped on %s [%s]\n",
- // prev->Text(), get_token_name(prev->GetType()));
-
- // Fixes issue #1634
- if (prev->IsParenClose())
- {
- Chunk *preproc = prev->GetNextNcNnl();
-
- if (preproc->Is(CT_PREPROC))
- {
- size_t pp_level = preproc->GetPpLevel();
-
- if (preproc->GetNextNcNnl()->Is(CT_PP_ELSE))
- {
- do
- {
- preproc = preproc->GetPrevNcNnlNi(); // Issue #2279
-
- if (preproc->Is(CT_PP_IF))
- {
- preproc = preproc->GetPrevNcNnlNi(); // Issue #2279
-
- if (preproc->GetPpLevel() == pp_level)
- {
- prev = preproc->GetPrevNcNnlNpp();
- break;
- }
- }
- } while (preproc->IsNotNullChunk());
- }
- }
- }
-
- if ( isa_def
- && prev != nullptr
- && prev->IsNotNullChunk()
- && ( ( prev->IsParenClose()
- && prev->GetParentType() != CT_D_CAST
- && prev->GetParentType() != CT_MACRO_OPEN // Issue #2726
- && prev->GetParentType() != CT_MACRO_CLOSE)
- || prev->Is(CT_ASSIGN)
- || prev->Is(CT_RETURN)))
- {
- LOG_FMT(LFCN, "%s(%d): -- overriding DEF due to prev is '%s', type is %s\n",
- __func__, __LINE__, prev->Text(), get_token_name(prev->GetType()));
- isa_def = false;
- }
-
- // Fixes issue #1266, identification of a tuple return type in CS.
- if ( !isa_def
- && prev->Is(CT_PAREN_CLOSE)
- && prev->GetNextNcNnl() == pc)
- {
- tmp = prev->GetOpeningParen();
-
- while ( tmp->IsNotNullChunk() // Issue #2315
- && tmp != prev)
- {
- if ( tmp->Is(CT_COMMA)
- && tmp->GetLevel() == prev->GetLevel() + 1)
- {
- LOG_FMT(LFCN, "%s(%d): -- overriding call due to tuple return type -- prev is '%s', type is %s\n",
- __func__, __LINE__, prev->Text(), get_token_name(prev->GetType()));
- isa_def = true;
- break;
- }
- tmp = tmp->GetNextNcNnl();
- }
- }
-
- if (isa_def)
- {
- LOG_FMT(LFCN, "%s(%d): pc is '%s', orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
- LOG_FMT(LFCN, "%s(%d): (12) SET TO CT_FUNC_DEF: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc->SetType(CT_FUNC_DEF);
-
- if ( prev == nullptr
- || prev->IsNullChunk())
- {
- prev = Chunk::GetHead();
- }
-
- for (tmp = prev; tmp->IsNotNullChunk() && tmp != pc; tmp = tmp->GetNextNcNnlNpp())
- {
- LOG_FMT(LFCN, "%s(%d): Text() is '%s', type is %s\n",
- __func__, __LINE__, tmp->Text(), get_token_name(tmp->GetType()));
- make_type(tmp);
- }
- }
- }
-
- if (pc->IsNot(CT_FUNC_DEF))
- {
- LOG_FMT(LFCN, "%s(%d): Detected type %s, Text() is '%s', on orig line %zu, orig col %zu\n",
- __func__, __LINE__, get_token_name(pc->GetType()),
- pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
-
- tmp = flag_parens(next, PCF_IN_FCN_CALL, CT_FPAREN_OPEN, CT_FUNC_CALL, false);
-
- if ( tmp != nullptr
- && tmp->Is(CT_BRACE_OPEN)
- && tmp->GetParentType() != CT_DOUBLE_BRACE)
- {
- set_paren_parent(tmp, pc->GetType());
- }
- return;
- }
- /*
- * We have a function definition or prototype
- * Look for a semicolon or a brace open after the close parenthesis to figure
- * out whether this is a prototype or definition
- */
-
- // See if this is a prototype or implementation
-
- // FIXME: this doesn't take the old K&R parameter definitions into account
-
- // Scan tokens until we hit a brace open (def) or semicolon (proto)
- tmp = paren_close->GetNextNcNnl();
-
- while (tmp->IsNotNullChunk())
- {
- // Only care about brace or semicolon on the same level
- if (tmp->GetLevel() < pc->GetLevel())
- {
- // No semicolon - guess that it is a prototype
- pc->ResetFlagBits(PCF_VAR_1ST_DEF);
- pc->SetType(CT_FUNC_PROTO);
- break;
- }
- else if (tmp->GetLevel() == pc->GetLevel())
- {
- if (tmp->Is(CT_BRACE_OPEN))
- {
- // its a function def for sure
- break;
- }
- else if (tmp->IsSemicolon())
- {
- // Set the parent for the semicolon for later
- semi = tmp;
- pc->ResetFlagBits(PCF_VAR_1ST_DEF);
- pc->SetType(CT_FUNC_PROTO);
- LOG_FMT(LFCN, "%s(%d): 2) Marked Text() is '%s', as FUNC_PROTO on orig line %zu, orig col %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- break;
- }
- else if (pc->Is(CT_COMMA))
- {
- pc->SetType(CT_FUNC_CTOR_VAR);
- LOG_FMT(LFCN, "%s(%d): 2) Marked Text() is '%s', as FUNC_CTOR_VAR on orig line %zu, orig col %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- break;
- }
- }
- tmp = tmp->GetNextNcNnl();
- }
-
- /*
- * C++ syntax is wacky. We need to check to see if a prototype is really a
- * variable definition with parameters passed into the constructor.
- * Unfortunately, without being able to accurately determine if an
- * identifier is a type (which would require us to more or less be a full
- * compiler), the only mostly reliable way to do so is to guess that it is
- * a constructor variable if inside a function body and scan the 'parameter
- * list' for items that are not allowed in a prototype. We search backwards
- * and checking the parent of the containing open braces. If the parent is a
- * class or namespace, then it probably is a prototype.
- */
- if ( language_is_set(LANG_CPP)
- && pc->Is(CT_FUNC_PROTO)
- && pc->GetParentType() != CT_OPERATOR)
- {
- LOG_FMT(LFPARAM, "%s(%d):", __func__, __LINE__);
- LOG_FMT(LFPARAM, " checking '%s' for constructor variable %s %s\n",
- pc->Text(),
- get_token_name(paren_open->GetType()),
- get_token_name(paren_close->GetType()));
-
- /*
- * Check the token at the start of the statement. If it's 'extern', we
- * definitely have a function prototype.
- */
- tmp = pc;
-
- while ( tmp->IsNotNullChunk()
- && !tmp->TestFlags(PCF_STMT_START))
- {
- tmp = tmp->GetPrevNcNnlNi(); // Issue #2279
- }
- const bool is_extern = ( tmp->IsNotNullChunk()
- && tmp->GetStr().equals("extern"));
-
- /*
- * Scan the parameters looking for:
- * - constant strings
- * - numbers
- * - non-type fields
- * - function calls
- */
- Chunk *ref = paren_open->GetNextNcNnl();
- Chunk *tmp2;
- bool is_param = true;
- tmp = ref;
-
- while (tmp != paren_close)
- {
- tmp2 = tmp->GetNextNcNnl();
-
- if ( tmp->Is(CT_COMMA)
- && (tmp->GetLevel() == (paren_open->GetLevel() + 1)))
- {
- if (!can_be_full_param(ref, tmp))
- {
- is_param = false;
- break;
- }
- ref = tmp2;
- }
- tmp = tmp2;
- }
-
- if ( !is_extern
- && is_param
- && ref != tmp)
- {
- if (!can_be_full_param(ref, tmp))
- {
- is_param = false;
- }
- }
-
- if ( !is_extern
- && !is_param)
- {
- pc->SetType(CT_FUNC_CTOR_VAR);
- LOG_FMT(LFCN, "%s(%d): 3) Marked Text() '%s' as FUNC_CTOR_VAR on orig line %zu, orig col %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- }
- else if (pc->GetBraceLevel() > 0)
- {
- Chunk *br_open = pc->GetPrevType(CT_BRACE_OPEN, pc->GetBraceLevel() - 1);
-
- if ( br_open->IsNotNullChunk()
- && br_open->GetParentType() != CT_EXTERN
- && br_open->GetParentType() != CT_NAMESPACE)
- {
- // Do a check to see if the level is right
- prev = pc->GetPrevNcNnlNi(); // Issue #2279
-
- if ( !prev->IsString("*")
- && !prev->IsString("&"))
- {
- Chunk *p_op = pc->GetPrevType(CT_BRACE_OPEN, pc->GetBraceLevel() - 1);
-
- if ( p_op->IsNotNullChunk()
- && p_op->GetParentType() != CT_CLASS
- && p_op->GetParentType() != CT_STRUCT
- && p_op->GetParentType() != CT_NAMESPACE)
- {
- pc->SetType(CT_FUNC_CTOR_VAR);
- LOG_FMT(LFCN, "%s(%d): 4) Marked Text() is'%s', as FUNC_CTOR_VAR on orig line %zu, orig col %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- }
- }
- }
- }
- }
-
- if ( semi != nullptr
- && semi->IsNotNullChunk())
- {
- semi->SetParentType(pc->GetType());
- }
-
- // Issue # 1403, 2152
- if (paren_open->GetPrev()->Is(CT_FUNC_CTOR_VAR))
- {
- flag_parens(paren_open, PCF_IN_FCN_CTOR, CT_FPAREN_OPEN, pc->GetType(), false);
- }
- else
- {
- flag_parens(paren_open, PCF_IN_FCN_DEF, CT_FPAREN_OPEN, pc->GetType(), false);
- }
- //flag_parens(paren_open, PCF_IN_FCN_DEF, CT_FPAREN_OPEN, pc->GetType(), true);
-
- if (pc->Is(CT_FUNC_CTOR_VAR))
- {
- pc->SetFlagBits(PCF_VAR_1ST_DEF);
- return;
- }
-
- if (next->Is(CT_TSQUARE))
- {
- next = next->GetNextNcNnl();
-
- if (next->IsNullChunk())
- {
- return;
- }
- }
- // Mark parameters and return type
- fix_fcn_def_params(next);
- mark_function_return_type(pc, pc->GetPrevNcNnlNi(), pc->GetType()); // Issue #2279
-
- /* mark C# where chunk */
- if ( language_is_set(LANG_CS)
- && ( (pc->Is(CT_FUNC_DEF))
- || (pc->Is(CT_FUNC_PROTO))))
- {
- tmp = paren_close->GetNextNcNnl();
- T_PcfFlags in_where_spec_flags = PCF_NONE;
-
- while ( tmp->IsNotNullChunk()
- && tmp->IsNot(CT_BRACE_OPEN)
- && tmp->IsNot(CT_SEMICOLON))
- {
- mark_where_chunk(tmp, pc->GetType(), tmp->GetFlags() | in_where_spec_flags);
- in_where_spec_flags = tmp->GetFlags() & PCF_IN_WHERE_SPEC;
-
- tmp = tmp->GetNextNcNnl();
- }
- }
-
- // Find the brace pair and set the parent
- if (pc->Is(CT_FUNC_DEF))
- {
- tmp = paren_close->GetNextNcNnl();
-
- while ( tmp->IsNotNullChunk()
- && tmp->IsNot(CT_BRACE_OPEN))
- {
- LOG_FMT(LFCN, "%s(%d): (13) SET TO CT_FUNC_DEF: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
- tmp->SetParentType(CT_FUNC_DEF);
-
- if (!tmp->IsSemicolon())
- {
- tmp->SetFlagBits(PCF_OLD_FCN_PARAMS);
- }
- tmp = tmp->GetNextNcNnl();
- }
-
- if (tmp->Is(CT_BRACE_OPEN))
- {
- LOG_FMT(LFCN, "%s(%d): (14) SET TO CT_FUNC_DEF: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
- tmp->SetParentType(CT_FUNC_DEF);
- tmp = tmp->GetClosingParen();
-
- if (tmp->IsNotNullChunk())
- {
- LOG_FMT(LFCN, "%s(%d): (15) SET TO CT_FUNC_DEF: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
- tmp->SetParentType(CT_FUNC_DEF);
- }
- }
- }
-} // mark_function
-
-
-bool mark_function_type(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LFTYPE, "%s(%d): type is %s, Text() '%s' @ orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, get_token_name(pc->GetType()), pc->Text(),
- pc->GetOrigLine(), pc->GetOrigCol());
-
- size_t star_count = 0;
- size_t word_count = 0;
- Chunk *ptrcnk = nullptr;
- Chunk *tmp;
- Chunk *apo;
- Chunk *apc;
- Chunk *aft;
- bool anon = false;
- E_Token pt, ptp;
-
- // Scan backwards across the name, which can only be a word and single star
- Chunk *varcnk = pc->GetPrevNcNnlNi(); // Issue #2279
-
- varcnk = varcnk->GetPrevNbsb();
-
- if ( varcnk->IsNotNullChunk()
- && !varcnk->IsWord())
- {
- if ( language_is_set(LANG_OC)
- && varcnk->IsString("^")
- && varcnk->GetPrevNcNnlNi()->IsParenOpen()) // Issue #2279
- {
- // anonymous ObjC block type -- RTYPE (^)(ARGS)
- anon = true;
- }
- else
- {
- LOG_FMT(LFTYPE, "%s(%d): not a word: Text() '%s', type is %s, @ orig line is %zu:, orig col is %zu\n",
- __func__, __LINE__, varcnk->Text(), get_token_name(varcnk->GetType()),
- varcnk->GetOrigLine(), varcnk->GetOrigCol());
- goto nogo_exit;
- }
- }
- apo = pc->GetNextNcNnl();
-
- if (apo->IsNullChunk())
- {
- return(false);
- }
- apc = apo->GetClosingParen();
-
- if ( apc->IsNotNullChunk()
- && ( !apo->IsParenOpen()
- || ((apc = apo->GetClosingParen())->IsNullChunk())))
- {
- LOG_FMT(LFTYPE, "%s(%d): not followed by parens\n", __func__, __LINE__);
- goto nogo_exit;
- }
- aft = apc->GetNextNcNnl();
-
- if (aft->Is(CT_BRACE_OPEN))
- {
- pt = CT_FUNC_DEF;
- }
- else if ( aft->Is(CT_SEMICOLON)
- || aft->Is(CT_ASSIGN))
- {
- pt = CT_FUNC_PROTO;
- }
- else
- {
- LOG_FMT(LFTYPE, "%s(%d): not followed by '{' or ';'\n", __func__, __LINE__);
- goto nogo_exit;
- }
- ptp = pc->TestFlags(PCF_IN_TYPEDEF) ? CT_FUNC_TYPE : CT_FUNC_VAR;
-
- tmp = pc;
-
- while ((tmp = tmp->GetPrevNcNnlNi())->IsNotNullChunk()) // Issue #2279
- {
- tmp = tmp->GetPrevNbsb();
-
- LOG_FMT(LFTYPE, " -- type is %s, %s on orig line %zu, orig col is %zu",
- get_token_name(tmp->GetType()), tmp->Text(),
- tmp->GetOrigLine(), tmp->GetOrigCol());
-
- if ( tmp->IsStar()
- || tmp->Is(CT_PTR_TYPE)
- || tmp->Is(CT_CARET))
- {
- star_count++;
- ptrcnk = tmp;
- LOG_FMT(LFTYPE, " -- PTR_TYPE\n");
- }
- else if ( tmp->IsWord()
- || tmp->Is(CT_WORD)
- || tmp->Is(CT_TYPE))
- {
- word_count++;
- LOG_FMT(LFTYPE, " -- TYPE(%s)\n", tmp->Text());
- }
- else if (tmp->Is(CT_DC_MEMBER))
- {
- word_count = 0;
- LOG_FMT(LFTYPE, " -- :: reset word_count\n");
- }
- else if (tmp->IsString("("))
- {
- LOG_FMT(LFTYPE, " -- open paren (break)\n");
- break;
- }
- else
- {
- LOG_FMT(LFTYPE, " -- unexpected token: type is %s, Text() '%s', on orig line %zu, orig col %zu\n",
- get_token_name(tmp->GetType()), tmp->Text(),
- tmp->GetOrigLine(), tmp->GetOrigCol());
- goto nogo_exit;
- }
- }
-
- // Fixes #issue 1577
- // Allow word count 2 in case of function pointer declaration.
- // Ex: bool (__stdcall* funcptr)(int, int);
- if ( star_count > 1
- || ( word_count > 1
- && !( word_count == 2
- && ptp == CT_FUNC_VAR))
- || ((star_count + word_count) == 0))
- {
- LOG_FMT(LFTYPE, "%s(%d): bad counts word: %zu, star: %zu\n",
- __func__, __LINE__, word_count, star_count);
- goto nogo_exit;
- }
-
- // make sure what appears before the first open paren can be a return type
- if (!chunk_ends_type(tmp->GetPrevNcNnlNi())) // Issue #2279
- {
- goto nogo_exit;
- }
-
- if (ptrcnk)
- {
- ptrcnk->SetType(CT_PTR_TYPE);
- }
-
- if (!anon)
- {
- if (pc->TestFlags(PCF_IN_TYPEDEF))
- {
- varcnk->SetType(CT_FUNC_TYPE); // Issue #3402
- }
- else
- {
- varcnk->SetType(CT_FUNC_VAR);
- varcnk->SetFlagBits(PCF_VAR_1ST_DEF);
- }
- }
- pc->SetType(CT_TPAREN_CLOSE);
- pc->SetParentType(ptp);
-
- apo->SetType(CT_FPAREN_OPEN);
- apo->SetParentType(pt);
- apc->SetType(CT_FPAREN_CLOSE);
- apc->SetParentType(pt);
- fix_fcn_def_params(apo);
-
- if (aft->IsSemicolon())
- {
- aft->SetParentType(aft->TestFlags(PCF_IN_TYPEDEF) ? CT_TYPEDEF : CT_FUNC_VAR);
- }
- else if (aft->Is(CT_BRACE_OPEN))
- {
- flag_parens(aft, PCF_NONE, CT_NONE, pt, false);
- }
- // Step backwards to the previous open paren and mark everything a
- tmp = pc;
-
- while ((tmp = tmp->GetPrevNcNnlNi())->IsNotNullChunk()) // Issue #2279
- {
- LOG_FMT(LFTYPE, " ++ type is %s, Text() '%s', on orig line %zu, orig col %zu\n",
- get_token_name(tmp->GetType()), tmp->Text(),
- tmp->GetOrigLine(), tmp->GetOrigCol());
-
- if (*tmp->GetStr().c_str() == '(')
- {
- if (!pc->TestFlags(PCF_IN_TYPEDEF))
- {
- tmp->SetFlagBits(PCF_VAR_1ST_DEF);
- }
- tmp->SetType(CT_TPAREN_OPEN);
- tmp->SetParentType(ptp);
-
- tmp = tmp->GetPrevNcNnlNi(); // Issue #2279
-
- if ( tmp->Is(CT_FUNCTION)
- || tmp->Is(CT_FUNC_CALL)
- || tmp->Is(CT_FUNC_CALL_USER)
- || tmp->Is(CT_FUNC_DEF)
- || tmp->Is(CT_FUNC_PROTO))
- {
- tmp->SetType(CT_TYPE);
- tmp->ResetFlagBits(PCF_VAR_1ST_DEF);
- }
- mark_function_return_type(varcnk, tmp, ptp);
- break;
- }
- }
- return(true);
-
-nogo_exit:
- tmp = pc->GetNextNcNnl();
-
- if (tmp->IsParenOpen())
- {
- LOG_FMT(LFTYPE, "%s(%d): setting FUNC_CALL on orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol());
- flag_parens(tmp, PCF_NONE, CT_FPAREN_OPEN, CT_FUNC_CALL, false);
- }
- return(false);
-} // mark_function_type
-
-
-void mark_lvalue(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- if (pc->TestFlags(PCF_IN_PREPROC))
- {
- return;
- }
-
- for (Chunk *prev = pc->GetPrevNcNnlNi(); // Issue #2279
- prev->IsNotNullChunk();
- prev = prev->GetPrevNcNnlNi()) // Issue #2279
- {
- if ( prev->GetLevel() < pc->GetLevel()
- || prev->Is(CT_ACCESS_COLON)
- || prev->Is(CT_ASSIGN)
- || prev->Is(CT_BOOL)
- || prev->Is(CT_COMMA)
- || prev->IsCppInheritanceAccessSpecifier()
- || prev->IsSemicolon()
- || prev->IsString("(")
- || prev->IsString("{")
- || prev->IsString("[")
- || prev->TestFlags(PCF_IN_PREPROC)
- || prev->GetParentType() == CT_NAMESPACE
- || prev->GetParentType() == CT_TEMPLATE)
- {
- break;
- }
- prev->SetFlagBits(PCF_LVALUE);
-
- if ( prev->GetLevel() == pc->GetLevel()
- && prev->IsString("&"))
- {
- make_type(prev);
- }
- }
-} // mark_lvalue
-
-
-void mark_struct_union_body(Chunk *start)
-{
- LOG_FUNC_ENTRY();
- Chunk *pc = start;
-
- while ( pc->IsNotNullChunk()
- && pc->GetLevel() >= start->GetLevel()
- && !( pc->GetLevel() == start->GetLevel()
- && pc->Is(CT_BRACE_CLOSE)))
- {
- if ( pc->Is(CT_BRACE_OPEN)
- || pc->Is(CT_BRACE_CLOSE)
- || pc->Is(CT_SEMICOLON))
- {
- pc = pc->GetNextNcNnl();
-
- if (pc->IsNullChunk())
- {
- break;
- }
- }
-
- if (pc->Is(CT_ALIGN))
- {
- pc = skip_align(pc); // "align(x)" or "align(x):"
-
- if (pc->IsNullChunk())
- {
- break;
- }
- }
- else if (pc->Is(CT_AMP))
- {
- pc = skip_expression(pc);
- }
- else
- {
- pc = fix_variable_definition(pc);
-
- if (pc->IsNullChunk())
- {
- break;
- }
- }
- }
-} // mark_struct_union_body
-
-
-void mark_template_func(Chunk *pc, Chunk *pc_next)
-{
- LOG_FUNC_ENTRY();
-
- // We know angle_close must be there...
- Chunk *angle_close = pc_next->GetNextType(CT_ANGLE_CLOSE, pc->GetLevel());
- Chunk *after = angle_close->GetNextNcNnl();
-
- if (after->IsNotNullChunk())
- {
- if (after->IsString("("))
- {
- if (angle_close->TestFlags(PCF_IN_FCN_CALL))
- {
- LOG_FMT(LTEMPFUNC, "%s(%d): marking '%s' in line %zu as a FUNC_CALL\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine());
- LOG_FMT(LFCN, "%s(%d): (16) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc->SetType(CT_FUNC_CALL);
- flag_parens(after, PCF_IN_FCN_CALL, CT_FPAREN_OPEN, CT_FUNC_CALL, false);
- }
- else
- {
- /*
- * Might be a function def. Must check what is before the template:
- * Func call:
- * BTree.Insert(std::pair<int, double>(*it, double(*it) + 1.0));
- * a = Test<int>(j);
- * std::pair<int, double>(*it, double(*it) + 1.0));
- */
-
- LOG_FMT(LTEMPFUNC, "%s(%d): marking '%s' in line %zu as a FUNC_CALL 2\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine());
- // its a function!!!
- LOG_FMT(LFCN, "%s(%d): (17) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- pc->SetType(CT_FUNC_CALL);
- mark_function(pc);
- }
- }
- else if (after->Is(CT_WORD))
- {
- // its a type!
- pc->SetType(CT_TYPE);
- pc->SetFlagBits(PCF_VAR_TYPE);
- after->SetFlagBits(PCF_VAR_DEF);
- }
- }
-} // mark_template_func
-
-
-Chunk *mark_variable_definition(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- if (start == nullptr)
- {
- return(nullptr);
- }
- Chunk *pc = start;
- T_PcfFlags flags = PCF_VAR_1ST_DEF;
-
- LOG_FMT(LVARDEF, "%s(%d): orig line %zu, orig col %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(),
- get_token_name(pc->GetType()));
-
- // Issue #596
- bool bit_field_colon_is_present = false;
-
- while (go_on(pc, start))
- {
- if ( pc->Is(CT_WORD)
- || pc->Is(CT_FUNC_CTOR_VAR))
- {
- auto const orig_flags = pc->GetFlags();
-
- if (!pc->TestFlags(PCF_IN_ENUM))
- {
- pc->SetFlagBits(flags);
- }
- flags &= ~PCF_VAR_1ST;
- LOG_FMT(LVARDEF, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', set PCF_VAR_1ST\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
-
- LOG_FMT(LVARDEF,
- "%s(%d): orig line is %zu, marked Text() '%s'[%s]\n"
- " in orig col %zu, flags: %s -> %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->Text(),
- get_token_name(pc->GetType()), pc->GetOrigCol(),
- pcf_flags_str(orig_flags).c_str(),
- pcf_flags_str(pc->GetFlags()).c_str());
- }
- else if ( !bit_field_colon_is_present // Issue #2689
- && ( pc->IsStar()
- || pc->IsMsRef()))
- {
- pc->SetType(CT_PTR_TYPE);
- }
- else if (pc->IsAddress())
- {
- pc->SetType(CT_BYREF);
- }
- else if ( pc->Is(CT_SQUARE_OPEN)
- || pc->Is(CT_ASSIGN))
- {
- pc = skip_expression(pc);
- continue;
- }
- else if (pc->Is(CT_COLON))
- {
- bit_field_colon_is_present = true; // Issue #2689
- }
- pc = pc->GetNextNcNnl();
- }
- return(pc);
-} // mark_variable_definition
-
-
-void mark_variable_stack(ChunkStack &cs, log_sev_t sev)
-{
- UNUSED(sev);
- LOG_FUNC_ENTRY();
-
- // throw out the last word and mark the rest
- Chunk *var_name = cs.Pop_Back();
-
- if ( var_name != nullptr
- && var_name->GetPrev()->IsNotNullChunk()
- && var_name->GetPrev()->GetType() == CT_DC_MEMBER)
- {
- cs.Push_Back(var_name);
- }
-
- if (var_name != nullptr)
- {
- LOG_FMT(LFCNP, "%s(%d): parameter on orig line %zu, orig col %zu:\n",
- __func__, __LINE__, var_name->GetOrigLine(), var_name->GetOrigCol());
-
- size_t word_cnt = 0;
- Chunk *word_type;
-
- while ((word_type = cs.Pop_Back()) != nullptr)
- {
- if ( word_type->Is(CT_WORD)
- || word_type->Is(CT_TYPE))
- {
- LOG_FMT(LFCNP, "%s(%d): parameter on orig line %zu, orig col %zu: <%s> as TYPE\n",
- __func__, __LINE__, var_name->GetOrigLine(), var_name->GetOrigCol(), word_type->Text());
- word_type->SetType(CT_TYPE);
- word_type->SetFlagBits(PCF_VAR_TYPE);
- }
- word_cnt++;
- }
-
- if (var_name->Is(CT_WORD))
- {
- if (word_cnt > 0)
- {
- LOG_FMT(LFCNP, "%s(%d): parameter on orig line %zu, orig col %zu: <%s> as VAR\n",
- __func__, __LINE__, var_name->GetOrigLine(), var_name->GetOrigCol(), var_name->Text());
- var_name->SetFlagBits(PCF_VAR_DEF);
- }
- else
- {
- LOG_FMT(LFCNP, "%s(%d): parameter on orig line %zu, orig col %zu: <%s> as TYPE\n",
- __func__, __LINE__, var_name->GetOrigLine(), var_name->GetOrigCol(), var_name->Text());
- var_name->SetType(CT_TYPE);
- var_name->SetFlagBits(PCF_VAR_TYPE);
- }
- }
- }
-} // mark_variable_stack
-
-
-T_PcfFlags mark_where_chunk(Chunk *pc, E_Token parent_type, T_PcfFlags flags)
-{
- /* TODO: should have options to control spacing around the ':' as well as newline ability for the
- * constraint clauses (should it break up a 'where A : B where C : D' on the same line? wrap? etc.) */
-
- if (pc->Is(CT_WHERE))
- {
- pc->SetType(CT_WHERE_SPEC);
- pc->SetParentType(parent_type);
- flags |= PCF_IN_WHERE_SPEC;
- LOG_FMT(LFTOR, "%s: where-spec on line %zu\n",
- __func__, pc->GetOrigLine());
- }
- else if (flags.test(PCF_IN_WHERE_SPEC))
- {
- if (pc->IsString(":"))
- {
- pc->SetType(CT_WHERE_COLON);
- LOG_FMT(LFTOR, "%s: where-spec colon on line %zu\n",
- __func__, pc->GetOrigLine());
- }
- else if (pc->IsClassOrStruct())
- {
- /* class/struct inside of a where-clause confuses parser for indentation; set it as a word so it looks like the rest */
- pc->SetType(CT_WORD);
- }
- }
-
- if (flags.test(PCF_IN_WHERE_SPEC))
- {
- pc->SetFlagBits(PCF_IN_WHERE_SPEC);
- }
- return(flags);
-} // mark_where_chunk
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_fix_mark.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_fix_mark.h
deleted file mode 100644
index dd6d26fa..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_fix_mark.h
+++ /dev/null
@@ -1,196 +0,0 @@
-/**
- * @file combine_fix_mark.h
- *
- * @author Guy Maurel
- * @license GPL v2+
- * extract from combine.cpp
- */
-
-#ifndef COMBINE_FIX_MARK_H_INCLUDED
-#define COMBINE_FIX_MARK_H_INCLUDED
-
-#include "ChunkStack.h"
-
-
-/**
- * Checks to see if the current paren is part of a cast.
- * We already verified that this doesn't follow function, TYPE, IF, FOR,
- * SWITCH, or WHILE and is followed by WORD, TYPE, STRUCT, ENUM, or UNION.
- *
- * @param start Pointer to the open paren
- */
-void fix_casts(Chunk *start);
-
-
-/**
- * Simply change any STAR to PTR_TYPE and WORD to TYPE
- *
- * @param start points to the open paren
- */
-void fix_fcn_def_params(Chunk *start);
-
-
-/**
- * CT_TYPE_CAST follows this pattern:
- * dynamic_cast<...>(...)
- *
- * Mark everything between the <> as a type and set the paren parent
- */
-void fix_type_cast(Chunk *start);
-
-
-/**
- * We are on a typedef.
- * If the next word is not enum/union/struct, then the last word before the
- * next ',' or ';' or '__attribute__' is a type.
- *
- * typedef [type...] [*] type [, [*]type] ;
- * typedef <return type>([*]func)();
- * typedef <return type>([*]func)(params);
- * typedef <return type>(__stdcall *func)(); Bug # 633 MS-specific extension
- * include the config-file "test/config/MS-calling_conventions.cfg"
- * typedef <return type>func(params);
- * typedef <enum/struct/union> [type] [*] type [, [*]type] ;
- * typedef <enum/struct/union> [type] { ... } [*] type [, [*]type] ;
- */
-void fix_typedef(Chunk *start);
-
-
-/**
- * We are on the start of a sequence that could be a variable definition
- * - FPAREN_OPEN (parent == CT_FOR)
- * - BRACE_OPEN
- * - SEMICOLON
- */
-Chunk *fix_variable_definition(Chunk *start);
-
-
-void mark_cpp_constructor(Chunk *pc);
-
-
-/**
- * Mark all chunks belonging to a C++ lambda expression
- *
- * @param square_open points to a chunk of type CT_SQUARE_OPEN, and the parent type is
- * assumed to have already been assigned the value CT_CPP_LAMBDA;
- * under this assumption, the function marks all chunks as PCF_IN_LAMBDA
- * until the corresponding closing CT_BRACE_CLOSE (with parent type
- * CT_CPP_LAMBDA) is encountered
- */
-void mark_cpp_lambda(Chunk *square_open);
-
-
-/**
- * Marks statement starts in a macro body.
- * REVISIT: this may already be done
- */
-void mark_define_expressions();
-
-
-/**
- * Just mark every CT_WORD until a semicolon as CT_SQL_WORD.
- * Adjust the levels if pc is CT_SQL_BEGIN
- */
-void mark_exec_sql(Chunk *pc);
-
-
-/**
- * Changes the return type to type and set the parent.
- *
- * @param pc the last chunk of the return type
- * @param parent_type CT_NONE (no change) or the new parent type
- */
-void mark_function_return_type(Chunk *fname, Chunk *start, E_Token parent_type);
-
-
-/**
- * We are on a function word. we need to:
- * - find out if this is a call or prototype or implementation
- * - mark return type
- * - mark parameter types
- * - mark brace pair
- *
- * REVISIT:
- * This whole function is a mess.
- * It needs to be reworked to eliminate duplicate logic and determine the
- * function type more directly.
- * 1. Skip to the close paren and see what is after.
- * a. semicolon - function call or function proto
- * b. open brace - function call (ie, list_for_each) or function def
- * c. open paren - function type or chained function call
- * d. qualifier - function def or proto, continue to semicolon or open brace
- * 2. Examine the 'parameters' to see if it can be a proto/def
- * 3. Examine what is before the function name to see if it is a proto or call
- * Constructor/destructor detection should have already been done when the
- * 'class' token was encountered (see mark_class_ctor).
- */
-void mark_function(Chunk *pc);
-
-
-/**
- * Process a function type that is not in a typedef.
- * pc points to the first close paren.
- *
- * void (*func)(params);
- * const char * (*func)(params);
- * const char * (^func)(params); -- Objective C
- *
- * @param pc Points to the first closing paren
- *
- * @return whether a function type was processed
- */
-bool mark_function_type(Chunk *pc);
-
-
-/**
- * Just hit an assign. Go backwards until we hit an open brace/paren/square or
- * semicolon (TODO: other limiter?) and mark as a LValue.
- */
-void mark_lvalue(Chunk *pc);
-
-
-/**
- * Examines the stuff between braces { }.
- * There should only be variable definitions and methods.
- * Skip the methods, as they will get handled elsewhere.
- */
-void mark_struct_union_body(Chunk *start);
-
-
-/**
- * We are on a word followed by a angle open which is part of a template.
- * If the angle close is followed by a open paren, then we are on a template
- * function def or a template function call:
- * Vector2<float>(...) [: ...[, ...]] { ... }
- * Or we could be on a variable def if it's followed by a word:
- * Renderer<rgb32> rend;
- */
-void mark_template_func(Chunk *pc, Chunk *pc_next);
-
-
-/**
- * We are on the first word of a variable definition.
- * Mark all the variable names with PCF_VAR_1ST and PCF_VAR_DEF as appropriate.
- * Also mark any '*' encountered as a CT_PTR_TYPE.
- * Skip over []. Go until a ';' is hit.
- *
- * Example input:
- * int a = 3, b, c = 2; ## called with 'a'
- * foo_t f = {1, 2, 3}, g = {5, 6, 7}; ## called with 'f'
- * struct {...} *a, *b; ## called with 'a' or '*'
- * myclass a(4);
- */
-Chunk *mark_variable_definition(Chunk *start);
-
-
-void mark_variable_stack(ChunkStack &cs, log_sev_t sev);
-
-
-/**
- * TODO: add doc cmt
- *
- */
-T_PcfFlags mark_where_chunk(Chunk *pc, E_Token parent_type, T_PcfFlags flags);
-
-
-#endif /* COMBINE_FIX_MARK_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_labels.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_labels.cpp
deleted file mode 100644
index a49a1fd4..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_labels.cpp
+++ /dev/null
@@ -1,446 +0,0 @@
-/**
- * @file combine_labels.cpp
- *
- * @author Guy Maurel
- * @license GPL v2+
- * extract from combine.h
- */
-
-#include "combine_labels.h"
-
-#include "chunk.h"
-#include "cs_top_is_question.h"
-#include "unc_tools.h"
-#include "uncrustify.h"
-
-
-Chunk *chunk_get_next_local(Chunk *pc, E_Scope scope = E_Scope::ALL)
-{
- Chunk *tmp = pc;
-
- if (tmp == nullptr)
- {
- tmp = Chunk::NullChunkPtr;
- }
-
- do
- {
- tmp = tmp->GetNext(scope);
- } while ( tmp->IsNotNullChunk()
- && ( tmp->IsComment()
- || tmp->Is(CT_NOEXCEPT)));
-
- return(tmp);
-}
-
-
-Chunk *chunk_get_prev_local(Chunk *pc, E_Scope scope = E_Scope::ALL)
-{
- Chunk *tmp = pc;
-
- if (tmp == nullptr)
- {
- tmp = Chunk::NullChunkPtr;
- }
-
- do
- {
- tmp = tmp->GetPrev(scope);
- } while ( tmp->IsNotNullChunk()
- && ( tmp->IsCommentOrNewline()
- || tmp->Is(CT_NOEXCEPT)));
-
- return(tmp);
-}
-
-
-void combine_labels()
-{
- LOG_FUNC_ENTRY();
- bool hit_case = false;
- bool hit_class = false;
-
- cpd.unc_stage = unc_stage_e::COMBINE_LABELS;
-
- // stack to handle nesting inside of OC messages, which reset the scope
- ChunkStack cs;
-
- Chunk *prev = Chunk::GetHead();
-
- if (prev->IsNullChunk())
- {
- return;
- }
- Chunk *cur = prev->GetNextNc();
-
- if (cur->IsNullChunk())
- {
- return;
- }
- Chunk *next = cur->GetNextNc();
-
- // unlikely that the file will start with a label...
- // prev cur next
- while ( next != nullptr
- && next->IsNotNullChunk())
- {
- if (next->Is(CT_NEWLINE))
- {
- LOG_FMT(LFCN, "%s(%d): next orig line is %zu, orig col is %zu, <Newline>, nl is %zu\n",
- __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->GetNlCount());
- }
- else if (next->Is(CT_VBRACE_OPEN))
- {
- LOG_FMT(LFCN, "%s(%d): next orig line is %zu, orig col is %zu, VBRACE_OPEN\n",
- __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol());
- }
- else if (next->Is(CT_VBRACE_CLOSE))
- {
- LOG_FMT(LFCN, "%s(%d): next orig line is %zu, orig col is %zu, VBRACE_CLOSE\n",
- __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol());
- }
- else
- {
- LOG_FMT(LFCN, "%s(%d): next orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->Text(), get_token_name(next->GetType()));
- }
-
- if ( !next->TestFlags(PCF_IN_OC_MSG) // filter OC case of [self class] msg send
- && ( next->Is(CT_CLASS)
- || next->Is(CT_OC_CLASS)
- || next->Is(CT_TEMPLATE)))
- {
- hit_class = true;
- }
-
- if ( next->IsSemicolon()
- || next->Is(CT_BRACE_OPEN))
- {
- hit_class = false;
- }
-
- if ( prev->Is(CT_SQUARE_OPEN)
- && prev->GetParentType() == CT_OC_MSG)
- {
- cs.Push_Back(prev);
- }
- else if ( next->Is(CT_SQUARE_CLOSE)
- && next->GetParentType() == CT_OC_MSG)
- {
- // pop until we hit '['
- while (!cs.Empty())
- {
- Chunk *t2 = cs.Top()->m_pc;
- cs.Pop_Back();
-
- if (t2->Is(CT_SQUARE_OPEN))
- {
- break;
- }
- }
- }
-
- if ( next->Is(CT_QUESTION)
- && !next->TestFlags(PCF_IN_TEMPLATE))
- {
- cs.Push_Back(next);
- }
- else if (next->Is(CT_CASE))
- {
- if (cur->Is(CT_GOTO))
- {
- // handle "goto case x;"
- next->SetType(CT_QUALIFIER);
- }
- else
- {
- hit_case = true;
- }
- }
- else if ( next->Is(CT_COLON)
- || ( next->Is(CT_OC_COLON)
- && cs_top_is_question(cs, next->GetLevel())))
- {
- if (cur->Is(CT_DEFAULT))
- {
- cur->SetType(CT_CASE);
- hit_case = true;
- }
-
- if ( cs_top_is_question(cs, next->GetLevel())
- && !cur->Is(CT_OC_MSG_NAME)
- && next->TestFlags(PCF_IN_CONDITIONAL)) // Issue #3558
- {
- //log_pcf_flags(LGUY, next->GetFlags());
- next->SetType(CT_COND_COLON);
- cs.Pop_Back();
- }
- else if (hit_case)
- {
- hit_case = false;
- next->SetType(CT_CASE_COLON);
- Chunk *tmp = next->GetNextNcNnlNpp(); // Issue #2150
-
- if (tmp->Is(CT_BRACE_OPEN))
- {
- tmp->SetParentType(CT_CASE);
- tmp = tmp->GetNextType(CT_BRACE_CLOSE, tmp->GetLevel());
-
- if (tmp->IsNotNullChunk())
- {
- tmp->SetParentType(CT_CASE);
- }
- }
-
- if ( cur->Is(CT_NUMBER)
- && prev->Is(CT_ELLIPSIS))
- {
- Chunk *pre_elipsis = prev->GetPrevNcNnlNpp();
-
- if (pre_elipsis->Is(CT_NUMBER))
- {
- prev->SetType(CT_CASE_ELLIPSIS);
- }
- }
- }
- else if (cur->TestFlags(PCF_IN_WHERE_SPEC))
- {
- /* leave colons in where-constraint clauses alone */
- }
- else
- {
- LOG_FMT(LFCN, "%s(%d): prev->Text() is '%s', orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol());
- LOG_FMT(LFCN, "%s(%d): cur->Text() is '%s', orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, cur->Text(), cur->GetOrigLine(), cur->GetOrigCol());
- LOG_FMT(LFCN, "%s(%d): next->Text() is '%s', orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, next->Text(), next->GetOrigLine(), next->GetOrigCol());
- Chunk *nextprev = chunk_get_prev_local(next); // Issue #2279
-
- if (nextprev == nullptr)
- {
- return;
- }
-
- if (language_is_set(LANG_PAWN))
- {
- if ( cur->Is(CT_WORD)
- || cur->Is(CT_BRACE_CLOSE))
- {
- E_Token new_type = CT_TAG;
-
- Chunk *tmp = next->GetNextNc();
-
- if (tmp->IsNullChunk())
- {
- return;
- }
-
- if ( prev->IsNewline()
- && tmp->IsNewline())
- {
- new_type = CT_LABEL;
- next->SetType(CT_LABEL_COLON);
- }
- else
- {
- next->SetType(CT_TAG_COLON);
- }
-
- if (cur->Is(CT_WORD))
- {
- cur->SetType(new_type);
- }
- }
- }
- else if (next->TestFlags(PCF_IN_ARRAY_ASSIGN))
- {
- next->SetType(CT_D_ARRAY_COLON);
- }
- else if (next->TestFlags(PCF_IN_FOR))
- {
- next->SetType(CT_FOR_COLON);
- }
- else if (next->TestFlags(PCF_OC_BOXED))
- {
- next->SetType(CT_OC_DICT_COLON);
- }
- else if (cur->Is(CT_WORD))
- {
- Chunk *tmp = next->GetNextNc(E_Scope::PREPROC);
-
- // Issue #1187
- if (tmp->IsNullChunk())
- {
- return;
- }
- LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu, tmp '%s': ",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(),
- (tmp->Is(CT_NEWLINE)) ? "<Newline>" : tmp->Text());
- log_pcf_flags(LGUY, tmp->GetFlags());
-
- if (next->TestFlags(PCF_IN_FCN_CALL))
- {
- // Must be a macro thingy, assume some sort of label
- next->SetType(CT_LABEL_COLON);
- }
- else if ( tmp->IsNullChunk()
- || ( tmp->IsNot(CT_NUMBER)
- && tmp->IsNot(CT_DECLTYPE)
- && tmp->IsNot(CT_SIZEOF)
- && tmp->GetParentType() != CT_SIZEOF
- && !tmp->GetFlags().test_any(PCF_IN_STRUCT | PCF_IN_CLASS))
- || tmp->Is(CT_NEWLINE))
- {
- /*
- * the CT_SIZEOF isn't great - test 31720 happens to use a sizeof expr,
- * but this really should be able to handle any constant expr
- */
- // Fix for #1242
- // For MIDL_INTERFACE classes class name is tokenized as Label.
- // Corrected the identification of Label in c style languages.
- if ( language_is_set(LANG_C | LANG_CPP | LANG_CS)
- && (!language_is_set(LANG_OC)))
- {
- Chunk *labelPrev = prev;
-
- if (labelPrev->Is(CT_NEWLINE))
- {
- labelPrev = prev->GetPrevNcNnlNi(); // Issue #2279
- }
-
- if ( labelPrev->IsNotNullChunk()
- && labelPrev->IsNot(CT_FPAREN_CLOSE))
- {
- cur->SetType(CT_LABEL);
- next->SetType(CT_LABEL_COLON);
- }
- }
- else
- {
- cur->SetType(CT_LABEL);
- next->SetType(CT_LABEL_COLON);
- }
- }
- else if (next->GetFlags().test_any(PCF_IN_STRUCT | PCF_IN_CLASS | PCF_IN_TYPEDEF))
- {
- next->SetType(CT_BIT_COLON);
-
- Chunk *nnext = next->GetNext();
-
- if (nnext->IsNullChunk())
- {
- return;
- }
-
- while ((nnext = nnext->GetNext())->IsNotNullChunk())
- {
- if (nnext->Is(CT_SEMICOLON))
- {
- break;
- }
-
- if (nnext->Is(CT_COLON))
- {
- nnext->SetType(CT_BIT_COLON);
- }
- }
- }
- }
- else if (nextprev->Is(CT_FPAREN_CLOSE))
- {
- LOG_FMT(LFCN, "%s(%d): nextprev->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, nextprev->Text(), nextprev->GetOrigLine(), nextprev->GetOrigCol(),
- get_token_name(nextprev->GetType()));
- LOG_FMT(LFCN, "%s(%d): next->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, next->Text(), next->GetOrigLine(), next->GetOrigCol(),
- get_token_name(next->GetType()));
-
- // Issue #2172
- if (next->GetParentType() == CT_FUNC_DEF)
- {
- LOG_FMT(LFCN, "%s(%d): it's a construct colon\n", __func__, __LINE__);
- // it's a construct colon
- next->SetType(CT_CONSTR_COLON);
- }
- else
- {
- LOG_FMT(LFCN, "%s(%d): it's a class colon\n", __func__, __LINE__);
- // it's a class colon
- next->SetType(CT_CLASS_COLON);
- }
- }
- else if (next->GetLevel() > next->GetBraceLevel())
- {
- // ignore it, as it is inside a paren
- }
- else if ( cur->Is(CT_TYPE)
- || cur->Is(CT_ENUM) // Issue #2584
- || nextprev->Is(CT_TYPE)
- || nextprev->Is(CT_ENUM)) // Issue #2584
- {
- next->SetType(CT_BIT_COLON);
- }
- else if ( cur->Is(CT_ENUM)
- || cur->Is(CT_ACCESS)
- || cur->Is(CT_QUALIFIER)
- || cur->GetParentType() == CT_ALIGN)
- {
- // ignore it - bit field, align or public/private, etc
- }
- else if ( cur->Is(CT_ANGLE_CLOSE)
- || hit_class)
- {
- // ignore it - template thingy
- }
- else if (cur->GetParentType() == CT_SQL_EXEC)
- {
- // ignore it - SQL variable name
- }
- else if (next->GetParentType() == CT_ASSERT)
- {
- // ignore it - Java assert thing
- }
- else if (next->GetParentType() == CT_STRUCT)
- {
- // ignore it
- }
- else
- {
- Chunk *tmp = next->GetNextNcNnl();
-
- //tmp = chunk_get_next_local(next);
- if (tmp->IsNotNullChunk())
- {
- LOG_FMT(LFCN, "%s(%d): tmp->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, tmp->Text(), tmp->GetOrigLine(), tmp->GetOrigCol(),
- get_token_name(tmp->GetType()));
-
- if ( tmp->Is(CT_BASE)
- || tmp->Is(CT_THIS))
- {
- // ignore it, as it is a C# base thingy
- }
- else if (language_is_set(LANG_CS | LANG_D))
- {
- // there should be a better solution for that
- }
- else
- {
- LOG_FMT(LWARN, "%s(%d): %s:%zu unexpected colon in col %zu n-parent=%s c-parent=%s l=%zu bl=%zu\n",
- __func__, __LINE__,
- cpd.filename.c_str(), next->GetOrigLine(), next->GetOrigCol(),
- get_token_name(next->GetParentType()),
- get_token_name(cur->GetParentType()),
- next->GetLevel(), next->GetBraceLevel());
- exit(EX_SOFTWARE);
- }
- }
- }
- }
- }
- prev = cur;
- cur = next;
- next = chunk_get_next_local(next);
- }
-} // combine_labels
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_skip.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_skip.cpp
deleted file mode 100644
index 878941ff..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_skip.cpp
+++ /dev/null
@@ -1,242 +0,0 @@
-/**
- * @file combine_skip.cpp
- *
- * @author Guy Maurel
- * @license GPL v2+
- * extract from combine.cpp
- */
-
-#include "combine_skip.h"
-
-#include "combine_tools.h"
-
-
-Chunk *skip_align(Chunk *start)
-{
- Chunk *pc = start;
-
- if (pc->Is(CT_ALIGN))
- {
- pc = pc->GetNextNcNnl();
-
- if (pc->Is(CT_PAREN_OPEN))
- {
- pc = pc->GetNextType(CT_PAREN_CLOSE, pc->GetLevel());
-
- if (pc->IsNotNullChunk())
- {
- pc = pc->GetNextNcNnl();
- }
-
- if (pc->Is(CT_COLON))
- {
- pc = pc->GetNextNcNnl();
- }
- }
- }
- return(pc);
-}
-
-
-Chunk *skip_expression(Chunk *pc)
-{
- return(skip_to_expression_end(pc)->GetNextNcNnl());
-}
-
-
-Chunk *skip_expression_rev(Chunk *pc)
-{
- return(skip_to_expression_start(pc)->GetPrevNcNnlNi());
-}
-
-
-static Chunk *skip_to_expression_edge(Chunk *pc, Chunk *(Chunk::*GetNextFn)(E_Scope scope)const)
-{
- Chunk *prev = pc;
-
- if (prev == nullptr)
- {
- prev = Chunk::NullChunkPtr;
- }
-
- if (prev->IsNotNullChunk())
- {
- std::size_t level = prev->GetLevel();
- Chunk *next = prev;
- std::size_t template_nest = get_cpp_template_angle_nest_level(prev);
-
- while ( next->IsNotNullChunk()
- && next->GetLevel() >= level)
- {
- /**
- * if we encounter a comma or semicolon at the level of the starting chunk,
- * return the current chunk
- */
- if ( next->GetLevel() == level
- && ( next->Is(CT_COMMA)
- || next->IsSemicolon()))
- {
- break;
- }
- /**
- * check the template nest level; if the current chunk's nest level
- * is less than that of the starting chunk, return the current chunk
- */
- auto next_template_nest = get_cpp_template_angle_nest_level(next);
-
- if (template_nest > next_template_nest)
- {
- break;
- }
- prev = next;
- next = (next->*GetNextFn)(E_Scope::PREPROC);
- }
- }
- return(prev);
-}
-
-
-Chunk *skip_to_expression_end(Chunk *pc)
-{
- return(skip_to_expression_edge(pc, &Chunk::GetNextNcNnl));
-}
-
-
-Chunk *skip_to_expression_start(Chunk *pc)
-{
- return(skip_to_expression_edge(pc, &Chunk::GetPrevNcNnlNi));
-}
-
-
-Chunk *skip_to_next_statement(Chunk *pc)
-{
- if (pc == nullptr)
- {
- pc = Chunk::NullChunkPtr;
- }
-
- while ( pc->IsNotNullChunk()
- && !pc->IsSemicolon()
- && pc->IsNot(CT_BRACE_OPEN)
- && pc->IsNot(CT_BRACE_CLOSE))
- {
- pc = pc->GetNextNcNnl();
- }
- return(pc);
-}
-
-
-Chunk *skip_template_prev(Chunk *ang_close)
-{
- if (ang_close->Is(CT_ANGLE_CLOSE))
- {
- Chunk *pc = ang_close->GetPrevType(CT_ANGLE_OPEN, ang_close->GetLevel());
- return(pc->GetPrevNcNnlNi()); // Issue #2279
- }
- return(ang_close);
-}
-
-
-Chunk *skip_tsquare_next(Chunk *ary_def)
-{
- if (ary_def == nullptr)
- {
- return(Chunk::NullChunkPtr);
- }
-
- if ( ary_def->Is(CT_SQUARE_OPEN)
- || ary_def->Is(CT_TSQUARE))
- {
- return(ary_def->GetNextNisq());
- }
- return(ary_def);
-}
-
-
-Chunk *skip_attribute(Chunk *attr)
-{
- Chunk *pc = attr;
-
- while (pc->Is(CT_ATTRIBUTE))
- {
- pc = pc->GetNextNcNnl();
-
- if (pc->Is(CT_FPAREN_OPEN))
- {
- pc = pc->GetNextType(CT_FPAREN_CLOSE, pc->GetLevel());
- }
- }
- return(pc);
-}
-
-
-Chunk *skip_attribute_next(Chunk *attr)
-{
- Chunk *next = skip_attribute(attr);
-
- if ( next != attr
- && next->Is(CT_FPAREN_CLOSE))
- {
- attr = next->GetNextNcNnl();
- }
-
- if (attr == nullptr)
- {
- return(Chunk::NullChunkPtr);
- }
- return(attr);
-}
-
-
-Chunk *skip_attribute_prev(Chunk *fp_close)
-{
- Chunk *pc = fp_close;
-
- while (true)
- {
- if ( pc->Is(CT_FPAREN_CLOSE)
- && pc->GetParentType() == CT_ATTRIBUTE)
- {
- pc = pc->GetPrevType(CT_ATTRIBUTE, pc->GetLevel());
- }
- else if (pc->IsNot(CT_ATTRIBUTE))
- {
- break;
- }
- pc = pc->GetPrevNcNnlNi(); // Issue #2279
-
- if (pc->IsNullChunk()) // Issue #3356
- {
- break;
- }
- }
- return(pc);
-}
-
-
-Chunk *skip_declspec(Chunk *pc)
-{
- if (pc->Is(CT_DECLSPEC))
- {
- pc = pc->GetNextNcNnl();
-
- if (pc->Is(CT_PAREN_OPEN))
- {
- pc = pc->GetClosingParen();
- }
- }
- return(pc);
-}
-
-
-Chunk *skip_declspec_next(Chunk *pc)
-{
- Chunk *next = skip_declspec(pc);
-
- if ( next != pc
- && next->Is(CT_PAREN_CLOSE))
- {
- pc = next->GetNextNcNnl();
- }
- return(pc);
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_tools.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_tools.cpp
deleted file mode 100644
index 7adafe68..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_tools.cpp
+++ /dev/null
@@ -1,581 +0,0 @@
-/**
- * @file combine_tools.cpp
- *
- * @author Guy Maurel
- * @license GPL v2+
- * extract from combine.cpp
- */
-
-#include "combine_tools.h"
-
-#include "unc_ctype.h"
-#include "uncrustify.h"
-
-
-bool can_be_full_param(Chunk *start, Chunk *end)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LFPARAM, "%s(%d): start->Text() is '%s', type is %s\n",
- __func__, __LINE__, start->Text(), get_token_name(start->GetType()));
- LOG_FMT(LFPARAM, "%s(%d): end->Text() is '%s', type is %s\n",
- __func__, __LINE__, end->Text(), get_token_name(end->GetType()));
-
- int word_count = 0;
- int type_count = 0;
- Chunk *pc = nullptr;
- Chunk *first_word = nullptr;
- bool first_word_set = false;
-
- for (pc = start;
- pc != nullptr && pc->IsNotNullChunk() && pc != end;
- pc = pc->GetNextNcNnl(E_Scope::PREPROC))
- {
- LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
-
- if ( pc->Is(CT_QUALIFIER)
- || pc->Is(CT_STRUCT)
- || pc->Is(CT_ENUM)
- || pc->Is(CT_UNION)
- || pc->Is(CT_TYPENAME))
- {
- LOG_FMT(LFPARAM, "%s(%d): <== %s! (yes)\n",
- __func__, __LINE__, get_token_name(pc->GetType()));
- return(true);
- }
-
- if ( pc->Is(CT_WORD)
- || pc->Is(CT_TYPE))
- {
- ++word_count;
-
- if (!first_word_set)
- {
- first_word = pc;
- first_word_set = true;
- }
-
- if (pc->Is(CT_TYPE))
- {
- ++type_count;
- }
- }
- else if ( pc->Is(CT_MEMBER)
- || pc->Is(CT_DC_MEMBER))
- {
- if (word_count > 0)
- {
- --word_count;
- }
- }
- else if ( pc != start
- && pc->IsPointerOperator())
- {
- // chunk is OK
- }
- else if (pc->Is(CT_ASSIGN))
- {
- // chunk is OK (default values)
- break;
- }
- else if (pc->Is(CT_ANGLE_OPEN))
- {
- LOG_FMT(LFPARAM, "%s(%d): <== template\n",
- __func__, __LINE__);
-
- return(true);
- }
- else if (pc->Is(CT_ELLIPSIS))
- {
- LOG_FMT(LFPARAM, "%s(%d): <== ellipsis\n",
- __func__, __LINE__);
-
- return(true);
- }
- else if ( word_count == 0
- && pc->Is(CT_PAREN_OPEN))
- {
- // Check for old-school func proto param '(type)'
- Chunk *tmp1 = pc->GetClosingParen(E_Scope::PREPROC);
-
- if (tmp1->IsNullChunk())
- {
- return(false);
- }
- Chunk *tmp2 = tmp1->GetNextNcNnl(E_Scope::PREPROC);
-
- if (tmp2->IsNullChunk())
- {
- return(false);
- }
-
- if ( tmp2->Is(CT_COMMA)
- || tmp2->IsParenClose())
- {
- do
- {
- pc = pc->GetNextNcNnl(E_Scope::PREPROC);
-
- if (pc->IsNullChunk())
- {
- return(false);
- }
- LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
- } while (pc != tmp1);
-
- // reset some vars to allow [] after parens
- word_count = 1;
- type_count = 1;
- }
- else
- {
- LOG_FMT(LFPARAM, "%s(%d): <== '%s' not fcn type!\n",
- __func__, __LINE__, get_token_name(pc->GetType()));
- return(false);
- }
- }
- else if ( ( word_count == 1
- || (word_count == type_count))
- && pc->Is(CT_PAREN_OPEN))
- {
- // Check for func proto param 'void (*name)' or 'void (*name)(params)' or 'void (^name)(params)'
- // <name> can be optional
- Chunk *tmp1 = pc->GetNextNcNnl(E_Scope::PREPROC);
-
- if (tmp1->IsNullChunk())
- {
- return(false);
- }
- Chunk *tmp2 = tmp1->GetNextNcNnl(E_Scope::PREPROC);
-
- if (tmp2->Is(CT_QUALIFIER))
- {
- // tmp2 is the "nullable" qualifier in this case:
- // void (^nullable name)(params)
- // skip the qualifier
- tmp2 = tmp2->GetNextNcNnl(E_Scope::PREPROC);
- }
-
- if (tmp2->IsNullChunk())
- {
- return(false);
- }
- Chunk *tmp3 = (tmp2->IsString(")")) ? tmp2 : tmp2->GetNextNcNnl(E_Scope::PREPROC);
-
- if (tmp3->IsNullChunk())
- {
- return(false);
- }
-
- if ( !tmp3->IsString(")")
- || !( tmp1->IsString("*")
- || tmp1->IsString("^")) // Issue #2656
- || !( tmp2->GetType() == CT_WORD
- || tmp2->IsString(")")))
- {
- LOG_FMT(LFPARAM, "%s(%d): <== '%s' not fcn type!\n",
- __func__, __LINE__, get_token_name(pc->GetType()));
- return(false);
- }
- LOG_FMT(LFPARAM, "%s(%d): <skip fcn type>\n",
- __func__, __LINE__);
-
- tmp1 = tmp3->GetNextNcNnl(E_Scope::PREPROC);
-
- if (tmp1->IsNullChunk())
- {
- return(false);
- }
-
- if (tmp1->IsString("("))
- {
- tmp3 = tmp1->GetClosingParen(E_Scope::PREPROC);
- }
- pc = tmp3;
- LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
-
- // reset some vars to allow [] after parens
- word_count = 1;
- type_count = 1;
- }
- else if (pc->Is(CT_TSQUARE))
- {
- // ignore it
- }
- else if ( word_count == 1
- && pc->Is(CT_SQUARE_OPEN))
- {
- // skip over any array stuff
- pc = pc->GetClosingParen(E_Scope::PREPROC);
- LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
- }
- else if ( word_count == 2
- && pc->Is(CT_SQUARE_OPEN))
- {
- // Bug #671: is it such as: bool foo[FOO_MAX]
- pc = pc->GetClosingParen(E_Scope::PREPROC);
- LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
- }
- else if ( word_count == 1
- && language_is_set(LANG_CPP)
- && pc->IsString("&&"))
- {
- // ignore possible 'move' operator
- }
- else
- {
- LOG_FMT(LFPARAM, "%s(%d): <== type is %s, no way!, type count is %d, word count is %d\n",
- __func__, __LINE__, get_token_name(pc->GetType()), type_count, word_count);
- return(false);
- }
- LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
- }
-
- Chunk *last = pc->GetPrevNcNnlNi(); // Issue #2279
-
- LOG_FMT(LFPARAM, "%s(%d): last->Text() is '%s', type is %s\n",
- __func__, __LINE__, last->Text(), get_token_name(last->GetType()));
-
- if (last->IsPointerOperator())
- {
- LOG_FMT(LFPARAM, "%s(%d): <== type is %s, sure!\n",
- __func__, __LINE__, get_token_name(last->GetType()));
- return(true);
- }
-
- if ( word_count < 2
- && type_count < 1
- && start->GetBraceLevel() > 0)
- {
- LOG_FMT(LFPARAM, "%s(%d): !MVP!\n",
- __func__, __LINE__);
- // Oh, joy, we are in Most Vexing Parse territory
- Chunk *brace =
- start->GetPrevType(CT_BRACE_OPEN, start->GetBraceLevel() - 1);
-
- if (brace->IsNotNullChunk())
- {
- LOG_FMT(LFPARAM, "%s(%d): (matching %s brace at orig line %zu, orig col is %zu)",
- __func__, __LINE__,
- get_token_name(brace->GetParentType()), brace->GetOrigLine(), brace->GetOrigCol());
- }
-
- if ( brace->IsNotNullChunk()
- && ( brace->GetParentType() == CT_CLASS
- || brace->GetParentType() == CT_STRUCT))
- {
- // A Most Vexing Parse variable declaration cannot occur in the body
- // of a struct/class, so we probably have a function prototype
- LOG_FMT(LFPARAM, "%s(%d): <== type is %s, Likely!\n",
- __func__, __LINE__, (pc == nullptr ? "nullptr" : get_token_name(pc->GetType())));
- return(true);
- }
- }
- LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', word_count is %d, type_count is %d\n",
- __func__, __LINE__, pc->Text(), word_count, type_count);
-
- if ( first_word != nullptr
- && first_word->IsNotNullChunk())
- {
- LOG_FMT(LFPARAM, "%s(%d): first_word->Text() is '%s'\n",
- __func__, __LINE__, first_word->Text());
- }
- bool ret = ( word_count >= 2
- || ( word_count == 1
- && type_count == 1));
-
- LOG_FMT(LFPARAM, "%s(%d): ret is %s\n",
- __func__, __LINE__, ret ? "TRUE" : "FALSE");
-
- LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', ",
- __func__, __LINE__, pc->Text());
- LOG_FMT(LFPARAM, "<== type is %s, ",
- (pc == nullptr ? "nullptr" : get_token_name(pc->GetType())));
-
- if (ret)
- {
- LOG_FMT(LFPARAM, "Yup!\n");
- }
- else
- {
- LOG_FMT(LFPARAM, "Unlikely!\n");
- }
- return(ret);
-} // can_be_full_param
-
-
-bool chunk_ends_type(Chunk *start)
-{
- LOG_FUNC_ENTRY();
- Chunk *pc = start;
- bool ret = false;
- size_t cnt = 0;
- bool last_expr = false;
- bool last_lval = false;
-
- bool a = pc->TestFlags(PCF_IN_FCN_CTOR);
-
- if (a)
- {
- return(false);
- }
-
- for ( ; pc->IsNotNullChunk(); pc = pc->GetPrevNcNnlNi()) // Issue #2279
- {
- LOG_FMT(LFTYPE, "%s(%d): type is %s, Text() '%s', orig line %zu, orig col %zu\n ",
- __func__, __LINE__, get_token_name(pc->GetType()), pc->Text(),
- pc->GetOrigLine(), pc->GetOrigCol());
- log_pcf_flags(LFTYPE, pc->GetFlags());
-
- if ( pc->Is(CT_WORD)
- || pc->Is(CT_TYPE)
- || pc->Is(CT_PTR_TYPE)
- || pc->Is(CT_STAR)
- || pc->Is(CT_STRUCT)
- || pc->Is(CT_DC_MEMBER)
- || pc->Is(CT_PP)
- || pc->Is(CT_QUALIFIER)
- || ( language_is_set(LANG_CPP | LANG_OC) // Issue #2727
- && pc->GetParentType() == CT_TEMPLATE
- && ( pc->Is(CT_ANGLE_OPEN)
- || pc->Is(CT_ANGLE_CLOSE)))
- || ( language_is_set(LANG_CS | LANG_VALA)
- && (pc->Is(CT_MEMBER))))
- {
- cnt++;
- last_expr = pc->TestFlags(PCF_EXPR_START)
- && !pc->TestFlags(PCF_IN_FCN_CALL);
- last_lval = pc->TestFlags(PCF_LVALUE);
- continue;
- }
- /* If a comma is encountered within a template, it must be
- * considered within the context of its immediate parent
- * template (i.e. argument list nest level)
- */
-
- if ( ( pc->IsSemicolon()
- && !pc->TestFlags(PCF_IN_FOR))
- || pc->Is(CT_TYPEDEF)
- || pc->Is(CT_BRACE_OPEN)
- || pc->IsBraceClose()
- || pc->Is(CT_FPAREN_CLOSE)
- || pc->IsOCForinOpenParen()
- || pc->Is(CT_MACRO)
- || pc->Is(CT_PP_IF)
- || pc->Is(CT_PP_ELSE)
- || pc->Is(CT_PP_ENDIF)
- || pc->GetParentType() == CT_PP_INCLUDE // Issue #3233
- || ( ( pc->Is(CT_COMMA)
- && !pc->TestFlags(PCF_IN_FCN_CALL)
- && get_cpp_template_angle_nest_level(start) ==
- get_cpp_template_angle_nest_level(pc))
- && last_expr)
- || ( pc->Is(CT_SPAREN_OPEN)
- && last_lval))
- {
- ret = cnt > 0;
- }
- break;
- }
-
- if (pc->IsNullChunk())
- {
- // first token
- ret = true;
- }
- LOG_FMT(LFTYPE, "%s(%d): first token verdict: %s\n",
- __func__, __LINE__, ret ? "yes" : "no");
-
- return(ret);
-} // chunk_ends_type
-
-
-bool chunkstack_match(ChunkStack &cs, Chunk *pc)
-{
- for (size_t idx = 0; idx < cs.Len(); idx++)
- {
- Chunk *tmp = cs.GetChunk(idx);
-
- if (pc->GetStr().equals(tmp->GetStr()))
- {
- return(true);
- }
- }
-
- return(false);
-} // chunkstack_match
-
-
-void flag_series(Chunk *start, Chunk *end, T_PcfFlags set_flags, T_PcfFlags clr_flags, E_Scope nav)
-{
- LOG_FUNC_ENTRY();
-
- while ( start != nullptr
- && start->IsNotNullChunk()
- && start != end)
- {
- start->UpdateFlagBits(clr_flags, set_flags);
- log_pcf_flags(LGUY, start->GetFlags());
-
- start = start->GetNext(nav);
-
- if (start->IsNullChunk())
- {
- return;
- }
- }
-
- if ( end != nullptr
- && end->IsNotNullChunk())
- {
- end->UpdateFlagBits(clr_flags, set_flags);
- log_pcf_flags(LGUY, end->GetFlags());
- }
-} // flag_series
-
-
-size_t get_cpp_template_angle_nest_level(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
- int nestLevel = 0;
-
- if (pc == nullptr)
- {
- pc = Chunk::NullChunkPtr;
- }
-
- while ( pc->IsNotNullChunk()
- && pc->TestFlags(PCF_IN_TEMPLATE))
- {
- if ( pc->Is(CT_ANGLE_CLOSE)
- && pc->GetParentType() == CT_TEMPLATE)
- {
- --nestLevel;
- }
- else if ( pc->Is(CT_ANGLE_OPEN)
- && pc->GetParentType() == CT_TEMPLATE)
- {
- ++nestLevel;
- }
- pc = pc->GetPrevNcNnlNi();
- }
- return(nestLevel <= 0 ? 0 : size_t(nestLevel));
-}
-
-
-Chunk *get_d_template_types(ChunkStack &cs, Chunk *open_paren)
-{
- LOG_FUNC_ENTRY();
- Chunk *tmp = open_paren->GetNextNcNnl();
- bool maybe_type = true;
-
- while ( tmp->IsNullChunk()
- && tmp->GetLevel() > open_paren->GetLevel())
- {
- if ( tmp->Is(CT_TYPE)
- || tmp->Is(CT_WORD))
- {
- if (maybe_type)
- {
- make_type(tmp);
- cs.Push_Back(tmp);
- }
- maybe_type = false;
- }
- else if (tmp->Is(CT_COMMA))
- {
- maybe_type = true;
- }
- tmp = tmp->GetNextNcNnl();
- }
- return(tmp);
-} // get_d_template_types
-
-
-bool go_on(Chunk *pc, Chunk *start)
-{
- if ( pc == nullptr
- || pc->IsNullChunk()
- || pc->GetLevel() != start->GetLevel())
- {
- return(false);
- }
-
- if (pc->TestFlags(PCF_IN_FOR))
- {
- return( (!pc->IsSemicolon())
- && (!(pc->Is(CT_COLON))));
- }
- return(!pc->IsSemicolon());
-} // go_on
-
-
-bool is_ucase_str(const char *str, size_t len)
-{
- while (len-- > 0)
- {
- if (unc_toupper(*str) != *str)
- {
- return(false);
- }
- str++;
- }
- return(true);
-} // is_ucase_str
-
-
-void make_type(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- if ( pc != nullptr
- && pc->IsNotNullChunk())
- {
- if (pc->Is(CT_WORD))
- {
- pc->SetType(CT_TYPE);
- }
- else if ( ( pc->IsStar()
- || pc->IsMsRef()
- || pc->IsNullable())
- && pc->GetPrev()->IsTypeDefinition()) // Issue # 2640
- {
- pc->SetType(CT_PTR_TYPE);
- }
- else if ( pc->IsAddress()
- && pc->GetPrev()->IsNot(CT_SQUARE_OPEN)) // Issue # 2166
- {
- pc->SetType(CT_BYREF);
- }
- }
-} // make_type
-
-
-Chunk *set_paren_parent(Chunk *start, E_Token parent_type)
-{
- LOG_FUNC_ENTRY();
- Chunk *end;
-
- end = start->GetClosingParen(E_Scope::PREPROC);
-
- if (end->IsNotNullChunk())
- {
- LOG_FMT(LFLPAREN, "%s(%d): %zu:%zu '%s' and %zu:%zu '%s' type is %s, parent type is %s",
- __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol(), start->Text(),
- end->GetOrigLine(), end->GetOrigCol(), end->Text(),
- get_token_name(start->GetType()), get_token_name(parent_type));
- log_func_stack_inline(LFLPAREN);
- start->SetParentType(parent_type);
- end->SetParentType(parent_type);
- LOG_FMT(LFLPAREN, "%s(%d):\n", __func__, __LINE__);
- return(end->GetNextNcNnl(E_Scope::PREPROC));
- }
- LOG_FMT(LFLPAREN, "%s(%d):\n", __func__, __LINE__);
- return(nullptr);
-} // set_paren_parent
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_tools.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_tools.h
deleted file mode 100644
index e18fe92a..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_tools.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * @file combine_tools.h
- *
- * @author Guy Maurel
- * @license GPL v2+
- * extract from combine.cpp
- */
-
-#ifndef COMBINE_TOOLS_H_INCLUDED
-#define COMBINE_TOOLS_H_INCLUDED
-
-#include "chunk.h"
-#include "ChunkStack.h"
-
-/**
- * Checks to see if a series of chunks could be a C++ parameter
- * FOO foo(5, &val);
- *
- * WORD means CT_WORD or CT_TYPE
- *
- * "WORD WORD" ==> true
- * "QUALIFIER ??" ==> true
- * "TYPE" ==> true
- * "WORD" ==> true
- * "WORD.WORD" ==> true
- * "WORD::WORD" ==> true
- * "WORD * WORD" ==> true
- * "WORD & WORD" ==> true
- * "NUMBER" ==> false
- * "STRING" ==> false
- * "OPEN PAREN" ==> false
- *
- * @param start the first chunk to look at
- * @param end the chunk after the last one to look at
- */
-bool can_be_full_param(Chunk *start, Chunk *end);
-
-
-//! Scan backwards to see if we might be on a type declaration
-bool chunk_ends_type(Chunk *start);
-
-
-bool chunkstack_match(ChunkStack &cs, Chunk *pc);
-
-
-///**
-// * Simply change any STAR to PTR_TYPE and WORD to TYPE
-// *
-// * @param start points to the open paren
-// */
-void fix_fcn_def_params(Chunk *pc);
-
-
-void flag_series(Chunk *start, Chunk *end, T_PcfFlags set_flags, T_PcfFlags clr_flags = {}, E_Scope nav = E_Scope::ALL);
-
-
-/*
- * Checks whether or not a given chunk has a parent cpp template,
- * and if so returns the associated angle bracket nest level
- * with respect to the root parent template; returns 0 if
- * the chunk is not part of a template parameter list
- */
-size_t get_cpp_template_angle_nest_level(Chunk *pc);
-
-
-/**
- * Parse off the types in the D template args, adds to cs
- * returns the close_paren
- */
-Chunk *get_d_template_types(ChunkStack &cs, Chunk *open_paren);
-
-
-//! help function for mark_variable_definition...
-bool go_on(Chunk *pc, Chunk *start);
-
-
-bool is_ucase_str(const char *str, size_t len);
-
-
-void make_type(Chunk *pc);
-
-Chunk *set_paren_parent(Chunk *start, E_Token parent);
-
-
-#endif /* COMBINE_TOOLS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/compat.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/compat.h
deleted file mode 100644
index 32fce459..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/compat.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * @file compat.h
- * prototypes for compat_xxx.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-#ifndef COMPAT_H_INCLUDED
-#define COMPAT_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-
-bool unc_getenv(const char *name, std::string &str);
-
-
-bool unc_homedir(std::string &home);
-
-
-/*
- * even if we prefer the format %zu, we have to change to %lu
- * to be runable under Windows
- */
-void convert_log_zu2lu(char *buf);
-
-#endif /* COMPAT_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/compat_win32.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/compat_win32.cpp
deleted file mode 100644
index e1617876..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/compat_win32.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- * @file compat_win32.cpp
- * Compatibility functions for win32
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#if defined (_WIN32) \
- && !defined (__CYGWIN__)
-
-#include "windows_compat.h"
-
-#include <cstdio>
-#include <string>
-
-
-bool unc_getenv(const char *name, std::string &str)
-{
- DWORD len = GetEnvironmentVariableA(name, NULL, 0);
- char *buf;
-
- if (len == 0)
- {
- if (GetLastError() == ERROR_ENVVAR_NOT_FOUND)
- {
- return(false);
- }
- }
- buf = (char *)malloc(len);
-
- if (buf)
- {
- len = GetEnvironmentVariableA(name, buf, len);
- }
- buf[len] = 0;
-
- str = buf;
- //printf("%s: name=%s len=%zu value=%s\n", __func__, name, len, str.c_str());
- free(buf);
-
- return(true);
-}
-
-
-bool unc_homedir(std::string &home)
-{
- if (unc_getenv("HOME", home))
- {
- return(true);
- }
-
- if (unc_getenv("USERPROFILE", home))
- {
- return(true);
- }
- std::string hd, hp;
-
- if ( unc_getenv("HOMEDRIVE", hd)
- && unc_getenv("HOMEPATH", hp))
- {
- home = hd + hp;
- return(true);
- }
- return(false);
-}
-
-
-void convert_log_zu2lu(char *fmt)
-{
- for (size_t i = 0; i < strlen(fmt); i++)
- {
- if ( (fmt[i] == '%')
- && (fmt[i + 1] == 'z')
- && (fmt[i + 2] == 'u'))
- {
- fmt[i + 1] = 'l';
- }
- }
-}
-
-#endif /* if defined(_WIN32) && !defined(__CYGWIN__) */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/detect.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/detect.cpp
deleted file mode 100644
index ec718e81..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/detect.cpp
+++ /dev/null
@@ -1,439 +0,0 @@
-/**
- * @file detect.cpp
- * Scans the parsed file and tries to determine options.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "detect.h"
-
-#include "prototypes.h"
-
-
-using namespace uncrustify;
-
-
-//! Detect spacing options
-static void detect_space_options();
-
-
-class sp_votes
-{
-protected:
- size_t m_add = 0;
- size_t m_remove = 0;
- size_t m_force = 0;
- Option<iarf_e> &m_option;
-
-public:
- sp_votes(Option<iarf_e> &opt)
- : m_option(opt)
- {}
-
- //! Figure out the result of the vote and maybe update *m_av
- ~sp_votes();
-
- void vote(Chunk *first, Chunk *second);
-};
-
-
-void sp_votes::vote(Chunk *first, Chunk *second)
-{
- if ( first == nullptr
- || first->IsNewline()
- || second == nullptr
- || second->IsNewline())
- {
- return;
- }
- int col_dif = second->GetColumn() - (first->GetColumn() + first->Len());
-
- if (col_dif == 0)
- {
- m_remove++;
- }
- else if (col_dif == 1)
- {
- m_force++;
- }
- else
- {
- m_add++;
- }
-}
-
-
-//! Figure out the result of the vote and maybe update *m_av
-sp_votes::~sp_votes()
-{
- // no change if no items were added
- if ( m_remove == 0
- && m_add == 0
- && m_force == 0)
- {
- return;
- }
-
- if (m_remove == 0)
- {
- m_option = (m_force > m_add) ? IARF_FORCE : IARF_ADD;
- }
- else if ( m_force == 0
- && m_add == 0)
- {
- m_option = IARF_REMOVE;
- }
- else
- {
- // nothing conclusive. do not alter.
- }
-}
-
-
-// generates "vote_sp_xxx" variable name from uncrustify option name "UO_xxx"
-#define SP_VOTE_VAR(x) sp_votes vote_ ## x(options::x)
-
-
-static void detect_space_options()
-{
- SP_VOTE_VAR(sp_arith);
- SP_VOTE_VAR(sp_before_assign);
- SP_VOTE_VAR(sp_after_assign);
- SP_VOTE_VAR(sp_enum_before_assign);
- SP_VOTE_VAR(sp_enum_after_assign);
- SP_VOTE_VAR(sp_bool);
- SP_VOTE_VAR(sp_compare);
- SP_VOTE_VAR(sp_inside_paren);
- SP_VOTE_VAR(sp_paren_paren);
- SP_VOTE_VAR(sp_paren_brace);
- SP_VOTE_VAR(sp_before_ptr_star);
- SP_VOTE_VAR(sp_before_unnamed_ptr_star);
- SP_VOTE_VAR(sp_between_ptr_star);
- SP_VOTE_VAR(sp_after_ptr_star);
- SP_VOTE_VAR(sp_after_byref);
- SP_VOTE_VAR(sp_before_byref);
- SP_VOTE_VAR(sp_before_unnamed_byref);
- SP_VOTE_VAR(sp_after_type);
- SP_VOTE_VAR(sp_template_angle);
- SP_VOTE_VAR(sp_before_angle);
- SP_VOTE_VAR(sp_inside_angle);
- SP_VOTE_VAR(sp_after_angle);
- SP_VOTE_VAR(sp_angle_paren);
- SP_VOTE_VAR(sp_angle_word);
- SP_VOTE_VAR(sp_before_square);
- SP_VOTE_VAR(sp_before_squares);
- SP_VOTE_VAR(sp_inside_square);
- SP_VOTE_VAR(sp_before_sparen);
- SP_VOTE_VAR(sp_inside_sparen);
- SP_VOTE_VAR(sp_after_sparen);
- SP_VOTE_VAR(sp_sparen_brace);
- SP_VOTE_VAR(sp_special_semi);
- SP_VOTE_VAR(sp_before_semi);
- SP_VOTE_VAR(sp_before_semi_for);
- SP_VOTE_VAR(sp_before_semi_for_empty);
- SP_VOTE_VAR(sp_after_semi_for_empty);
- SP_VOTE_VAR(sp_after_comma);
- SP_VOTE_VAR(sp_before_comma);
- SP_VOTE_VAR(sp_after_class_colon);
- SP_VOTE_VAR(sp_before_class_colon);
- SP_VOTE_VAR(sp_inside_braces);
- SP_VOTE_VAR(sp_inside_braces_empty);
- SP_VOTE_VAR(sp_else_brace);
- SP_VOTE_VAR(sp_brace_else);
- SP_VOTE_VAR(sp_catch_brace);
- SP_VOTE_VAR(sp_brace_catch);
- SP_VOTE_VAR(sp_finally_brace);
- SP_VOTE_VAR(sp_brace_finally);
- SP_VOTE_VAR(sp_try_brace);
- SP_VOTE_VAR(sp_getset_brace);
-
- Chunk *prev = Chunk::GetHead();
- Chunk *pc = prev->GetNext();
- Chunk *next;
-
- while (pc->IsNotNullChunk())
- {
- next = pc->GetNext();
-
- if (next->IsNullChunk())
- {
- break;
- }
-
- if ( pc->Is(CT_ARITH)
- || pc->Is(CT_SHIFT))
- {
- vote_sp_arith.vote(pc, next);
- vote_sp_arith.vote(prev, pc);
- }
-
- if (pc->Is(CT_ASSIGN))
- {
- if (!pc->TestFlags(PCF_IN_ENUM))
- {
- vote_sp_before_assign.vote(prev, pc);
- vote_sp_after_assign.vote(pc, next);
- }
- else
- {
- vote_sp_enum_before_assign.vote(prev, pc);
- vote_sp_enum_after_assign.vote(pc, next);
- }
- }
-
- if (pc->Is(CT_SQUARE_OPEN))
- {
- vote_sp_before_square.vote(prev, pc);
- vote_sp_inside_square.vote(pc, next);
- }
-
- if (pc->Is(CT_SQUARE_CLOSE))
- {
- vote_sp_inside_square.vote(prev, pc);
- }
-
- if (pc->Is(CT_TSQUARE))
- {
- vote_sp_before_squares.vote(prev, pc);
- }
-
- if (pc->Is(CT_BOOL))
- {
- vote_sp_bool.vote(prev, pc);
- vote_sp_bool.vote(pc, next);
- }
-
- if (pc->Is(CT_COMPARE))
- {
- vote_sp_compare.vote(prev, pc);
- vote_sp_compare.vote(pc, next);
- }
-
- if (pc->Is(CT_PAREN_CLOSE))
- {
- vote_sp_inside_paren.vote(prev, pc);
- }
-
- if (pc->Is(CT_PAREN_OPEN))
- {
- vote_sp_inside_paren.vote(pc, next);
- }
-
- if ( ( pc->IsParenOpen()
- && next->IsParenOpen())
- || ( pc->IsParenClose()
- && next->IsParenClose()))
- {
- vote_sp_paren_paren.vote(pc, next);
- }
-
- if ( pc->IsParenClose()
- && next->Is(CT_BRACE_OPEN))
- {
- vote_sp_paren_brace.vote(pc, next);
- }
-
- if (pc->Is(CT_PTR_TYPE))
- {
- if (prev->Is(CT_PTR_TYPE))
- {
- vote_sp_between_ptr_star.vote(prev, pc);
- }
- else if (next->IsNot(CT_WORD))
- {
- vote_sp_before_unnamed_ptr_star.vote(prev, pc);
- }
- else
- {
- vote_sp_before_ptr_star.vote(prev, pc);
- }
-
- if (CharTable::IsKw1(next->GetStr()[0]))
- {
- vote_sp_after_ptr_star.vote(pc, next);
- }
- }
-
- if (pc->Is(CT_BYREF))
- {
- if (next->IsNot(CT_WORD))
- {
- vote_sp_before_unnamed_byref.vote(prev, pc);
- }
- else
- {
- vote_sp_before_byref.vote(prev, pc);
- }
- vote_sp_after_byref.vote(pc, next);
- }
-
- if ( pc->IsNot(CT_PTR_TYPE)
- && ( prev->Is(CT_QUALIFIER)
- || prev->Is(CT_TYPE)))
- {
- vote_sp_after_type.vote(prev, pc);
- }
-
- if (pc->Is(CT_ANGLE_OPEN))
- {
- vote_sp_inside_angle.vote(pc, next);
-
- if (prev->Is(CT_TEMPLATE))
- {
- vote_sp_template_angle.vote(prev, pc);
- }
- else
- {
- vote_sp_before_angle.vote(prev, pc);
- }
- }
-
- if (pc->Is(CT_ANGLE_CLOSE))
- {
- vote_sp_inside_angle.vote(prev, pc);
-
- if (next->IsParenOpen())
- {
- vote_sp_angle_paren.vote(prev, pc);
- }
- else if ( next->Is(CT_WORD)
- || CharTable::IsKw1(next->GetStr()[0]))
- {
- vote_sp_angle_word.vote(prev, pc);
- }
- else
- {
- vote_sp_after_angle.vote(pc, next);
- }
- }
-
- if (pc->Is(CT_SPAREN_OPEN))
- {
- vote_sp_before_sparen.vote(prev, pc);
- vote_sp_inside_sparen.vote(pc, next);
- }
-
- if (pc->Is(CT_SPAREN_CLOSE))
- {
- vote_sp_inside_sparen.vote(prev, pc);
-
- if (next->Is(CT_BRACE_OPEN))
- {
- vote_sp_sparen_brace.vote(pc, next);
- }
- else
- {
- vote_sp_after_sparen.vote(pc, next);
- }
- }
-
- if (pc->Is(CT_SEMICOLON))
- {
- if (pc->GetParentType() == CT_FOR)
- {
- if (prev->Is(CT_SPAREN_OPEN))
- {
- // empty, ie for (;;)
- // ^ is prev
- // ^ is pc
- vote_sp_before_semi_for_empty.vote(prev, pc);
- }
- else if (next->Is(CT_SPAREN_CLOSE))
- {
- // empty, ie for (;;)
- // ^ is pc
- // ^ is next
- vote_sp_after_semi_for_empty.vote(pc, next);
- }
- else if (prev->IsNot(CT_SEMICOLON))
- {
- // empty, ie for (; i < 8;)
- // ^ is pc
- // or
- // ^ is prev
- vote_sp_before_semi_for.vote(prev, pc);
- }
- }
- else if (prev->Is(CT_VBRACE_OPEN))
- {
- vote_sp_special_semi.vote(prev->GetPrev(), pc);
- }
- else
- {
- vote_sp_before_semi.vote(prev, pc);
- }
- }
-
- if (pc->Is(CT_COMMA))
- {
- vote_sp_before_comma.vote(prev, pc);
- vote_sp_after_comma.vote(pc, next);
- }
-
- if (pc->Is(CT_CLASS_COLON))
- {
- vote_sp_before_class_colon.vote(prev, pc);
- vote_sp_after_class_colon.vote(pc, next);
- }
-
- if (pc->Is(CT_BRACE_OPEN))
- {
- if (prev->Is(CT_ELSE))
- {
- vote_sp_else_brace.vote(prev, pc);
- }
- else if (prev->Is(CT_CATCH))
- {
- vote_sp_catch_brace.vote(prev, pc);
- }
- else if (prev->Is(CT_FINALLY))
- {
- vote_sp_catch_brace.vote(prev, pc);
- }
- else if (prev->Is(CT_TRY))
- {
- vote_sp_catch_brace.vote(prev, pc);
- }
- else if (prev->Is(CT_GETSET))
- {
- vote_sp_catch_brace.vote(prev, pc);
- }
-
- if (next->Is(CT_BRACE_CLOSE))
- {
- vote_sp_inside_braces_empty.vote(pc, next);
- }
- else
- {
- vote_sp_inside_braces.vote(pc, next);
- }
- }
-
- if (pc->Is(CT_BRACE_CLOSE))
- {
- vote_sp_inside_braces.vote(prev, pc);
-
- if (next->Is(CT_ELSE))
- {
- vote_sp_brace_else.vote(pc, next);
- }
- else if (next->Is(CT_CATCH))
- {
- vote_sp_brace_catch.vote(pc, next);
- }
- else if (next->Is(CT_FINALLY))
- {
- vote_sp_brace_finally.vote(pc, next);
- }
- }
- prev = pc;
- pc = next;
- }
-} // detect_space_options
-
-
-void detect_options()
-{
- detect_space_options();
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/detect.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/detect.h
deleted file mode 100644
index 77169322..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/detect.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * @file detect.h
- * prototypes for detect.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-#ifndef DETECT_H_INCLUDED
-#define DETECT_H_INCLUDED
-
-
-//! Call all the detect_xxxx() functions
-void detect_options();
-
-
-#endif /* DETECT_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_cleanup.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_cleanup.cpp
deleted file mode 100644
index d44d5799..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_cleanup.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- * @file enum_cleanup.cpp
- * works on the last comma within enum
- *
- * @author Guy Maurel Juli 2018
- * @license GPL v2+
- */
-
-#include "enum_cleanup.h"
-
-#include "log_rules.h"
-
-constexpr static auto LCURRENT = LTOK;
-
-using namespace uncrustify;
-
-
-void enum_cleanup()
-{
- LOG_FUNC_ENTRY();
-
- log_rule_B("mod_enum_last_comma");
-
- if (options::mod_enum_last_comma() == IARF_IGNORE)
- {
- // nothing to do
- return;
- }
- Chunk *pc = Chunk::GetHead(); // Issue #858
-
- while (pc->IsNotNullChunk())
- {
- if ( pc->GetParentType() == CT_ENUM
- && pc->Is(CT_BRACE_CLOSE))
- {
- LOG_FMT(LTOK, "%s(%d): orig line is %zu, type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), get_token_name(pc->GetType()));
- Chunk *prev = pc->GetPrevNcNnl(); // Issue #3604
-
- if ( prev != nullptr
- && prev->IsNotNullChunk())
- {
- if (prev->Is(CT_COMMA))
- {
- log_rule_B("mod_enum_last_comma");
-
- if (options::mod_enum_last_comma() == IARF_REMOVE)
- {
- Chunk::Delete(prev);
- }
- }
- else
- {
- if (prev->Is(CT_BRACE_OPEN)) // Issue #2902
- {
- // nothing between CT_BRACE_OPEN and CT_BRACE_CLOSE
- }
- else
- {
- log_rule_B("mod_enum_last_comma");
-
- if ( options::mod_enum_last_comma() == IARF_ADD
- || options::mod_enum_last_comma() == IARF_FORCE)
- {
- // create a comma
- Chunk comma;
- comma.SetType(CT_COMMA);
- comma.SetOrigLine(prev->GetOrigLine());
- comma.SetOrigCol(prev->GetOrigCol() + 1);
- comma.SetNlCount(0);
- comma.SetPpLevel(0);
- comma.SetFlags(PCF_NONE);
- comma.Str() = ",";
-
- if (prev->Is(CT_PP_ENDIF)) // Issue #3604
- {
- prev = prev->GetPrevNcNnlNpp();
- }
-
- if (prev->Is(CT_COMMA)) // Issue #3604
- {
- // nothing to do
- }
- else
- {
- comma.CopyAndAddAfter(prev);
- }
- pc = pc->GetNext();
- }
- }
- }
- }
- }
- pc = pc->GetNext();
- }
-} // enum_cleanup
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_parens.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_parens.cpp
deleted file mode 100644
index c435710a..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_parens.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * @file flag_parens.cpp
- *
- * @author Guy Maurel
- * @license GPL v2+
- */
-
-#include "flag_parens.h"
-
-#include "uncrustify.h"
-
-
-Chunk *flag_parens(Chunk *po, T_PcfFlags flags, E_Token opentype, E_Token parent_type, bool parent_all)
-{
- LOG_FUNC_ENTRY();
- Chunk *paren_close;
-
- paren_close = po->GetClosingParen(E_Scope::PREPROC);
-
- if (paren_close->IsNullChunk())
- {
- LOG_FMT(LERR, "%s(%d): no match for '%s' at [%zu:%zu]",
- __func__, __LINE__, po->Text(), po->GetOrigLine(), po->GetOrigCol());
- log_func_stack_inline(LERR);
- exit(EX_SOFTWARE);
- }
- LOG_FMT(LFLPAREN, "%s(%d): between po is '%s', orig line is %zu, orig col is %zu, and\n",
- __func__, __LINE__, po->Text(), po->GetOrigLine(), po->GetOrigCol());
- LOG_FMT(LFLPAREN, "%s(%d): paren_close is '%s', orig line is %zu, orig col is %zu, type is %s, parent type is %s\n",
- __func__, __LINE__, paren_close->Text(), paren_close->GetOrigLine(), paren_close->GetOrigCol(),
- get_token_name(opentype), get_token_name(parent_type));
- log_func_stack_inline(LFLPAREN);
-
- // the last chunk must be also modified. Issue #2149
- Chunk *after_paren_close = paren_close->GetNext();
-
- if (po != paren_close)
- {
- if ( flags != PCF_NONE
- || ( parent_all
- && parent_type != CT_NONE))
- {
- Chunk *pc;
-
- for (pc = po->GetNext(E_Scope::PREPROC);
- pc != nullptr && pc->IsNotNullChunk() && pc != after_paren_close;
- pc = pc->GetNext(E_Scope::PREPROC))
- {
- pc->SetFlagBits(flags);
-
- if (parent_all)
- {
- pc->SetParentType(parent_type);
- }
- }
- }
-
- if (opentype != CT_NONE)
- {
- po->SetType(opentype);
- paren_close->SetType((E_Token)(opentype + 1));
- }
-
- if (parent_type != CT_NONE)
- {
- po->SetParentType(parent_type);
- paren_close->SetParentType(parent_type);
- }
- }
- return(paren_close->GetNextNcNnl(E_Scope::PREPROC));
-} // flag_parens
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_parens.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_parens.h
deleted file mode 100644
index 220eb127..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_parens.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * @file flag_parens.h
- *
- * @author Guy Maurel
- * @license GPL v2+
- */
-
-#ifndef FLAG_PARENS_H_INCLUDED
-#define FLAG_PARENS_H_INCLUDED
-
-#include "chunk.h"
-
-
-/**
- * Flags everything from the open paren to the close paren.
- *
- * @param po Pointer to the open parenthesis
- * @param flags flags to add
- * @param opentype
- * @param parenttype
- * @param parent_all
- *
- * @return The token after the close paren
- */
-Chunk *flag_parens(Chunk *po, T_PcfFlags flags, E_Token opentype, E_Token parenttype, bool parent_all);
-
-
-#endif /* FLAG_PARENS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/frame_list.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/frame_list.cpp
deleted file mode 100644
index da94ba2f..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/frame_list.cpp
+++ /dev/null
@@ -1,345 +0,0 @@
-/**
- * @file frame_list.cpp
- * mainly used to handle preprocessor stuff
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "frame_list.h"
-
-#include "prototypes.h"
-
-
-namespace
-{
-
-void fl_log_frms(log_sev_t logsev, const char *txt, const ParseFrame &frm, const std::vector<ParseFrame> &frames);
-
-
-//! Logs the entire parse frame stack
-void fl_log_all(log_sev_t logsev, const std::vector<ParseFrame> &frames);
-
-
-/**
- * Copy the top element of the frame list into the ParseFrame.
- *
- * If the frame list is empty nothing happens.
- *
- * This is called on #else and #elif.
- */
-void fl_copy_tos(ParseFrame &pf, const std::vector<ParseFrame> &frames);
-
-
-/**
- * Copy the 2nd top element off the list into the ParseFrame.
- * This is called on #else and #elif.
- * The stack contains [...] [base] [if] at this point.
- * We want to copy [base].
- */
-void fl_copy_2nd_tos(ParseFrame &pf, const std::vector<ParseFrame> &frames);
-
-
-//! Deletes the top element from the list.
-void fl_trash_tos(std::vector<ParseFrame> &frames);
-
-
-//! Logs one parse frame
-void fl_log(log_sev_t logsev, const ParseFrame &frm)
-{
- LOG_FMT(logsev, "[%s] BrLevel=%zu Level=%zu PseTos=%zu\n",
- get_token_name(frm.in_ifdef), frm.brace_level, frm.level, frm.size() - 1);
-
- LOG_FMT(logsev, " *");
-
- for (size_t idx = 1; idx < frm.size(); idx++)
- {
- LOG_FMT(logsev, " [%s-%s]", get_token_name(frm.at(idx).type),
- get_brace_stage_name(frm.at(idx).stage));
- }
-
- LOG_FMT(logsev, "\n");
-}
-
-
-void fl_log_frms(log_sev_t logsev,
- const char *txt,
- const ParseFrame &frm,
- const std::vector<ParseFrame> &frames)
-{
- LOG_FMT(logsev, "%s Parse Frames(%zu):", txt, frames.size());
-
- for (const auto &frame : frames)
- {
- LOG_FMT(logsev, " [%s-%zu]", get_token_name(frame.in_ifdef),
- frame.ref_no);
- }
-
- LOG_FMT(logsev, "-[%s-%zu]\n", get_token_name(frm.in_ifdef), frm.ref_no);
-}
-
-
-void fl_log_all(log_sev_t logsev, const std::vector<ParseFrame> &frames)
-{
- LOG_FMT(logsev, "##=- Parse Frame : %zu entries\n", frames.size());
-
- for (size_t idx = 0; idx < frames.size(); idx++)
- {
- LOG_FMT(logsev, "## idx is %zu, ", idx);
-
- fl_log(logsev, frames.at(idx));
- }
-
- LOG_FMT(logsev, "##=-\n");
-}
-
-
-void fl_copy_tos(ParseFrame &pf, const std::vector<ParseFrame> &frames)
-{
- if (!frames.empty())
- {
- pf = *std::prev(std::end(frames));
- }
- LOG_FMT(LPF, "%s(%d): frame_count is %zu\n", __func__, __LINE__, frames.size());
-}
-
-
-void fl_copy_2nd_tos(ParseFrame &pf, const std::vector<ParseFrame> &frames)
-{
- if (frames.size() > 1)
- {
- pf = *std::prev(std::end(frames), 2);
- }
- LOG_FMT(LPF, "%s(%d): frame_count is %zu\n", __func__, __LINE__, frames.size());
-}
-
-
-void fl_trash_tos(std::vector<ParseFrame> &frames)
-{
- if (!frames.empty())
- {
- frames.pop_back();
- }
- LOG_FMT(LPF, "%s(%d): frame_count is %zu\n", __func__, __LINE__, frames.size());
-}
-
-} // namespace
-
-
-void fl_push(std::vector<ParseFrame> &frames, ParseFrame &frm)
-{
- static int ref_no = 1;
-
- frames.push_back(frm);
- frm.ref_no = ref_no++;
-
- LOG_FMT(LPF, "%s(%d): frame_count is %zu\n", __func__, __LINE__, frames.size());
-}
-
-
-void fl_pop(std::vector<ParseFrame> &frames, ParseFrame &pf)
-{
- if (frames.empty())
- {
- return;
- }
- fl_copy_tos(pf, frames);
- fl_trash_tos(frames);
-}
-
-
-int fl_check(std::vector<ParseFrame> &frames, ParseFrame &frm, int &pp_level, Chunk *pc)
-{
- if (pc->IsNot(CT_PREPROC))
- {
- return(pp_level);
- }
- Chunk *next = pc->GetNext();
-
- if (next->IsNullChunk())
- {
- return(pp_level);
- }
-
- if (pc->GetParentType() != next->GetType())
- {
- LOG_FMT(LNOTE, "%s(%d): Preproc parent not set correctly on orig line %zu: got %s expected %s\n",
- __func__, __LINE__, pc->GetOrigLine(), get_token_name(pc->GetParentType()),
- get_token_name(next->GetType()));
- pc->SetParentType(next->GetType());
- }
- LOG_FMT(LPFCHK, "%s(%d): orig line is %zu, %s\n",
- __func__, __LINE__, pc->GetOrigLine(), get_token_name(pc->GetParentType()));
- fl_log_frms(LPFCHK, "TOP", frm, frames);
-
-
- int out_pp_level = pp_level;
- const E_Token in_ifdef = frm.in_ifdef;
- const size_t b4_cnt = frames.size();
-
- const char *txt = nullptr;
-
- if (pc->TestFlags(PCF_IN_PREPROC))
- {
- LOG_FMT(LPF, " <In> ");
- fl_log(LPF, frm);
-
- if (pc->GetParentType() == CT_PP_IF)
- {
- // An #if pushes a copy of the current frame on the stack
- pp_level++;
- fl_push(frames, frm);
- frm.in_ifdef = CT_PP_IF;
- txt = "if-push";
- }
- else if (pc->GetParentType() == CT_PP_ELSE)
- {
- if (out_pp_level == 0)
- {
- fprintf(stderr, "%s(%d): pp level is ZERO, cannot be decremented, at line %zu, column %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- out_pp_level--;
-
- /*
- * For #else of #elif, we want to keep the #if part and throw out the
- * else parts.
- * We check to see what the top type is to see if we just push or
- * pop and then push.
- * We need to use the copy right before the if.
- */
- bool if_block = false;
-
- if (frm.in_ifdef == CT_PP_IF)
- {
- // we have [...] [base]-[if], so push an [else]
- fl_push(frames, frm);
- frm.in_ifdef = CT_PP_ELSE;
- if_block = true;
- }
- size_t brace_level = frm.brace_level;
- // we have [...] [base] [if]-[else], copy [base] over [else]
- fl_copy_2nd_tos(frm, frames);
- frm.in_ifdef = CT_PP_ELSE;
-
- if (if_block)
- {
- // check if #if block was unbalanced
- size_t base_brace_level = frames[frames.size() - 2].brace_level;
-
- if ( options::pp_warn_unbalanced_if()
- && brace_level != base_brace_level)
- {
- LOG_FMT(LWARN, "%s(%d): orig line is %zu, unbalanced #if block braces (1), in-level is %zu, out-level is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), base_brace_level, brace_level);
- }
- }
- else
- {
- // check if previous #else block has a different indentation than the corresponding #if block
- size_t if_brace_level = frames[frames.size() - 1].brace_level;
-
- if ( options::pp_warn_unbalanced_if()
- && brace_level != if_brace_level)
- {
- LOG_FMT(LWARN, "%s(%d): orig line is %zu, unbalanced #if-#else block braces (1), #else out-level is %zu, #if out-level is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), brace_level, if_brace_level);
- }
- }
- txt = "else-push";
- }
- else if (pc->GetParentType() == CT_PP_ENDIF)
- {
- /*
- * we may have [...] [base] [if]-[else] or [...] [base]-[if].
- * Throw out the [else].
- */
- if (pp_level == 0)
- {
- // cpd.pp_level is ZERO, cannot be decremented.
- fprintf(stderr, "%s(%d): #endif found, at line %zu, column %zu, without corresponding #if\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- pp_level--;
-
- if (out_pp_level == 0)
- {
- fprintf(stderr, "%s(%d): pp level is ZERO, cannot be decremented, at line %zu, column %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- out_pp_level--;
-
- if (frm.in_ifdef == CT_PP_ELSE)
- {
- size_t brace_level = frm.brace_level; // brace level or current #else block
- /*
- * We have: [...] [base] [if]-[else]
- * We want: [...]-[if]
- */
- fl_copy_tos(frm, frames); // [...] [base] [if]-[if]
-
- if ( options::pp_warn_unbalanced_if()
- && brace_level != frm.brace_level)
- {
- LOG_FMT(LWARN, "%s(%d): orig line is %zu, unbalanced #if-#else block braces (2), #else out-level is %zu, #if out-level is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), brace_level, frm.brace_level);
- }
-
- if (frames.size() < 2)
- {
- fprintf(stderr, "Number of 'frame' is too small.\n");
- fprintf(stderr, "Please make a report.\n");
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- frm.in_ifdef = frames[frames.size() - 2].in_ifdef;
- fl_trash_tos(frames); // [...] [base]-[if]
- fl_trash_tos(frames); // [...]-[if]
-
- txt = "endif-trash/pop";
- }
- else if (frm.in_ifdef == CT_PP_IF)
- {
- /*
- * We have: [...] [base] [if]
- * We want: [...] [base]
- */
- // check if #if block was unbalanced
- size_t brace_level = frm.brace_level;
- fl_pop(frames, frm);
-
- if ( options::pp_warn_unbalanced_if()
- && brace_level != frm.brace_level)
- {
- LOG_FMT(LWARN, "%s(%d): orig line is %zu, unbalanced #if block braces (2), in-level is %zu, out-level is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), frm.brace_level, brace_level);
- }
- txt = "endif-pop";
- }
- else
- {
- txt = "???";
- }
- }
- }
-
- if (txt != nullptr)
- {
- LOG_FMT(LPF, "%s(%d): orig line is %zu, type is %s: %s in_ifdef is %s/%s, counts is %zu, frame_count is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(),
- get_token_name(pc->GetParentType()), txt, get_token_name(in_ifdef),
- get_token_name(frm.in_ifdef), b4_cnt, frames.size());
- fl_log_all(LPF, frames);
- LOG_FMT(LPF, " <Out>");
- fl_log(LPF, frm);
- }
- fl_log_frms(LPFCHK, "END", frm, frames);
-
- return(out_pp_level);
-} // fl_check
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/frame_list.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/frame_list.h
deleted file mode 100644
index 5fd09a52..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/frame_list.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * @file frame_list.h
- * mainly used to handle preprocessor stuff
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef PARSE_FRAME_H_INCLUDED
-#define PARSE_FRAME_H_INCLUDED
-
-#include "ParseFrame.h"
-#include "uncrustify_types.h"
-
-
-/**
- * Push a copy of a ParseFrame onto the frames list.
- * This is called on #if and #ifdef.
- */
-void fl_push(std::vector<ParseFrame> &frames, ParseFrame &frm);
-
-
-/**
- * Pop the top element off the frame list and copy it into the ParseFrame.
- *
- * Does nothing if the frame list is empty.
- *
- * This is called on #endif
- */
-void fl_pop(std::vector<ParseFrame> &frames, ParseFrame &pf);
-
-
-// TODO: this name is dumb:
-// - what is it checking?
-// - why does is much more than simple checks, it allters kinds of stuff
-//! Returns the pp_indent to use for this line
-int fl_check(std::vector<ParseFrame> &frames, ParseFrame &frm, int &pp_level, Chunk *pc);
-
-
-#endif /* PARSE_FRAME_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/indent.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/indent.cpp
deleted file mode 100644
index b9f515ad..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/indent.cpp
+++ /dev/null
@@ -1,4741 +0,0 @@
-/**
- * @file indent.cpp
- * Does all the indenting stuff.
- *
- * @author Ben Gardner
- * @author Guy Maurel October 2015- 2021
- * @license GPL v2+
- */
-
-#include "indent.h"
-
-#include "align.h"
-#include "frame_list.h"
-#include "options.h"
-#include "options_for_QT.h"
-#include "prototypes.h"
-#include "quick_align_again.h"
-#include "space.h"
-
-#ifdef WIN32
-#include <algorithm> // to get max
-#endif // ifdef WIN32
-
-#ifdef IGNORE // WinBase.h
-#undef IGNORE
-#endif
-
-
-constexpr static auto LCURRENT = LINDENT;
-
-using namespace std;
-using namespace uncrustify;
-
-
-/**
- * General indenting approach:
- * Indenting levels are put into a stack.
- *
- * The stack entries contain:
- * - opening type
- * - brace column
- * - continuation column
- *
- * Items that start a new stack item:
- * - preprocessor (new parse frame)
- * - Brace Open (Virtual brace also)
- * - Paren, Square, Angle open
- * - Assignments
- * - C++ '<<' operator (ie, cout << "blah")
- * - case
- * - class colon
- * - return
- * - types
- * - any other continued statement
- *
- * Note that the column of items marked 'PCF_WAS_ALIGNED' is not changed.
- *
- * For an open brace:
- * - indent increases by indent_columns
- * - if part of if/else/do/while/switch/etc, an extra indent may be applied
- * - if in a paren, then cont-col is set to column + 1, ie "({ some code })"
- *
- * Open paren/square/angle:
- * cont-col is set to the column of the item after the open paren, unless
- * followed by a newline, then it is set to (brace-col + indent_columns).
- * Examples:
- * a_really_long_function_name(
- * param1, param2);
- * a_really_long_function_name(param1,
- * param2);
- *
- * Assignments:
- * Assignments are continued aligned with the first item after the assignment,
- * unless the assign is followed by a newline.
- * Examples:
- * some.variable = asdf + asdf +
- * asdf;
- * some.variable =
- * asdf + asdf + asdf;
- *
- * C++ << operator:
- * Handled the same as assignment.
- * Examples:
- * cout << "this is test number: "
- * << test_number;
- *
- * case:
- * Started with case or default.
- * Terminated with close brace at level or another case or default.
- * Special indenting according to various rules.
- * - indent of case label
- * - indent of case body
- * - how to handle optional braces
- * Examples:
- * {
- * case x: {
- * a++;
- * break;
- * }
- * case y:
- * b--;
- * break;
- * default:
- * c++;
- * break;
- * }
- *
- * Class colon:
- * Indent continuation by indent_columns:
- * class my_class :
- * baseclass1,
- * baseclass2
- * {
- *
- * Return: same as assignments
- * If the return statement is not fully paren'd, then the indent continues at
- * the column of the item after the return. If it is paren'd, then the paren
- * rules apply.
- * return somevalue +
- * othervalue;
- *
- * Type: pretty much the same as assignments
- * Examples:
- * int foo,
- * bar,
- * baz;
- *
- * Any other continued item:
- * There shouldn't be anything not covered by the above cases, but any other
- * continued item is indented by indent_columns:
- * Example:
- * somereallycrazylongname.with[lotsoflongstuff].
- * thatreallyannoysme.whenIhavetomaintain[thecode] = 3;
- */
-
-/**
- * REVISIT: This needs to be re-checked, maybe cleaned up
- *
- * Indents comments in a (hopefully) smart manner.
- *
- * There are two type of comments that get indented:
- * - stand alone (ie, no tokens on the line before the comment)
- * - trailing comments (last token on the line apart from a linefeed)
- * + note that a stand-alone comment is a special case of a trailing
- *
- * The stand alone comments will get indented in one of three ways:
- * - column 1:
- * + There is an empty line before the comment AND the indent level is 0
- * + The comment was originally in column 1
- *
- * - Same column as trailing comment on previous line (ie, aligned)
- * + if originally within TBD (3) columns of the previous comment
- *
- * - syntax indent level
- * + doesn't fit in the previous categories
- *
- * Options modify this behavior:
- * - keep original column (don't move the comment, if possible)
- * - keep relative column (move out the same amount as first item on line)
- * - fix trailing comment in column TBD
- *
- * @param pc The comment, which is the first item on a line
- * @param col The column if this is to be put at indent level
- */
-static void indent_comment(Chunk *pc, size_t col);
-
-
-static size_t token_indent(E_Token type);
-
-
-static size_t calc_indent_continue(const ParseFrame &frm, size_t pse_tos);
-
-/**
- * Get candidate chunk first on line to which OC blocks can be indented against.
- */
-static Chunk *candidate_chunk_first_on_line(Chunk *pc);
-
-/**
- * We are on a '{' that has parent = OC_BLOCK_EXPR
- * find the column of the param tag
- */
-static Chunk *oc_msg_block_indent(Chunk *pc, bool from_brace, bool from_caret, bool from_colon, bool from_keyword);
-
-
-/**
- * returns true if forward or reverse scan reveals only single newlines or comments
- * stops when hits code
- * false if next thing hit is a closing brace, also if 2 newlines in a row
- */
-static bool single_line_comment_indent_rule_applies(Chunk *start, bool forward);
-
-/**
- * returns true if semicolon on the same level ends any assign operations
- * false if next thing hit is not the end of an assign operation
- */
-static bool is_end_of_assignment(Chunk *pc, const ParseFrame &frm);
-
-
-void indent_to_column(Chunk *pc, size_t column)
-{
- LOG_FUNC_ENTRY();
-
- if (column < pc->GetColumn())
- {
- column = pc->GetColumn();
- }
- reindent_line(pc, column);
-}
-
-
-enum class align_mode_e : unsigned int
-{
- SHIFT, //! shift relative to the current column
- KEEP_ABS, //! try to keep the original absolute column
- KEEP_REL, //! try to keep the original gap
-};
-
-
-enum class indent_mode_e : int
-{
- INDENT = 0, //! indent by one level
- ALIGN = 1, //! align under the open brace/parenthesis
- IGNORE = -1, //! preserve original indentation
-};
-
-
-void align_to_column(Chunk *pc, size_t column)
-{
- LOG_FUNC_ENTRY();
-
- if ( pc == nullptr
- || column == pc->GetColumn())
- {
- return;
- }
- LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s => column is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetColumn(), pc->Text(),
- get_token_name(pc->GetType()), column);
-
- const int col_delta = column - pc->GetColumn();
- size_t min_col = column;
-
- pc->SetColumn(column);
-
- do
- {
- auto *next = pc->GetNext();
-
- if (next->IsNullChunk())
- {
- break;
- }
- const size_t min_delta = space_col_align(pc, next);
- min_col += min_delta;
-
- const auto *prev = pc;
- pc = next;
-
- auto almod = align_mode_e::SHIFT;
-
- if ( pc->IsComment()
- && pc->GetParentType() != CT_COMMENT_EMBED)
- {
- log_rule_B("indent_relative_single_line_comments");
- almod = ( pc->IsSingleLineComment()
- && options::indent_relative_single_line_comments())
- ? align_mode_e::KEEP_REL : align_mode_e::KEEP_ABS;
- }
-
- if (almod == align_mode_e::KEEP_ABS)
- {
- // Keep same absolute column
- pc->SetColumn(max(pc->GetOrigCol(), min_col));
- }
- else if (almod == align_mode_e::KEEP_REL)
- {
- // Keep same relative column
- size_t orig_delta = pc->GetOrigPrevSp() + prev->Len();
- orig_delta = max<size_t>(orig_delta, min_delta); // keeps orig_delta positive
-
- pc->SetColumn(prev->GetColumn() + orig_delta);
- }
- else // SHIFT
- {
- // Shift by the same amount, keep above negative values
- pc->SetColumn(( col_delta >= 0
- || (size_t)(abs(col_delta)) < pc->GetColumn())
- ? pc->GetColumn() + col_delta : 0);
- pc->SetColumn(max(pc->GetColumn(), min_col));
- }
- LOG_FMT(LINDLINED, "%s(%d): %s set column of '%s', type is %s, orig line is %zu, to col %zu (orig col was %zu)\n",
- __func__, __LINE__,
- (almod == align_mode_e::KEEP_ABS) ? "abs" :
- (almod == align_mode_e::KEEP_REL) ? "rel" : "sft",
- pc->Text(), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetColumn(), pc->GetOrigCol());
- } while ( pc->IsNotNullChunk()
- && pc->GetNlCount() == 0);
-} // align_to_column
-
-
-void reindent_line(Chunk *pc, size_t column)
-{
- LOG_FUNC_ENTRY();
- char copy[1000];
-
- LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, orig col is %zu, on '%s' [%s/%s] => %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy),
- get_token_name(pc->GetType()), get_token_name(pc->GetParentType()),
- column);
- log_func_stack_inline(LINDLINE);
-
- if (column == pc->GetColumn())
- {
- return;
- }
- int col_delta = column - pc->GetColumn();
- size_t min_col = column;
-
- pc->SetColumn(column);
-
- do
- {
- if (QT_SIGNAL_SLOT_found)
- {
- // fix the bug #654
- // connect(&mapper, SIGNAL(mapped(QString &)), this, SLOT(onSomeEvent(QString &)));
- // look for end of SIGNAL/SLOT block
- if (!pc->TestFlags(PCF_IN_QT_MACRO))
- {
- LOG_FMT(LINDLINE, "FLAGS is NOT set: PCF_IN_QT_MACRO\n");
- restore_options_for_QT();
- }
- }
- else
- {
- // look for begin of SIGNAL/SLOT block
- if (pc->TestFlags(PCF_IN_QT_MACRO))
- {
- LOG_FMT(LINDLINE, "FLAGS is set: PCF_IN_QT_MACRO\n");
- save_set_options_for_QT(pc->GetLevel());
- }
- }
- Chunk *next = pc->GetNext();
-
- if (next->IsNullChunk())
- {
- break;
- }
-
- if (pc->GetNlCount())
- {
- min_col = 0;
- col_delta = 0;
- }
- min_col += space_col_align(pc, next);
- pc = next;
-
- const bool is_comment = pc->IsComment();
- log_rule_B("indent_relative_single_line_comments");
- const bool keep = ( is_comment
- && pc->IsSingleLineComment()
- && options::indent_relative_single_line_comments());
-
- if ( is_comment
- && pc->GetParentType() != CT_COMMENT_EMBED
- && !keep)
- {
- pc->SetColumn(max(pc->GetOrigCol(), min_col));
- LOG_FMT(LINDLINE, "%s(%d): set comment on line %zu to col %zu (orig %zu)\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetColumn(), pc->GetOrigCol());
- }
- else
- {
- pc->SetColumn(max(pc->GetColumn() + col_delta, min_col));
-
- LOG_FMT(LINDLINED, "%s(%d): set column of ", __func__, __LINE__);
-
- if (pc->Is(CT_NEWLINE))
- {
- LOG_FMT(LINDLINED, "<Newline>");
- }
- else
- {
- LOG_FMT(LINDLINED, "'%s'", pc->Text());
- }
- LOG_FMT(LINDLINED, " to %zu (orig %zu)\n", pc->GetColumn(), pc->GetOrigCol());
- }
- } while ( pc->IsNotNullChunk()
- && pc->GetNlCount() == 0);
-} // reindent_line
-
-
-static size_t token_indent(E_Token type)
-{
- switch (type)
- {
- case CT_IF:
- case CT_DO:
- return(3);
-
- case CT_FOR:
- case CT_ELSE: // wacky, but that's what is wanted
- return(4);
-
- case CT_WHILE:
- case CT_USING_STMT:
- return(6);
-
- case CT_SWITCH:
- return(7);
-
- case CT_ELSEIF:
- return(8);
-
- case CT_SYNCHRONIZED:
- return(13);
-
- default:
- return(0);
- }
-}
-
-
-#define indent_column_set(X) \
- do { \
- LOG_FMT(LINDENT2, "%s(%d): orig line is %zu, indent_column changed from %zu to %zu\n", \
- __func__, __LINE__, pc->GetOrigLine(), indent_column, (size_t)X); \
- indent_column = (X); \
- } while (false)
-
-
-static size_t get_indent_first_continue(Chunk *pc)
-{
- log_rule_B("indent_ignore_first_continue");
- Chunk *continuation = pc->GetNextType(CT_NEWLINE, pc->GetLevel());
-
- if (continuation->IsNotNullChunk())
- {
- continuation = continuation->GetNext();
-
- if (continuation->IsNotNullChunk())
- {
- return(continuation->GetOrigCol());
- }
- }
- return(0);
-}
-
-
-static size_t calc_indent_continue(const ParseFrame &frm, size_t pse_tos)
-{
- log_rule_B("indent_continue");
- const int ic = options::indent_continue();
-
- if ( ic < 0
- && frm.at(pse_tos).indent_cont)
- {
- return(frm.at(pse_tos).indent);
- }
- return(frm.at(pse_tos).indent + abs(ic));
-}
-
-
-static size_t calc_indent_continue(const ParseFrame &frm)
-{
- return(calc_indent_continue(frm, frm.size() - 1));
-}
-
-
-static Chunk *candidate_chunk_first_on_line(Chunk *pc)
-{
- Chunk *first = pc->GetFirstChunkOnLine();
-
- log_rule_B("indent_inside_ternary_operator");
-
- if ( options::indent_inside_ternary_operator()
- && ( first->Is(CT_QUESTION)
- || first->Is(CT_COND_COLON)))
- {
- return(first->GetNextNcNnl());
- }
- else
- {
- return(first);
- }
-}
-
-
-static Chunk *oc_msg_block_indent(Chunk *pc, bool from_brace,
- bool from_caret, bool from_colon,
- bool from_keyword)
-{
- LOG_FUNC_ENTRY();
- Chunk *tmp = Chunk::NullChunkPtr;
-
- if (pc != nullptr)
- {
- tmp = pc->GetPrevNc();
- }
-
- if (from_brace)
- {
- return(pc);
- }
-
- // Skip to open paren in ':^TYPE *(ARGS) {'
- if (tmp->IsParenClose())
- {
- tmp = tmp->GetOpeningParen()->GetPrevNc();
- }
-
- // // Check for star in ':^TYPE *(ARGS) {'. Issue 2477
- if (tmp->Is(CT_PTR_TYPE))
- {
- tmp = tmp->GetPrevNc();
- }
-
- // Check for type in ':^TYPE *(ARGS) {'. Issue 2482
- if (tmp->Is(CT_TYPE))
- {
- tmp = tmp->GetPrevNc();
- }
- // Check for caret in ':^TYPE *(ARGS) {'
- // Store the caret position
- Chunk *caret_tmp = Chunk::NullChunkPtr;
-
- if ( tmp->IsNotNullChunk()
- && tmp->GetType() == CT_OC_BLOCK_CARET)
- {
- caret_tmp = tmp;
- }
- else
- {
- caret_tmp = tmp->GetPrevType(CT_OC_BLOCK_CARET);
- tmp = caret_tmp;
- }
-
- // If we still cannot find caret then return first chunk on the line
- if ( tmp->IsNullChunk()
- || tmp->IsNot(CT_OC_BLOCK_CARET))
- {
- return(candidate_chunk_first_on_line(pc));
- }
-
- if (from_caret)
- {
- return(tmp);
- }
- tmp = tmp->GetPrevNc();
-
- // Check for colon in ':^TYPE *(ARGS) {'
- if (from_colon)
- {
- if ( tmp->IsNullChunk()
- || tmp->IsNot(CT_OC_COLON))
- {
- return(candidate_chunk_first_on_line(pc));
- }
- else
- {
- return(tmp);
- }
- }
- tmp = tmp->GetPrevNc();
-
- if (from_keyword)
- {
- if ( tmp->IsNullChunk()
- || ( tmp->IsNot(CT_OC_MSG_NAME)
- && tmp->IsNot(CT_OC_MSG_FUNC)))
- {
- return(candidate_chunk_first_on_line(pc));
- }
- else
- {
- return(tmp);
- }
- }
- // In almost all the cases, its better to return the first chunk on the line than not indenting at all.
- tmp = candidate_chunk_first_on_line(pc);
- return(tmp);
-} // oc_msg_block_indent
-
-
-#define log_indent() \
- do { _log_indent(__func__, __LINE__, frm); \
- } while (false)
-
-
-static void _log_indent(const char *func, const uint32_t line, const ParseFrame &frm)
-{
- LOG_FMT(LINDLINE, "%s(%d): frm.pse_tos is %zu, ...indent is %zu\n",
- func, line, frm.size() - 1, frm.top().indent);
-}
-
-
-#define log_prev_indent() \
- do { _log_prev_indent(__func__, __LINE__, frm); \
- } while (false)
-
-
-static void _log_prev_indent(const char *func, const uint32_t line, const ParseFrame &frm)
-{
- LOG_FMT(LINDLINE, "%s(%d): frm.pse_tos is %zu, prev....indent is %zu\n",
- func, line, frm.size() - 1, frm.prev().indent);
-}
-
-
-#define log_indent_tmp() \
- do { _log_indent_tmp(__func__, __LINE__, frm); \
- } while (false)
-
-
-static void _log_indent_tmp(const char *func, const uint32_t line, const ParseFrame &frm)
-{
- LOG_FMT(LINDLINE, "%s(%d): frm.pse_tos is %zu, ...indent_tmp is %zu\n",
- func, line, frm.size() - 1, frm.top().indent_tmp);
-}
-
-
-static void quick_indent_again()
-{
- LOG_FUNC_ENTRY();
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if (pc->GetIndentData().ref == nullptr)
- {
- continue;
- }
- Chunk *tmp = pc->GetPrev();
-
- if (!tmp->IsNewline())
- {
- continue;
- }
- const size_t col = pc->GetIndentData().ref->GetColumn() + pc->GetIndentData().delta;
- indent_to_column(pc, col);
-
- LOG_FMT(LINDENTAG, "%s(%d): [%zu] indent [%s] to %zu based on [%s] @ %zu:%zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->Text(), col,
- pc->GetIndentData().ref->Text(), pc->GetIndentData().ref->GetOrigLine(),
- pc->GetIndentData().ref->GetColumn());
- }
-}
-
-
-void indent_text()
-{
- LOG_FUNC_ENTRY();
- bool did_newline = true;
- size_t vardefcol = 0;
-
- log_rule_B("indent_columns");
- const size_t indent_size = options::indent_columns();
- size_t indent_column = 0;
- int xml_indent = 0;
- size_t sql_col = 0;
- size_t sql_orig_col = 0;
- bool in_func_def = false;
-
-
- std::vector<ParseFrame> frames;
- ParseFrame frm{};
-
-
- Chunk *pc = Chunk::GetHead();
- bool classFound = false; // Issue #672
-
- while ( pc != nullptr
- && pc->IsNotNullChunk())
- {
- LOG_CHUNK(LINDLINE, pc);
- // forces string literal to column-1 [Fix for 1246]
- log_rule_B("indent_col1_multi_string_literal");
-
- if ( (pc->GetType() == CT_STRING_MULTI)
- && !(cpd.lang_flags & LANG_OC) // Issue #1795
- && options::indent_col1_multi_string_literal())
- {
- string str = pc->Text();
-
- if ( (str[0] == '@')
- && (pc->GetPrev()->GetType() == CT_NEWLINE))
- {
- indent_column_set(1);
- reindent_line(pc, indent_column);
- pc = pc->GetNext();
- did_newline = false;
- }
- }
-
- if (pc->Is(CT_NEWLINE))
- {
- LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, <Newline>\n",
- __func__, __LINE__, pc->GetOrigLine());
- }
- else if (pc->Is(CT_NL_CONT))
- {
- LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, CT_NL_CONT\n",
- __func__, __LINE__, pc->GetOrigLine());
- }
- else
- {
- char copy[1000];
- LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, orig col is %zu, column is %zu, for '%s'\n ",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetColumn(), pc->ElidedText(copy));
- log_pcf_flags(LINDLINE, pc->GetFlags());
- }
- log_rule_B("use_options_overriding_for_qt_macros");
-
- if ( options::use_options_overriding_for_qt_macros()
- && ( strcmp(pc->Text(), "SIGNAL") == 0
- || strcmp(pc->Text(), "SLOT") == 0))
- {
- LOG_FMT(LINDLINE, "%s(%d): orig line=%zu: type %s SIGNAL/SLOT found\n",
- __func__, __LINE__, pc->GetOrigLine(), get_token_name(pc->GetType()));
- }
- // Handle preprocessor transitions
- log_rule_B("indent_brace_parent");
- const size_t parent_token_indent = (options::indent_brace_parent())
- ? token_indent(pc->GetParentType()) : 0;
-
- // Handle "force indentation of function definition to start in column 1"
- log_rule_B("indent_func_def_force_col1");
-
- if (options::indent_func_def_force_col1())
- {
- if (!in_func_def)
- {
- Chunk *next = pc->GetNextNcNnl();
-
- if ( pc->GetParentType() == CT_FUNC_DEF
- || ( pc->Is(CT_COMMENT)
- && next->IsNotNullChunk()
- && next->GetParentType() == CT_FUNC_DEF))
- {
- in_func_def = true;
- frm.push(pc, __func__, __LINE__);
- frm.top().indent_tmp = 1;
- frm.top().indent = 1;
- frm.top().indent_tab = 1;
- }
- }
- else
- {
- Chunk *prev = pc->GetPrev();
-
- if ( prev->Is(CT_BRACE_CLOSE)
- && prev->GetParentType() == CT_FUNC_DEF)
- {
- in_func_def = false;
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
- }
- }
- // Clean up after a #define, etc
- const bool in_preproc = pc->TestFlags(PCF_IN_PREPROC);
-
- if (!in_preproc)
- {
- while ( !frm.empty()
- && frm.top().in_preproc)
- {
- const E_Token type = frm.top().type;
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
-
- /*
- * If we just removed an #endregion, then check to see if a
- * PP_REGION_INDENT entry is right below it
- */
- if ( type == CT_PP_ENDREGION
- && frm.top().type == CT_PP_REGION_INDENT)
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
- }
- }
- else if (pc->Is(CT_PREPROC)) // #
- {
- // Close out PP_IF_INDENT before playing with the parse frames
- if ( frm.top().type == CT_PP_IF_INDENT
- && ( pc->GetParentType() == CT_PP_ENDIF
- || pc->GetParentType() == CT_PP_ELSE))
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
- ParseFrame frmbkup = frm;
- fl_check(frames, frm, cpd.pp_level, pc);
-
- // Indent the body of a #region here
- log_rule_B("pp_region_indent_code");
-
- if ( options::pp_region_indent_code()
- && pc->GetParentType() == CT_PP_REGION)
- {
- Chunk *next = pc->GetNext();
-
- if (next->IsNullChunk())
- {
- break;
- }
- // Hack to get the logs to look right
- next->SetType(CT_PP_REGION_INDENT);
- frm.push(next, __func__, __LINE__);
- next->SetType(CT_PP_REGION);
-
- // Indent one level
- frm.top().indent = frm.prev().indent + indent_size;
- log_indent();
-
- frm.top().indent_tab = frm.prev().indent_tab + indent_size;
- frm.top().indent_tmp = frm.top().indent;
- frm.top().in_preproc = false;
- log_indent_tmp();
- }
- // If option set, remove indent inside switch statement
- log_rule_B("indent_switch_pp");
-
- if ( frm.top().type == CT_CASE
- && !options::indent_switch_pp())
- {
- frm.push(pc, __func__, __LINE__);
- LOG_FMT(LINDPC, "%s(%d): frm.top().indent is %zu, indent_size is %zu\n",
- __func__, __LINE__, frm.top().indent, indent_size);
-
- if (frm.top().indent >= indent_size)
- {
- frm.prev().indent = frm.top().indent - indent_size;
- }
- log_prev_indent();
- }
- // Indent the body of a #if here
- log_rule_B("pp_if_indent_code");
-
- if ( options::pp_if_indent_code()
- && ( pc->GetParentType() == CT_PP_IF
- || pc->GetParentType() == CT_PP_ELSE))
- {
- Chunk *next = pc->GetNext();
-
- if (next->IsNullChunk())
- {
- break;
- }
- int should_indent_preproc = true;
- int should_ignore_preproc = false;
- Chunk *preproc_next = pc->GetNextNl();
- preproc_next = preproc_next->GetNextNcNnlNet();
-
- /* Look ahead at what's on the line after the #if */
- log_rule_B("pp_indent_brace");
- log_rule_B("pp_indent_func_def");
- log_rule_B("pp_indent_case");
- log_rule_B("pp_indent_extern");
-
- while ( preproc_next->IsNotNullChunk()
- && preproc_next->IsNot(CT_NEWLINE))
- {
- if ( (preproc_next->Is(CT_BRACE_OPEN))
- || (preproc_next->Is(CT_BRACE_CLOSE)))
- {
- if (options::pp_indent_brace() == 0)
- {
- should_indent_preproc = false;
- break;
- }
- else if (options::pp_indent_brace() == -1)
- {
- should_ignore_preproc = true;
- break;
- }
- }
- else if ( ( preproc_next->Is(CT_FUNC_DEF)
- && !options::pp_indent_func_def())
- || ( preproc_next->Is(CT_CASE)
- && !options::pp_indent_case())
- || ( preproc_next->Is(CT_EXTERN)
- && !options::pp_indent_extern()))
- {
- should_indent_preproc = false;
- break;
- }
- preproc_next = preproc_next->GetNext();
- }
-
- if (should_indent_preproc)
- {
- // Hack to get the logs to look right
-
- const E_Token memtype = next->GetType();
- next->SetType(CT_PP_IF_INDENT);
- frm.push(next, __func__, __LINE__);
- next->SetType(memtype);
-
- if (should_ignore_preproc)
- {
- // Preserve original indentation
- frm.top().indent = pc->GetNextNl()->GetNext()->GetOrigCol();
- log_indent();
- }
- else
- {
- // Indent one level except if the #if is a #include guard
- size_t extra = ( pc->GetPpLevel() == 0
- && ifdef_over_whole_file())
- ? 0 : indent_size;
-
- frm.top().indent = frm.prev().indent + extra;
- log_indent();
-
- frm.top().indent_tab = frm.prev().indent_tab + extra;
- }
- frm.top().indent_tmp = frm.top().indent;
- frm.top().in_preproc = false;
- log_indent_tmp();
- }
- }
- log_rule_B("indent_member_single");
-
- if (options::indent_member_single())
- {
- if (pc->GetParentType() == CT_PP_IF)
- {
- // do nothing
- }
- else if (pc->GetParentType() == CT_PP_ELSE)
- {
- if ( frm.top().type == CT_MEMBER
- && frm.top().pop_pc->IsNotNullChunk()
- && frm.top().pc != frmbkup.top().pc)
- {
- Chunk *tmp = pc->GetNextNcNnlNpp();
-
- if (tmp->IsNotNullChunk())
- {
- if ( tmp->Is(CT_WORD)
- || tmp->Is(CT_TYPE))
- {
- tmp = pc->GetNextNcNnlNpp();
- }
- else if ( tmp->Is(CT_FUNC_CALL)
- || tmp->Is(CT_FPAREN_OPEN))
- {
- tmp = tmp->GetNextType(CT_FPAREN_CLOSE, tmp->GetLevel());
-
- if (tmp->IsNotNullChunk())
- {
- tmp = pc->GetNextNcNnlNpp();
- }
- }
-
- if (tmp->IsNotNullChunk())
- {
- frm.top().pop_pc = tmp;
- }
- }
- }
- }
- else if (pc->GetParentType() == CT_PP_ENDIF)
- {
- if ( frmbkup.top().type == CT_MEMBER
- && frm.top().type == CT_MEMBER)
- {
- frm.top().pop_pc = frmbkup.top().pop_pc;
- }
- }
- }
- // Transition into a preproc by creating a dummy indent
- Chunk *pp_next = pc->GetNext();
-
- if (pp_next->IsNullChunk())
- {
- return;
- }
- frm.push(pp_next, __func__, __LINE__);
-
- if ( pc->GetParentType() == CT_PP_DEFINE
- || pc->GetParentType() == CT_PP_UNDEF)
- {
- log_rule_B("pp_define_at_level");
- frm.top().indent_tmp = options::pp_define_at_level()
- ? frm.prev().indent_tmp : 1;
-
- log_rule_B("pp_multiline_define_body_indent");
-
- if (options::pp_multiline_define_body_indent() < 0)
- {
- frm.top().indent = -options::pp_multiline_define_body_indent();
- }
- else
- {
- frm.top().indent = pc->GetColumn() + options::pp_multiline_define_body_indent();
- }
- log_indent();
-
- frm.top().indent_tab = frm.top().indent;
- log_indent_tmp();
- }
- else if ( ( pc->GetParentType() == CT_PP_PRAGMA
- || pc->GetParentType() == CT_PP_OTHER)
- && options::pp_define_at_level())
- {
- log_rule_B("pp_define_at_level");
- frm.top().indent_tmp = frm.prev().indent_tmp;
- frm.top().indent = frm.top().indent_tmp + indent_size;
- log_indent();
-
- frm.top().indent_tab = frm.top().indent;
- log_indent_tmp();
- }
- else if ( pc->GetParentType() == CT_PP_INCLUDE
- && options::pp_include_at_level())
- {
- log_rule_B("pp_include_at_level");
- frm.top().indent_tmp = frm.prev().indent_tmp;
- frm.top().indent = frm.top().indent_tmp + indent_size;
- log_indent();
-
- frm.top().indent_tab = frm.top().indent;
- log_indent_tmp();
- }
- else
- {
- if ( (frm.prev().type == CT_PP_REGION_INDENT)
- || ( (frm.prev().type == CT_PP_IF_INDENT)
- && (frm.top().type != CT_PP_ENDIF)))
- {
- frm.top().indent = frm.prev(2).indent;
- log_indent();
- }
- else
- {
- frm.top().indent = frm.prev().indent;
- log_indent();
- }
- log_indent();
-
-
- int val = 0;
-
- if ( pc->GetParentType() == CT_PP_REGION
- || pc->GetParentType() == CT_PP_ENDREGION)
- {
- log_rule_B("pp_indent_region");
- val = options::pp_indent_region();
- log_indent();
- }
- else if ( pc->GetParentType() == CT_PP_IF
- || pc->GetParentType() == CT_PP_ELSE
- || pc->GetParentType() == CT_PP_ENDIF)
- {
- log_rule_B("pp_indent_if");
- val = options::pp_indent_if();
- log_indent();
- }
-
- if (val != 0)
- {
- size_t &indent = frm.top().indent;
-
- indent = (val > 0) ? val // reassign if positive val,
- : ((size_t)(abs(val)) < indent) // else if no underflow
- ? (indent + val) : 0; // reduce, else 0
- }
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
- }
- }
- // Check for close XML tags "</..."
- log_rule_B("indent_xml_string");
-
- if (options::indent_xml_string() > 0)
- {
- if (pc->Is(CT_STRING))
- {
- if ( pc->Len() > 4
- && xml_indent > 0
- && pc->GetStr()[1] == '<'
- && pc->GetStr()[2] == '/')
- {
- log_rule_B("indent_xml_string");
- xml_indent -= options::indent_xml_string();
- }
- }
- else if (!pc->IsCommentOrNewline())
- {
- xml_indent = 0;
- }
- }
- // Handle non-brace closures
- log_indent_tmp();
-
- bool token_used = false;
- size_t old_frm_size;
-
- do
- {
- old_frm_size = frm.size();
-
- // End anything that drops a level
- if ( !pc->IsCommentOrNewline()
- && frm.top().level > pc->GetLevel())
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-
- if (frm.top().level >= pc->GetLevel())
- {
- // process virtual braces closes (no text output)
- if ( pc->Is(CT_VBRACE_CLOSE)
- && frm.top().type == CT_VBRACE_OPEN)
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- pc = pc->GetNext();
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
-
- if (pc->IsNullChunk())
- {
- // need to break out of both the do and while loops
- goto null_pc;
- }
- }
-
- if ( pc->Is(CT_BRACE_CLOSE)
- && pc->GetParentType() == CT_ENUM)
- {
- Chunk *prev_ncnl = pc->GetPrevNcNnl();
- LOG_FMT(LINDLINE, "%s(%d): prev_ncnl is '%s', orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, prev_ncnl->Text(), prev_ncnl->GetOrigLine(), prev_ncnl->GetOrigCol());
-
- if (prev_ncnl->Is(CT_COMMA))
- {
- LOG_FMT(LINDLINE, "%s(%d): prev_ncnl is comma\n", __func__, __LINE__);
- }
- else
- {
- LOG_FMT(LINDLINE, "%s(%d): prev_ncnl is NOT comma\n", __func__, __LINE__);
- }
- }
-
- // End any assign operations with a semicolon on the same level
- if (is_end_of_assignment(pc, frm))
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
- // Pop Colon from stack in ternary operator
- // a
- // ? b
- // : e/*top*/;/*pc*/
- log_rule_B("indent_inside_ternary_operator");
-
- if ( options::indent_inside_ternary_operator()
- && (frm.top().type == CT_COND_COLON)
- && ( pc->IsSemicolon()
- || pc->Is(CT_COMMA)
- || pc->Is(CT_OC_MSG_NAME)
- || pc->Is(CT_SPAREN_CLOSE))) // Issue #1130, #1715
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-
- // End any assign operations with a semicolon on the same level
- if ( pc->IsSemicolon()
- && ( (frm.top().type == CT_IMPORT)
- || (frm.top().type == CT_USING)))
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-
- // End any custom macro-based open/closes
- if ( !token_used
- && (frm.top().type == CT_MACRO_OPEN)
- && pc->Is(CT_MACRO_CLOSE))
- {
- token_used = true;
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-
- // End any CPP/ObjC class colon stuff
- if ( ( (frm.top().type == CT_CLASS_COLON)
- || (frm.top().type == CT_CONSTR_COLON))
- && ( pc->Is(CT_BRACE_OPEN)
- || pc->Is(CT_OC_END)
- || pc->Is(CT_OC_SCOPE)
- || pc->Is(CT_OC_PROPERTY)
- || pc->Is(CT_TYPEDEF) // Issue #2675
- || pc->Is(CT_MACRO_OPEN)
- || pc->Is(CT_MACRO_CLOSE)
- || ( language_is_set(LANG_OC)
- && pc->IsComment()
- && pc->GetParentType() == CT_COMMENT_WHOLE) // Issue #2675
- || pc->IsSemicolon()))
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-
- // End ObjC class colon stuff inside of generic definition (like Test<T1: id<T3>>)
- if ( (frm.top().type == CT_CLASS_COLON)
- && pc->Is(CT_ANGLE_CLOSE)
- && pc->GetParentType() == CT_OC_GENERIC_SPEC)
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-
- // End Objc nested message and boxed array
- // TODO: ideally formatting would know which opens occurred on a line and group closes in the same manor
- if ( language_is_set(LANG_OC)
- && pc->Is(CT_SQUARE_CLOSE)
- && pc->GetParentType() == CT_OC_AT
- && frm.top().level >= pc->GetLevel())
- {
- size_t count = 1;
- Chunk *next = pc->GetNextNc();
-
- while ( next->IsNotNullChunk()
- && ( ( next->Is(CT_BRACE_CLOSE)
- && next->GetParentType() == CT_OC_AT)
- || ( next->Is(CT_SQUARE_CLOSE)
- && next->GetParentType() == CT_OC_AT)
- || ( next->Is(CT_SQUARE_CLOSE)
- && next->GetParentType() == CT_OC_MSG)))
- {
- count++;
- next = next->GetNextNc();
- }
- count = std::min(count, frm.size());
-
- if (count > 0)
- {
- while (count-- > 0)
- {
- if (frm.top().type == CT_SQUARE_OPEN)
- {
- if (frm.paren_count == 0)
- {
- fprintf(stderr, "%s(%d): frm.paren_count is ZERO, cannot be decremented, at line %zu, column %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- frm.paren_count--;
- }
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-
- if (next)
- {
- // End any assign operations with a semicolon on the same level
- if (is_end_of_assignment(next, frm))
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
- }
- // Indent the brace to match outer most brace/square
- indent_column_set(frm.top().indent_tmp);
- continue;
- }
- }
-
- // a case is ended with another case or a close brace
- if ( (frm.top().type == CT_CASE)
- && ( pc->Is(CT_BRACE_CLOSE)
- || pc->Is(CT_CASE)))
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-
- if (frm.top().pop_pc->IsNotNullChunk())
- {
- LOG_FMT(LINDLINE, "%s(%d): pop_pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, frm.top().pop_pc->GetOrigLine(), frm.top().pop_pc->GetOrigCol(),
- frm.top().pop_pc->Text(), get_token_name(frm.top().pop_pc->GetType()));
- }
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
-
- if ( (frm.top().type == CT_MEMBER)
- && frm.top().pop_pc == pc)
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-
- if ( (frm.top().type == CT_LAMBDA)
- && ( pc->Is(CT_SEMICOLON)
- || pc->Is(CT_COMMA)
- || pc->Is(CT_BRACE_OPEN)))
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
- // a class scope is ended with another class scope or a close brace
- log_rule_B("indent_access_spec_body");
-
- if ( options::indent_access_spec_body()
- && (frm.top().type == CT_ACCESS)
- && ( pc->Is(CT_BRACE_CLOSE)
- || pc->Is(CT_ACCESS)))
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-
- // return & throw are ended with a semicolon
- if ( pc->IsSemicolon()
- && ( (frm.top().type == CT_RETURN)
- || (frm.top().type == CT_THROW)))
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-
- // an OC SCOPE ('-' or '+') ends with a semicolon or brace open
- if ( (frm.top().type == CT_OC_SCOPE)
- && ( pc->IsSemicolon()
- || pc->Is(CT_BRACE_OPEN)))
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-
- /*
- * a typedef and an OC SCOPE ('-' or '+') ends with a semicolon or
- * brace open
- */
- if ( (frm.top().type == CT_TYPEDEF)
- && ( pc->IsSemicolon()
- || pc->IsParenOpen()
- || pc->Is(CT_BRACE_OPEN)))
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-
- // an SQL EXEC is ended with a semicolon
- if ( (frm.top().type == CT_SQL_EXEC)
- && pc->IsSemicolon())
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-
- // an CLASS is ended with a semicolon or brace open
- if ( (frm.top().type == CT_CLASS)
- && ( pc->Is(CT_CLASS_COLON)
- || pc->Is(CT_BRACE_OPEN)
- || pc->IsSemicolon()))
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
- log_rule_B("indent_oc_inside_msg_sel");
-
- // Pop OC msg selector stack
- if ( options::indent_oc_inside_msg_sel()
- && (frm.top().type != CT_SQUARE_OPEN)
- && frm.top().level >= pc->GetLevel()
- && ( pc->Is(CT_OC_MSG_FUNC)
- || pc->Is(CT_OC_MSG_NAME))) // Issue #2658
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-
- // Close out parenthesis and squares
- if ( (frm.top().type == (pc->GetType() - 1))
- && ( pc->Is(CT_PAREN_CLOSE)
- || pc->Is(CT_LPAREN_CLOSE) // Issue #3054
- || pc->Is(CT_SPAREN_CLOSE)
- || pc->Is(CT_FPAREN_CLOSE)
- || pc->Is(CT_SQUARE_CLOSE)
- || pc->Is(CT_ANGLE_CLOSE)))
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
-
- if (frm.paren_count == 0)
- {
- fprintf(stderr, "%s(%d): frm.paren_count is ZERO, cannot be decremented, at line %zu, column %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- frm.paren_count--;
- }
- }
- } while (old_frm_size > frm.size());
-
- // Grab a copy of the current indent
- indent_column_set(frm.top().indent_tmp); // Issue #3294
- log_indent_tmp();
-
- log_rule_B("indent_single_newlines");
-
- if ( pc->Is(CT_NEWLINE)
- && options::indent_single_newlines())
- {
- pc->SetNlColumn(indent_column);
- }
-
- if ( !pc->IsCommentOrNewline()
- && log_sev_on(LINDPC))
- {
- LOG_FMT(LINDPC, "%s(%d):\n", __func__, __LINE__);
- LOG_FMT(LINDPC, " -=[ pc orig line is %zu, orig col is %zu, Text() is '%s' ]=-, frm.size() is %zu\n",
- pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), frm.size());
-
- for (size_t ttidx = frm.size() - 1; ttidx > 0; ttidx--)
- {
- LOG_FMT(LINDPC, " [%zu %zu:%zu '%s' %s/%s tmp=%zu indent=%zu brace_indent=%zu indent_tab=%zu indent_cont=%d level=%zu pc brace level=%zu]\n",
- ttidx,
- frm.at(ttidx).pc->GetOrigLine(),
- frm.at(ttidx).pc->GetOrigCol(),
- frm.at(ttidx).pc->Text(),
- get_token_name(frm.at(ttidx).type),
- get_token_name(frm.at(ttidx).pc->GetParentType()),
- frm.at(ttidx).indent_tmp,
- frm.at(ttidx).indent,
- frm.at(ttidx).brace_indent,
- frm.at(ttidx).indent_tab,
- frm.at(ttidx).indent_cont,
- frm.at(ttidx).level,
- frm.at(ttidx).pc->GetBraceLevel());
- }
- }
- char copy[1000];
- LOG_FMT(LINDENT2, "%s(%d): orig line is %zu, orig col is %zu, column is %zu, Text() is '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetColumn(), pc->ElidedText(copy));
-
- // Issue #672
- if ( pc->Is(CT_BRACE_OPEN)
- && classFound)
- {
- LOG_FMT(LINDENT, "%s(%d): CT_BRACE_OPEN found, CLOSE IT\n",
- __func__, __LINE__);
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- classFound = false;
- }
- /*
- * Handle stuff that can affect the current indent:
- * - brace close
- * - vbrace open
- * - brace open
- * - case (immediate)
- * - labels (immediate)
- * - class colons (immediate)
- *
- * And some stuff that can't
- * - open paren
- * - open square
- * - assignment
- * - return
- */
- log_rule_B("indent_braces");
- log_rule_B("indent_braces_no_func");
- log_rule_B("indent_braces_no_class");
- log_rule_B("indent_braces_no_struct");
- const bool brace_indent = ( ( pc->Is(CT_BRACE_CLOSE)
- || pc->Is(CT_BRACE_OPEN))
- && options::indent_braces()
- && ( !options::indent_braces_no_func()
- || pc->GetParentType() != CT_FUNC_DEF)
- && ( !options::indent_braces_no_func()
- || pc->GetParentType() != CT_FUNC_CLASS_DEF)
- && ( !options::indent_braces_no_class()
- || pc->GetParentType() != CT_CLASS)
- && ( !options::indent_braces_no_struct()
- || pc->GetParentType() != CT_STRUCT));
- LOG_FMT(LINDENT, "%s(%d): brace_indent is %s\n",
- __func__, __LINE__, brace_indent ? "true" : "false");
-
- if (pc->Is(CT_BRACE_CLOSE))
- {
- if (language_is_set(LANG_OC))
- {
- if ( frm.top().type == CT_BRACE_OPEN
- && frm.top().level >= pc->GetLevel())
- {
- size_t count = 1;
- Chunk *next = pc->GetNextNc();
-
- while ( next->IsNotNullChunk()
- && ( ( next->Is(CT_BRACE_CLOSE)
- && next->GetParentType() == CT_OC_AT)
- || ( next->Is(CT_SQUARE_CLOSE)
- && next->GetParentType() == CT_OC_AT)))
- {
- count++;
- next = next->GetNextNc();
- }
- count = std::min(count, frm.size());
-
- // End Objc nested boxed dictionary
- // TODO: ideally formatting would know which opens occurred on a line and group closes in the same manor
- if ( count > 0
- && pc->Is(CT_BRACE_CLOSE)
- && pc->GetParentType() == CT_OC_AT)
- {
- if (frm.top().ip.ref)
- {
- pc->IndentData().ref = frm.top().ip.ref;
- pc->IndentData().delta = 0;
- }
-
- while (count-- > 0)
- {
- LOG_CHUNK(LINDLINE, pc);
- frm.pop(__func__, __LINE__, pc);
- }
-
- if (next)
- {
- // End any assign operations with a semicolon on the same level
- if (is_end_of_assignment(next, frm))
- {
- LOG_CHUNK(LINDLINE, pc);
- frm.pop(__func__, __LINE__, pc);
- }
- }
-
- // Indent the brace to match outer most brace/square
- if (frm.top().indent_cont)
- {
- indent_column_set(frm.top().indent_tmp - indent_size);
- }
- else
- {
- indent_column_set(frm.top().indent_tmp);
- }
- }
- else
- {
- // Indent the brace to match the open brace
- indent_column_set(frm.top().brace_indent);
-
- if (frm.top().ip.ref)
- {
- pc->IndentData().ref = frm.top().ip.ref;
- pc->IndentData().delta = 0;
- }
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
- }
- }
- else if (frm.top().brace_indent) // Issue #3421
- {
- // Indent the brace to match the open brace
- indent_column_set(frm.top().brace_indent);
-
- if (frm.top().ip.ref)
- {
- pc->IndentData().ref = frm.top().ip.ref;
- pc->IndentData().delta = 0;
- }
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
- }
- else if (pc->Is(CT_VBRACE_OPEN))
- {
- frm.push(pc, __func__, __LINE__);
-
- log_rule_B("indent_min_vbrace_open");
- size_t iMinIndent = options::indent_min_vbrace_open();
-
- if (indent_size > iMinIndent)
- {
- iMinIndent = indent_size;
- }
- size_t iNewIndent = frm.prev().indent + iMinIndent;
-
- log_rule_B("indent_vbrace_open_on_tabstop");
-
- if (options::indent_vbrace_open_on_tabstop())
- {
- iNewIndent = next_tab_column(iNewIndent);
- }
- frm.top().indent = iNewIndent;
- log_indent();
- frm.top().indent_tmp = frm.top().indent;
- frm.top().indent_tab = frm.top().indent;
- log_indent_tmp();
-
- // Always indent on virtual braces
- indent_column_set(frm.top().indent_tmp);
- }
- else if ( pc->Is(CT_BRACE_OPEN)
- && pc->GetNext()->IsNot(CT_NAMESPACE))
- {
- LOG_FMT(LINDENT2, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- frm.push(pc, __func__, __LINE__);
-
- log_rule_B("indent_macro_brace");
-
- if ( !options::indent_macro_brace()
- && frm.prev().type == CT_PP_DEFINE
- && frm.prev().open_line == frm.top().open_line)
- {
- LOG_FMT(LINDENT2, "%s(%d): indent_macro_brace\n", __func__, __LINE__);
- }
- else if ( options::indent_cpp_lambda_body()
- && pc->GetParentType() == CT_CPP_LAMBDA)
- {
- log_rule_B("indent_cpp_lambda_body");
- frm.top().brace_indent = frm.prev().indent;
-
- Chunk *head = frm.top().pc->GetPrevNcNnlNpp();
- Chunk *tail = Chunk::NullChunkPtr;
- Chunk *frm_prev = frm.prev().pc;
- bool enclosure = ( frm_prev->GetParentType() != CT_FUNC_DEF // Issue #3407
- && frm_prev != frm_prev->GetClosingParen());
- bool linematch = true;
-
- for (auto it = frm.rbegin(); it != frm.rend() && tail->IsNullChunk(); ++it)
- {
- if (it->pc && it->pc != frm.top().pc)
- {
- linematch &= it->pc->IsOnSameLine(head);
- }
- Chunk *match = it->pc->GetClosingParen();
-
- if (match->IsNullChunk())
- {
- continue;
- }
- Chunk *target = match->GetNextNcNnlNpp();
-
- while ( tail->IsNullChunk()
- && target->IsNotNullChunk())
- {
- if ( target->IsSemicolon()
- && target->GetLevel() == match->GetLevel())
- {
- tail = target;
- }
- else if (target->GetLevel() < match->GetLevel())
- {
- break;
- }
- else
- {
- target = target->GetNextNcNnlNpp();
- }
- }
- }
-
- bool toplevel = true;
-
- for (auto it = frm.rbegin(); it != frm.rend() && tail->IsNotNullChunk(); ++it)
- {
- if (!it->pc->Is(CT_FPAREN_OPEN))
- {
- continue;
- }
-
- if (it->pc->GetLevel() < tail->GetLevel())
- {
- toplevel = false;
- break;
- }
- }
-
- // A few things to check:
- // 1. The matching brace is on the same line as the ending semicolon
- // 2a. If it's an assignment, check that both sides of the assignment operator are on the same line
- // 2b. If it's inside some closure, check that all the frames are on the same line,
- // and it is in the top level closure, and indent_continue is non-zero
- bool sameLine = frm.top().pc->GetClosingParen()->IsOnSameLine(tail);
-
- bool isAssignSameLine =
- !enclosure
- && options::align_assign_span() == 0
- && !options::indent_align_assign()
- && frm.prev().pc->GetPrevNcNnlNpp()->IsOnSameLine(frm.prev().pc)
- && frm.prev().pc->IsOnSameLine(frm.prev().pc->GetNextNcNnlNpp());
-
- bool closureSameLineTopLevel =
- (options::indent_continue() > 0)
- && enclosure
- && linematch
- && toplevel
- && frm.top().pc->GetClosingParen()->IsOnSameLine(frm.top().pc);
-
- if (sameLine && ((isAssignSameLine) || (closureSameLineTopLevel)))
- {
- if (indent_size > frm.top().brace_indent) // if options::indent_indent_columns() is too big
- {
- frm.top().brace_indent = 1;
- }
- else
- {
- frm.top().brace_indent -= indent_size;
- }
- }
- indent_column_set(frm.top().brace_indent);
- frm.top().indent = indent_column + indent_size;
- log_indent();
-
- frm.top().indent_tab = frm.top().indent;
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
-
- frm.prev().indent_tmp = frm.top().indent_tmp;
- log_indent_tmp();
- }
- else if ( language_is_set(LANG_CPP)
- && options::indent_cpp_lambda_only_once()
- && (pc->GetParentType() == CT_CPP_LAMBDA))
- {
- // test example cpp:30756
- log_rule_B("indent_cpp_lambda_only_once");
-
- size_t namespace_indent_to_ignore = 0; // Issue #1813
- log_rule_B("indent_namespace");
-
- if (!options::indent_namespace())
- {
- for (auto i = frm.rbegin(); i != frm.rend(); ++i)
- {
- if (i->ns_cnt)
- {
- namespace_indent_to_ignore = i->ns_cnt;
- break;
- }
- }
- }
- // Issue # 1296
- frm.top().brace_indent = 1 + ((pc->GetBraceLevel() - namespace_indent_to_ignore) * indent_size);
- indent_column_set(frm.top().brace_indent);
- frm.top().indent = indent_column + indent_size;
- log_indent();
- frm.top().indent_tab = frm.top().indent;
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
-
- frm.prev().indent_tmp = frm.top().indent_tmp;
- log_indent_tmp();
- }
- else if ( language_is_set(LANG_CS | LANG_JAVA)
- && options::indent_cs_delegate_brace()
- && ( pc->GetParentType() == CT_LAMBDA
- || pc->GetParentType() == CT_DELEGATE))
- {
- log_rule_B("indent_cs_delegate_brace");
- frm.top().brace_indent = 1 + ((pc->GetBraceLevel() + 1) * indent_size);
- indent_column_set(frm.top().brace_indent);
- frm.top().indent = indent_column + indent_size;
- log_indent();
- frm.top().indent_tab = frm.top().indent;
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
-
- frm.prev().indent_tmp = frm.top().indent_tmp;
- log_indent_tmp();
- }
- else if ( language_is_set(LANG_CS | LANG_JAVA)
- && !options::indent_cs_delegate_brace()
- && !options::indent_align_paren()
- && ( pc->GetParentType() == CT_LAMBDA
- || pc->GetParentType() == CT_DELEGATE))
- {
- log_rule_B("indent_cs_delegate_brace");
- log_rule_B("indent_align_paren");
- frm.top().brace_indent = frm.prev().indent;
-
- // Issue # 1620, UNI-24090.cs
- if (frm.prev().pc->IsOnSameLine(frm.top().pc->GetPrevNcNnlNpp()))
- {
- frm.top().brace_indent -= indent_size;
- }
- indent_column_set(frm.top().brace_indent);
- frm.top().indent = indent_column + indent_size;
- log_indent();
- frm.top().indent_tab = frm.top().indent;
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
- frm.prev().indent_tmp = frm.top().indent_tmp;
- log_indent_tmp();
- }
- else if ( !options::indent_paren_open_brace()
- && !language_is_set(LANG_CS)
- && pc->GetParentType() == CT_CPP_LAMBDA
- && ( pc->TestFlags(PCF_IN_FCN_DEF)
- || pc->TestFlags(PCF_IN_FCN_CTOR)) // Issue #2152
- && pc->GetNextNc()->IsNewline())
- {
- log_rule_B("indent_paren_open_brace");
- // Issue #1165
- LOG_FMT(LINDENT2, "%s(%d): orig line is %zu, brace level is %zu, for '%s', pc->GetLevel() is %zu, pc(-1)->GetLevel() is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetBraceLevel(), pc->Text(), pc->GetLevel(), frm.prev().pc->GetLevel());
- frm.top().brace_indent = 1 + ((pc->GetBraceLevel() + 1) * indent_size);
- indent_column_set(frm.top().brace_indent);
- frm.top().indent = frm.prev().indent_tmp;
- log_indent();
-
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
- }
- // any '{' that is inside of a '(' overrides the '(' indent
- // only to help the vim command }
- else if ( !options::indent_paren_open_brace()
- && frm.prev().pc->IsParenOpen()
- && pc->GetNextNc()->IsNewline())
- {
- log_rule_B("indent_paren_open_brace");
- LOG_FMT(LINDENT2, "%s(%d): orig line is %zu, brace level is %zu, for '%s', pc->GetLevel() is %zu, pc(-1)->GetLevel() is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetBraceLevel(), pc->Text(), pc->GetLevel(), frm.prev().pc->GetLevel());
- // FIXME: I don't know how much of this is necessary, but it seems to work
- frm.top().brace_indent = 1 + (pc->GetBraceLevel() * indent_size);
- indent_column_set(frm.top().brace_indent);
- frm.top().indent = indent_column + indent_size;
- log_indent();
-
- if ( (pc->GetParentType() == CT_OC_BLOCK_EXPR)
- && pc->TestFlags(PCF_IN_OC_MSG))
- {
- frm.top().indent = frm.prev().indent_tmp + indent_size;
- log_indent();
- frm.top().brace_indent = frm.prev().indent_tmp;
- indent_column_set(frm.top().brace_indent);
- }
- frm.top().indent_tab = frm.top().indent;
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
-
- frm.prev().indent_tmp = frm.top().indent_tmp;
- }
- else if ( frm.paren_count != 0
- && !pc->TestFlags(PCF_IN_LAMBDA)) // Issue #3761
- {
- if (frm.top().pc->GetParentType() == CT_OC_BLOCK_EXPR)
- {
- log_rule_B("indent_oc_block_msg");
-
- if ( pc->TestFlags(PCF_IN_OC_MSG)
- && options::indent_oc_block_msg())
- {
- frm.top().ip.ref = oc_msg_block_indent(pc, false, false, false, true);
- log_rule_B("indent_oc_block_msg");
- frm.top().ip.delta = options::indent_oc_block_msg();
- }
- log_rule_B("indent_oc_block");
- log_rule_B("indent_oc_block_msg_xcode_style");
-
- if ( options::indent_oc_block()
- || options::indent_oc_block_msg_xcode_style())
- {
- bool in_oc_msg = pc->TestFlags(PCF_IN_OC_MSG);
- log_rule_B("indent_oc_block_msg_from_keyword");
- bool indent_from_keyword = options::indent_oc_block_msg_from_keyword()
- && in_oc_msg;
- log_rule_B("indent_oc_block_msg_from_colon");
- bool indent_from_colon = options::indent_oc_block_msg_from_colon()
- && in_oc_msg;
- log_rule_B("indent_oc_block_msg_from_caret");
- bool indent_from_caret = options::indent_oc_block_msg_from_caret()
- && in_oc_msg;
- log_rule_B("indent_oc_block_msg_from_brace");
- bool indent_from_brace = options::indent_oc_block_msg_from_brace()
- && in_oc_msg;
-
- /*
- * In "Xcode indent mode", we want to indent:
- * - if the colon is aligned (namely, if a newline has been
- * added before it), indent_from_brace
- * - otherwise, indent from previous block (the "else" statement here)
- */
- log_rule_B("indent_oc_block_msg_xcode_style");
-
- if (options::indent_oc_block_msg_xcode_style())
- {
- Chunk *bbc = pc->GetClosingParen(); // block brace close '}'
- Chunk *bbc_next_ncnl = bbc->GetNextNcNnl();
-
- if ( bbc_next_ncnl->GetType() == CT_OC_MSG_NAME
- || bbc_next_ncnl->GetType() == CT_OC_MSG_FUNC)
- {
- indent_from_brace = false;
- indent_from_colon = false;
- indent_from_caret = false;
- indent_from_keyword = true;
- }
- else
- {
- indent_from_brace = false;
- indent_from_colon = false;
- indent_from_caret = false;
- indent_from_keyword = false;
- }
- }
- Chunk *ref = oc_msg_block_indent(pc, indent_from_brace,
- indent_from_caret,
- indent_from_colon,
- indent_from_keyword);
-
- if (ref)
- {
- frm.top().indent = indent_size + ref->GetColumn();
- }
- else
- {
- frm.top().indent = 1 + ((pc->GetBraceLevel() + 1) * indent_size);
- }
- log_indent();
- indent_column_set(frm.top().indent - indent_size);
- }
- else
- {
- frm.top().indent = frm.prev().indent_tmp + indent_size;
- log_indent();
- }
- }
- else if ( frm.top().pc->GetType() == CT_BRACE_OPEN
- && frm.top().pc->GetParentType() == CT_OC_AT)
- {
- // We are inside @{ ... } -- indent one tab from the paren
- if (frm.prev().indent_cont)
- {
- frm.top().indent = frm.prev().indent_tmp;
- }
- else
- {
- frm.top().indent = frm.prev().indent_tmp + indent_size;
- }
- log_indent();
- }
- // Issue # 1620, UNI-24090.cs
- else if ( frm.prev().pc->IsOnSameLine(frm.top().pc)
- && !options::indent_align_paren()
- && frm.prev().pc->IsParenOpen()
- && !pc->TestFlags(PCF_ONE_LINER))
- {
- log_rule_B("indent_align_paren");
- // We are inside ({ ... }) -- where { and ( are on the same line, avoiding double indentations.
- // only to help the vim command }
- frm.top().brace_indent = frm.prev().indent - indent_size;
- indent_column_set(frm.top().brace_indent);
- frm.top().indent = frm.prev().indent_tmp;
- log_indent();
- }
- else if ( frm.prev().pc->IsOnSameLine(frm.top().pc->GetPrevNcNnlNpp())
- && !options::indent_align_paren()
- && frm.prev().pc->IsParenOpen()
- && !pc->TestFlags(PCF_ONE_LINER))
- {
- log_rule_B("indent_align_paren");
- // We are inside ({ ... }) -- where { and ( are on adjacent lines, avoiding indentation of brace.
- // only to help the vim command }
- frm.top().brace_indent = frm.prev().indent - indent_size;
- indent_column_set(frm.top().brace_indent);
- frm.top().indent = frm.prev().indent_tmp;
- log_indent();
- }
- else if ( options::indent_oc_inside_msg_sel()
- && ( frm.prev().type == CT_OC_MSG_FUNC
- || frm.prev().type == CT_OC_MSG_NAME)) // Issue #2658
- {
- log_rule_B("indent_oc_inside_msg_sel");
- // [Class Message:{<here>
- frm.top().indent = frm.prev().pc->GetColumn() + indent_size;
- log_indent();
- indent_column_set(frm.prev().pc->GetColumn());
- }
- // Issue #3813
- else if (pc->TestFlags(PCF_OC_IN_BLOCK) && pc->GetParentType() == CT_SWITCH)
- {
- frm.top().indent = frm.prev().indent_tmp;
- }
- else
- {
- // We are inside ({ ... }) -- indent one tab from the paren
- frm.top().indent = frm.prev().indent_tmp + indent_size;
-
- if (!frm.prev().pc->IsParenOpen())
- {
- frm.top().indent_tab = frm.top().indent;
- }
- log_indent();
- }
- }
- else if ( frm.top().pc->GetType() == CT_BRACE_OPEN
- && frm.top().pc->GetParentType() == CT_OC_AT)
- {
- // We are inside @{ ... } -- indent one tab from the paren
- if (frm.prev().indent_cont)
- {
- frm.top().indent = frm.prev().indent_tmp;
- }
- else
- {
- frm.top().indent = frm.prev().indent_tmp + indent_size;
- frm.top().indent_tab = frm.top().indent;
- }
- log_indent();
- }
- else if ( ( pc->GetParentType() == CT_BRACED_INIT_LIST
- || ( !options::indent_compound_literal_return()
- && pc->GetParentType() == CT_C_CAST))
- && frm.prev().type == CT_RETURN)
- {
- log_rule_B("indent_compound_literal_return");
-
- // we're returning either a c compound literal (CT_C_CAST) or a
- // C++11 initialization list (CT_BRACED_INIT_LIST), use indent from the return.
- if (frm.prev().indent_cont)
- {
- frm.top().indent = frm.prev().indent_tmp;
- }
- else
- {
- frm.top().indent = frm.prev().indent_tmp + indent_size;
- }
- log_indent();
- }
- else
- {
- // Use the prev indent level + indent_size.
- if (pc->GetParentType() == CT_SWITCH)
- {
- frm.top().indent = frm.prev().indent + options::indent_switch_body();
- }
- else
- {
- frm.top().indent = frm.prev().indent + indent_size;
- }
- LOG_FMT(LINDLINE, "%s(%d): frm.pse_tos is %zu, ... indent is %zu\n",
- __func__, __LINE__, frm.size() - 1, frm.top().indent);
- LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s', parent type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(),
- get_token_name(pc->GetParentType()));
-
- // If this brace is part of a statement, bump it out by indent_brace
- if ( pc->GetParentType() == CT_IF
- || pc->GetParentType() == CT_ELSE
- || pc->GetParentType() == CT_ELSEIF
- || pc->GetParentType() == CT_TRY
- || pc->GetParentType() == CT_CATCH
- || pc->GetParentType() == CT_DO
- || pc->GetParentType() == CT_WHILE
- || pc->GetParentType() == CT_USING_STMT
- || pc->GetParentType() == CT_SWITCH
- || pc->GetParentType() == CT_SYNCHRONIZED
- || pc->GetParentType() == CT_FOR)
- {
- if (parent_token_indent != 0)
- {
- frm.top().indent += parent_token_indent - indent_size;
- log_indent();
- }
- else
- {
- log_rule_B("indent_brace");
- frm.top().indent += options::indent_brace();
- log_indent();
- indent_column_set(indent_column + options::indent_brace());
- }
- }
- else if (pc->GetParentType() == CT_CASE)
- {
- if (options::indent_ignore_case_brace())
- {
- log_rule_B("indent_ignore_case_brace");
- indent_column_set(pc->GetOrigCol());
- }
- else
- {
- log_rule_B("indent_case_brace");
- const auto tmp_indent = static_cast<int>(frm.prev().indent)
- - static_cast<int>(indent_size)
- + options::indent_case_brace();
- /*
- * An open brace with the parent of case does not indent by default
- * UO_indent_case_brace can be used to indent the brace.
- * So we need to take the CASE indent, subtract off the
- * indent_size that was added above and then add indent_case_brace.
- * may take negative value
- */
- indent_column_set(max(tmp_indent, 0));
- }
- // Stuff inside the brace still needs to be indented
- frm.top().indent = indent_column + indent_size;
- log_indent();
-
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
- }
- else if ( pc->GetParentType() == CT_CLASS
- && !options::indent_class())
- {
- log_rule_B("indent_class");
- LOG_FMT(LINDENT, "%s(%d): orig line is %zu, orig col is %zu, text is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- frm.top().indent -= indent_size;
- log_indent();
- }
- else if (pc->GetParentType() == CT_NAMESPACE)
- {
- frm.top().ns_cnt = frm.prev().ns_cnt + 1;
-
- log_rule_B("indent_namespace");
- log_rule_B("indent_namespace_single_indent");
-
- if ( options::indent_namespace()
- && options::indent_namespace_single_indent())
- {
- if (frm.top().ns_cnt >= 2)
- {
- // undo indent on all except the first namespace
- frm.top().indent -= indent_size;
- log_indent();
- }
- indent_column_set(frm.prev(frm.top().ns_cnt).indent);
- }
- else if ( options::indent_namespace()
- && options::indent_namespace_inner_only())
- {
- if (frm.top().ns_cnt == 1)
- {
- // undo indent on first namespace only
- frm.top().indent -= indent_size;
- log_indent();
- }
- }
- else if ( pc->TestFlags(PCF_LONG_BLOCK)
- || !options::indent_namespace())
- {
- log_rule_B("indent_namespace");
- // don't indent long blocks
- frm.top().indent -= indent_size;
- log_indent();
- }
- else // indenting 'short' namespace
- {
- log_rule_B("indent_namespace_level");
-
- if (options::indent_namespace_level() > 0)
- {
- frm.top().indent -= indent_size;
- log_indent();
-
- frm.top().indent +=
- options::indent_namespace_level();
- log_indent();
- }
- }
- }
- else if ( pc->GetParentType() == CT_EXTERN
- && !options::indent_extern())
- {
- log_rule_B("indent_extern");
- frm.top().indent -= indent_size;
- log_indent();
- }
- frm.top().indent_tab = frm.top().indent;
- }
-
- if (pc->TestFlags(PCF_DONT_INDENT))
- {
- frm.top().indent = pc->GetColumn();
- log_indent();
-
- indent_column_set(pc->GetColumn());
- }
- else
- {
- /*
- * If there isn't a newline between the open brace and the next
- * item, just indent to wherever the next token is.
- * This covers this sort of stuff:
- * { a++;
- * b--; };
- */
- Chunk *next = pc->GetNextNcNnl();
-
- if (next->IsNullChunk())
- {
- break;
- }
- Chunk *prev = pc->GetPrev();
-
- if ( pc->GetParentType() == CT_BRACED_INIT_LIST
- && prev->Is(CT_BRACE_OPEN)
- && prev->GetParentType() == CT_BRACED_INIT_LIST)
- {
- indent_column = frm.prev().brace_indent;
- frm.top().indent = frm.prev().indent;
- log_indent();
- }
- else if ( !pc->IsNewlineBetween(next)
- && next->GetParentType() != CT_BRACED_INIT_LIST
- && options::indent_token_after_brace()
- && !pc->TestFlags(PCF_ONE_LINER)) // Issue #1108
- {
- log_rule_B("indent_token_after_brace");
- frm.top().indent = next->GetColumn();
- log_indent();
- }
- frm.top().indent_tmp = frm.top().indent;
- frm.top().open_line = pc->GetOrigLine();
- log_indent_tmp();
-
- log_rule_B("Update the indent_column");
-
- // Update the indent_column if needed
- if ( brace_indent
- || parent_token_indent != 0)
- {
- indent_column_set(frm.top().indent_tmp);
- log_indent_tmp();
- }
- }
- // Save the brace indent
- frm.top().brace_indent = indent_column;
- }
- else if (pc->Is(CT_SQL_END))
- {
- if (frm.top().type == CT_SQL_BEGIN)
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- indent_column_set(frm.top().indent_tmp);
- log_indent_tmp();
- }
- }
- else if ( pc->Is(CT_SQL_BEGIN)
- || pc->Is(CT_MACRO_OPEN)
- || ( pc->Is(CT_CLASS)
- && language_is_set(LANG_CS))) // Issue #3536
- {
- frm.push(pc, __func__, __LINE__);
-
- frm.top().indent = frm.prev().indent + indent_size;
- log_indent();
-
- frm.top().indent_tmp = frm.top().indent;
- frm.top().indent_tab = frm.top().indent;
- log_indent_tmp();
- }
- else if (pc->Is(CT_SQL_EXEC))
- {
- frm.push(pc, __func__, __LINE__);
-
- frm.top().indent = frm.prev().indent + indent_size;
- log_indent();
-
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
- }
- else if (pc->Is(CT_MACRO_ELSE))
- {
- if (frm.top().type == CT_MACRO_OPEN)
- {
- indent_column_set(frm.prev().indent);
- }
- }
- else if (pc->Is(CT_CASE))
- {
- // Start a case - indent UO_indent_switch_case from the switch level
- log_rule_B("indent_switch_case");
- const size_t tmp = frm.top().indent + indent_size
- - options::indent_switch_body()
- + options::indent_switch_case();
- frm.push(pc, __func__, __LINE__);
-
- frm.top().indent = tmp;
- log_indent();
-
- log_rule_B("indent_case_shift");
- frm.top().indent_tmp = tmp - indent_size + options::indent_case_shift();
- frm.top().indent_tab = tmp;
- log_indent_tmp();
-
- // Always set on case statements
- indent_column_set(frm.top().indent_tmp);
-
- if (options::indent_case_comment())
- {
- // comments before 'case' need to be aligned with the 'case'
- Chunk *pct = pc;
-
- while ( ((pct = pct->GetPrevNnl())->IsNotNullChunk())
- && pct->IsComment())
- {
- Chunk *t2 = pct->GetPrev();
-
- if (t2->IsNewline())
- {
- pct->SetColumn(frm.top().indent_tmp);
- pct->SetColumnIndent(pct->GetColumn());
- }
- }
- }
- }
- else if (pc->Is(CT_BREAK))
- {
- Chunk *prev = pc->GetPrevNcNnl();
-
- if ( prev->Is(CT_BRACE_CLOSE)
- && prev->GetParentType() == CT_CASE)
- {
- // issue #663 + issue #1366
- Chunk *prev_prev_newline = pc->GetPrevNl()->GetPrevNl();
-
- if (prev_prev_newline->IsNotNullChunk())
- {
- // This only affects the 'break', so no need for a stack entry
- indent_column_set(prev_prev_newline->GetNext()->GetColumn());
- }
- }
- }
- else if (pc->Is(CT_LABEL))
- {
- if (options::indent_ignore_label())
- {
- log_rule_B("indent_ignore_label");
- indent_column_set(pc->GetOrigCol());
- }
- else
- {
- log_rule_B("indent_label");
- const int val = options::indent_label();
- size_t pse_indent = frm.top().indent;
-
- // Labels get sent to the left or backed up
- if (val > 0)
- {
- indent_column_set(val);
-
- Chunk *next = pc->GetNext()->GetNext(); // colon + possible statement
-
- if ( next->IsNotNullChunk()
- && !next->IsNewline()
- // label (+ 2, because there is colon and space after it) must fit into indent
- && (val + pc->Len() + 2 <= pse_indent))
- {
- reindent_line(next, pse_indent);
- }
- }
- else
- {
- bool no_underflow = (size_t)(abs(val)) < pse_indent;
- indent_column_set((no_underflow ? (pse_indent + val) : 0));
- }
- }
- }
- else if (pc->Is(CT_ACCESS))
- {
- log_rule_B("indent_access_spec_body");
-
- if (options::indent_access_spec_body())
- {
- const size_t tmp = frm.top().indent + indent_size;
- frm.push(pc, __func__, __LINE__);
-
- frm.top().indent = tmp;
- log_indent();
-
- frm.top().indent_tmp = tmp - indent_size;
- frm.top().indent_tab = tmp;
- log_indent_tmp();
-
- /*
- * If we are indenting the body, then we must leave the access spec
- * indented at brace level
- */
- indent_column_set(frm.top().indent_tmp);
- // Issues 1161 + 2704
- // comments before 'access specifier' need to be aligned with the 'access specifier'
- // unless it is a Doxygen comment
- Chunk *pct = pc;
-
- while ( ((pct = pct->GetPrevNnl())->IsNotNullChunk())
- && pct->IsComment()
- && !pct->IsDoxygenComment())
- {
- Chunk *t2 = pct->GetPrev();
-
- if (t2->IsNewline())
- {
- pct->SetColumn(frm.top().indent_tmp);
- pct->SetColumnIndent(pct->GetColumn());
- }
- }
- }
- else
- {
- // Access spec labels get sent to the left or backed up
- log_rule_B("indent_access_spec");
- int val = options::indent_access_spec();
-
- if (val > 0)
- {
- indent_column_set(val);
- }
- else
- {
- size_t pse_indent = frm.top().indent;
- bool no_underflow = (size_t)(abs(val)) < pse_indent;
-
- indent_column_set(no_underflow ? (pse_indent + val) : 0);
- }
- }
- }
- else if ( pc->Is(CT_CLASS_COLON)
- || pc->Is(CT_CONSTR_COLON))
- {
- // just indent one level
- frm.push(pc, __func__, __LINE__);
-
- frm.top().indent = frm.prev().indent_tmp + indent_size;
- log_indent();
-
- frm.top().indent_tmp = frm.top().indent;
- frm.top().indent_tab = frm.top().indent;
- log_indent_tmp();
-
- if (pc->Is(CT_CLASS_COLON))
- {
- if (options::indent_ignore_before_class_colon())
- {
- log_rule_B("indent_ignore_before_class_colon");
- frm.top().indent_tmp = pc->GetOrigCol();
- log_indent_tmp();
- }
- else if (options::indent_before_class_colon() != 0)
- {
- log_rule_B("indent_before_class_colon");
- frm.top().indent_tmp = std::max<ptrdiff_t>(frm.top().indent_tmp + options::indent_before_class_colon(), 0);
- log_indent_tmp();
- }
- }
- indent_column_set(frm.top().indent_tmp);
-
- log_rule_B("indent_class_colon");
-
- if ( options::indent_class_colon()
- && pc->Is(CT_CLASS_COLON))
- {
- log_rule_B("indent_class_on_colon");
-
- if (options::indent_class_on_colon())
- {
- frm.top().indent = pc->GetColumn();
- log_indent();
- }
- else
- {
- Chunk *next = pc->GetNext();
-
- if ( next->IsNotNullChunk()
- && !next->IsNewline())
- {
- frm.top().indent = next->GetColumn();
- log_indent();
- }
- }
- }
- else if (pc->Is(CT_CONSTR_COLON))
- {
- if (options::indent_ignore_before_constr_colon())
- {
- log_rule_B("indent_ignore_before_constr_colon");
- frm.top().indent_tmp = pc->GetOrigCol();
- indent_column_set(frm.top().indent_tmp);
- }
-
- if (options::indent_constr_colon())
- {
- log_rule_B("indent_constr_colon");
- Chunk *prev = pc->GetPrev();
-
- if (prev->IsNewline())
- {
- log_rule_B("indent_ctor_init_following");
- frm.top().indent += options::indent_ctor_init_following();
- log_indent();
- }
- // TODO: Create a dedicated indent_constr_on_colon?
- log_rule_B("indent_class_on_colon");
-
- if (options::indent_ctor_init() != 0)
- {
- log_rule_B("indent_ctor_init");
- /*
- * If the std::max() calls were specialized with size_t (the type of the underlying variable),
- * they would never actually do their job, because size_t is unsigned and therefore even
- * a "negative" result would be always greater than zero.
- * Using ptrdiff_t (a standard signed type of the same size as size_t) in order to avoid that.
- */
- frm.top().indent = std::max<ptrdiff_t>(frm.top().indent + options::indent_ctor_init(), 0);
- log_indent();
- frm.top().indent_tmp = std::max<ptrdiff_t>(frm.top().indent_tmp + options::indent_ctor_init(), 0);
- frm.top().indent_tab = std::max<ptrdiff_t>(frm.top().indent_tab + options::indent_ctor_init(), 0);
- log_indent_tmp();
- indent_column_set(frm.top().indent_tmp);
- }
- else if (options::indent_class_on_colon())
- {
- frm.top().indent = pc->GetColumn();
- log_indent();
- }
- else
- {
- Chunk *next = pc->GetNext();
-
- if ( next->IsNotNullChunk()
- && !next->IsNewline())
- {
- frm.top().indent = next->GetColumn();
- log_indent();
- }
- }
- }
- }
- }
- else if ( pc->Is(CT_PAREN_OPEN)
- && ( pc->GetParentType() == CT_ASM
- || ( pc->GetPrevNcNnl()->IsNotNullChunk()
- && pc->GetPrevNcNnl()->GetType() == CT_ASM))
- && options::indent_ignore_asm_block())
- {
- log_rule_B("indent_ignore_asm_block");
- Chunk *tmp = pc->GetClosingParen();
-
- int move = 0;
-
- if ( pc->GetPrev()->IsNewline()
- && pc->GetColumn() != indent_column)
- {
- move = indent_column - pc->GetColumn();
- }
- else
- {
- move = pc->GetColumn() - pc->GetOrigCol();
- }
-
- do
- {
- if (!pc->TestFlags(PCF_IN_PREPROC))
- {
- pc->SetColumn(pc->GetOrigCol() + move);
- }
- pc = pc->GetNext();
- } while (pc != tmp);
-
- reindent_line(pc, indent_column);
- }
- else if ( pc->Is(CT_PAREN_OPEN)
- || pc->Is(CT_LPAREN_OPEN) // Issue #3054
- || pc->Is(CT_SPAREN_OPEN)
- || pc->Is(CT_FPAREN_OPEN)
- || pc->Is(CT_SQUARE_OPEN)
- || pc->Is(CT_ANGLE_OPEN))
- {
- /*
- * Open parenthesis and squares - never update indent_column,
- * unless right after a newline.
- */
- frm.push(pc, __func__, __LINE__);
-
- if ( pc->GetPrev()->IsNewline()
- && pc->GetColumn() != indent_column
- && !pc->TestFlags(PCF_DONT_INDENT))
- {
- LOG_FMT(LINDENT, "%s(%d): orig line is %zu, indent => %zu, text is '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- reindent_line(pc, indent_column);
- }
- frm.top().indent = pc->GetColumn() + pc->Len();
- log_indent();
-
- if ( pc->Is(CT_SQUARE_OPEN)
- && language_is_set(LANG_D))
- {
- frm.top().indent_tab = frm.top().indent;
- }
- bool skipped = false;
- log_rule_B("indent_inside_ternary_operator");
- log_rule_B("indent_align_paren");
-
- if ( options::indent_inside_ternary_operator()
- && ( pc->Is(CT_FPAREN_OPEN)
- || pc->Is(CT_PAREN_OPEN))
- && frm.size() > 2
- && ( frm.prev().type == CT_QUESTION
- || frm.prev().type == CT_COND_COLON)
- && !options::indent_align_paren())
- {
- frm.top().indent = frm.prev().indent_tmp + indent_size;
- log_indent();
- frm.top().indent_tab = frm.top().indent;
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
- }
- else if ( ( pc->Is(CT_FPAREN_OPEN)
- || pc->Is(CT_ANGLE_OPEN))
- && ( ( options::indent_func_call_param()
- && ( pc->GetParentType() == CT_FUNC_CALL
- || pc->GetParentType() == CT_FUNC_CALL_USER))
- || ( options::indent_func_proto_param()
- && pc->GetParentType() == CT_FUNC_PROTO)
- || ( options::indent_func_class_param()
- && ( pc->GetParentType() == CT_FUNC_CLASS_DEF
- || pc->GetParentType() == CT_FUNC_CLASS_PROTO))
- || ( options::indent_template_param()
- && pc->GetParentType() == CT_TEMPLATE)
- || ( options::indent_func_ctor_var_param()
- && pc->GetParentType() == CT_FUNC_CTOR_VAR)
- || ( options::indent_func_def_param()
- && pc->GetParentType() == CT_FUNC_DEF)
- || ( !options::indent_func_def_param() // Issue #931
- && pc->GetParentType() == CT_FUNC_DEF
- && options::indent_func_def_param_paren_pos_threshold() > 0
- && pc->GetOrigCol() > options::indent_func_def_param_paren_pos_threshold())))
- {
- log_rule_B("indent_func_call_param");
- log_rule_B("indent_func_proto_param");
- log_rule_B("indent_func_class_param");
- log_rule_B("indent_template_param");
- log_rule_B("indent_func_ctor_var_param");
- log_rule_B("indent_func_def_param");
- log_rule_B("indent_func_def_param_paren_pos_threshold");
- // Skip any continuation indents
- size_t idx = (!frm.empty()) ? frm.size() - 2 : 0;
-
- while ( ( ( idx > 0
- && frm.at(idx).type != CT_BRACE_OPEN
- && frm.at(idx).type != CT_VBRACE_OPEN
- && frm.at(idx).type != CT_PAREN_OPEN
- && frm.at(idx).type != CT_FPAREN_OPEN
- && frm.at(idx).type != CT_SPAREN_OPEN
- && frm.at(idx).type != CT_SQUARE_OPEN
- && frm.at(idx).type != CT_ANGLE_OPEN
- && frm.at(idx).type != CT_CASE
- && frm.at(idx).type != CT_MEMBER
- && frm.at(idx).type != CT_QUESTION
- && frm.at(idx).type != CT_COND_COLON
- && frm.at(idx).type != CT_LAMBDA
- && frm.at(idx).type != CT_ASSIGN_NL)
- || frm.at(idx).pc->IsOnSameLine(frm.top().pc))
- && ( frm.at(idx).type != CT_CLASS_COLON
- && frm.at(idx).type != CT_CONSTR_COLON
- && !( frm.at(idx).type == CT_LAMBDA
- && frm.at(idx).pc->GetPrevNc()->GetType() == CT_NEWLINE)))
- {
- if (idx == 0)
- {
- fprintf(stderr, "%s(%d): idx is ZERO, cannot be decremented, at line %zu, column %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- idx--;
- skipped = true;
- }
- // PR#381
- log_rule_B("indent_param");
-
- if (options::indent_param() != 0)
- {
- frm.top().indent = frm.at(idx).indent + options::indent_param();
- log_indent();
- }
- else
- {
- frm.top().indent = frm.at(idx).indent + indent_size;
- log_indent();
- }
- log_rule_B("indent_func_param_double");
-
- if (options::indent_func_param_double())
- {
- // double is: Use both values of the options indent_columns and indent_param
- frm.top().indent += indent_size;
- log_indent();
- }
- frm.top().indent_tab = frm.top().indent;
- }
- else if ( options::indent_oc_inside_msg_sel()
- && pc->Is(CT_PAREN_OPEN)
- && frm.size() > 2
- && ( frm.prev().type == CT_OC_MSG_FUNC
- || frm.prev().type == CT_OC_MSG_NAME)
- && !options::indent_align_paren()) // Issue #2658
- {
- log_rule_B("indent_oc_inside_msg_sel");
- log_rule_B("indent_align_paren");
- // When parens are inside OC messages, push on the parse frame stack
- // [Class Message:(<here>
- frm.top().indent = frm.prev().pc->GetColumn() + indent_size;
- log_indent();
- frm.top().indent_tab = frm.top().indent;
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
- }
- else if ( pc->Is(CT_PAREN_OPEN)
- && !pc->GetNext()->IsNewline()
- && !options::indent_align_paren()
- && !pc->TestFlags(PCF_IN_SPAREN))
- {
- log_rule_B("indent_align_paren");
- size_t idx = frm.size() - 2;
-
- while ( idx > 0
- && frm.at(idx).pc->IsOnSameLine(frm.top().pc))
- {
- idx--;
- skipped = true;
- }
- frm.top().indent = frm.at(idx).indent + indent_size;
- log_indent();
-
- frm.top().indent_tab = frm.top().indent;
- skipped = true;
- }
- else if ( ( pc->IsString("(")
- && !options::indent_paren_nl())
- || ( pc->IsString("<")
- && !options::indent_paren_nl()) // TODO: add indent_angle_nl?
- || ( pc->IsString("[")
- && !options::indent_square_nl()))
- {
- log_rule_B("indent_paren_nl");
- log_rule_B("indent_square_nl");
- Chunk *next = pc->GetNextNc();
-
- if (next->IsNullChunk())
- {
- break;
- }
- log_rule_B("indent_paren_after_func_def");
- log_rule_B("indent_paren_after_func_decl");
- log_rule_B("indent_paren_after_func_call");
-
- if ( next->IsNewline()
- && !options::indent_paren_after_func_def()
- && !options::indent_paren_after_func_decl()
- && !options::indent_paren_after_func_call())
- {
- size_t sub = 2;
-
- if ( (frm.prev().type == CT_ASSIGN)
- || (frm.prev().type == CT_RETURN))
- {
- sub = 3;
- }
- sub = frm.size() - sub;
-
- log_rule_B("indent_align_paren");
-
- if (!options::indent_align_paren())
- {
- sub = frm.size() - 2;
-
- while ( sub > 0
- && frm.at(sub).pc->IsOnSameLine(frm.top().pc))
- {
- sub--;
- skipped = true;
- }
-
- if ( ( frm.at(sub + 1).type == CT_CLASS_COLON
- || frm.at(sub + 1).type == CT_CONSTR_COLON)
- && (frm.at(sub + 1).pc->GetPrev()->Is(CT_NEWLINE)))
- {
- sub = sub + 1;
- }
- }
- frm.top().indent = frm.at(sub).indent + indent_size;
- log_indent();
-
- frm.top().indent_tab = frm.top().indent;
- skipped = true;
- }
- else
- {
- if ( next->IsNotNullChunk()
- && !next->IsComment())
- {
- if (next->Is(CT_SPACE))
- {
- next = next->GetNextNc();
-
- if (next->IsNullChunk())
- {
- break;
- }
- }
-
- if (next->GetPrev()->IsComment())
- {
- // Issue #2099
- frm.top().indent = next->GetPrev()->GetColumn();
- }
- else
- {
- frm.top().indent = next->GetColumn();
- }
- log_indent();
- }
- }
- }
- log_rule_B("use_indent_continue_only_once");
- log_rule_B("indent_paren_after_func_decl");
- log_rule_B("indent_paren_after_func_def");
- log_rule_B("indent_paren_after_func_call");
-
- if ( ( ( !frm.top().indent_cont // Issue #3567
- && vardefcol == 0)
- || ( !options::use_indent_continue_only_once() // Issue #1160
- && !options::indent_ignore_first_continue())) // Issue #3561
- && ( pc->Is(CT_FPAREN_OPEN)
- && pc->GetPrev()->IsNewline())
- && ( ( ( pc->GetParentType() == CT_FUNC_PROTO
- || pc->GetParentType() == CT_FUNC_CLASS_PROTO)
- && options::indent_paren_after_func_decl())
- || ( ( pc->GetParentType() == CT_FUNC_DEF
- || pc->GetParentType() == CT_FUNC_CLASS_DEF)
- && options::indent_paren_after_func_def())
- || ( ( pc->GetParentType() == CT_FUNC_CALL
- || pc->GetParentType() == CT_FUNC_CALL_USER)
- && options::indent_paren_after_func_call())
- || !pc->GetNext()->IsNewline()))
- {
- frm.top().indent = frm.prev().indent + indent_size;
- log_indent();
-
- indent_column_set(frm.top().indent);
- }
- log_rule_B("indent_continue");
-
- if ( pc->GetParentType() != CT_OC_AT
- && ( options::indent_ignore_first_continue()
- || options::indent_continue() != 0)
- && !skipped)
- {
- if (options::indent_ignore_first_continue())
- {
- frm.top().indent = get_indent_first_continue(pc->GetNext());
- }
- else
- {
- frm.top().indent = frm.prev().indent;
- }
- log_indent();
-
- if ( pc->GetLevel() == pc->GetBraceLevel()
- && !options::indent_ignore_first_continue()
- && ( pc->Is(CT_FPAREN_OPEN)
- || pc->Is(CT_SPAREN_OPEN)
- || ( pc->Is(CT_SQUARE_OPEN)
- && pc->GetParentType() != CT_OC_MSG)
- || pc->Is(CT_ANGLE_OPEN))) // Issue #1170
- {
- //log_rule_B("indent_continue");
- //frm.top().indent += abs(options::indent_continue());
- // frm.top().indent = calc_indent_continue(frm);
- // frm.top().indent_cont = true;
- log_rule_B("use_indent_continue_only_once");
-
- if ( (options::use_indent_continue_only_once())
- && (frm.top().indent_cont)
- && vardefcol != 0)
- {
- /*
- * The value of the indentation for a continuation line is calculate
- * differently if the line is:
- * a declaration :your case with QString fileName ...
- * an assignment :your case with pSettings = new QSettings( ...
- * At the second case the option value might be used twice:
- * at the assignment
- * at the function call (if present)
- * If you want to prevent the double use of the option value
- * you may use the new option :
- * use_indent_continue_only_once
- * with the value "true".
- * use/don't use indent_continue once Guy 2016-05-16
- */
-
- // if vardefcol isn't zero, use it
- frm.top().indent = vardefcol;
- log_indent();
- }
- else
- {
- frm.top().indent = calc_indent_continue(frm);
- log_indent();
- frm.top().indent_cont = true;
-
- log_rule_B("indent_sparen_extra");
-
- if ( pc->Is(CT_SPAREN_OPEN)
- && options::indent_sparen_extra() != 0)
- {
- frm.top().indent += options::indent_sparen_extra();
- log_indent();
- }
- }
- }
- }
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
-
- frm.paren_count++;
- }
- else if ( options::indent_member_single()
- && pc->Is(CT_MEMBER)
- && (strcmp(pc->Text(), ".") == 0)
- && language_is_set(LANG_CS | LANG_CPP))
- {
- log_rule_B("indent_member_single");
-
- if (frm.top().type != CT_MEMBER)
- {
- frm.push(pc, __func__, __LINE__);
- Chunk *tmp = frm.top().pc->GetPrevNcNnlNpp();
-
- if (frm.prev().pc->IsOnSameLine(tmp))
- {
- frm.top().indent = frm.prev().indent;
- }
- else
- {
- frm.top().indent = frm.prev().indent + indent_size;
- }
- log_indent();
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
- }
-
- if (pc->GetPrev()->IsNewline())
- {
- if ( pc->Is(CT_MEMBER) // Issue #2890
- && language_is_set(LANG_CPP))
- {
- // will be done at another place
- // look at the comment: XXXXXXXXXXXXXXXXXXXXXXXXXX
- }
- else
- {
- indent_column_set(frm.top().indent);
- reindent_line(pc, indent_column);
- did_newline = false;
- }
- }
- //check for the series of CT_member chunks else pop it.
- Chunk *tmp = pc->GetNextNcNnlNpp();
-
- if (tmp->IsNotNullChunk())
- {
- if (tmp->Is(CT_FUNC_CALL))
- {
- tmp = tmp->GetNextType(CT_FPAREN_CLOSE, tmp->GetLevel());
- tmp = tmp->GetNextNcNnlNpp();
- }
- else if ( tmp->Is(CT_WORD)
- || tmp->Is(CT_TYPE))
- {
- tmp = tmp->GetNextNcNnlNpp();
- }
- }
-
- if ( tmp->IsNotNullChunk()
- && ( (strcmp(tmp->Text(), ".") != 0)
- || tmp->IsNot(CT_MEMBER)))
- {
- if (tmp->IsParenClose())
- {
- tmp = tmp->GetPrevNcNnlNpp();
- }
- Chunk *local_prev = tmp->GetPrev(); // Issue #3294
-
- if (local_prev->IsComment())
- {
- tmp = tmp->GetPrev(); // Issue #3294
- }
-
- if ( tmp->IsNotNullChunk()
- && tmp->GetPrev()->IsNewline())
- {
- tmp = tmp->GetPrevNcNnlNpp()->GetNextNl();
- }
-
- if (tmp->IsNotNullChunk())
- {
- frm.top().pop_pc = tmp;
- }
- }
- }
- else if ( pc->Is(CT_ASSIGN)
- || pc->Is(CT_IMPORT)
- || ( pc->Is(CT_USING)
- && language_is_set(LANG_CS)))
- {
- /*
- * if there is a newline after the '=' or the line starts with a '=',
- * just indent one level,
- * otherwise align on the '='.
- */
- if ( pc->Is(CT_ASSIGN)
- && pc->GetPrev()->IsNewline())
- {
- if (frm.top().type == CT_ASSIGN_NL)
- {
- frm.top().indent_tmp = frm.top().indent;
- }
- else
- {
- frm.top().indent_tmp = frm.top().indent + indent_size;
- }
- log_indent_tmp();
-
- indent_column_set(frm.top().indent_tmp);
- LOG_FMT(LINDENT, "%s(%d): %zu] assign => %zu [%s]\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- reindent_line(pc, frm.top().indent_tmp);
- }
- Chunk *next = pc->GetNext();
-
- if (next->IsNotNullChunk())
- {
- /*
- * fixes 1260 , 1268 , 1277 (Extra indentation after line with multiple assignments)
- * For multiple consecutive assignments in single line , the indent of all these
- * assignments should be same and one more than this line's indent.
- * so popping the previous assign and pushing the new one
- */
- if ( frm.top().type == CT_ASSIGN
- && pc->Is(CT_ASSIGN))
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
- frm.push(pc, __func__, __LINE__);
-
- if ( pc->Is(CT_ASSIGN)
- && pc->GetPrev()->IsNewline())
- {
- frm.top().type = CT_ASSIGN_NL;
- }
- log_rule_B("indent_continue");
-
- if (options::indent_ignore_first_continue())
- {
- frm.top().indent = get_indent_first_continue(pc);
- log_indent();
- frm.top().indent_cont = true; // Issue #3567
- }
- else if (options::indent_continue() != 0)
- {
- frm.top().indent = frm.prev().indent;
- log_indent();
-
- if ( pc->GetLevel() == pc->GetBraceLevel()
- && ( pc->IsNot(CT_ASSIGN)
- || ( pc->GetParentType() != CT_FUNC_PROTO
- && pc->GetParentType() != CT_FUNC_DEF)))
- {
- log_rule_B("use_indent_continue_only_once");
-
- if ( (options::use_indent_continue_only_once())
- && (frm.top().indent_cont)
- && vardefcol != 0)
- {
- // if vardefcol isn't zero, use it
- frm.top().indent = vardefcol;
- log_indent();
- }
- else
- {
- frm.top().indent = calc_indent_continue(frm);
- log_indent();
-
- vardefcol = frm.top().indent; // use the same variable for the next line
- frm.top().indent_cont = true;
- }
- }
- }
- else if ( next->IsNewline()
- || !options::indent_align_assign())
- {
- log_rule_B("indent_align_assign");
- log_rule_B("indent_off_after_assign");
-
- if (options::indent_off_after_assign()) // Issue #2591
- {
- frm.top().indent = frm.prev().indent_tmp;
- }
- else
- {
- frm.top().indent = frm.prev().indent_tmp + indent_size;
- }
- log_indent();
-
- if ( pc->Is(CT_ASSIGN)
- && next->IsNewline())
- {
- frm.top().type = CT_ASSIGN_NL;
- frm.top().indent_tab = frm.top().indent;
- }
- }
- else
- {
- frm.top().indent = pc->GetColumn() + pc->Len() + 1;
- log_indent();
- }
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
- }
- }
- else if ( pc->Is(CT_RETURN)
- || ( pc->Is(CT_THROW)
- && pc->GetParentType() == CT_NONE))
- {
- // don't count returns inside a () or []
- if ( pc->GetLevel() == pc->GetBraceLevel()
- || pc->TestFlags(PCF_IN_LAMBDA))
- {
- Chunk *next = pc->GetNext();
-
- // Avoid indentation on return token set by the option.
- log_rule_B("indent_off_after_return");
-
- // Avoid indentation on return token if the next token is a new token
- // to properly indent object initializers returned by functions.
- log_rule_B("indent_off_after_return_new");
- bool indent_after_return = ( next->IsNotNullChunk()
- && next->GetType() == CT_NEW)
- ? !options::indent_off_after_return_new()
- : !options::indent_off_after_return();
-
- if ( indent_after_return
- || next->IsNullChunk())
- {
- frm.push(pc, __func__, __LINE__);
-
- log_rule_B("indent_single_after_return");
-
- if ( next->IsNewline()
- || ( pc->Is(CT_RETURN)
- && options::indent_single_after_return()))
- {
- // apply normal single indentation
- frm.top().indent = frm.prev().indent + indent_size;
- }
- else
- {
- // indent after the return token
- frm.top().indent = frm.prev().indent + pc->Len() + 1;
- }
- log_indent();
- frm.top().indent_tmp = frm.prev().indent;
- log_indent_tmp();
- }
- log_indent();
- }
- }
- else if ( pc->Is(CT_OC_SCOPE)
- || pc->Is(CT_TYPEDEF))
- {
- frm.push(pc, __func__, __LINE__);
- // Issue #405
- frm.top().indent = frm.prev().indent;
- log_indent();
-
- frm.top().indent_tmp = frm.top().indent;
- LOG_FMT(LINDLINE, "%s(%d): .indent is %zu, .indent_tmp is %zu\n",
- __func__, __LINE__, frm.top().indent, frm.top().indent_tmp);
-
- log_rule_B("indent_continue");
-
- if (options::indent_ignore_first_continue())
- {
- frm.top().indent = get_indent_first_continue(pc);
- log_indent();
- }
- else if (options::indent_continue() != 0)
- {
- frm.top().indent = calc_indent_continue(frm, frm.size() - 2);
- log_indent();
-
- frm.top().indent_cont = true;
- }
- else
- {
- frm.top().indent = frm.prev().indent + indent_size;
- log_indent();
- }
- }
- else if (pc->Is(CT_C99_MEMBER))
- {
- // nothing to do
- }
- else if (pc->Is(CT_WHERE_SPEC))
- {
- /* class indentation is ok already, just need to adjust func */
- /* TODO: make this configurable, obviously.. */
- if ( pc->GetParentType() == CT_FUNC_DEF
- || pc->GetParentType() == CT_FUNC_PROTO
- || ( pc->GetParentType() == CT_STRUCT
- && frm.top().type != CT_CLASS_COLON))
- {
- indent_column_set(frm.top().indent + 4);
- }
- }
- else if ( options::indent_inside_ternary_operator()
- && ( pc->Is(CT_QUESTION)
- || pc->Is(CT_COND_COLON))) // Issue #1130, #1715
- {
- log_rule_B("indent_inside_ternary_operator");
-
- // Pop any colons before because they should already be processed
- while ( pc->Is(CT_COND_COLON)
- && frm.top().type == CT_COND_COLON)
- {
- frm.pop(__func__, __LINE__, pc);
- }
- log_rule_B("indent_inside_ternary_operator");
-
- // Pop Question from stack in ternary operator
- if ( options::indent_inside_ternary_operator()
- && pc->Is(CT_COND_COLON)
- && frm.top().type == CT_QUESTION)
- {
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- indent_column_set(frm.top().indent_tmp);
- }
- frm.push(pc, __func__, __LINE__);
-
- frm.top().indent = frm.prev().indent + indent_size;
- frm.top().indent_tab = frm.top().indent;
- log_indent();
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
- }
- else if ( pc->Is(CT_LAMBDA)
- && (language_is_set(LANG_CS | LANG_JAVA))
- && pc->GetNextNcNnlNpp()->IsNot(CT_BRACE_OPEN)
- && options::indent_cs_delegate_body())
- {
- log_rule_B("indent_cs_delegate_body");
- frm.push(pc, __func__, __LINE__);
- frm.top().indent = frm.prev().indent;
- log_indent();
-
- if ( pc->GetPrevNc()->IsNewline()
- && !frm.prev().pc->IsOnSameLine(pc->GetPrevNcNnl()))
- {
- frm.top().indent = frm.prev().indent + indent_size;
- log_indent();
- reindent_line(pc, (frm.prev().indent + indent_size));
- did_newline = false;
- }
- else if ( pc->GetNextNc()->IsNewline()
- && !frm.prev().pc->IsOnSameLine(frm.top().pc))
- {
- frm.top().indent = frm.prev().indent + indent_size;
- }
- log_indent();
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
- }
- else if ( options::indent_oc_inside_msg_sel()
- && ( pc->Is(CT_OC_MSG_FUNC)
- || pc->Is(CT_OC_MSG_NAME))
- && pc->GetNextNcNnl()->Is(CT_OC_COLON)) // Issue #2658
- {
- log_rule_B("indent_oc_inside_msg_sel");
- // Pop the OC msg name that is on the top of the stack
- // [Class Message:<here>
- frm.push(pc, __func__, __LINE__);
-
- frm.top().indent = frm.prev().indent;
- frm.top().indent_tab = frm.prev().indent_tab;
- log_indent();
- frm.top().indent_tmp = frm.prev().indent_tmp;
- log_indent_tmp();
- }
- else if (pc->IsComment())
- {
- // Issue #3294
- Chunk *next = pc->GetNext();
-
- if (next->Is(CT_COND_COLON))
- {
- LOG_FMT(LINDLINE, "%s(%d): Comment and COND_COLON: pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- frm.pop(__func__, __LINE__, pc);
- }
-// uncomment the line below to get debug info
-// #define ANYTHING_ELSE
-#ifdef ANYTHING_ELSE
- else
- {
- // anything else?
- // Issue #3294
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- LOG_FMT(LSPACE, "\n\n%s(%d): WARNING: unrecognize indent_text:\n",
- __func__, __LINE__);
- }
-#endif /* ANYTHING_ELSE */
- }
- else
- {
- // anything else?
-#ifdef ANYTHING_ELSE
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- LOG_FMT(LSPACE, "\n\n%s(%d): WARNING: unrecognize indent_text:\n",
- __func__, __LINE__);
-#endif /* ANYTHING_ELSE */
- }
- // Handle shift expression continuation indenting
- size_t shiftcontcol = 0;
-
- log_rule_B("indent_shift");
-
- if ( options::indent_shift() == 1
- && !pc->TestFlags(PCF_IN_ENUM)
- && pc->GetParentType() != CT_OPERATOR
- && !pc->IsComment()
- && pc->IsNot(CT_BRACE_OPEN)
- && pc->GetLevel() > 0
- && !pc->IsEmptyText())
- {
- bool in_shift = false;
- bool is_operator = false;
-
- // Are we in such an expression? Go both forwards and backwards.
- Chunk *tmp = pc;
-
- do
- {
- if (tmp->Is(CT_SHIFT))
- {
- in_shift = true;
- LOG_FMT(LINDENT2, "%s(%d): in_shift set to TRUE\n",
- __func__, __LINE__);
-
- tmp = tmp->GetPrevNcNnl();
-
- if (tmp->Is(CT_OPERATOR))
- {
- is_operator = true;
- }
- break;
- }
- tmp = tmp->GetPrevNcNnl();
- } while ( !in_shift
- && tmp->IsNotNullChunk()
- && tmp->IsNot(CT_SEMICOLON)
- && tmp->IsNot(CT_BRACE_OPEN)
- && tmp->IsNot(CT_BRACE_CLOSE)
- && tmp->IsNot(CT_COMMA)
- && tmp->IsNot(CT_SPAREN_OPEN)
- && tmp->IsNot(CT_SPAREN_CLOSE));
-
- tmp = pc;
-
- do
- {
- tmp = tmp->GetNextNcNnl();
-
- if ( tmp->IsNotNullChunk()
- && tmp->Is(CT_SHIFT))
- {
- in_shift = true;
- LOG_FMT(LINDENT2, "%s(%d): in_shift set to TRUE\n",
- __func__, __LINE__);
-
- tmp = tmp->GetPrevNcNnl();
-
- if (tmp->Is(CT_OPERATOR))
- {
- is_operator = true;
- }
- break;
- }
- } while ( !in_shift
- && tmp->IsNotNullChunk()
- && tmp->IsNot(CT_SEMICOLON)
- && tmp->IsNot(CT_BRACE_OPEN)
- && tmp->IsNot(CT_BRACE_CLOSE)
- && tmp->IsNot(CT_COMMA)
- && tmp->IsNot(CT_SPAREN_OPEN)
- && tmp->IsNot(CT_SPAREN_CLOSE));
-
- LOG_FMT(LINDENT2, "%s(%d): in_shift is %s\n",
- __func__, __LINE__, in_shift ? "TRUE" : "FALSE");
- Chunk *prev_nonl = pc->GetPrevNcNnl();
- Chunk *prev2 = pc->GetPrevNc();
-
- if (( prev_nonl->IsSemicolon()
- || prev_nonl->IsBraceOpen()
- || prev_nonl->IsBraceClose()
- || prev_nonl->Is(CT_CASE_COLON)
- || ( prev_nonl->IsNotNullChunk()
- && prev_nonl->TestFlags(PCF_IN_PREPROC)) != pc->TestFlags(PCF_IN_PREPROC)
- || prev_nonl->Is(CT_COMMA)
- || is_operator))
- {
- in_shift = false;
- }
- LOG_FMT(LINDENT2, "%s(%d): in_shift is %s\n",
- __func__, __LINE__, in_shift ? "TRUE" : "FALSE");
-
- if ( prev2->Is(CT_NEWLINE)
- && in_shift)
- {
- shiftcontcol = calc_indent_continue(frm);
- // Setting frm.top().indent_cont = true in the top context when the indent is not also set
- // just leads to complications when succeeding statements try to indent based on being
- // embedded in a continuation. In other words setting frm.top().indent_cont = true
- // should only be set if frm.top().indent is also set.
-
- // Work around the doubly increased indent in RETURNs and assignments
- bool need_workaround = false;
- size_t sub = 0;
-
- for (int i = frm.size() - 1; i >= 0; i--)
- {
- if ( frm.at(i).type == CT_RETURN
- || frm.at(i).type == CT_ASSIGN)
- {
- need_workaround = true;
- sub = frm.size() - i;
- break;
- }
- }
-
- if (need_workaround)
- {
- shiftcontcol = calc_indent_continue(frm, frm.size() - 1 - sub);
- }
- }
- }
-
- // Handle variable definition continuation indenting
- if ( vardefcol == 0
- && ( pc->Is(CT_WORD)
- || pc->Is(CT_FUNC_CTOR_VAR))
- && !pc->TestFlags(PCF_IN_FCN_DEF)
- && pc->TestFlags(PCF_VAR_1ST_DEF))
- {
- log_rule_B("indent_continue");
-
- if (options::indent_ignore_first_continue())
- {
- vardefcol = get_indent_first_continue(pc);
- }
- else if (options::indent_continue() != 0)
- {
- vardefcol = calc_indent_continue(frm);
- // Setting frm.top().indent_cont = true in the top context when the indent is not also set
- // just leads to complications when succeeding statements try to indent based on being
- // embedded in a continuation. In other words setting frm.top().indent_cont = true
- // should only be set if frm.top().indent is also set.
- }
- else if ( options::indent_var_def_cont()
- || pc->GetPrev()->IsNewline())
- {
- log_rule_B("indent_var_def_cont");
- vardefcol = frm.top().indent + indent_size;
- }
- else
- {
- // Issue #3010
- vardefcol = pc->GetColumn();
- // BUT, we need to skip backward over any '*'
- Chunk *tmp = pc->GetPrevNc();
-
- while (tmp->Is(CT_PTR_TYPE))
- {
- vardefcol = tmp->GetColumn();
- tmp = tmp->GetPrevNc();
- }
- // BUT, we need to skip backward over any '::' or TYPE
- //tmp = pc->GetPrevNc();
-
- //if (tmp->Is(CT_DC_MEMBER))
- //{
- // // look for a type
- // Chunk *tmp2 = tmp->GetPrevNc();
- // if (tmp2->Is(CT_TYPE))
- // {
- // // we have something like "SomeLongNamespaceName::Foo()"
- // vardefcol = tmp2->GetColumn();
- // LOG_FMT(LINDENT, "%s(%d): orig line is %zu, vardefcol is %zu\n",
- // __func__, __LINE__, pc->GetOrigLine(), vardefcol);
- // }
- //}
- }
- }
-
- if ( pc->IsSemicolon()
- || ( pc->Is(CT_BRACE_OPEN)
- && ( pc->GetParentType() == CT_FUNCTION
- || pc->GetParentType() == CT_CLASS))) //Issue #3576
- {
- vardefcol = 0;
- }
-
- // Indent the line if needed
- if ( did_newline
- && !pc->IsNewline()
- && (pc->Len() != 0))
- {
- pc->SetColumnIndent(frm.top().indent_tab);
-
- if (frm.top().ip.ref)
- {
- pc->IndentData().ref = frm.top().ip.ref;
- pc->IndentData().delta = frm.top().ip.delta;
- }
- LOG_FMT(LINDENT2, "%s(%d): orig line is %zu, pc->GetColumn() indent is %zu, indent_column is %zu, for '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetColumnIndent(), indent_column, pc->ElidedText(copy));
-
- /*
- * Check for special continuations.
- * Note that some of these could be done as a stack item like
- * everything else
- */
-
- Chunk *prev = pc->GetPrevNcNnl();
- Chunk *prevv = prev->GetPrevNcNnl();
- Chunk *next = pc->GetNextNcNnl();
-
- bool do_vardefcol = false;
-
- if ( vardefcol > 0
- && pc->GetLevel() == pc->GetBraceLevel()
- && ( prev->Is(CT_COMMA)
- || prev->Is(CT_TYPE)
- || prev->Is(CT_PTR_TYPE)
- || prev->Is(CT_WORD)))
- {
- Chunk *tmp = pc;
-
- while (tmp->Is(CT_PTR_TYPE))
- {
- tmp = tmp->GetNextNcNnl();
- }
- LOG_FMT(LINDENT2, "%s(%d): orig line is %zu, for '%s'",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->Text());
- LOG_FMT(LINDENT2, " tmp->GetFlags(): ");
- log_pcf_flags(LINDENT2, tmp->GetFlags()); // Issue #2332
-
- if ( tmp->TestFlags(PCF_VAR_DEF)
- && ( tmp->Is(CT_WORD)
- || tmp->Is(CT_FUNC_CTOR_VAR)))
- {
- do_vardefcol = true;
- }
- }
- //LOG_FMT(LINDENT2, "%s(%d): GUY 2:\n", __func__, __LINE__);
-
- if (pc->TestFlags(PCF_DONT_INDENT))
- {
- // no change
- }
- else if ( pc->GetParentType() == CT_SQL_EXEC
- && options::indent_preserve_sql())
- {
- log_rule_B("indent_preserve_sql");
- reindent_line(pc, sql_col + (pc->GetOrigCol() - sql_orig_col));
- LOG_FMT(LINDENT, "Indent SQL: [%s] to %zu (%zu/%zu)\n",
- pc->Text(), pc->GetColumn(), sql_col, sql_orig_col);
- }
- else if ( !options::indent_member_single()
- && !pc->TestFlags(PCF_STMT_START)
- && ( pc->Is(CT_MEMBER)
- || ( pc->Is(CT_DC_MEMBER)
- && prev->Is(CT_TYPE))
- || ( prev->Is(CT_MEMBER)
- || ( prev->Is(CT_DC_MEMBER)
- && prevv->Is(CT_TYPE)))))
- {
- log_rule_B("indent_member_single");
- log_rule_B("indent_member");
- size_t tmp = options::indent_member() + indent_column;
- LOG_FMT(LINDENT, "%s(%d): orig line is %zu, member => %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), tmp);
- reindent_line(pc, tmp);
- }
- else if (do_vardefcol)
- {
- LOG_FMT(LINDENT, "%s(%d): orig line is %zu, vardefcol is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), vardefcol);
- reindent_line(pc, vardefcol);
- }
- else if (shiftcontcol > 0)
- {
- LOG_FMT(LINDENT, "%s(%d): orig line is %zu, shiftcontcol is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), shiftcontcol);
- reindent_line(pc, shiftcontcol);
- }
- else if ( pc->Is(CT_NAMESPACE)
- && options::indent_namespace()
- && options::indent_namespace_single_indent()
- && frm.top().ns_cnt)
- {
- log_rule_B("indent_namespace");
- log_rule_B("indent_namespace_single_indent");
- LOG_FMT(LINDENT, "%s(%d): orig line is %zu, Namespace => %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), frm.top().brace_indent);
- reindent_line(pc, frm.top().brace_indent);
- }
- else if ( pc->Is(CT_STRING)
- && prev->Is(CT_STRING)
- && options::indent_align_string())
- {
- log_rule_B("indent_align_string");
- const int tmp = (xml_indent != 0) ? xml_indent : prev->GetColumn();
-
- LOG_FMT(LINDENT, "%s(%d): orig line is %zu, String => %d\n",
- __func__, __LINE__, pc->GetOrigLine(), tmp);
- reindent_line(pc, tmp);
- }
- else if (pc->IsComment())
- {
- LOG_FMT(LINDENT, "%s(%d): orig line is %zu, comment => %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), frm.top().indent_tmp);
- indent_comment(pc, frm.top().indent_tmp);
- }
- else if (pc->Is(CT_PREPROC))
- {
- LOG_FMT(LINDENT, "%s(%d): orig line is %zu, pp-indent => %zu [%s]\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- reindent_line(pc, indent_column);
- }
- else if ( pc->IsParenClose()
- || pc->Is(CT_ANGLE_CLOSE))
- {
- /*
- * This is a big hack. We assume that since we hit a paren close,
- * that we just removed a paren open
- */
- LOG_FMT(LINDLINE, "%s(%d): indent_column is %zu\n",
- __func__, __LINE__, indent_column);
-
- if (frm.poped().type == E_Token(pc->GetType() - 1))
- {
- // Issue # 405
- LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- Chunk *ck1 = frm.poped().pc;
- LOG_FMT(LINDLINE, "%s(%d): ck1 orig line is %zu, orig col is %zu, Text() is '%s', GetType() is %s\n",
- __func__, __LINE__, ck1->GetOrigLine(), ck1->GetOrigCol(), ck1->Text(), get_token_name(ck1->GetType()));
- Chunk *ck2 = ck1->GetPrev();
- LOG_FMT(LINDLINE, "%s(%d): ck2 orig line is %zu, orig col is %zu, Text() is '%s', GetType() is %s\n",
- __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol(), ck2->Text(), get_token_name(ck2->GetType()));
-
- log_rule_B("indent_paren_close");
-
- if (options::indent_paren_close() == -1)
- {
- LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_paren_close is -1\n",
- __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol());
- indent_column_set(pc->GetOrigCol());
- LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_column set to %zu\n",
- __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol(), indent_column);
- }
- else if ( ck2->IsNewline()
- || (options::indent_paren_close() == 1))
- {
- /*
- * If the open parenthesis was the first thing on the line or we
- * are doing mode 1, then put the close parenthesis in the same
- * column
- */
- LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_paren_close is 1\n",
- __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol());
- indent_column_set(ck1->GetColumn());
- LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_column set to %zu\n",
- __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol(), indent_column);
- }
- else
- {
- if (options::indent_paren_close() != 2)
- {
- // indent_paren_close is 0 or 1
- LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_paren_close is 0 or 1\n",
- __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol());
- indent_column_set(frm.poped().indent_tmp);
- LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_column set to %zu\n",
- __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol(), indent_column);
- pc->SetColumnIndent(frm.poped().indent_tab);
- log_rule_B("indent_paren_close");
-
- if (options::indent_paren_close() == 1)
- {
- LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_paren_close is 1\n",
- __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol());
-
- if (indent_column == 0)
- {
- fprintf(stderr, "%s(%d): indent_column is ZERO, cannot be decremented, at line %zu, column %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- indent_column--;
- LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_column set to %zu\n",
- __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol(), indent_column);
- }
- }
- else
- {
- // indent_paren_close is 2: Indent to the brace level
- LOG_FMT(LINDLINE, "%s(%d): indent_paren_close is 2\n",
- __func__, __LINE__);
- LOG_FMT(LINDLINE, "%s(%d): ck2 orig line is %zu, orig col is %zu, ck2->Text() is '%s'\n",
- __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol(), ck2->Text());
-
- if (pc->GetPrev()->GetType() == CT_NEWLINE)
- {
- LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- LOG_FMT(LINDLINE, "%s(%d): prev is <newline>\n",
- __func__, __LINE__);
- Chunk *search = pc;
-
- while (search->GetNext()->IsParenClose())
- {
- search = search->GetNext();
- }
- Chunk *searchNext = search->GetNext();
-
- // Issue #3407 - Skip over a possible 'noexcept' keyword before going forward.
- if (searchNext->GetType() == CT_NOEXCEPT)
- {
- searchNext = searchNext->GetNext();
- }
-
- if ( searchNext->GetType() == CT_SEMICOLON
- || searchNext->GetType() == CT_MEMBER // Issue #2582
- || searchNext->GetType() == CT_NEWLINE)
- {
- LOG_FMT(LINDLINE, "%s(%d):\n", __func__, __LINE__);
- search = search->GetOpeningParen();
-
- if ( options::indent_oc_inside_msg_sel()
- && search->GetPrevNcNnl()->Is(CT_OC_COLON)
- && ( frm.top().type == CT_OC_MSG_FUNC
- || frm.top().type == CT_OC_MSG_NAME)) // Issue #2658
- {
- log_rule_B("indent_oc_inside_msg_sel");
- // [Class Message:(...)<here>
- indent_column_set(frm.top().pc->GetColumn());
- }
- else if ( options::indent_inside_ternary_operator()
- && ( frm.top().type == CT_QUESTION
- || frm.top().type == CT_COND_COLON)) // Issue #1130, #1715
- {
- log_rule_B("indent_inside_ternary_operator");
- indent_column_set(frm.top().indent);
- }
- else
- {
- search = search->GetPrevNl()->GetNext();
-
- if (search->IsNullChunk())
- {
- search = Chunk::GetHead();
- }
- indent_column_set(search->GetColumn());
- }
- }
- }
- }
- }
- }
- size_t indent_value = 0;
- LOG_FMT(LINDENT, "%s(%d): orig line is %zu, closing parenthesis => %zu, text is '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- LOG_FMT(LINDENT, "%s(%d): [%s/%s]\n",
- __func__, __LINE__,
- get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
- Chunk *prev2 = pc->GetPrev(); // Issue #2930
- LOG_FMT(LINDENT, "%s(%d): prev2 is orig line is %zu, text is '%s'\n",
- __func__, __LINE__, prev2->GetOrigLine(), prev2->Text());
- Chunk *next2 = pc->GetNext();
- LOG_FMT(LINDENT, "%s(%d): next2 is orig line is %zu, text is '%s'\n",
- __func__, __LINE__, next2->GetOrigLine(), next2->Text());
-
- if ( pc->GetParentType() == CT_FUNC_DEF
- && prev2->IsNewline()
- && next2->IsNewline())
- {
- if (options::donot_indent_func_def_close_paren())
- {
- indent_value = 1;
- }
- else
- {
- reindent_line(pc, indent_column);
- indent_value = indent_column;
- }
- }
- else
- {
- indent_value = indent_column;
- }
- reindent_line(pc, indent_value);
- }
- else if (pc->Is(CT_COMMA))
- {
- bool indent_align = false;
- bool indent_ignore = false;
-
- if (frm.top().pc->IsParenOpen())
- {
- log_rule_B("indent_comma_paren");
- indent_align = options::indent_comma_paren() == (int)indent_mode_e::ALIGN;
- indent_ignore = options::indent_comma_paren() == (int)indent_mode_e::IGNORE;
- }
- else if (frm.top().pc->IsBraceOpen())
- {
- log_rule_B("indent_comma_brace");
- indent_align = options::indent_comma_brace() == (int)indent_mode_e::ALIGN;
- indent_ignore = options::indent_comma_brace() == (int)indent_mode_e::IGNORE;
- }
-
- if (indent_ignore)
- {
- indent_column_set(pc->GetOrigCol());
- }
- else if (indent_align)
- {
- indent_column_set(frm.top().pc->GetColumn());
- }
- LOG_FMT(LINDENT, "%s(%d): %zu] comma => %zu [%s]\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- reindent_line(pc, indent_column);
- }
- else if ( options::indent_func_const()
- && pc->Is(CT_QUALIFIER)
- && strncasecmp(pc->Text(), "const", pc->Len()) == 0
- && ( next == nullptr
- || next->Is(CT_BRACED)
- || next->IsBraceOpen()
- || next->Is(CT_NEWLINE)
- || next->Is(CT_SEMICOLON)
- || next->Is(CT_THROW)))
- {
- // indent const - void GetFoo(void)\n const\n { return (m_Foo); }
- log_rule_B("indent_func_const");
- indent_column_set(frm.top().indent + options::indent_func_const());
- LOG_FMT(LINDENT, "%s(%d): %zu] const => %zu [%s]\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- reindent_line(pc, indent_column);
- }
- else if ( options::indent_func_throw()
- && pc->Is(CT_THROW)
- && pc->GetParentType() != CT_NONE)
- {
- // indent throw - void GetFoo(void)\n throw()\n { return (m_Foo); }
- log_rule_B("indent_func_throw");
- indent_column_set(options::indent_func_throw());
- LOG_FMT(LINDENT, "%s(%d): %zu] throw => %zu [%s]\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- reindent_line(pc, indent_column);
- }
- else if (pc->Is(CT_SEMICOLON))
- {
- if ( pc->TestFlags(PCF_IN_FOR)
- && options::indent_semicolon_for_paren())
- {
- log_rule_B("indent_semicolon_for_paren");
- indent_column_set(frm.top().pc->GetColumn());
-
- log_rule_B("indent_first_for_expr");
-
- if (options::indent_first_for_expr())
- {
- reindent_line(frm.top().pc->GetNext(),
- indent_column + pc->Len() + 1);
- }
- LOG_FMT(LINDENT, "%s(%d): %zu] SEMICOLON => %zu [%s]\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- reindent_line(pc, indent_column);
- }
- else
- {
- log_rule_B("indent_ignore_semicolon");
-
- if (options::indent_ignore_semicolon())
- {
- indent_column_set(pc->GetOrigCol());
- }
- LOG_FMT(LINDENT, "%s(%d): %zu] semicolon => %zu [%s]\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- reindent_line(pc, indent_column);
- }
- }
- else if (pc->Is(CT_BOOL))
- {
- if (frm.top().pc->IsParenOpen())
- {
- log_rule_B("indent_bool_paren");
-
- if (options::indent_bool_paren() == (int)indent_mode_e::IGNORE)
- {
- indent_column_set(pc->GetOrigCol());
- }
- else if (options::indent_bool_paren() == (int)indent_mode_e::ALIGN)
- {
- indent_column_set(frm.top().pc->GetColumn());
-
- log_rule_B("indent_first_bool_expr");
-
- if (options::indent_first_bool_expr())
- {
- reindent_line(frm.top().pc->GetNext(),
- indent_column + pc->Len() + 1);
- }
- }
- }
- else
- {
- log_rule_B("indent_ignore_bool");
-
- if (options::indent_ignore_bool())
- {
- indent_column_set(pc->GetOrigCol());
- }
- }
- LOG_FMT(LINDENT, "%s(%d): %zu] bool => %zu [%s]\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- reindent_line(pc, indent_column);
- }
- else if ( pc->Is(CT_ARITH)
- || pc->Is(CT_CARET))
- {
- log_rule_B("indent_ignore_arith");
-
- if (options::indent_ignore_arith())
- {
- indent_column_set(pc->GetOrigCol());
- }
- LOG_FMT(LINDENT, "%s(%d): %zu] arith => %zu [%s]\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- reindent_line(pc, indent_column);
- }
- else if (pc->Is(CT_SHIFT))
- {
- log_rule_B("indent_shift");
-
- if (options::indent_shift() == -1)
- {
- indent_column_set(pc->GetOrigCol());
- }
- LOG_FMT(LINDENT, "%s(%d): %zu] shift => %zu [%s]\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- reindent_line(pc, indent_column);
- }
- else if (pc->Is(CT_ASSIGN))
- {
- log_rule_B("indent_ignore_assign");
-
- if (options::indent_ignore_assign())
- {
- indent_column_set(pc->GetOrigCol());
- }
- LOG_FMT(LINDENT, "%s(%d): %zu] assign => %zu [%s]\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- reindent_line(pc, indent_column);
- }
- else if ( options::indent_ternary_operator() == 1
- && prev->Is(CT_COND_COLON))
- {
- log_rule_B("indent_ternary_operator");
- Chunk *tmp = prev->GetPrevType(CT_QUESTION);
-
- if (tmp->IsNotNullChunk())
- {
- tmp = tmp->GetNextNcNnl();
-
- if (tmp->IsNotNullChunk())
- {
- LOG_FMT(LINDENT, "%s: %zu] ternarydefcol => %zu [%s]\n",
- __func__, pc->GetOrigLine(), tmp->GetColumn(), pc->Text());
- reindent_line(pc, tmp->GetColumn());
- }
- }
- }
- else if ( options::indent_ternary_operator() == 2
- && pc->Is(CT_COND_COLON))
- {
- log_rule_B("indent_ternary_operator");
- Chunk *tmp = pc->GetPrevType(CT_QUESTION);
-
- if (tmp->IsNotNullChunk())
- {
- LOG_FMT(LINDENT, "%s: %zu] ternarydefcol => %zu [%s]\n",
- __func__, pc->GetOrigLine(), tmp->GetColumn(), pc->Text());
- reindent_line(pc, tmp->GetColumn());
- }
- }
- else if ( options::indent_oc_inside_msg_sel()
- && ( pc->Is(CT_OC_MSG_FUNC)
- || pc->Is(CT_OC_MSG_NAME))) // Issue #2658
- {
- log_rule_B("indent_oc_inside_msg_sel");
- reindent_line(pc, frm.top().indent);
- }
- else
- {
- bool use_indent = true;
- const size_t ttidx = frm.size() - 1;
-
- if (ttidx > 0)
- {
- LOG_FMT(LINDPC, "%s(%d): (frm.at(ttidx).pc)->GetParentType() is %s\n",
- __func__, __LINE__, get_token_name((frm.at(ttidx).pc)->GetParentType()));
-
- if ((frm.at(ttidx).pc)->GetParentType() == CT_FUNC_CALL)
- {
- LOG_FMT(LINDPC, "FUNC_CALL OK [%d]\n", __LINE__);
-
- log_rule_B("use_indent_func_call_param");
-
- if (options::use_indent_func_call_param())
- {
- LOG_FMT(LINDPC, "use is true [%d]\n", __LINE__);
- }
- else
- {
- LOG_FMT(LINDPC, "use is false [%d]\n", __LINE__);
- use_indent = false;
- }
- }
- }
- LOG_FMT(LINDENT, "%s(%d): pc->line is %zu, pc->GetColumn() is %zu, pc->Text() is '%s, indent_column is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetColumn(), pc->Text(), indent_column);
-
- if ( use_indent
- && pc->IsNot(CT_PP_IGNORE)) // Leave indentation alone for PP_IGNORE tokens
- {
- log_rule_B("pos_conditional");
-
- if ( ( pc->Is(CT_QUESTION) // Issue #2101
- || pc->Is(CT_COND_COLON)) // Issue #2101
- && options::pos_conditional() == TP_IGNORE)
- {
- // do not indent this line
- LOG_FMT(LINDENT, "%s(%d): %zu] don't indent this line\n",
- __func__, __LINE__, pc->GetOrigLine());
- }
- else if (pc->Is(CT_BREAK))
- {
- // Issue #1692
- log_rule_B("indent_switch_break_with_case");
-
- // Issue #2281
- if ( options::indent_switch_break_with_case()
- && pc->GetTypeOfParent() == CT_SWITCH)
- {
- // look for a case before Issue #2735
- Chunk *whereIsCase = pc->GetPrevType(CT_CASE, pc->GetLevel());
-
- if (whereIsCase->IsNotNullChunk())
- {
- LOG_FMT(LINDENT, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, whereIsCase->GetOrigLine(), whereIsCase->GetOrigCol(), whereIsCase->Text());
- LOG_FMT(LINDENT, "%s(%d): column is %zu\n",
- __func__, __LINE__, whereIsCase->GetColumn());
- reindent_line(pc, whereIsCase->GetColumn());
- }
- }
- else
- {
- LOG_FMT(LINDENT, "%s(%d): orig line is %zu, indent_column set to %zu, for '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- reindent_line(pc, indent_column);
- }
- }
- else if ( pc->Is(CT_MEMBER) // Issue #2890
- && language_is_set(LANG_CPP))
- {
- // comment name: XXXXXXXXXXXXXXXXXXXXXXXXXX
- LOG_FMT(LINDENT, "%s(%d): orig line is %zu, indent_column set to %zu, for '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- const size_t frm_size = frm.size();
- LOG_FMT(LINDPC, "%s(%d): frm_size is %zu\n",
- __func__, __LINE__, frm_size);
- // get pc
- LOG_FMT(LINDPC, "%s(%d): Text() is '%s', (frm.at(frm_size - 1).pc)->GetType() is %s\n",
- __func__, __LINE__, (frm.at(frm_size - 1).pc)->Text(), get_token_name((frm.at(frm_size - 1).pc)->GetType()));
- // get the token before
- const size_t temp_ttidx = frm_size - 2;
-
- if (temp_ttidx == 0)
- {
- indent_column = 1 + indent_size;
- reindent_line(pc, indent_column);
- }
- else
- {
- Chunk *token_before = frm.at(temp_ttidx).pc;
- LOG_FMT(LINDPC, "%s(%d): Text() is '%s', token_before->GetType() is %s\n",
- __func__, __LINE__, token_before->Text(), get_token_name(token_before->GetType()));
-
- size_t vor_col = 0;
-
- if (token_before->Is(CT_ASSIGN))
- {
- Chunk *before_Assign = frm.at(temp_ttidx - 1).pc;
-
- if (before_Assign->IsNullChunk())
- {
- indent_column = 1 + indent_size;
- }
- else
- {
- vor_col = before_Assign->GetColumn();
- LOG_FMT(LINDPC, "%s(%d): Text() is '%s', before_Assign->GetType() is %s, column is %zu\n",
- __func__, __LINE__, before_Assign->Text(), get_token_name(before_Assign->GetType()), vor_col);
- indent_column = vor_col + 2 * indent_size;
- }
- }
- else if (token_before->Is(CT_BRACE_OPEN))
- {
- vor_col = token_before->GetColumn();
- LOG_FMT(LINDPC, "%s(%d): Text() is '%s', token_before->GetType() is %s, column is %zu\n",
- __func__, __LINE__, token_before->Text(), get_token_name(token_before->GetType()), vor_col);
- indent_column = vor_col + 2 * indent_size;
- }
- else if (token_before->Is(CT_RETURN))
- {
- Chunk *before_Return = frm.at(temp_ttidx - 1).pc;
- vor_col = before_Return->GetColumn();
- LOG_FMT(LINDPC, "%s(%d): Text() is '%s', before_Return->GetType() is %s, column is %zu\n",
- __func__, __LINE__, before_Return->Text(), get_token_name(before_Return->GetType()), vor_col);
- indent_column = vor_col + 2 * indent_size;
- }
- else
- {
- // TO DO
- }
- reindent_line(pc, indent_column);
- }
- reindent_line(pc, indent_column);
- }
- else
- {
- LOG_FMT(LINDENT, "%s(%d): orig line is %zu, indent_column set to %zu, for '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
- reindent_line(pc, indent_column);
- }
- }
- else
- {
- // do not indent this line
- LOG_FMT(LINDENT, "%s(%d): %zu] don't indent this line\n",
- __func__, __LINE__, pc->GetOrigLine());
- }
- }
- did_newline = false;
-
- if ( pc->Is(CT_SQL_EXEC)
- || pc->Is(CT_SQL_BEGIN)
- || pc->Is(CT_SQL_END))
- {
- sql_col = pc->GetColumn();
- sql_orig_col = pc->GetOrigCol();
- }
-
- // Handle indent for variable defs at the top of a block of code
- if (pc->TestFlags(PCF_VAR_TYPE))
- {
- if ( !frm.top().non_vardef
- && (frm.top().type == CT_BRACE_OPEN))
- {
- log_rule_B("indent_var_def_blk");
- int val = options::indent_var_def_blk();
-
- if (val != 0)
- {
- size_t indent = indent_column;
- indent = (val > 0) ? val // reassign if positive val,
- : ((size_t)(abs(val)) < indent) // else if no underflow
- ? (indent + val) : 0; // reduce, else 0
-
- LOG_FMT(LINDENT, "%s(%d): %zu] var_type indent => %zu [%s]\n",
- __func__, __LINE__, pc->GetOrigLine(), indent, pc->Text());
- reindent_line(pc, indent);
- }
- }
- }
- else if (pc != frm.top().pc)
- {
- frm.top().non_vardef = true;
- }
- }
-
- // if we hit a newline, reset indent_tmp
- if ( pc->IsNewline()
- || pc->Is(CT_COMMENT_MULTI)
- || pc->Is(CT_COMMENT_CPP))
- {
- log_indent();
- frm.top().indent_tmp = frm.top().indent;
- log_indent_tmp();
-
- /*
- * Handle the case of a multi-line #define w/o anything on the
- * first line (indent_tmp will be 1 or 0)
- */
- if ( pc->Is(CT_NL_CONT)
- && frm.top().indent_tmp <= indent_size
- && frm.top().type != CT_PP_DEFINE)
- {
- frm.top().indent_tmp = indent_size + 1;
- log_indent_tmp();
- }
- // Get ready to indent the next item
- did_newline = true;
- }
- // Check for open XML tags "</..."
- log_rule_B("indent_xml_string");
-
- if ( options::indent_xml_string() > 0
- && pc->Is(CT_STRING)
- && pc->Len() > 4
- && pc->GetStr()[1] == '<'
- && pc->GetStr()[2] != '/'
- && pc->GetStr()[pc->Len() - 3] != '/')
- {
- if (xml_indent <= 0)
- {
- xml_indent = pc->GetColumn();
- }
- log_rule_B("indent_xml_string");
- xml_indent += options::indent_xml_string();
- }
- // Issue #672
- log_rule_B("indent_continue_class_head");
-
- if ( pc->Is(CT_CLASS)
- && language_is_set(LANG_CPP | LANG_JAVA)
- && ( options::indent_ignore_first_continue()
- || options::indent_continue_class_head() != 0)
- && !classFound)
- {
- LOG_FMT(LINDENT, "%s(%d): orig line is %zu, CT_CLASS found, OPEN IT\n",
- __func__, __LINE__, pc->GetOrigLine());
- frm.push(pc, __func__, __LINE__);
-
- if (options::indent_ignore_first_continue())
- {
- frm.top().indent = get_indent_first_continue(pc);
- }
- else
- {
- frm.top().indent = frm.prev().indent + options::indent_continue_class_head();
- }
- log_indent();
-
- frm.top().indent_tmp = frm.top().indent;
- frm.top().indent_tab = frm.top().indent;
- log_indent_tmp();
- classFound = true;
- }
- pc = pc->GetNext();
-
- if (pc->Is(CT_SPACE)) // Issue #3710
- {
- pc = pc->GetNext();
- }
- LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- }
-null_pc:
-
- // Throw out any stuff inside a preprocessor - no need to warn
- while ( !frm.empty()
- && frm.top().in_preproc)
- {
- frm.pop(__func__, __LINE__, pc);
- }
-
- // Throw out any VBRACE_OPEN at the end - implied with the end of file
- while ( !frm.empty()
- && frm.top().type == CT_VBRACE_OPEN)
- {
- frm.pop(__func__, __LINE__, pc);
- }
-
- for (size_t idx_temp = 1; idx_temp < frm.size(); idx_temp++)
- {
- LOG_FMT(LWARN, "%s(%d): size is %zu\n",
- __func__, __LINE__, frm.size());
- LOG_FMT(LWARN, "%s(%d): File: %s, open_line is %zu, parent is %s: Unmatched %s\n",
- __func__, __LINE__, cpd.filename.c_str(), frm.at(idx_temp).open_line,
- get_token_name(frm.at(idx_temp).parent),
- get_token_name(frm.at(idx_temp).type));
- exit(EX_IOERR);
- }
-
- LOG_FMT(LINDLINE, "%s(%d): before quick_align_again\n", __func__, __LINE__);
- quick_align_again();
- quick_indent_again();
- LOG_FMT(LINDLINE, "%s(%d): after quick_align_again\n", __func__, __LINE__);
-} // indent_text
-
-
-static bool single_line_comment_indent_rule_applies(Chunk *start, bool forward)
-{
- LOG_FUNC_ENTRY();
-
- if (!start->IsSingleLineComment())
- {
- return(false);
- }
- Chunk *pc = start;
- size_t nl_count = 0;
-
- while ((pc = forward ? pc->GetNext() : pc->GetPrev())->IsNotNullChunk())
- {
- if (pc->IsNewline())
- {
- if ( nl_count > 0
- || pc->GetNlCount() > 1)
- {
- return(false);
- }
- nl_count++;
- }
- else if (pc->IsSingleLineComment())
- {
- nl_count = 0;
- }
- else if ( pc->Is(CT_COMMENT_MULTI)
- || (forward && pc->IsBraceClose())
- || (!forward && pc->IsBraceOpen()))
- {
- /*
- * check for things we wouldn't want to indent the comment for
- * example: non-single line comment, closing brace
- */
- return(false);
- }
- else
- {
- return(true);
- }
- }
- return(false);
-} // single_line_comment_indent_rule_applies
-
-
-static bool is_end_of_assignment(Chunk *pc, const ParseFrame &frm)
-{
- return( ( frm.top().type == CT_ASSIGN_NL
- || frm.top().type == CT_MEMBER
- || frm.top().type == CT_ASSIGN)
- && ( pc->IsSemicolon()
- || pc->Is(CT_COMMA)
- || pc->Is(CT_BRACE_OPEN)
- || pc->Is(CT_SPAREN_CLOSE)
- || ( pc->Is(CT_SQUARE_OPEN)
- && pc->GetParentType() == CT_ASSIGN))
- && pc->GetParentType() != CT_CPP_LAMBDA);
-}
-
-
-static size_t calc_comment_next_col_diff(Chunk *pc)
-{
- Chunk *next = pc; // assumes pc has a comment type
-
- LOG_FMT(LCMTIND, "%s(%d): next->Text() is '%s'\n",
- __func__, __LINE__, next->Text());
-
- // Note: every comment is squashed into a single token
- // (including newline chars for multiline comments) and is followed by
- // a newline token (unless there are no more tokens left)
- do
- {
- Chunk *newline_token = next->GetNext();
- LOG_FMT(LCMTIND, "%s(%d): newline_token->Text() is '%s', orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, newline_token->Text(), newline_token->GetOrigLine(), newline_token->GetOrigCol());
-
- if ( newline_token->IsNullChunk()
- || newline_token->GetNlCount() > 1)
- {
- return(5000); // FIXME: Max thresh magic number 5000
- }
- next = newline_token->GetNext();
-
- if (next->IsNotNullChunk())
- {
- LOG_FMT(LCMTIND, "%s(%d): next->Text() is '%s', orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, next->Text(), next->GetOrigLine(), next->GetOrigCol());
- }
- } while (next->IsComment());
-
- if (next->IsNullChunk())
- {
- return(5000); // FIXME: Max thresh magic number 5000
- }
- LOG_FMT(LCMTIND, "%s(%d): next->Text() is '%s'\n",
- __func__, __LINE__, next->Text());
- // here next is the first non comment, non newline token
- return(next->GetOrigCol() > pc->GetOrigCol()
- ? next->GetOrigCol() - pc->GetOrigCol()
- : pc->GetOrigCol() - next->GetOrigCol());
-}
-
-
-static void indent_comment(Chunk *pc, size_t col)
-{
- LOG_FUNC_ENTRY();
- char copy[1000];
-
- LOG_FMT(LCMTIND, "%s(%d): pc->Text() is '%s', orig line %zu, orig col %zu, level %zu\n",
- __func__, __LINE__, pc->ElidedText(copy), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
-
- // force column 1 comment to column 1 if not changing them
- log_rule_B("indent_col1_comment");
-
- if ( pc->GetOrigCol() == 1
- && !options::indent_col1_comment()
- && !pc->TestFlags(PCF_INSERTED))
- {
- LOG_FMT(LCMTIND, "%s(%d): rule 1 - keep in col 1\n", __func__, __LINE__);
- reindent_line(pc, 1);
- return;
- }
- Chunk *nl = pc->GetPrev();
-
- if (nl->IsNotNullChunk())
- {
- LOG_FMT(LCMTIND, "%s(%d): nl->Text() is '%s', orig line %zu, orig col %zu, level %zu\n",
- __func__, __LINE__, nl->Text(), nl->GetOrigLine(), nl->GetOrigCol(), nl->GetLevel());
- }
-
- if (pc->GetOrigCol() > 1)
- {
- Chunk *prev = nl->GetPrev();
-
- if (prev->IsNotNullChunk())
- {
- LOG_FMT(LCMTIND, "%s(%d): prev->Text() is '%s', orig line %zu, orig col %zu, level %zu\n",
- __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(), prev->GetLevel());
- log_pcf_flags(LCMTIND, prev->GetFlags());
- }
-
- if ( prev->IsComment()
- && nl->GetNlCount() == 1)
- {
- const size_t prev_col_diff = (prev->GetOrigCol() > pc->GetOrigCol())
- ? prev->GetOrigCol() - pc->GetOrigCol()
- : pc->GetOrigCol() - prev->GetOrigCol();
- LOG_FMT(LCMTIND, "%s(%d): prev_col_diff is %zu\n",
- __func__, __LINE__, prev_col_diff);
-
- /*
- * Here we want to align comments that are relatively close one to
- * another but not when the comment is a Doxygen comment (Issue #1134)
- */
- if (prev_col_diff <= options::indent_comment_align_thresh())
- {
- LOG_FMT(LCMTIND, "%s(%d): prev->Text() is '%s', Doxygen_comment(prev) is %s\n",
- __func__, __LINE__, prev->Text(), prev->IsDoxygenComment() ? "TRUE" : "FALSE");
- LOG_FMT(LCMTIND, "%s(%d): pc->Text() is '%s', Doxygen_comment(pc) is %s\n",
- __func__, __LINE__, pc->Text(), pc->IsDoxygenComment() ? "TRUE" : "FALSE");
-
- if (prev->IsDoxygenComment() == pc->IsDoxygenComment())
- {
- const size_t next_col_diff = calc_comment_next_col_diff(pc);
- LOG_FMT(LCMTIND, "%s(%d): next_col_diff is %zu\n",
- __func__, __LINE__, next_col_diff);
-
- // Align to the previous comment or to the next token?
- if ( prev_col_diff <= next_col_diff
- || next_col_diff == 5000) // FIXME: Max thresh magic number 5000
- {
- LOG_FMT(LCMTIND, "%s(%d): rule 3 - prev comment, coldiff = %zu, now in %zu\n",
- __func__, __LINE__, prev_col_diff, pc->GetColumn());
- reindent_line(pc, prev->GetColumn());
- return;
- }
- }
- }
- }
- }
- // check if special single-line-comment-before-code rule applies
- log_rule_B("indent_single_line_comments_before");
-
- if ( (options::indent_single_line_comments_before() > 0)
- && single_line_comment_indent_rule_applies(pc, true))
- {
- LOG_FMT(LCMTIND, "%s(%d): rule 4 - indent single line comments before code, now in %zu\n",
- __func__, __LINE__, pc->GetColumn());
- reindent_line(pc, col + options::indent_single_line_comments_before());
- return;
- }
- // check if special single-line-comment-after-code rule applies
- log_rule_B("indent_single_line_comments_after");
-
- if ( (options::indent_single_line_comments_after() > 0)
- && single_line_comment_indent_rule_applies(pc, false))
- {
- LOG_FMT(LCMTIND, "%s(%d): rule 4 - indent single line comments after code, now in %zu\n",
- __func__, __LINE__, pc->GetColumn());
- reindent_line(pc, col + options::indent_single_line_comments_after());
- return;
- }
- log_rule_B("indent_comment");
-
- if ( pc->GetOrigCol() > 1
- && !options::indent_comment())
- {
- LOG_FMT(LCMTIND, "%s(%d): rule 5 - keep in orig col\n", __func__, __LINE__);
- reindent_line(pc, pc->GetOrigCol());
- return;
- }
- LOG_FMT(LCMTIND, "%s(%d): rule 6 - fall-through, stay in %zu\n",
- __func__, __LINE__, col);
- reindent_line(pc, col);
-} // indent_comment
-
-
-bool ifdef_over_whole_file()
-{
- LOG_FUNC_ENTRY();
-
- // if requested, treat an #if that guards the entire file the same as any other #if
- // if running as frag, assume #if is not a guard
- if ( options::pp_indent_in_guard()
- || cpd.frag)
- {
- return(false);
- }
-
- // the results for this file are cached
- if (cpd.ifdef_over_whole_file)
- {
- return(cpd.ifdef_over_whole_file > 0);
- }
- Chunk *start_pp = Chunk::NullChunkPtr;
- Chunk *end_pp = Chunk::NullChunkPtr;
- size_t IFstage = 0;
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- LOG_FMT(LNOTE, "%s(%d): pc->pp level is %zu, pc orig line is %zu, orig col is %zu, pc->Text() is '%s'\n",
- __func__, __LINE__, pc->GetPpLevel(), pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
-
- if (pc->IsCommentOrNewline())
- {
- continue;
- }
-
- if (IFstage == 0) // 0 is BEGIN
- {
- // Check the first preprocessor, make sure it is an #if type
- if (pc->IsNot(CT_PREPROC))
- {
- break;
- }
- Chunk *next = pc->GetNext();
-
- if ( next->IsNullChunk()
- || next->IsNot(CT_PP_IF))
- {
- break;
- }
- IFstage = 1; // 1 is CT_PP_IF found
- start_pp = pc;
- }
- else if (IFstage == 1) // 1 is CT_PP_IF found
- {
- // Scan until a preprocessor at level 0 is found - the close to the #if
- if (pc->Is(CT_PREPROC))
- {
- if (pc->GetPpLevel() == 0)
- {
- IFstage = 2;
- end_pp = pc;
- }
- }
- continue;
- }
- else if (IFstage == 2)
- {
- // We should only see the rest of the preprocessor
- if ( pc->Is(CT_PREPROC)
- || !pc->TestFlags(PCF_IN_PREPROC))
- {
- IFstage = 0;
- break;
- }
- }
- }
-
- cpd.ifdef_over_whole_file = (IFstage == 2) ? 1 : -1;
-
- if (cpd.ifdef_over_whole_file > 0)
- {
- start_pp->SetFlagBits(PCF_WF_IF);
- end_pp->SetFlagBits(PCF_WF_ENDIF);
- }
- LOG_FMT(LNOTE, "The whole file is%s covered by a #IF\n",
- (cpd.ifdef_over_whole_file > 0) ? "" : " NOT");
- return(cpd.ifdef_over_whole_file > 0);
-} // ifdef_over_whole_file
-
-
-void indent_preproc()
-{
- LOG_FUNC_ENTRY();
-
- // Scan to see if the whole file is covered by one #ifdef
- const size_t pp_level_sub = ifdef_over_whole_file() ? 1 : 0;
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- LOG_FMT(LPPIS, "%s(%d): orig line is %zu, orig col is %zu, pc->Text() is '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
-
- if (pc->IsNot(CT_PREPROC))
- {
- continue;
- }
- Chunk *next = pc->GetNextNcNnl();
-
- if (next->IsNullChunk())
- {
- break;
- }
- const size_t pp_level = (pc->GetPpLevel() > pp_level_sub)
- ? pc->GetPpLevel() - pp_level_sub : 0;
-
- // Adjust the indent of the '#'
- if (options::pp_indent() & IARF_ADD)
- {
- log_rule_B("pp_indent ADD");
- reindent_line(pc, 1 + pp_level * options::pp_indent_count());
- }
- else if (options::pp_indent() & IARF_REMOVE)
- {
- log_rule_B("pp_indent REMOVE");
- reindent_line(pc, 1);
- }
- // Add spacing by adjusting the length
- log_rule_B("pp_space_after");
-
- if ( (options::pp_space_after() != IARF_IGNORE)
- && next->IsNotNullChunk())
- {
- if (options::pp_space_after() & IARF_ADD)
- {
- log_rule_B("pp_space_after ADD");
- const size_t mult = options::pp_space_count();
- reindent_line(next, pc->GetColumn() + pc->Len() + (pp_level * mult));
- }
- else if (options::pp_space_after() & IARF_REMOVE)
- {
- log_rule_B("pp_space_after REMOVE");
- reindent_line(next, pc->GetColumn() + pc->Len());
- }
- }
- // Mark as already handled if not region stuff or in column 1
- log_rule_B("pp_indent_at_level");
-
- bool at_file_level = pc->GetBraceLevel() <= ((pc->GetParentType() == CT_PP_DEFINE) ? 1 : 0);
-
- if ( ( ( at_file_level
- && !options::pp_indent_at_level0())
- || ( !at_file_level
- && !options::pp_indent_at_level()))
- && pc->GetParentType() != CT_PP_REGION
- && pc->GetParentType() != CT_PP_ENDREGION)
- {
- log_rule_B("pp_define_at_level");
-
- if ( !options::pp_define_at_level()
- || pc->GetParentType() != CT_PP_DEFINE)
- {
- pc->SetFlagBits(PCF_DONT_INDENT);
- }
- }
- LOG_FMT(LPPIS, "%s(%d): orig line %zu to %zu (len %zu, next->col %zu)\n",
- __func__, __LINE__, pc->GetOrigLine(), 1 + pp_level, pc->Len(),
- next ? next->GetColumn() : -1);
- }
-} // indent_preproc
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/indent.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/indent.h
deleted file mode 100644
index e1fe384c..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/indent.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * @file indent.h
- * prototypes for indent.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-#ifndef INDENT_H_INCLUDED
-#define INDENT_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-
-/**
- * Change the top-level indentation only by changing the column member in
- * the chunk structures.
- * The level indicator must already be set.
- */
-void indent_text();
-
-
-/**
- * Indent the preprocessor stuff from column 1.
- * FIXME: This is broken if there is a comment or escaped newline
- * between '#' and 'define'.
- */
-void indent_preproc();
-
-/**
- *
- * @param pc chunk at the start of the line
- * @param column desired column
- */
-void indent_to_column(Chunk *pc, size_t column);
-
-
-/**
- * Same as indent_to_column, except we can move both ways
- *
- * @param pc chunk at the start of the line
- * @param column desired column
- */
-void align_to_column(Chunk *pc, size_t column);
-
-
-//! Scan to see if the whole file is covered by one #ifdef
-bool ifdef_over_whole_file();
-
-
-/**
- * Changes the initial indent for a line to the given column
- *
- * @param pc The chunk at the start of the line
- * @param column The desired column
- */
-void reindent_line(Chunk *pc, size_t column);
-
-
-#endif /* INDENT_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/keywords.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/keywords.cpp
deleted file mode 100644
index 6b4757ca..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/keywords.cpp
+++ /dev/null
@@ -1,679 +0,0 @@
-/**
- * @file keywords.cpp
- * Manages the table of keywords.
- *
- * @author Ben Gardner
- * @author Guy Maurel since version 0.62 for uncrustify4Qt
- * October 2015, 2016
- * @license GPL v2+
- */
-
-#include "keywords.h"
-
-#include "args.h"
-#include "prototypes.h"
-#include "uncrustify.h"
-#include "uncrustify_limits.h"
-
-#include <cerrno>
-#include <map>
-
-
-using namespace std;
-
-// Dynamic keyword map
-typedef map<string, E_Token> dkwmap;
-static dkwmap dkwm;
-
-
-/**
- * Compares two chunk_tag_t entries using strcmp on the strings
- *
- * @param the 'left' entry
- * @param the 'right' entry
- *
- * @return == 0 if both keywords are equal
- * @return < 0 p1 is smaller than p2
- * @return > 0 p2 is smaller than p1
- */
-static int kw_compare(const void *p1, const void *p2);
-
-
-/**
- * search in static keywords for first occurrence of a given tag
- *
- * @param tag/keyword to search for
- */
-static const chunk_tag_t *kw_static_first(const chunk_tag_t *tag);
-
-
-static const chunk_tag_t *kw_static_match(bool orig_list, const chunk_tag_t *tag, int lang_flags);
-
-/**
- * selected keywords for the chosen language.
- */
-
-static chunk_tag_t keyword_for_lang[uncrustify::limits::MAX_KEYWORDS];
-static size_t language_count;
-
-/**
- * interesting static keywords - keep sorted.
- * Table includes the Name, Type, and Language flags.
- */
-static chunk_tag_t keywords[] =
-{
- // TODO: it might be useful if users could add their custom keywords to this list
- { "@autoreleasepool", CT_AUTORELEASEPOOL, LANG_OC },
- { "@available", CT_OC_AVAILABLE, LANG_OC },
- { "@catch", CT_CATCH, LANG_OC },
- { "@dynamic", CT_OC_DYNAMIC, LANG_OC },
- { "@end", CT_OC_END, LANG_OC },
- { "@finally", CT_FINALLY, LANG_OC },
- { "@implementation", CT_OC_IMPL, LANG_OC },
- { "@interface", CT_OC_INTF, LANG_OC },
- { "@interface", CT_CLASS, LANG_JAVA },
- { "@private", CT_ACCESS, LANG_OC },
- { "@property", CT_OC_PROPERTY, LANG_OC },
- { "@protected", CT_ACCESS, LANG_OC },
- { "@protocol", CT_OC_PROTOCOL, LANG_OC },
- { "@public", CT_ACCESS, LANG_OC },
- { "@selector", CT_OC_SEL, LANG_OC },
- { "@synchronized", CT_SYNCHRONIZED, LANG_OC },
- { "@synthesize", CT_OC_DYNAMIC, LANG_OC },
- { "@throw", CT_THROW, LANG_OC },
- { "@try", CT_TRY, LANG_OC },
- { "API_AVAILABLE", CT_ATTRIBUTE, LANG_OC },
- { "API_DEPRECATED", CT_ATTRIBUTE, LANG_OC },
- { "API_DEPRECATED_WITH_REPLACEMENT", CT_ATTRIBUTE, LANG_OC },
- { "API_UNAVAILABLE", CT_ATTRIBUTE, LANG_OC },
- { "BOOL", CT_TYPE, LANG_OC },
- { "INT16_C", CT_TYPE, LANG_CPP },
- { "INT32_C", CT_TYPE, LANG_CPP },
- { "INT64_C", CT_TYPE, LANG_CPP },
- { "INT8_C", CT_TYPE, LANG_CPP },
- { "INTMAX_C", CT_TYPE, LANG_CPP },
- { "NS_ENUM", CT_ENUM, LANG_OC },
- { "NS_OPTIONS", CT_ENUM, LANG_OC },
- { "Q_EMIT", CT_Q_EMIT, LANG_CPP },
- { "Q_FOREACH", CT_FOR, LANG_CPP },
- { "Q_FOREVER", CT_Q_FOREVER, LANG_CPP },
- { "Q_GADGET", CT_Q_GADGET, LANG_CPP },
- { "Q_OBJECT", CT_COMMENT_EMBED, LANG_CPP },
- { "Q_SIGNALS", CT_ACCESS, LANG_CPP },
- { "UINT16_C", CT_TYPE, LANG_CPP },
- { "UINT32_C", CT_TYPE, LANG_CPP },
- { "UINT64_C", CT_TYPE, LANG_CPP },
- { "UINT8_C", CT_TYPE, LANG_CPP },
- { "UINTMAX_C", CT_TYPE, LANG_CPP },
- { "_Bool", CT_TYPE, LANG_C | LANG_CPP },
- { "_Complex", CT_TYPE, LANG_C | LANG_CPP },
- { "_Imaginary", CT_TYPE, LANG_C | LANG_CPP },
- { "_Nonnull", CT_QUALIFIER, LANG_OC },
- { "_Null_unspecified", CT_QUALIFIER, LANG_OC },
- { "_Nullable", CT_QUALIFIER, LANG_OC },
- { "_Pragma", CT_PP_PRAGMA, LANG_ALL | FLAG_PP },
- { "__DI__", CT_DI, LANG_C | LANG_CPP },
- { "__HI__", CT_HI, LANG_C | LANG_CPP },
- { "__QI__", CT_QI, LANG_C | LANG_CPP },
- { "__SI__", CT_SI, LANG_C | LANG_CPP },
- { "__asm__", CT_ASM, LANG_C | LANG_CPP },
- { "__attribute__", CT_ATTRIBUTE, LANG_C | LANG_CPP | LANG_OC },
- { "__autoreleasing", CT_QUALIFIER, LANG_C | LANG_CPP },
- { "__block", CT_QUALIFIER, LANG_C | LANG_CPP | LANG_OC },
- { "__bridge", CT_QUALIFIER, LANG_C | LANG_CPP },
- { "__bridge_retained", CT_QUALIFIER, LANG_C | LANG_CPP },
- { "__bridge_transfer", CT_QUALIFIER, LANG_C | LANG_CPP },
- { "__const__", CT_QUALIFIER, LANG_C | LANG_CPP },
- { "__declspec", CT_DECLSPEC, LANG_C | LANG_CPP },
- { "__except", CT_CATCH, LANG_C | LANG_CPP },
- { "__finally", CT_FINALLY, LANG_C | LANG_CPP },
- { "__has_include", CT_CNG_HASINC, LANG_C | LANG_CPP | LANG_OC | FLAG_PP },
- { "__has_include_next", CT_CNG_HASINCN, LANG_C | LANG_CPP | FLAG_PP },
- { "__inline__", CT_QUALIFIER, LANG_C | LANG_CPP },
- { "__nonnull", CT_QUALIFIER, LANG_OC },
- { "__nothrow__", CT_NOTHROW, LANG_C | LANG_CPP },
- { "__null_unspecified", CT_QUALIFIER, LANG_OC },
- { "__nullable", CT_QUALIFIER, LANG_OC },
- { "__pragma", CT_PP_PRAGMA, LANG_ALL | FLAG_PP },
- { "__restrict", CT_QUALIFIER, LANG_C | LANG_CPP },
- { "__signed__", CT_TYPE, LANG_C | LANG_CPP },
- { "__strong", CT_QUALIFIER, LANG_C | LANG_CPP },
- { "__thread", CT_QUALIFIER, LANG_C | LANG_CPP },
- { "__traits", CT_QUALIFIER, LANG_D },
- { "__try", CT_TRY, LANG_C | LANG_CPP },
- { "__typeof", CT_DECLTYPE, LANG_C | LANG_CPP | LANG_OC },
- { "__typeof__", CT_DECLTYPE, LANG_C | LANG_CPP },
- { "__unsafe_unretained", CT_QUALIFIER, LANG_OC },
- { "__unused", CT_ATTRIBUTE, LANG_C | LANG_CPP },
- { "__volatile__", CT_QUALIFIER, LANG_C | LANG_CPP },
- { "__weak", CT_QUALIFIER, LANG_C | LANG_CPP },
- { "__word__", CT_WORD_, LANG_C | LANG_CPP },
- { "abstract", CT_QUALIFIER, LANG_CS | LANG_D | LANG_JAVA | LANG_VALA | LANG_ECMA },
- { "add", CT_GETSET, LANG_CS },
- { "alias", CT_USING, LANG_D },
- { "align", CT_ALIGN, LANG_D },
- { "alignof", CT_SIZEOF, LANG_CPP },
- { "and", CT_SBOOL, LANG_CPP },
- { "and_eq", CT_SASSIGN, LANG_CPP },
- { "as", CT_AS, LANG_CS | LANG_VALA },
- { "asm", CT_ASM, LANG_C | LANG_CPP | LANG_D },
- { "asm", CT_PP_ASM, LANG_ALL | FLAG_PP },
- { "assert", CT_ASSERT, LANG_JAVA },
- { "assert", CT_FUNCTION, LANG_D | LANG_PAWN },
- { "assert", CT_PP_ASSERT, LANG_PAWN | FLAG_PP },
- { "auto", CT_TYPE, LANG_C | LANG_CPP | LANG_D },
- { "base", CT_BASE, LANG_CS | LANG_VALA },
- { "bit", CT_TYPE, LANG_D },
- { "bitand", CT_ARITH, LANG_C | LANG_CPP },
- { "bitor", CT_ARITH, LANG_C | LANG_CPP },
- { "body", CT_BODY, LANG_D },
- { "bool", CT_TYPE, LANG_C | LANG_CPP | LANG_CS | LANG_VALA },
- { "boolean", CT_TYPE, LANG_JAVA | LANG_ECMA },
- { "break", CT_BREAK, LANG_ALL },
- { "byte", CT_TYPE, LANG_CS | LANG_D | LANG_JAVA | LANG_ECMA },
- { "callback", CT_QUALIFIER, LANG_VALA },
- { "case", CT_CASE, LANG_ALL },
- { "cast", CT_D_CAST, LANG_D },
- { "catch", CT_CATCH, LANG_CPP | LANG_CS | LANG_VALA | LANG_D | LANG_JAVA | LANG_ECMA },
- { "cdouble", CT_TYPE, LANG_D },
- { "cent", CT_TYPE, LANG_D },
- { "cfloat", CT_TYPE, LANG_D },
- { "char", CT_CHAR, LANG_PAWN },
- { "char", CT_TYPE, LANG_ALLC },
- { "checked", CT_QUALIFIER, LANG_CS },
- { "class", CT_CLASS, LANG_CPP | LANG_CS | LANG_D | LANG_JAVA | LANG_VALA | LANG_ECMA },
- { "compl", CT_ARITH, LANG_CPP },
- { "const", CT_QUALIFIER, LANG_ALL },
- { "const_cast", CT_TYPE_CAST, LANG_CPP },
- { "constexpr", CT_QUALIFIER, LANG_CPP },
- { "construct", CT_CONSTRUCT, LANG_VALA },
- { "continue", CT_CONTINUE, LANG_ALL },
- { "creal", CT_TYPE, LANG_D },
- { "dchar", CT_TYPE, LANG_D },
- { "debug", CT_DEBUG, LANG_D },
- { "debugger", CT_DEBUGGER, LANG_ECMA },
- { "decltype", CT_DECLTYPE, LANG_CPP },
- { "default", CT_DEFAULT, LANG_ALL },
- { "define", CT_PP_DEFINE, LANG_ALL | FLAG_PP },
- { "defined", CT_DEFINED, LANG_PAWN },
- { "defined", CT_PP_DEFINED, LANG_ALLC | FLAG_PP },
- { "delegate", CT_DELEGATE, LANG_CS | LANG_VALA | LANG_D },
- { "delete", CT_DELETE, LANG_CPP | LANG_D | LANG_ECMA | LANG_VALA },
- { "deprecated", CT_QUALIFIER, LANG_D },
- { "do", CT_DO, LANG_ALL },
- { "double", CT_TYPE, LANG_ALLC },
- { "dynamic_cast", CT_TYPE_CAST, LANG_CPP },
- { "elif", CT_PP_ELSE, LANG_ALLC | FLAG_PP },
- { "else", CT_ELSE, LANG_ALL },
- { "else", CT_PP_ELSE, LANG_ALL | FLAG_PP },
- { "elseif", CT_PP_ELSE, LANG_PAWN | FLAG_PP },
- { "emit", CT_PP_EMIT, LANG_PAWN | FLAG_PP },
- { "endif", CT_PP_ENDIF, LANG_ALL | FLAG_PP },
- { "endinput", CT_PP_ENDINPUT, LANG_PAWN | FLAG_PP },
- { "endregion", CT_PP_ENDREGION, LANG_ALL | FLAG_PP },
- { "endscript", CT_PP_ENDINPUT, LANG_PAWN | FLAG_PP },
- { "enum", CT_ENUM, LANG_ALL },
- { "error", CT_PP_ERROR, LANG_PAWN | FLAG_PP },
- { "errordomain", CT_ENUM, LANG_VALA },
- { "event", CT_TYPE, LANG_CS },
- { "exit", CT_FUNCTION, LANG_PAWN },
- { "explicit", CT_QUALIFIER, LANG_CPP | LANG_CS },
- { "export", CT_EXPORT, LANG_CPP | LANG_D | LANG_ECMA },
- { "extends", CT_QUALIFIER, LANG_JAVA | LANG_ECMA },
- { "extern", CT_EXTERN, LANG_C | LANG_CPP | LANG_OC | LANG_CS | LANG_D | LANG_VALA },
- { "false", CT_WORD, LANG_ALL },
- { "file", CT_PP_FILE, LANG_PAWN | FLAG_PP },
- { "final", CT_QUALIFIER, LANG_CPP | LANG_D | LANG_ECMA },
- { "finally", CT_FINALLY, LANG_D | LANG_CS | LANG_VALA | LANG_ECMA | LANG_JAVA },
- { "fixed", CT_FIXED, LANG_CS },
- { "flags", CT_TYPE, LANG_VALA },
- { "float", CT_TYPE, LANG_ALLC },
- { "for", CT_FOR, LANG_ALL },
- { "foreach", CT_FOR, LANG_CS | LANG_D | LANG_VALA },
- { "foreach_reverse", CT_FOR, LANG_D },
- { "forward", CT_FORWARD, LANG_PAWN },
- { "friend", CT_FRIEND, LANG_CPP },
- { "function", CT_FUNCTION, LANG_D | LANG_ECMA },
- { "get", CT_GETSET, LANG_CS | LANG_VALA },
- { "goto", CT_GOTO, LANG_ALL },
- { "idouble", CT_TYPE, LANG_D },
- { "if", CT_IF, LANG_ALL },
- { "if", CT_PP_IF, LANG_ALL | FLAG_PP },
- { "ifdef", CT_PP_IF, LANG_ALLC | FLAG_PP },
- { "ifloat", CT_TYPE, LANG_D },
- { "ifndef", CT_PP_IF, LANG_ALLC | FLAG_PP },
- { "implements", CT_QUALIFIER, LANG_JAVA | LANG_ECMA },
- { "implicit", CT_QUALIFIER, LANG_CS },
- { "import", CT_IMPORT, LANG_D | LANG_JAVA | LANG_ECMA },
- { "import", CT_PP_INCLUDE, LANG_OC | FLAG_PP },
- { "in", CT_IN, LANG_D | LANG_CS | LANG_VALA | LANG_ECMA | LANG_OC },
- { "include", CT_PP_INCLUDE, LANG_C | LANG_CPP | LANG_OC | LANG_PAWN | FLAG_PP },
- { "inline", CT_QUALIFIER, LANG_C | LANG_CPP },
- { "inout", CT_QUALIFIER, LANG_D },
- { "instanceof", CT_SIZEOF, LANG_JAVA | LANG_ECMA },
- { "int", CT_TYPE, LANG_ALLC },
- { "interface", CT_CLASS, LANG_CPP | LANG_CS | LANG_D | LANG_JAVA | LANG_VALA | LANG_ECMA },
- { "internal", CT_QUALIFIER, LANG_CS | LANG_VALA },
- { "invariant", CT_INVARIANT, LANG_D },
- { "ireal", CT_TYPE, LANG_D },
- { "is", CT_SCOMPARE, LANG_D | LANG_CS | LANG_VALA },
- { "lazy", CT_LAZY, LANG_D },
- { "line", CT_PP_LINE, LANG_PAWN | FLAG_PP },
- { "lock", CT_LOCK, LANG_CS | LANG_VALA },
- { "long", CT_TYPE, LANG_ALLC },
- { "macro", CT_D_MACRO, LANG_D },
- { "mixin", CT_CLASS, LANG_D }, // may need special handling
- { "module", CT_D_MODULE, LANG_D },
- { "mutable", CT_QUALIFIER, LANG_CPP },
- { "namespace", CT_NAMESPACE, LANG_CPP | LANG_CS | LANG_VALA },
- { "native", CT_NATIVE, LANG_PAWN },
- { "native", CT_QUALIFIER, LANG_JAVA | LANG_ECMA },
- { "new", CT_NEW, LANG_CPP | LANG_CS | LANG_D | LANG_JAVA | LANG_PAWN | LANG_VALA | LANG_ECMA },
- { "noexcept", CT_NOEXCEPT, LANG_CPP },
- { "nonnull", CT_TYPE, LANG_OC },
- { "not", CT_SARITH, LANG_CPP },
- { "not_eq", CT_SCOMPARE, LANG_CPP },
-// { "null", CT_TYPE, LANG_CS | LANG_D | LANG_JAVA | LANG_VALA },
- { "null_resettable", CT_OC_PROPERTY_ATTR, LANG_OC },
- { "null_unspecified", CT_TYPE, LANG_OC },
- { "nullable", CT_TYPE, LANG_OC },
- { "object", CT_TYPE, LANG_CS },
- { "operator", CT_OPERATOR, LANG_CPP | LANG_CS | LANG_PAWN },
- { "or", CT_SBOOL, LANG_CPP },
- { "or_eq", CT_SASSIGN, LANG_CPP },
- { "out", CT_QUALIFIER, LANG_CS | LANG_D | LANG_VALA },
- { "override", CT_QUALIFIER, LANG_CPP | LANG_CS | LANG_D | LANG_VALA },
- { "package", CT_ACCESS, LANG_D },
- { "package", CT_PACKAGE, LANG_ECMA | LANG_JAVA },
- { "params", CT_TYPE, LANG_CS | LANG_VALA },
- { "pragma", CT_PP_PRAGMA, LANG_ALL | FLAG_PP },
- { "private", CT_ACCESS, LANG_ALLC }, // not C
- { "property", CT_PP_PROPERTY, LANG_CS | FLAG_PP },
- { "protected", CT_ACCESS, LANG_ALLC }, // not C
- { "public", CT_ACCESS, LANG_ALL }, // PAWN // not C
- { "readonly", CT_QUALIFIER, LANG_CS },
- { "real", CT_TYPE, LANG_D },
- { "ref", CT_QUALIFIER, LANG_CS | LANG_VALA },
- { "region", CT_PP_REGION, LANG_ALL | FLAG_PP },
- { "register", CT_QUALIFIER, LANG_C | LANG_CPP },
- { "reinterpret_cast", CT_TYPE_CAST, LANG_CPP },
- { "remove", CT_GETSET, LANG_CS },
- { "restrict", CT_QUALIFIER, LANG_C | LANG_CPP },
- { "return", CT_RETURN, LANG_ALL },
- { "sbyte", CT_TYPE, LANG_CS },
- { "scope", CT_D_SCOPE, LANG_D },
- { "sealed", CT_QUALIFIER, LANG_CS },
- { "section", CT_PP_SECTION, LANG_PAWN | FLAG_PP },
- { "self", CT_THIS, LANG_OC },
- { "set", CT_GETSET, LANG_CS | LANG_VALA },
- { "short", CT_TYPE, LANG_ALLC },
- { "signal", CT_ACCESS, LANG_VALA },
- { "signals", CT_ACCESS, LANG_CPP },
- { "signed", CT_TYPE, LANG_C | LANG_CPP },
- { "size_t", CT_TYPE, LANG_ALLC },
- { "sizeof", CT_SIZEOF, LANG_C | LANG_CPP | LANG_CS | LANG_VALA | LANG_PAWN },
- { "sleep", CT_SIZEOF, LANG_PAWN },
- { "stackalloc", CT_NEW, LANG_CS },
- { "state", CT_STATE, LANG_PAWN },
- { "static", CT_QUALIFIER, LANG_ALL },
- { "static_cast", CT_TYPE_CAST, LANG_CPP },
- { "stock", CT_STOCK, LANG_PAWN },
- { "strictfp", CT_QUALIFIER, LANG_JAVA },
- { "string", CT_TYPE, LANG_CS | LANG_VALA },
- { "struct", CT_STRUCT, LANG_C | LANG_CPP | LANG_OC | LANG_CS | LANG_D | LANG_VALA },
- { "super", CT_SUPER, LANG_D | LANG_JAVA | LANG_ECMA },
- { "switch", CT_SWITCH, LANG_ALL },
- { "synchronized", CT_QUALIFIER, LANG_D | LANG_ECMA },
- { "synchronized", CT_SYNCHRONIZED, LANG_JAVA },
- { "tagof", CT_TAGOF, LANG_PAWN },
- { "template", CT_TEMPLATE, LANG_CPP | LANG_D },
- { "this", CT_THIS, LANG_CPP | LANG_CS | LANG_D | LANG_JAVA | LANG_VALA | LANG_ECMA },
- { "throw", CT_THROW, LANG_CPP | LANG_CS | LANG_VALA | LANG_D | LANG_JAVA | LANG_ECMA },
- { "throws", CT_QUALIFIER, LANG_JAVA | LANG_ECMA | LANG_VALA },
- { "transient", CT_QUALIFIER, LANG_JAVA | LANG_ECMA },
- { "true", CT_WORD, LANG_ALL },
- { "try", CT_TRY, LANG_CPP | LANG_CS | LANG_D | LANG_JAVA | LANG_ECMA | LANG_VALA },
- { "tryinclude", CT_PP_INCLUDE, LANG_PAWN | FLAG_PP },
- { "typedef", CT_TYPEDEF, LANG_C | LANG_CPP | LANG_OC | LANG_D },
- { "typeid", CT_SIZEOF, LANG_CPP | LANG_D },
- { "typename", CT_TYPENAME, LANG_CPP },
- { "typeof", CT_DECLTYPE, LANG_C | LANG_CPP },
- { "typeof", CT_SIZEOF, LANG_CS | LANG_D | LANG_VALA | LANG_ECMA },
- { "ubyte", CT_TYPE, LANG_D },
- { "ucent", CT_TYPE, LANG_D },
- { "uint", CT_TYPE, LANG_CS | LANG_VALA | LANG_D },
- { "ulong", CT_TYPE, LANG_CS | LANG_VALA | LANG_D },
- { "unchecked", CT_QUALIFIER, LANG_CS },
- { "undef", CT_PP_UNDEF, LANG_ALL | FLAG_PP },
- { "union", CT_UNION, LANG_C | LANG_CPP | LANG_D },
- { "unittest", CT_UNITTEST, LANG_D },
- { "unsafe", CT_UNSAFE, LANG_CS },
- { "unsafe_unretained", CT_QUALIFIER, LANG_OC },
- { "unsigned", CT_TYPE, LANG_C | LANG_CPP },
- { "ushort", CT_TYPE, LANG_CS | LANG_VALA | LANG_D },
- { "using", CT_USING, LANG_CPP | LANG_CS | LANG_VALA },
- { "var", CT_TYPE, LANG_CS | LANG_VALA | LANG_ECMA },
- { "version", CT_D_VERSION, LANG_D },
- { "virtual", CT_QUALIFIER, LANG_CPP | LANG_CS | LANG_VALA },
- { "void", CT_TYPE, LANG_ALLC },
- { "volatile", CT_QUALIFIER, LANG_C | LANG_CPP | LANG_CS | LANG_JAVA | LANG_ECMA },
- { "volatile", CT_VOLATILE, LANG_D },
- { "wchar", CT_TYPE, LANG_D },
- { "wchar_t", CT_TYPE, LANG_C | LANG_CPP },
- { "weak", CT_QUALIFIER, LANG_VALA },
- { "when", CT_WHEN, LANG_CS },
- { "where", CT_WHERE, LANG_CS },
- { "while", CT_WHILE, LANG_ALL },
- { "with", CT_D_WITH, LANG_D | LANG_ECMA },
- { "xor", CT_SARITH, LANG_CPP },
- { "xor_eq", CT_SASSIGN, LANG_CPP },
-};
-
-
-// Issue #3353
-void init_keywords_for_language()
-{
- unsigned int local_flags = cpd.lang_flags;
- size_t keywords_count = ARRAY_SIZE(keywords);
-
- language_count = 0;
-
- for (size_t idx = 0; idx < keywords_count; idx++)
- {
- chunk_tag_t *tag = &keywords[idx];
-
- if ((tag->lang_flags & local_flags) != 0)
- {
- // for debugging only
- // fprintf(stderr, "%s(%d): %zu Keyword: '%s', type is '%s'\n",
- // __func__, __LINE__, idx, tag->tag, get_token_name(tag->type));
- keyword_for_lang[language_count].tag = tag->tag;
- keyword_for_lang[language_count].type = tag->type;
- keyword_for_lang[language_count].lang_flags = tag->lang_flags;
- language_count++;
- }
- }
-
- LOG_FMT(LDYNKW, "%s(%d): Number of Keywords for language %d: '%zu'\n",
- __func__, __LINE__, local_flags, language_count);
-} // init_keywords_for_language
-
-
-static int kw_compare(const void *p1, const void *p2)
-{
- const chunk_tag_t *t1 = static_cast<const chunk_tag_t *>(p1);
- const chunk_tag_t *t2 = static_cast<const chunk_tag_t *>(p2);
-
- return(strcmp(t1->tag, t2->tag));
-} // kw_compare
-
-
-bool keywords_are_sorted()
-{
- size_t keywords_count = ARRAY_SIZE(keywords);
-
- for (size_t idx = 1; idx < keywords_count; idx++)
- {
- if (kw_compare(&keywords[idx - 1], &keywords[idx]) > 0)
- {
- fprintf(stderr, "%s: bad sort order at idx %d, words '%s' and '%s'\n",
- __func__, (int)idx - 1, keywords[idx - 1].tag, keywords[idx].tag);
- // coveralls will always complain.
- // these lines are only needed for the developer.
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- }
-
- return(true);
-} // keywords_are_sorted
-
-
-void add_keyword(const std::string &tag, E_Token type)
-{
- // See if the keyword has already been added
- dkwmap::iterator it = dkwm.find(tag);
-
- if (it != dkwm.end())
- {
- LOG_FMT(LDYNKW, "%s(%d): changed '%s' to '%s'\n",
- __func__, __LINE__, tag.c_str(), get_token_name(type));
- (*it).second = type;
- return;
- }
- // Insert the keyword
- dkwm.insert(dkwmap::value_type(tag, type));
- LOG_FMT(LDYNKW, "%s(%d): added '%s' as '%s'\n",
- __func__, __LINE__, tag.c_str(), get_token_name(type));
-} // add_keyword
-
-
-static const chunk_tag_t *kw_static_first(const chunk_tag_t *tag)
-{
- const chunk_tag_t *prev = tag - 1;
-
- // TODO: avoid pointer arithmetic
- // loop over static keyword array
- while ( prev >= &keyword_for_lang[0] // not at beginning of keyword array
- && strcmp(prev->tag, tag->tag) == 0) // tags match
- {
- tag = prev;
- prev--;
- }
- return(tag);
-} // kw_static_first
-
-
-static const chunk_tag_t *kw_static_match(bool orig_list, const chunk_tag_t *tag, int lang_flags)
-{
- bool in_pp = ( cpd.in_preproc != CT_NONE
- && cpd.in_preproc != CT_PP_DEFINE);
-
- for (const chunk_tag_t *iter = kw_static_first(tag);
- (orig_list) ? (iter < &keywords[ARRAY_SIZE(keywords)]) : (iter < &keyword_for_lang[language_count]);
- iter++)
- {
- bool pp_iter = (iter->lang_flags & FLAG_PP) != 0; // forcing value to bool
-
- if ( (strcmp(iter->tag, tag->tag) == 0)
- && language_is_set(iter->lang_flags)
- && (lang_flags & iter->lang_flags)
- && in_pp == pp_iter)
- {
- return(iter);
- }
- }
-
- return(nullptr);
-} // kw_static_match
-
-
-E_Token find_keyword_type(const char *word, size_t len)
-{
- if (len <= 0)
- {
- return(CT_NONE);
- }
- // check the dynamic word list first
- string ss(word, len);
- dkwmap::iterator it = dkwm.find(ss);
-
- if (it != dkwm.end())
- {
- return((*it).second);
- }
- chunk_tag_t key;
-
- key.tag = ss.c_str();
-
- // check the static word list
- const chunk_tag_t *p_ret = static_cast<const chunk_tag_t *>(
- bsearch(&key, keyword_for_lang, language_count, sizeof(keyword_for_lang[0]), kw_compare));
-
- if (p_ret != nullptr)
- {
- if ( strcmp(p_ret->tag, "__pragma") == 0
- || strcmp(p_ret->tag, "_Pragma") == 0)
- {
- cpd.in_preproc = CT_PREPROC;
- }
- p_ret = kw_static_match(false, p_ret, cpd.lang_flags);
- }
- return((p_ret != nullptr) ? p_ret->type : CT_WORD);
-} // find_keyword_type
-
-
-int load_keyword_file(const char *filename)
-{
- FILE *pf = fopen(filename, "r");
-
- if (pf == nullptr)
- {
- LOG_FMT(LERR, "%s: fopen(%s) failed: %s (%d)\n",
- __func__, filename, strerror(errno), errno);
- exit(EX_IOERR);
- }
- const int max_line_length = 256;
- const int max_arg_count = 2;
-
- // maximal length of a line in the file
- char buf[max_line_length];
- char *args[max_arg_count];
- size_t line_no = 0;
-
- // read file line by line
- while (fgets(buf, max_line_length, pf) != nullptr)
- {
- line_no++;
-
- // remove comments after '#' sign
- char *ptr;
-
- if ((ptr = strchr(buf, '#')) != nullptr)
- {
- *ptr = 0; // set string end where comment begins
- }
- size_t argc = Args::SplitLine(buf, args, max_arg_count);
-
- if (argc > 0)
- {
- if ( argc == 1
- && CharTable::IsKw1(*args[0]))
- {
- add_keyword(args[0], CT_TYPE);
- }
- else
- {
- LOG_FMT(LWARN, "%s:%zu Invalid line (starts with '%s')\n",
- filename, line_no, args[0]);
- exit(EX_SOFTWARE);
- }
- }
- else
- {
- continue; // the line is empty
- }
- }
- fclose(pf);
- return(EX_OK);
-} // load_keyword_file
-
-
-void print_custom_keywords(FILE *pfile)
-{
- for (const auto &keyword_pair : dkwm)
- {
- E_Token tt = keyword_pair.second;
-
- if (tt == CT_TYPE)
- {
- fprintf(pfile, "custom type %*.s%s\n",
- uncrustify::limits::MAX_OPTION_NAME_LEN - 10, " ",
- keyword_pair.first.c_str());
- }
- else if (tt == CT_MACRO_OPEN)
- {
- fprintf(pfile, "macro-open %*.s%s\n",
- uncrustify::limits::MAX_OPTION_NAME_LEN - 11, " ",
- keyword_pair.first.c_str());
- }
- else if (tt == CT_MACRO_CLOSE)
- {
- fprintf(pfile, "macro-close %*.s%s\n",
- uncrustify::limits::MAX_OPTION_NAME_LEN - 12, " ",
- keyword_pair.first.c_str());
- }
- else if (tt == CT_MACRO_ELSE)
- {
- fprintf(pfile, "macro-else %*.s%s\n",
- uncrustify::limits::MAX_OPTION_NAME_LEN - 11, " ",
- keyword_pair.first.c_str());
- }
- else
- {
- const char *tn = get_token_name(tt);
-
- fprintf(pfile, "set %s %*.s%s\n",
- tn,
- uncrustify::limits::MAX_OPTION_NAME_LEN - (4 + static_cast<int>(strlen(tn))),
- " ", keyword_pair.first.c_str());
- }
- }
-} // print_custom_keywords
-
-
-void clear_keyword_file()
-{
- dkwm.clear();
-} // clear_keyword_file
-
-
-pattern_class_e get_token_pattern_class(E_Token tok)
-{
- // TODO: instead of this switch better assign the pattern class to each statement
- switch (tok)
- {
- case CT_IF:
- case CT_ELSEIF:
- case CT_SWITCH:
- case CT_FOR:
- case CT_WHILE:
- case CT_SYNCHRONIZED:
- case CT_USING_STMT:
- case CT_LOCK:
- case CT_D_WITH:
- case CT_D_VERSION_IF:
- case CT_D_SCOPE_IF:
- return(pattern_class_e::PBRACED);
-
- case CT_ELSE:
- return(pattern_class_e::ELSE);
-
- case CT_DO:
- case CT_TRY:
- case CT_FINALLY:
- case CT_BODY:
- case CT_UNITTEST:
- case CT_UNSAFE:
- case CT_VOLATILE:
- case CT_GETSET:
- return(pattern_class_e::BRACED);
-
- case CT_CATCH:
- case CT_D_VERSION:
- case CT_DEBUG:
- return(pattern_class_e::OPBRACED);
-
- case CT_NAMESPACE:
- return(pattern_class_e::VBRACED);
-
- case CT_WHILE_OF_DO:
- return(pattern_class_e::PAREN);
-
- case CT_INVARIANT:
- return(pattern_class_e::OPPAREN);
-
- default:
- return(pattern_class_e::NONE);
- } // switch
-} // get_token_pattern_class
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/keywords.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/keywords.h
deleted file mode 100644
index 7dc431c5..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/keywords.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * @file keywords.h
- * prototypes for keywords.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef KEYWORDS_H_INCLUDED
-#define KEYWORDS_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-/**
- * Initializes keywords table for a given language.
- *
- * Let us have a look on the problem is caused by the tokens "in" and "out",
- * used in the file "Issue_3353.h" under.
- * The strings representing the tokens ("in" and "out"), are found in the
- * original table: static chunk_tag_t keywords[] because they are used by
- * other languages. They are tokenized as CT_IN and CT_OUT.
- * The correct tokenization is CT_FUNC_VAR.
- *
- * It is necessary to create (at run time) a new table with all the keywords
- * proper to the used language.
- *
- */
-
-/**
- * The file
- * "Issue_3353.h"
- * struct A {
- * void (*in)(
- * void);
- * void (*out)(
- * void);
- * };
- */
-void init_keywords_for_language();
-
-/**
- * Loads the dynamic keywords from a file
- *
- * @param filename The path to the file to load
- *
- * @retval EX_OK successfully read keywords from file
- * @retval EX_IOERR reading keywords file failed
- */
-int load_keyword_file(const char *filename);
-
-
-/**
- * Search first the dynamic and then the static table for a matching keyword
- *
- * @param word Pointer to the text -- NOT zero terminated
- * @param len The length of the text
- *
- * @return CT_WORD (no match) or the keyword token
- */
-E_Token find_keyword_type(const char *word, size_t len);
-
-
-/**
- * Adds a keyword to the list of dynamic keywords
- *
- * @param tag The tag (string) must be zero terminated
- * @param type The type, usually CT_TYPE
- */
-void add_keyword(const std::string &tag, E_Token type);
-
-
-void print_custom_keywords(FILE *pfile);
-
-
-void clear_keyword_file();
-
-
-//! Returns the pattern that the keyword needs based on the token
-pattern_class_e get_token_pattern_class(E_Token tok);
-
-
-bool keywords_are_sorted();
-
-
-#endif /* KEYWORDS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/lang_pawn.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/lang_pawn.cpp
deleted file mode 100644
index 70722c74..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/lang_pawn.cpp
+++ /dev/null
@@ -1,524 +0,0 @@
-/**
- * @file lang_pawn.cpp
- * Special functions for pawn stuff
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "lang_pawn.h"
-
-#include "prototypes.h"
-
-using namespace uncrustify;
-
-
-/**
- * Checks to see if a token continues a statement to the next line.
- * We need to check for 'open' braces/paren/etc because the level doesn't
- * change until the token after the open.
- */
-static bool pawn_continued(Chunk *pc, size_t br_level);
-
-
-/**
- * Functions prototypes and definitions can only appear in level 0.
- *
- * Function prototypes start with "native", "forward", or are just a function
- * with a trailing semicolon instead of a open brace (or something else)
- *
- * somefunc(params) <-- def
- * stock somefunc(params) <-- def
- * somefunc(params); <-- proto
- * forward somefunc(params) <-- proto
- * native somefunc[rect](params) <-- proto
- *
- * Functions start with 'stock', 'static', 'public', or '@' (on level 0)
- *
- * Variable definitions start with 'stock', 'static', 'new', or 'public'.
- */
-static Chunk *pawn_process_line(Chunk *start);
-
-
-//! We are on a level 0 function proto of def
-static Chunk *pawn_mark_function0(Chunk *start, Chunk *fcn);
-
-
-/**
- * follows a variable definition at level 0 until the end.
- * Adds a semicolon at the end, if needed.
- */
-static Chunk *pawn_process_variable(Chunk *start);
-
-
-static Chunk *pawn_process_func_def(Chunk *pc);
-
-
-Chunk *pawn_add_vsemi_after(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- if (pc->IsSemicolon())
- {
- return(pc);
- }
- Chunk *next = pc->GetNextNc();
-
- if ( next->IsNotNullChunk()
- && next->IsSemicolon())
- {
- return(pc);
- }
- Chunk chunk = *pc;
-
- chunk.SetType(CT_VSEMICOLON);
- chunk.SetParentType(CT_NONE);
- chunk.Str() = options::mod_pawn_semicolon() ? ";" : "";
- chunk.SetColumn(pc->GetColumn() + pc->Len());
-
- LOG_FMT(LPVSEMI, "%s: Added VSEMI on line %zu, prev='%s' [%s]\n",
- __func__, pc->GetOrigLine(), pc->Text(),
- get_token_name(pc->GetType()));
-
- return(chunk.CopyAndAddAfter(pc));
-}
-
-
-void pawn_scrub_vsemi()
-{
- constexpr static auto LCURRENT = LPVSEMI;
-
- LOG_FUNC_ENTRY();
-
- log_rule_B("mod_pawn_semicolon");
-
- if (!options::mod_pawn_semicolon())
- {
- return;
- }
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if (pc->IsNot(CT_VSEMICOLON))
- {
- continue;
- }
- Chunk *prev = pc->GetPrevNcNnl();
-
- if (prev->Is(CT_BRACE_CLOSE))
- {
- if ( prev->GetParentType() == CT_IF
- || prev->GetParentType() == CT_ELSE
- || prev->GetParentType() == CT_SWITCH
- || prev->GetParentType() == CT_CASE
- || prev->GetParentType() == CT_WHILE_OF_DO)
- {
- pc->Str().clear();
- }
- }
- }
-}
-
-
-static bool pawn_continued(Chunk *pc, size_t br_level)
-{
- LOG_FUNC_ENTRY();
-
- if (pc == nullptr)
- {
- return(false);
- }
-
- if ( pc->GetLevel() > br_level
- || pc->Is(CT_ARITH)
- || pc->Is(CT_SHIFT)
- || pc->Is(CT_CARET)
- || pc->Is(CT_QUESTION)
- || pc->Is(CT_BOOL)
- || pc->Is(CT_ASSIGN)
- || pc->Is(CT_COMMA)
- || pc->Is(CT_COMPARE)
- || pc->Is(CT_IF)
- || pc->Is(CT_ELSE)
- || pc->Is(CT_DO)
- || pc->Is(CT_SWITCH)
- || pc->Is(CT_WHILE)
- || pc->Is(CT_BRACE_OPEN)
- || pc->Is(CT_VBRACE_OPEN)
- || pc->Is(CT_FPAREN_OPEN)
- || pc->GetParentType() == CT_IF
- || pc->GetParentType() == CT_ELSE
- || pc->GetParentType() == CT_ELSEIF
- || pc->GetParentType() == CT_DO
- || pc->GetParentType() == CT_FOR
- || pc->GetParentType() == CT_SWITCH
- || pc->GetParentType() == CT_WHILE
- || pc->GetParentType() == CT_FUNC_DEF
- || pc->GetParentType() == CT_ENUM
- || pc->GetFlags().test_any(PCF_IN_ENUM | PCF_IN_STRUCT)
- || pc->IsString(":")
- || pc->IsString("+")
- || pc->IsString("-"))
- {
- return(true);
- }
- return(false);
-} // pawn_continued
-
-
-void pawn_prescan()
-{
- LOG_FUNC_ENTRY();
-
- /*
- * Start at the beginning and step through the entire file, and clean up
- * any questionable stuff
- */
- bool did_nl = true;
- Chunk *pc = Chunk::GetHead();
-
- while ( pc != nullptr
- && pc->IsNotNullChunk())
- {
- if ( did_nl
- && pc->IsNot(CT_PREPROC)
- && !pc->IsNewline()
- && pc->GetLevel() == 0)
- {
- // pc now points to the start of a line
- pc = pawn_process_line(pc);
- }
-
- // note that continued lines are ignored
- if ( pc != nullptr
- && pc->IsNotNullChunk())
- {
- did_nl = (pc->Is(CT_NEWLINE));
- }
- pc = pc->GetNextNc();
- }
-}
-
-
-static Chunk *pawn_process_line(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- //LOG_FMT(LSYS, "%s: %d - %s\n", __func__,
- // start->GetOrigLine(), start->Text());
-
- if ( start->Is(CT_NEW)
- || start->IsString("const"))
- {
- return(pawn_process_variable(start));
- }
- // if a open paren is found before an assign, then this is a function
- Chunk *fcn = nullptr;
-
- if (start->Is(CT_WORD))
- {
- fcn = start;
- }
- Chunk *pc = start;
-
- while ( ((pc = pc->GetNextNc())->IsNotNullChunk())
- && !pc->IsString("(")
- && pc->IsNot(CT_ASSIGN)
- && pc->IsNot(CT_NEWLINE))
- {
- if ( pc->GetLevel() == 0
- && ( pc->Is(CT_FUNCTION)
- || pc->Is(CT_WORD)
- || pc->Is(CT_OPERATOR_VAL)))
- {
- fcn = pc;
- }
- }
-
- if (pc->IsNotNullChunk())
- {
- if (pc->Is(CT_ASSIGN))
- {
- return(pawn_process_variable(pc));
- }
- }
-
- if (fcn != nullptr)
- {
- //LOG_FMT(LSYS, "FUNCTION: %s\n", fcn->Text());
- return(pawn_mark_function0(start, fcn));
- }
-
- if (start->Is(CT_ENUM))
- {
- pc = start->GetNextType(CT_BRACE_CLOSE, start->GetLevel());
- return(pc);
- }
- //LOG_FMT(LSYS, "%s: Don't understand line %d, starting with '%s' [%s]\n",
- // __func__, start->GetOrigLine(), start->Text(), get_token_name(start->GetType()));
- return(start);
-} // pawn_process_line
-
-
-static Chunk *pawn_process_variable(Chunk *start)
-{
- LOG_FUNC_ENTRY();
- Chunk *pc = Chunk::NullChunkPtr;
-
- if ( start != nullptr
- && start->IsNotNullChunk())
- {
- pc = start;
- }
- Chunk *prev = Chunk::NullChunkPtr;
-
- while ((pc = pc->GetNextNc())->IsNotNullChunk())
- {
- if ( pc->Is(CT_NEWLINE)
- && prev->IsNotNullChunk()
- && !pawn_continued(prev, start->GetLevel()))
- {
- if (!prev->IsSemicolon())
- {
- pawn_add_vsemi_after(prev);
- }
- break;
- }
- prev = pc;
- }
- return(pc);
-}
-
-
-void pawn_add_virtual_semicolons()
-{
- LOG_FUNC_ENTRY();
-
- // Add Pawn virtual semicolons
- if (language_is_set(LANG_PAWN))
- {
- Chunk *prev = Chunk::NullChunkPtr;
- Chunk *pc = Chunk::GetHead();
-
- while ((pc = pc->GetNext())->IsNotNullChunk())
- {
- if ( !pc->IsCommentOrNewline()
- && !pc->IsVBrace())
- {
- prev = pc;
- }
-
- if ( prev->IsNullChunk()
- || ( pc->IsNot(CT_NEWLINE)
- && !pc->IsBraceClose()))
- {
- continue;
- }
-
- // we just hit a newline and we have a previous token
- if ( !prev->TestFlags(PCF_IN_PREPROC)
- && !prev->GetFlags().test_any(PCF_IN_ENUM | PCF_IN_STRUCT)
- && !prev->IsSemicolon()
- && !pawn_continued(prev, prev->GetBraceLevel()))
- {
- pawn_add_vsemi_after(prev);
- prev = Chunk::NullChunkPtr;
- }
- }
- }
-} // pawn_add_virtual_semicolons
-
-
-static Chunk *pawn_mark_function0(Chunk *start, Chunk *fcn)
-{
- LOG_FUNC_ENTRY();
-
- // handle prototypes
- if (start == fcn)
- {
- Chunk *last = fcn->GetNextType(CT_PAREN_CLOSE, fcn->GetLevel())->GetNext();
-
- if (last->Is(CT_SEMICOLON))
- {
- LOG_FMT(LPFUNC, "%s: %zu] '%s' proto due to semicolon\n",
- __func__, fcn->GetOrigLine(), fcn->Text());
- fcn->SetType(CT_FUNC_PROTO);
- return(last);
- }
- }
- else
- {
- if ( start->Is(CT_FORWARD)
- || start->Is(CT_NATIVE))
- {
- LOG_FMT(LPFUNC, "%s: %zu] '%s' [%s] proto due to %s\n",
- __func__, fcn->GetOrigLine(), fcn->Text(),
- get_token_name(fcn->GetType()),
- get_token_name(start->GetType()));
- fcn->SetType(CT_FUNC_PROTO);
- return(fcn->GetNextNc());
- }
- }
- // Not a prototype, so it must be a function def
- return(pawn_process_func_def(fcn));
-}
-
-
-static Chunk *pawn_process_func_def(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- // We are on a function definition
- pc->SetType(CT_FUNC_DEF);
-
- LOG_FMT(LPFUNC, "%s: %zu:%zu %s\n",
- __func__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
-
- /*
- * If we don't have a brace open right after the close fparen, then
- * we need to add virtual braces around the function body.
- */
- Chunk *clp = pc->GetNextString(")", 1, 0);
- Chunk *last = clp->GetNextNcNnl();
-
- if (last->IsNotNullChunk())
- {
- LOG_FMT(LPFUNC, "%s: %zu] last is '%s' [%s]\n",
- __func__, last->GetOrigLine(), last->Text(), get_token_name(last->GetType()));
- }
-
- // See if there is a state clause after the function
- if ( last->IsNotNullChunk()
- && last->IsString("<"))
- {
- LOG_FMT(LPFUNC, "%s: %zu] '%s' has state angle open %s\n",
- __func__, pc->GetOrigLine(), pc->Text(), get_token_name(last->GetType()));
-
- last->SetType(CT_ANGLE_OPEN);
- last->SetParentType(CT_FUNC_DEF);
-
- while ( ((last = last->GetNext())->IsNotNullChunk())
- && !last->IsString(">"))
- {
- // do nothing just search, TODO: use search_chunk
- }
-
- if (last->IsNotNullChunk())
- {
- LOG_FMT(LPFUNC, "%s: %zu] '%s' has state angle close %s\n",
- __func__, pc->GetOrigLine(), pc->Text(), get_token_name(last->GetType()));
- last->SetType(CT_ANGLE_CLOSE);
- last->SetParentType(CT_FUNC_DEF);
- }
- last = last->GetNextNcNnl();
- }
-
- if (last->IsNullChunk())
- {
- return(last);
- }
-
- if (last->Is(CT_BRACE_OPEN))
- {
- last->SetParentType(CT_FUNC_DEF);
- last = last->GetNextType(CT_BRACE_CLOSE, last->GetLevel());
-
- if (last->IsNotNullChunk())
- {
- last->SetParentType(CT_FUNC_DEF);
- }
- }
- else
- {
- LOG_FMT(LPFUNC, "%s: %zu] '%s' fdef: expected brace open: %s\n",
- __func__, pc->GetOrigLine(), pc->Text(), get_token_name(last->GetType()));
-
- // do not insert a vbrace before a preproc
- if (last->TestFlags(PCF_IN_PREPROC))
- {
- return(last);
- }
- Chunk chunk = *last;
- chunk.Str().clear();
- chunk.SetType(CT_VBRACE_OPEN);
- chunk.SetParentType(CT_FUNC_DEF);
-
- Chunk *prev = chunk.CopyAndAddBefore(last);
- last = prev;
-
- // find the next newline at level 0
- prev = prev->GetNextNcNnl();
-
- do
- {
- LOG_FMT(LPFUNC, "%s:%zu] check %s, level %zu\n",
- __func__, prev->GetOrigLine(), get_token_name(prev->GetType()), prev->GetLevel());
-
- if ( prev->Is(CT_NEWLINE)
- && prev->GetLevel() == 0)
- {
- Chunk *next = prev->GetNextNcNnl();
-
- if ( next->IsNotNullChunk()
- && next->IsNot(CT_ELSE)
- && next->IsNot(CT_WHILE_OF_DO))
- {
- break;
- }
- }
- prev->SetLevel(prev->GetLevel() + 1);
- prev->SetBraceLevel(prev->GetBraceLevel() + 1);
- last = prev;
- } while ((prev = prev->GetNext())->IsNotNullChunk());
-
- if ( last != nullptr
- && last->IsNotNullChunk())
- {
- LOG_FMT(LPFUNC, "%s:%zu] ended on %s, level %zu\n",
- __func__, last->GetOrigLine(), get_token_name(last->GetType()), last->GetLevel());
- }
- chunk = *last;
- chunk.Str().clear();
- chunk.SetType(CT_VBRACE_CLOSE);
- chunk.SetParentType(CT_FUNC_DEF);
- chunk.SetColumn(chunk.GetColumn() + last->Len());
- chunk.SetLevel(0);
- chunk.SetBraceLevel(0);
- last = chunk.CopyAndAddAfter(last);
- }
- return(last);
-} // pawn_process_func_def
-
-
-Chunk *pawn_check_vsemicolon(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- // Grab the open VBrace
- Chunk *vb_open = pc->GetPrevType(CT_VBRACE_OPEN);
-
- /*
- * Grab the item before the newline
- * Don't do anything if:
- * - the only thing previous is the V-Brace open
- * - in a preprocessor
- * - level > (vb_open->GetLevel() + 1) -- ie, in () or []
- * - it is something that needs a continuation
- * + arith, assign, bool, comma, compare
- */
- Chunk *prev = pc->GetPrevNcNnl();
-
- if ( prev->IsNullChunk()
- || prev == vb_open
- || prev->TestFlags(PCF_IN_PREPROC)
- || pawn_continued(prev, vb_open->GetLevel() + 1))
- {
- if (prev->IsNotNullChunk())
- {
- LOG_FMT(LPVSEMI, "%s: no VSEMI on line %zu, prev='%s' [%s]\n",
- __func__, prev->GetOrigLine(), prev->Text(), get_token_name(prev->GetType()));
- }
- return(pc);
- }
- return(pawn_add_vsemi_after(prev));
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/lang_pawn.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/lang_pawn.h
deleted file mode 100644
index 03766a08..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/lang_pawn.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * @file long_pawn.h
- * prototypes for long_pawn.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-#ifndef LONG_PAWN_H_INCLUDED
-#define LONG_PAWN_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-
-/**
- * Does a scan of level 0 BEFORE stuff in combine.cpp is called.
- * At this point, VSemis have been added only in VBraces.
- * Otherwise, all level info is correct, except for unbraced functions.
- *
- * We are looking for unbraced functions.
- */
-void pawn_prescan();
-
-
-void pawn_add_virtual_semicolons();
-
-
-/**
- * We are in a virtual brace and hit a newline.
- * If this should end the vbrace, then insert a VSEMICOLON and return that.
- *
- * @param pc The newline (CT_NEWLINE)
- *
- * @return Either the newline or the newly inserted virtual semicolon
- */
-Chunk *pawn_check_vsemicolon(Chunk *pc);
-
-
-/**
- * Turns certain virtual semicolons invisible.
- * - after a close brace with a parent of switch, case, else, if
- */
-void pawn_scrub_vsemi();
-
-
-//! add a semicolon after ...
-Chunk *pawn_add_vsemi_after(Chunk *pc);
-
-
-#endif /* LONG_PAWN_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/log_levels.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/log_levels.h
deleted file mode 100644
index 266e1981..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/log_levels.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- * @file log_levels.h
- *
- * Enum for log levels.
- * Use these for the log severities in LOG_FMT(), etc.
- *
- * @author Ben Gardner
- * @author Guy Maurel October 2015- 2021
- * @license GPL v2+
- */
-
-#ifndef LOG_LEVELS_H_INCLUDED
-#define LOG_LEVELS_H_INCLUDED
-
-/**
- * list of available log levels
- *
- * The user defines which log level is active using the
- * -L or -log option.
- * use -L A to set all the levels
- * All messages which have a level that is active will be stored to the log
- * file.
- * All other log messages will be discarded.
- * Different parts of the software use different log levels.
- * This allows to log only operations of a specific operation.
- * This eases debugging.
- * To get all log messages use the option -La
- * By default only system messages (level=LSYS) are logged.
- */
-enum log_sev_t
-{
- LSYS = 0, //! system messages
- LERR = 1, //! error messages
- LWARN = 2, //! warnings
- LNOTE = 3, //! user notifications
- LINFO = 4, //! user information
- LDATA = 5, //! data logging
-
- LFILELIST = 8, //! Files in the file list file
- LLINEENDS = 9, //! Show which line endings are used
- LCASTS = 10, //! align casts
- LALBR = 11, //! align braces
- LALTD = 12, //! Align Typedef
- LALPP = 13, //! align #define
- LALPROTO = 14, //! align prototype
- LALNLC = 15, //! align backslash-newline
- LALTC = 16, //! align trailing comments
- LALADD = 17, //! align add
- LALASS = 18, //! align assign
- LFVD = 19, //! fix_var_def
- LFVD2 = 20, //! fix_var_def-2
- LINDENT = 21, //! indent_text
- LINDENT2 = 22, //! indent_text tab level
- LINDPSE = 23, //! indent_text stack
- LINDPC = 24, //! indent play-by-play
- LNEWLINE = 25, //! newlines
- LPF = 26, //! Parse Frame
- LSTMT = 27, //! Marking statements/expressions
- LTOK = 28, //! Tokenize
- LALRC = 29, //! align right comment
- LCMTIND = 30, //! Comment Indent
- LINDLINE = 31, //! indent line
- LSIB = 32, //! Scan IB
- LRETURN = 33, //! add/remove parens for return or throw
- LBRDEL = 34, //! brace removal
- LFCN = 35, //! function detection
- LFCNP = 36, //! function parameters
- LPCU = 37, //! parse cleanup
- LDYNKW = 38, //! dynamic keywords
- LOUTIND = 39, //! output indent
- LBCSAFTER = 40, //! Brace cleanup stack - after each token
- LBCSPOP = 41, //! Brace cleanup stack - log pops
- LBCSPUSH = 42, //! Brace cleanup stack - log push
- LBCSSWAP = 43, //! Brace cleanup stack - log swaps
- LFTOR = 44, //! Class Ctor or Dtor
- LAS = 45, //! align_stack
- LPPIS = 46, //! Preprocessor Indent and Space
- LTYPEDEF = 47, //! Typedef and function types
- LVARDEF = 48, //! Variable def marking
- LDEFVAL = 49, //! define values
- LPVSEMI = 50, //! Pawn: virtual semicolons
- LPFUNC = 51, //! Pawn: function recognition
- LSPLIT = 52, //! Line splitting
- LFTYPE = 53, //! Function type detection
- LTEMPL = 54, //! Template detection
- LPARADD = 55, //! adding parens in if/while
- LPARADD2 = 56, //! adding parens in if/while - details
- LBLANKD = 57, //! blank line details
- LTEMPFUNC = 58, //! Template function detection
- LSCANSEMI = 59, //! scan semicolon removal
- LDELSEMI = 60, //! Removing semicolons
- LFPARAM = 61, //! Testing for a full parameter
- LNL1LINE = 62, //! NL check for 1 liners
- LPFCHK = 63, //! Parse Frame check function call
- LAVDB = 64, //! align var def braces
- LSORT = 65, //! Sorting
- LSPACE = 66, //! Space
- LALIGN = 67, //! align
- LALAGAIN = 68, //! align again
- LOPERATOR = 69, //! operator
- LASFCP = 70, //! Align Same Function Call Params
- LINDLINED = 71, //! indent line details
- LBCTRL = 72, //! beautifier control
- LRMRETURN = 73, //! remove 'return;'
- LPPIF = 74, //! #if/#else/#endif pair processing
- LMCB = 75, //! mod_case_brace
- LBRCH = 76, //! if brace chain
- LFCNR = 77, //! function return type
- LOCCLASS = 78, //! OC Class stuff
- LOCMSG = 79, //! OC Message stuff
- LBLANK = 80, //! Blank Lines
- LOBJCWORD = 81, //! Convert keyword to CT_WORD in certain circumstances
- LCHANGE = 82, //! something changed
- LCONTTEXT = 83, //! comment cont_text set
- LANNOT = 84, //! Java annotation
- LOCBLK = 85, //! OC Block stuff
- LFLPAREN = 86, //! Flag paren
- LOCMSGD = 87, //! OC Message declaration
- LINDENTAG = 88, //! indent again
- LNFD = 89, //! newline-function-def
- LJDBI = 90, //! Java Double Brace Init
- LSETPAR = 91, //! Chunk::SetParentTypeReal()
- LSETTYP = 92, //! Chunk::SetTypeReal()
- LSETFLG = 93, //! set_chunk_flags()
- LNLFUNCT = 94, //! newlines before function
- LCHUNK = 95, //! Add or delete chunk
- LBC = 96, //! brace cleanup
- LCOMBINE = 97, //! combine
- LGUY98 = 98, //! for guy-test
- LGUY = 99, //! for guy-test
- LBR = 100, //! braces
- LOUTPUT = 101, //! output
- LUNC = 102, //! rules used in uncrustify.cpp
- LQT = 103, //! load/save options for Qt
- LVARDFBLK = 104, //! newlines for variable definition blocks
- LOTHER = 255, //! stuff that doesn't neatly fit any other category
-};
-
-#endif /* LOG_LEVELS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/log_rules.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/log_rules.cpp
deleted file mode 100644
index ec5f6240..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/log_rules.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- * @file log_rules.cpp
- * is an extract from space.cpp
- *
- * @author Guy Maurel
- * @license GPL v2+
- */
-
-#include "log_rules.h"
-
-#include "unc_tools.h"
-
-
-void log_rule2(const char *func, size_t line, const char *rule, Chunk *first, Chunk *second)
-{
- LOG_FUNC_ENTRY();
-
- if (second->IsNot(CT_NEWLINE))
- {
- LOG_FMT(LSPACE, "%s(%zu): first orig line is %zu, orig col is %zu, Text() is '%s', [%s/%s] <===>\n",
- func, line, first->GetOrigLine(), first->GetOrigCol(), first->Text(),
- get_token_name(first->GetType()), get_token_name(first->GetParentType()));
- LOG_FMT(LSPACE, " second orig line is %zu, orig col is %zu, Text() is '%s', [%s/%s] :",
- second->GetOrigLine(), second->GetOrigCol(), second->Text(),
- get_token_name(second->GetType()), get_token_name(second->GetParentType()));
- LOG_FMT(LSPACE, " rule %s[line %zu]\n",
- rule, line);
- }
-}
-
-
-#ifdef SUPER_LOG
-
-
-void log_rule3(log_sev_t sev, const char *func, size_t line, const char *rule)
-#else
-
-
-void log_rule3(log_sev_t sev, const char *func, const char *rule)
-#endif
-{
- // some Windows platforms provide a qualified function name ("ABC::XYZ::function_Name")
- // as __func__; call get_unqualified_func_name() to return an unqualified function name
-
- func = get_unqualified_func_name(func);
-
-#ifdef SUPER_LOG
- LOG_FMT(sev, "log_rule(%s:%zu): rule is '%s'\n", func, line, rule);
-#else
- LOG_FMT(sev, "log_rule(%s): rule is '%s'\n", func, rule);
-#endif
-}
-
-
-void log_rule4(const char *rule, Chunk *first)
-{
- if (!(cpd.html_type == tracking_type_e::TT_SPACE))
- {
- return;
- }
-
- if (first->GetTrackingData() == nullptr)
- {
- first->TrackingData() = new track_list;
- }
- // copy the rule
- size_t length = strlen(rule) + 1;
- char *r = (char *)malloc(length);
-
- strcpy(r, rule);
- size_t a_number = get_A_Number();
- Track_nr A = make_pair(a_number, r);
-
- first->TrackingData()->push_back(A);
- size_t sizeOfTrack = first->GetTrackingData()->size();
-
- LOG_FMT(LSPACE, "log_rule4(%d): rule is '%s', after '%s', at line %zu, tracking number is %zu, size is %zu\n",
- __LINE__, rule, first->Text(), first->GetOrigLine(), a_number, sizeOfTrack);
-}
-
-
-void log_ruleNL(const char *rule, Chunk *pc)
-{
- if (!(cpd.html_type == tracking_type_e::TT_NEWLINE))
- {
- return;
- }
-
- if (pc->GetTrackingData() == nullptr)
- {
- pc->TrackingData() = new track_list;
- }
- // copy the rule
- size_t length = strlen(rule) + 1;
- char *r = (char *)malloc(length);
-
- strcpy(r, rule);
- size_t a_number = get_A_Number();
- Track_nr A = make_pair(a_number, r);
-
- pc->TrackingData()->push_back(A);
- size_t sizeOfTrack = pc->GetTrackingData()->size();
-
- LOG_FMT(LSPACE, "log_rule4(%d): rule is '%s', after '%s', at line %zu, tracking number is %zu, size is %zu\n",
- __LINE__, rule, pc->Text(), pc->GetOrigLine(), a_number, sizeOfTrack);
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/log_rules.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/log_rules.h
deleted file mode 100644
index 02345a25..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/log_rules.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * @file log_rules.h
- * prototypes for log_rules.cpp
- *
- * @author Guy Maurel
- * @license GPL v2+
- */
-
-#ifndef LOG_RULES_H_INCLUDED
-#define LOG_RULES_H_INCLUDED
-
-#include "chunk.h"
-#include "uncrustify.h"
-
-using namespace uncrustify;
-
-#if defined DEBUG
-#define log_rule(rule) \
- log_rule2(__func__, __LINE__, (rule), first, second); \
- log_rule4((rule), first)
-#else
-#define log_rule(rule) \
- log_rule2(__func__, __LINE__, (rule), first, second)
-#endif
-
-// if you need more debug information, remove the comment at the next line
-#define SUPER_LOG 1
-#ifdef SUPER_LOG
-#define log_rule_B(rule) \
- log_rule3(LCURRENT, __func__, __LINE__, (rule))
-#else
-#define log_rule_B(rule) \
- log_rule3(LCURRENT, __func__, (rule))
-#endif
-
-#ifdef SUPER_LOG
-#define log_rule_NL(rule) \
- log_ruleNL((rule), pc)
-#else
-#define log_rule_NL(rule) \
- log_ruleNL(LCURRENT, __func__, (rule))
-#endif
-
-void log_rule2(const char *func, size_t line, const char *rule, Chunk *first, Chunk *second);
-
-
-#ifdef SUPER_LOG
-void log_rule3(log_sev_t sev, const char *func, size_t line, const char *rule);
-
-#else
-void log_rule3(log_sev_t sev, const char *func, const char *rule);
-
-#endif
-
-void log_rule4(const char *rule, Chunk *first);
-
-void log_ruleNL(const char *rule, Chunk *pc);
-
-#endif /* LOG_RULES_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/logger.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/logger.cpp
deleted file mode 100644
index c9a50682..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/logger.cpp
+++ /dev/null
@@ -1,336 +0,0 @@
-/**
- * @file logger.cpp
- *
- * Functions to do logging.
- *
- * If a log statement ends in a newline, the current log is ended.
- * When the log severity changes, an implicit newline is inserted.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "logger.h"
-
-#include "compat.h"
-
-#include <cstdarg> // to get va_start, va_end
-
-
-struct log_fcn_info
-{
- log_fcn_info(const char *name_, int line_)
- : name(name_)
- , line(line_)
- {
- }
-
- const char *name;
- int line;
-};
-static std::deque<log_fcn_info> g_fq;
-
-//! Private log structure
-struct log_buf
-{
- log_buf()
- : log_file(nullptr)
- , sev(LSYS)
- , in_log(0)
- , buf_len(0)
- , show_hdr(false)
- {
- bufX.clear();
- bufX.resize(256);
- }
-
- FILE *log_file; //! file where the log messages are stored into
- log_sev_t sev; //! log level determines which messages are logged
- int in_log; //! flag indicates if a log operation is going on
- size_t buf_len; //! number of characters currently stored in buffer
- std::vector<char> bufX; //! buffer holds the log message
- log_mask_t mask;
- bool show_hdr; //! flag determine if a header gets added to log message
-};
-
-
-static struct log_buf g_log;
-
-
-/**
- * Starts the log statement by flushing if needed and printing the header
- *
- * @param sev The log severity
- *
- * @return The number of bytes available
- */
-static size_t log_start(log_sev_t sev);
-
-
-/**
- * Cleans up after a log statement by detecting whether the log is done,
- * (it ends in a newline) and possibly flushing the log.
- */
-static void log_end();
-
-
-/**
- * Initializes the log subsystem - call this first.
- * This function sets the log stream and enables the top 3 sevs (0-2).
- *
- * @param log_file NULL for stderr or the FILE stream for logs.
- */
-void log_init(FILE *log_file)
-{
- // set the top 3 severities
- logmask_set_all(g_log.mask, false);
- log_set_sev(LSYS, true);
- log_set_sev(LERR, true);
- log_set_sev(LWARN, true);
-
- g_log.log_file = (log_file != nullptr) ? log_file : stderr;
-}
-
-
-void log_show_sev(bool show)
-{
- g_log.show_hdr = show;
-}
-
-
-bool log_sev_on(log_sev_t sev)
-{
- return(logmask_test(g_log.mask, sev));
-}
-
-
-void log_set_sev(log_sev_t sev, bool value)
-{
- logmask_set_sev(g_log.mask, sev, value);
-}
-
-
-void log_set_mask(const log_mask_t &mask)
-{
- g_log.mask = mask;
-}
-
-
-void log_get_mask(log_mask_t &mask)
-{
- mask = g_log.mask;
-}
-
-
-void log_flush(bool force_nl)
-{
- if (g_log.buf_len > 0)
- {
- if ( force_nl
- && g_log.bufX[g_log.buf_len - 1] != '\n')
- {
- g_log.bufX[g_log.buf_len++] = '\n';
- g_log.bufX[g_log.buf_len] = 0;
- }
- size_t retlength = fwrite(&g_log.bufX[0], g_log.buf_len, 1, g_log.log_file);
-
- if (retlength != 1)
- {
- // maybe we should log something to complain... =)
- }
- g_log.buf_len = 0;
- }
-}
-
-
-static size_t log_start(log_sev_t sev)
-{
- if (sev != g_log.sev)
- {
- if (g_log.buf_len > 0)
- {
- log_flush(true);
- }
- g_log.sev = sev;
- g_log.in_log = false;
- }
-
- // If not in a log, the buffer is empty. Add the header, if enabled.
- if ( !g_log.in_log
- && g_log.show_hdr)
- {
- g_log.buf_len = static_cast<size_t>(snprintf(&g_log.bufX[0], g_log.bufX.size(), "<%d>", sev));
- }
- size_t cap = (g_log.bufX.size() - 2) - g_log.buf_len;
-
- return((cap > 0) ? cap : 0);
-}
-
-
-static void log_end()
-{
- g_log.in_log = (g_log.bufX[g_log.buf_len - 1] != '\n');
-
- if ( !g_log.in_log
- || (g_log.buf_len > (g_log.bufX.size() / 2)))
- {
- log_flush(false);
- }
-}
-
-
-void log_fmt(log_sev_t sev, const char *fmt, ...)
-{
- if ( fmt == nullptr
- || !log_sev_on(sev))
- {
- return;
- }
- // Issue #1203
- unsigned int length = strlen(fmt);
-
- if (length == 0)
- {
- return;
- }
- // the value of buffer_length is experimental
- const int buffer_length = 40000;
- char buf[buffer_length];
-
- // it MUST be a 'unsigned int' variable to be runable under windows
-
- if (length >= buffer_length)
- {
- fprintf(stderr, "FATAL(1): The variable 'buf' is not big enough:\n");
- fprintf(stderr, " it should be bigger as %u\n", length);
- fprintf(stderr, "Please make a report.\n");
- fprintf(stderr, "For the buffer: %s\n", fmt);
- exit(EX_SOFTWARE);
- }
- memcpy(buf, fmt, length);
- buf[length] = 0;
- convert_log_zu2lu(buf);
-
- while (true)
- {
- /* Some implementation of vsnprintf() return the number of characters
- * that would have been stored if the buffer was large enough instead of
- * the number of characters actually stored.
- *
- * this gets the number of characters that fit into the log buffer
- */
- size_t cap = log_start(sev);
- // Add on the variable log parameters to the log string
- va_list args; // determine list of arguments ...
- va_start(args, fmt);
- size_t which = g_log.buf_len;
- char *where = &g_log.bufX[which];
- size_t lenX = static_cast<size_t>(vsnprintf(where, cap, buf, args));
- va_end(args);
-
- if (lenX > 0)
- {
- // The functions snprintf() and vsnprintf() do not write more than size bytes
- // (including the terminating null byte ('\0')). If the output was truncated due
- // to this limit, then the return value is the number of characters (excluding the
- // terminating null byte) which would have been written to the final string if
- // enough space had been available. Thus, a return value of size or more means
- // that the output was truncated.
- if (lenX > cap)
- {
- size_t bufXLength = g_log.bufX.size();
- size_t X = bufXLength * 2;
-
- if (X >= buffer_length)
- {
- fprintf(stderr, "FATAL(2): The variable 'buf' is not big enough:\n");
- fprintf(stderr, " it should be bigger as %zu\n", X);
- fprintf(stderr, "Please make a report.\n");
- fprintf(stderr, "For the buffer: %s\n", fmt);
- exit(EX_SOFTWARE);
- }
- g_log.bufX.resize(X);
- }
- else
- {
- g_log.buf_len += lenX;
- g_log.bufX[g_log.buf_len] = 0;
- break;
- }
- }
- }
- log_end();
-} // log_fmt
-
-
-log_func::log_func(const char *name, int line)
-{
- g_fq.push_back(log_fcn_info(name, line));
-}
-
-
-log_func::~log_func()
-{
- g_fq.pop_back();
-}
-
-
-void log_func_stack(log_sev_t sev, const char *prefix, const char *suffix, size_t skip_cnt)
-{
- UNUSED(skip_cnt);
-
- if (prefix)
- {
- LOG_FMT(sev, "%s", prefix);
- }
-#ifdef DEBUG
- const char *sep = "";
- size_t g_fq_size = g_fq.size();
- size_t begin_with;
-
- if (g_fq_size > (skip_cnt + 1))
- {
- begin_with = g_fq_size - (skip_cnt + 1);
-
- for (size_t idx = begin_with; idx != 0; idx--)
- {
- LOG_FMT(sev, "%s %s:%d", sep, g_fq[idx].name, g_fq[idx].line);
- sep = ",";
- }
-
- LOG_FMT(sev, "%s %s:%d", sep, g_fq[0].name, g_fq[0].line);
- }
-#else
- LOG_FMT(sev, "-DEBUG NOT SET-");
-#endif
-
- if (suffix)
- {
- LOG_FMT(sev, "%s", suffix);
- }
-}
-
-
-const char *get_unqualified_func_name(const char *func)
-{
- /**
- * we look for the last ':' character;
- */
- for (auto i = strlen(func); i > 0; --i)
- {
- if (func[i - 1] == ':')
- {
- /**
- * function name is qualified, so return the
- * unqualified portion
- */
- return(func + i);
- }
- }
-
- /**
- * input function name is unqualified
- */
-
- return(func);
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/mark_question_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/mark_question_colon.cpp
deleted file mode 100644
index cd058697..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/mark_question_colon.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/**
- * @file mark_question_colon.cpp
- *
- * @author Guy Maurel
- * @license GPL v2+
- */
-
-#include "mark_question_colon.h"
-
-#include "chunk.h"
-#include "combine_tools.h"
-#include "log_levels.h"
-#include "unc_tools.h"
-
-
-/*
- * Issue #3558
- * will be called if a chunk ? (CT_QUESTION) is entcountered
- * return the chunk :
- * return nullptr is a chunk ; (CT_SEMI_COLON) is found
- */
-Chunk *search_for_colon(Chunk *pc_local)
-{
- Chunk *pc2;
-
- LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
- __func__, __LINE__, pc_local->GetOrigLine(), pc_local->GetOrigCol(), pc_local->GetLevel(), pc_local->Text());
- Chunk *colon = pc_local->GetNextType(CT_COLON, pc_local->GetLevel());
-
- if (colon != nullptr)
- {
- LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
- __func__, __LINE__, colon->GetOrigLine(), colon->GetOrigCol(), colon->GetLevel(), colon->Text());
- colon->SetType(CT_COND_COLON);
- flag_series(pc_local, colon, PCF_IN_CONDITIONAL);
-
- // examine the next tokens, search for a next CT_QUESTION
- for (pc2 = colon->GetNext(); pc2->IsNotNullChunk(); pc2 = pc2->GetNextNcNnl())
- {
- LOG_FMT(LCOMBINE, "%s(%d): THE NEXT: orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
- __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel(), pc2->Text());
- pc2->SetFlagBits(PCF_IN_CONDITIONAL);
- log_pcf_flags(LCOMBINE, pc2->GetFlags());
-
- if (pc2->Is(CT_SEMICOLON))
- {
- LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
- __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel(), pc2->Text());
- return(pc2);
- }
- else if (pc2->Is(CT_QUESTION))
- {
- LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
- __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel(), pc2->Text());
- pc2 = search_for_colon(pc2);
- LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
- __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel(), pc2->Text());
- return(pc2);
- }
- }
- }
- else
- {
- LOG_FMT(LWARN, "%s(%d): %zu: Error: Expected a colon\n",
- __func__, __LINE__, pc_local->GetOrigLine());
- exit(EX_SOFTWARE);
- }
- LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '?'\n",
- __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel());
- return(pc2);
-} // search_for_colon
-
-
-void mark_question_colon()
-{
- LOG_FUNC_ENTRY();
- Chunk *pc;
-
- // Issue #3558
- for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel(), pc->Text());
- log_pcf_flags(LCOMBINE, pc->GetFlags());
-
- if (pc->Is(CT_QUESTION))
- {
- Chunk *colon = search_for_colon(pc);
-
- if (colon != nullptr)
- {
- LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
- __func__, __LINE__, colon->GetOrigLine(), colon->GetOrigCol(), colon->GetLevel(), colon->Text());
-
- if (colon->Is(CT_SEMICOLON))
- {
- // set at the end of the question statement ...
- pc = colon;
- LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel(), pc->Text());
- // ... and go on
- }
- }
- else
- {
- LOG_FMT(LWARN, "%s(%d): %zu: Error: Expected a colon\n",
- __func__, __LINE__, pc->GetOrigLine());
- exit(EX_SOFTWARE);
- }
- }
- }
-} // mark_question_colon
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/newlines.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/newlines.cpp
deleted file mode 100644
index ca24e941..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/newlines.cpp
+++ /dev/null
@@ -1,6845 +0,0 @@
-/**
- * @file newlines.cpp
- * Adds or removes newlines.
- *
- * Information
- * "Ignore" means do not change it.
- * "Add" in the context of spaces means make sure there is at least 1.
- * "Add" elsewhere means make sure one is present.
- * "Remove" mean remove the space/brace/newline/etc.
- * "Force" in the context of spaces means ensure that there is exactly 1.
- * "Force" in other contexts means the same as "add".
- *
- * Rmk: spaces = space + nl
- *
- * @author Ben Gardner
- * @author Guy Maurel
- * @license GPL v2+
- */
-
-#include "newlines.h"
-
-#include "align_stack.h"
-#include "combine_skip.h"
-#include "flag_parens.h"
-#include "indent.h"
-#include "keywords.h"
-#include "prototypes.h"
-#include "space.h"
-#include "unc_tools.h"
-
-#ifdef WIN32
-#include <algorithm> // to get max
-#endif // ifdef WIN32
-
-
-constexpr static auto LCURRENT = LNEWLINE;
-
-using namespace std;
-using namespace uncrustify;
-
-
-static void mark_change(const char *func, size_t line);
-
-
-/**
- * Check to see if we are allowed to increase the newline count.
- * We can't increase the newline count:
- * - if nl_squeeze_ifdef and a preproc is after the newline.
- * - if eat_blanks_before_close_brace and the next is '}'
- * - unless function contains an empty body and
- * nl_inside_empty_func is non-zero
- * - if eat_blanks_after_open_brace and the prev is '{'
- * - unless the brace belongs to a namespace
- * and nl_inside_namespace is non-zero
- */
-static bool can_increase_nl(Chunk *nl);
-
-
-/**
- * Basic approach:
- * 1. Find next open brace
- * 2. Find next close brace
- * 3. Determine why the braces are there
- * a. struct/union/enum "enum [name] {"
- * c. assignment "= {"
- * b. if/while/switch/for/etc ") {"
- * d. else "} else {"
- */
-static void setup_newline_add(Chunk *prev, Chunk *nl, Chunk *next);
-
-
-//! Make sure there is a blank line after a commented group of values
-static void newlines_double_space_struct_enum_union(Chunk *open_brace);
-
-
-//! If requested, make sure each entry in an enum is on its own line
-static void newlines_enum_entries(Chunk *open_brace, iarf_e av);
-
-
-/**
- * Checks to see if it is OK to add a newline around the chunk.
- * Don't want to break one-liners...
- * return value:
- * true: a new line may be added
- * false: a new line may NOT be added
- */
-static bool one_liner_nl_ok(Chunk *pc);
-
-
-static void nl_create_one_liner(Chunk *vbrace_open);
-
-
-static void nl_create_list_liner(Chunk *brace_open);
-
-
-/**
- * Test if a chunk belongs to a one-liner method definition inside a class body
- */
-static bool is_class_one_liner(Chunk *pc);
-
-
-/**
- * Test if a chunk may be combined with a function prototype group.
- *
- * If nl_class_leave_one_liner_groups is enabled, a chunk may be combined with
- * a function prototype group if it is a one-liner inside a class body, and is
- * a definition of the same sort as surrounding prototypes. This checks against
- * either the function name, or the function closing brace.
- */
-bool is_func_proto_group(Chunk *pc, E_Token one_liner_type);
-
-/**
- * Test if an opening brace is part of a function call or definition.
- */
-static bool is_func_call_or_def(Chunk *pc);
-
-
-//! Find the next newline or nl_cont
-static void nl_handle_define(Chunk *pc);
-
-
-/**
- * Does the Ignore, Add, Remove, or Force thing between two chunks
- *
- * @param before The first chunk
- * @param after The second chunk
- * @param av The IARF value
- */
-static void newline_iarf_pair(Chunk *before, Chunk *after, iarf_e av, bool check_nl_assign_leave_one_liners = false);
-
-
-/**
- * Adds newlines to multi-line function call/decl/def
- * Start points to the open paren
- */
-static void newline_func_multi_line(Chunk *start);
-
-
-static void newline_template(Chunk *start);
-
-
-/**
- * Formats a function declaration
- * Start points to the open paren
- */
-static void newline_func_def_or_call(Chunk *start);
-
-
-/**
- * Formats a message, adding newlines before the item before the colons.
- *
- * Start points to the open '[' in:
- * [myObject doFooWith:arg1 name:arg2 // some lines with >1 arg
- * error:arg3];
- */
-static void newline_oc_msg(Chunk *start);
-
-
-//! Ensure that the next non-comment token after close brace is a newline
-static void newline_end_newline(Chunk *br_close);
-
-
-/**
- * Add or remove a newline between the closing paren and opening brace.
- * Also uncuddles anything on the closing brace. (may get fixed later)
- *
- * "if (...) { \n" or "if (...) \n { \n"
- *
- * For virtual braces, we can only add a newline after the vbrace open.
- * If we do so, also add a newline after the vbrace close.
- */
-static bool newlines_if_for_while_switch(Chunk *start, iarf_e nl_opt);
-
-
-/**
- * Add or remove extra newline before the chunk.
- * Adds before comments
- * Doesn't do anything if open brace before it
- * "code\n\ncomment\nif (...)" or "code\ncomment\nif (...)"
- */
-static void newlines_if_for_while_switch_pre_blank_lines(Chunk *start, iarf_e nl_opt);
-
-
-static void blank_line_set(Chunk *pc, Option<unsigned> &opt);
-
-
-/**
- * Add one/two newline(s) before the chunk.
- * Adds before comments
- * Adds before destructor
- * Doesn't do anything if open brace before it
- * "code\n\ncomment\nif (...)" or "code\ncomment\nif (...)"
- */
-static void newlines_func_pre_blank_lines(Chunk *start, E_Token start_type);
-
-
-static Chunk *get_closing_brace(Chunk *start);
-
-
-/**
- * remove any consecutive newlines following this chunk
- * skip vbraces
- */
-static void remove_next_newlines(Chunk *start);
-
-
-/**
- * Add or remove extra newline after end of the block started in chunk.
- * Doesn't do anything if close brace after it
- * Interesting issue is that at this point, nls can be before or after vbraces
- * VBraces will stay VBraces, conversion to real ones should have already happened
- * "if (...)\ncode\ncode" or "if (...)\ncode\n\ncode"
- */
-static void newlines_if_for_while_switch_post_blank_lines(Chunk *start, iarf_e nl_opt);
-
-
-/**
- * Adds or removes a newline between the keyword and the open brace.
- * If there is something after the '{' on the same line, then
- * the newline is removed unconditionally.
- * If there is a '=' between the keyword and '{', do nothing.
- *
- * "struct [name] {" or "struct [name] \n {"
- */
-static void newlines_struct_union(Chunk *start, iarf_e nl_opt, bool leave_trailing);
-static void newlines_enum(Chunk *start);
-static void newlines_namespace(Chunk *start); // Issue #2186
-
-
-/**
- * Cuddles or un-cuddles a chunk with a previous close brace
- *
- * "} while" vs "} \n while"
- * "} else" vs "} \n else"
- *
- * @param start The chunk - should be CT_ELSE or CT_WHILE_OF_DO
- */
-static void newlines_cuddle_uncuddle(Chunk *start, iarf_e nl_opt);
-
-
-/**
- * Adds/removes a newline between else and '{'.
- * "else {" or "else \n {"
- */
-static void newlines_do_else(Chunk *start, iarf_e nl_opt);
-
-
-//! Check if token starts a variable declaration
-static bool is_var_def(Chunk *pc, Chunk *next);
-
-
-//! Put newline(s) before and/or after a block of variable definitions
-static Chunk *newline_var_def_blk(Chunk *start);
-
-
-/**
- * Handles the brace_on_func_line setting and decides if the closing brace
- * of a pair should be right after a newline.
- * The only cases where the closing brace shouldn't be the first thing on a line
- * is where the opening brace has junk after it AND where a one-liner in a
- * class is supposed to be preserved.
- *
- * General rule for break before close brace:
- * If the brace is part of a function (call or definition) OR if the only
- * thing after the opening brace is comments, the there must be a newline
- * before the close brace.
- *
- * Example of no newline before close
- * struct mystring { int len;
- * char str[]; };
- * while (*(++ptr) != 0) { }
- *
- * Examples of newline before close
- * void foo() {
- * }
- */
-static void newlines_brace_pair(Chunk *br_open);
-
-
-/**
- * Put a empty line between the 'case' statement and the previous case colon
- * or semicolon.
- * Does not work with PAWN (?)
- */
-static void newline_case(Chunk *start);
-
-
-static void newline_case_colon(Chunk *start);
-
-
-//! Put a blank line before a return statement, unless it is after an open brace
-static void newline_before_return(Chunk *start);
-
-
-/**
- * Put a empty line after a return statement, unless it is followed by a
- * close brace.
- *
- * May not work with PAWN
- */
-static void newline_after_return(Chunk *start);
-
-
-static void blank_line_max(Chunk *pc, Option<unsigned> &opt);
-
-
-static iarf_e newline_template_option(Chunk *pc, iarf_e special, iarf_e base, iarf_e fallback);
-
-
-#define MARK_CHANGE() mark_change(__func__, __LINE__)
-
-
-static void mark_change(const char *func, size_t line)
-{
- LOG_FUNC_ENTRY();
-
- cpd.changes++;
-
- if (cpd.pass_count == 0)
- {
- LOG_FMT(LCHANGE, "%s(%d): change %d on %s:%zu\n",
- __func__, __LINE__, cpd.changes, func, line);
- }
-} // mark_change
-
-
-static bool can_increase_nl(Chunk *nl)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *prev = nl->GetPrevNc();
-
- Chunk *pcmt = nl->GetPrev();
- Chunk *next = nl->GetNext();
-
- if (options::nl_squeeze_ifdef())
- {
- log_rule_B("nl_squeeze_ifdef");
-
- Chunk *pp_start = prev->GetPpStart();
-
- if ( pp_start->IsNotNullChunk()
- && ( pp_start->GetParentType() == CT_PP_IF
- || pp_start->GetParentType() == CT_PP_ELSE)
- && ( pp_start->GetLevel() > 0
- || options::nl_squeeze_ifdef_top_level()))
- {
- log_rule_B("nl_squeeze_ifdef_top_level");
- bool rv = ifdef_over_whole_file() && pp_start->TestFlags(PCF_WF_IF);
- LOG_FMT(LBLANKD, "%s(%d): nl_squeeze_ifdef %zu (prev) pp_lvl=%zu rv=%d\n",
- __func__, __LINE__, nl->GetOrigLine(), nl->GetPpLevel(), rv);
- return(rv);
- }
-
- if ( next->Is(CT_PREPROC)
- && ( next->GetParentType() == CT_PP_ELSE
- || next->GetParentType() == CT_PP_ENDIF)
- && ( next->GetLevel() > 0
- || options::nl_squeeze_ifdef_top_level()))
- {
- log_rule_B("nl_squeeze_ifdef_top_level");
- bool rv = ifdef_over_whole_file() && next->TestFlags(PCF_WF_ENDIF);
- LOG_FMT(LBLANKD, "%s(%d): nl_squeeze_ifdef %zu (next) pp_lvl=%zu rv=%d\n",
- __func__, __LINE__, nl->GetOrigLine(), nl->GetPpLevel(), rv);
- return(rv);
- }
- }
-
- if (next->Is(CT_BRACE_CLOSE))
- {
- if ( options::nl_inside_namespace() > 0
- && next->GetParentType() == CT_NAMESPACE)
- {
- log_rule_B("nl_inside_namespace");
- LOG_FMT(LBLANKD, "%s(%d): nl_inside_namespace %zu\n",
- __func__, __LINE__, nl->GetOrigLine());
- return(true);
- }
-
- if ( options::nl_inside_empty_func() > 0
- && prev->Is(CT_BRACE_OPEN)
- && ( next->GetParentType() == CT_FUNC_DEF
- || next->GetParentType() == CT_FUNC_CLASS_DEF))
- {
- log_rule_B("nl_inside_empty_func");
- LOG_FMT(LBLANKD, "%s(%d): nl_inside_empty_func %zu\n",
- __func__, __LINE__, nl->GetOrigLine());
- return(true);
- }
-
- if (options::eat_blanks_before_close_brace())
- {
- log_rule_B("eat_blanks_before_close_brace");
- LOG_FMT(LBLANKD, "%s(%d): eat_blanks_before_close_brace %zu\n",
- __func__, __LINE__, nl->GetOrigLine());
- return(false);
- }
- }
-
- if (prev->Is(CT_BRACE_CLOSE))
- {
- if ( options::nl_before_namespace()
- && prev->GetParentType() == CT_NAMESPACE)
- {
- log_rule_B("nl_before_namespace");
- LOG_FMT(LBLANKD, "%s(%d): nl_before_namespace %zu\n",
- __func__, __LINE__, nl->GetOrigLine());
- return(true);
- }
- }
-
- if (prev->Is(CT_BRACE_OPEN))
- {
- if ( options::nl_inside_namespace() > 0
- && prev->GetParentType() == CT_NAMESPACE)
- {
- log_rule_B("nl_inside_namespace");
- LOG_FMT(LBLANKD, "%s(%d): nl_inside_namespace %zu\n",
- __func__, __LINE__, nl->GetOrigLine());
- return(true);
- }
-
- if ( options::nl_inside_empty_func() > 0
- && next->Is(CT_BRACE_CLOSE)
- && ( prev->GetParentType() == CT_FUNC_DEF
- || prev->GetParentType() == CT_FUNC_CLASS_DEF))
- {
- log_rule_B("nl_inside_empty_func");
- LOG_FMT(LBLANKD, "%s(%d): nl_inside_empty_func %zu\n",
- __func__, __LINE__, nl->GetOrigLine());
- return(true);
- }
-
- if (options::eat_blanks_after_open_brace())
- {
- log_rule_B("eat_blanks_after_open_brace");
- LOG_FMT(LBLANKD, "%s(%d): eat_blanks_after_open_brace %zu\n",
- __func__, __LINE__, nl->GetOrigLine());
- return(false);
- }
- }
- log_rule_B("nl_start_of_file");
-
- if ( !pcmt
- && (options::nl_start_of_file() != IARF_IGNORE))
- {
- LOG_FMT(LBLANKD, "%s(%d): SOF no prev %zu\n", __func__, __LINE__, nl->GetOrigLine());
- return(false);
- }
- log_rule_B("nl_end_of_file");
-
- if ( next->IsNullChunk()
- && (options::nl_end_of_file() != IARF_IGNORE))
- {
- LOG_FMT(LBLANKD, "%s(%d): EOF no next %zu\n", __func__, __LINE__, nl->GetOrigLine());
- return(false);
- }
- return(true);
-} // can_increase_nl
-
-
-static void setup_newline_add(Chunk *prev, Chunk *nl, Chunk *next)
-{
- LOG_FUNC_ENTRY();
-
- if ( prev == nullptr
- || nl == nullptr
- || next == nullptr)
- {
- return;
- }
- undo_one_liner(prev);
-
- nl->SetOrigLine(prev->GetOrigLine());
- nl->SetLevel(prev->GetLevel());
- nl->SetPpLevel(prev->GetPpLevel());
- nl->SetBraceLevel(prev->GetBraceLevel());
- nl->SetPpLevel(prev->GetPpLevel());
- nl->SetNlCount(1);
- nl->SetFlags((prev->GetFlags() & PCF_COPY_FLAGS) & ~PCF_IN_PREPROC);
- nl->SetOrigCol(prev->GetOrigColEnd());
- nl->SetColumn(prev->GetOrigCol());
-
- if ( prev->TestFlags(PCF_IN_PREPROC)
- && next->TestFlags(PCF_IN_PREPROC))
- {
- nl->SetFlagBits(PCF_IN_PREPROC);
- }
-
- if (nl->TestFlags(PCF_IN_PREPROC))
- {
- nl->SetType(CT_NL_CONT);
- nl->Str() = "\\\n";
- }
- else
- {
- nl->SetType(CT_NEWLINE);
- nl->Str() = "\n";
- }
-} // setup_newline_add
-
-
-void double_newline(Chunk *nl)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *prev = Chunk::NullChunkPtr;
-
- if (nl != nullptr)
- {
- prev = nl->GetPrev();
- }
-
- if (prev->IsNullChunk())
- {
- return;
- }
- LOG_FMT(LNEWLINE, "%s(%d): add newline after ", __func__, __LINE__);
-
- if (prev->Is(CT_VBRACE_CLOSE))
- {
- LOG_FMT(LNEWLINE, "VBRACE_CLOSE ");
- }
- else
- {
- LOG_FMT(LNEWLINE, "'%s' ", prev->Text());
- }
- LOG_FMT(LNEWLINE, "on line %zu", prev->GetOrigLine());
-
- if (!can_increase_nl(nl))
- {
- LOG_FMT(LNEWLINE, " - denied\n");
- return;
- }
- LOG_FMT(LNEWLINE, " - done\n");
-
- if (nl->GetNlCount() != 2)
- {
- nl->SetNlCount(2);
- MARK_CHANGE();
- }
-} // double_newline
-
-
-Chunk *newline_add_before(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- Chunk nl;
- Chunk *prev = pc->GetPrevNvb();
-
- if (prev->IsNewline())
- {
- // Already has a newline before this chunk
- return(prev);
- }
- LOG_FMT(LNEWLINE, "%s(%d): Text() '%s', on orig line is %zu, orig col is %zu, pc column is %zu",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetColumn());
- log_func_stack_inline(LNEWLINE);
-
- setup_newline_add(prev, &nl, pc);
- nl.SetOrigCol(pc->GetOrigCol());
- nl.SetPpLevel(pc->GetPpLevel());
- LOG_FMT(LNEWLINE, "%s(%d): nl column is %zu\n",
- __func__, __LINE__, nl.GetColumn());
-
- MARK_CHANGE();
- return(nl.CopyAndAddBefore(pc));
-} // newline_add_before
-
-
-Chunk *newline_force_before(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *nl = newline_add_before(pc);
-
- if ( nl->IsNotNullChunk()
- && nl->GetNlCount() > 1)
- {
- nl->SetNlCount(1);
- MARK_CHANGE();
- }
- return(nl);
-} // newline_force_before
-
-
-Chunk *newline_add_after(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- if (pc == nullptr)
- {
- return(Chunk::NullChunkPtr);
- }
- Chunk *next = pc->GetNextNvb();
-
- if (next->IsNewline())
- {
- // Already has a newline after this chunk
- return(next);
- }
- LOG_FMT(LNEWLINE, "%s(%d): '%s' on line %zu",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine());
- log_func_stack_inline(LNEWLINE);
-
- Chunk nl;
-
- nl.SetOrigLine(pc->GetOrigLine());
- nl.SetOrigCol(pc->GetOrigCol());
- setup_newline_add(pc, &nl, next);
-
- MARK_CHANGE();
- // TO DO: check why the next statement is necessary
- nl.SetOrigCol(pc->GetOrigCol());
- nl.SetPpLevel(pc->GetPpLevel());
- return(nl.CopyAndAddAfter(pc));
-} // newline_add_after
-
-
-Chunk *newline_force_after(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *nl = newline_add_after(pc); // add a newline
-
- if ( nl->IsNotNullChunk()
- && nl->GetNlCount() > 1) // check if there are more than 1 newline
- {
- nl->SetNlCount(1); // if so change the newline count back to 1
- MARK_CHANGE();
- }
- return(nl);
-} // newline_force_after
-
-
-static void newline_end_newline(Chunk *br_close)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *next = br_close->GetNext();
- Chunk nl;
-
- if (!next->IsCommentOrNewline())
- {
- nl.SetOrigLine(br_close->GetOrigLine());
- nl.SetOrigCol(br_close->GetOrigCol());
- nl.SetNlCount(1);
- nl.SetPpLevel(0);
- nl.SetFlags((br_close->GetFlags() & PCF_COPY_FLAGS) & ~PCF_IN_PREPROC);
-
- if ( br_close->TestFlags(PCF_IN_PREPROC)
- && next->IsNotNullChunk()
- && next->TestFlags(PCF_IN_PREPROC))
- {
- nl.SetFlagBits(PCF_IN_PREPROC);
- }
-
- if (nl.TestFlags(PCF_IN_PREPROC))
- {
- nl.SetType(CT_NL_CONT);
- nl.Str() = "\\\n";
- }
- else
- {
- nl.SetType(CT_NEWLINE);
- nl.Str() = "\n";
- }
- MARK_CHANGE();
- LOG_FMT(LNEWLINE, "%s(%d): %zu:%zu add newline after '%s'\n",
- __func__, __LINE__, br_close->GetOrigLine(), br_close->GetOrigCol(), br_close->Text());
- nl.CopyAndAddAfter(br_close);
- }
-} // newline_end_newline
-
-
-static void newline_min_after(Chunk *ref, size_t count, E_PcfFlag flag)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LNEWLINE, "%s(%d): for '%s', at orig line %zu, count is %zu,\n flag is %s:",
- __func__, __LINE__, ref->Text(), ref->GetOrigLine(), count,
- pcf_flags_str(flag).c_str());
- log_func_stack_inline(LNEWLINE);
-
- Chunk *pc = ref;
-
- do
- {
- pc = pc->GetNext();
- } while ( pc->IsNotNullChunk()
- && !pc->IsNewline());
-
- if (pc->IsNotNullChunk()) // Coverity CID 76002
- {
- LOG_FMT(LNEWLINE, "%s(%d): type is %s, orig line %zu, orig col %zu\n",
- __func__, __LINE__, get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetOrigCol());
- }
- Chunk *next = pc->GetNext();
-
- if (next->IsNullChunk())
- {
- return;
- }
-
- if ( next->IsComment()
- && next->GetNlCount() == 1
- && pc->GetPrev()->IsComment())
- {
- newline_min_after(next, count, flag);
- return;
- }
- pc->SetFlagBits(flag);
-
- if ( pc->IsNewline()
- && can_increase_nl(pc))
- {
- if (pc->GetNlCount() < count)
- {
- pc->SetNlCount(count);
- MARK_CHANGE();
- }
- }
-} // newline_min_after
-
-
-Chunk *newline_add_between(Chunk *start, Chunk *end)
-{
- LOG_FUNC_ENTRY();
-
- if ( start == nullptr
- || end == nullptr
- || end->Is(CT_IGNORED))
- {
- return(nullptr);
- }
- LOG_FMT(LNEWLINE, "%s(%d): start->Text() is '%s', type is %s, orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, start->Text(), get_token_name(start->GetType()),
- start->GetOrigLine(), start->GetOrigCol());
- LOG_FMT(LNEWLINE, "%s(%d): and end->Text() is '%s', orig line is %zu, orig col is %zu\n ",
- __func__, __LINE__, end->Text(), end->GetOrigLine(), end->GetOrigCol());
- log_func_stack_inline(LNEWLINE);
-
- // Back-up check for one-liners (should never be true!)
- if (!one_liner_nl_ok(start))
- {
- return(nullptr);
- }
-
- /*
- * Scan for a line break, if there is a line break between start and end
- * we won't add another one
- */
- for (Chunk *pc = start; pc != end; pc = pc->GetNext())
- {
- if (pc->IsNewline())
- {
- return(pc);
- }
- }
-
- /*
- * If the second one is a brace open, then check to see
- * if a comment + newline follows
- */
- if (end->Is(CT_BRACE_OPEN))
- {
- Chunk *pc = end->GetNext();
-
- if (pc->IsComment())
- {
- pc = pc->GetNext();
-
- if (pc->IsNewline())
- {
- // are there some more (comment + newline)s ?
- Chunk *pc1 = end->GetNextNcNnl();
-
- if (!pc1->IsNewline())
- {
- // yes, go back
- Chunk *pc2 = pc1->GetPrev();
- pc = pc2;
- }
-
- if (end == pc)
- {
- LOG_FMT(LNEWLINE, "%s(%d): pc1 and pc are identical\n",
- __func__, __LINE__);
- }
- else
- {
- // Move the open brace to after the newline
- end->MoveAfter(pc);
- }
- LOG_FMT(LNEWLINE, "%s(%d):\n", __func__, __LINE__);
- newline_add_after(end);
- return(pc);
- }
- else // Issue #3873
- {
- LOG_FMT(LNEWLINE, "%s(%d):\n", __func__, __LINE__);
- }
- }
- else
- {
- LOG_FMT(LNEWLINE, "%s(%d):\n", __func__, __LINE__);
- }
- }
- else
- {
- LOG_FMT(LNEWLINE, "%s(%d):\n", __func__, __LINE__);
- }
- Chunk *tmp = newline_add_before(end);
-
- return(tmp);
-} // newline_add_between
-
-
-void newline_del_between(Chunk *start, Chunk *end)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LNEWLINE, "%s(%d): start->Text() is '%s', orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, start->Text(), start->GetOrigLine(), start->GetOrigCol());
- LOG_FMT(LNEWLINE, "%s(%d): and end->Text() is '%s', orig line is %zu, orig col is %zu: preproc=%c/%c\n",
- __func__, __LINE__, end->Text(), end->GetOrigLine(), end->GetOrigCol(),
- start->TestFlags(PCF_IN_PREPROC) ? 'y' : 'n',
- end->TestFlags(PCF_IN_PREPROC) ? 'y' : 'n');
- log_func_stack_inline(LNEWLINE);
-
- // Can't remove anything if the preproc status differs
- if (!start->IsSamePreproc(end))
- {
- return;
- }
- Chunk *pc = start;
- bool start_removed = false;
-
- do
- {
- Chunk *next = pc->GetNext();
-
- if (pc->IsNewline())
- {
- Chunk *prev = pc->GetPrev();
-
- if ( ( !prev->IsComment()
- && !next->IsComment())
- || prev->IsNewline()
- || next->IsNewline())
- {
- if (pc->SafeToDeleteNl())
- {
- if (pc == start)
- {
- start_removed = true;
- }
- Chunk::Delete(pc);
- MARK_CHANGE();
-
- if (prev->IsNotNullChunk())
- {
- align_to_column(next, prev->GetColumn() + space_col_align(prev, next));
- }
- }
- }
- else
- {
- if (pc->GetNlCount() > 1)
- {
- pc->SetNlCount(1);
- MARK_CHANGE();
- }
- }
- }
- pc = next;
- } while (pc != end);
-
- if ( !start_removed
- && end->IsString("{")
- && ( start->IsString(")")
- || start->Is(CT_DO)
- || start->Is(CT_ELSE)))
- {
- end->MoveAfter(start);
- }
-} // newline_del_between
-
-
-void newlines_sparens()
-{
- LOG_FUNC_ENTRY();
-
- //Chunk *sparen_open;
-
- for (Chunk *sparen_open = Chunk::GetHead()->GetNextType(CT_SPAREN_OPEN, ANY_LEVEL);
- sparen_open->IsNotNullChunk();
- sparen_open = sparen_open->GetNextType(CT_SPAREN_OPEN, ANY_LEVEL))
- {
- Chunk *sparen_close = sparen_open->GetNextType(CT_SPAREN_CLOSE, sparen_open->GetLevel());
-
- if (sparen_close->IsNullChunk())
- {
- continue;
- }
- Chunk *sparen_content_start = sparen_open->GetNextNnl();
- Chunk *sparen_content_end = sparen_close->GetPrevNnl();
- bool is_multiline = (
- sparen_content_start != sparen_content_end
- && !sparen_content_start->IsOnSameLine(sparen_content_end));
-
- // Add a newline after '(' if an if/for/while/switch condition spans multiple lines,
- // as e.g. required by the ROS 2 development style guidelines:
- // https://index.ros.org/doc/ros2/Contributing/Developer-Guide/#open-versus-cuddled-braces
- if (is_multiline)
- {
- log_rule_B("nl_multi_line_sparen_open");
- newline_iarf(sparen_open, options::nl_multi_line_sparen_open());
- }
-
- // Add a newline before ')' if an if/for/while/switch condition spans multiple lines. Overrides nl_before_if_closing_paren if both are specified.
- if ( is_multiline
- && options::nl_multi_line_sparen_close() != IARF_IGNORE)
- {
- log_rule_B("nl_multi_line_sparen_close");
- newline_iarf(sparen_content_end, options::nl_multi_line_sparen_close());
- }
- else
- {
- // add/remove trailing newline in an if condition
- Chunk *ctrl_structure = sparen_open->GetPrevNcNnl();
-
- if ( ctrl_structure->Is(CT_IF)
- || ctrl_structure->Is(CT_ELSEIF))
- {
- log_rule_B("nl_before_if_closing_paren");
- newline_iarf_pair(sparen_content_end, sparen_close, options::nl_before_if_closing_paren());
- }
- }
- }
-} // newlines_sparens
-
-
-static bool newlines_if_for_while_switch(Chunk *start, iarf_e nl_opt)
-{
- LOG_FUNC_ENTRY();
-
- log_rule_B("nl_define_macro");
-
- if ( nl_opt == IARF_IGNORE
- || ( start->TestFlags(PCF_IN_PREPROC)
- && !options::nl_define_macro()))
- {
- return(false);
- }
- bool retval = false;
- Chunk *pc = start->GetNextNcNnl();
-
- if (pc->Is(CT_SPAREN_OPEN))
- {
- Chunk *close_paren = pc->GetNextType(CT_SPAREN_CLOSE, pc->GetLevel());
- Chunk *brace_open = close_paren->GetNextNcNnl();
-
- if ( ( brace_open->Is(CT_BRACE_OPEN)
- || brace_open->Is(CT_VBRACE_OPEN))
- && one_liner_nl_ok(brace_open))
- {
- log_rule_B("nl_multi_line_cond");
-
- if (options::nl_multi_line_cond())
- {
- while ((pc = pc->GetNext()) != close_paren)
- {
- if (pc->IsNewline())
- {
- nl_opt = IARF_ADD;
- break;
- }
- }
- }
-
- if (brace_open->Is(CT_VBRACE_OPEN))
- {
- // Can only add - we don't want to create a one-line here
- if (nl_opt & IARF_ADD)
- {
- newline_iarf_pair(close_paren, brace_open->GetNextNcNnl(), nl_opt);
- pc = brace_open->GetNextType(CT_VBRACE_CLOSE, brace_open->GetLevel());
-
- if ( !pc->GetPrevNc()->IsNewline()
- && !pc->GetNextNc()->IsNewline())
- {
- newline_add_after(pc);
- retval = true;
- }
- }
- }
- else
- {
- newline_iarf_pair(close_paren, brace_open, nl_opt);
- Chunk *next = brace_open->GetNextNcNnl();
-
- if (brace_open->GetType() != next->GetType()) // Issue #2836
- {
- newline_add_between(brace_open, brace_open->GetNextNcNnl());
- }
- // Make sure nothing is cuddled with the closing brace
- pc = brace_open->GetNextType(CT_BRACE_CLOSE, brace_open->GetLevel());
- newline_add_between(pc, pc->GetNextNcNnlNet());
- retval = true;
- }
- }
- }
- return(retval);
-} // newlines_if_for_while_switch
-
-
-static void newlines_if_for_while_switch_pre_blank_lines(Chunk *start, iarf_e nl_opt)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LNEWLINE, "%s(%d): start->Text() is '%s', type is %s, orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, start->Text(), get_token_name(start->GetType()), start->GetOrigLine(), start->GetOrigCol());
-
- log_rule_B("nl_define_macro");
-
- if ( nl_opt == IARF_IGNORE
- || ( start->TestFlags(PCF_IN_PREPROC)
- && !options::nl_define_macro()))
- {
- return;
- }
-
- /*
- * look backwards until we find
- * open brace (don't add or remove)
- * 2 newlines in a row (don't add)
- * something else (don't remove)
- */
- for (Chunk *pc = start->GetPrev(); pc->IsNotNullChunk(); pc = pc->GetPrev())
- {
- size_t level = start->GetLevel();
- bool do_add = (nl_opt & IARF_ADD) != IARF_IGNORE; // forcing value to bool
- Chunk *last_nl = nullptr;
-
- if (pc->IsNewline())
- {
- last_nl = pc;
-
- // if we found 2 or more in a row
- if ( pc->GetNlCount() > 1
- || pc->GetPrevNvb()->IsNewline())
- {
- // need to remove
- if ( (nl_opt & IARF_REMOVE)
- && !pc->TestFlags(PCF_VAR_DEF))
- {
- // if we're also adding, take care of that here
- size_t nl_count = do_add ? 2 : 1;
-
- if (nl_count != pc->GetNlCount())
- {
- pc->SetNlCount(nl_count);
- MARK_CHANGE();
- }
- Chunk *prev;
-
- // can keep using pc because anything other than newline stops loop, and we delete if newline
- while ((prev = pc->GetPrevNvb())->IsNewline())
- {
- // Make sure we don't combine a preproc and non-preproc
- if (!prev->SafeToDeleteNl())
- {
- break;
- }
- Chunk::Delete(prev);
- MARK_CHANGE();
- }
- }
- return;
- }
- }
- else if ( pc->IsBraceOpen()
- || pc->GetLevel() < level)
- {
- return;
- }
- else if (pc->IsComment())
- {
- // vbrace close is ok because it won't go into output, so we should skip it
- last_nl = nullptr;
- continue;
- }
- else
- {
- if ( pc->Is(CT_CASE_COLON)
- && options::nl_before_ignore_after_case())
- {
- return;
- }
-
- if (do_add) // we found something previously besides a comment or a new line
- {
- // if we have run across a newline
- if ( last_nl != nullptr
- && last_nl->IsNotNullChunk())
- {
- if (last_nl->GetNlCount() < 2)
- {
- double_newline(last_nl);
- }
- }
- else
- {
- Chunk *next;
-
- // we didn't run into a newline, so we need to add one
- if ( ((next = pc->GetNext())->IsNotNullChunk())
- && next->IsComment())
- {
- pc = next;
- }
-
- if ((last_nl = newline_add_after(pc))->IsNotNullChunk())
- {
- double_newline(last_nl);
- }
- }
- }
- return;
- }
- }
-} // newlines_if_for_while_switch_pre_blank_lines
-
-
-static void blank_line_set(Chunk *pc, Option<unsigned> &opt)
-{
- LOG_FUNC_ENTRY();
-
- if (pc == nullptr)
- {
- return;
- }
- const unsigned optval = opt();
-
- if ( (optval > 0)
- && (pc->GetNlCount() != optval))
- {
- LOG_FMT(LBLANKD, "%s(%d): do_blank_lines: %s set line %zu to %u\n",
- __func__, __LINE__, opt.name(), pc->GetOrigLine(), optval);
- pc->SetNlCount(optval);
- MARK_CHANGE();
- }
-} // blank_line_set
-
-
-bool do_it_newlines_func_pre_blank_lines(Chunk *last_nl, E_Token start_type)
-{
- LOG_FUNC_ENTRY();
-
- if (last_nl == nullptr)
- {
- return(false);
- }
- LOG_FMT(LNLFUNCT, "%s(%d): orig line is %zu, orig col is %zu, type is %s, Text() is '%s'\n",
- __func__, __LINE__,
- last_nl->GetOrigLine(), last_nl->GetOrigCol(), get_token_name(last_nl->GetType()), last_nl->Text());
-
- switch (start_type)
- {
- case CT_FUNC_CLASS_DEF:
- {
- log_rule_B("nl_before_func_class_def");
- bool diff = options::nl_before_func_class_def() <= last_nl->GetNlCount();
- LOG_FMT(LNLFUNCT, "%s(%d): is %s\n",
- __func__, __LINE__, diff ? "TRUE" : "FALSE");
-
- log_rule_B("nl_before_func_class_def");
-
- if (options::nl_before_func_class_def() != last_nl->GetNlCount())
- {
- LOG_FMT(LNLFUNCT, "%s(%d): set blank line(s) to %u\n",
- __func__, __LINE__, options::nl_before_func_class_def());
- blank_line_set(last_nl, options::nl_before_func_class_def);
- }
- return(diff);
- }
-
- case CT_FUNC_CLASS_PROTO:
- {
- log_rule_B("nl_before_func_class_proto");
- bool diff = options::nl_before_func_class_proto() <= last_nl->GetNlCount();
- LOG_FMT(LNLFUNCT, "%s(%d): is %s\n",
- __func__, __LINE__, diff ? "TRUE" : "FALSE");
-
- log_rule_B("nl_before_func_class_proto");
-
- if (options::nl_before_func_class_proto() != last_nl->GetNlCount())
- {
- LOG_FMT(LNLFUNCT, "%s(%d): set blank line(s) to %u\n",
- __func__, __LINE__, options::nl_before_func_class_proto());
- blank_line_set(last_nl, options::nl_before_func_class_proto);
- }
- return(diff);
- }
-
- case CT_FUNC_DEF:
- {
- LOG_FMT(LNLFUNCT, "%s(%d): nl_before_func_body_def() is %u, last_nl new line count is %zu\n",
- __func__, __LINE__, options::nl_before_func_body_def(), last_nl->GetNlCount());
- log_rule_B("nl_before_func_body_def");
- bool diff = options::nl_before_func_body_def() <= last_nl->GetNlCount();
- LOG_FMT(LNLFUNCT, "%s(%d): is %s\n",
- __func__, __LINE__, diff ? "TRUE" : "FALSE");
-
- log_rule_B("nl_before_func_body_def");
-
- if (options::nl_before_func_body_def() != last_nl->GetNlCount())
- {
- LOG_FMT(LNLFUNCT, "%s(%d): set blank line(s) to %u\n",
- __func__, __LINE__, options::nl_before_func_body_def());
- log_rule_B("nl_before_func_body_def");
- blank_line_set(last_nl, options::nl_before_func_body_def);
- }
- LOG_FMT(LNLFUNCT, "%s(%d): nl_before_func_body_def() is %u, last_nl new line count is %zu\n",
- __func__, __LINE__, options::nl_before_func_body_def(), last_nl->GetNlCount());
- return(diff);
- }
-
- case CT_FUNC_PROTO:
- {
- log_rule_B("nl_before_func_body_proto");
- bool diff = options::nl_before_func_body_proto() <= last_nl->GetNlCount();
- LOG_FMT(LNLFUNCT, "%s(%d): is %s\n",
- __func__, __LINE__, diff ? "TRUE" : "FALSE");
-
- log_rule_B("nl_before_func_body_proto");
-
- if (options::nl_before_func_body_proto() != last_nl->GetNlCount())
- {
- LOG_FMT(LNLFUNCT, "%s(%d): set blank line(s) to %u\n",
- __func__, __LINE__, options::nl_before_func_body_proto());
- log_rule_B("nl_before_func_body_proto");
- blank_line_set(last_nl, options::nl_before_func_body_proto);
- }
- return(diff);
- }
-
- default:
- {
- LOG_FMT(LERR, "%s(%d): setting to blank line(s) at line %zu not possible\n",
- __func__, __LINE__, last_nl->GetOrigLine());
- return(false);
- }
- } // switch
-} // do_it_newlines_func_pre_blank_lines
-
-
-static void newlines_func_pre_blank_lines(Chunk *start, E_Token start_type)
-{
- LOG_FUNC_ENTRY();
-
- log_rule_B("nl_before_func_class_def");
- log_rule_B("nl_before_func_class_proto");
- log_rule_B("nl_before_func_body_def");
- log_rule_B("nl_before_func_body_proto");
-
- if ( start == nullptr
- || ( ( start_type != CT_FUNC_CLASS_DEF
- || options::nl_before_func_class_def() == 0)
- && ( start_type != CT_FUNC_CLASS_PROTO
- || options::nl_before_func_class_proto() == 0)
- && ( start_type != CT_FUNC_DEF
- || options::nl_before_func_body_def() == 0)
- && ( start_type != CT_FUNC_PROTO
- || options::nl_before_func_body_proto() == 0)))
- {
- return;
- }
- LOG_FMT(LNLFUNCT, "%s(%d): set blank line(s): for <NL> at line %zu, column %zu, start_type is %s\n",
- __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol(), get_token_name(start_type));
- LOG_FMT(LNLFUNCT, "%s(%d): BEGIN set blank line(s) for '%s' at line %zu\n",
- __func__, __LINE__, start->Text(), start->GetOrigLine());
- /*
- * look backwards until we find:
- * - open brace (don't add or remove)
- * - two newlines in a row (don't add)
- * - a destructor
- * - something else (don't remove)
- */
- Chunk *pc = nullptr;
- Chunk *last_nl = nullptr;
- Chunk *last_comment = nullptr;
- size_t first_line = start->GetOrigLine();
-
- for (pc = start->GetPrev(); pc->IsNotNullChunk(); pc = pc->GetPrev())
- {
- LOG_FMT(LNLFUNCT, "%s(%d): orig line is %zu, orig col is %zu, type is %s, Text() is '%s', new line count is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()), pc->Text(), pc->GetNlCount());
-
- if (pc->IsNewline())
- {
- last_nl = pc;
- LOG_FMT(LNLFUNCT, "%s(%d): <Chunk::IsNewline> found at line %zu, column %zu, new line count is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetNlCount());
- LOG_FMT(LNLFUNCT, "%s(%d): last_nl set to %zu\n",
- __func__, __LINE__, last_nl->GetOrigLine());
- bool break_now = false;
-
- if (pc->GetNlCount() > 1)
- {
- break_now = do_it_newlines_func_pre_blank_lines(last_nl, start_type);
- LOG_FMT(LNLFUNCT, "%s(%d): break_now is %s\n",
- __func__, __LINE__, break_now ? "TRUE" : "FALSE");
- }
-
- if (break_now)
- {
- break;
- }
- else
- {
- continue;
- }
- }
- else if (pc->IsComment())
- {
- LOG_FMT(LNLFUNCT, "%s(%d): <Chunk::IsComment> found at line %zu, column %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
-
- if ( ( pc->GetOrigLine() < first_line
- && ((first_line - pc->GetOrigLine()
- - (pc->Is(CT_COMMENT_MULTI) ? pc->GetNlCount() : 0))) < 2)
- || ( last_comment != nullptr
- && pc->Is(CT_COMMENT_CPP) // combine only cpp comments
- && last_comment->Is(pc->GetType()) // don't mix comment types
- && last_comment->GetOrigLine() > pc->GetOrigLine()
- && (last_comment->GetOrigLine() - pc->GetOrigLine()) < 2))
- {
- last_comment = pc;
- continue;
- }
- bool break_now = do_it_newlines_func_pre_blank_lines(last_nl, start_type);
- LOG_FMT(LNLFUNCT, "%s(%d): break_now is %s\n",
- __func__, __LINE__, break_now ? "TRUE" : "FALSE");
- continue;
- }
- else if ( pc->Is(CT_DESTRUCTOR)
- || pc->Is(CT_TYPE)
- || pc->Is(CT_TEMPLATE)
- || pc->Is(CT_QUALIFIER)
- || pc->Is(CT_PTR_TYPE)
- || pc->Is(CT_BYREF) // Issue #2163
- || pc->Is(CT_DC_MEMBER)
- || pc->Is(CT_EXTERN)
- || ( pc->Is(CT_STRING)
- && pc->GetParentType() == CT_EXTERN))
- {
- LOG_FMT(LNLFUNCT, "%s(%d): first_line set to %zu\n",
- __func__, __LINE__, pc->GetOrigLine());
- first_line = pc->GetOrigLine();
- continue;
- }
- else if ( pc->Is(CT_ANGLE_CLOSE)
- && pc->GetParentType() == CT_TEMPLATE)
- {
- LOG_FMT(LNLFUNCT, "%s(%d):\n", __func__, __LINE__);
- // skip template stuff to add newlines before it
- pc = pc->GetOpeningParen();
-
- if (pc->IsNotNullChunk())
- {
- first_line = pc->GetOrigLine();
- }
- continue;
- }
- else
- {
- LOG_FMT(LNLFUNCT, "%s(%d): else ==================================\n",
- __func__, __LINE__);
- bool break_now = do_it_newlines_func_pre_blank_lines(last_nl, start_type);
- LOG_FMT(LNLFUNCT, "%s(%d): break_now is %s\n",
- __func__, __LINE__, break_now ? "TRUE" : "FALSE");
- break;
- }
- }
-} // newlines_func_pre_blank_lines
-
-
-static Chunk *get_closing_brace(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc;
- size_t level = start->GetLevel();
-
- for (pc = start; (pc = pc->GetNext())->IsNotNullChunk();)
- {
- if ( (pc->IsBraceClose())
- && pc->GetLevel() == level)
- {
- return(pc);
- }
-
- // for some reason, we can have newlines between if and opening brace that are lower level than either
- if ( !pc->IsNewline()
- && pc->GetLevel() < level)
- {
- return(nullptr);
- }
- }
-
- return(nullptr);
-} // get_closing_brace
-
-
-static void remove_next_newlines(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *next;
-
- while ((next = start->GetNext())->IsNotNullChunk())
- {
- if ( next->IsNewline()
- && next->SafeToDeleteNl())
- {
- Chunk::Delete(next);
- MARK_CHANGE();
- }
- else if (next->IsVBrace())
- {
- start = next;
- }
- else
- {
- break;
- }
- }
-} // remove_next_newlines
-
-
-static void newlines_if_for_while_switch_post_blank_lines(Chunk *start, iarf_e nl_opt)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *prev;
-
- LOG_FMT(LNEWLINE, "%s(%d): start->Text() is '%s', type is %s, orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, start->Text(), get_token_name(start->GetType()), start->GetOrigLine(), start->GetOrigCol());
-
- log_rule_B("nl_define_macro");
-
- if ( nl_opt == IARF_IGNORE
- || ( start->TestFlags(PCF_IN_PREPROC)
- && !options::nl_define_macro()))
- {
- return;
- }
- Chunk *pc = get_closing_brace(start);
-
- // first find ending brace
- if (pc == nullptr)
- {
- return;
- }
- LOG_FMT(LNEWLINE, "%s(%d): pc->Text() is '%s', type is %s, orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetOrigCol());
-
- /*
- * if we're dealing with an if, we actually want to add or remove
- * blank lines after any else
- */
- if (start->Is(CT_IF))
- {
- Chunk *next;
-
- while (true)
- {
- next = pc->GetNextNcNnl();
-
- if ( next->IsNotNullChunk()
- && ( next->Is(CT_ELSE)
- || next->Is(CT_ELSEIF)))
- {
- // point to the closing brace of the else
- if ((pc = get_closing_brace(next)) == nullptr)
- {
- return;
- }
- LOG_FMT(LNEWLINE, "%s(%d): pc->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetOrigCol());
- }
- else
- {
- break;
- }
- }
- }
-
- /*
- * if we're dealing with a do/while, we actually want to add or
- * remove blank lines after while and its condition
- */
- if (start->Is(CT_DO))
- {
- // point to the next semicolon
- if ((pc = pc->GetNextType(CT_SEMICOLON, start->GetLevel()))->IsNullChunk())
- {
- return;
- }
- LOG_FMT(LNEWLINE, "%s(%d): pc->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetOrigCol());
- }
- bool isVBrace = (pc->Is(CT_VBRACE_CLOSE));
-
- if (isVBrace)
- {
- LOG_FMT(LNEWLINE, "%s(%d): isVBrace is TRUE\n", __func__, __LINE__);
- }
- else
- {
- LOG_FMT(LNEWLINE, "%s(%d): isVBrace is FALSE\n", __func__, __LINE__);
- }
-
- if ((prev = pc->GetPrevNvb())->IsNullChunk())
- {
- return;
- }
- bool have_pre_vbrace_nl = isVBrace && prev->IsNewline();
-
- if (have_pre_vbrace_nl)
- {
- LOG_FMT(LNEWLINE, "%s(%d): have_pre_vbrace_nl is TRUE\n", __func__, __LINE__);
- }
- else
- {
- LOG_FMT(LNEWLINE, "%s(%d): have_pre_vbrace_nl is FALSE\n", __func__, __LINE__);
- }
-
- if (nl_opt & IARF_REMOVE)
- {
- Chunk *next;
-
- // if chunk before is a vbrace, remove any newlines after it
- if (have_pre_vbrace_nl)
- {
- if (prev->GetNlCount() != 1)
- {
- prev->SetNlCount(1);
- MARK_CHANGE();
- }
- remove_next_newlines(pc);
- }
- else if ( ((next = pc->GetNextNvb())->IsNewline())
- && !next->TestFlags(PCF_VAR_DEF))
- {
- // otherwise just deal with newlines after brace
- if (next->GetNlCount() != 1)
- {
- next->SetNlCount(1);
- MARK_CHANGE();
- }
- remove_next_newlines(next);
- }
- }
-
- // may have a newline before and after vbrace
- // don't do anything with it if the next non newline chunk is a closing brace
- if (nl_opt & IARF_ADD)
- {
- Chunk *next = pc->GetNextNnl();
-
- do
- {
- if (next->IsNullChunk())
- {
- return;
- }
-
- if (next->IsNot(CT_VBRACE_CLOSE))
- {
- break;
- }
- next = next->GetNextNnl();
- } while (true);
-
- LOG_FMT(LNEWLINE, "%s(%d): next->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
- __func__, __LINE__, next->Text(), get_token_name(next->GetType()), next->GetOrigLine(), next->GetOrigCol());
-
- if (next->IsNot(CT_BRACE_CLOSE))
- {
- // if vbrace, have to check before and after
- // if chunk before vbrace, check its count
- size_t nl_count = have_pre_vbrace_nl ? prev->GetNlCount() : 0;
- LOG_FMT(LNEWLINE, "%s(%d): new line count %zu\n", __func__, __LINE__, nl_count);
-
- if ((next = pc->GetNextNvb())->IsNewline())
- {
- LOG_FMT(LNEWLINE, "%s(%d): next->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
- __func__, __LINE__, next->Text(), get_token_name(next->GetType()), next->GetOrigLine(), next->GetOrigCol());
- nl_count += next->GetNlCount();
- LOG_FMT(LNEWLINE, "%s(%d): new line count is %zu\n", __func__, __LINE__, nl_count);
- }
-
- // if we have no newlines, add one and make it double
- if (nl_count == 0)
- {
- LOG_FMT(LNEWLINE, "%s(%d): new line count is 0\n", __func__, __LINE__);
-
- if ( ((next = pc->GetNext())->IsNotNullChunk())
- && next->IsComment())
- {
- LOG_FMT(LNEWLINE, "%s(%d): next->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
- __func__, __LINE__, next->Text(), get_token_name(next->GetType()), next->GetOrigLine(), next->GetOrigCol());
- pc = next;
- LOG_FMT(LNEWLINE, "%s(%d): pc->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetOrigCol());
- }
-
- if ((next = newline_add_after(pc))->IsNullChunk())
- {
- return;
- }
- LOG_FMT(LNEWLINE, "%s(%d): next->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
- __func__, __LINE__, next->Text(), get_token_name(next->GetType()), next->GetOrigLine(), next->GetOrigCol());
- double_newline(next);
- }
- else if (nl_count == 1) // if we don't have enough newlines
- {
- LOG_FMT(LNEWLINE, "%s(%d): new line count is 1\n", __func__, __LINE__);
-
- // if we have a preceding vbrace, add one after it
- if (have_pre_vbrace_nl)
- {
- LOG_FMT(LNEWLINE, "%s(%d): have_pre_vbrace_nl is TRUE\n", __func__, __LINE__);
- next = newline_add_after(pc);
- LOG_FMT(LNEWLINE, "%s(%d): next->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
- __func__, __LINE__, next->Text(), get_token_name(next->GetType()), next->GetOrigLine(), next->GetOrigCol());
- }
- else
- {
- LOG_FMT(LNEWLINE, "%s(%d): have_pre_vbrace_nl is FALSE\n", __func__, __LINE__);
- prev = next->GetPrevNnl();
- LOG_FMT(LNEWLINE, "%s(%d): prev->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
- __func__, __LINE__, prev->Text(), get_token_name(prev->GetType()), prev->GetOrigLine(), prev->GetOrigCol());
- pc = next->GetNextNl();
- LOG_FMT(LNEWLINE, "%s(%d): pc->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetOrigCol());
- Chunk *pc2 = pc->GetNext();
-
- if (pc2->IsNotNullChunk())
- {
- pc = pc2;
- LOG_FMT(LNEWLINE, "%s(%d): pc->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetOrigCol());
- }
- else
- {
- LOG_FMT(LNEWLINE, "%s(%d): no next found: <EOF>\n", __func__, __LINE__);
- }
- log_rule_B("nl_squeeze_ifdef");
-
- if ( pc->Is(CT_PREPROC)
- && pc->GetParentType() == CT_PP_ENDIF
- && options::nl_squeeze_ifdef())
- {
- LOG_FMT(LNEWLINE, "%s(%d): cannot add newline after orig line %zu due to nl_squeeze_ifdef\n",
- __func__, __LINE__, prev->GetOrigLine());
- }
- else
- {
- // make newline after double
- LOG_FMT(LNEWLINE, "%s(%d): call double_newline\n", __func__, __LINE__);
- double_newline(next);
- }
- }
- }
- }
- }
-} // newlines_if_for_while_switch_post_blank_lines
-
-
-static void newlines_struct_union(Chunk *start, iarf_e nl_opt, bool leave_trailing)
-{
- LOG_FUNC_ENTRY();
-
- log_rule_B("nl_define_macro");
-
- if ( nl_opt == IARF_IGNORE
- || ( start->TestFlags(PCF_IN_PREPROC)
- && !options::nl_define_macro()))
- {
- return;
- }
- /*
- * step past any junk between the keyword and the open brace
- * Quit if we hit a semicolon or '=', which are not expected.
- */
- size_t level = start->GetLevel();
- Chunk *pc = start->GetNextNcNnl();
-
- while ( pc->IsNotNullChunk()
- && pc->GetLevel() >= level)
- {
- if ( pc->GetLevel() == level
- && ( pc->Is(CT_BRACE_OPEN)
- || pc->IsSemicolon()
- || pc->Is(CT_ASSIGN)))
- {
- break;
- }
- start = pc;
- pc = pc->GetNextNcNnl();
- }
-
- // If we hit a brace open, then we need to toy with the newlines
- if (pc->Is(CT_BRACE_OPEN))
- {
- // Skip over embedded C comments
- Chunk *next = pc->GetNext();
-
- while (next->Is(CT_COMMENT))
- {
- next = next->GetNext();
- }
-
- if ( leave_trailing
- && !next->IsCommentOrNewline())
- {
- nl_opt = IARF_IGNORE;
- }
- newline_iarf_pair(start, pc, nl_opt);
- }
-} // newlines_struct_union
-
-
-// enum {
-// enum class angle_state_e : unsigned int {
-// enum-key attr(optional) identifier(optional) enum-base(optional) { enumerator-list(optional) }
-// enum-key attr(optional) nested-name-specifier(optional) identifier enum-base(optional) ; TODO
-// enum-key - one of enum, enum class or enum struct TODO
-// identifier - the name of the enumeration that's being declared
-// enum-base(C++11) - colon (:), followed by a type-specifier-seq
-// enumerator-list - comma-separated list of enumerator definitions
-static void newlines_enum(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- log_rule_B("nl_define_macro");
-
- if ( start->TestFlags(PCF_IN_PREPROC)
- && !options::nl_define_macro())
- {
- return;
- }
- // look for 'enum class'
- Chunk *pcClass = start->GetNextNcNnl();
-
- if (pcClass->Is(CT_ENUM_CLASS))
- {
- log_rule_B("nl_enum_class");
- newline_iarf_pair(start, pcClass, options::nl_enum_class());
- // look for 'identifier'/ 'type'
- Chunk *pcType = pcClass->GetNextNcNnl();
-
- if (pcType->Is(CT_TYPE))
- {
- log_rule_B("nl_enum_class_identifier");
- newline_iarf_pair(pcClass, pcType, options::nl_enum_class_identifier());
- // look for ':'
- Chunk *pcColon = pcType->GetNextNcNnl();
-
- if (pcColon->Is(CT_BIT_COLON))
- {
- log_rule_B("nl_enum_identifier_colon");
- newline_iarf_pair(pcType, pcColon, options::nl_enum_identifier_colon());
- // look for 'type' i.e. unsigned
- Chunk *pcType1 = pcColon->GetNextNcNnl();
-
- if (pcType1->Is(CT_TYPE))
- {
- log_rule_B("nl_enum_colon_type");
- newline_iarf_pair(pcColon, pcType1, options::nl_enum_colon_type());
- // look for 'type' i.e. int
- Chunk *pcType2 = pcType1->GetNextNcNnl();
-
- if (pcType2->Is(CT_TYPE))
- {
- log_rule_B("nl_enum_colon_type");
- newline_iarf_pair(pcType1, pcType2, options::nl_enum_colon_type());
- }
- }
- }
- }
- }
- /*
- * step past any junk between the keyword and the open brace
- * Quit if we hit a semicolon or '=', which are not expected.
- */
- size_t level = start->GetLevel();
- Chunk *pc = start->GetNextNcNnl();
-
- while ( pc->IsNotNullChunk()
- && pc->GetLevel() >= level)
- {
- if ( pc->GetLevel() == level
- && ( pc->Is(CT_BRACE_OPEN)
- || pc->IsSemicolon()
- || pc->Is(CT_ASSIGN)))
- {
- break;
- }
- start = pc;
- pc = pc->GetNextNcNnl();
- }
-
- // If we hit a brace open, then we need to toy with the newlines
- if (pc->Is(CT_BRACE_OPEN))
- {
- // Skip over embedded C comments
- Chunk *next = pc->GetNext();
-
- while (next->Is(CT_COMMENT))
- {
- next = next->GetNext();
- }
- iarf_e nl_opt;
-
- if (!next->IsCommentOrNewline())
- {
- nl_opt = IARF_IGNORE;
- }
- else
- {
- log_rule_B("nl_enum_brace");
- nl_opt = options::nl_enum_brace();
- }
- newline_iarf_pair(start, pc, nl_opt);
- }
-} // newlines_enum
-
-
-// namespace {
-// namespace word {
-// namespace type::word {
-static void newlines_namespace(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- log_rule_B("nl_namespace_brace");
-
- // Add or remove newline between 'namespace' and 'BRACE_OPEN'
- log_rule_B("nl_define_macro");
- iarf_e nl_opt = options::nl_namespace_brace();
-
- if ( nl_opt == IARF_IGNORE
- || ( start->TestFlags(PCF_IN_PREPROC)
- && !options::nl_define_macro()))
- {
- return;
- }
- Chunk *braceOpen = start->GetNextType(CT_BRACE_OPEN, start->GetLevel());
-
- LOG_FMT(LNEWLINE, "%s(%d): braceOpen orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, braceOpen->GetOrigLine(), braceOpen->GetOrigCol(), braceOpen->Text());
- // produces much more log output. Use it only debugging purpose
- //log_pcf_flags(LNEWLINE, braceOpen->GetFlags());
-
- if (braceOpen->TestFlags(PCF_ONE_LINER))
- {
- LOG_FMT(LNEWLINE, "%s(%d): is one_liner\n",
- __func__, __LINE__);
- return;
- }
- Chunk *beforeBrace = braceOpen->GetPrev();
-
- LOG_FMT(LNEWLINE, "%s(%d): beforeBrace orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, beforeBrace->GetOrigLine(), beforeBrace->GetOrigCol(), beforeBrace->Text());
- // 'namespace' 'BRACE_OPEN'
- newline_iarf_pair(beforeBrace, braceOpen, nl_opt);
-} // newlines_namespace
-
-
-static void newlines_cuddle_uncuddle(Chunk *start, iarf_e nl_opt)
-{
- LOG_FUNC_ENTRY();
-
- log_rule_B("nl_define_macro");
-
- if ( start->TestFlags(PCF_IN_PREPROC)
- && !options::nl_define_macro())
- {
- return;
- }
- Chunk *br_close = start->GetPrevNcNnlNi(); // Issue #2279
-
- if (br_close->Is(CT_BRACE_CLOSE))
- {
- newline_iarf_pair(br_close, start, nl_opt);
- }
-} // newlines_cuddle_uncuddle
-
-
-static void newlines_do_else(Chunk *start, iarf_e nl_opt)
-{
- LOG_FUNC_ENTRY();
-
- log_rule_B("nl_define_macro");
- log_ruleNL("nl_define_macro", start);
-
- if ( nl_opt == IARF_IGNORE
- || ( start->TestFlags(PCF_IN_PREPROC)
- && !options::nl_define_macro()))
- {
- return;
- }
- Chunk *next = start->GetNextNcNnl();
-
- if ( next->IsNotNullChunk()
- && ( next->Is(CT_BRACE_OPEN)
- || next->Is(CT_VBRACE_OPEN)))
- {
- if (!one_liner_nl_ok(next))
- {
- LOG_FMT(LNL1LINE, "%s(%d): a new line may NOT be added\n", __func__, __LINE__);
- return;
- }
- LOG_FMT(LNL1LINE, "%s(%d): a new line may be added\n", __func__, __LINE__);
-
- if (next->Is(CT_VBRACE_OPEN))
- {
- // Can only add - we don't want to create a one-line here
- if (nl_opt & IARF_ADD)
- {
- newline_iarf_pair(start, next->GetNextNcNnl(), nl_opt);
- Chunk *tmp = next->GetNextType(CT_VBRACE_CLOSE, next->GetLevel());
-
- if ( !tmp->GetNextNc()->IsNewline()
- && !tmp->GetPrevNc()->IsNewline())
- {
- newline_add_after(tmp);
- }
- }
- }
- else
- {
- newline_iarf_pair(start, next, nl_opt);
- newline_add_between(next, next->GetNextNcNnl());
- }
- }
-} // newlines_do_else
-
-
-static bool is_var_def(Chunk *pc, Chunk *next)
-{
- if ( pc->Is(CT_DECLTYPE)
- && next->Is(CT_PAREN_OPEN))
- {
- // If current token starts a decltype expression, skip it
- next = next->GetClosingParen();
- next = next->GetNextNcNnl();
- }
- else if (!pc->IsTypeDefinition())
- {
- // Otherwise, if the current token is not a type --> not a declaration
- return(false);
- }
- else if (next->Is(CT_DC_MEMBER))
- {
- // If next token is CT_DC_MEMBER, skip it
- next = next->SkipDcMember();
- }
- else if (next->Is(CT_ANGLE_OPEN))
- {
- // If we have a template type, skip it
- next = next->GetClosingParen();
- next = next->GetNextNcNnl();
- }
- bool is = ( ( next->IsTypeDefinition()
- && next->GetParentType() != CT_FUNC_DEF) // Issue #2639
- || next->Is(CT_WORD)
- || next->Is(CT_FUNC_CTOR_VAR));
-
- return(is);
-} // is_var_def
-
-
-static bool is_func_call_or_def(Chunk *pc)
-{
- if ( pc->GetParentType() == CT_FUNC_DEF
- || pc->GetParentType() == CT_FUNC_CALL
- || pc->GetParentType() == CT_FUNC_CALL_USER
- || pc->GetParentType() == CT_FUNC_CLASS_DEF
- || pc->GetParentType() == CT_OC_CLASS
- || pc->GetParentType() == CT_OC_MSG_DECL
- || pc->GetParentType() == CT_CS_PROPERTY
- || pc->GetParentType() == CT_CPP_LAMBDA)
- {
- return(true);
- }
- return(false);
-} // is_func_call_or_def
-
-
-// Put newline(s) before and/or after a block of variable definitions
-static Chunk *newline_var_def_blk(Chunk *start)
-{
-//prot_the_line(__func__, __LINE__, 15, 4);
- LOG_FUNC_ENTRY();
-
- Chunk *pc = start;
- Chunk *prev = start->GetPrevNcNnlNi(); // Issue #2279
- bool did_this_line = false;
- bool fn_top = false;
- bool var_blk = false;
- bool first_var_blk = true;
-
- LOG_FMT(LVARDFBLK, "%s(%d): start orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol(), start->Text());
-
- if (start->Is(CT_BRACE_OPEN))
- {
- // can't be any variable definitions in a "= {" block
- if ( (prev != nullptr)
- && prev->IsNotNullChunk()
- && prev->Is(CT_ASSIGN))
- {
- Chunk *tmp = start->GetClosingParen();
- return(tmp->GetNextNcNnl());
- }
- // check if we're at the top of a function definition, or function call with a
- // possible variable block
- fn_top = is_func_call_or_def(start);
- // opening brace is processed, start with next chunk
- pc = pc->GetNext();
- }
-
- while ( pc->IsNotNullChunk()
- && ( pc->GetLevel() >= start->GetLevel()
- || pc->GetLevel() == 0))
- {
- LOG_CHUNK(LTOK, pc);
-
- Chunk *next_pc = pc->GetNext();
- LOG_FMT(LVARDFBLK, "%s(%d): next_pc orig line is %zu, orig col is %zu, type is %s, Text() is '%s'\n",
- __func__, __LINE__, next_pc->GetOrigLine(), next_pc->GetOrigCol(), get_token_name(next_pc->GetType()), next_pc->Text());
-
- // If next_pc token is CT_DC_MEMBER, skip it
- if (next_pc->Is(CT_DC_MEMBER))
- {
- pc = pc->SkipDcMember();
- }
-
- // skip qualifiers
- if (pc->Is(CT_QUALIFIER))
- {
- pc = pc->GetNext();
- continue;
- }
-
- if (pc->IsComment())
- {
- pc = pc->GetNext();
- continue;
- }
-
- // process nested braces
- if (pc->Is(CT_BRACE_OPEN))
- {
- pc = newline_var_def_blk(pc);
- continue;
- }
-
- // Done with this brace set?
- if (pc->Is(CT_BRACE_CLOSE))
- {
- pc = pc->GetNext();
- break;
- }
-
- // skip vbraces
- if (pc->Is(CT_VBRACE_OPEN))
- {
- pc = pc->GetNextType(CT_VBRACE_CLOSE, pc->GetLevel());
- pc = pc->GetNext();
- continue;
- }
-
- // Ignore stuff inside parenthesis/squares/angles
- if (pc->GetLevel() > pc->GetBraceLevel())
- {
- pc = pc->GetNext();
- continue;
- }
-
- if (pc->IsNewline())
- {
- did_this_line = false;
- pc = pc->GetNext();
- continue;
- }
-
- // Determine if this is a variable definition or code
- if ( !did_this_line
- && pc->IsNot(CT_FUNC_CLASS_DEF)
- && pc->IsNot(CT_FUNC_CLASS_PROTO)
- && ( (pc->GetLevel() == (start->GetLevel() + 1))
- || pc->GetLevel() == 0))
- {
- Chunk *next = pc->GetNextNcNnl();
- LOG_FMT(LVARDFBLK, "%s(%d): next orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->Text());
-
- // skip over all other type-like things
- while ( next->Is(CT_PTR_TYPE) // Issue #2692
- || next->Is(CT_BYREF) // Issue #3018
- || next->Is(CT_QUALIFIER)
- || next->Is(CT_TSQUARE))
- {
- next = next->GetNextNcNnl();
- LOG_FMT(LVARDFBLK, "%s(%d): next orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->Text());
- }
-
- if (next->IsNullChunk())
- {
- break;
- }
- LOG_FMT(LVARDFBLK, "%s(%d): next orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->Text());
-
- prev = pc->GetPrevNcNnl();
-
- while ( prev->Is(CT_DC_MEMBER)
- || prev->Is(CT_QUALIFIER)
- || prev->Is(CT_TYPE))
- {
- prev = prev->GetPrevNcNnl();
- }
-
- if (!( prev->IsBraceOpen()
- || prev->IsBraceClose()))
- {
- prev = pc->GetPrevType(CT_SEMICOLON, pc->GetLevel());
- }
-
- if (prev->IsNullChunk())
- {
- prev = pc->GetPrevType(CT_BRACE_OPEN, pc->GetLevel() - 1); // Issue #2692
- }
-
- if ( prev->Is(CT_STRING)
- && prev->GetParentType() == CT_EXTERN
- && prev->GetPrev()->Is(CT_EXTERN))
- {
- prev = prev->GetPrev()->GetPrevNcNnlNi(); // Issue #2279
- }
- LOG_FMT(LVARDFBLK, "%s(%d): pc orig line is %zu, orig col is %zu, type is %s, Text() is '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()), pc->Text());
- LOG_FMT(LVARDFBLK, "%s(%d): next orig line is %zu, orig col is %zu, type is %s, Text() is '%s'\n",
- __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), get_token_name(next->GetType()), next->Text());
-
- if (is_var_def(pc, next))
- {
- LOG_FMT(LVARDFBLK, "%s(%d): 'typ==var' found: '%s %s' at line %zu\n",
- __func__, __LINE__, pc->Text(), next->Text(), pc->GetOrigLine());
- LOG_FMT(LBLANKD, "%s(%d): var_blk %s, first_var_blk %s, fn_top %s\n",
- __func__, __LINE__, var_blk ? "TRUE" : "FALSE",
- first_var_blk ? "TRUE" : "FALSE", fn_top ? "TRUE" : "FALSE");
- // Put newline(s) before a block of variable definitions
- log_rule_B("nl_var_def_blk_start");
-
- if ( !var_blk
- && !first_var_blk
- && options::nl_var_def_blk_start() > 0)
- {
- LOG_FMT(LVARDFBLK, "%s(%d): pc is '%s', orig line is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine());
-
- if (prev == nullptr)
- {
- LOG_FMT(LVARDFBLK, "%s(%d): prev is nullptr\n", __func__, __LINE__);
- }
- else
- {
- LOG_FMT(LVARDFBLK, "%s(%d): prev is '%s', orig line is %zu\n",
- __func__, __LINE__, prev->Text(), prev->GetOrigLine());
-
- if (!prev->IsBraceOpen())
- {
- newline_min_after(prev, options::nl_var_def_blk_start() + 1, PCF_VAR_DEF);
- }
- }
- }
- // set newlines within var def block
- log_rule_B("nl_var_def_blk_in");
-
- if ( var_blk
- && (options::nl_var_def_blk_in() > 0))
- {
- prev = pc->GetPrev();
- LOG_FMT(LVARDFBLK, "%s(%d): prev orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text());
-
- if (prev->IsNewline())
- {
- if (prev->GetNlCount() > options::nl_var_def_blk_in())
- {
- prev->SetNlCount(options::nl_var_def_blk_in());
- MARK_CHANGE();
- }
- }
- }
- pc = pc->GetNextType(CT_SEMICOLON, pc->GetLevel());
- var_blk = true;
- }
- else if (var_blk)
- {
- LOG_FMT(LVARDFBLK, "%s(%d): var_blk %s, first_var_blk %s, fn_top %s\n",
- __func__, __LINE__, var_blk ? "TRUE" : "FALSE",
- first_var_blk ? "TRUE" : "FALSE", fn_top ? "TRUE" : "FALSE");
- log_rule_B("nl_var_def_blk_end_func_top");
- log_rule_B("nl_var_def_blk_end");
-
- if ( first_var_blk
- && fn_top)
- {
- // set blank lines after first var def block at the top of a function
- if (options::nl_var_def_blk_end_func_top() > 0)
- {
- LOG_FMT(LVARDFBLK, "%s(%d): nl_var_def_blk_end_func_top at line %zu\n",
- __func__, __LINE__, prev->GetOrigLine());
- prot_the_line(__func__, __LINE__, 15, 4);
- newline_min_after(prev, options::nl_var_def_blk_end_func_top() + 1, PCF_VAR_DEF);
- }
- }
- else if ( !pc->IsPreproc()
- && options::nl_var_def_blk_end() > 0)
- {
- // set blank lines after other var def blocks
- LOG_FMT(LVARDFBLK, "%s(%d): nl_var_def_blk_end at line %zu\n",
- __func__, __LINE__, prev->GetOrigLine());
- // Issue #3516
- newline_min_after(prev, options::nl_var_def_blk_end() + 1, PCF_VAR_DEF);
- }
- // reset the variables for the next block
- prot_the_line(__func__, __LINE__, 15, 4);
- first_var_blk = false;
- var_blk = false;
- }
- else
- {
- first_var_blk = false;
- var_blk = false;
- }
- }
- else
- {
- if (pc->Is(CT_FUNC_CLASS_DEF))
- {
- log_rule_B("nl_var_def_blk_end");
-
- if ( var_blk
- && options::nl_var_def_blk_end() > 0)
- {
- prev = pc->GetPrev();
- prev = prev->GetPrev();
- newline_min_after(prev, options::nl_var_def_blk_end() + 1, PCF_VAR_DEF);
- pc = pc->GetNext();
- first_var_blk = false;
- var_blk = false;
- }
- }
- }
- did_this_line = true;
-
- if (pc == nullptr)
- {
- pc = Chunk::NullChunkPtr;
- }
- pc = pc->GetNext();
- }
- LOG_FMT(LVARDFBLK, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', level is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), pc->GetLevel());
- LOG_FMT(LVARDFBLK, "%s(%d): start orig line is %zu, orig col is %zu, Text() is '%s', level is %zu\n",
- __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol(), start->Text(), start->GetLevel());
- //prot_the_line(__func__, __LINE__, 15, 4);
- return(pc);
-} // newline_var_def_blk
-
-
-static void collapse_empty_body(Chunk *br_open)
-{
- for (Chunk *pc = br_open->GetNext(); pc->IsNot(CT_BRACE_CLOSE); pc = pc->GetNext())
- {
- if ( pc->Is(CT_NEWLINE)
- && pc->SafeToDeleteNl())
- {
- pc = pc->GetPrev();
- Chunk *next = pc->GetNext();
- Chunk::Delete(next);
- MARK_CHANGE();
- }
- }
-} // collapse_empty_body
-
-
-static void newlines_brace_pair(Chunk *br_open)
-{
- LOG_FUNC_ENTRY();
-
- log_rule_B("nl_define_macro");
-
- if ( br_open->TestFlags(PCF_IN_PREPROC)
- && !options::nl_define_macro())
- {
- return;
- }
-
- //fixes 1235 Add single line namespace support
- if ( br_open->Is(CT_BRACE_OPEN)
- && (br_open->GetParentType() == CT_NAMESPACE)
- && br_open->GetPrev()->IsNewline())
- {
- Chunk *chunk_brace_close = br_open->GetClosingParen();
-
- if (chunk_brace_close->IsNotNullChunk())
- {
- if (br_open->IsOnSameLine(chunk_brace_close))
- {
- log_rule_B("nl_namespace_two_to_one_liner - 1");
-
- if (options::nl_namespace_two_to_one_liner())
- {
- Chunk *prev = br_open->GetPrevNnl();
- newline_del_between(prev, br_open);
- }
- /* Below code is to support conversion of 2 liner to 4 liners
- * else
- * {
- * Chunk *nxt = br_open->GetNext();
- * newline_add_between(br_open, nxt);
- * }*/
- }
- }
- }
- // fix 1247 oneliner function support - converts 4,3,2 liners to oneliner
- log_rule_B("nl_create_func_def_one_liner");
-
- if ( br_open->GetParentType() == CT_FUNC_DEF
- && options::nl_create_func_def_one_liner()
- && !br_open->TestFlags(PCF_NOT_POSSIBLE)) // Issue #2795
- {
- Chunk *br_close = br_open->GetClosingParen();
- Chunk *tmp = br_open->GetPrevNcNnlNi(); // Issue #2279
-
- if ( br_close->IsNotNullChunk() // Issue #2594
- && ((br_close->GetOrigLine() - br_open->GetOrigLine()) <= 2)
- && tmp->IsParenClose()) // need to check the conditions.
- {
- // Issue #1825
- bool is_it_possible = true;
-
- while ( tmp->IsNotNullChunk()
- && (tmp = tmp->GetNext())->IsNotNullChunk()
- && !tmp->IsBraceClose()
- && (tmp->GetNext()->IsNotNullChunk()))
- {
- LOG_FMT(LNL1LINE, "%s(%d): tmp orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
-
- if (tmp->IsComment())
- {
- is_it_possible = false;
- break;
- }
- }
-
- if (is_it_possible)
- {
- // Issue 2795
- // we have to check if it could be too long for code_width
- // make a vector to save the chunk
- vector<Chunk> saved_chunk;
- log_rule_B("code_width");
-
- if (options::code_width() > 0)
- {
- saved_chunk.reserve(16);
- Chunk *current = br_open->GetPrevNcNnlNi();
- Chunk *next_br_close = br_close->GetNext();
- current = current->GetNext();
-
- while (current->IsNotNullChunk())
- {
- LOG_FMT(LNL1LINE, "%s(%d): zu kopieren: current orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, current->GetOrigLine(), current->GetOrigCol(), current->Text());
- saved_chunk.push_back(*current);
- Chunk *the_next = current->GetNext();
-
- if ( the_next->IsNullChunk()
- || the_next == next_br_close)
- {
- break;
- }
- current = the_next;
- }
- }
- Chunk *tmp_1 = br_open->GetPrevNcNnlNi();
-
- while ( tmp_1->IsNotNullChunk()
- && (tmp_1 = tmp_1->GetNext())->IsNotNullChunk()
- && !tmp_1->IsBraceClose()
- && (tmp_1->GetNext()->IsNotNullChunk()))
- {
- LOG_FMT(LNL1LINE, "%s(%d): tmp_1 orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, tmp_1->GetOrigLine(), tmp_1->GetOrigCol(), tmp_1->Text());
-
- if (tmp_1->IsNewline())
- {
- tmp_1 = tmp_1->GetPrev(); // Issue #1825
- newline_iarf_pair(tmp_1, tmp_1->GetNextNcNnl(), IARF_REMOVE);
- }
- }
- br_open->SetFlagBits(PCF_ONE_LINER); // set the one liner flag if needed
- br_close->SetFlagBits(PCF_ONE_LINER);
- log_rule_B("code_width");
-
- if ( options::code_width() > 0
- && br_close->GetColumn() > options::code_width())
- {
- // the created line is too long
- // it is not possible to make an one_liner
- // because the line would be too long
- br_open->SetFlagBits(PCF_NOT_POSSIBLE);
- // restore the code
- size_t count;
- Chunk tmp_2;
- Chunk *current = br_open;
-
- for (count = 0; count < saved_chunk.size(); count++)
- {
- tmp_2 = saved_chunk.at(count);
-
- if (tmp_2.GetOrigLine() != current->GetOrigLine())
- {
- // restore the newline
- Chunk chunk;
- chunk.SetType(CT_NEWLINE);
- chunk.SetOrigLine(current->GetOrigLine());
- chunk.SetOrigCol(current->GetOrigCol());
- chunk.SetPpLevel(current->GetPpLevel());
- chunk.SetNlCount(1);
- chunk.CopyAndAddBefore(current);
- LOG_FMT(LNEWLINE, "%s(%d): %zu:%zu add newline before '%s'\n",
- __func__, __LINE__, current->GetOrigLine(), current->GetOrigCol(), current->Text());
- }
- else
- {
- current = current->GetNext();
- }
- }
- }
- }
- }
- }
-
- // Make sure we don't break a one-liner
- if (!one_liner_nl_ok(br_open))
- {
- LOG_FMT(LNL1LINE, "%s(%d): br_open orig line is %zu, orig col is %zu, a new line may NOT be added\n",
- __func__, __LINE__, br_open->GetOrigLine(), br_open->GetOrigCol());
- return;
- }
- LOG_FMT(LNL1LINE, "%s(%d): a new line may be added\n", __func__, __LINE__);
-
- Chunk *next = br_open->GetNextNc();
-
- // Insert a newline between the '=' and open brace, if needed
- LOG_FMT(LNL1LINE, "%s(%d): br_open->Text() '%s', br_open->GetType() [%s], br_open->GetParentType() [%s]\n",
- __func__, __LINE__, br_open->Text(), get_token_name(br_open->GetType()),
- get_token_name(br_open->GetParentType()));
-
- if (br_open->GetParentType() == CT_ASSIGN)
- {
- // Only mess with it if the open brace is followed by a newline
- if (next->IsNewline())
- {
- Chunk *prev = br_open->GetPrevNcNnlNi(); // Issue #2279
- log_rule_B("nl_assign_brace");
- newline_iarf_pair(prev, br_open, options::nl_assign_brace());
- }
- }
-
- if ( br_open->GetParentType() == CT_OC_MSG_DECL
- || br_open->GetParentType() == CT_FUNC_DEF
- || br_open->GetParentType() == CT_FUNC_CLASS_DEF
- || br_open->GetParentType() == CT_OC_CLASS
- || br_open->GetParentType() == CT_CS_PROPERTY
- || br_open->GetParentType() == CT_CPP_LAMBDA
- || br_open->GetParentType() == CT_FUNC_CALL
- || br_open->GetParentType() == CT_FUNC_CALL_USER)
- {
- Chunk *prev = Chunk::NullChunkPtr;
- iarf_e val;
-
- if (br_open->GetParentType() == CT_OC_MSG_DECL)
- {
- log_rule_B("nl_oc_mdef_brace");
- val = options::nl_oc_mdef_brace();
- }
- else
- {
- if ( br_open->GetParentType() == CT_FUNC_DEF
- || br_open->GetParentType() == CT_FUNC_CLASS_DEF
- || br_open->GetParentType() == CT_OC_CLASS)
- {
- val = IARF_NOT_DEFINED;
- log_rule_B("nl_fdef_brace_cond");
- const iarf_e nl_fdef_brace_cond_v = options::nl_fdef_brace_cond();
-
- if (nl_fdef_brace_cond_v != IARF_IGNORE)
- {
- prev = br_open->GetPrevNcNnlNi(); // Issue #2279
-
- if (prev->Is(CT_FPAREN_CLOSE))
- {
- val = nl_fdef_brace_cond_v;
- }
- }
-
- if (val == IARF_NOT_DEFINED)
- {
- log_rule_B("nl_fdef_brace");
- val = options::nl_fdef_brace();
- }
- }
- else
- {
- log_rule_B("nl_property_brace");
- log_rule_B("nl_cpp_ldef_brace");
- log_rule_B("nl_fcall_brace");
- val = ((br_open->GetParentType() == CT_CS_PROPERTY) ?
- options::nl_property_brace() :
- ((br_open->GetParentType() == CT_CPP_LAMBDA) ?
- options::nl_cpp_ldef_brace() :
- options::nl_fcall_brace()));
- }
- }
-
- if (val != IARF_IGNORE)
- {
- if (prev->IsNullChunk())
- {
- // Grab the chunk before the open brace
- prev = br_open->GetPrevNcNnlNi(); // Issue #2279
- }
- newline_iarf_pair(prev, br_open, val);
- }
- }
-
- if (br_open->GetNextNnl()->Is(CT_BRACE_CLOSE))
- {
- // Chunk is "{" and "}" with only whitespace/newlines in between
-
- if (br_open->GetParentType() == CT_FUNC_DEF)
- {
- // Braces belong to a function definition
- log_rule_B("nl_collapse_empty_body_functions");
-
- if (options::nl_collapse_empty_body_functions())
- {
- collapse_empty_body(br_open);
- return;
- }
- }
- else
- {
- log_rule_B("nl_collapse_empty_body");
-
- if (options::nl_collapse_empty_body())
- {
- collapse_empty_body(br_open);
- return;
- }
- }
- }
- //fixes #1245 will add new line between tsquare and brace open based on nl_tsquare_brace
-
- if (br_open->Is(CT_BRACE_OPEN))
- {
- Chunk *chunk_closing_brace = br_open->GetClosingParen();
-
- if (chunk_closing_brace->IsNotNullChunk())
- {
- if (chunk_closing_brace->GetOrigLine() > br_open->GetOrigLine())
- {
- Chunk *prev = br_open->GetPrevNc();
-
- if ( prev->Is(CT_TSQUARE)
- && next->IsNewline())
- {
- log_rule_B("nl_tsquare_brace");
- newline_iarf_pair(prev, br_open, options::nl_tsquare_brace());
- }
- }
- }
- }
- // Eat any extra newlines after the brace open
- log_rule_B("eat_blanks_after_open_brace");
-
- if (options::eat_blanks_after_open_brace())
- {
- if (next->IsNewline())
- {
- log_rule_B("nl_inside_empty_func");
- log_rule_B("nl_inside_namespace");
-
- if ( options::nl_inside_empty_func() > 0
- && br_open->GetNextNnl()->Is(CT_BRACE_CLOSE)
- && ( br_open->GetParentType() == CT_FUNC_CLASS_DEF
- || br_open->GetParentType() == CT_FUNC_DEF))
- {
- blank_line_set(next, options::nl_inside_empty_func);
- }
- else if ( options::nl_inside_namespace() > 0
- && br_open->GetParentType() == CT_NAMESPACE)
- {
- blank_line_set(next, options::nl_inside_namespace);
- }
- else if (next->GetNlCount() > 1)
- {
- next->SetNlCount(1);
- LOG_FMT(LBLANKD, "%s(%d): eat_blanks_after_open_brace %zu\n",
- __func__, __LINE__, next->GetOrigLine());
- MARK_CHANGE();
- }
- }
- }
- bool nl_close_brace = false;
-
- // Handle the cases where the brace is part of a function call or definition
- if (is_func_call_or_def(br_open))
- {
- // Need to force a newline before the close brace, if not in a class body
- if (!br_open->TestFlags(PCF_IN_CLASS))
- {
- nl_close_brace = true;
- }
- // handle newlines after the open brace
- Chunk *pc = br_open->GetNextNcNnl();
- newline_add_between(br_open, pc);
- }
- // Grab the matching brace close
- Chunk *br_close = br_open->GetNextType(CT_BRACE_CLOSE, br_open->GetLevel());
-
- if (br_close->IsNullChunk())
- {
- return;
- }
-
- if (!nl_close_brace)
- {
- /*
- * If the open brace hits a CT_NEWLINE, CT_NL_CONT, CT_COMMENT_MULTI, or
- * CT_COMMENT_CPP without hitting anything other than CT_COMMENT, then
- * there should be a newline before the close brace.
- */
- Chunk *pc = br_open->GetNext();
-
- while (pc->Is(CT_COMMENT))
- {
- pc = pc->GetNext();
- }
-
- if (pc->IsCommentOrNewline())
- {
- nl_close_brace = true;
- }
- }
- Chunk *prev = br_close->GetPrevNcNnlNet();
-
- if (nl_close_brace)
- {
- newline_add_between(prev, br_close);
- }
- else
- {
- newline_del_between(prev, br_close);
- }
-} // newlines_brace_pair
-
-
-static void newline_case(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- // printf("%s case (%s) on line %d col %d\n",
- // __func__, c_chunk_names[start->GetType()],
- // start->GetOrigLine(), start->GetOrigCol());
-
- // Scan backwards until a '{' or ';' or ':'. Abort if a multi-newline is found
- Chunk *prev = start;
-
- do
- {
- prev = prev->GetPrevNc();
-
- if ( prev->IsNotNullChunk()
- && prev->IsNewline()
- && prev->GetNlCount() > 1)
- {
- return;
- }
- } while ( prev->IsNot(CT_BRACE_OPEN)
- && prev->IsNot(CT_BRACE_CLOSE)
- && prev->IsNot(CT_SEMICOLON)
- && prev->IsNot(CT_CASE_COLON));
-
- if (prev->IsNullChunk())
- {
- return;
- }
- Chunk *pc = newline_add_between(prev, start);
-
- if (pc == nullptr)
- {
- return;
- }
-
- // Only add an extra line after a semicolon or brace close
- if ( prev->Is(CT_SEMICOLON)
- || prev->Is(CT_BRACE_CLOSE))
- {
- if ( pc->IsNewline()
- && pc->GetNlCount() < 2)
- {
- double_newline(pc);
- }
- }
-} // newline_case
-
-
-static void newline_case_colon(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- // Scan forwards until a non-comment is found
- Chunk *pc = start;
-
- do
- {
- pc = pc->GetNext();
- } while (pc->IsComment());
-
- if ( pc->IsNotNullChunk()
- && !pc->IsNewline())
- {
- newline_add_before(pc);
- }
-} // newline_case_colon
-
-
-static void newline_before_return(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc = Chunk::NullChunkPtr;
-
- if (start != nullptr)
- {
- pc = start->GetPrev();
- }
- Chunk *nl = pc;
-
- // Skip over single preceding newline
- if (pc->IsNewline())
- {
- // Do we already have a blank line?
- if (nl->GetNlCount() > 1)
- {
- return;
- }
- pc = nl->GetPrev();
- }
-
- // Skip over preceding comments that are not a trailing comment, taking
- // into account that comment blocks may span multiple lines.
- // Trailing comments are considered part of the previous token, not the
- // return statement. They are handled below.
- while ( pc->IsComment()
- && pc->GetParentType() != CT_COMMENT_END)
- {
- pc = pc->GetPrev();
-
- if (!pc->IsNewline())
- {
- return;
- }
- nl = pc;
- pc = pc->GetPrev();
- }
- pc = nl->GetPrev();
-
- // Peek over trailing comment of previous token
- if ( pc->IsComment()
- && pc->GetParentType() == CT_COMMENT_END)
- {
- pc = pc->GetPrev();
- }
-
- // Don't add extra blanks after an opening brace or a case statement
- if ( pc->IsNullChunk()
- || ( pc->Is(CT_BRACE_OPEN)
- || pc->Is(CT_VBRACE_OPEN)
- || pc->Is(CT_CASE_COLON)))
- {
- return;
- }
-
- if ( nl->IsNewline()
- && nl->GetNlCount() < 2)
- {
- nl->SetNlCount(nl->GetNlCount() + 1);
- MARK_CHANGE();
- LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, text is '%s', new line count is now %zu\n",
- __func__, __LINE__, nl->GetOrigLine(), nl->GetOrigCol(), nl->Text(), nl->GetNlCount());
- }
-} // newline_before_return
-
-
-static void newline_after_return(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *semi = start->GetNextType(CT_SEMICOLON, start->GetLevel());
- Chunk *after = semi->GetNextNcNnlNet();
-
- // If we hit a brace or an 'else', then a newline isn't needed
- if ( after->IsNullChunk()
- || after->IsBraceClose()
- || after->Is(CT_ELSE))
- {
- return;
- }
- Chunk *pc;
-
- for (pc = semi->GetNext(); pc != after; pc = pc->GetNext())
- {
- if (pc->Is(CT_NEWLINE))
- {
- if (pc->GetNlCount() < 2)
- {
- double_newline(pc);
- }
- return;
- }
- }
-} // newline_after_return
-
-
-static void newline_iarf_pair(Chunk *before, Chunk *after, iarf_e av, bool check_nl_assign_leave_one_liners)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LNEWLINE, "%s(%d): ", __func__, __LINE__);
- log_func_stack(LNEWLINE, "CallStack:");
-
- if ( before == nullptr
- || before == Chunk::NullChunkPtr
- || after == nullptr
- || after == Chunk::NullChunkPtr
- || after->Is(CT_IGNORED))
- {
- return;
- }
-
- if (av & IARF_ADD)
- {
- if ( check_nl_assign_leave_one_liners
- && options::nl_assign_leave_one_liners()
- && after->TestFlags(PCF_ONE_LINER))
- {
- log_rule_B("nl_assign_leave_one_liners");
- return;
- }
- Chunk *nl = newline_add_between(before, after);
- LOG_FMT(LNEWLINE, "%s(%d): newline_add_between '%s' and '%s'\n",
- __func__, __LINE__, before->Text(), after->Text());
-
- if ( nl != nullptr
- && av == IARF_FORCE
- && nl->GetNlCount() > 1)
- {
- nl->SetNlCount(1);
- }
- }
- else if (av & IARF_REMOVE)
- {
- LOG_FMT(LNEWLINE, "%s(%d): newline_remove_between '%s' and '%s'\n",
- __func__, __LINE__, before->Text(), after->Text());
- newline_del_between(before, after);
- }
-} // newline_iarf_pair
-
-
-void newline_iarf(Chunk *pc, iarf_e av)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LNFD, "%s(%d): ", __func__, __LINE__);
- log_func_stack(LNFD, "CallStack:");
- Chunk *after = Chunk::NullChunkPtr;
-
- if (pc != nullptr)
- {
- after = pc->GetNextNnl();
- }
-
- if ( (pc != nullptr && pc->Is(CT_FPAREN_OPEN)) // Issue #2914
- && pc->GetParentType() == CT_FUNC_CALL
- && after->Is(CT_COMMENT_CPP)
- && options::donot_add_nl_before_cpp_comment())
- {
- return;
- }
- newline_iarf_pair(pc, after, av);
-} // newline_iarf
-
-
-static void newline_func_multi_line(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LNFD, "%s(%d): called on %zu:%zu '%s' [%s/%s]\n",
- __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol(),
- start->Text(), get_token_name(start->GetType()), get_token_name(start->GetParentType()));
-
- bool add_start;
- bool add_args;
- bool add_end;
-
- if ( start->GetParentType() == CT_FUNC_DEF
- || start->GetParentType() == CT_FUNC_CLASS_DEF)
- {
- log_rule_B("nl_func_def_start_multi_line");
- add_start = options::nl_func_def_start_multi_line();
- log_rule_B("nl_func_def_args_multi_line");
- add_args = options::nl_func_def_args_multi_line();
- log_rule_B("nl_func_def_end_multi_line");
- add_end = options::nl_func_def_end_multi_line();
- }
- else if ( start->GetParentType() == CT_FUNC_CALL
- || start->GetParentType() == CT_FUNC_CALL_USER)
- {
- log_rule_B("nl_func_call_start_multi_line");
- add_start = options::nl_func_call_start_multi_line();
- log_rule_B("nl_func_call_args_multi_line");
- add_args = options::nl_func_call_args_multi_line();
- log_rule_B("nl_func_call_end_multi_line");
- add_end = options::nl_func_call_end_multi_line();
- }
- else
- {
- log_rule_B("nl_func_decl_start_multi_line");
- add_start = options::nl_func_decl_start_multi_line();
- log_rule_B("nl_func_decl_args_multi_line");
- add_args = options::nl_func_decl_args_multi_line();
- log_rule_B("nl_func_decl_end_multi_line");
- add_end = options::nl_func_decl_end_multi_line();
- }
-
- if ( !add_start
- && !add_args
- && !add_end)
- {
- return;
- }
- Chunk *pc = start->GetNextNcNnl();
-
- while ( pc->IsNotNullChunk()
- && pc->GetLevel() > start->GetLevel())
- {
- pc = pc->GetNextNcNnl();
- }
-
- if ( pc->Is(CT_FPAREN_CLOSE)
- && start->IsNewlineBetween(pc))
- {
- Chunk *start_next = start->GetNextNcNnl();
- bool has_leading_closure = ( start_next->GetParentType() == CT_OC_BLOCK_EXPR
- || start_next->GetParentType() == CT_CPP_LAMBDA
- || start_next->Is(CT_BRACE_OPEN));
-
- Chunk *prev_end = pc->GetPrevNcNnl();
- bool has_trailing_closure = ( prev_end->GetParentType() == CT_OC_BLOCK_EXPR
- || prev_end->GetParentType() == CT_CPP_LAMBDA
- || prev_end->Is(CT_BRACE_OPEN));
-
- if ( add_start
- && !start->GetNext()->IsNewline())
- {
- log_rule_B("nl_func_call_args_multi_line_ignore_closures");
-
- if (options::nl_func_call_args_multi_line_ignore_closures())
- {
- if ( !has_leading_closure
- && !has_trailing_closure)
- {
- newline_iarf(start, IARF_ADD);
- }
- }
- else
- {
- newline_iarf(start, IARF_ADD);
- }
- }
-
- if ( add_end
- && !pc->GetPrev()->IsNewline())
- {
- log_rule_B("nl_func_call_args_multi_line_ignore_closures");
-
- if (options::nl_func_call_args_multi_line_ignore_closures())
- {
- if ( !has_leading_closure
- && !has_trailing_closure)
- {
- newline_iarf(pc->GetPrev(), IARF_ADD);
- }
- }
- else
- {
- newline_iarf(pc->GetPrev(), IARF_ADD);
- }
- }
-
- if (add_args)
- {
- // process the function in reverse and leave the first comma if the option to leave trailing closure
- // is on. nl_func_call_args_multi_line_ignore_trailing_closure
- for (pc = start->GetNextNcNnl();
- pc->IsNotNullChunk() && pc->GetLevel() > start->GetLevel();
- pc = pc->GetNextNcNnl())
- {
- if ( pc->Is(CT_COMMA)
- && (pc->GetLevel() == (start->GetLevel() + 1)))
- {
- Chunk *tmp = pc->GetNext();
-
- if (tmp->IsComment())
- {
- pc = tmp;
- }
-
- if (!pc->GetNext()->IsNewline())
- {
- log_rule_B("nl_func_call_args_multi_line_ignore_closures");
-
- if (options::nl_func_call_args_multi_line_ignore_closures())
- {
- Chunk *prev_comma = pc->GetPrevNcNnl();
- Chunk *after_comma = pc->GetNextNcNnl();
-
- if (!( ( prev_comma->GetParentType() == CT_OC_BLOCK_EXPR
- || prev_comma->GetParentType() == CT_CPP_LAMBDA
- || prev_comma->Is(CT_BRACE_OPEN))
- || ( after_comma->GetParentType() == CT_OC_BLOCK_EXPR
- || after_comma->GetParentType() == CT_CPP_LAMBDA
- || after_comma->Is(CT_BRACE_OPEN))))
- {
- newline_iarf(pc, IARF_ADD);
- }
- }
- else
- {
- newline_iarf(pc, IARF_ADD);
- }
- }
- }
- }
- }
- }
-} // newline_func_multi_line
-
-
-static void newline_template(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LNFD, "%s(%d): called on %zu:%zu '%s' [%s/%s]\n",
- __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol(),
- start->Text(), get_token_name(start->GetType()), get_token_name(start->GetParentType()));
-
- log_rule_B("nl_template_start");
- bool add_start = options::nl_template_start();
-
- log_rule_B("nl_template_args");
- bool add_args = options::nl_template_args();
-
- log_rule_B("nl_template_end");
- bool add_end = options::nl_template_end();
-
- if ( !add_start
- && !add_args
- && !add_end)
- {
- return;
- }
- Chunk *pc = start->GetNextNcNnl();
-
- while ( pc->IsNotNullChunk()
- && pc->GetLevel() > start->GetLevel())
- {
- pc = pc->GetNextNcNnl();
- }
-
- if (pc->Is(CT_ANGLE_CLOSE))
- {
- if (add_start)
- {
- newline_iarf(start, IARF_ADD);
- }
-
- if (add_end)
- {
- newline_iarf(pc->GetPrev(), IARF_ADD);
- }
-
- if (add_args)
- {
- Chunk *pc_1;
-
- for (pc_1 = start->GetNextNcNnl();
- pc_1->IsNotNullChunk() && pc_1->GetLevel() > start->GetLevel();
- pc_1 = pc_1->GetNextNcNnl())
- {
- if ( pc_1->Is(CT_COMMA)
- && (pc_1->GetLevel() == (start->GetLevel() + 1)))
- {
- Chunk *tmp = pc_1->GetNext();
-
- if (tmp->IsComment())
- {
- pc_1 = tmp;
- }
-
- if (!pc_1->GetNext()->IsNewline())
- {
- newline_iarf(pc_1, IARF_ADD);
- }
- }
- }
- }
- }
-} // newline_template
-
-
-static void newline_func_def_or_call(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LNFD, "%s(%d): called on start->Text() is '%s', orig line is %zu, orig col is %zu, [%s/%s]\n",
- __func__, __LINE__, start->Text(), start->GetOrigLine(), start->GetOrigCol(),
- get_token_name(start->GetType()), get_token_name(start->GetParentType()));
-
- bool is_def = (start->GetParentType() == CT_FUNC_DEF)
- || start->GetParentType() == CT_FUNC_CLASS_DEF;
- bool is_call = (start->GetParentType() == CT_FUNC_CALL)
- || start->GetParentType() == CT_FUNC_CALL_USER;
-
- LOG_FMT(LNFD, "%s(%d): is_def is %s, is_call is %s\n",
- __func__, __LINE__, is_def ? "TRUE" : "FALSE", is_call ? "TRUE" : "FALSE");
-
- if (is_call)
- {
- log_rule_B("nl_func_call_paren");
- iarf_e atmp = options::nl_func_call_paren();
-
- if (atmp != IARF_IGNORE)
- {
- Chunk *prev = start->GetPrevNcNnlNi(); // Issue #2279
-
- if (prev->IsNotNullChunk())
- {
- newline_iarf(prev, atmp);
- }
- }
- Chunk *pc = start->GetNextNcNnl();
-
- if (pc->IsString(")"))
- {
- log_rule_B("nl_func_call_paren_empty");
- atmp = options::nl_func_call_paren_empty();
-
- if (atmp != IARF_IGNORE)
- {
- Chunk *prev = start->GetPrevNcNnlNi(); // Issue #2279
-
- if (prev->IsNotNullChunk())
- {
- newline_iarf(prev, atmp);
- }
- }
- log_rule_B("nl_func_call_empty");
- atmp = options::nl_func_call_empty();
-
- if (atmp != IARF_IGNORE)
- {
- newline_iarf(start, atmp);
- }
- return;
- }
- }
- else
- {
- log_rule_B("nl_func_def_paren");
- log_rule_B("nl_func_paren");
- iarf_e atmp = is_def ? options::nl_func_def_paren()
- : options::nl_func_paren();
- LOG_FMT(LSPACE, "%s(%d): atmp is %s\n",
- __func__, __LINE__,
- (atmp == IARF_IGNORE) ? "IGNORE" :
- (atmp == IARF_ADD) ? "ADD" :
- (atmp == IARF_REMOVE) ? "REMOVE" : "FORCE");
-
- if (atmp != IARF_IGNORE)
- {
- Chunk *prev = start->GetPrevNcNnlNi(); // Issue #2279
-
- if (prev->IsNotNullChunk())
- {
- newline_iarf(prev, atmp);
- }
- }
- // Handle break newlines type and function
- Chunk *prev = start->GetPrevNcNnlNi(); // Issue #2279
- prev = skip_template_prev(prev);
- // Don't split up a function variable
- prev = prev->IsParenClose() ? Chunk::NullChunkPtr : prev->GetPrevNcNnlNi(); // Issue #2279
-
- log_rule_B("nl_func_class_scope");
-
- if ( prev->Is(CT_DC_MEMBER)
- && (options::nl_func_class_scope() != IARF_IGNORE))
- {
- newline_iarf(prev->GetPrevNcNnlNi(), options::nl_func_class_scope()); // Issue #2279
- }
-
- if (prev->IsNot(CT_ACCESS_COLON))
- {
- Chunk *tmp;
-
- if (prev->Is(CT_OPERATOR))
- {
- tmp = prev;
- prev = prev->GetPrevNcNnlNi(); // Issue #2279
- }
- else
- {
- tmp = start;
- }
-
- if (prev->Is(CT_DC_MEMBER))
- {
- log_rule_B("nl_func_scope_name");
-
- if ( options::nl_func_scope_name() != IARF_IGNORE
- && !start->TestFlags(PCF_IN_DECLTYPE))
- {
- newline_iarf(prev, options::nl_func_scope_name());
- }
- }
- const Chunk *tmp_next = prev->GetNextNcNnl();
-
- if (tmp_next->IsNot(CT_FUNC_CLASS_DEF))
- {
- Chunk *closing = tmp->GetClosingParen();
- Chunk *brace = closing->GetNextNcNnl();
- iarf_e a; // Issue #2561
-
- if ( tmp->GetParentType() == CT_FUNC_PROTO
- || tmp->GetParentType() == CT_FUNC_CLASS_PROTO)
- {
- // proto
- log_rule_B("nl_func_proto_type_name");
- a = options::nl_func_proto_type_name();
- }
- else
- {
- // def
-
- log_rule_B("nl_func_leave_one_liners");
-
- if ( options::nl_func_leave_one_liners()
- && ( brace == nullptr
- || brace->TestFlags(PCF_ONE_LINER))) // Issue #1511 and #3274
- {
- a = IARF_IGNORE;
- }
- else
- {
- log_rule_B("nl_func_type_name");
- a = options::nl_func_type_name();
- }
- }
- log_rule_B("nl_func_type_name_class");
-
- if ( tmp->TestFlags(PCF_IN_CLASS)
- && (options::nl_func_type_name_class() != IARF_IGNORE))
- {
- a = options::nl_func_type_name_class();
- }
-
- if ( (a != IARF_IGNORE)
- && prev->IsNotNullChunk())
- {
- LOG_FMT(LNFD, "%s(%d): prev->Text() '%s', orig line is %zu, orig col is %zu, [%s/%s]\n",
- __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(),
- get_token_name(prev->GetType()),
- get_token_name(prev->GetParentType()));
-
- if (prev->Is(CT_DESTRUCTOR))
- {
- prev = prev->GetPrevNcNnlNi(); // Issue #2279
- }
-
- /*
- * If we are on a '::', step back two tokens
- * TODO: do we also need to check for '.' ?
- */
- while (prev->Is(CT_DC_MEMBER))
- {
- prev = prev->GetPrevNcNnlNi(); // Issue #2279
- prev = skip_template_prev(prev);
- prev = prev->GetPrevNcNnlNi(); // Issue #2279
- }
-
- if ( !prev->IsBraceClose()
- && prev->IsNot(CT_BRACE_OPEN)
- && prev->IsNot(CT_SEMICOLON)
- && prev->IsNot(CT_ACCESS_COLON)
- // #1008: if we landed on an operator check that it is having
- // a type before it, in order to not apply nl_func_type_name
- // on conversion operators as they don't have a normal
- // return type syntax
- && (tmp_next->IsNot(CT_OPERATOR) ? true : prev->IsTypeDefinition()))
- {
- newline_iarf(prev, a);
- }
- }
- }
- }
- Chunk *pc = start->GetNextNcNnl();
-
- if (pc->IsString(")"))
- {
- log_rule_B("nl_func_def_empty");
- log_rule_B("nl_func_decl_empty");
- atmp = is_def ? options::nl_func_def_empty()
- : options::nl_func_decl_empty();
-
- if (atmp != IARF_IGNORE)
- {
- newline_iarf(start, atmp);
- }
- log_rule_B("nl_func_def_paren_empty");
- log_rule_B("nl_func_paren_empty");
- atmp = is_def ? options::nl_func_def_paren_empty()
- : options::nl_func_paren_empty();
-
- if (atmp != IARF_IGNORE)
- {
- prev = start->GetPrevNcNnlNi(); // Issue #2279
-
- if (prev->IsNotNullChunk())
- {
- newline_iarf(prev, atmp);
- }
- }
- return;
- }
- }
- // Now scan for commas
- size_t comma_count = 0;
- Chunk *tmp;
- Chunk *pc;
-
- for (pc = start->GetNextNcNnl();
- pc->IsNotNullChunk() && pc->GetLevel() > start->GetLevel();
- pc = pc->GetNextNcNnl())
- {
- if ( pc->Is(CT_COMMA)
- && (pc->GetLevel() == (start->GetLevel() + 1)))
- {
- comma_count++;
- tmp = pc->GetNext();
-
- if (tmp->IsComment())
- {
- pc = tmp;
- }
-
- if (is_def)
- {
- log_rule_B("nl_func_def_args");
- newline_iarf(pc, options::nl_func_def_args());
- }
- else if (is_call)
- {
- // Issue #2604
- log_rule_B("nl_func_call_args");
- newline_iarf(pc, options::nl_func_call_args());
- }
- else // start->GetParentType() == CT_FUNC_DECL
- {
- log_rule_B("nl_func_decl_args");
- newline_iarf(pc, options::nl_func_decl_args());
- }
- }
- }
-
- log_rule_B("nl_func_def_start");
- log_rule_B("nl_func_decl_start");
- iarf_e as = is_def ? options::nl_func_def_start() : options::nl_func_decl_start();
-
- log_rule_B("nl_func_def_end");
- log_rule_B("nl_func_decl_end");
- iarf_e ae = is_def ? options::nl_func_def_end() : options::nl_func_decl_end();
-
- if (comma_count == 0)
- {
- iarf_e atmp;
- log_rule_B("nl_func_def_start_single");
- log_rule_B("nl_func_decl_start_single");
- atmp = is_def ? options::nl_func_def_start_single() :
- options::nl_func_decl_start_single();
-
- if (atmp != IARF_IGNORE)
- {
- as = atmp;
- }
- log_rule_B("nl_func_def_end_single");
- log_rule_B("nl_func_decl_end_single");
- atmp = is_def ? options::nl_func_def_end_single() :
- options::nl_func_decl_end_single();
-
- if (atmp != IARF_IGNORE)
- {
- ae = atmp;
- }
- }
-
- if (!is_call)
- {
- newline_iarf(start, as);
- }
-
- // and fix up the close parenthesis
- if (pc->Is(CT_FPAREN_CLOSE))
- {
- Chunk *prev = pc->GetPrevNnl();
-
- if ( prev->IsNot(CT_FPAREN_OPEN)
- && !is_call)
- {
- newline_iarf(prev, ae);
- }
- newline_func_multi_line(start);
- }
-} // newline_func_def_or_call
-
-
-static void newline_oc_msg(Chunk *start)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *sq_c = start->GetClosingParen();
-
- if (sq_c->IsNullChunk())
- {
- return;
- }
- log_rule_B("nl_oc_msg_leave_one_liner");
-
- if (options::nl_oc_msg_leave_one_liner())
- {
- return;
- }
- bool should_nl_msg = false;
-
- // Get count of parameters
- size_t parameter_count = 0;
-
- for (Chunk *pc = start->GetNextNcNnl(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- if (pc->GetLevel() <= start->GetLevel())
- {
- break;
- }
-
- if (pc->Is(CT_OC_COLON) && pc->GetLevel() - 1 == start->GetLevel())
- {
- parameter_count++;
- }
- }
-
- size_t min_params = options::nl_oc_msg_args_min_params();
-
- if ( parameter_count >= min_params
- && min_params != 0)
- {
- should_nl_msg = true;
- }
- // Get length of longest line
- size_t longest_line = 0;
-
- for (Chunk *pc = start->GetNextNcNnl(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- if (pc->GetLevel() <= start->GetLevel())
- {
- break;
- }
-
- if (pc->GetOrigColEnd() > longest_line)
- {
- longest_line = pc->GetOrigColEnd();
- }
- }
-
- size_t max_code_width = options::nl_oc_msg_args_max_code_width();
-
- if ( longest_line > max_code_width
- && max_code_width != 0)
- {
- should_nl_msg = true;
- }
-
- // If both nl_oc_msg_args_min_params and nl_oc_msg_args_max_code_width are disabled
- // we should newline all messages.
- if ( max_code_width == 0
- && min_params == 0)
- {
- should_nl_msg = true;
- }
-
- if (!should_nl_msg)
- {
- return;
- }
-
- for (Chunk *pc = start->GetNextNcNnl(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- if (pc->GetLevel() <= start->GetLevel())
- {
- break;
- }
-
- if (pc->Is(CT_OC_MSG_NAME) && pc->GetLevel() - 1 == start->GetLevel())
- {
- newline_add_before(pc);
- }
- }
-} // newline_oc_msg
-
-
-static bool one_liner_nl_ok(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LNL1LINE, "%s(%d): check type is %s, parent is %s, flag is %s, orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, get_token_name(pc->GetType()), get_token_name(pc->GetParentType()),
- pcf_flags_str(pc->GetFlags()).c_str(), pc->GetOrigLine(), pc->GetOrigCol());
-
- if (!pc->TestFlags(PCF_ONE_LINER))
- {
- LOG_FMT(LNL1LINE, "%s(%d): true (not 1-liner), a new line may be added\n", __func__, __LINE__);
- return(true);
- }
- // Step back to find the opening brace
- Chunk *br_open = pc;
-
- if (br_open->IsBraceClose())
- {
- br_open = br_open->GetPrevType(br_open->Is(CT_BRACE_CLOSE) ? CT_BRACE_OPEN : CT_VBRACE_OPEN,
- br_open->GetLevel(), E_Scope::ALL);
- }
- else
- {
- while ( br_open->IsNotNullChunk()
- && br_open->TestFlags(PCF_ONE_LINER)
- && !br_open->IsBraceOpen()
- && !br_open->IsBraceClose())
- {
- br_open = br_open->GetPrev();
- }
- }
- pc = br_open;
-
- if ( pc->IsNotNullChunk()
- && pc->TestFlags(PCF_ONE_LINER)
- && ( pc->IsBraceOpen()
- || pc->IsBraceClose()))
- {
- log_rule_B("nl_class_leave_one_liners");
-
- if ( options::nl_class_leave_one_liners()
- && pc->TestFlags(PCF_IN_CLASS))
- {
- LOG_FMT(LNL1LINE, "%s(%d): false (class)\n", __func__, __LINE__);
- return(false);
- }
- log_rule_B("nl_assign_leave_one_liners");
-
- if ( options::nl_assign_leave_one_liners()
- && pc->GetParentType() == CT_ASSIGN)
- {
- LOG_FMT(LNL1LINE, "%s(%d): false (assign)\n", __func__, __LINE__);
- return(false);
- }
- log_rule_B("nl_enum_leave_one_liners");
-
- if ( options::nl_enum_leave_one_liners()
- && pc->GetParentType() == CT_ENUM)
- {
- LOG_FMT(LNL1LINE, "%s(%d): false (enum)\n", __func__, __LINE__);
- return(false);
- }
- log_rule_B("nl_getset_leave_one_liners");
-
- if ( options::nl_getset_leave_one_liners()
- && pc->GetParentType() == CT_GETSET)
- {
- LOG_FMT(LNL1LINE, "%s(%d): false (get/set), a new line may NOT be added\n", __func__, __LINE__);
- return(false);
- }
- // Issue #UT-98
- log_rule_B("nl_cs_property_leave_one_liners");
-
- if ( options::nl_cs_property_leave_one_liners()
- && pc->GetParentType() == CT_CS_PROPERTY)
- {
- LOG_FMT(LNL1LINE, "%s(%d): false (c# property), a new line may NOT be added\n", __func__, __LINE__);
- return(false);
- }
- log_rule_B("nl_func_leave_one_liners");
-
- if ( options::nl_func_leave_one_liners()
- && ( pc->GetParentType() == CT_FUNC_DEF
- || pc->GetParentType() == CT_FUNC_CLASS_DEF))
- {
- LOG_FMT(LNL1LINE, "%s(%d): false (func def)\n", __func__, __LINE__);
- return(false);
- }
- log_rule_B("nl_func_leave_one_liners");
-
- if ( options::nl_func_leave_one_liners()
- && pc->GetParentType() == CT_OC_MSG_DECL)
- {
- LOG_FMT(LNL1LINE, "%s(%d): false (method def)\n", __func__, __LINE__);
- return(false);
- }
- log_rule_B("nl_cpp_lambda_leave_one_liners");
-
- if ( options::nl_cpp_lambda_leave_one_liners()
- && ((pc->GetParentType() == CT_CPP_LAMBDA)))
- {
- LOG_FMT(LNL1LINE, "%s(%d): false (lambda)\n", __func__, __LINE__);
- return(false);
- }
- log_rule_B("nl_oc_msg_leave_one_liner");
-
- if ( options::nl_oc_msg_leave_one_liner()
- && pc->TestFlags(PCF_IN_OC_MSG))
- {
- LOG_FMT(LNL1LINE, "%s(%d): false (message)\n", __func__, __LINE__);
- return(false);
- }
- log_rule_B("nl_if_leave_one_liners");
-
- if ( options::nl_if_leave_one_liners()
- && ( pc->GetParentType() == CT_IF
- || pc->GetParentType() == CT_ELSEIF
- || pc->GetParentType() == CT_ELSE))
- {
- LOG_FMT(LNL1LINE, "%s(%d): false (if/else)\n", __func__, __LINE__);
- return(false);
- }
- log_rule_B("nl_while_leave_one_liners");
-
- if ( options::nl_while_leave_one_liners()
- && pc->GetParentType() == CT_WHILE)
- {
- LOG_FMT(LNL1LINE, "%s(%d): false (while)\n", __func__, __LINE__);
- return(false);
- }
- log_rule_B("nl_do_leave_one_liners");
-
- if ( options::nl_do_leave_one_liners()
- && pc->GetParentType() == CT_DO)
- {
- LOG_FMT(LNL1LINE, "%s(%d): false (do)\n", __func__, __LINE__);
- return(false);
- }
- log_rule_B("nl_for_leave_one_liners");
-
- if ( options::nl_for_leave_one_liners()
- && pc->GetParentType() == CT_FOR)
- {
- LOG_FMT(LNL1LINE, "%s(%d): false (for)\n", __func__, __LINE__);
- return(false);
- }
- log_rule_B("nl_namespace_two_to_one_liner - 2");
-
- if ( options::nl_namespace_two_to_one_liner()
- && pc->GetParentType() == CT_NAMESPACE)
- {
- LOG_FMT(LNL1LINE, "%s(%d): false (namespace)\n", __func__, __LINE__);
- return(false);
- }
- }
- LOG_FMT(LNL1LINE, "%s(%d): true, a new line may be added\n", __func__, __LINE__);
- return(true);
-} // one_liner_nl_ok
-
-
-void undo_one_liner(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- if ( pc != nullptr
- && pc->TestFlags(PCF_ONE_LINER))
- {
- LOG_FMT(LNL1LINE, "%s(%d): pc->Text() '%s', orig line is %zu, orig col is %zu",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- pc->ResetFlagBits(PCF_ONE_LINER);
-
- // scan backward
- LOG_FMT(LNL1LINE, "%s(%d): scan backward\n", __func__, __LINE__);
- Chunk *tmp = pc;
-
- while ((tmp = tmp->GetPrev())->IsNotNullChunk())
- {
- if (!tmp->TestFlags(PCF_ONE_LINER))
- {
- LOG_FMT(LNL1LINE, "%s(%d): tmp->Text() '%s', orig line is %zu, orig col is %zu, --> break\n",
- __func__, __LINE__, tmp->Text(), tmp->GetOrigLine(), tmp->GetOrigCol());
- break;
- }
- LOG_FMT(LNL1LINE, "%s(%d): clear for tmp->Text() '%s', orig line is %zu, orig col is %zu",
- __func__, __LINE__, tmp->Text(), tmp->GetOrigLine(), tmp->GetOrigCol());
- tmp->ResetFlagBits(PCF_ONE_LINER);
- }
- // scan forward
- LOG_FMT(LNL1LINE, "%s(%d): scan forward\n", __func__, __LINE__);
- tmp = pc;
- LOG_FMT(LNL1LINE, "%s(%d): - \n", __func__, __LINE__);
-
- while ((tmp = tmp->GetNext())->IsNotNullChunk())
- {
- if (!tmp->TestFlags(PCF_ONE_LINER))
- {
- LOG_FMT(LNL1LINE, "%s(%d): tmp->Text() '%s', orig line is %zu, orig col is %zu, --> break\n",
- __func__, __LINE__, tmp->Text(), tmp->GetOrigLine(), tmp->GetOrigCol());
- break;
- }
- LOG_FMT(LNL1LINE, "%s(%d): clear for tmp->Text() '%s', orig line is %zu, orig col is %zu",
- __func__, __LINE__, tmp->Text(), tmp->GetOrigLine(), tmp->GetOrigCol());
- tmp->ResetFlagBits(PCF_ONE_LINER);
- }
- LOG_FMT(LNL1LINE, "\n");
- }
-} // undo_one_liner
-
-
-static void nl_create_one_liner(Chunk *vbrace_open)
-{
- LOG_FUNC_ENTRY();
-
- // See if we get a newline between the next text and the vbrace_close
- Chunk *tmp = vbrace_open->GetNextNcNnl();
- Chunk *first = tmp;
-
- if ( first->IsNullChunk()
- || get_token_pattern_class(first->GetType()) != pattern_class_e::NONE)
- {
- return;
- }
- size_t nl_total = 0;
-
- while (tmp->IsNot(CT_VBRACE_CLOSE))
- {
- if (tmp->IsNewline())
- {
- nl_total += tmp->GetNlCount();
-
- if (nl_total > 1)
- {
- return;
- }
- }
- tmp = tmp->GetNext();
- }
-
- if ( tmp->IsNotNullChunk()
- && first->IsNotNullChunk())
- {
- newline_del_between(vbrace_open, first);
- }
-} // nl_create_one_liner
-
-
-static void nl_create_list_liner(Chunk *brace_open)
-{
- LOG_FUNC_ENTRY();
-
- // See if we get a newline between the next text and the vbrace_close
- if (brace_open == nullptr)
- {
- return;
- }
- Chunk *closing = brace_open->GetNextType(CT_BRACE_CLOSE, brace_open->GetLevel());
- Chunk *tmp = brace_open;
-
- do
- {
- if (tmp->Is(CT_COMMA))
- {
- return;
- }
- tmp = tmp->GetNext();
- } while (tmp != closing);
-
- newline_del_between(brace_open, closing);
-} // nl_create_list_liner
-
-
-void newlines_remove_newlines()
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LBLANK, "%s(%d):\n", __func__, __LINE__);
- Chunk *pc = Chunk::GetHead();
-
- if (!pc->IsNewline())
- {
- pc = pc->GetNextNl();
- }
- Chunk *next;
- Chunk *prev;
-
- while (pc->IsNotNullChunk())
- {
- // Remove all newlines not in preproc
- if (!pc->TestFlags(PCF_IN_PREPROC))
- {
- next = pc->GetNext();
- prev = pc->GetPrev();
- newline_iarf(pc, IARF_REMOVE);
-
- if (next == Chunk::GetHead())
- {
- pc = next;
- continue;
- }
- else if ( prev->IsNotNullChunk()
- && !prev->GetNext()->IsNewline())
- {
- pc = prev;
- }
- }
- pc = pc->GetNextNl();
- }
-} // newlines_remove_newlines
-
-
-void newlines_remove_disallowed()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc = Chunk::GetHead();
- Chunk *next;
-
- while ((pc = pc->GetNextNl())->IsNotNullChunk())
- {
- LOG_FMT(LBLANKD, "%s(%d): orig line is %zu, orig col is %zu, <Newline>, nl is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetNlCount());
-
- next = pc->GetNext();
-
- if ( next->IsNotNullChunk()
- && !next->Is(CT_NEWLINE)
- && !can_increase_nl(pc))
- {
- LOG_FMT(LBLANKD, "%s(%d): force to 1 orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
-
- if (pc->GetNlCount() != 1)
- {
- pc->SetNlCount(1);
- MARK_CHANGE();
- }
- }
- }
-} // newlines_remove_disallowed
-
-
-void newlines_cleanup_angles()
-{
- // Issue #1167
- LOG_FUNC_ENTRY();
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- char copy[1000];
- LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy));
-
- if (pc->Is(CT_ANGLE_OPEN))
- {
- newline_template(pc);
- }
- }
-} // newlines_cleanup_angles
-
-
-void newlines_cleanup_braces(bool first)
-{
-//prot_the_line(__func__, __LINE__, 15, 4);
- LOG_FUNC_ENTRY();
-
- // Get the first token that's not an empty line:
- Chunk *pc = Chunk::GetHead();
-
- if (pc->IsNewline())
- {
- pc = pc->GetNextNcNnl();
- }
-
- for ( ; pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
-//prot_the_line(__func__, __LINE__, 15, 4);
- char copy[1000];
- LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy));
-
- if ( pc->Is(CT_IF)
- || pc->Is(CT_CONSTEXPR))
- {
- log_rule_B("nl_if_brace");
- newlines_if_for_while_switch(pc, options::nl_if_brace());
- }
- else if (pc->Is(CT_ELSEIF))
- {
- log_rule_B("nl_elseif_brace");
- iarf_e arg = options::nl_elseif_brace();
- log_rule_B("nl_if_brace");
- newlines_if_for_while_switch(
- pc, (arg != IARF_IGNORE) ? arg : options::nl_if_brace());
- }
- else if (pc->Is(CT_FOR))
- {
- log_rule_B("nl_for_brace");
- newlines_if_for_while_switch(pc, options::nl_for_brace());
- }
- else if (pc->Is(CT_CATCH))
- {
- log_rule_B("nl_oc_brace_catch");
-
- if ( language_is_set(LANG_OC)
- && (pc->GetStr()[0] == '@')
- && (options::nl_oc_brace_catch() != IARF_IGNORE))
- {
- newlines_cuddle_uncuddle(pc, options::nl_oc_brace_catch());
- }
- else
- {
- log_rule_B("nl_brace_catch");
- newlines_cuddle_uncuddle(pc, options::nl_brace_catch());
- }
- Chunk *next = pc->GetNextNcNnl();
-
- if (next->Is(CT_BRACE_OPEN))
- {
- log_rule_B("nl_oc_catch_brace");
-
- if ( language_is_set(LANG_OC)
- && (options::nl_oc_catch_brace() != IARF_IGNORE))
- {
- log_rule_B("nl_oc_catch_brace");
- newlines_do_else(pc, options::nl_oc_catch_brace());
- }
- else
- {
- log_rule_B("nl_catch_brace");
- newlines_do_else(pc, options::nl_catch_brace());
- }
- }
- else
- {
- log_rule_B("nl_oc_catch_brace");
-
- if ( language_is_set(LANG_OC)
- && (options::nl_oc_catch_brace() != IARF_IGNORE))
- {
- newlines_if_for_while_switch(pc, options::nl_oc_catch_brace());
- }
- else
- {
- log_rule_B("nl_catch_brace");
- newlines_if_for_while_switch(pc, options::nl_catch_brace());
- }
- }
- }
- else if (pc->Is(CT_WHILE))
- {
- log_rule_B("nl_while_brace");
- newlines_if_for_while_switch(pc, options::nl_while_brace());
- }
- else if (pc->Is(CT_USING_STMT))
- {
- log_rule_B("nl_using_brace");
- newlines_if_for_while_switch(pc, options::nl_using_brace());
- }
- else if (pc->Is(CT_D_SCOPE_IF))
- {
- log_rule_B("nl_scope_brace");
- newlines_if_for_while_switch(pc, options::nl_scope_brace());
- }
- else if (pc->Is(CT_UNITTEST))
- {
- log_rule_B("nl_unittest_brace");
- newlines_do_else(pc, options::nl_unittest_brace());
- }
- else if (pc->Is(CT_D_VERSION_IF))
- {
- log_rule_B("nl_version_brace");
- newlines_if_for_while_switch(pc, options::nl_version_brace());
- }
- else if (pc->Is(CT_SWITCH))
- {
- log_rule_B("nl_switch_brace");
- newlines_if_for_while_switch(pc, options::nl_switch_brace());
- }
- else if (pc->Is(CT_SYNCHRONIZED))
- {
- log_rule_B("nl_synchronized_brace");
- newlines_if_for_while_switch(pc, options::nl_synchronized_brace());
- }
- else if (pc->Is(CT_DO))
- {
- log_rule_B("nl_do_brace");
- newlines_do_else(pc, options::nl_do_brace());
- }
- else if (pc->Is(CT_ELSE))
- {
- log_rule_B("nl_brace_else");
- newlines_cuddle_uncuddle(pc, options::nl_brace_else());
- Chunk *next = pc->GetNextNcNnl();
-
- if (next->Is(CT_ELSEIF))
- {
- log_rule_B("nl_else_if");
- newline_iarf_pair(pc, next, options::nl_else_if());
- }
- log_rule_B("nl_else_brace");
- newlines_do_else(pc, options::nl_else_brace());
- }
- else if (pc->Is(CT_TRY))
- {
- log_rule_B("nl_try_brace");
- newlines_do_else(pc, options::nl_try_brace());
- // Issue #1734
- Chunk *po = pc->GetNextNcNnl();
- flag_parens(po, PCF_IN_TRY_BLOCK, po->GetType(), CT_NONE, false);
- }
- else if (pc->Is(CT_GETSET))
- {
- log_rule_B("nl_getset_brace");
- newlines_do_else(pc, options::nl_getset_brace());
- }
- else if (pc->Is(CT_FINALLY))
- {
- log_rule_B("nl_brace_finally");
- newlines_cuddle_uncuddle(pc, options::nl_brace_finally());
- log_rule_B("nl_finally_brace");
- newlines_do_else(pc, options::nl_finally_brace());
- }
- else if (pc->Is(CT_WHILE_OF_DO))
- {
- log_rule_B("nl_brace_while");
- newlines_cuddle_uncuddle(pc, options::nl_brace_while());
- }
- else if (pc->Is(CT_BRACE_OPEN))
- {
- switch (pc->GetParentType())
- {
- case CT_DOUBLE_BRACE:
- {
- log_rule_B("nl_paren_dbrace_open");
-
- if (options::nl_paren_dbrace_open() != IARF_IGNORE)
- {
- Chunk *prev = pc->GetPrevNcNnlNi(E_Scope::PREPROC); // Issue #2279
-
- if (prev->IsParenClose())
- {
- log_rule_B("nl_paren_dbrace_open");
- newline_iarf_pair(prev, pc, options::nl_paren_dbrace_open());
- }
- }
- break;
- }
-
- case CT_ENUM:
- {
- log_rule_B("nl_enum_own_lines");
-
- if (options::nl_enum_own_lines() != IARF_IGNORE)
- {
- newlines_enum_entries(pc, options::nl_enum_own_lines());
- }
- log_rule_B("nl_ds_struct_enum_cmt");
-
- if (options::nl_ds_struct_enum_cmt())
- {
- newlines_double_space_struct_enum_union(pc);
- }
- break;
- }
-
- case CT_STRUCT:
- case CT_UNION:
- {
- log_rule_B("nl_ds_struct_enum_cmt");
-
- if (options::nl_ds_struct_enum_cmt())
- {
- newlines_double_space_struct_enum_union(pc);
- }
- break;
- }
-
- case CT_CLASS:
- {
- if (pc->GetLevel() == pc->GetBraceLevel())
- {
- log_rule_B("nl_class_brace");
- log_ruleNL("nl_class_brace", pc->GetPrevNnl());
- newlines_do_else(pc->GetPrevNnl(), options::nl_class_brace());
- }
- break;
- }
-
- case CT_OC_CLASS:
- {
- if (pc->GetLevel() == pc->GetBraceLevel())
- {
- // Request #126
- // introduce two new options
- // look back if we have a @interface or a @implementation
- for (Chunk *tmp = pc->GetPrev(); tmp->IsNotNullChunk(); tmp = tmp->GetPrev())
- {
- LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
-
- if ( tmp->Is(CT_OC_INTF)
- || tmp->Is(CT_OC_IMPL))
- {
- LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, may be remove/force newline before {\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
-
- if (tmp->Is(CT_OC_INTF))
- {
- log_rule_B("nl_oc_interface_brace");
- newlines_do_else(pc->GetPrevNnl(), options::nl_oc_interface_brace());
- }
- else
- {
- log_rule_B("nl_oc_implementation_brace");
- newlines_do_else(pc->GetPrevNnl(), options::nl_oc_implementation_brace());
- }
- break;
- }
- }
- }
- break;
- }
-
- case CT_BRACED_INIT_LIST:
- {
- // Issue #1052
- log_rule_B("nl_create_list_one_liner");
-
- if (options::nl_create_list_one_liner())
- {
- nl_create_list_liner(pc);
- break;
- }
- Chunk *prev = pc->GetPrevNnl();
-
- if ( prev->IsNotNullChunk()
- && ( prev->GetType() == CT_TYPE
- || prev->GetType() == CT_WORD
- || prev->GetType() == CT_ASSIGN // Issue #2957
- || prev->GetParentType() == CT_TEMPLATE
- || prev->GetParentType() == CT_DECLTYPE))
- {
- log_rule_B("nl_type_brace_init_lst");
- newline_iarf_pair(prev, pc, options::nl_type_brace_init_lst(), true);
- }
- break;
- }
-
- case CT_OC_BLOCK_EXPR:
- {
- // issue # 477
- log_rule_B("nl_oc_block_brace");
- newline_iarf_pair(pc->GetPrev(), pc, options::nl_oc_block_brace());
- break;
- }
-
- case CT_FUNC_CLASS_DEF: // Issue #2343
- {
- if (!one_liner_nl_ok(pc))
- {
- LOG_FMT(LNL1LINE, "a new line may NOT be added\n");
- // no change - preserve one liner body
- }
- else
- {
- log_rule_B("nl_before_opening_brace_func_class_def");
-
- if (options::nl_before_opening_brace_func_class_def() != IARF_IGNORE)
- {
- newline_iarf_pair(pc->GetPrev(), pc, options::nl_before_opening_brace_func_class_def());
- }
- }
- }
-
- default:
- {
- break;
- }
- } // switch
-
- log_rule_B("nl_brace_brace");
-
- if (options::nl_brace_brace() != IARF_IGNORE)
- {
- Chunk *next = pc->GetNextNc(E_Scope::PREPROC);
-
- if (next->Is(CT_BRACE_OPEN))
- {
- newline_iarf_pair(pc, next, options::nl_brace_brace());
- }
- }
- Chunk *next = pc->GetNextNnl();
-
- if (next->IsNullChunk())
- {
- // do nothing
- }
- else if (next->Is(CT_BRACE_CLOSE))
- {
- // TODO: add an option to split open empty statements? { };
- }
- else if (next->Is(CT_BRACE_OPEN))
- {
- // already handled
- }
- else
- {
- next = pc->GetNextNcNnl();
-
- // Handle unnamed temporary direct-list-initialization
- if (pc->GetParentType() == CT_BRACED_INIT_LIST)
- {
- log_rule_B("nl_type_brace_init_lst_open");
- newline_iarf_pair(pc, pc->GetNextNnl(),
- options::nl_type_brace_init_lst_open(), true);
- }
- // Handle nl_after_brace_open
- else if ( ( pc->GetParentType() == CT_CPP_LAMBDA
- || pc->GetLevel() == pc->GetBraceLevel())
- && options::nl_after_brace_open())
- {
- log_rule_B("nl_after_brace_open");
-
- if (!one_liner_nl_ok(pc))
- {
- LOG_FMT(LNL1LINE, "a new line may NOT be added (nl_after_brace_open)\n");
- // no change - preserve one liner body
- }
- else if ( pc->TestFlags(PCF_IN_ARRAY_ASSIGN)
- || pc->TestFlags(PCF_IN_PREPROC))
- {
- // no change - don't break up array assignments or preprocessors
- }
- else
- {
- // Step back from next to the first non-newline item
- Chunk *tmp = next->GetPrev();
-
- while (tmp != pc)
- {
- if (tmp->IsComment())
- {
- log_rule_B("nl_after_brace_open_cmt");
-
- if ( !options::nl_after_brace_open_cmt()
- && tmp->IsNot(CT_COMMENT_MULTI))
- {
- break;
- }
- }
- tmp = tmp->GetPrev();
- }
- // Add the newline
- newline_iarf(tmp, IARF_ADD);
- }
- }
- }
- // braced-init-list is more like a function call with arguments,
- // than curly braces that determine a structure of a source code,
- // so, don't add a newline before a closing brace. Issue #1405.
- log_rule_B("nl_type_brace_init_lst_open");
- log_rule_B("nl_type_brace_init_lst_close");
-
- if (!( pc->GetParentType() == CT_BRACED_INIT_LIST
- && options::nl_type_brace_init_lst_open() == IARF_IGNORE
- && options::nl_type_brace_init_lst_close() == IARF_IGNORE))
- {
- newlines_brace_pair(pc);
- }
-
- // Handle nl_before_brace_open
- if ( pc->Is(CT_BRACE_OPEN)
- && pc->GetLevel() == pc->GetBraceLevel()
- && options::nl_before_brace_open())
- {
- log_rule_B("nl_before_brace_open");
-
- if (!one_liner_nl_ok(pc))
- {
- LOG_FMT(LNL1LINE, "a new line may NOT be added (nl_before_brace_open)\n");
- // no change - preserve one liner body
- }
- else if ( pc->TestFlags(PCF_IN_PREPROC)
- || pc->TestFlags(PCF_IN_ARRAY_ASSIGN))
- {
- // no change - don't break up array assignments or preprocessors
- }
- else
- {
- // Step back to previous non-newline item
- Chunk *tmp = pc->GetPrev();
-
- if (!tmp->Is(CT_NEWLINE))
- {
- newline_iarf(tmp, IARF_ADD);
- }
- }
- }
- }
- else if (pc->Is(CT_BRACE_CLOSE))
- {
- // newline between a close brace and x
- log_rule_B("nl_brace_brace");
-
- if (options::nl_brace_brace() != IARF_IGNORE)
- {
- Chunk *next = pc->GetNextNc(E_Scope::PREPROC);
-
- if (next->Is(CT_BRACE_CLOSE))
- {
- log_rule_B("nl_brace_brace");
- newline_iarf_pair(pc, next, options::nl_brace_brace());
- }
- }
- log_rule_B("nl_brace_square");
-
- if (options::nl_brace_square() != IARF_IGNORE)
- {
- Chunk *next = pc->GetNextNc(E_Scope::PREPROC);
-
- if (next->Is(CT_SQUARE_CLOSE))
- {
- log_rule_B("nl_brace_square");
- newline_iarf_pair(pc, next, options::nl_brace_square());
- }
- }
- log_rule_B("nl_brace_fparen");
-
- if (options::nl_brace_fparen() != IARF_IGNORE)
- {
- Chunk *next = pc->GetNextNc(E_Scope::PREPROC);
-
- log_rule_B("nl_brace_fparen");
-
- if ( next->Is(CT_NEWLINE)
- && (options::nl_brace_fparen() == IARF_REMOVE))
- {
- next = next->GetNextNc(E_Scope::PREPROC); // Issue #1000
- }
-
- if (next->Is(CT_FPAREN_CLOSE))
- {
- log_rule_B("nl_brace_fparen");
- newline_iarf_pair(pc, next, options::nl_brace_fparen());
- }
- }
- // newline before a close brace
- log_rule_B("nl_type_brace_init_lst_close");
-
- if ( pc->GetParentType() == CT_BRACED_INIT_LIST
- && options::nl_type_brace_init_lst_close() != IARF_IGNORE)
- {
- // Handle unnamed temporary direct-list-initialization
- newline_iarf_pair(pc->GetPrevNnl(), pc,
- options::nl_type_brace_init_lst_close(), true);
- }
- // blanks before a close brace
- log_rule_B("eat_blanks_before_close_brace");
-
- if (options::eat_blanks_before_close_brace())
- {
- // Limit the newlines before the close brace to 1
- Chunk *prev = pc->GetPrev();
-
- if (prev->IsNewline())
- {
- log_rule_B("nl_inside_namespace");
- log_rule_B("nl_inside_empty_func");
-
- if ( options::nl_inside_empty_func() > 0
- && pc->GetPrevNnl()->Is(CT_BRACE_OPEN)
- && ( pc->GetParentType() == CT_FUNC_CLASS_DEF
- || pc->GetParentType() == CT_FUNC_DEF))
- {
- blank_line_set(prev, options::nl_inside_empty_func);
- }
- else if ( options::nl_inside_namespace() > 0
- && pc->GetParentType() == CT_NAMESPACE)
- {
- blank_line_set(prev, options::nl_inside_namespace);
- }
- else if (prev->GetNlCount() != 1)
- {
- prev->SetNlCount(1);
- LOG_FMT(LBLANKD, "%s(%d): eat_blanks_before_close_brace %zu\n",
- __func__, __LINE__, prev->GetOrigLine());
- MARK_CHANGE();
- }
- }
- }
- else if ( options::nl_ds_struct_enum_close_brace()
- && ( pc->GetParentType() == CT_ENUM
- || pc->GetParentType() == CT_STRUCT
- || pc->GetParentType() == CT_UNION))
- {
- log_rule_B("nl_ds_struct_enum_close_brace");
-
- if (!pc->TestFlags(PCF_ONE_LINER))
- {
- // Make sure the brace is preceded by two newlines
- Chunk *prev = pc->GetPrev();
-
- if (!prev->IsNewline())
- {
- prev = newline_add_before(pc);
- }
-
- if (prev->GetNlCount() < 2)
- {
- double_newline(prev);
- }
- }
- }
- // Force a newline after a close brace
- log_rule_B("nl_brace_struct_var");
-
- if ( (options::nl_brace_struct_var() != IARF_IGNORE)
- && ( pc->GetParentType() == CT_STRUCT
- || pc->GetParentType() == CT_ENUM
- || pc->GetParentType() == CT_UNION))
- {
- Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
-
- if ( next->IsNot(CT_SEMICOLON)
- && next->IsNot(CT_COMMA))
- {
- log_rule_B("nl_brace_struct_var");
- newline_iarf(pc, options::nl_brace_struct_var());
- }
- }
- else if ( pc->GetParentType() != CT_OC_AT
- && pc->GetParentType() != CT_BRACED_INIT_LIST
- && ( options::nl_after_brace_close()
- || pc->GetParentType() == CT_FUNC_CLASS_DEF
- || pc->GetParentType() == CT_FUNC_DEF
- || pc->GetParentType() == CT_OC_MSG_DECL))
- {
- log_rule_B("nl_after_brace_close");
- Chunk *next = pc->GetNext();
-
- if ( next->IsNot(CT_SEMICOLON)
- && next->IsNot(CT_COMMA)
- && next->IsNot(CT_SPAREN_CLOSE) // Issue #664
- && next->IsNot(CT_SQUARE_CLOSE)
- && next->IsNot(CT_FPAREN_CLOSE)
- && next->IsNot(CT_PAREN_CLOSE)
- && next->IsNot(CT_WHILE_OF_DO)
- && next->IsNot(CT_VBRACE_CLOSE) // Issue #666
- && ( next->IsNot(CT_BRACE_CLOSE)
- || !next->TestFlags(PCF_ONE_LINER)) // #1258
- && !pc->TestFlags(PCF_IN_ARRAY_ASSIGN)
- && !pc->TestFlags(PCF_IN_TYPEDEF)
- && !next->IsCommentOrNewline()
- && next->IsNotNullChunk())
- {
- // #1258
- // dont add newline between two consecutive braces closes, if the second is a part of one liner.
- newline_end_newline(pc);
- }
- }
- else if (pc->GetParentType() == CT_NAMESPACE)
- {
- log_rule_B("nl_after_namespace");
-
- if (options::nl_after_namespace() > 0)
- {
- Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
-
- if (next->IsNotNullChunk())
- {
- newline_add_before(next);
- // newline_iarf(next, IARF_ADD);
- }
- }
- }
- }
- else if (pc->Is(CT_VBRACE_OPEN))
- {
- log_rule_B("nl_after_vbrace_open");
- log_rule_B("nl_after_vbrace_open_empty");
-
- if ( options::nl_after_vbrace_open()
- || options::nl_after_vbrace_open_empty())
- {
- Chunk *next = pc->GetNext(E_Scope::PREPROC);
- bool add_it;
-
- if (next->IsSemicolon())
- {
- log_rule_B("nl_after_vbrace_open_empty");
- add_it = options::nl_after_vbrace_open_empty();
- }
- else
- {
- log_rule_B("nl_after_vbrace_open");
- add_it = ( options::nl_after_vbrace_open()
- && next->IsNot(CT_VBRACE_CLOSE)
- && !next->IsCommentOrNewline());
- }
-
- if (add_it)
- {
- newline_iarf(pc, IARF_ADD);
- }
- }
- log_rule_B("nl_create_if_one_liner");
- log_rule_B("nl_create_for_one_liner");
- log_rule_B("nl_create_while_one_liner");
-
- if ( ( ( pc->GetParentType() == CT_IF
- || pc->GetParentType() == CT_ELSEIF
- || pc->GetParentType() == CT_ELSE)
- && options::nl_create_if_one_liner())
- || ( pc->GetParentType() == CT_FOR
- && options::nl_create_for_one_liner())
- || ( pc->GetParentType() == CT_WHILE
- && options::nl_create_while_one_liner()))
- {
- nl_create_one_liner(pc);
- }
- log_rule_B("nl_split_if_one_liner");
- log_rule_B("nl_split_for_one_liner");
- log_rule_B("nl_split_while_one_liner");
-
- if ( ( ( pc->GetParentType() == CT_IF
- || pc->GetParentType() == CT_ELSEIF
- || pc->GetParentType() == CT_ELSE)
- && options::nl_split_if_one_liner())
- || ( pc->GetParentType() == CT_FOR
- && options::nl_split_for_one_liner())
- || ( pc->GetParentType() == CT_WHILE
- && options::nl_split_while_one_liner()))
- {
- if (pc->TestFlags(PCF_ONE_LINER))
- {
- // split one-liner
- Chunk *end = pc->GetNext()->GetNextType(CT_SEMICOLON)->GetNext();
- // Scan for clear flag
- LOG_FMT(LNEWLINE, "(%d) ", __LINE__);
- LOG_FMT(LNEWLINE, "\n");
-
- for (Chunk *temp = pc; temp != end; temp = temp->GetNext())
- {
- LOG_FMT(LNEWLINE, "%s(%d): Text() is '%s', type is %s, level is %zu\n",
- __func__, __LINE__, temp->Text(), get_token_name(temp->GetType()), temp->GetLevel());
- // produces much more log output. Use it only debugging purpose
- //log_pcf_flags(LNEWLINE, temp->GetFlags());
- temp->ResetFlagBits(PCF_ONE_LINER);
- }
-
- // split
- newline_add_between(pc, pc->GetNext());
- }
- }
- }
- else if (pc->Is(CT_VBRACE_CLOSE))
- {
- log_rule_B("nl_after_vbrace_close");
-
- if (options::nl_after_vbrace_close())
- {
- if (!pc->GetNextNc()->IsNewline())
- {
- newline_iarf(pc, IARF_ADD);
- }
- }
- }
- else if ( pc->Is(CT_SQUARE_OPEN)
- && pc->GetParentType() == CT_OC_MSG)
- {
- log_rule_B("nl_oc_msg_args");
-
- if (options::nl_oc_msg_args())
- {
- newline_oc_msg(pc);
- }
- }
- else if (pc->Is(CT_STRUCT))
- {
- log_rule_B("nl_struct_brace");
- newlines_struct_union(pc, options::nl_struct_brace(), true);
- }
- else if (pc->Is(CT_UNION))
- {
- log_rule_B("nl_union_brace");
- newlines_struct_union(pc, options::nl_union_brace(), true);
- }
- else if (pc->Is(CT_ENUM))
- {
- newlines_enum(pc);
- }
- else if (pc->Is(CT_CASE))
- {
- // Note: 'default' also maps to CT_CASE
- log_rule_B("nl_before_case");
-
- if (options::nl_before_case())
- {
- newline_case(pc);
- }
- }
- else if (pc->Is(CT_THROW))
- {
- Chunk *prev = pc->GetPrev();
-
- if ( prev->Is(CT_PAREN_CLOSE)
- || prev->Is(CT_FPAREN_CLOSE)) // Issue #1122
- {
- log_rule_B("nl_before_throw");
- newline_iarf(pc->GetPrevNcNnlNi(), options::nl_before_throw()); // Issue #2279
- }
- }
- else if ( pc->Is(CT_QUALIFIER)
- && !strcmp(pc->Text(), "throws"))
- {
- Chunk *prev = pc->GetPrev();
-
- if ( prev->Is(CT_PAREN_CLOSE)
- || prev->Is(CT_FPAREN_CLOSE)) // Issue #1122
- {
- log_rule_B("nl_before_throw");
- newline_iarf(pc->GetPrevNcNnlNi(), options::nl_before_throw()); // Issue #2279
- }
- }
- else if (pc->Is(CT_CASE_COLON))
- {
- Chunk *next = pc->GetNextNnl();
-
- log_rule_B("nl_case_colon_brace");
-
- if ( next->Is(CT_BRACE_OPEN)
- && options::nl_case_colon_brace() != IARF_IGNORE)
- {
- newline_iarf(pc, options::nl_case_colon_brace());
- }
- else if (options::nl_after_case())
- {
- log_rule_B("nl_after_case");
- newline_case_colon(pc);
- }
- }
- else if (pc->Is(CT_SPAREN_CLOSE))
- {
- Chunk *next = pc->GetNextNcNnl();
-
- if (next->Is(CT_BRACE_OPEN))
- {
- /*
- * TODO: this could be used to control newlines between the
- * the if/while/for/switch close parenthesis and the open brace, but
- * that is currently handled elsewhere.
- */
- }
- }
- else if (pc->Is(CT_RETURN))
- {
- log_rule_B("nl_before_return");
-
- if (options::nl_before_return())
- {
- newline_before_return(pc);
- }
- log_rule_B("nl_after_return");
-
- if (options::nl_after_return())
- {
- newline_after_return(pc);
- }
- }
- else if (pc->Is(CT_SEMICOLON))
- {
- log_rule_B("nl_after_semicolon");
- log_rule_NL("nl_after_semicolon");
-
- if ( !pc->TestFlags(PCF_IN_SPAREN)
- && !pc->TestFlags(PCF_IN_PREPROC)
- && options::nl_after_semicolon())
- {
- Chunk *next = pc->GetNext();
-
- while (next->Is(CT_VBRACE_CLOSE))
- {
- next = next->GetNext();
- }
-
- if ( next->IsNotNullChunk()
- && !next->IsCommentOrNewline())
- {
- if (one_liner_nl_ok(next))
- {
- LOG_FMT(LNL1LINE, "%s(%d): a new line may be added\n", __func__, __LINE__);
- newline_iarf(pc, IARF_ADD);
- }
- else
- {
- LOG_FMT(LNL1LINE, "%s(%d): a new line may NOT be added\n", __func__, __LINE__);
- }
- }
- }
- else if (pc->GetParentType() == CT_CLASS)
- {
- log_rule_B("nl_after_class");
-
- if (options::nl_after_class() > 0)
- {
- /*
- * If there is already a "class" comment, then don't add a newline if
- * one exists after the comment. or else this will interfere with the
- * mod_add_long_class_closebrace_comment option.
- */
- iarf_e mode = IARF_ADD;
- Chunk *next = pc->GetNext();
-
- if (next->IsComment())
- {
- pc = next;
- next = pc->GetNext();
-
- if (next->IsNewline())
- {
- mode = IARF_IGNORE;
- }
- }
- newline_iarf(pc, mode);
- }
- }
- }
- else if (pc->Is(CT_FPAREN_OPEN))
- {
- log_rule_B("nl_func_decl_start");
- log_rule_B("nl_func_def_start");
- log_rule_B("nl_func_decl_start_single");
- log_rule_B("nl_func_def_start_single");
- log_rule_B("nl_func_decl_start_multi_line");
- log_rule_B("nl_func_def_start_multi_line");
- log_rule_B("nl_func_decl_args");
- log_rule_B("nl_func_def_args");
- log_rule_B("nl_func_decl_args_multi_line");
- log_rule_B("nl_func_def_args_multi_line");
- log_rule_B("nl_func_decl_end");
- log_rule_B("nl_func_def_end");
- log_rule_B("nl_func_decl_end_single");
- log_rule_B("nl_func_def_end_single");
- log_rule_B("nl_func_decl_end_multi_line");
- log_rule_B("nl_func_def_end_multi_line");
- log_rule_B("nl_func_decl_empty");
- log_rule_B("nl_func_def_empty");
- log_rule_B("nl_func_type_name");
- log_rule_B("nl_func_type_name_class");
- log_rule_B("nl_func_class_scope");
- log_rule_B("nl_func_scope_name");
- log_rule_B("nl_func_proto_type_name");
- log_rule_B("nl_func_paren");
- log_rule_B("nl_func_def_paren");
- log_rule_B("nl_func_def_paren_empty");
- log_rule_B("nl_func_paren_empty");
-
- if ( ( pc->GetParentType() == CT_FUNC_DEF
- || pc->GetParentType() == CT_FUNC_PROTO
- || pc->GetParentType() == CT_FUNC_CLASS_DEF
- || pc->GetParentType() == CT_FUNC_CLASS_PROTO
- || pc->GetParentType() == CT_OPERATOR)
- && ( options::nl_func_decl_start() != IARF_IGNORE
- || options::nl_func_def_start() != IARF_IGNORE
- || options::nl_func_decl_start_single() != IARF_IGNORE
- || options::nl_func_def_start_single() != IARF_IGNORE
- || options::nl_func_decl_start_multi_line()
- || options::nl_func_def_start_multi_line()
- || options::nl_func_decl_args() != IARF_IGNORE
- || options::nl_func_def_args() != IARF_IGNORE
- || options::nl_func_decl_args_multi_line()
- || options::nl_func_def_args_multi_line()
- || options::nl_func_decl_end() != IARF_IGNORE
- || options::nl_func_def_end() != IARF_IGNORE
- || options::nl_func_decl_end_single() != IARF_IGNORE
- || options::nl_func_def_end_single() != IARF_IGNORE
- || options::nl_func_decl_end_multi_line()
- || options::nl_func_def_end_multi_line()
- || options::nl_func_decl_empty() != IARF_IGNORE
- || options::nl_func_def_empty() != IARF_IGNORE
- || options::nl_func_type_name() != IARF_IGNORE
- || options::nl_func_type_name_class() != IARF_IGNORE
- || options::nl_func_class_scope() != IARF_IGNORE
- || options::nl_func_scope_name() != IARF_IGNORE
- || options::nl_func_proto_type_name() != IARF_IGNORE
- || options::nl_func_paren() != IARF_IGNORE
- || options::nl_func_def_paren() != IARF_IGNORE
- || options::nl_func_def_paren_empty() != IARF_IGNORE
- || options::nl_func_paren_empty() != IARF_IGNORE))
- {
- newline_func_def_or_call(pc);
- }
- else if ( ( pc->GetParentType() == CT_FUNC_CALL
- || pc->GetParentType() == CT_FUNC_CALL_USER)
- && ( (options::nl_func_call_start_multi_line())
- || (options::nl_func_call_args_multi_line())
- || (options::nl_func_call_end_multi_line())
- || (options::nl_func_call_start() != IARF_IGNORE) // Issue #2020
- || (options::nl_func_call_args() != IARF_IGNORE) // Issue #2604
- || (options::nl_func_call_paren() != IARF_IGNORE)
- || (options::nl_func_call_paren_empty() != IARF_IGNORE)
- || (options::nl_func_call_empty() != IARF_IGNORE)))
- {
- log_rule_B("nl_func_call_start_multi_line");
- log_rule_B("nl_func_call_args_multi_line");
- log_rule_B("nl_func_call_end_multi_line");
- log_rule_B("nl_func_call_start");
- log_rule_B("nl_func_call_args");
- log_rule_B("nl_func_call_paren");
- log_rule_B("nl_func_call_paren_empty");
- log_rule_B("nl_func_call_empty");
-
- if (options::nl_func_call_start() != IARF_IGNORE)
- {
- newline_iarf(pc, options::nl_func_call_start());
- }
- // note that newline_func_def_or_call() calls newline_func_multi_line()
- newline_func_def_or_call(pc);
- }
- else if ( first
- && (options::nl_remove_extra_newlines() == 1))
- {
- log_rule_B("nl_remove_extra_newlines");
- newline_iarf(pc, IARF_REMOVE);
- }
- }
- else if (pc->Is(CT_FPAREN_CLOSE)) // Issue #2758
- {
- if ( ( pc->GetParentType() == CT_FUNC_CALL
- || pc->GetParentType() == CT_FUNC_CALL_USER)
- && options::nl_func_call_end() != IARF_IGNORE)
- {
- log_rule_B("nl_func_call_end");
- newline_iarf(pc->GetPrev(), options::nl_func_call_end());
- }
- }
- else if (pc->Is(CT_ANGLE_CLOSE))
- {
- if (pc->GetParentType() == CT_TEMPLATE)
- {
- Chunk *next = pc->GetNextNcNnl();
-
- if ( next->IsNotNullChunk()
- && next->GetLevel() == next->GetBraceLevel())
- {
- Chunk *tmp = pc->GetPrevType(CT_ANGLE_OPEN, pc->GetLevel())->GetPrevNcNnlNi(); // Issue #2279
-
- if (tmp->Is(CT_TEMPLATE))
- {
- if (next->Is(CT_USING))
- {
- newline_iarf(pc, options::nl_template_using());
- log_rule_B("nl_template_using");
- }
- else if (next->GetParentType() == CT_FUNC_DEF) // function definition
- {
- iarf_e const action =
- newline_template_option(
- pc,
- options::nl_template_func_def_special(),
- options::nl_template_func_def(),
- options::nl_template_func());
- log_rule_B("nl_template_func_def_special");
- log_rule_B("nl_template_func_def");
- log_rule_B("nl_template_func");
- newline_iarf(pc, action);
- }
- else if (next->GetParentType() == CT_FUNC_PROTO) // function declaration
- {
- iarf_e const action =
- newline_template_option(
- pc,
- options::nl_template_func_decl_special(),
- options::nl_template_func_decl(),
- options::nl_template_func());
- log_rule_B("nl_template_func_decl_special");
- log_rule_B("nl_template_func_decl");
- log_rule_B("nl_template_func");
- newline_iarf(pc, action);
- }
- else if ( next->Is(CT_TYPE)
- || next->Is(CT_QUALIFIER)) // variable
- {
- newline_iarf(pc, options::nl_template_var());
- log_rule_B("nl_template_var");
- }
- else if (next->TestFlags(PCF_INCOMPLETE)) // class declaration
- {
- iarf_e const action =
- newline_template_option(
- pc,
- options::nl_template_class_decl_special(),
- options::nl_template_class_decl(),
- options::nl_template_class());
- log_rule_B("nl_template_class_decl_special");
- log_rule_B("nl_template_class_decl");
- log_rule_B("nl_template_class");
- newline_iarf(pc, action);
- }
- else // class definition
- {
- iarf_e const action =
- newline_template_option(
- pc,
- options::nl_template_class_def_special(),
- options::nl_template_class_def(),
- options::nl_template_class());
- log_rule_B("nl_template_class_def_special");
- log_rule_B("nl_template_class_def");
- log_rule_B("nl_template_class");
- newline_iarf(pc, action);
- }
- }
- }
- }
- }
- else if ( pc->Is(CT_NAMESPACE)
- && pc->GetParentType() != CT_USING)
- {
- // Issue #2387
- Chunk *next = pc->GetNextNcNnl();
-
- if (next->IsNotNullChunk())
- {
- next = next->GetNextNcNnl();
-
- if (!next->Is(CT_ASSIGN))
- {
- // Issue #1235
- // Issue #2186
- Chunk *braceOpen = pc->GetNextType(CT_BRACE_OPEN, pc->GetLevel());
-
- if (braceOpen->IsNullChunk())
- {
- // fatal error
- LOG_FMT(LERR, "%s(%d): Missing BRACE_OPEN after namespace\n orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- exit(EXIT_FAILURE);
- }
- LOG_FMT(LNEWLINE, "%s(%d): braceOpen orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, braceOpen->GetOrigLine(), braceOpen->GetOrigCol(), braceOpen->Text());
- // produces much more log output. Use it only debugging purpose
- //log_pcf_flags(LNEWLINE, braceOpen->GetFlags());
- newlines_namespace(pc);
- }
- }
- }
- else if (pc->Is(CT_SQUARE_OPEN))
- {
- if ( pc->GetParentType() == CT_ASSIGN
- && !pc->TestFlags(PCF_ONE_LINER))
- {
- Chunk *tmp = pc->GetPrevNcNnlNi(); // Issue #2279
- newline_iarf(tmp, options::nl_assign_square());
- log_rule_B("nl_assign_square");
-
- iarf_e arg = options::nl_after_square_assign();
- log_rule_B("nl_after_square_assign");
-
- if (options::nl_assign_square() & IARF_ADD)
- {
- log_rule_B("nl_assign_square");
- arg = IARF_ADD;
- }
- newline_iarf(pc, arg);
-
- /*
- * if there is a newline after the open, then force a newline
- * before the close
- */
- tmp = pc->GetNextNc();
-
- if (tmp->IsNewline())
- {
- tmp = pc->GetNextType(CT_SQUARE_CLOSE, pc->GetLevel());
-
- if (tmp->IsNotNullChunk())
- {
- newline_add_before(tmp);
- }
- }
- }
- }
- else if (pc->Is(CT_ACCESS))
- {
- // Make sure there is a newline before an access spec
- if (options::nl_before_access_spec() > 0)
- {
- log_rule_B("nl_before_access_spec");
- Chunk *prev = pc->GetPrev();
-
- if (!prev->IsNewline())
- {
- newline_add_before(pc);
- }
- }
- }
- else if (pc->Is(CT_ACCESS_COLON))
- {
- // Make sure there is a newline after an access spec
- if (options::nl_after_access_spec() > 0)
- {
- log_rule_B("nl_after_access_spec");
- Chunk *next = pc->GetNext();
-
- if (!next->IsNewline())
- {
- newline_add_before(next);
- }
- }
- }
- else if (pc->Is(CT_PP_DEFINE))
- {
- if (options::nl_multi_line_define())
- {
- log_rule_B("nl_multi_line_define");
- nl_handle_define(pc);
- }
- }
- else if ( first
- && (options::nl_remove_extra_newlines() == 1)
- && !pc->TestFlags(PCF_IN_PREPROC))
- {
- log_rule_B("nl_remove_extra_newlines");
- log_rule_NL("nl_remove_extra_newlines");
- newline_iarf(pc, IARF_REMOVE);
- }
- else if ( pc->Is(CT_MEMBER)
- && ( language_is_set(LANG_JAVA)
- || language_is_set(LANG_CPP))) // Issue #2574
- {
- // Issue #1124
- if (pc->GetParentType() != CT_FUNC_DEF)
- {
- newline_iarf(pc->GetPrevNnl(), options::nl_before_member());
- log_rule_B("nl_before_member");
- newline_iarf(pc, options::nl_after_member());
- log_rule_B("nl_after_member");
- }
- }
- else
- {
- // ignore it
- }
- }
-
-//prot_the_line(__func__, __LINE__, 15, 4);
- newline_var_def_blk(Chunk::GetHead());
-//prot_the_line(__func__, __LINE__, 15, 4);
-} // newlines_cleanup_braces
-
-
-static void nl_handle_define(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *nl = pc;
- Chunk *ref = Chunk::NullChunkPtr;
-
- while ((nl = nl->GetNext())->IsNotNullChunk())
- {
- if (nl->Is(CT_NEWLINE))
- {
- return;
- }
-
- if ( nl->Is(CT_MACRO)
- || ( nl->Is(CT_FPAREN_CLOSE)
- && nl->GetParentType() == CT_MACRO_FUNC))
- {
- ref = nl;
- }
-
- if (nl->Is(CT_NL_CONT))
- {
- if (ref->IsNotNullChunk())
- {
- newline_add_after(ref);
- }
- return;
- }
- }
-} // nl_handle_define
-
-
-void newline_after_multiline_comment()
-{
- LOG_FUNC_ENTRY();
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if (pc->IsNot(CT_COMMENT_MULTI))
- {
- continue;
- }
- Chunk *tmp = pc;
-
- while ( ((tmp = tmp->GetNext())->IsNotNullChunk())
- && !tmp->IsNewline())
- {
- if (!tmp->IsComment())
- {
- newline_add_before(tmp);
- break;
- }
- }
- }
-} // newline_after_multiline_comment
-
-
-void newline_after_label_colon()
-{
- LOG_FUNC_ENTRY();
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if (pc->IsNot(CT_LABEL_COLON))
- {
- continue;
- }
- newline_add_after(pc);
- }
-} // newline_after_label_colon
-
-
-static bool is_class_one_liner(Chunk *pc)
-{
- if ( ( pc->Is(CT_FUNC_CLASS_DEF)
- || pc->Is(CT_FUNC_DEF))
- && pc->TestFlags(PCF_IN_CLASS))
- {
- // Find opening brace
- pc = pc->GetNextType(CT_BRACE_OPEN, pc->GetLevel());
- return( pc->IsNotNullChunk()
- && pc->TestFlags(PCF_ONE_LINER));
- }
- return(false);
-} // is_class_one_liner
-
-
-void newlines_insert_blank_lines()
-{
- LOG_FUNC_ENTRY();
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- //LOG_FMT(LNEWLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- // __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- if (pc->Is(CT_IF))
- {
- newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_before_if());
- log_rule_B("nl_before_if");
- newlines_if_for_while_switch_post_blank_lines(pc, options::nl_after_if());
- log_rule_B("nl_after_if");
- }
- else if (pc->Is(CT_FOR))
- {
- newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_before_for());
- log_rule_B("nl_before_for");
- newlines_if_for_while_switch_post_blank_lines(pc, options::nl_after_for());
- log_rule_B("nl_after_for");
- }
- else if (pc->Is(CT_WHILE))
- {
- newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_before_while());
- log_rule_B("nl_before_while");
- newlines_if_for_while_switch_post_blank_lines(pc, options::nl_after_while());
- log_rule_B("nl_after_while");
- }
- else if (pc->Is(CT_SWITCH))
- {
- newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_before_switch());
- log_rule_B("nl_before_switch");
- newlines_if_for_while_switch_post_blank_lines(pc, options::nl_after_switch());
- log_rule_B("nl_after_switch");
- }
- else if (pc->Is(CT_SYNCHRONIZED))
- {
- newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_before_synchronized());
- log_rule_B("nl_before_synchronized");
- newlines_if_for_while_switch_post_blank_lines(pc, options::nl_after_synchronized());
- log_rule_B("nl_after_synchronized");
- }
- else if (pc->Is(CT_DO))
- {
- newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_before_do());
- log_rule_B("nl_before_do");
- newlines_if_for_while_switch_post_blank_lines(pc, options::nl_after_do());
- log_rule_B("nl_after_do");
- }
- else if (pc->Is(CT_OC_INTF))
- {
- newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_oc_before_interface());
- log_rule_B("nl_oc_before_interface");
- }
- else if (pc->Is(CT_OC_END))
- {
- newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_oc_before_end());
- log_rule_B("nl_oc_before_end");
- }
- else if (pc->Is(CT_OC_IMPL))
- {
- newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_oc_before_implementation());
- log_rule_B("nl_oc_before_implementation");
- }
- else if ( pc->Is(CT_FUNC_CLASS_DEF)
- || pc->Is(CT_FUNC_DEF)
- || pc->Is(CT_FUNC_CLASS_PROTO)
- || pc->Is(CT_FUNC_PROTO))
- {
- if ( options::nl_class_leave_one_liner_groups()
- && is_class_one_liner(pc))
- {
- log_rule_B("nl_class_leave_one_liner_groups");
- newlines_func_pre_blank_lines(pc, CT_FUNC_PROTO);
- }
- else
- {
- newlines_func_pre_blank_lines(pc, pc->GetType());
- }
- }
- else
- {
- // ignore it
- //LOG_FMT(LNEWLINE, "%s(%d): ignore it\n", __func__, __LINE__);
- }
- }
-} // newlines_insert_blank_lines
-
-
-void newlines_functions_remove_extra_blank_lines()
-{
- LOG_FUNC_ENTRY();
-
- const size_t nl_max_blank_in_func = options::nl_max_blank_in_func();
-
- log_rule_B("nl_max_blank_in_func");
-
- if (nl_max_blank_in_func == 0)
- {
- LOG_FMT(LNEWLINE, "%s(%d): nl_max_blank_in_func is zero\n", __func__, __LINE__);
- return;
- }
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- LOG_FMT(LNEWLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
-
- if ( pc->IsNot(CT_BRACE_OPEN)
- || ( pc->GetParentType() != CT_FUNC_DEF
- && pc->GetParentType() != CT_CPP_LAMBDA))
- {
- continue;
- }
- const size_t startMoveLevel = pc->GetLevel();
-
- while (pc->IsNotNullChunk())
- {
- if ( pc->Is(CT_BRACE_CLOSE)
- && pc->GetLevel() == startMoveLevel)
- {
- break;
- }
-
- // delete newlines
- if ( !pc->Is(CT_COMMENT_MULTI) // Issue #2195
- && pc->GetNlCount() > nl_max_blank_in_func)
- {
- LOG_FMT(LNEWLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- pc->SetNlCount(nl_max_blank_in_func);
- MARK_CHANGE();
- remove_next_newlines(pc);
- }
- else
- {
- pc = pc->GetNext();
- }
- }
- }
-} // newlines_functions_remove_extra_blank_lines
-
-
-void newlines_squeeze_ifdef()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc;
-
- for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- if ( pc->Is(CT_PREPROC)
- && ( pc->GetLevel() > 0
- || options::nl_squeeze_ifdef_top_level()))
- {
- log_rule_B("nl_squeeze_ifdef_top_level");
- Chunk *ppr = pc->GetNext();
-
- if ( ppr->Is(CT_PP_IF)
- || ppr->Is(CT_PP_ELSE)
- || ppr->Is(CT_PP_ENDIF))
- {
- Chunk *pnl = Chunk::NullChunkPtr;
- Chunk *nnl = ppr->GetNextNl();
-
- if ( ppr->Is(CT_PP_ELSE)
- || ppr->Is(CT_PP_ENDIF))
- {
- pnl = pc->GetPrevNl();
- }
- Chunk *tmp1;
- Chunk *tmp2;
-
- if (nnl->IsNotNullChunk())
- {
- if (pnl->IsNotNullChunk())
- {
- if (pnl->GetNlCount() > 1)
- {
- pnl->SetNlCount(1);
- MARK_CHANGE();
-
- tmp1 = pnl->GetPrevNnl();
- tmp2 = nnl->GetPrevNnl();
-
- LOG_FMT(LNEWLINE, "%s(%d): moved from after line %zu to after %zu\n",
- __func__, __LINE__, tmp1->GetOrigLine(), tmp2->GetOrigLine());
- }
- }
-
- if ( ppr->Is(CT_PP_IF)
- || ppr->Is(CT_PP_ELSE))
- {
- if (nnl->GetNlCount() > 1)
- {
- tmp1 = nnl->GetPrevNnl();
- LOG_FMT(LNEWLINE, "%s(%d): trimmed newlines after line %zu from %zu\n",
- __func__, __LINE__, tmp1->GetOrigLine(), nnl->GetNlCount());
- nnl->SetNlCount(1);
- MARK_CHANGE();
- }
- }
- }
- }
- }
- }
-} // newlines_squeeze_ifdef
-
-
-void newlines_squeeze_paren_close()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc;
-
- for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- Chunk *next;
- Chunk *prev;
-
- if (pc->Is(CT_NEWLINE))
- {
- prev = pc->GetPrev();
- }
- else
- {
- prev = pc;
- }
- next = pc->GetNext();
-
- if ( next->IsNotNullChunk()
- && prev->IsNotNullChunk()
- && next->IsParenClose()
- && prev->IsParenClose())
- {
- Chunk *prev_op = prev->GetOpeningParen();
- Chunk *next_op = next->GetOpeningParen();
- bool flag = true;
-
- Chunk *tmp = prev;
-
- while (tmp->IsParenClose())
- {
- tmp = tmp->GetPrev();
- }
-
- if (tmp->IsNot(CT_NEWLINE))
- {
- flag = false;
- }
-
- if (flag)
- {
- if (next_op->IsOnSameLine(prev_op))
- {
- if (pc->Is(CT_NEWLINE))
- {
- pc = next;
- }
- newline_del_between(prev, next);
- }
- else
- {
- newline_add_between(prev, next);
- }
- }
- }
- }
-} // newlines_squeeze_paren_close
-
-
-void newlines_eat_start_end()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc;
-
- // Process newlines at the start of the file
- if ( cpd.frag_cols == 0
- && ( (options::nl_start_of_file() & IARF_REMOVE)
- || ( (options::nl_start_of_file() & IARF_ADD)
- && (options::nl_start_of_file_min() > 0))))
- {
- log_rule_B("nl_start_of_file");
- log_rule_B("nl_start_of_file_min");
- pc = Chunk::GetHead();
-
- if (pc->IsNotNullChunk())
- {
- if (pc->Is(CT_NEWLINE))
- {
- if (options::nl_start_of_file() == IARF_REMOVE)
- {
- log_rule_B("nl_start_of_file");
- LOG_FMT(LBLANKD, "%s(%d): eat_blanks_start_of_file %zu\n",
- __func__, __LINE__, pc->GetOrigLine());
- Chunk::Delete(pc);
- MARK_CHANGE();
- }
- else if ( options::nl_start_of_file() == IARF_FORCE
- || (pc->GetNlCount() < options::nl_start_of_file_min()))
- {
- log_rule_B("nl_start_of_file");
- LOG_FMT(LBLANKD, "%s(%d): set_blanks_start_of_file %zu\n",
- __func__, __LINE__, pc->GetOrigLine());
- pc->SetNlCount(options::nl_start_of_file_min());
- log_rule_B("nl_start_of_file_min");
- MARK_CHANGE();
- }
- }
- else if ( (options::nl_start_of_file() & IARF_ADD)
- && (options::nl_start_of_file_min() > 0))
- {
- log_rule_B("nl_start_of_file");
- log_rule_B("nl_start_of_file_min");
- Chunk chunk;
- chunk.SetType(CT_NEWLINE);
- chunk.SetOrigLine(pc->GetOrigLine());
- chunk.SetOrigCol(pc->GetOrigCol());
- chunk.SetPpLevel(pc->GetPpLevel());
- chunk.SetNlCount(options::nl_start_of_file_min());
- log_rule_B("nl_start_of_file_min");
- chunk.CopyAndAddBefore(pc);
- LOG_FMT(LNEWLINE, "%s(%d): %zu:%zu add newline before '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- MARK_CHANGE();
- }
- }
- }
-
- // Process newlines at the end of the file
- if ( cpd.frag_cols == 0
- && ( (options::nl_end_of_file() & IARF_REMOVE)
- || ( (options::nl_end_of_file() & IARF_ADD)
- && (options::nl_end_of_file_min() > 0))))
- {
- log_rule_B("nl_end_of_file");
- log_rule_B("nl_end_of_file_min");
- pc = Chunk::GetTail();
-
- if (pc->IsNotNullChunk())
- {
- if (pc->Is(CT_NEWLINE))
- {
- if (options::nl_end_of_file() == IARF_REMOVE)
- {
- log_rule_B("nl_end_of_file");
- LOG_FMT(LBLANKD, "%s(%d): eat_blanks_end_of_file %zu\n",
- __func__, __LINE__, pc->GetOrigLine());
- Chunk::Delete(pc);
- MARK_CHANGE();
- }
- else if ( options::nl_end_of_file() == IARF_FORCE
- || (pc->GetNlCount() < options::nl_end_of_file_min()))
- {
- log_rule_B("nl_end_of_file");
- log_rule_B("nl_end_of_file_min");
-
- if (pc->GetNlCount() != options::nl_end_of_file_min())
- {
- log_rule_B("nl_end_of_file_min");
- LOG_FMT(LBLANKD, "%s(%d): set_blanks_end_of_file %zu\n",
- __func__, __LINE__, pc->GetOrigLine());
- pc->SetNlCount(options::nl_end_of_file_min());
- log_rule_B("nl_end_of_file_min");
- MARK_CHANGE();
- }
- }
- }
- else if ( (options::nl_end_of_file() & IARF_ADD)
- && (options::nl_end_of_file_min() > 0))
- {
- log_rule_B("nl_end_of_file");
- log_rule_B("nl_end_of_file_min");
- Chunk chunk;
- chunk.SetType(CT_NEWLINE);
- chunk.SetOrigLine(pc->GetOrigLine());
- chunk.SetOrigCol(pc->GetOrigCol());
- chunk.SetPpLevel(pc->GetPpLevel());
- chunk.SetNlCount(options::nl_end_of_file_min());
- log_rule_B("nl_end_of_file_min");
- chunk.CopyAndAddBefore(Chunk::NullChunkPtr);
- LOG_FMT(LNEWLINE, "%s(%d): %zu:%zu add newline after '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- MARK_CHANGE();
- }
- }
- }
-} // newlines_eat_start_end
-
-
-void newlines_chunk_pos(E_Token chunk_type, token_pos_e mode)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LNEWLINE, "%s(%d): mode is %s\n",
- __func__, __LINE__, to_string(mode));
-
- if ( !(mode & (TP_JOIN | TP_LEAD | TP_TRAIL))
- && chunk_type != CT_COMMA)
- {
- return;
- }
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- char copy[1000];
- LOG_FMT(LNEWLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy));
- // produces much more log output. Use it only debugging purpose
- //log_pcf_flags(LNEWLINE, pc->GetFlags());
-
- if (pc->Is(chunk_type))
- {
- token_pos_e mode_local;
-
- if (chunk_type == CT_COMMA)
- {
- LOG_FMT(LNEWLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- // produces much more log output. Use it only debugging purpose
- //log_pcf_flags(LNEWLINE, pc->GetFlags());
-
- if (pc->TestFlags(PCF_IN_CONST_ARGS)) // Issue #2250
- {
- continue;
- }
-
- /*
- * for chunk_type == CT_COMMA
- * we get 'mode' from options::pos_comma()
- * BUT we must take care of options::pos_class_comma()
- * TODO and options::pos_constr_comma()
- */
- if (pc->TestFlags(PCF_IN_CLASS_BASE))
- {
- // change mode
- log_rule_B("pos_class_comma");
- mode_local = options::pos_class_comma();
- }
- else if (pc->TestFlags(PCF_IN_ENUM))
- {
- log_rule_B("pos_enum_comma");
- mode_local = options::pos_enum_comma();
- }
- else
- {
- mode_local = mode;
- }
- LOG_FMT(LNEWLINE, "%s(%d): mode_local is %s\n",
- __func__, __LINE__, to_string(mode_local));
- }
- else
- {
- mode_local = mode;
- }
- Chunk *prev = pc->GetPrevNc();
- Chunk *next = pc->GetNextNc();
-
- LOG_FMT(LNEWLINE, "%s(%d): mode_local is %s\n",
- __func__, __LINE__, to_string(mode_local));
-
- LOG_FMT(LNEWLINE, "%s(%d): prev orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text());
- LOG_FMT(LNEWLINE, "%s(%d): next orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->Text());
- size_t nl_flag = ((prev->IsNewline() ? 1 : 0) |
- (next->IsNewline() ? 2 : 0));
- LOG_FMT(LNEWLINE, "%s(%d): nl_flag is %zu\n",
- __func__, __LINE__, nl_flag);
-
- if (mode_local & TP_JOIN)
- {
- if (nl_flag & 1)
- {
- // remove newline if not preceded by a comment
- Chunk *prev2 = prev->GetPrev();
-
- if ( prev2->IsNotNullChunk()
- && !(prev2->IsComment()))
- {
- remove_next_newlines(prev2);
- }
- }
-
- if (nl_flag & 2)
- {
- // remove newline if not followed by a comment or by '{'
- Chunk *next2 = next->GetNext();
-
- if ( next2->IsNotNullChunk()
- && !next2->IsComment()
- && !next2->Is(CT_BRACE_OPEN))
- {
- remove_next_newlines(pc);
- }
- }
- continue;
- }
-
- if ( ( nl_flag == 0
- && !(mode_local & (TP_FORCE | TP_BREAK)))
- || ( nl_flag == 3
- && !(mode_local & TP_FORCE)))
- {
- // No newlines and not adding any or both and not forcing
- continue;
- }
-
- if ( ( (mode_local & TP_LEAD)
- && nl_flag == 1)
- || ( (mode_local & TP_TRAIL)
- && nl_flag == 2))
- {
- // Already a newline before (lead) or after (trail)
- continue;
- }
-
- // If there were no newlines, we need to add one
- if (nl_flag == 0)
- {
- if (mode_local & TP_LEAD)
- {
- newline_add_before(pc);
- }
- else
- {
- newline_add_after(pc);
- }
- continue;
- }
-
- // If there were both newlines, we need to remove one
- if (nl_flag == 3)
- {
- if (mode_local & TP_LEAD)
- {
- remove_next_newlines(pc);
- }
- else
- {
- remove_next_newlines(pc->GetPrevNcNnlNi()); // Issue #2279
- }
- continue;
- }
-
- // we need to move the newline
- if (mode_local & TP_LEAD)
- {
- Chunk *next2 = next->GetNext();
-
- if ( next2->Is(CT_PREPROC)
- || ( chunk_type == CT_ASSIGN
- && next2->Is(CT_BRACE_OPEN)))
- {
- continue;
- }
-
- if (next->GetNlCount() == 1)
- {
- if ( prev != nullptr
- && !prev->TestFlags(PCF_IN_PREPROC))
- {
- // move the CT_BOOL to after the newline
- pc->MoveAfter(next);
- }
- }
- }
- else
- {
- LOG_FMT(LNEWLINE, "%s(%d): prev orig line is %zu, orig col is %zu, Text() is '%s', new line count is %zu\n",
- __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text(), prev->GetNlCount());
-
- if (prev->GetNlCount() == 1)
- {
- // Back up to the next non-comment item
- prev = prev->GetPrevNc();
- LOG_FMT(LNEWLINE, "%s(%d): prev orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text());
-
- if ( prev->IsNotNullChunk()
- && !prev->IsNewline()
- && !prev->TestFlags(PCF_IN_PREPROC)
- && !prev->TestFlags(PCF_IN_OC_MSG))
- {
- pc->MoveAfter(prev);
- }
- }
- }
- }
- }
-} // newlines_chunk_pos
-
-
-void newlines_class_colon_pos(E_Token tok)
-{
- LOG_FUNC_ENTRY();
-
- token_pos_e tpc;
- token_pos_e pcc;
- iarf_e anc;
- iarf_e ncia;
-
- if (tok == CT_CLASS_COLON)
- {
- tpc = options::pos_class_colon();
- log_rule_B("pos_class_colon");
- anc = options::nl_class_colon();
- log_rule_B("nl_class_colon");
- ncia = options::nl_class_init_args();
- log_rule_B("nl_class_init_args");
- pcc = options::pos_class_comma();
- log_rule_B("pos_class_comma");
- }
- else // tok == CT_CONSTR_COLON
- {
- tpc = options::pos_constr_colon();
- log_rule_B("pos_constr_colon");
- anc = options::nl_constr_colon();
- log_rule_B("nl_constr_colon");
- ncia = options::nl_constr_init_args();
- log_rule_B("nl_constr_init_args");
- pcc = options::pos_constr_comma();
- log_rule_B("pos_constr_comma");
- }
- Chunk *ccolon = nullptr;
- size_t acv_span = options::align_constr_value_span();
-
- log_rule_B("align_constr_value_span");
- bool with_acv = (acv_span > 0) && language_is_set(LANG_CPP);
- AlignStack constructorValue; // ABC_Member(abc_value)
-
- if (with_acv)
- {
- int acv_thresh = options::align_constr_value_thresh();
- log_rule_B("align_constr_value_thresh");
- size_t acv_gap = options::align_constr_value_gap();
- log_rule_B("align_constr_value_gap");
- constructorValue.Start(acv_span, acv_thresh);
- constructorValue.m_gap = acv_gap;
- constructorValue.m_right_align = !options::align_on_tabstop();
- log_rule_B("align_on_tabstop");
- }
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- if ( ccolon == nullptr
- && pc->IsNot(tok))
- {
- continue;
- }
- Chunk *prev;
- Chunk *next;
-
- if (pc->Is(tok))
- {
- LOG_FMT(LBLANKD, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- ccolon = pc;
- prev = pc->GetPrevNc();
- next = pc->GetNextNc();
-
- if (pc->Is(CT_CONSTR_COLON))
- {
- LOG_FMT(LBLANKD, "%s(%d): pc orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- Chunk *paren_vor_value = pc->GetNextType(CT_FPAREN_OPEN, pc->GetLevel());
-
- if ( with_acv
- && paren_vor_value->IsNotNullChunk())
- {
- LOG_FMT(LBLANKD, "%s(%d): paren_vor_value orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, paren_vor_value->GetOrigLine(), paren_vor_value->GetOrigCol(),
- paren_vor_value->Text(), get_token_name(paren_vor_value->GetType()));
- constructorValue.NewLines(paren_vor_value->GetNlCount());
- constructorValue.Add(paren_vor_value);
- }
- }
-
- if ( !prev->IsNewline()
- && !next->IsNewline()
- && (anc & IARF_ADD)) // nl_class_colon, nl_constr_colon: 1
-
- {
- newline_add_after(pc);
- prev = pc->GetPrevNc();
- next = pc->GetNextNc();
- }
-
- if (anc == IARF_REMOVE) // nl_class_colon, nl_constr_colon: 2
- {
- if ( prev->IsNewline()
- && prev->SafeToDeleteNl())
- {
- Chunk::Delete(prev);
- MARK_CHANGE();
- prev = pc->GetPrevNc();
- }
-
- if ( next->IsNewline()
- && next->SafeToDeleteNl())
- {
- Chunk::Delete(next);
- MARK_CHANGE();
- next = pc->GetNextNc();
- }
- }
-
- if (tpc & TP_TRAIL) // pos_class_colon, pos_constr_colon: 4
- {
- if ( prev->IsNewline()
- && prev->GetNlCount() == 1
- && prev->SafeToDeleteNl())
- {
- pc->Swap(prev);
- }
- }
- else if (tpc & TP_LEAD) // pos_class_colon, pos_constr_colon: 3
- {
- if ( next->IsNewline()
- && next->GetNlCount() == 1
- && next->SafeToDeleteNl())
- {
- pc->Swap(next);
- }
- }
- }
- else
- {
- // (pc->GetType() != tok)
- if ( pc->Is(CT_BRACE_OPEN)
- || pc->Is(CT_SEMICOLON))
- {
- ccolon = nullptr;
-
- if (with_acv)
- {
- constructorValue.End();
- }
- continue;
- }
-
- if ( pc->Is(CT_COMMA)
- && pc->GetLevel() == ccolon->GetLevel())
- {
- LOG_FMT(LBLANKD, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- Chunk *paren_vor_value = pc->GetNextType(CT_FPAREN_OPEN, pc->GetLevel());
-
- if ( with_acv
- && paren_vor_value->IsNotNullChunk())
- {
- LOG_FMT(LBLANKD, "%s(%d): paren_vor_value orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, paren_vor_value->GetOrigLine(), paren_vor_value->GetOrigCol(),
- paren_vor_value->Text(), get_token_name(paren_vor_value->GetType()));
- constructorValue.NewLines(paren_vor_value->GetNlCount());
- constructorValue.Add(paren_vor_value);
- }
-
- if (ncia & IARF_ADD) // nl_class_init_args, nl_constr_init_args:
- {
- if (pcc & TP_TRAIL) // pos_class_comma, pos_constr_comma
- {
- if (ncia == IARF_FORCE) // nl_class_init_args, nl_constr_init_args: 5
- {
- Chunk *after = pc->GetNext(); // Issue #2759
-
- if (after->IsNot(CT_COMMENT_CPP))
- {
- newline_force_after(pc);
- }
- }
- else
- {
- // (ncia == IARF_ADD) // nl_class_init_args, nl_constr_init_args: 8
- newline_add_after(pc);
- }
- prev = pc->GetPrevNc();
-
- if ( prev->IsNewline()
- && prev->SafeToDeleteNl())
- {
- Chunk::Delete(prev);
- MARK_CHANGE();
- }
- }
- else if (pcc & TP_LEAD) // pos_class_comma, pos_constr_comma
- {
- if (ncia == IARF_FORCE) // nl_class_init_args, nl_constr_init_args: 7
- {
- newline_force_before(pc);
- }
- else
- {
- // (ncia == IARF_ADD) // nl_class_init_args, nl_constr_init_args: 9
- newline_add_before(pc);
- }
- next = pc->GetNextNc();
-
- if ( next->IsNewline()
- && next->SafeToDeleteNl())
- {
- Chunk::Delete(next);
- MARK_CHANGE();
- }
- }
- }
- else if (ncia == IARF_REMOVE) // nl_class_init_args, nl_constr_init_args: 6
- {
- next = pc->GetNext();
-
- if ( next->IsNewline()
- && next->SafeToDeleteNl())
- {
- // comma is after
- Chunk::Delete(next);
- MARK_CHANGE();
- }
- else
- {
- prev = pc->GetPrev();
-
- if ( prev->IsNewline()
- && prev->SafeToDeleteNl())
- {
- // comma is before
- Chunk::Delete(prev);
- MARK_CHANGE();
- }
- }
- }
- }
- }
- }
-} // newlines_class_colon_pos
-
-
-static void blank_line_max(Chunk *pc, Option<unsigned> &opt)
-{
- LOG_FUNC_ENTRY();
-
- if (pc == nullptr)
- {
- return;
- }
- const auto optval = opt();
-
- if ( (optval > 0)
- && (pc->GetNlCount() > optval))
- {
- LOG_FMT(LBLANKD, "%s(%d): do_blank_lines: %s max line %zu\n",
- __func__, __LINE__, opt.name(), pc->GetOrigLine());
- pc->SetNlCount(optval);
- MARK_CHANGE();
- }
-} // blank_line_max
-
-
-iarf_e newline_template_option(Chunk *pc, iarf_e special, iarf_e base, iarf_e fallback)
-{
- Chunk *const prev = pc->GetPrevNcNnl();
-
- if ( prev->Is(CT_ANGLE_OPEN)
- && special != IARF_IGNORE)
- {
- return(special);
- }
- else if (base != IARF_IGNORE)
- {
- return(base);
- }
- else
- {
- return(fallback);
- }
-} // newline_template_option
-
-
-bool is_func_proto_group(Chunk *pc, E_Token one_liner_type)
-{
- if ( pc != nullptr
- && options::nl_class_leave_one_liner_groups()
- && ( pc->Is(one_liner_type)
- || pc->GetParentType() == one_liner_type)
- && pc->TestFlags(PCF_IN_CLASS))
- {
- log_rule_B("nl_class_leave_one_liner_groups");
-
- if (pc->Is(CT_BRACE_CLOSE))
- {
- return(pc->TestFlags(PCF_ONE_LINER));
- }
- else
- {
- // Find opening brace
- pc = pc->GetNextType(CT_BRACE_OPEN, pc->GetLevel());
- return( pc->IsNotNullChunk()
- && pc->TestFlags(PCF_ONE_LINER));
- }
- }
- return(false);
-} // is_func_proto_group
-
-
-void do_blank_lines()
-{
- LOG_FUNC_ENTRY();
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if (pc->Is(CT_NEWLINE))
- {
- LOG_FMT(LBLANKD, "%s(%d): orig line is %zu, orig col is %zu, <Newline>, nl is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetNlCount());
- }
- else
- {
- char copy[1000];
- LOG_FMT(LBLANKD, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy), get_token_name(pc->GetType()));
- }
- LOG_FMT(LBLANK, "%s(%d): new line count is %zu\n",
- __func__, __LINE__, pc->GetNlCount());
-
- if (pc->IsNot(CT_NEWLINE))
- {
- continue;
- }
- Chunk *prev = pc->GetPrevNc();
-
- if (prev->IsNotNullChunk())
- {
- LOG_FMT(LBLANK, "%s(%d): prev orig line is %zu, prev->Text() '%s', prev->GetType() is %s\n",
- __func__, __LINE__, pc->GetOrigLine(),
- prev->Text(), get_token_name(prev->GetType()));
-
- if (prev->Is(CT_IGNORED))
- {
- continue;
- }
- }
- Chunk *next = pc->GetNext();
- Chunk *pcmt = pc->GetPrev();
-
- bool line_added = false;
-
- /*
- * If this is the first or the last token, pretend that there is an extra
- * line. It will be removed at the end.
- */
- if ( pc == Chunk::GetHead()
- || next->IsNullChunk())
- {
- line_added = true;
- pc->SetNlCount(pc->GetNlCount() + 1);
- LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, text is '%s', new line count is now %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), pc->GetNlCount());
- }
-
- // Limit consecutive newlines
- if ( (options::nl_max() > 0)
- && (pc->GetNlCount() > options::nl_max()))
- {
- log_rule_B("nl_max");
- blank_line_max(pc, options::nl_max);
- }
-
- if (!can_increase_nl(pc))
- {
- LOG_FMT(LBLANKD, "%s(%d): force to 1 orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
-
- if (pc->GetNlCount() != 1)
- {
- pc->SetNlCount(1);
- MARK_CHANGE();
- }
- continue;
- }
-
- // Control blanks before multi-line comments
- if ( (options::nl_before_block_comment() > pc->GetNlCount())
- && next->Is(CT_COMMENT_MULTI))
- {
- log_rule_B("nl_before_block_comment");
-
- // Don't add blanks after an open brace or a case statement
- if ( ( prev->IsNullChunk()
- || ( prev->IsNot(CT_BRACE_OPEN)
- && prev->IsNot(CT_VBRACE_OPEN)
- && prev->IsNot(CT_CASE_COLON)))
- && pcmt->IsNot(CT_COMMENT_MULTI)) // Issue #2383
- {
- blank_line_set(pc, options::nl_before_block_comment);
- log_rule_B("nl_before_block_comment");
- }
- }
-
- // Control blanks before single line C comments
- if ( (options::nl_before_c_comment() > pc->GetNlCount())
- && next->Is(CT_COMMENT))
- {
- log_rule_B("nl_before_c_comment");
-
- // Don't add blanks after an open brace, a case stamement, or a comment
- if ( ( prev->IsNullChunk()
- || ( prev->IsNot(CT_BRACE_OPEN)
- && prev->IsNot(CT_VBRACE_OPEN)
- && prev->IsNot(CT_CASE_COLON)))
- && pcmt->IsNot(CT_COMMENT)) // Issue #2383
- {
- blank_line_set(pc, options::nl_before_c_comment);
- log_rule_B("nl_before_c_comment");
- }
- }
-
- // Control blanks before CPP comments
- if ( (options::nl_before_cpp_comment() > pc->GetNlCount())
- && next->Is(CT_COMMENT_CPP))
- {
- log_rule_B("nl_before_cpp_comment");
-
- // Don't add blanks after an open brace or a case statement
- if ( ( prev->IsNullChunk()
- || ( prev->IsNot(CT_BRACE_OPEN)
- && prev->IsNot(CT_VBRACE_OPEN)
- && prev->IsNot(CT_CASE_COLON)))
- && pcmt->IsNot(CT_COMMENT_CPP)) // Issue #2383
- {
- blank_line_set(pc, options::nl_before_cpp_comment);
- log_rule_B("nl_before_cpp_comment");
- }
- }
-
- // Control blanks before a class/struct
- if ( ( prev->Is(CT_SEMICOLON)
- || prev->Is(CT_BRACE_CLOSE))
- && ( prev->GetParentType() == CT_CLASS
- || prev->GetParentType() == CT_STRUCT))
- {
- E_Token parent_type = prev->GetParentType();
- Chunk *start = prev->GetPrevType(parent_type, prev->GetLevel());
- Chunk *tmp = start;
-
- // Is this a class/struct template?
- if (tmp->GetParentType() == CT_TEMPLATE)
- {
- tmp = tmp->GetPrevType(CT_TEMPLATE, prev->GetLevel());
- tmp = tmp->GetPrevNc();
- }
- else
- {
- tmp = tmp->GetPrevNc();
-
- while ( tmp->Is(CT_NEWLINE)
- && tmp->GetPrev()->IsComment())
- {
- tmp = tmp->GetPrev()->GetPrevNc();
- }
-
- if (tmp->Is(CT_FRIEND))
- {
- // Account for a friend declaration
- tmp = tmp->GetPrevNc();
- }
- }
-
- while ( tmp->Is(CT_NEWLINE)
- && tmp->GetPrev()->IsComment())
- {
- tmp = tmp->GetPrev()->GetPrevNc();
- }
-
- if ( tmp->IsNotNullChunk()
- && !start->TestFlags(PCF_INCOMPLETE))
- {
- if (parent_type == CT_CLASS && options::nl_before_class() > tmp->GetNlCount())
- {
- log_rule_B("nl_before_class");
- blank_line_set(tmp, options::nl_before_class);
- }
- else if (parent_type == CT_STRUCT && options::nl_before_struct() > tmp->GetNlCount())
- {
- log_rule_B("nl_before_struct");
- blank_line_set(tmp, options::nl_before_struct);
- }
- }
- }
-
- if ( prev->Is(CT_BRACE_CLOSE)
- && prev->GetParentType() == CT_NAMESPACE)
- {
- // Control blanks before a namespace
- Chunk *tmp = prev->GetPrevType(CT_NAMESPACE, prev->GetLevel());
- tmp = tmp->GetPrevNc();
-
- while ( tmp->Is(CT_NEWLINE)
- && tmp->GetPrev()->IsComment())
- {
- tmp = tmp->GetPrev()->GetPrevNc();
- }
-
- if ( tmp->IsNotNullChunk()
- && options::nl_before_namespace() > tmp->GetNlCount())
- {
- log_rule_B("nl_before_namespace");
- blank_line_set(tmp, options::nl_before_namespace);
- }
-
- // Add blanks after namespace
- if (options::nl_after_namespace() > pc->GetNlCount())
- {
- log_rule_B("nl_after_namespace");
- blank_line_set(pc, options::nl_after_namespace);
- }
- }
-
- // Control blanks inside empty function body
- if ( prev->Is(CT_BRACE_OPEN)
- && next->Is(CT_BRACE_CLOSE)
- && ( prev->GetParentType() == CT_FUNC_DEF
- || prev->GetParentType() == CT_FUNC_CLASS_DEF)
- && options::nl_inside_empty_func() > pc->GetNlCount()
- && prev->TestFlags(PCF_EMPTY_BODY))
- {
- blank_line_set(pc, options::nl_inside_empty_func);
- log_rule_B("nl_inside_empty_func");
- }
-
- // Control blanks after an access spec
- if ( (options::nl_after_access_spec() > 0)
- && (options::nl_after_access_spec() != pc->GetNlCount())
- && prev->Is(CT_ACCESS_COLON))
- {
- log_rule_B("nl_after_access_spec");
-
- // Don't add blanks before a closing brace
- if ( next->IsNullChunk()
- || !next->IsBraceClose())
- {
- log_rule_B("nl_after_access_spec");
- blank_line_set(pc, options::nl_after_access_spec);
- }
- }
-
- // Add blanks after function bodies
- if ( prev->Is(CT_BRACE_CLOSE)
- && ( prev->GetParentType() == CT_FUNC_DEF
- || prev->GetParentType() == CT_FUNC_CLASS_DEF
- || prev->GetParentType() == CT_OC_MSG_DECL
- || prev->GetParentType() == CT_ASSIGN))
- {
- if (prev->TestFlags(PCF_ONE_LINER))
- {
- if (options::nl_after_func_body_one_liner() > pc->GetNlCount())
- {
- log_rule_B("nl_after_func_body_one_liner");
- blank_line_set(pc, options::nl_after_func_body_one_liner);
- }
- }
- else
- {
- if ( prev->TestFlags(PCF_IN_CLASS)
- && (options::nl_after_func_body_class() > 0))
- {
- log_rule_B("nl_after_func_body_class");
-
- if (options::nl_after_func_body_class() != pc->GetNlCount())
- {
- log_rule_B("nl_after_func_body_class");
- blank_line_set(pc, options::nl_after_func_body_class);
- }
- }
- else if (options::nl_after_func_body() > 0)
- {
- log_rule_B("nl_after_func_body");
-
- // Issue #1734
- if (!(pc->GetPrev()->TestFlags(PCF_IN_TRY_BLOCK)))
- {
- if (options::nl_after_func_body() != pc->GetNlCount())
- {
- log_rule_B("nl_after_func_body");
- blank_line_set(pc, options::nl_after_func_body);
- }
- }
- }
- }
- }
-
- // Add blanks after function prototypes
- if ( ( prev->Is(CT_SEMICOLON)
- && prev->GetParentType() == CT_FUNC_PROTO)
- || is_func_proto_group(prev, CT_FUNC_DEF))
- {
- if (options::nl_after_func_proto() > pc->GetNlCount())
- {
- log_rule_B("nl_after_func_proto");
- pc->SetNlCount(options::nl_after_func_proto());
- MARK_CHANGE();
- }
-
- if ( (options::nl_after_func_proto_group() > pc->GetNlCount())
- && next->IsNotNullChunk()
- && next->GetParentType() != CT_FUNC_PROTO
- && !is_func_proto_group(next, CT_FUNC_DEF))
- {
- log_rule_B("nl_after_func_proto_group");
- blank_line_set(pc, options::nl_after_func_proto_group);
- }
- }
-
- // Issue #411: Add blanks after function class prototypes
- if ( ( prev->Is(CT_SEMICOLON)
- && prev->GetParentType() == CT_FUNC_CLASS_PROTO)
- || is_func_proto_group(prev, CT_FUNC_CLASS_DEF))
- {
- if (options::nl_after_func_class_proto() > pc->GetNlCount())
- {
- log_rule_B("nl_after_func_class_proto");
- pc->SetNlCount(options::nl_after_func_class_proto());
- MARK_CHANGE();
- }
-
- if ( (options::nl_after_func_class_proto_group() > pc->GetNlCount())
- && next->IsNot(CT_FUNC_CLASS_PROTO)
- && next->GetParentType() != CT_FUNC_CLASS_PROTO
- && !is_func_proto_group(next, CT_FUNC_CLASS_DEF))
- {
- log_rule_B("nl_after_func_class_proto_group");
- blank_line_set(pc, options::nl_after_func_class_proto_group);
- }
- }
-
- // Add blanks after struct/enum/union/class
- if ( ( prev->Is(CT_SEMICOLON)
- || prev->Is(CT_BRACE_CLOSE))
- && ( prev->GetParentType() == CT_STRUCT
- || prev->GetParentType() == CT_ENUM
- || prev->GetParentType() == CT_UNION
- || prev->GetParentType() == CT_CLASS))
- {
- auto &opt = (prev->GetParentType() == CT_CLASS
- ? options::nl_after_class
- : options::nl_after_struct);
- log_rule_B("nl_after_class");
- log_rule_B("nl_after_struct");
-
- if (opt() > pc->GetNlCount())
- {
- // Issue #1702
- // look back if we have a variable
- Chunk *tmp = pc;
- bool is_var_def = false;
- bool is_fwd_decl = false;
-
- while ((tmp = tmp->GetPrev())->IsNotNullChunk())
- {
- if (tmp->GetLevel() > pc->GetLevel())
- {
- continue;
- }
- LOG_FMT(LBLANK, "%s(%d): %zu:%zu token is '%s'\n",
- __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
-
- if (tmp->TestFlags(PCF_VAR_DEF))
- {
- is_var_def = true;
- break;
- }
-
- if (tmp->Is(prev->GetParentType()))
- {
- is_fwd_decl = tmp->TestFlags(PCF_INCOMPLETE);
- break;
- }
- }
- LOG_FMT(LBLANK, "%s(%d): var_def = %s, fwd_decl = %s\n",
- __func__, __LINE__,
- is_var_def ? "yes" : "no",
- is_fwd_decl ? "yes" : "no");
-
- if ( !is_var_def
- && !is_fwd_decl)
- {
- blank_line_set(pc, opt);
- }
- }
- }
-
- // Change blanks between a function comment and body
- if ( (options::nl_comment_func_def() != 0)
- && pcmt->Is(CT_COMMENT_MULTI)
- && pcmt->GetParentType() == CT_COMMENT_WHOLE
- && next->IsNotNullChunk()
- && ( next->GetParentType() == CT_FUNC_DEF
- || next->GetParentType() == CT_FUNC_CLASS_DEF))
- {
- log_rule_B("nl_comment_func_def");
-
- if (options::nl_comment_func_def() != pc->GetNlCount())
- {
- log_rule_B("nl_comment_func_def");
- blank_line_set(pc, options::nl_comment_func_def);
- }
- }
-
- // Change blanks after a try-catch-finally block
- if ( (options::nl_after_try_catch_finally() != 0)
- && (options::nl_after_try_catch_finally() != pc->GetNlCount())
- && prev->IsNotNullChunk()
- && next->IsNotNullChunk())
- {
- log_rule_B("nl_after_try_catch_finally");
-
- if ( prev->Is(CT_BRACE_CLOSE)
- && ( prev->GetParentType() == CT_CATCH
- || prev->GetParentType() == CT_FINALLY))
- {
- if ( next->IsNot(CT_BRACE_CLOSE)
- && next->IsNot(CT_CATCH)
- && next->IsNot(CT_FINALLY))
- {
- blank_line_set(pc, options::nl_after_try_catch_finally);
- log_rule_B("nl_after_try_catch_finally");
- }
- }
- }
-
- // Change blanks after a try-catch-finally block
- if ( (options::nl_between_get_set() != 0)
- && (options::nl_between_get_set() != pc->GetNlCount())
- && prev->IsNotNullChunk()
- && next->IsNotNullChunk())
- {
- log_rule_B("nl_between_get_set");
-
- if ( prev->GetParentType() == CT_GETSET
- && next->IsNot(CT_BRACE_CLOSE)
- && ( prev->Is(CT_BRACE_CLOSE)
- || prev->Is(CT_SEMICOLON)))
- {
- blank_line_set(pc, options::nl_between_get_set);
- log_rule_B("nl_between_get_set");
- }
- }
-
- // Change blanks after a try-catch-finally block
- if ( (options::nl_around_cs_property() != 0)
- && (options::nl_around_cs_property() != pc->GetNlCount())
- && prev->IsNotNullChunk()
- && next->IsNotNullChunk())
- {
- log_rule_B("nl_around_cs_property");
-
- if ( prev->Is(CT_BRACE_CLOSE)
- && prev->GetParentType() == CT_CS_PROPERTY
- && next->IsNot(CT_BRACE_CLOSE))
- {
- blank_line_set(pc, options::nl_around_cs_property);
- log_rule_B("nl_around_cs_property");
- }
- else if ( next->GetParentType() == CT_CS_PROPERTY
- && next->TestFlags(PCF_STMT_START))
- {
- blank_line_set(pc, options::nl_around_cs_property);
- log_rule_B("nl_around_cs_property");
- }
- }
-
- // Control blanks before an access spec
- if ( (options::nl_before_access_spec() > 0)
- && (options::nl_before_access_spec() != pc->GetNlCount())
- && next->Is(CT_ACCESS))
- {
- log_rule_B("nl_before_access_spec");
-
- // Don't add blanks after an open brace
- if ( prev->IsNullChunk()
- || ( prev->IsNot(CT_BRACE_OPEN)
- && prev->IsNot(CT_VBRACE_OPEN)))
- {
- log_rule_B("nl_before_access_spec");
- blank_line_set(pc, options::nl_before_access_spec);
- }
- }
-
- // Change blanks inside namespace braces
- if ( (options::nl_inside_namespace() != 0)
- && (options::nl_inside_namespace() != pc->GetNlCount())
- && ( ( prev->Is(CT_BRACE_OPEN)
- && prev->GetParentType() == CT_NAMESPACE)
- || ( next->Is(CT_BRACE_CLOSE)
- && next->GetParentType() == CT_NAMESPACE)))
- {
- log_rule_B("nl_inside_namespace");
- blank_line_set(pc, options::nl_inside_namespace);
- }
-
- // Control blanks before a whole-file #ifdef
- if ( options::nl_before_whole_file_ifdef() != 0
- && options::nl_before_whole_file_ifdef() != pc->GetNlCount()
- && next->Is(CT_PREPROC)
- && next->GetParentType() == CT_PP_IF
- && ifdef_over_whole_file()
- && next->TestFlags(PCF_WF_IF))
- {
- log_rule_B("nl_before_whole_file_ifdef");
- blank_line_set(pc, options::nl_before_whole_file_ifdef);
- }
-
- // Control blanks after a whole-file #ifdef
- if ( options::nl_after_whole_file_ifdef() != 0
- && options::nl_after_whole_file_ifdef() != pc->GetNlCount())
- {
- Chunk *pp_start = prev->GetPpStart();
-
- if ( pp_start->IsNotNullChunk()
- && pp_start->GetParentType() == CT_PP_IF
- && ifdef_over_whole_file()
- && pp_start->TestFlags(PCF_WF_IF))
- {
- log_rule_B("nl_after_whole_file_ifdef");
- blank_line_set(pc, options::nl_after_whole_file_ifdef);
- }
- }
-
- // Control blanks before a whole-file #endif
- if ( options::nl_before_whole_file_endif() != 0
- && options::nl_before_whole_file_endif() != pc->GetNlCount()
- && next->Is(CT_PREPROC)
- && next->GetParentType() == CT_PP_ENDIF
- && ifdef_over_whole_file()
- && next->TestFlags(PCF_WF_ENDIF))
- {
- log_rule_B("nl_before_whole_file_endif");
- blank_line_set(pc, options::nl_before_whole_file_endif);
- }
-
- // Control blanks after a whole-file #endif
- if ( options::nl_after_whole_file_endif() != 0
- && options::nl_after_whole_file_endif() != pc->GetNlCount())
- {
- Chunk *pp_start = prev->GetPpStart();
-
- if ( pp_start->IsNotNullChunk()
- && pp_start->GetParentType() == CT_PP_ENDIF
- && ifdef_over_whole_file()
- && pp_start->TestFlags(PCF_WF_ENDIF))
- {
- log_rule_B("nl_after_whole_file_endif");
- blank_line_set(pc, options::nl_after_whole_file_endif);
- }
- }
-
- if ( line_added
- && pc->GetNlCount() > 1)
- {
- pc->SetNlCount(pc->GetNlCount() - 1);
- LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, text is '%s', new line count is now %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), pc->GetNlCount());
- }
- LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, text is '%s', end new line count is now %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), pc->GetNlCount());
- }
-} // do_blank_lines
-
-
-void newlines_cleanup_dup()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc = Chunk::GetHead();
- Chunk *next = pc;
-
- while (pc->IsNotNullChunk())
- {
- next = next->GetNext();
-
- if ( pc->Is(CT_NEWLINE)
- && next->Is(CT_NEWLINE))
- {
- next->SetNlCount(max(pc->GetNlCount(), next->GetNlCount()));
- Chunk::Delete(pc);
- MARK_CHANGE();
- }
- pc = next;
- }
-} // newlines_cleanup_dup
-
-
-static void newlines_enum_entries(Chunk *open_brace, iarf_e av)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc = Chunk::NullChunkPtr;
-
- if (open_brace != nullptr)
- {
- pc = open_brace;
- }
-
- while ( (pc = pc->GetNextNc())->IsNotNullChunk()
- && pc->GetLevel() > open_brace->GetLevel())
- {
- if ( (pc->GetLevel() != (open_brace->GetLevel() + 1))
- || pc->IsNot(CT_COMMA)
- || ( pc->Is(CT_COMMA)
- && pc->GetNext()->IsNotNullChunk()
- && ( pc->GetNext()->GetType() == CT_COMMENT_CPP
- || pc->GetNext()->GetType() == CT_COMMENT)))
- {
- continue;
- }
- newline_iarf(pc, av);
- }
- newline_iarf(open_brace, av);
-} // newlines_enum_entries
-
-
-static void newlines_double_space_struct_enum_union(Chunk *open_brace)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc = Chunk::NullChunkPtr;
-
- if (open_brace != nullptr)
- {
- pc = open_brace;
- }
-
- while ( (pc = pc->GetNextNc())->IsNotNullChunk()
- && pc->GetLevel() > open_brace->GetLevel())
- {
- if ( pc->GetLevel() != (open_brace->GetLevel() + 1)
- || pc->IsNot(CT_NEWLINE))
- {
- continue;
- }
- /*
- * If the newline is NOT after a comment or a brace open and
- * it is before a comment, then make sure that the newline is
- * at least doubled
- */
- Chunk *prev = pc->GetPrev();
-
- if ( !prev->IsComment()
- && prev->IsNot(CT_BRACE_OPEN)
- && pc->GetNext()->IsComment())
- {
- if (pc->GetNlCount() < 2)
- {
- double_newline(pc);
- }
- }
- }
-} // newlines_double_space_struct_enum_union
-
-
-void annotations_newlines()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *next;
- Chunk *prev;
- Chunk *ae; // last token of the annotation
- Chunk *pc = Chunk::GetHead();
-
- while ( (pc = pc->GetNextType(CT_ANNOTATION))->IsNotNullChunk()
- && (next = pc->GetNextNnl())->IsNotNullChunk())
- {
- // find the end of this annotation
- if (next->IsParenOpen())
- {
- // TODO: control newline between annotation and '(' ?
- ae = next->GetClosingParen();
- }
- else
- {
- ae = pc;
- }
-
- if (ae->IsNullChunk())
- {
- break;
- }
- LOG_FMT(LANNOT, "%s(%d): orig line is %zu, orig col is %zu, annotation is '%s', end @ orig line %zu, orig col %zu, is '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(),
- ae->GetOrigLine(), ae->GetOrigCol(), ae->Text());
-
- prev = ae->GetPrev(); // Issue #1845
- LOG_FMT(LANNOT, "%s(%d): prev orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text());
- next = ae->GetNextNnl();
-
- if (next->Is(CT_ANNOTATION))
- {
- LOG_FMT(LANNOT, "%s(%d): -- nl_between_annotation\n",
- __func__, __LINE__);
- newline_iarf(ae, options::nl_between_annotation());
- log_rule_B("nl_between_annotation");
- }
-
- if (next->Is(CT_NEWLINE))
- {
- if (next->Is(CT_ANNOTATION))
- {
- LOG_FMT(LANNOT, "%s(%d): -- nl_after_annotation\n",
- __func__, __LINE__);
- newline_iarf(ae, options::nl_after_annotation());
- log_rule_B("nl_after_annotation");
- }
- }
- }
-} // annotations_newlines
-
-
-bool newlines_between(Chunk *pc_start, Chunk *pc_end, size_t &newlines, E_Scope scope)
-{
- if ( pc_start == nullptr
- || pc_end == nullptr)
- {
- return(false);
- }
- newlines = 0;
-
- Chunk *it = pc_start;
-
- for ( ; it->IsNotNullChunk() && it != pc_end; it = it->GetNext(scope))
- {
- newlines += it->GetNlCount();
- }
-
- // newline count is valid if search stopped on expected chunk
- return(it == pc_end);
-} // newlines_between
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/newlines.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/newlines.h
deleted file mode 100644
index f75d6ad5..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/newlines.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/**
- * @file newlines.h
- * prototypes for newlines.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef NEWLINES_H_INCLUDED
-#define NEWLINES_H_INCLUDED
-
-#include "chunk.h"
-
-/**
- * Double the newline, if allowed.
- */
-void double_newline(Chunk *nl);
-
-/**
- * Remove all extra newlines.
- * Modify line breaks as needed.
- */
-void newlines_remove_newlines();
-
-
-/**
- * Remove all newlines that fail the checks performed by the can_increase_nl() function
- */
-void newlines_remove_disallowed();
-
-
-/** Step through all chunks, altering newlines inside parens of if/for/while/do as needed.
- * Handles the style options: nl_multi_line_sparen_open, nl_multi_line_sparen_close, nl_before_if_closing_paren
- */
-void newlines_sparens();
-
-//! Step through all chunks.
-void newlines_cleanup_braces(bool first);
-
-
-void newlines_cleanup_angles();
-
-
-//! Handle insertion/removal of blank lines before if/for/while/do and functions
-void newlines_insert_blank_lines();
-
-
-/**
- * Handle removal of extra blank lines in functions
- * x <= 0: do nothing, x > 0: allow max x-1 blank lines
- */
-void newlines_functions_remove_extra_blank_lines();
-
-
-void newlines_squeeze_ifdef();
-
-/**
- * In case of consecutive closing parens, which follow a newline,
- * the closing paren are altered to different lines, as per the respective opening parens.
- * In the given example, first 2 opening paren are in same line, hence the respective closing paren are put in the same line.
- * input:
- * func1(func2(
- * func3(
- * func4(
- * )
- * )
- * )
- * );
- * output:
- * func1(func2(
- * func3(
- * func4(
- * )
- * )
- * ));
- */
-void newlines_squeeze_paren_close();
-
-
-//! removes unnecessary newlines at start and end of a file
-void newlines_eat_start_end();
-
-
-/**
- * Searches for a chunk of type chunk_type and moves them, if needed.
- * Will not move tokens that are on their own line or have other than
- * exactly 1 newline before (UO_pos_comma == TRAIL) or after (UO_pos_comma == LEAD).
- * We can't remove a newline if it is right before a preprocessor.
- */
-void newlines_chunk_pos(E_Token chunk_type, uncrustify::token_pos_e mode);
-
-
-/**
- * Searches for CT_CLASS_COLON and moves them, if needed.
- * Also breaks up the args
- */
-void newlines_class_colon_pos(E_Token tok);
-
-
-void newlines_cleanup_dup();
-
-
-void annotations_newlines();
-
-
-void newline_after_multiline_comment();
-
-
-//! Handle insertion of blank lines after label colons
-void newline_after_label_colon();
-
-
-/**
- * Scans for newline tokens and changes the nl_count.
- * A newline token has a minimum nl_count of 1.
- * Note that a blank line is actually 2 newlines, unless the newline is the
- * first chunk.
- * So, most comparisons have +1 below.
- */
-void do_blank_lines();
-
-
-/**
- * Clears the PCF_ONE_LINER flag on the current line.
- * Done right before inserting a newline.
- */
-void undo_one_liner(Chunk *pc);
-
-
-/**
- * Does a simple Ignore, Add, Remove, or Force after the given chunk
- *
- * @param pc The chunk
- * @param av The IARF value
- */
-void newline_iarf(Chunk *pc, uncrustify::iarf_e av);
-
-
-/**
- * Add a newline before the chunk if there isn't already a newline present.
- * Virtual braces are skipped, as they do not contribute to the output.
- */
-Chunk *newline_add_before(Chunk *pc);
-
-
-/**
- * Add a newline after the chunk if there isn't already a newline present.
- * Virtual braces are skipped, as they do not contribute to the output.
- */
-Chunk *newline_force_before(Chunk *pc);
-
-
-Chunk *newline_add_after(Chunk *pc);
-
-
-Chunk *newline_force_after(Chunk *pc);
-
-
-/**
- * Removes any CT_NEWLINE or CT_NL_CONT between start and end.
- * Start must be before end on the chunk list.
- * If the 'PCF_IN_PREPROC' status differs between two tags, we can't remove
- * the newline.
- *
- * @param start The starting chunk (if it is a newline, it will be removed!)
- * @param end The ending chunk (will not be removed, even if it is a newline)
- *
- * @return true/false - removed something
- */
-void newline_del_between(Chunk *start, Chunk *end);
-
-
-/**
- * Add a newline between two tokens.
- * If there is already a newline between then, nothing is done.
- * Otherwise a newline is inserted.
- *
- * If end is CT_BRACE_OPEN and a comment and newline follow, then
- * the brace open is moved instead of inserting a newline.
- *
- * In this situation:
- * if (...) { //comment
- *
- * you get:
- * if (...) //comment
- * {
- */
-Chunk *newline_add_between(Chunk *start, Chunk *end);
-
-
-/**
- * Counts newlines between two chunk elements
- *
- * @param pc_start chunk from which the counting of newlines will start
- * @param pc_end chunk at which the counting of newlines will end
- * @param newlines reference in which the amount of newlines will be written to
- * (will be initialized with 0)
- * @param scope specifies region chunks should/should not be considered.
- *
- * @return false if pc_start or pc_end are nullptr or if pc_end is not reached
- * @return true if above cases are not met
- */
-bool newlines_between(Chunk *pc_start, Chunk *pc_end, size_t &newlines, E_Scope scope = E_Scope::ALL);
-
-
-#endif /* NEWLINES_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/option.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/option.cpp
deleted file mode 100644
index ea29d065..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/option.cpp
+++ /dev/null
@@ -1,1324 +0,0 @@
-/**
- * @file option.cpp
- * Parses the options from the config file.
- *
- * @author Ben Gardner
- * @author Guy Maurel October 2015, 2021
- * @author Matthew Woehlke since version 0.67
- * @license GPL v2+
- */
-
-#include "option.h"
-
-#include "keywords.h"
-#include "uncrustify.h"
-#include "uncrustify_version.h"
-
-#include <fstream>
-#include <unordered_map>
-
-#include <cctype> // to get std::tolower
-#include <cstdarg> // to get va_start, va_end
-
-
-namespace uncrustify
-{
-
-namespace
-{
-
-static const char *DOC_TEXT_END = u8R"___(
-# Meaning of the settings:
-# Ignore - do not do any changes
-# Add - makes sure there is 1 or more space/brace/newline/etc
-# Force - makes sure there is exactly 1 space/brace/newline/etc,
-# behaves like Add in some contexts
-# Remove - removes space/brace/newline/etc
-#
-#
-# - Token(s) can be treated as specific type(s) with the 'set' option:
-# `set tokenType tokenString [tokenString...]`
-#
-# Example:
-# `set BOOL __AND__ __OR__`
-#
-# tokenTypes are defined in src/token_enum.h, use them without the
-# 'CT_' prefix: 'CT_BOOL' => 'BOOL'
-#
-#
-# - Token(s) can be treated as type(s) with the 'type' option.
-# `type tokenString [tokenString...]`
-#
-# Example:
-# `type int c_uint_8 Rectangle`
-#
-# This can also be achieved with `set TYPE int c_uint_8 Rectangle`
-#
-#
-# To embed whitespace in tokenStrings use the '\' escape character, or quote
-# the tokenStrings. These quotes are supported: "'`
-#
-#
-# - Support for the auto detection of languages through the file ending can be
-# added using the 'file_ext' command.
-# `file_ext langType langString [langString..]`
-#
-# Example:
-# `file_ext CPP .ch .cxx .cpp.in`
-#
-# langTypes are defined in uncrusify_types.h in the lang_flag_e enum, use
-# them without the 'LANG_' prefix: 'LANG_CPP' => 'CPP'
-#
-#
-# - Custom macro-based indentation can be set up using 'macro-open',
-# 'macro-else' and 'macro-close'.
-# `(macro-open | macro-else | macro-close) tokenString`
-#
-# Example:
-# `macro-open BEGIN_TEMPLATE_MESSAGE_MAP`
-# `macro-open BEGIN_MESSAGE_MAP`
-# `macro-close END_MESSAGE_MAP`
-#
-#
-)___";
-
-
-std::vector<OptionGroup> option_groups;
-std::unordered_map<std::string, GenericOption *> option_map;
-
-#define LOG_CONFIG(...) \
- log_config(); LOG_FMT(LNOTE, __VA_ARGS__);
-
-
-//-----------------------------------------------------------------------------
-constexpr int option_level(int major, int minor, int patch = 0)
-{
- return((major << 20) | (minor << 10) | (patch << 0));
-}
-
-
-//-----------------------------------------------------------------------------
-void log_config()
-{
- // Print the name of the configuration file only once
- static bool config_name_logged = false;
-
- if (!config_name_logged)
- {
- LOG_FMT(LNOTE, "log_config: the configuration file is: %s\n",
- cpd.filename.c_str());
- config_name_logged = true;
- }
-}
-
-
-//-----------------------------------------------------------------------------
-// This identity function exists so that all Option<T>::str can simply call
-// to_string(m_val); this function will be used by Option<string>
-std::string to_string(const std::string &in)
-{
- return(in);
-}
-
-using std::to_string;
-
-
-//-----------------------------------------------------------------------------
-std::string to_lower(const char *in, std::string::size_type size = 0)
-{
- std::string out;
-
- if (size > 0)
- {
- out.reserve(size);
- }
-
- while (*in)
- {
- out += static_cast<char>(std::tolower(*in));
- ++in;
- }
- return(out);
-}
-
-
-//-----------------------------------------------------------------------------
-std::string to_lower(const std::string &in)
-{
- return(to_lower(in.data(), in.size()));
-}
-
-
-//-----------------------------------------------------------------------------
-bool is_arg_sep(int ch)
-{
- return( isspace(ch)
- || ch == ','
- || ch == '=');
-}
-
-
-//-----------------------------------------------------------------------------
-bool is_varg_sep(int ch)
-{
- return(ch == '.');
-}
-
-
-//-----------------------------------------------------------------------------
-std::vector<std::string> split_args(std::string in, const char *filename,
- bool (*is_sep)(int))
-{
- std::vector<std::string> out;
- std::string::size_type n = 0;
- std::string::size_type k = in.size();
-
- // Parse input string
- while (n < k)
- {
- // Skip leading space
- while ( n < k
- && is_sep(in[n]))
- {
- ++n;
- }
-
- // Detect comments or trailing space
- if ( n >= k
- || in[n] == '#')
- {
- break;
- }
-
- // Detect and extract quoted string
- if (const auto *quote = strchr("\'\"`", in[n]))
- {
- const auto start = ++n;
-
- for ((void)n; in[n] != *quote; ++n)
- {
- if ( n < k
- && in[n] == '\\')
- {
- in.erase(n, 1);
- --k;
- }
-
- if (n >= k)
- {
- OptionWarning w{ filename };
- w("found unterminated quoted-string");
- return{};
- }
- }
-
- out.push_back(in.substr(start, n - start));
-
- if ( ++n < k
- && !is_sep(in[n]))
- {
- OptionWarning w{ filename };
- w("unexpected text following quoted-string");
- return{};
- }
- continue;
- }
- // Extract anything else
- const auto start = n;
-
- for ((void)n;
- ( n < k
- && !is_sep(in[n]));
- ++n)
- {
- if (in[n] == '\\')
- {
- in.erase(n, 1);
- --k;
- }
-
- if (n >= k)
- {
- OptionWarning w{ filename };
- w("found unterminated quoted-string");
- return{};
- }
- }
-
- out.push_back(in.substr(start, n - start));
- }
- return(out);
-} // split_args
-
-
-//-----------------------------------------------------------------------------
-bool is_path_relative(const std::string &path)
-{
- assert(!path.empty());
-
-#ifdef WIN32
- // Check for partition labels as indication for an absolute path
- // 'X:\path\to\file' style absolute disk path
- if ( path.size() > 1
- && isalpha(path[0])
- && path[1] == ':')
- {
- return(false);
- }
-
- // Check for double backslashes as indication for a network path
- // '\\server\path\to\file style' absolute UNC path
- if ( path.size() > 1
- && path[0] == '\\'
- && path[1] == '\\')
- {
- return(false);
- }
-#endif
-
- // Check for a slash as indication for a filename with leading path
- // '/path/to/file' style absolute path
- return(path[0] != '/');
-}
-
-
-//-----------------------------------------------------------------------------
-void print_description(FILE *pfile, std::string description,
- const char *eol_marker)
-{
- // Descriptions always start with a '\n', so skip the first character
- for (std::string::size_type start = 1, length = description.length();
- ( start != std::string::npos
- && start < length);
- ++start)
- {
- // Check for empty line so we can squelch trailing whitespace
- if (description[start] == '\n')
- {
- fprintf(pfile, "#%s", eol_marker);
- }
- else
- {
- const auto end = description.find('\n', start);
- fprintf(pfile, "# %s%s",
- description.substr(start, end - start).c_str(), eol_marker);
- start = end;
- }
- }
-}
-
-
-//-----------------------------------------------------------------------------
-bool process_option_line_compat_0_68(const std::string &cmd,
- const std::vector<std::string> &args,
- const char *filename)
-{
- if (cmd == "sp_cpp_lambda_paren")
- {
- OptionWarning w{ filename, OptionWarning::MINOR };
- w("option '%s' is deprecated; use '%s' instead",
- cmd.c_str(), options::sp_cpp_lambda_square_paren.name());
-
- UNUSED(options::sp_cpp_lambda_square_paren.read(args[1].c_str()));
- return(true);
- }
- return(false);
-} // process_option_line_compat_0_68
-
-
-bool process_option_line_compat_0_70(const std::string &cmd, const char *filename)
-{
- if (cmd == "sp_word_brace") // Issue #2428
- {
- OptionWarning w{ filename, OptionWarning::MINOR };
- w("option '%s' is deprecated; did you want to use '%s' instead?",
- cmd.c_str(), options::sp_type_brace_init_lst.name());
-
- //UNUSED(options::sp_type_brace_init_lst.read(args[1].c_str()));
- return(true);
- }
- return(false);
-} // process_option_line_compat_0_70
-
-
-bool process_option_line_compat_0_73(const std::string &cmd, const char *filename)
-{
- if (cmd == "indent_sing_line_comments") // Issue #3249
- {
- OptionWarning w{ filename, OptionWarning::MINOR };
- w("option '%s' is deprecated; did you want to use '%s' instead?",
- cmd.c_str(), options::indent_single_line_comments_before.name());
-
- //UNUSED(options::indent_single_line_comments_before.read(args[1].c_str()));
- return(true);
- }
-
- if (cmd == "sp_before_tr_emb_cmt") // Issue #3339
- {
- OptionWarning w{ filename, OptionWarning::MINOR };
- w("option '%s' is deprecated; did you want to use '%s' instead?",
- cmd.c_str(), options::sp_before_tr_cmt.name());
-
- //UNUSED(options::sp_before_tr_cmt.read(args[1].c_str()));
- return(true);
- }
-
- if (cmd == "sp_num_before_tr_emb_cmt") // Issue #3339
- {
- OptionWarning w{ filename, OptionWarning::MINOR };
- w("option '%s' is deprecated; did you want to use '%s' instead?",
- cmd.c_str(), options::sp_num_before_tr_cmt.name());
-
- //UNUSED(options::sp_num_before_tr_cmt.read(args[1].c_str()));
- return(true);
- }
- return(false);
-} // process_option_line_compat_0_73
-
-
-bool process_option_line_compat_0_74(const std::string &cmd, const char *filename)
-{
- if (cmd == "sp_type_question") // PR #3638
- {
- OptionWarning w{ filename, OptionWarning::MINOR };
- w("option '%s' is deprecated; did you want to use '%s' instead?",
- cmd.c_str(), options::sp_before_ptr_star.name());
-
- return(true);
- }
- return(false);
-} // process_option_line_compat_0_74
-
-
-bool process_option_line_compat_0_75(const std::string &cmd, const char *filename)
-{
- if (cmd == "pp_space")
- {
- OptionWarning w{ filename, OptionWarning::MINOR };
- w("option '%s' is deprecated; it has been replaced by '%s'.",
- cmd.c_str(), options::pp_space_after.name());
-
- return(true);
- }
-
- if (cmd == "pp_space_before")
- {
- OptionWarning w{ filename, OptionWarning::MINOR };
- w("option '%s' is deprecated; it was a temporary option used\n"
- "during the development of version 0.76. Use '%s' and '%s' instead.",
- cmd.c_str(), options::pp_indent.name(), options::pp_indent_count.name());
-
- return(true);
- }
- return(false);
-} // process_option_line_compat_0_75
-
-
-bool process_option_line_compat_0_76(const std::string &cmd, const std::vector<std::string> &args, const char *filename)
-{
- if (cmd == "nl_func_var_def_blk")
- {
- OptionWarning w{ filename, OptionWarning::MINOR };
- w("option '%s' is deprecated; it has been replaced by '%s'.\n"
- "You can also use '%s' for additional functionality",
- cmd.c_str(), options::nl_var_def_blk_end_func_top.name(),
- options::nl_var_def_blk_end.name());
-
- UNUSED(options::nl_var_def_blk_end_func_top.read(args[1].c_str()));
- return(true);
- }
- return(false);
-} // process_option_line_compat_0_76
-
-} // namespace
-
-///////////////////////////////////////////////////////////////////////////////
-
-//BEGIN Option<T> and helpers
-
-
-//-----------------------------------------------------------------------------
-OptionWarning::OptionWarning(const char *filename, Severity severity)
-{
- UNUSED(severity);
-
- if (cpd.line_number != 0)
- {
- fprintf(stderr, "%s:%u: ", filename, cpd.line_number);
- }
- else
- {
- fprintf(stderr, "%s: ", filename);
- }
-}
-
-
-//-----------------------------------------------------------------------------
-OptionWarning::OptionWarning(const GenericOption *opt, Severity severity)
-{
- UNUSED(severity);
-
- fprintf(stderr, "Option<%s>: at %s:%d: ", to_string(opt->type()),
- cpd.filename.c_str(), cpd.line_number);
-}
-
-
-//-----------------------------------------------------------------------------
-OptionWarning::~OptionWarning()
-{
- fprintf(stderr, "\n");
- log_flush(true);
-}
-
-
-//-----------------------------------------------------------------------------
-void OptionWarning::operator()(const char *fmt, ...)
-{
- va_list args;
-
- va_start(args, fmt);
- vfprintf(stderr, fmt, args);
- va_end(args);
-}
-
-
-//-----------------------------------------------------------------------------
-void GenericOption::warnUnexpectedValue(const char *actual) const
-{
- OptionWarning w{ this };
-
- auto values = possibleValues();
-
- if (values[1] == nullptr)
- {
- w("Expected %s ", *values);
- }
- else
- {
- w("Expected one of ");
-
- while (*values)
- {
- w("'%s'", *values);
-
- if (*(++values))
- {
- w(", ");
- }
- }
- }
- w(", for '%s'; got '%s'", name(), actual);
-}
-
-
-//-----------------------------------------------------------------------------
-void GenericOption::warnIncompatibleReference(const GenericOption *ref) const
-{
- OptionWarning w{ this };
-
- w("%s references option %s with incompatible type %s",
- name(), ref->name(), to_string(ref->type()));
-}
-
-
-//-----------------------------------------------------------------------------
-template<typename T>
-bool read_enum(const char *in, Option<T> &out)
-{
- assert(in);
-
- if (convert_string(in, out.m_val))
- {
- return(true);
- }
-
- if (const auto *const opt = find_option(in))
- {
- if (opt->type() != out.type())
- {
- out.warnIncompatibleReference(opt);
- return(false);
- }
- auto &topt = *static_cast<const Option<T> *>(opt);
- out.m_val = topt();
- return(true);
- }
- out.warnUnexpectedValue(in);
- return(false);
-}
-
-
-//-----------------------------------------------------------------------------
-template<typename T>
-bool read_number(const char *in, Option<T> &out)
-{
- assert(in);
-
- char *c;
- const auto val = std::strtol(in, &c, 10);
-
- if ( *c == 0
- && out.validate(val))
- {
- out.m_val = static_cast<T>(val);
- return(true);
- }
- bool invert = false;
-
- if (strchr("-", in[0]))
- {
- invert = true;
- ++in;
- }
-
- if (const auto *const opt = find_option(in))
- {
- LOG_CONFIG("%s(%d): line_number is %d, option(%s) %s, ref(%s) %s\n",
- __func__, __LINE__, cpd.line_number,
- to_string(out.type()), out.name(),
- to_string(opt->type()), opt->name());
-
- long tval;
-
- if (opt->type() == OT_NUM)
- {
- auto &sopt = *static_cast<const Option<signed> *>(opt);
- tval = static_cast<long>(sopt());
- }
- else if (opt->type() == OT_UNUM)
- {
- auto &uopt = *static_cast<const Option<unsigned> *>(opt);
- tval = static_cast<long>(uopt());
- }
- else
- {
- out.warnIncompatibleReference(opt);
- return(false);
- }
- const auto rval = (invert ? -tval : tval);
-
- if (out.validate(rval))
- {
- out.m_val = static_cast<T>(rval);
- return(true);
- }
- return(false);
- }
- out.warnUnexpectedValue(in);
- return(false);
-} // read_number
-
-
-//-----------------------------------------------------------------------------
-template<typename T>
-void Option<T>::reset()
-{
- m_val = m_default;
-}
-
-
-//-----------------------------------------------------------------------------
-template<typename T>
-std::string Option<T>::str() const
-{
- return(to_string(m_val));
-}
-
-
-//-----------------------------------------------------------------------------
-template<typename T>
-std::string Option<T>::defaultStr() const
-{
- return(m_default != T{} ? to_string(m_default) : std::string{});
-}
-
-// Explicit instantiations
-template class Option<bool>;
-template class Option<iarf_e>;
-template class Option<line_end_e>;
-template class Option<token_pos_e>;
-template class Option<signed>;
-template class Option<unsigned>;
-template class Option<std::string>;
-
-//END Option<T> and helpers
-
-///////////////////////////////////////////////////////////////////////////////
-
-//BEGIN Option<bool>
-
-
-//-----------------------------------------------------------------------------
-template<>
-option_type_e Option<bool>::type() const
-{
- return(OT_BOOL);
-}
-
-
-//-----------------------------------------------------------------------------
-template<>
-const char *const *Option<bool>::possibleValues() const
-{
- static char const *values[] = { "true", "false", nullptr };
-
- return(values);
-}
-
-
-//-----------------------------------------------------------------------------
-template<>
-bool Option<bool>::read(const char *in)
-{
- assert(in);
-
- if (convert_string(in, m_val))
- {
- return(true);
- }
- bool invert = false;
-
- if (strchr("~!-", in[0]))
- {
- invert = true;
- ++in;
- }
-
- if (const auto *const opt = find_option(in))
- {
- if (opt->type() != OT_BOOL)
- {
- warnIncompatibleReference(opt);
- return(false);
- }
- auto &bopt = *static_cast<const Option<bool> *>(opt);
- m_val = (invert ? !bopt() : bopt());
- return(true);
- }
- warnUnexpectedValue(in);
- return(false);
-}
-
-//END Option<bool>
-
-///////////////////////////////////////////////////////////////////////////////
-
-//BEGIN Option<iarf_e>
-
-
-//-----------------------------------------------------------------------------
-template<>
-option_type_e Option<iarf_e>::type() const
-{
- return(OT_IARF);
-}
-
-
-//-----------------------------------------------------------------------------
-template<>
-const char *const *Option<iarf_e>::possibleValues() const
-{
- return(iarf_values);
-}
-
-
-//-----------------------------------------------------------------------------
-template<>
-bool Option<iarf_e>::read(const char *in)
-{
- return(read_enum(in, *this));
-}
-
-//END Option<iarf_e>
-
-///////////////////////////////////////////////////////////////////////////////
-
-//BEGIN Option<line_end_e>
-
-
-//-----------------------------------------------------------------------------
-template<>
-option_type_e Option<line_end_e>::type() const
-{
- return(OT_LINEEND);
-}
-
-
-//-----------------------------------------------------------------------------
-template<>
-const char *const *Option<line_end_e>::possibleValues() const
-{
- return(line_end_values);
-}
-
-
-//-----------------------------------------------------------------------------
-template<>
-bool Option<line_end_e>::read(const char *in)
-{
- return(read_enum(in, *this));
-}
-
-//END Option<line_end_e>
-
-///////////////////////////////////////////////////////////////////////////////
-
-//BEGIN Option<token_pos_e>
-
-
-//-----------------------------------------------------------------------------
-template<>
-option_type_e Option<token_pos_e>::type() const
-{
- return(OT_TOKENPOS);
-}
-
-
-//-----------------------------------------------------------------------------
-template<>
-const char *const *Option<token_pos_e>::possibleValues() const
-{
- return(token_pos_values);
-}
-
-
-//-----------------------------------------------------------------------------
-template<>
-bool Option<token_pos_e>::read(const char *in)
-{
- return(read_enum(in, *this));
-}
-
-//END Option<token_pos_e>
-
-///////////////////////////////////////////////////////////////////////////////
-
-//BEGIN Option<signed>
-
-
-//-----------------------------------------------------------------------------
-template<>
-option_type_e Option<signed>::type() const
-{
- return(OT_NUM);
-}
-
-
-//-----------------------------------------------------------------------------
-template<>
-const char *const *Option<signed>::possibleValues() const
-{
- static char const *values[] = { "number", nullptr };
-
- return(values);
-}
-
-
-//-----------------------------------------------------------------------------
-template<>
-bool Option<signed>::read(const char *in)
-{
- return(read_number(in, *this));
-}
-
-//END Option<signed>
-
-///////////////////////////////////////////////////////////////////////////////
-
-//BEGIN Option<unsigned>
-
-
-//-----------------------------------------------------------------------------
-template<>
-option_type_e Option<unsigned>::type() const
-{
- return(OT_UNUM);
-}
-
-
-//-----------------------------------------------------------------------------
-template<>
-const char *const *Option<unsigned>::possibleValues() const
-{
- static char const *values[] = { "unsigned number", nullptr };
-
- return(values);
-}
-
-
-//-----------------------------------------------------------------------------
-template<>
-bool Option<unsigned>::read(const char *in)
-{
- return(read_number(in, *this));
-}
-
-//END Option<unsigned>
-
-///////////////////////////////////////////////////////////////////////////////
-
-//BEGIN Option<string>
-
-
-//-----------------------------------------------------------------------------
-template<>
-option_type_e Option<std::string>::type() const
-{
- return(OT_STRING);
-}
-
-
-//-----------------------------------------------------------------------------
-template<>
-const char *const *Option<std::string>::possibleValues() const
-{
- static char const *values[] = { "string", nullptr };
-
- return(values);
-}
-
-
-//-----------------------------------------------------------------------------
-template<>
-bool Option<std::string>::read(const char *in)
-{
- m_val = in;
- return(true);
-}
-
-//END Option<string>
-
-///////////////////////////////////////////////////////////////////////////////
-
-//BEGIN global functions for options
-
-
-//-----------------------------------------------------------------------------
-void begin_option_group(const char *description)
-{
- auto g = OptionGroup{ description, {} };
-
- option_groups.push_back(g);
-}
-
-
-//-----------------------------------------------------------------------------
-void register_option(GenericOption *option)
-{
- assert(!option_groups.empty());
-
- option_groups.back().options.push_back(option);
- option_map.emplace(option->name(), option);
-}
-
-
-//-----------------------------------------------------------------------------
-uncrustify::GenericOption *find_option(const char *name)
-{
- const auto iter = option_map.find(to_lower(name));
-
- if (iter != option_map.end())
- {
- return(iter->second);
- }
- return(nullptr);
-}
-
-
-//-----------------------------------------------------------------------------
-OptionGroup *get_option_group(size_t i)
-{
- if (i >= option_groups.size())
- {
- return(nullptr);
- }
- return(&option_groups[i]);
-}
-
-
-//-----------------------------------------------------------------------------
-size_t get_option_count()
-{
- return(option_map.size());
-}
-
-
-//-----------------------------------------------------------------------------
-void process_option_line(const std::string &config_line, const char *filename,
- int &compat_level)
-{
- // Split line into arguments, and punt if no arguments are present
- auto args = split_args(config_line, filename, is_arg_sep);
-
- if (args.empty())
- {
- return;
- }
- // Check for necessary arguments
- const auto &cmd = to_lower(args.front());
-
- if ( cmd == "set"
- || cmd == "file_ext")
- {
- if (args.size() < 3)
- {
- OptionWarning w{ filename };
- w("%s requires at least three arguments", cmd.c_str());
- return;
- }
- }
- else
- {
- if (args.size() < 2)
- {
- OptionWarning w{ filename };
- w("%s requires at least two arguments", cmd.c_str());
- return;
- }
- }
-
- if (cmd == "type")
- {
- for (size_t i = 1; i < args.size(); ++i)
- {
- add_keyword(args[i], CT_TYPE);
- }
- }
- else if (cmd == "macro-open")
- {
- add_keyword(args[1], CT_MACRO_OPEN);
- }
- else if (cmd == "macro-close")
- {
- add_keyword(args[1], CT_MACRO_CLOSE);
- }
- else if (cmd == "macro-else")
- {
- add_keyword(args[1], CT_MACRO_ELSE);
- }
- else if (cmd == "set")
- {
- const auto token = find_token_name(args[1].c_str());
-
- if (token != CT_NONE)
- {
- LOG_FMT(LNOTE, "%s:%d set '%s':",
- filename, cpd.line_number, args[1].c_str());
-
- for (size_t i = 2; i < args.size(); ++i)
- {
- LOG_FMT(LNOTE, " '%s'", args[i].c_str());
- add_keyword(args[i], token);
- }
-
- LOG_FMT(LNOTE, "\n");
- }
- else
- {
- OptionWarning w{ filename };
- w("%s: unknown type '%s'", cmd.c_str(), args[1].c_str());
- }
- }
-#ifndef EMSCRIPTEN
- else if (cmd == "include")
- {
- auto this_line_number = cpd.line_number;
- const auto &include_path = args[1];
-
- if (include_path.empty())
- {
- OptionWarning w{ filename };
- w("include: path cannot be empty");
- }
- else if (is_path_relative(include_path))
- {
- // include is a relative path to the current config file
- unc_text ut = std::string{ filename };
- ut.resize(static_cast<unsigned>(path_dirname_len(filename)));
- ut.append(include_path);
- UNUSED(load_option_file(ut.c_str(), compat_level));
- }
- else
- {
- // include is an absolute path
- UNUSED(load_option_file(include_path.c_str(), compat_level));
- }
- cpd.line_number = this_line_number;
- }
-#endif
- else if (cmd == "file_ext")
- {
- auto *const lang_arg = args[1].c_str();
-
- for (size_t i = 2; i < args.size(); ++i)
- {
- auto *const lang_name = extension_add(args[i].c_str(), lang_arg);
-
- if (lang_name)
- {
- LOG_FMT(LNOTE, "%s:%d file_ext '%s' => '%s'\n",
- filename, cpd.line_number, args[i].c_str(), lang_name);
- }
- else
- {
- OptionWarning w{ filename };
- w("file_ext: unknown language '%s'", lang_arg);
- break;
- }
- }
- }
- else if (cmd == "using")
- {
- auto vargs = split_args(args[1], filename, is_varg_sep);
-
- if (vargs.size() == 2)
- {
- compat_level = option_level(std::stoi(vargs[0]), std::stoi(vargs[1]));
- }
- else if (vargs.size() == 3)
- {
- compat_level = option_level(std::stoi(vargs[0]),
- std::stoi(vargs[1]),
- std::stoi(vargs[2]));
- }
- else
- {
- OptionWarning w{ filename };
- w("%s requires a version number in the form MAJOR.MINOR[.PATCH]",
- cmd.c_str());
- }
- }
- else
- {
- // Must be a regular option = value
- if (compat_level < option_level(0, 69))
- {
- if (process_option_line_compat_0_68(cmd, args, filename))
- {
- return;
- }
- }
-
- if (compat_level < option_level(0, 71))
- {
- if (process_option_line_compat_0_70(cmd, filename))
- {
- return;
- }
- }
-
- if (compat_level < option_level(0, 74))
- {
- if (process_option_line_compat_0_73(cmd, filename))
- {
- return;
- }
- }
-
- if (compat_level < option_level(0, 75))
- {
- if (process_option_line_compat_0_74(cmd, filename))
- {
- return;
- }
- }
-
- if (compat_level < option_level(0, 76))
- {
- if (process_option_line_compat_0_75(cmd, filename))
- {
- return;
- }
- }
-
- if (compat_level < option_level(0, 77))
- {
- if (process_option_line_compat_0_76(cmd, args, filename))
- {
- return;
- }
- }
- const auto oi = option_map.find(cmd);
-
- if (oi == option_map.end())
- {
- OptionWarning w{ filename };
- w("unknown option '%s'", args[0].c_str());
- }
- else
- {
- UNUSED(oi->second->read(args[1].c_str()));
- }
- }
-} // process_option_line
-
-
-//-----------------------------------------------------------------------------
-bool load_option_file(const char *filename, int compat_level)
-{
- cpd.line_number = 0;
-
-#ifdef WIN32
- // "/dev/null" not understood by "fopen" in Windows
- if (strcasecmp(filename, "/dev/null") == 0)
- {
- return(true);
- }
-#endif
-
- std::ifstream in;
- in.open(filename, std::ifstream::in);
-
- if (!in.good())
- {
- OptionWarning w{ filename };
- w("file could not be opened: %s (%d)\n",
- strerror(errno), errno);
- exit(EX_SOFTWARE);
- }
- // Read in the file line by line
- std::string line;
-
- while (std::getline(in, line))
- {
- // check all characters of the line
- size_t howmany = line.length();
- int ch;
-
- for (size_t n = 0; n < howmany; n++)
- {
- ch = line[n];
-
- // do not check characters in comment part of line
- if ('#' == ch)
- {
- break;
- }
-
- // ch >= 0 && ch <= 255
- if ( ch < 0
- || ch > 255)
- {
- // error
- // related to PR #3298
- fprintf(stderr, "%s: line %u: Character at position %zu, is not printable.\n", filename, cpd.line_number + 1, n + 1);
- exit(EX_SOFTWARE);
- }
- }
-
- ++cpd.line_number;
- process_option_line(line, filename, compat_level);
- }
- return(true);
-} // load_option_file
-
-
-//-----------------------------------------------------------------------------
-const char *get_eol_marker()
-{
- static char eol[3] = { 0x0A, 0x00, 0x00 };
-
- const auto &lines = cpd.newline.get();
-
- for (size_t i = 0; i < lines.size(); ++i)
- {
- eol[i] = static_cast<char>(lines[i]);
- }
-
- return(eol);
-}
-
-
-//-----------------------------------------------------------------------------
-void save_option_file(FILE *pfile, bool with_doc, bool minimal)
-{
- int non_default_values = 0;
- const char *eol_marker = get_eol_marker();
-
- fprintf(pfile, "# %s%s", UNCRUSTIFY_VERSION, eol_marker);
-
- // Print the options by group
- for (auto &og : option_groups)
- {
- bool first = true;
-
- for (auto *option : og.options)
- {
- const auto val = option->str();
-
- if (!option->isDefault())
- {
- ++non_default_values;
- }
- else if (minimal)
- {
- continue;
- }
- //....................................................................
-
- if (with_doc)
- {
- assert(option->description() != nullptr);
- assert(*option->description() != 0);
-
- if (first)
- {
- fprintf(pfile, "%s#%s", eol_marker, eol_marker);
- print_description(pfile, og.description, eol_marker);
- fprintf(pfile, "#%s", eol_marker);
- }
- fprintf(pfile, "%s", eol_marker);
- print_description(pfile, option->description(), eol_marker);
-
- const auto ds = option->defaultStr();
-
- if (!ds.empty())
- {
- fprintf(pfile, "#%s# Default: %s%s",
- eol_marker, ds.c_str(), eol_marker);
- }
- }
- first = false;
-
- const int name_len = static_cast<int>(strlen(option->name()));
- const int pad = name_len < uncrustify::limits::MAX_OPTION_NAME_LEN
- ? (uncrustify::limits::MAX_OPTION_NAME_LEN - name_len)
- : 1;
-
- fprintf(pfile, "%s%*.s= ", option->name(), pad, " ");
-
- if (option->type() == OT_STRING)
- {
- fprintf(pfile, "\"%s\"", val.c_str());
- }
- else
- {
- fprintf(pfile, "%s", val.c_str());
- }
-
- if (with_doc)
- {
- const int val_len = static_cast<int>(val.length());
- fprintf(pfile, "%*.s # ", 8 - val_len, " ");
-
- for (auto pv = option->possibleValues(); *pv; ++pv)
- {
- fprintf(pfile, "%s%s", *pv, pv[1] ? "/" : "");
- }
- }
- fputs(eol_marker, pfile);
- }
- }
-
- if (with_doc)
- {
- fprintf(pfile, "%s", DOC_TEXT_END);
- }
- print_custom_keywords(pfile); // Print custom keywords
- print_extensions(pfile); // Print custom file extensions
-
- fprintf(pfile, "# option(s) with 'not default' value: %d%s#%s",
- non_default_values, eol_marker, eol_marker);
-} // save_option_file
-
-} // namespace uncrustify
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/options.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/options.h
deleted file mode 100644
index 7fabf1f7..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/options.h
+++ /dev/null
@@ -1,4303 +0,0 @@
-/**
- * @file options.h
- * Declarations of all the options.
- *
- * September 2020
- * @author Ben Gardner
- * @author Guy Maurel
- * @author Matthew Woehlke
- * @license GPL v2+
- */
-
-#ifndef OPTIONS_H_INCLUDED
-#define OPTIONS_H_INCLUDED
-
-/* NOTE:
- * This file is processed by make_options.py, and must conform to a particular
- * format. Option groups are marked by '//begin ' (in upper case; this example
- * is lower case to prevent being considered a region marker for code folding)
- * followed by the group description. Options consist of two lines of
- * declaration preceded by one or more lines of C++ comments. The comments form
- * the option description and are taken verbatim, aside from stripping the
- * leading '// '. Only comments immediately preceding an option declaration,
- * with no blank lines, are taken as part of the description, so a blank line
- * may be used to separate notations from a description.
- *
- * An option declaration is 'extern TYPE\nNAME;', optionally followed by
- * ' // = VALUE' if the option has a default value that is different from the
- * default-constructed value type of the option. The 'VALUE' must be valid C++
- * code, and is taken verbatim as an argument when creating the option's
- * instantiation. Note also that the line break, as shown, is required.
- */
-
-#include "option_enum.h"
-
-namespace uncrustify
-{
-
-namespace options
-{
-
-using std::string;
-
-///////////////////////////////////////////////////////////////////////////////
-//BEGIN General options
-
-// The type of line endings.
-extern Option<line_end_e>
-newlines; // = LE_AUTO
-
-// The original size of tabs in the input.
-extern BoundedOption<unsigned, 1, 32>
-input_tab_size; // = 8
-
-// The size of tabs in the output (only used if align_with_tabs=true).
-extern BoundedOption<unsigned, 1, 32>
-output_tab_size; // = 8
-
-// The ASCII value of the string escape char, usually 92 (\) or (Pawn) 94 (^).
-extern BoundedOption<unsigned, 0, 255>
-string_escape_char; // = '\\'
-
-// Alternate string escape char (usually only used for Pawn).
-// Only works right before the quote char.
-extern BoundedOption<unsigned, 0, 255>
-string_escape_char2;
-
-// Replace tab characters found in string literals with the escape sequence \t
-// instead.
-extern Option<bool>
-string_replace_tab_chars;
-
-// Allow interpreting '>=' and '>>=' as part of a template in code like
-// 'void f(list<list<B>>=val);'. If true, 'assert(x<0 && y>=3)' will be broken.
-// Improvements to template detection may make this option obsolete.
-extern Option<bool>
-tok_split_gte;
-
-// Disable formatting of NL_CONT ('\\n') ended lines (e.g. multi-line macros).
-extern Option<bool>
-disable_processing_nl_cont;
-
-// Specify the marker used in comments to disable processing of part of the
-// file.
-extern Option<string>
-disable_processing_cmt; // = UNCRUSTIFY_OFF_TEXT
-
-// Specify the marker used in comments to (re)enable processing in a file.
-extern Option<string>
-enable_processing_cmt; // = UNCRUSTIFY_ON_TEXT
-
-// Enable parsing of digraphs.
-extern Option<bool>
-enable_digraphs;
-
-// Option to allow both disable_processing_cmt and enable_processing_cmt
-// strings, if specified, to be interpreted as ECMAScript regular expressions.
-// If true, a regex search will be performed within comments according to the
-// specified patterns in order to disable/enable processing.
-extern Option<bool>
-processing_cmt_as_regex;
-
-// Add or remove the UTF-8 BOM (recommend 'remove').
-extern Option<iarf_e>
-utf8_bom;
-
-// If the file contains bytes with values between 128 and 255, but is not
-// UTF-8, then output as UTF-8.
-extern Option<bool>
-utf8_byte;
-
-// Force the output encoding to UTF-8.
-extern Option<bool>
-utf8_force;
-
-//END
-
-///////////////////////////////////////////////////////////////////////////////
-//BEGIN Spacing options
-
-// Add or remove space around non-assignment symbolic operators ('+', '/', '%',
-// '<<', and so forth).
-extern Option<iarf_e>
-sp_arith;
-
-// Add or remove space around arithmetic operators '+' and '-'.
-//
-// Overrides sp_arith.
-extern Option<iarf_e>
-sp_arith_additive;
-
-// Add or remove space around assignment operator '=', '+=', etc.
-extern Option<iarf_e>
-sp_assign;
-
-// Add or remove space around '=' in C++11 lambda capture specifications.
-//
-// Overrides sp_assign.
-extern Option<iarf_e>
-sp_cpp_lambda_assign;
-
-// Add or remove space after the capture specification of a C++11 lambda when
-// an argument list is present, as in '[] <here> (int x){ ... }'.
-extern Option<iarf_e>
-sp_cpp_lambda_square_paren;
-
-// Add or remove space after the capture specification of a C++11 lambda with
-// no argument list is present, as in '[] <here> { ... }'.
-extern Option<iarf_e>
-sp_cpp_lambda_square_brace;
-
-// Add or remove space after the opening parenthesis and before the closing
-// parenthesis of a argument list of a C++11 lambda, as in
-// '[]( <here> int x <here> ){ ... }'.
-extern Option<iarf_e>
-sp_cpp_lambda_argument_list;
-
-// Add or remove space after the argument list of a C++11 lambda, as in
-// '[](int x) <here> { ... }'.
-extern Option<iarf_e>
-sp_cpp_lambda_paren_brace;
-
-// Add or remove space between a lambda body and its call operator of an
-// immediately invoked lambda, as in '[]( ... ){ ... } <here> ( ... )'.
-extern Option<iarf_e>
-sp_cpp_lambda_fparen;
-
-// Add or remove space around assignment operator '=' in a prototype.
-//
-// If set to ignore, use sp_assign.
-extern Option<iarf_e>
-sp_assign_default;
-
-// Add or remove space before assignment operator '=', '+=', etc.
-//
-// Overrides sp_assign.
-extern Option<iarf_e>
-sp_before_assign;
-
-// Add or remove space after assignment operator '=', '+=', etc.
-//
-// Overrides sp_assign.
-extern Option<iarf_e>
-sp_after_assign;
-
-// Add or remove space in 'enum {'.
-extern Option<iarf_e>
-sp_enum_brace; // = IARF_ADD
-
-// Add or remove space in 'NS_ENUM ('.
-extern Option<iarf_e>
-sp_enum_paren;
-
-// Add or remove space around assignment '=' in enum.
-extern Option<iarf_e>
-sp_enum_assign;
-
-// Add or remove space before assignment '=' in enum.
-//
-// Overrides sp_enum_assign.
-extern Option<iarf_e>
-sp_enum_before_assign;
-
-// Add or remove space after assignment '=' in enum.
-//
-// Overrides sp_enum_assign.
-extern Option<iarf_e>
-sp_enum_after_assign;
-
-// Add or remove space around assignment ':' in enum.
-extern Option<iarf_e>
-sp_enum_colon;
-
-// Add or remove space around preprocessor '##' concatenation operator.
-extern Option<iarf_e>
-sp_pp_concat; // = IARF_ADD
-
-// Add or remove space after preprocessor '#' stringify operator.
-// Also affects the '#@' charizing operator.
-extern Option<iarf_e>
-sp_pp_stringify;
-
-// Add or remove space before preprocessor '#' stringify operator
-// as in '#define x(y) L#y'.
-extern Option<iarf_e>
-sp_before_pp_stringify;
-
-// Add or remove space around boolean operators '&&' and '||'.
-extern Option<iarf_e>
-sp_bool;
-
-// Add or remove space around compare operator '<', '>', '==', etc.
-extern Option<iarf_e>
-sp_compare;
-
-// Add or remove space inside '(' and ')'.
-extern Option<iarf_e>
-sp_inside_paren;
-
-// Add or remove space between nested parentheses, i.e. '((' vs. ') )'.
-extern Option<iarf_e>
-sp_paren_paren;
-
-// Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.
-extern Option<iarf_e>
-sp_cparen_oparen;
-
-// Whether to balance spaces inside nested parentheses.
-extern Option<bool>
-sp_balance_nested_parens;
-
-// Add or remove space between ')' and '{'.
-extern Option<iarf_e>
-sp_paren_brace;
-
-// Add or remove space between nested braces, i.e. '{{' vs. '{ {'.
-extern Option<iarf_e>
-sp_brace_brace;
-
-// Add or remove space before pointer star '*'.
-extern Option<iarf_e>
-sp_before_ptr_star;
-
-// Add or remove space before pointer star '*' that isn't followed by a
-// variable name. If set to ignore, sp_before_ptr_star is used instead.
-extern Option<iarf_e>
-sp_before_unnamed_ptr_star;
-
-// Add or remove space between pointer stars '*', as in 'int ***a;'.
-extern Option<iarf_e>
-sp_between_ptr_star;
-
-// Add or remove space after pointer star '*', if followed by a word.
-//
-// Overrides sp_type_func.
-extern Option<iarf_e>
-sp_after_ptr_star;
-
-// Add or remove space after pointer caret '^', if followed by a word.
-extern Option<iarf_e>
-sp_after_ptr_block_caret;
-
-// Add or remove space after pointer star '*', if followed by a qualifier.
-extern Option<iarf_e>
-sp_after_ptr_star_qualifier;
-
-// Add or remove space after a pointer star '*', if followed by a function
-// prototype or function definition.
-//
-// Overrides sp_after_ptr_star and sp_type_func.
-extern Option<iarf_e>
-sp_after_ptr_star_func;
-
-// Add or remove space after a pointer star '*' in the trailing return of a
-// function prototype or function definition.
-extern Option<iarf_e>
-sp_after_ptr_star_trailing;
-
-// Add or remove space between the pointer star '*' and the name of the variable
-// in a function pointer definition.
-extern Option<iarf_e>
-sp_ptr_star_func_var;
-
-// Add or remove space between the pointer star '*' and the name of the type
-// in a function pointer type definition.
-extern Option<iarf_e>
-sp_ptr_star_func_type;
-
-// Add or remove space after a pointer star '*', if followed by an open
-// parenthesis, as in 'void* (*)()'.
-extern Option<iarf_e>
-sp_ptr_star_paren;
-
-// Add or remove space before a pointer star '*', if followed by a function
-// prototype or function definition.
-extern Option<iarf_e>
-sp_before_ptr_star_func;
-
-// Add or remove space before a pointer star '*' in the trailing return of a
-// function prototype or function definition.
-extern Option<iarf_e>
-sp_before_ptr_star_trailing;
-
-// Add or remove space before a reference sign '&'.
-extern Option<iarf_e>
-sp_before_byref;
-
-// Add or remove space before a reference sign '&' that isn't followed by a
-// variable name. If set to ignore, sp_before_byref is used instead.
-extern Option<iarf_e>
-sp_before_unnamed_byref;
-
-// Add or remove space after reference sign '&', if followed by a word.
-//
-// Overrides sp_type_func.
-extern Option<iarf_e>
-sp_after_byref;
-
-// Add or remove space after a reference sign '&', if followed by a function
-// prototype or function definition.
-//
-// Overrides sp_after_byref and sp_type_func.
-extern Option<iarf_e>
-sp_after_byref_func;
-
-// Add or remove space before a reference sign '&', if followed by a function
-// prototype or function definition.
-extern Option<iarf_e>
-sp_before_byref_func;
-
-// Add or remove space after a reference sign '&', if followed by an open
-// parenthesis, as in 'char& (*)()'.
-extern Option<iarf_e>
-sp_byref_paren;
-
-// Add or remove space between type and word. In cases where total removal of
-// whitespace would be a syntax error, a value of 'remove' is treated the same
-// as 'force'.
-//
-// This also affects some other instances of space following a type that are
-// not covered by other options; for example, between the return type and
-// parenthesis of a function type template argument, between the type and
-// parenthesis of an array parameter, or between 'decltype(...)' and the
-// following word.
-extern Option<iarf_e>
-sp_after_type; // = IARF_FORCE
-
-// Add or remove space between 'decltype(...)' and word,
-// brace or function call.
-extern Option<iarf_e>
-sp_after_decltype;
-
-// (D) Add or remove space before the parenthesis in the D constructs
-// 'template Foo(' and 'class Foo('.
-extern Option<iarf_e>
-sp_before_template_paren;
-
-// Add or remove space between 'template' and '<'.
-// If set to ignore, sp_before_angle is used.
-extern Option<iarf_e>
-sp_template_angle;
-
-// Add or remove space before '<'.
-extern Option<iarf_e>
-sp_before_angle;
-
-// Add or remove space inside '<' and '>'.
-extern Option<iarf_e>
-sp_inside_angle;
-
-// Add or remove space inside '<>'.
-extern Option<iarf_e>
-sp_inside_angle_empty;
-
-// Add or remove space between '>' and ':'.
-extern Option<iarf_e>
-sp_angle_colon;
-
-// Add or remove space after '>'.
-extern Option<iarf_e>
-sp_after_angle;
-
-// Add or remove space between '>' and '(' as found in 'new List<byte>(foo);'.
-extern Option<iarf_e>
-sp_angle_paren;
-
-// Add or remove space between '>' and '()' as found in 'new List<byte>();'.
-extern Option<iarf_e>
-sp_angle_paren_empty;
-
-// Add or remove space between '>' and a word as in 'List<byte> m;' or
-// 'template <typename T> static ...'.
-extern Option<iarf_e>
-sp_angle_word;
-
-// Add or remove space between '>' and '>' in '>>' (template stuff).
-extern Option<iarf_e>
-sp_angle_shift; // = IARF_ADD
-
-// (C++11) Permit removal of the space between '>>' in 'foo<bar<int> >'. Note
-// that sp_angle_shift cannot remove the space without this option.
-extern Option<bool>
-sp_permit_cpp11_shift;
-
-// Add or remove space before '(' of control statements ('if', 'for', 'switch',
-// 'while', etc.).
-extern Option<iarf_e>
-sp_before_sparen;
-
-// Add or remove space inside '(' and ')' of control statements other than
-// 'for'.
-extern Option<iarf_e>
-sp_inside_sparen;
-
-// Add or remove space after '(' of control statements other than 'for'.
-//
-// Overrides sp_inside_sparen.
-extern Option<iarf_e>
-sp_inside_sparen_open;
-
-// Add or remove space before ')' of control statements other than 'for'.
-//
-// Overrides sp_inside_sparen.
-extern Option<iarf_e>
-sp_inside_sparen_close;
-
-// Add or remove space inside '(' and ')' of 'for' statements.
-extern Option<iarf_e>
-sp_inside_for;
-
-// Add or remove space after '(' of 'for' statements.
-//
-// Overrides sp_inside_for.
-extern Option<iarf_e>
-sp_inside_for_open;
-
-// Add or remove space before ')' of 'for' statements.
-//
-// Overrides sp_inside_for.
-extern Option<iarf_e>
-sp_inside_for_close;
-
-// Add or remove space between '((' or '))' of control statements.
-extern Option<iarf_e>
-sp_sparen_paren;
-
-// Add or remove space after ')' of control statements.
-extern Option<iarf_e>
-sp_after_sparen;
-
-// Add or remove space between ')' and '{' of control statements.
-extern Option<iarf_e>
-sp_sparen_brace;
-
-// Add or remove space between 'do' and '{'.
-extern Option<iarf_e>
-sp_do_brace_open;
-
-// Add or remove space between '}' and 'while'.
-extern Option<iarf_e>
-sp_brace_close_while;
-
-// Add or remove space between 'while' and '('. Overrides sp_before_sparen.
-extern Option<iarf_e>
-sp_while_paren_open;
-
-// (D) Add or remove space between 'invariant' and '('.
-extern Option<iarf_e>
-sp_invariant_paren;
-
-// (D) Add or remove space after the ')' in 'invariant (C) c'.
-extern Option<iarf_e>
-sp_after_invariant_paren;
-
-// Add or remove space before empty statement ';' on 'if', 'for' and 'while'.
-extern Option<iarf_e>
-sp_special_semi;
-
-// Add or remove space before ';'.
-extern Option<iarf_e>
-sp_before_semi; // = IARF_REMOVE
-
-// Add or remove space before ';' in non-empty 'for' statements.
-extern Option<iarf_e>
-sp_before_semi_for;
-
-// Add or remove space before a semicolon of an empty left part of a for
-// statement, as in 'for ( <here> ; ; )'.
-extern Option<iarf_e>
-sp_before_semi_for_empty;
-
-// Add or remove space between the semicolons of an empty middle part of a for
-// statement, as in 'for ( ; <here> ; )'.
-extern Option<iarf_e>
-sp_between_semi_for_empty;
-
-// Add or remove space after ';', except when followed by a comment.
-extern Option<iarf_e>
-sp_after_semi; // = IARF_ADD
-
-// Add or remove space after ';' in non-empty 'for' statements.
-extern Option<iarf_e>
-sp_after_semi_for; // = IARF_FORCE
-
-// Add or remove space after the final semicolon of an empty part of a for
-// statement, as in 'for ( ; ; <here> )'.
-extern Option<iarf_e>
-sp_after_semi_for_empty;
-
-// Add or remove space before '[' (except '[]').
-extern Option<iarf_e>
-sp_before_square;
-
-// Add or remove space before '[' for a variable definition.
-extern Option<iarf_e>
-sp_before_vardef_square; // = IARF_REMOVE
-
-// Add or remove space before '[' for asm block.
-extern Option<iarf_e>
-sp_before_square_asm_block;
-
-// Add or remove space before '[]'.
-extern Option<iarf_e>
-sp_before_squares;
-
-// Add or remove space before C++17 structured bindings.
-extern Option<iarf_e>
-sp_cpp_before_struct_binding;
-
-// Add or remove space inside a non-empty '[' and ']'.
-extern Option<iarf_e>
-sp_inside_square;
-
-// Add or remove space inside '[]'.
-extern Option<iarf_e>
-sp_inside_square_empty;
-
-// (OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and
-// ']'. If set to ignore, sp_inside_square is used.
-extern Option<iarf_e>
-sp_inside_square_oc_array;
-
-// Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.
-extern Option<iarf_e>
-sp_after_comma;
-
-// Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.
-extern Option<iarf_e>
-sp_before_comma; // = IARF_REMOVE
-
-// (C#, Vala) Add or remove space between ',' and ']' in multidimensional array type
-// like 'int[,,]'.
-extern Option<iarf_e>
-sp_after_mdatype_commas;
-
-// (C#, Vala) Add or remove space between '[' and ',' in multidimensional array type
-// like 'int[,,]'.
-extern Option<iarf_e>
-sp_before_mdatype_commas;
-
-// (C#, Vala) Add or remove space between ',' in multidimensional array type
-// like 'int[,,]'.
-extern Option<iarf_e>
-sp_between_mdatype_commas;
-
-// Add or remove space between an open parenthesis and comma,
-// i.e. '(,' vs. '( ,'.
-extern Option<iarf_e>
-sp_paren_comma; // = IARF_FORCE
-
-// Add or remove space between a type and ':'.
-extern Option<iarf_e>
-sp_type_colon;
-
-// Add or remove space after the variadic '...' when preceded by a
-// non-punctuator.
-// The value REMOVE will be overridden with FORCE
-extern Option<iarf_e>
-sp_after_ellipsis;
-
-// Add or remove space before the variadic '...' when preceded by a
-// non-punctuator.
-// The value REMOVE will be overridden with FORCE
-extern Option<iarf_e>
-sp_before_ellipsis;
-
-// Add or remove space between a type and '...'.
-extern Option<iarf_e>
-sp_type_ellipsis;
-
-// Add or remove space between a '*' and '...'.
-extern Option<iarf_e>
-sp_ptr_type_ellipsis;
-
-// Add or remove space between ')' and '...'.
-extern Option<iarf_e>
-sp_paren_ellipsis;
-
-// Add or remove space between '&&' and '...'.
-extern Option<iarf_e>
-sp_byref_ellipsis;
-
-// Add or remove space between ')' and a qualifier such as 'const'.
-extern Option<iarf_e>
-sp_paren_qualifier;
-
-// Add or remove space between ')' and 'noexcept'.
-extern Option<iarf_e>
-sp_paren_noexcept;
-
-// Add or remove space after class ':'.
-extern Option<iarf_e>
-sp_after_class_colon;
-
-// Add or remove space before class ':'.
-extern Option<iarf_e>
-sp_before_class_colon;
-
-// Add or remove space after class constructor ':'.
-extern Option<iarf_e>
-sp_after_constr_colon; // = IARF_ADD
-
-// Add or remove space before class constructor ':'.
-extern Option<iarf_e>
-sp_before_constr_colon; // = IARF_ADD
-
-// Add or remove space before case ':'.
-extern Option<iarf_e>
-sp_before_case_colon; // = IARF_REMOVE
-
-// Add or remove space between 'operator' and operator sign.
-extern Option<iarf_e>
-sp_after_operator;
-
-// Add or remove space between the operator symbol and the open parenthesis, as
-// in 'operator ++('.
-extern Option<iarf_e>
-sp_after_operator_sym;
-
-// Overrides sp_after_operator_sym when the operator has no arguments, as in
-// 'operator *()'.
-extern Option<iarf_e>
-sp_after_operator_sym_empty;
-
-// Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or
-// '(int)a' vs. '(int) a'.
-extern Option<iarf_e>
-sp_after_cast;
-
-// Add or remove spaces inside cast parentheses.
-extern Option<iarf_e>
-sp_inside_paren_cast;
-
-// Add or remove space between the type and open parenthesis in a C++ cast,
-// i.e. 'int(exp)' vs. 'int (exp)'.
-extern Option<iarf_e>
-sp_cpp_cast_paren;
-
-// Add or remove space between 'sizeof' and '('.
-extern Option<iarf_e>
-sp_sizeof_paren;
-
-// Add or remove space between 'sizeof' and '...'.
-extern Option<iarf_e>
-sp_sizeof_ellipsis;
-
-// Add or remove space between 'sizeof...' and '('.
-extern Option<iarf_e>
-sp_sizeof_ellipsis_paren;
-
-// Add or remove space between '...' and a parameter pack.
-extern Option<iarf_e>
-sp_ellipsis_parameter_pack;
-
-// Add or remove space between a parameter pack and '...'.
-extern Option<iarf_e>
-sp_parameter_pack_ellipsis;
-
-// Add or remove space between 'decltype' and '('.
-extern Option<iarf_e>
-sp_decltype_paren;
-
-// (Pawn) Add or remove space after the tag keyword.
-extern Option<iarf_e>
-sp_after_tag;
-
-// Add or remove space inside enum '{' and '}'.
-extern Option<iarf_e>
-sp_inside_braces_enum;
-
-// Add or remove space inside struct/union '{' and '}'.
-extern Option<iarf_e>
-sp_inside_braces_struct;
-
-// (OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'
-extern Option<iarf_e>
-sp_inside_braces_oc_dict;
-
-// Add or remove space after open brace in an unnamed temporary
-// direct-list-initialization
-// if statement is a brace_init_lst
-// works only if sp_brace_brace is set to ignore.
-extern Option<iarf_e>
-sp_after_type_brace_init_lst_open;
-
-// Add or remove space before close brace in an unnamed temporary
-// direct-list-initialization
-// if statement is a brace_init_lst
-// works only if sp_brace_brace is set to ignore.
-extern Option<iarf_e>
-sp_before_type_brace_init_lst_close;
-
-// Add or remove space inside an unnamed temporary direct-list-initialization
-// if statement is a brace_init_lst
-// works only if sp_brace_brace is set to ignore
-// works only if sp_before_type_brace_init_lst_close is set to ignore.
-extern Option<iarf_e>
-sp_inside_type_brace_init_lst;
-
-// Add or remove space inside '{' and '}'.
-extern Option<iarf_e>
-sp_inside_braces;
-
-// Add or remove space inside '{}'.
-extern Option<iarf_e>
-sp_inside_braces_empty;
-
-// Add or remove space around trailing return operator '->'.
-extern Option<iarf_e>
-sp_trailing_return;
-
-// Add or remove space between return type and function name. A minimum of 1
-// is forced except for pointer return types.
-extern Option<iarf_e>
-sp_type_func;
-
-// Add or remove space between type and open brace of an unnamed temporary
-// direct-list-initialization.
-extern Option<iarf_e>
-sp_type_brace_init_lst;
-
-// Add or remove space between function name and '(' on function declaration.
-extern Option<iarf_e>
-sp_func_proto_paren;
-
-// Add or remove space between function name and '()' on function declaration
-// without parameters.
-extern Option<iarf_e>
-sp_func_proto_paren_empty;
-
-// Add or remove space between function name and '(' with a typedef specifier.
-extern Option<iarf_e>
-sp_func_type_paren;
-
-// Add or remove space between alias name and '(' of a non-pointer function type typedef.
-extern Option<iarf_e>
-sp_func_def_paren;
-
-// Add or remove space between function name and '()' on function definition
-// without parameters.
-extern Option<iarf_e>
-sp_func_def_paren_empty;
-
-// Add or remove space inside empty function '()'.
-// Overrides sp_after_angle unless use_sp_after_angle_always is set to true.
-extern Option<iarf_e>
-sp_inside_fparens;
-
-// Add or remove space inside function '(' and ')'.
-extern Option<iarf_e>
-sp_inside_fparen;
-
-// Add or remove space inside the first parentheses in a function type, as in
-// 'void (*x)(...)'.
-extern Option<iarf_e>
-sp_inside_tparen;
-
-// Add or remove space between the ')' and '(' in a function type, as in
-// 'void (*x)(...)'.
-extern Option<iarf_e>
-sp_after_tparen_close;
-
-// Add or remove space between ']' and '(' when part of a function call.
-extern Option<iarf_e>
-sp_square_fparen;
-
-// Add or remove space between ')' and '{' of function.
-extern Option<iarf_e>
-sp_fparen_brace;
-
-// Add or remove space between ')' and '{' of a function call in object
-// initialization.
-//
-// Overrides sp_fparen_brace.
-extern Option<iarf_e>
-sp_fparen_brace_initializer;
-
-// (Java) Add or remove space between ')' and '{{' of double brace initializer.
-extern Option<iarf_e>
-sp_fparen_dbrace;
-
-// Add or remove space between function name and '(' on function calls.
-extern Option<iarf_e>
-sp_func_call_paren;
-
-// Add or remove space between function name and '()' on function calls without
-// parameters. If set to ignore (the default), sp_func_call_paren is used.
-extern Option<iarf_e>
-sp_func_call_paren_empty;
-
-// Add or remove space between the user function name and '(' on function
-// calls. You need to set a keyword to be a user function in the config file,
-// like:
-// set func_call_user tr _ i18n
-extern Option<iarf_e>
-sp_func_call_user_paren;
-
-// Add or remove space inside user function '(' and ')'.
-extern Option<iarf_e>
-sp_func_call_user_inside_fparen;
-
-// Add or remove space between nested parentheses with user functions,
-// i.e. '((' vs. '( ('.
-extern Option<iarf_e>
-sp_func_call_user_paren_paren;
-
-// Add or remove space between a constructor/destructor and the open
-// parenthesis.
-extern Option<iarf_e>
-sp_func_class_paren;
-
-// Add or remove space between a constructor without parameters or destructor
-// and '()'.
-extern Option<iarf_e>
-sp_func_class_paren_empty;
-
-// Add or remove space after 'return'.
-extern Option<iarf_e>
-sp_return; // = IARF_FORCE
-
-// Add or remove space between 'return' and '('.
-extern Option<iarf_e>
-sp_return_paren;
-
-// Add or remove space between 'return' and '{'.
-extern Option<iarf_e>
-sp_return_brace;
-
-// Add or remove space between '__attribute__' and '('.
-extern Option<iarf_e>
-sp_attribute_paren;
-
-// Add or remove space between 'defined' and '(' in '#if defined (FOO)'.
-extern Option<iarf_e>
-sp_defined_paren;
-
-// Add or remove space between 'throw' and '(' in 'throw (something)'.
-extern Option<iarf_e>
-sp_throw_paren;
-
-// Add or remove space between 'throw' and anything other than '(' as in
-// '@throw [...];'.
-extern Option<iarf_e>
-sp_after_throw;
-
-// Add or remove space between 'catch' and '(' in 'catch (something) { }'.
-// If set to ignore, sp_before_sparen is used.
-extern Option<iarf_e>
-sp_catch_paren;
-
-// (OC) Add or remove space between '@catch' and '('
-// in '@catch (something) { }'. If set to ignore, sp_catch_paren is used.
-extern Option<iarf_e>
-sp_oc_catch_paren;
-
-// (OC) Add or remove space before Objective-C protocol list
-// as in '@protocol Protocol<here><Protocol_A>' or '@interface MyClass : NSObject<here><MyProtocol>'.
-extern Option<iarf_e>
-sp_before_oc_proto_list;
-
-// (OC) Add or remove space between class name and '('
-// in '@interface className(categoryName)<ProtocolName>:BaseClass'
-extern Option<iarf_e>
-sp_oc_classname_paren;
-
-// (D) Add or remove space between 'version' and '('
-// in 'version (something) { }'. If set to ignore, sp_before_sparen is used.
-extern Option<iarf_e>
-sp_version_paren;
-
-// (D) Add or remove space between 'scope' and '('
-// in 'scope (something) { }'. If set to ignore, sp_before_sparen is used.
-extern Option<iarf_e>
-sp_scope_paren;
-
-// Add or remove space between 'super' and '(' in 'super (something)'.
-extern Option<iarf_e>
-sp_super_paren; // = IARF_REMOVE
-
-// Add or remove space between 'this' and '(' in 'this (something)'.
-extern Option<iarf_e>
-sp_this_paren; // = IARF_REMOVE
-
-// Add or remove space between a macro name and its definition.
-extern Option<iarf_e>
-sp_macro;
-
-// Add or remove space between a macro function ')' and its definition.
-extern Option<iarf_e>
-sp_macro_func;
-
-// Add or remove space between 'else' and '{' if on the same line.
-extern Option<iarf_e>
-sp_else_brace;
-
-// Add or remove space between '}' and 'else' if on the same line.
-extern Option<iarf_e>
-sp_brace_else;
-
-// Add or remove space between '}' and the name of a typedef on the same line.
-extern Option<iarf_e>
-sp_brace_typedef;
-
-// Add or remove space before the '{' of a 'catch' statement, if the '{' and
-// 'catch' are on the same line, as in 'catch (decl) <here> {'.
-extern Option<iarf_e>
-sp_catch_brace;
-
-// (OC) Add or remove space before the '{' of a '@catch' statement, if the '{'
-// and '@catch' are on the same line, as in '@catch (decl) <here> {'.
-// If set to ignore, sp_catch_brace is used.
-extern Option<iarf_e>
-sp_oc_catch_brace;
-
-// Add or remove space between '}' and 'catch' if on the same line.
-extern Option<iarf_e>
-sp_brace_catch;
-
-// (OC) Add or remove space between '}' and '@catch' if on the same line.
-// If set to ignore, sp_brace_catch is used.
-extern Option<iarf_e>
-sp_oc_brace_catch;
-
-// Add or remove space between 'finally' and '{' if on the same line.
-extern Option<iarf_e>
-sp_finally_brace;
-
-// Add or remove space between '}' and 'finally' if on the same line.
-extern Option<iarf_e>
-sp_brace_finally;
-
-// Add or remove space between 'try' and '{' if on the same line.
-extern Option<iarf_e>
-sp_try_brace;
-
-// Add or remove space between get/set and '{' if on the same line.
-extern Option<iarf_e>
-sp_getset_brace;
-
-// Add or remove space between a variable and '{' for C++ uniform
-// initialization.
-extern Option<iarf_e>
-sp_word_brace_init_lst;
-
-// Add or remove space between a variable and '{' for a namespace.
-extern Option<iarf_e>
-sp_word_brace_ns; // = IARF_ADD
-
-// Add or remove space before the '::' operator.
-extern Option<iarf_e>
-sp_before_dc;
-
-// Add or remove space after the '::' operator.
-extern Option<iarf_e>
-sp_after_dc;
-
-// (D) Add or remove around the D named array initializer ':' operator.
-extern Option<iarf_e>
-sp_d_array_colon;
-
-// Add or remove space after the '!' (not) unary operator.
-extern Option<iarf_e>
-sp_not; // = IARF_REMOVE
-
-// Add or remove space between two '!' (not) unary operators.
-// If set to ignore, sp_not will be used.
-extern Option<iarf_e>
-sp_not_not; // = IARF_IGNORE
-
-// Add or remove space after the '~' (invert) unary operator.
-extern Option<iarf_e>
-sp_inv; // = IARF_REMOVE
-
-// Add or remove space after the '&' (address-of) unary operator. This does not
-// affect the spacing after a '&' that is part of a type.
-extern Option<iarf_e>
-sp_addr; // = IARF_REMOVE
-
-// Add or remove space around the '.' or '->' operators.
-extern Option<iarf_e>
-sp_member; // = IARF_REMOVE
-
-// Add or remove space after the '*' (dereference) unary operator. This does
-// not affect the spacing after a '*' that is part of a type.
-extern Option<iarf_e>
-sp_deref; // = IARF_REMOVE
-
-// Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.
-extern Option<iarf_e>
-sp_sign; // = IARF_REMOVE
-
-// Add or remove space between '++' and '--' the word to which it is being
-// applied, as in '(--x)' or 'y++;'.
-extern Option<iarf_e>
-sp_incdec; // = IARF_REMOVE
-
-// Add or remove space before a backslash-newline at the end of a line.
-extern Option<iarf_e>
-sp_before_nl_cont; // = IARF_ADD
-
-// (OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;'
-// or '+(int) bar;'.
-extern Option<iarf_e>
-sp_after_oc_scope;
-
-// (OC) Add or remove space after the colon in message specs,
-// i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.
-extern Option<iarf_e>
-sp_after_oc_colon;
-
-// (OC) Add or remove space before the colon in message specs,
-// i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.
-extern Option<iarf_e>
-sp_before_oc_colon;
-
-// (OC) Add or remove space after the colon in immutable dictionary expression
-// 'NSDictionary *test = @{@"foo" :@"bar"};'.
-extern Option<iarf_e>
-sp_after_oc_dict_colon;
-
-// (OC) Add or remove space before the colon in immutable dictionary expression
-// 'NSDictionary *test = @{@"foo" :@"bar"};'.
-extern Option<iarf_e>
-sp_before_oc_dict_colon;
-
-// (OC) Add or remove space after the colon in message specs,
-// i.e. '[object setValue:1];' vs. '[object setValue: 1];'.
-extern Option<iarf_e>
-sp_after_send_oc_colon;
-
-// (OC) Add or remove space before the colon in message specs,
-// i.e. '[object setValue:1];' vs. '[object setValue :1];'.
-extern Option<iarf_e>
-sp_before_send_oc_colon;
-
-// (OC) Add or remove space after the (type) in message specs,
-// i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'.
-extern Option<iarf_e>
-sp_after_oc_type;
-
-// (OC) Add or remove space after the first (type) in message specs,
-// i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'.
-extern Option<iarf_e>
-sp_after_oc_return_type;
-
-// (OC) Add or remove space between '@selector' and '(',
-// i.e. '@selector(msgName)' vs. '@selector (msgName)'.
-// Also applies to '@protocol()' constructs.
-extern Option<iarf_e>
-sp_after_oc_at_sel;
-
-// (OC) Add or remove space between '@selector(x)' and the following word,
-// i.e. '@selector(foo) a:' vs. '@selector(foo)a:'.
-extern Option<iarf_e>
-sp_after_oc_at_sel_parens;
-
-// (OC) Add or remove space inside '@selector' parentheses,
-// i.e. '@selector(foo)' vs. '@selector( foo )'.
-// Also applies to '@protocol()' constructs.
-extern Option<iarf_e>
-sp_inside_oc_at_sel_parens;
-
-// (OC) Add or remove space before a block pointer caret,
-// i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'.
-extern Option<iarf_e>
-sp_before_oc_block_caret;
-
-// (OC) Add or remove space after a block pointer caret,
-// i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'.
-extern Option<iarf_e>
-sp_after_oc_block_caret;
-
-// (OC) Add or remove space between the receiver and selector in a message,
-// as in '[receiver selector ...]'.
-extern Option<iarf_e>
-sp_after_oc_msg_receiver;
-
-// (OC) Add or remove space after '@property'.
-extern Option<iarf_e>
-sp_after_oc_property;
-
-// (OC) Add or remove space between '@synchronized' and the open parenthesis,
-// i.e. '@synchronized(foo)' vs. '@synchronized (foo)'.
-extern Option<iarf_e>
-sp_after_oc_synchronized;
-
-// Add or remove space around the ':' in 'b ? t : f'.
-extern Option<iarf_e>
-sp_cond_colon;
-
-// Add or remove space before the ':' in 'b ? t : f'.
-//
-// Overrides sp_cond_colon.
-extern Option<iarf_e>
-sp_cond_colon_before;
-
-// Add or remove space after the ':' in 'b ? t : f'.
-//
-// Overrides sp_cond_colon.
-extern Option<iarf_e>
-sp_cond_colon_after;
-
-// Add or remove space around the '?' in 'b ? t : f'.
-extern Option<iarf_e>
-sp_cond_question;
-
-// Add or remove space before the '?' in 'b ? t : f'.
-//
-// Overrides sp_cond_question.
-extern Option<iarf_e>
-sp_cond_question_before;
-
-// Add or remove space after the '?' in 'b ? t : f'.
-//
-// Overrides sp_cond_question.
-extern Option<iarf_e>
-sp_cond_question_after;
-
-// In the abbreviated ternary form '(a ?: b)', add or remove space between '?'
-// and ':'.
-//
-// Overrides all other sp_cond_* options.
-extern Option<iarf_e>
-sp_cond_ternary_short;
-
-// Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make
-// sense here.
-extern Option<iarf_e>
-sp_case_label;
-
-// (D) Add or remove space around the D '..' operator.
-extern Option<iarf_e>
-sp_range;
-
-// Add or remove space after ':' in a Java/C++11 range-based 'for',
-// as in 'for (Type var : <here> expr)'.
-extern Option<iarf_e>
-sp_after_for_colon;
-
-// Add or remove space before ':' in a Java/C++11 range-based 'for',
-// as in 'for (Type var <here> : expr)'.
-extern Option<iarf_e>
-sp_before_for_colon;
-
-// (D) Add or remove space between 'extern' and '(' as in 'extern <here> (C)'.
-extern Option<iarf_e>
-sp_extern_paren;
-
-// Add or remove space after the opening of a C++ comment, as in '// <here> A'.
-extern Option<iarf_e>
-sp_cmt_cpp_start;
-
-// Add or remove space in a C++ region marker comment, as in '// <here> BEGIN'.
-// A region marker is defined as a comment which is not preceded by other text
-// (i.e. the comment is the first non-whitespace on the line), and which starts
-// with either 'BEGIN' or 'END'.
-//
-// Overrides sp_cmt_cpp_start.
-extern Option<iarf_e>
-sp_cmt_cpp_region;
-
-// If true, space added with sp_cmt_cpp_start will be added after Doxygen
-// sequences like '///', '///<', '//!' and '//!<'.
-extern Option<bool>
-sp_cmt_cpp_doxygen;
-
-// If true, space added with sp_cmt_cpp_start will be added after Qt translator
-// or meta-data comments like '//:', '//=', and '//~'.
-extern Option<bool>
-sp_cmt_cpp_qttr;
-
-// Add or remove space between #else or #endif and a trailing comment.
-extern Option<iarf_e>
-sp_endif_cmt;
-
-// Add or remove space after 'new', 'delete' and 'delete[]'.
-extern Option<iarf_e>
-sp_after_new;
-
-// Add or remove space between 'new' and '(' in 'new()'.
-extern Option<iarf_e>
-sp_between_new_paren;
-
-// Add or remove space between ')' and type in 'new(foo) BAR'.
-extern Option<iarf_e>
-sp_after_newop_paren;
-
-// Add or remove space inside parentheses of the new operator
-// as in 'new(foo) BAR'.
-extern Option<iarf_e>
-sp_inside_newop_paren;
-
-// Add or remove space after the open parenthesis of the new operator,
-// as in 'new(foo) BAR'.
-//
-// Overrides sp_inside_newop_paren.
-extern Option<iarf_e>
-sp_inside_newop_paren_open;
-
-// Add or remove space before the close parenthesis of the new operator,
-// as in 'new(foo) BAR'.
-//
-// Overrides sp_inside_newop_paren.
-extern Option<iarf_e>
-sp_inside_newop_paren_close;
-
-// Add or remove space before a trailing comment.
-extern Option<iarf_e>
-sp_before_tr_cmt;
-
-// Number of spaces before a trailing comment.
-extern BoundedOption<unsigned, 0, 16>
-sp_num_before_tr_cmt;
-
-// Add or remove space before an embedded comment.
-extern Option<iarf_e>
-sp_before_emb_cmt; // = IARF_FORCE
-
-// Number of spaces before an embedded comment.
-extern BoundedOption<unsigned, 0, 16>
-sp_num_before_emb_cmt; // = 1
-
-// Add or remove space after an embedded comment.
-extern Option<iarf_e>
-sp_after_emb_cmt; // = IARF_FORCE
-
-// Number of spaces after an embedded comment.
-extern BoundedOption<unsigned, 0, 16>
-sp_num_after_emb_cmt; // = 1
-
-// (Java) Add or remove space between an annotation and the open parenthesis.
-extern Option<iarf_e>
-sp_annotation_paren;
-
-// If true, vbrace tokens are dropped to the previous token and skipped.
-extern Option<bool>
-sp_skip_vbrace_tokens;
-
-// Add or remove space after 'noexcept'.
-extern Option<iarf_e>
-sp_after_noexcept;
-
-// Add or remove space after '_'.
-extern Option<iarf_e>
-sp_vala_after_translation;
-
-// If true, a <TAB> is inserted after #define.
-extern Option<bool>
-force_tab_after_define;
-
-//END
-
-///////////////////////////////////////////////////////////////////////////////
-//BEGIN Indenting options
-
-// The number of columns to indent per level. Usually 2, 3, 4, or 8.
-extern BoundedOption<unsigned, 0, 16>
-indent_columns; // = 8
-
-// Whether to ignore indent for the first continuation line. Subsequent
-// continuation lines will still be indented to match the first.
-extern Option<bool>
-indent_ignore_first_continue;
-
-// The continuation indent. If non-zero, this overrides the indent of '(', '['
-// and '=' continuation indents. Negative values are OK; negative value is
-// absolute and not increased for each '(' or '[' level.
-//
-// For FreeBSD, this is set to 4.
-// Requires indent_ignore_first_continue=false.
-extern BoundedOption<signed, -16, 16>
-indent_continue;
-
-// The continuation indent, only for class header line(s). If non-zero, this
-// overrides the indent of 'class' continuation indents.
-// Requires indent_ignore_first_continue=false.
-extern BoundedOption<unsigned, 0, 16>
-indent_continue_class_head;
-
-// Whether to indent empty lines (i.e. lines which contain only spaces before
-// the newline character).
-extern Option<bool>
-indent_single_newlines;
-
-// The continuation indent for func_*_param if they are true. If non-zero, this
-// overrides the indent.
-extern BoundedOption<unsigned, 0, 16>
-indent_param;
-
-// How to use tabs when indenting code.
-//
-// 0: Spaces only
-// 1: Indent with tabs to brace level, align with spaces (default)
-// 2: Indent and align with tabs, using spaces when not on a tabstop
-extern BoundedOption<unsigned, 0, 2>
-indent_with_tabs; // = 1
-
-// Whether to indent comments that are not at a brace level with tabs on a
-// tabstop. Requires indent_with_tabs=2. If false, will use spaces.
-extern Option<bool>
-indent_cmt_with_tabs;
-
-// Whether to indent strings broken by '\' so that they line up.
-extern Option<bool>
-indent_align_string;
-
-// The number of spaces to indent multi-line XML strings.
-// Requires indent_align_string=true.
-extern BoundedOption<unsigned, 0, 16>
-indent_xml_string;
-
-// Spaces to indent '{' from level.
-extern BoundedOption<unsigned, 0, 16>
-indent_brace;
-
-// Whether braces are indented to the body level.
-extern Option<bool>
-indent_braces;
-
-// Whether to disable indenting function braces if indent_braces=true.
-extern Option<bool>
-indent_braces_no_func;
-
-// Whether to disable indenting class braces if indent_braces=true.
-extern Option<bool>
-indent_braces_no_class;
-
-// Whether to disable indenting struct braces if indent_braces=true.
-extern Option<bool>
-indent_braces_no_struct;
-
-// Whether to indent based on the size of the brace parent,
-// i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
-extern Option<bool>
-indent_brace_parent;
-
-// Whether to indent based on the open parenthesis instead of the open brace
-// in '({\n'.
-extern Option<bool>
-indent_paren_open_brace;
-
-// (C#) Whether to indent the brace of a C# delegate by another level.
-extern Option<bool>
-indent_cs_delegate_brace;
-
-// (C#) Whether to indent a C# delegate (to handle delegates with no brace) by
-// another level.
-extern Option<bool>
-indent_cs_delegate_body;
-
-// Whether to indent the body of a 'namespace'.
-extern Option<bool>
-indent_namespace;
-
-// Whether to indent only the first namespace, and not any nested namespaces.
-// Requires indent_namespace=true.
-extern Option<bool>
-indent_namespace_single_indent;
-
-// The number of spaces to indent a namespace block.
-// If set to zero, use the value indent_columns
-extern BoundedOption<unsigned, 0, 16>
-indent_namespace_level;
-
-// If the body of the namespace is longer than this number, it won't be
-// indented. Requires indent_namespace=true. 0 means no limit.
-extern BoundedOption<unsigned, 0, 255>
-indent_namespace_limit;
-
-// Whether to indent only in inner namespaces (nested in other namespaces).
-// Requires indent_namespace=true.
-extern Option<bool>
-indent_namespace_inner_only;
-
-// Whether the 'extern "C"' body is indented.
-extern Option<bool>
-indent_extern;
-
-// Whether the 'class' body is indented.
-extern Option<bool>
-indent_class;
-
-// Whether to ignore indent for the leading base class colon.
-extern Option<bool>
-indent_ignore_before_class_colon;
-
-// Additional indent before the leading base class colon.
-// Negative values decrease indent down to the first column.
-// Requires indent_ignore_before_class_colon=false and a newline break before
-// the colon (see pos_class_colon and nl_class_colon)
-extern BoundedOption<signed, -16, 16>
-indent_before_class_colon;
-
-// Whether to indent the stuff after a leading base class colon.
-extern Option<bool>
-indent_class_colon;
-
-// Whether to indent based on a class colon instead of the stuff after the
-// colon. Requires indent_class_colon=true.
-extern Option<bool>
-indent_class_on_colon;
-
-// Whether to ignore indent for a leading class initializer colon.
-extern Option<bool>
-indent_ignore_before_constr_colon;
-
-// Whether to indent the stuff after a leading class initializer colon.
-extern Option<bool>
-indent_constr_colon;
-
-// Virtual indent from the ':' for leading member initializers.
-extern BoundedOption<unsigned, 0, 16>
-indent_ctor_init_leading; // = 2
-
-// Virtual indent from the ':' for following member initializers.
-extern BoundedOption<unsigned, 0, 16>
-indent_ctor_init_following; // = 2
-
-// Additional indent for constructor initializer list.
-// Negative values decrease indent down to the first column.
-extern BoundedOption<signed, -16, 16>
-indent_ctor_init;
-
-// Whether to indent 'if' following 'else' as a new block under the 'else'.
-// If false, 'else\nif' is treated as 'else if' for indenting purposes.
-extern Option<bool>
-indent_else_if;
-
-// Amount to indent variable declarations after a open brace.
-//
-// <0: Relative
-// >=0: Absolute
-extern BoundedOption<signed, -16, 16>
-indent_var_def_blk;
-
-// Whether to indent continued variable declarations instead of aligning.
-extern Option<bool>
-indent_var_def_cont;
-
-// How to indent continued shift expressions ('<<' and '>>').
-// Set align_left_shift=false when using this.
-// 0: Align shift operators instead of indenting them (default)
-// 1: Indent by one level
-// -1: Preserve original indentation
-extern BoundedOption<signed, -1, 1>
-indent_shift;
-
-// Whether to force indentation of function definitions to start in column 1.
-extern Option<bool>
-indent_func_def_force_col1;
-
-// Whether to indent continued function call parameters one indent level,
-// rather than aligning parameters under the open parenthesis.
-extern Option<bool>
-indent_func_call_param;
-
-// Whether to indent continued function definition parameters one indent level,
-// rather than aligning parameters under the open parenthesis.
-extern Option<bool>
-indent_func_def_param;
-
-// for function definitions, only if indent_func_def_param is false
-// Allows to align params when appropriate and indent them when not
-// behave as if it was true if paren position is more than this value
-// if paren position is more than the option value
-extern BoundedOption<unsigned, 0, 160>
-indent_func_def_param_paren_pos_threshold;
-
-// Whether to indent continued function call prototype one indent level,
-// rather than aligning parameters under the open parenthesis.
-extern Option<bool>
-indent_func_proto_param;
-
-// Whether to indent continued function call declaration one indent level,
-// rather than aligning parameters under the open parenthesis.
-extern Option<bool>
-indent_func_class_param;
-
-// Whether to indent continued class variable constructors one indent level,
-// rather than aligning parameters under the open parenthesis.
-extern Option<bool>
-indent_func_ctor_var_param;
-
-// Whether to indent continued template parameter list one indent level,
-// rather than aligning parameters under the open parenthesis.
-extern Option<bool>
-indent_template_param;
-
-// Double the indent for indent_func_xxx_param options.
-// Use both values of the options indent_columns and indent_param.
-extern Option<bool>
-indent_func_param_double;
-
-// Indentation column for standalone 'const' qualifier on a function
-// prototype.
-extern BoundedOption<unsigned, 0, 69>
-indent_func_const;
-
-// Indentation column for standalone 'throw' qualifier on a function
-// prototype.
-extern BoundedOption<unsigned, 0, 41>
-indent_func_throw;
-
-// How to indent within a macro followed by a brace on the same line
-// This allows reducing the indent in macros that have (for example)
-// `do { ... } while (0)` blocks bracketing them.
-//
-// true: add an indent for the brace on the same line as the macro
-// false: do not add an indent for the brace on the same line as the macro
-extern Option<bool>
-indent_macro_brace; // = true
-
-// The number of spaces to indent a continued '->' or '.'.
-// Usually set to 0, 1, or indent_columns.
-extern BoundedOption<unsigned, 0, 16>
-indent_member;
-
-// Whether lines broken at '.' or '->' should be indented by a single indent.
-// The indent_member option will not be effective if this is set to true.
-extern Option<bool>
-indent_member_single;
-
-// Spaces to indent single line ('//') comments on lines before code.
-extern BoundedOption<unsigned, 0, 16>
-indent_single_line_comments_before;
-
-// Spaces to indent single line ('//') comments on lines after code.
-extern BoundedOption<unsigned, 0, 16>
-indent_single_line_comments_after;
-
-// When opening a paren for a control statement (if, for, while, etc), increase
-// the indent level by this value. Negative values decrease the indent level.
-extern BoundedOption<signed, -16, 16>
-indent_sparen_extra;
-
-// Whether to indent trailing single line ('//') comments relative to the code
-// instead of trying to keep the same absolute column.
-extern Option<bool>
-indent_relative_single_line_comments;
-
-// Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.
-// It might be wise to choose the same value for the option indent_case_brace.
-extern BoundedOption<unsigned, 0, 16>
-indent_switch_case;
-
-// Spaces to indent the body of a 'switch' before any 'case'.
-// Usually the same as indent_columns or indent_switch_case.
-extern BoundedOption<unsigned, 0, 16>
-indent_switch_body;
-
-// Whether to ignore indent for '{' following 'case'.
-extern Option<bool>
-indent_ignore_case_brace;
-
-// Spaces to indent '{' from 'case'. By default, the brace will appear under
-// the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.
-// It might be wise to choose the same value for the option indent_switch_case.
-extern BoundedOption<signed, -16, 16>
-indent_case_brace;
-
-// indent 'break' with 'case' from 'switch'.
-extern Option<bool>
-indent_switch_break_with_case;
-
-// Whether to indent preprocessor statements inside of switch statements.
-extern Option<bool>
-indent_switch_pp; // = true
-
-// Spaces to shift the 'case' line, without affecting any other lines.
-// Usually 0.
-extern BoundedOption<unsigned, 0, 16>
-indent_case_shift;
-
-// Whether to align comments before 'case' with the 'case'.
-extern Option<bool>
-indent_case_comment; // = true
-
-// Whether to indent comments not found in first column.
-extern Option<bool>
-indent_comment; // = true
-
-// Whether to indent comments found in first column.
-extern Option<bool>
-indent_col1_comment;
-
-// Whether to indent multi string literal in first column.
-extern Option<bool>
-indent_col1_multi_string_literal;
-
-// Align comments on adjacent lines that are this many columns apart or less.
-extern BoundedOption<unsigned, 0, 16>
-indent_comment_align_thresh; // = 3
-
-// Whether to ignore indent for goto labels.
-extern Option<bool>
-indent_ignore_label;
-
-// How to indent goto labels. Requires indent_ignore_label=false.
-//
-// >0: Absolute column where 1 is the leftmost column
-// <=0: Subtract from brace indent
-extern BoundedOption<signed, -16, 16>
-indent_label; // = 1
-
-// How to indent access specifiers that are followed by a
-// colon.
-//
-// >0: Absolute column where 1 is the leftmost column
-// <=0: Subtract from brace indent
-extern BoundedOption<signed, -16, 16>
-indent_access_spec; // = 1
-
-// Whether to indent the code after an access specifier by one level.
-// If true, this option forces 'indent_access_spec=0'.
-extern Option<bool>
-indent_access_spec_body;
-
-// If an open parenthesis is followed by a newline, whether to indent the next
-// line so that it lines up after the open parenthesis (not recommended).
-extern Option<bool>
-indent_paren_nl;
-
-// How to indent a close parenthesis after a newline.
-//
-// 0: Indent to body level (default)
-// 1: Align under the open parenthesis
-// 2: Indent to the brace level
-// -1: Preserve original indentation
-extern BoundedOption<signed, -1, 2>
-indent_paren_close;
-
-// Whether to indent the open parenthesis of a function definition,
-// if the parenthesis is on its own line.
-extern Option<bool>
-indent_paren_after_func_def;
-
-// Whether to indent the open parenthesis of a function declaration,
-// if the parenthesis is on its own line.
-extern Option<bool>
-indent_paren_after_func_decl;
-
-// Whether to indent the open parenthesis of a function call,
-// if the parenthesis is on its own line.
-extern Option<bool>
-indent_paren_after_func_call;
-
-// How to indent a comma when inside braces.
-// 0: Indent by one level (default)
-// 1: Align under the open brace
-// -1: Preserve original indentation
-extern BoundedOption<signed, -1, 1>
-indent_comma_brace;
-
-// How to indent a comma when inside parentheses.
-// 0: Indent by one level (default)
-// 1: Align under the open parenthesis
-// -1: Preserve original indentation
-extern BoundedOption<signed, -1, 1>
-indent_comma_paren;
-
-// How to indent a Boolean operator when inside parentheses.
-// 0: Indent by one level (default)
-// 1: Align under the open parenthesis
-// -1: Preserve original indentation
-extern BoundedOption<signed, -1, 1>
-indent_bool_paren;
-
-// Whether to ignore the indentation of a Boolean operator when outside
-// parentheses.
-extern Option<bool>
-indent_ignore_bool;
-
-// Whether to ignore the indentation of an arithmetic operator.
-extern Option<bool>
-indent_ignore_arith;
-
-// Whether to indent a semicolon when inside a for parenthesis.
-// If true, aligns under the open for parenthesis.
-extern Option<bool>
-indent_semicolon_for_paren;
-
-// Whether to ignore the indentation of a semicolon outside of a 'for'
-// statement.
-extern Option<bool>
-indent_ignore_semicolon;
-
-// Whether to align the first expression to following ones
-// if indent_bool_paren=1.
-extern Option<bool>
-indent_first_bool_expr;
-
-// Whether to align the first expression to following ones
-// if indent_semicolon_for_paren=true.
-extern Option<bool>
-indent_first_for_expr;
-
-// If an open square is followed by a newline, whether to indent the next line
-// so that it lines up after the open square (not recommended).
-extern Option<bool>
-indent_square_nl;
-
-// (ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies.
-extern Option<bool>
-indent_preserve_sql;
-
-// Whether to ignore the indentation of an assignment operator.
-extern Option<bool>
-indent_ignore_assign;
-
-// Whether to align continued statements at the '='. If false or if the '=' is
-// followed by a newline, the next line is indent one tab.
-extern Option<bool>
-indent_align_assign; // = true
-
-// If true, the indentation of the chunks after a '=' sequence will be set at
-// LHS token indentation column before '='.
-extern Option<bool>
-indent_off_after_assign;
-
-// Whether to align continued statements at the '('. If false or the '(' is
-// followed by a newline, the next line indent is one tab.
-extern Option<bool>
-indent_align_paren; // = true
-
-// (OC) Whether to indent Objective-C code inside message selectors.
-extern Option<bool>
-indent_oc_inside_msg_sel;
-
-// (OC) Whether to indent Objective-C blocks at brace level instead of usual
-// rules.
-extern Option<bool>
-indent_oc_block;
-
-// (OC) Indent for Objective-C blocks in a message relative to the parameter
-// name.
-//
-// =0: Use indent_oc_block rules
-// >0: Use specified number of spaces to indent
-extern BoundedOption<unsigned, 0, 16>
-indent_oc_block_msg;
-
-// (OC) Minimum indent for subsequent parameters
-extern BoundedOption<unsigned, 0, 5000>
-indent_oc_msg_colon;
-
-// (OC) Whether to prioritize aligning with initial colon (and stripping spaces
-// from lines, if necessary).
-extern Option<bool>
-indent_oc_msg_prioritize_first_colon; // = true
-
-// (OC) Whether to indent blocks the way that Xcode does by default
-// (from the keyword if the parameter is on its own line; otherwise, from the
-// previous indentation level). Requires indent_oc_block_msg=true.
-extern Option<bool>
-indent_oc_block_msg_xcode_style;
-
-// (OC) Whether to indent blocks from where the brace is, relative to a
-// message keyword. Requires indent_oc_block_msg=true.
-extern Option<bool>
-indent_oc_block_msg_from_keyword;
-
-// (OC) Whether to indent blocks from where the brace is, relative to a message
-// colon. Requires indent_oc_block_msg=true.
-extern Option<bool>
-indent_oc_block_msg_from_colon;
-
-// (OC) Whether to indent blocks from where the block caret is.
-// Requires indent_oc_block_msg=true.
-extern Option<bool>
-indent_oc_block_msg_from_caret;
-
-// (OC) Whether to indent blocks from where the brace caret is.
-// Requires indent_oc_block_msg=true.
-extern Option<bool>
-indent_oc_block_msg_from_brace;
-
-// When indenting after virtual brace open and newline add further spaces to
-// reach this minimum indent.
-extern BoundedOption<unsigned, 0, 16>
-indent_min_vbrace_open;
-
-// Whether to add further spaces after regular indent to reach next tabstop
-// when indenting after virtual brace open and newline.
-extern Option<bool>
-indent_vbrace_open_on_tabstop;
-
-// How to indent after a brace followed by another token (not a newline).
-// true: indent all contained lines to match the token
-// false: indent all contained lines to match the brace
-extern Option<bool>
-indent_token_after_brace; // = true
-
-// Whether to indent the body of a C++11 lambda.
-extern Option<bool>
-indent_cpp_lambda_body;
-
-// How to indent compound literals that are being returned.
-// true: add both the indent from return & the compound literal open brace
-// (i.e. 2 indent levels)
-// false: only indent 1 level, don't add the indent for the open brace, only
-// add the indent for the return.
-extern Option<bool>
-indent_compound_literal_return; // = true
-
-// (C#) Whether to indent a 'using' block if no braces are used.
-extern Option<bool>
-indent_using_block; // = true
-
-// How to indent the continuation of ternary operator.
-//
-// 0: Off (default)
-// 1: When the `if_false` is a continuation, indent it under the `if_true` branch
-// 2: When the `:` is a continuation, indent it under `?`
-extern BoundedOption<unsigned, 0, 2>
-indent_ternary_operator;
-
-// Whether to indent the statements inside ternary operator.
-extern Option<bool>
-indent_inside_ternary_operator;
-
-// If true, the indentation of the chunks after a `return` sequence will be set at return indentation column.
-extern Option<bool>
-indent_off_after_return;
-
-// If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column.
-extern Option<bool>
-indent_off_after_return_new;
-
-// If true, the tokens after return are indented with regular single indentation. By default (false) the indentation is after the return token.
-extern Option<bool>
-indent_single_after_return;
-
-// Whether to ignore indent and alignment for 'asm' blocks (i.e. assume they
-// have their own indentation).
-extern Option<bool>
-indent_ignore_asm_block;
-
-// Don't indent the close parenthesis of a function definition,
-// if the parenthesis is on its own line.
-extern Option<bool>
-donot_indent_func_def_close_paren;
-
-//END
-
-///////////////////////////////////////////////////////////////////////////////
-//BEGIN Newline adding and removing options
-
-// Whether to collapse empty blocks between '{' and '}' except for functions.
-// Use nl_collapse_empty_body_functions to specify how empty function braces
-// should be formatted.
-extern Option<bool>
-nl_collapse_empty_body;
-
-// Whether to collapse empty blocks between '{' and '}' for functions only.
-// If true, overrides nl_inside_empty_func.
-extern Option<bool>
-nl_collapse_empty_body_functions;
-
-// Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'.
-extern Option<bool>
-nl_assign_leave_one_liners;
-
-// Don't split one-line braced statements inside a 'class xx { }' body.
-extern Option<bool>
-nl_class_leave_one_liners;
-
-// Don't split one-line enums, as in 'enum foo { BAR = 15 };'
-extern Option<bool>
-nl_enum_leave_one_liners;
-
-// Don't split one-line get or set functions.
-extern Option<bool>
-nl_getset_leave_one_liners;
-
-// (C#) Don't split one-line property get or set functions.
-extern Option<bool>
-nl_cs_property_leave_one_liners;
-
-// Don't split one-line function definitions, as in 'int foo() { return 0; }'.
-// might modify nl_func_type_name
-extern Option<bool>
-nl_func_leave_one_liners;
-
-// Don't split one-line C++11 lambdas, as in '[]() { return 0; }'.
-extern Option<bool>
-nl_cpp_lambda_leave_one_liners;
-
-// Don't split one-line if/else statements, as in 'if(...) b++;'.
-extern Option<bool>
-nl_if_leave_one_liners;
-
-// Don't split one-line while statements, as in 'while(...) b++;'.
-extern Option<bool>
-nl_while_leave_one_liners;
-
-// Don't split one-line do statements, as in 'do { b++; } while(...);'.
-extern Option<bool>
-nl_do_leave_one_liners;
-
-// Don't split one-line for statements, as in 'for(...) b++;'.
-extern Option<bool>
-nl_for_leave_one_liners;
-
-// (OC) Don't split one-line Objective-C messages.
-extern Option<bool>
-nl_oc_msg_leave_one_liner;
-
-// (OC) Add or remove newline between method declaration and '{'.
-extern Option<iarf_e>
-nl_oc_mdef_brace;
-
-// (OC) Add or remove newline between Objective-C block signature and '{'.
-extern Option<iarf_e>
-nl_oc_block_brace;
-
-// (OC) Add or remove blank line before '@interface' statement.
-extern Option<iarf_e>
-nl_oc_before_interface;
-
-// (OC) Add or remove blank line before '@implementation' statement.
-extern Option<iarf_e>
-nl_oc_before_implementation;
-
-// (OC) Add or remove blank line before '@end' statement.
-extern Option<iarf_e>
-nl_oc_before_end;
-
-// (OC) Add or remove newline between '@interface' and '{'.
-extern Option<iarf_e>
-nl_oc_interface_brace;
-
-// (OC) Add or remove newline between '@implementation' and '{'.
-extern Option<iarf_e>
-nl_oc_implementation_brace;
-
-// Add or remove newlines at the start of the file.
-extern Option<iarf_e>
-nl_start_of_file;
-
-// The minimum number of newlines at the start of the file (only used if
-// nl_start_of_file is 'add' or 'force').
-extern BoundedOption<unsigned, 0, 16>
-nl_start_of_file_min;
-
-// Add or remove newline at the end of the file.
-extern Option<iarf_e>
-nl_end_of_file;
-
-// The minimum number of newlines at the end of the file (only used if
-// nl_end_of_file is 'add' or 'force').
-extern BoundedOption<unsigned, 0, 16>
-nl_end_of_file_min;
-
-// Add or remove newline between '=' and '{'.
-extern Option<iarf_e>
-nl_assign_brace;
-
-// (D) Add or remove newline between '=' and '['.
-extern Option<iarf_e>
-nl_assign_square;
-
-// Add or remove newline between '[]' and '{'.
-extern Option<iarf_e>
-nl_tsquare_brace;
-
-// (D) Add or remove newline after '= ['. Will also affect the newline before
-// the ']'.
-extern Option<iarf_e>
-nl_after_square_assign;
-
-// Add or remove newline between a function call's ')' and '{', as in
-// 'list_for_each(item, &list) { }'.
-extern Option<iarf_e>
-nl_fcall_brace;
-
-// Add or remove newline between 'enum' and '{'.
-extern Option<iarf_e>
-nl_enum_brace;
-
-// Add or remove newline between 'enum' and 'class'.
-extern Option<iarf_e>
-nl_enum_class;
-
-// Add or remove newline between 'enum class' and the identifier.
-extern Option<iarf_e>
-nl_enum_class_identifier;
-
-// Add or remove newline between 'enum class' type and ':'.
-extern Option<iarf_e>
-nl_enum_identifier_colon;
-
-// Add or remove newline between 'enum class identifier :' and type.
-extern Option<iarf_e>
-nl_enum_colon_type;
-
-// Add or remove newline between 'struct and '{'.
-extern Option<iarf_e>
-nl_struct_brace;
-
-// Add or remove newline between 'union' and '{'.
-extern Option<iarf_e>
-nl_union_brace;
-
-// Add or remove newline between 'if' and '{'.
-extern Option<iarf_e>
-nl_if_brace;
-
-// Add or remove newline between '}' and 'else'.
-extern Option<iarf_e>
-nl_brace_else;
-
-// Add or remove newline between 'else if' and '{'. If set to ignore,
-// nl_if_brace is used instead.
-extern Option<iarf_e>
-nl_elseif_brace;
-
-// Add or remove newline between 'else' and '{'.
-extern Option<iarf_e>
-nl_else_brace;
-
-// Add or remove newline between 'else' and 'if'.
-extern Option<iarf_e>
-nl_else_if;
-
-// Add or remove newline before '{' opening brace
-extern Option<iarf_e>
-nl_before_opening_brace_func_class_def;
-
-// Add or remove newline before 'if'/'else if' closing parenthesis.
-extern Option<iarf_e>
-nl_before_if_closing_paren;
-
-// Add or remove newline between '}' and 'finally'.
-extern Option<iarf_e>
-nl_brace_finally;
-
-// Add or remove newline between 'finally' and '{'.
-extern Option<iarf_e>
-nl_finally_brace;
-
-// Add or remove newline between 'try' and '{'.
-extern Option<iarf_e>
-nl_try_brace;
-
-// Add or remove newline between get/set and '{'.
-extern Option<iarf_e>
-nl_getset_brace;
-
-// Add or remove newline between 'for' and '{'.
-extern Option<iarf_e>
-nl_for_brace;
-
-// Add or remove newline before the '{' of a 'catch' statement, as in
-// 'catch (decl) <here> {'.
-extern Option<iarf_e>
-nl_catch_brace;
-
-// (OC) Add or remove newline before the '{' of a '@catch' statement, as in
-// '@catch (decl) <here> {'. If set to ignore, nl_catch_brace is used.
-extern Option<iarf_e>
-nl_oc_catch_brace;
-
-// Add or remove newline between '}' and 'catch'.
-extern Option<iarf_e>
-nl_brace_catch;
-
-// (OC) Add or remove newline between '}' and '@catch'. If set to ignore,
-// nl_brace_catch is used.
-extern Option<iarf_e>
-nl_oc_brace_catch;
-
-// Add or remove newline between '}' and ']'.
-extern Option<iarf_e>
-nl_brace_square;
-
-// Add or remove newline between '}' and ')' in a function invocation.
-extern Option<iarf_e>
-nl_brace_fparen;
-
-// Add or remove newline between 'while' and '{'.
-extern Option<iarf_e>
-nl_while_brace;
-
-// (D) Add or remove newline between 'scope (x)' and '{'.
-extern Option<iarf_e>
-nl_scope_brace;
-
-// (D) Add or remove newline between 'unittest' and '{'.
-extern Option<iarf_e>
-nl_unittest_brace;
-
-// (D) Add or remove newline between 'version (x)' and '{'.
-extern Option<iarf_e>
-nl_version_brace;
-
-// (C#) Add or remove newline between 'using' and '{'.
-extern Option<iarf_e>
-nl_using_brace;
-
-// Add or remove newline between two open or close braces. Due to general
-// newline/brace handling, REMOVE may not work.
-extern Option<iarf_e>
-nl_brace_brace;
-
-// Add or remove newline between 'do' and '{'.
-extern Option<iarf_e>
-nl_do_brace;
-
-// Add or remove newline between '}' and 'while' of 'do' statement.
-extern Option<iarf_e>
-nl_brace_while;
-
-// Add or remove newline between 'switch' and '{'.
-extern Option<iarf_e>
-nl_switch_brace;
-
-// Add or remove newline between 'synchronized' and '{'.
-extern Option<iarf_e>
-nl_synchronized_brace;
-
-// 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.
-extern Option<bool>
-nl_multi_line_cond;
-
-// Add a newline after '(' if an if/for/while/switch condition spans multiple
-// lines
-extern Option<iarf_e>
-nl_multi_line_sparen_open;
-
-// Add a newline before ')' if an if/for/while/switch condition spans multiple
-// lines. Overrides nl_before_if_closing_paren if both are specified.
-extern Option<iarf_e>
-nl_multi_line_sparen_close;
-
-// Force a newline in a define after the macro name for multi-line defines.
-extern Option<bool>
-nl_multi_line_define;
-
-// Whether to add a newline before 'case', and a blank line before a 'case'
-// statement that follows a ';' or '}'.
-extern Option<bool>
-nl_before_case;
-
-// Whether to add a newline after a 'case' statement.
-extern Option<bool>
-nl_after_case;
-
-// Add or remove newline between a case ':' and '{'.
-//
-// Overrides nl_after_case.
-extern Option<iarf_e>
-nl_case_colon_brace;
-
-// Add or remove newline between ')' and 'throw'.
-extern Option<iarf_e>
-nl_before_throw;
-
-// Add or remove newline between 'namespace' and '{'.
-extern Option<iarf_e>
-nl_namespace_brace;
-
-// Add or remove newline after 'template<...>' of a template class.
-extern Option<iarf_e>
-nl_template_class;
-
-// Add or remove newline after 'template<...>' of a template class declaration.
-//
-// Overrides nl_template_class.
-extern Option<iarf_e>
-nl_template_class_decl;
-
-// Add or remove newline after 'template<>' of a specialized class declaration.
-//
-// Overrides nl_template_class_decl.
-extern Option<iarf_e>
-nl_template_class_decl_special;
-
-// Add or remove newline after 'template<...>' of a template class definition.
-//
-// Overrides nl_template_class.
-extern Option<iarf_e>
-nl_template_class_def;
-
-// Add or remove newline after 'template<>' of a specialized class definition.
-//
-// Overrides nl_template_class_def.
-extern Option<iarf_e>
-nl_template_class_def_special;
-
-// Add or remove newline after 'template<...>' of a template function.
-extern Option<iarf_e>
-nl_template_func;
-
-// Add or remove newline after 'template<...>' of a template function
-// declaration.
-//
-// Overrides nl_template_func.
-extern Option<iarf_e>
-nl_template_func_decl;
-
-// Add or remove newline after 'template<>' of a specialized function
-// declaration.
-//
-// Overrides nl_template_func_decl.
-extern Option<iarf_e>
-nl_template_func_decl_special;
-
-// Add or remove newline after 'template<...>' of a template function
-// definition.
-//
-// Overrides nl_template_func.
-extern Option<iarf_e>
-nl_template_func_def;
-
-// Add or remove newline after 'template<>' of a specialized function
-// definition.
-//
-// Overrides nl_template_func_def.
-extern Option<iarf_e>
-nl_template_func_def_special;
-
-// Add or remove newline after 'template<...>' of a template variable.
-extern Option<iarf_e>
-nl_template_var;
-
-// Add or remove newline between 'template<...>' and 'using' of a templated
-// type alias.
-extern Option<iarf_e>
-nl_template_using;
-
-// Add or remove newline between 'class' and '{'.
-extern Option<iarf_e>
-nl_class_brace;
-
-// Add or remove newline before or after (depending on pos_class_comma,
-// may not be IGNORE) each',' in the base class list.
-extern Option<iarf_e>
-nl_class_init_args;
-
-// Add or remove newline after each ',' in the constructor member
-// initialization. Related to nl_constr_colon, pos_constr_colon and
-// pos_constr_comma.
-extern Option<iarf_e>
-nl_constr_init_args;
-
-// Add or remove newline before first element, after comma, and after last
-// element, in 'enum'.
-extern Option<iarf_e>
-nl_enum_own_lines;
-
-// Add or remove newline between return type and function name in a function
-// definition.
-// might be modified by nl_func_leave_one_liners
-extern Option<iarf_e>
-nl_func_type_name;
-
-// Add or remove newline between return type and function name inside a class
-// definition. If set to ignore, nl_func_type_name or nl_func_proto_type_name
-// is used instead.
-extern Option<iarf_e>
-nl_func_type_name_class;
-
-// Add or remove newline between class specification and '::'
-// in 'void A::f() { }'. Only appears in separate member implementation (does
-// not appear with in-line implementation).
-extern Option<iarf_e>
-nl_func_class_scope;
-
-// Add or remove newline between function scope and name, as in
-// 'void A :: <here> f() { }'.
-extern Option<iarf_e>
-nl_func_scope_name;
-
-// Add or remove newline between return type and function name in a prototype.
-extern Option<iarf_e>
-nl_func_proto_type_name;
-
-// Add or remove newline between a function name and the opening '(' in the
-// declaration.
-extern Option<iarf_e>
-nl_func_paren;
-
-// Overrides nl_func_paren for functions with no parameters.
-extern Option<iarf_e>
-nl_func_paren_empty;
-
-// Add or remove newline between a function name and the opening '(' in the
-// definition.
-extern Option<iarf_e>
-nl_func_def_paren;
-
-// Overrides nl_func_def_paren for functions with no parameters.
-extern Option<iarf_e>
-nl_func_def_paren_empty;
-
-// Add or remove newline between a function name and the opening '(' in the
-// call.
-extern Option<iarf_e>
-nl_func_call_paren;
-
-// Overrides nl_func_call_paren for functions with no parameters.
-extern Option<iarf_e>
-nl_func_call_paren_empty;
-
-// Add or remove newline after '(' in a function declaration.
-extern Option<iarf_e>
-nl_func_decl_start;
-
-// Add or remove newline after '(' in a function definition.
-extern Option<iarf_e>
-nl_func_def_start;
-
-// Overrides nl_func_decl_start when there is only one parameter.
-extern Option<iarf_e>
-nl_func_decl_start_single;
-
-// Overrides nl_func_def_start when there is only one parameter.
-extern Option<iarf_e>
-nl_func_def_start_single;
-
-// Whether to add a newline after '(' in a function declaration if '(' and ')'
-// are in different lines. If false, nl_func_decl_start is used instead.
-extern Option<bool>
-nl_func_decl_start_multi_line;
-
-// Whether to add a newline after '(' in a function definition if '(' and ')'
-// are in different lines. If false, nl_func_def_start is used instead.
-extern Option<bool>
-nl_func_def_start_multi_line;
-
-// Add or remove newline after each ',' in a function declaration.
-extern Option<iarf_e>
-nl_func_decl_args;
-
-// Add or remove newline after each ',' in a function definition.
-extern Option<iarf_e>
-nl_func_def_args;
-
-// Add or remove newline after each ',' in a function call.
-extern Option<iarf_e>
-nl_func_call_args;
-
-// Whether to add a newline after each ',' in a function declaration if '('
-// and ')' are in different lines. If false, nl_func_decl_args is used instead.
-extern Option<bool>
-nl_func_decl_args_multi_line;
-
-// Whether to add a newline after each ',' in a function definition if '('
-// and ')' are in different lines. If false, nl_func_def_args is used instead.
-extern Option<bool>
-nl_func_def_args_multi_line;
-
-// Add or remove newline before the ')' in a function declaration.
-extern Option<iarf_e>
-nl_func_decl_end;
-
-// Add or remove newline before the ')' in a function definition.
-extern Option<iarf_e>
-nl_func_def_end;
-
-// Overrides nl_func_decl_end when there is only one parameter.
-extern Option<iarf_e>
-nl_func_decl_end_single;
-
-// Overrides nl_func_def_end when there is only one parameter.
-extern Option<iarf_e>
-nl_func_def_end_single;
-
-// Whether to add a newline before ')' in a function declaration if '(' and ')'
-// are in different lines. If false, nl_func_decl_end is used instead.
-extern Option<bool>
-nl_func_decl_end_multi_line;
-
-// Whether to add a newline before ')' in a function definition if '(' and ')'
-// are in different lines. If false, nl_func_def_end is used instead.
-extern Option<bool>
-nl_func_def_end_multi_line;
-
-// Add or remove newline between '()' in a function declaration.
-extern Option<iarf_e>
-nl_func_decl_empty;
-
-// Add or remove newline between '()' in a function definition.
-extern Option<iarf_e>
-nl_func_def_empty;
-
-// Add or remove newline between '()' in a function call.
-extern Option<iarf_e>
-nl_func_call_empty;
-
-// Whether to add a newline after '(' in a function call,
-// has preference over nl_func_call_start_multi_line.
-extern Option<iarf_e>
-nl_func_call_start;
-
-// Whether to add a newline before ')' in a function call.
-extern Option<iarf_e>
-nl_func_call_end;
-
-// Whether to add a newline after '(' in a function call if '(' and ')' are in
-// different lines.
-extern Option<bool>
-nl_func_call_start_multi_line;
-
-// Whether to add a newline after each ',' in a function call if '(' and ')'
-// are in different lines.
-extern Option<bool>
-nl_func_call_args_multi_line;
-
-// Whether to add a newline before ')' in a function call if '(' and ')' are in
-// different lines.
-extern Option<bool>
-nl_func_call_end_multi_line;
-
-// Whether to respect nl_func_call_XXX option in case of closure args.
-extern Option<bool>
-nl_func_call_args_multi_line_ignore_closures; // false
-
-// Whether to add a newline after '<' of a template parameter list.
-extern Option<bool>
-nl_template_start;
-
-// Whether to add a newline after each ',' in a template parameter list.
-extern Option<bool>
-nl_template_args;
-
-// Whether to add a newline before '>' of a template parameter list.
-extern Option<bool>
-nl_template_end;
-
-// (OC) Whether to put each Objective-C message parameter on a separate line.
-// See nl_oc_msg_leave_one_liner.
-extern Option<bool>
-nl_oc_msg_args;
-
-// (OC) Minimum number of Objective-C message parameters before applying nl_oc_msg_args.
-extern BoundedOption<unsigned, 0, 16>
-nl_oc_msg_args_min_params;
-
-// (OC) Max code width of Objective-C message before applying nl_oc_msg_args.
-extern BoundedOption<unsigned, 0, 10000>
-nl_oc_msg_args_max_code_width;
-
-// Add or remove newline between function signature and '{'.
-extern Option<iarf_e>
-nl_fdef_brace;
-
-// Add or remove newline between function signature and '{',
-// if signature ends with ')'. Overrides nl_fdef_brace.
-extern Option<iarf_e>
-nl_fdef_brace_cond;
-
-// Add or remove newline between C++11 lambda signature and '{'.
-extern Option<iarf_e>
-nl_cpp_ldef_brace;
-
-// Add or remove newline between 'return' and the return expression.
-extern Option<iarf_e>
-nl_return_expr;
-
-// Add or remove newline between 'throw' and the throw expression.
-extern Option<iarf_e>
-nl_throw_expr;
-
-// Whether to add a newline after semicolons, except in 'for' statements.
-extern Option<bool>
-nl_after_semicolon;
-
-// (Java) Add or remove newline between the ')' and '{{' of the double brace
-// initializer.
-extern Option<iarf_e>
-nl_paren_dbrace_open;
-
-// Whether to add a newline after the type in an unnamed temporary
-// direct-list-initialization, better:
-// before a direct-list-initialization.
-extern Option<iarf_e>
-nl_type_brace_init_lst;
-
-// Whether to add a newline after the open brace in an unnamed temporary
-// direct-list-initialization.
-extern Option<iarf_e>
-nl_type_brace_init_lst_open;
-
-// Whether to add a newline before the close brace in an unnamed temporary
-// direct-list-initialization.
-extern Option<iarf_e>
-nl_type_brace_init_lst_close;
-
-// Whether to add a newline before '{'.
-extern Option<bool>
-nl_before_brace_open;
-
-// Whether to add a newline after '{'.
-extern Option<bool>
-nl_after_brace_open;
-
-// Whether to add a newline between the open brace and a trailing single-line
-// comment. Requires nl_after_brace_open=true.
-extern Option<bool>
-nl_after_brace_open_cmt;
-
-// Whether to add a newline after a virtual brace open with a non-empty body.
-// These occur in un-braced if/while/do/for statement bodies.
-extern Option<bool>
-nl_after_vbrace_open;
-
-// Whether to add a newline after a virtual brace open with an empty body.
-// These occur in un-braced if/while/do/for statement bodies.
-extern Option<bool>
-nl_after_vbrace_open_empty;
-
-// Whether to add a newline after '}'. Does not apply if followed by a
-// necessary ';'.
-extern Option<bool>
-nl_after_brace_close;
-
-// Whether to add a newline after a virtual brace close,
-// as in 'if (foo) a++; <here> return;'.
-extern Option<bool>
-nl_after_vbrace_close;
-
-// Add or remove newline between the close brace and identifier,
-// as in 'struct { int a; } <here> b;'. Affects enumerations, unions and
-// structures. If set to ignore, uses nl_after_brace_close.
-extern Option<iarf_e>
-nl_brace_struct_var;
-
-// Whether to alter newlines in '#define' macros.
-extern Option<bool>
-nl_define_macro;
-
-// Whether to alter newlines between consecutive parenthesis closes. The number
-// of closing parentheses in a line will depend on respective open parenthesis
-// lines.
-extern Option<bool>
-nl_squeeze_paren_close;
-
-// Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and
-// '#endif'. Does not affect top-level #ifdefs.
-extern Option<bool>
-nl_squeeze_ifdef;
-
-// Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well.
-extern Option<bool>
-nl_squeeze_ifdef_top_level;
-
-// Add or remove blank line before 'if'.
-extern Option<iarf_e>
-nl_before_if;
-
-// Add or remove blank line after 'if' statement. Add/Force work only if the
-// next token is not a closing brace.
-extern Option<iarf_e>
-nl_after_if;
-
-// Add or remove blank line before 'for'.
-extern Option<iarf_e>
-nl_before_for;
-
-// Add or remove blank line after 'for' statement.
-extern Option<iarf_e>
-nl_after_for;
-
-// Add or remove blank line before 'while'.
-extern Option<iarf_e>
-nl_before_while;
-
-// Add or remove blank line after 'while' statement.
-extern Option<iarf_e>
-nl_after_while;
-
-// Add or remove blank line before 'switch'.
-extern Option<iarf_e>
-nl_before_switch;
-
-// Add or remove blank line after 'switch' statement.
-extern Option<iarf_e>
-nl_after_switch;
-
-// Add or remove blank line before 'synchronized'.
-extern Option<iarf_e>
-nl_before_synchronized;
-
-// Add or remove blank line after 'synchronized' statement.
-extern Option<iarf_e>
-nl_after_synchronized;
-
-// Add or remove blank line before 'do'.
-extern Option<iarf_e>
-nl_before_do;
-
-// Add or remove blank line after 'do/while' statement.
-extern Option<iarf_e>
-nl_after_do;
-
-// Ignore nl_before_{if,for,switch,do,synchronized} if the control
-// statement is immediately after a case statement.
-// if nl_before_{if,for,switch,do} is set to remove, this option
-// does nothing.
-extern Option<bool>
-nl_before_ignore_after_case;
-
-// Whether to put a blank line before 'return' statements, unless after an open
-// brace.
-extern Option<bool>
-nl_before_return;
-
-// Whether to put a blank line after 'return' statements, unless followed by a
-// close brace.
-extern Option<bool>
-nl_after_return;
-
-// Whether to put a blank line before a member '.' or '->' operators.
-extern Option<iarf_e>
-nl_before_member;
-
-// (Java) Whether to put a blank line after a member '.' or '->' operators.
-extern Option<iarf_e>
-nl_after_member;
-
-// Whether to double-space commented-entries in 'struct'/'union'/'enum'.
-extern Option<bool>
-nl_ds_struct_enum_cmt;
-
-// Whether to force a newline before '}' of a 'struct'/'union'/'enum'.
-// (Lower priority than eat_blanks_before_close_brace.)
-extern Option<bool>
-nl_ds_struct_enum_close_brace;
-
-// Add or remove newline before or after (depending on pos_class_colon) a class
-// colon, as in 'class Foo <here> : <or here> public Bar'.
-extern Option<iarf_e>
-nl_class_colon;
-
-// Add or remove newline around a class constructor colon. The exact position
-// depends on nl_constr_init_args, pos_constr_colon and pos_constr_comma.
-extern Option<iarf_e>
-nl_constr_colon;
-
-// Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }'
-// into a single line. If true, prevents other brace newline rules from turning
-// such code into four lines. If true, it also preserves one-liner namespaces.
-extern Option<bool>
-nl_namespace_two_to_one_liner;
-
-// Whether to remove a newline in simple unbraced if statements, turning them
-// into one-liners, as in 'if(b)\n i++;' => 'if(b) i++;'.
-extern Option<bool>
-nl_create_if_one_liner;
-
-// Whether to remove a newline in simple unbraced for statements, turning them
-// into one-liners, as in 'for (...)\n stmt;' => 'for (...) stmt;'.
-extern Option<bool>
-nl_create_for_one_liner;
-
-// Whether to remove a newline in simple unbraced while statements, turning
-// them into one-liners, as in 'while (expr)\n stmt;' => 'while (expr) stmt;'.
-extern Option<bool>
-nl_create_while_one_liner;
-
-// Whether to collapse a function definition whose body (not counting braces)
-// is only one line so that the entire definition (prototype, braces, body) is
-// a single line.
-extern Option<bool>
-nl_create_func_def_one_liner;
-
-// Whether to split one-line simple list definitions into three lines by
-// adding newlines, as in 'int a[12] = { <here> 0 <here> };'.
-extern Option<bool>
-nl_create_list_one_liner;
-
-// Whether to split one-line simple unbraced if statements into two lines by
-// adding a newline, as in 'if(b) <here> i++;'.
-extern Option<bool>
-nl_split_if_one_liner;
-
-// Whether to split one-line simple unbraced for statements into two lines by
-// adding a newline, as in 'for (...) <here> stmt;'.
-extern Option<bool>
-nl_split_for_one_liner;
-
-// Whether to split one-line simple unbraced while statements into two lines by
-// adding a newline, as in 'while (expr) <here> stmt;'.
-extern Option<bool>
-nl_split_while_one_liner;
-
-// Don't add a newline before a cpp-comment in a parameter list of a function
-// call.
-extern Option<bool>
-donot_add_nl_before_cpp_comment;
-
-//END
-
-///////////////////////////////////////////////////////////////////////////////
-//BEGIN Blank line options
-
-// The maximum number of consecutive newlines (3 = 2 blank lines).
-extern BoundedOption<unsigned, 0, 16>
-nl_max;
-
-// The maximum number of consecutive newlines in a function.
-extern BoundedOption<unsigned, 0, 16>
-nl_max_blank_in_func;
-
-// The number of newlines inside an empty function body.
-// This option overrides eat_blanks_after_open_brace and
-// eat_blanks_before_close_brace, but is ignored when
-// nl_collapse_empty_body_functions=true
-extern BoundedOption<unsigned, 0, 16>
-nl_inside_empty_func;
-
-// The number of newlines before a function prototype.
-extern BoundedOption<unsigned, 0, 16>
-nl_before_func_body_proto;
-
-// The number of newlines before a multi-line function definition. Where
-// applicable, this option is overridden with eat_blanks_after_open_brace=true
-extern BoundedOption<unsigned, 0, 16>
-nl_before_func_body_def;
-
-// The number of newlines before a class constructor/destructor prototype.
-extern BoundedOption<unsigned, 0, 16>
-nl_before_func_class_proto;
-
-// The number of newlines before a class constructor/destructor definition.
-extern BoundedOption<unsigned, 0, 16>
-nl_before_func_class_def;
-
-// The number of newlines after a function prototype.
-extern BoundedOption<unsigned, 0, 16>
-nl_after_func_proto;
-
-// The number of newlines after a function prototype, if not followed by
-// another function prototype.
-extern BoundedOption<unsigned, 0, 16>
-nl_after_func_proto_group;
-
-// The number of newlines after a class constructor/destructor prototype.
-extern BoundedOption<unsigned, 0, 16>
-nl_after_func_class_proto;
-
-// The number of newlines after a class constructor/destructor prototype,
-// if not followed by another constructor/destructor prototype.
-extern BoundedOption<unsigned, 0, 16>
-nl_after_func_class_proto_group;
-
-// Whether one-line method definitions inside a class body should be treated
-// as if they were prototypes for the purposes of adding newlines.
-//
-// Requires nl_class_leave_one_liners=true. Overrides nl_before_func_body_def
-// and nl_before_func_class_def for one-liners.
-extern Option<bool>
-nl_class_leave_one_liner_groups;
-
-// The number of newlines after '}' of a multi-line function body.
-extern BoundedOption<unsigned, 0, 16>
-nl_after_func_body;
-
-// The number of newlines after '}' of a multi-line function body in a class
-// declaration. Also affects class constructors/destructors.
-//
-// Overrides nl_after_func_body.
-extern BoundedOption<unsigned, 0, 16>
-nl_after_func_body_class;
-
-// The number of newlines after '}' of a single line function body. Also
-// affects class constructors/destructors.
-//
-// Overrides nl_after_func_body and nl_after_func_body_class.
-extern BoundedOption<unsigned, 0, 16>
-nl_after_func_body_one_liner;
-
-// The number of newlines before a block of typedefs. If nl_after_access_spec
-// is non-zero, that option takes precedence.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_typedef_blk_start;
-
-// The number of newlines after a block of typedefs.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_typedef_blk_end;
-
-// The maximum number of consecutive newlines within a block of typedefs.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_typedef_blk_in;
-
-// The minimum number of blank lines after a block of variable definitions
-// at the top of a function body. If any preprocessor directives appear
-// between the opening brace of the function and the variable block, then
-// it is considered as not at the top of the function.Newlines are added
-// before trailing preprocessor directives, if any exist.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_var_def_blk_end_func_top;
-
-// The minimum number of empty newlines before a block of variable definitions
-// not at the top of a function body. If nl_after_access_spec is non-zero,
-// that option takes precedence. Newlines are not added at the top of the
-// file or just after an opening brace. Newlines are added above any
-// preprocessor directives before the block.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_var_def_blk_start;
-
-// The minimum number of empty newlines after a block of variable definitions
-// not at the top of a function body. Newlines are not added if the block
-// is at the bottom of the file or just before a preprocessor directive.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_var_def_blk_end;
-
-// The maximum number of consecutive newlines within a block of variable
-// definitions.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_var_def_blk_in;
-
-// The minimum number of newlines before a multi-line comment.
-// Doesn't apply if after a brace open or another multi-line comment.
-extern BoundedOption<unsigned, 0, 16>
-nl_before_block_comment;
-
-// 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.
-extern BoundedOption<unsigned, 0, 16>
-nl_before_c_comment;
-
-// The minimum number of newlines before a CPP comment.
-// Doesn't apply if after a brace open or other CPP comments.
-extern BoundedOption<unsigned, 0, 16>
-nl_before_cpp_comment;
-
-// Whether to force a newline after a multi-line comment.
-extern Option<bool>
-nl_after_multiline_comment;
-
-// Whether to force a newline after a label's colon.
-extern Option<bool>
-nl_after_label_colon;
-
-// The number of newlines before a struct definition.
-extern BoundedOption<unsigned, 0, 16>
-nl_before_struct;
-
-// The number of newlines after '}' or ';' of a struct/enum/union definition.
-extern BoundedOption<unsigned, 0, 16>
-nl_after_struct;
-
-// The number of newlines before a class definition.
-extern BoundedOption<unsigned, 0, 16>
-nl_before_class;
-
-// The number of newlines after '}' or ';' of a class definition.
-extern BoundedOption<unsigned, 0, 16>
-nl_after_class;
-
-// The number of newlines before a namespace.
-extern BoundedOption<unsigned, 0, 16>
-nl_before_namespace;
-
-// The number of newlines after '{' of a namespace. This also adds newlines
-// before the matching '}'.
-//
-// 0: Apply eat_blanks_after_open_brace or eat_blanks_before_close_brace if
-// applicable, otherwise no change.
-//
-// Overrides eat_blanks_after_open_brace and eat_blanks_before_close_brace.
-extern BoundedOption<unsigned, 0, 16>
-nl_inside_namespace;
-
-// The number of newlines after '}' of a namespace.
-extern BoundedOption<unsigned, 0, 16>
-nl_after_namespace;
-
-// The number of newlines before an access specifier label. This also includes
-// the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
-// if after a brace open.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_before_access_spec;
-
-// The number of newlines after an access specifier label. This also includes
-// the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
-// if after a brace open.
-//
-// 0: No change (default).
-//
-// Overrides nl_typedef_blk_start and nl_var_def_blk_start.
-extern BoundedOption<unsigned, 0, 16>
-nl_after_access_spec;
-
-// The number of newlines between a function definition and the function
-// comment, as in '// comment\n <here> void foo() {...}'.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_comment_func_def;
-
-// The number of newlines after a try-catch-finally block that isn't followed
-// by a brace close.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_after_try_catch_finally;
-
-// (C#) The number of newlines before and after a property, indexer or event
-// declaration.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_around_cs_property;
-
-// (C#) The number of newlines between the get/set/add/remove handlers.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_between_get_set;
-
-// (C#) Add or remove newline between property and the '{'.
-extern Option<iarf_e>
-nl_property_brace;
-
-// Whether to remove blank lines after '{'.
-extern Option<bool>
-eat_blanks_after_open_brace;
-
-// Whether to remove blank lines before '}'.
-extern Option<bool>
-eat_blanks_before_close_brace;
-
-// How aggressively to remove extra newlines not in preprocessor.
-//
-// 0: No change (default)
-// 1: Remove most newlines not handled by other config
-// 2: Remove all newlines and reformat completely by config
-extern BoundedOption<unsigned, 0, 2>
-nl_remove_extra_newlines;
-
-// (Java) Add or remove newline after an annotation statement. Only affects
-// annotations that are after a newline.
-extern Option<iarf_e>
-nl_after_annotation;
-
-// (Java) Add or remove newline between two annotations.
-extern Option<iarf_e>
-nl_between_annotation;
-
-// The number of newlines before a whole-file #ifdef.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_before_whole_file_ifdef;
-
-// The number of newlines after a whole-file #ifdef.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_after_whole_file_ifdef;
-
-// The number of newlines before a whole-file #endif.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_before_whole_file_endif;
-
-// The number of newlines after a whole-file #endif.
-//
-// 0: No change (default).
-extern BoundedOption<unsigned, 0, 16>
-nl_after_whole_file_endif;
-
-//END
-
-///////////////////////////////////////////////////////////////////////////////
-//BEGIN Positioning options
-
-// The position of arithmetic operators in wrapped expressions.
-extern Option<token_pos_e>
-pos_arith;
-
-// The position of assignment in wrapped expressions. Do not affect '='
-// followed by '{'.
-extern Option<token_pos_e>
-pos_assign;
-
-// The position of Boolean operators in wrapped expressions.
-extern Option<token_pos_e>
-pos_bool;
-
-// The position of comparison operators in wrapped expressions.
-extern Option<token_pos_e>
-pos_compare;
-
-// The position of conditional operators, as in the '?' and ':' of
-// 'expr ? stmt : stmt', in wrapped expressions.
-extern Option<token_pos_e>
-pos_conditional;
-
-// The position of the comma in wrapped expressions.
-extern Option<token_pos_e>
-pos_comma;
-
-// The position of the comma in enum entries.
-extern Option<token_pos_e>
-pos_enum_comma;
-
-// The position of the comma in the base class list if there is more than one
-// line. Affects nl_class_init_args.
-extern Option<token_pos_e>
-pos_class_comma;
-
-// The position of the comma in the constructor initialization list.
-// Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon.
-extern Option<token_pos_e>
-pos_constr_comma;
-
-// The position of trailing/leading class colon, between class and base class
-// list. Affects nl_class_colon.
-extern Option<token_pos_e>
-pos_class_colon;
-
-// The position of colons between constructor and member initialization.
-// Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.
-extern Option<token_pos_e>
-pos_constr_colon;
-
-// The position of shift operators in wrapped expressions.
-extern Option<token_pos_e>
-pos_shift;
-
-//END
-
-///////////////////////////////////////////////////////////////////////////////
-//BEGIN Line splitting options
-
-// Try to limit code width to N columns.
-extern BoundedOption<unsigned, 0, 10000>
-code_width;
-
-// Whether to fully split long 'for' statements at semi-colons.
-extern Option<bool>
-ls_for_split_full;
-
-// Whether to fully split long function prototypes/calls at commas.
-// The option ls_code_width has priority over the option ls_func_split_full.
-extern Option<bool>
-ls_func_split_full;
-
-// Whether to split lines as close to code_width as possible and ignore some
-// groupings.
-// The option ls_code_width has priority over the option ls_func_split_full.
-extern Option<bool>
-ls_code_width;
-
-//END
-
-///////////////////////////////////////////////////////////////////////////////
-//BEGIN Code alignment options (not left column spaces/tabs)
-
-// Whether to keep non-indenting tabs.
-extern Option<bool>
-align_keep_tabs;
-
-// Whether to use tabs for aligning.
-extern Option<bool>
-align_with_tabs;
-
-// Whether to bump out to the next tab when aligning.
-extern Option<bool>
-align_on_tabstop;
-
-// Whether to right-align numbers.
-extern Option<bool>
-align_number_right;
-
-// Whether to keep whitespace not required for alignment.
-extern Option<bool>
-align_keep_extra_space;
-
-// Whether to align variable definitions in prototypes and functions.
-extern Option<bool>
-align_func_params;
-
-// The span for aligning parameter definitions in function on parameter name.
-//
-// 0: Don't align (default).
-extern BoundedOption<unsigned, 0, 16>
-align_func_params_span;
-
-// The threshold for aligning function parameter definitions.
-// Use a negative number for absolute thresholds.
-//
-// 0: No limit (default).
-extern BoundedOption<signed, -1000, 5000>
-align_func_params_thresh;
-
-// The gap for aligning function parameter definitions.
-extern BoundedOption<unsigned, 0, 16>
-align_func_params_gap;
-
-// The span for aligning constructor value.
-//
-// 0: Don't align (default).
-extern BoundedOption<unsigned, 0, 16>
-align_constr_value_span;
-
-// The threshold for aligning constructor value.
-// Use a negative number for absolute thresholds.
-//
-// 0: No limit (default).
-extern BoundedOption<signed, -1000, 5000>
-align_constr_value_thresh;
-
-// The gap for aligning constructor value.
-extern BoundedOption<unsigned, 0, 16>
-align_constr_value_gap;
-
-// Whether to align parameters in single-line functions that have the same
-// name. The function names must already be aligned with each other.
-extern Option<bool>
-align_same_func_call_params;
-
-// The span for aligning function-call parameters for single line functions.
-//
-// 0: Don't align (default).
-extern BoundedOption<unsigned, 0, 5000>
-align_same_func_call_params_span;
-
-// The threshold for aligning function-call parameters for single line
-// functions.
-// Use a negative number for absolute thresholds.
-//
-// 0: No limit (default).
-extern BoundedOption<signed, -1000, 5000>
-align_same_func_call_params_thresh;
-
-// The span for aligning variable definitions.
-//
-// 0: Don't align (default).
-extern BoundedOption<unsigned, 0, 5000>
-align_var_def_span;
-
-// How to consider (or treat) the '*' in the alignment of variable definitions.
-//
-// 0: Part of the type 'void * foo;' (default)
-// 1: Part of the variable 'void *foo;'
-// 2: Dangling 'void *foo;'
-// Dangling: the '*' will not be taken into account when aligning.
-extern BoundedOption<unsigned, 0, 2>
-align_var_def_star_style;
-
-// How to consider (or treat) the '&' in the alignment of variable definitions.
-//
-// 0: Part of the type 'long & foo;' (default)
-// 1: Part of the variable 'long &foo;'
-// 2: Dangling 'long &foo;'
-// Dangling: the '&' will not be taken into account when aligning.
-extern BoundedOption<unsigned, 0, 2>
-align_var_def_amp_style;
-
-// The threshold for aligning variable definitions.
-// Use a negative number for absolute thresholds.
-//
-// 0: No limit (default).
-extern BoundedOption<signed, -1000, 5000>
-align_var_def_thresh;
-
-// The gap for aligning variable definitions.
-extern BoundedOption<unsigned, 0, 16>
-align_var_def_gap;
-
-// Whether to align the colon in struct bit fields.
-extern Option<bool>
-align_var_def_colon;
-
-// The gap for aligning the colon in struct bit fields.
-extern BoundedOption<unsigned, 0, 16>
-align_var_def_colon_gap;
-
-// Whether to align any attribute after the variable name.
-extern Option<bool>
-align_var_def_attribute;
-
-// Whether to align inline struct/enum/union variable definitions.
-extern Option<bool>
-align_var_def_inline;
-
-// The span for aligning on '=' in assignments.
-//
-// 0: Don't align (default).
-extern BoundedOption<unsigned, 0, 5000>
-align_assign_span;
-
-// The span for aligning on '=' in function prototype modifier.
-//
-// 0: Don't align (default).
-extern BoundedOption<unsigned, 0, 5000>
-align_assign_func_proto_span;
-
-// The threshold for aligning on '=' in assignments.
-// Use a negative number for absolute thresholds.
-//
-// 0: No limit (default).
-extern BoundedOption<signed, -1000, 5000>
-align_assign_thresh;
-
-// Whether to align on the left most assignment when multiple
-// definitions are found on the same line.
-// Depends on 'align_assign_span' and 'align_assign_thresh' settings.
-extern Option<bool>
-align_assign_on_multi_var_defs;
-
-// The span for aligning on '{' in braced init list.
-//
-// 0: Don't align (default).
-extern BoundedOption<unsigned, 0, 5000>
-align_braced_init_list_span;
-
-// The threshold for aligning on '{' in braced init list.
-// Use a negative number for absolute thresholds.
-//
-// 0: No limit (default).
-extern BoundedOption<signed, -1000, 5000>
-align_braced_init_list_thresh;
-
-// How to apply align_assign_span to function declaration "assignments", i.e.
-// 'virtual void foo() = 0' or '~foo() = {default|delete}'.
-//
-// 0: Align with other assignments (default)
-// 1: Align with each other, ignoring regular assignments
-// 2: Don't align
-extern BoundedOption<unsigned, 0, 2>
-align_assign_decl_func;
-
-// The span for aligning on '=' in enums.
-//
-// 0: Don't align (default).
-extern BoundedOption<unsigned, 0, 5000>
-align_enum_equ_span;
-
-// The threshold for aligning on '=' in enums.
-// Use a negative number for absolute thresholds.
-//
-// 0: no limit (default).
-extern BoundedOption<signed, -1000, 5000>
-align_enum_equ_thresh;
-
-// The span for aligning class member definitions.
-//
-// 0: Don't align (default).
-extern BoundedOption<unsigned, 0, 5000>
-align_var_class_span;
-
-// The threshold for aligning class member definitions.
-// Use a negative number for absolute thresholds.
-//
-// 0: No limit (default).
-extern BoundedOption<signed, -1000, 5000>
-align_var_class_thresh;
-
-// The gap for aligning class member definitions.
-extern BoundedOption<unsigned, 0, 16>
-align_var_class_gap;
-
-// The span for aligning struct/union member definitions.
-//
-// 0: Don't align (default).
-extern BoundedOption<unsigned, 0, 5000>
-align_var_struct_span;
-
-// The threshold for aligning struct/union member definitions.
-// Use a negative number for absolute thresholds.
-//
-// 0: No limit (default).
-extern BoundedOption<signed, -1000, 5000>
-align_var_struct_thresh;
-
-// The gap for aligning struct/union member definitions.
-extern BoundedOption<unsigned, 0, 16>
-align_var_struct_gap;
-
-// The span for aligning struct initializer values.
-//
-// 0: Don't align (default).
-extern BoundedOption<unsigned, 0, 5000>
-align_struct_init_span;
-
-// The span for aligning single-line typedefs.
-//
-// 0: Don't align (default).
-extern BoundedOption<unsigned, 0, 16>
-align_typedef_span;
-
-// The minimum space between the type and the synonym of a typedef.
-extern BoundedOption<unsigned, 0, 16>
-align_typedef_gap;
-
-// How to align typedef'd functions with other typedefs.
-//
-// 0: Don't mix them at all (default)
-// 1: Align the open parenthesis with the types
-// 2: Align the function type name with the other type names
-extern BoundedOption<unsigned, 0, 2>
-align_typedef_func;
-
-// How to consider (or treat) the '*' in the alignment of typedefs.
-//
-// 0: Part of the typedef type, 'typedef int * pint;' (default)
-// 1: Part of type name: 'typedef int *pint;'
-// 2: Dangling: 'typedef int *pint;'
-// Dangling: the '*' will not be taken into account when aligning.
-extern BoundedOption<unsigned, 0, 2>
-align_typedef_star_style;
-
-// How to consider (or treat) the '&' in the alignment of typedefs.
-//
-// 0: Part of the typedef type, 'typedef int & intref;' (default)
-// 1: Part of type name: 'typedef int &intref;'
-// 2: Dangling: 'typedef int &intref;'
-// Dangling: the '&' will not be taken into account when aligning.
-extern BoundedOption<unsigned, 0, 2>
-align_typedef_amp_style;
-
-// The span for aligning comments that end lines.
-//
-// 0: Don't align (default).
-extern BoundedOption<unsigned, 0, 5000>
-align_right_cmt_span;
-
-// Minimum number of columns between preceding text and a trailing comment in
-// order for the comment to qualify for being aligned. Must be non-zero to have
-// an effect.
-extern BoundedOption<unsigned, 0, 16>
-align_right_cmt_gap;
-
-// If aligning comments, whether to mix with comments after '}' and #endif with
-// less than three spaces before the comment.
-extern Option<bool>
-align_right_cmt_mix;
-
-// Whether to only align trailing comments that are at the same brace level.
-extern Option<bool>
-align_right_cmt_same_level;
-
-// Minimum column at which to align trailing comments. Comments which are
-// aligned beyond this column, but which can be aligned in a lesser column,
-// may be "pulled in".
-//
-// 0: Ignore (default).
-extern BoundedOption<unsigned, 0, 200>
-align_right_cmt_at_col;
-
-// The span for aligning function prototypes.
-//
-// 0: Don't align (default).
-extern BoundedOption<unsigned, 0, 5000>
-align_func_proto_span;
-
-// How to consider (or treat) the '*' in the alignment of function prototypes.
-//
-// 0: Part of the type 'void * foo();' (default)
-// 1: Part of the function 'void *foo();'
-// 2: Dangling 'void *foo();'
-// Dangling: the '*' will not be taken into account when aligning.
-extern BoundedOption<unsigned, 0, 2>
-align_func_proto_star_style;
-
-// How to consider (or treat) the '&' in the alignment of function prototypes.
-//
-// 0: Part of the type 'long & foo();' (default)
-// 1: Part of the function 'long &foo();'
-// 2: Dangling 'long &foo();'
-// Dangling: the '&' will not be taken into account when aligning.
-extern BoundedOption<unsigned, 0, 2>
-align_func_proto_amp_style;
-
-// The threshold for aligning function prototypes.
-// Use a negative number for absolute thresholds.
-//
-// 0: No limit (default).
-extern BoundedOption<signed, -1000, 5000>
-align_func_proto_thresh;
-
-// Minimum gap between the return type and the function name.
-extern BoundedOption<unsigned, 0, 16>
-align_func_proto_gap;
-
-// Whether to align function prototypes on the 'operator' keyword instead of
-// what follows.
-extern Option<bool>
-align_on_operator;
-
-// Whether to mix aligning prototype and variable declarations. If true,
-// align_var_def_XXX options are used instead of align_func_proto_XXX options.
-extern Option<bool>
-align_mix_var_proto;
-
-// Whether to align single-line functions with function prototypes.
-// Uses align_func_proto_span.
-extern Option<bool>
-align_single_line_func;
-
-// Whether to align the open brace of single-line functions.
-// Requires align_single_line_func=true. Uses align_func_proto_span.
-extern Option<bool>
-align_single_line_brace;
-
-// Gap for align_single_line_brace.
-extern BoundedOption<unsigned, 0, 16>
-align_single_line_brace_gap;
-
-// (OC) The span for aligning Objective-C message specifications.
-//
-// 0: Don't align (default).
-extern BoundedOption<unsigned, 0, 5000>
-align_oc_msg_spec_span;
-
-// Whether to align macros wrapped with a backslash and a newline. This will
-// not work right if the macro contains a multi-line comment.
-extern Option<bool>
-align_nl_cont;
-
-// Whether to align macro functions and variables together.
-extern Option<bool>
-align_pp_define_together;
-
-// The span for aligning on '#define' bodies.
-//
-// =0: Don't align (default)
-// >0: Number of lines (including comments) between blocks
-extern BoundedOption<unsigned, 0, 5000>
-align_pp_define_span;
-
-// The minimum space between label and value of a preprocessor define.
-extern BoundedOption<unsigned, 0, 16>
-align_pp_define_gap;
-
-// Whether to align lines that start with '<<' with previous '<<'.
-extern Option<bool>
-align_left_shift; // = true
-
-// Whether to align comma-separated statements following '<<' (as used to
-// initialize Eigen matrices).
-extern Option<bool>
-align_eigen_comma_init;
-
-// Whether to align text after 'asm volatile ()' colons.
-extern Option<bool>
-align_asm_colon;
-
-// (OC) Span for aligning parameters in an Objective-C message call
-// on the ':'.
-//
-// 0: Don't align.
-extern BoundedOption<unsigned, 0, 5000>
-align_oc_msg_colon_span;
-
-// (OC) Whether to always align with the first parameter, even if it is too
-// short.
-extern Option<bool>
-align_oc_msg_colon_first;
-
-// (OC) Whether to align parameters in an Objective-C '+' or '-' declaration
-// on the ':'.
-extern Option<bool>
-align_oc_decl_colon;
-
-// (OC) Whether to not align parameters in an Objectve-C message call if first
-// colon is not on next line of the message call (the same way Xcode does
-// alignment)
-extern Option<bool>
-align_oc_msg_colon_xcode_like;
-
-//END
-
-///////////////////////////////////////////////////////////////////////////////
-//BEGIN Comment modification options
-
-// Try to wrap comments at N columns.
-extern BoundedOption<unsigned, 0, 256>
-cmt_width;
-
-// How to reflow comments.
-//
-// 0: No reflowing (apart from the line wrapping due to cmt_width) (default)
-// 1: No touching at all
-// 2: Full reflow (enable cmt_indent_multi for indent with line wrapping due to cmt_width)
-extern BoundedOption<unsigned, 0, 2>
-cmt_reflow_mode;
-
-// Path to a file that contains regular expressions describing patterns for
-// which the end of one line and the beginning of the next will be folded into
-// the same sentence or paragraph during full comment reflow. The regular
-// expressions are described using ECMAScript syntax. The syntax for this
-// specification is as follows, where "..." indicates the custom regular
-// expression and "n" indicates the nth end_of_prev_line_regex and
-// beg_of_next_line_regex regular expression pair:
-//
-// end_of_prev_line_regex[1] = "...$"
-// beg_of_next_line_regex[1] = "^..."
-// end_of_prev_line_regex[2] = "...$"
-// beg_of_next_line_regex[2] = "^..."
-// .
-// .
-// .
-// end_of_prev_line_regex[n] = "...$"
-// beg_of_next_line_regex[n] = "^..."
-//
-// Note that use of this option overrides the default reflow fold regular
-// expressions, which are internally defined as follows:
-//
-// end_of_prev_line_regex[1] = "[\w,\]\)]$"
-// beg_of_next_line_regex[1] = "^[\w,\[\(]"
-// end_of_prev_line_regex[2] = "\.$"
-// beg_of_next_line_regex[2] = "^[A-Z]"
-extern Option<string>
-cmt_reflow_fold_regex_file;
-
-// Whether to indent wrapped lines to the start of the encompassing paragraph
-// during full comment reflow (cmt_reflow_mode = 2). Overrides the value
-// specified by cmt_sp_after_star_cont.
-//
-// Note that cmt_align_doxygen_javadoc_tags overrides this option for
-// paragraphs associated with javadoc tags
-extern Option<bool>
-cmt_reflow_indent_to_paragraph_start;
-
-// Whether to convert all tabs to spaces in comments. If false, tabs in
-// comments are left alone, unless used for indenting.
-extern Option<bool>
-cmt_convert_tab_to_spaces;
-
-// TODO This description is confusing and should be revised.
-
-// Whether to apply changes to multi-line comments, including cmt_width,
-// keyword substitution and leading chars.
-extern Option<bool>
-cmt_indent_multi; // = true
-
-// Whether to align doxygen javadoc-style tags ('@param', '@return', etc.)
-// and corresponding fields such that groups of consecutive block tags,
-// parameter names, and descriptions align with one another. Overrides that
-// which is specified by the cmt_sp_after_star_cont. If cmt_width > 0, it may
-// be necessary to enable cmt_indent_multi and set cmt_reflow_mode = 2
-// in order to achieve the desired alignment for line-wrapping.
-extern Option<bool>
-cmt_align_doxygen_javadoc_tags;
-
-// The number of spaces to insert after the star and before doxygen
-// javadoc-style tags (@param, @return, etc). Requires enabling
-// cmt_align_doxygen_javadoc_tags. Overrides that which is specified by the
-// cmt_sp_after_star_cont.
-extern BoundedOption<unsigned, 0, 16>
-cmt_sp_before_doxygen_javadoc_tags; // = 1
-
-// Whether to change trailing, single-line c-comments into cpp-comments.
-extern Option<bool>
-cmt_trailing_single_line_c_to_cpp;
-
-// Whether to group c-comments that look like they are in a block.
-extern Option<bool>
-cmt_c_group;
-
-// Whether to put an empty '/*' on the first line of the combined c-comment.
-extern Option<bool>
-cmt_c_nl_start;
-
-// Whether to add a newline before the closing '*/' of the combined c-comment.
-extern Option<bool>
-cmt_c_nl_end;
-
-// Whether to change cpp-comments into c-comments.
-extern Option<bool>
-cmt_cpp_to_c;
-
-// Whether to group cpp-comments that look like they are in a block. Only
-// meaningful if cmt_cpp_to_c=true.
-extern Option<bool>
-cmt_cpp_group;
-
-// Whether to put an empty '/*' on the first line of the combined cpp-comment
-// when converting to a c-comment.
-//
-// Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
-extern Option<bool>
-cmt_cpp_nl_start;
-
-// Whether to add a newline before the closing '*/' of the combined cpp-comment
-// when converting to a c-comment.
-//
-// Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
-extern Option<bool>
-cmt_cpp_nl_end;
-
-// Whether to put a star on subsequent comment lines.
-extern Option<bool>
-cmt_star_cont;
-
-// The number of spaces to insert at the start of subsequent comment lines.
-extern BoundedOption<unsigned, 0, 16>
-cmt_sp_before_star_cont;
-
-// The number of spaces to insert after the star on subsequent comment lines.
-extern BoundedOption<unsigned, 0, 16>
-cmt_sp_after_star_cont;
-
-// TODO This description is confusing and should be revised.
-
-// For multi-line comments with a '*' lead, remove leading spaces if the first
-// and last lines of the comment are the same length.
-extern Option<bool>
-cmt_multi_check_last; // = true
-
-// TODO This description is confusing and should be revised.
-
-// For multi-line comments with a '*' lead, remove leading spaces if the first
-// and last lines of the comment are the same length AND if the length is
-// bigger as the first_len minimum.
-extern BoundedOption<unsigned, 1, 20>
-cmt_multi_first_len_minimum; // = 4
-
-// Path to a file that contains text to insert at the beginning of a file if
-// the file doesn't start with a C/C++ comment. If the inserted text contains
-// '$(filename)', that will be replaced with the current file's name.
-extern Option<string>
-cmt_insert_file_header;
-
-// Path to a file that contains text to insert at the end of a file if the
-// file doesn't end with a C/C++ comment. If the inserted text contains
-// '$(filename)', that will be replaced with the current file's name.
-extern Option<string>
-cmt_insert_file_footer;
-
-// Path to a file that contains text to insert before a function definition if
-// the function isn't preceded by a C/C++ comment. If the inserted text
-// contains '$(function)', '$(javaparam)' or '$(fclass)', these will be
-// replaced with, respectively, the name of the function, the javadoc '@param'
-// and '@return' stuff, or the name of the class to which the member function
-// belongs.
-extern Option<string>
-cmt_insert_func_header;
-
-// Path to a file that contains text to insert before a class if the class
-// isn't preceded by a C/C++ comment. If the inserted text contains '$(class)',
-// that will be replaced with the class name.
-extern Option<string>
-cmt_insert_class_header;
-
-// Path to a file that contains text to insert before an Objective-C message
-// specification, if the method isn't preceded by a C/C++ comment. If the
-// inserted text contains '$(message)' or '$(javaparam)', these will be
-// replaced with, respectively, the name of the function, or the javadoc
-// '@param' and '@return' stuff.
-extern Option<string>
-cmt_insert_oc_msg_header;
-
-// TODO This description may be confusing; consider revising.
-
-// Whether a comment should be inserted if a preprocessor is encountered when
-// stepping backwards from a function name.
-//
-// Applies to cmt_insert_oc_msg_header, cmt_insert_func_header and
-// cmt_insert_class_header.
-extern Option<bool>
-cmt_insert_before_preproc;
-
-// Whether a comment should be inserted if a function is declared inline to a
-// class definition.
-//
-// Applies to cmt_insert_func_header.
-extern Option<bool>
-cmt_insert_before_inlines; // = true
-
-// Whether a comment should be inserted if the function is a class constructor
-// or destructor.
-//
-// Applies to cmt_insert_func_header.
-extern Option<bool>
-cmt_insert_before_ctor_dtor;
-
-//END
-
-///////////////////////////////////////////////////////////////////////////////
-//BEGIN Code modifying options (non-whitespace)
-
-// Add or remove braces on a single-line 'do' statement.
-extern Option<iarf_e>
-mod_full_brace_do;
-
-// Add or remove braces on a single-line 'for' statement.
-extern Option<iarf_e>
-mod_full_brace_for;
-
-// (Pawn) Add or remove braces on a single-line function definition.
-extern Option<iarf_e>
-mod_full_brace_function;
-
-// Add or remove braces on a single-line 'if' statement. Braces will not be
-// removed if the braced statement contains an 'else'.
-extern Option<iarf_e>
-mod_full_brace_if;
-
-// Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either
-// have, or do not have, braces. Overrides mod_full_brace_if.
-//
-// 0: Don't override mod_full_brace_if
-// 1: Add braces to all blocks if any block needs braces and remove braces if
-// they can be removed from all blocks
-// 2: Add braces to all blocks if any block already has braces, regardless of
-// whether it needs them
-// 3: Add braces to all blocks if any block needs braces and remove braces if
-// they can be removed from all blocks, except if all blocks have braces
-// despite none needing them
-extern BoundedOption<unsigned, 0, 3>
-mod_full_brace_if_chain;
-
-// Whether to add braces to all blocks of an 'if'/'else if'/'else' chain.
-// If true, mod_full_brace_if_chain will only remove braces from an 'if' that
-// does not have an 'else if' or 'else'.
-extern Option<bool>
-mod_full_brace_if_chain_only;
-
-// Add or remove braces on single-line 'while' statement.
-extern Option<iarf_e>
-mod_full_brace_while;
-
-// Add or remove braces on single-line 'using ()' statement.
-extern Option<iarf_e>
-mod_full_brace_using;
-
-// Don't remove braces around statements that span N newlines
-extern BoundedOption<unsigned, 0, 5000>
-mod_full_brace_nl;
-
-// Whether to prevent removal of braces from 'if'/'for'/'while'/etc. blocks
-// which span multiple lines.
-//
-// Affects:
-// mod_full_brace_for
-// mod_full_brace_if
-// mod_full_brace_if_chain
-// mod_full_brace_if_chain_only
-// mod_full_brace_while
-// mod_full_brace_using
-//
-// Does not affect:
-// mod_full_brace_do
-// mod_full_brace_function
-extern Option<bool>
-mod_full_brace_nl_block_rem_mlcond;
-
-// Add or remove unnecessary parentheses on 'return' statement.
-extern Option<iarf_e>
-mod_paren_on_return;
-
-// Add or remove unnecessary parentheses on 'throw' statement.
-extern Option<iarf_e>
-mod_paren_on_throw;
-
-// (Pawn) Whether to change optional semicolons to real semicolons.
-extern Option<bool>
-mod_pawn_semicolon;
-
-// Whether to fully parenthesize Boolean expressions in 'while' and 'if'
-// statement, as in 'if (a && b > c)' => 'if (a && (b > c))'.
-extern Option<bool>
-mod_full_paren_if_bool;
-
-// Whether to fully parenthesize Boolean expressions after '='
-// statement, as in 'x = a && b > c;' => 'x = (a && (b > c));'.
-extern Option<bool>
-mod_full_paren_assign_bool;
-
-// Whether to fully parenthesize Boolean expressions after '='
-// statement, as in 'return a && b > c;' => 'return (a && (b > c));'.
-extern Option<bool>
-mod_full_paren_return_bool;
-
-// Whether to remove superfluous semicolons.
-extern Option<bool>
-mod_remove_extra_semicolon;
-
-// Whether to remove duplicate include.
-extern Option<bool>
-mod_remove_duplicate_include;
-
-// 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.
-extern BoundedOption<unsigned, 0, 255>
-mod_add_long_function_closebrace_comment;
-
-// If a namespace body exceeds the specified number of newlines and doesn't
-// have a comment after the close brace, a comment will be added.
-extern BoundedOption<unsigned, 0, 255>
-mod_add_long_namespace_closebrace_comment;
-
-// If a class body exceeds the specified number of newlines and doesn't have a
-// comment after the close brace, a comment will be added.
-extern BoundedOption<unsigned, 0, 255>
-mod_add_long_class_closebrace_comment;
-
-// 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.
-extern BoundedOption<unsigned, 0, 255>
-mod_add_long_switch_closebrace_comment;
-
-// If an #ifdef body exceeds the specified number of newlines and doesn't have
-// a comment after the #endif, a comment will be added.
-extern BoundedOption<unsigned, 0, 255>
-mod_add_long_ifdef_endif_comment;
-
-// If an #ifdef or #else body exceeds the specified number of newlines and
-// doesn't have a comment after the #else, a comment will be added.
-extern BoundedOption<unsigned, 0, 255>
-mod_add_long_ifdef_else_comment;
-
-// Whether to take care of the case by the mod_sort_xx options.
-extern Option<bool>
-mod_sort_case_sensitive;
-
-// Whether to sort consecutive single-line 'import' statements.
-extern Option<bool>
-mod_sort_import;
-
-// (C#) Whether to sort consecutive single-line 'using' statements.
-extern Option<bool>
-mod_sort_using;
-
-// Whether to sort consecutive single-line '#include' statements (C/C++) and
-// '#import' statements (Objective-C). Be aware that this has the potential to
-// break your code if your includes/imports have ordering dependencies.
-extern Option<bool>
-mod_sort_include;
-
-// Whether to prioritize '#include' and '#import' statements that contain
-// filename without extension when sorting is enabled.
-extern Option<bool>
-mod_sort_incl_import_prioritize_filename;
-
-// Whether to prioritize '#include' and '#import' statements that does not
-// contain extensions when sorting is enabled.
-extern Option<bool>
-mod_sort_incl_import_prioritize_extensionless;
-
-// Whether to prioritize '#include' and '#import' statements that contain
-// angle over quotes when sorting is enabled.
-extern Option<bool>
-mod_sort_incl_import_prioritize_angle_over_quotes;
-
-// Whether to ignore file extension in '#include' and '#import' statements
-// for sorting comparison.
-extern Option<bool>
-mod_sort_incl_import_ignore_extension;
-
-// Whether to group '#include' and '#import' statements when sorting is enabled.
-extern Option<bool>
-mod_sort_incl_import_grouping_enabled;
-
-// Whether to move a 'break' that appears after a fully braced 'case' before
-// the close brace, as in 'case X: { ... } break;' => 'case X: { ... break; }'.
-extern Option<bool>
-mod_move_case_break;
-
-// Whether to move a 'return' that appears after a fully braced 'case' before
-// the close brace, as in 'case X: { ... } return;' => 'case X: { ... return; }'.
-extern Option<bool>
-mod_move_case_return;
-
-// Add or remove braces around a fully braced case statement. Will only remove
-// braces if there are no variable declarations in the block.
-extern Option<iarf_e>
-mod_case_brace;
-
-// Whether to remove a void 'return;' that appears as the last statement in a
-// function.
-extern Option<bool>
-mod_remove_empty_return;
-
-// Add or remove the comma after the last value of an enumeration.
-extern Option<iarf_e>
-mod_enum_last_comma;
-
-// Syntax to use for infinite loops.
-//
-// 0: Leave syntax alone (default)
-// 1: Rewrite as `for(;;)`
-// 2: Rewrite as `while(true)`
-// 3: Rewrite as `do`...`while(true);`
-// 4: Rewrite as `while(1)`
-// 5: Rewrite as `do`...`while(1);`
-//
-// Infinite loops that do not already match one of these syntaxes are ignored.
-// Other options that affect loop formatting will be applied after transforming
-// the syntax.
-extern BoundedOption<unsigned, 0, 5>
-mod_infinite_loop;
-
-// Add or remove the 'int' keyword in 'int short'.
-extern Option<iarf_e>
-mod_int_short;
-
-// Add or remove the 'int' keyword in 'short int'.
-extern Option<iarf_e>
-mod_short_int;
-
-// Add or remove the 'int' keyword in 'int long'.
-extern Option<iarf_e>
-mod_int_long;
-
-// Add or remove the 'int' keyword in 'long int'.
-extern Option<iarf_e>
-mod_long_int;
-
-// Add or remove the 'int' keyword in 'int signed'.
-extern Option<iarf_e>
-mod_int_signed;
-
-// Add or remove the 'int' keyword in 'signed int'.
-extern Option<iarf_e>
-mod_signed_int;
-
-// Add or remove the 'int' keyword in 'int unsigned'.
-extern Option<iarf_e>
-mod_int_unsigned;
-
-// Add or remove the 'int' keyword in 'unsigned int'.
-extern Option<iarf_e>
-mod_unsigned_int;
-
-// If there is a situation where mod_int_* and mod_*_int would result in
-// multiple int keywords, whether to keep the rightmost int (the default) or the
-// leftmost int.
-extern Option<bool>
-mod_int_prefer_int_on_left;
-
-// (OC) Whether to organize the properties. If true, properties will be
-// rearranged according to the mod_sort_oc_property_*_weight factors.
-extern Option<bool>
-mod_sort_oc_properties;
-
-// (OC) Weight of a class property modifier.
-extern Option<signed>
-mod_sort_oc_property_class_weight;
-
-// (OC) Weight of 'atomic' and 'nonatomic'.
-extern Option<signed>
-mod_sort_oc_property_thread_safe_weight;
-
-// (OC) Weight of 'readwrite' when organizing properties.
-extern Option<signed>
-mod_sort_oc_property_readwrite_weight;
-
-// (OC) Weight of a reference type specifier ('retain', 'copy', 'assign',
-// 'weak', 'strong') when organizing properties.
-extern Option<signed>
-mod_sort_oc_property_reference_weight;
-
-// (OC) Weight of getter type ('getter=') when organizing properties.
-extern Option<signed>
-mod_sort_oc_property_getter_weight;
-
-// (OC) Weight of setter type ('setter=') when organizing properties.
-extern Option<signed>
-mod_sort_oc_property_setter_weight;
-
-// (OC) Weight of nullability type ('nullable', 'nonnull', 'null_unspecified',
-// 'null_resettable') when organizing properties.
-extern Option<signed>
-mod_sort_oc_property_nullability_weight;
-
-//END
-
-///////////////////////////////////////////////////////////////////////////////
-//BEGIN Preprocessor options
-
-// How to use tabs when indenting preprocessor code.
-//
-// -1: Use 'indent_with_tabs' setting (default)
-// 0: Spaces only
-// 1: Indent with tabs to brace level, align with spaces
-// 2: Indent and align with tabs, using spaces when not on a tabstop
-extern BoundedOption<signed, -1, 2>
-pp_indent_with_tabs; // = -1
-
-// Add or remove indentation of preprocessor directives inside #if blocks
-// at brace level 0 (file-level).
-extern Option<iarf_e>
-pp_indent;
-
-// Whether to indent #if/#else/#endif at the brace level. If false, these are
-// indented from column 1.
-extern Option<bool>
-pp_indent_at_level;
-
-// Whether to indent #if/#else/#endif at the parenthesis level if the brace
-// level is 0. If false, these are indented from column 1.
-extern Option<bool>
-pp_indent_at_level0;
-
-// Specifies the number of columns to indent preprocessors per level
-// at brace level 0 (file-level). If pp_indent_at_level=false, also specifies
-// the number of columns to indent preprocessors per level
-// at brace level > 0 (function-level).
-extern BoundedOption<unsigned, 0, 16>
-pp_indent_count; // = 1
-
-// Add or remove space after # based on pp level of #if blocks.
-extern Option<iarf_e>
-pp_space_after;
-
-// Sets the number of spaces per level added with pp_space_after.
-extern BoundedOption<unsigned, 0, 16>
-pp_space_count;
-
-// The indent for '#region' and '#endregion' in C# and '#pragma region' in
-// C/C++. Negative values decrease indent down to the first column.
-extern BoundedOption<signed, -16, 16>
-pp_indent_region;
-
-// Whether to indent the code between #region and #endregion.
-extern Option<bool>
-pp_region_indent_code;
-
-// If pp_indent_at_level=true, sets the indent for #if, #else and #endif when
-// not at file-level. Negative values decrease indent down to the first column.
-//
-// =0: Indent preprocessors using output_tab_size
-// >0: Column at which all preprocessors will be indented
-extern BoundedOption<signed, -16, 16>
-pp_indent_if;
-
-// Whether to indent the code between #if, #else and #endif.
-extern Option<bool>
-pp_if_indent_code;
-
-// Whether to indent the body of an #if that encompasses all the code in the file.
-extern Option<bool>
-pp_indent_in_guard;
-
-// Whether to indent '#define' at the brace level. If false, these are
-// indented from column 1.
-extern Option<bool>
-pp_define_at_level;
-
-// Whether to indent '#include' at the brace level.
-extern Option<bool>
-pp_include_at_level;
-
-// Whether to ignore the '#define' body while formatting.
-extern Option<bool>
-pp_ignore_define_body;
-
-// An offset value that controls the indentation of the body of a multiline #define.
-// 'body' refers to all the lines of a multiline #define except the first line.
-// Requires 'pp_ignore_define_body = false'.
-//
-// <0: Absolute column: the body indentation starts off at the specified column
-// (ex. -3 ==> the body is indented starting from column 3)
-// >=0: Relative to the column of the '#' of '#define'
-// (ex. 3 ==> the body is indented starting 3 columns at the right of '#')
-extern BoundedOption<signed, -32, 32>
-pp_multiline_define_body_indent; // = 8
-
-// TODO The following descriptions are confusing and suffer from sub-optimal
-// grammar, and should be revised; from here...
-
-// Whether to indent case statements between #if, #else, and #endif.
-// Only applies to the indent of the preprocessor that the case statements
-// directly inside of.
-extern Option<bool>
-pp_indent_case; // = true
-
-// Whether to indent whole function definitions between #if, #else, and #endif.
-// Only applies to the indent of the preprocessor that the function definition
-// is directly inside of.
-extern Option<bool>
-pp_indent_func_def; // = true
-
-// Whether to indent extern C blocks between #if, #else, and #endif.
-// Only applies to the indent of the preprocessor that the extern block is
-// directly inside of.
-extern Option<bool>
-pp_indent_extern; // = true
-
-// How to indent braces directly inside #if, #else, and #endif.
-// Requires pp_if_indent_code=true and only applies to the indent of the
-// preprocessor that the braces are directly inside of.
-// 0: No extra indent
-// 1: Indent by one level
-// -1: Preserve original indentation
-extern BoundedOption<signed, -1, 1>
-pp_indent_brace; // = 1
-
-// Whether to print warning messages for unbalanced #if and #else blocks.
-// This will print a message in the following cases:
-// - if an #ifdef block ends on a different indent level than
-// where it started from. Example:
-//
-// #ifdef TEST
-// int i;
-// {
-// int j;
-// #endif
-//
-// - an #elif/#else block ends on a different indent level than
-// the corresponding #ifdef block. Example:
-//
-// #ifdef TEST
-// int i;
-// #else
-// }
-// int j;
-// #endif
-extern Option<bool>
-pp_warn_unbalanced_if; // = false
-
-// TODO ...until here.
-
-//END
-
-///////////////////////////////////////////////////////////////////////////////
-//BEGIN Sort includes options
-
-// The regex for include category with priority 0.
-extern Option<string>
-include_category_0;
-
-// The regex for include category with priority 1.
-extern Option<string>
-include_category_1;
-
-// The regex for include category with priority 2.
-extern Option<string>
-include_category_2;
-
-//END
-
-///////////////////////////////////////////////////////////////////////////////
-//BEGIN Use or Do not Use options
-
-// true: indent_func_call_param will be used (default)
-// false: indent_func_call_param will NOT be used
-extern Option<bool>
-use_indent_func_call_param; // = true
-
-// The value of the indentation for a continuation line is calculated
-// differently if the statement is:
-// - a declaration: your case with QString fileName ...
-// - an assignment: your case with pSettings = new QSettings( ...
-//
-// At the second case the indentation value might be used twice:
-// - at the assignment
-// - at the function call (if present)
-//
-// To prevent the double use of the indentation value, use this option with the
-// value 'true'.
-//
-// true: indent_continue will be used only once
-// false: indent_continue will be used every time (default)
-//
-// Requires indent_ignore_first_continue=false.
-extern Option<bool>
-use_indent_continue_only_once;
-
-// The indentation can be:
-// - after the assignment, at the '[' character
-// - at the beginning of the lambda body
-//
-// true: indentation will be at the beginning of the lambda body
-// false: indentation will be after the assignment (default)
-extern Option<bool>
-indent_cpp_lambda_only_once;
-
-// Whether sp_after_angle takes precedence over sp_inside_fparen. This was the
-// historic behavior, but is probably not the desired behavior, so this is off
-// by default.
-extern Option<bool>
-use_sp_after_angle_always;
-
-// Whether to apply special formatting for Qt SIGNAL/SLOT macros. Essentially,
-// this tries to format these so that they match Qt's normalized form (i.e. the
-// result of QMetaObject::normalizedSignature), which can slightly improve the
-// performance of the QObject::connect call, rather than how they would
-// otherwise be formatted.
-//
-// See options_for_QT.cpp for details.
-extern Option<bool>
-use_options_overriding_for_qt_macros; // = true
-
-// If true: the form feed character is removed from the list of whitespace
-// characters. See https://en.cppreference.com/w/cpp/string/byte/isspace.
-extern Option<bool>
-use_form_feed_no_more_as_whitespace_character;
-
-//END
-
-///////////////////////////////////////////////////////////////////////////////
-//BEGIN Warn levels - 1: error, 2: warning (default), 3: note
-
-// (C#) Warning is given if doing tab-to-\t replacement and we have found one
-// in a C# verbatim string literal.
-extern BoundedOption<unsigned, 1, 3>
-warn_level_tabs_found_in_verbatim_string_literals; // = LWARN
-
-// For debugging purpose only.
-
-// Limit the number of loops.
-// Used by uncrustify.cpp to exit from infinite loop.
-// 0: no limit.
-extern Option<signed>
-debug_max_number_of_loops;
-
-// Set the number of the line to protocol;
-// Used in the function prot_the_line if the 2. parameter is zero.
-// 0: nothing protocol.
-extern Option<signed>
-debug_line_number_to_protocol;
-
-// Set the number of second(s) before terminating formatting the current file,
-// 0: no timeout.
-// only for linux
-extern Option<signed>
-debug_timeout;
-
-// Set the number of characters to be printed if the text is too long,
-// 0: do not truncate.
-extern BoundedOption<unsigned, 0, 960>
-debug_truncate;
-
-// sort (or not) the tracking info.
-extern Option<bool>
-debug_sort_the_tracks; // = true
-
-// decode (or not) the flags as a new line.
-// only if the -p option is set.
-extern Option<bool>
-debug_decode_the_flags;
-
-// insert the number of the line at the beginning of each line
-extern Option<bool>
-set_numbering_for_html_output;
-
-//END
-
-} // namespace options
-
-} // namespace uncrustify
-
-#endif /* OPTIONS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/output.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/output.cpp
deleted file mode 100644
index 0914d107..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/output.cpp
+++ /dev/null
@@ -1,3597 +0,0 @@
-/**
- * @file output.cpp
- * Does all the output & comment formatting.
- *
- * @author Ben Gardner
- * @author Guy Maurel October 2015, 2021
- * @license GPL v2+
- */
-
-#include "output.h"
-
-#include "align_tab_column.h"
-#include "braces.h"
-#include "indent.h"
-#include "prototypes.h"
-#include "tokenize.h"
-#include "unc_ctype.h"
-#include "unicode.h"
-
-#include <ctime>
-#include <map>
-#include <regex>
-#include <set>
-
-// if you need more logs, commented out the next define line
-#define EXTRA_LOG
-
-constexpr static auto LCURRENT = LOUTPUT;
-
-using namespace uncrustify;
-
-
-struct cmt_reflow
-{
- Chunk *pc = nullptr;
- size_t column = 0; //! Column of the comment start
- size_t brace_col = 0; //! Brace column (for indenting with tabs)
- size_t base_col = 0; //! Base column (for indenting with tabs)
- size_t word_count = 0; //! number of words on this line
- size_t xtra_indent = 0; //! extra indent of non-first lines (0 or 1)
- unc_text cont_text; //! fixed text to output at the start of a line (0 to 3 chars)
- bool reflow = false; //! reflow the current line
-};
-
-
-// for tracking line numbering
-bool numbering_status = false;
-int line_number;
-char char_number[16] = { 0 };
-
-
-void set_numbering(bool status)
-{
- if (options::set_numbering_for_html_output())
- {
- numbering_status = status;
- }
-}
-
-
-bool get_numbering()
-{
- return(numbering_status);
-}
-
-
-void set_line_number()
-{
- line_number = 0;
-}
-
-
-void print_numbering()
-{
- if (get_numbering())
- {
- line_number++;
- sprintf(char_number, "%d ", line_number);
- write_string(char_number);
- }
-}
-
-
-/**
- * A multiline comment
- * The only trick here is that we have to trim out whitespace characters
- * to get the comment to line up.
- */
-static void output_comment_multi(Chunk *pc);
-
-
-static bool kw_fcn_filename(Chunk *cmt, unc_text &out_txt);
-
-
-static bool kw_fcn_class(Chunk *cmt, unc_text &out_txt);
-
-
-static bool kw_fcn_message(Chunk *cmt, unc_text &out_txt);
-
-
-static bool kw_fcn_category(Chunk *cmt, unc_text &out_txt);
-
-
-static bool kw_fcn_scope(Chunk *cmt, unc_text &out_txt);
-
-
-static bool kw_fcn_function(Chunk *cmt, unc_text &out_txt);
-
-
-/**
- * Adds the javadoc-style @param and @return stuff, based on the params and
- * return value for pc.
- * If the arg list is '()' or '(void)', then no @params are added.
- * Likewise, if the return value is 'void', then no @return is added.
- */
-static bool kw_fcn_javaparam(Chunk *cmt, unc_text &out_txt);
-
-
-static bool kw_fcn_fclass(Chunk *cmt, unc_text &out_txt);
-
-
-static bool kw_fcn_year(Chunk *cmt, unc_text &out_txt);
-
-
-/**
- * Output a multiline comment without any reformatting other than shifting
- * it left or right to get the column right.
- *
- * Trims trailing whitespaces.
- */
-static void output_comment_multi_simple(Chunk *pc);
-
-
-/**
- * This renders the #if condition to a string buffer.
- *
- * @param[out] dst unc_text buffer to be filled
- * @param[in] ifdef if conditional as chunk list
- */
-static void generate_if_conditional_as_text(unc_text &dst, Chunk *ifdef);
-
-
-/**
- * Do keyword substitution on a comment.
- * NOTE: it is assumed that a comment will contain at most one of each type
- * of keyword.
- */
-static void do_kw_subst(Chunk *pc);
-
-
-//! All output text is sent here, one char at a time.
-static void add_char(UINT32 ch, bool is_literal = false);
-
-
-static void add_text(const char *ascii_text);
-
-
-static void add_text(const unc_text &text, bool is_ignored, bool is_literal);
-
-
-/**
- * Count the number of characters to the end of the next chunk of text.
- * If it exceeds the limit, return true.
- */
-static bool next_word_exceeds_limit(const unc_text &text, size_t idx);
-
-
-/**
- * Output a comment to the column using indent_with_tabs and
- * indent_cmt_with_tabs as the rules.
- * base_col is the indent of the first line of the comment.
- * On the first line, column == base_col.
- * On subsequent lines, column >= base_col.
- *
- * @param brace_col the brace-level indent of the comment
- * @param base_col the indent of the start of the comment (multiline)
- * @param column the column that we should end up in
- */
-static void cmt_output_indent(size_t brace_col, size_t base_col, size_t column);
-
-
-/**
- * Checks for and updates the lead chars.
- *
- * @param line the comment line
- *
- * @return 0: not present, >0: number of chars that are part of the lead
- */
-static size_t cmt_parse_lead(const unc_text &line, bool is_last);
-
-
-/**
- * Scans a multiline comment to determine the following:
- * - the extra indent of the non-first line (0 or 1)
- * - the continuation text ('' or '* ')
- *
- * The decision is based on:
- * - cmt_indent_multi
- * - cmt_star_cont
- * - cmt_multi_first_len_minimum
- * - the first line length
- * - the second line leader length
- * - the last line length (without leading space/tab)
- *
- * If the first and last line are the same length and don't contain any alnum
- * chars and (the first line len > 2 or the second leader is the same as the
- * first line length), then the indent is 0.
- *
- * If the leader on the second line is 1 wide or missing, then the indent is 1.
- *
- * Otherwise, the indent is 0.
- *
- * @param str The comment string
- * @param len Length of the comment
- * @param start_col Starting column
- *
- * @return cmt.xtra_indent is set to 0 or 1
- */
-static void calculate_comment_body_indent(cmt_reflow &cmt, const unc_text &str);
-
-
-static int next_up(const unc_text &text, size_t idx, const unc_text &tag);
-
-
-/**
- * Outputs the C comment at pc.
- * C comment combining is done here
- *
- * @return the last chunk output'd
- */
-static Chunk *output_comment_c(Chunk *pc);
-
-
-/**
- * Outputs the CPP comment at pc.
- * CPP comment combining is done here
- *
- * @return the last chunk output'd
- */
-static Chunk *output_comment_cpp(Chunk *pc);
-
-
-static void cmt_trim_whitespace(unc_text &line, bool in_preproc);
-
-
-/**
- * Outputs a comment. The initial opening '//' may be included in the text.
- * Subsequent openings (if combining comments), should not be included.
- * The closing (for C/D comments) should not be included.
- *
- * TODO:
- * If reflowing text, the comment should be added one word (or line) at a time.
- * A newline should only be sent if a blank line is encountered or if the next
- * line is indented beyond the current line (optional?).
- * If the last char on a line is a ':' or '.', then the next line won't be
- * combined.
- */
-static void add_comment_text(const unc_text &text, cmt_reflow &cmt, bool esc_close, size_t continuation_indent = 0);
-
-
-static void output_cmt_start(cmt_reflow &cmt, Chunk *pc);
-
-
-/**
- * Checks to see if the current comment can be combined with the next comment.
- * The two can be combined if:
- * 1. They are the same type
- * 2. There is exactly one newline between then
- * 3. They are indented to the same level
- */
-static bool can_combine_comment(Chunk *pc, cmt_reflow &cmt);
-
-
-#define LOG_CONTTEXT() \
- LOG_FMT(LCONTTEXT, "%s(%d): set cont_text to '%s'\n", __func__, __LINE__, cmt.cont_text.c_str())
-
-
-static void add_spaces()
-{
- while (cpd.spaces > 0)
- {
- write_char(' ');
- cpd.spaces--;
- }
-}
-
-
-static void add_char(UINT32 ch, bool is_literal)
-{
- // If we did a '\r' and it isn't followed by a '\n', then output a newline
- if ( (cpd.last_char == '\r')
- && (ch != '\n'))
- {
- write_string(cpd.newline);
- cpd.column = 1;
- cpd.did_newline = true;
- cpd.spaces = 0;
- }
-
- // convert a newline into the LF/CRLF/CR sequence
- if (ch == '\n')
- {
- add_spaces();
- write_string(cpd.newline);
- cpd.column = 1;
- cpd.did_newline = true;
- cpd.spaces = 0;
- print_numbering();
- }
- else if (ch == '\r') // do not output the CARRIAGERETURN
- {
- // do not output '\r'
- cpd.column = 1;
- cpd.did_newline = true;
- cpd.spaces = 0;
- }
- else if ( (ch == '\t')
- && cpd.output_tab_as_space)
- {
- size_t endcol = next_tab_column(cpd.column);
-
- while (cpd.column < endcol)
- {
- add_char(' ');
- }
- return;
- }
- else
- {
- // explicitly disallow a tab after a space
- if ( !is_literal
- && ch == '\t'
- && cpd.last_char == ' ')
- {
- log_rule_B("indent_with_tabs");
-
- int indent_with_tabs = options::pp_indent_with_tabs();
-
- if ( cpd.in_preproc != CT_PREPROC
- || indent_with_tabs == -1)
- {
- indent_with_tabs = options::indent_with_tabs();
- }
-
- if (indent_with_tabs == 0)
- {
- size_t endcol = next_tab_column(cpd.column);
-
- while (cpd.column < endcol)
- {
- add_char(' ');
- }
- return;
- }
- }
-
- if ( (ch == ' ')
- && !cpd.output_trailspace)
- {
- cpd.spaces++;
- cpd.column++;
- }
- else
- {
- add_spaces();
- write_char(ch);
-
- if (ch == '\t')
- {
- cpd.column = next_tab_column(cpd.column);
- }
- else
- {
- cpd.column++;
- }
- }
- }
- cpd.last_char = ch;
-} // add_char
-
-
-static void add_text(const char *ascii_text)
-{
- char ch;
-
- while ((ch = *ascii_text) != 0)
- {
- ascii_text++;
- add_char(ch);
- }
-}
-
-
-static void add_text(const unc_text &text, bool is_ignored = false, bool is_literal = false)
-{
- for (size_t idx = 0; idx < text.size(); idx++)
- {
- int ch = text[idx];
-
- if (is_ignored)
- {
- write_char(ch);
- }
- else
- {
- add_char(ch, is_literal);
- }
- }
-}
-
-
-static bool next_word_exceeds_limit(const unc_text &text, size_t idx)
-{
- LOG_FMT(LCONTTEXT, "%s(%d): idx is %zu\n",
- __func__, __LINE__, idx);
- size_t length = 0;
-
- // Count any whitespace
- while ( (idx < text.size())
- && unc_isspace(text[idx]))
- {
- idx++;
- length++;
- }
-
- // Count non-whitespace
- while ( (idx < text.size())
- && !unc_isspace(text[idx]))
- {
- idx++;
- length++;
- }
- return((cpd.column + length - 1) > options::cmt_width());
-}
-
-
-/**
- * Advance to a specific column
- * cpd.column is the current column
- *
- * @param column The column to advance to
- */
-static void output_to_column(size_t column, bool allow_tabs)
-{
- cpd.did_newline = false;
-
- if (allow_tabs)
- {
- // tab out as far as possible and then use spaces
- size_t next_column = next_tab_column(cpd.column);
-
- while (next_column <= column)
- {
- add_text("\t");
- next_column = next_tab_column(cpd.column);
- }
- }
-
- // space out the final bit
- while (cpd.column < column)
- {
- add_text(" ");
- }
-}
-
-
-static void cmt_output_indent(size_t brace_col, size_t base_col, size_t column)
-{
- log_rule_B("indent_cmt_with_tabs");
- size_t iwt = options::indent_cmt_with_tabs() ? 2 :
- (options::indent_with_tabs() ? 1 : 0);
-
- size_t tab_col = (iwt == 0) ? 0 : ((iwt == 1) ? brace_col : base_col);
-
- // LOG_FMT(LSYS, "%s(brace=%zd base=%zd col=%zd iwt=%zd) tab=%zd cur=%zd\n",
- // __func__, brace_col, base_col, column, iwt, tab_col, cpd.column);
-
- cpd.did_newline = false;
-
- if ( iwt == 2
- || ( cpd.column == 1
- && iwt == 1))
- {
- // tab out as far as possible and then use spaces
- while (next_tab_column(cpd.column) <= tab_col)
- {
- add_text("\t");
- }
- }
-
- // space out the rest
- while (cpd.column < column)
- {
- add_text(" ");
- }
-} // cmt_output_indent
-
-
-void output_parsed(FILE *pfile, bool withOptions)
-{
- const char *eol_marker = get_eol_marker();
-
- if (withOptions)
- {
- save_option_file(pfile, false, true);
- }
- fprintf(pfile, "# -=====-%s", eol_marker);
- fprintf(pfile, "# number of loops = %d\n", cpd.changes);
- fprintf(pfile, "# -=====-%s", eol_marker);
- fprintf(pfile, "# language = %s\n", language_name_from_flags(cpd.lang_flags));
- fprintf(pfile, "# -=====-%s", eol_marker);
- // MAXLENGTHOFTHENAME must be consider at the format line at the file
- // output.cpp, line 427: fprintf(pfile, "# Line Tag Parent...
- // and 430: ... fprintf(pfile, "%s# %3zu>%19.19s[%19.19s] ...
- // here xx xx xx xx
-#ifdef WIN32
- fprintf(pfile, "# Line Tag Parent_type Type of the parent Columns Br/Lvl/pp Nl Text");
-#else // not WIN32
- fprintf(pfile, "# Line Tag Parent_type Type of the parent Columns Br/Lvl/pp Flags Nl Text");
-#endif // ifdef WIN32
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
-#ifdef WIN32
- fprintf(pfile, "%s# %3d>%19.19s|%19.19s|%19.19s[%3d/%3d/%3d/%3d][%d/%d/%d][%d-%d]",
- eol_marker, (int)pc->GetOrigLine(), get_token_name(pc->GetType()),
- get_token_name(pc->GetParentType()), get_token_name(pc->GetTypeOfParent()),
- (int)pc->GetColumn(), (int)pc->GetOrigCol(), (int)pc->GetOrigColEnd(), (int)pc->GetOrigPrevSp(),
- (int)pc->GetBraceLevel(), (int)pc->GetLevel(), (int)pc->GetPpLevel(), (int)pc->GetNlCount(), pc->GetAfterTab());
-#else // not WIN32
- fprintf(pfile, "%s# %3zu>%19.19s|%19.19s|%19.19s[%3zu/%3zu/%3zu/%3zu][%zu/%zu/%zu]",
- eol_marker, pc->GetOrigLine(), get_token_name(pc->GetType()),
- get_token_name(pc->GetParentType()), get_token_name(pc->GetTypeOfParent()),
- pc->GetColumn(), pc->GetOrigCol(), pc->GetOrigColEnd(), pc->GetOrigPrevSp(),
- pc->GetBraceLevel(), pc->GetLevel(), pc->GetPpLevel());
- // Print pc flags in groups of 4 hex characters
- char flag_string[24];
- sprintf(flag_string, "%16llx", static_cast<T_PcfFlags::int_t>(pc->GetFlags()));
- fprintf(pfile, "[%.4s %.4s %.4s %.4s]", flag_string, flag_string + 4, flag_string + 8, flag_string + 12);
- fprintf(pfile, "[%zu-%d]",
- pc->GetNlCount(), pc->GetAfterTab());
-#endif // ifdef WIN32
-
- if ( pc->IsNot(CT_NEWLINE)
- && (pc->Len() != 0))
- {
- for (size_t cnt = 0; cnt < pc->GetColumn(); cnt++)
- {
- fprintf(pfile, " ");
- }
-
- if (pc->IsNot(CT_NL_CONT))
- {
- fprintf(pfile, "%s", pc->Text());
- }
- else
- {
- fprintf(pfile, "\\");
- }
- }
-
- if (options::debug_decode_the_flags())
- {
- // such as:
- // The flags are: [0xc0400:IN_CLASS,STMT_START,EXPR_START]
- fprintf(pfile, "%s The flags are: ", eol_marker);
- fprintf(pfile, "%s", pcf_flags_str(pc->GetFlags()).c_str());
- }
- }
-
- fprintf(pfile, "%s# -=====-%s", eol_marker, eol_marker);
- fflush(pfile);
-} // output_parsed
-
-
-void output_parsed_csv(FILE *pfile)
-{
- const char *eol_marker = get_eol_marker();
-
- fprintf(pfile, "number of loops,%d,\n", cpd.changes);
- fprintf(pfile, "language,%s,\n", language_name_from_flags(cpd.lang_flags));
- fprintf(pfile, "Line,Tag,Parent_type,Type of the parent,Column,Orig Col Strt,"
- "Orig Col End,Orig Sp Before,Br,Lvl,pp,Flags,Nl Before,Nl After,Text,");
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- fprintf(pfile, "%s%zu,%s,%s,%s,%zu,%zu,%zu,%zu,%zu,%zu,%zu,",
- eol_marker, pc->GetOrigLine(), get_token_name(pc->GetType()),
- get_token_name(pc->GetParentType()), get_token_name(pc->GetTypeOfParent()),
- pc->GetColumn(), pc->GetOrigCol(), pc->GetOrigColEnd(), pc->GetOrigPrevSp(),
- pc->GetBraceLevel(), pc->GetLevel(), pc->GetPpLevel());
-
- auto pcf_flag_str = pcf_flags_str(E_PcfFlag(pc->GetFlags()));
-#ifdef WIN32
- auto pcf_flag_str_start = pcf_flag_str.find("[") + 1;
-#else // not WIN32
- auto pcf_flag_str_start = pcf_flag_str.find(":") + 1;
-#endif // ifdef WIN32
- auto pcf_flag_str_end = pcf_flag_str.find("]");
- auto pcf_names = pcf_flag_str.substr(pcf_flag_str_start,
- pcf_flag_str_end - pcf_flag_str_start);
- fprintf(pfile, "\"%s\",", pcf_names.c_str());
- fprintf(pfile, "%zu,%d,",
- pc->GetNlCount(), pc->GetAfterTab());
-
- if ( pc->IsNot(CT_NEWLINE)
- && (pc->Len() != 0))
- {
- fprintf(pfile, "\"");
-
- for (size_t cnt = 0; cnt < pc->GetColumn(); cnt++)
- {
- fprintf(pfile, " ");
- }
-
- if (pc->IsNot(CT_NL_CONT))
- {
- for (auto *ch = pc->Text(); *ch != '\0'; ++ch)
- {
- fprintf(pfile, "%c", *ch);
-
- if (*ch == '"')
- {
- // need to escape the double-quote for csv-format
- fprintf(pfile, "\"");
- }
- }
- }
- else
- {
- fprintf(pfile, "\\");
- }
- fprintf(pfile, "\"");
- }
- }
-
- fflush(pfile);
-} // output_parsed_csv
-
-
-// Compares two tracks according to second in descending order.
-bool compareTrack(Track_nr t1, Track_nr t2)
-{
- char *t1s = t1.second;
- char *t2s = t2.second;
- int vergleich = strcmp(t2s, t1s);
- bool int_vergleich = vergleich > 0;
-
- return(int_vergleich);
-}
-
-
-void output_text(FILE *pfile)
-{
- bool tracking = cpd.html_type != tracking_type_e::TT_NONE; // special for debugging
-
- cpd.fout = pfile;
- cpd.did_newline = true;
- cpd.column = 1;
-
- if (cpd.bom)
- {
- write_bom();
- }
- Chunk *pc;
-
- if (cpd.frag_cols > 0)
- {
- size_t indent = cpd.frag_cols - 1;
-
- // loop over the whole chunk list
- for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- pc->SetColumn(pc->GetColumn() + indent);
- pc->SetColumnIndent(pc->GetColumnIndent() + indent);
- }
-
- cpd.frag_cols = 0;
- }
-
- if (tracking)
- {
- set_numbering(false);
- add_text("<html>\n");
- add_text("<head>\n");
- add_text(" <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"/>\n");
- add_text(" <title>Uncrustify: where do the Spaces options work</title>\n");
- add_text("</head>\n");
- add_text("<body lang=\"en-US\">\n");
- add_text("<p>\n");
- add_text("</p>\n");
- add_text("<pre>\n");
- set_numbering(true);
- set_line_number();
- print_numbering();
- }
- bool write_in_tracking = false;
- int pp_indent_with_tabs = options::pp_indent_with_tabs();
-
- if (pp_indent_with_tabs == -1)
- {
- pp_indent_with_tabs = options::indent_with_tabs();
- }
-
- // loop over the whole chunk list
- for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- char copy[1000];
- LOG_FMT(LCONTTEXT, "%s(%d): Text() is '%s', type is %s, orig line is %zu, column is %zu, nl is %zu\n",
- __func__, __LINE__, pc->ElidedText(copy), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetColumn(), pc->GetNlCount());
- cpd.output_tab_as_space = false;
-
- if (pc->Is(CT_NEWLINE))
- {
- for (size_t cnt = 0; cnt < pc->GetNlCount(); cnt++)
- {
- if ( cnt > 0
- && pc->GetNlColumn() > 1)
- {
- log_rule_B("indent_with_tabs - newline");
-
- if (pc->IsPreproc())
- {
- output_to_column(pc->GetNlColumn(), (pp_indent_with_tabs == 2));
- }
- else
- {
- output_to_column(pc->GetNlColumn(), (options::indent_with_tabs() == 2));
- }
- }
- add_char('\n');
- }
-
- cpd.did_newline = true;
- cpd.column = 1;
- }
- else if (pc->Is(CT_NL_CONT))
- {
- // FIXME: this really shouldn't be done here!
- if (!pc->TestFlags(PCF_WAS_ALIGNED))
- {
- // Add or remove space before a backslash-newline at the end of a line.
- log_rule_B("sp_before_nl_cont");
-
- if (options::sp_before_nl_cont() & IARF_REMOVE)
- {
- log_rule_B("sp_before_nl_cont");
- pc->SetColumn(cpd.column + (options::sp_before_nl_cont() == IARF_FORCE));
- }
- else
- {
- // Try to keep the same relative spacing
- Chunk *prev = pc->GetPrev();
-
- if (prev->Is(CT_PP_IGNORE))
- {
- /*
- * Want to completely leave alone PP_IGNORE'd blocks because
- * they likely have special column aligned newline
- * continuations (common in multiline macros)
- */
- pc->SetColumn(pc->GetOrigCol());
- }
- else
- {
- // Try to keep the same relative spacing
- while ( prev != nullptr
- && prev->IsNotNullChunk()
- && prev->GetOrigCol() == 0
- && prev->GetNlCount() == 0)
- {
- prev = prev->GetPrev();
- }
-
- if ( prev != nullptr
- && prev->IsNotNullChunk()
- && prev->GetNlCount() == 0)
- {
- int orig_sp = pc->GetOrigPrevSp();
-
- if ((int)(cpd.column + orig_sp) < 0)
- {
-#ifdef WIN32
- fprintf(stderr, "FATAL: negative value.\n pc->GetOrigCol() is %d, prev->GetOrigColEnd() is %d\n",
- (int)pc->GetOrigCol(), (int)prev->GetOrigColEnd());
-#else // not WIN32
- fprintf(stderr, "FATAL: negative value.\n pc->GetOrigCol() is %zu, prev->GetOrigColEnd() is %zu\n",
- pc->GetOrigCol(), prev->GetOrigColEnd());
-#endif // ifdef WIN32
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- pc->SetColumn(cpd.column + orig_sp);
-
- // Add or remove space before a backslash-newline at the end of a line.
- log_rule_B("sp_before_nl_cont");
-
- if ( (options::sp_before_nl_cont() != IARF_IGNORE)
- && (pc->GetColumn() < (cpd.column + 1)))
- {
- pc->SetColumn(cpd.column + 1);
- }
- }
- }
- }
- output_to_column(pc->GetColumn(), false);
- }
- else
- {
- log_rule_B("indent_with_tabs - newline cont");
-
- if (pc->IsPreproc())
- {
- output_to_column(pc->GetColumn(), (pp_indent_with_tabs == 2));
- }
- else
- {
- output_to_column(pc->GetColumn(), (options::indent_with_tabs() == 2));
- }
- }
- add_char('\\');
- add_char('\n');
- cpd.did_newline = true;
- cpd.column = 1;
- }
- else if (pc->Is(CT_COMMENT_MULTI))
- {
- log_rule_B("cmt_indent_multi");
- log_rule_B("cmt_convert_tab_to_spaces - multi");
- cpd.output_tab_as_space = options::cmt_convert_tab_to_spaces();
-
- if (options::cmt_indent_multi())
- {
- output_comment_multi(pc);
- }
- else
- {
- output_comment_multi_simple(pc);
- }
- }
- else if (pc->Is(CT_COMMENT_CPP))
- {
- log_rule_B("cmt_comment_cpp");
- log_rule_B("cmt_convert_tab_to_spaces - comment_cpp");
- cpd.output_tab_as_space = options::cmt_convert_tab_to_spaces();
-
- bool tmp = cpd.output_trailspace;
- /*
- * keep trailing spaces if they are still present in a chunk;
- * note that tokenize() already strips spaces in comments,
- * so if they made it up to here, they are to stay
- */
- cpd.output_trailspace = true;
- pc = output_comment_cpp(pc);
- cpd.output_trailspace = tmp;
- }
- else if (pc->Is(CT_COMMENT))
- {
- log_rule_B("cmt_comment");
- log_rule_B("cmt_convert_tab_to_spaces - comment");
- cpd.output_tab_as_space = options::cmt_convert_tab_to_spaces();
-
- pc = output_comment_c(pc);
- }
- else if ( pc->Is(CT_JUNK)
- || pc->Is(CT_IGNORED))
- {
- LOG_FMT(LOUTIND, "%s(%d): orig line is %zu, orig col is %zu,\npc->Text() >%s<, pc->str.size() is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), pc->GetStr().size());
- // do not adjust the column for junk
- add_text(pc->GetStr(), true);
- }
- else if (pc->Len() == 0)
- {
- // don't do anything for non-visible stuff
- LOG_FMT(LOUTIND, "%s(%d): orig line is %zu, column is %zu, non-visible stuff: type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetColumn(), get_token_name(pc->GetType()));
- }
- else
- {
- bool allow_tabs;
- cpd.output_trailspace = (pc->Is(CT_STRING_MULTI));
-
- // indent to the 'level' first
- if (cpd.did_newline)
- {
- if ( ( pc->IsPreproc()
- && pp_indent_with_tabs == 1)
- || ( !pc->IsPreproc()
- && options::indent_with_tabs() == 1))
- {
- size_t lvlcol;
-
- /*
- * FIXME: it would be better to properly set m_columnIndent in
- * indent_text(), but this hack for '}' and '#' seems to work.
- */
- if ( pc->Is(CT_BRACE_CLOSE)
- || pc->Is(CT_CASE_COLON)
- || pc->IsPreproc())
- {
- lvlcol = pc->GetColumn();
- }
- else
- {
- lvlcol = pc->GetColumnIndent();
-
- if (lvlcol > pc->GetColumn())
- {
- lvlcol = pc->GetColumn();
- }
- }
-
- if (lvlcol > 1)
- {
- log_rule_B("indent_with_tabs - hack");
- output_to_column(lvlcol, true);
- }
- }
- log_rule_B("indent_with_tabs");
- allow_tabs = ( pc->IsPreproc()
- && pp_indent_with_tabs == 2)
- || ( !pc->IsPreproc()
- && options::indent_with_tabs() == 2)
- || ( pc->IsComment()
- && options::indent_with_tabs() != 0);
-
- LOG_FMT(LOUTIND, "%s(%d): orig line is %zu, column is %zu, column indent is %zu, cpd.column is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetColumn(), pc->GetColumnIndent(), cpd.column);
- }
- else
- {
- /*
- * Reformatting multi-line comments can screw up the column.
- * Make sure we don't mess up the spacing on this line.
- * This has to be done here because comments are not formatted
- * until the output phase.
- */
- if (pc->GetColumn() < cpd.column)
- {
- reindent_line(pc, cpd.column);
- }
- // not the first item on a line
- Chunk *prev = pc->GetPrev();
- log_rule_B("align_with_tabs");
- allow_tabs = ( options::align_with_tabs()
- && pc->TestFlags(PCF_WAS_ALIGNED)
- && ((prev->GetColumn() + prev->Len() + 1) != pc->GetColumn()));
-
- log_rule_B("align_keep_tabs");
-
- if (options::align_keep_tabs())
- {
- allow_tabs |= pc->GetAfterTab();
- }
- LOG_FMT(LOUTIND, "%s(%d): at column %zu(%s)\n",
- __func__, __LINE__, pc->GetColumn(), (allow_tabs ? "true" : "FALSE"));
- }
- output_to_column(pc->GetColumn(), allow_tabs);
-
- if (write_in_tracking)
- {
- if (pc->Is(CT_ANGLE_OPEN))
- {
- add_text("&lt;", false, false);
- }
- else if (pc->Is(CT_ANGLE_CLOSE))
- {
- add_text("&gt;", false, false);
- }
- else
- {
- if (tracking)
- {
- if (pc->GetStr()[0] == '<')
- {
- add_text("&lt;", false, false);
- size_t lang = pc->GetStr().size();
-
- for (size_t idx = 1; idx < lang - 1; idx++)
- {
- int ch = pc->GetStr()[idx];
- add_char(ch);
- }
-
- add_text("&gt;", false, false);
- }
- }
- add_text(pc->GetStr(), false, pc->Is(CT_STRING));
- }
- write_in_tracking = false;
- }
- else
- {
- add_text(pc->GetStr(), false, pc->Is(CT_STRING));
- }
-
- if (pc->Is(CT_PP_DEFINE)) // Issue #876
- {
- // If true, a <TAB> is inserted after #define.
- log_rule_B("force_tab_after_define");
-
- if (options::force_tab_after_define())
- {
- add_char('\t');
- }
- }
- cpd.did_newline = pc->IsNewline();
- cpd.output_trailspace = false;
- }
-
- if (pc->GetTrackingData() != nullptr)
- {
- LOG_FMT(LGUY, " Tracking info are: \n");
- LOG_FMT(LGUY, " number of track(s) %zu\n", pc->GetTrackingData()->size());
- add_text("<a title=\"");
- char tempText[80];
-
- // is sorting necessary?
- size_t many = pc->GetTrackingData()->size();
-
- if (many > 1)
- {
-#ifdef EXTRA_LOG
- // protocol before sort
- for (size_t track = 0; track < pc->GetTrackingData()->size(); track++)
- {
- const track_list *A = pc->GetTrackingData();
- const Track_nr B = A->at(track);
- size_t Bfirst = B.first;
- char *Bsecond = B.second;
-
- LOG_FMT(LGUY, " %zu, tracking number is %zu\n", track, Bfirst);
- LOG_FMT(LGUY, " %zu, rule is %s\n", track, Bsecond);
- }
-#endif
-
- if (options::debug_sort_the_tracks())
- {
- track_list *A1 = pc->TrackingData();
- sort(A1->begin(), A1->end(), compareTrack);
- }
-#ifdef EXTRA_LOG
- // protocol after sort
- for (size_t track = 0; track < pc->GetTrackingData()->size(); track++)
- {
- const track_list *A = pc->GetTrackingData();
- const Track_nr B = A->at(track);
- size_t Bfirst = B.first;
- char *Bsecond = B.second;
-
- LOG_FMT(LGUY, " %zu, tracking number is %zu\n", track, Bfirst);
- LOG_FMT(LGUY, " %zu, rule is %s\n", track, Bsecond);
- }
-#endif
- }
- char *old_one = nullptr;
-
- for (size_t track = 0; track < pc->GetTrackingData()->size(); track++)
- {
- const track_list *A = pc->GetTrackingData();
- const Track_nr B = A->at(track);
- size_t Bfirst = B.first;
- char *Bsecond = B.second;
- bool first_text = true;
-
- if ( old_one == nullptr
- || strcmp(old_one, Bsecond) != 0)
- {
- // first time this option
- if (old_one != nullptr)
- {
- add_text("&#010;");
- }
- old_one = Bsecond;
-
- if (first_text)
- {
- sprintf(tempText, "%s", Bsecond);
- add_text(tempText);
- add_text(": ");
- first_text = false;
- }
- }
- else
- {
- add_text(", ");
- }
- sprintf(tempText, "%zu", Bfirst);
- add_text(tempText);
- } // for (size_t track = 0; track < pc->GetTrackingData()->size(); track++)
-
- add_text("\"><font color=\"red\">M</font></a>");
- write_in_tracking = true;
- } // if (pc->GetTrackingData() != nullptr)
- } // loop over the whole chunk list
-
- if (tracking)
- {
- set_numbering(false);
- add_text("</pre>\n");
- add_text("</body>\n");
- add_text("</html>\n");
- }
-} // output_text
-
-
-void dump_step(const char *filename, const char *step_description)
-{
- static int file_num = 0;
- char buffer[256];
- FILE *dump_file;
-
- if ( filename == nullptr
- || strlen(filename) == 0)
- {
- return;
- }
-
- // On the first call, also save the options in use
- if (file_num == 0)
- {
- snprintf(buffer, 256, "New dump file: %s_%03d.log - Options in use", filename, file_num);
- log_rule_B(buffer);
-
- snprintf(buffer, 256, "%s_%03d.log", filename, file_num);
- ++file_num;
-
- dump_file = fopen(buffer, "wb");
-
- if (dump_file != nullptr)
- {
- save_option_file(dump_file, false, true);
- fclose(dump_file);
- }
- }
- snprintf(buffer, 256, "New dump file: %s_%03d.log - %s", filename, file_num, step_description);
- log_rule_B(buffer);
-
- snprintf(buffer, 256, "%s_%03d.log", filename, file_num);
- ++file_num;
-
- dump_file = fopen(buffer, "wb");
-
- if (dump_file != nullptr)
- {
- fprintf(dump_file, "STEP: %s\n--------------\n", step_description);
- output_parsed(dump_file, false);
- fclose(dump_file);
- }
-} // dump_step
-
-
-static size_t cmt_parse_lead(const unc_text &line, bool is_last)
-{
- size_t len = 0;
-
- while ( len < 32
- && len < line.size()) // TODO what is the meaning of 32?
- {
- if ( len > 0
- && line[len] == '/')
- {
- // ignore combined comments
- size_t tmp = len + 1;
-
- while ( tmp < line.size()
- && unc_isspace(line[tmp]))
- {
- tmp++;
- }
-
- if ( tmp < line.size()
- && line[tmp] == '/')
- {
- return(1);
- }
- break;
- }
- else if (strchr("*|\\#+", line[len]) == nullptr)
- {
- break; // none of the characters '*|\#+' found in line
- }
- len++;
- }
-
- if (len > 30) // TODO: what is the meaning of 30?
- {
- return(1);
- }
-
- if ( len > 0
- && ( len >= line.size()
- || unc_isspace(line[len])))
- {
- return(len);
- }
-
- if ( len == 1
- && line[0] == '*')
- {
- return(len);
- }
-
- if ( is_last
- && len > 0)
- {
- return(len);
- }
- return(0);
-} // cmt_parse_lead
-
-
-/**
- * Eat whitespace characters starting at the specified index in the forward or reverse direction
- * within a single line
- * @param str the input string containing the comment text
- * @param idx the starting index
- * @param forward if true, searches in the forward direction;
- * if false, searches in the reverse direction
- * @return the first index at which a non-whitespace character is encountered, including
- * a newline character
- */
-template<typename String>
-static int eat_line_whitespace(const String &str,
- int idx, bool
- forward = true)
-{
- auto advance_index = [&](int i)
- {
- return(forward ? i + 1 : i - 1);
- };
-
- auto index_in_range = [&](int i)
- {
- // TODO: the following BREAKS with source code formatting; uncrustify seems to
- // think that the following is a template. This will NEED to be fixed!!!
- // For now, reformulate the statement
- //return(forward ? i<int(str.size()) : i> = 0);
- return(forward ? (i < int(str.size())) : (i >= 0));
- };
-
- while ( index_in_range(idx)
- && str[idx] != '\n'
- && str[idx] != '\r'
- && unc_isspace(str[idx]))
- {
- idx = advance_index(idx);
- }
- return(idx);
-} // eat_line_whitespace
-
-
-/**
- * Returns whether or not a javaparam tag is the leading
- * text in a comment line, with only a sequence of whitespace
- * and/or '*' characters preceding it
- * @param str the input string containing the comment text
- * @param idx the starting index
- * @return true/false
- */
-template<typename String>
-static bool javaparam_tag_is_start_of_line(const String &str, int idx)
-{
- idx = eat_line_whitespace(str,
- str[idx] == '@' ? idx - 1 : idx,
- false);
-
- while (true)
- {
- if ( idx < 0
- || str[idx] == '\n'
- || str[idx] == '\r')
- {
- return(true);
- }
-
- if (str[idx] == '*')
- {
- idx = eat_line_whitespace(str,
- idx - 1,
- false);
- }
- else
- {
- return(false);
- }
- }
-} // javaparam_tag_is_start_of_line
-
-
-/**
- * Attempts to match a doxygen/javadoc-style comment tag
- * @param str the input string containing the comment text
- * @param idx the starting index
- * @return the index of the character immediately following the matched tag,
- * or -1 if no match is found
- */
-static int match_doxygen_javadoc_tag(const std::wstring &str, size_t idx)
-{
- std::wsmatch match;
-
- if (str[idx] == L'@')
- {
- // Issue #3357
- std::wregex criteria(L"(@(?:author|"
- L"deprecated|"
- L"exception|"
- L"param(?:\\s*?\\[\\s*(?:in\\s*,\\s*out|in|out)\\s*?\\])?|"
- L"return|"
- L"see|"
- L"since|"
- L"throws|"
- L"version)(?=\\s))");
-
- if ( std::regex_search(str.cbegin() + idx, str.cend(), match, criteria)
- && match[1].matched
- && match.position(1) == std::wsmatch::difference_type(0))
- {
- std::set<std::wstring> block_tags =
- {
- L"@author",
- L"@deprecated",
- L"@exception",
- L"@param",
- L"@param[in]",
- L"@param[in,out]",
- L"@param[out]",
- L"@return",
- L"@see",
- L"@since",
- L"@throws",
- L"@version"
- };
- std::wstring result(match[1]);
- result.erase(std::remove_if(result.begin(), result.end(), ::isspace), result.end());
- auto &&it_block_tag = block_tags.find(result);
-
- if ( it_block_tag != block_tags.end()
- && javaparam_tag_is_start_of_line(str, idx))
- {
- return(int(idx + match[1].length()));
- }
- }
- }
- return(-1);
-} // match_javadoc_block_tag
-
-
-static void calculate_doxygen_javadoc_indent_alignment(const std::wstring &str,
- size_t &doxygen_javadoc_param_name_indent,
- size_t &doxygen_javadoc_continuation_indent)
-{
- log_rule_B("cmt_align_doxygen_javadoc_tags");
-
- doxygen_javadoc_continuation_indent = 0;
- doxygen_javadoc_param_name_indent = 0;
-
- if (!options::cmt_align_doxygen_javadoc_tags())
- {
- return;
- }
-
- for (size_t idx = 0; idx < str.size(); ++idx)
- {
- int start_idx = idx;
- int end_idx = match_doxygen_javadoc_tag(str, start_idx);
-
- if (end_idx > start_idx)
- {
- size_t block_tag_width = 1 + std::count_if(str.begin() + start_idx,
- str.begin() + end_idx,
- [](wchar_t ch) {
- return(!unc_isspace(ch));
- });
-
- if (block_tag_width > doxygen_javadoc_param_name_indent)
- {
- doxygen_javadoc_param_name_indent = block_tag_width;
- }
- idx = eat_line_whitespace(str, end_idx);
-
- size_t param_name_width = 0;
-
- if (str.find(L"@param", start_idx) == size_t(start_idx))
- {
- param_name_width = 1;
-
- while (true)
- {
- while ( !unc_isspace(str[idx])
- && str[idx] != ',')
- {
- ++param_name_width;
- ++idx;
- }
- idx = eat_line_whitespace(str, idx);
-
- if (str[idx] != ',')
- {
- break;
- }
- param_name_width += 2;
- idx = eat_line_whitespace(str, idx + 1);
- }
- }
-
- if (param_name_width > doxygen_javadoc_continuation_indent)
- {
- doxygen_javadoc_continuation_indent = param_name_width;
- }
- }
- }
-
- if (doxygen_javadoc_param_name_indent > 0)
- {
- log_rule_B("cmt_sp_before_doxygen_javadoc_tags");
-
- doxygen_javadoc_param_name_indent += options::cmt_sp_before_doxygen_javadoc_tags();
- doxygen_javadoc_continuation_indent += doxygen_javadoc_param_name_indent;
- }
-} // calculate_doxygen_javadoc_indent_alignment
-
-
-static void calculate_comment_body_indent(cmt_reflow &cmt, const unc_text &str)
-{
- cmt.xtra_indent = 0;
-
- log_rule_B("cmt_indent_multi");
-
- if (!options::cmt_indent_multi())
- {
- return;
- }
- size_t idx = 0;
- size_t len = str.size();
- size_t last_len = 0;
-
- log_rule_B("cmt_multi_check_last");
-
- if (options::cmt_multi_check_last())
- {
- // find the last line length
- for (idx = len - 1; idx > 0; idx--)
- {
- if ( str[idx] == '\n'
- || str[idx] == '\r')
- {
- idx++;
-
- while ( idx < len
- && ( str[idx] == ' '
- || str[idx] == '\t'))
- {
- idx++;
- }
- last_len = len - idx;
- break;
- }
- }
- }
- // find the first line length
- size_t first_len = 0;
-
- for (idx = 0; idx < len; idx++)
- {
- if ( str[idx] == '\n'
- || str[idx] == '\r')
- {
- first_len = idx;
-
- while ( str[first_len - 1] == ' '
- || str[first_len - 1] == '\t')
- {
- if (first_len == 0)
- {
- fprintf(stderr, "%s(%d): first_len is ZERO, cannot be decremented.\n",
- __func__, __LINE__);
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- first_len--;
- }
-
- // handle DOS endings
- if ( str[idx] == '\r'
- && str[idx + 1] == '\n')
- {
- idx++;
- }
- idx++;
- break;
- }
- }
-
- // Scan the second line
- size_t width = 0;
-
- for ( ; idx < len - 1; idx++)
- {
- if ( str[idx] == ' '
- || str[idx] == '\t')
- {
- if (width > 0)
- {
- break;
- }
- continue;
- }
-
- if ( str[idx] == '\n'
- || str[idx] == '\r')
- {
- break; // Done with second line
- }
-
- // Count the leading chars
- if ( str[idx] == '*'
- || str[idx] == '|'
- || str[idx] == '\\'
- || str[idx] == '#'
- || str[idx] == '+')
- {
- width++;
- }
- else
- {
- if ( width != 1
- || str[idx - 1] != '*')
- {
- width = 0;
- }
- break;
- }
- }
-
- // LOG_FMT(LSYS, "%s: first=%d last=%d width=%d\n", __func__, first_len, last_len, width);
-
- /*
- * If the first and last line are the same length and don't contain any
- * alphanumeric chars and (the first line len > cmt_multi_first_len_minimum
- * or the second leader is the same as the first line length), then the
- * indent is 0.
- */
- log_rule_B("cmt_multi_first_len_minimum");
-
- if ( first_len == last_len
- && ( first_len > options::cmt_multi_first_len_minimum()
- || first_len == width))
- {
- return;
- }
- cmt.xtra_indent = (width == 2) ? 0 : 1;
-} // calculate_comment_body_indent
-
-
-// TODO: can we use search_next_chunk here?
-static Chunk *get_next_function(Chunk *pc)
-{
- if (pc == nullptr)
- {
- pc = Chunk::NullChunkPtr;
- }
-
- while ((pc = pc->GetNext())->IsNotNullChunk())
- {
- if ( pc->Is(CT_FUNC_DEF)
- || pc->Is(CT_FUNC_PROTO)
- || pc->Is(CT_FUNC_CLASS_DEF)
- || pc->Is(CT_FUNC_CLASS_PROTO)
- || pc->Is(CT_OC_MSG_DECL))
- {
- return(pc);
- }
- }
- return(nullptr);
-}
-
-
-static Chunk *get_next_class(Chunk *pc)
-{
- return(pc->GetNextType(CT_CLASS)->GetNext());
-}
-
-
-static Chunk *get_prev_category(Chunk *pc)
-{
- return(pc->GetPrevType(CT_OC_CATEGORY));
-}
-
-
-static Chunk *get_next_scope(Chunk *pc)
-{
- return(pc->GetNextType(CT_OC_SCOPE));
-}
-
-
-static Chunk *get_prev_oc_class(Chunk *pc)
-{
- return(pc->GetPrevType(CT_OC_CLASS));
-}
-
-
-static int next_up(const unc_text &text, size_t idx, const unc_text &tag)
-{
- size_t offs = 0;
-
- while ( idx < text.size()
- && unc_isspace(text[idx]))
- {
- idx++;
- offs++;
- }
-
- if (text.startswith(tag, idx))
- {
- return(offs);
- }
- return(-1);
-}
-
-
-static void add_comment_text(const unc_text &text,
- cmt_reflow &cmt,
- bool esc_close,
- size_t continuation_indent)
-{
- bool was_star = false;
- bool was_slash = false;
- bool in_word = false;
- size_t len = text.size();
- size_t ch_cnt = 0; // chars since newline
-
- // If the '//' is included write it first else we may wrap an empty line
- size_t idx = 0;
-
- if (text.startswith("//"))
- {
- add_text("//");
- idx += 2;
-
- while (unc_isspace(text[idx]))
- {
- add_char(text[idx++]);
- }
- }
-
- for ( ; idx < len; idx++) // TODO: avoid modifying idx in loop
- {
- // Split the comment
- if (text[idx] == '\n')
- {
- in_word = false;
- add_char('\n');
- cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
-
- if (cmt.xtra_indent > 0)
- {
- add_char(' ');
- }
- // hack to get escaped newlines to align and not duplicate the leading '//'
- int tmp = next_up(text, idx + 1, "//");
-
- if (tmp < 0)
- {
- add_text(cmt.cont_text);
- }
- else
- {
- idx += tmp;
- }
- ch_cnt = 0;
- }
- else if ( cmt.reflow
- && text[idx] == ' '
- && options::cmt_width() > 0
- && ( cpd.column > options::cmt_width()
- || ( ch_cnt > 1
- && next_word_exceeds_limit(text, idx))))
- {
- log_rule_B("cmt_width");
- in_word = false;
- add_char('\n');
- cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
-
- if (cmt.xtra_indent > 0)
- {
- add_char(' ');
- }
- // The number of spaces to insert after the star on subsequent comment lines.
- log_rule_B("cmt_sp_after_star_cont");
-
- /**
- * calculate the output column
- */
- size_t column = options::cmt_sp_after_star_cont();
-
- if ( text[idx + 1] == 42 // this is star *
- && text[idx + 2] == 47) // this is /
- {
- LOG_FMT(LCONTTEXT, "%s(%d): we have a comment end\n",
- __func__, __LINE__);
-
- column += cmt.column;
- }
- else
- {
- add_text(cmt.cont_text);
-
- if (continuation_indent > 0)
- {
- if (options::cmt_align_doxygen_javadoc_tags())
- {
- log_rule_B("cmt_align_doxygen_javadoc_tags");
- }
- else if (options::cmt_reflow_indent_to_paragraph_start())
- {
- log_rule_B("cmt_reflow_indent_to_paragraph_start");
- }
- column += continuation_indent;
-
- log_rule_B("cmt_sp_after_star_cont");
-
- if (column >= options::cmt_sp_after_star_cont())
- {
- column -= options::cmt_sp_after_star_cont();
- }
- }
- /**
- * count the number trailing spaces in the comment continuation text
- */
- size_t num_trailing_sp = 0;
-
- while ( num_trailing_sp < cmt.cont_text.size()
- && unc_isspace(cmt.cont_text[cmt.cont_text.size() - 1 - num_trailing_sp]))
- {
- ++num_trailing_sp;
- }
- column += cpd.column;
-
- if (column >= num_trailing_sp)
- {
- column -= num_trailing_sp;
- }
- }
- output_to_column(column,
- false);
- ch_cnt = 0;
- }
- else
- {
- // Escape a C closure in a CPP comment
- if ( esc_close
- && ( ( was_star
- && text[idx] == '/')
- || ( was_slash
- && text[idx] == '*')))
- {
- add_char(' ');
- }
-
- if ( !in_word
- && !unc_isspace(text[idx]))
- {
- cmt.word_count++;
- }
- in_word = !unc_isspace(text[idx]);
-
- add_char(text[idx]);
- was_star = (text[idx] == '*');
- was_slash = (text[idx] == '/');
- ch_cnt++;
- }
- }
-} // add_comment_text
-
-
-static void output_cmt_start(cmt_reflow &cmt, Chunk *pc)
-{
- cmt.pc = pc;
- cmt.column = pc->GetColumn();
- cmt.brace_col = pc->GetColumnIndent();
- cmt.base_col = pc->GetColumnIndent();
- cmt.word_count = 0;
- cmt.xtra_indent = 0;
- cmt.cont_text.clear();
- cmt.reflow = false;
-
- // Issue #2752
- log_rule_B("cmt_insert_file_header");
- log_rule_B("cmt_insert_file_footer");
- log_rule_B("cmt_insert_func_header)");
- log_rule_B("cmt_insert_class_header");
- log_rule_B("cmt_insert_oc_msg_header");
-
- if ( options::cmt_insert_file_header().size() > 0
- || options::cmt_insert_file_footer().size() > 0
- || options::cmt_insert_func_header().size() > 0
- || options::cmt_insert_class_header().size() > 0
- || options::cmt_insert_oc_msg_header().size() > 0)
- {
- LOG_FMT(LCONTTEXT, "%s(%d): cmt_insert_file\n", __func__, __LINE__);
- do_kw_subst(pc);
- }
- else
- {
- LOG_FMT(LCONTTEXT, "%s(%d): no cmt_insert_file\n", __func__, __LINE__);
- }
-
- if (cmt.brace_col == 0)
- {
- log_rule_B("output_tab_size");
- cmt.brace_col = 1 + (pc->GetBraceLevel() * options::output_tab_size());
- }
- // LOG_FMT(LSYS, "%s: line %zd, brace=%zd base=%zd col=%zd orig=%zd aligned=%x\n",
- // __func__, pc->GetOrigLine(), cmt.brace_col, cmt.base_col, cmt.column, pc->GetOrigCol(),
- // pc->GetFlags() & (PCF_WAS_ALIGNED | PCF_RIGHT_COMMENT));
-
- if ( pc->GetParentType() == CT_COMMENT_START
- || pc->GetParentType() == CT_COMMENT_WHOLE)
- {
- log_rule_B("indent_col1_comment");
-
- if ( !options::indent_col1_comment()
- && pc->GetOrigCol() == 1
- && !pc->TestFlags(PCF_INSERTED))
- {
- cmt.column = 1;
- cmt.base_col = 1;
- cmt.brace_col = 1;
- }
- }
- // tab aligning code
- log_rule_B("indent_cmt_with_tabs");
-
- if ( options::indent_cmt_with_tabs()
- && ( pc->GetParentType() == CT_COMMENT_END
- || pc->GetParentType() == CT_COMMENT_WHOLE))
- {
- cmt.column = align_tab_column(cmt.column - 1);
- // LOG_FMT(LSYS, "%s: line %d, orig:%d new:%d\n",
- // __func__, pc->GetOrigLine(), pc->GetColumn(), cmt.column);
- pc->SetColumn(cmt.column);
- }
- cmt.base_col = cmt.column;
-
- // LOG_FMT(LSYS, "%s: -- brace=%d base=%d col=%d\n",
- // __func__, cmt.brace_col, cmt.base_col, cmt.column);
-
- // Bump out to the column
- cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
-} // output_cmt_start
-
-
-static bool can_combine_comment(Chunk *pc, cmt_reflow &cmt)
-{
- // We can't combine if there is something other than a newline next
- if (pc->GetParentType() == CT_COMMENT_START)
- {
- return(false);
- }
-
- // next is a newline for sure, make sure it is a single newline
- if (pc == nullptr)
- {
- pc = Chunk::NullChunkPtr;
- }
- Chunk *next = pc->GetNext();
-
- if ( next->IsNotNullChunk()
- && next->GetNlCount() == 1)
- {
- // Make sure the comment is the same type at the same column
- next = next->GetNext();
-
- if ( next->Is(pc->GetType())
- && ( ( next->GetColumn() == 1
- && pc->GetColumn() == 1)
- || ( next->GetColumn() == cmt.base_col
- && pc->GetColumn() == cmt.base_col)
- || ( next->GetColumn() > cmt.base_col
- && pc->GetParentType() == CT_COMMENT_END)))
- {
- return(true);
- }
- }
- return(false);
-} // can_combine_comment
-
-
-static Chunk *output_comment_c(Chunk *first)
-{
- cmt_reflow cmt;
-
- output_cmt_start(cmt, first);
- log_rule_B("cmt_reflow_mode");
- cmt.reflow = (options::cmt_reflow_mode() != 1);
-
- // See if we can combine this comment with the next comment
- log_rule_B("cmt_c_group");
-
- if ( !options::cmt_c_group()
- || !can_combine_comment(first, cmt))
- {
- // Just add the single comment
- log_rule_B("cmt_star_cont");
- cmt.cont_text = options::cmt_star_cont() ? " * " : " ";
- LOG_CONTTEXT();
-
- log_rule_B("cmt_trailing_single_line_c_to_cpp");
-
- if (options::cmt_trailing_single_line_c_to_cpp() && first->IsLastChunkOnLine())
- {
- add_text("//");
-
- unc_text tmp;
- tmp.set(first->GetStr(), 2, first->Len() - 4);
- cmt_trim_whitespace(tmp, false);
- add_comment_text(tmp, cmt, false);
- }
- else
- {
- add_comment_text(first->GetStr(), cmt, false);
- }
- return(first);
- }
- log_rule_B("cmt_star_cont");
- cmt.cont_text = options::cmt_star_cont() ? " *" : " ";
- LOG_CONTTEXT();
-
- add_text("/*");
-
- log_rule_B("cmt_c_nl_start");
-
- if (options::cmt_c_nl_start())
- {
- add_comment_text("\n", cmt, false);
- }
- Chunk *pc = first;
- unc_text tmp;
-
- while (can_combine_comment(pc, cmt))
- {
- LOG_FMT(LCONTTEXT, "%s(%d): Text() is '%s'\n",
- __func__, __LINE__, pc->Text());
- tmp.set(pc->GetStr(), 2, pc->Len() - 4);
-
- if ( cpd.last_char == '*'
- && tmp[0] != ' ') // Issue #1908
- {
- LOG_FMT(LCONTTEXT, "%s(%d): add_text a " "\n", __func__, __LINE__);
- add_text(" ");
- }
- // In case of reflow, original comment could contain trailing spaces before closing the comment, we don't need them after reflow
- LOG_FMT(LCONTTEXT, "%s(%d): trim\n", __func__, __LINE__);
- cmt_trim_whitespace(tmp, false);
- LOG_FMT(LCONTTEXT, "%s(%d): add_comment_text(tmp is '%s')\n",
- __func__, __LINE__, tmp.c_str());
- add_comment_text(tmp, cmt, false);
- LOG_FMT(LCONTTEXT, "%s(%d): add_comment_text(newline)\n",
- __func__, __LINE__);
- add_comment_text("\n", cmt, false);
- pc = pc->GetNext();
- pc = pc->GetNext();
- }
- tmp.set(pc->GetStr(), 2, pc->Len() - 4);
-
- if ( cpd.last_char == '*'
- && tmp[0] == '/')
- {
- add_text(" ");
- }
- // In case of reflow, original comment could contain trailing spaces before closing the comment, we don't need them after reflow
- cmt_trim_whitespace(tmp, false);
- add_comment_text(tmp, cmt, false);
-
- log_rule_B("cmt_c_nl_end");
-
- if (options::cmt_c_nl_end())
- {
- cmt.cont_text = " ";
- LOG_CONTTEXT();
- add_comment_text("\n", cmt, false);
- }
- add_comment_text("*/", cmt, false);
- return(pc);
-} // output_comment_c
-
-
-static Chunk *output_comment_cpp(Chunk *first)
-{
- cmt_reflow cmt;
-
- output_cmt_start(cmt, first);
- log_rule_B("cmt_reflow_mode");
- cmt.reflow = (options::cmt_reflow_mode() != 1);
-
- unc_text leadin = "//"; // default setting to keep previous behaviour
-
- // If true, space is added with sp_cmt_cpp_start will be added after doxygen
- // sequences like '///', '///<', '//!' and '//!<'.
- log_rule_B("sp_cmt_cpp_doxygen");
-
- if (options::sp_cmt_cpp_doxygen()) // special treatment for doxygen style comments (treat as unity)
- {
- const char *sComment = first->Text();
- bool grouping = (sComment[2] == '@');
- size_t brace = 3;
-
- if ( sComment[2] == '/'
- || sComment[2] == '!') // doxygen style found!
- {
- leadin += sComment[2]; // at least one additional char (either "///" or "//!")
-
- if (sComment[3] == '<') // and a further one (either "///<" or "//!<")
- {
- leadin += '<';
- }
- else
- {
- grouping = (sComment[3] == '@'); // or a further one (grouping)
- brace = 4;
- }
- }
-
- if ( grouping
- && ( sComment[brace] == '{'
- || sComment[brace] == '}'))
- {
- leadin += '@';
- leadin += sComment[brace];
- }
- }
- // Special treatment for Qt translator or meta-data comments (treat as unity)
- // If true, space is added with sp_cmt_cpp_start will be added after Qt
- // translator or meta-data comments like '//:', '//=', and '//~'.
- log_rule_B("sp_cmt_cpp_qttr");
-
- if (options::sp_cmt_cpp_qttr())
- {
- const int c = first->GetStr()[2];
-
- if ( c == ':'
- || c == '='
- || c == '~')
- {
- leadin += c;
- }
- }
- // CPP comments can't be grouped unless they are converted to C comments
- log_rule_B("cmt_cpp_to_c");
-
- if (!options::cmt_cpp_to_c())
- {
- auto const *cmt_text = first->GetStr().c_str() + 2;
- // Add or remove space after the opening of a C++ comment,
- // i.e. '// A' vs. '//A'.
- auto *sp_cmt = &options::sp_cmt_cpp_start;
-
- cmt.cont_text = leadin;
-
- // Get start of comment text
- while ( *cmt_text != '\0'
- && unc_isspace(*cmt_text))
- {
- ++cmt_text;
- }
-
- // Determine if we are dealing with a region marker
- if ( ( first->GetPrev()->IsNullChunk()
- || first->GetPrev()->GetOrigLine() != first->GetOrigLine())
- && ( strncmp(cmt_text, "BEGIN", 5) == 0
- || strncmp(cmt_text, "END", 3) == 0))
- {
- // If sp_cmt_cpp_region is not ignore, use that instead of
- // sp_cmt_cpp_start
- if (options::sp_cmt_cpp_region() != IARF_IGNORE)
- {
- sp_cmt = &options::sp_cmt_cpp_region;
- }
- }
- // Add or remove space after the opening of a C++ comment,
- // i.e. '// A' vs. '//A'.
- log_rule_B(sp_cmt->name());
-
- if ((*sp_cmt)() != IARF_REMOVE)
- {
- cmt.cont_text += ' ';
- }
- LOG_CONTTEXT();
-
- // Add or remove space after the opening of a C++ comment,
- // i.e. '// A' vs. '//A'.
- log_rule_B(sp_cmt->name());
-
- if ((*sp_cmt)() == IARF_IGNORE)
- {
- add_comment_text(first->GetStr(), cmt, false);
- }
- else
- {
- size_t iLISz = leadin.size();
- unc_text tmp(first->GetStr(), 0, iLISz);
- add_comment_text(tmp, cmt, false);
-
- tmp.set(first->GetStr(), iLISz, first->Len() - iLISz);
-
- // Add or remove space after the opening of a C++ comment,
- // i.e. '// A' vs. '//A'.
- log_rule_B("sp_cmt_cpp_start");
-
- if ((*sp_cmt)() & IARF_REMOVE)
- {
- while ( (tmp.size() > 0)
- && unc_isspace(tmp[0]))
- {
- tmp.pop_front();
- }
- }
-
- if (tmp.size() > 0)
- {
- // Add or remove space after the opening of a C++ comment,
- // i.e. '// A' vs. '//A'.
- log_rule_B("sp_cmt_cpp_start");
-
- if ((*sp_cmt)() & IARF_ADD)
- {
- if ( !unc_isspace(tmp[0])
- && (tmp[0] != '/'))
- {
- add_comment_text(" ", cmt, false);
- }
- }
- add_comment_text(tmp, cmt, false);
- }
- }
- return(first);
- }
- // We are going to convert the CPP comments to C comments
- log_rule_B("cmt_star_cont");
- cmt.cont_text = options::cmt_star_cont() ? " * " : " ";
- LOG_CONTTEXT();
-
- unc_text tmp;
-
- // See if we can combine this comment with the next comment
- log_rule_B("cmt_cpp_group");
-
- if ( !options::cmt_cpp_group()
- || !can_combine_comment(first, cmt))
- {
- // nothing to group: just output a single line
- add_text("/*");
-
- // patch # 32, 2012-03-23
- // Add or remove space after the opening of a C++ comment,
- // i.e. '// A' vs. '//A'.
- log_rule_B("sp_cmt_cpp_start");
-
- if ( !unc_isspace(first->GetStr()[2])
- && (options::sp_cmt_cpp_start() & IARF_ADD))
- {
- add_char(' ');
- }
- tmp.set(first->GetStr(), 2, first->Len() - 2);
- add_comment_text(tmp, cmt, true);
- add_text(" */");
- return(first);
- }
- add_text("/*");
-
- log_rule_B("cmt_cpp_nl_start");
-
- if (options::cmt_cpp_nl_start())
- {
- add_comment_text("\n", cmt, false);
- }
- else
- {
- add_text(" ");
- }
- Chunk *pc = first;
- int offs;
-
- while (can_combine_comment(pc, cmt))
- {
- offs = unc_isspace(pc->GetStr()[2]) ? 1 : 0;
- tmp.set(pc->GetStr(), 2 + offs, pc->Len() - (2 + offs));
-
- if ( cpd.last_char == '*'
- && tmp[0] == '/')
- {
- add_text(" ");
- }
- add_comment_text(tmp, cmt, true);
- add_comment_text("\n", cmt, false);
- pc = pc->GetNext()->GetNext();
- }
- offs = unc_isspace(pc->GetStr()[2]) ? 1 : 0;
- tmp.set(pc->GetStr(), 2 + offs, pc->Len() - (2 + offs));
- add_comment_text(tmp, cmt, true);
-
- log_rule_B("cmt_cpp_nl_end");
-
- if (options::cmt_cpp_nl_end())
- {
- cmt.cont_text = "";
- LOG_CONTTEXT();
- add_comment_text("\n", cmt, false);
- }
- add_comment_text(" */", cmt, false);
- return(pc);
-} // output_comment_cpp
-
-
-static void cmt_trim_whitespace(unc_text &line, bool in_preproc)
-{
- // Remove trailing whitespace on the line
- while ( line.size() > 0
- && ( line.back() == ' '
- || line.back() == '\t'))
- {
- line.pop_back();
- }
-
- // Shift back to the comment text, ...
- if ( in_preproc // if in a preproc ...
- && line.size() > 1 // with a line that holds ...
- && line.back() == '\\') // a backslash-newline ...
- {
- bool do_space = false;
-
- // If there was any space before the backslash, change it to 1 space
- line.pop_back();
-
- while ( line.size() > 0
- && ( line.back() == ' '
- || line.back() == '\t'))
- {
- do_space = true;
- line.pop_back();
- }
-
- if (do_space)
- {
- line.append(' ');
- }
- line.append('\\');
- }
-} // cmt_trim_whitespace
-
-
-/**
- * Return an indexed-map of reflow fold end of line/beginning of line regex pairs read
- * from file
- */
-static std::map<std::size_t, std::pair<std::wregex, std::wregex> > get_reflow_fold_regex_map()
-{
- /**
- * TODO: should the following be static to prevent initializing it multiple times?
- */
- static std::map<std::size_t, std::pair<std::wregex, std::wregex> > regex_map;
-
- if (regex_map.empty())
- {
- if (!options::cmt_reflow_fold_regex_file().empty())
- {
- std::wstring raw_wstring(cpd.reflow_fold_regex.raw.begin(),
- cpd.reflow_fold_regex.raw.end());
-
- std::wregex criteria(L"\\s*(?:(?:(beg_of_next)|(end_of_prev))_line_regex)"
- "\\s*\\[\\s*([0-9]+)\\s*\\]\\s*=\\s*\"(.*)\"\\s*"
- "(?=\\r\\n|\\r|\\n|$)");
- std::wsregex_iterator it_regex(raw_wstring.cbegin(), raw_wstring.cend(), criteria);
- std::wsregex_iterator it_regex_end = std::wsregex_iterator();
-
- while (it_regex != it_regex_end)
- {
- std::wsmatch match = *it_regex;
-
- if ( (( match[1].matched
- || match[2].matched))
- && match[3].matched
- && match[4].matched)
- {
- auto &&index = std::stoi(match[3].str());
- std::wregex *p_wregex = match[1].matched ? &regex_map[index].second
- : &regex_map[index].first;
- *p_wregex = match[4].str();
- }
- ++it_regex;
- }
- }
- else
- {
- regex_map.emplace(0L, std::make_pair((std::wregex)L"[\\w,\\]\\)]$", (std::wregex)L"^[\\w,\\[\\(]"));
- regex_map.emplace(1L, std::make_pair((std::wregex)L"\\.$", (std::wregex)L"^[A-Z]"));
- }
- }
- return(regex_map);
-} // get_reflow_fold_regex_map
-
-
-static void output_comment_multi(Chunk *pc)
-{
- if (pc == nullptr)
- {
- return;
- }
- cmt_reflow cmt;
-
- char copy[1000];
-
- LOG_FMT(LCONTTEXT, "%s(%d): Text() is '%s', type is %s, orig col is %zu, column is %zu\n",
- __func__, __LINE__, pc->ElidedText(copy), get_token_name(pc->GetType()), pc->GetOrigCol(), pc->GetColumn());
-
- output_cmt_start(cmt, pc);
- log_rule_B("cmt_reflow_mode");
- cmt.reflow = (options::cmt_reflow_mode() != 1);
-
- size_t cmt_col = cmt.base_col;
- int col_diff = pc->GetOrigCol() - cmt.base_col;
-
- calculate_comment_body_indent(cmt, pc->GetStr());
-
- log_rule_B("cmt_indent_multi");
- log_rule_B("cmt_star_cont");
- cmt.cont_text = !options::cmt_indent_multi() ? "" :
- (options::cmt_star_cont() ? "* " : " ");
- LOG_CONTTEXT();
-
- std::wstring pc_wstring(pc->GetStr().get().cbegin(),
- pc->GetStr().get().cend());
-
- size_t doxygen_javadoc_param_name_indent = 0;
- size_t doxygen_javadoc_continuation_indent = 0;
- size_t reflow_paragraph_continuation_indent = 0;
-
- calculate_doxygen_javadoc_indent_alignment(pc_wstring,
- doxygen_javadoc_param_name_indent,
- doxygen_javadoc_continuation_indent);
-
- size_t line_count = 0;
- size_t ccol = pc->GetColumn(); // the col of subsequent comment lines
- size_t cmt_idx = 0;
- bool nl_end = false;
- bool doxygen_javadoc_indent_align = false;
- unc_text line;
-
- /*
- * Get a map of regex pairs that define expressions to match at both the end
- * of the previous line and the beginning of the next line
- */
- auto &&cmt_reflow_regex_map = get_reflow_fold_regex_map();
-
- line.clear();
- LOG_FMT(LCONTTEXT, "%s(%d): pc->Len() is %zu\n",
- __func__, __LINE__, pc->Len());
- //LOG_FMT(LCONTTEXT, "%s(%d): pc->str is %s\n",
- // __func__, __LINE__, pc->str.c_str());
-
- /**
- * check for enable/disable processing comment strings that may
- * both be embedded within the same multi-line comment
- */
- auto disable_processing_cmt_idx = find_disable_processing_comment_marker(pc->GetStr());
- auto enable_processing_cmt_idx = find_enable_processing_comment_marker(pc->GetStr());
-
- while (cmt_idx < pc->Len())
- {
- int ch = pc->GetStr()[cmt_idx];
- cmt_idx++;
-
- if ( cmt_idx > std::size_t(disable_processing_cmt_idx)
- && enable_processing_cmt_idx > disable_processing_cmt_idx)
- {
- auto length = enable_processing_cmt_idx - disable_processing_cmt_idx;
- unc_text verbatim_text(pc->GetStr(),
- disable_processing_cmt_idx,
- length);
-
- add_text(verbatim_text);
-
- cmt_idx = enable_processing_cmt_idx;
-
- /**
- * check for additional enable/disable processing comment strings that may
- * both be embedded within the same multi-line comment
- */
- disable_processing_cmt_idx = find_disable_processing_comment_marker(pc->GetStr(),
- enable_processing_cmt_idx);
- enable_processing_cmt_idx = find_enable_processing_comment_marker(pc->GetStr(),
- enable_processing_cmt_idx);
-
- /**
- * it's probably necessary to reset the line count to prevent line
- * continuation characters from being added to the end of the current line
- */
- line_count = 0;
- }
-
- // handle the CRLF and CR endings. convert both to LF
- if (ch == '\r')
- {
- ch = '\n';
-
- if ( cmt_idx < pc->Len()
- && pc->GetStr()[cmt_idx] == '\n')
- {
- cmt_idx++;
- }
- }
-
- // Find the start column
- if (line.size() == 0)
- {
- nl_end = false;
-
- if (ch == ' ')
- {
- ccol++;
- continue;
- }
- else if (ch == '\t')
- {
- log_rule_B("input_tab_size");
- ccol = calc_next_tab_column(ccol, options::input_tab_size());
- continue;
- }
- else
- {
- LOG_FMT(LCONTTEXT, "%s(%d):ch is %d, %c\n", __func__, __LINE__, ch, char(ch));
- }
- }
-
- if ( ch == '@'
- && options::cmt_align_doxygen_javadoc_tags())
- {
- int start_idx = cmt_idx - 1;
- int end_idx = match_doxygen_javadoc_tag(pc_wstring, start_idx);
-
- if (end_idx > start_idx)
- {
- doxygen_javadoc_indent_align = true;
-
- std::string match(pc->GetStr().get().cbegin() + start_idx,
- pc->GetStr().get().cbegin() + end_idx);
-
- match.erase(std::remove_if(match.begin(),
- match.end(),
- ::isspace),
- match.end());
-
- /**
- * remove whitespace before the '@'
- */
- int line_size_before_indent = line.size();
-
- while ( line_size_before_indent > 0
- && unc_isspace(line.back()))
- {
- line.pop_back();
- --line_size_before_indent;
- }
- log_rule_B("cmt_sp_before_doxygen_javadoc_tags");
-
- int indent = options::cmt_sp_before_doxygen_javadoc_tags();
-
- while (indent-- > 0)
- {
- line.append(' ');
- }
- cmt_idx += (end_idx - start_idx);
- line.append(match.c_str());
-
- bool is_exception_tag = match.find("@exception") != std::string::npos;
- bool is_param_tag = match.find("@param") != std::string::npos;
- bool is_throws_tag = match.find("@throws") != std::string::npos;
-
- if ( is_exception_tag
- || is_param_tag
- || is_throws_tag)
- {
- indent = int(doxygen_javadoc_param_name_indent) - int(line.size());
-
- while (indent-- > -line_size_before_indent)
- {
- line.append(' ');
- }
-
- while (true)
- {
- cmt_idx = eat_line_whitespace(pc->GetStr(),
- cmt_idx);
-
- while ( cmt_idx < pc->Len()
- && !unc_isspace(pc->GetStr()[cmt_idx])
- && pc->GetStr()[cmt_idx] != ',')
- {
- line.append(pc->Str()[cmt_idx++]);
- }
-
- if (!is_param_tag)
- {
- break;
- }
- /**
- * check for the possibility that comma-separated parameter names are present
- */
- cmt_idx = eat_line_whitespace(pc->GetStr(),
- cmt_idx);
-
- if (pc->GetStr()[cmt_idx] != ',')
- {
- break;
- }
- ++cmt_idx;
- line.append(", ");
- }
- }
- cmt_idx = eat_line_whitespace(pc->GetStr(),
- cmt_idx);
- indent = int(doxygen_javadoc_continuation_indent) - int(line.size());
-
- while (indent-- > -line_size_before_indent)
- {
- line.append(' ');
- }
-
- while ( cmt_idx < pc->Len()
- && !unc_isspace(pc->GetStr()[cmt_idx]))
- {
- line.append(pc->Str()[cmt_idx++]);
- }
- continue;
- }
- }
- /*
- * Now see if we need/must fold the next line with the current to enable
- * full reflow
- */
- log_rule_B("cmt_reflow_mode");
-
- if ( options::cmt_reflow_mode() == 2
- && ch == '\n'
- && cmt_idx < pc->Len())
- {
- int next_nonempty_line = -1;
- int prev_nonempty_line = -1;
- size_t nwidx = line.size();
-
- // strip trailing whitespace from the line collected so far
- while (nwidx > 0)
- {
- nwidx--;
-
- if ( prev_nonempty_line < 0
- && !unc_isspace(line[nwidx])
- && line[nwidx] != '*' // block comment: skip '*' at end of line
- && (pc->TestFlags(PCF_IN_PREPROC)
- ? ( line[nwidx] != '\\'
- || ( line[nwidx + 1] != '\r'
- && line[nwidx + 1] != '\n'))
- : true))
- {
- prev_nonempty_line = nwidx; // last non-whitespace char in the previous line
- }
- }
-
- for (size_t nxt_idx = cmt_idx;
- ( nxt_idx < pc->Len()
- && pc->GetStr()[nxt_idx] != '\r'
- && pc->GetStr()[nxt_idx] != '\n');
- nxt_idx++)
- {
- if ( next_nonempty_line < 0
- && !unc_isspace(pc->GetStr()[nxt_idx])
- && pc->GetStr()[nxt_idx] != '*'
- && (pc->TestFlags(PCF_IN_PREPROC)
- ? ( pc->GetStr()[nxt_idx] != '\\'
- || ( pc->GetStr()[nxt_idx + 1] != '\r'
- && pc->GetStr()[nxt_idx + 1] != '\n'))
- : true))
- {
- next_nonempty_line = nxt_idx; // first non-whitespace char in the next line
- }
- }
-
- if ( options::cmt_reflow_indent_to_paragraph_start()
- && next_nonempty_line >= 0
- && ( prev_nonempty_line <= 0
- || doxygen_javadoc_indent_align))
- {
- log_rule_B("cmt_reflow_indent_to_paragraph_start");
-
- int cmt_star_indent = 0;
-
- while ( next_nonempty_line > cmt_star_indent
- && pc->GetStr()[next_nonempty_line - cmt_star_indent - 1] != '*')
- {
- ++cmt_star_indent;
- }
- reflow_paragraph_continuation_indent = size_t(cmt_star_indent);
- }
-
- /*
- * see if we should fold up; usually that'd be a YES, but there are a few
- * situations where folding/reflowing by merging lines is frowned upon:
- *
- * - ASCII art in the comments (most often, these are drawings done in +-\/|.,*)
- *
- * - Doxygen/JavaDoc/etc. parameters: these often start with \ or @, at least
- * something clearly non-alphanumeric (you see where we're going with this?)
- *
- * - bullet lists that are closely spaced: bullets are always non-alphanumeric
- * characters, such as '-' or '+' (or, oh horror, '*' - that's bloody ambiguous
- * to parse :-( ... with or without '*' comment start prefix, that's the
- * question, then.)
- *
- * - semi-HTML formatted code, e.g. <pre>...</pre> comment sections (NDoc, etc.)
- *
- * - New lines which form a new paragraph without there having been added an
- * extra empty line between the last sentence and the new one.
- * A bit like this, really; so it is opportune to check if the last line ended
- * in a terminal (that would be the set '.:;!?') and the new line starts with
- * a capital.
- * Though new lines starting with comment delimiters, such as '(', should be
- * pulled up.
- *
- * So it bores down to this: the only folding (& reflowing) that's going to happen
- * is when the next line starts with an alphanumeric character AND the last
- * line didn't end with an non-alphanumeric character, except: ',' AND the next
- * line didn't start with a '*' all of a sudden while the previous one didn't
- * (the ambiguous '*'-for-bullet case!)
- */
- if ( prev_nonempty_line >= 0
- && next_nonempty_line >= int(cmt_idx))
- {
- std::wstring prev_line(line.get().cbegin(),
- line.get().cend());
- std::wstring next_line(pc->GetStr().get().cbegin() + next_nonempty_line,
- pc->GetStr().get().cend());
-
- for (auto &&cmt_reflow_regex_map_entry : cmt_reflow_regex_map)
- {
- auto &&cmt_reflow_regex_pair = cmt_reflow_regex_map_entry.second;
- auto &&end_of_prev_line_regex = cmt_reflow_regex_pair.first;
- auto &&beg_of_next_line_regex = cmt_reflow_regex_pair.second;
- std::wsmatch match[2];
-
- if ( std::regex_search(prev_line, match[0], end_of_prev_line_regex)
- && match[0].position(0) + match[0].length(0) == std::wsmatch::difference_type(line.size())
- && std::regex_search(next_line, match[1], beg_of_next_line_regex)
- && match[1].position(0) == 0)
- {
- // rewind the line to the last non-alpha:
- line.resize(prev_nonempty_line + 1);
-
- // roll the current line forward to the first non-alpha:
- cmt_idx = next_nonempty_line;
- // override the NL and make it a single whitespace:
- ch = ' ';
-
- break;
- }
- }
- }
- }
-
- if (ch == '\n')
- {
- LOG_FMT(LCONTTEXT, "%s(%d):ch is newline\n", __func__, __LINE__);
- }
- else
- {
- LOG_FMT(LCONTTEXT, "%s(%d):ch is %d, %c\n", __func__, __LINE__, ch, char(ch));
- }
- line.append(ch);
-
- // If we just hit an end of line OR we just hit end-of-comment...
- if ( ch == '\n'
- || cmt_idx == pc->Len())
- {
- if (ch == '\n')
- {
- LOG_FMT(LCONTTEXT, "%s(%d):ch is newline\n", __func__, __LINE__);
- }
- else
- {
- LOG_FMT(LCONTTEXT, "%s(%d):ch is %d, %c\n", __func__, __LINE__, ch, char(ch));
- }
- line_count++;
- LOG_FMT(LCONTTEXT, "%s(%d):line_count is %zu\n", __func__, __LINE__, line_count);
-
- // strip trailing tabs and spaces before the newline
- if (ch == '\n')
- {
- nl_end = true;
- line.pop_back();
- cmt_trim_whitespace(line, pc->TestFlags(PCF_IN_PREPROC));
- }
-
- if (line_count == 1)
- {
- // this is the first line - add unchanged
- add_comment_text(line, cmt, false);
-
- if (nl_end)
- {
- add_char('\n');
- }
- }
- else
- {
- /*
- * This is not the first line, so we need to indent to the
- * correct column. Each line is indented 0 or more spaces.
- */
- // Ensure ccol is not negative
- if (static_cast<int>(ccol) >= col_diff)
- {
- ccol -= col_diff;
- }
-
- if (ccol < (cmt_col + 3))
- {
- ccol = cmt_col + 3;
- }
-
- if (line.size() == 0)
- {
- // Empty line - just a '\n'
- log_rule_B("cmt_star_cont");
-
- if (options::cmt_star_cont())
- {
- // The number of spaces to insert at the start of subsequent comment lines.
- log_rule_B("cmt_sp_before_star_cont");
- cmt.column = cmt_col + options::cmt_sp_before_star_cont();
- cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
-
- if (cmt.xtra_indent > 0)
- {
- add_char(' ');
- }
- // multiline comments can have empty lines with some spaces in them for alignment
- // while adding * symbol and aligning them we don't want to keep these trailing spaces
- unc_text tmp = unc_text(cmt.cont_text);
- cmt_trim_whitespace(tmp, false);
- add_text(tmp);
- }
- add_char('\n');
- }
- else
- {
- /*
- * If this doesn't start with a '*' or '|'.
- * '\name' is a common parameter documentation thing.
- */
- log_rule_B("cmt_indent_multi");
-
- if ( options::cmt_indent_multi()
- && line[0] != '*'
- && line[0] != '|'
- && line[0] != '#'
- && ( line[0] != '\\'
- || unc_isalpha(line[1]))
- && line[0] != '+')
- {
- // The number of spaces to insert at the start of subsequent comment lines.
- log_rule_B("cmt_sp_before_star_cont");
- size_t start_col = cmt_col + options::cmt_sp_before_star_cont();
-
- log_rule_B("cmt_star_cont");
-
- if (options::cmt_star_cont())
- {
- cmt.column = start_col;
- cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
-
- if (cmt.xtra_indent > 0)
- {
- add_char(' ');
- }
- add_text(cmt.cont_text);
- // The number of spaces to insert after the star on subsequent comment lines.
- log_rule_B("cmt_sp_after_star_cont");
- output_to_column(ccol + options::cmt_sp_after_star_cont(), false);
- }
- else
- {
- cmt.column = ccol;
- cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
- }
- }
- else
- {
- // The number of spaces to insert at the start of subsequent comment lines.
- log_rule_B("cmt_sp_before_star_cont");
- cmt.column = cmt_col + options::cmt_sp_before_star_cont();
- cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
-
- if (cmt.xtra_indent > 0)
- {
- add_char(' ');
- }
- size_t idx;
-
- // Checks for and updates the lead chars.
- // @return 0=not present, >0=number of chars that are part of the lead
- idx = cmt_parse_lead(line, (cmt_idx == pc->Len()));
-
- if (idx > 0)
- {
- // >0=number of chars that are part of the lead
- cmt.cont_text.set(line, 0, idx);
- LOG_CONTTEXT();
-
- if ( (line.size() >= 2)
- && (line[0] == '*')
- && unc_isalnum(line[1]))
- {
- line.insert(1, ' ');
- }
- }
- else
- {
- // bug #653
- if (language_is_set(LANG_D))
- {
- // 0=no lead char present
- add_text(cmt.cont_text);
- }
- }
- }
- size_t continuation_indent = 0;
-
- if (doxygen_javadoc_indent_align)
- {
- continuation_indent = doxygen_javadoc_continuation_indent;
- }
- else if (reflow_paragraph_continuation_indent > 0)
- {
- continuation_indent = reflow_paragraph_continuation_indent;
- }
- add_comment_text(line,
- cmt,
- false,
- continuation_indent);
-
- if (nl_end)
- {
- add_text("\n");
- }
- }
- }
- line.clear();
- doxygen_javadoc_indent_align = false;
- ccol = 1;
- }
- }
-} // output_comment_multi
-
-
-static bool kw_fcn_filename(Chunk *cmt, unc_text &out_txt)
-{
- UNUSED(cmt);
- out_txt.append(path_basename(cpd.filename.c_str()));
- return(true);
-}
-
-
-static bool kw_fcn_class(Chunk *cmt, unc_text &out_txt)
-{
- Chunk *tmp = Chunk::NullChunkPtr;
-
- if (language_is_set(LANG_CPP | LANG_OC))
- {
- Chunk *fcn = get_next_function(cmt);
-
- if ( fcn != nullptr
- && fcn->Is(CT_OC_MSG_DECL))
- {
- tmp = get_prev_oc_class(cmt);
- }
- else
- {
- tmp = get_next_class(cmt);
- }
- }
- else if (language_is_set(LANG_OC))
- {
- tmp = get_prev_oc_class(cmt);
- }
-
- if (tmp->IsNullChunk())
- {
- tmp = get_next_class(cmt);
- }
-
- if (tmp->IsNotNullChunk())
- {
- out_txt.append(tmp->GetStr());
-
- while ((tmp = tmp->GetNext())->IsNotNullChunk())
- {
- if (tmp->IsNot(CT_DC_MEMBER))
- {
- break;
- }
- tmp = tmp->GetNext();
-
- if (tmp->IsNotNullChunk())
- {
- out_txt.append("::");
- out_txt.append(tmp->GetStr());
- }
- }
- return(true);
- }
- return(false);
-} // kw_fcn_class
-
-
-static bool kw_fcn_message(Chunk *cmt, unc_text &out_txt)
-{
- Chunk *fcn = get_next_function(cmt);
-
- if (fcn == nullptr)
- {
- return(false);
- }
- out_txt.append(fcn->GetStr());
-
- Chunk *tmp = fcn->GetNextNcNnl();
- Chunk *word = Chunk::NullChunkPtr;
-
- while (tmp->IsNotNullChunk())
- {
- if ( tmp->Is(CT_BRACE_OPEN)
- || tmp->Is(CT_SEMICOLON))
- {
- break;
- }
-
- if (tmp->Is(CT_OC_COLON))
- {
- if (word->IsNotNullChunk())
- {
- out_txt.append(word->GetStr());
- word = Chunk::NullChunkPtr;
- }
- out_txt.append(":");
- }
-
- if (tmp->Is(CT_WORD))
- {
- word = tmp;
- }
- tmp = tmp->GetNextNcNnl();
- }
- return(true);
-} // kw_fcn_message
-
-
-static bool kw_fcn_category(Chunk *cmt, unc_text &out_txt)
-{
- Chunk *category = get_prev_category(cmt);
-
- if (category->IsNotNullChunk())
- {
- out_txt.append('(');
- out_txt.append(category->GetStr());
- out_txt.append(')');
- }
- return(true);
-} // kw_fcn_category
-
-
-static bool kw_fcn_scope(Chunk *cmt, unc_text &out_txt)
-{
- Chunk *scope = get_next_scope(cmt);
-
- if (scope->IsNotNullChunk())
- {
- out_txt.append(scope->GetStr());
- return(true);
- }
- return(false);
-} // kw_fcn_scope
-
-
-static bool kw_fcn_function(Chunk *cmt, unc_text &out_txt)
-{
- Chunk *fcn = get_next_function(cmt);
-
- if (fcn != nullptr)
- {
- if (fcn->GetParentType() == CT_OPERATOR)
- {
- out_txt.append("operator ");
- }
-
- if (fcn->GetPrev()->GetType() == CT_DESTRUCTOR)
- {
- out_txt.append('~');
- }
- out_txt.append(fcn->GetStr());
- return(true);
- }
- return(false);
-}
-
-
-static bool kw_fcn_javaparam(Chunk *cmt, unc_text &out_txt)
-{
- Chunk *fcn = get_next_function(cmt);
-
- if (fcn == nullptr)
- {
- return(false);
- }
- Chunk *fpo;
- Chunk *fpc;
- bool has_param = true;
- bool need_nl = false;
-
- if (fcn->Is(CT_OC_MSG_DECL))
- {
- Chunk *tmp = fcn->GetNextNcNnl();
- has_param = false;
-
- while (tmp->IsNotNullChunk())
- {
- if ( tmp->Is(CT_BRACE_OPEN)
- || tmp->Is(CT_SEMICOLON))
- {
- break;
- }
-
- if (has_param)
- {
- if (need_nl)
- {
- out_txt.append("\n");
- }
- need_nl = true;
- out_txt.append("@param");
- out_txt.append(" ");
- out_txt.append(tmp->GetStr());
- out_txt.append(" TODO");
- }
- has_param = false;
-
- if (tmp->Is(CT_PAREN_CLOSE))
- {
- has_param = true;
- }
- tmp = tmp->GetNextNcNnl();
- }
- fpo = fpc = Chunk::NullChunkPtr;
- }
- else
- {
- fpo = fcn->GetNextType(CT_FPAREN_OPEN, fcn->GetLevel());
-
- if (fpo->IsNullChunk())
- {
- return(true);
- }
- fpc = fpo->GetNextType(CT_FPAREN_CLOSE, fcn->GetLevel());
-
- if (fpc->IsNullChunk())
- {
- return(true);
- }
- }
- Chunk *tmp;
-
- // Check for 'foo()' and 'foo(void)'
- if (fpo->IsNotNullChunk())
- {
- if (fpo->GetNextNcNnl() == fpc)
- {
- has_param = false;
- }
- else
- {
- tmp = fpo->GetNextNcNnl();
-
- if ( (tmp == fpc->GetPrevNcNnl())
- && tmp->IsString("void"))
- {
- has_param = false;
- }
- }
- }
-
- if (has_param)
- {
- Chunk *prev = Chunk::NullChunkPtr;
- tmp = fpo;
-
- while ((tmp = tmp->GetNext())->IsNotNullChunk())
- {
- if ( tmp->Is(CT_COMMA)
- || tmp == fpc)
- {
- if (need_nl)
- {
- out_txt.append("\n");
- }
- need_nl = true;
- out_txt.append("@param");
-
- if (prev->IsNotNullChunk())
- {
- out_txt.append(" ");
- out_txt.append(prev->GetStr());
- out_txt.append(" TODO");
- }
- prev = Chunk::NullChunkPtr;
-
- if (tmp == fpc)
- {
- break;
- }
- }
-
- if (tmp->Is(CT_WORD))
- {
- prev = tmp;
- }
- }
- }
- // Do the return stuff
- tmp = fcn->GetPrevNcNnl();
-
- // For Objective-C we need to go to the previous chunk
- if ( tmp->IsNotNullChunk()
- && tmp->GetParentType() == CT_OC_MSG_DECL
- && tmp->Is(CT_PAREN_CLOSE))
- {
- tmp = tmp->GetPrevNcNnl();
- }
-
- if ( tmp->IsNotNullChunk()
- && !tmp->IsString("void"))
- {
- if (need_nl)
- {
- out_txt.append("\n");
- }
- out_txt.append("@return TODO");
- }
- return(true);
-} // kw_fcn_javaparam
-
-
-static bool kw_fcn_fclass(Chunk *cmt, unc_text &out_txt)
-{
- Chunk *fcn = get_next_function(cmt);
-
- if (!fcn)
- {
- return(false);
- }
-
- if (fcn->TestFlags(PCF_IN_CLASS))
- {
- // if inside a class, we need to find to the class name
- Chunk *tmp = fcn->GetPrevType(CT_BRACE_OPEN, fcn->GetLevel() - 1);
- tmp = tmp->GetPrevType(CT_CLASS, tmp->GetLevel());
-
- if (tmp->IsNullChunk())
- {
- tmp = Chunk::NullChunkPtr;
- }
- else
- {
- tmp = tmp->GetNextNcNnl();
- }
-
- while ( tmp->IsNotNullChunk()
- && tmp->GetNextNcNnl()->Is(CT_DC_MEMBER))
- {
- tmp = tmp->GetNextNcNnl();
- tmp = tmp->GetNextNcNnl();
- }
-
- if (tmp->IsNotNullChunk())
- {
- out_txt.append(tmp->GetStr());
- return(true);
- }
- }
- else
- {
- // if outside a class, we expect "CLASS::METHOD(...)"
- Chunk *tmp = fcn->GetPrevNcNnl();
-
- if (tmp->Is(CT_OPERATOR))
- {
- tmp = tmp->GetPrevNcNnl();
- }
-
- if ( tmp->IsNotNullChunk()
- && ( tmp->Is(CT_DC_MEMBER)
- || tmp->Is(CT_MEMBER)))
- {
- tmp = tmp->GetPrevNcNnl();
- out_txt.append(tmp->GetStr());
- return(true);
- }
- }
- return(false);
-} // kw_fcn_fclass
-
-
-static bool kw_fcn_year(Chunk *cmt, unc_text &out_txt)
-{
- UNUSED(cmt);
- time_t now = time(nullptr);
-
- out_txt.append(std::to_string(1900 + localtime(&now)->tm_year));
- return(true);
-}
-
-
-struct kw_subst_t
-{
- const char *tag;
- bool (*func)(Chunk *cmt, unc_text &out_txt);
-};
-
-
-static const kw_subst_t kw_subst_table[] =
-{
- { "$(filename)", kw_fcn_filename },
- { "$(class)", kw_fcn_class },
- { "$(message)", kw_fcn_message },
- { "$(category)", kw_fcn_category },
- { "$(scope)", kw_fcn_scope },
- { "$(function)", kw_fcn_function },
- { "$(javaparam)", kw_fcn_javaparam },
- { "$(fclass)", kw_fcn_fclass },
- { "$(year)", kw_fcn_year },
-};
-
-
-static void do_kw_subst(Chunk *pc)
-{
- for (const auto &kw : kw_subst_table)
- {
- int idx = pc->GetStr().find(kw.tag);
-
- if (idx < 0)
- {
- continue;
- }
- unc_text tmp_txt;
- tmp_txt.clear();
-
- if (kw.func(pc, tmp_txt))
- {
- // if the replacement contains '\n' we need to fix the lead
- if (tmp_txt.find("\n") >= 0)
- {
- size_t nl_idx = pc->GetStr().rfind("\n", idx);
-
- if (nl_idx > 0)
- {
- // idx and nl_idx are both positive
- unc_text nl_txt;
- nl_txt.append("\n");
- nl_idx++;
-
- while ( (nl_idx < static_cast<size_t>(idx))
- && !unc_isalnum(pc->GetStr()[nl_idx]))
- {
- nl_txt.append(pc->Str()[nl_idx++]);
- }
- tmp_txt.replace("\n", nl_txt);
- }
- }
- pc->Str().replace(kw.tag, tmp_txt);
- }
- }
-} // do_kw_subst
-
-
-static void output_comment_multi_simple(Chunk *pc)
-{
- if ( pc == nullptr
- && pc->IsNotNullChunk())
- {
- return;
- }
- cmt_reflow cmt;
-
- LOG_FMT(LCONTTEXT, "%s(%d): Text() is '%s', type is %s, orig col is %zu, column is %zu\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()), pc->GetOrigCol(), pc->GetColumn());
-
- output_cmt_start(cmt, pc);
-
- // The multiline comment is saved inside one chunk. If the comment is
- // shifted all lines of the comment need to be shifted by the same amount.
- // Save the difference of initial and current position to apply it on every
- // line_column
- const int col_diff = [pc]()
- {
- int diff = 0;
-
- if (pc->GetPrev()->IsNewline())
- {
- // The comment should be indented correctly
- diff = pc->GetColumn() - pc->GetOrigCol();
- }
- return(diff);
- }();
-
- /**
- * check for enable/disable processing comment strings that may
- * both be embedded within the same multi-line comment
- */
- auto disable_processing_cmt_idx = find_disable_processing_comment_marker(pc->GetStr());
- auto enable_processing_cmt_idx = find_enable_processing_comment_marker(pc->GetStr());
-
- unc_text line;
- size_t line_count = 0;
- size_t line_column = pc->GetColumn();
- size_t cmt_idx = 0;
-
- while (cmt_idx < pc->Len())
- {
- int ch = pc->GetStr()[cmt_idx];
- cmt_idx++;
-
- if ( cmt_idx > std::size_t(disable_processing_cmt_idx)
- && enable_processing_cmt_idx > disable_processing_cmt_idx)
- {
- auto length = enable_processing_cmt_idx - disable_processing_cmt_idx;
- unc_text verbatim_text(pc->GetStr(),
- disable_processing_cmt_idx,
- length);
-
- add_text(verbatim_text);
-
- cmt_idx = enable_processing_cmt_idx;
-
- /**
- * check for additional enable/disable processing comment strings that may
- * both be embedded within the same multi-line comment
- */
- disable_processing_cmt_idx = find_disable_processing_comment_marker(pc->GetStr(),
- enable_processing_cmt_idx);
- enable_processing_cmt_idx = find_enable_processing_comment_marker(pc->GetStr(),
- enable_processing_cmt_idx);
-
- line.clear();
-
- continue;
- }
- // 1: step through leading tabs and spaces to find the start column
- log_rule_B("cmt_convert_tab_to_spaces");
-
- if ( line.size() == 0
- && ( line_column < cmt.base_col
- || options::cmt_convert_tab_to_spaces()))
- {
- if (ch == ' ')
- {
- line_column++;
- continue;
- }
- else if (ch == '\t')
- {
- log_rule_B("input_tab_size");
- line_column = calc_next_tab_column(line_column, options::input_tab_size());
- continue;
- }
- else
- {
- LOG_FMT(LCONTTEXT, "%s(%d):ch is %d, %c\n", __func__, __LINE__, ch, char(ch));
- }
- }
-
- // 2: add chars to line, handle the CRLF and CR endings (convert both to LF)
- if (ch == '\r')
- {
- ch = '\n';
-
- if ( (cmt_idx < pc->Len())
- && (pc->GetStr()[cmt_idx] == '\n'))
- {
- cmt_idx++;
- }
- }
- LOG_FMT(LCONTTEXT, "%s(%d):Line is %s\n", __func__, __LINE__, line.c_str());
- line.append(ch);
- LOG_FMT(LCONTTEXT, "%s(%d):Line is %s\n", __func__, __LINE__, line.c_str());
-
- // If we just hit an end of line OR we just hit end-of-comment...
- if ( ch == '\n'
- || cmt_idx == pc->Len())
- {
- line_count++;
- LOG_FMT(LCONTTEXT, "%s(%d):line_count is %zu\n", __func__, __LINE__, line_count);
-
- // strip trailing tabs and spaces before the newline
- if (ch == '\n')
- {
- line.pop_back();
-
- // Say we aren't in a preproc to prevent changing any bs-nl
- cmt_trim_whitespace(line, false);
-
- line.append('\n');
- }
-
- if (line.size() > 0)
- {
- // unless line contains only a single newline char, indent if the
- // line consists of either:
- if ( line.size() > 1 // more than a single newline char or
- || ch != '\n') // (end-of-comment) a single non newline char
- {
- if (line_count > 1)
- {
- // apply comment column shift without underflowing
- line_column = (col_diff<0
- && (size_t)(abs(col_diff))> line_column)
- ? 0 : line_column + col_diff;
- }
- cmt.column = line_column;
- cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
- }
- add_text(line);
-
- line.clear();
- }
- line_column = 1;
- }
- }
-} // output_comment_multi_simple
-
-
-static void generate_if_conditional_as_text(unc_text &dst, Chunk *ifdef)
-{
- int column = -1;
-
- dst.clear();
-
- for (Chunk *pc = ifdef; pc != nullptr && pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if (column == -1)
- {
- column = pc->GetColumn();
- }
-
- if ( pc->Is(CT_NEWLINE)
- || pc->Is(CT_COMMENT_MULTI)
- || pc->Is(CT_COMMENT_CPP))
- {
- break;
- }
- else if (pc->Is(CT_NL_CONT))
- {
- dst += ' ';
- column = -1;
- }
- else if ( pc->Is(CT_COMMENT)
- || pc->Is(CT_COMMENT_EMBED))
- {
- }
- else // if (pc->Is(CT_JUNK)) || else
- {
- for (int spacing = pc->GetColumn() - column; spacing > 0; spacing--)
- {
- dst += ' ';
- column++;
- }
-
- dst.append(pc->GetStr());
- column += pc->Len();
- }
- }
-} // generate_if_conditional_as_text
-
-
-void add_long_preprocessor_conditional_block_comment()
-{
- Chunk *pp_start = nullptr;
- Chunk *pp_end = nullptr;
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- // just track the preproc level:
- if (pc->Is(CT_PREPROC))
- {
- pp_end = pp_start = pc;
- }
-
- if ( pc->IsNot(CT_PP_IF)
- || !pp_start)
- {
- continue;
- }
-#if 0
- if (pc->TestFlags(PCF_IN_PREPROC))
- {
- continue;
- }
-#endif
-
- Chunk *br_close;
- Chunk *br_open = pc;
- size_t nl_count = 0;
-
- Chunk *tmp = pc;
-
- while ((tmp = tmp->GetNext())->IsNotNullChunk())
- {
- // just track the preproc level:
- if (tmp->Is(CT_PREPROC))
- {
- pp_end = tmp;
- }
-
- if (tmp->IsNewline())
- {
- nl_count += tmp->GetNlCount();
- }
- else if ( pp_end->GetPpLevel() == pp_start->GetPpLevel()
- && ( tmp->Is(CT_PP_ENDIF)
- || ((br_open->Is(CT_PP_IF)) ? (tmp->Is(CT_PP_ELSE)) : 0)))
- {
- br_close = tmp;
-
- LOG_FMT(LPPIF, "found #if / %s section on lines %zu and %zu, new line count=%zu\n",
- (tmp->Is(CT_PP_ENDIF) ? "#endif" : "#else"),
- br_open->GetOrigLine(), br_close->GetOrigLine(), nl_count);
-
- // Found the matching #else or #endif - make sure a newline is next
- tmp = tmp->GetNext();
-
- LOG_FMT(LPPIF, "next item type %d (is %s)\n",
- (tmp ? tmp->GetType() : -1), (tmp ? tmp->IsNewline() ? "newline"
- : tmp->IsComment() ? "comment" : "other" : "---"));
-
- if ( tmp->IsNullChunk()
- || tmp->Is(CT_NEWLINE)) // tmp->IsNewline())
- {
- size_t nl_min;
-
- if (br_close->Is(CT_PP_ENDIF))
- {
- log_rule_B("mod_add_long_ifdef_endif_comment");
- nl_min = options::mod_add_long_ifdef_endif_comment();
- }
- else
- {
- log_rule_B("mod_add_long_ifdef_else_comment");
- nl_min = options::mod_add_long_ifdef_else_comment();
- }
- const char *txt = !tmp ? "EOF" : ((tmp->Is(CT_PP_ENDIF)) ? "#endif" : "#else");
- LOG_FMT(LPPIF, "#if / %s section candidate for augmenting when over NL threshold %zu != 0 (new line count=%zu)\n",
- txt, nl_min, nl_count);
-
- if ( nl_min > 0
- && nl_count > nl_min) // nl_count is 1 too large at all times as #if line was counted too
- {
- // determine the added comment style
- E_Token style = (language_is_set(LANG_CPP)) ?
- CT_COMMENT_CPP : CT_COMMENT;
-
- unc_text str;
- generate_if_conditional_as_text(str, br_open);
-
- LOG_FMT(LPPIF, "#if / %s section over threshold %zu (new line count=%zu) --> insert comment after the %s: %s\n",
- txt, nl_min, nl_count, txt, str.c_str());
-
- // Add a comment after the close brace
- insert_comment_after(br_close, style, str);
- }
- }
-
- // checks both the #else and #endif for a given level, only then look further in the main loop
- if (br_close->Is(CT_PP_ENDIF))
- {
- break;
- }
- }
- }
- }
-} // add_long_preprocessor_conditional_block_comment
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/output.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/output.h
deleted file mode 100644
index f3f6026e..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/output.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * @file output.h
- * prototypes for output.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef OUTPUT_H_INCLUDED
-#define OUTPUT_H_INCLUDED
-
-#include "unc_text.h"
-
-#include <stdio.h>
-
-
-//! This renders the chunk list to a file.
-void output_parsed(FILE *pfile, bool withOptions = true);
-
-
-//! This renders the chunk list to a file formatted as csv.
-void output_parsed_csv(FILE *pfile);
-
-
-//! This renders the chunk list to a file.
-void output_text(FILE *pfile);
-
-
-//! This save the next formatting step to a file
-void dump_step(const char *filename, const char *description);
-
-
-/**
- * See also it's preprocessor counterpart
- * add_long_closebrace_comment
- * in braces.cpp
- *
- * Note: since this concerns itself with the preprocessor -- which is line-oriented --
- * it turns out that just looking at pc->GetPpLevel() is NOT the right thing to do.
- * See a --parsed dump if you don't believe this: an '#endif' will be one level
- * UP from the corresponding #ifdef when you look at the tokens 'ifdef' versus 'endif',
- * but it's a whole another story when you look at their CT_PREPROC ('#') tokens!
- *
- * Hence we need to track and seek matching CT_PREPROC pp_levels here, which complicates
- * things a little bit, but not much.
- */
-void add_long_preprocessor_conditional_block_comment();
-
-
-#endif /* OUTPUT_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parens.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parens.cpp
deleted file mode 100644
index 67d75a6e..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parens.cpp
+++ /dev/null
@@ -1,349 +0,0 @@
-/**
- * @file parens.cpp
- * Adds or removes parens.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "parens.h"
-
-#include "log_rules.h"
-
-using namespace uncrustify;
-
-
-//! Add an open parenthesis after first and add a close parenthesis before the last
-static void add_parens_between(Chunk *first, Chunk *last);
-
-
-/**
- * Scans between two parens and adds additional parens if needed.
- * This function is recursive. If it hits another open paren, it'll call itself
- * with the new bounds.
- *
- * Adds optional parens in an IF or SWITCH conditional statement.
- *
- * This basically just checks for a CT_COMPARE that isn't surrounded by parens.
- * The edges for the compare are the open, close and any CT_BOOL tokens.
- *
- * This only handles VERY simple patterns:
- * (!a && b) => (!a && b) -- no change
- * (a && b == 1) => (a && (b == 1))
- * (a == 1 || b > 2) => ((a == 1) || (b > 2))
- *
- * FIXME: we really should bail if we transition between a preprocessor and
- * a non-preprocessor
- */
-static void check_bool_parens(Chunk *popen, Chunk *pclose, int nest);
-
-
-void do_parens()
-{
- constexpr static auto LCURRENT = LPARADD;
-
- LOG_FUNC_ENTRY();
-
- log_rule_B("mod_full_paren_if_bool");
-
- if (options::mod_full_paren_if_bool())
- {
- Chunk *pc = Chunk::GetHead();
-
- while ( (pc = pc->GetNextNcNnl()) != nullptr
- && pc->IsNotNullChunk())
- {
- if ( pc->IsNot(CT_SPAREN_OPEN)
- || ( pc->GetParentType() != CT_IF
- && pc->GetParentType() != CT_ELSEIF
- && pc->GetParentType() != CT_SWITCH))
- {
- continue;
- }
- // Grab the close sparen
- Chunk *pclose = pc->GetNextType(CT_SPAREN_CLOSE, pc->GetLevel(), E_Scope::PREPROC);
-
- if (pclose->IsNotNullChunk())
- {
- check_bool_parens(pc, pclose, 0);
- pc = pclose;
- }
- }
- }
-} // do_parens
-
-
-void do_parens_assign() // Issue #3316
-{
- constexpr static auto LCURRENT = LPARADD;
-
- LOG_FUNC_ENTRY();
-
- log_rule_B("mod_full_paren_assign_bool");
-
- if (options::mod_full_paren_assign_bool())
- {
- Chunk *pc = Chunk::GetHead();
-
- while ( (pc = pc->GetNextNcNnl()) != nullptr
- && pc->IsNotNullChunk())
- {
- if (pc->Is(CT_ASSIGN))
- {
- LOG_FMT(LPARADD, "%s(%d): orig line is %zu, text is '%s', level is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->Text(), pc->GetLevel());
- // look before for a open sparen
- size_t check_level = pc->GetLevel();
- Chunk *p = pc->GetPrevNc(E_Scope::PREPROC);
-
- while (p->IsNotNullChunk())
- {
- LOG_FMT(LPARADD, "%s(%d): orig line is %zu, text is '%s', level is %zu, type is %s\n",
- __func__, __LINE__, p->GetOrigLine(), p->Text(), p->GetLevel(), get_token_name(p->GetType()));
-
- //log_pcf_flags(LPARADD, p->GetFlags());
- if (p->TestFlags(PCF_STMT_START))
- {
- break;
- }
-
- if (p->Is(CT_PAREN_OPEN))
- {
- check_level--;
- }
-
- if (p->Is(CT_SPAREN_OPEN))
- {
- break;
- }
- p = p->GetPrevNc(E_Scope::PREPROC);
-
- if (p->GetLevel() < check_level - 1)
- {
- break;
- }
- }
- LOG_FMT(LPARADD, "%s(%d): orig line is %zu, text is '%s', level is %zu, type is %s\n",
- __func__, __LINE__, p->GetOrigLine(), p->Text(), p->GetLevel(), get_token_name(p->GetType()));
-
- if (p->GetParentType() == CT_WHILE)
- {
- continue;
- }
- // Grab the semicolon
- Chunk *semicolon = pc->GetNextType(CT_SEMICOLON, pc->GetLevel(), E_Scope::PREPROC);
-
- if (semicolon->IsNotNullChunk())
- {
- check_bool_parens(pc, semicolon, 0);
- pc = semicolon;
- }
- }
- }
- }
-} // do_parens_assign
-
-
-void do_parens_return() // Issue #3316
-{
- constexpr static auto LCURRENT = LPARADD;
-
- LOG_FUNC_ENTRY();
-
- log_rule_B("mod_full_paren_return_bool");
-
- if (options::mod_full_paren_return_bool())
- {
- Chunk *pc = Chunk::GetHead();
-
- while ( (pc = pc->GetNextNcNnl()) != nullptr
- && pc->IsNotNullChunk())
- {
- if (pc->Is(CT_RETURN))
- {
- LOG_FMT(LPARADD, "%s(%d): orig line is %zu, text is '%s', level is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->Text(), pc->GetLevel());
- // look before for a open sparen
- size_t check_level = pc->GetLevel();
- Chunk *p = pc->GetPrevNc(E_Scope::PREPROC);
-
- while (p->IsNotNullChunk())
- {
- LOG_FMT(LPARADD, "%s(%d): orig line is %zu, text is '%s', level is %zu, type is %s\n",
- __func__, __LINE__, p->GetOrigLine(), p->Text(), p->GetLevel(), get_token_name(p->GetType()));
-
- //log_pcf_flags(LPARADD, p->GetFlags());
- if (p->TestFlags(PCF_STMT_START))
- {
- break;
- }
-
- if (p->Is(CT_PAREN_OPEN))
- {
- check_level--;
- }
-
- if (p->Is(CT_SPAREN_OPEN))
- {
- break;
- }
- p = p->GetPrevNc(E_Scope::PREPROC);
-
- if (p->GetLevel() < check_level - 1)
- {
- break;
- }
- }
- LOG_FMT(LPARADD, "%s(%d): orig line is %zu, text is '%s', level is %zu, type is %s\n",
- __func__, __LINE__, p->GetOrigLine(), p->Text(), p->GetLevel(), get_token_name(p->GetType()));
-
- if (p->GetParentType() == CT_WHILE)
- {
- continue;
- }
- // Grab the semicolon
- Chunk *semicolon = pc->GetNextType(CT_SEMICOLON, pc->GetLevel(), E_Scope::PREPROC);
-
- if (semicolon->IsNotNullChunk())
- {
- check_bool_parens(pc, semicolon, 0);
- pc = semicolon;
- }
- }
- }
- }
-} // do_parens_return
-
-
-static void add_parens_between(Chunk *first, Chunk *last)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LPARADD, "%s(%d): line %zu, between '%s' [lvl is %zu] and '%s' [lvl is %zu]\n",
- __func__, __LINE__, first->GetOrigLine(),
- first->Text(), first->GetLevel(),
- last->Text(), last->GetLevel());
-
- // Don't do anything if we have a bad sequence, ie "&& )"
- Chunk *first_n = first->GetNextNcNnl();
-
- if (first_n == last)
- {
- return;
- }
- Chunk pc;
-
- pc.SetType(CT_PAREN_OPEN);
- pc.SetOrigLine(first_n->GetOrigLine());
- pc.SetOrigCol(first_n->GetOrigCol());
- pc.Str() = "(";
- pc.SetFlags(first_n->GetFlags() & PCF_COPY_FLAGS);
- pc.SetLevel(first_n->GetLevel());
- pc.SetPpLevel(first_n->GetPpLevel());
- pc.SetBraceLevel(first_n->GetBraceLevel());
-
- pc.CopyAndAddBefore(first_n);
-
- Chunk *last_p = last->GetPrevNcNnl(E_Scope::PREPROC);
-
- pc.SetType(CT_PAREN_CLOSE);
- pc.SetOrigLine(last_p->GetOrigLine());
- pc.SetOrigCol(last_p->GetOrigCol());
- pc.Str() = ")";
- pc.SetFlags(last_p->GetFlags() & PCF_COPY_FLAGS);
- pc.SetLevel(last_p->GetLevel());
- pc.SetPpLevel(last_p->GetPpLevel());
- pc.SetBraceLevel(last_p->GetBraceLevel());
-
- pc.CopyAndAddAfter(last_p);
-
- for (Chunk *tmp = first_n;
- tmp != last_p;
- tmp = tmp->GetNextNcNnl())
- {
- tmp->SetLevel(tmp->GetLevel() + 1);
- }
-
- last_p->SetLevel(last_p->GetLevel() + 1);
-} // add_parens_between
-
-
-static void check_bool_parens(Chunk *popen, Chunk *pclose, int nest)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *ref = popen;
- bool hit_compare = false;
-
- LOG_FMT(LPARADD, "%s(%d): nest is %d, popen on line %zu, orig col is %zu, pclose on line %zu, orig col is %zu, level is %zu\n",
- __func__, __LINE__, nest,
- popen->GetOrigLine(), popen->GetOrigCol(),
- pclose->GetOrigLine(), pclose->GetOrigCol(),
- popen->GetLevel());
-
- Chunk *pc = popen;
-
- while ( (pc = pc->GetNextNcNnl()) != nullptr
- && pc->IsNotNullChunk()
- && pc != pclose)
- {
- if (pc->TestFlags(PCF_IN_PREPROC))
- {
- LOG_FMT(LPARADD2, " -- bail on PP %s [%s] at line %zu col %zu, level %zu\n",
- get_token_name(pc->GetType()),
- pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
- return;
- }
-
- if ( pc->Is(CT_BOOL)
- || pc->Is(CT_QUESTION)
- || pc->Is(CT_COND_COLON)
- || pc->Is(CT_COMMA))
- {
- LOG_FMT(LPARADD2, " -- %s [%s] at line %zu col %zu, level %zu\n",
- get_token_name(pc->GetType()),
- pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
-
- if (hit_compare)
- {
- hit_compare = false;
-
- if (!language_is_set(LANG_CS))
- {
- add_parens_between(ref, pc);
- }
- }
- ref = pc;
- }
- else if (pc->Is(CT_COMPARE))
- {
- LOG_FMT(LPARADD2, " -- compare '%s' at line %zu, orig col is %zu, level is %zu\n",
- pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
- hit_compare = true;
- }
- else if (pc->IsParenOpen())
- {
- Chunk *next = pc->GetClosingParen();
-
- if (next->IsNotNullChunk())
- {
- check_bool_parens(pc, next, nest + 1);
- pc = next;
- }
- }
- else if ( pc->Is(CT_BRACE_OPEN)
- || pc->Is(CT_SQUARE_OPEN)
- || pc->Is(CT_ANGLE_OPEN))
- {
- // Skip [], {}, and <>
- pc = pc->GetClosingParen();
- }
- }
-
- if ( hit_compare
- && ref != popen
- && !language_is_set(LANG_CS))
- {
- add_parens_between(ref, pclose);
- }
-} // check_bool_parens
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parens.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parens.h
deleted file mode 100644
index cfcb9501..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parens.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * @file parens.h
- * prototypes for parens.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-#ifndef PARENS_H_INCLUDED
-#define PARENS_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-
-//! add parenthesis
-void do_parens();
-
-
-void do_parens_assign();
-
-
-void do_parens_return();
-
-
-#endif /* PARENS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/pcf_flags.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/pcf_flags.cpp
deleted file mode 100644
index da0a9461..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/pcf_flags.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * @file pcf_flags.cpp
- *
- * @author Guy Maurel
- * @license GPL v2+
- */
-
-#include "pcf_flags.h"
-
-static const char *pcf_names[] =
-{
- "IN_PREPROC", // 0
- "IN_STRUCT", // 1
- "IN_ENUM", // 2
- "IN_FCN_DEF", // 3
- "IN_FCN_CALL", // 4
- "IN_SPAREN", // 5
- "IN_TEMPLATE", // 6
- "IN_TYPEDEF", // 7
- "IN_CONST_ARGS", // 8
- "IN_ARRAY_ASSIGN", // 9
- "IN_CLASS", // 10
- "IN_CLASS_BASE", // 11
- "IN_NAMESPACE", // 12
- "IN_FOR", // 13
- "IN_OC_MSG", // 14
- "IN_WHERE_SPEC", // 15
- "IN_DECLTYPE", // 16
- "FORCE_SPACE", // 17
- "STMT_START", // 18
- "EXPR_START", // 19
- "DONT_INDENT", // 20
- "ALIGN_START", // 21
- "WAS_ALIGNED", // 22
- "VAR_TYPE", // 23
- "VAR_DEF", // 24
- "VAR_1ST", // 25
- "VAR_INLINE", // 26
- "RIGHT_COMMENT", // 27
- "OLD_FCN_PARAMS", // 28
- "LVALUE", // 29
- "ONE_LINER", // 30
- "EMPTY_BODY", // 31
- "ANCHOR", // 32
- "PUNCTUATOR", // 33
- "INSERTED", // 34
- "LONG_BLOCK", // 35
- "OC_BOXED", // 36
- "KEEP_BRACE", // 37
- "OC_RTYPE", // 38
- "OC_ATYPE", // 39
- "WF_ENDIF", // 40
- "IN_QT_MACRO", // 41
- "IN_FCN_CTOR", // 42 Issue #2152
- "IN_TRY_BLOCK", // 43 Issue #1734
- "INCOMPLETE", // 44
- "IN_LAMBDA", // 45
- "WF_IF", // 46
- "NOT_POSSIBLE", // 47
- "IN_CONDITIONAL", // 48 Issue #3558
- "PCF_OC_IN_BLOCK", // 49
-};
-
-
-std::string pcf_flags_str(T_PcfFlags flags)
-{
- char buffer[64];
-
- // Generate hex representation first
-#ifdef WIN32
- snprintf(buffer, 63, "[");
-#else // not WIN32
- snprintf(buffer, 63, "[0x%llx:", (long long unsigned int)(flags));
-#endif // ifdef WIN32
-
- // Add human-readable names
- auto out = std::string{ buffer };
- auto first = true;
-
- for (size_t i = 0; i < ARRAY_SIZE(pcf_names); ++i)
- {
- if (flags & static_cast<E_PcfFlag>(pcf_bit(i)))
- {
- if (first)
- {
- first = false;
- }
- else
- {
- out += ',';
- }
- out += pcf_names[i];
- }
- }
-
- out += ']';
- return(out);
-}
-
-
-void log_pcf_flags(log_sev_t sev, T_PcfFlags flags)
-{
- if (!log_sev_on(sev))
- {
- return;
- }
- log_fmt(sev, "%s\n", pcf_flags_str(flags).c_str());
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/pcf_flags.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/pcf_flags.h
deleted file mode 100644
index 02e0b57c..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/pcf_flags.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * @file pcf_flags.h
- *
- * @author Guy Maurel
- * @license GPL v2+
- */
-
-#ifndef PCF_FLAGS_STR_INCLUDED
-#define PCF_FLAGS_STR_INCLUDED
-
-#include "enum_flags.h"
-#include "logger.h"
-
-// and the ever-so-important array size macro
-#ifndef ARRAY_SIZE
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-#endif
-
-using namespace std;
-
-
-constexpr auto pcf_bit(size_t b) -> decltype(0ULL)
-{
- return(1ULL << b);
-}
-
-enum E_PcfFlag : decltype ( 0ULL )
-{
-// Copy flags are in the lower 17 bits
- PCF_NONE = 0ULL,
- PCF_COPY_FLAGS = 0x0001ffffULL,
- PCF_IN_PREPROC = pcf_bit(0), //! in a preprocessor
- PCF_IN_STRUCT = pcf_bit(1), //! in a struct
- PCF_IN_ENUM = pcf_bit(2), //! in enum
- PCF_IN_FCN_DEF = pcf_bit(3), //! inside function def parens
- PCF_IN_FCN_CALL = pcf_bit(4), //! inside function call parens
- PCF_IN_SPAREN = pcf_bit(5), //! inside for/if/while/switch parens
- PCF_IN_TEMPLATE = pcf_bit(6),
- PCF_IN_TYPEDEF = pcf_bit(7),
- PCF_IN_CONST_ARGS = pcf_bit(8),
- PCF_IN_ARRAY_ASSIGN = pcf_bit(9),
- PCF_IN_CLASS = pcf_bit(10),
- PCF_IN_CLASS_BASE = pcf_bit(11),
- PCF_IN_NAMESPACE = pcf_bit(12),
- PCF_IN_FOR = pcf_bit(13),
- PCF_IN_OC_MSG = pcf_bit(14),
- PCF_IN_WHERE_SPEC = pcf_bit(15), /* inside C# 'where' constraint clause on class or function def */
- PCF_IN_DECLTYPE = pcf_bit(16),
-
-// Non-Copy flags are in the upper 47 bits
- PCF_FORCE_SPACE = pcf_bit(17), //! must have a space after this token
- PCF_STMT_START = pcf_bit(18), //! marks the start of a statement
- PCF_EXPR_START = pcf_bit(19),
- PCF_DONT_INDENT = pcf_bit(20), //! already aligned!
- PCF_ALIGN_START = pcf_bit(21),
- PCF_WAS_ALIGNED = pcf_bit(22),
- PCF_VAR_TYPE = pcf_bit(23), //! part of a variable def type
- PCF_VAR_DEF = pcf_bit(24), //! variable name in a variable def
- PCF_VAR_1ST = pcf_bit(25), //! 1st variable def in a statement
- PCF_VAR_1ST_DEF = (PCF_VAR_DEF | PCF_VAR_1ST),
- PCF_VAR_INLINE = pcf_bit(26), //! type was an inline struct/enum/union
- PCF_RIGHT_COMMENT = pcf_bit(27),
- PCF_OLD_FCN_PARAMS = pcf_bit(28),
- PCF_LVALUE = pcf_bit(29), //! left of assignment
- PCF_ONE_LINER = pcf_bit(30),
- PCF_ONE_CLASS = (PCF_ONE_LINER | PCF_IN_CLASS),
- PCF_EMPTY_BODY = pcf_bit(31),
- PCF_ANCHOR = pcf_bit(32), //! aligning anchor
- PCF_PUNCTUATOR = pcf_bit(33),
- PCF_INSERTED = pcf_bit(34), //! chunk was inserted from another file
- PCF_LONG_BLOCK = pcf_bit(35), //! the block is 'long' by some measure
- PCF_OC_BOXED = pcf_bit(36), //! inside OC boxed expression
- PCF_KEEP_BRACE = pcf_bit(37), //! do not remove brace
- PCF_OC_RTYPE = pcf_bit(38), //! inside OC return type
- PCF_OC_ATYPE = pcf_bit(39), //! inside OC arg type
- PCF_WF_ENDIF = pcf_bit(40), //! #endif for whole file ifdef
- PCF_IN_QT_MACRO = pcf_bit(41), //! in a QT-macro, i.e. SIGNAL, SLOT
- PCF_IN_FCN_CTOR = pcf_bit(42), //! inside function constructor
- PCF_IN_TRY_BLOCK = pcf_bit(43), //! inside Function-try-block
- PCF_INCOMPLETE = pcf_bit(44), //! class/struct forward declaration
- PCF_IN_LAMBDA = pcf_bit(45), //! inside a lambda expression
- PCF_WF_IF = pcf_bit(46), //! #if for a whole file ifdef
- PCF_NOT_POSSIBLE = pcf_bit(47), //! it is not possible to make an one_liner
- //! because the line would be too long
- PCF_IN_CONDITIONAL = pcf_bit(48), //! inside a conditional ternary expression
- PCF_OC_IN_BLOCK = pcf_bit(49), //! inside OC block function
-};
-
-UNC_DECLARE_FLAGS(T_PcfFlags, E_PcfFlag);
-UNC_DECLARE_OPERATORS_FOR_FLAGS(T_PcfFlags);
-
-std::string pcf_flags_str(T_PcfFlags flags);
-
-
-void log_pcf_flags(log_sev_t sev, T_PcfFlags flags);
-
-
-#endif /* PCF_FLAGS_STR_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/punctuators.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/punctuators.cpp
deleted file mode 100644
index 6c9c41f4..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/punctuators.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * @file punctuators.cpp
- * Manages the table of punctuators.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "punctuators.h"
-
-//#include "log_rules.h"
-#include "prototypes.h"
-
-#include <algorithm>
-
-constexpr static auto LCURRENT = LOTHER;
-
-using namespace std;
-using namespace uncrustify;
-
-
-/**
- *
- * The file "punctuator_table.h" was generated by punc.py from this file.
- * If you change one of the below symbol tables, re-run punc.py.
- * $ python scripts/punc.py > src/punctuator_table.h
- * now automatically with CMakeLists.txt
- *
- * NOTE: the tables below do not need to be sorted.
- */
-
-#include "symbols_table.h"
-// must be positioned here, after all symbolsX[], because punc_table uses them
-#include "punctuator_table.h"
-
-
-const chunk_tag_t *find_punctuator(const char *str, int lang_flags)
-{
- if ( str == nullptr
- || str[0] == '\0')
- {
- return(nullptr);
- }
- const auto binary_find = [](const lookup_entry_t *first, const lookup_entry_t *last, const char &value)
- {
- const auto tmp = std::lower_bound(first, last, value,
- lookup_entry_t::comperator());
-
- return((value == tmp->ch) ? tmp : nullptr);
- };
-
- const chunk_tag_t *match = nullptr;
- const auto *parent = punc_table; //!< graph in table form, initially point at first entry
- auto ch_idx = int{};
-
- while ( ch_idx < 6
- && str[ch_idx] != '\0') //!< symbols6: max punc len = 6
- {
- // search for next parent node in all current child nodes
- parent = binary_find(parent, next(parent, parent->left_in_group), str[ch_idx]);
-
- if (parent == nullptr)
- {
- break; // no nodes found with the searched char
- }
- log_rule_B("enable_digraphs");
-
- if ( parent->tag != nullptr
- && (parent->tag->lang_flags & lang_flags) != 0 // punctuator lang and processing lang match
- && ( (parent->tag->lang_flags & FLAG_DIG) == 0 // punctuator is not a di/tri-graph
- || options::enable_digraphs())) // or di/tri-graph processing is enabled
- {
- match = parent->tag;
- }
-
- if (parent->next_idx == 0)
- {
- break; // no child nodes, leaf reached
- }
- parent = &punc_table[parent->next_idx]; // point at the first child node
- ch_idx++;
- continue;
- }
- return(match);
-} // find_punctuator
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/quick_align_again.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/quick_align_again.cpp
deleted file mode 100644
index 5cc8bcd6..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/quick_align_again.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * @file quick_align_again.cpp
- *
- * @author Guy Maurel
- * split from align.cpp
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "quick_align_again.h"
-
-#include "align_stack.h"
-#include "chunk.h"
-
-
-void quick_align_again()
-{
- LOG_FUNC_ENTRY();
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- char copy[1000];
- LOG_FMT(LALAGAIN, "%s(%d): orig line is %zu, orig col is %zu, column is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetColumn(), pc->ElidedText(copy));
-
- if ( pc->GetAlignmentData().next != nullptr
- && pc->TestFlags(PCF_ALIGN_START))
- {
- AlignStack as;
- as.Start(100, 0);
- as.m_right_align = pc->GetAlignmentData().right_align;
- as.m_star_style = static_cast<AlignStack::StarStyle>(pc->GetAlignmentData().star_style);
- as.m_amp_style = static_cast<AlignStack::StarStyle>(pc->GetAlignmentData().amp_style);
- as.m_gap = pc->GetAlignmentData().gap;
-
- LOG_FMT(LALAGAIN, "%s(%d): pc->Text() is '%s', orig line is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine());
- as.Add(pc->GetAlignmentData().start);
- pc->SetFlagBits(PCF_WAS_ALIGNED);
-
- for (Chunk *tmp = pc->GetAlignmentData().next; tmp != nullptr; tmp = tmp->GetAlignmentData().next)
- {
- tmp->SetFlagBits(PCF_WAS_ALIGNED);
- as.Add(tmp->GetAlignmentData().start);
- LOG_FMT(LALAGAIN, "%s(%d): => tmp->Text() is '%s', orig line is %zu\n",
- __func__, __LINE__, tmp->Text(), tmp->GetOrigLine());
- }
-
- LOG_FMT(LALAGAIN, "\n");
- as.End();
- }
- }
-} // quick_align_again
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/remove_extra_returns.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/remove_extra_returns.cpp
deleted file mode 100644
index da7c9ba1..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/remove_extra_returns.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * @file remove_extra_returns.cpp
- *
- * @author Guy Maurel
- * October 2015, 2016
- * @license GPL v2+
- * extract from combine.cpp
- */
-
-#include "remove_extra_returns.h"
-
-#include "chunk.h"
-#include "uncrustify.h"
-
-
-void remove_extra_returns()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc = Chunk::GetHead();
-
- while (pc->IsNotNullChunk())
- {
- LOG_FMT(LRMRETURN, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s', type is %s, parent type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(),
- get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
-
- if ( pc->Is(CT_RETURN)
- && !pc->TestFlags(PCF_IN_PREPROC))
- {
- // we might be in a class, check it Issue #2705
- // look for a closing brace
- bool remove_it = false;
- Chunk *closing_brace = pc->GetNextType(CT_BRACE_CLOSE, 1);
- LOG_FMT(LRMRETURN, "%s(%d): on orig line %zu, level is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetLevel());
-
- if (closing_brace->IsNotNullChunk())
- {
- if (closing_brace->GetParentType() == CT_FUNC_CLASS_DEF)
- {
- // we have a class. Do nothing
- }
- else if ( closing_brace->GetParentType() == CT_FUNC_DEF
- && pc->GetLevel() < 2)
- {
- remove_it = true;
- }
- }
- else
- {
- // it is not a class
- // look for a closing brace
- closing_brace = pc->GetNextType(CT_BRACE_CLOSE, 0);
- LOG_FMT(LRMRETURN, "%s(%d): on orig line %zu, level is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetLevel());
-
- if (closing_brace->IsNotNullChunk())
- {
- if (closing_brace->GetParentType() == CT_FUNC_DEF)
- {
- remove_it = true;
- }
- }
- }
-
- if (remove_it)
- {
- Chunk *semicolon = pc->GetNextNcNnl();
-
- if ( semicolon->IsNotNullChunk()
- && semicolon->Is(CT_SEMICOLON))
- {
- LOG_FMT(LRMRETURN, "%s(%d): Removed 'return;' on orig line %zu\n",
- __func__, __LINE__, pc->GetOrigLine());
- Chunk::Delete(pc);
- Chunk::Delete(semicolon);
- pc = closing_brace;
- }
- }
- }
- pc = pc->GetNext();
- }
-} // remove_extra_returns
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/semicolons.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/semicolons.cpp
deleted file mode 100644
index 390fdecb..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/semicolons.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-/**
- * @file semicolons.cpp
- * Removes extra semicolons
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "semicolons.h"
-
-#include "prototypes.h"
-
-
-static void remove_semicolon(Chunk *pc);
-
-
-/**
- * We are on a semicolon that is after an unidentified brace close.
- * Check for what is before the brace open.
- * Do not remove if it is a square close, word, type, or paren close.
- */
-static void check_unknown_brace_close(Chunk *semi, Chunk *brace_close);
-
-
-static void remove_semicolon(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LDELSEMI, "%s(%d): Removed semicolon: orig line is %zu, orig col is %zu",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- log_func_stack_inline(LDELSEMI);
- // TODO: do we want to shift stuff back a column?
- Chunk::Delete(pc);
-}
-
-
-void remove_extra_semicolons()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc = Chunk::GetHead();
-
- while (pc->IsNotNullChunk())
- {
- Chunk *next = pc->GetNextNcNnl();
- Chunk *prev;
-
- if ( pc->Is(CT_SEMICOLON)
- && !pc->TestFlags(PCF_IN_PREPROC)
- && (prev = pc->GetPrevNcNnl())->IsNotNullChunk())
- {
- LOG_FMT(LSCANSEMI, "%s(%d): Semi orig line is %zu, orig col is %zu, parent is %s, prev = '%s' [%s/%s]\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetParentType()),
- prev->Text(),
- get_token_name(prev->GetType()), get_token_name(prev->GetParentType()));
-
- if (pc->GetParentType() == CT_TYPEDEF)
- {
- // keep it
- }
- else if ( prev->Is(CT_BRACE_CLOSE)
- && ( prev->GetParentType() == CT_IF
- || prev->GetParentType() == CT_ELSEIF
- || prev->GetParentType() == CT_ELSE
- || prev->GetParentType() == CT_SWITCH
- || prev->GetParentType() == CT_WHILE
- || prev->GetParentType() == CT_USING_STMT
- || prev->GetParentType() == CT_FOR
- || prev->GetParentType() == CT_FUNC_DEF
- || prev->GetParentType() == CT_OC_MSG_DECL
- || prev->GetParentType() == CT_FUNC_CLASS_DEF
- || prev->GetParentType() == CT_NAMESPACE))
- {
- // looking for code block vs. initialisation
- bool code_block_found = true;
- Chunk *closing_brace = pc->GetPrevNcNnl(); // Issue #3506
-
- if ( closing_brace != nullptr
- && closing_brace->IsNotNullChunk())
- {
- Chunk *opening_brace = closing_brace->GetOpeningParen();
-
- if ( opening_brace != nullptr
- && opening_brace->IsNotNullChunk())
- {
- Chunk *equal_sign = opening_brace->GetPrevNcNnl();
-
- if ( equal_sign != nullptr
- && equal_sign->IsNotNullChunk()
- && equal_sign->Is(CT_ASSIGN))
- {
- // initialisation found
- code_block_found = false;
- }
- }
- }
-
- if (code_block_found)
- {
- // code block found
- remove_semicolon(pc);
- }
- }
- else if ( prev->Is(CT_BRACE_CLOSE)
- && prev->GetParentType() == CT_NONE)
- {
- check_unknown_brace_close(pc, prev);
- }
- else if ( prev->Is(CT_SEMICOLON)
- && prev->GetParentType() != CT_FOR)
- {
- remove_semicolon(pc);
- }
- else if ( language_is_set(LANG_D)
- && ( prev->GetParentType() == CT_ENUM
- || prev->GetParentType() == CT_UNION
- || prev->GetParentType() == CT_STRUCT))
- {
- remove_semicolon(pc);
- }
- else if ( language_is_set(LANG_JAVA)
- && prev->GetParentType() == CT_SYNCHRONIZED)
- {
- remove_semicolon(pc);
- }
- else if (prev->Is(CT_BRACE_OPEN))
- {
- remove_semicolon(pc);
- }
- }
- pc = next;
- }
-} // remove_extra_semicolons
-
-
-static void check_unknown_brace_close(Chunk *semi, Chunk *brace_close)
-{
- LOG_FUNC_ENTRY();
- Chunk *pc = brace_close->GetPrevType(CT_BRACE_OPEN, brace_close->GetLevel());
-
- pc = pc->GetPrevNcNnl();
-
- if ( pc->IsNotNullChunk()
- && pc->IsNot(CT_RETURN)
- && pc->IsNot(CT_WORD)
- && pc->IsNot(CT_TYPE)
- && pc->IsNot(CT_SQUARE_CLOSE)
- && pc->IsNot(CT_ANGLE_CLOSE)
- && pc->IsNot(CT_TSQUARE)
- && !pc->IsParenClose())
- {
- remove_semicolon(semi);
- }
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/semicolons.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/semicolons.h
deleted file mode 100644
index 19591574..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/semicolons.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * @file semicolons.h
- * prototypes for semicolons.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-#ifndef SEMICOLONS_H_INCLUDED
-#define SEMICOLONS_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-
-/**
- * Removes superfluous semicolons:
- * - after brace close whose parent is IF, ELSE, SWITCH, WHILE, FOR, NAMESPACE
- * - after another semicolon where parent is not FOR
- * - (D) after brace close whose parent is ENUM/STRUCT/UNION
- * - (Java) after brace close whose parent is SYNCHRONIZED
- * - after an open brace
- * - when not in a #DEFINE
- */
-void remove_extra_semicolons();
-
-
-#endif /* SEMICOLONS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/sorting.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/sorting.cpp
deleted file mode 100644
index 27152101..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/sorting.cpp
+++ /dev/null
@@ -1,711 +0,0 @@
-/**
- * @file sorting.cpp
- * Sorts chunks and imports
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "sorting.h"
-
-#include "newlines.h"
-#include "prototypes.h"
-
-#include <regex>
-#include <unordered_map>
-
-constexpr static auto LCURRENT = LSORT;
-
-using namespace uncrustify;
-
-Option<std::string> *include_category_options[] =
-{
- &options::include_category_0,
- &options::include_category_1,
- &options::include_category_2,
-};
-constexpr static int kIncludeCategoriesCount = 3;
-
-
-struct include_category
-{
- include_category(const std::string &pattern)
- : regex(pattern)
- {
- }
- std::regex regex;
-};
-
-
-include_category *include_categories[kIncludeCategoriesCount];
-unordered_map<Chunk *, int> chunk_priority_cache;
-unordered_map<std::string, bool> filename_without_ext_cache;
-
-
-/**
- * Compare two series of chunks, starting with the given ones.
- * @param pc1 first instance to compare
- * @param pc2 second instance to compare
- * @param tcare take care of case (lower case/ upper case) Issue #2091
- *
- * @retval == 0 both text elements are equal
- * @retval > 0
- * @retval < 0
- */
-static int compare_chunks(Chunk *pc1, Chunk *pc2, bool tcare);
-
-
-/**
- * Sort all of the chunks in O(n log n) time with a maximum of O(n) swaps
- */
-static void do_the_sort(Chunk **chunks, size_t num_chunks);
-
-
-#define MARK_CHANGE() mark_change(__func__, __LINE__)
-
-
-static void mark_change(const char *func, size_t line)
-{
- LOG_FUNC_ENTRY();
- cpd.changes++;
-
- if (cpd.pass_count == 0)
- {
- LOG_FMT(LCHANGE, "%s(%d): change %d on %s:%zu\n",
- __func__, __LINE__, cpd.changes, func, line);
- }
-}
-
-
-static void prepare_categories()
-{
- for (int i = 0; i < kIncludeCategoriesCount; ++i)
- {
- const auto &cat_pattern = (*include_category_options[i])();
-
- if (!cat_pattern.empty())
- {
- include_categories[i] = new include_category(cat_pattern);
- }
- else
- {
- include_categories[i] = nullptr;
- }
- }
-}
-
-
-static void cleanup_categories()
-{
- chunk_priority_cache.clear();
- filename_without_ext_cache.clear();
-
- for (auto &include_category : include_categories)
- {
- if (include_category == nullptr)
- {
- continue;
- }
- delete include_category;
- include_category = NULL;
- }
-}
-
-
-static int get_chunk_priority(Chunk *pc)
-{
- if (chunk_priority_cache.count(pc) > 0)
- {
- return(chunk_priority_cache[pc]);
- }
- int category = kIncludeCategoriesCount;
-
- for (int i = 0; i < kIncludeCategoriesCount; i++)
- {
- if (include_categories[i] != nullptr)
- {
- if (std::regex_match(pc->Text(), include_categories[i]->regex))
- {
- category = i;
- break;
- }
- }
- }
-
- chunk_priority_cache[pc] = category;
- return(category);
-}
-
-
-/**
- * Returns true if the text contains filename without extension.
- */
-static bool text_contains_filename_without_ext(const char *text)
-{
- if (filename_without_ext_cache.count(text) > 0)
- {
- return(filename_without_ext_cache[text]);
- }
- std::string filepath = cpd.filename;
- size_t slash_idx = filepath.find_last_of("/\\");
- std::string filename_without_ext = filepath;
-
- if ( slash_idx != std::string::npos
- && slash_idx < (filepath.size() - 1))
- {
- std::string filename = filepath.substr(slash_idx + 1);
- size_t dot_idx = filename.find_last_of('.');
- filename_without_ext = filename.substr(0, dot_idx);
- }
- const std::regex special_chars = std::regex(R"([-[\]{}()*+?.,\^$|#\s])");
- const std::string sanitized_filename = std::regex_replace(filename_without_ext, special_chars, R"(\$&)");
- const std::regex filename_pattern = std::regex("\\S?" + sanitized_filename + "\\b.*");
-
- filename_without_ext_cache[text] = std::regex_match(text, filename_pattern);
- return(filename_without_ext_cache[text]);
-}
-
-
-/**
- * Get chunk text without the extension.
- */
-static unc_text get_text_without_ext(const unc_text &chunk_text)
-{
- unc_text result = chunk_text;
- int idx = result.rfind(".", result.size() - 1);
-
- if (idx == -1)
- {
- return(result);
- }
- result.erase(idx, result.size() - idx);
- return(result);
-}
-
-
-/**
- * Returns true if unc_text has "." which implies extension.
- */
-static bool has_dot(const unc_text &chunk_text)
-{
- int idx = chunk_text.rfind(".", chunk_text.size() - 1);
-
- return(idx != -1);
-}
-
-
-/**
- * Returns chunk string required for sorting.
- */
-static unc_text chunk_sort_str(Chunk *pc)
-{
- if (pc->GetParentType() == CT_PP_INCLUDE)
- {
- return(unc_text{ pc->GetStr(), 0, pc->Len() - 1 });
- }
- return(pc->GetStr());
-}
-
-
-//! Compare two chunks
-static int compare_chunks(Chunk *pc1, Chunk *pc2, bool tcare)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LSORT, "%s(%d): @begin pc1->len is %zu, line is %zu, column is %zu\n",
- __func__, __LINE__, pc1->Len(), pc1->GetOrigLine(), pc1->GetOrigCol());
- LOG_FMT(LSORT, "%s(%d): @begin pc2->len is %zu, line is %zu, column is %zu\n",
- __func__, __LINE__, pc2->Len(), pc2->GetOrigLine(), pc2->GetOrigCol());
-
- if (pc1 == pc2) // same chunk is always identical thus return 0 differences
- {
- return(0);
- }
-
- while ( pc1->IsNotNullChunk()
- && pc2->IsNotNullChunk())
- {
- auto const &s1_ext = chunk_sort_str(pc1);
- auto const &s2_ext = chunk_sort_str(pc2);
-
- log_rule_B("mod_sort_incl_import_ignore_extension");
- auto const &s1 = (options::mod_sort_incl_import_ignore_extension()) ? get_text_without_ext(s1_ext) : s1_ext;
- auto const &s2 = (options::mod_sort_incl_import_ignore_extension()) ? get_text_without_ext(s2_ext) : s2_ext;
- log_rule_B("mod_sort_incl_import_prioritize_filename");
-
- if (options::mod_sort_incl_import_prioritize_filename())
- {
- bool s1_contains_filename = text_contains_filename_without_ext(s1.c_str());
- bool s2_contains_filename = text_contains_filename_without_ext(s2.c_str());
-
- if ( s1_contains_filename
- && !s2_contains_filename)
- {
- return(-1);
- }
- else if ( !s1_contains_filename
- && s2_contains_filename)
- {
- return(1);
- }
- }
-
- if (options::mod_sort_incl_import_prioritize_extensionless())
- {
- log_rule_B("mod_sort_incl_import_prioritize_extensionless");
- const bool s1_has_dot = has_dot(s1_ext);
- const bool s2_has_dot = has_dot(s2_ext);
-
- if ( s1_has_dot
- && !s2_has_dot)
- {
- return(1);
- }
- else if ( !s1_has_dot
- && s2_has_dot)
- {
- return(-1);
- }
- }
-
- if (options::mod_sort_incl_import_prioritize_angle_over_quotes())
- {
- log_rule_B("mod_sort_incl_import_prioritize_angle_over_quotes");
-
- if ( s1.startswith("<")
- && s2.startswith("\""))
- {
- return(-1);
- }
- else if ( s1.startswith("\"")
- && s2.startswith("<"))
- {
- return(1);
- }
- }
- int ppc1 = get_chunk_priority(pc1);
- int ppc2 = get_chunk_priority(pc2);
-
- if (ppc1 != ppc2)
- {
- return(ppc1 - ppc2);
- }
- LOG_FMT(LSORT, "%s(%d): text is %s, pc1->len is %zu, line is %zu, column is %zu\n",
- __func__, __LINE__, pc1->Text(), pc1->Len(), pc1->GetOrigLine(), pc1->GetOrigCol());
- LOG_FMT(LSORT, "%s(%d): text is %s, pc2->len is %zu, line is %zu, column is %zu\n",
- __func__, __LINE__, pc2->Text(), pc2->Len(), pc2->GetOrigLine(), pc2->GetOrigCol());
-
- int ret_val = unc_text::compare(s1, s2, std::min(s1.size(), s2.size()), tcare);
- LOG_FMT(LSORT, "%s(%d): ret_val is %d\n",
- __func__, __LINE__, ret_val);
-
- if (ret_val != 0)
- {
- return(ret_val);
- }
-
- if (pc1->Len() != pc2->Len())
- {
- return(pc1->Len() - pc2->Len());
- }
- // Same word, same length. Step to the next chunk.
- pc1 = pc1->GetNext();
- LOG_FMT(LSORT, "%s(%d): text is %s, pc1->len is %zu, line is %zu, column is %zu\n",
- __func__, __LINE__, pc1->Text(), pc1->Len(), pc1->GetOrigLine(), pc1->GetOrigCol());
-
- if (pc1->Is(CT_MEMBER))
- {
- pc1 = pc1->GetNext();
- LOG_FMT(LSORT, "%s(%d): text is %s, pc1->len is %zu, line is %zu, column is %zu\n",
- __func__, __LINE__, pc1->Text(), pc1->Len(), pc1->GetOrigLine(), pc1->GetOrigCol());
- }
- pc2 = pc2->GetNext();
- LOG_FMT(LSORT, "%s(%d): text is %s, pc2->len is %zu, line is %zu, column is %zu\n",
- __func__, __LINE__, pc2->Text(), pc2->Len(), pc2->GetOrigLine(), pc2->GetOrigCol());
-
- if (pc2->Is(CT_MEMBER))
- {
- pc2 = pc2->GetNext();
- LOG_FMT(LSORT, "%s(%d): text is %s, pc2->len is %zu, line is %zu, column is %zu\n",
- __func__, __LINE__, pc2->Text(), pc2->Len(), pc2->GetOrigLine(), pc2->GetOrigCol());
- }
- LOG_FMT(LSORT, "%s(%d): >>>text is %s, pc1->len is %zu, line is %zu, column is %zu\n",
- __func__, __LINE__, pc1->Text(), pc1->Len(), pc1->GetOrigLine(), pc1->GetOrigCol());
- LOG_FMT(LSORT, "%s(%d): >>>text is %s, pc2->len is %zu, line is %zu, column is %zu\n",
- __func__, __LINE__, pc2->Text(), pc2->Len(), pc2->GetOrigLine(), pc2->GetOrigCol());
-
- // If we hit a newline or nullptr, we are done
- if ( pc1->IsNullChunk()
- || pc1->IsNewline()
- || pc2->IsNullChunk()
- || pc2->IsNewline())
- {
- break;
- }
- }
-
- if ( pc1->IsNullChunk()
- || !pc2->IsNewline())
- {
- return(-1);
- }
-
- if (!pc1->IsNewline())
- {
- return(1);
- }
- return(0);
-} // compare_chunks
-
-
-/**
- * Sort all of the chunks in O(n log n) time with a maximum of O(n) swaps
- */
-static void do_the_sort(Chunk **chunks, size_t num_chunks)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LSORT, "%s(%d): %zu chunks:",
- __func__, __LINE__, num_chunks);
-
- for (size_t idx = 0; idx < num_chunks; idx++)
- {
- LOG_FMT(LSORT, " [%s]", chunks[idx]->Text());
- }
-
- LOG_FMT(LSORT, "\n");
-
- log_rule_B("mod_sort_case_sensitive");
- bool take_care = options::mod_sort_case_sensitive(); // Issue #2091
-
- // Sort an array of the chunk positions in order to minimize the number of swaps
- std::vector<size_t> chunk_positions(num_chunks);
-
- for (size_t idx = 0; idx < num_chunks; idx++)
- {
- chunk_positions[idx] = idx;
- }
-
- sort(chunk_positions.begin(), chunk_positions.end(), [chunks, take_care](const size_t &l, const size_t &r) {
- return(compare_chunks(chunks[l], chunks[r], take_care) < 0);
- });
-
- // Swap the chunk positions
- for (size_t idx = 0; idx < num_chunks; idx++)
- {
- if (chunk_positions[idx] != idx)
- {
- log_rule_B("mod_sort_incl_import_grouping_enabled");
-
- const size_t from = chunk_positions[idx];
- const size_t to = chunk_positions[from];
- chunks[from]->SwapLines(chunks[to]);
-
- Chunk *pc = chunks[from];
- chunks[from] = chunks[to];
- chunks[to] = pc;
-
- chunk_positions[from] = from;
- chunk_positions[idx] = to;
- idx--;
- }
- }
-} // do_the_sort
-
-
-/**
- * Remove blank lines between chunks.
- */
-static void remove_blank_lines_between_imports(Chunk **chunks, size_t num_chunks)
-{
- LOG_FUNC_ENTRY();
-
- if (num_chunks < 2)
- {
- return;
- }
-
- for (size_t idx = 0; idx < (num_chunks - 1); idx++)
- {
- Chunk *chunk1 = chunks[idx]->GetNextNl();
- chunk1->SetNlCount(1);
- MARK_CHANGE();
- }
-}
-
-
-/**
- * Delete chunks on line having chunk.
- */
-static void delete_chunks_on_line_having_chunk(Chunk *chunk)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc = chunk->GetFirstChunkOnLine();
-
- while ( pc->IsNotNullChunk()
- && !pc->IsComment())
- {
- Chunk *next_pc = pc->GetNext();
- LOG_FMT(LCHUNK, "%s(%d): Removed '%s' on orig line %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine());
-
- if (pc->IsNewline())
- {
- Chunk::Delete(pc);
- break;
- }
- else
- {
- Chunk::Delete(pc);
- }
- pc = next_pc;
- }
-}
-
-
-/**
- * Dedupe import/include directives.
- */
-static void dedupe_imports(Chunk **chunks, size_t num_chunks)
-{
- LOG_FUNC_ENTRY();
- log_rule_B("mod_sort_case_sensitive");
-
- for (size_t idx = 1; idx < num_chunks; idx++)
- {
- auto const &s1 = chunk_sort_str(chunks[idx - 1]);
- auto const &s2 = chunk_sort_str(chunks[idx]);
-
- if (s1.size() != s2.size())
- {
- continue;
- }
- int ret_val = unc_text::compare(s1, s2, std::min(s1.size(), s2.size()), options::mod_sort_case_sensitive());
-
- if (ret_val == 0)
- {
- delete_chunks_on_line_having_chunk(chunks[idx - 1]);
- }
- }
-}
-
-
-/**
- * Add blank line before the chunk.
- */
-static void blankline_add_before(Chunk *pc)
-{
- Chunk *newline = newline_add_before(pc->GetFirstChunkOnLine());
-
- if (newline->GetNlCount() < 2)
- {
- double_newline(newline);
- }
-}
-
-
-/**
- * Group imports.
- */
-static void group_imports_by_adding_newlines(Chunk **chunks, size_t num_chunks)
-{
- LOG_FUNC_ENTRY();
-
- // Group imports based on first character, typically quote or angle.
- int c_idx = -1;
- int c_idx_last = -1;
-
- for (size_t idx = 0; idx < num_chunks; idx++)
- {
- if (chunks[idx]->GetStr().size() > 0)
- {
- c_idx = chunks[idx]->GetStr().at(0);
- }
- else
- {
- c_idx = -1;
- }
-
- if ( c_idx_last != c_idx
- && idx > 0)
- {
- blankline_add_before(chunks[idx]);
- }
- c_idx_last = c_idx;
- }
-
- // Group imports based on having extension.
- bool chunk_has_dot = false;
- bool chunk_last_has_dot = false;
-
- for (size_t idx = 0; idx < num_chunks; idx++)
- {
- chunk_has_dot = has_dot(chunks[idx]->GetStr());
-
- if ( chunk_last_has_dot != chunk_has_dot
- && idx > 0)
- {
- blankline_add_before(chunks[idx]);
- }
- chunk_last_has_dot = chunk_has_dot;
- }
-
- // Group imports based on priority defined by config.
- int chunk_pri = -1;
- int chunk_pri_last = -1;
-
- for (size_t idx = 0; idx < num_chunks; idx++)
- {
- chunk_pri = get_chunk_priority(chunks[idx]);
-
- if ( chunk_pri_last != chunk_pri
- && idx > 0)
- {
- blankline_add_before(chunks[idx]);
- }
- chunk_pri_last = chunk_pri;
- }
-
- // Group imports that contain filename pattern.
- bool chunk_has_filename = false;
- bool last_chunk_has_filename = false;
-
- for (size_t idx = 0; idx < num_chunks; idx++)
- {
- auto const &chunk_text = chunk_sort_str(chunks[idx]);
- chunk_has_filename = text_contains_filename_without_ext(chunk_text.c_str());
-
- if ( !chunk_has_filename
- && last_chunk_has_filename)
- {
- blankline_add_before(chunks[idx]);
- }
- last_chunk_has_filename = chunk_has_filename;
- }
-} // group_imports_by_adding_newlines
-
-
-void sort_imports()
-{
- LOG_FUNC_ENTRY();
- const int max_number_to_sort = 1024;
- const int max_lines_to_check_for_sort_after_include = 128;
- const int max_gap_threshold_between_include_to_sort = 32;
-
- Chunk *chunks[max_number_to_sort];
- size_t num_chunks = 0;
- Chunk *p_last = nullptr;
- Chunk *p_imp = nullptr;
- Chunk *p_imp_last = nullptr;
-
- prepare_categories();
-
- Chunk *pc = Chunk::GetHead();
-
- log_rule_B("mod_sort_incl_import_grouping_enabled");
-
- while (pc->IsNotNullChunk())
- {
- // Simple optimization to limit the sorting. Any MAX_LINES_TO_CHECK_AFTER_INCLUDE lines after last
- // import is seen are ignore from sorting.
- if ( options::mod_sort_incl_import_grouping_enabled()
- && p_imp_last != nullptr
- && (pc->GetOrigLine() - p_imp_last->GetOrigLine()) > max_lines_to_check_for_sort_after_include)
- {
- break;
- }
- Chunk *next = pc->GetNext();
-
- if (pc->IsNewline())
- {
- bool did_import = false;
-
- if ( p_imp != nullptr
- && p_imp->IsNotNullChunk()
- && p_last != nullptr
- && ( p_last->Is(CT_SEMICOLON)
- || p_imp->TestFlags(PCF_IN_PREPROC)))
- {
- if (num_chunks < max_number_to_sort)
- {
- LOG_FMT(LSORT, "%s(%d): p_imp is %s\n",
- __func__, __LINE__, p_imp->Text());
- chunks[num_chunks++] = p_imp;
- }
- else
- {
- fprintf(stderr, "Number of 'import' to be sorted is too big for the current value %d.\n", max_number_to_sort);
- fprintf(stderr, "Please make a report.\n");
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- did_import = true;
- }
- log_rule_B("mod_sort_incl_import_grouping_enabled");
-
- if ( !did_import
- || ( !options::mod_sort_incl_import_grouping_enabled()
- && pc->GetNlCount() > 1)
- || ( options::mod_sort_incl_import_grouping_enabled()
- && p_imp_last != nullptr
- && (pc->GetOrigLine() - p_imp_last->GetOrigLine()) > max_gap_threshold_between_include_to_sort)
- || next->IsNullChunk())
- {
- if (num_chunks > 1)
- {
- log_rule_B("mod_sort_incl_import_grouping_enabled");
-
- if (options::mod_sort_incl_import_grouping_enabled())
- {
- remove_blank_lines_between_imports(chunks, num_chunks);
- do_the_sort(chunks, num_chunks);
- group_imports_by_adding_newlines(chunks, num_chunks);
- dedupe_imports(chunks, num_chunks);
- }
- else
- {
- do_the_sort(chunks, num_chunks);
- }
- }
- num_chunks = 0;
- }
- p_imp_last = p_imp;
- p_imp = nullptr;
- p_last = nullptr;
- }
- else if (pc->Is(CT_IMPORT))
- {
- log_rule_B("mod_sort_import");
-
- if (options::mod_sort_import())
- {
- p_imp = pc->GetNext();
- }
- }
- else if (pc->Is(CT_USING))
- {
- log_rule_B("mod_sort_using");
-
- if (options::mod_sort_using())
- {
- p_imp = pc->GetNext();
- }
- }
- else if (pc->Is(CT_PP_INCLUDE))
- {
- log_rule_B("mod_sort_include");
-
- if (options::mod_sort_include())
- {
- p_imp = pc->GetNext();
- p_last = pc;
- }
- }
- else if (!pc->IsComment())
- {
- p_last = pc;
- }
- pc = next;
- }
- cleanup_categories();
-} // sort_imports
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/space.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/space.cpp
deleted file mode 100644
index 2e6dafde..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/space.cpp
+++ /dev/null
@@ -1,3782 +0,0 @@
-/**
- * @file space.cpp
- * Adds or removes inter-chunk spaces.
- *
- * Information
- * "Ignore" means do not change it.
- * "Add" in the context of spaces means make sure there is at least 1.
- * "Add" elsewhere means make sure one is present.
- * "Remove" mean remove the space/brace/newline/etc.
- * "Force" in the context of spaces means ensure that there is exactly 1.
- * "Force" in other contexts means the same as "add".
- *
- * Rmk: spaces = space + nl
- *
- * @author Ben Gardner
- * @author Guy Maurel, 2015-2022
- * @license GPL v2+
- */
-
-#include "space.h"
-
-#include "add_space_table.h"
-#include "log_rules.h"
-#include "options_for_QT.h"
-#include "punctuators.h"
-
-#ifdef WIN32
-#include <algorithm> // to get max
-#endif // ifdef WIN32
-
-using namespace std;
-using namespace uncrustify;
-
-
-/**
- * Decides how to change inter-chunk spacing.
- * Note that the order of the if statements is VERY important.
- *
- * @param first The first chunk
- * @param second The second chunk
- *
- * @return IARF_IGNORE, IARF_ADD, IARF_REMOVE or IARF_FORCE
- */
-static iarf_e do_space(Chunk *first, Chunk *second, int &min_sp);
-
-/**
- * Ensure to force the space between the \a first and the \a second chunks
- * if the PCF_FORCE_SPACE flag is set in the \a first.
- *
- * @param first The first chunk
- * @param second The second chunk
- * @param av Av from the do_space()
- *
- * @return IARF_IGNORE, IARF_ADD, IARF_REMOVE or IARF_FORCE
- */
-static iarf_e ensure_force_space(Chunk *first, Chunk *second, iarf_e av);
-
-
-bool token_is_within_trailing_return(Chunk *pc)
-{
- // look back for '->' type is TRAILING_RET
- // until CT_FPAREN_CLOSE
- // or CT_FPAREN_OPEN is found
- Chunk *prev = pc;
-
- if (prev == nullptr)
- {
- prev = Chunk::NullChunkPtr;
- }
-
- while (prev->IsNotNullChunk())
- {
- if (prev->Is(CT_TRAILING_RET))
- {
- return(true);
- }
- else if ( prev->Is(CT_FPAREN_CLOSE)
- || prev->Is(CT_FPAREN_OPEN))
- {
- return(false);
- }
- else
- {
- prev = prev->GetPrev();
- }
- }
- return(false);
-} // token_is_within_trailing_return
-
-
-/*
- * this function is called for every chunk in the input file.
- * Thus it is important to keep this function efficient
- */
-static iarf_e do_space(Chunk *first, Chunk *second, int &min_sp)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LSPACE, "%s(%d): orig line is %zu, orig col is %zu, first Text() '%s', type is %s\n",
- __func__, __LINE__, first->GetOrigLine(), first->GetOrigCol(), first->Text(), get_token_name(first->GetType()));
-
- min_sp = 1;
-
- if ( first->Is(CT_PP_IGNORE)
- && second->Is(CT_PP_IGNORE))
- {
- // Leave spacing alone between PP_IGNORE tokens as we don't want the default behavior (which is ADD).
- log_rule("PP_IGNORE");
- return(IARF_IGNORE);
- }
-
- if ( first->Is(CT_PP)
- || second->Is(CT_PP))
- {
- // Add or remove space around preprocessor '##' concatenation operator.
- log_rule("sp_pp_concat");
- return(options::sp_pp_concat());
- }
-
- if (first->Is(CT_POUND))
- {
- // Add or remove space after preprocessor '#' stringify operator.
- // Also affects the '#@' charizing operator.
- log_rule("sp_pp_stringify");
- return(options::sp_pp_stringify());
- }
-
- if ( second->Is(CT_POUND)
- && second->TestFlags(PCF_IN_PREPROC)
- && first->GetParentType() != CT_MACRO_FUNC)
- {
- // Add or remove space before preprocessor '#' stringify operator
- // as in '#define x(y) L#y'.
- log_rule("sp_before_pp_stringify");
- return(options::sp_before_pp_stringify());
- }
-
- if ( first->Is(CT_SPACE)
- || second->Is(CT_SPACE))
- {
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if (first->Is(CT_DECLSPEC)) // Issue 1289
- {
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if ( second->Is(CT_NEWLINE)
- || second->Is(CT_VBRACE_OPEN))
- {
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if ( first->Is(CT_VBRACE_OPEN)
- && second->IsNot(CT_NL_CONT)
- && second->IsNot(CT_SEMICOLON)) // # Issue 1158
- {
- log_rule("FORCE");
- return(IARF_FORCE);
- }
-
- if ( first->Is(CT_VBRACE_CLOSE)
- && second->IsNot(CT_NL_CONT))
- {
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if (second->Is(CT_VSEMICOLON))
- {
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if (first->Is(CT_MACRO_FUNC))
- {
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if (second->Is(CT_NL_CONT))
- {
- // Add or remove space before a backslash-newline at the end of a line.
- log_rule("sp_before_nl_cont");
- return(options::sp_before_nl_cont());
- }
-
- if ( language_is_set(LANG_D)
- && ( first->Is(CT_D_ARRAY_COLON)
- || second->Is(CT_D_ARRAY_COLON)))
- {
- // (D) Add or remove around the D named array initializer ':' operator.
- log_rule("sp_d_array_colon");
- return(options::sp_d_array_colon());
- }
-
- if ( first->Is(CT_CASE)
- && (( CharTable::IsKw1(second->GetStr()[0])
- || second->Is(CT_NUMBER))))
- {
- // Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make
- // sense here.
- log_rule("sp_case_label");
- return(options::sp_case_label() | IARF_ADD);
- }
-
- if (first->Is(CT_FOR_COLON))
- {
- // java
- // Add or remove space after ':' in a Java/C++11 range-based 'for',
- // as in 'for (Type var : expr)'.
- log_rule("sp_after_for_colon");
- return(options::sp_after_for_colon());
- }
-
- if (second->Is(CT_FOR_COLON))
- {
- // java
- // Add or remove space before ':' in a Java/C++11 range-based 'for',
- // as in 'for (Type var : expr)'.
- log_rule("sp_before_for_colon");
- return(options::sp_before_for_colon());
- }
-
- if ( first->Is(CT_QUESTION)
- && second->Is(CT_COND_COLON))
- {
- // In the abbreviated ternary form '(a ?: b)', add or remove space between '?'
- // and ':'.
- // Overrides all other sp_cond_* options.
- log_rule("sp_cond_ternary_short");
- return(options::sp_cond_ternary_short());
- }
-
- if ( first->Is(CT_QUESTION) // see the tests cpp:34513-34516
- || second->Is(CT_QUESTION))
- {
- if ( second->Is(CT_QUESTION)
- && (options::sp_cond_question_before() != IARF_IGNORE))
- {
- // Add or remove space before the '?' in 'b ? t : f'.
- // Overrides sp_cond_question.
- log_rule("sp_cond_question_before");
- return(options::sp_cond_question_before());
- }
-
- if ( first->Is(CT_QUESTION)
- && (options::sp_cond_question_after() != IARF_IGNORE))
- {
- // Add or remove space after the '?' in 'b ? t : f'.
- // Overrides sp_cond_question.
- log_rule("sp_cond_question_after");
- return(options::sp_cond_question_after());
- }
- log_rule("sp_cond_question");
- return(options::sp_cond_question());
- }
-
- if ( first->Is(CT_COND_COLON)
- || second->Is(CT_COND_COLON))
- {
- if ( second->Is(CT_COND_COLON)
- && (options::sp_cond_colon_before() != IARF_IGNORE))
- {
- // Add or remove space before the ':' in 'b ? t : f'.
- // Overrides sp_cond_colon.
- log_rule("sp_cond_colon_before");
- return(options::sp_cond_colon_before());
- }
-
- if ( first->Is(CT_COND_COLON)
- && (options::sp_cond_colon_after() != IARF_IGNORE))
- {
- // Add or remove space after the ':' in 'b ? t : f'.
- // Overrides sp_cond_colon.
- log_rule("sp_cond_colon_after");
- return(options::sp_cond_colon_after());
- }
- // Issue #2596
- // replace "if (first->Is(CT_WORD) && second->Is(CT_COND_COLON))"
- // Add or remove space around the ':' in 'b ? t : f'.
- log_rule("sp_cond_colon");
- return(options::sp_cond_colon());
- }
-
- if ( language_is_set(LANG_D)
- && ( first->Is(CT_RANGE)
- || second->Is(CT_RANGE)))
- {
- // (D) Add or remove space around the D '..' operator.
- log_rule("sp_range");
- return(options::sp_range());
- }
-
- if ( first->Is(CT_COLON)
- && first->GetParentType() == CT_SQL_EXEC)
- {
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- // Macro stuff can only return IGNORE, ADD, or FORCE
- if (first->Is(CT_MACRO))
- {
- // Add or remove space between a macro name and its definition.
- log_rule("sp_macro");
- iarf_e arg = options::sp_macro();
- return(arg | ((arg != IARF_IGNORE) ? IARF_ADD : IARF_IGNORE));
- }
-
- if ( first->Is(CT_FPAREN_CLOSE)
- && first->GetParentType() == CT_MACRO_FUNC)
- {
- // Add or remove space between a macro function ')' and its definition.
- log_rule("sp_macro_func");
- iarf_e arg = options::sp_macro_func();
- return(arg | ((arg != IARF_IGNORE) ? IARF_ADD : IARF_IGNORE));
- }
-
- if (first->Is(CT_PREPROC))
- {
- // Remove spaces, unless we are ignoring. See indent_preproc()
- log_rule("pp_space_after");
-
- if (options::pp_space_after() == IARF_IGNORE)
- {
- log_rule("IGNORE");
- return(IARF_IGNORE);
- }
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if (second->Is(CT_PREPROC))
- {
- // Remove spaces, unless we are ignoring. See indent_preproc()
- log_rule("pp_indent");
-
- if (options::pp_indent() == IARF_IGNORE)
- {
- log_rule("IGNORE");
- return(IARF_IGNORE);
- }
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if (second->Is(CT_SEMICOLON)) // see the tests cpp:34517-34519
- {
- if (first->Is(CT_VBRACE_OPEN))
- {
- // Add or remove space before ';'.
- log_rule("sp_before_semi");
- return(options::sp_before_semi());
- }
-
- if (second->GetParentType() == CT_FOR)
- {
- if (first->Is(CT_SPAREN_OPEN))
- {
- // empty, e.g. for (;;)
- // ^ is first
- // ^ is second
- // Add or remove space before a semicolon of an empty left part of a for statement.
- log_rule("sp_before_semi_for_empty");
- return(options::sp_before_semi_for_empty());
- }
-
- if (first->Is(CT_SEMICOLON))
- {
- // empty, e.g. for (;;)
- // ^ is first
- // ^ is second
- // Add or remove space between semicolons of an empty middle part of a for statement.
- log_rule("sp_between_semi_for_empty");
- return(options::sp_between_semi_for_empty());
- }
- // Add or remove space before ';' in non-empty 'for' statements.
- log_rule("sp_before_semi_for");
- return(options::sp_before_semi_for());
- }
- iarf_e arg = options::sp_before_semi(); // see the tests cpp:34517-34519
-
- if ( first->Is(CT_VBRACE_OPEN) // Issue #2942
- && first->GetPrev()->Is(CT_SPAREN_CLOSE)
- && first->GetParentType() != CT_WHILE_OF_DO)
- {
- // Add or remove space before empty statement ';' on 'if', 'for' and 'while'.
- log_rule("sp_special_semi");
- arg = arg | options::sp_special_semi();
- }
- else
- {
- // Add or remove space before ';'.
- log_rule("sp_before_semi");
- }
- return(arg);
- }
-
- if ( ( second->Is(CT_COMMENT)
- || second->Is(CT_COMMENT_CPP))
- && ( first->Is(CT_PP_ELSE)
- || first->Is(CT_PP_ENDIF)))
- {
- second->SetType(CT_COMMENT_ENDIF);
- // Add or remove space between #else or #endif and a trailing comment.
- log_rule("sp_endif_cmt");
- return(options::sp_endif_cmt());
- }
-
- if ( options::sp_before_tr_cmt() != IARF_IGNORE
- && second->GetParentType() == CT_COMMENT_END)
- {
- // Add or remove space before a trailing comment.
- // Number of spaces before a trailing comment.
- log_rule("sp_num_before_tr_cmt");
- min_sp = options::sp_num_before_tr_cmt();
- return(options::sp_before_tr_cmt());
- }
-
- if (second->GetParentType() == CT_COMMENT_END)
- {
- switch (second->GetOrigPrevSp())
- {
- case 0:
- log_rule("orig prev sp - REMOVE");
- return(IARF_REMOVE);
-
- case 1:
- log_rule("orig prev sp - FORCE");
- return(IARF_FORCE);
-
- default:
- log_rule("orig prev sp - ADD");
- return(IARF_ADD);
- }
- }
-
- // "for (;;)" vs. "for (;; )" and "for (a;b;c)" vs. "for (a; b; c)"
- if (first->Is(CT_SEMICOLON)) // see the tests cpp:34517-34519
- {
- if (first->GetParentType() == CT_FOR)
- {
- if (second->Is(CT_SPAREN_CLOSE))
- {
- // Add or remove space after the final semicolon of an empty part of a for
- // statement, as in 'for ( ; ; <here> )'.
- log_rule("sp_after_semi_for_empty");
- return(options::sp_after_semi_for_empty());
- }
-
- if (second->IsNot(CT_SPAREN_CLOSE)) // Issue 1324
- {
- // Add or remove space after ';' in non-empty 'for' statements.
- log_rule("sp_after_semi_for");
- return(options::sp_after_semi_for());
- }
- }
- else if ( !second->IsComment()
- && second->IsNot(CT_BRACE_CLOSE)) // issue #197
- {
- // Add or remove space after ';', except when followed by a comment.
- // see the tests cpp:34517-34519
- log_rule("sp_after_semi");
- return(options::sp_after_semi());
- }
- // Let the comment spacing rules handle this
- }
-
- // puts a space in the rare '+-' or '-+'
- if ( ( first->Is(CT_NEG)
- || first->Is(CT_POS)
- || first->Is(CT_ARITH)
- || first->Is(CT_SHIFT))
- && ( second->Is(CT_NEG)
- || second->Is(CT_POS)
- || second->Is(CT_ARITH)
- || second->Is(CT_SHIFT)))
- {
- log_rule("ADD");
- return(IARF_ADD);
- }
-
- // "return(a);" vs. "return (foo_t)a + 3;" vs. "return a;" vs. "return;"
- if (first->Is(CT_RETURN))
- {
- if ( second->Is(CT_PAREN_OPEN)
- && second->GetParentType() == CT_RETURN)
- {
- // Add or remove space between 'return' and '('.
- log_rule("sp_return_paren");
- return(options::sp_return_paren());
- }
- else if ( second->Is(CT_BRACE_OPEN)
- && second->GetParentType() == CT_BRACED_INIT_LIST)
- {
- // Add or remove space between 'return' and '{'.
- log_rule("sp_return_brace");
- return(options::sp_return_brace());
- }
- // Everything else requires a space
- // The value REMOVE will be overridden with FORCE
- log_rule("sp_return");
-
- if (options::sp_return() == IARF_REMOVE)
- {
- return(IARF_FORCE);
- }
- return(options::sp_return());
- }
-
- // "sizeof(foo_t)" vs. "sizeof (foo_t)"
- if (first->Is(CT_SIZEOF))
- {
- if (second->Is(CT_PAREN_OPEN))
- {
- // Add or remove space between 'sizeof' and '('.
- log_rule("sp_sizeof_paren");
- return(options::sp_sizeof_paren());
- }
-
- if (second->Is(CT_ELLIPSIS))
- {
- // Add or remove space between 'sizeof' and '...'.
- log_rule("sp_sizeof_ellipsis");
- return(options::sp_sizeof_ellipsis());
- }
- log_rule("FORCE");
- return(IARF_FORCE);
- }
-
- // "decltype(foo_t)" vs. "decltype (foo_t)"
- if (first->Is(CT_DECLTYPE))
- {
- if (second->Is(CT_PAREN_OPEN))
- {
- // Add or remove space between 'decltype' and '('.
- log_rule("sp_decltype_paren");
- return(options::sp_decltype_paren());
- }
- log_rule("FORCE");
- return(IARF_FORCE);
- }
-
- // handle '::'
- if (first->Is(CT_DC_MEMBER))
- {
- // Add or remove space after the '::' operator.
- log_rule("sp_after_dc");
- return(options::sp_after_dc());
- }
-
- // Issue #889
- // mapped_file_source abc((int) ::CW2A(sTemp));
- if ( first->Is(CT_PAREN_CLOSE)
- && second->Is(CT_DC_MEMBER)
- && second->GetNext()->GetType() == CT_FUNC_CALL)
- {
- log_rule("sp_after_cast");
- return(options::sp_after_cast());
- }
-
- if (second->Is(CT_DC_MEMBER))
- {
- /* '::' at the start of an identifier is not member access, but global scope operator.
- * Detect if previous chunk is keyword
- */
- switch (first->GetType())
- {
- case CT_SBOOL:
- case CT_SASSIGN:
- case CT_ARITH:
- case CT_SHIFT:
- case CT_CASE:
- case CT_CLASS:
- case CT_DELETE:
- case CT_FRIEND:
- case CT_NAMESPACE:
- case CT_NEW:
- case CT_SARITH:
- case CT_SCOMPARE:
- case CT_OPERATOR:
- case CT_ACCESS:
- case CT_QUALIFIER:
- case CT_RETURN:
- case CT_SIZEOF:
- case CT_DECLTYPE:
- case CT_STRUCT:
- case CT_THROW:
- case CT_TYPEDEF:
- case CT_TYPENAME:
- case CT_UNION:
- case CT_USING:
- log_rule("FORCE");
- return(IARF_FORCE);
-
- default:
- break;
- }
-
- if ( ( first->Is(CT_WORD)
- || first->Is(CT_TYPE)
- || first->Is(CT_PAREN_CLOSE)
- || CharTable::IsKw1(first->GetStr()[0]))
- && (strcmp(first->Text(), "void") != 0)) // Issue 1249
- {
- // Add or remove space before the '::' operator.
- log_rule("sp_before_dc");
- return(options::sp_before_dc());
- }
- }
-
- // "a,b" vs. "a, b"
- if (first->Is(CT_COMMA)) // see the tests cpp:34520-34524
- // see the tests c-sharp:12200-12202
- {
- if ( language_is_set(LANG_CS | LANG_VALA)
- && first->GetParentType() == CT_TYPE)
- {
- // (C#, Vala) multidimensional array type: ',,' vs. ', ,' or ',]' vs. ', ]'
- if (second->Is(CT_COMMA))
- {
- // (C#, Vala) Add or remove space between ',' in multidimensional array type
- // like 'int[,,]'.
- log_rule("sp_between_mdatype_commas");
- return(options::sp_between_mdatype_commas());
- }
- // (C#, Vala) Add or remove space between ',' and ']' in multidimensional array type
- // like 'int[,,]'.
- log_rule("sp_after_mdatype_commas");
- return(options::sp_after_mdatype_commas());
- }
-
- // Fix for issue #1243
- // Don't add extra space after comma immediately followed by Angle close
- if (second->Is(CT_ANGLE_CLOSE))
- {
- log_rule("IGNORE");
- return(IARF_IGNORE);
- }
- // Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.
- log_rule("sp_after_comma");
- return(options::sp_after_comma());
- }
-
- // test if we are within a SIGNAL/SLOT call
- if (QT_SIGNAL_SLOT_found)
- {
- if ( first->Is(CT_FPAREN_CLOSE)
- && ( second->Is(CT_FPAREN_CLOSE)
- || second->Is(CT_COMMA)))
- {
- if (second->GetLevel() == QT_SIGNAL_SLOT_level)
- {
- restoreValues = true;
- }
- }
- }
-
- if (second->Is(CT_COMMA))
- {
- if ( language_is_set(LANG_CS | LANG_VALA)
- && first->Is(CT_SQUARE_OPEN)
- && first->GetParentType() == CT_TYPE)
- {
- // (C#, Vala) Add or remove space between '[' and ',' in multidimensional array type
- // like 'int[,,]'.
- log_rule("sp_before_mdatype_commas");
- return(options::sp_before_mdatype_commas());
- }
-
- if ( first->Is(CT_PAREN_OPEN)
- || first->Is(CT_FPAREN_OPEN))
- {
- // Add or remove space between an open parenthesis and comma,
- // i.e. '(,' vs. '( ,'.
- log_rule("sp_paren_comma");
- return(options::sp_paren_comma());
- }
- // Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.
- log_rule("sp_before_comma");
- return(options::sp_before_comma());
- }
-
- if (second->Is(CT_ELLIPSIS))
- {
- // type followed by a ellipsis
- Chunk *tmp = first;
-
- if ( tmp->Is(CT_PTR_TYPE)
- || tmp->Is(CT_BYREF))
- {
- tmp = tmp->GetPrevNcNnl();
- }
-
- if ( tmp->Is(CT_TYPE)
- || tmp->Is(CT_QUALIFIER))
- {
- // Add or remove space between a type and '...'.
- log_rule("sp_type_ellipsis");
- return(options::sp_type_ellipsis());
- }
-
- // non-punc followed by a ellipsis
- if ( !first->TestFlags(PCF_PUNCTUATOR)
- && (options::sp_before_ellipsis() != IARF_IGNORE))
- {
- // Add or remove space before the variadic '...' when preceded by a
- // non-punctuator.
- log_rule("sp_before_ellipsis");
- return(options::sp_before_ellipsis());
- }
-
- if ( first->Is(CT_FPAREN_CLOSE)
- || first->Is(CT_PAREN_CLOSE))
- {
- // Add or remove space between ')' and '...'.
- log_rule("sp_paren_ellipsis");
- return(options::sp_paren_ellipsis());
- }
-
- if (first->Is(CT_TAG_COLON))
- {
- log_rule("FORCE");
- return(IARF_FORCE);
- }
-
- if (first->Is(CT_BYREF)) // Issue #3309
- {
- log_rule("sp_byref_ellipsis");
- return(options::sp_byref_ellipsis());
- }
-
- if (first->Is(CT_PARAMETER_PACK)) // Issue #3309
- {
- log_rule("sp_parameter_pack_ellipsis");
- return(options::sp_parameter_pack_ellipsis());
- }
- }
-
- if (first->Is(CT_ELLIPSIS))
- {
- if (second->Is(CT_PARAMETER_PACK)) // Issue #3309
- {
- log_rule("sp_ellipsis_parameter_pack");
- return(options::sp_ellipsis_parameter_pack());
- }
-
- if (CharTable::IsKw1(second->GetStr()[0]))
- {
- log_rule("FORCE");
- return(IARF_FORCE);
- }
-
- if ( second->Is(CT_PAREN_OPEN)
- && first->GetPrev()->Is(CT_SIZEOF))
- {
- // Add or remove space between 'sizeof...' and '('.
- log_rule("sp_sizeof_ellipsis_paren");
- return(options::sp_sizeof_ellipsis_paren());
- }
- }
-
- if ( language_is_set(LANG_PAWN)
- && first->Is(CT_TAG_COLON))
- {
- // (Pawn) Add or remove space after the tag keyword.
- log_rule("sp_after_tag");
- return(options::sp_after_tag());
- }
-
- if (second->Is(CT_TAG_COLON))
- {
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- // handle '~'
- if (first->Is(CT_DESTRUCTOR))
- {
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if ( language_is_set(LANG_OC)
- && first->Is(CT_CATCH)
- && second->Is(CT_SPAREN_OPEN)
- && (options::sp_oc_catch_paren() != IARF_IGNORE))
- {
- // (OC) Add or remove space between '@catch' and '('
- // in '@catch (something) { }'. If set to ignore, sp_catch_paren is used.
- log_rule("sp_oc_catch_paren");
- return(options::sp_oc_catch_paren());
- }
-
- if ( language_is_set(LANG_OC)
- && ( first->Is(CT_PAREN_CLOSE)
- || first->Is(CT_OC_CLASS)
- || first->Is(CT_WORD))
- && second->Is(CT_ANGLE_OPEN)
- && ( second->GetParentType() == CT_OC_PROTO_LIST
- || second->GetParentType() == CT_OC_GENERIC_SPEC)
- && (options::sp_before_oc_proto_list() != IARF_IGNORE))
- {
- // (OC) Add or remove space before Objective-C protocol list
- // as in '@protocol Protocol<here><Protocol_A>' or '@interface MyClass : NSObject<here><MyProtocol>'.
- log_rule("sp_before_oc_proto_list");
- return(options::sp_before_oc_proto_list());
- }
-
- if ( language_is_set(LANG_OC)
- && first->Is(CT_OC_CLASS)
- && second->Is(CT_PAREN_OPEN)
- && (options::sp_oc_classname_paren() != IARF_IGNORE))
- {
- // (OC) Add or remove space between class name and '('
- // in '@interface className(categoryName)<ProtocolName>:BaseClass'
- log_rule("sp_oc_classname_paren");
- return(options::sp_oc_classname_paren());
- }
-
- if ( first->Is(CT_CATCH)
- && second->Is(CT_SPAREN_OPEN)
- && (options::sp_catch_paren() != IARF_IGNORE))
- {
- // Add or remove space between 'catch' and '(' in 'catch (something) { }'.
- // If set to ignore, sp_before_sparen is used.
- log_rule("sp_catch_paren");
- return(options::sp_catch_paren());
- }
-
- if ( language_is_set(LANG_D)
- && first->Is(CT_D_VERSION_IF)
- && second->Is(CT_SPAREN_OPEN)
- && (options::sp_version_paren() != IARF_IGNORE))
- {
- // (D) Add or remove space between 'version' and '('
- // in 'version (something) { }'. If set to ignore, sp_before_sparen is used.
- log_rule("sp_version_paren");
- return(options::sp_version_paren());
- }
-
- if ( language_is_set(LANG_D)
- && first->Is(CT_D_SCOPE_IF)
- && second->Is(CT_SPAREN_OPEN)
- && (options::sp_scope_paren() != IARF_IGNORE))
- {
- // (D) Add or remove space between 'scope' and '('
- // in 'scope (something) { }'. If set to ignore, sp_before_sparen is used.
- log_rule("sp_scope_paren");
- return(options::sp_scope_paren());
- }
-
- if ( language_is_set(LANG_OC)
- && first->Is(CT_SYNCHRONIZED)
- && second->Is(CT_SPAREN_OPEN))
- {
- // (OC) Add or remove space between '@synchronized' and the open parenthesis,
- // i.e. '@synchronized(foo)' vs. '@synchronized (foo)'.
- log_rule("sp_after_oc_synchronized");
- return(options::sp_after_oc_synchronized());
- }
-
- // "if (" vs. "if("
- if (second->Is(CT_SPAREN_OPEN))
- {
- // Add or remove space after 'do' between 'while' and '('. Issue #995
- if ( first->Is(CT_WHILE_OF_DO)
- && options::sp_while_paren_open() != IARF_IGNORE)
- {
- log_rule("sp_while_paren_open");
- return(options::sp_while_paren_open());
- }
- // Add or remove space before '(' of other control statements ('if', 'for',
- // 'switch', 'while', etc.).
- log_rule("sp_before_sparen");
- return(options::sp_before_sparen());
- }
-
- if ( first->Is(CT_LAMBDA)
- || second->Is(CT_LAMBDA))
- {
- // Add or remove space around assignment operator '=', '+=', etc.
- log_rule("sp_assign (lambda)");
- return(options::sp_assign());
- }
-
- // Handle the special lambda case for C++11:
- // [=](Something arg){.....}
- // Add or remove space around '=' in C++11 lambda capture specifications.
- // Overrides sp_assign.
- if ( (options::sp_cpp_lambda_assign() != IARF_IGNORE)
- && ( ( first->Is(CT_SQUARE_OPEN)
- && first->GetParentType() == CT_CPP_LAMBDA
- && second->Is(CT_ASSIGN))
- || ( first->Is(CT_ASSIGN)
- && second->Is(CT_SQUARE_CLOSE)
- && second->GetParentType() == CT_CPP_LAMBDA)))
- {
- log_rule("sp_cpp_lambda_assign");
- return(options::sp_cpp_lambda_assign());
- }
-
- if ( first->Is(CT_SQUARE_CLOSE)
- && first->GetParentType() == CT_CPP_LAMBDA)
- {
- // Handle the special lambda case for C++11:
- // [](Something arg){.....}
- // Add or remove space after the capture specification of a C++11 lambda when
- // an argument list is present, as in '[] <here> (int x){ ... }'.
- if (second->Is(CT_LPAREN_OPEN))
- {
- log_rule("sp_cpp_lambda_square_paren");
- return(options::sp_cpp_lambda_square_paren());
- }
- else if (second->Is(CT_BRACE_OPEN))
- {
- // Add or remove space after the capture specification of a C++11 lambda with
- // no argument list is present, as in '[] <here> { ... }'.
- log_rule("sp_cpp_lambda_square_brace");
- return(options::sp_cpp_lambda_square_brace());
- }
- }
-
- if (first->Is(CT_LPAREN_OPEN))
- {
- // Add or remove space after the opening parenthesis of a argument list
- // of a C++11 lambda, as in '[]( <here> int x ){ ... }'.
- log_rule("sp_cpp_lambda_argument_list");
- return(options::sp_cpp_lambda_argument_list());
- }
-
- if (first->Is(CT_LPAREN_CLOSE))
- {
- if (second->Is(CT_BRACE_OPEN))
- {
- // Add or remove space after the argument list of a C++11 lambda, as in
- // '[](int x) <here> { ... }'.
- log_rule("sp_cpp_lambda_paren_brace");
- return(options::sp_cpp_lambda_paren_brace());
- }
- }
-
- if (second->Is(CT_LPAREN_CLOSE))
- {
- // Add or remove space before the closing parenthesis of a argument list
- // of a C++11 lambda, as in '[]( int x <here> ){ ... }'.
- log_rule("sp_cpp_lambda_argument_list");
- return(options::sp_cpp_lambda_argument_list());
- }
-
- if ( first->Is(CT_BRACE_CLOSE)
- && first->GetParentType() == CT_CPP_LAMBDA
- && second->Is(CT_FPAREN_OPEN))
- {
- // Add or remove space between a lambda body and its call operator of an
- // immediately invoked lambda, as in '[]( ... ){ ... } <here> ( ... )'.
- log_rule("sp_cpp_lambda_fparen");
- return(options::sp_cpp_lambda_fparen());
- }
-
- if (first->Is(CT_ENUM))
- {
- if (second->Is(CT_BRACE_OPEN))
- {
- // Add or remove space in 'enum {'.
- log_rule("sp_enum_brace");
- return(options::sp_enum_brace());
- }
- else if (second->Is(CT_FPAREN_OPEN))
- {
- // Add or remove space in 'NS_ENUM ('.
- log_rule("sp_enum_paren");
- return(options::sp_enum_paren());
- }
- }
-
- if (second->Is(CT_ASSIGN))
- {
- if (second->TestFlags(PCF_IN_ENUM))
- {
- // Add or remove space before assignment '=' in enum.
- // Overrides sp_enum_assign.
- if (options::sp_enum_before_assign() != IARF_IGNORE)
- {
- log_rule("sp_enum_before_assign");
- return(options::sp_enum_before_assign());
- }
- // Add or remove space around assignment '=' in enum.
- log_rule("sp_enum_assign");
- return(options::sp_enum_assign());
- }
-
- // Add or remove space around assignment operator '=' in a prototype.
- // If set to ignore, use sp_assign.
- if ( (options::sp_assign_default() != IARF_IGNORE)
- && second->GetParentType() == CT_FUNC_PROTO)
- {
- log_rule("sp_assign_default");
- return(options::sp_assign_default());
- }
-
- // Add or remove space before assignment operator '=', '+=', etc.
- // Overrides sp_assign.
- if (options::sp_before_assign() != IARF_IGNORE)
- {
- log_rule("sp_before_assign");
- return(options::sp_before_assign());
- }
- // Add or remove space around assignment operator '=', '+=', etc.
- log_rule("sp_assign");
- return(options::sp_assign());
- }
-
- if (second->Is(CT_ASSIGN_DEFAULT_ARG))
- {
- // Add or remove space around assignment operator '=' in a prototype.
- // If set to ignore, use sp_assign.
- if ( (options::sp_assign_default() != IARF_IGNORE)
- && second->GetParentType() == CT_FUNC_PROTO)
- {
- log_rule("sp_assign_default");
- return(options::sp_assign_default());
- }
-
- // Add or remove space before assignment operator '=', '+=', etc.
- // Overrides sp_assign.
- if (options::sp_before_assign() != IARF_IGNORE)
- {
- log_rule("sp_before_assign");
- return(options::sp_before_assign());
- }
- // Add or remove space around assignment operator '=', '+=', etc.
- log_rule("sp_assign");
- return(options::sp_assign());
- }
-
- if (first->Is(CT_ASSIGN))
- {
- if (first->TestFlags(PCF_IN_ENUM))
- {
- // Add or remove space after assignment '=' in enum.
- // Overrides sp_enum_assign.
- if (options::sp_enum_after_assign() != IARF_IGNORE)
- {
- log_rule("sp_enum_after_assign");
- return(options::sp_enum_after_assign());
- }
- // Add or remove space around assignment '=' in enum.
- log_rule("sp_enum_assign");
- return(options::sp_enum_assign());
- }
-
- // Add or remove space around assignment operator '=' in a prototype.
- // If set to ignore, use sp_assign.
- if ( (options::sp_assign_default() != IARF_IGNORE)
- && first->GetParentType() == CT_FUNC_PROTO)
- {
- log_rule("sp_assign_default");
- return(options::sp_assign_default());
- }
-
- // Add or remove space after assignment operator '=', '+=', etc.
- // Overrides sp_assign.
- if (options::sp_after_assign() != IARF_IGNORE)
- {
- log_rule("sp_after_assign");
- return(options::sp_after_assign());
- }
- // Add or remove space around assignment operator '=', '+=', etc.
- log_rule("sp_assign");
- return(options::sp_assign());
- }
-
- if ( first->Is(CT_TRAILING_RET)
- || first->Is(CT_CPP_LAMBDA_RET)
- || second->Is(CT_TRAILING_RET)
- || second->Is(CT_CPP_LAMBDA_RET))
- {
- // Add or remove space around trailing return operator '->'.
- log_rule("sp_trailing_return");
- return(options::sp_trailing_return());
- }
-
- if (first->Is(CT_ASSIGN_DEFAULT_ARG))
- {
- // Add or remove space around assignment operator '=' in a prototype.
- // If set to ignore, use sp_assign.
- if ( (options::sp_assign_default() != IARF_IGNORE)
- && first->GetParentType() == CT_FUNC_PROTO)
- {
- log_rule("sp_assign_default");
- return(options::sp_assign_default());
- }
-
- // Add or remove space after assignment operator '=', '+=', etc.
- // Overrides sp_assign.
- if (options::sp_after_assign() != IARF_IGNORE)
- {
- log_rule("sp_after_assign");
- return(options::sp_after_assign());
- }
- // Add or remove space around assignment operator '=', '+=', etc.
- log_rule("sp_assign");
- return(options::sp_assign());
- }
-
- if (first->Is(CT_BIT_COLON))
- {
- if ( first->TestFlags(PCF_IN_ENUM)
- || first->GetParentType() == CT_ENUM)
- {
- // Add or remove space around assignment ':' in enum.
- log_rule("sp_enum_colon");
- return(options::sp_enum_colon());
- }
- }
-
- if (second->Is(CT_BIT_COLON))
- {
- if ( second->TestFlags(PCF_IN_ENUM)
- || second->GetParentType() == CT_ENUM)
- {
- // Add or remove space around assignment ':' in enum.
- log_rule("sp_enum_colon");
- return(options::sp_enum_colon());
- }
- }
-
- if ( first->Is(CT_OC_AVAILABLE_VALUE)
- || second->Is(CT_OC_AVAILABLE_VALUE))
- {
- log_rule("IGNORE");
- return(IARF_IGNORE);
- }
-
- if (language_is_set(LANG_OC))
- {
- if (second->Is(CT_OC_BLOCK_CARET))
- {
- // (OC) Add or remove space before a block pointer caret,
- // i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'.
- log_rule("sp_before_oc_block_caret");
- return(options::sp_before_oc_block_caret());
- }
-
- if (first->Is(CT_OC_BLOCK_CARET))
- {
- // (OC) Add or remove space after a block pointer caret,
- // i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'.
- log_rule("sp_after_oc_block_caret");
- return(options::sp_after_oc_block_caret());
- }
-
- if (second->Is(CT_OC_MSG_FUNC))
- {
- if ( (options::sp_after_oc_msg_receiver() == IARF_REMOVE)
- && ( first->IsNot(CT_SQUARE_CLOSE)
- && first->IsNot(CT_FPAREN_CLOSE)
- && first->IsNot(CT_PAREN_CLOSE)))
- {
- log_rule("FORCE");
- return(IARF_FORCE);
- }
- // (OC) Add or remove space between the receiver and selector in a message,
- // as in '[receiver selector ...]'.
- log_rule("sp_after_oc_msg_receiver");
- return(options::sp_after_oc_msg_receiver());
- }
- }
-
- // c++17 structured bindings e.g., "auto [x, y, z]" vs. a[x, y, z]" or "auto const [x, y, z]" vs. "auto const[x, y, z]"
- if ( language_is_set(LANG_CPP)
- && ( first->Is(CT_BYREF)
- || first->Is(CT_QUALIFIER)
- || first->Is(CT_TYPE))
- && second->Is(CT_SQUARE_OPEN)
- && second->GetParentType() != CT_OC_MSG
- && second->GetParentType() != CT_CS_SQ_STMT)
- {
- // Add or remove space before C++17 structured bindings.
- log_rule("sp_cpp_before_struct_binding");
- return(options::sp_cpp_before_struct_binding());
- }
-
- // "a [x]" vs. "a[x]"
- if ( second->Is(CT_SQUARE_OPEN)
- && ( second->GetParentType() != CT_OC_MSG
- && second->GetParentType() != CT_CS_SQ_STMT
- && second->GetParentType() != CT_CPP_LAMBDA))
- {
- if ( second->TestFlags(PCF_IN_SPAREN)
- && (first->Is(CT_IN)))
- {
- log_rule("FORCE");
- return(IARF_FORCE);
- }
-
- if (first->Is(CT_ASM_COLON))
- {
- // Add or remove space before '[' for asm block.
- log_rule("sp_before_square_asm_block");
- return(options::sp_before_square_asm_block());
- }
-
- if (first->TestFlags(PCF_VAR_DEF))
- {
- // Add or remove space before '[' for a variable definition.
- log_rule("sp_before_vardef_square");
- return(options::sp_before_vardef_square());
- }
- // Add or remove space before '[' (except '[]').
- log_rule("sp_before_square");
- return(options::sp_before_square());
- }
-
- // "byte[]" vs. "byte []"
- if (second->Is(CT_TSQUARE))
- {
- // Add or remove space before '[]'.
- log_rule("sp_before_squares");
- return(options::sp_before_squares());
- }
-
- if ( (options::sp_angle_shift() != IARF_IGNORE)
- && first->Is(CT_ANGLE_CLOSE)
- && second->Is(CT_ANGLE_CLOSE))
- {
- // Add or remove space between '>' and '>' in '>>' (template stuff).
- log_rule("sp_angle_shift");
- return(options::sp_angle_shift());
- }
-
- // spacing around template < > stuff
- if ( first->Is(CT_ANGLE_OPEN)
- || second->Is(CT_ANGLE_CLOSE))
- {
- if ( first->Is(CT_ANGLE_OPEN)
- && second->Is(CT_ANGLE_CLOSE))
- {
- // Add or remove space inside '<>'.
- log_rule("sp_inside_angle_empty");
- return(options::sp_inside_angle_empty());
- }
- // Add or remove space inside '<' and '>'.
- log_rule("sp_inside_angle");
- iarf_e op = options::sp_inside_angle();
-
- // special: if we're not supporting digraphs, then we shouldn't create them!
- if ( (op == IARF_REMOVE)
- && !options::enable_digraphs()
- && first->Is(CT_ANGLE_OPEN)
- && second->Is(CT_DC_MEMBER))
- {
- op = IARF_IGNORE;
- }
- return(op);
- }
-
- if (second->Is(CT_ANGLE_OPEN))
- {
- if ( first->Is(CT_TEMPLATE)
- && (options::sp_template_angle() != IARF_IGNORE))
- {
- // Add or remove space between 'template' and '<'.
- // If set to ignore, sp_before_angle is used.
- log_rule("sp_template_angle");
- return(options::sp_template_angle());
- }
-
- if (first->IsNot(CT_QUALIFIER))
- {
- // Add or remove space before '<'.
- log_rule("sp_before_angle");
- return(options::sp_before_angle());
- }
- }
-
- if (first->Is(CT_ANGLE_CLOSE))
- {
- if ( second->Is(CT_WORD)
- || CharTable::IsKw1(second->GetStr()[0]))
- {
- // Add or remove space between '>' and a word as in 'List<byte> m;' or
- // 'template <typename T> static ...'.
- log_rule("sp_angle_word");
- return(options::sp_angle_word());
- }
-
- if ( second->Is(CT_FPAREN_OPEN)
- || second->Is(CT_PAREN_OPEN))
- {
- Chunk *next = second->GetNextNcNnl();
-
- if (next->Is(CT_FPAREN_CLOSE))
- {
- // Add or remove space between '>' and '()' as found in 'new List<byte>();'.
- log_rule("sp_angle_paren_empty");
- return(options::sp_angle_paren_empty());
- }
- // Add or remove space between '>' and '(' as found in 'new List<byte>(foo);'.
- log_rule("sp_angle_paren");
- return(options::sp_angle_paren());
- }
-
- if (second->Is(CT_DC_MEMBER))
- {
- // Add or remove space before the '::' operator.
- log_rule("sp_before_dc");
- return(options::sp_before_dc());
- }
-
- if ( second->IsNot(CT_BYREF)
- && second->IsNot(CT_PTR_TYPE)
- && second->IsNot(CT_BRACE_OPEN)
- && second->IsNot(CT_PAREN_CLOSE))
- {
- if ( second->Is(CT_CLASS_COLON)
- && options::sp_angle_colon() != IARF_IGNORE)
- {
- // Add or remove space between '>' and ':'.
- log_rule("sp_angle_colon");
- return(options::sp_angle_colon());
- }
-
- // Whether sp_after_angle takes precedence over sp_inside_fparen. This was the
- // historic behavior, but is probably not the desired behavior, so this is off
- // by default.
- if ( second->Is(CT_FPAREN_CLOSE)
- && options::sp_inside_fparen() != IARF_IGNORE
- && !options::use_sp_after_angle_always())
- {
- // Add or remove space between '>' and ')'.
- log_rule("sp_inside_fparen");
- return(options::sp_inside_fparen());
- }
- // Add or remove space after '>'.
- log_rule("sp_after_angle");
- return(options::sp_after_angle());
- }
- }
-
- if (first->Is(CT_BYREF)) // see the tests cpp:34509-34512
- {
- if (second->Is(CT_PAREN_OPEN))
- {
- // Add or remove space after a reference sign '&', if followed by an open
- // parenthesis, as in 'char& (*)()'.
- log_rule("sp_byref_paren");
- return(options::sp_byref_paren());
- }
- else if ( first->GetParentType() == CT_FUNC_DEF // Issue #3197, #3210
- || first->GetParentType() == CT_FUNC_PROTO)
- {
- // Add or remove space after a reference sign '&', if followed by a function
- // prototype or function definition.
- log_rule("sp_after_byref_func"); // byref 2
- return(options::sp_after_byref_func());
- }
- else if ( CharTable::IsKw1(second->GetStr()[0])
- && ( options::sp_after_byref() != IARF_IGNORE
- || ( !second->Is(CT_FUNC_PROTO)
- && !second->Is(CT_FUNC_DEF))))
- {
- // Add or remove space after reference sign '&', if followed by a word.
- log_rule("sp_after_byref"); // byref 1
- return(options::sp_after_byref());
- }
- }
-
- if ( second->Is(CT_BYREF)
- && !first->Is(CT_PAREN_OPEN)) // Issue #1804
- {
- if ( second->GetParentType() == CT_FUNC_DEF // Issue #3197, #3210
- || second->GetParentType() == CT_FUNC_PROTO)
- {
- // Add or remove space before a reference sign '&', if followed by a function
- // prototype or function definition.
- log_rule("sp_before_byref_func"); // byref 4
- return(options::sp_before_byref_func());
- }
- Chunk *next = second->GetNext();
-
- if ( next->IsNotNullChunk()
- && ( next->Is(CT_COMMA)
- || next->Is(CT_PAREN_CLOSE) // Issue #3691
- || next->Is(CT_FPAREN_CLOSE)
- || next->Is(CT_SEMICOLON)))
- {
- if (options::sp_before_unnamed_byref() != IARF_IGNORE) // Issue #3691
- {
- // Add or remove space before a reference sign '&' that isn't followed by a
- // variable name. If set to 'ignore', sp_before_byref is used instead.
- log_rule("sp_before_unnamed_byref"); // byref 5
- return(options::sp_before_unnamed_byref());
- }
- else
- {
- // Add or remove space before a reference sign '&'.
- log_rule("sp_before_byref"); // byref 3
- return(options::sp_before_byref());
- }
- }
- // Add or remove space before a reference sign '&'.
- log_rule("sp_before_byref"); // byref 3
- return(options::sp_before_byref());
- }
-
- if (first->Is(CT_SPAREN_CLOSE))
- {
- if (second->Is(CT_BRACE_OPEN))
- {
- if (second->GetParentType() == CT_CATCH)
- {
- if ( language_is_set(LANG_OC)
- && (options::sp_oc_catch_brace() != IARF_IGNORE))
- {
- // (OC) Add or remove space before the '{' of a '@catch' statement, if the '{'
- // and '@catch' are on the same line, as in '@catch (decl) <here> {'.
- // If set to ignore, sp_catch_brace is used.
- // only to help the vim command }}
- log_rule("sp_oc_catch_brace");
- return(options::sp_oc_catch_brace());
- }
-
- if (options::sp_catch_brace() != IARF_IGNORE)
- {
- // Add or remove space before the '{' of a 'catch' statement, if the '{' and
- // 'catch' are on the same line, as in 'catch (decl) <here> {'.
- log_rule("sp_catch_brace");
- return(options::sp_catch_brace());
- }
- }
-
- if (options::sp_sparen_brace() != IARF_IGNORE)
- {
- // Add or remove space between ')' and '{' of control statements.
- log_rule("sp_sparen_brace");
- return(options::sp_sparen_brace());
- }
- }
-
- if ( !second->IsComment()
- && (options::sp_after_sparen() != IARF_IGNORE))
- {
- // Add or remove space after ')' of control statements.
- log_rule("sp_after_sparen");
- return(options::sp_after_sparen());
- }
- }
-
- if ( second->Is(CT_FPAREN_OPEN)
- && first->GetParentType() == CT_OPERATOR
- && (options::sp_after_operator_sym() != IARF_IGNORE))
- {
- if ( (options::sp_after_operator_sym_empty() != IARF_IGNORE)
- && second->Is(CT_FPAREN_OPEN))
- {
- Chunk *next = second->GetNextNcNnl();
-
- if (next->Is(CT_FPAREN_CLOSE))
- {
- // Overrides sp_after_operator_sym when the operator has no arguments, as in
- // 'operator *()'.
- log_rule("sp_after_operator_sym_empty");
- return(options::sp_after_operator_sym_empty());
- }
- }
- // Add or remove space between the operator symbol and the open parenthesis, as
- // in 'operator ++('.
- log_rule("sp_after_operator_sym");
- return(options::sp_after_operator_sym());
- }
-
- // Issue #2270
- // Translations under vala
- if ( language_is_set(LANG_VALA)
- && first->Is(CT_FUNC_CALL))
- {
- if ( first->IsString("_")
- && second->Is(CT_FPAREN_OPEN)
- && (options::sp_vala_after_translation() != IARF_IGNORE))
- {
- // Add or remove space after '_'.
- log_rule("sp_vala_after_translation");
- return(options::sp_vala_after_translation());
- }
- }
-
- if ( first->Is(CT_MACRO_OPEN)
- || first->Is(CT_MACRO_CLOSE)
- || first->Is(CT_MACRO_ELSE))
- {
- if (second->Is(CT_FPAREN_OPEN))
- {
- // TODO: provide some test data to check this block
- // Add or remove space between function name and '(' on function calls.
- log_rule("sp_func_call_paren");
- return(options::sp_func_call_paren());
- }
- log_rule("IGNORE");
- return(IARF_IGNORE);
- }
-
- // spaces between function and open paren
- if ( first->Is(CT_FUNC_CALL)
- || first->Is(CT_FUNCTION) // Issue #2665
- || first->Is(CT_FUNC_CTOR_VAR)
- || first->Is(CT_CNG_HASINC)
- || first->Is(CT_CNG_HASINCN)
- || ( first->Is(CT_BRACE_CLOSE)
- && first->GetParentType() == CT_BRACED_INIT_LIST
- && second->Is(CT_FPAREN_OPEN))
- || ( first->Is(CT_FUNC_VAR) // Issue #3852
- && second->Is(CT_PAREN_OPEN)))
- {
- if ( (options::sp_func_call_paren_empty() != IARF_IGNORE)
- && second->Is(CT_FPAREN_OPEN))
- {
- Chunk *next = second->GetNextNcNnl();
-
- if (next->Is(CT_FPAREN_CLOSE))
- {
- // Add or remove space between function name and '()' on function calls without
- // parameters. If set to 'ignore' (the default), sp_func_call_paren is used.
- log_rule("sp_func_call_paren_empty");
- return(options::sp_func_call_paren_empty());
- }
- }
- // Add or remove space between function name and '(' on function calls.
- log_rule("sp_func_call_paren");
- return(options::sp_func_call_paren());
- }
-
- if (first->Is(CT_FUNC_CALL_USER))
- {
- // Add or remove space between the user function name and '(' on function
- // calls. You need to set a keyword to be a user function in the config file,
- // like:
- // set func_call_user tr _ i18n
- log_rule("sp_func_call_user_paren");
- return(options::sp_func_call_user_paren());
- }
-
- if ( first->Is(CT_ATTRIBUTE)
- && second->IsParenOpen())
- {
- // Add or remove space between '__attribute__' and '('.
- log_rule("sp_attribute_paren");
- return(options::sp_attribute_paren());
- }
-
- if (first->Is(CT_FUNC_DEF))
- {
- if ( (options::sp_func_def_paren_empty() != IARF_IGNORE)
- && second->Is(CT_FPAREN_OPEN))
- {
- Chunk *next = second->GetNextNcNnl();
-
- if (next->Is(CT_FPAREN_CLOSE))
- {
- // Add or remove space between function name and '()' on function definition
- // without parameters.
- log_rule("sp_func_def_paren_empty");
- return(options::sp_func_def_paren_empty());
- }
- }
- // Add or remove space between function name and '(' on function definition.
- log_rule("sp_func_def_paren");
- return(options::sp_func_def_paren());
- }
-
- if ( first->Is(CT_CPP_CAST)
- || first->Is(CT_TYPE_WRAP))
- {
- // Add or remove space between the type and open parenthesis in a C++ cast,
- // i.e. 'int(exp)' vs. 'int (exp)'.
- log_rule("sp_cpp_cast_paren");
- return(options::sp_cpp_cast_paren());
- }
-
- if ( first->Is(CT_SPAREN_CLOSE)
- && second->Is(CT_WHEN))
- {
- // TODO: provide some test data to check this block
- log_rule("FORCE");
- return(IARF_FORCE); // TODO: make this configurable?
- }
-
- if ( first->Is(CT_PAREN_CLOSE)
- && ( second->Is(CT_PAREN_OPEN)
- || second->Is(CT_FPAREN_OPEN)))
- {
- // "(int)a" vs. "(int) a" or "cast(int)a" vs. "cast(int) a"
- if ( first->GetParentType() == CT_C_CAST
- || first->GetParentType() == CT_D_CAST)
- {
- // Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or
- // '(int)a' vs. '(int) a'.
- log_rule("sp_after_cast");
- return(options::sp_after_cast());
- }
- // Probably a parenthesized indirect function call or similar (issue #3260)
- log_rule("sp_cparen_oparen");
- return(options::sp_cparen_oparen());
- }
-
- // handle the space between parens in fcn type 'void (*f)(void)'
- if (first->Is(CT_TPAREN_CLOSE))
- {
- // Add or remove space between the ')' and '(' in a function type, as in
- // 'void (*x)(...)'.
- log_rule("sp_after_tparen_close");
- return(options::sp_after_tparen_close());
- }
-
- // ")(" vs. ") ("
- if ( ( first->IsString(")")
- && second->IsString("("))
- || ( first->IsParenClose()
- && second->IsParenOpen()))
- {
- // Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.
- log_rule("sp_cparen_oparen");
- return(options::sp_cparen_oparen());
- }
-
- if ( first->Is(CT_FUNC_PROTO)
- || ( second->Is(CT_FPAREN_OPEN)
- && second->GetParentType() == CT_FUNC_PROTO))
- {
- if ( (options::sp_func_proto_paren_empty() != IARF_IGNORE)
- && second->Is(CT_FPAREN_OPEN))
- {
- Chunk *next = second->GetNextNcNnl();
-
- if (next->Is(CT_FPAREN_CLOSE))
- {
- // Add or remove space between function name and '()' on function declaration
- // without parameters.
- log_rule("sp_func_proto_paren_empty");
- return(options::sp_func_proto_paren_empty());
- }
- }
- // Add or remove space between function name and '(' on function declaration.
- log_rule("sp_func_proto_paren");
- return(options::sp_func_proto_paren());
- }
-
- // Issue #2437
- if ( first->Is(CT_FUNC_TYPE)
- && second->Is(CT_FPAREN_OPEN))
- {
- // Add or remove space between function name and '(' with a typedef specifier.
- log_rule("sp_func_type_paren");
- return(options::sp_func_type_paren());
- }
-
- if ( first->Is(CT_FUNC_CLASS_DEF)
- || first->Is(CT_FUNC_CLASS_PROTO))
- {
- if ( (options::sp_func_class_paren_empty() != IARF_IGNORE)
- && second->Is(CT_FPAREN_OPEN))
- {
- Chunk *next = second->GetNextNcNnl();
-
- if (next->Is(CT_FPAREN_CLOSE))
- {
- // Add or remove space between a constructor without parameters or destructor
- // and '()'.
- log_rule("sp_func_class_paren_empty");
- return(options::sp_func_class_paren_empty());
- }
- }
- // Add or remove space between a constructor/destructor and the open
- // parenthesis.
- log_rule("sp_func_class_paren");
- return(options::sp_func_class_paren());
- }
-
- if ( first->Is(CT_CLASS)
- && !first->TestFlags(PCF_IN_OC_MSG))
- {
- log_rule("FORCE");
- return(IARF_FORCE);
- }
-
- if ( first->Is(CT_BRACE_OPEN)
- && second->Is(CT_BRACE_CLOSE))
- {
- // Add or remove space inside '{}'.
- log_rule("sp_inside_braces_empty");
- return(options::sp_inside_braces_empty());
- }
-
- if ( ( first->Is(CT_TYPE) // Issue #2428
- || first->Is(CT_ANGLE_CLOSE))
- && second->Is(CT_BRACE_OPEN)
- && second->GetParentType() == CT_BRACED_INIT_LIST)
- {
- iarf_flags_t arg = iarf_flags_t{ options::sp_type_brace_init_lst() };
-
- if ( arg != IARF_IGNORE
- || first->GetParentType() != CT_DECLTYPE)
- {
- // 'int{9}' vs. 'int {9}'
- // Add or remove space between type and open brace of an unnamed temporary
- // direct-list-initialization.
- log_rule("sp_type_brace_init_lst");
- return(arg);
- }
- }
-
- if ( ( first->Is(CT_WORD) // Issue #2428
- || first->Is(CT_SQUARE_CLOSE)
- || first->Is(CT_TSQUARE))
- && second->Is(CT_BRACE_OPEN)
- && second->GetParentType() == CT_BRACED_INIT_LIST)
- {
- // Add or remove space between a variable and '{' for C++ uniform
- // initialization.
- auto arg = iarf_flags_t{ options::sp_word_brace_init_lst() };
-
- if ( arg != IARF_IGNORE
- || first->GetParentType() != CT_DECLTYPE)
- {
- // 'a{9}' vs. 'a {9}'
- // Add or remove space between variable/word and open brace of an unnamed
- // temporary direct-list-initialization.
- log_rule("sp_word_brace_init_lst");
- return(arg);
- }
- }
-
- if (second->Is(CT_BRACE_CLOSE))
- {
- if (second->GetParentType() == CT_ENUM)
- {
- // Add or remove space inside enum '{' and '}'.
- log_rule("sp_inside_braces_enum");
- return(options::sp_inside_braces_enum());
- }
-
- if ( second->GetParentType() == CT_STRUCT
- || second->GetParentType() == CT_UNION)
- {
- // Fix for issue #1240 adding space in struct initializers
- Chunk *tmp = second->GetOpeningParen()->GetPrevNcNnl();
-
- if (tmp->Is(CT_ASSIGN))
- {
- // TODO: provide some test data to check this block
- log_rule("IGNORE");
- return(IARF_IGNORE);
- }
- // Add or remove space inside struct/union '{' and '}'.
- log_rule("sp_inside_braces_struct");
- return(options::sp_inside_braces_struct());
- }
- else if ( language_is_set(LANG_OC)
- && second->GetParentType() == CT_OC_AT
- && options::sp_inside_braces_oc_dict() != IARF_IGNORE)
- {
- // (OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'
- log_rule("sp_inside_braces_oc_dict");
- return(options::sp_inside_braces_oc_dict());
- }
-
- if (second->GetParentType() == CT_BRACED_INIT_LIST)
- {
- // Add or remove space between nested braces, i.e. '{{' vs. '{ {'.
- // only to help the vim command }}}}
- if ( options::sp_brace_brace() != IARF_IGNORE
- && first->Is(CT_BRACE_CLOSE)
- && first->GetParentType() == CT_BRACED_INIT_LIST)
- {
- log_rule("sp_brace_brace");
- return(options::sp_brace_brace());
- }
-
- if (options::sp_before_type_brace_init_lst_close() != IARF_IGNORE)
- {
- // Add or remove space before close brace in an unnamed temporary
- // direct-list-initialization
- // if statement is a brace_init_lst
- // works only if sp_brace_brace is set to ignore.
- log_rule("sp_before_type_brace_init_lst_close");
- return(options::sp_before_type_brace_init_lst_close());
- }
-
- if (options::sp_inside_type_brace_init_lst() != IARF_IGNORE)
- {
- // Add or remove space inside an unnamed temporary direct-list-initialization.
- // if statement is a brace_init_lst
- // works only if sp_brace_brace is set to ignore
- // works only if sp_before_type_brace_init_lst_close is set to ignore.
- log_rule("sp_inside_type_brace_init_lst");
- return(options::sp_inside_type_brace_init_lst());
- }
- }
- // Add or remove space inside '{' and '}'.
- log_rule("sp_inside_braces");
- return(options::sp_inside_braces());
- }
-
- if (first->Is(CT_D_CAST))
- {
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if ( first->Is(CT_PP_DEFINED)
- && second->Is(CT_PAREN_OPEN))
- {
- // Add or remove space between 'defined' and '(' in '#if defined (FOO)'.
- log_rule("sp_defined_paren");
- return(options::sp_defined_paren());
- }
-
- if (first->Is(CT_THROW))
- {
- if (second->Is(CT_PAREN_OPEN))
- {
- // Add or remove space between 'throw' and '(' in 'throw (something)'.
- log_rule("sp_throw_paren");
- return(options::sp_throw_paren());
- }
- // Add or remove space between 'throw' and anything other than '(' as in
- // '@throw [...];'.
- log_rule("sp_after_throw");
- return(options::sp_after_throw());
- }
-
- if ( first->Is(CT_THIS)
- && second->Is(CT_PAREN_OPEN))
- {
- // Add or remove space between 'this' and '(' in 'this (something)'.
- log_rule("sp_this_paren");
- return(options::sp_this_paren());
- }
-
- if ( first->Is(CT_STATE)
- && second->Is(CT_PAREN_OPEN))
- {
- log_rule("ADD");
- return(IARF_ADD);
- }
-
- if ( first->Is(CT_DELEGATE)
- && second->Is(CT_PAREN_OPEN))
- {
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if ( first->Is(CT_MEMBER)
- || second->Is(CT_MEMBER))
- {
- // Add or remove space around the '.' or '->' operators.
- log_rule("sp_member");
- return(options::sp_member());
- }
-
- if (first->Is(CT_C99_MEMBER))
- {
- // always remove space(s) after then '.' of a C99-member
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if ( first->Is(CT_SUPER)
- && second->Is(CT_PAREN_OPEN))
- {
- // Add or remove space between 'super' and '(' in 'super (something)'.
- log_rule("sp_super_paren");
- return(options::sp_super_paren());
- }
-
- if ( first->Is(CT_FPAREN_CLOSE)
- && second->Is(CT_BRACE_OPEN))
- {
- if ( language_is_set(LANG_JAVA)
- && second->GetParentType() == CT_DOUBLE_BRACE)
- {
- // (Java) Add or remove space between ')' and '{{' of double brace initializer.
- // only to help the vim command }}
- log_rule("sp_fparen_dbrace");
- return(options::sp_fparen_dbrace());
- }
-
- // To fix issue #1234
- // check for initializers and add space or ignore based on the option.
- if (first->GetParentType() == CT_FUNC_CALL)
- {
- Chunk *tmp = first->GetPrevType(first->GetParentType(), first->GetLevel());
- tmp = tmp->GetPrevNcNnl();
-
- if (tmp->Is(CT_NEW))
- {
- // Add or remove space between ')' and '{' of s function call in object
- // initialization.
- // Overrides sp_fparen_brace.
- log_rule("sp_fparen_brace_initializer");
- return(options::sp_fparen_brace_initializer());
- }
- }
- // Add or remove space between ')' and '{' of function.
- log_rule("sp_fparen_brace");
- return(options::sp_fparen_brace());
- }
-
- if ( first->Is(CT_D_TEMPLATE)
- || second->Is(CT_D_TEMPLATE))
- {
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if ( first->Is(CT_ELSE)
- && second->Is(CT_BRACE_OPEN))
- {
- // Add or remove space between 'else' and '{' if on the same line.
- log_rule("sp_else_brace");
- return(options::sp_else_brace());
- }
-
- if ( first->Is(CT_ELSE)
- && second->Is(CT_ELSEIF))
- {
- log_rule("FORCE");
- return(IARF_FORCE);
- }
-
- if ( first->Is(CT_FINALLY)
- && second->Is(CT_BRACE_OPEN))
- {
- // Add or remove space between 'finally' and '{' if on the same line.
- log_rule("sp_finally_brace");
- return(options::sp_finally_brace());
- }
-
- if ( first->Is(CT_TRY)
- && second->Is(CT_BRACE_OPEN))
- {
- // Add or remove space between 'try' and '{' if on the same line.
- log_rule("sp_try_brace");
- return(options::sp_try_brace());
- }
-
- if ( first->Is(CT_GETSET)
- && second->Is(CT_BRACE_OPEN))
- {
- // Add or remove space between get/set and '{' if on the same line.
- log_rule("sp_getset_brace");
- return(options::sp_getset_brace());
- }
-
- if ( first->Is(CT_WORD)
- && second->Is(CT_BRACE_OPEN))
- {
- if (first->GetParentType() == CT_NAMESPACE)
- {
- // Add or remove space between a variable and '{' for a namespace.
- log_rule("sp_word_brace_ns");
- return(options::sp_word_brace_ns());
- }
- }
-
- if ( language_is_set(LANG_D)
- && second->Is(CT_PAREN_OPEN)
- && second->GetParentType() == CT_INVARIANT)
- {
- // (D) Add or remove space between 'invariant' and '('.
- log_rule("sp_invariant_paren");
- return(options::sp_invariant_paren());
- }
-
- if ( first->Is(CT_PAREN_CLOSE)
- && first->GetParentType() != CT_DECLTYPE)
- {
- if ( language_is_set(LANG_D)
- && first->GetParentType() == CT_INVARIANT)
- {
- // (D) Add or remove space after the ')' in 'invariant (C) c'.
- log_rule("sp_after_invariant_paren");
- return(options::sp_after_invariant_paren());
- }
-
- // "(struct foo) {...}" vs. "(struct foo){...}"
- if (second->Is(CT_BRACE_OPEN))
- {
- // Add or remove space between ')' and '{'.
- log_rule("sp_paren_brace");
- return(options::sp_paren_brace());
- }
-
- // D-specific: "delegate(some thing) dg
- if (first->GetParentType() == CT_DELEGATE)
- {
- log_rule("ADD");
- return(IARF_ADD);
- }
-
- // PAWN-specific: "state (condition) next"
- if (first->GetParentType() == CT_STATE)
- {
- log_rule("ADD");
- return(IARF_ADD);
- }
-
- /* C++ new operator: new(bar) Foo */
- if (first->GetParentType() == CT_NEW)
- {
- // Add or remove space between ')' and type in 'new(foo) BAR'.
- log_rule("sp_after_newop_paren");
- return(options::sp_after_newop_paren());
- }
- }
-
- /* "((" vs. "( (" or "))" vs. ") )" */
- // Issue #1342
- if ( ( first->IsString("(")
- && second->IsString("("))
- || ( first->IsString(")")
- && second->IsString(")")))
- {
- if (second->GetParentType() == CT_FUNC_CALL_USER)
- {
- // Add or remove space between nested parentheses with user functions,
- // i.e. '((' vs. '( ('.
- log_rule("sp_func_call_user_paren_paren");
- return(options::sp_func_call_user_paren_paren());
- }
-
- if ( options::sp_sparen_paren() != IARF_IGNORE
- && ( first->Is(CT_SPAREN_OPEN)
- || second->Is(CT_SPAREN_CLOSE)))
- {
- // Add or remove space between nested parentheses with control
- // statements, i.e. 'if ((' vs. 'if ( ('. Issue #3209
- log_rule("sp_sparen_paren");
- return(options::sp_sparen_paren());
- }
- // Add or remove space between nested parentheses, i.e. '((' vs. ') )'.
- log_rule("sp_paren_paren");
- return(options::sp_paren_paren());
- }
-
- // "foo(...)" vs. "foo( ... )"
- if ( first->Is(CT_FPAREN_OPEN)
- || second->Is(CT_FPAREN_CLOSE))
- {
- if ( (first->GetParentType() == CT_FUNC_CALL_USER)
- || ( (second->GetParentType() == CT_FUNC_CALL_USER)
- && ( (first->Is(CT_WORD))
- || (first->Is(CT_SQUARE_CLOSE)))))
- {
- // Add or remove space inside user function '(' and ')'.
- log_rule("sp_func_call_user_inside_fparen");
- return(options::sp_func_call_user_inside_fparen());
- }
-
- if ( first->Is(CT_FPAREN_OPEN)
- && second->Is(CT_FPAREN_CLOSE))
- {
- // Add or remove space inside empty function '()'.
- log_rule("sp_inside_fparens");
- return(options::sp_inside_fparens());
- }
- // Add or remove space inside function '(' and ')'.
- log_rule("sp_inside_fparen");
- return(options::sp_inside_fparen());
- }
-
- // "foo(...)" vs. "foo( ... )"
- if ( first->Is(CT_TPAREN_OPEN)
- || second->Is(CT_TPAREN_CLOSE))
- {
- // Add or remove space inside the first parentheses in a function type, as in
- // 'void (*x)(...)'.
- log_rule("sp_inside_tparen");
- return(options::sp_inside_tparen());
- }
-
- if ( language_is_set(LANG_OC)
- && first->Is(CT_PAREN_CLOSE))
- {
- if ( first->TestFlags(PCF_OC_RTYPE) // == CT_OC_RTYPE)
- && ( first->GetParentType() == CT_OC_MSG_DECL
- || first->GetParentType() == CT_OC_MSG_SPEC))
- {
- // (OC) Add or remove space after the first (type) in message specs,
- // i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'.
- log_rule("sp_after_oc_return_type");
- return(options::sp_after_oc_return_type());
- }
-
- if ( first->GetParentType() == CT_OC_MSG_SPEC
- || first->GetParentType() == CT_OC_MSG_DECL)
- {
- // (OC) Add or remove space after the (type) in message specs,
- // i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'.
- log_rule("sp_after_oc_type");
- return(options::sp_after_oc_type());
- }
-
- if ( first->GetParentType() == CT_OC_SEL
- && second->IsNot(CT_SQUARE_CLOSE))
- {
- // (OC) Add or remove space between '@selector(x)' and the following word,
- // i.e. '@selector(foo) a:' vs. '@selector(foo)a:'.
- log_rule("sp_after_oc_at_sel_parens");
- return(options::sp_after_oc_at_sel_parens());
- }
- }
-
- if ( language_is_set(LANG_OC)
- && options::sp_inside_oc_at_sel_parens() != IARF_IGNORE)
- {
- if ( ( first->Is(CT_PAREN_OPEN)
- && ( first->GetParentType() == CT_OC_SEL
- || first->GetParentType() == CT_OC_PROTOCOL))
- || ( second->Is(CT_PAREN_CLOSE)
- && ( second->GetParentType() == CT_OC_SEL
- || second->GetParentType() == CT_OC_PROTOCOL)))
- {
- // (OC) Add or remove space inside '@selector' parentheses,
- // i.e. '@selector(foo)' vs. '@selector( foo )'.
- // Also applies to '@protocol()' constructs.
- log_rule("sp_inside_oc_at_sel_parens");
- return(options::sp_inside_oc_at_sel_parens());
- }
- }
-
- if ( second->Is(CT_PAREN_OPEN)
- && ( first->Is(CT_OC_SEL)
- || first->Is(CT_OC_PROTOCOL)))
- {
- // (OC) Add or remove space between '@selector' and '(',
- // i.e. '@selector(msgName)' vs. '@selector (msgName)'.
- // Also applies to '@protocol()' constructs.
- log_rule("sp_after_oc_at_sel");
- return(options::sp_after_oc_at_sel());
- }
-
- /*
- * C cast: "(int)" vs. "( int )"
- * D cast: "cast(int)" vs. "cast( int )"
- * CPP cast: "int(a + 3)" vs. "int( a + 3 )"
- */
- if (first->Is(CT_PAREN_OPEN))
- {
- if ( first->GetParentType() == CT_C_CAST
- || first->GetParentType() == CT_CPP_CAST
- || first->GetParentType() == CT_D_CAST)
- {
- // Add or remove spaces inside cast parentheses.
- log_rule("sp_inside_paren_cast");
- return(options::sp_inside_paren_cast());
- }
-
- if (first->GetParentType() == CT_NEW)
- {
- if (options::sp_inside_newop_paren_open() != IARF_IGNORE)
- {
- // Add or remove space after the open parenthesis of the new operator,
- // as in 'new(foo) BAR'.
- // Overrides sp_inside_newop_paren.
- log_rule("sp_inside_newop_paren_open");
- return(options::sp_inside_newop_paren_open());
- }
-
- if (options::sp_inside_newop_paren() != IARF_IGNORE)
- {
- // Add or remove space inside parentheses of the new operator
- // as in 'new(foo) BAR'.
- log_rule("sp_inside_newop_paren");
- return(options::sp_inside_newop_paren());
- }
- }
- log_rule("sp_inside_paren");
- return(options::sp_inside_paren());
- }
-
- if (second->Is(CT_PAREN_CLOSE))
- {
- if ( second->GetParentType() == CT_C_CAST
- || second->GetParentType() == CT_CPP_CAST
- || second->GetParentType() == CT_D_CAST)
- {
- // Add or remove spaces inside cast parentheses.
- log_rule("sp_inside_paren_cast");
- return(options::sp_inside_paren_cast());
- }
-
- if (second->GetParentType() == CT_NEW)
- {
- if (options::sp_inside_newop_paren_close() != IARF_IGNORE)
- {
- // Add or remove space before the close parenthesis of the new operator,
- // as in 'new(foo) BAR'.
- // Overrides sp_inside_newop_paren.
- log_rule("sp_inside_newop_paren_close");
- return(options::sp_inside_newop_paren_close());
- }
-
- if (options::sp_inside_newop_paren() != IARF_IGNORE)
- {
- // Add or remove space inside parentheses of the new operator
- // as in 'new(foo) BAR'.
- log_rule("sp_inside_newop_paren");
- return(options::sp_inside_newop_paren());
- }
- }
- // Add or remove space inside '(' and ')'.
- log_rule("sp_inside_paren");
- return(options::sp_inside_paren());
- }
-
- if ( first->Is(CT_SQUARE_OPEN)
- && second->Is(CT_SQUARE_CLOSE))
- {
- // Add or remove space inside '[]'.
- log_rule("sp_inside_square_empty");
- return(options::sp_inside_square_empty());
- }
-
- // "[3]" vs. "[ 3 ]" or for objective-c "@[@3]" vs. "@[ @3 ]"
- if ( first->Is(CT_SQUARE_OPEN)
- || second->Is(CT_SQUARE_CLOSE))
- {
- if ( language_is_set(LANG_OC)
- && ( ( first->GetParentType() == CT_OC_AT
- && first->Is(CT_SQUARE_OPEN))
- || ( second->GetParentType() == CT_OC_AT
- && second->Is(CT_SQUARE_CLOSE)))
- && (options::sp_inside_square_oc_array() != IARF_IGNORE))
- {
- // (OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and
- // ']'. If set to ignore, sp_inside_square is used.
- log_rule("sp_inside_square_oc_array");
- return(options::sp_inside_square_oc_array());
- }
- // Add or remove space inside a non-empty '[' and ']'.
- log_rule("sp_inside_square");
- return(options::sp_inside_square());
- }
-
- if ( first->Is(CT_SQUARE_CLOSE)
- && second->Is(CT_FPAREN_OPEN))
- {
- // Add or remove space between ']' and '(' when part of a function call.
- log_rule("sp_square_fparen");
- return(options::sp_square_fparen());
- }
-
- // "if(...)" vs. "if( ... )" etc.
- if (second->Is(CT_SPAREN_CLOSE))
- {
- if ( second->GetParentType() == CT_FOR
- && options::sp_inside_for_open() != IARF_IGNORE)
- {
- // Add or remove space before ')' of 'for' statements.
- // Overrides sp_inside_for.
- log_rule("sp_inside_for_close");
- return(options::sp_inside_for_close());
- }
- else if (options::sp_inside_sparen_open() != IARF_IGNORE)
- {
- // Add or remove space before ')' of other control statements.
- // Overrides sp_inside_sparen.
- log_rule("sp_inside_sparen_close");
- return(options::sp_inside_sparen_close());
- }
- }
-
- if (first->Is(CT_SPAREN_OPEN))
- {
- if ( first->GetParentType() == CT_FOR
- && options::sp_inside_for_open() != IARF_IGNORE)
- {
- // Add or remove space before ')' of 'for' statements.
- // Overrides sp_inside_for.
- log_rule("sp_inside_for_close");
- return(options::sp_inside_for_close());
- }
- else if (options::sp_inside_sparen_open() != IARF_IGNORE)
- {
- // Add or remove space after '(' of other control statements.
- // Overrides sp_inside_sparen.
- log_rule("sp_inside_sparen_open");
- return(options::sp_inside_sparen_open());
- }
- }
-
- if (first->Is(CT_SPAREN_OPEN))
- {
- if (first->GetParentType() == CT_FOR)
- {
- // Add or remove space inside '(' and ')' of 'for' statements.
- log_rule("sp_inside_for");
- return(options::sp_inside_for());
- }
- else
- {
- // Add or remove space inside '(' and ')' of other control statements.
- log_rule("sp_inside_sparen");
- return(options::sp_inside_sparen());
- }
- }
-
- if (second->Is(CT_SPAREN_CLOSE))
- {
- if (second->GetParentType() == CT_FOR)
- {
- // Add or remove space inside '(' and ')' of 'for' statements.
- log_rule("sp_inside_for");
- return(options::sp_inside_for());
- }
- else
- {
- // Add or remove space inside '(' and ')' of other control statements.
- log_rule("sp_inside_sparen");
- return(options::sp_inside_sparen());
- }
- }
-
- if (first->Is(CT_CLASS_COLON))
- {
- if ( first->GetParentType() == CT_OC_CLASS
- && ( first->GetPrevType(CT_OC_INTF, first->GetLevel(), E_Scope::ALL)->IsNullChunk()
- && first->GetPrevType(CT_OC_IMPL, first->GetLevel(), E_Scope::ALL)->IsNullChunk()))
- {
- if (options::sp_after_oc_colon() != IARF_IGNORE)
- {
- // TODO: provide some test data to check this block
- // (OC) Add or remove space after the colon in message specs,
- // i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.
- log_rule("sp_after_oc_colon");
- return(options::sp_after_oc_colon());
- }
- }
-
- if (options::sp_after_class_colon() != IARF_IGNORE)
- {
- // Add or remove space after class ':'.
- log_rule("sp_after_class_colon");
- return(options::sp_after_class_colon());
- }
- }
-
- if (second->Is(CT_CLASS_COLON))
- {
- if ( language_is_set(LANG_OC)
- && second->GetParentType() == CT_OC_CLASS
- && ( second->GetPrevType(CT_OC_INTF, second->GetLevel(), E_Scope::ALL)->IsNullChunk()
- && second->GetPrevType(CT_OC_IMPL, second->GetLevel(), E_Scope::ALL)->IsNullChunk()))
- {
- if ( second->GetParentType() == CT_OC_CLASS
- && second->GetPrevType(CT_OC_INTF, second->GetLevel(), E_Scope::ALL)->IsNullChunk())
- {
- if (options::sp_before_oc_colon() != IARF_IGNORE)
- {
- // TODO: provide some test data to check this block
- // (OC) Add or remove space before the colon in message specs,
- // i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.
- log_rule("sp_before_oc_colon");
- return(options::sp_before_oc_colon());
- }
- }
- }
-
- if (options::sp_before_class_colon() != IARF_IGNORE)
- {
- // Add or remove space before class ':'.
- log_rule("sp_before_class_colon");
- return(options::sp_before_class_colon());
- }
- }
-
- if (first->Is(CT_CONSTR_COLON))
- {
- min_sp = options::indent_ctor_init_leading() - 1; // default indent is 1 space
- // Add or remove space after class constructor ':'.
- log_rule("sp_after_constr_colon");
- return(options::sp_after_constr_colon());
- }
-
- if (second->Is(CT_CONSTR_COLON))
- {
- // Add or remove space before class constructor ':'.
- log_rule("sp_before_constr_colon");
- return(options::sp_before_constr_colon());
- }
-
- if (second->Is(CT_CASE_COLON))
- {
- // Add or remove space before case ':'.
- log_rule("sp_before_case_colon");
- return(options::sp_before_case_colon());
- }
-
- if (first->Is(CT_DOT))
- {
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if (second->Is(CT_DOT))
- {
- log_rule("ADD");
- return(IARF_ADD);
- }
-
- if ( first->Is(CT_NULLCOND)
- || second->Is(CT_NULLCOND))
- {
- // TODO: provide some test data to check this block
- // LANG_CS null conditional operator
- // Add or remove space around the '.' or '->' operators.
- log_rule("sp_member");
- return(options::sp_member());
- }
-
- if ( first->Is(CT_ARITH)
- || first->Is(CT_SHIFT)
- || first->Is(CT_CARET)
- || second->Is(CT_ARITH)
- || second->Is(CT_SHIFT)
- || second->Is(CT_CARET))
- {
- // Add or remove space around arithmetic operators '+' and '-'.
- // Overrides sp_arith.
- if (options::sp_arith_additive() != IARF_IGNORE)
- {
- auto arith_char = ( first->Is(CT_ARITH)
- || first->Is(CT_SHIFT)
- || first->Is(CT_CARET))
- ? first->GetStr()[0] : second->GetStr()[0];
-
- if ( arith_char == '+'
- || arith_char == '-')
- {
- log_rule("sp_arith_additive");
- return(options::sp_arith_additive());
- }
- }
- // Add or remove space around non-assignment symbolic operators ('+', '/', '%',
- // '<<', and so forth).
- log_rule("sp_arith");
- return(options::sp_arith());
- }
-
- if ( first->Is(CT_BOOL)
- || second->Is(CT_BOOL))
- {
- // Add or remove space around boolean operators '&&' and '||'.
- iarf_e arg = options::sp_bool();
-
- if ( (options::pos_bool() != TP_IGNORE)
- && first->GetOrigLine() != second->GetOrigLine())
- {
- arg = arg | IARF_ADD;
- }
- log_rule("sp_bool");
- return(arg);
- }
-
- if ( first->Is(CT_COMPARE)
- || second->Is(CT_COMPARE))
- {
- // Add or remove space around compare operator '<', '>', '==', etc.
- log_rule("sp_compare");
- return(options::sp_compare());
- }
-
- if ( first->Is(CT_PAREN_OPEN)
- && second->Is(CT_PTR_TYPE))
- {
- // TODO: provide some test data to check this block
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if (first->Is(CT_PTR_TYPE)) // see the tests cpp:34505-34508
- {
- if ( second->Is(CT_FPAREN_OPEN)
- || second->Is(CT_TPAREN_OPEN))
- {
- // Add or remove space after a pointer star '*', if followed by an open
- // parenthesis, as in 'void* (*)()'.
- log_rule("sp_ptr_star_paren"); // ptr_star 10
- return(options::sp_ptr_star_paren());
- }
- else if (second->Is(CT_PTR_TYPE))
- {
- // Add or remove space between pointer stars '*'.
- // as in 'int ***a;'.
- log_rule("sp_between_ptr_star"); // ptr_star 9
- return(options::sp_between_ptr_star());
- }
- else if (second->Is(CT_FUNC_VAR))
- {
- // Add or remove space between the pointer star '*' and the name of the
- // variable in a function pointer definition.
- log_rule("sp_ptr_star_func_var");
- return(options::sp_ptr_star_func_var());
- }
- else if (second->Is(CT_FUNC_TYPE))
- {
- // Add or remove space between the pointer star '*' and the name of the
- // type in a function pointer type definition.
- log_rule("sp_ptr_star_func_type");
- return(options::sp_ptr_star_func_type());
- }
- else if ( first->GetParentType() == CT_FUNC_DEF
- || first->GetParentType() == CT_FUNC_PROTO
- || first->GetParentType() == CT_FUNC_VAR)
- {
- if (token_is_within_trailing_return(first))
- {
- // Add or remove space after a pointer star '*', in the trailing return
- // a function prototype or function definition.
- log_rule("sp_after_ptr_star_trailing"); // ptr_star 3
- return(options::sp_after_ptr_star_trailing());
- }
- else
- {
- // Add or remove space after a pointer star '*', if followed by a function
- // prototype or function definition.
- log_rule("sp_after_ptr_star_func"); // ptr_star 2
- return(options::sp_after_ptr_star_func());
- }
- }
- else if (CharTable::IsKw1(second->GetStr()[0]))
- {
- Chunk *prev = first->GetPrev();
-
- if (prev->Is(CT_IN))
- {
- // Add or remove space after the '*' (dereference) unary operator. This does
- // not affect the spacing after a '*' that is part of a type.
- log_rule("sp_deref");
- return(options::sp_deref());
- }
- else if ( first->GetParentType() == CT_FUNC_VAR
- || first->GetParentType() == CT_FUNC_TYPE)
- {
- // Add or remove space after pointer caret '^', if followed by a word.
- log_rule("sp_after_ptr_block_caret");
- return(options::sp_after_ptr_block_caret());
- }
- else if (second->Is(CT_QUALIFIER))
- {
- // Add or remove space after pointer star '*', if followed by a qualifier.
- log_rule("sp_after_ptr_star_qualifier"); // ptr_star 4
- return(options::sp_after_ptr_star_qualifier());
- }
- // Add or remove space after pointer star '*', if followed by a word.
- log_rule("sp_after_ptr_star"); // ptr_star 1
- return(options::sp_after_ptr_star());
- }
- else if (second->Is(CT_PAREN_OPEN))
- {
- // Add or remove space after pointer star '*', if followed by a word.
- log_rule("sp_after_ptr_star"); // ptr_star 1
- return(options::sp_after_ptr_star());
- }
-
- // must be placed at the end of the block
- // look back for '->' type is TRAILING_RET
- if (token_is_within_trailing_return(first))
- {
- log_rule("sp_after_ptr_star_trailing"); // ptr_star 3
- return(options::sp_after_ptr_star_trailing());
- }
- }
-
- if ( second->Is(CT_PTR_TYPE)
- && first->IsNot(CT_IN))
- {
- // look back for '->' type is TRAILING_RET
- if (token_is_within_trailing_return(second))
- {
- log_rule("sp_before_ptr_star_trailing"); // ptr_star 7
- return(options::sp_before_ptr_star_trailing());
- }
-
- // Add or remove space before a pointer star '*', if followed by a function
- // prototype or function definition.
- if (options::sp_before_ptr_star_func() != IARF_IGNORE)
- {
- // Find the next non-'*' chunk
- Chunk *next = second;
-
- do
- {
- next = next->GetNext();
- } while (next->Is(CT_PTR_TYPE));
-
- if ( next->Is(CT_FUNC_DEF)
- || next->Is(CT_FUNC_PROTO))
- {
- log_rule("sp_before_ptr_star_func"); // ptr_star 6
- return(options::sp_before_ptr_star_func());
- }
- }
-
- // Add or remove space before pointer star '*' that isn't followed by a
- // variable name. If set to 'ignore', sp_before_ptr_star is used instead.
- if (options::sp_before_unnamed_ptr_star() != IARF_IGNORE)
- {
- Chunk *next = second->GetNextNc();
-
- while (next->Is(CT_PTR_TYPE))
- {
- next = next->GetNextNc();
- }
-
- if ( next->IsNotNullChunk()
- && next->IsNot(CT_WORD))
- {
- log_rule("sp_before_unnamed_ptr_star"); // ptr_star 8
- return(options::sp_before_unnamed_ptr_star());
- }
- }
-
- // Add or remove space before pointer star '*'.
- if (options::sp_before_ptr_star() != IARF_IGNORE)
- {
- log_rule("sp_before_ptr_star"); // ptr_star 5
- return(options::sp_before_ptr_star());
- }
- }
-
- if (first->Is(CT_OPERATOR))
- {
- // Add or remove space between 'operator' and operator sign.
- log_rule("sp_after_operator");
- return(options::sp_after_operator());
- }
-
- if ( second->Is(CT_FUNC_PROTO)
- || second->Is(CT_FUNC_DEF))
- {
- if ( first->IsNot(CT_PTR_TYPE)
- && first->IsNot(CT_BYREF))
- {
- // Add or remove space between return type and function name. A
- // minimum of 1 is forced except for pointer/reference return types.
- log_rule("sp_type_func | ADD");
- return(options::sp_type_func() | IARF_ADD);
- }
- // Add or remove space between return type and function name. A
- // minimum of 1 is forced except for pointer/reference return types.
- log_rule("sp_type_func");
- return(options::sp_type_func());
- }
-
- // "(int)a" vs. "(int) a" or "cast(int)a" vs. "cast(int) a"
- if ( ( first->GetParentType() == CT_C_CAST
- || first->GetParentType() == CT_D_CAST)
- && first->Is(CT_PAREN_CLOSE))
- {
- log_rule("sp_after_cast");
- return(options::sp_after_cast());
- }
-
- if (first->Is(CT_BRACE_CLOSE))
- {
- if (second->Is(CT_ELSE))
- {
- // Add or remove space between '}' and 'else' if on the same line.
- log_rule("sp_brace_else");
- return(options::sp_brace_else());
- }
-
- if ( language_is_set(LANG_OC)
- && second->Is(CT_CATCH)
- && (options::sp_oc_brace_catch() != IARF_IGNORE))
- {
- // TODO: provide some test data to check this block
- // (OC) Add or remove space between '}' and '@catch' if on the same line.
- // If set to ignore, sp_brace_catch is used.
- log_rule("sp_oc_brace_catch");
- return(options::sp_oc_brace_catch());
- }
-
- if (second->Is(CT_CATCH))
- {
- // TODO: provide some test data to check this block
- // Add or remove space between '}' and 'catch' if on the same line.
- log_rule("sp_brace_catch");
- return(options::sp_brace_catch());
- }
-
- if (second->Is(CT_FINALLY))
- {
- // Add or remove space between '}' and 'finally' if on the same line.
- log_rule("sp_brace_finally");
- return(options::sp_brace_finally());
- }
- }
-
- if (first->Is(CT_BRACE_OPEN))
- {
- if (first->GetParentType() == CT_ENUM)
- {
- // Add or remove space inside enum '{' and '}'.
- log_rule("sp_inside_braces_enum");
- return(options::sp_inside_braces_enum());
- }
-
- if ( first->GetParentType() == CT_STRUCT
- || first->GetParentType() == CT_UNION)
- {
- // Fix for issue #1240 adding space in struct initializers
- Chunk *tmp = first->GetPrevNcNnl();
-
- if (tmp->Is(CT_ASSIGN))
- {
- // TODO: provide some test data to check this block
- log_rule("IGNORE");
- return(IARF_IGNORE);
- }
- // Add or remove space inside struct/union '{' and '}'.
- log_rule("sp_inside_braces_struct");
- return(options::sp_inside_braces_struct());
- }
- else if ( first->GetParentType() == CT_OC_AT
- && options::sp_inside_braces_oc_dict() != IARF_IGNORE)
- {
- // (OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'
- log_rule("sp_inside_braces_oc_dict");
- return(options::sp_inside_braces_oc_dict());
- }
-
- if (first->GetParentType() == CT_BRACED_INIT_LIST)
- {
- // Add or remove space between nested braces, i.e. '{{' vs. '{ {'.
- // only to help the vim command }}}}
- if ( options::sp_brace_brace() != IARF_IGNORE
- && second->Is(CT_BRACE_OPEN)
- && second->GetParentType() == CT_BRACED_INIT_LIST)
- {
- log_rule("sp_brace_brace");
- return(options::sp_brace_brace());
- }
-
- if (options::sp_after_type_brace_init_lst_open() != IARF_IGNORE)
- {
- // Add or remove space after open brace in an unnamed temporary
- // direct-list-initialization
- // if statement is a brace_init_lst
- // works only if sp_brace_brace is set to ignore.
- log_rule("sp_after_type_brace_init_lst_open");
- return(options::sp_after_type_brace_init_lst_open());
- }
-
- if (options::sp_inside_type_brace_init_lst() != IARF_IGNORE)
- {
- // Add or remove space inside an unnamed temporary direct-list-initialization
- // if statement is a brace_init_lst
- // works only if sp_brace_brace is set to ignore
- // works only if sp_after_type_brace_init_lst_close is set to ignore.
- log_rule("sp_inside_type_brace_init_lst");
- return(options::sp_inside_type_brace_init_lst());
- }
- }
-
- if (!second->IsComment())
- {
- // Add or remove space inside '{' and '}'.
- log_rule("sp_inside_braces");
- return(options::sp_inside_braces());
- }
- }
-
- if ( first->Is(CT_BRACE_CLOSE)
- && first->TestFlags(PCF_IN_TYPEDEF)
- && ( first->GetParentType() == CT_ENUM
- || first->GetParentType() == CT_STRUCT
- || first->GetParentType() == CT_UNION))
- {
- // Add or remove space between '}' and the name of a typedef on the same line.
- log_rule("sp_brace_typedef");
- return(options::sp_brace_typedef());
- }
-
- if ( language_is_set(LANG_D)
- && second->Is(CT_PAREN_OPEN)
- && second->GetParentType() == CT_TEMPLATE)
- {
- // (D) Add or remove space before the parenthesis in the D constructs
- // 'template Foo(' and 'class Foo('.
- log_rule("sp_before_template_paren");
- return(options::sp_before_template_paren());
- }
-
- // Issue #3080
- if ( first->Is(CT_PAREN_CLOSE)
- && first->GetParentType() == CT_DECLTYPE
- && ( second->Is(CT_WORD)
- || second->Is(CT_BRACE_OPEN)
- || second->Is(CT_FUNC_CALL)))
- {
- iarf_e arg = options::sp_after_decltype();
- // Add or remove space between 'decltype(...)' and word, brace or function call.
- log_rule("sp_after_decltype");
- return(arg);
- }
-
- // Issue #3080
- if ( !language_is_set(LANG_D)
- && first->Is(CT_PAREN_CLOSE)
- && second->Is(CT_WORD))
- {
- // Add or remove space between type and word.
- log_rule("sp_after_type");
- return(options::sp_after_type());
- }
-
- // see if the D template expression is used as a type
- if ( language_is_set(LANG_D)
- && first->Is(CT_PAREN_CLOSE)
- && first->GetParentType() == CT_D_TEMPLATE)
- {
- if (second->GetParentType() == CT_USING_ALIAS)
- {
- log_rule("sp_after_type | ADD");
- return(options::sp_after_type() | IARF_ADD);
- }
-
- if (second->Is(CT_WORD))
- {
- Chunk *open_paren = first->GetOpeningParen();
- Chunk *type = open_paren->GetPrev()->GetPrev();
-
- if (type->Is(CT_TYPE))
- {
- log_rule("sp_after_type");
- return(options::sp_after_type());
- }
- }
- }
-
- if ( first->Is(CT_TYPE) // Issue #3457
- && second->Is(CT_COLON))
- {
- log_rule("sp_type_colon");
- return(options::sp_type_colon());
- }
-
- if ( !second->Is(CT_PTR_TYPE)
- && ( first->Is(CT_QUALIFIER)
- || first->Is(CT_TYPE)))
- {
- // Add or remove space between type and word. In cases where total removal of
- // whitespace would be a syntax error, a value of 'remove' is treated the same
- // as 'force'.
- //
- // This also affects some other instances of space following a type that are
- // not covered by other options; for example, between the return type and
- // parenthesis of a function type template argument, between the type and
- // parenthesis of an array parameter, or between 'decltype(...)' and the
- // following word.
- iarf_e arg = options::sp_after_type();
- log_rule("sp_after_type");
- return(arg);
- }
-
- if ( first->Is(CT_PTR_TYPE)
- && second->Is(CT_ELLIPSIS))
- {
- log_rule("sp_ptr_type_ellipsis");
- return(options::sp_ptr_type_ellipsis());
- }
-
- // If nothing claimed the PTR_TYPE, then return ignore
- if ( first->Is(CT_PTR_TYPE)
- || second->Is(CT_PTR_TYPE))
- {
- log_rule("IGNORE");
- return(IARF_IGNORE);
- }
-
- if (first->Is(CT_NOT))
- {
- if ( second->Is(CT_NOT)
- && (options::sp_not_not() != IARF_IGNORE))
- {
- log_rule("sp_not_not");
- return(options::sp_not_not());
- }
- // Add or remove space after the '!' (not) unary operator.
- log_rule("sp_not");
- return(options::sp_not());
- }
-
- if (first->Is(CT_INV))
- {
- // Add or remove space after the '~' (invert) unary operator.
- log_rule("sp_inv");
- return(options::sp_inv());
- }
-
- if (first->Is(CT_ADDR))
- {
- // Add or remove space after the '&' (address-of) unary operator. This does not
- // affect the spacing after a '&' that is part of a type.
- log_rule("sp_addr");
- return(options::sp_addr());
- }
-
- if (first->Is(CT_DEREF))
- {
- // Add or remove space after the '*' (dereference) unary operator. This does
- // not affect the spacing after a '*' that is part of a type.
- log_rule("sp_deref");
- return(options::sp_deref());
- }
-
- if ( first->Is(CT_POS)
- || first->Is(CT_NEG))
- {
- // Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.
- log_rule("sp_sign");
- return(options::sp_sign());
- }
-
- if ( first->Is(CT_INCDEC_BEFORE)
- || second->Is(CT_INCDEC_AFTER))
- {
- // Add or remove space between '++' and '--' the word to which it is being
- // applied, as in '(--x)' or 'y++;'.
- log_rule("sp_incdec");
- return(options::sp_incdec());
- }
-
- if (second->Is(CT_CS_SQ_COLON))
- {
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- if (first->Is(CT_CS_SQ_COLON))
- {
- log_rule("FORCE");
- return(IARF_FORCE);
- }
-
- if ( language_is_set(LANG_OC)
- && first->Is(CT_OC_SCOPE))
- {
- // (OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;'
- // or '+(int) bar;'.
- log_rule("sp_after_oc_scope");
- return(options::sp_after_oc_scope());
- }
-
- if ( language_is_set(LANG_OC)
- && first->Is(CT_OC_DICT_COLON))
- {
- // (OC) Add or remove space after the colon in immutable dictionary expression
- // 'NSDictionary *test = @{@"foo" :@"bar"};'.
- log_rule("sp_after_oc_dict_colon");
- return(options::sp_after_oc_dict_colon());
- }
-
- if ( language_is_set(LANG_OC)
- && second->Is(CT_OC_DICT_COLON))
- {
- // (OC) Add or remove space before the colon in immutable dictionary expression
- // 'NSDictionary *test = @{@"foo" :@"bar"};'.
- log_rule("sp_before_oc_dict_colon");
- return(options::sp_before_oc_dict_colon());
- }
-
- if ( language_is_set(LANG_OC)
- && first->Is(CT_OC_COLON))
- {
- if (first->TestFlags(PCF_IN_OC_MSG))
- {
- // (OC) Add or remove space after the colon in message specs,
- // i.e. '[object setValue:1];' vs. '[object setValue: 1];'.
- log_rule("sp_after_send_oc_colon");
- return(options::sp_after_send_oc_colon());
- }
- // (OC) Add or remove space after the colon in message specs,
- // i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.
- log_rule("sp_after_oc_colon");
- return(options::sp_after_oc_colon());
- }
-
- if ( language_is_set(LANG_OC)
- && second->Is(CT_OC_COLON))
- {
- if ( first->TestFlags(PCF_IN_OC_MSG)
- && ( first->Is(CT_OC_MSG_FUNC)
- || first->Is(CT_OC_MSG_NAME)))
- {
- // (OC) Add or remove space before the colon in message specs,
- // i.e. '[object setValue:1];' vs. '[object setValue :1];'.
- log_rule("sp_before_send_oc_colon");
- return(options::sp_before_send_oc_colon());
- }
- // (OC) Add or remove space before the colon in message specs,
- // i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.
- log_rule("sp_before_oc_colon");
- return(options::sp_before_oc_colon());
- }
-
- if ( second->Is(CT_COMMENT)
- && second->GetParentType() == CT_COMMENT_EMBED)
- {
- // Add or remove space before an embedded comment.
- // Number of spaces before an embedded comment.
- log_rule("sp_before_emb_cmt");
- min_sp = options::sp_num_before_emb_cmt();
- return(options::sp_before_emb_cmt());
- }
-
- if (first->Is(CT_COMMENT))
- {
- // Add or remove space after an embedded comment.
- // Number of spaces after an embedded comment.
- log_rule("sp_after_emb_cmt");
- min_sp = options::sp_num_after_emb_cmt();
- return(options::sp_after_emb_cmt());
- }
-
- if ( first->Is(CT_NEW)
- && second->Is(CT_PAREN_OPEN))
- {
- // c# new Constraint, c++ new operator
- // Add or remove space between 'new' and '(' in 'new()'.
- log_rule("sp_between_new_paren");
- return(options::sp_between_new_paren());
- }
-
- if ( first->Is(CT_NEW)
- || first->Is(CT_DELETE)
- || ( first->Is(CT_TSQUARE)
- && first->GetParentType() == CT_DELETE))
- {
- // Add or remove space after 'new', 'delete' and 'delete[]'.
- log_rule("sp_after_new");
- return(options::sp_after_new());
- }
-
- if ( language_is_set(LANG_JAVA)
- && first->Is(CT_ANNOTATION)
- && second->IsParenOpen())
- {
- // (Java) Add or remove space between an annotation and the open parenthesis.
- log_rule("sp_annotation_paren");
- return(options::sp_annotation_paren());
- }
-
- if ( language_is_set(LANG_OC)
- && first->Is(CT_OC_PROPERTY))
- {
- // (OC) Add or remove space after '@property'.
- log_rule("sp_after_oc_property");
- return(options::sp_after_oc_property());
- }
-
- if ( language_is_set(LANG_D)
- && first->Is(CT_EXTERN)
- && second->Is(CT_PAREN_OPEN))
- {
- // (D) Add or remove space between 'extern' and '(' as in 'extern (C)'.
- log_rule("sp_extern_paren");
- return(options::sp_extern_paren());
- }
-
- if ( second->Is(CT_TYPE)
- && ( ( first->Is(CT_STRING)
- && first->GetParentType() == CT_EXTERN)
- || ( first->Is(CT_FPAREN_CLOSE)
- && first->GetParentType() == CT_ATTRIBUTE)))
- {
- log_rule("FORCE");
- return(IARF_FORCE); /* TODO: make this configurable? */
- }
-
- if (first->Is(CT_NOEXCEPT))
- {
- // Add or remove space after 'noexcept'.
- log_rule("sp_after_noexcept");
- return(options::sp_after_noexcept());
- }
-
- // Issue #2138
- if (first->Is(CT_FPAREN_CLOSE))
- {
- if (second->Is(CT_QUALIFIER))
- {
- // Add or remove space between ')' and a qualifier such as 'const'.
- log_rule("sp_paren_qualifier");
- return(options::sp_paren_qualifier());
- }
- else if (second->Is(CT_NOEXCEPT))
- {
- // Add or remove space between ')' and 'noexcept'.
- log_rule("sp_paren_noexcept");
- return(options::sp_paren_noexcept());
- }
- }
-
- // Issue #2098
- if ( first->Is(CT_PP_PRAGMA)
- && second->Is(CT_PREPROC_BODY))
- {
- log_rule("REMOVE");
- return(IARF_REMOVE);
- }
-
- // Issue #1733
- if ( first->Is(CT_OPERATOR_VAL)
- && second->Is(CT_TYPE))
- {
- log_rule("IGNORE");
- return(IARF_IGNORE);
- }
-
- // Issue #995
- if ( first->Is(CT_DO)
- && second->Is(CT_BRACE_OPEN))
- {
- // Add or remove space between 'do' and '{'.
- log_rule("sp_do_brace_open");
- return(options::sp_do_brace_open());
- }
-
- // Issue #995
- if ( first->Is(CT_BRACE_CLOSE)
- && second->Is(CT_WHILE_OF_DO))
- {
- // Add or remove space between '}' and 'while.
- log_rule("sp_brace_close_while");
- return(options::sp_brace_close_while());
- }
-
- // TODO: have a look to Issue #2186, why NEWLINE?
- // Issue #2524
- if ( first->Is(CT_NEWLINE)
- && second->Is(CT_BRACE_OPEN))
- {
- log_rule("IGNORE");
- return(IARF_IGNORE);
- }
-
- // =============================================================
- // category 1
- // this table lists out all combos where a space should NOT be present
- // CT_UNKNOWN is a wildcard.
- for (auto it : no_space_table)
- {
- if ( ( it.first == CT_UNKNOWN
- || it.first == first->GetType())
- && ( it.second == CT_UNKNOWN
- || it.second == second->GetType()))
- {
- log_rule("REMOVE from no_space_table");
- return(IARF_REMOVE);
- }
- }
-
- // =============================================================
- // category 2
- // this table lists out all combos where a space MUST be present
- for (auto it : add_space_table)
- {
- if ( it.first == first->GetType()
- && it.second == second->GetType())
- {
- // TODO: if necessary create a new option
- log_rule("ADD from add_space_table");
- return(IARF_ADD);
- }
- }
-
- // Issue #2386
- if ( first->Is(CT_FORM_FEED)
- || second->Is(CT_FORM_FEED))
- {
- log_rule("IGNORE");
- return(IARF_IGNORE);
- }
-
- // TODO: if necessary create a new option
- if ( first->Is(CT_MACRO_FUNC_CALL)
- && second->Is(CT_FPAREN_OPEN))
- {
- log_rule("IGNORE");
- return(IARF_IGNORE);
- }
-
- if ( first->Is(CT_CASE_ELLIPSIS)
- && second->Is(CT_NUMBER))
- {
- // Add or remove space after the variadic '...' when preceded by a
- // non-punctuator.
- // The value REMOVE will be overridden with FORCE
- if (options::sp_after_ellipsis() == IARF_REMOVE)
- {
- log_rule("sp_after_ellipsis/FORCE");
- return(IARF_FORCE);
- }
- else
- {
- log_rule("sp_after_ellipsis");
- return(options::sp_after_ellipsis());
- }
- }
-
- if ( first->Is(CT_NUMBER)
- && second->Is(CT_CASE_ELLIPSIS))
- {
- // Add or remove space before the variadic '...' when preceded by a
- // non-punctuator.
- // The value REMOVE will be overridden with FORCE
- if (options::sp_before_ellipsis() == IARF_REMOVE)
- {
- log_rule("sp_before_ellipsis/FORCE");
- return(IARF_FORCE);
- }
- else
- {
- log_rule("sp_before_ellipsis");
- return(options::sp_before_ellipsis());
- }
- }
- // =============================================================
- // category 3
- // these lines are only useful for debugging uncrustify itself
- LOG_FMT(LSPACE, "\n\n%s(%d): WARNING: unrecognize do_space:\n",
- __func__, __LINE__);
- LOG_FMT(LSPACE, " first orig line is %zu, orig col is %zu, Text() '%s', GetType() is %s\n",
- first->GetOrigLine(), first->GetOrigCol(), first->Text(), get_token_name(first->GetType()));
- LOG_FMT(LSPACE, " second orig line is %zu, orig col is %zu, Text() '%s', GetType() is %s\n",
- second->GetOrigLine(), second->GetOrigCol(), second->Text(), get_token_name(second->GetType()));
- LOG_FMT(LSPACE, " Please make a call at https://github.com/uncrustify/uncrustify/issues/new\n");
- LOG_FMT(LSPACE, " or merge the line:\n");
- LOG_FMT(LSPACE, " { CT_%s, CT_%s},\n",
- get_token_name(first->GetType()), get_token_name(second->GetType()));
- LOG_FMT(LSPACE, " in the file <Path_to_uncrustify>/src/add_space_table.h\n");
-
- log_rule("ADD as default value");
- return(IARF_ADD);
-} // do_space
-
-
-static iarf_e ensure_force_space(Chunk *first, Chunk *second, iarf_e av)
-{
- if (first->TestFlags(PCF_FORCE_SPACE))
- {
- LOG_FMT(LSPACE, "%s(%d): <force between '%s' and '%s'>\n",
- __func__, __LINE__, first->Text(), second->Text());
- return(av | IARF_ADD);
- }
- return(av);
-}
-
-
-static iarf_e do_space_ensured(Chunk *first, Chunk *second, int &min_sp)
-{
- iarf_e aa = ensure_force_space(first, second, do_space(first, second, min_sp));
-
- return(aa);
-}
-
-
-void space_text()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *pc = Chunk::GetHead();
- Chunk *next;
- size_t prev_column;
- size_t column = pc->GetColumn();
-
- while (pc->IsNotNullChunk())
- {
- if (pc->Is(CT_NEWLINE))
- {
- LOG_FMT(LSPACE, "%s(%d): orig line is %zu, orig col is %zu, <Newline>, nl is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetNlCount());
- }
- else
- {
- char copy[1000];
- LOG_FMT(LSPACE, "%s(%d): orig line is %zu, orig col is %zu, '%s' type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy), get_token_name(pc->GetType()));
- }
-
- if ( (options::use_options_overriding_for_qt_macros())
- && ( (strcmp(pc->Text(), "SIGNAL") == 0)
- || (strcmp(pc->Text(), "SLOT") == 0)))
- {
- LOG_FMT(LSPACE, "%s(%d): orig col is %zu, type is %s SIGNAL/SLOT found\n",
- __func__, __LINE__, pc->GetOrigLine(), get_token_name(pc->GetType()));
- pc->SetFlagBits(PCF_IN_QT_MACRO); // flag the chunk for a second processing
-
- // save the values
- save_set_options_for_QT(pc->GetLevel());
- }
-
- // Bug # 637
- // If true, vbrace tokens are dropped to the previous token and skipped.
- if (options::sp_skip_vbrace_tokens())
- {
- next = pc->GetNext();
-
- while ( next->IsEmptyText()
- && !next->IsNewline()
- && next->IsVBrace())
- {
- LOG_FMT(LSPACE, "%s(%d): orig line is %zu, orig col is %zu, Skip %s (%zu+%zu)\n",
- __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), get_token_name(next->GetType()),
- pc->GetColumn(), pc->GetStr().size());
- next->SetColumn(pc->GetColumn() + pc->GetStr().size());
- next = next->GetNext();
- }
- }
- else
- {
- next = pc->GetNext();
- }
-
- if (next->IsNullChunk())
- {
- break;
- }
-
- // Issue # 481
- // Whether to balance spaces inside nested parentheses.
- if ( QT_SIGNAL_SLOT_found
- && options::sp_balance_nested_parens())
- {
- Chunk *nn = next->GetNext(); // Issue #2734
-
- if ( nn->IsNotNullChunk()
- && nn->Is(CT_SPACE))
- {
- Chunk::Delete(nn); // remove the space
- }
- }
-
- /*
- * If the current chunk contains a newline, do not change the column
- * of the next item
- */
- if ( pc->IsNewline()
- || pc->Is(CT_COMMENT_MULTI))
- {
- column = next->GetColumn();
- }
- else
- {
- // Set to the minimum allowed column
- if (pc->GetNlCount() == 0)
- {
- column += pc->Len();
- }
- else
- {
- column = pc->GetOrigColEnd();
- }
- prev_column = column;
-
- /*
- * Apply a general safety check
- * If the two chunks combined will tokenize differently, then we
- * must force a space.
- * Two chunks -- "()" and "[]" will always tokenize differently.
- * They are always safe to not have a space after them.
- */
- pc->ResetFlagBits(PCF_FORCE_SPACE);
-
- if ( (pc->Len() > 0)
- && !pc->IsString("[]")
- && !pc->IsString("{{")
- && !pc->IsString("}}")
- && !pc->IsString("()")
- && !pc->GetStr().startswith("@\""))
- {
- // Find the next non-empty chunk on this line
- Chunk *tmp = next;
-
- while ( tmp->IsNotNullChunk()
- && (tmp->Len() == 0)
- && !tmp->IsNewline())
- {
- tmp = tmp->GetNext();
- }
-
- if ( tmp->IsNotNullChunk()
- && tmp->Len() > 0)
- {
- bool kw1 = CharTable::IsKw2(pc->GetStr()[pc->Len() - 1]);
- bool kw2 = CharTable::IsKw1(next->GetStr()[0]);
-
- if ( kw1
- && kw2)
- {
- // back-to-back words need a space
- LOG_FMT(LSPACE, "%s(%d): back-to-back words need a space: pc->Text() '%s', next->Text() '%s'\n",
- __func__, __LINE__, pc->Text(), next->Text());
- pc->SetFlagBits(PCF_FORCE_SPACE);
- }
- // TODO: what is the meaning of 4
- else if ( !kw1
- && !kw2
- && (pc->Len() < 4)
- && (next->Len() < 4))
- {
- // We aren't dealing with keywords. concat and try punctuators
- char buf[9];
- memcpy(buf, pc->Text(), pc->Len());
- memcpy(buf + pc->Len(), next->Text(), next->Len());
- buf[pc->Len() + next->Len()] = 0;
-
- const chunk_tag_t *ct;
- ct = find_punctuator(buf, cpd.lang_flags);
-
- if ( ct != nullptr
- && (strlen(ct->tag) != pc->Len()))
- {
- // punctuator parsed to a different size..
-
- /*
- * C++11 allows '>>' to mean '> >' in templates:
- * some_func<vector<string>>();
- */
- // (C++11) Permit removal of the space between '>>' in 'foo<bar<int> >'. Note
- // that sp_angle_shift cannot remove the space without this option.
- if ( ( ( language_is_set(LANG_CPP)
- && options::sp_permit_cpp11_shift())
- || (language_is_set(LANG_JAVA | LANG_CS | LANG_VALA | LANG_OC)))
- && pc->Is(CT_ANGLE_CLOSE)
- && next->Is(CT_ANGLE_CLOSE))
- {
- // allow '>' and '>' to become '>>'
- }
- else if (strcmp(ct->tag, "[]") == 0)
- {
- // this is OK
- }
- else
- {
- LOG_FMT(LSPACE, "%s(%d): : pc->Text() is %s, next->Text() is %s\n",
- __func__, __LINE__, pc->Text(), next->Text());
- pc->SetFlagBits(PCF_FORCE_SPACE);
- }
- }
- }
- }
- }
- int min_sp;
- LOG_FMT(LSPACE, "%s(%d): orig line is %zu, orig col is %zu, pc-Text() '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- iarf_e av = do_space_ensured(pc, next, min_sp);
- min_sp = max(1, min_sp);
-
- switch (av)
- {
- case IARF_FORCE:
- column += min_sp; // add exactly the specified number of spaces
- break;
-
- case IARF_ADD:
- {
- int delta = min_sp;
-
- if ( next->GetOrigCol() >= pc->GetOrigColEnd()
- && pc->GetOrigColEnd() != 0)
- {
- // Keep the same relative spacing, minimum 1
- delta = next->GetOrigCol() - pc->GetOrigColEnd();
-
- if (delta < min_sp)
- {
- delta = min_sp;
- }
- }
- column += delta;
- break;
- }
-
- case IARF_REMOVE:
- // the symbols will be back-to-back "a+3"
- break;
-
- case IARF_IGNORE:
-
- // Keep the same relative spacing, if possible
- if ( next->GetOrigCol() >= pc->GetOrigColEnd()
- && pc->GetOrigColEnd() != 0)
- {
- column += next->GetOrigCol() - pc->GetOrigColEnd();
- }
- else
- {
- // preserve the position if virtual brace
- // Issue #1854
- if (pc->Is(CT_VBRACE_OPEN))
- {
- column = next->GetOrigCol();
- }
- }
- break;
-
- default:
- // If we got here, something is wrong...
- break;
- } // switch
-
- if ( next->IsComment()
- && next->GetNext()->IsNewline()
- && column < next->GetOrigCol())
- {
- /*
- * do some comment adjustments if sp_before_tr_cmt and sp_endif_cmt
- * did not apply.
- */
- // Add or remove space between #else or #endif and a trailing comment.
- if ( ( options::sp_before_tr_cmt() == IARF_IGNORE
- || next->GetParentType() != CT_COMMENT_END)
- && ( options::sp_endif_cmt() == IARF_IGNORE
- || ( pc->IsNot(CT_PP_ELSE)
- && pc->IsNot(CT_PP_ENDIF))))
- {
- if (options::indent_relative_single_line_comments())
- {
- // Try to keep relative spacing between tokens
- LOG_FMT(LSPACE, "%s(%d): <relative adj>", __func__, __LINE__);
- LOG_FMT(LSPACE, "%s(%d): pc is '%s', orig col is %zu, next orig col is %zu, pc orig col end is %zu\n",
- __func__, __LINE__, pc->Text(),
- pc->GetOrigCol(), next->GetOrigCol(), pc->GetOrigColEnd());
- column = pc->GetColumn() + (next->GetOrigCol() - pc->GetOrigColEnd());
- }
- else
- {
- /*
- * If there was a space, we need to force one, otherwise
- * try to keep the comment in the same column.
- */
- size_t col_min = pc->GetColumn() + pc->Len() + ((next->GetOrigPrevSp() > 0) ? 1 : 0);
- column = next->GetOrigCol();
-
- if (column < col_min)
- {
- column = col_min;
- }
- LOG_FMT(LSPACE, "%s(%d): <relative set>", __func__, __LINE__);
- }
- }
- }
- next->SetColumn(column);
-
- LOG_FMT(LSPACE, "%s(%d): orig line is %zu, orig col is %zu, pc-Text() '%s', type is %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
- LOG_FMT(LSPACE, "%s(%d): ",
- __func__, __LINE__);
- LOG_FMT(LSPACE, " rule = %s @ %zu => %zu\n",
- (av == IARF_IGNORE) ? "IGNORE" :
- (av == IARF_ADD) ? "ADD" :
- (av == IARF_REMOVE) ? "REMOVE" : "FORCE",
- column - prev_column, next->GetColumn());
-
- if (restoreValues) // guy 2015-09-22
- {
- restore_options_for_QT();
- }
- }
- pc = next;
-
- if (QT_SIGNAL_SLOT_found)
- {
- // flag the chunk for a second processing
- pc->SetFlagBits(PCF_IN_QT_MACRO);
- }
- }
-} // space_text
-
-
-void space_text_balance_nested_parens()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *first = Chunk::GetHead();
-
- while (first->IsNotNullChunk())
- {
- Chunk *next = first->GetNext();
-
- if (next->IsNullChunk())
- {
- break;
- }
-
- // if there are two successive opening parenthesis
- if ( first->IsString("(")
- && next->IsString("("))
- {
- // insert a space between them
- space_add_after(first, 1);
-
- // test after the closing parens Issue #1703
- Chunk *closing = first->GetNextType((E_Token)(first->GetType() + 1), first->GetLevel());
-
- if (closing->GetOrigCol() == closing->GetPrev()->GetOrigColEnd())
- {
- space_add_after(closing->GetPrev(), 1);
- }
- }
- else if ( first->IsString(")")
- && next->IsString(")"))
- {
- // insert a space between the two closing parens
- space_add_after(first, 1);
-
- // test after the opening parens Issue #1703
- Chunk *opening = next->GetPrevType((E_Token)(next->GetType() - 1), next->GetLevel());
-
- if (opening->GetOrigColEnd() == opening->GetNext()->GetOrigCol())
- {
- space_add_after(opening, 1);
- }
- }
- first = next;
- }
-} // space_text_balance_nested_parens
-
-
-size_t space_needed(Chunk *first, Chunk *second)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LSPACE, "%s(%d)\n", __func__, __LINE__);
-
- int min_sp;
-
- switch (do_space_ensured(first, second, min_sp))
- {
- case IARF_ADD:
- case IARF_FORCE:
- return(max(1, min_sp));
-
- case IARF_REMOVE:
- return(0);
-
- case IARF_IGNORE:
- default:
- return(second->GetOrigCol() > (first->GetOrigCol() + first->Len()));
- }
-}
-
-
-size_t space_col_align(Chunk *first, Chunk *second)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LSPACE, "%s(%d): first orig line is %zu, orig col is %zu, [%s/%s], Text() '%s' <==>\n",
- __func__, __LINE__, first->GetOrigLine(), first->GetOrigCol(),
- get_token_name(first->GetType()), get_token_name(first->GetParentType()),
- first->Text());
- LOG_FMT(LSPACE, "%s(%d): second orig line is %zu, orig col is %zu [%s/%s], Text() '%s',",
- __func__, __LINE__, second->GetOrigLine(), second->GetOrigCol(),
- get_token_name(second->GetType()), get_token_name(second->GetParentType()),
- second->Text());
- log_func_stack_inline(LSPACE);
-
- int min_sp;
- iarf_e av = do_space_ensured(first, second, min_sp);
-
- LOG_FMT(LSPACE, "%s(%d): av is %s\n", __func__, __LINE__, to_string(av));
- size_t coldiff;
-
- if (first->GetNlCount())
- {
- LOG_FMT(LSPACE, "%s(%d): new line count is %zu, orig col end is %zu\n", __func__, __LINE__, first->GetNlCount(), first->GetOrigColEnd());
- coldiff = first->GetOrigColEnd() - 1;
- }
- else
- {
- LOG_FMT(LSPACE, "%s(%d): Len is %zu\n", __func__, __LINE__, first->Len());
- coldiff = first->Len();
- }
- LOG_FMT(LSPACE, "%s(%d): => coldiff is %zu\n", __func__, __LINE__, coldiff);
-
- LOG_FMT(LSPACE, "%s(%d): => av is %s\n", __func__, __LINE__,
- (av == IARF_IGNORE) ? "IGNORE" :
- (av == IARF_ADD) ? "ADD" :
- (av == IARF_REMOVE) ? "REMOVE" : "FORCE");
-
- switch (av)
- {
- case IARF_ADD:
- case IARF_FORCE:
- coldiff++;
- break;
-
- case IARF_REMOVE:
- break;
-
- case IARF_IGNORE: // Issue #2064
- LOG_FMT(LSPACE, "%s(%d): => first orig line is %zu\n", __func__, __LINE__, first->GetOrigLine());
- LOG_FMT(LSPACE, "%s(%d): => second orig line is %zu\n", __func__, __LINE__, second->GetOrigLine());
- LOG_FMT(LSPACE, "%s(%d): => first Text() is '%s'\n", __func__, __LINE__, first->Text());
- LOG_FMT(LSPACE, "%s(%d): => second Text() is '%s'\n", __func__, __LINE__, second->Text());
- LOG_FMT(LSPACE, "%s(%d): => first orig col is %zu\n", __func__, __LINE__, first->GetOrigCol());
- LOG_FMT(LSPACE, "%s(%d): => second orig col is %zu\n", __func__, __LINE__, second->GetOrigCol());
- LOG_FMT(LSPACE, "%s(%d): => first Len() is %zu\n", __func__, __LINE__, first->Len());
-
- if ( first->GetOrigLine() == second->GetOrigLine()
- && second->GetOrigCol() > (first->GetOrigCol() + first->Len()))
- {
- coldiff++;
- }
- break;
-
- default:
- // If we got here, something is wrong...
- break;
- }
- LOG_FMT(LSPACE, "%s(%d): => coldiff is %zu\n", __func__, __LINE__, coldiff);
- return(coldiff);
-} // space_col_align
-
-
-void space_add_after(Chunk *pc, size_t count)
-{
- LOG_FUNC_ENTRY();
-
- Chunk *next = pc->GetNext();
-
- // don't add at the end of the file or before a newline
- if ( next->IsNullChunk()
- || next->IsNewline())
- {
- return;
- }
-
- // Limit to 16 spaces
- if (count > 16)
- {
- count = 16;
- }
-
- // Two CT_SPACE in a row -- use the max of the two
- if (next->Is(CT_SPACE))
- {
- if (next->Len() < count)
- {
- while (next->Len() < count)
- {
- next->Str().append(' ');
- }
- }
- return;
- }
- Chunk sp;
-
- sp.SetType(CT_SPACE);
- sp.SetFlags(pc->GetFlags() & PCF_COPY_FLAGS);
- sp.Str() = " "; // 16 spaces
- sp.Str().resize(count);
- sp.SetLevel(pc->GetLevel());
- sp.SetBraceLevel(pc->GetBraceLevel());
- sp.SetPpLevel(pc->GetPpLevel());
- sp.SetColumn(pc->GetColumn() + pc->Len());
- sp.SetOrigLine(pc->GetOrigLine());
- sp.SetOrigCol(pc->GetOrigCol());
-
- sp.CopyAndAddAfter(pc);
-} // space_add_after
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/token_enum.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/token_enum.h
deleted file mode 100644
index e7caa5ba..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/token_enum.h
+++ /dev/null
@@ -1,400 +0,0 @@
-/**
- * @file token_enum.h
- * List of the different tokens used in the program.
- *
- * @author Ben Gardner
- * @author Guy Maurel since version 0.62 for uncrustify4Qt
- * October 2015
- * @license GPL v2+
- */
-
-#ifndef TOKEN_ENUM_H_INCLUDED
-#define TOKEN_ENUM_H_INCLUDED
-
-/**
- * abbreviations used:
- * CT = chunk type
- */
-
-
-/**
- * This is an enum of all the different chunks/tokens/elements that the
- * program can work with. The parser and scanner assigns one of these to
- * each chunk/token.
- */
-enum E_Token
-{
- CT_NONE,
- CT_PARENT_NOT_SET,
- CT_EOF,
- CT_UNKNOWN,
-
- CT_JUNK, // junk collected when parsing is disabled
-
- CT_WHITESPACE, // whitespace without any newlines
- CT_SPACE, // a fixed number of spaces to support weird spacing rules
- CT_NEWLINE, // CRA, one or more newlines
- CT_NL_CONT, // CRA, backslash-newline
- CT_FORM_FEED, // character 12
- CT_COMMENT_CPP, // C++ comment (always followed by CT_NEWLINE)
- CT_COMMENT, // C-comment, single line
- CT_COMMENT_MULTI, // Multi-lined comment
- CT_COMMENT_EMBED, // comment parent_type: non-newline before and after
- CT_COMMENT_START, // comment parent_type: newline before
- CT_COMMENT_END, // comment parent_type: newline after
- CT_COMMENT_WHOLE, // comment parent_type: newline before and after
- CT_COMMENT_ENDIF, // C-comment, single line, after ENDIF
-
- CT_IGNORED, // a chunk of ignored text
-
- CT_WORD, // variable, type, function name, etc
- CT_NUMBER,
- CT_NUMBER_FP,
- CT_STRING, // quoted string "hi" or 'a' or <in> for include
- CT_STRING_MULTI, // quoted string with embedded newline
- CT_IF, // built-in keywords
- CT_ELSE,
- CT_ELSEIF,
- CT_CONSTEXPR, // only when preceded by 'if' (otherwise CT_QUALIFIER)
- CT_FOR,
- CT_WHILE,
- CT_WHILE_OF_DO,
- CT_SWITCH,
- CT_CASE,
- CT_DO,
- CT_SYNCHRONIZED,
- CT_VOLATILE,
- CT_TYPEDEF,
- CT_STRUCT,
- CT_ENUM,
- CT_ENUM_CLASS,
- CT_SIZEOF,
- CT_DECLTYPE,
- CT_RETURN,
- CT_BREAK,
- CT_UNION,
- CT_GOTO,
- CT_CONTINUE,
- CT_C_CAST, // C-style cast: "(int)5.6"
- CT_CPP_CAST, // C++-style cast: "int(5.6)"
- CT_D_CAST, // D-style cast: "cast(type)" and "const(type)"
- CT_TYPE_CAST, // static_cast<type>(exp)
- CT_TYPENAME, // typename type
- CT_TEMPLATE, // template<...>
- CT_PARAMETER_PACK, // template<typename ... ARGS>
- CT_WHERE_SPEC, // 'where' : used in C# generic constraint
-
- CT_ASSIGN, // =, +=, /=, etc
- CT_ASSIGN_NL, // Assign followed by a newline - fake item for indenting
- CT_SASSIGN, // 'and_eq'
-
- CT_ASSIGN_DEFAULT_ARG, // Default argument such as
- // Foo( int Foo = 5 );
- CT_ASSIGN_FUNC_PROTO, // function prototype modifier such as
- // void* operator new(std::size_t) = delete;
- // Foo( const Foo & ) = default;
- // Foo( const Foo & ) = 0;
-
- CT_COMPARE, // ==, !=, <=, >=
- CT_SCOMPARE, // compare op that is a string 'is', 'neq'
- CT_BOOL, // || or &&
- CT_SBOOL, // or, and
- CT_ARITH, // +, -, /, etc
- CT_SARITH, // 'not', 'xor'
- CT_SHIFT, // <<, >>
- CT_CARET, // ^
- CT_DEREF, // * dereference
- CT_INCDEC_BEFORE, // ++a or --a
- CT_INCDEC_AFTER, // a++ or a--
- CT_MEMBER, // . or ->
- CT_DC_MEMBER, // ::
- CT_C99_MEMBER, // . in structure stuff
- CT_INV, // ~
- CT_DESTRUCTOR, // ~
- CT_NOT, // !
- CT_D_TEMPLATE, // ! as in Foo!(A)
- CT_ADDR, // &
- CT_NEG, // - as in -1
- CT_POS, // + as in +1
- CT_STAR, // * : raw char to be changed
- CT_PLUS, // + : raw char to be changed
- CT_MINUS, // - : raw char to be changed
- CT_AMP, // & : raw char to be changed
- CT_BYREF, // & in function def/proto params
-
- // CT_BITWISE_AND, // & // is a CT_ARITH
- // CT_BITWISE_OR, // | // is a CT_ARITH
- // CT_BITWISE_EXCLUSIVE_OR,// ^ // is a CT_ARITH
- // CT_BITWISE_NOT, // ~ // is a CT_ARITH
-
- CT_POUND, // #
- CT_PREPROC, // # at the start of a line
- CT_PREPROC_INDENT, // # at the start of a line that gets indented: #region
- CT_PREPROC_BODY, // body of every preproc EXCEPT #define
- CT_PP, // ##
- CT_ELLIPSIS, // ...
- CT_RANGE, // ..
- CT_NULLCOND, // ?.
-
- CT_SEMICOLON,
- CT_VSEMICOLON, // virtual semicolon for PAWN
- CT_COLON,
- CT_ASM_COLON,
- CT_CASE_COLON,
- CT_CASE_ELLIPSIS, // '...' in `case 1 ... 5`:
- CT_CLASS_COLON, // colon after a class def
- CT_CONSTR_COLON, // colon after a constructor
- CT_D_ARRAY_COLON, // D named array initializer colon
- CT_COND_COLON, // conditional colon in 'b ? t : f'
- CT_WHERE_COLON, // C# where-constraint colon (after the type)
- CT_QUESTION,
- CT_COMMA,
-
- CT_ASM,
- CT_ATTRIBUTE,
- CT_AUTORELEASEPOOL, // OC: Autorelease Pool Blocks, used by iOS
- CT_OC_AVAILABLE,
- CT_OC_AVAILABLE_VALUE,
- CT_CATCH,
- CT_WHEN,
- CT_WHERE, // C# where clause
- CT_CLASS,
- CT_DELETE,
- CT_EXPORT,
- CT_FRIEND,
- CT_NAMESPACE,
- CT_PACKAGE,
- CT_NEW, // may turn into CT_PBRACED if followed by a '('
- CT_OPERATOR,
- CT_OPERATOR_VAL,
- CT_ASSIGN_OPERATOR, // the value after 'operator' such as:
- // Foo &operator= ( const Foo & );
- CT_ACCESS,
- CT_ACCESS_COLON,
- CT_THROW,
- CT_NOEXCEPT,
- CT_TRY,
- CT_BRACED_INIT_LIST,
- CT_USING,
- CT_USING_STMT, // using (xxx) ...
- CT_USING_ALIAS, // using identifier attr(optional) = type-id
- CT_D_WITH, // D: parenthetis+braced
- CT_D_MODULE,
- CT_SUPER,
- CT_DELEGATE,
- CT_BODY,
- CT_DEBUG,
- CT_DEBUGGER,
- CT_INVARIANT,
- CT_UNITTEST,
- CT_UNSAFE,
- CT_FINALLY,
- CT_FIXED, // C# fixed
- CT_IMPORT,
- CT_D_SCOPE,
- CT_D_SCOPE_IF,
- CT_LAZY,
- CT_D_MACRO,
- CT_D_VERSION, // turns into CT_D_VERSION_IF if not followed by '='
- CT_D_VERSION_IF, // version(x) { }
-
- // note for parenthetis/brace/square pairs: close MUST be open + 1
- CT_PAREN_OPEN,
- CT_PAREN_CLOSE,
-
- CT_ANGLE_OPEN, // template<T*>
- CT_ANGLE_CLOSE,
-
- CT_SPAREN_OPEN, // 'special' parenthetis after if/for/switch/while/synchronized/catch
- CT_SPAREN_CLOSE,
-
- CT_PPAREN_OPEN, // 'protect' parenthetis to protect a type such as (*int)
- CT_PPAREN_CLOSE, // used at align_func_param
-
- CT_FPAREN_OPEN, // 'function' parenthetis after fcn/macro fcn
- CT_FPAREN_CLOSE,
-
- CT_LPAREN_OPEN, // lambda-declarator parenthetis
- CT_LPAREN_CLOSE,
-
- CT_TPAREN_OPEN, // 'type' parenthetis used in function types
- CT_TPAREN_CLOSE,
-
- CT_BRACE_OPEN, // {...}
- CT_BRACE_CLOSE,
-
- CT_VBRACE_OPEN, // virtual brace, i.e. brace inserted by uncrustify
- CT_VBRACE_CLOSE,
-
- CT_SQUARE_OPEN, // [...]
- CT_SQUARE_CLOSE,
-
- CT_TSQUARE, // special case of []
-
- CT_MACRO_OPEN, // stuff specified via custom-pair
- CT_MACRO_CLOSE,
- CT_MACRO_ELSE,
-
- // aggregate types
- CT_LABEL, // a non-case label
- CT_LABEL_COLON, // the colon for a label
- CT_FUNCTION, // function - unspecified, call mark_function()
- CT_FUNC_CALL, // function call
- CT_FUNC_CALL_USER, // function call (special user)
- CT_FUNC_DEF, // function definition/implementation
- CT_FUNC_TYPE, // function type - foo in "typedef void (*foo)(void)"
- CT_FUNC_VAR, // foo and parent type of first parens in "void (*foo)(void)"
- CT_FUNC_PROTO, // function prototype
- CT_FUNC_START, // global DC member for functions(void ::func())
- CT_FUNC_CLASS_DEF, // ctor or dtor for a class
- CT_FUNC_CLASS_PROTO, // ctor or dtor for a class
- CT_FUNC_CTOR_VAR, // variable or class initialization
- CT_FUNC_WRAP, // macro that wraps the function name
- CT_PROTO_WRAP, // macro: "RETVAL PROTO_WRAP( fcn_name, (PARAMS))". Parens for PARAMS are optional.
- CT_MACRO_FUNC, // function-like macro
- CT_MACRO_FUNC_CALL, // function-like macro call
- CT_MACRO, // a macro def
- CT_QUALIFIER, // static, const, etc
- CT_EXTERN, // extern
- CT_DECLSPEC, // __declspec
- CT_ALIGN, // paren'd qualifier: align(4) struct a { }
- CT_TYPE,
- CT_PTR_TYPE, // a '*' as part of a type
- CT_TYPE_WRAP, // macro that wraps a type name
- CT_CPP_LAMBDA, // parent for '[=](...){...}'
- CT_CPP_LAMBDA_RET, // '->' in '[=](...) -> type {...}'
- CT_EXECUTION_CONTEXT, // Keyword for use in lambda statement: [] CT_EXECUTION_CONTEXT ()->{}
- CT_TRAILING_RET, // '->' in 'auto fname(...) -> type;'
- // '->' in 'auto fname(...) const -> type;'
- CT_BIT_COLON, // a ':' in a variable declaration
-
- CT_OC_DYNAMIC,
- CT_OC_END, // ObjC: @end
- CT_OC_IMPL, // ObjC: @implementation
- CT_OC_INTF, // ObjC: @interface
- CT_OC_PROTOCOL, // ObjC: @protocol or @protocol()
- CT_OC_PROTO_LIST, // ObjC: protocol list < > (parent token only)
- CT_OC_GENERIC_SPEC, // ObjC: specification of generic < >
- CT_OC_PROPERTY, // ObjC: @property
- CT_OC_CLASS, // ObjC: the name after @interface or @implementation
- CT_OC_CLASS_EXT, // ObjC: a pair of empty parens after the class name in a @interface or @implementation
- CT_OC_CATEGORY, // ObjC: the category name in parens after the class name in a @interface or @implementation
- CT_OC_SCOPE, // ObjC: the '-' or '+' in '-(void) func: (int) i;'
- CT_OC_MSG, // ObjC: parent type to '[', ']' and ';' in '[class func : param name: param];'
- CT_OC_MSG_CLASS, // ObjC: 'class' in '[class func : param name: param];' (see also PCF_IN_OC_MSG)
- CT_OC_MSG_FUNC, // ObjC: 'func' in '[class func : param name: param];' (see also PCF_IN_OC_MSG)
- CT_OC_MSG_NAME, // ObjC: 'name' in '[class func : param name: param];' (see also PCF_IN_OC_MSG)
- CT_OC_MSG_SPEC, // ObjC: msg spec '-(void) func: (int) i;'
- CT_OC_MSG_DECL, // ObjC: msg decl '-(void) func: (int) i { }'
- CT_OC_RTYPE, // ObjC: marks parens of the return type after scope
- CT_OC_ATYPE, // ObjC: marks parens of the arg type after scope
- CT_OC_COLON, // ObjC: the colon in a msg spec
- CT_OC_DICT_COLON, // ObjC: colon in dictionary constant: "KEY: VALUE"
- CT_OC_SEL, // ObjC: @selector
- CT_OC_SEL_NAME, // ObjC: selector name
- CT_OC_BLOCK, // ObjC: block parent type.
- CT_OC_BLOCK_ARG, // ObjC: block arguments parent type.
- CT_OC_BLOCK_TYPE, // ObjC: block declaration parent type, e.g. mainly the '(^block_t)' in 'void (^block_t)(int arg);'
- CT_OC_BLOCK_EXPR, // ObjC: block expression with arg: '^(int arg) { arg++; };' and without (called a block literal): '^{ ... };'
- CT_OC_BLOCK_CARET, // ObjC: block pointer caret: '^'
- CT_OC_AT, // ObjC: boxed constants using '@'
- CT_OC_PROPERTY_ATTR, // ObjC: property attribute (strong, weak, readonly, etc...)
-
- // start PP types
- CT_PP_DEFINE, // #define
- CT_PP_DEFINED, // #if defined
- CT_PP_INCLUDE, // #include
- CT_PP_IF, // #if, #ifdef, or #ifndef
- CT_PP_ELSE, // #else or #elif
- CT_PP_ENDIF, // #endif
- CT_PP_ASSERT,
- CT_PP_EMIT,
- CT_PP_ENDASM, // end of assembly code section
- CT_PP_ENDINPUT,
- CT_PP_ERROR,
- CT_PP_FILE,
- CT_PP_LINE,
- CT_PP_SECTION,
- CT_PP_ASM, // start of assembly code section
- CT_PP_UNDEF,
- CT_PP_PROPERTY,
-
- CT_PP_BODYCHUNK, // everything after this gets put in CT_PREPROC_BODY
-
- CT_PP_PRAGMA, // pragma's should not be altered
- CT_PP_REGION, // C# #region
- CT_PP_ENDREGION, // C# #endregion
- CT_PP_REGION_INDENT, // Dummy token for indenting a C# #region
- CT_PP_IF_INDENT, // Dummy token for indenting a #if stuff
- CT_PP_IGNORE, // Dummy token for ignoring a certain preprocessor directive (do not do any processing)
- CT_PP_OTHER, // #line, #error, #pragma, etc
- // end PP types
-
- // PAWN stuff
- CT_CHAR,
- CT_DEFINED,
- CT_FORWARD,
- CT_NATIVE,
- CT_STATE,
- CT_STOCK,
- CT_TAGOF,
- CT_DOT,
- CT_TAG,
- CT_TAG_COLON,
-
- // C-sharp
- CT_LOCK, // lock/unlock
- CT_AS,
- CT_IN, // "foreach (T c in x)" or "foo(in char c)" or "in { ..."
- CT_BRACED, // simple braced items: try {}
- CT_THIS, // may turn into CT_PBRACED if followed by a '('
- CT_BASE, // C# thingy
- CT_DEFAULT, // may be changed into CT_CASE
- CT_GETSET, // must be followed by CT_BRACE_OPEN or reverts to CT_WORD
- CT_GETSET_EMPTY, // get/set/add/remove followed by a semicolon
- CT_CONCAT, // The '~' between strings
- CT_CS_SQ_STMT, // '[assembly: xxx]' or '[Attribute()]' or '[Help()]', etc
- CT_CS_SQ_COLON, // the colon in one of those [] thingys
- CT_CS_PROPERTY, // word or ']' followed by '{'
-
- // Embedded SQL - always terminated with a semicolon
- CT_SQL_EXEC, // the 'EXEC' in 'EXEC SQL ...'
- CT_SQL_BEGIN, // the 'BEGINN' in 'EXEC SQL BEGIN ...'
- CT_SQL_END, // the 'END' in 'EXEC SQL END ...'
- CT_SQL_WORD, // CT_WORDs in the 'EXEC SQL' statement
- CT_SQL_ASSIGN, // :=
-
- // Vala stuff
- CT_CONSTRUCT, // braced "construct { }" or qualifier "(construct int x)"
- CT_LAMBDA,
-
- // Java
- CT_ASSERT, // assert EXP1 [ : EXP2 ] ;
- CT_ANNOTATION, // @interface or @something(...)
- CT_FOR_COLON, // colon in "for ( TYPE var: EXPR ) { ... }"
- CT_DOUBLE_BRACE, // parent for double brace
-
- /* Clang */
- CT_CNG_HASINC, // Clang: __has_include()
- CT_CNG_HASINCN, // Clang: __has_include_next()
-
- // extensions for Qt macros
- CT_Q_EMIT, // guy 2015-10-16
- CT_Q_FOREACH, // guy 2015-09-23
- CT_Q_FOREVER, // guy 2015-10-18
- CT_Q_GADGET, // guy 2016-05-04
- CT_Q_OBJECT, // guy 2015-10-16
-
- // Machine Modes
- CT_MODE, // guy 2016-03-11
- CT_DI, // guy 2016-03-11
- CT_HI, // guy 2016-03-11
- CT_QI, // guy 2016-03-11
- CT_SI, // guy 2016-03-11
- CT_NOTHROW, // guy 2016-03-11
- CT_WORD_, // guy 2016-03-11
-
- CT_TOKEN_COUNT_ // NOTE: Keep this the last entry because it's used as a counter.
-};
-
-#endif /* TOKEN_ENUM_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize.cpp
deleted file mode 100644
index 0aeafe63..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize.cpp
+++ /dev/null
@@ -1,2881 +0,0 @@
-/**
- * @file tokenize.cpp
- * This file breaks up the text stream into tokens or chunks.
- *
- * Each routine needs to set pc.len and pc.type.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "tokenize.h"
-
-#include "keywords.h"
-#include "prototypes.h"
-#include "punctuators.h"
-#include "unc_ctype.h"
-
-#include <regex>
-#include <stack>
-
-
-#define LE_COUNT(x) cpd.le_counts[static_cast<size_t>(LE_ ## x)]
-
-constexpr static auto LCURRENT = LTOK;
-
-using namespace std;
-using namespace uncrustify;
-
-
-struct tok_info
-{
- tok_info()
- : last_ch(0)
- , idx(0)
- , row(1)
- , col(1)
- {
- }
-
- size_t last_ch;
- size_t idx;
- size_t row;
- size_t col;
-};
-
-
-struct tok_ctx
-{
- tok_ctx(const deque<int> &d)
- : data(d)
- {
- }
-
-
- //! save before trying to parse something that may fail
- void save()
- {
- save(s);
- }
-
-
- void save(tok_info &info)
- {
- info = c;
- }
-
-
- //! restore previous saved state
- void restore()
- {
- restore(s);
- }
-
-
- void restore(const tok_info &info)
- {
- c = info;
- }
-
-
- bool more()
- {
- return(c.idx < data.size());
- }
-
-
- size_t peek()
- {
- return(more() ? data[c.idx] : 0);
- }
-
-
- size_t peek(size_t idx)
- {
- idx += c.idx;
- return((idx < data.size()) ? data[idx] : 0);
- }
-
-
- size_t get()
- {
- if (more())
- {
- size_t ch = data[c.idx++];
-
- switch (ch)
- {
- case '\t':
- log_rule_B("input_tab_size");
- c.col = calc_next_tab_column(c.col, options::input_tab_size());
- break;
-
- case '\n':
-
- if (c.last_ch != '\r')
- {
- c.row++;
- c.col = 1;
- }
- break;
-
- case '\r':
- c.row++;
- c.col = 1;
- break;
-
- default:
- c.col++;
- break;
- }
- c.last_ch = ch;
- return(ch);
- }
- return(0);
- }
-
-
- bool expect(size_t ch)
- {
- if (peek() == ch)
- {
- get();
- return(true);
- }
- return(false);
- }
-
-
- const deque<int> &data;
- tok_info c; //! current
- tok_info s; //! saved
-};
-
-
-/**
- * Count the number of characters in a quoted string.
- * The next bit of text starts with a quote char " or ' or <.
- * Count the number of characters until the matching character.
- *
- * @param pc The structure to update, str is an input.
- *
- * @return Whether a string was parsed
- */
-static bool parse_string(tok_ctx &ctx, Chunk &pc, size_t quote_idx, bool allow_escape);
-
-
-/**
- * Literal string, ends with single "
- * Two "" don't end the string.
- *
- * @param pc The structure to update, str is an input.
- *
- * @return Whether a string was parsed
- */
-static bool parse_cs_string(tok_ctx &ctx, Chunk &pc);
-
-
-/**
- * VALA verbatim string, ends with three quotes (""")
- *
- * @param pc The structure to update, str is an input.
- */
-static void parse_verbatim_string(tok_ctx &ctx, Chunk &pc);
-
-
-static bool tag_compare(const deque<int> &d, size_t a_idx, size_t b_idx, size_t len);
-
-
-/**
- * Parses a C++0x 'R' string. R"( xxx )" R"tag( )tag" u8R"(x)" uR"(x)"
- * Newlines may be in the string.
- *
- * @param pc structure to update, str is an input.
- */
-static bool parse_cr_string(tok_ctx &ctx, Chunk &pc, size_t q_idx);
-
-
-/**
- * Count the number of whitespace characters.
- *
- * @param pc The structure to update, str is an input.
- *
- * @return Whether whitespace was parsed
- */
-static bool parse_whitespace(tok_ctx &ctx, Chunk &pc);
-
-
-/**
- * Called when we hit a backslash.
- * If there is nothing but whitespace until the newline, then this is a
- * backslash newline
- *
- * @param pc structure to update, str is an input
- */
-static bool parse_bs_newline(tok_ctx &ctx, Chunk &pc);
-
-
-/**
- * Parses any number of tab or space chars followed by a newline.
- * Does not change pc.len if a newline isn't found.
- * This is not the same as parse_whitespace() because it only consumes until
- * a single newline is encountered.
- */
-static bool parse_newline(tok_ctx &ctx);
-
-
-/**
- * PAWN #define is different than C/C++.
- * #define PATTERN REPLACEMENT_TEXT
- * The PATTERN may not contain a space or '[' or ']'.
- * A generic whitespace check should be good enough.
- * Do not change the pattern.
- *
- * @param pc structure to update, str is an input
- */
-static void parse_pawn_pattern(tok_ctx &ctx, Chunk &pc, E_Token tt);
-
-
-static bool parse_ignored(tok_ctx &ctx, Chunk &pc);
-
-
-/**
- * Skips the next bit of whatever and returns the type of block.
- *
- * pc.str is the input text.
- * pc.len in the output length.
- * pc.type is the output type
- * pc.column is output column
- *
- * @param pc The structure to update, str is an input.
- * @param prev_pc The previous structure
- *
- * @return true/false - whether anything was parsed
- */
-static bool parse_next(tok_ctx &ctx, Chunk &pc, const Chunk *prev_pc);
-
-
-/**
- * Parses all legal D string constants.
- *
- * Quoted strings:
- * r"Wysiwyg" # WYSIWYG string
- * x"hexstring" # Hexadecimal array
- * `Wysiwyg` # WYSIWYG string
- * 'char' # single character
- * "reg_string" # regular string
- *
- * Non-quoted strings:
- * \x12 # 1-byte hex constant
- * \u1234 # 2-byte hex constant
- * \U12345678 # 4-byte hex constant
- * \123 # octal constant
- * \&amp; # named entity
- * \n # single character
- *
- * @param pc The structure to update, str is an input.
- *
- * @return Whether a string was parsed
- */
-static bool d_parse_string(tok_ctx &ctx, Chunk &pc);
-
-
-/**
- * Figure of the length of the comment at text.
- * The next bit of text starts with a '/', so it might be a comment.
- * There are three types of comments:
- * - C comments that start with '/ *' and end with '* /'
- * - C++ comments that start with //
- * - D nestable comments '/+' '+/'
- *
- * @param pc The structure to update, str is an input.
- *
- * @return Whether a comment was parsed
- */
-static bool parse_comment(tok_ctx &ctx, Chunk &pc);
-
-
-/**
- * Figure of the length of the code placeholder at text, if present.
- * This is only for Xcode which sometimes inserts temporary code placeholder chunks, which in plaintext <#look like this#>.
- *
- * @param pc The structure to update, str is an input.
- *
- * @return Whether a placeholder was parsed.
- */
-static bool parse_code_placeholder(tok_ctx &ctx, Chunk &pc);
-
-
-/**
- * Parse any attached suffix, which may be a user-defined literal suffix.
- * If for a string, explicitly exclude common format and scan specifiers, ie,
- * PRIx32 and SCNx64.
- */
-static void parse_suffix(tok_ctx &ctx, Chunk &pc, bool forstring);
-
-
-//! check if a symbol holds a boolean value
-static bool is_bin(int ch);
-static bool is_bin_(int ch);
-
-
-//! check if a symbol holds a octal value
-static bool is_oct(int ch);
-static bool is_oct_(int ch);
-
-
-//! check if a symbol holds a decimal value;
-static bool is_dec(int ch);
-static bool is_dec_(int ch);
-
-
-//! check if a symbol holds a hexadecimal value
-static bool is_hex(int ch);
-static bool is_hex_(int ch);
-
-
-/**
- * Count the number of characters in the number.
- * The next bit of text starts with a number (0-9 or '.'), so it is a number.
- * Count the number of characters in the number.
- *
- * This should cover all number formats for all languages.
- * Note that this is not a strict parser. It will happily parse numbers in
- * an invalid format.
- *
- * For example, only D allows underscores in the numbers, but they are
- * allowed in all formats.
- *
- * @param[in,out] pc The structure to update, str is an input.
- *
- * @return Whether a number was parsed
- */
-static bool parse_number(tok_ctx &ctx, Chunk &pc);
-
-
-static bool d_parse_string(tok_ctx &ctx, Chunk &pc)
-{
- size_t ch = ctx.peek();
-
- if ( ch == '"'
- || ch == '\'')
- {
- return(parse_string(ctx, pc, 0, true));
- }
-
- if (ch == '`')
- {
- return(parse_string(ctx, pc, 0, false));
- }
-
- if ( ( ch == 'r'
- || ch == 'x')
- && ctx.peek(1) == '"')
- {
- return(parse_string(ctx, pc, 1, false));
- }
-
- if (ch != '\\')
- {
- return(false);
- }
- ctx.save();
- int cnt;
-
- pc.Str().clear();
-
- while (ctx.peek() == '\\')
- {
- pc.Str().append(ctx.get());
-
- // Check for end of file
- switch (ctx.peek())
- {
- case 'x': // \x HexDigit HexDigit
- cnt = 3;
-
- while (cnt--)
- {
- pc.Str().append(ctx.get());
- }
- break;
-
- case 'u': // \u HexDigit (x4)
- cnt = 5;
-
- while (cnt--)
- {
- pc.Str().append(ctx.get());
- }
- break;
-
- case 'U': // \U HexDigit (x8)
- cnt = 9;
-
- while (cnt--)
- {
- pc.Str().append(ctx.get());
- }
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- // handle up to 3 octal digits
- pc.Str().append(ctx.get());
- ch = ctx.peek();
-
- if ( (ch >= '0')
- && (ch <= '7'))
- {
- pc.Str().append(ctx.get());
- ch = ctx.peek();
-
- if ( (ch >= '0')
- && (ch <= '7'))
- {
- pc.Str().append(ctx.get());
- }
- }
- break;
-
- case '&':
- // \& NamedCharacterEntity ;
- pc.Str().append(ctx.get());
-
- while (unc_isalpha(ctx.peek()))
- {
- pc.Str().append(ctx.get());
- }
-
- if (ctx.peek() == ';')
- {
- pc.Str().append(ctx.get());
- }
- break;
-
- default:
- // Everything else is a single character
- pc.Str().append(ctx.get());
- break;
- } // switch
- }
-
- if (pc.GetStr().size() < 1)
- {
- ctx.restore();
- return(false);
- }
- pc.SetType(CT_STRING);
- return(true);
-} // d_parse_string
-
-
-#if 0
-
-
-//! A string-in-string search. Like strstr() with a haystack length.
-static const char *str_search(const char *needle, const char *haystack, int haystack_len)
-{
- int needle_len = strlen(needle);
-
- while (haystack_len-- >= needle_len)
- {
- if (memcmp(needle, haystack, needle_len) == 0)
- {
- return(haystack);
- }
- haystack++;
- }
- return(NULL);
-}
-#endif
-
-
-static bool parse_comment(tok_ctx &ctx, Chunk &pc)
-{
- bool is_d = language_is_set(LANG_D);
- bool is_cs = language_is_set(LANG_CS);
- size_t d_level = 0;
-
- // does this start with '/ /' or '/ *' or '/ +' (d)
- if ( (ctx.peek() != '/')
- || ( (ctx.peek(1) != '*')
- && (ctx.peek(1) != '/')
- && ( (ctx.peek(1) != '+')
- || !is_d)))
- {
- return(false);
- }
- ctx.save();
-
- // account for opening two chars
- pc.Str() = ctx.get(); // opening '/'
- size_t ch = ctx.get();
-
- pc.Str().append(ch); // second char
-
- if (ch == '/')
- {
- pc.SetType(CT_COMMENT_CPP);
-
- while (true)
- {
- int bs_cnt = 0;
-
- while (ctx.more())
- {
- ch = ctx.peek();
-
- if ( (ch == '\r')
- || (ch == '\n'))
- {
- break;
- }
-
- if ( (ch == '\\')
- && !is_cs) // backslashes aren't special in comments in C#
- {
- bs_cnt++;
- }
- else
- {
- bs_cnt = 0;
- }
- pc.Str().append(ctx.get());
- }
-
- /*
- * If we hit an odd number of backslashes right before the newline,
- * then we keep going.
- */
- if ( ((bs_cnt & 1) == 0)
- || !ctx.more())
- {
- break;
- }
-
- if (ctx.peek() == '\r')
- {
- pc.Str().append(ctx.get());
- }
-
- if (ctx.peek() == '\n')
- {
- pc.Str().append(ctx.get());
- }
- pc.SetNlCount(pc.GetNlCount() + 1);
- cpd.did_newline = true;
- }
- }
- else if (!ctx.more())
- {
- // unexpected end of file
- ctx.restore();
- return(false);
- }
- else if (ch == '+')
- {
- pc.SetType(CT_COMMENT);
- d_level++;
-
- while ( d_level > 0
- && ctx.more())
- {
- if ( (ctx.peek() == '+')
- && (ctx.peek(1) == '/'))
- {
- pc.Str().append(ctx.get()); // store the '+'
- pc.Str().append(ctx.get()); // store the '/'
- d_level--;
- continue;
- }
-
- if ( (ctx.peek() == '/')
- && (ctx.peek(1) == '+'))
- {
- pc.Str().append(ctx.get()); // store the '/'
- pc.Str().append(ctx.get()); // store the '+'
- d_level++;
- continue;
- }
- ch = ctx.get();
- pc.Str().append(ch);
-
- if ( (ch == '\n')
- || (ch == '\r'))
- {
- pc.SetType(CT_COMMENT_MULTI);
- pc.SetNlCount(pc.GetNlCount() + 1);
-
- if (ch == '\r')
- {
- if (ctx.peek() == '\n')
- {
- ++LE_COUNT(CRLF);
- pc.Str().append(ctx.get()); // store the '\n'
- }
- else
- {
- ++LE_COUNT(CR);
- }
- }
- else
- {
- ++LE_COUNT(LF);
- }
- }
- }
- }
- else // must be '/ *'
- {
- pc.SetType(CT_COMMENT);
-
- while (ctx.more())
- {
- if ( (ctx.peek() == '*')
- && (ctx.peek(1) == '/'))
- {
- pc.Str().append(ctx.get()); // store the '*'
- pc.Str().append(ctx.get()); // store the '/'
-
- tok_info ss;
- ctx.save(ss);
- size_t oldsize = pc.GetStr().size();
-
- // If there is another C comment right after this one, combine them
- while ( (ctx.peek() == ' ')
- || (ctx.peek() == '\t'))
- {
- pc.Str().append(ctx.get());
- }
-
- if ( (ctx.peek() != '/')
- || (ctx.peek(1) != '*'))
- {
- // undo the attempt to join
- ctx.restore(ss);
- pc.Str().resize(oldsize);
- break;
- }
- }
- ch = ctx.get();
- pc.Str().append(ch);
-
- if ( (ch == '\n')
- || (ch == '\r'))
- {
- pc.SetType(CT_COMMENT_MULTI);
- pc.SetNlCount(pc.GetNlCount() + 1);
-
- if (ch == '\r')
- {
- if (ctx.peek() == '\n')
- {
- ++LE_COUNT(CRLF);
- pc.Str().append(ctx.get()); // store the '\n'
- }
- else
- {
- ++LE_COUNT(CR);
- }
- }
- else
- {
- ++LE_COUNT(LF);
- }
- }
- }
- }
-
- if (cpd.unc_off)
- {
- bool found_enable_marker = (find_enable_processing_comment_marker(pc.GetStr()) >= 0);
-
- if (found_enable_marker)
- {
- const auto &ontext = options::enable_processing_cmt();
-
- LOG_FMT(LBCTRL, "%s(%d): Found '%s' on line %zu\n",
- __func__, __LINE__, ontext.c_str(), pc.GetOrigLine());
- cpd.unc_off = false;
- }
- }
- else
- {
- auto position_disable_processing_cmt = find_disable_processing_comment_marker(pc.GetStr());
- bool found_disable_marker = (position_disable_processing_cmt >= 0);
-
- if (found_disable_marker)
- {
- /**
- * the user may wish to disable processing part of a multiline comment,
- * in which case we'll handle at a late time. Check to see if processing
- * is re-enabled elsewhere in this comment
- */
- auto position_enable_processing_cmt = find_enable_processing_comment_marker(pc.GetStr());
-
- if (position_enable_processing_cmt < position_disable_processing_cmt)
- {
- const auto &offtext = options::disable_processing_cmt();
-
- LOG_FMT(LBCTRL, "%s(%d): Found '%s' on line %zu\n",
- __func__, __LINE__, offtext.c_str(), pc.GetOrigLine());
- cpd.unc_off = true;
- // Issue #842
- cpd.unc_off_used = true;
- }
- }
- }
- return(true);
-} // parse_comment
-
-
-static bool parse_code_placeholder(tok_ctx &ctx, Chunk &pc)
-{
- if ( (ctx.peek() != '<')
- || (ctx.peek(1) != '#'))
- {
- return(false);
- }
- ctx.save();
-
- // account for opening two chars '<#'
- pc.Str() = ctx.get();
- pc.Str().append(ctx.get());
-
- // grab everything until '#>', fail if not found.
- size_t last1 = 0;
-
- while (ctx.more())
- {
- size_t last2 = last1;
- last1 = ctx.get();
- pc.Str().append(last1);
-
- if ( (last2 == '#')
- && (last1 == '>'))
- {
- pc.SetType(CT_WORD);
- return(true);
- }
- }
- ctx.restore();
- return(false);
-}
-
-
-static void parse_suffix(tok_ctx &ctx, Chunk &pc, bool forstring = false)
-{
- if (CharTable::IsKw1(ctx.peek()))
- {
- size_t slen = 0;
- size_t oldsize = pc.GetStr().size();
-
- // don't add the suffix if we see L" or L' or S"
- size_t p1 = ctx.peek();
- size_t p2 = ctx.peek(1);
-
- if ( forstring
- && ( ( (p1 == 'L')
- && ( (p2 == '"')
- || (p2 == '\'')))
- || ( (p1 == 'S')
- && (p2 == '"'))))
- {
- return;
- }
- tok_info ss;
- ctx.save(ss);
-
- while ( ctx.more()
- && CharTable::IsKw2(ctx.peek()))
- {
- slen++;
- pc.Str().append(ctx.get());
- }
-
- if ( forstring
- && slen >= 4
- && ( pc.GetStr().startswith("PRI", oldsize)
- || pc.GetStr().startswith("SCN", oldsize)))
- {
- ctx.restore(ss);
- pc.Str().resize(oldsize);
- }
- }
-}
-
-
-static bool is_bin(int ch)
-{
- return( (ch == '0')
- || (ch == '1'));
-}
-
-
-static bool is_bin_(int ch)
-{
- return( is_bin(ch)
- || ch == '_'
- || ch == '\'');
-}
-
-
-static bool is_oct(int ch)
-{
- return( (ch >= '0')
- && (ch <= '7'));
-}
-
-
-static bool is_oct_(int ch)
-{
- return( is_oct(ch)
- || ch == '_'
- || ch == '\'');
-}
-
-
-static bool is_dec(int ch)
-{
- return( (ch >= '0')
- && (ch <= '9'));
-}
-
-
-static bool is_dec_(int ch)
-{
- // number separators: JAVA: "_", C++14: "'"
- return( is_dec(ch)
- || (ch == '_')
- || (ch == '\''));
-}
-
-
-static bool is_hex(int ch)
-{
- return( ( (ch >= '0')
- && (ch <= '9'))
- || ( (ch >= 'a')
- && (ch <= 'f'))
- || ( (ch >= 'A')
- && (ch <= 'F')));
-}
-
-
-static bool is_hex_(int ch)
-{
- return( is_hex(ch)
- || ch == '_'
- || ch == '\'');
-}
-
-
-static bool parse_number(tok_ctx &ctx, Chunk &pc)
-{
- /*
- * A number must start with a digit or a dot, followed by a digit
- * (signs handled elsewhere)
- */
- if ( !is_dec(ctx.peek())
- && ( (ctx.peek() != '.')
- || !is_dec(ctx.peek(1))))
- {
- return(false);
- }
- bool is_float = (ctx.peek() == '.');
-
- if ( is_float
- && (ctx.peek(1) == '.')) // make sure it isn't '..'
- {
- return(false);
- }
- /*
- * Check for Hex, Octal, or Binary
- * Note that only D, C++14 and Pawn support binary
- * Fixes the issue # 1591
- * In c# the numbers starting with 0 are not treated as octal numbers.
- */
- bool did_hex = false;
-
- if ( ctx.peek() == '0'
- && !language_is_set(LANG_CS))
- {
- size_t ch;
- Chunk pc_temp;
-
- pc.Str().append(ctx.get()); // store the '0'
- pc_temp.Str().append('0');
-
- // MS constant might have an "h" at the end. Look for it
- ctx.save();
-
- while ( ctx.more()
- && CharTable::IsKw2(ctx.peek()))
- {
- ch = ctx.get();
- pc_temp.Str().append(ch);
- }
- ch = pc_temp.GetStr()[pc_temp.Len() - 1];
- ctx.restore();
- LOG_FMT(LGUY, "%s(%d): pc_temp:%s\n", __func__, __LINE__, pc_temp.Text());
-
- if (ch == 'h') // TODO can we combine this in analyze_character
- {
- // we have an MS hexadecimal number with "h" at the end
- LOG_FMT(LGUY, "%s(%d): MS hexadecimal number\n", __func__, __LINE__);
- did_hex = true;
-
- do
- {
- pc.Str().append(ctx.get()); // store the rest
- } while (is_hex_(ctx.peek()));
-
- pc.Str().append(ctx.get()); // store the h
- LOG_FMT(LGUY, "%s(%d): pc:%s\n", __func__, __LINE__, pc.Text());
- }
- else
- {
- switch (unc_toupper(ctx.peek()))
- {
- case 'X': // hex
- did_hex = true;
-
- do
- {
- pc.Str().append(ctx.get()); // store the 'x' and then the rest
- } while (is_hex_(ctx.peek()));
-
- break;
-
- case 'B': // binary
-
- do
- {
- pc.Str().append(ctx.get()); // store the 'b' and then the rest
- } while (is_bin_(ctx.peek()));
-
- break;
-
- case '0': // octal or decimal
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
-
- do
- {
- pc.Str().append(ctx.get());
- } while (is_oct_(ctx.peek()));
-
- break;
-
- default:
- // either just 0 or 0.1 or 0UL, etc
- break;
- } // switch
- }
- }
- else
- {
- // Regular int or float
- while (is_dec_(ctx.peek()))
- {
- pc.Str().append(ctx.get());
- }
- }
-
- // Check if we stopped on a decimal point & make sure it isn't '..'
- if ( (ctx.peek() == '.')
- && (ctx.peek(1) != '.'))
- {
- // Issue #1265, 5.clamp()
- tok_info ss;
- ctx.save(ss);
-
- while ( ctx.more()
- && CharTable::IsKw2(ctx.peek(1)))
- {
- // skip characters to check for paren open
- ctx.get();
- }
-
- if (ctx.peek(1) == '(')
- {
- ctx.restore(ss);
- pc.SetType(CT_NUMBER);
- return(true);
- }
- else
- {
- ctx.restore(ss);
- }
- pc.Str().append(ctx.get());
- is_float = true;
-
- if (did_hex)
- {
- while (is_hex_(ctx.peek()))
- {
- pc.Str().append(ctx.get());
- }
- }
- else
- {
- while (is_dec_(ctx.peek()))
- {
- pc.Str().append(ctx.get());
- }
- }
- }
- /*
- * Check exponent
- * Valid exponents per language (not that it matters):
- * C/C++/D/Java: eEpP
- * C#/Pawn: eE
- */
- size_t tmp = unc_toupper(ctx.peek());
-
- if ( (tmp == 'E')
- || (tmp == 'P'))
- {
- is_float = true;
- pc.Str().append(ctx.get());
-
- if ( (ctx.peek() == '+')
- || (ctx.peek() == '-'))
- {
- pc.Str().append(ctx.get());
- }
-
- while (is_dec_(ctx.peek()))
- {
- pc.Str().append(ctx.get());
- }
- }
-
- /*
- * Check the suffixes
- * Valid suffixes per language (not that it matters):
- * Integer Float
- * C/C++: uUlL64 lLfF
- * C#: uUlL fFdDMm
- * D: uUL ifFL
- * Java: lL fFdD
- * Pawn: (none) (none)
- *
- * Note that i, f, d, and m only appear in floats.
- */
- while (1)
- {
- size_t tmp2 = unc_toupper(ctx.peek());
-
- if ( (tmp2 == 'I')
- || (tmp2 == 'F')
- || (tmp2 == 'D')
- || (tmp2 == 'M'))
- {
- is_float = true;
- }
- else if ( (tmp2 != 'L')
- && (tmp2 != 'U'))
- {
- break;
- }
- pc.Str().append(ctx.get());
- }
-
- // skip the Microsoft-specific '32' and '64' suffix
- if ( ( (ctx.peek() == '3')
- && (ctx.peek(1) == '2'))
- || ( (ctx.peek() == '6')
- && (ctx.peek(1) == '4')))
- {
- pc.Str().append(ctx.get());
- pc.Str().append(ctx.get());
- }
- pc.SetType(is_float ? CT_NUMBER_FP : CT_NUMBER);
-
- /*
- * If there is anything left, then we are probably dealing with garbage or
- * some sick macro junk. Eat it.
- */
- parse_suffix(ctx, pc);
-
- return(true);
-} // parse_number
-
-
-static bool parse_string(tok_ctx &ctx, Chunk &pc, size_t quote_idx, bool allow_escape)
-{
- log_rule_B("string_escape_char");
- const size_t escape_char = options::string_escape_char();
-
- log_rule_B("string_escape_char2");
- const size_t escape_char2 = options::string_escape_char2();
-
- log_rule_B("string_replace_tab_chars");
- const bool should_escape_tabs = ( allow_escape
- && options::string_replace_tab_chars()
- && language_is_set(LANG_ALLC));
-
- pc.Str().clear();
-
- while (quote_idx-- > 0)
- {
- pc.Str().append(ctx.get());
- }
- pc.SetType(CT_STRING);
- const size_t termination_character = CharTable::Get(ctx.peek()) & 0xff;
-
- pc.Str().append(ctx.get()); // store the "
-
- bool escaped = false;
-
- while (ctx.more())
- {
- const size_t ch = ctx.get();
-
- // convert char 9 (\t) to chars \t
- if ( (ch == '\t')
- && should_escape_tabs)
- {
- const size_t lastcol = ctx.c.col - 1;
- ctx.c.col = lastcol + 2;
- pc.Str().append(escape_char);
- pc.Str().append('t');
- continue;
- }
- pc.Str().append(ch);
-
- if (ch == '\n')
- {
- pc.SetNlCount(pc.GetNlCount() + 1);
- pc.SetType(CT_STRING_MULTI);
- }
- else if ( ch == '\r'
- && ctx.peek() != '\n')
- {
- pc.Str().append(ctx.get());
- pc.SetNlCount(pc.GetNlCount() + 1);
- pc.SetType(CT_STRING_MULTI);
- }
-
- // if last char in prev loop was escaped the one in the current loop isn't
- if (escaped)
- {
- escaped = false;
- continue;
- }
-
- // see if the current char is a escape char
- if (allow_escape)
- {
- if (ch == escape_char)
- {
- escaped = (escape_char != 0);
- continue;
- }
-
- if ( ch == escape_char2
- && (ctx.peek() == termination_character))
- {
- escaped = allow_escape;
- continue;
- }
- }
-
- if (ch == termination_character)
- {
- break;
- }
- }
- parse_suffix(ctx, pc, true);
- return(true);
-} // parse_string
-
-enum cs_string_t
-{
- CS_STRING_NONE = 0,
- CS_STRING_STRING = 1 << 0, // is any kind of string
- CS_STRING_VERBATIM = 1 << 1, // @"" style string
- CS_STRING_INTERPOLATED = 1 << 2, // $"" or $@"" style string
-};
-
-static cs_string_t operator|=(cs_string_t &value, cs_string_t other)
-{
- return(value = static_cast<cs_string_t>(value | other));
-}
-
-
-static cs_string_t parse_cs_string_start(tok_ctx &ctx, Chunk &pc)
-{
- cs_string_t stringType = CS_STRING_NONE;
- int offset = 0;
-
- if (ctx.peek(offset) == '$')
- {
- stringType |= CS_STRING_INTERPOLATED;
- ++offset;
- }
-
- if (ctx.peek(offset) == '@')
- {
- stringType |= CS_STRING_VERBATIM;
- ++offset;
- }
-
- if (ctx.peek(offset) == '"')
- {
- stringType |= CS_STRING_STRING;
-
- pc.SetType(CT_STRING);
-
- for (int i = 0; i <= offset; ++i)
- {
- pc.Str().append(ctx.get());
- }
- }
- else
- {
- stringType = CS_STRING_NONE;
- }
- return(stringType);
-} // parse_cs_string_start
-
-
-struct CsStringParseState
-{
- cs_string_t type;
- int braceDepth;
-
-
- CsStringParseState(cs_string_t stringType)
- {
- type = stringType;
- braceDepth = 0;
- }
-};
-
-
-/**
- * C# strings are complex enough (mostly due to interpolation and nesting) that they need a custom parser.
- */
-static bool parse_cs_string(tok_ctx &ctx, Chunk &pc)
-{
- cs_string_t stringType = parse_cs_string_start(ctx, pc);
-
- if (stringType == 0)
- {
- return(false);
- }
- // an interpolated string can contain {expressions}, which can contain $"strings", which in turn
- // can contain {expressions}, so we must track both as they are interleaved, in order to properly
- // parse the outermost string.
-
- std::stack<CsStringParseState> parseState; // each entry is a nested string
-
- parseState.push(CsStringParseState(stringType));
-
- log_rule_B("string_replace_tab_chars");
- bool should_escape_tabs = options::string_replace_tab_chars();
-
- while (ctx.more())
- {
- if (parseState.top().braceDepth > 0)
- {
- // all we can do when in an expr is look for expr close with }, or a new string opening. must do this first
- // so we can peek and potentially consume chars for new string openings, before the ch=get() happens later,
- // which is needed for newline processing.
-
- if (ctx.peek() == '}')
- {
- pc.Str().append(ctx.get());
-
- if (ctx.peek() == '}')
- {
- pc.Str().append(ctx.get()); // in interpolated string, `}}` is escape'd `}`
- }
- else
- {
- --parseState.top().braceDepth;
- }
- continue;
- }
- stringType = parse_cs_string_start(ctx, pc);
-
- if (stringType)
- {
- parseState.push(CsStringParseState(stringType));
- continue;
- }
- }
- int lastcol = ctx.c.col;
- int ch = ctx.get();
-
- pc.Str().append(ch);
-
- if (ch == '\n')
- {
- pc.SetType(CT_STRING_MULTI);
- pc.SetNlCount(pc.GetNlCount() + 1);
- }
- else if (ch == '\r')
- {
- pc.SetType(CT_STRING_MULTI);
- }
- else if (parseState.top().braceDepth > 0)
- {
- // do nothing. if we're in a brace, we only want the newline handling, and skip the rest.
- }
- else if ( (ch == '\t')
- && should_escape_tabs)
- {
- if (parseState.top().type & CS_STRING_VERBATIM)
- {
- if (!cpd.warned_unable_string_replace_tab_chars)
- {
- cpd.warned_unable_string_replace_tab_chars = true;
-
- log_rule_B("warn_level_tabs_found_in_verbatim_string_literals");
- log_sev_t warnlevel = (log_sev_t)options::warn_level_tabs_found_in_verbatim_string_literals();
-
- /*
- * a tab char can't be replaced with \\t because escapes don't
- * work in here-strings. best we can do is warn.
- */
- LOG_FMT(warnlevel, "%s(%d): %s: orig line is %zu, orig col is %zu, Detected non-replaceable tab char in literal string\n",
- __func__, __LINE__, cpd.filename.c_str(), pc.GetOrigLine(), pc.GetOrigCol());
- LOG_FMT(warnlevel, "%s(%d): Warning is given if doing tab-to-\\t replacement and we have found one in a C# verbatim string literal.\n",
- __func__, __LINE__);
-
- if (warnlevel < LWARN)
- {
- // TODO: replace the code ?? cpd.error_count++;
- }
- }
- }
- else
- {
- ctx.c.col = lastcol + 2;
- pc.Str().pop_back(); // remove \t
- pc.Str().append("\\t");
-
- continue;
- }
- }
- else if ( ch == '\\'
- && !(parseState.top().type & CS_STRING_VERBATIM))
- {
- // catch escaped quote in order to avoid ending string (but also must handle \\ to avoid accidental 'escape' seq of `\\"`)
- if ( ctx.peek() == '"'
- || ctx.peek() == '\\')
- {
- pc.Str().append(ctx.get());
- }
- }
- else if (ch == '"')
- {
- if ( (parseState.top().type & CS_STRING_VERBATIM)
- && (ctx.peek() == '"'))
- {
- // in verbatim string, `""` is escape'd `"`
- pc.Str().append(ctx.get());
- }
- else
- {
- // end of string
- parseState.pop();
-
- if (parseState.empty())
- {
- break;
- }
- }
- }
- else if (parseState.top().type & CS_STRING_INTERPOLATED)
- {
- if (ch == '{')
- {
- if (ctx.peek() == '{')
- {
- pc.Str().append(ctx.get()); // in interpolated string, `{{` is escape'd `{`
- }
- else
- {
- ++parseState.top().braceDepth;
- }
- }
- }
- }
- return(true);
-} // parse_cs_string
-
-
-static void parse_verbatim_string(tok_ctx &ctx, Chunk &pc)
-{
- pc.SetType(CT_STRING);
-
- // consume the initial """
- pc.Str() = ctx.get();
- pc.Str().append(ctx.get());
- pc.Str().append(ctx.get());
-
- // go until we hit a zero (end of file) or a """
- while (ctx.more())
- {
- size_t ch = ctx.get();
- pc.Str().append(ch);
-
- if ( (ch == '"')
- && (ctx.peek() == '"')
- && (ctx.peek(1) == '"'))
- {
- pc.Str().append(ctx.get());
- pc.Str().append(ctx.get());
- break;
- }
-
- if ( (ch == '\n')
- || (ch == '\r'))
- {
- pc.SetType(CT_STRING_MULTI);
- pc.SetNlCount(pc.GetNlCount() + 1);
- }
- }
-}
-
-
-static bool tag_compare(const deque<int> &d, size_t a_idx, size_t b_idx, size_t len)
-{
- if (a_idx != b_idx)
- {
- while (len-- > 0)
- {
- if (d[a_idx] != d[b_idx])
- {
- return(false);
- }
- }
- }
- return(true);
-}
-
-
-static bool parse_cr_string(tok_ctx &ctx, Chunk &pc, size_t q_idx)
-{
- size_t tag_idx = ctx.c.idx + q_idx + 1;
- size_t tag_len = 0;
-
- ctx.save();
-
- // Copy the prefix + " to the string
- pc.Str().clear();
- int cnt = q_idx + 1;
-
- while (cnt--)
- {
- pc.Str().append(ctx.get());
- }
-
- // Add the tag and get the length of the tag
- while ( ctx.more()
- && (ctx.peek() != '('))
- {
- tag_len++;
- pc.Str().append(ctx.get());
- }
-
- if (ctx.peek() != '(')
- {
- ctx.restore();
- return(false);
- }
- pc.SetType(CT_STRING);
-
- while (ctx.more())
- {
- if ( (ctx.peek() == ')')
- && (ctx.peek(tag_len + 1) == '"')
- && tag_compare(ctx.data, tag_idx, ctx.c.idx + 1, tag_len))
- {
- cnt = tag_len + 2; // for the )"
-
- while (cnt--)
- {
- pc.Str().append(ctx.get());
- }
- parse_suffix(ctx, pc);
- return(true);
- }
-
- if (ctx.peek() == '\n')
- {
- pc.Str().append(ctx.get());
- pc.SetNlCount(pc.GetNlCount() + 1);
- pc.SetType(CT_STRING_MULTI);
- }
- else
- {
- pc.Str().append(ctx.get());
- }
- }
- ctx.restore();
- return(false);
-} // parse_cr_string
-
-
-/**
- * Count the number of characters in a word.
- * The first character is already valid for a keyword
- *
- * @param pc The structure to update, str is an input.
- * @return Whether a word was parsed (always true)
- */
-static bool parse_word(tok_ctx &ctx, Chunk &pc, bool skipcheck)
-{
- static unc_text intr_txt("@interface");
-
- // The first character is already valid
- pc.Str().clear();
- pc.Str().append(ctx.get());
-
- while (ctx.more())
- {
- size_t ch = ctx.peek();
-
- if (CharTable::IsKw2(ch))
- {
- pc.Str().append(ctx.get());
- }
- else if ( (ch == '\\')
- && (unc_tolower(ctx.peek(1)) == 'u'))
- {
- pc.Str().append(ctx.get());
- pc.Str().append(ctx.get());
- skipcheck = true;
- }
- else
- {
- break;
- }
-
- // HACK: Non-ASCII character are only allowed in identifiers
- if (ch > 0x7f)
- {
- skipcheck = true;
- }
- }
- pc.SetType(CT_WORD);
-
- if (skipcheck)
- {
- return(true);
- }
-
- // Detect pre-processor functions now
- if ( cpd.in_preproc == CT_PP_DEFINE
- && cpd.preproc_ncnl_count == 1)
- {
- if (ctx.peek() == '(')
- {
- pc.SetType(CT_MACRO_FUNC);
- }
- else
- {
- pc.SetType(CT_MACRO);
-
- log_rule_B("pp_ignore_define_body");
-
- if (options::pp_ignore_define_body())
- {
- /*
- * We are setting the PP_IGNORE preproc state because the following
- * chunks are part of the macro body and will have to be ignored.
- */
- cpd.in_preproc = CT_PP_IGNORE;
- }
- }
- }
- else
- {
- // '@interface' is reserved, not an interface itself
- if ( language_is_set(LANG_JAVA)
- && pc.GetStr().startswith("@")
- && !pc.GetStr().equals(intr_txt))
- {
- pc.SetType(CT_ANNOTATION);
- }
- else
- {
- // Turn it into a keyword now
- // Issue #1460 will return "COMMENT_CPP"
- pc.SetType(find_keyword_type(pc.Text(), pc.GetStr().size()));
-
- /* Special pattern: if we're trying to redirect a preprocessor directive to PP_IGNORE,
- * then ensure we're actually part of a preprocessor before doing the swap, or we'll
- * end up with a function named 'define' as PP_IGNORE. This is necessary because with
- * the config 'set' feature, there's no way to do a pair of tokens as a word
- * substitution. */
- if ( pc.GetType() == CT_PP_IGNORE
- && !cpd.in_preproc)
- {
- pc.SetType(find_keyword_type(pc.Text(), pc.GetStr().size()));
- }
- else if (pc.GetType() == CT_COMMENT_CPP) // Issue #1460
- {
- size_t ch;
- bool is_cs = language_is_set(LANG_CS);
-
- // read until EOL
- while (true)
- {
- int bs_cnt = 0;
-
- while (ctx.more())
- {
- ch = ctx.peek();
-
- if ( (ch == '\r')
- || (ch == '\n'))
- {
- break;
- }
-
- if ( (ch == '\\')
- && !is_cs) // backslashes aren't special in comments in C#
- {
- bs_cnt++;
- }
- else
- {
- bs_cnt = 0;
- }
- pc.Str().append(ctx.get());
- }
-
- /*
- * If we hit an odd number of backslashes right before the newline,
- * then we keep going.
- */
- if ( ((bs_cnt & 1) == 0)
- || !ctx.more())
- {
- break;
- }
-
- if (ctx.peek() == '\r')
- {
- pc.Str().append(ctx.get());
- }
-
- if (ctx.peek() == '\n')
- {
- pc.Str().append(ctx.get());
- }
- pc.SetNlCount(pc.GetNlCount() + 1);
- cpd.did_newline = true;
- }
- // Store off the end column
- pc.SetOrigColEnd(ctx.c.col);
- }
- }
- }
- return(true);
-} // parse_word
-
-
-static size_t parse_attribute_specifier_sequence(tok_ctx &ctx)
-{
- size_t nested = 0;
- size_t offset = 0;
- size_t parens = 0;
- auto ch1 = ctx.peek(offset++);
-
- while (ch1)
- {
- auto ch2 = ctx.peek(offset++);
-
- while ( ch2 == ' '
- || ch2 == '\n'
- || ch2 == '\r'
- || ch2 == '\t')
- {
- ch2 = ctx.peek(offset++);
- }
-
- if ( nested == 0
- && ch2 != '[')
- {
- break;
- }
-
- if (ch1 == '(')
- {
- ++parens;
- ch1 = ch2;
- continue;
- }
-
- if (ch1 == ')')
- {
- if (parens == 0)
- {
- break;
- }
- --parens;
- ch1 = ch2;
- continue;
- }
-
- if ( ch1 != '['
- && ch1 != ']')
- {
- ch1 = ch2;
- continue;
- }
-
- if (ch2 != ch1)
- {
- if (parens == 0)
- {
- break;
- }
- ch1 = ch2;
- continue;
- }
-
- if (ch1 == '[')
- {
- if ( nested != 0
- && parens == 0)
- {
- break;
- }
- ++nested;
- }
- else if (--nested == 0)
- {
- return(offset);
- }
- ch1 = ctx.peek(offset++);
- }
- return(0);
-} // parse_attribute_specifier_sequence
-
-
-static bool extract_attribute_specifier_sequence(tok_ctx &ctx, Chunk &pc, size_t length)
-{
- pc.Str().clear();
-
- while (length--)
- {
- pc.Str().append(ctx.get());
- }
- pc.SetType(CT_ATTRIBUTE);
- return(true);
-} // extract_attribute_specifier_sequence
-
-
-static bool parse_whitespace(tok_ctx &ctx, Chunk &pc)
-{
- size_t nl_count = 0;
- size_t ch = 0;
-
- // REVISIT: use a better whitespace detector?
- while ( ctx.more()
- && unc_isspace(ctx.peek()))
- {
- int lastcol = ctx.c.col;
- ch = ctx.get(); // throw away the whitespace char
-
- switch (ch)
- {
- case '\r':
-
- if (ctx.expect('\n'))
- {
- // CRLF ending
- ++LE_COUNT(CRLF);
- }
- else
- {
- // CR ending
- ++LE_COUNT(CR);
- }
- nl_count++;
- pc.SetOrigPrevSp(0);
- break;
-
- case '\n':
- // LF ending
- ++LE_COUNT(LF);
- nl_count++;
- pc.SetOrigPrevSp(0);
- break;
-
- case '\t':
- pc.SetOrigPrevSp(pc.GetOrigPrevSp() + ctx.c.col - lastcol);
- break;
-
- case ' ':
- pc.SetOrigPrevSp(pc.GetOrigPrevSp() + 1);
- break;
-
- default:
- break;
- }
- }
-
- if (ch != 0)
- {
- pc.Str().clear();
- pc.SetType(nl_count ? CT_NEWLINE : CT_WHITESPACE);
- pc.SetNlCount(nl_count);
- pc.SetAfterTab((ctx.c.last_ch == '\t'));
- return(true);
- }
- return(false);
-} // parse_whitespace
-
-
-static bool parse_bs_newline(tok_ctx &ctx, Chunk &pc)
-{
- ctx.save();
- ctx.get(); // skip the '\'
-
- size_t ch;
-
- while ( ctx.more()
- && unc_isspace(ch = ctx.peek()))
- {
- ctx.get();
-
- if ( (ch == '\r')
- || (ch == '\n'))
- {
- if (ch == '\r')
- {
- ctx.expect('\n');
- }
- pc.SetType(CT_NL_CONT);
- pc.Str() = "\\";
- pc.SetNlCount(1);
- return(true);
- }
- }
- ctx.restore();
- return(false);
-}
-
-
-static bool parse_newline(tok_ctx &ctx)
-{
- ctx.save();
-
- // Eat whitespace
- while ( (ctx.peek() == ' ')
- || (ctx.peek() == '\t'))
- {
- ctx.get();
- }
-
- if ( (ctx.peek() == '\r')
- || (ctx.peek() == '\n'))
- {
- if (!ctx.expect('\n'))
- {
- ctx.get();
- ctx.expect('\n');
- }
- return(true);
- }
- ctx.restore();
- return(false);
-}
-
-
-static void parse_pawn_pattern(tok_ctx &ctx, Chunk &pc, E_Token tt)
-{
- pc.Str().clear();
- pc.SetType(tt);
-
- while (!unc_isspace(ctx.peek()))
- {
- // end the pattern on an escaped newline
- if (ctx.peek() == '\\')
- {
- size_t ch = ctx.peek(1);
-
- if ( (ch == '\n')
- || (ch == '\r'))
- {
- break;
- }
- }
- pc.Str().append(ctx.get());
- }
-}
-
-
-static bool parse_off_newlines(tok_ctx &ctx, Chunk &pc)
-{
- size_t nl_count = 0;
-
- // Parse off newlines/blank lines
- while (parse_newline(ctx))
- {
- nl_count++;
- }
-
- if (nl_count > 0)
- {
- pc.SetNlCount(nl_count);
- pc.SetType(CT_NEWLINE);
- return(true);
- }
- return(false);
-}
-
-
-static bool parse_macro(tok_ctx &ctx, Chunk &pc, const Chunk *prev_pc)
-{
- if (parse_off_newlines(ctx, pc))
- {
- return(true);
- }
-
- if (parse_comment(ctx, pc)) // allow CT_COMMENT_MULTI within macros
- {
- return(true);
- }
- ctx.save();
- pc.Str().clear();
-
- if (prev_pc == nullptr)
- {
- return(false);
- }
- bool continued = ( prev_pc->Is(CT_NL_CONT)
- || prev_pc->Is(CT_COMMENT_MULTI));
-
- while (ctx.more())
- {
- size_t pk = ctx.peek(), pk1 = ctx.peek(1);
- bool nl = ( pk == '\n'
- || pk == '\r');
- bool nl_cont = ( pk == '\\'
- && ( pk1 == '\n'
- || pk1 == '\r'));
-
- if ( ( nl_cont
- || ( continued
- && nl))
- && pc.GetStr().size() > 0)
- {
- pc.SetType(CT_PP_IGNORE);
- return(true);
- }
- else if (nl)
- {
- break;
- }
- pc.Str().append(ctx.get());
- }
- pc.Str().clear();
- ctx.restore();
- return(false);
-} // parse_macro
-
-
-static bool parse_ignored(tok_ctx &ctx, Chunk &pc)
-{
- if (parse_off_newlines(ctx, pc))
- {
- return(true);
- }
- // See if the UO_enable_processing_cmt or #pragma endasm / #endasm text is on this line
- ctx.save();
- pc.Str().clear();
-
- while ( ctx.more()
- && (ctx.peek() != '\r')
- && (ctx.peek() != '\n'))
- {
- pc.Str().append(ctx.get());
- }
-
- if (pc.GetStr().size() == 0)
- {
- // end of file?
- return(false);
- }
-
- // HACK: turn on if we find '#endasm' or '#pragma' and 'endasm' separated by blanks
- if ( ( ( (pc.GetStr().find("#pragma ") >= 0)
- || (pc.GetStr().find("#pragma ") >= 0))
- && ( (pc.GetStr().find(" endasm") >= 0)
- || (pc.GetStr().find(" endasm") >= 0)))
- || (pc.GetStr().find("#endasm") >= 0))
- {
- cpd.unc_off = false;
- ctx.restore();
- pc.Str().clear();
- return(false);
- }
- // Note that we aren't actually making sure this is in a comment, yet
- log_rule_B("enable_processing_cmt");
- const auto &ontext = options::enable_processing_cmt();
-
- if (!ontext.empty())
- {
- bool found_enable_pattern = false;
-
- if ( ontext != UNCRUSTIFY_ON_TEXT
- && options::processing_cmt_as_regex())
- {
- std::wstring pc_wstring(pc.GetStr().get().cbegin(),
- pc.GetStr().get().cend());
- std::wregex criteria(std::wstring(ontext.cbegin(),
- ontext.cend()));
-
- found_enable_pattern = std::regex_search(pc_wstring.cbegin(),
- pc_wstring.cend(),
- criteria);
- }
- else
- {
- found_enable_pattern = (pc.GetStr().find(ontext.c_str()) >= 0);
- }
-
- if (!found_enable_pattern)
- {
- pc.SetType(CT_IGNORED);
- return(true);
- }
- }
- ctx.restore();
-
- // parse off whitespace leading to the comment
- if (parse_whitespace(ctx, pc))
- {
- pc.SetType(CT_IGNORED);
- return(true);
- }
-
- // Look for the ending comment and let it pass
- if ( parse_comment(ctx, pc)
- && !cpd.unc_off)
- {
- return(true);
- }
- // Reset the chunk & scan to until a newline
- pc.Str().clear();
-
- while ( ctx.more()
- && (ctx.peek() != '\r')
- && (ctx.peek() != '\n'))
- {
- pc.Str().append(ctx.get());
- }
-
- if (pc.GetStr().size() > 0)
- {
- pc.SetType(CT_IGNORED);
- return(true);
- }
- return(false);
-} // parse_ignored
-
-
-static bool parse_next(tok_ctx &ctx, Chunk &pc, const Chunk *prev_pc)
-{
- if (!ctx.more())
- {
- return(false);
- }
- // Save off the current column
- pc.SetType(CT_NONE);
- pc.SetOrigLine(ctx.c.row);
- pc.SetColumn(ctx.c.col);
- pc.SetOrigCol(ctx.c.col);
- pc.SetNlCount(0);
- pc.SetFlags(PCF_NONE);
-
- // If it is turned off, we put everything except newlines into CT_UNKNOWN
- if (cpd.unc_off)
- {
- if (parse_ignored(ctx, pc))
- {
- return(true);
- }
- }
- log_rule_B("disable_processing_nl_cont");
-
- // Parse macro blocks
- if (options::disable_processing_nl_cont())
- {
- if (parse_macro(ctx, pc, prev_pc))
- {
- return(true);
- }
- }
-
- // Parse whitespace
- if (parse_whitespace(ctx, pc))
- {
- return(true);
- }
-
- // Handle unknown/unhandled preprocessors
- if ( cpd.in_preproc > CT_PP_BODYCHUNK
- && cpd.in_preproc <= CT_PP_OTHER)
- {
- pc.Str().clear();
- tok_info ss;
- ctx.save(ss);
- // Chunk to a newline or comment
- pc.SetType(CT_PREPROC_BODY);
- size_t last = 0;
-
- while (ctx.more())
- {
- size_t ch = ctx.peek();
-
- // Fix for issue #1752
- // Ignoring extra spaces after ' \ ' for preproc body continuations
- if ( last == '\\'
- && ch == ' ')
- {
- ctx.get();
- continue;
- }
-
- if ( (ch == '\n')
- || (ch == '\r'))
- {
- // Back off if this is an escaped newline
- if (last == '\\')
- {
- ctx.restore(ss);
- pc.Str().pop_back();
- }
- break;
- }
-
- // Quit on a C or C++ comment start Issue #1966
- if ( (ch == '/')
- && ( (ctx.peek(1) == '/')
- || (ctx.peek(1) == '*')))
- {
- break;
- }
- last = ch;
- ctx.save(ss);
-
- pc.Str().append(ctx.get());
- }
-
- if (pc.GetStr().size() > 0)
- {
- return(true);
- }
- }
-
- // Detect backslash-newline
- if ( (ctx.peek() == '\\')
- && parse_bs_newline(ctx, pc))
- {
- return(true);
- }
-
- // Parse comments
- if (parse_comment(ctx, pc))
- {
- return(true);
- }
-
- // Parse code placeholders
- if (parse_code_placeholder(ctx, pc))
- {
- return(true);
- }
-
- if (language_is_set(LANG_CS))
- {
- if (parse_cs_string(ctx, pc))
- {
- return(true);
- }
- }
-
- if (language_is_set(LANG_CS | LANG_VALA))
- {
- // check for non-keyword identifiers such as @if @switch, etc
- // Vala also allows numeric identifiers if prefixed with '@'
- if ( ctx.peek() == '@'
- && ( CharTable::IsKw1(ctx.peek(1))
- || ( language_is_set(LANG_VALA)
- && CharTable::IsKw2(ctx.peek(1)))))
- {
- parse_word(ctx, pc, true);
- return(true);
- }
- }
-
- // handle VALA """ strings """
- if ( language_is_set(LANG_VALA)
- && (ctx.peek() == '"')
- && (ctx.peek(1) == '"')
- && (ctx.peek(2) == '"'))
- {
- parse_verbatim_string(ctx, pc);
- return(true);
- }
- /*
- * handle C++(11) string/char literal prefixes u8|u|U|L|R including all
- * possible combinations and optional R delimiters: R"delim(x)delim"
- */
- auto ch = ctx.peek();
-
- if ( language_is_set(LANG_C | LANG_CPP)
- && ( ch == 'u'
- || ch == 'U'
- || ch == 'R'
- || ch == 'L'))
- {
- auto idx = size_t{};
- auto is_real = false;
-
- if ( ch == 'u'
- && ctx.peek(1) == '8')
- {
- idx = 2;
- }
- else if ( unc_tolower(ch) == 'u'
- || ch == 'L')
- {
- idx++;
- }
-
- if ( language_is_set(LANG_C | LANG_CPP)
- && ctx.peek(idx) == 'R')
- {
- idx++;
- is_real = true;
- }
- const auto quote = ctx.peek(idx);
-
- if (is_real)
- {
- if ( quote == '"'
- && parse_cr_string(ctx, pc, idx))
- {
- return(true);
- }
- }
- else if ( ( quote == '"'
- || quote == '\'')
- && parse_string(ctx, pc, idx, true))
- {
- return(true);
- }
- }
-
- // PAWN specific stuff
- if (language_is_set(LANG_PAWN))
- {
- if ( cpd.preproc_ncnl_count == 1
- && ( cpd.in_preproc == CT_PP_DEFINE
- || cpd.in_preproc == CT_PP_EMIT))
- {
- parse_pawn_pattern(ctx, pc, CT_MACRO);
- return(true);
- }
-
- // Check for PAWN strings: \"hi" or !"hi" or !\"hi" or \!"hi"
- if ( (ctx.peek() == '\\')
- || (ctx.peek() == '!'))
- {
- if (ctx.peek(1) == '"')
- {
- parse_string(ctx, pc, 1, (ctx.peek() == '!'));
- return(true);
- }
-
- if ( ( (ctx.peek(1) == '\\')
- || (ctx.peek(1) == '!'))
- && (ctx.peek(2) == '"'))
- {
- parse_string(ctx, pc, 2, false);
- return(true);
- }
- }
-
- // handle PAWN preprocessor args %0 .. %9
- if ( cpd.in_preproc == CT_PP_DEFINE
- && (ctx.peek() == '%')
- && unc_isdigit(ctx.peek(1)))
- {
- pc.Str().clear();
- pc.Str().append(ctx.get());
- pc.Str().append(ctx.get());
- pc.SetType(CT_WORD);
- return(true);
- }
- }
- // Parse strings and character constants
-
-//parse_word(ctx, pc_temp, true);
-//ctx.restore(ctx.c);
- if (parse_number(ctx, pc))
- {
- return(true);
- }
-
- if (language_is_set(LANG_D))
- {
- // D specific stuff
- if (d_parse_string(ctx, pc))
- {
- return(true);
- }
- }
- else
- {
- // Not D stuff
-
- // Check for L'a', L"abc", 'a', "abc", <abc> strings
- ch = ctx.peek();
- size_t ch1 = ctx.peek(1);
-
- if ( ( ( (ch == 'L')
- || (ch == 'S'))
- && ( (ch1 == '"')
- || (ch1 == '\'')))
- || (ch == '"')
- || (ch == '\'')
- || ( (ch == '<')
- && cpd.in_preproc == CT_PP_INCLUDE))
- {
- parse_string(ctx, pc, unc_isalpha(ch) ? 1 : 0, true);
-
- if (cpd.in_preproc == CT_PP_INCLUDE)
- {
- pc.SetParentType(CT_PP_INCLUDE);
- }
- return(true);
- }
-
- if ( (ch == '<')
- && cpd.in_preproc == CT_PP_DEFINE)
- {
- if (Chunk::GetTail()->Is(CT_MACRO))
- {
- // We have "#define XXX <", assume '<' starts an include string
- parse_string(ctx, pc, 0, false);
- return(true);
- }
- }
- /* Inside clang's __has_include() could be "path/to/file.h" or system-style <path/to/file.h> */
- Chunk *tail = Chunk::GetTail();
-
- if ( (ch == '(')
- && (tail->IsNotNullChunk())
- && ( tail->Is(CT_CNG_HASINC)
- || tail->Is(CT_CNG_HASINCN)))
- {
- parse_string(ctx, pc, 0, false);
- return(true);
- }
- }
-
- // Check for Vala string templates
- if ( language_is_set(LANG_VALA)
- && (ctx.peek() == '@'))
- {
- size_t nc = ctx.peek(1);
-
- if (nc == '"')
- {
- // literal string
- parse_string(ctx, pc, 1, true);
- return(true);
- }
- }
-
- // Check for Objective C literals
- if ( language_is_set(LANG_OC)
- && (ctx.peek() == '@'))
- {
- size_t nc = ctx.peek(1);
-
- if (nc == 'R') // Issue #2720
- {
- if (ctx.peek(2) == '"')
- {
- if (parse_cr_string(ctx, pc, 2)) // Issue #3027
- {
- return(true);
- }
- // parse string without escaping
- parse_string(ctx, pc, 2, false);
- return(true);
- }
- }
-
- if ( (nc == '"')
- || (nc == '\''))
- {
- // literal string
- parse_string(ctx, pc, 1, true);
- return(true);
- }
-
- if ( (nc >= '0')
- && (nc <= '9'))
- {
- // literal number
- pc.Str().append(ctx.get()); // store the '@'
- parse_number(ctx, pc);
- return(true);
- }
- }
-
- // Check for pawn/ObjectiveC/Java and normal identifiers
- if ( CharTable::IsKw1(ctx.peek())
- || ( (ctx.peek() == '\\')
- && (unc_tolower(ctx.peek(1)) == 'u'))
- || ( (ctx.peek() == '@')
- && CharTable::IsKw1(ctx.peek(1))))
- {
- parse_word(ctx, pc, false);
- return(true);
- }
-
- // Check for C++11/14/17/20 attribute specifier sequences
- if ( language_is_set(LANG_CPP)
- && ctx.peek() == '[')
- {
- if ( !language_is_set(LANG_OC)
- || ( prev_pc != nullptr
- && !prev_pc->Is(CT_OC_AT)))
- {
- if (auto length = parse_attribute_specifier_sequence(ctx))
- {
- extract_attribute_specifier_sequence(ctx, pc, length);
- return(true);
- }
- }
- }
- // see if we have a punctuator
- char punc_txt[7];
-
- punc_txt[0] = ctx.peek();
- punc_txt[1] = ctx.peek(1);
- punc_txt[2] = ctx.peek(2);
- punc_txt[3] = ctx.peek(3);
- punc_txt[4] = ctx.peek(4);
- punc_txt[5] = ctx.peek(5);
- punc_txt[6] = '\0';
- const chunk_tag_t *punc;
-
- if ((punc = find_punctuator(punc_txt, cpd.lang_flags)) != nullptr)
- {
- int cnt = strlen(punc->tag);
-
- while (cnt--)
- {
- pc.Str().append(ctx.get());
- }
- pc.SetType(punc->type);
- pc.SetFlagBits(PCF_PUNCTUATOR);
- return(true);
- }
- /* When parsing C/C++ files and running into some unknown token,
- * check if matches Objective-C as a last resort, before
- * considering it as garbage.
- */
- int probe_lang_flags = 0;
-
- if (language_is_set(LANG_C | LANG_CPP))
- {
- probe_lang_flags = cpd.lang_flags | LANG_OC;
- }
-
- if (probe_lang_flags != 0)
- {
- if ((punc = find_punctuator(punc_txt, probe_lang_flags)) != nullptr)
- {
- cpd.lang_flags = probe_lang_flags;
- int cnt = strlen(punc->tag);
-
- while (cnt--)
- {
- pc.Str().append(ctx.get());
- }
- pc.SetType(punc->type);
- pc.SetFlagBits(PCF_PUNCTUATOR);
- return(true);
- }
- }
- // throw away this character
- pc.SetType(CT_UNKNOWN);
- pc.Str().append(ctx.get());
-
- LOG_FMT(LWARN, "%s:%zu Garbage in col %zu: %x\n",
- cpd.filename.c_str(), pc.GetOrigLine(), ctx.c.col, pc.GetStr()[0]);
- exit(EX_SOFTWARE);
-} // parse_next
-
-
-int find_disable_processing_comment_marker(const unc_text &text,
- std::size_t start_idx)
-{
- log_rule_B("disable_processing_cmt");
- const auto &offtext = options::disable_processing_cmt();
- int idx = -1;
-
- if ( !offtext.empty()
- && start_idx < text.size())
- {
- if ( offtext != UNCRUSTIFY_OFF_TEXT
- && options::processing_cmt_as_regex())
- {
- std::wsmatch match;
- std::wstring pc_wstring(text.get().cbegin() + start_idx,
- text.get().cend());
- std::wregex criteria(std::wstring(offtext.cbegin(),
- offtext.cend()));
-
- std::regex_search(pc_wstring.cbegin(),
- pc_wstring.cend(),
- match,
- criteria);
-
- if (!match.empty())
- {
- idx = int(match.position() + start_idx);
- }
- }
- else
- {
- idx = text.find(offtext.c_str(),
- start_idx);
-
- if (idx >= 0)
- {
- idx += int(offtext.size());
- }
- }
-
- /**
- * update the position to the start of the current line
- */
- while ( idx > 0
- && text[idx - 1] != '\n')
- {
- --idx;
- }
- }
- return(idx);
-} // find_disable_processing_comment_marker
-
-
-int find_enable_processing_comment_marker(const unc_text &text,
- std::size_t start_idx)
-{
- log_rule_B("enable_processing_cmt");
- const auto &ontext = options::enable_processing_cmt();
- int idx = -1;
-
- if ( !ontext.empty()
- && start_idx < text.size())
- {
- if ( ontext != UNCRUSTIFY_ON_TEXT
- && options::processing_cmt_as_regex())
- {
- std::wsmatch match;
- std::wstring pc_wstring(text.get().cbegin() + start_idx,
- text.get().cend());
- std::wregex criteria(std::wstring(ontext.cbegin(),
- ontext.cend()));
-
- std::regex_search(pc_wstring.cbegin(),
- pc_wstring.cend(),
- match,
- criteria);
-
- if (!match.empty())
- {
- idx = int(start_idx + match.position() + match.size());
- }
- }
- else
- {
- idx = text.find(ontext.c_str(),
- start_idx);
-
- if (idx >= 0)
- {
- idx += int(ontext.size());
- }
- }
-
- /**
- * update the position to the end of the current line
- */
- if (idx >= 0)
- {
- while ( idx < int(text.size())
- && text[idx] != '\n')
- {
- ++idx;
- }
- }
- }
- return(idx);
-} // find_enable_processing_comment_marker
-
-
-void tokenize(const deque<int> &data, Chunk *ref)
-{
- tok_ctx ctx(data);
- Chunk chunk;
- Chunk *pc = nullptr;
- Chunk *rprev = nullptr;
- bool last_was_tab = false;
- size_t prev_sp = 0;
- int num_stripped = 0; // Issue #1966
-
- cpd.unc_stage = unc_stage_e::TOKENIZE;
-
- while (ctx.more())
- {
- chunk.Reset();
- chunk.SetPpLevel(0);
-
- if (!parse_next(ctx, chunk, pc))
- {
- LOG_FMT(LERR, "%s:%zu Bailed before the end?\n",
- cpd.filename.c_str(), ctx.c.row);
- exit(EX_SOFTWARE);
- }
-
- if ( language_is_set(LANG_JAVA)
- && chunk.GetType() == CT_MEMBER
- && !memcmp(chunk.Text(), "->", 2))
- {
- chunk.SetType(CT_LAMBDA);
- }
-
- // Don't create an entry for whitespace
- if (chunk.GetType() == CT_WHITESPACE)
- {
- last_was_tab = chunk.GetAfterTab();
- prev_sp = chunk.GetOrigPrevSp();
- continue;
- }
- chunk.SetOrigPrevSp(prev_sp);
- prev_sp = 0;
-
- if (chunk.GetType() == CT_NEWLINE)
- {
- last_was_tab = chunk.GetAfterTab();
- chunk.SetAfterTab(false);
- chunk.Str().clear();
- }
- else if (chunk.GetType() == CT_NL_CONT)
- {
- last_was_tab = chunk.GetAfterTab();
- chunk.SetAfterTab(false);
- chunk.Str() = "\\\n";
- }
- else
- {
- chunk.SetAfterTab(last_was_tab);
- last_was_tab = false;
- }
- num_stripped = 0; // Issue #1966 and #3565
-
- if (chunk.GetType() != CT_IGNORED)
- {
- // Issue #1338
- // Strip trailing whitespace (for CPP comments and PP blocks)
- while ( (chunk.GetStr().size() > 0)
- && ( (chunk.GetStr()[chunk.GetStr().size() - 1] == ' ')
- || (chunk.GetStr()[chunk.GetStr().size() - 1] == '\t')))
- {
- // If comment contains backslash '\' followed by whitespace chars, keep last one;
- // this will prevent it from turning '\' into line continuation.
- if ( (chunk.GetStr().size() > 1)
- && (chunk.GetStr()[chunk.GetStr().size() - 2] == '\\'))
- {
- break;
- }
- chunk.Str().pop_back();
- num_stripped++; // Issue #1966
- }
- }
- // Store off the end column
- chunk.SetOrigColEnd(ctx.c.col - num_stripped); // Issue #1966 and #3565
-
- // Make the whitespace we disposed of be attributed to the next chunk
- prev_sp = num_stripped;
-
- // Add the chunk to the list
- rprev = pc;
-
- if (rprev != nullptr)
- {
- pc->SetFlagBits(rprev->GetFlags() & PCF_COPY_FLAGS);
-
- // a newline can't be in a preprocessor
- if (pc->Is(CT_NEWLINE))
- {
- pc->ResetFlagBits(PCF_IN_PREPROC);
- }
- }
-
- if (ref != nullptr)
- {
- chunk.SetFlagBits(PCF_INSERTED);
- }
- else
- {
- chunk.ResetFlagBits(PCF_INSERTED);
- }
- pc = chunk.CopyAndAddBefore(ref);
-
- // A newline marks the end of a preprocessor
- if (pc->Is(CT_NEWLINE)) // || pc->Is(CT_COMMENT_MULTI))
- {
- cpd.in_preproc = CT_NONE;
- cpd.preproc_ncnl_count = 0;
- }
-
- // Disable indentation when #asm directive found
- if (pc->Is(CT_PP_ASM))
- {
- LOG_FMT(LBCTRL, "Found a directive %s on line %zu\n", "#asm", pc->GetOrigLine());
- cpd.unc_off = true;
- }
-
- // Special handling for preprocessor stuff
- if (cpd.in_preproc != CT_NONE)
- {
- pc->SetFlagBits(PCF_IN_PREPROC);
-
- // Count words after the preprocessor
- if (!pc->IsCommentOrNewline())
- {
- cpd.preproc_ncnl_count++;
- }
-
- // Disable indentation if a #pragma asm directive is found
- if (cpd.in_preproc == CT_PP_PRAGMA)
- {
- if (memcmp(pc->Text(), "asm", 3) == 0)
- {
- LOG_FMT(LBCTRL, "Found a pragma %s on line %zu\n", "asm", pc->GetOrigLine());
- cpd.unc_off = true;
- }
- }
-
- // Figure out the type of preprocessor for #include parsing
- if (cpd.in_preproc == CT_PREPROC)
- {
- if ( pc->GetType() < CT_PP_DEFINE
- || pc->GetType() > CT_PP_OTHER)
- {
- pc->SetType(CT_PP_OTHER);
- }
- cpd.in_preproc = pc->GetType();
- }
- else if (cpd.in_preproc == CT_PP_IGNORE)
- {
- if ( !pc->Is(CT_NL_CONT)
- && !pc->IsComment()) // Issue #1966
- {
- pc->SetType(CT_PP_IGNORE);
- }
- }
- else if ( cpd.in_preproc == CT_PP_DEFINE
- && pc->Is(CT_PAREN_CLOSE)
- && options::pp_ignore_define_body())
- {
- log_rule_B("pp_ignore_define_body");
- // When we have a PAREN_CLOSE in a PP_DEFINE we should be terminating a MACRO_FUNC
- // arguments list. Therefore we can enter the PP_IGNORE state and ignore next chunks.
- cpd.in_preproc = CT_PP_IGNORE;
- }
- }
- else
- {
- // Check for a preprocessor start
- if ( pc->Is(CT_POUND)
- && ( rprev == nullptr
- || rprev->Is(CT_NEWLINE)))
- {
- pc->SetType(CT_PREPROC);
- pc->SetFlagBits(PCF_IN_PREPROC);
- cpd.in_preproc = CT_PREPROC;
- }
- }
-
- if (pc->Is(CT_NEWLINE))
- {
- LOG_FMT(LGUY, "%s(%d): orig line is %zu, orig col is %zu, <Newline>, nl is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetNlCount());
- }
- else if (pc->Is(CT_VBRACE_OPEN))
- {
- LOG_FMT(LGUY, "%s(%d): orig line is %zu, orig col is %zu, type is %s, orig col end is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()), pc->GetOrigColEnd());
- }
- else
- {
- char copy[1000];
- LOG_FMT(LGUY, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s, orig col end is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy), get_token_name(pc->GetType()), pc->GetOrigColEnd());
- }
- }
- // Set the cpd.newline string for this file
- log_rule_B("newlines");
-
- if ( options::newlines() == LE_LF
- || ( options::newlines() == LE_AUTO
- && (LE_COUNT(LF) >= LE_COUNT(CRLF))
- && (LE_COUNT(LF) >= LE_COUNT(CR))))
- {
- // LF line ends
- cpd.newline = "\n";
- LOG_FMT(LLINEENDS, "Using LF line endings\n");
- }
- else if ( options::newlines() == LE_CRLF
- || ( options::newlines() == LE_AUTO
- && (LE_COUNT(CRLF) >= LE_COUNT(LF))
- && (LE_COUNT(CRLF) >= LE_COUNT(CR))))
- {
- // CRLF line ends
- cpd.newline = "\r\n";
- LOG_FMT(LLINEENDS, "Using CRLF line endings\r\n");
- }
- else
- {
- // CR line ends
- cpd.newline = "\r";
- LOG_FMT(LLINEENDS, "Using CR line endings\n");
- }
-} // tokenize
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize.h
deleted file mode 100644
index a111143b..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * @file tokenize.h
- * prototypes for tokenize.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef TOKENIZE_H_INCLUDED
-#define TOKENIZE_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-
-/**
- * Test the input string to see if it satisfies the criteria
- * specified by the disable_processing_cmt option
- * @param text the string to which a match will be attempted
- * @param start_idx the starting index within the string from which the
- * search will be performed
- * @return returns a non-negative position index that points to the beginning
- * of the line containing the marker, if found
- */
-int find_disable_processing_comment_marker(const unc_text &text, std::size_t start_idx = 0);
-
-
-/**
- * Test the input string to see if it satisfies the criteria
- * specified by the enable_processing_cmt option
- * @param text the string to which a match will be attempted
- * @param start_idx the starting index within the string from which the
- * search will be performed
- * @return returns a non-negative position index that points to the end
- * of the line containing the marker, if found
- */
-int find_enable_processing_comment_marker(const unc_text &text, std::size_t start_idx = 0);
-
-
-/**
- * @brief Parse the text into chunks
- *
- * This function parses or tokenizes the whole buffer into a list.
- * It has to do some tricks to parse preprocessors.
- *
- * If output_text() were called immediately after, two things would happen:
- * - trailing whitespace are removed.
- * - leading space & tabs are converted to the appropriate format.
- *
- * All the tokens are inserted before ref. If ref is NULL, they are inserted
- * at the end of the list. Line numbers are relative to the start of the data.
- */
-void tokenize(const std::deque<int> &data, Chunk *ref);
-
-
-#endif /* TOKENIZE_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize_cleanup.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize_cleanup.cpp
deleted file mode 100644
index 4a8e6773..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize_cleanup.cpp
+++ /dev/null
@@ -1,1776 +0,0 @@
-/**
- * @file tokenize_cleanup.cpp
- * Looks at simple sequences to refine the chunk types.
- * Examples:
- * - change '[' + ']' into '[]'/
- * - detect "version = 10;" vs "version (xxx) {"
- *
- * @author Ben Gardner
- * @author Guy Maurel 2015, 2021
- * @license GPL v2+
- */
-
-#include "tokenize_cleanup.h"
-
-#include "combine.h"
-#include "combine_skip.h"
-#include "flag_braced_init_list.h"
-#include "flag_decltype.h"
-#include "keywords.h"
-#include "prototypes.h"
-#include "punctuators.h"
-#include "space.h"
-#include "unc_ctype.h"
-
-
-using namespace uncrustify;
-
-
-/**
- * Mark types in a single template argument.
- *
- * @param start chunk to start check at
- * @param end chunk to end check at
- */
-static void check_template_arg(Chunk *start, Chunk *end);
-
-
-/**
- * Mark types in template argument(s).
- *
- * @param start chunk to start check at
- * @param end chunk to end check at
- */
-static void check_template_args(Chunk *start, Chunk *end);
-
-
-/**
- * If there is nothing but CT_WORD and CT_MEMBER, then it's probably a
- * template thingy. Otherwise, it's likely a comparison.
- *
- * @param start chunk to start check at
- */
-static void check_template(Chunk *start, bool in_type_cast);
-
-
-/**
- * Convert '>' + '>' into '>>'
- * If we only have a single '>', then change it to CT_COMPARE.
- *
- * @param pc chunk to start at
- */
-static Chunk *handle_double_angle_close(Chunk *pc);
-
-
-/**
- * Marks ObjC specific chunks in property declaration, by setting
- * parent types and chunk types.
- */
-static void cleanup_objc_property(Chunk *start);
-
-
-/**
- * Marks ObjC specific chunks in property declaration (getter/setter attribute)
- * Will mark 'test4Setter'and ':' in '@property (setter=test4Setter:, strong) int test4;' as CT_OC_SEL_NAME
- */
-static void mark_selectors_in_property_with_open_paren(Chunk *open_paren);
-
-
-/**
- * Marks ObjC specific chunks in property declaration ( attributes)
- * Changes all the CT_WORD and CT_TYPE to CT_OC_PROPERTY_ATTR
- */
-static void mark_attributes_in_property_with_open_paren(Chunk *open_paren);
-
-
-static Chunk *handle_double_angle_close(Chunk *pc)
-{
- if (pc == nullptr)
- {
- pc = Chunk::NullChunkPtr;
- }
- Chunk *next = pc->GetNext();
-
- if (next->IsNotNullChunk())
- {
- if ( pc->Is(CT_ANGLE_CLOSE)
- && next->Is(CT_ANGLE_CLOSE)
- && pc->GetParentType() == CT_NONE
- && (pc->GetOrigColEnd() + 1) == next->GetOrigCol()
- && next->GetParentType() == CT_NONE)
- {
- pc->Str().append('>');
- pc->SetType(CT_SHIFT);
- pc->SetOrigColEnd(next->GetOrigColEnd());
-
- Chunk *tmp = next->GetNextNcNnl();
- Chunk::Delete(next);
- next = tmp;
- }
- else
- {
- // bug #663
- pc->SetType(CT_COMPARE);
- }
- }
- return(next);
-}
-
-
-void split_off_angle_close(Chunk *pc)
-{
- const chunk_tag_t *ct = find_punctuator(pc->Text() + 1, cpd.lang_flags);
-
- if (ct == nullptr)
- {
- return;
- }
- Chunk nc = *pc;
-
- pc->Str().resize(1);
- pc->SetOrigColEnd(pc->GetOrigCol() + 1);
- pc->SetType(CT_ANGLE_CLOSE);
-
- nc.SetType(ct->type);
- nc.Str().pop_front();
- nc.SetOrigCol(nc.GetOrigCol() + 1);
- nc.SetColumn(nc.GetColumn() + 1);
- nc.CopyAndAddAfter(pc);
-}
-
-
-void tokenize_trailing_return_types()
-{
- // Issue #2330
- // auto max(int a, int b) -> int;
- // Issue #2460
- // auto f01() -> bool;
- // auto f02() noexcept -> bool;
- // auto f03() noexcept(true) -> bool;
- // auto f04() noexcept(false) -> bool;
- // auto f05() noexcept -> bool = delete;
- // auto f06() noexcept(true) -> bool = delete;
- // auto f07() noexcept(false) -> bool = delete;
- // auto f11() const -> bool;
- // auto f12() const noexcept -> bool;
- // auto f13() const noexcept(true) -> bool;
- // auto f14() const noexcept(false) -> bool;
- // auto f15() const noexcept -> bool = delete;
- // auto f16() const noexcept(true) -> bool = delete;
- // auto f17() const noexcept(false) -> bool = delete;
- // auto f21() throw() -> bool;
- // auto f22() throw() -> bool = delete;
- // auto f23() const throw() -> bool;
- // auto f24() const throw() -> bool = delete;
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- char copy[1000];
- LOG_FMT(LNOTE, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy));
-
- if ( pc->Is(CT_MEMBER)
- && (strcmp(pc->Text(), "->") == 0))
- {
- Chunk *tmp = pc->GetPrevNcNnl();
- Chunk *tmp_2;
- Chunk *open_paren;
-
- if (tmp->Is(CT_QUALIFIER))
- {
- // auto max(int a, int b) const -> int;
- // auto f11() const -> bool;
- tmp = tmp->GetPrevNcNnl();
- }
- else if (tmp->Is(CT_NOEXCEPT))
- {
- // noexcept is present
- tmp_2 = tmp->GetPrevNcNnl();
-
- if (tmp_2->Is(CT_QUALIFIER))
- {
- // auto f12() const noexcept -> bool;
- // auto f15() const noexcept -> bool = delete;
- tmp = tmp_2->GetPrevNcNnl();
- }
- else
- {
- // auto f02() noexcept -> bool;
- // auto f05() noexcept -> bool = delete;
- tmp = tmp_2;
- }
- }
- else if (tmp->Is(CT_PAREN_CLOSE))
- {
- open_paren = tmp->GetPrevType(CT_PAREN_OPEN, tmp->GetLevel());
- tmp = open_paren->GetPrevNcNnl();
-
- if (tmp->Is(CT_NOEXCEPT))
- {
- // noexcept is present
- tmp_2 = tmp->GetPrevNcNnl();
-
- if (tmp_2->Is(CT_QUALIFIER))
- {
- // auto f13() const noexcept(true) -> bool;
- // auto f14() const noexcept(false) -> bool;
- // auto f16() const noexcept(true) -> bool = delete;
- // auto f17() const noexcept(false) -> bool = delete;
- tmp = tmp_2->GetPrevNcNnl();
- }
- else
- {
- // auto f03() noexcept(true) -> bool;
- // auto f04() noexcept(false) -> bool;
- // auto f06() noexcept(true) -> bool = delete;
- // auto f07() noexcept(false) -> bool = delete;
- tmp = tmp_2;
- }
- }
- else if (tmp->Is(CT_THROW))
- {
- // throw is present
- tmp_2 = tmp->GetPrevNcNnl();
-
- if (tmp_2->Is(CT_QUALIFIER))
- {
- // auto f23() const throw() -> bool;
- // auto f24() const throw() -> bool = delete;
- tmp = tmp_2->GetPrevNcNnl();
- }
- else
- {
- // auto f21() throw() -> bool;
- // auto f22() throw() -> bool = delete;
- tmp = tmp_2;
- }
- }
- else
- {
- LOG_FMT(LNOTE, "%s(%d): NOT COVERED\n", __func__, __LINE__);
- }
- }
- else
- {
- LOG_FMT(LNOTE, "%s(%d): NOT COVERED\n", __func__, __LINE__);
- }
-
- if ( tmp->Is(CT_FPAREN_CLOSE)
- && ( tmp->GetParentType() == CT_FUNC_PROTO
- || tmp->GetParentType() == CT_FUNC_DEF))
- {
- pc->SetType(CT_TRAILING_RET);
- LOG_FMT(LNOTE, "%s(%d): set trailing return type for Text() is '%s'\n",
- __func__, __LINE__, pc->Text()); // Issue #3222
- // TODO
- // https://en.cppreference.com/w/cpp/language/function
- // noptr-declarator ( parameter-list ) cv(optional) ref(optional) except(optional) attr(optional) -> trailing
- Chunk *next = pc->GetNextNcNnl();
-
- if (next->Is(CT_DECLTYPE))
- {
- // TODO
- }
- else if (next->Is(CT_WORD))
- {
- next->SetType(CT_TYPE); // Issue #3222
- next = next->GetNextNcNnl();
-
- if (next->Is(CT_ARITH))
- {
- if (next->GetStr()[0] == '*')
- {
- next->SetType(CT_PTR_TYPE);
- }
- else if (next->GetStr()[0] == '&') // Issue #3407
- {
- next->SetType(CT_BYREF);
- }
- }
- }
- else
- {
- // TODO
- }
- }
- }
- }
-} // tokenize_trailing_return_types
-
-
-void tokenize_cleanup()
-{
- LOG_FUNC_ENTRY();
-
- Chunk *prev = Chunk::NullChunkPtr;
- Chunk *next;
- bool in_type_cast = false;
-
- cpd.unc_stage = unc_stage_e::TOKENIZE_CLEANUP;
-
- /*
- * Since [] is expected to be TSQUARE for the 'operator', we need to make
- * this change in the first pass.
- */
- Chunk *pc;
-
- for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- if (pc->Is(CT_SQUARE_OPEN))
- {
- next = pc->GetNextNcNnl();
-
- if (next->Is(CT_SQUARE_CLOSE))
- {
- // Change '[' + ']' into '[]'
- pc->SetType(CT_TSQUARE);
- pc->Str() = "[]";
- /*
- * bug #664: The original m_origColEnd of CT_SQUARE_CLOSE is
- * stored at m_origColEnd of CT_TSQUARE.
- * pc->SetOrigColEnd(pc->GetOrigColEnd() + 1);
- */
- pc->SetOrigColEnd(next->GetOrigColEnd());
- Chunk::Delete(next);
- }
- }
-
- if ( pc->Is(CT_SEMICOLON)
- && pc->TestFlags(PCF_IN_PREPROC)
- && !pc->GetNextNcNnl(E_Scope::PREPROC))
- {
- LOG_FMT(LNOTE, "%s(%d): %s:%zu Detected a macro that ends with a semicolon. Possible failures if used.\n",
- __func__, __LINE__, cpd.filename.c_str(), pc->GetOrigLine());
- }
- }
-
- // change := to CT_SQL_ASSIGN Issue #527
- for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
- {
- if (pc->Is(CT_COLON))
- {
- next = pc->GetNextNcNnl();
-
- if (next->Is(CT_ASSIGN))
- {
- // Change ':' + '=' into ':='
- pc->SetType(CT_SQL_ASSIGN);
- pc->Str() = ":=";
- pc->SetOrigColEnd(next->GetOrigColEnd());
- Chunk::Delete(next);
- }
- }
- }
-
- // We can handle everything else in the second pass
- pc = Chunk::GetHead();
- next = pc->GetNextNcNnl();
-
- while ( pc->IsNotNullChunk()
- && next->IsNotNullChunk())
- {
- if ( pc->Is(CT_DOT)
- && language_is_set(LANG_ALLC))
- {
- pc->SetType(CT_MEMBER);
- }
-
- if ( pc->Is(CT_NULLCOND)
- && language_is_set(LANG_CS))
- {
- pc->SetType(CT_MEMBER);
- }
-
- // Determine the version stuff (D only)
- if (pc->Is(CT_D_VERSION))
- {
- if (next->Is(CT_PAREN_OPEN))
- {
- pc->SetType(CT_D_VERSION_IF);
- }
- else
- {
- if (next->IsNot(CT_ASSIGN))
- {
- LOG_FMT(LERR, "%s(%d): %s:%zu: version: Unexpected token %s\n",
- __func__, __LINE__, cpd.filename.c_str(), pc->GetOrigLine(), get_token_name(next->GetType()));
- exit(EX_SOFTWARE);
- }
- pc->SetType(CT_WORD);
- }
- }
-
- // Determine the scope stuff (D only)
- if (pc->Is(CT_D_SCOPE))
- {
- if (next->Is(CT_PAREN_OPEN))
- {
- pc->SetType(CT_D_SCOPE_IF);
- }
- else
- {
- pc->SetType(CT_TYPE);
- }
- }
-
- /*
- * Change CT_BASE before CT_PAREN_OPEN to CT_WORD.
- * public myclass() : base() {}
- * -or-
- * var x = (T)base.y;
- */
- if ( pc->Is(CT_BASE)
- && ( next->Is(CT_PAREN_OPEN)
- || next->Is(CT_DOT)))
- {
- pc->SetType(CT_WORD);
- }
-
- if ( pc->Is(CT_ENUM)
- && ( next->Is(CT_STRUCT)
- || next->Is(CT_CLASS)))
- {
- next->SetType(CT_ENUM_CLASS);
- }
- Chunk *next_non_attr = language_is_set(LANG_CPP) ? skip_attribute_next(next) : next;
-
- /*
- * Change CT_WORD after CT_ENUM, CT_UNION, CT_STRUCT, or CT_CLASS to CT_TYPE
- * Change CT_WORD before CT_WORD to CT_TYPE
- */
- if (next_non_attr->Is(CT_WORD))
- {
- if (pc->IsClassEnumStructOrUnion())
- {
- next_non_attr->SetType(CT_TYPE);
- }
-
- if (pc->Is(CT_WORD))
- {
- pc->SetType(CT_TYPE);
- }
- }
-
- /*
- * change extern to qualifier if extern isn't followed by a string or
- * an open parenthesis
- */
- if (pc->Is(CT_EXTERN))
- {
- if (next->Is(CT_STRING))
- {
- // Probably 'extern "C"'
- }
- else if (next->Is(CT_PAREN_OPEN))
- {
- // Probably 'extern (C)'
- }
- else
- {
- // Something else followed by a open brace
- Chunk *tmp = next->GetNextNcNnl();
-
- if ( tmp->IsNullChunk()
- || tmp->IsNot(CT_BRACE_OPEN))
- {
- pc->SetType(CT_QUALIFIER);
- }
- }
- }
-
- /*
- * Change CT_STAR to CT_PTR_TYPE if preceded by
- * CT_TYPE, CT_QUALIFIER, or CT_PTR_TYPE
- * or by a
- * CT_WORD which is preceded by CT_DC_MEMBER: '::aaa *b'
- */
- if ( (next->Is(CT_STAR))
- || ( language_is_set(LANG_CPP)
- && (next->Is(CT_CARET)))
- || ( language_is_set(LANG_CS | LANG_VALA)
- && (next->Is(CT_QUESTION))
- && (strcmp(pc->Text(), "null") != 0)))
- {
- if ( pc->Is(CT_TYPE)
- || pc->Is(CT_QUALIFIER)
- || pc->Is(CT_PTR_TYPE))
- {
- next->SetType(CT_PTR_TYPE);
- }
- }
-
- if ( pc->Is(CT_TYPE_CAST)
- && next->Is(CT_ANGLE_OPEN))
- {
- next->SetParentType(CT_TYPE_CAST);
- in_type_cast = true;
- }
-
- if (pc->Is(CT_DECLTYPE))
- {
- flag_cpp_decltype(pc);
- }
-
- // Change angle open/close to CT_COMPARE, if not a template thingy
- if ( pc->Is(CT_ANGLE_OPEN)
- && pc->GetParentType() != CT_TYPE_CAST)
- {
- /*
- * pretty much all languages except C use <> for something other than
- * comparisons. "#include<xxx>" is handled elsewhere.
- */
- if (language_is_set(LANG_OC | LANG_CPP | LANG_CS | LANG_JAVA | LANG_VALA))
- {
- // bug #663
- check_template(pc, in_type_cast);
- }
- else
- {
- // convert CT_ANGLE_OPEN to CT_COMPARE
- pc->SetType(CT_COMPARE);
- }
- }
-
- if ( pc->Is(CT_ANGLE_CLOSE)
- && pc->GetParentType() != CT_TEMPLATE)
- {
- if (in_type_cast)
- {
- in_type_cast = false;
- pc->SetParentType(CT_TYPE_CAST);
- }
- else
- {
- next = handle_double_angle_close(pc);
- }
- }
-
- if (language_is_set(LANG_D))
- {
- // Check for the D string concat symbol '~'
- if ( pc->Is(CT_INV)
- && ( prev->Is(CT_STRING)
- || prev->Is(CT_WORD)
- || next->Is(CT_STRING)))
- {
- pc->SetType(CT_CONCAT);
- }
-
- // Check for the D template symbol '!' (word + '!' + word or '(')
- if ( pc->Is(CT_NOT)
- && prev->Is(CT_WORD)
- && ( next->Is(CT_PAREN_OPEN)
- || next->Is(CT_WORD)
- || next->Is(CT_TYPE)
- || next->Is(CT_NUMBER)
- || next->Is(CT_NUMBER_FP)
- || next->Is(CT_STRING)
- || next->Is(CT_STRING_MULTI)))
- {
- pc->SetType(CT_D_TEMPLATE);
- }
-
- // handle "version(unittest) { }" vs "unittest { }"
- if ( pc->Is(CT_UNITTEST)
- && prev->Is(CT_PAREN_OPEN))
- {
- pc->SetType(CT_WORD);
- }
-
- // handle 'static if' and merge the tokens
- if ( pc->Is(CT_IF)
- && prev->IsString("static"))
- {
- // delete PREV and merge with IF
- pc->Str().insert(0, ' ');
- pc->Str().insert(0, prev->GetStr());
- pc->SetOrigCol(prev->GetOrigCol());
- pc->SetOrigLine(prev->GetOrigLine());
- Chunk *to_be_deleted = prev;
- prev = prev->GetPrevNcNnl();
-
- if (prev->IsNotNullChunk())
- {
- Chunk::Delete(to_be_deleted);
- }
- }
- }
-
- if (language_is_set(LANG_CPP))
- {
- // Change Word before '::' into a type
- if ( pc->Is(CT_WORD)
- && next->Is(CT_DC_MEMBER))
- {
- prev = pc->GetPrev();
-
- if (prev->IsNullChunk()) // Issue #3010
- {
- pc->SetType(CT_TYPE);
- }
- else
- {
- if (prev->Is(CT_COLON))
- {
- // nothing to do
- }
- else
- {
- pc->SetType(CT_TYPE);
- }
- }
- }
-
- // Set parent type for 'if constexpr'
- if ( prev->Is(CT_IF)
- && pc->Is(CT_QUALIFIER)
- && pc->IsString("constexpr"))
- {
- pc->SetType(CT_CONSTEXPR);
- }
- }
-
- // Change get/set to CT_WORD if not followed by a brace open
- if ( pc->Is(CT_GETSET)
- && next->IsNot(CT_BRACE_OPEN))
- {
- if ( next->Is(CT_SEMICOLON)
- && ( prev->Is(CT_BRACE_CLOSE)
- || prev->Is(CT_BRACE_OPEN)
- || prev->Is(CT_SEMICOLON)))
- {
- pc->SetType(CT_GETSET_EMPTY);
- next->SetParentType(CT_GETSET);
- }
- else
- {
- pc->SetType(CT_WORD);
- }
- }
-
- /*
- * Interface is only a keyword in MS land if followed by 'class' or 'struct'
- * likewise, 'class' may be a member name in Java.
- */
- if ( pc->Is(CT_CLASS)
- && !CharTable::IsKw1(next->GetStr()[0]))
- {
- if ( next->IsNot(CT_DC_MEMBER)
- && next->IsNot(CT_ATTRIBUTE)) // Issue #2570
- {
- pc->SetType(CT_WORD);
- }
- else if ( prev->Is(CT_DC_MEMBER)
- || prev->Is(CT_TYPE))
- {
- pc->SetType(CT_TYPE);
- }
- else if (next->Is(CT_DC_MEMBER))
- {
- Chunk *next2 = next->GetNextNcNnlNet();
-
- if ( next2->Is(CT_INV) // CT_INV hasn't turned into CT_DESTRUCTOR just yet
- || ( next2->Is(CT_CLASS) // constructor isn't turned into CT_FUNC* just yet
- && !strcmp(pc->Text(), next2->Text())))
- {
- pc->SetType(CT_TYPE);
- }
- }
- }
-
- /*
- * Change item after operator (>=, ==, etc) to a CT_OPERATOR_VAL
- * Usually the next item is part of the operator.
- * In a few cases the next few tokens are part of it:
- * operator + - common case
- * operator >> - need to combine '>' and '>'
- * operator ()
- * operator [] - already converted to TSQUARE
- * operator new []
- * operator delete []
- * operator const char *
- * operator const B&
- * operator std::allocator<U>
- *
- * In all cases except the last, this will put the entire operator value
- * in one chunk.
- */
- if (pc->Is(CT_OPERATOR))
- {
- Chunk *tmp2 = next->GetNext();
-
- // Handle special case of () operator -- [] already handled
- if (next->Is(CT_PAREN_OPEN))
- {
- Chunk *tmp = next->GetNext();
-
- if (tmp->Is(CT_PAREN_CLOSE))
- {
- next->Str() = "()";
- next->SetType(CT_OPERATOR_VAL);
- Chunk::Delete(tmp);
- next->SetOrigColEnd(next->GetOrigColEnd() + 1);
- }
- }
- else if ( next->Is(CT_ANGLE_CLOSE)
- && tmp2->Is(CT_ANGLE_CLOSE)
- && tmp2->GetOrigCol() == next->GetOrigColEnd())
- {
- next->Str().append('>');
- next->SetOrigColEnd(next->GetOrigColEnd() + 1);
- next->SetType(CT_OPERATOR_VAL);
- Chunk::Delete(tmp2);
- }
- else if (next->TestFlags(PCF_PUNCTUATOR))
- {
- next->SetType(CT_OPERATOR_VAL);
- }
- else
- {
- next->SetType(CT_TYPE);
-
- /*
- * Replace next with a collection of all tokens that are part of
- * the type.
- */
- tmp2 = next;
- Chunk *tmp;
-
- while ((tmp = tmp2->GetNext())->IsNotNullChunk())
- {
- if ( tmp->IsNot(CT_WORD)
- && tmp->IsNot(CT_TYPE)
- && tmp->IsNot(CT_QUALIFIER)
- && tmp->IsNot(CT_STAR)
- && tmp->IsNot(CT_CARET)
- && tmp->IsNot(CT_AMP)
- && tmp->IsNot(CT_TSQUARE))
- {
- break;
- }
- // Change tmp into a type so that space_needed() works right
- make_type(tmp);
- size_t num_sp = space_needed(tmp2, tmp);
-
- while (num_sp-- > 0)
- {
- next->Str().append(" ");
- }
- next->Str().append(tmp->GetStr());
- tmp2 = tmp;
- }
-
- while ((tmp2 = next->GetNext()) != tmp)
- {
- Chunk::Delete(tmp2);
- }
- next->SetType(CT_OPERATOR_VAL);
-
- next->SetOrigColEnd(next->GetOrigCol() + next->Len());
- }
- next->SetParentType(CT_OPERATOR);
-
- LOG_FMT(LOPERATOR, "%s(%d): %zu:%zu operator '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), next->Text());
- }
-
- // Change private, public, protected into either a qualifier or label
- if (pc->Is(CT_ACCESS))
- {
- // Handle Qt slots - maybe should just check for a CT_WORD?
- if ( next->IsString("slots")
- || next->IsString("Q_SLOTS"))
- {
- Chunk *tmp = next->GetNext();
-
- if (tmp->Is(CT_COLON))
- {
- next = tmp;
- }
- }
-
- if (next->Is(CT_COLON))
- {
- next->SetType(CT_ACCESS_COLON);
- Chunk *tmp;
-
- if ((tmp = next->GetNextNcNnl())->IsNotNullChunk())
- {
- tmp->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
- }
- }
- else
- {
- pc->SetType(( pc->IsString("signals")
- || pc->IsString("Q_SIGNALS"))
- ? CT_WORD : CT_QUALIFIER);
- }
- }
-
- // Look for <newline> 'EXEC' 'SQL'
- if ( ( pc->IsString("EXEC", false)
- && next->IsString("SQL", false))
- || ( (*pc->GetStr().c_str() == '$')
- && pc->IsNot(CT_SQL_WORD)
- /* but avoid breaking tokenization for C# 6 interpolated strings. */
- && ( !language_is_set(LANG_CS)
- || ( pc->Is(CT_STRING)
- && (!pc->GetStr().startswith("$\""))
- && (!pc->GetStr().startswith("$@\""))))))
- {
- Chunk *tmp = pc->GetPrev();
-
- if (tmp->IsNewline())
- {
- if (*pc->GetStr().c_str() == '$')
- {
- pc->SetType(CT_SQL_EXEC);
-
- if (pc->Len() > 1)
- {
- // SPLIT OFF '$'
- Chunk nc;
-
- nc = *pc;
- pc->Str().resize(1);
- pc->SetOrigColEnd(pc->GetOrigCol() + 1);
-
- nc.SetType(CT_SQL_WORD);
- nc.Str().pop_front();
- nc.SetOrigCol(nc.GetOrigCol() + 1);
- nc.SetColumn(nc.GetColumn() + 1);
- nc.CopyAndAddAfter(pc);
-
- next = pc->GetNext();
- }
- }
- tmp = next->GetNext();
-
- if (tmp->IsString("BEGIN", false))
- {
- pc->SetType(CT_SQL_BEGIN);
- }
- else if (tmp->IsString("END", false))
- {
- pc->SetType(CT_SQL_END);
- }
- else
- {
- pc->SetType(CT_SQL_EXEC);
- }
-
- // Change words into CT_SQL_WORD until CT_SEMICOLON
- while (tmp->IsNotNullChunk())
- {
- if (tmp->Is(CT_SEMICOLON))
- {
- break;
- }
-
- if ( (tmp->Len() > 0)
- && ( unc_isalpha(*tmp->GetStr().c_str())
- || (*tmp->GetStr().c_str() == '$')))
- {
- tmp->SetType(CT_SQL_WORD);
- }
- tmp = tmp->GetNextNcNnl();
- }
- }
- }
-
- // handle MS abomination 'for each'
- if ( pc->Is(CT_FOR)
- && next->IsString("each")
- && (next == pc->GetNext()))
- {
- // merge the two with a space between
- pc->Str().append(' ');
- pc->Str() += next->GetStr();
- pc->SetOrigColEnd(next->GetOrigColEnd());
- Chunk::Delete(next);
- next = pc->GetNextNcNnl();
-
- // label the 'in'
- if (next->Is(CT_PAREN_OPEN))
- {
- Chunk *tmp = next->GetNextNcNnl();
-
- while ( tmp->IsNotNullChunk()
- && tmp->IsNot(CT_PAREN_CLOSE))
- {
- if (tmp->IsString("in"))
- {
- tmp->SetType(CT_IN);
- break;
- }
- tmp = tmp->GetNextNcNnl();
- }
- }
- }
-
- /*
- * ObjectiveC allows keywords to be used as identifiers in some situations
- * This is a dirty hack to allow some of the more common situations.
- */
- if (language_is_set(LANG_OC))
- {
- if ( ( pc->Is(CT_IF)
- || pc->Is(CT_FOR)
- || pc->Is(CT_WHILE))
- && !next->Is(CT_PAREN_OPEN))
- {
- pc->SetType(CT_WORD);
- }
-
- if ( pc->Is(CT_DO)
- && ( prev->Is(CT_MINUS)
- || next->Is(CT_SQUARE_CLOSE)))
- {
- pc->SetType(CT_WORD);
- }
-
- // Fix self keyword back to word when mixing c++/objective-c
- if ( pc->Is(CT_THIS)
- && !strcmp(pc->Text(), "self")
- && ( next->Is(CT_COMMA)
- || next->Is(CT_PAREN_CLOSE)))
- {
- pc->SetType(CT_WORD);
- }
-
- // Fix self keyword back to word when mixing c++/objective-c
- if ( pc->Is(CT_THIS)
- && !strcmp(pc->Text(), "self")
- && ( next->Is(CT_COMMA)
- || next->Is(CT_PAREN_CLOSE)))
- {
- pc->SetType(CT_WORD);
- }
- }
-
- // Vala allows keywords to be used as identifiers
- if (language_is_set(LANG_VALA))
- {
- if ( find_keyword_type(pc->Text(), pc->Len()) != CT_WORD
- && ( prev->Is(CT_DOT)
- || next->Is(CT_DOT)
- || prev->Is(CT_MEMBER)
- || next->Is(CT_MEMBER)
- || prev->Is(CT_TYPE)))
- {
- pc->SetType(CT_WORD);
- }
- }
-
- // Another hack to clean up more keyword abuse
- if ( pc->Is(CT_CLASS)
- && ( prev->Is(CT_DOT)
- || next->Is(CT_DOT)
- || prev->Is(CT_MEMBER) // Issue #3031
- || next->Is(CT_MEMBER)))
- {
- pc->SetType(CT_WORD);
- }
-
- // Detect Objective C class name
- if ( pc->Is(CT_OC_IMPL)
- || pc->Is(CT_OC_INTF)
- || pc->Is(CT_OC_PROTOCOL))
- {
- if (next->IsNot(CT_PAREN_OPEN))
- {
- next->SetType(CT_OC_CLASS);
- }
- next->SetParentType(pc->GetType());
-
- Chunk *tmp = next->GetNextNcNnl();
-
- if (tmp->IsNotNullChunk())
- {
- tmp->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
- }
- tmp = pc->GetNextType(CT_OC_END, pc->GetLevel());
-
- if (tmp->IsNotNullChunk())
- {
- tmp->SetParentType(pc->GetType());
- }
- }
-
- if (pc->Is(CT_OC_INTF))
- {
- Chunk *tmp = pc->GetNextNcNnl(E_Scope::PREPROC);
-
- while ( tmp->IsNotNullChunk()
- && tmp->IsNot(CT_OC_END))
- {
- if (get_token_pattern_class(tmp->GetType()) != pattern_class_e::NONE)
- {
- LOG_FMT(LOBJCWORD, "%s(%d): @interface %zu:%zu change '%s' (%s) to CT_WORD\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), tmp->Text(),
- get_token_name(tmp->GetType()));
- tmp->SetType(CT_WORD);
- }
- tmp = tmp->GetNextNcNnl(E_Scope::PREPROC);
- }
- }
-
- /*
- * Detect Objective-C categories and class extensions:
- * @interface ClassName (CategoryName)
- * @implementation ClassName (CategoryName)
- * @interface ClassName ()
- * @implementation ClassName ()
- */
- if ( ( pc->GetParentType() == CT_OC_IMPL
- || pc->GetParentType() == CT_OC_INTF
- || pc->Is(CT_OC_CLASS))
- && next->Is(CT_PAREN_OPEN))
- {
- next->SetParentType(pc->GetParentType());
-
- Chunk *tmp = next->GetNext();
-
- if ( tmp->IsNotNullChunk()
- && tmp->GetNext()->IsNotNullChunk())
- {
- if (tmp->Is(CT_PAREN_CLOSE))
- {
- //tmp->SetType(CT_OC_CLASS_EXT);
- tmp->SetParentType(pc->GetParentType());
- }
- else
- {
- tmp->SetType(CT_OC_CATEGORY);
- tmp->SetParentType(pc->GetParentType());
- }
- }
- tmp = pc->GetNextType(CT_PAREN_CLOSE, pc->GetLevel());
-
- if (tmp->IsNotNullChunk())
- {
- tmp->SetParentType(pc->GetParentType());
- }
- }
-
- /*
- * Detect Objective C @property:
- * @property NSString *stringProperty;
- * @property(nonatomic, retain) NSMutableDictionary *shareWith;
- */
- if (pc->Is(CT_OC_PROPERTY))
- {
- if (next->IsNot(CT_PAREN_OPEN))
- {
- next->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
- }
- else
- {
- cleanup_objc_property(pc);
- }
- }
-
- /*
- * Detect Objective C @selector:
- * @selector(msgNameWithNoArg)
- * @selector(msgNameWith1Arg:)
- * @selector(msgNameWith2Args:arg2Name:)
- */
- if ( pc->Is(CT_OC_SEL)
- && next->Is(CT_PAREN_OPEN))
- {
- next->SetParentType(pc->GetType());
-
- Chunk *tmp = next->GetNext();
-
- if (tmp->IsNotNullChunk())
- {
- tmp->SetType(CT_OC_SEL_NAME);
- tmp->SetParentType(pc->GetType());
-
- while ((tmp = tmp->GetNextNcNnl())->IsNotNullChunk())
- {
- if (tmp->Is(CT_PAREN_CLOSE))
- {
- tmp->SetParentType(CT_OC_SEL);
- break;
- }
- tmp->SetType(CT_OC_SEL_NAME);
- tmp->SetParentType(pc->GetType());
- }
- }
- }
-
- // Handle special preprocessor junk
- if (pc->Is(CT_PREPROC))
- {
- pc->SetParentType(next->GetType());
- }
-
- // Detect "pragma region" and "pragma endregion"
- if ( pc->Is(CT_PP_PRAGMA)
- && next->Is(CT_PREPROC_BODY))
- {
- if ( (strncmp(next->GetStr().c_str(), "region", 6) == 0)
- || (strncmp(next->GetStr().c_str(), "endregion", 9) == 0))
- // TODO: probably better use strncmp
- {
- pc->SetType((*next->GetStr().c_str() == 'r') ? CT_PP_REGION : CT_PP_ENDREGION);
-
- prev->SetParentType(pc->GetType());
- }
- }
-
- // Change 'default(' into a sizeof-like statement
- if ( language_is_set(LANG_CS)
- && pc->Is(CT_DEFAULT)
- && next->Is(CT_PAREN_OPEN))
- {
- pc->SetType(CT_SIZEOF);
- }
-
- if ( pc->Is(CT_UNSAFE)
- && next->IsNot(CT_BRACE_OPEN))
- {
- pc->SetType(CT_QUALIFIER);
- }
-
- if ( ( pc->Is(CT_USING)
- || ( pc->Is(CT_TRY)
- && language_is_set(LANG_JAVA)))
- && next->Is(CT_PAREN_OPEN))
- {
- pc->SetType(CT_USING_STMT);
- }
-
- // Add minimal support for C++0x rvalue references
- if ( pc->Is(CT_BOOL)
- && language_is_set(LANG_CPP)
- && pc->IsString("&&"))
- {
- if (prev->Is(CT_TYPE))
- {
- // Issue # 1002
- if (!pc->TestFlags(PCF_IN_TEMPLATE))
- {
- pc->SetType(CT_BYREF);
- }
- }
- }
-
- /*
- * HACK: treat try followed by a colon as a qualifier to handle this:
- * A::A(int) try : B() { } catch (...) { }
- */
- if ( pc->Is(CT_TRY)
- && pc->IsString("try")
- && next->Is(CT_COLON))
- {
- pc->SetType(CT_QUALIFIER);
- }
-
- /*
- * If Java's 'synchronized' is in a method declaration, it should be
- * a qualifier.
- */
- if ( language_is_set(LANG_JAVA)
- && pc->Is(CT_SYNCHRONIZED)
- && next->IsNot(CT_PAREN_OPEN))
- {
- pc->SetType(CT_QUALIFIER);
- }
-
- // change CT_DC_MEMBER + CT_FOR into CT_DC_MEMBER + CT_FUNC_CALL
- if ( pc->Is(CT_FOR)
- && pc->GetPrev()->Is(CT_DC_MEMBER))
- {
- pc->SetType(CT_FUNC_CALL);
- }
- // TODO: determine other stuff here
-
- prev = pc;
- pc = next;
- next = pc->GetNextNcNnl();
- }
-} // tokenize_cleanup
-
-
-bool invalid_open_angle_template(Chunk *prev)
-{
- if (prev == nullptr)
- {
- return(false);
- }
- // A template requires a word/type right before the open angle
- return( prev->IsNot(CT_WORD)
- && prev->IsNot(CT_TYPE)
- && prev->IsNot(CT_COMMA)
- && prev->IsNot(CT_QUALIFIER)
- && prev->IsNot(CT_OPERATOR_VAL)
- && prev->GetParentType() != CT_OPERATOR);
-}
-
-
-static void check_template(Chunk *start, bool in_type_cast)
-{
- LOG_FMT(LTEMPL, "%s(%d): orig line %zu, orig col %zu:\n",
- __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol());
-
- Chunk *prev = start->GetPrevNcNnl(E_Scope::PREPROC);
-
- if (prev->IsNullChunk())
- {
- return;
- }
- Chunk *end;
- Chunk *pc;
-
- if (prev->Is(CT_TEMPLATE))
- {
- LOG_FMT(LTEMPL, "%s(%d): CT_TEMPLATE:\n", __func__, __LINE__);
-
- // We have: "template< ... >", which is a template declaration
- size_t level = 1;
- size_t parens = 0;
-
- for (pc = start->GetNextNcNnl(E_Scope::PREPROC);
- pc->IsNotNullChunk();
- pc = pc->GetNextNcNnl(E_Scope::PREPROC))
- {
- LOG_FMT(LTEMPL, "%s(%d): type is %s, level is %zu\n",
- __func__, __LINE__, get_token_name(pc->GetType()), level);
-
- if ( (pc->GetStr()[0] == '>')
- && (pc->Len() > 1))
- {
- if (pc->GetStr()[1] == '=') // Issue #1462 and #2565
- {
- LOG_FMT(LTEMPL, "%s(%d): do not split '%s' at orig line %zu, orig col %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- }
- else
- {
- LOG_FMT(LTEMPL, "%s(%d): {split '%s' at orig line %zu, orig col %zu}\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
- split_off_angle_close(pc);
- }
- }
-
- if (pc->Is(CT_DECLTYPE))
- {
- flag_cpp_decltype(pc);
- }
- else if (pc->Is(CT_PAREN_OPEN))
- {
- ++parens;
- }
- else if (pc->Is(CT_PAREN_CLOSE))
- {
- --parens;
- }
-
- if (parens == 0)
- {
- if (pc->IsString("<"))
- {
- level++;
- }
- else if (pc->IsString(">"))
- {
- if (level == 0)
- {
- fprintf(stderr, "%s(%d): level is ZERO, cannot be decremented, at line %zu, column %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- level--;
-
- if (level == 0)
- {
- break;
- }
- }
- }
- }
-
- end = pc;
- }
- else
- {
- /*
- * We may have something like "a< ... >", which is a template where
- * '...' may consist of anything except a semicolon, unbalanced
- * parens, or braces (with one exception being braced initializers
- * embedded within decltypes).
- *
- * For example, braces may be encountered as such in the following
- * snippet of valid C++ code:
- *
- * template<typename T,
- * typename = enable_if_t<is_same<typename decay<T>::type,
- * decltype (make_index_sequence<5> { })>::value>>
- * void foo(T &&arg)
- * {
- *
- * }
- *
- * Finally, if we are inside an 'if' statement and hit a CT_BOOL,
- * then it isn't a template.
- */
-
- if (invalid_open_angle_template(prev))
- {
- LOG_FMT(LTEMPL, "%s(%d): - after type %s + ( - Not a template\n",
- __func__, __LINE__, get_token_name(prev->GetType()));
- start->SetType(CT_COMPARE);
- return;
- }
- LOG_FMT(LTEMPL, "%s(%d): - prev->GetType() is %s -\n",
- __func__, __LINE__, get_token_name(prev->GetType()));
-
- // Scan back and make sure we aren't inside square parenthesis
- bool in_if = false;
- bool hit_semicolon = false;
- pc = start->GetPrevNcNnl(E_Scope::PREPROC);
-
- while (pc->IsNotNullChunk())
- {
- if ( ( pc->Is(CT_SEMICOLON)
- && hit_semicolon)
- || pc->Is(CT_SQUARE_CLOSE))
- {
- break;
- }
-
- if (pc->Is(CT_DECLTYPE))
- {
- flag_cpp_decltype(pc);
- }
-
- if (pc->Is(CT_BRACE_OPEN))
- {
- if ( !pc->TestFlags(PCF_IN_DECLTYPE)
- || !detect_cpp_braced_init_list(pc->GetPrev(), pc))
- {
- break;
- }
- flag_cpp_braced_init_list(pc->GetPrev(), pc);
- }
-
- if ( pc->Is(CT_BRACE_CLOSE)
- && pc->GetParentType() != CT_BRACED_INIT_LIST
- && !pc->TestFlags(PCF_IN_DECLTYPE))
- {
- break;
- }
-
- if ( pc->Is(CT_SEMICOLON)
- && !hit_semicolon)
- {
- hit_semicolon = true;
- }
-
- if ( ( ( pc->Is(CT_IF)
- || pc->Is(CT_RETURN)
- || pc->Is(CT_WHILE)
- || pc->Is(CT_WHILE_OF_DO))
- && !hit_semicolon)
- || ( pc->Is(CT_FOR)
- && hit_semicolon))
- {
- in_if = true;
- break;
- }
- pc = pc->GetPrevNcNnl(E_Scope::PREPROC);
- }
- /*
- * Scan forward to the angle close
- * If we have a comparison in there, then it can't be a template.
- */
- const int max_token_count = 1024;
- E_Token tokens[max_token_count];
- size_t num_tokens = 1;
-
- tokens[0] = CT_ANGLE_OPEN;
-
- for (pc = start->GetNextNcNnl(E_Scope::PREPROC);
- pc->IsNotNullChunk();
- pc = pc->GetNextNcNnl(E_Scope::PREPROC))
- {
- constexpr static auto LCURRENT = LTEMPL;
-
- LOG_FMT(LTEMPL, "%s(%d): pc orig line is %zu, orig col is %zu, type is %s, num_tokens is %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()), num_tokens);
-
- log_rule_B("tok_split_gte");
-
- if (pc->Is(CT_BRACE_OPEN)) // Issue #2886
- {
- // look for the closing brace
- Chunk *A = pc->GetClosingParen();
- LOG_FMT(LTEMPL, "%s(%d): A orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, A->GetOrigLine(), A->GetOrigCol(), get_token_name(A->GetType()));
- pc = A->GetNext();
- }
-
- if ( (tokens[num_tokens - 1] == CT_ANGLE_OPEN)
- && (pc->GetStr()[0] == '>')
- && (pc->Len() > 1)
- && ( options::tok_split_gte()
- || ( ( pc->IsString(">>")
- || pc->IsString(">>>"))
- && ( num_tokens >= 2
- || ( num_tokens >= 1
- && in_type_cast)))))
- {
- LOG_FMT(LTEMPL, "%s(%d): {split '%s' at orig line %zu, orig col %zu}\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
-
- split_off_angle_close(pc);
- }
-
- if (pc->IsString("<"))
- {
- if ( num_tokens > 0 && (tokens[num_tokens - 1] == CT_PAREN_OPEN)
- && invalid_open_angle_template(pc->GetPrev()))
- {
- pc->SetType(CT_COMPARE); // Issue #3127
- }
- else
- {
- tokens[num_tokens] = CT_ANGLE_OPEN;
- num_tokens++;
- }
- }
- else if (pc->IsString(">"))
- {
- if (num_tokens > 0 && (tokens[num_tokens - 1] == CT_PAREN_OPEN))
- {
- handle_double_angle_close(pc);
- }
- else if (--num_tokens <= 0)
- {
- break;
- }
- else if (tokens[num_tokens] != CT_ANGLE_OPEN)
- {
- break; // unbalanced parentheses
- }
- }
- else if ( in_if
- && ( pc->Is(CT_BOOL)
- || pc->Is(CT_COMPARE)))
- {
- break;
- }
- else if (pc->Is(CT_BRACE_OPEN))
- {
- if ( !pc->TestFlags(PCF_IN_DECLTYPE)
- || !detect_cpp_braced_init_list(pc->GetPrev(), pc))
- {
- break;
- }
- auto brace_open = pc->GetNextNcNnl();
- auto brace_close = brace_open->GetClosingParen();
-
- brace_open->SetParentType(CT_BRACED_INIT_LIST);
- brace_close->SetParentType(CT_BRACED_INIT_LIST);
- }
- else if ( pc->Is(CT_BRACE_CLOSE)
- && pc->GetParentType() != CT_BRACED_INIT_LIST
- && !pc->TestFlags(PCF_IN_DECLTYPE))
- {
- break;
- }
- else if (pc->Is(CT_SEMICOLON))
- {
- break;
- }
- else if (pc->Is(CT_PAREN_OPEN))
- {
- if (num_tokens >= max_token_count - 1)
- {
- break;
- }
- tokens[num_tokens] = CT_PAREN_OPEN;
- num_tokens++;
- }
- else if ( pc->Is(CT_QUESTION) // Issue #2949
- && language_is_set(LANG_CPP))
- {
- break;
- }
- else if (pc->Is(CT_PAREN_CLOSE))
- {
- if (num_tokens == 0)
- {
- fprintf(stderr, "%s(%d): num_tokens is ZERO, cannot be decremented, at line %zu, column %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- num_tokens--;
-
- if (tokens[num_tokens] != CT_PAREN_OPEN)
- {
- break; // unbalanced parentheses
- }
- }
- }
-
- end = pc;
- }
-
- if (end->Is(CT_ANGLE_CLOSE))
- {
- pc = end->GetNextNcNnl(E_Scope::PREPROC);
-
- if ( pc->IsNullChunk()
- || pc->IsNot(CT_NUMBER))
- {
- LOG_FMT(LTEMPL, "%s(%d): Template detected\n", __func__, __LINE__);
- LOG_FMT(LTEMPL, "%s(%d): from orig line %zu, orig col %zu\n",
- __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol());
- LOG_FMT(LTEMPL, "%s(%d): to orig line %zu, orig col %zu\n",
- __func__, __LINE__, end->GetOrigLine(), end->GetOrigCol());
- start->SetParentType(CT_TEMPLATE);
-
- check_template_args(start, end);
-
- end->SetParentType(CT_TEMPLATE);
- end->SetFlagBits(PCF_IN_TEMPLATE);
- return;
- }
- }
- LOG_FMT(LTEMPL, "%s(%d): - Not a template: end = %s\n",
- __func__, __LINE__, (end != nullptr) ? get_token_name(end->GetType()) : "<null>");
- start->SetType(CT_COMPARE);
-} // check_template
-
-
-static void check_template_arg(Chunk *start, Chunk *end)
-{
- LOG_FMT(LTEMPL, "%s(%d): Template argument detected\n", __func__, __LINE__);
- LOG_FMT(LTEMPL, "%s(%d): from orig line %zu, orig col %zu\n",
- __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol());
- LOG_FMT(LTEMPL, "%s(%d): to orig line %zu, orig col %zu\n",
- __func__, __LINE__, end->GetOrigLine(), end->GetOrigCol());
-
- // Issue #1127
- // MyFoo<mySize * 2> foo1;
- // MyFoo<2*mySize * 2> foo1;
- // Issue #1346
- // use it as ONE line:
- // typename std::enable_if<!std::is_void<T>::value,
- // QVector<T> >::type dummy(const std::function<T*(const S&)>&
- // pFunc, const QVector<S>& pItems)
- // we need two runs
- // 1. run to test if expression is numeric
- bool expressionIsNumeric = false;
- Chunk *pc = start;
-
- while (pc != end)
- {
- Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
- // a test "if (next == nullptr)" is not necessary
- pc->SetFlagBits(PCF_IN_TEMPLATE);
-
- if ( pc->Is(CT_DECLTYPE)
- || pc->Is(CT_SIZEOF))
- {
- expressionIsNumeric = true;
- break;
- }
-
- if (next->IsNot(CT_PAREN_OPEN))
- {
- if ( pc->Is(CT_NUMBER)
- || pc->Is(CT_ARITH)
- || pc->Is(CT_SHIFT))
- {
- expressionIsNumeric = true;
- break;
- }
- }
- pc = next;
- }
- LOG_FMT(LTEMPL, "%s(%d): expressionIsNumeric is %s\n",
- __func__, __LINE__, expressionIsNumeric ? "TRUE" : "FALSE");
-
- // 2. run to do the work
- if (!expressionIsNumeric)
- {
- pc = start;
-
- while (pc != end)
- {
- Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
- // a test "if (next == nullptr)" is not necessary
- pc->SetFlagBits(PCF_IN_TEMPLATE);
-
- Chunk *prev = pc->GetPrevNcNnl(E_Scope::PREPROC);
- Chunk *prev2 = prev->GetPrevNcNnl(E_Scope::PREPROC);
-
- if ( prev->Is(CT_ELLIPSIS) // Issue #3309
- && prev2->Is(CT_TYPENAME))
- {
- pc->SetType(CT_PARAMETER_PACK);
- }
- else
- {
- make_type(pc);
- }
- pc = next;
- }
- }
-} // check_template_arg
-
-
-static void check_template_args(Chunk *start, Chunk *end)
-{
- std::vector<E_Token> tokens;
-
- // Scan for commas
- Chunk *pc;
-
- for (pc = start->GetNextNcNnl(E_Scope::PREPROC);
- pc->IsNotNullChunk() && pc != end;
- pc = pc->GetNextNcNnl(E_Scope::PREPROC))
- {
- switch (pc->GetType())
- {
- case CT_COMMA:
-
- if (tokens.empty())
- {
- // Check current argument
- check_template_args(start, pc);
- start = pc;
- }
- break;
-
- case CT_ANGLE_OPEN:
- case CT_PAREN_OPEN:
- tokens.push_back(pc->GetType());
- break;
-
- case CT_ANGLE_CLOSE:
-
- if ( !tokens.empty()
- && tokens.back() == CT_ANGLE_OPEN)
- {
- tokens.pop_back();
- }
- break;
-
- case CT_PAREN_CLOSE:
-
- if ( !tokens.empty()
- && tokens.back() == CT_PAREN_OPEN)
- {
- tokens.pop_back();
- }
- break;
-
- default:
- break;
- }
- }
-
- // Check whatever is left
- check_template_arg(start, end);
-} // check_template_args
-
-
-static void cleanup_objc_property(Chunk *start)
-{
- assert(start->Is(CT_OC_PROPERTY));
-
- Chunk *open_paren = start->GetNextType(CT_PAREN_OPEN, start->GetLevel());
-
- if (open_paren->IsNullChunk())
- {
- LOG_FMT(LTEMPL, "%s(%d): Property is not followed by opening paren\n", __func__, __LINE__);
- return;
- }
- open_paren->SetParentType(start->GetType());
-
- Chunk *tmp = start->GetNextType(CT_PAREN_CLOSE, start->GetLevel());
-
- if (tmp->IsNotNullChunk())
- {
- tmp->SetParentType(start->GetType());
- tmp = tmp->GetNextNcNnl();
-
- if (tmp->IsNotNullChunk())
- {
- tmp->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
-
- tmp = tmp->GetNextType(CT_SEMICOLON, start->GetLevel());
-
- if (tmp->IsNotNullChunk())
- {
- tmp->SetParentType(start->GetType());
- }
- }
- }
- mark_selectors_in_property_with_open_paren(open_paren);
- mark_attributes_in_property_with_open_paren(open_paren);
-}
-
-
-static void mark_selectors_in_property_with_open_paren(Chunk *open_paren)
-{
- assert(open_paren->Is(CT_PAREN_OPEN));
-
- Chunk *tmp = open_paren;
-
- while (tmp->IsNot(CT_PAREN_CLOSE))
- {
- if ( tmp->Is(CT_WORD)
- && ( tmp->IsString("setter")
- || tmp->IsString("getter")))
- {
- tmp = tmp->GetNext();
-
- while ( tmp->IsNotNullChunk()
- && tmp->IsNot(CT_COMMA)
- && tmp->IsNot(CT_PAREN_CLOSE))
- {
- if ( tmp->Is(CT_WORD)
- || tmp->IsString(":"))
- {
- tmp->SetType(CT_OC_SEL_NAME);
- }
- tmp = tmp->GetNext();
- }
- }
- else
- {
- tmp = tmp->GetNext();
- }
- }
-}
-
-
-static void mark_attributes_in_property_with_open_paren(Chunk *open_paren)
-{
- assert(open_paren->Is(CT_PAREN_OPEN));
-
- Chunk *tmp = open_paren;
-
- while (tmp->IsNot(CT_PAREN_CLOSE))
- {
- Chunk *next = tmp->GetNext();
-
- if ( ( tmp->Is(CT_COMMA)
- || tmp->Is(CT_PAREN_OPEN))
- && ( next->Is(CT_WORD)
- || next->Is(CT_TYPE)))
- {
- next->SetType(CT_OC_PROPERTY_ATTR);
- }
- tmp = next;
- }
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize_cleanup.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize_cleanup.h
deleted file mode 100644
index 1789ee26..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/tokenize_cleanup.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * @file tokenize_cleanup.h
- * prototypes for tokenize_cleanup.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-#ifndef TOKENIZ_CLEANUP_H_INCLUDED
-#define TOKENIZ_CLEANUP_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-
-/**
- * @brief clean up tokens
- *
- * Change certain token types based on simple sequence.
- * Example: change '[' + ']' to '[]'
- * Note that level info is not yet available, so it is OK to do all
- * processing that doesn't need to know level info. (that's very little!)
- */
-void tokenize_cleanup();
-
-
-void tokenize_trailing_return_types();
-
-
-void split_off_angle_close(Chunk *pc);
-
-
-#endif /* TOKENIZ_CLEANUP_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_text.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_text.cpp
deleted file mode 100644
index 1f96a67c..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_text.cpp
+++ /dev/null
@@ -1,759 +0,0 @@
-/**
- * @file unc_text.cpp
- * A simple class that handles the chunk text.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "unc_text.h"
-
-#include "unc_ctype.h"
-#include "unicode.h" // encode_utf8()
-
-#include <algorithm>
-#include <stdexcept>
-
-
-using namespace std;
-
-
-static constexpr const int_fast8_t UTF8_BLOCKS = 6; // 6 -> max utf8 blocks per char
-
-
-static size_t fix_len_idx(size_t size, size_t idx, size_t len);
-
-//! converts \n and \r chars are into NL and CR UTF8 symbols before encode_utf8 is called
-static void toLogTextUtf8(int c, unc_text::log_type &container);
-
-/**
- * calculates the size a 'log_type' container needs to have in order to take
- * in values of a 'unc_text::value_type' up to idx
- * (without \0, with symbols for the converted \n and \r chars)
- *
- * throws if char is greater than 0x7fffffff
- */
-static int getLogTextUtf8Len(unc_text::value_type &c0, size_t end);
-
-static int getLogTextUtf8Len(unc_text::value_type &c0, size_t start, size_t end);
-
-
-static int getLogTextUtf8Len(unc_text::value_type &c0, size_t start, size_t end)
-{
- size_t c1_idx = 0;
-
- for (size_t i = start; i < end; ++i)
- {
- auto ch = c0[i];
-
- if (ch == '\n')
- {
- ch = 0x2424; // NL symbol
- }
- else if (ch == '\r')
- {
- ch = 0x240d; // CR symbol
- }
-
- if (ch < 0x80) // 1-byte sequence
- {
- c1_idx += 1;
- }
- else if (ch < 0x0800) // 2-byte sequence
- {
- c1_idx += 2;
- }
- else if (ch < 0x10000) // 3-byte sequence
- {
- c1_idx += 3;
- }
- else if (ch < 0x200000) // 4-byte sequence
- {
- c1_idx += 4;
- }
- else if (ch < 0x4000000) // 5-byte sequence
- {
- c1_idx += 5;
- }
- else if (ch <= 0x7fffffff) // 6-byte sequence
- {
- c1_idx += 6;
- }
- else
- {
- throw out_of_range(string(__func__) + ":" + to_string(__LINE__)
- + " - ch value too big, can't convert to utf8");
- }
- }
-
- return(c1_idx);
-} // getLogTextUTF8Len
-
-
-static int getLogTextUtf8Len(unc_text::value_type &c0, size_t end)
-{
- return(getLogTextUtf8Len(c0, 0, end));
-}
-
-
-static void toLogTextUtf8(int c, unc_text::log_type &container)
-{
- if (c == '\n')
- {
- c = 0x2424; // NL symbol
- }
- else if (c == '\r')
- {
- c = 0x240d; // CR symbol
- }
- encode_utf8(c, container);
-}
-
-
-static size_t fix_len_idx(size_t size, size_t idx, size_t len)
-{
- if (idx >= size)
- {
- return(0);
- }
- const size_t left = size - idx;
-
- return((len > left) ? left : len);
-}
-
-
-unc_text::unc_text()
-{
- m_logtext = log_type{ '\0' };
-}
-
-
-unc_text::unc_text(const unc_text &ref)
-{
- set(ref);
-}
-
-
-unc_text::unc_text(const unc_text &ref, size_t idx, size_t len)
-{
- set(ref, idx, len);
-}
-
-
-unc_text::unc_text(const char *ascii_text)
-{
- set(ascii_text);
-}
-
-
-unc_text::unc_text(const std::string &ascii_text)
-{
- set(ascii_text);
-}
-
-
-unc_text::unc_text(const value_type &data, size_t idx, size_t len)
-{
- set(data, idx, len);
-}
-
-
-size_t unc_text::size() const
-{
- return(m_chars.size());
-}
-
-
-unc_text &unc_text::operator=(int ch)
-{
- set(ch);
- return(*this);
-}
-
-
-unc_text &unc_text::operator=(const unc_text &ref)
-{
- set(ref);
- return(*this);
-}
-
-
-unc_text &unc_text::operator=(const std::string &ascii_text)
-{
- set(ascii_text);
- return(*this);
-}
-
-
-unc_text &unc_text::operator=(const char *ascii_text)
-{
- set(ascii_text);
- return(*this);
-}
-
-
-unc_text &unc_text::operator+=(int ch)
-{
- append(ch);
- return(*this);
-}
-
-
-unc_text &unc_text::operator+=(const unc_text &ref)
-{
- append(ref);
- return(*this);
-}
-
-
-unc_text &unc_text::operator+=(const std::string &ascii_text)
-{
- append(ascii_text);
- return(*this);
-}
-
-
-unc_text &unc_text::operator+=(const char *ascii_text)
-{
- append(ascii_text);
- return(*this);
-}
-
-
-const unc_text::value_type &unc_text::get() const
-{
- return(m_chars);
-}
-
-
-int unc_text::operator[](size_t idx) const
-{
- return((idx < m_chars.size()) ? m_chars[idx] : 0);
-}
-
-
-const int &unc_text::at(size_t idx) const
-{
- return(m_chars.at(idx));
-}
-
-
-const int &unc_text::back() const
-{
- return(m_chars.back());
-}
-
-
-void unc_text::push_back(int ch)
-{
- append(ch);
-}
-
-
-void unc_text::pop_back()
-{
- if (size() == 0)
- {
- return;
- }
- m_chars.pop_back();
- update_logtext();
-}
-
-
-void unc_text::pop_front()
-{
- if (size() == 0)
- {
- return;
- }
- m_chars.pop_front();
- update_logtext();
-}
-
-
-void unc_text::update_logtext()
-{
- // make a pessimistic guess at the size
- m_logtext.clear();
- m_logtext.reserve(m_chars.size() * 3);
-
- for (int m_char : m_chars)
- {
- toLogTextUtf8(m_char, m_logtext);
- }
-
- m_logtext.push_back(0);
-}
-
-
-int unc_text::compare(const unc_text &ref1, const unc_text &ref2, size_t len, bool tcare)
-{
- const size_t len1 = ref1.size();
- const size_t len2 = ref2.size();
- const auto max_idx = std::min({ len, len1, len2 });
- size_t idx = 0;
-
- for ( ; idx < max_idx; idx++)
- {
- // exactly the same character ?
- if (ref1.m_chars[idx] == ref2.m_chars[idx])
- {
- continue;
- }
- int diff; // Issue #2091
-
- if (tcare)
- {
- diff = ref1.m_chars[idx] - ref2.m_chars[idx];
- }
- else
- {
- diff = unc_tolower(ref1.m_chars[idx]) - unc_tolower(ref2.m_chars[idx]);
- }
-
- if (diff == 0)
- {
- /*
- * if we're comparing the same character but in different case
- * we want to favor lower case before upper case (e.g. a before A)
- * so the order is the reverse of ASCII order (we negate).
- */
- return(-(ref1.m_chars[idx] - ref2.m_chars[idx]));
- }
- // return the case-insensitive diff to sort alphabetically
- return(diff);
- }
-
- if (idx == len)
- {
- return(0);
- }
- // underflow save: return(len1 - len2);
- return((len1 > len2) ? (len1 - len2) : -static_cast<int>(len2 - len1));
-} // unc_text::compare
-
-
-bool unc_text::equals(const unc_text &ref) const
-{
- const size_t len = size();
-
- if (ref.size() != len)
- {
- return(false);
- }
-
- for (size_t idx = 0; idx < len; idx++)
- {
- if (m_chars[idx] != ref.m_chars[idx])
- {
- return(false);
- }
- }
-
- return(true);
-}
-
-
-const char *unc_text::c_str() const
-{
- return(reinterpret_cast<const char *>(&m_logtext[0]));
-}
-
-
-void unc_text::set(int ch)
-{
- m_logtext.clear();
- toLogTextUtf8(ch, m_logtext);
- m_logtext.push_back('\0');
-
-
- m_chars.clear();
- m_chars.push_back(ch);
-}
-
-
-void unc_text::set(const unc_text &ref)
-{
- m_chars = ref.m_chars;
- m_logtext = ref.m_logtext;
-}
-
-
-void unc_text::set(const unc_text &ref, size_t idx, size_t len)
-{
- const auto ref_size = ref.size();
-
- if (len == ref_size)
- {
- m_chars = ref.m_chars;
- update_logtext();
- return;
- }
- m_chars.resize(len);
-
- len = fix_len_idx(ref_size, idx, len);
-
- for (size_t di = 0;
- len > 0;
- di++, idx++, len--)
- {
- m_chars[di] = ref.m_chars[idx];
- }
-
- update_logtext();
-}
-
-
-void unc_text::set(const string &ascii_text)
-{
- const size_t len = ascii_text.size();
-
- m_chars.resize(len);
-
- for (size_t idx = 0; idx < len; idx++)
- {
- m_chars[idx] = ascii_text[idx];
- }
-
- update_logtext();
-}
-
-
-void unc_text::set(const char *ascii_text)
-{
- const size_t len = strlen(ascii_text);
-
- m_chars.resize(len);
-
- for (size_t idx = 0; idx < len; idx++)
- {
- m_chars[idx] = *ascii_text++;
- }
-
- update_logtext();
-}
-
-
-void unc_text::set(const value_type &data, size_t idx, size_t len)
-{
- m_chars.resize(len);
-
- len = fix_len_idx(data.size(), idx, len);
-
- for (size_t di = 0;
- len > 0;
- di++, idx++, len--)
- {
- m_chars[di] = data[idx];
- }
-
- update_logtext();
-}
-
-
-void unc_text::resize(size_t new_size)
-{
- if (size() == new_size)
- {
- return;
- }
- const auto log_new_size = getLogTextUtf8Len(m_chars, new_size);
-
- m_logtext.resize(log_new_size + 1); // one extra for \0
- m_logtext[log_new_size] = '\0';
-
-
- m_chars.resize(new_size);
-}
-
-
-void unc_text::clear()
-{
- m_logtext.clear();
- m_logtext.push_back('\0');
-
-
- m_chars.clear();
-}
-
-
-void unc_text::insert(size_t idx, int ch)
-{
- if (idx >= m_chars.size())
- {
- throw out_of_range(string(__func__) + ":" + to_string(__LINE__)
- + " - idx >= m_chars.size()");
- }
- log_type utf8converted;
-
- utf8converted.reserve(UTF8_BLOCKS);
- toLogTextUtf8(ch, utf8converted);
-
- const auto utf8_idx = getLogTextUtf8Len(m_chars, idx);
-
- m_logtext.pop_back(); // remove '\0'
- m_logtext.insert(std::next(std::begin(m_logtext), utf8_idx),
- std::begin(utf8converted), std::end(utf8converted));
- m_logtext.push_back('\0');
-
-
- m_chars.insert(std::next(std::begin(m_chars), idx), ch);
-}
-
-
-void unc_text::insert(size_t idx, const unc_text &ref)
-{
- if (ref.size() == 0)
- {
- return;
- }
-
- if (idx >= m_chars.size())
- {
- throw out_of_range(string(__func__) + ":" + to_string(__LINE__)
- + " - idx >= m_chars.size()");
- }
- const auto utf8_idx = getLogTextUtf8Len(m_chars, idx);
-
- // (A+B) remove \0 from both containers, add back a single at the end
- m_logtext.pop_back(); // A
- m_logtext.insert(std::next(std::begin(m_logtext), utf8_idx),
- std::begin(ref.m_logtext),
- std::prev(std::end(ref.m_logtext))); // B
- m_logtext.push_back('\0');
-
-
- m_chars.insert(std::next(std::begin(m_chars), idx),
- std::begin(ref.m_chars), std::end(ref.m_chars));
-}
-
-
-void unc_text::append(int ch)
-{
- m_logtext.pop_back();
-
- if ( ch < 0x80
- && ch != '\n'
- && ch != '\r')
- {
- m_logtext.push_back(ch);
- }
- else
- {
- log_type utf8converted;
- utf8converted.reserve(UTF8_BLOCKS);
- toLogTextUtf8(ch, utf8converted);
-
- m_logtext.insert(std::end(m_logtext),
- std::begin(utf8converted), std::end(utf8converted));
- }
- m_logtext.push_back('\0');
-
-
- m_chars.push_back(ch);
-}
-
-
-void unc_text::append(const unc_text &ref)
-{
- if (ref.size() == 0)
- {
- return;
- }
- m_logtext.pop_back();
- m_logtext.insert(std::end(m_logtext),
- std::begin(ref.m_logtext), std::end(ref.m_logtext));
-
- m_chars.insert(m_chars.end(), ref.m_chars.begin(), ref.m_chars.end());
-}
-
-
-void unc_text::append(const string &ascii_text)
-{
- unc_text tmp(ascii_text);
-
- append(tmp);
-}
-
-
-void unc_text::append(const char *ascii_text)
-{
- unc_text tmp(ascii_text);
-
- append(tmp);
-}
-
-
-void unc_text::append(const value_type &data, size_t idx, size_t len)
-{
- unc_text tmp(data, idx, len);
-
- append(tmp);
-}
-
-
-bool unc_text::startswith(const char *text, size_t idx) const
-{
- const auto orig_idx = idx;
-
- for ( ;
- ( idx < size()
- && *text);
- idx++, text++)
- {
- if (*text != m_chars[idx])
- {
- return(false);
- }
- }
-
- return( idx != orig_idx
- && (*text == 0));
-}
-
-
-bool unc_text::startswith(const unc_text &text, size_t idx) const
-{
- size_t si = 0;
- const auto orig_idx = idx;
-
- for ( ;
- ( idx < size()
- && si < text.size());
- idx++, si++)
- {
- if (text.m_chars[si] != m_chars[idx])
- {
- return(false);
- }
- }
-
- return( idx != orig_idx
- && (si == text.size()));
-}
-
-
-int unc_text::find(const char *search_txt, size_t start_idx) const
-{
- const size_t t_len = strlen(search_txt); // the length of 'text' we are looking for
- const size_t s_len = size(); // the length of the string we are looking in
-
- if ( s_len < t_len // search_txt longer than the string we are looking in
- || start_idx + t_len - 1 >= s_len) // starting position to high to find search_txt
- {
- return(-1);
- }
- const size_t end_idx = s_len - t_len;
-
- for (size_t idx = start_idx; idx <= end_idx; idx++)
- {
- bool match = true;
-
- for (size_t ii = 0; ii < t_len; ii++)
- {
- if (m_chars[idx + ii] != search_txt[ii])
- {
- match = false;
- break;
- }
- }
-
- if (match) // 'text' found at position 'idx'
- {
- return(idx);
- }
- }
-
- return(-1); // 'text' not found
-}
-
-
-int unc_text::rfind(const char *search_txt, size_t start_idx) const
-{
- const size_t t_len = strlen(search_txt); // the length of 'text' we are looking for
- const size_t s_len = size(); // the length of the string we are looking in
-
- if ( s_len < t_len // search_txt longer than the string we are looking in
- || start_idx < t_len - 1) // starting position to low to find search_txt
- {
- return(-1);
- }
- const size_t end_idx = s_len - t_len;
-
- if (start_idx > end_idx)
- {
- start_idx = end_idx;
- }
-
- for (auto idx = static_cast<int>(start_idx); idx >= 0; idx--)
- {
- bool match = true;
-
- for (size_t ii = 0; ii < t_len; ii++)
- {
- if (m_chars[idx + ii] != search_txt[ii])
- {
- match = false;
- break;
- }
- }
-
- if (match)
- {
- return(idx);
- }
- }
-
- return(-1);
-}
-
-
-void unc_text::erase(size_t start_idx, size_t len)
-{
- if (len == 0)
- {
- return;
- }
- const size_t end_idx = start_idx + len - 1;
-
- if (end_idx >= m_chars.size())
- {
- throw out_of_range(string(__func__) + ":" + to_string(__LINE__)
- + " - idx + len >= m_chars.size()");
- }
- const auto pos_s = getLogTextUtf8Len(m_chars, start_idx);
- const auto pos_e = pos_s + getLogTextUtf8Len(m_chars, start_idx, end_idx);
-
- m_logtext.pop_back();
- m_logtext.erase(std::next(std::begin(m_logtext), pos_s),
- std::next(std::begin(m_logtext), pos_e + 1));
- m_logtext.push_back('\0');
-
-
- m_chars.erase(std::next(std::begin(m_chars), start_idx),
- std::next(std::begin(m_chars), end_idx + 1));
-}
-
-
-int unc_text::replace(const char *search_text, const unc_text &replace_text)
-{
- const size_t s_len = strlen(search_text);
- const size_t r_len = replace_text.size();
-
- int rcnt = 0;
- int fidx = find(search_text);
-
- while (fidx >= 0)
- {
- rcnt++;
- erase(static_cast<size_t>(fidx), s_len);
-
- (static_cast<size_t>(fidx) >= m_chars.size())
- ? append(replace_text)
- : insert(static_cast<size_t>(fidx), replace_text);
-
- fidx = find(search_text, static_cast<size_t>(fidx) + r_len);
- }
- return(rcnt);
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_text.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_text.h
deleted file mode 100644
index dd678f16..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_text.h
+++ /dev/null
@@ -1,196 +0,0 @@
-/**
- * @file unc_text.h
- * A simple class that handles the chunk text.
- * At the start of processing, the entire file is decoded into a std::vector of ints.
- * This class is intended to hold sections of that large std::vector.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef UNC_TEXT_H_INCLUDED
-#define UNC_TEXT_H_INCLUDED
-
-#include "base_types.h"
-
-#include <deque>
-#include <string>
-#include <vector>
-
-
-/**
- * abbreviations used:
- * - unc_text - uncrustify text
- */
-
-class unc_text
-{
-public:
- typedef std::deque<int> value_type; // double encoded list of int values
- typedef std::vector<UINT8> log_type;
-
-
- unc_text();
-
- unc_text(const unc_text &ref);
-
- unc_text(const unc_text &ref, size_t idx, size_t len = 0);
-
- unc_text(const char *ascii_text);
-
- unc_text(const std::string &ascii_text);
-
- unc_text(const value_type &data, size_t idx = 0, size_t len = 0);
-
-
- ~unc_text() = default;
-
-
- void resize(size_t new_size);
-
-
- void clear();
-
-
- //! grab the number of characters
- size_t size() const;
-
-
- void set(int ch);
-
- void set(const unc_text &ref);
-
- void set(const unc_text &ref, size_t idx, size_t len = 0);
-
- void set(const std::string &ascii_text);
-
- void set(const char *ascii_text);
-
- void set(const value_type &data, size_t idx = 0, size_t len = 0);
-
-
- unc_text &operator=(int ch);
-
- unc_text &operator=(const unc_text &ref);
-
- unc_text &operator=(const std::string &ascii_text);
-
- unc_text &operator=(const char *ascii_text);
-
-
- void insert(size_t idx, int ch);
-
- void insert(size_t idx, const unc_text &ref);
-
-
- void erase(size_t idx, size_t len = 1);
-
-
- //! Add a unc_text character to an unc_text
- void append(int ch);
-
- void append(const unc_text &ref);
-
- //! Add a string to an unc_text
- void append(const std::string &ascii_text);
-
- /**
- * Add a variable length string to an unc_text.
- * The variable length string format is similar as for printf
- *
- * @note the overall length of the string must not exceed 256 characters
- *
- * @param ascii_text a variable length string
- */
- void append(const char *ascii_text);
-
- void append(const value_type &data, size_t idx = 0, size_t len = 0);
-
-
- unc_text &operator+=(int ch);
-
- unc_text &operator+=(const unc_text &ref);
-
- unc_text &operator+=(const std::string &ascii_text);
-
- unc_text &operator+=(const char *ascii_text);
-
-
- //! Returns the UTF-8 string for logging
- const char *c_str() const;
-
-
- /**
- * compares the content of two unc_text instances
- *
- * @param ref1 first instance to compare
- * @param ref2 second instance to compare
- * @param len number of character to compare
- * @param tcare take care of case (lower case/ upper case) Issue #2091
- *
- * @retval == 0 both text elements are equal
- * @retval > 0
- * @retval < 0
- */
- static int compare(const unc_text &ref1, const unc_text &ref2, size_t len = 0, bool tcare = false);
-
-
- bool equals(const unc_text &ref) const;
-
-
- //! grab the data as a series of ints for outputting to a file
- const value_type &get() const;
-
-
- int operator[](size_t idx) const;
-
-
- // throws an exception if out of bounds
- const int &at(size_t idx) const;
-
-
- //! returns the last element of the character list
- const int &back() const;
-
-
- void push_back(int ch);
-
-
- void pop_back();
-
-
- void pop_front();
-
-
- bool startswith(const unc_text &text, size_t idx = 0) const;
-
- bool startswith(const char *text, size_t idx = 0) const;
-
-
- /**
- * look for 'text', beginning with position 'sidx'
- *
- * @param text text to search for
- * @param idx position to start search
- *
- * @return == -1 if not found
- * @return >= 0 the position
- */
- int find(const char *text, size_t idx = 0) const;
-
-
- int rfind(const char *text, size_t idx = 0) const;
-
-
- int replace(const char *oldtext, const unc_text &newtext);
-
-
-protected:
- void update_logtext();
-
- value_type m_chars; //! this contains the non-encoded 31-bit chars
- log_type m_logtext; //! logging text, utf8 encoded - updated in c_str()
-};
-
-
-#endif /* UNC_TEXT_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_tools.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_tools.cpp
deleted file mode 100644
index 47425a83..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_tools.cpp
+++ /dev/null
@@ -1,496 +0,0 @@
-/**
- * @file unc_tools.cpp
- * This file contains lot of tools for debugging
- *
- * @author Guy Maurel
- * October 2015- 2021
- * @license GPL v2+
- */
-
-#include "unc_tools.h"
-
-#include "args.h"
-#include "output.h"
-
-
-/*
- * the test suite Coveralls: https://coveralls.io
- * will complains because these functions are only
- * used at development time.
- * Don't worry about unused lines for the functions:
- * prot_the_line
- * prot_the_source
- * examine_Data
- * dump_out
- * dump_in
- */
-
-static size_t counter = 0;
-static size_t tokenCounter;
-
-
-/* protocol of the line
- * examples:
- * prot_the_line(__func__, __LINE__, pc->GetOrigLine(), 0);
- * prot_the_line(__func__, __LINE__, 0, 0);
- * prot_the_line(__func__, __LINE__, 6, 5);
- * prot_the_source(__LINE__);
- * log_pcf_flags(LSYS, pc->GetFlags());
- *
- * if actual_line is zero, use the option debug_line_number_to_protocol.
- * if the value is zero, don't make any protocol and return.
- *
- * if partNumber is zero, all the tokens of the line are shown,
- * if partNumber is NOT zero, only the token with this partNumber is shown.
- *
- * prot_the_line_pc(pc_sub, __func__, __LINE__, 6, 5);
- * to get a protocol of a sub branch, which begins with pc_sub
- */
-void prot_the_line(const char *func_name, int theLine, unsigned int actual_line, size_t partNumber)
-{
- prot_the_line_pc(Chunk::GetHead(), func_name, theLine, actual_line, partNumber);
-}
-
-
-void prot_the_line_pc(Chunk *pc_sub, const char *func_name, int theLine, unsigned int actual_line, size_t partNumber)
-{
- if (actual_line == 0)
- {
- // use the option debug_line_number_to_protocol.
- actual_line = options::debug_line_number_to_protocol();
-
- if (actual_line == 0)
- {
- // don't make any protocol.
- return;
- }
- }
- counter++;
- tokenCounter = 0;
- LOG_FMT(LGUY, "Prot_the_line:(%s:%d)(%zu)\n", func_name, theLine, counter);
-
- for (Chunk *pc = pc_sub; pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if (pc->GetOrigLine() == actual_line)
- {
- tokenCounter++;
-
- if ( partNumber == 0
- || partNumber == tokenCounter)
- {
- LOG_FMT(LGUY, " orig line is %d, (%zu) ", actual_line, tokenCounter);
-
- if (pc->Is(CT_VBRACE_OPEN))
- {
- LOG_FMT(LGUY, "<VBRACE_OPEN>, ");
- }
- else if (pc->Is(CT_NEWLINE))
- {
- LOG_FMT(LGUY, "<NL>(new line count is %zu), ", pc->GetNlCount());
- }
- else if (pc->Is(CT_VBRACE_CLOSE))
- {
- LOG_FMT(LGUY, "<CT_VBRACE_CLOSE>, ");
- }
- else if (pc->Is(CT_VBRACE_OPEN))
- {
- LOG_FMT(LGUY, "<CT_VBRACE_OPEN>, ");
- }
- else if (pc->Is(CT_SPACE))
- {
- LOG_FMT(LGUY, "<CT_SPACE>, ");
- }
- else if (pc->Is(CT_IGNORED))
- {
- LOG_FMT(LGUY, "<IGNORED> ");
- }
- else
- {
- LOG_FMT(LGUY, "Text() '%s', ", pc->Text());
- }
- LOG_FMT(LGUY, " column is %zu, pp level is %zu, type is %s, parent type is %s, orig col is %zu,",
- pc->GetColumn(), pc->GetPpLevel(), get_token_name(pc->GetType()),
- get_token_name(pc->GetParentType()), pc->GetOrigCol());
-
- if (pc->Is(CT_IGNORED))
- {
- LOG_FMT(LGUY, "\n");
- }
- else
- {
- LOG_FMT(LGUY, " pc->GetFlags(): ");
- log_pcf_flags(LGUY, pc->GetFlags());
- }
-
- if (pc->GetTrackingData() != nullptr)
- {
- LOG_FMT(LGUY, " Tracking info are: \n");
- LOG_FMT(LGUY, " number of track(s) %zu\n", pc->GetTrackingData()->size());
-
- for (size_t track = 0; track < pc->GetTrackingData()->size(); track++)
- {
- const track_list *A = pc->GetTrackingData();
- const Track_nr B = A->at(track);
- size_t Bfirst = B.first;
- char *Bsecond = B.second;
-
- LOG_FMT(LGUY, " %zu, tracking number is %zu\n", track, Bfirst);
- LOG_FMT(LGUY, " %zu, rule is %s\n", track, Bsecond);
- }
- }
- }
- }
- }
-
- LOG_FMT(LGUY, "\n");
-} // prot_the_line_pc
-
-
-void prot_all_lines(const char *func_name, int theLine)
-{
- counter++;
- tokenCounter = 0;
- size_t lineNumber = 1;
-
- LOG_FMT(LGUY, "Prot_all_lines:(%s:%d)(%zu)\n", func_name, theLine, counter);
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- tokenCounter++;
-
- LOG_FMT(LGUY, " orig line is %zu,%zu, pp level is %zu, ", lineNumber, tokenCounter, pc->GetPpLevel());
-
- if (pc->Is(CT_VBRACE_OPEN))
- {
- LOG_FMT(LGUY, "<VBRACE_OPEN>, ");
- }
- else if (pc->Is(CT_NEWLINE))
- {
- LOG_FMT(LGUY, "<NL>(new line count is %zu), ", pc->GetNlCount());
- tokenCounter = 0;
- lineNumber = lineNumber + pc->GetNlCount();
- }
- else if (pc->Is(CT_VBRACE_CLOSE))
- {
- LOG_FMT(LGUY, "<CT_VBRACE_CLOSE>, ");
- }
- else if (pc->Is(CT_VBRACE_OPEN))
- {
- LOG_FMT(LGUY, "<CT_VBRACE_OPEN>, ");
- }
- else if (pc->Is(CT_SPACE))
- {
- LOG_FMT(LGUY, "<CT_SPACE>, ");
- }
- else if (pc->Is(CT_IGNORED))
- {
- LOG_FMT(LGUY, "<IGNORED> ");
- }
- else
- {
- LOG_FMT(LGUY, "Text() '%s', ", pc->Text());
- }
- LOG_FMT(LGUY, " column is %zu, type is %s\n",
- pc->GetColumn(), get_token_name(pc->GetType()));
- }
-} // prot_all_lines
-
-
-void prot_the_source(int theLine)
-{
- counter++;
- LOG_FMT(LGUY, "Prot_the_source:(%d)(%zu)\n", theLine, counter);
- output_text(stderr);
-}
-
-
-// examples:
-// examine_Data(__func__, __LINE__, n);
-void examine_Data(const char *func_name, int theLine, int what)
-{
- LOG_FMT(LGUY, "\n%s:", func_name);
-
- Chunk *pc;
-
- switch (what)
- {
- case 1:
-
- for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if ( pc->Is(CT_SQUARE_CLOSE)
- || pc->Is(CT_TSQUARE))
- {
- LOG_FMT(LGUY, "\n");
- LOG_FMT(LGUY, "1:(%d),", theLine);
- LOG_FMT(LGUY, "%s, orig col=%zu, orig col end=%zu\n", pc->Text(), pc->GetOrigCol(), pc->GetOrigColEnd());
- }
- }
-
- break;
-
- case 2:
- LOG_FMT(LGUY, "2:(%d)\n", theLine);
-
- for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if (pc->GetOrigLine() == 7)
- {
- if (pc->Is(CT_NEWLINE))
- {
- LOG_FMT(LGUY, "(%zu)<NL> col=%zu\n\n", pc->GetOrigLine(), pc->GetOrigCol());
- }
- else
- {
- LOG_FMT(LGUY, "(%zu)%s %s, col=%zu, column=%zu\n", pc->GetOrigLine(), pc->Text(), get_token_name(pc->GetType()), pc->GetOrigCol(), pc->GetColumn());
- }
- }
- }
-
- break;
-
- case 3:
- LOG_FMT(LGUY, "3:(%d)\n", theLine);
-
- for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if (pc->Is(CT_NEWLINE))
- {
- LOG_FMT(LGUY, "(%zu)<NL> col=%zu\n\n", pc->GetOrigLine(), pc->GetOrigCol());
- }
- else
- {
- LOG_FMT(LGUY, "(%zu)%s %s, col=%zu, column=%zu\n", pc->GetOrigLine(), pc->Text(), get_token_name(pc->GetType()), pc->GetOrigCol(), pc->GetColumn());
- }
- }
-
- break;
-
- case 4:
- LOG_FMT(LGUY, "4:(%d)\n", theLine);
-
- for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if (pc->GetOrigLine() == 6)
- {
- if (pc->Is(CT_NEWLINE))
- {
- LOG_FMT(LGUY, "(%zu)<NL> col=%zu\n\n", pc->GetOrigLine(), pc->GetOrigCol());
- }
- else
- {
- LOG_FMT(LGUY, "(%zu)%s %s, col=%zu, column=%zu\n", pc->GetOrigLine(), pc->Text(), get_token_name(pc->GetType()), pc->GetOrigCol(), pc->GetColumn());
- }
- }
- }
-
- break;
-
- default:
- break;
- } // switch
-} // examine_Data
-
-
-void dump_out(unsigned int type)
-{
- char dumpFileName[300];
-
- if (cpd.dumped_file == nullptr)
- {
- sprintf(dumpFileName, "%s.%u", cpd.filename.c_str(), type);
- }
- else
- {
- sprintf(dumpFileName, "%s.%u", cpd.dumped_file, type);
- }
- FILE *D_file = fopen(dumpFileName, "w");
-
- if (D_file != nullptr)
- {
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- fprintf(D_file, "[%p]\n", pc);
- fprintf(D_file, " type %s\n", get_token_name(pc->GetType()));
- fprintf(D_file, " orig line %zu\n", pc->GetOrigLine());
- fprintf(D_file, " orig col %zu\n", pc->GetOrigCol());
- fprintf(D_file, " orig col end %zu\n", pc->GetOrigColEnd());
-
- if (pc->GetOrigPrevSp() != 0)
- {
- fprintf(D_file, " orig prev sp %zu\n", pc->GetOrigPrevSp());
- }
-
- if (pc->GetColumn() != 0)
- {
- fprintf(D_file, " column %zu\n", pc->GetColumn());
- }
-
- if (pc->GetColumnIndent() != 0)
- {
- fprintf(D_file, " column indent %zu\n", pc->GetColumnIndent());
- }
-
- if (pc->GetNlCount() != 0)
- {
- fprintf(D_file, " nl_count %zu\n", pc->GetNlCount());
- }
-
- if (pc->GetLevel() != 0)
- {
- fprintf(D_file, " level %zu\n", pc->GetLevel());
- }
-
- if (pc->GetBraceLevel() != 0)
- {
- fprintf(D_file, " brace level %zu\n", pc->GetBraceLevel());
- }
-
- if (pc->GetPpLevel() != 0)
- {
- fprintf(D_file, " pp level %zu\n", pc->GetPpLevel());
- }
-
- if (pc->GetAfterTab() != 0)
- {
- fprintf(D_file, " after tab %d\n", pc->GetAfterTab());
- }
-
- if (pc->IsNot(CT_NEWLINE))
- {
- fprintf(D_file, " Text %s\n", pc->Text());
- }
- }
-
- fclose(D_file);
- }
-} // dump_out
-
-
-void dump_in(unsigned int type)
-{
- char buffer[256];
- bool aNewChunkIsFound = false;
- Chunk chunk;
- char dumpFileName[300];
-
- if (cpd.dumped_file == nullptr)
- {
- sprintf(dumpFileName, "%s.%u", cpd.filename.c_str(), type);
- }
- else
- {
- sprintf(dumpFileName, "%s.%u", cpd.dumped_file, type);
- }
- FILE *D_file = fopen(dumpFileName, "r");
-
- if (D_file != nullptr)
- {
- unsigned int lineNumber = 0;
-
- while (fgets(buffer, sizeof(buffer), D_file) != nullptr)
- {
- ++lineNumber;
-
- if (aNewChunkIsFound)
- {
- // look for the next chunk
- char first = buffer[0];
-
- if (first == '[')
- {
- aNewChunkIsFound = false;
- // add the chunk in the list
- chunk.CopyAndAddBefore(Chunk::NullChunkPtr);
- chunk.Reset();
- aNewChunkIsFound = true;
- continue;
- }
- // the line as the form
- // part value
- // Split the line
- const int max_parts_count = 3;
- char *parts[max_parts_count];
- int parts_count = Args::SplitLine(buffer, parts, max_parts_count - 1);
-
- if (parts_count != 2)
- {
- exit(EX_SOFTWARE);
- }
-
- if (strcasecmp(parts[0], "type") == 0)
- {
- E_Token tokenName = find_token_name(parts[1]);
- chunk.SetType(tokenName);
- }
- else if (strcasecmp(parts[0], "orig line") == 0)
- {
- chunk.SetOrigLine(strtol(parts[1], nullptr, 0));
- }
- else if (strcasecmp(parts[0], "orig col") == 0)
- {
- chunk.SetOrigCol(strtol(parts[1], nullptr, 0));
- }
- else if (strcasecmp(parts[0], "orig col end") == 0)
- {
- chunk.SetOrigColEnd(strtol(parts[1], nullptr, 0));
- }
- else if (strcasecmp(parts[0], "orig prev sp") == 0)
- {
- chunk.SetOrigPrevSp(strtol(parts[1], nullptr, 0));
- }
- else if (strcasecmp(parts[0], "column") == 0)
- {
- chunk.SetColumn(strtol(parts[1], nullptr, 0));
- }
- else if (strcasecmp(parts[0], "nl_count") == 0)
- {
- chunk.SetNlCount(strtol(parts[1], nullptr, 0));
- }
- else if (strcasecmp(parts[0], "text") == 0)
- {
- if (chunk.GetType() != CT_NEWLINE)
- {
- chunk.Str() = parts[1];
- }
- }
- else
- {
- fprintf(stderr, "on line=%d, for '%s'\n", lineNumber, parts[0]);
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- }
- else
- {
- // look for a new chunk
- char first = buffer[0];
-
- if (first == '[')
- {
- aNewChunkIsFound = true;
- chunk.Reset();
- }
- }
- }
- // add the last chunk in the list
- chunk.CopyAndAddBefore(Chunk::NullChunkPtr);
- fclose(D_file);
- }
- else
- {
- fprintf(stderr, "FATAL: file not found '%s'\n", dumpFileName);
- log_flush(true);
- exit(EX_SOFTWARE);
- }
-} // dump_in
-
-
-size_t number = 0;
-
-
-size_t get_A_Number()
-{
- number = number + 1;
- return(number);
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_tools.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_tools.h
deleted file mode 100644
index acd199b9..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_tools.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * @file unc_tools.h
- *
- * @author Guy Maurel
- * October 2015, 2016, 2017, 2018, 2019, 2020, 2021
- * @license GPL v2+
- */
-
-#ifndef UNC_TOOLS_H_INCLUDED
-#define UNC_TOOLS_H_INCLUDED
-
-#include "prototypes.h"
-
-#if defined DEBUG
-#define PROT_THE_LINE prot_the_line(__func__, __LINE__, 0, 0);
-#else
-#define PROT_THE_LINE /* do nothing */;
-#endif
-
-
-void prot_the_line(const char *func_name, int theLine, unsigned int actual_line, size_t partNumber);
-
-
-void prot_the_line_pc(Chunk *pc_sub, const char *func_name, int theLine, unsigned int actual_line, size_t partNumber);
-
-
-void prot_all_lines(const char *func_name, int theLine);
-
-
-void prot_the_source(int theLine);
-
-
-void examine_Data(const char *func_name, int theLine, int what);
-
-
-//! dump the chunk list to a file
-void dump_out(unsigned int type);
-
-
-//! create chunk list from a file
-void dump_in(unsigned int type);
-
-
-size_t get_A_Number();
-
-#endif /* UNC_TOOLS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify.cpp
deleted file mode 100644
index 523dd2c3..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify.cpp
+++ /dev/null
@@ -1,2757 +0,0 @@
-/**
- * @file uncrustify.cpp
- * This file takes an input C/C++/D/Java file and reformats it.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#define DEFINE_CHAR_TABLE
-
-#include "uncrustify.h"
-
-#include "align.h"
-#include "align_nl_cont.h"
-#include "align_preprocessor.h"
-#include "align_trailing_comments.h"
-#include "args.h"
-#include "backup.h"
-#include "brace_cleanup.h"
-#include "braces.h"
-#include "change_int_types.h"
-#include "combine.h"
-#include "compat.h"
-#include "detect.h"
-#include "enum_cleanup.h"
-#include "indent.h"
-#include "keywords.h"
-#include "lang_pawn.h"
-#include "newlines.h"
-#include "output.h"
-#include "parameter_pack_cleanup.h"
-#include "parens.h"
-#include "parent_for_pp.h"
-#include "remove_duplicate_include.h"
-#include "remove_extra_returns.h"
-#include "rewrite_infinite_loops.h"
-#include "semicolons.h"
-#include "sorting.h"
-#include "space.h"
-#include "token_names.h"
-#include "tokenize.h"
-#include "tokenize_cleanup.h"
-#include "unc_ctype.h"
-#include "unc_tools.h"
-#include "uncrustify_version.h"
-#include "unicode.h"
-#include "universalindentgui.h"
-#include "width.h"
-
-#include <cerrno>
-#include <fcntl.h>
-#include <map>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_STRINGS_H
-#include <strings.h> // provides strcasecmp()
-#endif
-#ifdef HAVE_UTIME_H
-#include <time.h>
-#endif
-
-
-// VS throws an error if an attribute newer than the requested standard level
-// is used; everyone else just ignores it (or warns) like they are supposed to
-
-#if __cplusplus >= 201703L
-#define NODISCARD [[nodiscard]]
-#elif defined (__has_cpp_attribute)
-#if __has_cpp_attribute(nodiscard)
-#define NODISCARD [[nodiscard]]
-#else
-#define NODISCARD
-#endif
-#else
-#define NODISCARD
-#endif
-
-constexpr static auto LCURRENT = LUNC;
-
-using namespace std;
-using namespace uncrustify;
-
-
-// Global data
-cp_data_t cpd;
-
-
-static size_t language_flags_from_name(const char *tag);
-
-
-/**
- * Find the language for the file extension
- * Defaults to C
- *
- * @param filename The name of the file
- * @return LANG_xxx
- */
-static size_t language_flags_from_filename(const char *filename);
-
-
-static bool read_stdin(file_mem &fm);
-
-
-static void uncrustify_start(const deque<int> &data);
-
-
-static bool ends_with(const char *filename, const char *tag, bool case_sensitive);
-
-
-/**
- * Does a source file.
- *
- * @param filename_in the file to read
- * @param filename_out nullptr (stdout) or the file to write
- * @param parsed_file nullptr or the filename for the parsed debug info
- * @param dump_file nullptr or the filename prefix for dumping formatting steps debug info
- * @param no_backup don't create a backup, if filename_out == filename_in
- * @param keep_mtime don't change the mtime (dangerous)
- */
-static void do_source_file(const char *filename_in, const char *filename_out, const char *parsed_file, const char *dump_file, bool no_backup, bool keep_mtime);
-
-
-static void add_file_header();
-
-
-static void add_file_footer();
-
-
-static void add_func_header(E_Token type, file_mem &fm);
-
-
-static void add_msg_header(E_Token type, file_mem &fm);
-
-
-static void process_source_list(const char *source_list, const char *prefix, const char *suffix, bool no_backup, bool keep_mtime);
-
-
-static const char *make_output_filename(char *buf, size_t buf_size, const char *filename, const char *prefix, const char *suffix);
-
-
-//! compare the content of two files
-static bool file_content_matches(const string &filename1, const string &filename2);
-
-
-static string fix_filename(const char *filename);
-
-
-static bool bout_content_matches(const file_mem &fm, bool report_status);
-
-
-/**
- * Loads a file into memory
- *
- * @param filename name of file to load
- *
- * @retval true file was loaded successfully
- * @retval false file could not be loaded
- */
-static int load_mem_file(const char *filename, file_mem &fm);
-
-
-/**
- * Try to load the file from the config folder first and then by name
- *
- * @param filename name of file to load
- *
- * @retval true file was loaded successfully
- * @retval false file could not be loaded
- */
-static int load_mem_file_config(const std::string &filename, file_mem &fm);
-
-
-//! print uncrustify version number and terminate
-static void version_exit();
-
-
-const char *path_basename(const char *path)
-{
- if (path == nullptr)
- {
- return("");
- }
- const char *last_path = path;
- char ch;
-
- while ((ch = *path) != 0) // check for end of string
- {
- path++;
-
- // Check both slash types to support Linux and Windows
- if ( (ch == '/')
- || (ch == '\\'))
- {
- last_path = path;
- }
- }
- return(last_path);
-}
-
-
-int path_dirname_len(const char *filename)
-{
- if (filename == nullptr)
- {
- return(0);
- }
- // subtracting addresses like this works only on big endian systems
- return(static_cast<int>(path_basename(filename) - filename));
-}
-
-
-void usage_error(const char *msg)
-{
- if (msg != nullptr)
- {
- fprintf(stderr, "%s\n", msg);
- log_flush(true);
- }
- fprintf(stderr, "Try running with -h for usage information\n");
- log_flush(true);
-}
-
-
-static void tease()
-{
- fprintf(stdout,
- "There are currently %zu options and minimal documentation.\n"
- "Try UniversalIndentGUI and good luck.\n", get_option_count());
-}
-
-
-void usage(const char *argv0)
-{
- fprintf(stdout,
- "Usage:\n"
- "%s [options] [files ...]\n"
- "\n"
- "If no input files are specified, the input is read from stdin\n"
- "If reading from stdin, you should specify the language using -l\n"
- "or specify a filename using --assume for automatic language detection.\n"
- "\n"
- "If -F is used or files are specified on the command line,\n"
- "the output filename is 'prefix/filename' + suffix\n"
- "\n"
- "When reading from stdin or doing a single file via the '-f' option,\n"
- "the output is dumped to stdout, unless redirected with -o FILE.\n"
- "\n"
- "Errors are always dumped to stderr\n"
- "\n"
- "The '-f' and '-o' options may not be used with '-F' or '--replace'.\n"
- "The '--prefix' and '--suffix' options may not be used with '--replace'.\n"
- "\n"
- "Basic Options:\n"
- " -c CFG : Use the config file CFG, or defaults if CFG is set to '-'.\n"
- " -f FILE : Process the single file FILE (output to stdout, use with -o).\n"
- " -o FILE : Redirect stdout to FILE.\n"
- " -F FILE : Read files to process from FILE, one filename per line (- is stdin).\n"
- " --check : Do not output the new text, instead verify that nothing changes when\n"
- " the file(s) are processed.\n"
- " The status of every file is printed to stderr.\n"
- " The exit code is EXIT_SUCCESS if there were no changes, EXIT_FAILURE otherwise.\n"
- " files : Files to process (can be combined with -F).\n"
- " --suffix SFX : Append SFX to the output filename. The default is '.uncrustify'\n"
- " --prefix PFX : Prepend PFX to the output filename path.\n"
- " --replace : Replace source files (creates a backup).\n"
- " --no-backup : Do not create backup and md5 files. Useful if files are under source control.\n"
- " --if-changed : Write to stdout (or create output FILE) only if a change was detected.\n"
-#ifdef HAVE_UTIME_H
- " --mtime : Preserve mtime on replaced files.\n"
-#endif
- " -l : Language override: C, CPP, D, CS, JAVA, PAWN, OC, OC+, VALA.\n"
- " -t : Load a file with types (usually not needed).\n"
- " -q : Quiet mode - no output on stderr (-L will override).\n"
- " --frag : Code fragment, assume the first line is indented correctly.\n"
- " --assume FN : Uses the filename FN for automatic language detection if reading\n"
- " from stdin unless -l is specified.\n"
- "\n"
- "Config/Help Options:\n"
- " -h -? --help --usage : Print this message and exit.\n"
- " --version : Print the version and exit.\n"
- " --count-options : Print the number of available options and exit.\n"
- " --show-config : Print out option documentation and exit.\n"
- " --update-config : Output a new config file. Use with -o FILE.\n"
- " --update-config-with-doc : Output a new config file. Use with -o FILE.\n"
- " --universalindent : Output a config file for Universal Indent GUI.\n"
- " --detect : Detects the config from a source file. Use with '-f FILE'.\n"
- " Detection is fairly limited.\n"
- " --set <option>=<value> : Sets a new value to a config option.\n"
- "\n"
- "Debug Options:\n"
- " -p FILE : Dump debug info into FILE, or to stdout if FILE is set to '-'.\n"
- " Must be used in combination with '-f FILE'\n"
- " -ds FILE : Dump parsing info at various moments of the formatting process.\n"
- " --dump-steps FILE This creates a series of files named 'FILE_nnn.log', each\n"
- " corresponding to a formatting step in uncrustify.\n"
- " The file 'FILE_000.log' lists the formatting options in use.\n"
- " Must be used in combination with '-f FILE'\n"
- " -L SEV : Set the log severity (see log_levels.h; note 'A' = 'all')\n"
- " -s : Show the log severity in the logs.\n"
- " --decode : Decode remaining args (chunk flags) and exit.\n"
- " --tracking_space FILE : Prepare space tracking information for debugging.\n"
- " --tracking_nl FILE : Prepare newline tracking information for debugging.\n"
- " Cannot be used with the -o option'\n"
- "\n"
- "Usage Examples\n"
- "cat foo.d | uncrustify -q -c my.cfg -l d\n"
- "uncrustify -c my.cfg -f foo.d\n"
- "uncrustify -c my.cfg -f foo.d -L0-2,20-23,51\n"
- "uncrustify -c my.cfg -f foo.d -o foo.d\n"
- "uncrustify -c my.cfg -f foo.d -o foo.d -ds dump\n"
- "uncrustify -c my.cfg foo.d\n"
- "uncrustify -c my.cfg --replace foo.d\n"
- "uncrustify -c my.cfg --no-backup foo.d\n"
- "uncrustify -c my.cfg --prefix=out -F files.txt\n"
- "\n"
- "Note: Use comments containing ' *INDENT-OFF*' and ' *INDENT-ON*' to disable\n"
- " processing of parts of the source file (these can be overridden with\n"
- " enable_processing_cmt and disable_processing_cmt).\n"
- "\n"
- ,
- path_basename(argv0));
- tease();
-} // usage
-
-
-static void version_exit()
-{
- printf("%s\n", UNCRUSTIFY_VERSION);
- exit(EX_OK);
-}
-
-
-NODISCARD static int redir_stdout(const char *output_file)
-{
- FILE *my_stdout = stdout; // Reopen stdout
-
- if (output_file != nullptr)
- {
- my_stdout = freopen(output_file, "wb", stdout);
-
- if (my_stdout == nullptr)
- {
- LOG_FMT(LERR, "Unable to open %s for write: %s (%d)\n",
- output_file, strerror(errno), errno);
- usage_error();
- exit(EX_IOERR);
- }
- LOG_FMT(LNOTE, "Redirecting output to %s\n", output_file);
- }
- return(EXIT_SUCCESS);
-}
-
-// Currently, the crash handler is only supported while building under MSVC
-#if defined (WIN32) && defined (_MSC_VER)
-
-
-void setup_crash_handling()
-{
- // prevent crash popup. uncrustify is a batch processing tool and a popup is unacceptable.
- ::SetErrorMode(::GetErrorMode() | SEM_NOGPFAULTERRORBOX);
-
- struct local
- {
- static LONG WINAPI crash_filter(_In_ struct _EXCEPTION_POINTERS *exceptionInfo)
- {
- __try
- {
- LOG_FMT(LERR, "crash_filter: exception 0x%08X at [%d:%d] (ip=%p)",
- exceptionInfo->ExceptionRecord->ExceptionCode,
- cpd.line_number, cpd.column,
- exceptionInfo->ExceptionRecord->ExceptionAddress);
- log_func_stack(LERR, " [CallStack:", "]\n", 0);
-
- // treat an exception the same as a parse failure. exceptions can result from parse failures where we
- // do not have specific handling (null-checks for particular parse paths etc.) and callers generally
- // won't care about the difference. they just want to know it failed.
- exit(EXIT_FAILURE);
- }
- __except (EXCEPTION_EXECUTE_HANDLER)
- {
- // have to be careful of crashes in crash handling code
- }
-
- // safety - note that this will not flush like we need, but at least will get the right return code
- ::ExitProcess(EXIT_FAILURE);
- }
- };
-
- // route all crashes through our own handler
- ::SetUnhandledExceptionFilter(local::crash_filter);
-}
-
-#else
-
-
-void setup_crash_handling()
-{
- // TODO: unixes
-}
-
-#endif
-
-
-int main(int argc, char *argv[])
-{
- // initialize the global data
- cpd.unc_off_used = false;
-
- setup_crash_handling();
-
- // Build options map
- register_options();
-
- // If ran without options show the usage info and exit */
- if (argc == 1)
- {
- usage(argv[0]);
- return(EXIT_SUCCESS);
- }
-#ifdef DEBUG
- // make sure we have 'name' not too big
- const int max_name_length = 19;
-
- // maxLengthOfTheName must be consider at the format line at the file
- // output.cpp, line 427: fprintf(pfile, "# Line Tag Parent...
- // and 430: ... fprintf(pfile, "%s# %3zu>%19.19s[%19.19s] ...
- // here xx xx xx xx
- for (const auto &token_name : token_names)
- {
- const size_t name_length = strlen(token_name);
-
- if (name_length > max_name_length)
- {
- fprintf(stderr, "%s(%d): The token name '%s' is too long (%d)\n",
- __func__, __LINE__, token_name, static_cast<int>(name_length));
- fprintf(stderr, "%s(%d): the max token name length is %d\n",
- __func__, __LINE__, max_name_length);
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- }
-
- // make sure we have token_names.h in sync with token_enum.h
- static_assert(ARRAY_SIZE(token_names) == CT_TOKEN_COUNT_, "");
-#endif // DEBUG
-
- Args arg(argc, argv);
-
- if ( arg.Present("--version")
- || arg.Present("-v"))
- {
- version_exit();
- }
-
- if ( arg.Present("--help")
- || arg.Present("-h")
- || arg.Present("--usage")
- || arg.Present("-?"))
- {
- usage(argv[0]);
- return(EXIT_SUCCESS);
- }
-
- if (arg.Present("--count-options"))
- {
- tease();
- return(EXIT_SUCCESS);
- }
-
- if (arg.Present("--show-config"))
- {
- save_option_file(stdout, true);
- return(EXIT_SUCCESS);
- }
- cpd.do_check = arg.Present("--check");
- cpd.if_changed = arg.Present("--if-changed");
-
-#ifdef WIN32
- // tell Windows not to change what I write to stdout
- UNUSED(_setmode(_fileno(stdout), _O_BINARY));
-#endif
-
- // Init logging
- log_init(cpd.do_check ? stdout : stderr);
- log_mask_t mask;
-
- if (arg.Present("-q"))
- {
- logmask_from_string("", mask);
- log_set_mask(mask);
- }
- const char *p_arg;
-
- if ( ((p_arg = arg.Param("-L")) != nullptr)
- || ((p_arg = arg.Param("--log")) != nullptr))
- {
- logmask_from_string(p_arg, mask);
- log_set_mask(mask);
- }
- cpd.frag = arg.Present("--frag");
-
- if (arg.Present("--decode"))
- {
- size_t idx = 1;
-
- while ((p_arg = arg.Unused(idx)) != nullptr)
- {
- log_pcf_flags(LSYS, static_cast<E_PcfFlag>(strtoul(p_arg, nullptr, 16)));
- }
- return(EXIT_SUCCESS);
- }
- // Get the config file name
- string cfg_file;
-
- if ( ((p_arg = arg.Param("--config")) != nullptr)
- || ((p_arg = arg.Param("-c")) != nullptr))
- {
- cfg_file = p_arg;
- }
- else if (!unc_getenv("UNCRUSTIFY_CONFIG", cfg_file))
- {
- // Try to find a config file at an alternate location
- string home;
-
- if (unc_homedir(home))
- {
- struct stat tmp_stat = {};
-
- const auto path0 = home + "/.uncrustify.cfg";
- const auto path1 = home + "/uncrustify.cfg";
-
- if (stat(path0.c_str(), &tmp_stat) == 0)
- {
- cfg_file = path0;
- }
- else if (stat(path1.c_str(), &tmp_stat) == 0)
- {
- cfg_file = path1;
- }
- }
- }
- // Get the parsed file name
- const char *parsed_file;
-
- if ( ((parsed_file = arg.Param("--parsed")) != nullptr)
- || ((parsed_file = arg.Param("-p")) != nullptr))
- {
- if ( parsed_file[0] == '-'
- && !parsed_file[1])
- {
- LOG_FMT(LNOTE, "Will print parsed data to stdout\n");
- }
- else
- {
- LOG_FMT(LNOTE, "Will export parsed data to: %s\n", parsed_file);
- }
- }
- // Get the dump file name prefix
- const char *dump_file;
-
- if ( ((dump_file = arg.Param("--dump-steps")) != nullptr)
- || ((dump_file = arg.Param("-ds")) != nullptr))
- {
- LOG_FMT(LNOTE, "Will export formatting steps data to '%s_nnn.log' files\n", dump_file);
- }
-
- // Enable log severities
- if ( arg.Present("-s")
- || arg.Present("--show"))
- {
- log_show_sev(true);
- }
- // Load type files
- size_t idx = 0;
-
- while ((p_arg = arg.Params("-t", idx)) != nullptr)
- {
- load_keyword_file(p_arg);
- }
- // add types
- idx = 0;
-
- while ((p_arg = arg.Params("--type", idx)) != nullptr)
- {
- add_keyword(p_arg, CT_TYPE);
- }
- bool arg_l_is_set = false;
-
- // Check for a language override
- if ((p_arg = arg.Param("-l")) != nullptr)
- {
- arg_l_is_set = true;
- cpd.lang_flags = language_flags_from_name(p_arg);
-
- if (cpd.lang_flags == 0)
- {
- LOG_FMT(LWARN, "Ignoring unknown language: %s\n", p_arg);
- }
- else
- {
- cpd.lang_forced = true;
- }
- }
- // Get the source file name
- const char *source_file;
-
- if ( ((source_file = arg.Param("--file")) == nullptr)
- && ((source_file = arg.Param("-f")) == nullptr))
- {
- // not using a single file, source_file is nullptr
- }
- // Get a source file list
- const char *source_list;
-
- if ( ((source_list = arg.Param("--files")) == nullptr)
- && ((source_list = arg.Param("-F")) == nullptr))
- {
- // not using a file list, source_list is nullptr
- }
- const char *prefix = arg.Param("--prefix");
- const char *suffix = arg.Param("--suffix");
- const char *assume = arg.Param("--assume");
-
- bool no_backup = arg.Present("--no-backup");
- bool replace = arg.Present("--replace");
- bool keep_mtime = arg.Present("--mtime");
- bool update_config = arg.Present("--update-config");
- bool update_config_wd = arg.Present("--update-config-with-doc");
- bool detect = arg.Present("--detect");
- bool pfile_csv = arg.Present("--debug-csv-format");
-
- std::string parsed_file_csv;
-
- if (pfile_csv)
- {
- if ( parsed_file == nullptr
- || ( parsed_file[0] == '-'
- && !parsed_file[1]))
- {
- fprintf(stderr,
- "FAIL: --debug-csv-format option must be used in combination with '-p FILE', where FILE\n"
- " is not set to '-'\n");
- log_flush(true);
- exit(EX_CONFIG);
- }
- else if (!ends_with(parsed_file, ".csv", false))
- {
- parsed_file_csv = parsed_file;
-
- // user-specified parsed filename does not end in a ".csv" extension, so add it
- parsed_file_csv += ".csv";
- parsed_file = parsed_file_csv.c_str();
- }
- }
- // Grab the output override
- const char *output_file = arg.Param("-o");
-
- // for debugging tracking
- const char *html_file = nullptr;
- html_file = arg.Param("--tracking_space");
-
- if (html_file != nullptr)
- {
- cpd.html_type = tracking_type_e::TT_SPACE;
- cpd.html_file = html_file;
- html_file = arg.Param("--tracking_nl");
- bool try_it = html_file != nullptr;
-
- if (try_it)
- {
- usage_error("Cannot specify both --tracking_space and --tracking_nl.");
- return(EX_NOUSER);
- }
- }
- else
- {
- html_file = arg.Param("--tracking_nl");
- bool try_it = html_file != nullptr;
-
- if (try_it)
- {
- cpd.html_type = tracking_type_e::TT_NEWLINE;
- cpd.html_file = html_file;
- }
- }
- LOG_FMT(LDATA, "%s\n", UNCRUSTIFY_VERSION);
- LOG_FMT(LDATA, "config_file = %s\n", cfg_file.c_str());
- LOG_FMT(LDATA, "output_file = %s\n", (output_file != nullptr) ? output_file : "null");
- LOG_FMT(LDATA, "source_file = %s\n", (source_file != nullptr) ? source_file : "null");
- LOG_FMT(LDATA, "source_list = %s\n", (source_list != nullptr) ? source_list : "null");
- LOG_FMT(LDATA, "tracking = %s\n", (cpd.html_file != nullptr) ? cpd.html_file : "null");
- LOG_FMT(LDATA, "prefix = %s\n", (prefix != nullptr) ? prefix : "null");
- LOG_FMT(LDATA, "suffix = %s\n", (suffix != nullptr) ? suffix : "null");
- LOG_FMT(LDATA, "assume = %s\n", (assume != nullptr) ? assume : "null");
- LOG_FMT(LDATA, "replace = %s\n", replace ? "true" : "false");
- LOG_FMT(LDATA, "no_backup = %s\n", no_backup ? "true" : "false");
- LOG_FMT(LDATA, "detect = %s\n", detect ? "true" : "false");
- LOG_FMT(LDATA, "check = %s\n", cpd.do_check ? "true" : "false");
- LOG_FMT(LDATA, "if_changed = %s\n", cpd.if_changed ? "true" : "false");
-
- if ( cpd.do_check
- && ( output_file
- || replace
- || no_backup
- || keep_mtime
- || update_config
- || update_config_wd
- || detect
- || prefix
- || suffix
- || cpd.if_changed))
- {
- usage_error("Cannot use --check with output options.");
- return(EX_NOUSER);
- }
-
- if (!cpd.do_check)
- {
- if (replace)
- {
- if ( prefix != nullptr
- || suffix != nullptr)
- {
- usage_error("Cannot use --replace with --prefix or --suffix");
- return(EX_NOINPUT);
- }
-
- if ( source_file != nullptr
- || output_file != nullptr)
- {
- usage_error("Cannot use --replace with -f or -o");
- return(EX_NOINPUT);
- }
- }
- else if (!no_backup)
- {
- if ( prefix == nullptr
- && suffix == nullptr)
- {
- suffix = ".uncrustify";
- }
- }
- }
-
- /*
- * Try to load the config file, if available.
- * It is optional for "--universalindent", "--parsed" and "--detect", but
- * required for everything else.
- */
- if ( !cfg_file.empty()
- && cfg_file[0] != '-')
- {
- cpd.filename = cfg_file;
-
- if (!load_option_file(cpd.filename.c_str()))
- {
- usage_error("Unable to load the config file");
- return(EX_IOERR);
- }
- // test if all options are compatible to each other
- log_rule_B("nl_max");
-
- if (options::nl_max() > 0)
- {
- // test if one/some option(s) is/are not too big for that
- log_rule_B("nl_var_def_blk_end_func_top");
-
- if (options::nl_var_def_blk_end_func_top() >= options::nl_max())
- {
- fprintf(stderr, "The option 'nl_var_def_blk_end_func_top' is too big against the option 'nl_max'\n");
- log_flush(true);
- exit(EX_CONFIG);
- }
- }
- }
- // Set config options using command line arguments.
- idx = 0;
-
- const size_t max_args_length = 256;
-
- while ((p_arg = arg.Params("--set", idx)) != nullptr)
- {
- size_t argLength = strlen(p_arg);
-
- if (argLength > max_args_length)
- {
- fprintf(stderr, "The buffer is to short for the set argument '%s'\n", p_arg);
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- char buffer[max_args_length];
- strcpy(buffer, p_arg);
-
- // Tokenize and extract key and value
- const char *token = strtok(buffer, "=");
- const char *option = token;
-
- token = strtok(nullptr, "=");
- const char *value = token;
-
- if ( option != nullptr
- && value != nullptr
- && strtok(nullptr, "=") == nullptr) // end of argument reached
- {
- if (auto *opt = uncrustify::find_option(option))
- {
- if (!opt->read(value))
- {
- return(EXIT_FAILURE);
- }
- }
- else
- {
- fprintf(stderr, "Unknown option '%s' to override.\n", buffer);
- log_flush(true);
- return(EXIT_FAILURE);
- }
- }
- else
- {
- // TODO: consider using defines like EX_USAGE from sysexits.h
- usage_error("Error while parsing --set");
- return(EX_USAGE);
- }
- }
-
- if (arg.Present("--universalindent"))
- {
- FILE *pfile = stdout;
-
- if (output_file != nullptr)
- {
- pfile = fopen(output_file, "w");
-
- if (pfile == nullptr)
- {
- fprintf(stderr, "Unable to open %s for write: %s (%d)\n",
- output_file, strerror(errno), errno);
- log_flush(true);
- return(EXIT_FAILURE);
- }
- }
- print_universal_indent_cfg(pfile);
- fclose(pfile);
-
- return(EXIT_SUCCESS);
- }
- // Set the number of second(s) before terminating formatting the current file.
-#ifdef WIN32
- if (options::debug_timeout() > 0)
- {
- fprintf(stderr, "The option 'debug_timeout' is not available under Windows.\n");
- log_flush(true);
- exit(EX_SOFTWARE);
- }
-#else
- if (options::debug_timeout() > 0)
- {
- alarm(options::debug_timeout());
- }
-#endif // ifdef WIN32
-
- if (detect)
- {
- file_mem fm;
-
- if ( source_file == nullptr
- || source_list != nullptr)
- {
- fprintf(stderr, "The --detect option requires a single input file\n");
- log_flush(true);
- return(EXIT_FAILURE);
- }
-
- // Do some simple language detection based on the filename extension
- if ( !cpd.lang_forced
- || cpd.lang_flags == 0)
- {
- cpd.lang_flags = language_flags_from_filename(source_file);
- }
-
- // Try to read in the source file
- if (load_mem_file(source_file, fm) < 0)
- {
- LOG_FMT(LERR, "Failed to load (%s)\n", source_file);
- exit(EX_IOERR);
- }
- uncrustify_start(fm.data);
- detect_options();
- uncrustify_end();
-
- if (auto error = redir_stdout(output_file))
- {
- return(error);
- }
- save_option_file(stdout, update_config_wd);
- return(EXIT_SUCCESS);
- }
-
- if ( update_config
- || update_config_wd)
- {
- // TODO: complain if file-processing related options are present
- if (auto error = redir_stdout(output_file))
- {
- return(error);
- }
- save_option_file(stdout, update_config_wd);
- return(EXIT_SUCCESS);
- }
-
- /*
- * Everything beyond this point aside from dumping the parse tree is silly
- * without a config file, so complain and bail if we don't have one.
- */
- if ( cfg_file.empty()
- && !parsed_file)
- {
- usage_error("Specify the config file with '-c file' or set UNCRUSTIFY_CONFIG");
- return(EX_IOERR);
- }
- // Done parsing args
-
- // Check for unused args (ignore them)
- idx = 1;
- p_arg = arg.Unused(idx);
-
- // Check args - for multifile options
- if ( source_list != nullptr
- || p_arg != nullptr)
- {
- if (source_file != nullptr)
- {
- usage_error("Cannot specify both the single file option and a multi-file option.");
- return(EX_NOUSER);
- }
-
- if (output_file != nullptr)
- {
- usage_error("Cannot specify -o with a multi-file option.");
- return(EX_NOHOST);
- }
- }
- // This relies on cpd.filename being the config file name
- load_header_files();
-
- if ( cpd.do_check
- || cpd.if_changed)
- {
- cpd.bout = new deque<UINT8>();
- }
- idx = 1;
-
- if ( source_file == nullptr
- && source_list == nullptr
- && arg.Unused(idx) == nullptr)
- {
- if (!arg_l_is_set) // Issue #3064
- {
- if (assume == nullptr)
- {
- LOG_FMT(LERR, "If reading from stdin, you should specify the language using -l\n");
- LOG_FMT(LERR, "or specify a filename using --assume for automatic language detection.\n");
- return(EXIT_FAILURE);
- }
- }
-
- if (cpd.lang_flags == 0)
- {
- if (assume != nullptr)
- {
- cpd.lang_flags = language_flags_from_filename(assume);
- }
- else
- {
- cpd.lang_flags = LANG_C;
- }
- }
-
- if (!cpd.do_check)
- {
- if (auto error = redir_stdout(output_file))
- {
- return(error);
- }
- }
- file_mem fm;
-
- if (!read_stdin(fm))
- {
- LOG_FMT(LERR, "Failed to read stdin\n");
- exit(EX_IOERR);
- }
- cpd.filename = "stdin";
-
- // Done reading from stdin
- LOG_FMT(LSYS, "%s(%d): Parsing: %zu bytes (%zu chars) from stdin as language %s\n",
- __func__, __LINE__, fm.raw.size(), fm.data.size(),
- language_name_from_flags(cpd.lang_flags));
-
- // Issue #3427
- init_keywords_for_language();
- uncrustify_file(fm, stdout, parsed_file, dump_file);
- }
- else if (source_file != nullptr)
- {
- // Doing a single file
- do_source_file(source_file, output_file, parsed_file, dump_file, no_backup, keep_mtime);
- }
- else
- {
- if (parsed_file != nullptr) // Issue #930
- {
- fprintf(stderr, "FAIL: -p option must be used with the -f option\n");
- log_flush(true);
- exit(EX_CONFIG);
- }
-
- if (dump_file != nullptr)
- {
- fprintf(stderr, "FAIL: -ds/--dump-steps option must be used with the -f option\n");
- log_flush(true);
- exit(EX_CONFIG);
- }
-
- // Doing multiple files, TODO: multiple threads for parallel processing
- if (prefix != nullptr)
- {
- LOG_FMT(LSYS, "Output prefix: %s/\n", prefix);
- }
-
- if (suffix != nullptr)
- {
- LOG_FMT(LSYS, "Output suffix: %s\n", suffix);
- }
- // Do the files on the command line first
- idx = 1;
-
- while ((p_arg = arg.Unused(idx)) != nullptr)
- {
- char outbuf[1024];
- do_source_file(p_arg,
- make_output_filename(outbuf, sizeof(outbuf), p_arg, prefix, suffix),
- nullptr, nullptr, no_backup, keep_mtime);
- }
-
- if (source_list != nullptr)
- {
- process_source_list(source_list, prefix, suffix, no_backup, keep_mtime);
- }
- }
- clear_keyword_file();
-
- if ( cpd.do_check
- && cpd.check_fail_cnt != 0)
- {
- return(EXIT_FAILURE);
- }
- return(EXIT_SUCCESS);
-} // main
-
-
-static void process_source_list(const char *source_list,
- const char *prefix, const char *suffix,
- bool no_backup, bool keep_mtime)
-{
- bool from_stdin = strcmp(source_list, "-") == 0;
- FILE *p_file = from_stdin ? stdin : fopen(source_list, "r");
-
- if (p_file == nullptr)
- {
- LOG_FMT(LERR, "%s: fopen(%s) failed: %s (%d)\n",
- __func__, source_list, strerror(errno), errno);
- exit(EX_IOERR);
- }
- char linebuf[256];
- int line = 0;
-
- while (fgets(linebuf, sizeof(linebuf), p_file) != nullptr)
- {
- line++;
- char *fname = linebuf;
- int len = strlen(fname);
-
- while ( len > 0
- && unc_isspace(*fname))
- {
- fname++;
- len--;
- }
-
- while ( len > 0
- && unc_isspace(fname[len - 1]))
- {
- len--;
- }
- fname[len] = 0;
-
- while (len-- > 0)
- {
- if (fname[len] == '\\')
- {
- fname[len] = '/';
- }
- }
- LOG_FMT(LFILELIST, "%3d file to uncrustify: %s\n", line, fname);
-
- if (fname[0] != '#')
- {
- char outbuf[1024];
- do_source_file(fname,
- make_output_filename(outbuf, sizeof(outbuf), fname, prefix, suffix),
- nullptr, nullptr, no_backup, keep_mtime);
- }
- }
-
- if (!from_stdin)
- {
- fclose(p_file);
- }
-} // process_source_list
-
-
-static bool read_stdin(file_mem &fm)
-{
- deque<UINT8> dq;
- char buf[4096];
-
- fm.raw.clear();
- fm.data.clear();
- fm.enc = char_encoding_e::e_ASCII;
-
- // Re-open stdin in binary mode to preserve newline characters
-#ifdef WIN32
- _setmode(_fileno(stdin), _O_BINARY);
-#endif
-
- while (!feof(stdin))
- {
- int len = fread(buf, 1, sizeof(buf), stdin);
-
- for (int idx = 0; idx < len; idx++)
- {
- dq.push_back(buf[idx]);
- }
- }
- // Copy the raw data from the deque to the vector
- fm.raw.insert(fm.raw.end(), dq.begin(), dq.end());
- return(decode_unicode(fm.raw, fm.data, fm.enc, fm.bom));
-}
-
-
-static void make_folders(const string &filename)
-{
- int last_idx = 0;
- char outname[4096];
-
- snprintf(outname, sizeof(outname), "%s", filename.c_str());
-
- for (int idx = 0; outname[idx] != 0; idx++)
- {
- if ( (outname[idx] == '/')
- || (outname[idx] == '\\'))
- {
- outname[idx] = PATH_SEP;
- }
-
- // search until end of subpath is found
- if ( idx > last_idx
- && (outname[idx] == PATH_SEP))
- {
- outname[idx] = 0; // mark the end of the subpath
-
- // create subfolder if it is not the start symbol of a path
- // and not a Windows drive letter
- if ( (strcmp(&outname[last_idx], ".") != 0)
- && (strcmp(&outname[last_idx], "..") != 0)
- && (!( last_idx == 0
- && idx == 2
- && outname[1] == ':')))
- {
- int status; // Coverity CID 75999
- status = mkdir(outname, 0750);
-
- if ( status != 0
- && errno != EEXIST)
- {
- LOG_FMT(LERR, "%s: Unable to create %s: %s (%d)\n",
- __func__, outname, strerror(errno), errno);
- exit(EX_IOERR);
- }
- }
- outname[idx] = PATH_SEP; // reconstruct full path to search for next subpath
- }
-
- if (outname[idx] == PATH_SEP)
- {
- last_idx = idx + 1;
- }
- }
-} // make_folders
-
-
-static int load_mem_file(const char *filename, file_mem &fm)
-{
- int retval = -1;
- struct stat my_stat;
- FILE *p_file;
-
- fm.raw.clear();
- fm.data.clear();
- fm.enc = char_encoding_e::e_ASCII;
-
- // Grab the stat info for the file, return if it cannot be read
- if (stat(filename, &my_stat) < 0)
- {
- return(-1);
- }
-#ifdef HAVE_UTIME_H
- // Save off modification time (mtime)
- fm.utb.modtime = my_stat.st_mtime;
-#endif
-
- // Try to read in the file
- p_file = fopen(filename, "rb");
-
- if (p_file == nullptr)
- {
- return(-1);
- }
- fm.raw.resize(my_stat.st_size);
-
- if (my_stat.st_size == 0) // check if file is empty
- {
- retval = 0;
- fm.bom = false;
- fm.enc = char_encoding_e::e_ASCII;
- fm.data.clear();
- }
- else
- {
- // read the raw data
- if (fread(&fm.raw[0], fm.raw.size(), 1, p_file) != 1)
- {
- LOG_FMT(LERR, "%s: fread(%s) failed: %s (%d)\n",
- __func__, filename, strerror(errno), errno);
- exit(EX_IOERR);
- }
- else if (!decode_unicode(fm.raw, fm.data, fm.enc, fm.bom))
- {
- LOG_FMT(LERR, "%s: failed to decode the file '%s'\n", __func__, filename);
- exit(EX_IOERR);
- }
- else
- {
- LOG_FMT(LNOTE, "%s: '%s' encoding looks like %s (%d)\n", __func__, filename,
- fm.enc == char_encoding_e::e_ASCII ? "ASCII" :
- fm.enc == char_encoding_e::e_BYTE ? "BYTES" :
- fm.enc == char_encoding_e::e_UTF8 ? "UTF-8" :
- fm.enc == char_encoding_e::e_UTF16_LE ? "UTF-16-LE" :
- fm.enc == char_encoding_e::e_UTF16_BE ? "UTF-16-BE" : "Error",
- (int)fm.enc);
- retval = 0;
- }
- }
- fclose(p_file);
- return(retval);
-} // load_mem_file
-
-
-static int load_mem_file_config(const std::string &filename, file_mem &fm)
-{
- int retval;
- char buf[1024];
-
- snprintf(buf, sizeof(buf), "%.*s%s",
- path_dirname_len(cpd.filename.c_str()), cpd.filename.c_str(), filename.c_str());
-
- retval = load_mem_file(buf, fm);
-
- if (retval < 0)
- {
- retval = load_mem_file(filename.c_str(), fm);
-
- if (retval < 0)
- {
- LOG_FMT(LERR, "Failed to load (%s) or (%s)\n", buf, filename.c_str());
- exit(EX_IOERR);
- }
- }
- return(retval);
-}
-
-
-int load_header_files()
-{
- int retval = 0;
-
- log_rule_B("cmt_insert_file_header");
-
- if (!options::cmt_insert_file_header().empty())
- {
- // try to load the file referred to by the options string
- retval |= load_mem_file_config(options::cmt_insert_file_header(),
- cpd.file_hdr);
- }
- log_rule_B("cmt_insert_file_footer");
-
- if (!options::cmt_insert_file_footer().empty())
- {
- retval |= load_mem_file_config(options::cmt_insert_file_footer(),
- cpd.file_ftr);
- }
- log_rule_B("cmt_insert_func_header");
-
- if (!options::cmt_insert_func_header().empty())
- {
- retval |= load_mem_file_config(options::cmt_insert_func_header(),
- cpd.func_hdr);
- }
- log_rule_B("cmt_insert_class_header");
-
- if (!options::cmt_insert_class_header().empty())
- {
- retval |= load_mem_file_config(options::cmt_insert_class_header(),
- cpd.class_hdr);
- }
- log_rule_B("cmt_insert_oc_msg_header");
-
- if (!options::cmt_insert_oc_msg_header().empty())
- {
- retval |= load_mem_file_config(options::cmt_insert_oc_msg_header(),
- cpd.oc_msg_hdr);
- }
- log_rule_B("cmt_reflow_fold_regex_file");
-
- if (!options::cmt_reflow_fold_regex_file().empty())
- {
- retval |= load_mem_file_config(options::cmt_reflow_fold_regex_file(),
- cpd.reflow_fold_regex);
- }
- return(retval);
-} // load_header_files
-
-
-static const char *make_output_filename(char *buf, size_t buf_size,
- const char *filename,
- const char *prefix,
- const char *suffix)
-{
- int len = 0;
-
- if (prefix != nullptr)
- {
- len = snprintf(buf, buf_size, "%s/", prefix);
- }
- snprintf(&buf[len], buf_size - len, "%s%s", filename,
- (suffix != nullptr) ? suffix : "");
-
- return(buf);
-}
-
-
-static bool file_content_matches(const string &filename1, const string &filename2)
-{
- struct stat st1, st2;
- int fd1, fd2;
-
- // Check the file sizes first
- if ( (stat(filename1.c_str(), &st1) != 0)
- || (stat(filename2.c_str(), &st2) != 0)
- || st1.st_size != st2.st_size)
- {
- return(false);
- }
-
- if ((fd1 = open(filename1.c_str(), O_RDONLY)) < 0)
- {
- return(false);
- }
-
- if ((fd2 = open(filename2.c_str(), O_RDONLY)) < 0)
- {
- close(fd1);
- return(false);
- }
- int len1 = 0;
- int len2 = 0;
- UINT8 buf1[1024];
- UINT8 buf2[1024];
-
- memset(buf1, 0, sizeof(buf1));
- memset(buf2, 0, sizeof(buf2));
-
- while ( len1 >= 0
- && len2 >= 0)
- {
- if (len1 == 0)
- {
- len1 = read(fd1, buf1, sizeof(buf1));
- }
-
- if (len2 == 0)
- {
- len2 = read(fd2, buf2, sizeof(buf2));
- }
-
- if ( len1 <= 0
- || len2 <= 0)
- {
- break; // reached end of either files
- // TODO: what is if one file is longer than the other, do we miss that ?
- }
- int minlen = (len1 < len2) ? len1 : len2;
-
- if (memcmp(buf1, buf2, minlen) != 0)
- {
- break; // found a difference
- }
- len1 -= minlen;
- len2 -= minlen;
- }
- close(fd1);
- close(fd2);
-
- return( len1 == 0
- && len2 == 0);
-} // file_content_matches
-
-
-static string fix_filename(const char *filename)
-{
- char *tmp_file;
- string rv;
-
- // Create 'outfile.uncrustify'
- tmp_file = new char[strlen(filename) + 16 + 1]; // + 1 for '// + 1 for '/* + 1 for '\0' */' '
-
- if (tmp_file != nullptr)
- {
- sprintf(tmp_file, "%s.uncrustify", filename);
- }
- rv = tmp_file;
- delete[] tmp_file;
- return(rv);
-}
-
-
-static bool bout_content_matches(const file_mem &fm, bool report_status)
-{
- bool is_same = true;
-
- // compare the old data vs the new data
- if (cpd.bout->size() != fm.raw.size())
- {
- if (report_status)
- {
- fprintf(stderr, "FAIL: %s (File size changed from %u to %u)\n",
- cpd.filename.c_str(), static_cast<int>(fm.raw.size()),
- static_cast<int>(cpd.bout->size()));
- log_flush(true);
- }
- is_same = false;
- }
- else
- {
- for (int idx = 0; idx < static_cast<int>(fm.raw.size()); idx++)
- {
- if (fm.raw[idx] != (*cpd.bout)[idx])
- {
- if (report_status)
- {
- fprintf(stderr, "FAIL: %s (Difference at byte %u)\n",
- cpd.filename.c_str(), idx);
- log_flush(true);
- }
- is_same = false;
- break;
- }
- }
- }
-
- if ( is_same
- && report_status)
- {
- fprintf(stdout, "PASS: %s (%u bytes)\n",
- cpd.filename.c_str(), static_cast<int>(fm.raw.size()));
- }
- return(is_same);
-} // bout_content_matches
-
-
-static void do_source_file(const char *filename_in,
- const char *filename_out,
- const char *parsed_file,
- const char *dump_file,
- bool no_backup,
- bool keep_mtime)
-{
- FILE *pfout = nullptr;
- bool did_open = false;
- bool need_backup = false;
- file_mem fm;
- string filename_tmp;
-
- // Do some simple language detection based on the filename extension
- if ( !cpd.lang_forced
- || cpd.lang_flags == 0)
- {
- cpd.lang_flags = language_flags_from_filename(filename_in);
- }
-
- // Try to read in the source file
- if (load_mem_file(filename_in, fm) < 0)
- {
- LOG_FMT(LERR, "Failed to load (%s)\n", filename_in);
- exit(EX_IOERR);
- }
- LOG_FMT(LSYS, "%s(%d): Parsing: %s as language %s\n",
- __func__, __LINE__, filename_in, language_name_from_flags(cpd.lang_flags));
-
- // check keyword sort
- assert(keywords_are_sorted());
-
- // Issue #3353
- init_keywords_for_language();
-
- cpd.filename = filename_in;
-
- /*
- * If we're only going to write on an actual change, then build the output
- * buffer now and if there were changes, run it through the normal file
- * write path.
- *
- * Future: many code paths could be simplified if 'bout' were always used and not
- * optionally selected in just for do_check and if_changed.
- */
- if (cpd.if_changed)
- {
- /*
- * Cleanup is deferred because we need 'bout' preserved long enough
- * to write it to a file (if it changed).
- */
- uncrustify_file(fm, nullptr, parsed_file, dump_file, true);
-
- if (bout_content_matches(fm, false))
- {
- uncrustify_end();
- return;
- }
- }
-
- if (!cpd.do_check)
- {
- if (filename_out == nullptr)
- {
- pfout = stdout;
- }
- else
- {
- // If the out file is the same as the in file, then use a temp file
- filename_tmp = filename_out;
-
- if (strcmp(filename_in, filename_out) == 0)
- {
- // Create 'outfile.uncrustify'
- filename_tmp = fix_filename(filename_out);
-
- if (!no_backup)
- {
- if (backup_copy_file(filename_in, fm.raw) != EX_OK)
- {
- LOG_FMT(LERR, "%s: Failed to create backup file for %s\n",
- __func__, filename_in);
- exit(EX_IOERR);
- }
- need_backup = true;
- }
- }
- make_folders(filename_tmp);
-
- pfout = fopen(filename_tmp.c_str(), "wb");
-
- if (pfout == nullptr)
- {
- LOG_FMT(LERR, "%s: Unable to create %s: %s (%d)\n",
- __func__, filename_tmp.c_str(), strerror(errno), errno);
- exit(EX_IOERR);
- }
- did_open = true;
- //LOG_FMT(LSYS, "Output file %s\n", filename_out);
- }
- }
-
- if (cpd.if_changed)
- {
- for (UINT8 i : *cpd.bout)
- {
- fputc(i, pfout);
- }
-
- uncrustify_end();
- }
- else
- {
- uncrustify_file(fm, pfout, parsed_file, dump_file);
- }
-
- if (did_open)
- {
- fclose(pfout);
-
- if (need_backup)
- {
- backup_create_md5_file(filename_in);
- }
-
- if (filename_tmp != filename_out)
- {
- // We need to compare and then do a rename (but avoid redundant test when if_changed set)
- if ( !cpd.if_changed
- && file_content_matches(filename_tmp, filename_out))
- {
- // No change - remove tmp file
- UNUSED(unlink(filename_tmp.c_str()));
- }
- else
- {
- // Change - rename filename_tmp to filename_out
-
-#ifdef WIN32
- /*
- * Atomic rename in windows can't go through stdio rename() func because underneath
- * it calls MoveFileExW without MOVEFILE_REPLACE_EXISTING.
- */
- if (!MoveFileEx(filename_tmp.c_str(), filename_out, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED))
-#else
- if (rename(filename_tmp.c_str(), filename_out) != 0)
-#endif
- {
- LOG_FMT(LERR, "%s: Unable to rename '%s' to '%s'\n",
- __func__, filename_tmp.c_str(), filename_out);
- exit(EX_IOERR);
- }
- }
- }
-
- if (keep_mtime)
- {
-#ifdef HAVE_UTIME_H
- // update mtime -- don't care if it fails
- fm.utb.actime = time(nullptr);
- UNUSED(utime(filename_in, &fm.utb));
-#endif
- }
- }
-} // do_source_file
-
-
-static void add_file_header()
-{
- // don't add the file header if running as frag
- if ( !Chunk::GetHead()->IsComment()
- && !cpd.frag)
- {
- // TODO: detect the typical #ifndef FOO / #define FOO sequence
- tokenize(cpd.file_hdr.data, Chunk::GetHead());
- }
-}
-
-
-static void add_file_footer()
-{
- Chunk *pc = Chunk::GetTail();
-
- // Back up if the file ends with a newline
- if ( pc->IsNotNullChunk()
- && pc->IsNewline())
- {
- pc = pc->GetPrev();
- }
-
- if ( pc->IsNotNullChunk()
- && ( !pc->IsComment()
- || !pc->GetPrev()->IsNewline()))
- {
- pc = Chunk::GetTail();
-
- if (!pc->IsNewline())
- {
- LOG_FMT(LSYS, "Adding a newline at the end of the file\n");
- newline_add_after(pc);
- }
- tokenize(cpd.file_ftr.data, nullptr);
- }
-}
-
-
-static void add_func_header(E_Token type, file_mem &fm)
-{
- Chunk *pc;
- Chunk *ref;
- Chunk *tmp;
- bool do_insert;
-
- for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnlNpp())
- {
- if (pc->GetType() != type)
- {
- continue;
- }
- log_rule_B("cmt_insert_before_inlines");
-
- if ( pc->TestFlags(PCF_IN_CLASS)
- && !options::cmt_insert_before_inlines())
- {
- continue;
- }
- // Check for one liners for classes. Declarations only. Walk down the chunks.
- ref = pc;
-
- if ( ref->Is(CT_CLASS)
- && ref->GetParentType() == CT_NONE
- && ref->GetNext())
- {
- ref = ref->GetNext();
-
- if ( ref->Is(CT_TYPE)
- && ref->GetParentType() == type
- && ref->GetNext())
- {
- ref = ref->GetNext();
-
- if ( ref->Is(CT_SEMICOLON)
- && ref->GetLevel() == pc->GetLevel())
- {
- continue;
- }
- }
- }
- // Check for one liners for functions. There'll be a closing brace w/o any newlines. Walk down the chunks.
- ref = pc;
-
- if ( ref->Is(CT_FUNC_DEF)
- && ref->GetParentType() == CT_NONE
- && ref->GetNext())
- {
- int found_brace = 0; // Set if a close brace is found before a newline
-
- while ( ref->IsNot(CT_NEWLINE)
- && (ref = ref->GetNext())) // TODO: is the assignment of ref wanted here?, better move it to the loop
- {
- if (ref->Is(CT_BRACE_CLOSE))
- {
- found_brace = 1;
- break;
- }
- }
-
- if (found_brace)
- {
- continue;
- }
- }
- do_insert = false;
-
- /*
- * On a function proto or def. Back up to a close brace or semicolon on
- * the same level
- */
- ref = pc;
-
- while ( (ref = ref->GetPrev())
- && ref->IsNotNullChunk())
- {
- // Bail if we change level or find an access specifier colon
- if ( ref->GetLevel() != pc->GetLevel()
- || ref->Is(CT_ACCESS_COLON))
- {
- do_insert = true;
- break;
- }
-
- // If we hit an angle close, back up to the angle open
- if (ref->Is(CT_ANGLE_CLOSE))
- {
- ref = ref->GetPrevType(CT_ANGLE_OPEN, ref->GetLevel(), E_Scope::PREPROC);
- continue;
- }
-
- // Bail if we hit a preprocessor and cmt_insert_before_preproc is false
- if (ref->TestFlags(PCF_IN_PREPROC))
- {
- tmp = ref->GetPrevType(CT_PREPROC, ref->GetLevel());
-
- if ( tmp->IsNotNullChunk()
- && tmp->GetParentType() == CT_PP_IF)
- {
- tmp = tmp->GetPrevNnl();
-
- log_rule_B("cmt_insert_before_preproc");
-
- if ( tmp->IsComment()
- && !options::cmt_insert_before_preproc())
- {
- break;
- }
- }
- }
-
- // Ignore 'right' comments
- if ( ref->IsComment()
- && ref->GetPrev()->IsNewline())
- {
- break;
- }
-
- if ( ref->GetLevel() == pc->GetLevel()
- && ( ref->TestFlags(PCF_IN_PREPROC)
- || ref->Is(CT_SEMICOLON)
- || ref->Is(CT_BRACE_CLOSE)))
- {
- do_insert = true;
- break;
- }
- }
-
- if ( ref->IsNullChunk()
- && !Chunk::GetHead()->IsComment()
- && Chunk::GetHead()->GetParentType() == type)
- {
- /**
- * In addition to testing for preceding semicolons, closing braces, etc.,
- * we need to also account for the possibility that the function declaration
- * or definition occurs at the very beginning of the file
- */
- tokenize(fm.data, Chunk::GetHead());
- }
- else if (do_insert)
- {
- // Insert between after and ref
- Chunk *after = ref->GetNextNcNnl();
- tokenize(fm.data, after);
-
- for (tmp = ref->GetNext(); tmp != after; tmp = tmp->GetNext())
- {
- tmp->SetLevel(after->GetLevel());
- }
- }
- }
-} // add_func_header
-
-
-static void add_msg_header(E_Token type, file_mem &fm)
-{
- Chunk *pc;
- Chunk *ref;
- Chunk *tmp;
- bool do_insert;
-
- for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnlNpp())
- {
- if (pc->GetType() != type)
- {
- continue;
- }
- do_insert = false;
-
- /*
- * On a message declaration back up to a Objective-C scope
- * the same level
- */
- ref = pc;
-
- while ((ref = ref->GetPrev())->IsNotNullChunk())
- {
- // ignore the CT_TYPE token that is the result type
- if ( ref->GetLevel() != pc->GetLevel()
- && ( ref->Is(CT_TYPE)
- || ref->Is(CT_PTR_TYPE)))
- {
- continue;
- }
-
- // If we hit a parentheses around return type, back up to the open parentheses
- if (ref->Is(CT_PAREN_CLOSE))
- {
- ref = ref->GetPrevType(CT_PAREN_OPEN, ref->GetLevel(), E_Scope::PREPROC);
- continue;
- }
-
- // Bail if we hit a preprocessor and cmt_insert_before_preproc is false
- if (ref->TestFlags(PCF_IN_PREPROC))
- {
- tmp = ref->GetPrevType(CT_PREPROC, ref->GetLevel());
-
- if ( tmp->IsNotNullChunk()
- && tmp->GetParentType() == CT_PP_IF)
- {
- tmp = tmp->GetPrevNnl();
-
- log_rule_B("cmt_insert_before_preproc");
-
- if ( tmp->IsComment()
- && !options::cmt_insert_before_preproc())
- {
- break;
- }
- }
- }
-
- if ( ref->GetLevel() == pc->GetLevel()
- && ( ref->TestFlags(PCF_IN_PREPROC)
- || ref->Is(CT_OC_SCOPE)))
- {
- ref = ref->GetPrev();
-
- if (ref->IsNotNullChunk())
- {
- // Ignore 'right' comments
- if ( ref->IsNewline()
- && ref->GetPrev()->IsComment())
- {
- break;
- }
- do_insert = true;
- }
- break;
- }
- }
-
- if (do_insert)
- {
- // Insert between after and ref
- Chunk *after = ref->GetNextNcNnl();
- tokenize(fm.data, after);
-
- for (tmp = ref->GetNext(); tmp != after; tmp = tmp->GetNext())
- {
- tmp->SetLevel(after->GetLevel());
- }
- }
- }
-} // add_msg_header
-
-
-static void uncrustify_start(const deque<int> &data)
-{
- // Parse the text into chunks
- tokenize(data, nullptr);
- PROT_THE_LINE
-
- cpd.unc_stage = unc_stage_e::HEADER;
-
- // Get the column for the fragment indent
- if (cpd.frag)
- {
- Chunk *pc = Chunk::GetHead();
-
- cpd.frag_cols = pc->GetOrigCol();
- }
-
- // Add the file header
- if (!cpd.file_hdr.data.empty())
- {
- add_file_header();
- }
-
- // Add the file footer
- if (!cpd.file_ftr.data.empty())
- {
- add_file_footer();
- }
- /*
- * Change certain token types based on simple sequence.
- * Example: change '[' + ']' to '[]'
- * Note that level info is not yet available, so it is OK to do all
- * processing that doesn't need to know level info. (that's very little!)
- */
- tokenize_cleanup();
-
- /*
- * Detect the brace and paren levels and insert virtual braces.
- * This handles all that nasty preprocessor stuff
- */
- brace_cleanup();
-
- parameter_pack_cleanup();
-
- // At this point, the level information is available and accurate.
-
- if (language_is_set(LANG_PAWN))
- {
- pawn_prescan();
- }
- mark_question_colon();
-
- // Re-type chunks, combine chunks
- fix_symbols();
-
- tokenize_trailing_return_types();
-
- mark_comments();
-
- // Look at all colons ':' and mark labels, :? sequences, etc.
- combine_labels();
-
- enum_cleanup();
-} // uncrustify_start
-
-
-void uncrustify_file(const file_mem &fm, FILE *pfout, const char *parsed_file,
- const char *dump_file, bool defer_uncrustify_end)
-{
- const deque<int> &data = fm.data;
-
- // Save off the encoding and whether a BOM is required
- cpd.bom = fm.bom;
- cpd.enc = fm.enc;
-
- log_rule_B("utf8_force");
- log_rule_B("utf8_byte");
-
- if ( options::utf8_force()
- || ( (cpd.enc == char_encoding_e::e_BYTE)
- && options::utf8_byte()))
- {
- cpd.enc = char_encoding_e::e_UTF8;
- }
- iarf_e av;
-
- switch (cpd.enc)
- {
- case char_encoding_e::e_UTF8:
- log_rule_B("utf8_bom");
- av = options::utf8_bom();
- break;
-
- case char_encoding_e::e_UTF16_LE:
- case char_encoding_e::e_UTF16_BE:
- av = IARF_FORCE;
- break;
-
- default:
- av = IARF_IGNORE;
- break;
- }
-
- if (av == IARF_REMOVE)
- {
- cpd.bom = false;
- }
- else if (av != IARF_IGNORE)
- {
- cpd.bom = true;
- }
- // Check for embedded 0's (represents a decoding failure or corrupt file)
- size_t count_line = 1;
- size_t count_column = 1;
-
- for (int idx = 0; idx < static_cast<int>(data.size()) - 1; idx++)
- {
- if (data[idx] == 0)
- {
- LOG_FMT(LERR, "An embedded 0 was found in '%s' %zu:%zu.\n",
- cpd.filename.c_str(), count_line, count_column);
- LOG_FMT(LERR, "The file may be encoded in an unsupported Unicode format.\n");
- LOG_FMT(LERR, "Aborting.\n");
- exit(EX_IOERR);
- }
- count_column++;
-
- if (data[idx] == '\n')
- {
- count_line++;
- count_column = 1;
- }
- }
-
- uncrustify_start(data);
- dump_step(dump_file, "After uncrustify_start()");
-
- cpd.unc_stage = unc_stage_e::OTHER;
-
- /*
- * Done with detection. Do the rest only if the file will go somewhere.
- * The detection code needs as few changes as possible.
- */
- {
- // Add comments before function defs and classes
- if (!cpd.func_hdr.data.empty())
- {
- add_func_header(CT_FUNC_DEF, cpd.func_hdr);
-
- log_rule_B("cmt_insert_before_ctor_dtor");
-
- if (options::cmt_insert_before_ctor_dtor())
- {
- add_func_header(CT_FUNC_CLASS_DEF, cpd.func_hdr);
- }
- }
-
- if (!cpd.class_hdr.data.empty())
- {
- add_func_header(CT_CLASS, cpd.class_hdr);
- }
-
- if (!cpd.oc_msg_hdr.data.empty())
- {
- add_msg_header(CT_OC_MSG_DECL, cpd.oc_msg_hdr);
- }
- do_parent_for_pp();
-
- // Rewrite infinite loops
- log_rule_B("mod_infinite_loop");
-
- if (options::mod_infinite_loop())
- {
- rewrite_infinite_loops();
- }
- do_braces(); // Change virtual braces into real braces...
-
- // Scrub extra semicolons
- log_rule_B("mod_remove_extra_semicolon");
-
- if (options::mod_remove_extra_semicolon())
- {
- remove_extra_semicolons();
- }
- // Remove unnecessary returns
- log_rule_B("mod_remove_empty_return");
-
- if (options::mod_remove_empty_return())
- {
- remove_extra_returns();
- }
- // Add or remove redundant 'int' keyword of integer types
- log_rule_B("mod_int_short");
- log_rule_B("mod_short_int");
- log_rule_B("mod_int_long");
- log_rule_B("mod_long_int");
- log_rule_B("mod_int_signed");
- log_rule_B("mod_signed_int");
- log_rule_B("mod_int_unsigned");
- log_rule_B("mod_unsigned_int");
-
- if ( ( language_is_set(LANG_C)
- || language_is_set(LANG_CPP))
- && ( options::mod_int_short() != IARF_IGNORE
- || options::mod_short_int() != IARF_IGNORE
- || options::mod_int_long() != IARF_IGNORE
- || options::mod_long_int() != IARF_IGNORE
- || options::mod_int_signed() != IARF_IGNORE
- || options::mod_signed_int() != IARF_IGNORE
- || options::mod_int_unsigned() != IARF_IGNORE
- || options::mod_unsigned_int() != IARF_IGNORE))
- {
- change_int_types();
- }
- // Remove duplicate include
- log_rule_B("mod_remove_duplicate_include");
-
- if (options::mod_remove_duplicate_include())
- {
- remove_duplicate_include();
- }
- // Add parens
- do_parens();
- do_parens_assign();
- do_parens_return();
-
- // Modify line breaks as needed
- bool first = true;
- int old_changes;
-
- log_rule_B("nl_remove_extra_newlines");
-
- if (options::nl_remove_extra_newlines() == 2)
- {
- newlines_remove_newlines();
- }
- cpd.pass_count = 3;
-
- dump_step(dump_file, "Before first while loop");
-
- do
- {
- old_changes = cpd.changes;
-
- LOG_FMT(LNEWLINE, "Newline loop start: %d\n", cpd.changes);
-
- annotations_newlines();
- newlines_cleanup_dup();
- newlines_sparens();
- newlines_cleanup_braces(first);
- newlines_cleanup_angles(); // Issue #1167
-
- log_rule_B("nl_after_multiline_comment");
-
- if (options::nl_after_multiline_comment())
- {
- newline_after_multiline_comment();
- }
- log_rule_B("nl_after_label_colon");
-
- if (options::nl_after_label_colon())
- {
- newline_after_label_colon();
- }
- newlines_insert_blank_lines();
-
- log_rule_B("pos_bool");
-
- if (options::pos_bool() != TP_IGNORE)
- {
- newlines_chunk_pos(CT_BOOL, options::pos_bool());
- }
- log_rule_B("pos_compare");
-
- if (options::pos_compare() != TP_IGNORE)
- {
- newlines_chunk_pos(CT_COMPARE, options::pos_compare());
- }
- log_rule_B("pos_conditional");
-
- if (options::pos_conditional() != TP_IGNORE)
- {
- newlines_chunk_pos(CT_COND_COLON, options::pos_conditional());
- newlines_chunk_pos(CT_QUESTION, options::pos_conditional());
- }
- log_rule_B("pos_comma");
- log_rule_B("pos_enum_comma");
-
- if ( options::pos_comma() != TP_IGNORE
- || options::pos_enum_comma() != TP_IGNORE)
- {
- newlines_chunk_pos(CT_COMMA, options::pos_comma());
- }
- log_rule_B("pos_assign");
-
- if (options::pos_assign() != TP_IGNORE)
- {
- newlines_chunk_pos(CT_ASSIGN, options::pos_assign());
- }
- log_rule_B("pos_arith");
-
- if (options::pos_arith() != TP_IGNORE)
- {
- newlines_chunk_pos(CT_ARITH, options::pos_arith());
- newlines_chunk_pos(CT_CARET, options::pos_arith());
- }
- log_rule_B("pos_shift");
-
- if (options::pos_shift() != TP_IGNORE)
- {
- newlines_chunk_pos(CT_SHIFT, options::pos_shift());
- }
- newlines_class_colon_pos(CT_CLASS_COLON);
- newlines_class_colon_pos(CT_CONSTR_COLON);
-
- log_rule_B("nl_squeeze_ifdef");
-
- if (options::nl_squeeze_ifdef())
- {
- newlines_squeeze_ifdef();
- }
- log_rule_B("nl_squeeze_paren_close");
-
- if (options::nl_squeeze_paren_close())
- {
- newlines_squeeze_paren_close();
- }
-//prot_the_line(__func__, __LINE__, 15, 4);
- do_blank_lines();
-//prot_the_line(__func__, __LINE__, 15, 4);
- newlines_eat_start_end();
- newlines_functions_remove_extra_blank_lines();
- newlines_cleanup_dup();
- first = false;
- dump_step(dump_file, "Inside first while loop");
- } while ( old_changes != cpd.changes
- && cpd.pass_count-- > 0);
-
- mark_comments();
-
- // Add balanced spaces around nested params
- log_rule_B("sp_balance_nested_parens");
-
- if (options::sp_balance_nested_parens())
- {
- space_text_balance_nested_parens();
- }
- // Scrub certain added semicolons
- log_rule_B("mod_pawn_semicolon");
-
- if ( language_is_set(LANG_PAWN)
- && options::mod_pawn_semicolon())
- {
- pawn_scrub_vsemi();
- }
- // Sort imports/using/include
- log_rule_B("mod_sort_import");
- log_rule_B("mod_sort_include");
- log_rule_B("mod_sort_using");
-
- if ( options::mod_sort_import()
- || options::mod_sort_include()
- || options::mod_sort_using())
- {
- sort_imports();
- }
- // Fix same-line inter-chunk spacing
- space_text();
-
- // Do any aligning of preprocessors
- log_rule_B("align_pp_define_span");
-
- if (options::align_pp_define_span() > 0)
- {
- align_preprocessor();
- }
- // Indent the text
- indent_preproc();
- indent_text();
-
- // Insert trailing comments after certain close braces
- log_rule_B("mod_add_long_switch_closebrace_comment");
- log_rule_B("mod_add_long_function_closebrace_comment");
- log_rule_B("mod_add_long_class_closebrace_comment");
- log_rule_B("mod_add_long_namespace_closebrace_comment");
-
- if ( (options::mod_add_long_switch_closebrace_comment() > 0)
- || (options::mod_add_long_function_closebrace_comment() > 0)
- || (options::mod_add_long_class_closebrace_comment() > 0)
- || (options::mod_add_long_namespace_closebrace_comment() > 0))
- {
- add_long_closebrace_comment();
- }
- // Insert trailing comments after certain preprocessor conditional blocks
- log_rule_B("mod_add_long_ifdef_else_comment");
- log_rule_B("mod_add_long_ifdef_endif_comment");
-
- if ( (options::mod_add_long_ifdef_else_comment() > 0)
- || (options::mod_add_long_ifdef_endif_comment() > 0))
- {
- add_long_preprocessor_conditional_block_comment();
- }
- // Align everything else, reindent and break at code_width
- first = true;
-
- dump_step(dump_file, "Before second while loop");
-
- do
- {
- align_all();
- indent_text();
- old_changes = cpd.changes;
-
- log_rule_B("code_width");
-
- if (options::code_width() > 0)
- {
- LOG_FMT(LNEWLINE, "%s(%d): Code_width loop start: %d\n",
- __func__, __LINE__, cpd.changes);
- log_rule_B("debug_max_number_of_loops");
-
- if (options::debug_max_number_of_loops() > 0)
- {
- if (cpd.changes > options::debug_max_number_of_loops()) // Issue #2432
- {
- LOG_FMT(LNEWLINE, "%s(%d): too many loops. Make a report, please.\n",
- __func__, __LINE__);
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- }
- do_code_width();
-
- if ( old_changes != cpd.changes
- && first)
- {
- // retry line breaks caused by splitting 1-liners
- newlines_cleanup_braces(false);
- newlines_insert_blank_lines();
- newlines_functions_remove_extra_blank_lines();
- newlines_remove_disallowed();
- first = false;
- }
- }
- dump_step(dump_file, "Inside second while loop");
- } while (old_changes != cpd.changes);
-
- // And finally, align the backslash newline stuff
- align_right_comments();
-
- log_rule_B("align_nl_cont");
-
- if (options::align_nl_cont())
- {
- align_backslash_newline();
- }
- dump_step(dump_file, "Final version");
-
- // which output is to be done?
- if (cpd.html_file == nullptr)
- {
- // Now render it all to the output file
- output_text(pfout);
- }
- else
- {
- // create the tracking file
- FILE *t_file;
- t_file = fopen(cpd.html_file, "wb");
-
- if (t_file)
- {
- output_text(t_file);
- fclose(t_file);
- exit(EX_OK);
- }
- exit(EX_USAGE);
- }
- }
-
- // Special hook for dumping parsed data for debugging
- if (parsed_file != nullptr)
- {
- FILE *p_file;
-
- if ( parsed_file[0] == '-'
- && !parsed_file[1])
- {
- p_file = stdout;
- }
- else
- {
- p_file = fopen(parsed_file, "wb");
- }
-
- if (p_file != nullptr)
- {
- if (ends_with(parsed_file, ".csv", false))
- {
- output_parsed_csv(p_file);
- }
- else
- {
- output_parsed(p_file);
- }
-
- if (p_file != stdout)
- {
- fclose(p_file);
- }
- }
- else
- {
- LOG_FMT(LERR, "%s: Failed to open '%s' for write: %s (%d)\n",
- __func__, parsed_file, strerror(errno), errno);
- exit(EX_IOERR);
- }
- }
-
- if ( cpd.do_check
- && !bout_content_matches(fm, true))
- {
- cpd.check_fail_cnt++;
- }
-
- if (!defer_uncrustify_end)
- {
- uncrustify_end();
- }
-} // uncrustify_file
-
-
-void uncrustify_end()
-{
- // Free all the memory
- Chunk *pc;
-
- cpd.unc_stage = unc_stage_e::CLEANUP;
-
- while ((pc = Chunk::GetHead())->IsNotNullChunk())
- {
- Chunk::Delete(pc);
- }
-
- if (cpd.bout)
- {
- cpd.bout->clear();
- }
- // Clean up some state variables
- cpd.unc_off = false;
- cpd.al_cnt = 0;
- cpd.did_newline = true;
- cpd.pp_level = 0;
- cpd.changes = 0;
- cpd.in_preproc = CT_NONE;
- memset(cpd.le_counts, 0, sizeof(cpd.le_counts));
- cpd.preproc_ncnl_count = 0;
- cpd.ifdef_over_whole_file = 0;
- cpd.warned_unable_string_replace_tab_chars = false;
-}
-
-
-const char *get_token_name(E_Token token)
-{
- if ( token >= 0
- && (token < static_cast<int> ARRAY_SIZE(token_names))
- && (token_names[token] != nullptr))
- {
- return(token_names[token]);
- }
- return("???");
-}
-
-
-E_Token find_token_name(const char *text)
-{
- if ( text != nullptr
- && (*text != 0))
- {
- for (int idx = 1; idx < static_cast<int> ARRAY_SIZE(token_names); idx++)
- {
- if (strcasecmp(text, token_names[idx]) == 0)
- {
- return(static_cast<E_Token>(idx));
- }
- }
- }
- return(CT_NONE);
-}
-
-
-static bool ends_with(const char *filename, const char *tag, bool case_sensitive = true)
-{
- int len1 = strlen(filename);
- int len2 = strlen(tag);
-
- return( len2 <= len1
- && ( ( case_sensitive
- && (strcmp(&filename[len1 - len2], tag) == 0))
- || ( !case_sensitive
- && (strcasecmp(&filename[len1 - len2], tag) == 0))));
-}
-
-
-struct lang_name_t
-{
- const char *name;
- size_t lang;
-};
-
-static lang_name_t language_names[] =
-{
- { "C", LANG_C }, // 0x0001
- { "CPP", LANG_CPP }, // 0x0002
- { "D", LANG_D }, // 0x0004
- { "CS", LANG_CS }, // 0x0008
- { "JAVA", LANG_JAVA }, // 0x0010
- { "OC", LANG_OC }, // 0x0020
- { "VALA", LANG_VALA }, // 0x0040
- { "PAWN", LANG_PAWN }, // 0x0080
- { "ECMA", LANG_ECMA }, // 0x0100
- { "OC+", LANG_OC | LANG_CPP }, // 0x0020 + 0x0002
- { "CS+", LANG_CS | LANG_CPP }, // 0x0008 + 0x0002
- { "C-Header", LANG_C | LANG_CPP | FLAG_HDR }, // 0x0001 + 0x0002 + 0x2000 = 0x2022
-};
-
-
-static size_t language_flags_from_name(const char *name)
-{
- for (const auto &language : language_names)
- {
- if (strcasecmp(name, language.name) == 0)
- {
- return(language.lang);
- }
- }
-
- return(0);
-}
-
-
-const char *language_name_from_flags(size_t lang)
-{
- // Check for an exact match first
- for (auto &language_name : language_names)
- {
- if (language_name.lang == lang)
- {
- return(language_name.name);
- }
- }
-
- // Check for the first set language bit
- for (auto &language_name : language_names)
- {
- if ((language_name.lang & lang) != 0)
- {
- return(language_name.name);
- }
- }
-
- return("???");
-}
-
-
-//! type to map a programming language to a typically used filename extension
-struct lang_ext_t
-{
- const char *ext; //! filename extension typically used for ...
- const char *name; //! a programming language
-};
-
-//! known filename extensions linked to the corresponding programming language
-struct lang_ext_t language_exts[] =
-{
- { ".c", "C" },
- { ".c++", "CPP" },
- { ".cc", "CPP" },
- { ".cp", "CPP" },
- { ".cpp", "CPP" },
- { ".cs", "CS" },
- { ".cxx", "CPP" },
- { ".d", "D" },
- { ".di", "D" },
- { ".es", "ECMA" },
- { ".h", "C-Header" },
- { ".h++", "CPP" },
- { ".hh", "CPP" },
- { ".hp", "CPP" },
- { ".hpp", "CPP" },
- { ".hxx", "CPP" },
- { ".inl", "PAWN" },
- { ".java", "JAVA" },
- { ".js", "ECMA" },
- { ".m", "OC" },
- { ".mm", "OC+" },
- { ".p", "PAWN" },
- { ".pawn", "PAWN" },
- { ".sma", "PAWN" },
- { ".sqc", "C" }, // embedded SQL
- { ".sql", "SQL" },
- { ".vala", "VALA" },
-};
-
-
-const char *get_file_extension(int &idx)
-{
- const char *val = nullptr;
-
- if (idx < static_cast<int> ARRAY_SIZE(language_exts))
- {
- val = language_exts[idx].ext;
- }
- idx++;
- return(val);
-}
-
-
-typedef std::map<string, string> extension_map_t;
-/**
- * maps a file extension to a language flag.
- *
- * @note The "." need to be included, as in ".c". The file extensions
- * ARE case sensitive.
- */
-static extension_map_t g_ext_map;
-
-
-const char *extension_add(const char *ext_text, const char *lang_text)
-{
- size_t lang_flags = language_flags_from_name(lang_text);
-
- if (lang_flags)
- {
- const char *lang_name = language_name_from_flags(lang_flags);
- g_ext_map[string(ext_text)] = lang_name;
- return(lang_name);
- }
- return(nullptr);
-}
-
-
-void print_extensions(FILE *pfile)
-{
- for (auto &language : language_names)
- {
- bool did_one = false;
-
- for (auto &extension_val : g_ext_map)
- {
- if (strcmp(extension_val.second.c_str(), language.name) == 0)
- {
- if (!did_one)
- {
- fprintf(pfile, "file_ext %s", extension_val.second.c_str());
- did_one = true;
- }
- fprintf(pfile, " %s", extension_val.first.c_str());
- }
- }
-
- if (did_one)
- {
- fprintf(pfile, "\n");
- }
- }
-}
-
-
-// TODO: better use enum lang_t for source file language
-static size_t language_flags_from_filename(const char *filename)
-{
- // check custom extensions first
- for (const auto &extension_val : g_ext_map)
- {
- if (ends_with(filename, extension_val.first.c_str()))
- {
- return(language_flags_from_name(extension_val.second.c_str()));
- }
- }
-
- for (auto &language : language_exts)
- {
- if (ends_with(filename, language.ext))
- {
- return(language_flags_from_name(language.name));
- }
- }
-
- // check again without case sensitivity
- for (auto &extension_val : g_ext_map)
- {
- if (ends_with(filename, extension_val.first.c_str(), false))
- {
- return(language_flags_from_name(extension_val.second.c_str()));
- }
- }
-
- for (auto &language : language_exts)
- {
- if (ends_with(filename, language.ext, false))
- {
- return(language_flags_from_name(language.name));
- }
- }
-
- return(LANG_C);
-} // language_flags_from_filename
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify.h
deleted file mode 100644
index 0a584805..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * @file uncrustify.h
- * prototypes for uncrustify.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef UNCRUSTIFY_H_INCLUDED
-#define UNCRUSTIFY_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-#include <stdio.h>
-
-int load_header_files();
-
-
-void uncrustify_file(const file_mem &fm, FILE *pfout, const char *parsed_file, const char *dump_filename, bool defer_uncrustify_end = false);
-
-
-void uncrustify_end();
-
-
-const char *get_token_name(E_Token token);
-
-
-/**
- * Gets the tag text for a language
- *
- * @param lang The LANG_xxx enum
- *
- * @return A string
- */
-const char *language_name_from_flags(size_t lang);
-
-
-/**
- * Grab the token id for the text.
- *
- * @return token, will be CT_NONE on failure to match
- */
-E_Token find_token_name(const char *text);
-
-
-/**
- * Replace the brain-dead and non-portable basename().
- * Returns a pointer to the character after the last '/'.
- * The returned value always points into path, unless path is nullptr.
- *
- * Input Returns
- * nullptr => ""
- * "/some/path/" => ""
- * "/some/path" => "path"
- * "afile" => "afile"
- *
- * @param path The path to look at
- *
- * @return Pointer to the character after the last path separator
- */
-const char *path_basename(const char *path);
-
-
-/**
- * Returns the length of the directory part of the filename.
- *
- * @param filename filename including full path
- *
- * @return character size of path
- */
-int path_dirname_len(const char *filename);
-
-
-void usage(const char *argv0);
-
-
-void usage_error(const char *msg = nullptr);
-
-
-/**
- * Set idx = 0 before the first call.
- * Done when returns nullptr
- */
-const char *get_file_extension(int &idx);
-
-
-//! Prints custom file extensions to the file
-void print_extensions(FILE *pfile);
-
-
-const char *extension_add(const char *ext_text, const char *lang_text);
-
-
-#endif /* UNCRUSTIFY_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_emscripten.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_emscripten.cpp
deleted file mode 100644
index 72206627..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_emscripten.cpp
+++ /dev/null
@@ -1,1212 +0,0 @@
-/*
- * uncrustify_emscripten.cpp - JavaScript Emscripten binding interface
- *
- * Created on: May 8, 2016
- * Author: Daniel Chumak
- *
- * INTERFACE:
- * ============================================================================
- * unsure about these:
- * --check TODO ???
- * --decode TODO ???
- * --detect TODO needs uncrustify start and end which both are static
- *
- *
- * will not be included:
- * ----------------------------------------------------------------------------
- * -t ( define via multiple --type )
- * -d ( define via multiple --define )
- * --assume ( no files available to guess the lang. based on the filename ending )
- * --files ( no batch processing will be available )
- * --prefix
- * --suffix
- * --assume
- * --no-backup
- * --replace
- * --mtime
- * --universalindent
- * --ds/--dump-steps
- * -help, -h, --usage, -?
- *
- *
- * done:
- * ----------------------------------------------------------------------------
- * --update-config ( use show_config() )
- * --update-config-with-doc ( show_config( bool withDoc = true ) )
- * --version, -v ( use get_version() )
- * --log, -L ( use log_type_enable( log_sev_t sev, bool value ) )
- * -q ( use quiet() )
- * --config, -c ( use loadConfig( string _cfg ) )
- * --file, -f ( use uncrustify( string _file ) )
- * --show ( use log_type_show_name( bool ) )
- * --frag ( use uncrustify( string _file, bool frag = true ) )
- * --type ( use add_keyword( string _type, E_Token type ) )
- * -l ( use uncrustify() )
- * --parsed, -p ( use debug() )
- */
-
-
-#if defined (__linux__)
-
-
-#include "keywords.h"
-#include "log_levels.h"
-#include "logger.h"
-#include "option.h"
-#include "options.h"
-#include "output.h"
-#include "prototypes.h"
-#include "uncrustify.h"
-#include "uncrustify_version.h"
-#include "unicode.h"
-
-#include <iostream>
-#include <map>
-#include <memory>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unordered_map>
-#include <vector>
-
-
-#ifdef EMSCRIPTEN
-#include <emscripten/bind.h>
-#include <emscripten/val.h>
-using namespace emscripten;
-#else
-#define EMSCRIPTEN_BINDINGS(module) void dummyFcn()
-template<class T>
-struct base {};
-struct emscripten
-{
- template<class... Args>
- emscripten value(Args...) { return{}; }
-
- template<class... Args>
- static emscripten function(Args...) { return{}; }
-
- template<class... Args>
- emscripten property(Args...) { return{}; }
-};
-using Dummy = emscripten;
-
-
-template<class T>
-Dummy enum_(char const *const)
-{
- return(Dummy{});
-}
-
-
-template<class T>
-Dummy register_vector(char const *const)
-{
- return(Dummy{});
-}
-
-
-template<class... Args>
-Dummy class_(char const *const)
-{
- return(Dummy{});
-}
-
-
-template<class T>
-Dummy select_overload(T)
-{
- return(Dummy{});
-}
-#endif
-
-using namespace std;
-using namespace uncrustify;
-
-namespace
-{
-
-/**
- * Loads options from a file represented as a single char array.
- * Modifies: input char array, cpd.line_number
- * Expects: \0 terminated char array
- *
- * @param configString char array that holds the whole config
- * @return EXIT_SUCCESS on success
- */
-int load_option_fileChar(char *configString)
-{
- char *delimPos = &configString[0];
- char *subStringStart = &configString[0];
-
- cpd.line_number = 0;
-
- // TODO: handle compat_level
- int compat_level = 0;
-
- while (true)
- {
- delimPos = strchr(delimPos, '\n');
-
- if (delimPos == nullptr)
- {
- break;
- }
- // replaces \n with \0 -> string including multiple terminated substrings
- *delimPos = '\0';
-
-
- process_option_line(subStringStart, "", compat_level);
-
- delimPos++;
- subStringStart = delimPos;
- }
- //get last line, expectation: ends with \0
- process_option_line(subStringStart, "", compat_level);
-
- return(EXIT_SUCCESS);
-}
-
-
-/**
- * adds a new keyword to Uncrustify's dynamic keyword map (dkwm, keywords.cpp)
- *
- * @param tag: keyword that is going to be added
- * @param type: type of the keyword
- */
-void _add_keyword(string tag, E_Token type)
-{
- if (tag.empty())
- {
- LOG_FMT(LERR, "%s: input string is empty\n", __func__);
- return;
- }
- add_keyword(tag, type);
-}
-
-
-//! clears Uncrustify's dynamic keyword map (dkwm, keywords.cpp)
-void clear_keywords()
-{
- clear_keyword_file();
-}
-
-
-/**
- * Show or hide the severity prefix "<1>"
- *
- * @param b: true=show, false=hide
- */
-void show_log_type(bool b)
-{
- log_show_sev(b);
-}
-
-
-//! returns the UNCRUSTIFY_VERSION string
-string get_version()
-{
- return(UNCRUSTIFY_VERSION);
-}
-
-
-//! disables all logging messages
-void set_quiet()
-{
- // set empty mask
- log_set_mask({});
-}
-
-
-/**
- * resets value of an option to its default
- *
- * @param name: name of the option
- * @return options enum value of the found option or -1 if option was not found
- */
-int reset_option(string name)
-{
- if (name.empty())
- {
- LOG_FMT(LERR, "%s: name string is empty\n", __func__);
- return(-1);
- }
- const auto option = find_option(name.c_str());
-
- if (option == nullptr)
- {
- LOG_FMT(LERR, "Option %s not found\n", name.c_str());
- return(-1);
- }
- option->reset();
- return(0);
-}
-
-
-/**
- * sets value of an option
- *
- * @param name: name of the option
- * @param value: value that is going to be set
- * @return options enum value of the found option or -1 if option was not found
- */
-int set_option(string name, string value)
-{
- if (name.empty())
- {
- LOG_FMT(LERR, "%s: name string is empty\n", __func__);
- return(-1);
- }
-
- if (value.empty())
- {
- LOG_FMT(LERR, "%s: value string is empty\n", __func__);
- return(-1);
- }
- const auto option = find_option(name.c_str());
-
- if (option == nullptr)
- {
- LOG_FMT(LERR, "Option %s not found\n", name.c_str());
- return(-1);
- }
-
- if (!option->read(value.c_str()))
- {
- LOG_FMT(
- LERR,
- "Failed to set value %s for option: %s of type: %s\n",
- name.c_str(),
- value.c_str(),
- to_string(option->type())
- );
- return(-1);
- }
- return(0);
-}
-
-
-/**
- * returns value of an option
- *
- * @param name: name of the option
- * @return currently set value of the option
- */
-string get_option(string name)
-{
- if (name.empty())
- {
- LOG_FMT(LERR, "%s: input string is empty\n", __func__);
- return("");
- }
- const auto option = find_option(name.c_str());
-
- if (option == nullptr)
- {
- LOG_FMT(LWARN, "Option %s not found\n", name.c_str());
- return("");
- }
- return(option->str());
-}
-
-
-/**
- * returns the config file string based on the current configuration
- *
- * @param withDoc: false=without documentation,
- * true=with documentation text lines
- * @param only_not_default: false=containing all options,
- * true=containing only options with non default values
- * @return returns the config file string based on the current configuration
- */
-string show_config(bool withDoc, bool only_not_default)
-{
- char *buf;
- size_t len;
-
- FILE *stream = open_memstream(&buf, &len);
-
- if (stream == nullptr)
- {
- LOG_FMT(LERR, "Failed to open_memstream\n");
- fflush(stream);
- fclose(stream);
- free(buf);
- return("");
- }
- save_option_file(stream, withDoc, only_not_default);
-
- fflush(stream);
- fclose(stream);
-
- string out(buf);
-
- free(buf);
-
- return(out);
-}
-
-
-/**
- * returns the config file string with all options based on the current configuration
- *
- * @param withDoc: false= without documentation, true=with documentation text lines
- * @return returns the config file string with all options based on the current configuration
- */
-string show_config(bool withDoc)
-{
- return(show_config(withDoc, false));
-}
-
-
-//!returns the config file string with all options and without documentation based on the current configuration
-string show_config()
-{
- return(show_config(false, false));
-}
-
-
-std::vector<OptionGroup *> get_groups()
-{
- std::vector<OptionGroup *> groups;
-
- groups.reserve(5);
-
- for (size_t i = 0; true; ++i)
- {
- OptionGroup *group = get_option_group(i);
-
- if (!group)
- {
- break;
- }
- groups.push_back(group);
- }
-
- return(groups);
-}
-
-
-std::vector<GenericOption *> get_options()
-{
- std::vector<GenericOption *> options;
-
- options.reserve(get_option_count());
-
- for (size_t i = 0; true; ++i)
- {
- OptionGroup *group = get_option_group(i);
-
- if (!group)
- {
- break;
- }
- options.insert(
- end(options),
- begin(group->options),
- end(group->options)
- );
- }
-
- return(options);
-}
-
-
-//! resets all options to their default values
-void reset_options()
-{
- auto options = get_options();
-
- for (auto *option : options)
- {
- option->reset();
- }
-}
-
-
-/**
- * initializes the current libUncrustify instance,
- * used only for emscripten binding here and will be automatically called while
- * module initialization
- */
-void _initialize()
-{
- register_options();
- log_init(stdout);
-
- LOG_FMT(LSYS, "Initialized libUncrustify - " UNCRUSTIFY_VERSION "\n");
-}
-
-
-//! destroys the current libUncrustify instance
-void destruct()
-{
- clear_keyword_file();
-}
-
-
-/**
- * reads option file string, sets the defined options
- *
- * @return returns EXIT_SUCCESS on success
- */
-int _loadConfig(intptr_t _cfg)
-{
- // reset everything in case a config was loaded previously
- clear_keyword_file();
- reset_options();
-
- // embind complains about char* so we use an int to get the pointer and cast
- // it, memory management is done in /emscripten/postfix_module.js
- char *cfg = reinterpret_cast<char *>(_cfg);
-
- if (load_option_fileChar(cfg) != EXIT_SUCCESS)
- {
- LOG_FMT(LERR, "unable to load the config\n");
- return(EXIT_FAILURE);
- }
- // This relies on cpd.filename being the config file name
- load_header_files();
-
- LOG_FMT(LSYS, "finished loading config\n");
- return(EXIT_SUCCESS);
-}
-
-
-/**
- * format string
- *
- * @param file: pointer to the file char* string that is going to be formatted
- * @param langIDX: specifies in which language the input file is written
- * @param frag: true=fragmented code input, false=unfragmented code input
- * @param defer: true=do not perform cleanup of Uncrustify structures
- *
- * @return pointer to the formatted file char* string
- */
-intptr_t _uncrustify(intptr_t _file, lang_flag_e langIDX, bool frag, bool defer)
-{
- // Problem: uncrustify originally is not a lib and uses global vars such as
- // cpd.error_count for the whole program execution
- // to know if errors occurred during the formatting step we reset this var here
- cpd.filename = "stdin";
- cpd.frag = frag;
-
- if (langIDX == 0) // 0 == undefined
- {
- LOG_FMT(LWARN, "language of input file not defined, C++ will be assumed\n");
- cpd.lang_flags = LANG_CPP;
- }
- else
- {
- cpd.lang_flags = langIDX;
- }
- // embind complains about char* so we use an intptr_t to get the pointer and
- // cast it, memory management is done in /emscripten/postfix_module.js
- char *file = reinterpret_cast<char *>(_file);
-
- file_mem fm;
-
- fm.raw.clear();
- fm.data.clear();
- fm.enc = char_encoding_e::e_ASCII;
- fm.raw = vector<UINT8>();
-
- char c;
-
- for (auto idx = 0; (c = file[idx]) != 0; ++idx)
- {
- fm.raw.push_back(c);
- }
-
- if (!decode_unicode(fm.raw, fm.data, fm.enc, fm.bom))
- {
- LOG_FMT(LERR, "Failed to read code\n");
- return(0);
- }
- // Done reading from stdin
- LOG_FMT(LSYS, "Parsing: %zu bytes (%zu chars) from stdin as language %s\n",
- fm.raw.size(), fm.data.size(),
- language_name_from_flags(cpd.lang_flags));
-
-
- char *buf = nullptr;
- size_t len = 0;
-
- // uncrustify uses FILE instead of streams for its outputs
- // to redirect FILE writes into a char* open_memstream is used
- // windows lacks open_memstream, only UNIX/BSD is supported
- // apparently emscripten has its own implementation, if that is not working
- // see: stackoverflow.com/questions/10305095#answer-10341073
- FILE *stream = open_memstream(&buf, &len);
-
- if (stream == nullptr)
- {
- LOG_FMT(LERR, "Failed to open_memstream\n");
- return(0);
- }
- // TODO One way to implement the --parsed, -p functionality would
- // be to let the uncrustify_file function run, throw away the formatted
- // output and return the debug as a string. For this uncrustify_file would
- // need to accept a stream, FILE or a char array pointer in which the output
- // will be stored.
- // Another option would be to check, inside the uncrustify_file function,
- // if the current filename string matches stdout or stderr and use those as
- // output locations. This is the easier fix but the debug info in the
- // browsers console is littered with other unneeded text.
- // Finally, the ugliest solution, would be also possible to re-route
- // either stdout or stderr inside the Module var of emscripten to a js
- // function which passes the debug output into a dedicated output js target.
- // This therefore would introduce the dependency on the user to always have
- // the output js target available.
- uncrustify_file(fm, stream, nullptr, nullptr, defer);
-
- fflush(stream);
- fclose(stream);
-
- if (len == 0)
- {
- return(0);
- }
- // buf is deleted inside js code
- return(reinterpret_cast<intptr_t>(buf));
-} // uncrustify
-
-
-/**
- * format string
- *
- * @param file: pointer to the file char* string that is going to be formatted
- * @param langIDX: specifies in which language the input file is written
- * @param frag: true=fragmented code input, false=unfragmented code input
- *
- * @return pointer to the formatted file char* string
- */
-intptr_t _uncrustify(intptr_t file, lang_flag_e langIDX, bool frag)
-{
- return(_uncrustify(file, langIDX, frag, false));
-}
-
-
-/**
- * format string, assume unfragmented code input
- *
- * @param file: pointer to the file char* string that is going to be formatted
- * @param langIDX: specifies in which language the input file is written
- *
- * @return pointer to the formatted file char* string
- */
-intptr_t _uncrustify(intptr_t file, lang_flag_e langIDX)
-{
- return(_uncrustify(file, langIDX, false, false));
-}
-
-
-/**
- * generate debug output
- *
- * @param file: pointer to the file char* string that is going to be formatted
- * @param langIDX: specifies in which language the input file is written
- * @param frag: true=fragmented code input, false=unfragmented code input
- *
- * @return pointer to the debug file char* string
- */
-intptr_t _debug(intptr_t _file, lang_flag_e langIDX, bool frag)
-{
- auto formatted_str_ptr = _uncrustify(_file, langIDX, frag, true);
- char *formatted_str = reinterpret_cast<char *>(formatted_str_ptr);
-
- // Lazy solution: Throw away the formatted file output.
- // Maybe later add option to return both formatted file string and debug
- // file string together ... somehow.
- free(formatted_str);
-
- char *buf = nullptr;
- size_t len = 0;
- FILE *stream = open_memstream(&buf, &len);
-
- if (stream == nullptr)
- {
- LOG_FMT(LERR, "Failed to open_memstream\n");
- return(0);
- }
- output_parsed(stream);
- fflush(stream);
- fclose(stream);
-
- // start deferred _uncrustify cleanup
- uncrustify_end();
-
- if (len == 0)
- {
- return(0);
- }
- // buf is deleted inside js code
- return(reinterpret_cast<intptr_t>(buf));
-} // uncrustify
-
-
-/**
- * generate debug output, assume unfragmented code input
- *
- * @param file: pointer to the file char* string that is going to be formatted
- * @param langIDX: specifies in which language the input file is written
- *
- * @return pointer to the debug file char* string
- */
-intptr_t _debug(intptr_t _file, lang_flag_e langIDX)
-{
- return(_debug(_file, langIDX, false));
-}
-
-} // namespace
-
-EMSCRIPTEN_BINDINGS(MainModule)
-{
- // region enum bindings
- enum_<option_type_e>("OptionType")
- .value("BOOL", option_type_e::BOOL)
- .value("IARF", option_type_e::IARF)
- .value("LINEEND", option_type_e::LINEEND)
- .value("TOKENPOS", option_type_e::TOKENPOS)
- .value("NUM", option_type_e::NUM)
- .value("UNUM", option_type_e::UNUM)
- .value("STRING", option_type_e::STRING);
-
- enum_<iarf_e>("IARF")
- .value("IGNORE", IARF_IGNORE)
- .value("ADD", IARF_ADD)
- .value("REMOVE", IARF_REMOVE)
- .value("FORCE", IARF_FORCE);
-
- enum_<line_end_e>("LineEnd")
- .value("LF", line_end_e::LF)
- .value("CRLF", line_end_e::CRLF)
- .value("CR", line_end_e::CR)
- .value("AUTO", line_end_e::AUTO);
-
- enum_<token_pos_e>("TokenPos")
- .value("IGNORE", token_pos_e::IGNORE)
- .value("BREAK", token_pos_e::BREAK)
- .value("FORCE", token_pos_e::FORCE)
- .value("LEAD", token_pos_e::LEAD)
- .value("TRAIL", token_pos_e::TRAIL)
- .value("JOIN", token_pos_e::JOIN)
- .value("LEAD_BREAK", token_pos_e::LEAD_BREAK)
- .value("LEAD_FORCE", token_pos_e::LEAD_FORCE)
- .value("TRAIL_BREAK", token_pos_e::TRAIL_BREAK)
- .value("TRAIL_FORCE", token_pos_e::TRAIL_FORCE);
-
- enum_<log_sev_t>("LogType")
- .value("SYS", log_sev_t::LSYS)
- .value("ERR", log_sev_t::LERR)
- .value("WARN", log_sev_t::LWARN)
- .value("NOTE", log_sev_t::LNOTE)
- .value("INFO", log_sev_t::LINFO)
- .value("DATA", log_sev_t::LDATA)
- .value("FILELIST", log_sev_t::LFILELIST)
- .value("LINEENDS", log_sev_t::LLINEENDS)
- .value("CASTS", log_sev_t::LCASTS)
- .value("ALBR", log_sev_t::LALBR)
- .value("ALTD", log_sev_t::LALTD)
- .value("ALPP", log_sev_t::LALPP)
- .value("ALPROTO", log_sev_t::LALPROTO)
- .value("ALNLC", log_sev_t::LALNLC)
- .value("ALTC", log_sev_t::LALTC)
- .value("ALADD", log_sev_t::LALADD)
- .value("ALASS", log_sev_t::LALASS)
- .value("FVD", log_sev_t::LFVD)
- .value("FVD2", log_sev_t::LFVD2)
- .value("INDENT", log_sev_t::LINDENT)
- .value("INDENT2", log_sev_t::LINDENT2)
- .value("INDPSE", log_sev_t::LINDPSE)
- .value("INDPC", log_sev_t::LINDPC)
- .value("NEWLINE", log_sev_t::LNEWLINE)
- .value("PF", log_sev_t::LPF)
- .value("STMT", log_sev_t::LSTMT)
- .value("TOK", log_sev_t::LTOK)
- .value("ALRC", log_sev_t::LALRC)
- .value("CMTIND", log_sev_t::LCMTIND)
- .value("INDLINE", log_sev_t::LINDLINE)
- .value("SIB", log_sev_t::LSIB)
- .value("RETURN", log_sev_t::LRETURN)
- .value("BRDEL", log_sev_t::LBRDEL)
- .value("FCN", log_sev_t::LFCN)
- .value("FCNP", log_sev_t::LFCNP)
- .value("PCU", log_sev_t::LPCU)
- .value("DYNKW", log_sev_t::LDYNKW)
- .value("OUTIND", log_sev_t::LOUTIND)
- .value("BCSAFTER", log_sev_t::LBCSAFTER)
- .value("BCSPOP", log_sev_t::LBCSPOP)
- .value("BCSPUSH", log_sev_t::LBCSPUSH)
- .value("BCSSWAP", log_sev_t::LBCSSWAP)
- .value("FTOR", log_sev_t::LFTOR)
- .value("AS", log_sev_t::LAS)
- .value("PPIS", log_sev_t::LPPIS)
- .value("TYPEDEF", log_sev_t::LTYPEDEF)
- .value("VARDEF", log_sev_t::LVARDEF)
- .value("DEFVAL", log_sev_t::LDEFVAL)
- .value("PVSEMI", log_sev_t::LPVSEMI)
- .value("PFUNC", log_sev_t::LPFUNC)
- .value("SPLIT", log_sev_t::LSPLIT)
- .value("FTYPE", log_sev_t::LFTYPE)
- .value("TEMPL", log_sev_t::LTEMPL)
- .value("PARADD", log_sev_t::LPARADD)
- .value("PARADD2", log_sev_t::LPARADD2)
- .value("BLANKD", log_sev_t::LBLANKD)
- .value("TEMPFUNC", log_sev_t::LTEMPFUNC)
- .value("SCANSEMI", log_sev_t::LSCANSEMI)
- .value("DELSEMI", log_sev_t::LDELSEMI)
- .value("FPARAM", log_sev_t::LFPARAM)
- .value("NL1LINE", log_sev_t::LNL1LINE)
- .value("PFCHK", log_sev_t::LPFCHK)
- .value("AVDB", log_sev_t::LAVDB)
- .value("SORT", log_sev_t::LSORT)
- .value("SPACE", log_sev_t::LSPACE)
- .value("ALIGN", log_sev_t::LALIGN)
- .value("ALAGAIN", log_sev_t::LALAGAIN)
- .value("OPERATOR", log_sev_t::LOPERATOR)
- .value("ASFCP", log_sev_t::LASFCP)
- .value("INDLINED", log_sev_t::LINDLINED)
- .value("BCTRL", log_sev_t::LBCTRL)
- .value("RMRETURN", log_sev_t::LRMRETURN)
- .value("PPIF", log_sev_t::LPPIF)
- .value("MCB", log_sev_t::LMCB)
- .value("BRCH", log_sev_t::LBRCH)
- .value("FCNR", log_sev_t::LFCNR)
- .value("OCCLASS", log_sev_t::LOCCLASS)
- .value("OCMSG", log_sev_t::LOCMSG)
- .value("BLANK", log_sev_t::LBLANK)
- .value("OBJCWORD", log_sev_t::LOBJCWORD)
- .value("CHANGE", log_sev_t::LCHANGE)
- .value("CONTTEXT", log_sev_t::LCONTTEXT)
- .value("ANNOT", log_sev_t::LANNOT)
- .value("OCBLK", log_sev_t::LOCBLK)
- .value("FLPAREN", log_sev_t::LFLPAREN)
- .value("OCMSGD", log_sev_t::LOCMSGD)
- .value("INDENTAG", log_sev_t::LINDENTAG)
- .value("NFD", log_sev_t::LNFD)
- .value("JDBI", log_sev_t::LJDBI)
- .value("SETPAR", log_sev_t::LSETPAR)
- .value("SETTYP", log_sev_t::LSETTYP)
- .value("SETFLG", log_sev_t::LSETFLG)
- .value("NLFUNCT", log_sev_t::LNLFUNCT)
- .value("CHUNK", log_sev_t::LCHUNK)
- .value("GUY98", log_sev_t::LGUY98)
- .value("GUY", log_sev_t::LGUY);
-
- enum_<E_Token>("TokenType")
- .value("NONE", E_Token::CT_NONE)
- .value("EOF", E_Token::CT_EOF)
- .value("UNKNOWN", E_Token::CT_UNKNOWN)
- .value("JUNK", E_Token::CT_JUNK)
- .value("WHITESPACE", E_Token::CT_WHITESPACE)
- .value("SPACE", E_Token::CT_SPACE)
- .value("NEWLINE", E_Token::CT_NEWLINE)
- .value("NL_CONT", E_Token::CT_NL_CONT)
- .value("COMMENT_CPP", E_Token::CT_COMMENT_CPP)
- .value("COMMENT", E_Token::CT_COMMENT)
- .value("COMMENT_MULTI", E_Token::CT_COMMENT_MULTI)
- .value("COMMENT_EMBED", E_Token::CT_COMMENT_EMBED)
- .value("COMMENT_START", E_Token::CT_COMMENT_START)
- .value("COMMENT_END", E_Token::CT_COMMENT_END)
- .value("COMMENT_WHOLE", E_Token::CT_COMMENT_WHOLE)
- .value("COMMENT_ENDIF", E_Token::CT_COMMENT_ENDIF)
- .value("IGNORED", E_Token::CT_IGNORED)
- .value("WORD", E_Token::CT_WORD)
- .value("NUMBER", E_Token::CT_NUMBER)
- .value("NUMBER_FP", E_Token::CT_NUMBER_FP)
- .value("STRING", E_Token::CT_STRING)
- .value("STRING_MULTI", E_Token::CT_STRING_MULTI)
- .value("IF", E_Token::CT_IF)
- .value("ELSE", E_Token::CT_ELSE)
- .value("ELSEIF", E_Token::CT_ELSEIF)
- .value("FOR", E_Token::CT_FOR)
- .value("WHILE", E_Token::CT_WHILE)
- .value("WHILE_OF_DO", E_Token::CT_WHILE_OF_DO)
- .value("SWITCH", E_Token::CT_SWITCH)
- .value("CASE", E_Token::CT_CASE)
- .value("DO", E_Token::CT_DO)
- .value("SYNCHRONIZED", E_Token::CT_SYNCHRONIZED)
- .value("VOLATILE", E_Token::CT_VOLATILE)
- .value("TYPEDEF", E_Token::CT_TYPEDEF)
- .value("STRUCT", E_Token::CT_STRUCT)
- .value("ENUM", E_Token::CT_ENUM)
- .value("ENUM_CLASS", E_Token::CT_ENUM_CLASS)
- .value("SIZEOF", E_Token::CT_SIZEOF)
- .value("DECLTYPE", E_Token::CT_DECLTYPE)
- .value("RETURN", E_Token::CT_RETURN)
- .value("BREAK", E_Token::CT_BREAK)
- .value("UNION", E_Token::CT_UNION)
- .value("GOTO", E_Token::CT_GOTO)
- .value("CONTINUE", E_Token::CT_CONTINUE)
- .value("C_CAST", E_Token::CT_C_CAST)
- .value("CPP_CAST", E_Token::CT_CPP_CAST)
- .value("D_CAST", E_Token::CT_D_CAST)
- .value("TYPE_CAST", E_Token::CT_TYPE_CAST)
- .value("TYPENAME", E_Token::CT_TYPENAME)
- .value("TEMPLATE", E_Token::CT_TEMPLATE)
- .value("WHERE_SPEC", E_Token::CT_WHERE_SPEC)
- .value("ASSIGN", E_Token::CT_ASSIGN)
- .value("ASSIGN_NL", E_Token::CT_ASSIGN_NL)
- .value("SASSIGN", E_Token::CT_SASSIGN)
- .value("ASSIGN_DEFAULT_ARG", E_Token::CT_ASSIGN_DEFAULT_ARG)
- .value("ASSIGN_FUNC_PROTO", E_Token::CT_ASSIGN_FUNC_PROTO)
- .value("COMPARE", E_Token::CT_COMPARE)
- .value("SCOMPARE", E_Token::CT_SCOMPARE)
- .value("BOOL", E_Token::CT_BOOL)
- .value("SBOOL", E_Token::CT_SBOOL)
- .value("ARITH", E_Token::CT_ARITH)
- .value("SARITH", E_Token::CT_SARITH)
- .value("CARET", E_Token::CT_CARET)
- .value("DEREF", E_Token::CT_DEREF)
- .value("INCDEC_BEFORE", E_Token::CT_INCDEC_BEFORE)
- .value("INCDEC_AFTER", E_Token::CT_INCDEC_AFTER)
- .value("MEMBER", E_Token::CT_MEMBER)
- .value("DC_MEMBER", E_Token::CT_DC_MEMBER)
- .value("C99_MEMBER", E_Token::CT_C99_MEMBER)
- .value("INV", E_Token::CT_INV)
- .value("DESTRUCTOR", E_Token::CT_DESTRUCTOR)
- .value("NOT", E_Token::CT_NOT)
- .value("D_TEMPLATE", E_Token::CT_D_TEMPLATE)
- .value("ADDR", E_Token::CT_ADDR)
- .value("NEG", E_Token::CT_NEG)
- .value("POS", E_Token::CT_POS)
- .value("STAR", E_Token::CT_STAR)
- .value("PLUS", E_Token::CT_PLUS)
- .value("MINUS", E_Token::CT_MINUS)
- .value("AMP", E_Token::CT_AMP)
- .value("BYREF", E_Token::CT_BYREF)
- .value("POUND", E_Token::CT_POUND)
- .value("PREPROC", E_Token::CT_PREPROC)
- .value("PREPROC_INDENT", E_Token::CT_PREPROC_INDENT)
- .value("PREPROC_BODY", E_Token::CT_PREPROC_BODY)
- .value("PP", E_Token::CT_PP)
- .value("ELLIPSIS", E_Token::CT_ELLIPSIS)
- .value("RANGE", E_Token::CT_RANGE)
- .value("NULLCOND", E_Token::CT_NULLCOND)
- .value("SEMICOLON", E_Token::CT_SEMICOLON)
- .value("VSEMICOLON", E_Token::CT_VSEMICOLON)
- .value("COLON", E_Token::CT_COLON)
- .value("ASM_COLON", E_Token::CT_ASM_COLON)
- .value("CASE_COLON", E_Token::CT_CASE_COLON)
- .value("CLASS_COLON", E_Token::CT_CLASS_COLON)
- .value("CONSTR_COLON", E_Token::CT_CONSTR_COLON)
- .value("D_ARRAY_COLON", E_Token::CT_D_ARRAY_COLON)
- .value("COND_COLON", E_Token::CT_COND_COLON)
- .value("WHERE_COLON", E_Token::CT_WHERE_COLON)
- .value("QUESTION", E_Token::CT_QUESTION)
- .value("COMMA", E_Token::CT_COMMA)
- .value("ASM", E_Token::CT_ASM)
- .value("ATTRIBUTE", E_Token::CT_ATTRIBUTE)
- .value("AUTORELEASEPOOL", E_Token::CT_AUTORELEASEPOOL)
- .value("OC_AVAILABLE", E_Token::CT_OC_AVAILABLE)
- .value("OC_AVAILABLE_VALUE", E_Token::CT_OC_AVAILABLE_VALUE)
- .value("CATCH", E_Token::CT_CATCH)
- .value("WHEN", E_Token::CT_WHEN)
- .value("WHERE", E_Token::CT_WHERE)
- .value("CLASS", E_Token::CT_CLASS)
- .value("DELETE", E_Token::CT_DELETE)
- .value("EXPORT", E_Token::CT_EXPORT)
- .value("FRIEND", E_Token::CT_FRIEND)
- .value("NAMESPACE", E_Token::CT_NAMESPACE)
- .value("PACKAGE", E_Token::CT_PACKAGE)
- .value("NEW", E_Token::CT_NEW)
- .value("OPERATOR", E_Token::CT_OPERATOR)
- .value("OPERATOR_VAL", E_Token::CT_OPERATOR_VAL)
- .value("ASSIGN_OPERATOR", E_Token::CT_ASSIGN_OPERATOR)
- .value("ACCESS", E_Token::CT_ACCESS)
- .value("ACCESS_COLON", E_Token::CT_ACCESS_COLON)
- .value("THROW", E_Token::CT_THROW)
- .value("NOEXCEPT", E_Token::CT_NOEXCEPT)
- .value("TRY", E_Token::CT_TRY)
- .value("BRACED_INIT_LIST", E_Token::CT_BRACED_INIT_LIST)
- .value("USING", E_Token::CT_USING)
- .value("USING_STMT", E_Token::CT_USING_STMT)
- .value("USING_ALIAS", E_Token::CT_USING_ALIAS)
- .value("D_WITH", E_Token::CT_D_WITH)
- .value("D_MODULE", E_Token::CT_D_MODULE)
- .value("SUPER", E_Token::CT_SUPER)
- .value("DELEGATE", E_Token::CT_DELEGATE)
- .value("BODY", E_Token::CT_BODY)
- .value("DEBUG", E_Token::CT_DEBUG)
- .value("DEBUGGER", E_Token::CT_DEBUGGER)
- .value("INVARIANT", E_Token::CT_INVARIANT)
- .value("UNITTEST", E_Token::CT_UNITTEST)
- .value("UNSAFE", E_Token::CT_UNSAFE)
- .value("FINALLY", E_Token::CT_FINALLY)
- .value("FIXED", E_Token::CT_FIXED)
- .value("IMPORT", E_Token::CT_IMPORT)
- .value("D_SCOPE", E_Token::CT_D_SCOPE)
- .value("D_SCOPE_IF", E_Token::CT_D_SCOPE_IF)
- .value("LAZY", E_Token::CT_LAZY)
- .value("D_MACRO", E_Token::CT_D_MACRO)
- .value("D_VERSION", E_Token::CT_D_VERSION)
- .value("D_VERSION_IF", E_Token::CT_D_VERSION_IF)
- .value("PAREN_OPEN", E_Token::CT_PAREN_OPEN)
- .value("PAREN_CLOSE", E_Token::CT_PAREN_CLOSE)
- .value("ANGLE_OPEN", E_Token::CT_ANGLE_OPEN)
- .value("ANGLE_CLOSE", E_Token::CT_ANGLE_CLOSE)
- .value("SPAREN_OPEN", E_Token::CT_SPAREN_OPEN)
- .value("SPAREN_CLOSE", E_Token::CT_SPAREN_CLOSE)
- .value("FPAREN_OPEN", E_Token::CT_FPAREN_OPEN)
- .value("FPAREN_CLOSE", E_Token::CT_FPAREN_CLOSE)
- .value("TPAREN_OPEN", E_Token::CT_TPAREN_OPEN)
- .value("TPAREN_CLOSE", E_Token::CT_TPAREN_CLOSE)
- .value("BRACE_OPEN", E_Token::CT_BRACE_OPEN)
- .value("BRACE_CLOSE", E_Token::CT_BRACE_CLOSE)
- .value("VBRACE_OPEN", E_Token::CT_VBRACE_OPEN)
- .value("VBRACE_CLOSE", E_Token::CT_VBRACE_CLOSE)
- .value("SQUARE_OPEN", E_Token::CT_SQUARE_OPEN)
- .value("SQUARE_CLOSE", E_Token::CT_SQUARE_CLOSE)
- .value("TSQUARE", E_Token::CT_TSQUARE)
- .value("MACRO_OPEN", E_Token::CT_MACRO_OPEN)
- .value("MACRO_CLOSE", E_Token::CT_MACRO_CLOSE)
- .value("MACRO_ELSE", E_Token::CT_MACRO_ELSE)
- .value("LABEL", E_Token::CT_LABEL)
- .value("LABEL_COLON", E_Token::CT_LABEL_COLON)
- .value("FUNCTION", E_Token::CT_FUNCTION)
- .value("FUNC_CALL", E_Token::CT_FUNC_CALL)
- .value("FUNC_CALL_USER", E_Token::CT_FUNC_CALL_USER)
- .value("FUNC_DEF", E_Token::CT_FUNC_DEF)
- .value("FUNC_TYPE", E_Token::CT_FUNC_TYPE)
- .value("FUNC_VAR", E_Token::CT_FUNC_VAR)
- .value("FUNC_PROTO", E_Token::CT_FUNC_PROTO)
- .value("FUNC_START", E_Token::CT_FUNC_START)
- .value("FUNC_CLASS_DEF", E_Token::CT_FUNC_CLASS_DEF)
- .value("FUNC_CLASS_PROTO", E_Token::CT_FUNC_CLASS_PROTO)
- .value("FUNC_CTOR_VAR", E_Token::CT_FUNC_CTOR_VAR)
- .value("FUNC_WRAP", E_Token::CT_FUNC_WRAP)
- .value("PROTO_WRAP", E_Token::CT_PROTO_WRAP)
- .value("MACRO_FUNC", E_Token::CT_MACRO_FUNC)
- .value("MACRO", E_Token::CT_MACRO)
- .value("QUALIFIER", E_Token::CT_QUALIFIER)
- .value("EXTERN", E_Token::CT_EXTERN)
- .value("DECLSPEC", E_Token::CT_DECLSPEC)
- .value("ALIGN", E_Token::CT_ALIGN)
- .value("TYPE", E_Token::CT_TYPE)
- .value("PTR_TYPE", E_Token::CT_PTR_TYPE)
- .value("TYPE_WRAP", E_Token::CT_TYPE_WRAP)
- .value("CPP_LAMBDA", E_Token::CT_CPP_LAMBDA)
- .value("CPP_LAMBDA_RET", E_Token::CT_CPP_LAMBDA_RET)
- .value("TRAILING_RET", E_Token::CT_TRAILING_RET)
- .value("BIT_COLON", E_Token::CT_BIT_COLON)
- .value("OC_DYNAMIC", E_Token::CT_OC_DYNAMIC)
- .value("OC_END", E_Token::CT_OC_END)
- .value("OC_IMPL", E_Token::CT_OC_IMPL)
- .value("OC_INTF", E_Token::CT_OC_INTF)
- .value("OC_PROTOCOL", E_Token::CT_OC_PROTOCOL)
- .value("OC_PROTO_LIST", E_Token::CT_OC_PROTO_LIST)
- .value("OC_GENERIC_SPEC", E_Token::CT_OC_GENERIC_SPEC)
- .value("OC_PROPERTY", E_Token::CT_OC_PROPERTY)
- .value("OC_CLASS", E_Token::CT_OC_CLASS)
- .value("OC_CLASS_EXT", E_Token::CT_OC_CLASS_EXT)
- .value("OC_CATEGORY", E_Token::CT_OC_CATEGORY)
- .value("OC_SCOPE", E_Token::CT_OC_SCOPE)
- .value("OC_MSG", E_Token::CT_OC_MSG)
- .value("OC_MSG_CLASS", E_Token::CT_OC_MSG_CLASS)
- .value("OC_MSG_FUNC", E_Token::CT_OC_MSG_FUNC)
- .value("OC_MSG_NAME", E_Token::CT_OC_MSG_NAME)
- .value("OC_MSG_SPEC", E_Token::CT_OC_MSG_SPEC)
- .value("OC_MSG_DECL", E_Token::CT_OC_MSG_DECL)
- .value("OC_RTYPE", E_Token::CT_OC_RTYPE)
- .value("OC_ATYPE", E_Token::CT_OC_ATYPE)
- .value("OC_COLON", E_Token::CT_OC_COLON)
- .value("OC_DICT_COLON", E_Token::CT_OC_DICT_COLON)
- .value("OC_SEL", E_Token::CT_OC_SEL)
- .value("OC_SEL_NAME", E_Token::CT_OC_SEL_NAME)
- .value("OC_BLOCK", E_Token::CT_OC_BLOCK)
- .value("OC_BLOCK_ARG", E_Token::CT_OC_BLOCK_ARG)
- .value("OC_BLOCK_TYPE", E_Token::CT_OC_BLOCK_TYPE)
- .value("OC_BLOCK_EXPR", E_Token::CT_OC_BLOCK_EXPR)
- .value("OC_BLOCK_CARET", E_Token::CT_OC_BLOCK_CARET)
- .value("OC_AT", E_Token::CT_OC_AT)
- .value("OC_PROPERTY_ATTR", E_Token::CT_OC_PROPERTY_ATTR)
- .value("PP_DEFINE", E_Token::CT_PP_DEFINE)
- .value("PP_DEFINED", E_Token::CT_PP_DEFINED)
- .value("PP_INCLUDE", E_Token::CT_PP_INCLUDE)
- .value("PP_IF", E_Token::CT_PP_IF)
- .value("PP_ELSE", E_Token::CT_PP_ELSE)
- .value("PP_ENDIF", E_Token::CT_PP_ENDIF)
- .value("PP_ASSERT", E_Token::CT_PP_ASSERT)
- .value("PP_EMIT", E_Token::CT_PP_EMIT)
- .value("PP_ENDINPUT", E_Token::CT_PP_ENDINPUT)
- .value("PP_ERROR", E_Token::CT_PP_ERROR)
- .value("PP_FILE", E_Token::CT_PP_FILE)
- .value("PP_LINE", E_Token::CT_PP_LINE)
- .value("PP_SECTION", E_Token::CT_PP_SECTION)
- .value("PP_ASM", E_Token::CT_PP_ASM)
- .value("PP_UNDEF", E_Token::CT_PP_UNDEF)
- .value("PP_PROPERTY", E_Token::CT_PP_PROPERTY)
- .value("PP_BODYCHUNK", E_Token::CT_PP_BODYCHUNK)
- .value("PP_PRAGMA", E_Token::CT_PP_PRAGMA)
- .value("PP_REGION", E_Token::CT_PP_REGION)
- .value("PP_ENDREGION", E_Token::CT_PP_ENDREGION)
- .value("PP_REGION_INDENT", E_Token::CT_PP_REGION_INDENT)
- .value("PP_IF_INDENT", E_Token::CT_PP_IF_INDENT)
- .value("PP_IGNORE", E_Token::CT_PP_IGNORE)
- .value("PP_OTHER", E_Token::CT_PP_OTHER)
- .value("CHAR", E_Token::CT_CHAR)
- .value("DEFINED", E_Token::CT_DEFINED)
- .value("FORWARD", E_Token::CT_FORWARD)
- .value("NATIVE", E_Token::CT_NATIVE)
- .value("STATE", E_Token::CT_STATE)
- .value("STOCK", E_Token::CT_STOCK)
- .value("TAGOF", E_Token::CT_TAGOF)
- .value("DOT", E_Token::CT_DOT)
- .value("TAG", E_Token::CT_TAG)
- .value("TAG_COLON", E_Token::CT_TAG_COLON)
- .value("LOCK", E_Token::CT_LOCK)
- .value("AS", E_Token::CT_AS)
- .value("IN", E_Token::CT_IN)
- .value("BRACED", E_Token::CT_BRACED)
- .value("THIS", E_Token::CT_THIS)
- .value("BASE", E_Token::CT_BASE)
- .value("DEFAULT", E_Token::CT_DEFAULT)
- .value("GETSET", E_Token::CT_GETSET)
- .value("GETSET_EMPTY", E_Token::CT_GETSET_EMPTY)
- .value("CONCAT", E_Token::CT_CONCAT)
- .value("CS_SQ_STMT", E_Token::CT_CS_SQ_STMT)
- .value("CS_SQ_COLON", E_Token::CT_CS_SQ_COLON)
- .value("CS_PROPERTY", E_Token::CT_CS_PROPERTY)
- .value("SQL_EXEC", E_Token::CT_SQL_EXEC)
- .value("SQL_BEGIN", E_Token::CT_SQL_BEGIN)
- .value("SQL_END", E_Token::CT_SQL_END)
- .value("SQL_WORD", E_Token::CT_SQL_WORD)
- .value("SQL_ASSIGN", E_Token::CT_SQL_ASSIGN)
- .value("CONSTRUCT", E_Token::CT_CONSTRUCT)
- .value("LAMBDA", E_Token::CT_LAMBDA)
- .value("ASSERT", E_Token::CT_ASSERT)
- .value("ANNOTATION", E_Token::CT_ANNOTATION)
- .value("FOR_COLON", E_Token::CT_FOR_COLON)
- .value("DOUBLE_BRACE", E_Token::CT_DOUBLE_BRACE)
- .value("CNG_HASINC", E_Token::CT_CNG_HASINC)
- .value("CNG_HASINCN", E_Token::CT_CNG_HASINCN)
- .value("Q_EMIT", E_Token::CT_Q_EMIT)
- .value("Q_FOREACH", E_Token::CT_Q_FOREACH)
- .value("Q_FOREVER", E_Token::CT_Q_FOREVER)
- .value("Q_GADGET", E_Token::CT_Q_GADGET)
- .value("Q_OBJECT", E_Token::CT_Q_OBJECT)
- .value("MODE", E_Token::CT_MODE)
- .value("DI", E_Token::CT_DI)
- .value("HI", E_Token::CT_HI)
- .value("QI", E_Token::CT_QI)
- .value("SI", E_Token::CT_SI)
- .value("NOTHROW", E_Token::CT_NOTHROW)
- .value("WORD_", E_Token::CT_WORD_);
-
- enum_<lang_flag_e>("Language")
- .value("C", lang_flag_e::LANG_C)
- .value("CPP", lang_flag_e::LANG_CPP)
- .value("D", lang_flag_e::LANG_D)
- .value("CS", lang_flag_e::LANG_CS)
- .value("JAVA", lang_flag_e::LANG_JAVA)
- .value("OC", lang_flag_e::LANG_OC)
- .value("VALA", lang_flag_e::LANG_VALA)
- .value("PAWN", lang_flag_e::LANG_PAWN)
- .value("ECMA", lang_flag_e::LANG_ECMA);
-
- // endregion enum bindings
-
- register_vector<std::string>("strings");
-
- class_<GenericOption>("GenericOption")
- .function("type", &GenericOption::type)
- .function("description", select_overload<std::string(const GenericOption &)>(
- [](const GenericOption &o)
- {
- return((o.description() != nullptr) ? string(o.description()) : "");
- }))
- .function("name", select_overload<std::string(const GenericOption &)>(
- [](const GenericOption &o)
- {
- return((o.name() != nullptr) ? string(o.name()) : "");
- }))
- .function("possible_values", select_overload<std::vector<std::string>(const GenericOption &)>(
- [](const GenericOption &o)
- {
- std::vector<std::string> strings;
-
- auto ptr = o.possibleValues();
-
- for (auto c = *ptr; c; c = *++ptr)
- {
- strings.push_back(std::string{ c });
- }
-
- return(strings);
- }))
- .function("default", &GenericOption::defaultStr)
- .function("min", &GenericOption::minStr)
- .function("max", &GenericOption::maxStr)
- .function("is_default", &GenericOption::isDefault)
- .function("reset", &GenericOption::reset)
- .function("set", select_overload<bool(GenericOption &o, const std::string &s)>(
- [](GenericOption &o, const std::string &s)
- {
- return(o.read(s.c_str()));
- }))
- .function("value", &GenericOption::str);
-
- register_vector<GenericOption *>("options");
-
- class_<Option<iarf_e>, base<GenericOption> >("OptionIARF")
- .function("value", &Option<iarf_e>::operator());
-
- class_<Option<line_end_e>, base<GenericOption> >("OptionLineEnd")
- .function("value", &Option<line_end_e>::operator());
-
- class_<Option<token_pos_e>, base<GenericOption> >("OptionTokenPos")
- .function("value", &Option<token_pos_e>::operator());
-
- class_<Option<unsigned>, base<GenericOption> >("OptionUnsigned")
- .function("value", &Option<unsigned>::operator());
-
- class_<Option<signed>, base<GenericOption> >("OptionSigned")
- .function("value", &Option<signed>::operator());
-
- class_<Option<std::string>, base<GenericOption> >("OptionString")
- .function("value", &Option<std::string>::operator());
-
- class_<OptionGroup>("OptionGroup")
- .property("description", select_overload<std::string(const OptionGroup &)>(
- [](const OptionGroup &g)
- {
- return(std::string(g.description));
- }))
- .property("options", &OptionGroup::options);
-
- register_vector<OptionGroup *>("groups");
-
- emscripten::function("get_options", &get_options);
- emscripten::function("get_groups", &get_groups);
-
- emscripten::function("_initialize", &_initialize);
- emscripten::function("destruct", &destruct);
-
- emscripten::function("get_version", &get_version);
-
- emscripten::function("add_keyword", &_add_keyword);
- emscripten::function("clear_keywords", &clear_keywords);
-
- emscripten::function("reset_options", &reset_options);
- emscripten::function("option_reset_value", &reset_option);
- emscripten::function("option_set_value", &set_option);
- emscripten::function("option_get_value", &get_option);
-
- emscripten::function("_load_config", &_loadConfig);
- emscripten::function("show_config", select_overload<string(bool, bool)>(&show_config));
- emscripten::function("show_config", select_overload<string(bool)>(&show_config));
- emscripten::function("show_config", select_overload<string()>(&show_config));
-
- emscripten::function("log_type_enable", &log_set_sev);
- emscripten::function("log_type_show_name", &show_log_type);
- emscripten::function("quiet", &set_quiet);
-
- emscripten::function("_uncrustify", select_overload<intptr_t(intptr_t, lang_flag_e, bool, bool)>(&_uncrustify));
- emscripten::function("_uncrustify", select_overload<intptr_t(intptr_t, lang_flag_e, bool)>(&_uncrustify));
- emscripten::function("_uncrustify", select_overload<intptr_t(intptr_t, lang_flag_e)>(&_uncrustify));
-
- emscripten::function("_debug", select_overload<intptr_t(intptr_t, lang_flag_e, bool)>(&_debug));
- emscripten::function("_debug", select_overload<intptr_t(intptr_t, lang_flag_e)>(&_debug));
-};
-
-#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_types.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_types.cpp
deleted file mode 100644
index bd57f2d5..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_types.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * @file uncrustify_types.cpp
- * Defines some types for the uncrustify program
- *
- * @author Guy Maurel
- * @license GPL v2+
- */
-
-#include "uncrustify_types.h"
-
-
-const char *get_brace_stage_name(brace_stage_e brace_stage)
-{
- switch (brace_stage)
- {
- case brace_stage_e::NONE:
- return("NONE");
-
- case brace_stage_e::PAREN1:
- return("PAREN1");
-
- case brace_stage_e::OP_PAREN1:
- return("OP_PAREN1");
-
- case brace_stage_e::WOD_PAREN:
- return("WOD_PAREN");
-
- case brace_stage_e::WOD_SEMI:
- return("WOD_SEMI");
-
- case brace_stage_e::BRACE_DO:
- return("BRACE_DO");
-
- case brace_stage_e::BRACE2:
- return("BRACE2");
-
- case brace_stage_e::ELSE:
- return("ELSE");
-
- case brace_stage_e::ELSEIF:
- return("ELSEIF");
-
- case brace_stage_e::WHILE:
- return("WHILE");
-
- case brace_stage_e::CATCH:
- return("CATCH");
-
- case brace_stage_e::CATCH_WHEN:
- return("CATCH_WHEN");
- }
- return("?????");
-} // get_brace_stage_name
-
-
-const char *get_unc_stage_name(unc_stage_e unc_stage)
-{
- switch (unc_stage)
- {
- case unc_stage_e::TOKENIZE:
- return("TOKENIZE");
-
- case unc_stage_e::HEADER:
- return("HEADER");
-
- case unc_stage_e::TOKENIZE_CLEANUP:
- return("TOKENIZE_CLEANUP");
-
- case unc_stage_e::BRACE_CLEANUP:
- return("BRACE_CLEANUP");
-
- case unc_stage_e::FIX_SYMBOLS:
- return("FIX_SYMBOLS");
-
- case unc_stage_e::MARK_COMMENTS:
- return("MARK_COMMENTS");
-
- case unc_stage_e::COMBINE_LABELS:
- return("COMBINE_LABELS");
-
- case unc_stage_e::OTHER:
- return("OTHER");
-
- case unc_stage_e::CLEANUP:
- return("CLEANUP");
- }
- return("?????");
-} // get_unc_stage_name
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_types.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_types.h
deleted file mode 100644
index 402c7922..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_types.h
+++ /dev/null
@@ -1,281 +0,0 @@
-/**
- * @file uncrustify_types.h
- *
- * Defines some types for the uncrustify program
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef UNCRUSTIFY_TYPES_H_INCLUDED
-#define UNCRUSTIFY_TYPES_H_INCLUDED
-
-#include "options.h"
-#include "pcf_flags.h"
-#include "token_enum.h" // E_Token
-#include "unc_text.h"
-#include "uncrustify_limits.h"
-
-#include <assert.h>
-#include <cstddef> // do get the definition of size_t
-
-#ifdef HAVE_UTIME_H
-#include <utime.h>
-#endif
-
-
-class ParseFrame;
-
-
-/**
- * abbreviations used:
- * SS = star style
- */
-
-/**
- * special strings to mark a part of the input file where
- * uncrustify shall not change anything
- */
-#define UNCRUSTIFY_OFF_TEXT " *INDENT-OFF*"
-#define UNCRUSTIFY_ON_TEXT " *INDENT-ON*"
-
-/**
- * @brief Macro to inform the compiler that a variable is intentionally
- * not in use.
- *
- * @param [in] variableName: The unused variable.
- */
-#define UNUSED(variableName) ((void)variableName)
-
-
-//! Brace stage enum used in brace_cleanup
-enum class brace_stage_e : unsigned int
-{
- NONE,
- PAREN1, //! expected paren after if/catch (C++)/for/switch/synchronized/while
- OP_PAREN1, //! optional paren after catch (C#)
- WOD_PAREN, //! while of do parens
- WOD_SEMI, //! semicolon after while of do
- BRACE_DO, //! do
- BRACE2, //! if/catch/else/finally/for/switch/synchronized/while
- ELSE, //! expecting 'else' after 'if'
- ELSEIF, //! expecting 'if' after 'else'
- WHILE, //! expecting 'while' after 'do'
- CATCH, //! expecting 'catch' or 'finally' after 'try'
- CATCH_WHEN, //! optional 'when' after 'catch'
-};
-
-
-enum class char_encoding_e : unsigned int
-{
- e_ASCII, //! 0-127
- e_BYTE, //! 0-255, not UTF-8
- e_UTF8, //! utf 8 bit wide
- e_UTF16_LE, //! utf 16 bit wide, little endian
- e_UTF16_BE //! utf 16 bit wide, big endian
-};
-
-enum class tracking_type_e : unsigned int
-{
- TT_NONE,
- TT_SPACE,
- TT_NEWLINE
-};
-
-
-class Chunk; //forward declaration
-
-
-/**
- * Sort of like the aligning stuff, but the token indent is relative to the
- * indent of another chunk. This is needed, as that chunk may be aligned and
- * so the indent cannot be determined in the indent code.
- */
-struct T_IndentData
-{
- Chunk *ref;
- int delta;
-};
-
-
-struct T_AlignData
-{
- Chunk *next; //! nullptr or the chunk that should be under this one
- bool right_align; //! AlignStack.m_right_align
- size_t star_style; //! AlignStack.m_star_style
- size_t amp_style; //! AlignStack.m_amp_style
- int gap; //! AlignStack.m_gap
-
- /*
- * col_adj is the amount to alter the column for the token.
- * For example, a dangling '*' would be set to -1.
- * A right-aligned word would be a positive value.
- */
- int col_adj;
- Chunk *ref;
- Chunk *start;
-};
-
-
-// for debugging purpose only
-typedef std::pair<size_t, char *> Track_nr; // track for "trackNumber" and "rule"
-typedef std::vector<Track_nr> track_list; // liste for many tracks
-
-//! list of all programming languages Uncrustify supports
-enum lang_flag_e
-{
- LANG_C = 0x0001,
- LANG_CPP = 0x0002,
- LANG_D = 0x0004,
- LANG_CS = 0x0008, //! C# (C-Sharp)
- LANG_JAVA = 0x0010,
- LANG_OC = 0x0020, //! Objective-C
- LANG_VALA = 0x0040,
- LANG_PAWN = 0x0080,
- LANG_ECMA = 0x0100, //! ECMA Script (JavaScript)
-
- LANG_ALLC = 0x017f, /** LANG_C | LANG_CPP | LANG_D | LANG_CS |
- * LANG_JAVA | LANG_OC | LANG_VALA | LANG_ECMA */
- LANG_ALL = 0x0fff, //! applies to all languages
-
- FLAG_HDR = 0x2000, /*<< Header file for C family languages */
- FLAG_DIG = 0x4000, //! digraph/trigraph
- FLAG_PP = 0x8000, //! only appears in a preprocessor
-};
-
-//! Pattern classes for special keywords
-enum class pattern_class_e : unsigned int
-{
- NONE,
- BRACED, /** keyword + braced statement:
- * do, try, finally, body, unittest, unsafe, volatile
- * add, get, remove, set */
- PBRACED, /** keyword + parens + braced statement:
- * if, elseif, switch, for, while, synchronized,
- * using, lock, with, version, CT_D_SCOPE_IF */
- OPBRACED, /** keyword + optional parens + braced statement:
- * catch, version, debug */
- VBRACED, /** keyword + value + braced statement:
- * namespace */
- PAREN, /** keyword + parens:
- * while-of-do */
- OPPAREN, /** keyword + optional parens:
- * invariant (D lang) */
- ELSE, /** Special case of pattern_class_e::BRACED for handling CT_IF
- * else */
-};
-
-//! used to link language keywords with some addition information
-struct chunk_tag_t
-{
- const char *tag; //! name of the keyword e.g. "bool"
- E_Token type; //! uncrustify type assigned to that keyword
- size_t lang_flags; //! programming language that uses this keyword
-};
-
-
-struct align_t
-{
- size_t col;
- E_Token type;
- size_t len; //! length of the token + space
- Chunk *ref; // Issue #3786
-};
-
-//! holds information and data of a file
-struct file_mem
-{
- std::vector<UINT8> raw; //! raw content of file
- std::deque<int> data; //! processed content of file
- bool bom;
- char_encoding_e enc; //! character encoding of file ASCII, utf, etc.
-#ifdef HAVE_UTIME_H
- struct utimbuf utb;
-#endif
-};
-
-enum class unc_stage_e : unsigned int
-{
- TOKENIZE,
- HEADER,
- TOKENIZE_CLEANUP,
- BRACE_CLEANUP,
- FIX_SYMBOLS,
- MARK_COMMENTS,
- COMBINE_LABELS,
- OTHER,
- CLEANUP
-};
-
-struct cp_data_t
-{
- std::deque<UINT8> *bout;
- FILE *fout;
- int last_char;
- bool do_check;
- unc_stage_e unc_stage;
- int check_fail_cnt; //! total failure count
- bool if_changed;
-
- std::string filename;
-
- file_mem file_hdr; // for cmt_insert_file_header
- file_mem file_ftr; // for cmt_insert_file_footer
- file_mem func_hdr; // for cmt_insert_func_header
- file_mem oc_msg_hdr; // for cmt_insert_oc_msg_header
- file_mem class_hdr; // for cmt_insert_class_header
- file_mem reflow_fold_regex; // for cmt_reflow_fold_regex_file
-
- size_t lang_flags; //! defines the language of the source input
- bool lang_forced; //! overwrites automatic language detection
-
- bool unc_off;
- bool unc_off_used; //! true if the `disable_processing_cmt` option was actively used in the processed file
- UINT32 line_number;
- size_t column; //! column for parsing
- UINT16 spaces; //! space count on output
-
- int ifdef_over_whole_file;
-
- bool frag; //! activates code fragment option
- UINT32 frag_cols;
-
- // stuff to auto-detect line endings
- UINT32 le_counts[uncrustify::line_end_styles];
- unc_text newline;
-
- bool did_newline; //! flag indicates if a newline was added or converted
- E_Token in_preproc;
- int preproc_ncnl_count;
- bool output_trailspace;
- bool output_tab_as_space;
-
- bool bom;
- char_encoding_e enc;
-
- // bumped up when a line is split or indented
- int changes;
- int pass_count; //! indicates how often the chunk list shall be processed
-
- align_t al[uncrustify::limits::AL_SIZE];
- size_t al_cnt;
- bool al_c99_array;
-
- bool warned_unable_string_replace_tab_chars;
-
- int pp_level; // TODO: can this ever be -1?
-
- const char *phase_name;
- const char *dumped_file;
- // for debugging purpose only
- tracking_type_e html_type = tracking_type_e::TT_NONE;
- const char *html_file = nullptr;
-};
-
-extern cp_data_t cpd; // TODO: can we avoid this external variable?
-
-const char *get_brace_stage_name(brace_stage_e brace_stage);
-
-const char *get_unc_stage_name(unc_stage_e unc_stage);
-
-#endif /* UNCRUSTIFY_TYPES_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unicode.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unicode.cpp
deleted file mode 100644
index 0acd4ddb..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unicode.cpp
+++ /dev/null
@@ -1,580 +0,0 @@
-/**
- * @file unicode.cpp
- * Detects, read and writes characters in the proper format.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "unicode.h"
-
-
-using namespace std;
-
-
-//! See if all characters are ASCII (0-127)
-static bool is_ascii(const vector<UINT8> &data, size_t &non_ascii_cnt, size_t &zero_cnt);
-
-
-//! Convert the array of bytes into an array of ints
-static bool decode_bytes(const vector<UINT8> &in_data, deque<int> &out_data);
-
-
-/**
- * Decode UTF-8 sequences from in_data and put the chars in out_data.
- * If there are any decoding errors, then return false.
- */
-static bool decode_utf8(const vector<UINT8> &in_data, deque<int> &out_data);
-
-
-/**
- * Extract 2 bytes from the stream and increment idx by 2
- *
- * @param in byte vector with input data
- * @param idx index points to working position in vector
- */
-static int get_word(const vector<UINT8> &in_data, size_t &idx, bool be);
-
-
-/**
- * Decode a UTF-16 sequence.
- * Sets enc based on the BOM.
- * Must have the BOM as the first two bytes.
- */
-static bool decode_utf16(const vector<UINT8> &in_data, deque<int> &out_data, char_encoding_e &enc);
-
-
-/**
- * Looks for the BOM of UTF-16 BE/LE and UTF-8.
- * If found, set enc and return true.
- * Sets enc to char_encoding_e::e_ASCII and returns false if not found.
- */
-static bool decode_bom(const vector<UINT8> &in_data, char_encoding_e &enc);
-
-
-//! Write for ASCII and BYTE encoding
-static void write_byte(int ch);
-
-
-//! Writes a single character to a file using UTF-8 encoding
-static void write_utf8(int ch);
-
-
-static void write_utf16(int ch, bool be);
-
-
-static bool is_ascii(const vector<UINT8> &data, size_t &non_ascii_cnt, size_t &zero_cnt)
-{
- non_ascii_cnt = 0;
- zero_cnt = 0;
-
- for (unsigned char value : data)
- {
- if (value & 0x80)
- {
- non_ascii_cnt++;
- }
-
- if (!value)
- {
- zero_cnt++;
- }
- }
-
- return((non_ascii_cnt + zero_cnt) == 0);
-}
-
-
-static bool decode_bytes(const vector<UINT8> &in_data, deque<int> &out_data)
-{
- out_data.resize(in_data.size());
-
- for (size_t idx = 0; idx < in_data.size(); idx++)
- {
- out_data[idx] = in_data[idx];
- }
-
- return(true);
-}
-
-
-void encode_utf8(int ch, vector<UINT8> &res)
-{
- if (ch < 0)
- {
- // illegal code - do not store
- }
- else if (ch < 0x80)
- {
- // 0xxxxxxx
- res.push_back(ch);
- }
- else if (ch < 0x0800)
- {
- // 110xxxxx 10xxxxxx
- res.push_back(0xC0 | (ch >> 6));
- res.push_back(0x80 | (ch & 0x3f));
- }
- else if (ch < 0x10000)
- {
- // 1110xxxx 10xxxxxx 10xxxxxx
- res.push_back(0xE0 | (ch >> 12));
- res.push_back(0x80 | ((ch >> 6) & 0x3f));
- res.push_back(0x80 | (ch & 0x3f));
- }
- else if (ch < 0x200000)
- {
- // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
- res.push_back(0xF0 | (ch >> 18));
- res.push_back(0x80 | ((ch >> 12) & 0x3f));
- res.push_back(0x80 | ((ch >> 6) & 0x3f));
- res.push_back(0x80 | (ch & 0x3f));
- }
- else if (ch < 0x4000000)
- {
- // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
- res.push_back(0xF8 | (ch >> 24));
- res.push_back(0x80 | ((ch >> 18) & 0x3f));
- res.push_back(0x80 | ((ch >> 12) & 0x3f));
- res.push_back(0x80 | ((ch >> 6) & 0x3f));
- res.push_back(0x80 | (ch & 0x3f));
- }
- else // (ch <= 0x7fffffff)
- {
- // 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
- res.push_back(0xFC | (ch >> 30));
- res.push_back(0x80 | ((ch >> 24) & 0x3f));
- res.push_back(0x80 | ((ch >> 18) & 0x3f));
- res.push_back(0x80 | ((ch >> 12) & 0x3f));
- res.push_back(0x80 | ((ch >> 6) & 0x3f));
- res.push_back(0x80 | (ch & 0x3f));
- }
-} // encode_utf8
-
-
-static bool decode_utf8(const vector<UINT8> &in_data, deque<int> &out_data)
-{
- size_t idx = 0;
- int cnt;
-
- out_data.clear();
-
- // check for UTF-8 BOM silliness and skip
- if (in_data.size() >= 3)
- {
- if ( (in_data[0] == 0xef)
- && (in_data[1] == 0xbb)
- && (in_data[2] == 0xbf))
- {
- idx = 3; // skip it
- }
- }
-
- while (idx < in_data.size())
- {
- int ch = in_data[idx++];
-
- if (ch < 0x80) // 1-byte sequence
- {
- out_data.push_back(ch);
- continue;
- }
- else if ((ch & 0xE0) == 0xC0) // 2-byte sequence
- {
- ch &= 0x1F;
- cnt = 1;
- }
- else if ((ch & 0xF0) == 0xE0) // 3-byte sequence
- {
- ch &= 0x0F;
- cnt = 2;
- }
- else if ((ch & 0xF8) == 0xF0) // 4-byte sequence
- {
- ch &= 0x07;
- cnt = 3;
- }
- else if ((ch & 0xFC) == 0xF8) // 5-byte sequence
- {
- ch &= 0x03;
- cnt = 4;
- }
- else if ((ch & 0xFE) == 0xFC) // 6-byte sequence
- {
- ch &= 0x01;
- cnt = 5;
- }
- else
- {
- // invalid UTF-8 sequence
- return(false);
- }
-
- while ( cnt-- > 0
- && idx < in_data.size())
- {
- int tmp = in_data[idx++];
-
- if ((tmp & 0xC0) != 0x80)
- {
- // invalid UTF-8 sequence
- return(false);
- }
- ch = (ch << 6) | (tmp & 0x3f);
- }
-
- if (cnt >= 0)
- {
- // short UTF-8 sequence
- return(false);
- }
- out_data.push_back(ch);
- }
- return(true);
-} // decode_utf8
-
-
-static int get_word(const vector<UINT8> &in_data, size_t &idx, bool be)
-{
- int ch;
-
- if ((idx + 2) > in_data.size())
- {
- ch = -1;
- }
- else if (be)
- {
- ch = (in_data[idx] << 8) | in_data[idx + 1];
- }
- else
- {
- ch = in_data[idx] | (in_data[idx + 1] << 8);
- }
- idx += 2;
- return(ch);
-}
-
-
-static bool decode_utf16(const vector<UINT8> &in_data, deque<int> &out_data, char_encoding_e &enc)
-{
- out_data.clear();
-
- if (in_data.size() & 1)
- {
- // can't have and odd length
- return(false);
- }
-
- if (in_data.size() < 2)
- {
- // we require the BOM or at least 1 char
- return(false);
- }
- size_t idx = 2;
-
- if ( (in_data[0] == 0xfe)
- && (in_data[1] == 0xff))
- {
- enc = char_encoding_e::e_UTF16_BE;
- }
- else if ( (in_data[0] == 0xff)
- && (in_data[1] == 0xfe))
- {
- enc = char_encoding_e::e_UTF16_LE;
- }
- else
- {
- /*
- * If we have a few words, we can take a guess, assuming the first few
- * chars are ASCII
- */
- enc = char_encoding_e::e_ASCII;
- idx = 0;
-
- if (in_data.size() >= 6)
- {
- if ( (in_data[0] == 0)
- && (in_data[2] == 0)
- && (in_data[4] == 0))
- {
- enc = char_encoding_e::e_UTF16_BE;
- }
- else if ( (in_data[1] == 0)
- && (in_data[3] == 0)
- && (in_data[5] == 0))
- {
- enc = char_encoding_e::e_UTF16_LE;
- }
- }
-
- if (enc == char_encoding_e::e_ASCII)
- {
- return(false);
- }
- }
- bool be = (enc == char_encoding_e::e_UTF16_BE);
-
- while (idx < in_data.size())
- {
- int ch = get_word(in_data, idx, be);
-
- if ((ch & 0xfc00) == 0xd800)
- {
- ch &= 0x3ff;
- ch <<= 10;
- int tmp = get_word(in_data, idx, be);
-
- if ((tmp & 0xfc00) != 0xdc00)
- {
- return(false);
- }
- ch |= (tmp & 0x3ff);
- ch += 0x10000;
- out_data.push_back(ch);
- }
- else if ( ( ch >= 0
- && ch < 0xD800)
- || ch >= 0xE000)
- {
- out_data.push_back(ch);
- }
- else
- {
- // invalid character
- return(false);
- }
- }
- return(true);
-} // decode_utf16
-
-
-static bool decode_bom(const vector<UINT8> &in_data, char_encoding_e &enc)
-{
- enc = char_encoding_e::e_ASCII;
-
- if (in_data.size() >= 2)
- {
- if ( (in_data[0] == 0xfe)
- && (in_data[1] == 0xff))
- {
- enc = char_encoding_e::e_UTF16_BE;
- return(true);
- }
-
- if ( (in_data[0] == 0xff)
- && (in_data[1] == 0xfe))
- {
- enc = char_encoding_e::e_UTF16_LE;
- return(true);
- }
-
- if ( (in_data.size() >= 3)
- && (in_data[0] == 0xef)
- && (in_data[1] == 0xbb)
- && (in_data[2] == 0xbf))
- {
- enc = char_encoding_e::e_UTF8;
- return(true);
- }
- }
- return(false);
-}
-
-
-bool decode_unicode(const vector<UINT8> &in_data, deque<int> &out_data, char_encoding_e &enc, bool &has_bom)
-{
- // check for a BOM
- if (decode_bom(in_data, enc))
- {
- has_bom = true;
-
- if (enc == char_encoding_e::e_UTF8)
- {
- return(decode_utf8(in_data, out_data));
- }
- return(decode_utf16(in_data, out_data, enc));
- }
- has_bom = false;
-
- // Check for simple ASCII
- size_t non_ascii_cnt;
- size_t zero_cnt;
-
- if (is_ascii(in_data, non_ascii_cnt, zero_cnt))
- {
- enc = char_encoding_e::e_ASCII;
- return(decode_bytes(in_data, out_data));
- }
-
- // There are a lot of 0's in UTF-16 (~50%)
- if ( (zero_cnt > (in_data.size() / 4))
- && (zero_cnt <= (in_data.size() / 2)))
- {
- // likely is UTF-16
- if (decode_utf16(in_data, out_data, enc))
- {
- return(true);
- }
- }
-
- if (decode_utf8(in_data, out_data))
- {
- enc = char_encoding_e::e_UTF8;
- return(true);
- }
- // it is an unrecognized byte sequence
- enc = char_encoding_e::e_BYTE;
- return(decode_bytes(in_data, out_data));
-} // decode_unicode
-
-
-static void write_byte(int ch)
-{
- if ((ch & 0xff) == ch)
- {
- if (cpd.fout)
- {
- fputc(ch, cpd.fout);
- }
-
- if (cpd.bout)
- {
- cpd.bout->push_back(static_cast<UINT8>(ch));
- }
- }
- else
- {
- // illegal code - do not store
- }
-}
-
-
-static void write_utf8(int ch)
-{
- vector<UINT8> vv;
-
- vv.reserve(6);
-
- encode_utf8(ch, vv);
-
- for (unsigned char char_val : vv)
- {
- write_byte(char_val);
- }
-}
-
-
-static void write_utf16(int ch, bool be)
-{
- // U+0000 to U+D7FF and U+E000 to U+FFFF
- if ( ( ch >= 0
- && ch < 0xD800)
- || ( ch >= 0xE000
- && ch < 0x10000))
- {
- if (be)
- {
- write_byte(ch >> 8);
- write_byte(ch & 0xff);
- }
- else
- {
- write_byte(ch & 0xff);
- write_byte(ch >> 8);
- }
- }
- else if ( ch >= 0x10000
- && ch < 0x110000)
- {
- int v1 = ch - 0x10000;
- int w1 = 0xD800 + (v1 >> 10);
- int w2 = 0xDC00 + (v1 & 0x3ff);
-
- if (be)
- {
- write_byte(w1 >> 8);
- write_byte(w1 & 0xff);
- write_byte(w2 >> 8);
- write_byte(w2 & 0xff);
- }
- else
- {
- write_byte(w1 & 0xff);
- write_byte(w1 >> 8);
- write_byte(w2 & 0xff);
- write_byte(w2 >> 8);
- }
- }
- else
- {
- // illegal code - do not store
- }
-} // write_utf16
-
-
-void write_bom()
-{
- switch (cpd.enc)
- {
- case char_encoding_e::e_UTF8:
- write_byte(0xef);
- write_byte(0xbb);
- write_byte(0xbf);
- break;
-
- case char_encoding_e::e_UTF16_LE:
- write_utf16(0xfeff, false);
- break;
-
- case char_encoding_e::e_UTF16_BE:
- write_utf16(0xfeff, true);
- break;
-
- default:
- // char_encoding_e::e_ASCII
- // char_encoding_e::e_BYTE
- // do nothing
- // Coveralls will complain
- break;
- }
-}
-
-
-void write_char(int ch)
-{
- if (ch >= 0)
- {
- switch (cpd.enc)
- {
- case char_encoding_e::e_BYTE:
- write_byte(ch & 0xff);
- break;
-
- case char_encoding_e::e_ASCII:
- default:
- write_byte(ch);
- break;
-
- case char_encoding_e::e_UTF8:
- write_utf8(ch);
- break;
-
- case char_encoding_e::e_UTF16_LE:
- write_utf16(ch, false);
- break;
-
- case char_encoding_e::e_UTF16_BE:
- write_utf16(ch, true);
- break;
- }
- }
-}
-
-
-void write_string(const unc_text &text)
-{
- for (size_t idx = 0; idx < text.size(); idx++)
- {
- write_char(text[idx]);
- }
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unicode.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unicode.h
deleted file mode 100644
index 7217778b..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unicode.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * @file unicode.h
- * prototypes for unicode.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#ifndef UNICODE_H_INCLUDED
-#define UNICODE_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-
-void write_bom();
-
-
-/**
- * @param ch the 31-bit char value
- */
-void write_char(int ch);
-
-
-void write_string(const unc_text &text);
-
-
-//! Figure out the encoding and convert to an int sequence
-bool decode_unicode(const std::vector<UINT8> &in_data, std::deque<int> &out_data, char_encoding_e &enc, bool &has_bom);
-
-
-void encode_utf8(int ch, std::vector<UINT8> &res);
-
-
-#endif /* UNICODE_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/universalindentgui.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/universalindentgui.cpp
deleted file mode 100644
index 12c66b5c..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/universalindentgui.cpp
+++ /dev/null
@@ -1,372 +0,0 @@
-/**
- * @file universalindentgui.cpp
- * Exports the config file for UniversalIndentGUI
- *
- * @author Ben Gardner
- * @author Guy Maurel since version 0.62 for uncrustify4Qt
- * October 2015, 2016
- * @license GPL v2+
- */
-#include "universalindentgui.h"
-
-#include "error_types.h"
-#include "log_rules.h"
-#include "prototypes.h"
-#include "unc_ctype.h"
-#include "uncrustify.h"
-#include "uncrustify_version.h"
-
-#include <cstdio>
-#include <vector>
-
-
-constexpr static auto LCURRENT = LOTHER;
-
-using namespace std;
-
-
-std::vector<uncrustify::OptionGroup *> get_option_groups()
-{
- std::vector<uncrustify::OptionGroup *> groups;
- size_t i = 0;
-
- while (auto *const g = uncrustify::get_option_group(i))
- {
- groups.push_back(g);
- ++i;
- }
- return(groups);
-}
-
-
-void print_option_choices(FILE *pfile, uncrustify::GenericOption *option,
- char const *key = "Choices")
-{
- fprintf(pfile, "%s=", key);
-
- for (auto c = option->possibleValues(); *c; ++c)
- {
- fprintf(pfile, "%s=%s%c", option->name(), *c, c[1] ? '|' : '\n');
- }
-}
-
-
-void print_universal_indent_cfg(FILE *pfile)
-{
- const char *p_name;
- char ch = '=';
- const auto &groups = get_option_groups();
- size_t idx;
-
-#if defined (DEBUG) && !defined (WIN32)
- vector<size_t> allGroups;
- allGroups.reserve(16);
- // first run to get the first option number of each group/category
- size_t optionNumber = 0;
- bool firstOptionNumberSet = false;
-
- for (idx = 0; idx < groups.size(); ++idx)
- {
- const auto *p_grp = groups[idx];
-
- for (auto *const option : p_grp->options)
- {
- UNUSED(option);
-
- if (!firstOptionNumberSet)
- {
- allGroups[idx] = optionNumber;
- firstOptionNumberSet = true;
- }
- optionNumber++;
- } // for (auto *const option : p_grp->options)
-
- firstOptionNumberSet = false;
- } // end of first run
-
-//#else
-// UNUSED(allGroups);
-#endif // DEBUG
-
- // second run
- // Dump the header and the categories
- fprintf(pfile, "[header]\n");
-
- // Add all the categories
- //const auto &groups = get_option_groups();
- ch = '=';
-
- fprintf(pfile, "categories");
- idx = 0;
-#if defined (DEBUG) && !defined (WIN32)
- optionNumber = 0;
-#endif // DEBUG
-
- for (auto *const g : groups)
- {
- fputc(ch, pfile);
- ch = '|';
-
-#if defined (DEBUG) && !defined (WIN32)
- fprintf(pfile, "(%zu)", allGroups[idx]);
-#endif // DEBUG
-
- // Write description, stripping leading and trailing newlines
- for (auto dc = g->description + 1; *(dc + 1); ++dc)
- {
- fputc(*dc, pfile);
- }
-
- idx++;
- }
-
- fprintf(pfile, "\n");
-
- fprintf(pfile,
- "cfgFileParameterEnding=cr\n"
- "configFilename=uncrustify.cfg\n");
-
-
- // Add all the recognized file extensions
- ch = '=';
- int fileIdx = 0;
- fprintf(pfile, "fileTypes");
-
- while ((p_name = get_file_extension(fileIdx)) != nullptr)
- {
- fprintf(pfile, "%c*%s", ch, p_name);
- ch = '|';
- }
- fprintf(pfile, "\n");
-
- // Add the rest of the constant file header
- fprintf(pfile,
- "indenterFileName=uncrustify\n"
- "indenterName=Uncrustify (C, C++, C#, ObjectiveC, D, Java, Pawn, VALA)\n"
- "inputFileName=indentinput\n"
- "inputFileParameter=\"-f \"\n"
- "manual=http://uncrustify.sourceforge.net/config.txt\n"
- "outputFileName=indentoutput\n"
- "outputFileParameter=\"-o \"\n"
- "stringparaminquotes=false\n"
- "parameterOrder=ipo\n"
- "showHelpParameter=-h\n"
- "stringparaminquotes=false\n"
- "useCfgFileParameter=\"-c \"\n");
-
- fprintf(pfile, "version=%s\n", UNCRUSTIFY_VERSION);
-
- ch = '=';
-
- // Now add each option
- for (idx = 0; idx < groups.size(); ++idx)
- {
- const auto *p_grp = groups[idx];
-
- for (auto *const option : p_grp->options)
- {
- /*
- * Create a better readable name from the options name
- * by replacing '_' by a space and use some upper case characters.
- */
- char *optionNameReadable = new char[strlen(option->name()) + 1];
- strcpy(optionNameReadable, option->name());
-
- bool was_space = true;
-
- for (char *character = optionNameReadable; *character != 0; character++)
- {
- if (*character == '_')
- {
- *character = ' ';
- was_space = true;
- }
- else if (was_space)
- {
- *character = unc_toupper(*character);
- was_space = false;
- }
- }
-
- fprintf(pfile, "\n[%s]\n", optionNameReadable);
- fprintf(pfile, "Category=%zu\n", idx);
-#if defined (DEBUG) && !defined (WIN32)
- fprintf(pfile, "Description=\"<html>(%zu)", optionNumber);
-#else // DEBUG
- fprintf(pfile, "Description=\"<html>");
-#endif // DEBUG
-
- // Skip first character, which is always a newline
- const char *tmp = option->description() + 1;
- ch = 0;
-
- // Output the description which may contain forbidden chars, skipping
- // the last character which is always an extra newline
- while ( *tmp != 0
- && *(tmp + 1) != 0)
- {
- switch (*tmp)
- {
- case '<':
- fputs("&lt;", pfile);
- break;
-
- case '>':
- fputs("&gt;", pfile);
- break;
-
- case '&':
- fputs("&amp;", pfile);
- break;
-
- case '\n':
- fputs("<br/>", pfile);
- break;
-
- default:
- fputc(*tmp, pfile);
- }
- tmp++;
- }
- const auto ds = option->defaultStr();
-
- if (!ds.empty())
- {
- fprintf(pfile, "<br/><br/>Default: %s", ds.c_str());
- }
- fprintf(pfile, "</html>\"\n");
-
- // Handle some options independent of their type and most by their type.
- log_rule_B("indent_with_tabs");
-
- if (option == &uncrustify::options::indent_with_tabs)
- {
- // Indenting with tabs selector becomes a multiple selector and not
- // only a number. Also it is by default enabled.
- fprintf(pfile, "Enabled=true\n");
- fprintf(pfile, "EditorType=multiple\n");
- fprintf(pfile, "Choices=\"%s=0|%s=1|%s=2\"\n",
- option->name(), option->name(), option->name());
-#if defined (DEBUG) && !defined (WIN32)
- fprintf(pfile, "ChoicesReadable=\"(%zu)Spaces only|(%zu)Indent with tabs, align with spaces|(%zu)Indent and align with tabs\"\n",
- optionNumber, optionNumber, optionNumber);
-#else // DEBUG
- fprintf(pfile, "ChoicesReadable=\"Spaces only|Indent with tabs, align with spaces|Indent and align with tabs\"\n");
-#endif // DEBUG
- fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
- }
- else
- {
- // All not specially handled options are created only dependent by
- // their type.
- fprintf(pfile, "Enabled=false\n");
-
- switch (option->type())
- {
- case uncrustify::OT_BOOL:
- fprintf(pfile, "EditorType=boolean\n");
- print_option_choices(pfile, option, "TrueFalse");
- fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
- break;
-
- case uncrustify::OT_IARF:
- fprintf(pfile, "EditorType=multiple\n");
- print_option_choices(pfile, option);
-#if defined (DEBUG) && !defined (WIN32)
- fprintf(pfile, "ChoicesReadable=\"(%zu)Ignore %s|(%zu)Add %s|(%zu)Remove %s|(%zu)Force %s\"\n",
- optionNumber, optionNameReadable,
- optionNumber, optionNameReadable,
- optionNumber, optionNameReadable,
- optionNumber, optionNameReadable);
-#else // DEBUG
- // 0 1 2 3
- fprintf(pfile, "ChoicesReadable=\"Ignore %s|Add %s|Remove %s|Force %s\"\n",
- optionNameReadable, optionNameReadable, optionNameReadable, optionNameReadable);
-#endif // DEBUG
- fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
- break;
-
- case uncrustify::OT_NUM:
- fprintf(pfile, "EditorType=numeric\n");
- fprintf(pfile, "CallName=\"%s=\"\n", option->name());
- fprintf(pfile, "MinVal=%s\n", option->minStr().c_str());
- fprintf(pfile, "MaxVal=%s\n", option->maxStr().c_str());
- fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
- break;
-
- case uncrustify::OT_UNUM:
- fprintf(pfile, "EditorType=numeric\n");
- fprintf(pfile, "CallName=\"%s=\"\n", option->name());
- fprintf(pfile, "MinVal=%s\n", option->minStr().c_str());
- fprintf(pfile, "MaxVal=%s\n", option->maxStr().c_str());
- fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
- break;
-
- case uncrustify::OT_LINEEND:
- fprintf(pfile, "EditorType=multiple\n");
- print_option_choices(pfile, option);
-#if defined (DEBUG) && !defined (WIN32)
- fprintf(pfile, "ChoicesReadable=\"(%zu)Newlines Unix|(%zu)Newlines Win|(%zu)Newlines Mac|(%zu)Newlines Auto\"\n",
- optionNumber, optionNumber, optionNumber, optionNumber);
-#else // DEBUG
- fprintf(pfile, "ChoicesReadable=\"Newlines Unix|Newlines Win|Newlines Mac|Newlines Auto\"\n");
-#endif // DEBUG
- fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
- break;
-
- case uncrustify::OT_TOKENPOS:
- fprintf(pfile, "EditorType=multiple\n");
- // Issue #2300-a
- print_option_choices(pfile, option);
-#if defined (DEBUG) && !defined (WIN32)
- fprintf(pfile, "ChoicesReadable=\"(%zu)Ignore %s|(%zu)Break %s|(%zu)Force %s|(%zu)Lead %s|(%zu)Trail %s|",
- optionNumber, optionNameReadable,
- optionNumber, optionNameReadable,
- optionNumber, optionNameReadable,
- optionNumber, optionNameReadable,
- optionNumber, optionNameReadable);
-#else // DEBUG
- // 0 1 2 4 8
- fprintf(pfile, "ChoicesReadable=\"Ignore %s|Break %s|Force %s|Lead %s|Trail %s|",
- optionNameReadable, optionNameReadable, optionNameReadable,
- optionNameReadable, optionNameReadable);
-#endif // DEBUG
- // 16 5 6 9 10
-#if defined (DEBUG) && !defined (WIN32)
- fprintf(pfile, "(%zu)Join %s|(%zu)Lead Break %s|(%zu)Lead Force %s|(%zu)Trail Break %s|(%zu)Trail Force %s\"\n",
- optionNumber, optionNameReadable,
- optionNumber, optionNameReadable,
- optionNumber, optionNameReadable,
- optionNumber, optionNameReadable,
- optionNumber, optionNameReadable);
-#else // DEBUG
- fprintf(pfile, "Join %s|Lead Break %s|Lead Force %s|Trail Break %s|Trail Force %s\"\n",
- optionNameReadable, optionNameReadable, optionNameReadable,
- optionNameReadable, optionNameReadable);
-#endif // DEBUG
- fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
- break;
-
- case uncrustify::OT_STRING:
- {
- fprintf(pfile, "CallName=%s=\n", option->name());
- fprintf(pfile, "EditorType=string\n");
- fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
- break;
- }
-
- default:
- fprintf(stderr, "FATAL: Illegal option type %d for '%s'\n",
- static_cast<int>(option->type()), option->name());
- log_flush(true);
- exit(EX_SOFTWARE);
- break;
- } // switch
- }
-#if defined (DEBUG) && !defined (WIN32)
- optionNumber++;
-#endif // DEBUG
- delete[] optionNameReadable;
- } // for (auto *const option : p_grp->options)
- }
-} // print_universal_indent_cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/universalindentgui.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/universalindentgui.h
deleted file mode 100644
index 35a65167..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/universalindentgui.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * @file universalindentgui.h
- * prototypes for universalindentgui.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-#ifndef UNIVERSALINDENTGUI_H_INCLUDED
-#define UNIVERSALINDENTGUI_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-
-void print_universal_indent_cfg(FILE *pfile);
-
-
-#endif /* UNIVERSALINDENTGUI_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/width.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/width.cpp
deleted file mode 100644
index 7734c90e..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/width.cpp
+++ /dev/null
@@ -1,917 +0,0 @@
-/**
- * @file width.cpp
- * Limits line width.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "width.h"
-
-#include "indent.h"
-#include "newlines.h"
-#include "prototypes.h"
-
-
-constexpr static auto LCURRENT = LSPLIT;
-
-using namespace uncrustify;
-
-
-/**
- * abbreviations used:
- * - fparen = function parenthesis
- */
-
-struct cw_entry
-{
- Chunk *pc;
- size_t pri;
-};
-
-
-struct token_pri
-{
- E_Token tok;
- size_t pri;
-};
-
-
-static inline bool is_past_width(Chunk *pc);
-
-
-//! Split right after the chunk
-static void split_before_chunk(Chunk *pc);
-
-
-static size_t get_split_pri(E_Token tok);
-
-
-/**
- * Checks to see if pc is a better spot to split.
- * This should only be called going BACKWARDS (ie prev)
- * A lower level wins
- *
- * Splitting Preference:
- * - semicolon
- * - comma
- * - boolean op
- * - comparison
- * - arithmetic op
- * - assignment
- * - concatenated strings
- * - ? :
- * - function open paren not followed by close paren
- */
-static void try_split_here(cw_entry &ent, Chunk *pc);
-
-
-/**
- * Scan backwards to find the most appropriate spot to split the line
- * and insert a newline.
- *
- * See if this needs special function handling.
- * Scan backwards and find the best token for the split.
- *
- * @param start The first chunk that exceeded the limit
- */
-static bool split_line(Chunk *pc);
-
-
-/**
- * Figures out where to split a function def/proto/call
- *
- * For function prototypes and definition. Also function calls where
- * level == m_braceLevel:
- * - find the open function parenthesis
- * + if it doesn't have a newline right after it
- * * see if all parameters will fit individually after the paren
- * * if not, throw a newline after the open paren & return
- * - scan backwards to the open fparen or comma
- * + if there isn't a newline after that item, add one & return
- * + otherwise, add a newline before the start token
- *
- * @param start the offending token
- * @return the token that should have a newline
- * inserted before it
- */
-static void split_fcn_params(Chunk *start);
-
-
-/**
- * Figures out where to split a template
- *
- *
- * @param start the offending token
- */
-static void split_template(Chunk *start);
-
-
-/**
- * Splits the parameters at every comma that is at the fparen level.
- *
- * @param start the offending token
- */
-static void split_fcn_params_full(Chunk *start);
-
-
-/**
- * A for statement is too long.
- * Step backwards and forwards to find the semicolons
- * Try splitting at the semicolons first.
- * If that doesn't work, then look for a comma at paren level.
- * If that doesn't work, then look for an assignment at paren level.
- * If that doesn't work, then give up.
- */
-static void split_for_stmt(Chunk *start);
-
-
-static inline bool is_past_width(Chunk *pc)
-{
- // allow char to sit at last column by subtracting 1
- LOG_FMT(LSPLIT, "%s(%d): orig line is %zu, orig col is %zu, for %s\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- log_rule_B("code_width");
- return((pc->GetColumn() + pc->Len() - 1) > options::code_width());
-}
-
-
-static void split_before_chunk(Chunk *pc)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LSPLIT, "%s(%d): Text() '%s'\n", __func__, __LINE__, pc->Text());
-
- if ( !pc->IsNewline()
- && !pc->GetPrev()->IsNewline())
- {
- newline_add_before(pc);
- // reindent needs to include the indent_continue value and was off by one
- log_rule_B("indent_columns");
- log_rule_B("indent_continue");
- reindent_line(pc, pc->GetBraceLevel() * options::indent_columns() +
- abs(options::indent_continue()) + 1);
- cpd.changes++;
- }
-}
-
-
-void do_code_width()
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LSPLIT, "%s(%d)\n", __func__, __LINE__);
-
- for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
- {
- if ( !pc->IsCommentOrNewline()
- && pc->IsNot(CT_SPACE)
- && is_past_width(pc))
- {
- if ( pc->Is(CT_VBRACE_CLOSE) // don't break if a vbrace close
- && pc->IsLastChunkOnLine()) // is the last chunk on its line
- {
- continue;
- }
- bool split_OK = split_line(pc);
-
- if (split_OK)
- {
- LOG_FMT(LSPLIT, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- }
- else
- {
- LOG_FMT(LSPLIT, "%s(%d): Bailed! orig line is %zu, orig col is %zu, Text() '%s'\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
- break;
- }
- }
- }
-}
-
-
-static const token_pri pri_table[] =
-{
- { CT_SEMICOLON, 1 },
- { CT_COMMA, 2 },
- { CT_BOOL, 3 },
- { CT_COMPARE, 4 },
- { CT_SHIFT, 5 },
- { CT_ARITH, 6 },
- { CT_CARET, 7 },
- { CT_ASSIGN, 8 },
- { CT_STRING, 9 },
- { CT_FOR_COLON, 10 },
- //{ CT_DC_MEMBER, 11 },
- //{ CT_MEMBER, 11 },
- { CT_QUESTION, 20 }, // allow break in ? : for ls_code_width
- { CT_COND_COLON, 20 },
- { CT_FPAREN_OPEN, 21 }, // break after function open paren not followed by close paren
- { CT_QUALIFIER, 25 },
- { CT_CLASS, 25 },
- { CT_STRUCT, 25 },
- { CT_TYPE, 25 },
- { CT_TYPENAME, 25 },
- { CT_VOLATILE, 25 },
-};
-
-
-static size_t get_split_pri(E_Token tok)
-{
- for (auto token : pri_table)
- {
- if (token.tok == tok)
- {
- return(token.pri);
- }
- }
-
- return(0);
-}
-
-
-static void try_split_here(cw_entry &ent, Chunk *pc)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LSPLIT, "%s(%d): at %s, orig col=%zu\n", __func__, __LINE__, pc->Text(), pc->GetOrigCol());
- size_t pc_pri = get_split_pri(pc->GetType());
-
- LOG_FMT(LSPLIT, "%s(%d): pc_pri is %zu\n", __func__, __LINE__, pc_pri);
-
- if (pc_pri == 0)
- {
- LOG_FMT(LSPLIT, "%s(%d): pc_pri is 0, return\n", __func__, __LINE__);
- return;
- }
- LOG_FMT(LSPLIT, "%s(%d):\n", __func__, __LINE__);
- // Can't split after a newline
- Chunk *prev = pc->GetPrev();
-
- if ( prev->IsNullChunk()
- || ( prev->IsNewline()
- && pc->IsNot(CT_STRING)))
- {
- if (prev->IsNotNullChunk())
- {
- LOG_FMT(LSPLIT, "%s(%d): Can't split after a newline, orig line is %zu, return\n",
- __func__, __LINE__, prev->GetOrigLine());
- }
- return;
- }
- LOG_FMT(LSPLIT, "%s(%d):\n", __func__, __LINE__);
-
- // Can't split a function without arguments
- if (pc->Is(CT_FPAREN_OPEN))
- {
- Chunk *next = pc->GetNext();
-
- if (next->Is(CT_FPAREN_CLOSE))
- {
- LOG_FMT(LSPLIT, "%s(%d): Can't split a function without arguments, return\n", __func__, __LINE__);
- return;
- }
- }
- LOG_FMT(LSPLIT, "%s(%d):\n", __func__, __LINE__);
-
- // Only split concatenated strings
- if (pc->Is(CT_STRING))
- {
- Chunk *next = pc->GetNext();
-
- if (next->IsNot(CT_STRING))
- {
- LOG_FMT(LSPLIT, "%s(%d): Only split concatenated strings, return\n", __func__, __LINE__);
- return;
- }
- }
- LOG_FMT(LSPLIT, "%s(%d):\n", __func__, __LINE__);
-
- // keep common groupings unless ls_code_width
- log_rule_B("ls_code_width");
-
- if ( !options::ls_code_width()
- && pc_pri >= 20)
- {
- LOG_FMT(LSPLIT, "%s(%d): keep common groupings unless ls_code_width, return\n", __func__, __LINE__);
- return;
- }
- LOG_FMT(LSPLIT, "%s(%d):\n", __func__, __LINE__);
-
- // don't break after last term of a qualified type
- if (pc_pri == 25)
- {
- Chunk *next = pc->GetNext();
-
- if ( next->IsNot(CT_WORD)
- && (get_split_pri(next->GetType()) != 25))
- {
- LOG_FMT(LSPLIT, "%s(%d): don't break after last term of a qualified type, return\n", __func__, __LINE__);
- return;
- }
- }
- LOG_FMT(LSPLIT, "%s(%d):\n", __func__, __LINE__);
- // Check levels first
- bool change = false;
-
- if ( ent.pc == nullptr
- || pc->GetLevel() < ent.pc->GetLevel())
- {
- LOG_FMT(LSPLIT, "%s(%d):\n", __func__, __LINE__);
- change = true;
- }
- else
- {
- if (pc_pri < ent.pri)
- {
- LOG_FMT(LSPLIT, "%s(%d):\n", __func__, __LINE__);
- change = true;
- }
- }
- LOG_FMT(LSPLIT, "%s(%d): change is %s\n", __func__, __LINE__, change ? "TRUE" : "FALSE");
-
- if (change)
- {
- LOG_FMT(LSPLIT, "%s(%d): do the change\n", __func__, __LINE__);
- ent.pc = pc;
- ent.pri = pc_pri;
- }
-} // try_split_here
-
-
-static bool split_line(Chunk *start)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LSPLIT, "%s(%d): start->Text() '%s', orig line is %zu, orig col is %zu, type is %s\n",
- __func__, __LINE__, start->Text(), start->GetOrigLine(), start->GetOrigCol(), get_token_name(start->GetType()));
- LOG_FMT(LSPLIT, " start->GetFlags() ");
- log_pcf_flags(LSPLIT, start->GetFlags());
- LOG_FMT(LSPLIT, " start->GetParentType() %s, (PCF_IN_FCN_DEF is %s), (PCF_IN_FCN_CALL is %s)\n",
- get_token_name(start->GetParentType()),
- start->TestFlags((PCF_IN_FCN_DEF)) ? "TRUE" : "FALSE",
- start->TestFlags((PCF_IN_FCN_CALL)) ? "TRUE" : "FALSE");
-
- // break at maximum line length if ls_code_width is true
- // Issue #2432
- if (start->TestFlags(PCF_ONE_LINER))
- {
- LOG_FMT(LSPLIT, "%s(%d): ** ONCE LINER SPLIT **\n", __func__, __LINE__);
- undo_one_liner(start);
- newlines_cleanup_braces(false);
- // Issue #1352
- cpd.changes++;
- return(false);
- }
- LOG_FMT(LSPLIT, "%s(%d): before ls_code_width\n", __func__, __LINE__);
-
- log_rule_B("ls_code_width");
-
- if (options::ls_code_width())
- {
- }
- // Check to see if we are in a for statement
- else if (start->TestFlags(PCF_IN_FOR))
- {
- LOG_FMT(LSPLIT, " ** FOR SPLIT **\n");
- split_for_stmt(start);
-
- if (!is_past_width(start))
- {
- return(true);
- }
- LOG_FMT(LSPLIT, "%s(%d): for split didn't work\n", __func__, __LINE__);
- }
-
- /*
- * If this is in a function call or prototype, split on commas or right
- * after the open parenthesis
- */
- else if ( start->TestFlags(PCF_IN_FCN_DEF)
- || start->GetParentType() == CT_FUNC_PROTO // Issue #1169
- || ( (start->GetLevel() == (start->GetBraceLevel() + 1))
- && start->TestFlags(PCF_IN_FCN_CALL)))
- {
- LOG_FMT(LSPLIT, " ** FUNC SPLIT **\n");
-
- log_rule_B("ls_func_split_full");
-
- if (options::ls_func_split_full())
- {
- split_fcn_params_full(start);
-
- if (!is_past_width(start))
- {
- return(true);
- }
- }
- split_fcn_params(start);
- return(true);
- }
-
- /*
- * If this is in a template, split on commas, Issue #1170
- */
- else if (start->TestFlags(PCF_IN_TEMPLATE))
- {
- LOG_FMT(LSPLIT, " ** TEMPLATE SPLIT **\n");
- split_template(start);
- return(true);
- }
- LOG_FMT(LSPLIT, "%s(%d):\n", __func__, __LINE__);
- // Try to find the best spot to split the line
- cw_entry ent;
-
- memset(&ent, 0, sizeof(ent));
- Chunk *pc = start;
- Chunk *prev;
-
- while ( ((pc = pc->GetPrev()) != nullptr)
- && pc->IsNotNullChunk()
- && !pc->IsNewline())
- {
- LOG_FMT(LSPLIT, "%s(%d): at %s, orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
-
- if (pc->IsNot(CT_SPACE))
- {
- try_split_here(ent, pc);
-
- // break at maximum line length
- log_rule_B("ls_code_width");
-
- if ( ent.pc != nullptr
- && (options::ls_code_width()))
- {
- break;
- }
- }
- }
-
- if (ent.pc == nullptr)
- {
- LOG_FMT(LSPLIT, "%s(%d): TRY_SPLIT yielded NO SOLUTION for orig line %zu at '%s' [%s]\n",
- __func__, __LINE__, start->GetOrigLine(), start->Text(), get_token_name(start->GetType()));
- }
- else
- {
- LOG_FMT(LSPLIT, "%s(%d): TRY_SPLIT yielded '%s' [%s] on orig line %zu\n",
- __func__, __LINE__, ent.pc->Text(), get_token_name(ent.pc->GetType()), ent.pc->GetOrigLine());
- LOG_FMT(LSPLIT, "%s(%d): ent at '%s', orig col is %zu\n",
- __func__, __LINE__, ent.pc->Text(), ent.pc->GetOrigCol());
- }
-
- // Break before the token instead of after it according to the pos_xxx rules
- if (ent.pc == nullptr)
- {
- pc = nullptr;
- }
- else
- {
- log_rule_B("pos_arith");
- log_rule_B("pos_assign");
- log_rule_B("pos_compare");
- log_rule_B("pos_conditional");
- log_rule_B("pos_shift");
- log_rule_B("pos_bool");
-
- if ( ( ent.pc->Is(CT_SHIFT)
- && (options::pos_shift() & TP_LEAD))
- || ( ( ent.pc->Is(CT_ARITH)
- || ent.pc->Is(CT_CARET))
- && (options::pos_arith() & TP_LEAD))
- || ( ent.pc->Is(CT_ASSIGN)
- && (options::pos_assign() & TP_LEAD))
- || ( ent.pc->Is(CT_COMPARE)
- && (options::pos_compare() & TP_LEAD))
- || ( ( ent.pc->Is(CT_COND_COLON)
- || ent.pc->Is(CT_QUESTION))
- && (options::pos_conditional() & TP_LEAD))
- || ( ent.pc->Is(CT_BOOL)
- && (options::pos_bool() & TP_LEAD)))
- {
- pc = ent.pc;
- }
- else
- {
- pc = ent.pc->GetNext();
- }
- LOG_FMT(LSPLIT, "%s(%d): at '%s', orig col is %zu\n",
- __func__, __LINE__, pc->Text(), pc->GetOrigCol());
- }
-
- if ( pc == nullptr
- || pc->IsNullChunk())
- {
- pc = start;
-
- // Don't break before a close, comma, or colon
- if ( start->Is(CT_PAREN_CLOSE)
- || start->Is(CT_PAREN_OPEN)
- || start->Is(CT_FPAREN_CLOSE)
- || start->Is(CT_FPAREN_OPEN)
- || start->Is(CT_SPAREN_CLOSE)
- || start->Is(CT_SPAREN_OPEN)
- || start->Is(CT_ANGLE_CLOSE)
- || start->Is(CT_BRACE_CLOSE)
- || start->Is(CT_COMMA)
- || start->IsSemicolon()
- || start->Len() == 0)
- {
- LOG_FMT(LSPLIT, " ** NO GO **\n");
-
- // TODO: Add in logic to handle 'hard' limits by backing up a token
- return(true);
- }
- }
- // add a newline before pc
- prev = pc->GetPrev();
-
- if ( prev->IsNotNullChunk()
- && !pc->IsNewline()
- && !prev->IsNewline())
- {
- //int plen = (pc->Len() < 5) ? pc->Len() : 5;
- //int slen = (start->Len() < 5) ? start->Len() : 5;
- //LOG_FMT(LSPLIT, " '%.*s' [%s], started on token '%.*s' [%s]\n",
- // plen, pc->Text(), get_token_name(pc->GetType()),
- // slen, start->Text(), get_token_name(start->GetType()));
- LOG_FMT(LSPLIT, "%s(%d): Text() '%s', type %s, started on token '%s', type %s\n",
- __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()),
- start->Text(), get_token_name(start->GetType()));
-
- split_before_chunk(pc);
- }
- return(true);
-} // split_line
-
-
-/*
- * The for statement split algorithm works as follows:
- * 1. Step backwards and forwards to find the semicolons
- * 2. Try splitting at the semicolons first.
- * 3. If that doesn't work, then look for a comma at paren level.
- * 4. If that doesn't work, then look for an assignment at paren level.
- * 5. If that doesn't work, then give up.
- */
-static void split_for_stmt(Chunk *start)
-{
- LOG_FUNC_ENTRY();
- // how many semicolons (1 or 2) do we need to find
- log_rule_B("ls_for_split_full");
- size_t max_cnt = options::ls_for_split_full() ? 2 : 1;
- Chunk *open_paren = nullptr;
- size_t nl_cnt = 0;
-
- LOG_FMT(LSPLIT, "%s: starting on %s, line %zu\n",
- __func__, start->Text(), start->GetOrigLine());
-
- // Find the open paren so we know the level and count newlines
- Chunk *pc = start;
-
- while ((pc = pc->GetPrev())->IsNotNullChunk())
- {
- if (pc->Is(CT_SPAREN_OPEN))
- {
- open_paren = pc;
- break;
- }
-
- if (pc->GetNlCount() > 0)
- {
- nl_cnt += pc->GetNlCount();
- }
- }
-
- if (open_paren == nullptr)
- {
- LOG_FMT(LSPLIT, "No open paren\n");
- return;
- }
- // see if we started on the semicolon
- int count = 0;
- Chunk *st[2];
-
- pc = start;
-
- if ( pc->Is(CT_SEMICOLON)
- && pc->GetParentType() == CT_FOR)
- {
- st[count++] = pc;
- }
-
- // first scan backwards for the semicolons
- while ( (count < static_cast<int>(max_cnt))
- && ((pc = pc->GetPrev())->IsNotNullChunk())
- && pc->IsNotNullChunk()
- && pc->TestFlags(PCF_IN_SPAREN))
- {
- if ( pc->Is(CT_SEMICOLON)
- && pc->GetParentType() == CT_FOR)
- {
- st[count++] = pc;
- }
- }
- // And now scan forward
- pc = start;
-
- while ( (count < static_cast<int>(max_cnt))
- && ((pc = pc->GetNext())->IsNotNullChunk())
- && pc->TestFlags(PCF_IN_SPAREN))
- {
- if ( pc->Is(CT_SEMICOLON)
- && pc->GetParentType() == CT_FOR)
- {
- st[count++] = pc;
- }
- }
-
- while (--count >= 0)
- {
- // TODO: st[0] may be uninitialized here
- LOG_FMT(LSPLIT, "%s(%d): split before %s\n", __func__, __LINE__, st[count]->Text());
- split_before_chunk(st[count]->GetNext());
- }
-
- if ( !is_past_width(start)
- || nl_cnt > 0)
- {
- return;
- }
- // Still past width, check for commas at parentheses level
- pc = open_paren;
-
- while ((pc = pc->GetNext()) != start)
- {
- if ( pc->Is(CT_COMMA)
- && (pc->GetLevel() == (open_paren->GetLevel() + 1)))
- {
- split_before_chunk(pc->GetNext());
-
- if (!is_past_width(pc))
- {
- return;
- }
- }
- }
- // Still past width, check for a assignments at parentheses level
- pc = open_paren;
-
- while ((pc = pc->GetNext()) != start)
- {
- if ( pc->Is(CT_ASSIGN)
- && (pc->GetLevel() == (open_paren->GetLevel() + 1)))
- {
- split_before_chunk(pc->GetNext());
-
- if (!is_past_width(pc))
- {
- return;
- }
- }
- }
- // Oh, well. We tried.
-} // split_for_stmt
-
-
-static void split_fcn_params_full(Chunk *start)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LSPLIT, "%s(%d): %s\n", __func__, __LINE__, start->Text());
-
- // Find the opening function parenthesis
- Chunk *fpo = start;
-
- LOG_FMT(LSPLIT, " %s(%d): Find the opening function parenthesis\n", __func__, __LINE__);
-
- while ((fpo = fpo->GetPrev())->IsNotNullChunk())
- {
- LOG_FMT(LSPLIT, "%s(%d): %s, orig col is %zu, level is %zu\n",
- __func__, __LINE__, fpo->Text(), fpo->GetOrigCol(), fpo->GetLevel());
-
- if ( fpo->Is(CT_FPAREN_OPEN)
- && (fpo->GetLevel() == start->GetLevel() - 1))
- {
- break; // opening parenthesis found. Issue #1020
- }
- }
- // Now break after every comma
- Chunk *pc = fpo->GetNextNcNnl();
-
- while (pc->IsNotNullChunk())
- {
- if (pc->GetLevel() <= fpo->GetLevel())
- {
- break;
- }
-
- if ( (pc->GetLevel() == (fpo->GetLevel() + 1))
- && pc->Is(CT_COMMA))
- {
- split_before_chunk(pc->GetNext());
- }
- pc = pc->GetNextNcNnl();
- }
-}
-
-
-static void split_fcn_params(Chunk *start)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LSPLIT, "%s(%d): start->Text() is '%s', orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, start->Text(), start->GetOrigLine(), start->GetOrigCol());
- Chunk *fpo = start;
-
- if (!start->Is(CT_FPAREN_OPEN))
- {
- // Find the opening function parenthesis
- LOG_FMT(LSPLIT, "%s(%d): Find the opening function parenthesis\n", __func__, __LINE__);
-
- while ( ((fpo = fpo->GetPrev()) != nullptr)
- && fpo->IsNotNullChunk()
- && fpo->IsNot(CT_FPAREN_OPEN))
- {
- // do nothing
- LOG_FMT(LSPLIT, "%s(%d): '%s', orig col is %zu, level is %zu\n",
- __func__, __LINE__, fpo->Text(), fpo->GetOrigCol(), fpo->GetLevel());
- }
- }
- Chunk *pc = fpo->GetNextNcNnl();
- size_t min_col = pc->GetColumn();
-
- log_rule_B("code_width");
- LOG_FMT(LSPLIT, " mincol is %zu, max_width is %zu\n",
- min_col, options::code_width() - min_col);
-
- int cur_width = 0;
- int last_col = -1;
-
- LOG_FMT(LSPLIT, "%s(%d):look forward until CT_COMMA or CT_FPAREN_CLOSE\n", __func__, __LINE__);
-
- while (pc->IsNotNullChunk())
- {
- LOG_CHUNK(LTOK, pc);
-
- if (pc->IsNewline())
- {
- cur_width = 0;
- last_col = -1;
- }
- else
- {
- if (last_col < 0)
- {
- last_col = pc->GetColumn();
- LOG_FMT(LSPLIT, "%s(%d): last_col is %d\n",
- __func__, __LINE__, last_col);
- }
- cur_width += (pc->GetColumn() - last_col) + pc->Len();
- last_col = pc->GetColumn() + pc->Len();
-
- LOG_FMT(LSPLIT, "%s(%d): last_col is %d\n",
- __func__, __LINE__, last_col);
-
- if ( pc->Is(CT_COMMA)
- || pc->Is(CT_FPAREN_CLOSE))
- {
- if (cur_width == 0)
- {
- fprintf(stderr, "%s(%d): cur_width is ZERO, cannot be decremented, at line %zu, column %zu\n",
- __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
- log_flush(true);
- exit(EX_SOFTWARE);
- }
- cur_width--;
- LOG_FMT(LSPLIT, "%s(%d): cur_width is %d\n",
- __func__, __LINE__, cur_width);
-
- log_rule_B("code_width");
-
- if ( ((last_col - 1) > static_cast<int>(options::code_width()))
- || pc->Is(CT_FPAREN_CLOSE))
- {
- break;
- }
- }
- }
- pc = pc->GetNext();
- }
- // back up until the prev is a comma
- Chunk *prev = pc;
-
- LOG_FMT(LSPLIT, "%s(%d): back up until the prev is a comma, begin is '%s', level is %zu\n",
- __func__, __LINE__, prev->Text(), prev->GetLevel());
-
- while ((prev = prev->GetPrev())->IsNotNullChunk())
- {
- LOG_FMT(LSPLIT, "%s(%d): prev->Text() is '%s', orig line is %zu, orig col is %zu\n",
- __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol());
- LOG_FMT(LSPLIT, "%s(%d): prev->GetLevel() is %zu, prev '%s', prev->GetType() is %s\n",
- __func__, __LINE__, prev->GetLevel(), prev->Text(), get_token_name(prev->GetType()));
-
- if ( prev->IsNewline()
- || prev->Is(CT_COMMA))
- {
- LOG_FMT(LSPLIT, "%s(%d): found at %zu\n",
- __func__, __LINE__, prev->GetOrigCol());
- break;
- }
- LOG_FMT(LSPLIT, "%s(%d): last_col is %d, prev->Len() is %zu\n",
- __func__, __LINE__, last_col, prev->Len());
- last_col -= prev->Len();
- LOG_FMT(LSPLIT, "%s(%d): last_col is %d\n",
- __func__, __LINE__, last_col);
-
- if (prev->Is(CT_FPAREN_OPEN))
- {
- pc = prev->GetNext();
-
- log_rule_B("indent_paren_nl");
-
- if (!options::indent_paren_nl())
- {
- log_rule_B("indent_columns");
- min_col = pc->GetBraceLevel() * options::indent_columns() + 1;
- LOG_FMT(LSPLIT, "%s(%d): min_col is %zu\n",
- __func__, __LINE__, min_col);
-
- log_rule_B("indent_continue");
-
- if (options::indent_continue() == 0)
- {
- log_rule_B("indent_columns");
- min_col += options::indent_columns();
- }
- else
- {
- min_col += abs(options::indent_continue());
- }
- LOG_FMT(LSPLIT, "%s(%d): min_col is %zu\n",
- __func__, __LINE__, min_col);
- }
-
- // Don't split "()"
- if (pc->GetType() != E_Token(prev->GetType() + 1))
- {
- break;
- }
- }
- }
-
- if ( prev->IsNotNullChunk()
- && !prev->IsNewline())
- {
- LOG_FMT(LSPLIT, "%s(%d): -- ended on %s --\n",
- __func__, __LINE__, get_token_name(prev->GetType()));
- LOG_FMT(LSPLIT, "%s(%d): min_col is %zu\n",
- __func__, __LINE__, min_col);
- pc = prev->GetNext();
- newline_add_before(pc);
- reindent_line(pc, min_col);
- cpd.changes++;
- }
-} // split_fcn_params
-
-
-static void split_template(Chunk *start)
-{
- LOG_FUNC_ENTRY();
- LOG_FMT(LSPLIT, " %s(%d): start %s\n", __func__, __LINE__, start->Text());
- LOG_FMT(LSPLIT, " %s(%d): back up until the prev is a comma\n", __func__, __LINE__);
-
- // back up until the prev is a comma
- Chunk *prev = start;
-
- while ((prev = prev->GetPrev())->IsNotNullChunk())
- {
- LOG_FMT(LSPLIT, " %s(%d): prev '%s'\n", __func__, __LINE__, prev->Text());
-
- if ( prev->IsNewline()
- || prev->Is(CT_COMMA))
- {
- break;
- }
- }
-
- if ( prev->IsNotNullChunk()
- && !prev->IsNewline())
- {
- LOG_FMT(LSPLIT, " %s(%d):", __func__, __LINE__);
- LOG_FMT(LSPLIT, " -- ended on %s --\n", get_token_name(prev->GetType()));
- Chunk *pc = prev->GetNext();
- newline_add_before(pc);
- size_t min_col = 1;
-
- log_rule_B("indent_continue");
-
- if (options::indent_continue() == 0)
- {
- log_rule_B("indent_columns");
- min_col += options::indent_columns();
- }
- else
- {
- min_col += abs(options::indent_continue());
- }
- reindent_line(pc, min_col);
- cpd.changes++;
- }
-} // split_templatefcn_params
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/width.h b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/width.h
deleted file mode 100644
index 73df45e1..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/width.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * @file width.h
- * prototypes for width.c
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-#ifndef WIDTH_H_INCLUDED
-#define WIDTH_H_INCLUDED
-
-#include "uncrustify_types.h"
-
-
-/**
- * Step forward until a token goes beyond the limit and then call split_line()
- * to split the line at or before that point.
- */
-void do_code_width();
-
-
-#endif /* WIDTH_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/CMakeLists.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/CMakeLists.txt
deleted file mode 100644
index 13839df9..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/CMakeLists.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-cmake_minimum_required(VERSION 2.8.12)
-
-find_package(Git QUIET)
-
-# sorted by lexicographic order
-set(test_suites
- c-sharp.test
- c.test
- cpp.test
- d.test
- ecma.test
- imported.test
- java.test
- objective-c.test
- pawn.test
- vala.test
-)
-
-if (NOT ENABLE_CODECOVERAGE)
- list(APPEND test_suites staging.test)
-endif()
-
-set(stdoc
- "Create a separate CTest test for each test case"
- " this is slower, especially with Python 3"
-)
-option("UNCRUSTIFY_SEPARATE_TESTS" "${stdoc}" OFF)
-if (UNCRUSTIFY_SEPARATE_TESTS)
- set(tests_ctest_file "${CMAKE_CURRENT_BINARY_DIR}/tests.cmake")
- set_property(DIRECTORY PROPERTY TEST_INCLUDE_FILE ${tests_ctest_file})
-
- add_custom_command(
- OUTPUT ${tests_ctest_file}
- COMMAND ${PYTHON_EXECUTABLE} run_format_tests.py
- --executable $<TARGET_FILE:uncrustify>
- --git ${GIT_EXECUTABLE}
- --python ${PYTHON_EXECUTABLE}
- --write-ctest ${tests_ctest_file}
- --cmake-config "$<CONFIGURATION>"
- VERBATIM
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- DEPENDS ${test_suites}
- )
-
- add_custom_target(register_tests ALL DEPENDS ${tests_ctest_file})
-else()
- foreach(suite IN LISTS test_suites)
- string(REPLACE ".test" "" lang "${suite}")
- add_test(NAME ${lang}
- COMMAND ${PYTHON_EXECUTABLE} run_format_tests.py ${lang}
- --executable $<TARGET_FILE:uncrustify>
- -d --git ${GIT_EXECUTABLE}
- --result-dir ${CMAKE_CURRENT_BINARY_DIR}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- )
- endforeach()
-endif()
-
-if (NOT ENABLE_CODECOVERAGE)
- add_test(
- NAME sources_format
- COMMAND ${PYTHON_EXECUTABLE} run_sources_tests.py
- --executable $<TARGET_FILE:uncrustify>
- -d --git ${GIT_EXECUTABLE}
- --result-dir ${CMAKE_CURRENT_BINARY_DIR}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- )
-endif()
-
-add_test(
- NAME cli_options
- COMMAND ${PYTHON_EXECUTABLE}
- test_cli_options.py
- --config $<CONFIG>
- --build ${uncrustify_BINARY_DIR}
- --diff
- --test ${CMAKE_CURRENT_BINARY_DIR}/cli
- ${_configs}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cli
-)
-
-add_custom_target(update-cli-options
- COMMAND ${PYTHON_EXECUTABLE}
- test_cli_options.py
- --config $<CONFIG>
- --build ${uncrustify_BINARY_DIR}
- --apply
- --test ${CMAKE_CURRENT_BINARY_DIR}/cli
- DEPENDS uncrustify
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cli
-)
-
-add_test(NAME sanity COMMAND uncrustify --help)
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/c.test b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/c.test
deleted file mode 100644
index 05bbd247..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/c.test
+++ /dev/null
@@ -1,550 +0,0 @@
-#
-# Test cases specifically for the C language.
-#
-# test.name config.file input.file
-
-
-# little general tests ====================================================
-
-00000 common/indent_columns-3.cfg c/comment-indent.c
-00001 c/cpp_to_c-1.cfg c/comment-indent.c
-00002 c/cpp_to_c-2.cfg c/comment-indent.c
-00003 c/cpp_to_c-3.cfg c/comment-indent.c
-00004 c/indent-1.cfg c/switch.c
-00005 c/ben_047.cfg c/cmt-align.c
-00006 common/indent_columns-3.cfg c/comment-convert.c
-00007 c/cpp_to_c-1.cfg c/comment-convert.c
-00008 c/cpp_to_c-2.cfg c/comment-convert.c
-00009 c/cpp_to_c-3.cfg c/comment-convert.c
-
-
-# brace styles
-
-00010 c/ben_048.cfg c/braces.c
-00011 common/brace-allman.cfg c/braces.c
-00012! c/brace-banner.cfg c/braces.c
-00013 c/brace-gnu.cfg c/braces.c
-00014 c/brace-kr.cfg c/braces.c
-00015 c/brace-ws.cfg c/braces.c
-00016 c/brace-ws2.cfg c/braces.c
-
-00020 c/ben_049.cfg c/define-if-indent.c
-00050 c/brace-remove-2.cfg c/brace-remove.c
-00051 c/brace-remove-all.cfg c/brace-remove.c
-00052 c/brace-remove-all.cfg c/brace-remove2.c
-00053 c/nl_brace_test.cfg c/brace.c
-00054 c/if_chain.cfg c/if_chain.c
-00055 c/cgal.cfg c/braces-2.c
-00056 c/brace-remove-all.cfg c/brace-remove3.c
-00057 c/if_chain.cfg c/brace-remove3.c
-00058 c/brace-kr-nobr.cfg c/if_chain.c
-
-00060 c/ben_050.cfg c/braces-2.c
-00061 c/ben_051.cfg c/braces-3.c
-00062 c/ben_052.cfg c/braces-4.c
-00065 c/ben_053.cfg c/braces-5.c
-00066 c/ben_054.cfg c/vb-while.c
-00067 c/ben_055.cfg c/vb-do.c
-00068 c/ben_056.cfg c/bsnl.c
-00069 c/ben_057.cfg c/vb-pp.c
-
-00070 c/ben_058.cfg c/return-multi.c
-00071 common/ben_042.cfg c/include_define.h
-00072 common/star_pos-0.cfg c/align-proto.c
-00073 common/empty.cfg c/nl_proto_endif.c
-00074 c/clang-has_include.cfg c/clang-has_include.h
-00076 c/1225.cfg c/1225.c
-
-00081 c/else-if-1.cfg c/else-if.c
-00082 c/else-if-2.cfg c/else-if.c
-00083 c/Issue_3601.cfg c/Issue_3601.c
-
-00091 c/cond-1.cfg c/cond.c
-00092 common/indent_columns-3.cfg c/cond.c
-00093 c/sp_cond_colon.cfg c/cond.c
-00094 c/Issue_3457.cfg c/Issue_3457.c
-
-00101 c/ben_061.cfg c/bugs-1.c
-00102 c/space_indent_columns-3.cfg c/bugs-2.c
-00103 c/ben_063.cfg c/bugs-3.c
-00104 c/ben_064.cfg c/bugs-4.c
-00105 c/ben_065.cfg c/bugs-5.c
-00106 common/ben_011.cfg c/bugs-6.c
-00107 common/ben_011.cfg c/bugs-7.c
-00108 common/indent_columns-3.cfg c/bugs-8.c
-
-00110 c/ben_069.cfg c/misc.c
-00111 c/brace-kr-br.cfg c/misc.c
-
-00120 c/sp_cmt_cpp_start-r.cfg c/sp_cmt_cpp_start.c
-00121 common/sp_cmt_cpp_start-a.cfg c/sp_cmt_cpp_start.c
-00122 common/sp_cmt_cpp_start_force.cfg c/sp_cmt_cpp_start.c
-00123 c/cmt_reflow.cfg c/cmt_reflow.c
-
-00130 c/ben_070.cfg c/minus-minus.c
-00131 c/Issue_3873.cfg c/Issue_3873.c
-00135 c/nepenthes.cfg c/br_cmt.c
-
-00140 c/ben_071.cfg c/global-vars.c
-00141 c/ben_072.cfg c/deref.c
-00142 c/ben_073.cfg c/type-cast.c
-00143 c/ben_074.cfg c/t3.in.c
-00144 c/ben_075.cfg c/align-proto-vars.c
-00145 c/ben_076.cfg c/vardefcol.c
-00146 c/Issue_3516.cfg c/Issue_3516.c
-00147 c/Issue_3517.cfg c/Issue_3516.c
-00148 c/Issue_3518.cfg c/Issue_3518.c
-
-# casts
-
-00150 c/ben_077.cfg c/casts.c
-00151 c/cast-sp-r.cfg c/casts.c
-00152 c/cast-sp-a.cfg c/casts.c
-00153 c/cast-type.cfg c/casts.c
-00154 common/sp_after_cast.cfg c/casts.c
-00155 c/ben_078.cfg c/cast_brace.c
-
-00156 c/nl_collapse_empty_1.cfg c/empty-braces.c
-00157 c/nl_collapse_empty_2.cfg c/empty-braces.c
-00158 c/nl_collapse_empty_3.cfg c/empty-braces.c
-00159 c/nl_collapse_empty_4.cfg c/empty-braces.c
-
-# fcn indents
-
-00160 c/indent_func_param.cfg c/fcn_indent.c
-00161 c/indent_func_call_param.cfg c/fcn_indent.c
-00162 c/indent_func_def_param.cfg c/fcn_indent.c
-00163 c/indent_func_proto_param.cfg c/fcn_indent.c
-00164 c/rdan.cfg c/fcn_indent_func_def_col1.c
-00165 c/sp_func_call_user_inside_fparen.cfg c/sp_func_call_user_inside_fparen.c
-
-00170 common/empty.cfg c/beautifier-off.c
-00180 c/sf538.cfg c/lvalue.c
-
-00190 common/empty.cfg c/Issue_3559.c
-
-
-# switch & case stuff
-
-00201 c/case-1.cfg c/case.c
-00202 c/case-2.cfg c/case.c
-00203 c/case-3.cfg c/case.c
-00204 c/bug_1718.cfg c/bug_1718.c
-00205 c/nl_before_return_false.cfg c/case-nl_before_return.c
-00206 c/nl_before_return_true.cfg c/case-nl_before_return.c
-00207 common/nl_before_ignore_after_case.cfg c/nl_before_ignore_after_case.c
-
-
-# structure initializers
-
-00301 c/ben_079.cfg c/align-struct-init.c
-00302 c/ben_080.cfg c/one-liner-init.c
-00303 c/1liner-split.cfg c/one-liner-init.c
-00304 c/1liner-no-split.cfg c/one-liner-init.c
-00305 c/ben_081.cfg c/one-liner-define.c
-
-00310 common/empty.cfg c/sp_embed_comment.c
-
-00320 c/rdan.cfg c/indent_first_bool_expr.c
-
-
-# aligning tresholds
-
-00401 common/align-1.cfg c/align-equ.c
-00402 common/align-1.cfg c/align-var.c
-00403 c/align-2.cfg c/align-var.c
-00404 c/align-3.cfg c/align-var.c
-00405 c/align-3.cfg c/bits.c
-00406 c/bug_i_771.cfg c/bug_i_771.c
-00407 c/star-style-0.cfg c/star-style.c
-00408 c/star-style-1.cfg c/star-style.c
-00409 c/star-style-2.cfg c/star-style.c
-
-00411 c/align_typedef_gap-3_span-5.cfg c/align-typedef.c
-00412 c/align_typedef_gap-3_span-5.cfg c/align-typedef.c
-00413 c/align_typedef_func-1.cfg c/align-typedef.c
-00414 c/align_typedef_func-2.cfg c/align-typedef.c
-00415 c/align_stack.cfg c/align_stack.c
-00416 c/align_sf_call_thresh_416.cfg c/align_sf_call_thresh_416.c
-00417 c/align_sf_call_thresh_417.cfg c/align_sf_call_thresh_417.c
-00418 c/align_sf_call_span_418.cfg c/align_sf_call_span_418.c
-00419 c/align_sf_call_span_419.cfg c/align_sf_call_span_419.c
-00420 c/Issue-2278.cfg c/Issue-2278.c
-
-00421 c/nl_ds_struct_enum_cmt-t.cfg c/nl_ds_struct_enum.c
-00422 c/nl_ds_struct_enum-2.cfg c/nl_ds_struct_enum.c
-00423 c/bug_1702.cfg c/bug_1702.c
-00424 c/Issue_3506.cfg c/Issue_3506.c
-
-00430 common/empty.cfg c/paren-indent.c
-00431 c/indent_paren_close-1.cfg c/paren-indent.c
-00432 c/indent_paren_close-2.cfg c/paren-indent.c
-
-00440 c/bug_489.cfg c/bug_489.c
-
-00451 c/code_width-80.cfg c/enum_gallery.c
-00452 c/nl_enum_own_lines-a.cfg c/enum_gallery.c
-00453! c/nl_enum_own_lines-3.cfg c/enum_gallery.c
-00454 c/nl_enum_own_lines-4.cfg c/enum_gallery.c
-
-00461 c/align_func_proto_star_amp-1.cfg c/align_func_proto_star_amp.h
-00462 c/align_func_proto_star_amp-2.cfg c/align_func_proto_star_amp.h
-00463 c/align_func_proto_star_amp-3.cfg c/align_func_proto_star_amp.h
-00464 c/align_func_proto_star_amp-4.cfg c/align_func_proto_star_amp.h
-00465 c/align_func_proto_star_amp-5.cfg c/align_func_proto_star_amp.h
-00466 c/align_func_proto_star_amp-6.cfg c/align_func_proto_star_amp.h
-00467 c/align_func_proto_star_amp-7.cfg c/align_func_proto_star_amp.h
-00468 c/align_func_proto_star_amp-8.cfg c/align_func_proto_star_amp.h
-00469 c/align_func_proto_star_amp-9.cfg c/align_func_proto_star_amp.h
-
-00470 c/align_trailing_do_cmt.cfg c/align_trailing_do_cmt.c
-
-# boolean and comma positioning
-
-00501 c/bool-pos-eol.cfg c/bool-pos.c
-00502 c/bool-pos-sol.cfg c/bool-pos.c
-00503 c/pos_compare-sol.cfg c/pos_compare.c
-00504 c/pos_compare-eol.cfg c/pos_compare.c
-00505 c/pos_conditional-l.cfg c/pos_conditional.c
-00506 c/pos_conditional-t.cfg c/pos_conditional.c
-00510 c/bool-pos-eol-break.cfg c/bool-pos.c
-00511 c/bool-pos-sol-break.cfg c/bool-pos.c
-00512 common/bool-pos-eol-force.cfg c/bool-pos.c
-00513 c/bool-pos-sol-force.cfg c/bool-pos.c
-00514 c/my_conf.cfg c/my_infile.c
-
-00600 common/indent_columns-3.cfg c/dos.c
-00601 common/indent_columns-3.cfg c/mac.c
-00611 common/empty.cfg c/pp-space.c
-00612 c/pp-indent-2.cfg c/pp-space.c
-00613 c/pp_indent-a.cfg c/pp-space.c
-00614 c/pp-space.cfg c/pp-space.c
-00615 c/pp-indent-2.cfg c/pp-nest.c
-00616 c/pp_if_indent-1.cfg c/pp-if-indent.c
-00617 c/rdan.cfg c/pp-if-indent.c
-00618 c/pp_if_indent-4.cfg c/pp-if-indent.c
-00619 c/Issue_3169.cfg c/Issue_3169.c
-
-00620 c/ben_083.cfg c/indent-assign.c
-00621 c/nl_endif.cfg c/nl_endif.c
-00622 c/indent_assign.cfg c/indent-off-after-assign.c
-
-00623 c/pp_space_none.cfg c/pp_space_before_after.c
-00624 c/pp_space_after.cfg c/pp_space_before_after.c
-00625 c/pp_space_before.cfg c/pp_space_before_after.c
-00626 c/pp_space_before_after.cfg c/pp_space_before_after.c
-
-00631 c/nl_assign1.cfg c/nl_assign.c
-00632 c/nl_assign2.cfg c/nl_assign.c
-00633 c/nl_assign1.cfg c/bug_3156.c
-
-# function def newlines
-
-00701 common/func-def-1.cfg c/function-def.c
-00702 common/func-def-2.cfg c/function-def.c
-00703 common/func-def-3.cfg c/function-def.c
-
-00710 c/add_long_closebrace_comment_1.cfg c/add_long_comment.c
-
-# nl_after_semicolon and nl_after_open_brace
-
-00721 c/nl_semicolon.cfg c/nl-semicolon.c
-
-# function call newlines
-
-00730 c/nl_func_call-1.cfg c/nl_func_call.c
-00731 c/nl_func_call-2.cfg c/nl_func_call.c
-00732 c/nl_func_call-3.cfg c/nl_func_call.c
-00733 c/nl_func_call-4.cfg c/nl_func_call.c
-00734 c/nl_func_call-5.cfg c/nl_func_call.c
-
-# function types
-
-00801 c/ben_084.cfg c/fcn_type.c
-00802 c/ben_085.cfg c/funcfunc.c
-00803 c/sf537.cfg c/fcn_type.c
-
-# code width
-
-00901 c/width.cfg c/code_width.c
-00902 common/width-2.cfg c/code_width.c
-00903 c/width-3.cfg c/code_width.c
-
-# pascal ptr_type
-
-00910 c/pascal_ptr.cfg c/pascal_ptr.c
-00911 c/empty_body.cfg c/pascal_ptr.c
-
-01000 c/mod-paren.cfg c/mod-paren.c
-01001 c/nl-comment.cfg c/nl-comment.c
-01002 c/mod-paren2.cfg c/mod-paren.c
-
-01005 c/mod_case_brace_add.cfg c/mod_case_brace.c
-01006 common/mod_case_brace_rm.cfg c/mod_case_brace.c
-01007 c/mod_move_case_brace.cfg c/mod_case_brace.c
-01008 c/mod_case_brace_add.cfg c/Issue_3366.c
-01009 c/mod_move_case_return.cfg c/mod_move_case_return.c
-01010 c/mod_move_case_return.cfg c/mod_move_case_return_bad.c
-
-01011 common/del_semicolon.cfg c/semicolons.c
-01012 c/ben_086.cfg c/semicolons.c
-
-01015 common/empty.cfg c/paren_indent.c
-01016 c/align_attr.cfg c/align_attr.c
-
-01020 common/kw_subst.cfg c/kw_subst.c
-01021 common/kw_subst3.cfg c/hello.c
-01022 common/kw_subst3.cfg c/kw_subst.c
-
-01030 c/cmt_indent_multi-f.cfg c/multi.h
-
-01035 common/empty.cfg c/func_wrap.c
-01036 common/sp_inside_fparen-f.cfg c/func_wrap.c
-01037 c/type_wrap.cfg c/type_wrap.c
-
-01040 c/newline_after_endif.cfg c/newline_after_endif.c
-
-01050 c/func_call_user.cfg c/func_call_user.c
-
-01060 common/empty.cfg c/backslash-newline-lex.c
-
-01070 c/label_colon_nl_1.cfg c/various_colons.c
-01071 c/label_colon_nl_2.cfg c/various_colons.c
-
-01080 common/empty.cfg c/bug_1196.c
-
-# big general tests
-
-02000 c/ben_087.cfg c/i2c-core.c
-02001 c/preproc-cleanup.cfg c/directfb.h
-02002 common/ben2.cfg c/i2c-core.c
-02003 c/Issue_3353.cfg c/Issue_3353.h
-
-# clark's style - blank lines before and after flow control, indented comments
-
-02100 common/clark.cfg c/i2c-core.c
-02101 common/clark.cfg c/comment-indent.c
-
-02200 c/xml-str.cfg c/xml.c
-02201 c/xml-str.cfg c/align-string.c
-
-02300 c/ben_088.cfg c/preproc-if.c
-02301 common/d.cfg c/preproc-if.c
-02302 c/cpp_to_c-1.cfg c/nl-cont.c
-02303 c/cpp_to_c-1.cfg c/nl-cont2.c
-
-02310 c/ben_089.cfg c/empty-for.c
-02311 c/ben_090.cfg c/pragma.c
-
-02315 c/pp_ret.cfg c/pp_ret.c
-
-02320 c/nl_create_one_liner.cfg c/nl_create_one_liner.c
-02325 common/sort_imports.cfg c/sort_include.c
-
-02330 c/leave_one_liners.cfg c/one_liners.c
-
-# some embedded sql stuff
-
-02400 c/ben_091.cfg sql/mysql.sqc C
-02401 c/ben_092.cfg sql/sta-select.sqc C
-02402 c/issue_527.cfg sql/issue_527.sqc C
-
-02410 c/pp_if_indent-0.cfg c/ifdef-indent.c
-02411 c/pp_if_indent-1.cfg c/ifdef-indent.c
-02412 c/pp_if_indent-2.cfg c/ifdef-indent.c
-02413 c/pp_if_indent-3.cfg c/ifdef-indent.c
-02414 c/nl_whole_file_ifdef.cfg c/whole_file_ifdef.c
-02415 c/endif.cfg c/endif.c
-02416 c/cmt_nl_end.cfg c/cmt_nl_end.c
-
-02421 c/cmt_multi_check_last-f.cfg c/cmt_multi.c
-02422 common/empty.cfg c/cmt_multi.c
-02423 common/empty.cfg c/cmt_multi_utf8.c
-
-02431 c/align_right_cmt_gap-1.cfg c/cmt_right_align.c
-02432 c/space_indent_columns-3.cfg c/cmt_right_align.c
-
-02440 common/empty.cfg c/string_utf8.c
-02441 common/empty.cfg c/utf8-identifiers.c
-
-02451 c/return-1.cfg c/nl_return_expr.c
-02452 c/return-2.cfg c/nl_return_expr.c
-02453 c/return-3.cfg c/nl_return_expr.c
-02454 c/return-4.cfg c/nl_return_expr.c
-
-02455 common/mod_paren_on_return-a.cfg c/macro-returns.c
-02456 common/mod_paren_on_return-r.cfg c/macro-returns.c
-02457 c/nl_before_return_true.cfg c/nl_before_return.c
-
-02460 c/freebsd.cfg c/freebsd.c
-
-02486 c/doxy-comment-no.cfg c/doxy-comment.c
-02487 c/doxy-comment-yes.cfg c/doxy-comment.c
-
-02501 c/ger.cfg c/custom_types_ssl.c
-02502 c/custom_types_ssl.cfg c/custom_types_ssl.c
-#02503 ger.cfg c/pp_concat_asn1.h
-
-02504 c/align_keep_extra.cfg c/align_keep_extra.c
-02505 c/align_multi.cfg c/align_assigns.c
-02506 c/align-4.cfg c/align_assign_var_defs.c
-
-02510 c/ben_093.cfg c/asm.c
-
-02520 c/pp_indent_with_tabs_0.cfg c/pp_indent_with_tabs.c
-02521 c/pp_indent_with_tabs_1.cfg c/pp_indent_with_tabs.c
-02522 c/pp_indent_with_tabs_2.cfg c/pp_indent_with_tabs.c
-02523 c/pp_indent_with_tabs_-1_0.cfg c/pp_indent_with_tabs.c
-02524 c/pp_indent_with_tabs_-1_1.cfg c/pp_indent_with_tabs.c
-02525 c/pp_indent_with_tabs_-1_2.cfg c/pp_indent_with_tabs.c
-
-02530 common/empty.cfg c/pp_multiline_define.c
-02531 common/Issue_3052.cfg c/pp_multiline_define.c
-02532 c/pp_multiline_define_ignore_body.cfg c/pp_multiline_define.c
-02533 c/pp_multiline_define_with_spaces.cfg c/pp_multiline_define.c
-02534 c/pp_multiline_define_align_nl.cfg c/pp_multiline_define.c
-02535 c/pp_multiline_define_align_pp_col1.cfg c/pp_multiline_define.c
-02536 c/pp_multiline_define_align_pp_cnt3.cfg c/pp_multiline_define.c
-02537 c/pp_multiline_define_align_pp_ml4.cfg c/pp_multiline_define.c
-02538 c/pp_multiline_define_align_pp_ml2.cfg c/pp_multiline_define.c
-02539 c/pp_multiline_define_align_pp_ml0.cfg c/pp_multiline_define.c
-02540 c/pp_multiline_define_align_pp_ml-1.cfg c/pp_multiline_define.c
-02541 c/pp_multiline_define_align_pp_ml-5.cfg c/pp_multiline_define.c
-
-02550 c/Issue_3852.cfg c/func_var_multi_paren.c
-
-07630 c/indent-vbrace.cfg c/indent-vbrace.c
-
-08399 c/ben_095.cfg c/gh399.c
-
-09594 common/indent_columns-3.cfg c/sf594.c
-09588 common/empty.cfg c/sf588.c
-
-09601 c/sp_after_sparen.cfg c/sp_after_sparen.c
-09602 common/bug_671.cfg c/bug_671.c
-09603 common/indent_ternary_operator-1.cfg c/indent_ternary-1.c
-09604 common/indent_ternary_operator-2.cfg c/indent_ternary-2.c
-09605 common/sp_arith-f.cfg c/negative_value.c
-09606 c/ptr-arith.cfg c/extern.c
-09607 c/ptr-arith.cfg c/attribute.c
-09608 common/aet-func_call_user.cfg c/func_call_user2.c
-09609 c/Issue_2279.cfg c/Issue_2279.c
-
-09610 c/force_tab_after_define-t.cfg c/bug_i_876.c
-09611 common/space_indent_columns-4.cfg c/bug_i_222.c
-09612 common/empty.cfg c/bug_1041.c
-09613 common/empty.cfg c/i1413.c
-09614 common/empty.cfg c/string_prefixes.c
-09615 c/i1564.cfg c/i1564.c
-09616 c/enum_comma_ifdef.cfg c/enum_comma_ifdef.c
-09617 c/Issue_2360-a.cfg c/Issue_2360.c
-09618 c/Issue_2360-b.cfg c/Issue_2360.c
-09619 c/Issue_2411.cfg c/Issue_2411.c
-
-09620 c/Issue_2640.cfg c/Issue_2640.c
-09621 c/preproc-cleanup.cfg c/pp-before-func-def.c
-09622 c/Issue_3356.cfg c/Issue_3356.c
-09623 c/convert_cmt_vbrace_one_line.cfg c/vbrace_one_liner.c
-
-10003 common/empty.cfg c/incdec_postfix_multiply.c
-10004 c/ben_094.cfg c/pragma_asm.c
-10005 common/empty.cfg c/i1270.c
-10006 c/bug_2331.cfg c/bug_2331.c
-10007 c/indent_macro_brace-true.cfg c/indent-macro-brace.c
-10008 c/indent_macro_brace-false.cfg c/indent-macro-brace.c
-10009 common/empty.cfg c/return-compound-literal.c
-
-10010 c/indent_compound_literal_return-false.cfg c/return-compound-literal.c
-10011 c/indent_compound_literal_return-true.cfg c/return-compound-literal.c
-10012 c/indent_sparen_extra-8.cfg c/sparen-indent.c
-10013 common/empty.cfg c/sparen-indent.c
-10014 common/indent_continue-8.cfg c/sparen-indent.c
-10015 common/empty.cfg c/Issue_2845.h
-10016 c/Issue_3233.cfg c/Issue_3233.c
-10017 c/sp_sparen_paren-a.cfg c/double-sparen.c
-10018 c/sp_sparen_paren-i.cfg c/double-sparen.c
-10019 c/pp_indent_in_guard.cfg c/include-guard.h
-10020 c/indent_single_line_comments_after.cfg c/single_line_comment_after.c
-10021 common/sp_cparen_oparen-f.cfg c/parenthesized_indirect_call.c
-10022 c/Issue_3269.cfg c/Issue_3269.c
-10023 c/Issue_3272.cfg c/Issue_3272.h
-10024 c/Issue_3274.cfg c/Issue_3274.c
-10025 c/sp_between_semi_for_empty-r.cfg c/forever.c
-10026 c/sp_between_semi_for_empty-i.cfg c/forever.c
-10027 c/Issue_3327.cfg c/Issue_3327.c
-10028 c/sp_emb_cmt-i.cfg c/Issue_3339.c
-10029 c/sp_emb_cmt-f.cfg c/Issue_3339.c
-10030 c/sp_emb_cmt-r.cfg c/Issue_3339.c
-10031 c/sp_after_pointer_star-r.cfg c/Issue_3342.c
-10032 c/sp_after_pointer_star-r.cfg c/Issue_3345.c
-10033 c/pp_include_at_level-true.cfg c/Issue_3343.c
-10034 c/pp_include_at_level-false.cfg c/Issue_3343.c
-10035 c/indent_comment_align_thresh-0.cfg c/comment-indent.c
-10036 c/Issue_3350.cfg c/comment-indent.c
-10037 c/indent_case_comment-true.cfg c/Issue_3362.c
-10038 c/indent_case_comment-false.cfg c/Issue_3362.c
-10039 c/Issue_3370.cfg c/Issue_3370.c
-10040 c/Issue_3377.cfg c/Issue_3377.c
-10041 c/Issue_3351.cfg c/Issue_3351.c
-10042 c/sp_ptr_star_func_var-i.cfg c/Issue_3376.c
-10043 c/sp_ptr_star_func_var-a.cfg c/Issue_3376.c
-10044 c/sp_ptr_star_func_var-r.cfg c/Issue_3376.c
-10045 c/sp_ptr_star_func_var-f.cfg c/Issue_3376.c
-10046 c/Issue_3402.cfg c/Issue_3402.c
-10047 c/pp_if_indent_code-true.cfg c/Issue_3421.h
-10048 c/Issue_3431.cfg c/Issue_3431.c
-10049 c/indent_paren_close--1.cfg c/Issue_3436.c
-10050 common/empty.cfg c/Issue_3192.c
-10051 c/Issue_3454.cfg c/Issue_3454.c
-10052 c/Issue_3472.cfg c/Issue_3472.c
-10053 c/Issue_3476.cfg c/Issue_3476.c
-10054 c/Issue_3480.cfg c/Issue_3480.c
-10055 c/Issue_3493.cfg c/Issue_3493.c
-10056 c/sp_enum_brace-i.cfg c/Issue_3496.h
-10057 c/sp_enum_brace-a.cfg c/Issue_3496.h
-10058 c/sp_enum_brace-r.cfg c/Issue_3496.h
-10059 c/sp_enum_brace-f.cfg c/Issue_3496.h
-10060 c/indent_ignore_bool-true.cfg c/Issue_3548.c
-10061 c/Issue_3556.cfg c/Issue_3556.c
-10062 c/Issue_3561.cfg c/Issue_3561.c
-10063 c/Issue_3565.cfg c/Issue_3565.c
-10064 c/Issue_3567-a.cfg c/Issue_3567.c
-10065 c/Issue_3567-b.cfg c/Issue_3567.c
-10066 c/Issue_3580.cfg c/Issue_3580.c
-10077 c/Issue_3582.cfg c/Issue_3582.c
-10078 c/pp_indent_brace--1.cfg c/Issue_3587.h
-10079 c/Issue_3662.cfg c/Issue_3662.c
-10080 c/mod_infinite_loop-0.cfg c/infinite-loops.c
-10081 c/mod_infinite_loop-1.cfg c/infinite-loops.c
-10082 c/mod_infinite_loop-2.cfg c/infinite-loops.c
-10083 c/mod_infinite_loop-3.cfg c/infinite-loops.c
-10084 c/mod_infinite_loop-4.cfg c/infinite-loops.c
-10085 c/mod_infinite_loop-5.cfg c/infinite-loops.c
-10086 c/Issue_3716-1.cfg c/infinite-loops.c
-10087 c/Issue_3716-2.cfg c/infinite-loops.c
-10088 c/Issue_3716-3.cfg c/infinite-loops.c
-10089 c/Issue_3716-4.cfg c/infinite-loops.c
-10090 c/Issue_3716-5.cfg c/infinite-loops.c
-10091 c/mod_short_int-a.cfg c/int-types.c
-10092 c/mod_short_int-r.cfg c/int-types.c
-10093 c/mod_long_int-a.cfg c/int-types.c
-10094 c/mod_long_int-r.cfg c/int-types.c
-10095 c/mod_signed_int-a.cfg c/int-types.c
-10096 c/mod_signed_int-r.cfg c/int-types.c
-10097 c/mod_unsigned_int-a.cfg c/int-types.c
-10098 c/mod_unsigned_int-r.cfg c/int-types.c
-10099 c/mod_int_short-a.cfg c/int-types.c
-10100 c/mod_int_short-r.cfg c/int-types.c
-10101 c/mod_int_long-a.cfg c/int-types.c
-10102 c/mod_int_long-r.cfg c/int-types.c
-10103 c/mod_int_signed-a.cfg c/int-types.c
-10104 c/mod_int_signed-r.cfg c/int-types.c
-10105 c/mod_int_unsigned-a.cfg c/int-types.c
-10106 c/mod_int_unsigned-r.cfg c/int-types.c
-10107 c/mod_int-shift-left.cfg c/int-types.c
-10108 c/mod_int-shift-right.cfg c/int-types.c
-10109 c/mod_int-add-all-prefer-left.cfg c/int-types.c
-10110 c/mod_int-add-all-prefer-right.cfg c/int-types.c
-10111 c/mod_int-remove-left.cfg c/int-types.c
-10112 c/mod_int-remove-right.cfg c/int-types.c
-10113 c/mod_int-remove-all.cfg c/int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/28.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/28.txt
deleted file mode 100644
index c1283626..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/28.txt
+++ /dev/null
@@ -1,430 +0,0 @@
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(parse_next : rule is 'disable_processing_nl_cont'
-log_rule(tokenize : rule is 'newlines'
-brace_cleanup : orig line is 1, orig col is 1, Text() 'struct', type is STRUCT, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 1, orig col is 1, type is STRUCT, tos is 0, TOS.type is EOF, TOS.stage is NONE, []
-parse_cleanup : orig line is 1, type is STRUCT, Text() is 'struct'
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
-brace_cleanup : orig line is 1, orig col is 8, Text() 'TelegramIndex', type is TYPE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 1, orig col is 8, type is TYPE, tos is 0, TOS.type is EOF, TOS.stage is NONE, []
-parse_cleanup : orig line is 1, type is TYPE, Text() is 'TelegramIndex'
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 2, frm.expr_count is 2
-brace_cleanup : orig line is 1, orig col is 21, <Newline>, PRE is false
-brace_cleanup : pp level is 0
-brace_cleanup : orig line is 2, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 2, orig col is 1, type is BRACE_OPEN, tos is 0, TOS.type is EOF, TOS.stage is NONE, []
-parse_cleanup : orig line is 2, type is BRACE_OPEN, Text() is '{'
-parse_cleanup : frm.stmt_count is 2, frm.expr_count is 2
-parse_cleanup : frm.stmt_count is 3, frm.expr_count is 3
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-brace_cleanup : orig line is 2, orig col is 2, <Newline>, PRE is false
-brace_cleanup : pp level is 0
-brace_cleanup : orig line is 3, orig col is 1, Text() 'TelegramIndex', type is WORD, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 3, orig col is 1, type is WORD, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 3, type is WORD, Text() is 'TelegramIndex'
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
-brace_cleanup : orig line is 3, orig col is 14, Text() '(', type is PAREN_OPEN, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 3, orig col is 14, type is PAREN_OPEN, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 3, type is PAREN_OPEN, Text() is '('
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 2, frm.expr_count is 2
-brace_cleanup : orig line is 3, orig col is 15, Text() 'const', type is QUALIFIER, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 3, orig col is 15, type is QUALIFIER, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 3, type is QUALIFIER, Text() is 'const'
-parse_cleanup : frm.stmt_count is 2, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 3, frm.expr_count is 1
-brace_cleanup : orig line is 3, orig col is 21, Text() 'char', type is TYPE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 3, orig col is 21, type is TYPE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 3, type is TYPE, Text() is 'char'
-parse_cleanup : frm.stmt_count is 3, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 4, frm.expr_count is 2
-brace_cleanup : orig line is 3, orig col is 25, Text() '*', type is PTR_TYPE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 3, orig col is 25, type is PTR_TYPE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 3, type is PTR_TYPE, Text() is '*'
-parse_cleanup : frm.stmt_count is 4, frm.expr_count is 2
-parse_cleanup : frm.stmt_count is 5, frm.expr_count is 3
-brace_cleanup : orig line is 3, orig col is 27, Text() 'pN', type is WORD, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 3, orig col is 27, type is WORD, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 3, type is WORD, Text() is 'pN'
-parse_cleanup : frm.stmt_count is 5, frm.expr_count is 3
-parse_cleanup : frm.stmt_count is 6, frm.expr_count is 4
-brace_cleanup : orig line is 3, orig col is 29, Text() ',', type is COMMA, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 3, orig col is 29, type is COMMA, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 3, type is COMMA, Text() is ','
-parse_cleanup : frm.stmt_count is 6, frm.expr_count is 4
-parse_cleanup : frm.stmt_count is 7, frm.expr_count is 5
-brace_cleanup : orig line is 3, orig col is 31, Text() 'unsigned', type is TYPE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 3, orig col is 31, type is TYPE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 3, type is TYPE, Text() is 'unsigned'
-parse_cleanup : frm.stmt_count is 7, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 8, frm.expr_count is 1
-brace_cleanup : orig line is 3, orig col is 40, Text() 'long', type is TYPE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 3, orig col is 40, type is TYPE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 3, type is TYPE, Text() is 'long'
-parse_cleanup : frm.stmt_count is 8, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 9, frm.expr_count is 2
-brace_cleanup : orig line is 3, orig col is 45, Text() 'nI', type is WORD, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 3, orig col is 45, type is WORD, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 3, type is WORD, Text() is 'nI'
-parse_cleanup : frm.stmt_count is 9, frm.expr_count is 2
-parse_cleanup : frm.stmt_count is 10, frm.expr_count is 3
-brace_cleanup : orig line is 3, orig col is 47, Text() ')', type is PAREN_CLOSE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 3, orig col is 47, type is PAREN_CLOSE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 3, type is PAREN_CLOSE, Text() is ')'
-parse_cleanup : frm.stmt_count is 10, frm.expr_count is 3
-parse_cleanup : frm.stmt_count is 11, frm.expr_count is 4
-brace_cleanup : orig line is 3, orig col is 49, Text() ':', type is COLON, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 3, orig col is 49, type is COLON, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 3, type is COLON, Text() is ':'
-parse_cleanup : frm.stmt_count is 11, frm.expr_count is 4
-parse_cleanup : frm.stmt_count is 12, frm.expr_count is 5
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-brace_cleanup : orig line is 3, orig col is 50, <Newline>, PRE is false
-brace_cleanup : pp level is 0
-brace_cleanup : orig line is 4, orig col is 1, Text() 'pTelName', type is WORD, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 4, orig col is 1, type is WORD, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 4, type is WORD, Text() is 'pTelName'
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
-brace_cleanup : orig line is 4, orig col is 9, Text() '(', type is PAREN_OPEN, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 4, orig col is 9, type is PAREN_OPEN, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 4, type is PAREN_OPEN, Text() is '('
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 2, frm.expr_count is 2
-brace_cleanup : orig line is 4, orig col is 10, Text() 'pN', type is WORD, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 4, orig col is 10, type is WORD, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 4, type is WORD, Text() is 'pN'
-parse_cleanup : frm.stmt_count is 2, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 3, frm.expr_count is 1
-brace_cleanup : orig line is 4, orig col is 12, Text() ')', type is PAREN_CLOSE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 4, orig col is 12, type is PAREN_CLOSE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 4, type is PAREN_CLOSE, Text() is ')'
-parse_cleanup : frm.stmt_count is 3, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 4, frm.expr_count is 2
-brace_cleanup : orig line is 4, orig col is 13, Text() ',', type is COMMA, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 4, orig col is 13, type is COMMA, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 4, type is COMMA, Text() is ','
-parse_cleanup : frm.stmt_count is 4, frm.expr_count is 2
-parse_cleanup : frm.stmt_count is 5, frm.expr_count is 3
-brace_cleanup : orig line is 4, orig col is 14, <Newline>, PRE is false
-brace_cleanup : pp level is 0
-brace_cleanup : orig line is 5, orig col is 1, Text() 'nTelIndex', type is WORD, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 5, orig col is 1, type is WORD, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 5, type is WORD, Text() is 'nTelIndex'
-parse_cleanup : frm.stmt_count is 5, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 6, frm.expr_count is 1
-brace_cleanup : orig line is 5, orig col is 10, Text() '(', type is PAREN_OPEN, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 5, orig col is 10, type is PAREN_OPEN, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 5, type is PAREN_OPEN, Text() is '('
-parse_cleanup : frm.stmt_count is 6, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 7, frm.expr_count is 2
-brace_cleanup : orig line is 5, orig col is 11, Text() 'n', type is WORD, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 5, orig col is 11, type is WORD, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 5, type is WORD, Text() is 'n'
-parse_cleanup : frm.stmt_count is 7, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 8, frm.expr_count is 1
-brace_cleanup : orig line is 5, orig col is 12, Text() ')', type is PAREN_CLOSE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 5, orig col is 12, type is PAREN_CLOSE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 5, type is PAREN_CLOSE, Text() is ')'
-parse_cleanup : frm.stmt_count is 8, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 9, frm.expr_count is 2
-brace_cleanup : orig line is 5, orig col is 13, <Newline>, PRE is false
-brace_cleanup : pp level is 0
-brace_cleanup : orig line is 6, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 6, orig col is 1, type is BRACE_OPEN, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 6, type is BRACE_OPEN, Text() is '{'
-parse_cleanup : frm.stmt_count is 9, frm.expr_count is 2
-parse_cleanup : frm.stmt_count is 10, frm.expr_count is 3
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-brace_cleanup : orig line is 6, orig col is 2, <Newline>, PRE is false
-brace_cleanup : pp level is 0
-brace_cleanup : orig line is 7, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 7, orig col is 1, type is BRACE_CLOSE, tos is 2, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 7, type is BRACE_CLOSE, Text() is '}'
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-brace_cleanup : orig line is 7, orig col is 2, <Newline>, PRE is false
-brace_cleanup : pp level is 0
-brace_cleanup : orig line is 9, orig col is 1, Text() '~', type is INV, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 9, orig col is 1, type is INV, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 9, type is INV, Text() is '~'
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
-brace_cleanup : orig line is 9, orig col is 2, Text() 'TelegramIndex', type is WORD, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 9, orig col is 2, type is WORD, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 9, type is WORD, Text() is 'TelegramIndex'
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 2, frm.expr_count is 1
-brace_cleanup : orig line is 9, orig col is 15, Text() '(', type is PAREN_OPEN, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 9, orig col is 15, type is PAREN_OPEN, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 9, type is PAREN_OPEN, Text() is '('
-parse_cleanup : frm.stmt_count is 2, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 3, frm.expr_count is 2
-brace_cleanup : orig line is 9, orig col is 16, Text() ')', type is PAREN_CLOSE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 9, orig col is 16, type is PAREN_CLOSE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 9, type is PAREN_CLOSE, Text() is ')'
-parse_cleanup : frm.stmt_count is 3, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 4, frm.expr_count is 1
-brace_cleanup : orig line is 9, orig col is 17, <Newline>, PRE is false
-brace_cleanup : pp level is 0
-brace_cleanup : orig line is 10, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 10, orig col is 1, type is BRACE_OPEN, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 10, type is BRACE_OPEN, Text() is '{'
-parse_cleanup : frm.stmt_count is 4, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 5, frm.expr_count is 2
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-brace_cleanup : orig line is 10, orig col is 2, <Newline>, PRE is false
-brace_cleanup : pp level is 0
-brace_cleanup : orig line is 11, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 11, orig col is 1, type is BRACE_CLOSE, tos is 2, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 11, type is BRACE_CLOSE, Text() is '}'
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-brace_cleanup : orig line is 11, orig col is 2, <Newline>, PRE is false
-brace_cleanup : pp level is 0
-brace_cleanup : orig line is 13, orig col is 1, Text() 'const', type is QUALIFIER, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 13, orig col is 1, type is QUALIFIER, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 13, type is QUALIFIER, Text() is 'const'
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
-brace_cleanup : orig line is 13, orig col is 7, Text() 'char', type is TYPE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 13, orig col is 7, type is TYPE, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 13, type is TYPE, Text() is 'char'
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 2, frm.expr_count is 2
-brace_cleanup : orig line is 13, orig col is 11, Text() '*', type is PTR_TYPE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 13, orig col is 11, type is PTR_TYPE, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 13, type is PTR_TYPE, Text() is '*'
-parse_cleanup : frm.stmt_count is 2, frm.expr_count is 2
-parse_cleanup : frm.stmt_count is 3, frm.expr_count is 3
-brace_cleanup : orig line is 13, orig col is 13, Text() 'const', type is QUALIFIER, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 13, orig col is 13, type is QUALIFIER, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 13, type is QUALIFIER, Text() is 'const'
-parse_cleanup : frm.stmt_count is 3, frm.expr_count is 3
-parse_cleanup : frm.stmt_count is 4, frm.expr_count is 4
-brace_cleanup : orig line is 13, orig col is 19, Text() 'pTelName', type is WORD, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 13, orig col is 19, type is WORD, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 13, type is WORD, Text() is 'pTelName'
-parse_cleanup : frm.stmt_count is 4, frm.expr_count is 4
-parse_cleanup : frm.stmt_count is 5, frm.expr_count is 5
-brace_cleanup : orig line is 13, orig col is 27, Text() ';', type is SEMICOLON, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 13, orig col is 27, type is SEMICOLON, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 13, type is SEMICOLON, Text() is ';'
-parse_cleanup : frm.stmt_count is 5, frm.expr_count is 5
-parse_cleanup : frm.stmt_count is 6, frm.expr_count is 6
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-brace_cleanup : orig line is 13, orig col is 28, <Newline>, PRE is false
-brace_cleanup : pp level is 0
-brace_cleanup : orig line is 14, orig col is 1, Text() 'unsigned', type is TYPE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 14, orig col is 1, type is TYPE, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 14, type is TYPE, Text() is 'unsigned'
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
-brace_cleanup : orig line is 14, orig col is 10, Text() 'long', type is TYPE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 14, orig col is 10, type is TYPE, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 14, type is TYPE, Text() is 'long'
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 2, frm.expr_count is 2
-brace_cleanup : orig line is 14, orig col is 15, Text() 'nTelIndex', type is WORD, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 14, orig col is 15, type is WORD, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 14, type is WORD, Text() is 'nTelIndex'
-parse_cleanup : frm.stmt_count is 2, frm.expr_count is 2
-parse_cleanup : frm.stmt_count is 3, frm.expr_count is 3
-brace_cleanup : orig line is 14, orig col is 24, Text() ';', type is SEMICOLON, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 14, orig col is 24, type is SEMICOLON, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 14, type is SEMICOLON, Text() is ';'
-parse_cleanup : frm.stmt_count is 3, frm.expr_count is 3
-parse_cleanup : frm.stmt_count is 4, frm.expr_count is 4
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-brace_cleanup : orig line is 14, orig col is 25, <Newline>, PRE is false
-brace_cleanup : pp level is 0
-brace_cleanup : orig line is 15, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 15, orig col is 1, type is BRACE_CLOSE, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, []
-parse_cleanup : orig line is 15, type is BRACE_CLOSE, Text() is '}'
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-brace_cleanup : orig line is 15, orig col is 2, Text() ';', type is SEMICOLON, PRE is false
-brace_cleanup : pp level is 0
-parse_cleanup : orig line is 15, orig col is 2, type is SEMICOLON, tos is 0, TOS.type is EOF, TOS.stage is NONE, []
-parse_cleanup : orig line is 15, type is SEMICOLON, Text() is ';'
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
-parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
-brace_cleanup : orig line is 15, orig col is 3, <Newline>, PRE is false
-brace_cleanup : pp level is 0
-parameter_pack_cleanup : orig line is 1, orig col is 1, Text() 'struct', type is STRUCT, PRE is false
-parameter_pack_cleanup : orig line is 1, orig col is 8, Text() 'TelegramIndex', type is TYPE, PRE is false
-parameter_pack_cleanup : orig line is 1, orig col is 21, <Newline>, PRE is false
-parameter_pack_cleanup : orig line is 2, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
-parameter_pack_cleanup : orig line is 2, orig col is 2, <Newline>, PRE is false
-parameter_pack_cleanup : orig line is 3, orig col is 1, Text() 'TelegramIndex', type is WORD, PRE is false
-parameter_pack_cleanup : orig line is 3, orig col is 14, Text() '(', type is PAREN_OPEN, PRE is false
-parameter_pack_cleanup : orig line is 3, orig col is 15, Text() 'const', type is QUALIFIER, PRE is false
-parameter_pack_cleanup : orig line is 3, orig col is 21, Text() 'char', type is TYPE, PRE is false
-parameter_pack_cleanup : orig line is 3, orig col is 25, Text() '*', type is PTR_TYPE, PRE is false
-parameter_pack_cleanup : orig line is 3, orig col is 27, Text() 'pN', type is WORD, PRE is false
-parameter_pack_cleanup : orig line is 3, orig col is 29, Text() ',', type is COMMA, PRE is false
-parameter_pack_cleanup : orig line is 3, orig col is 31, Text() 'unsigned', type is TYPE, PRE is false
-parameter_pack_cleanup : orig line is 3, orig col is 40, Text() 'long', type is TYPE, PRE is false
-parameter_pack_cleanup : orig line is 3, orig col is 45, Text() 'nI', type is WORD, PRE is false
-parameter_pack_cleanup : orig line is 3, orig col is 47, Text() ')', type is PAREN_CLOSE, PRE is false
-parameter_pack_cleanup : orig line is 3, orig col is 49, Text() ':', type is COLON, PRE is false
-parameter_pack_cleanup : orig line is 3, orig col is 50, <Newline>, PRE is false
-parameter_pack_cleanup : orig line is 4, orig col is 1, Text() 'pTelName', type is WORD, PRE is false
-parameter_pack_cleanup : orig line is 4, orig col is 9, Text() '(', type is PAREN_OPEN, PRE is false
-parameter_pack_cleanup : orig line is 4, orig col is 10, Text() 'pN', type is WORD, PRE is false
-parameter_pack_cleanup : orig line is 4, orig col is 12, Text() ')', type is PAREN_CLOSE, PRE is false
-parameter_pack_cleanup : orig line is 4, orig col is 13, Text() ',', type is COMMA, PRE is false
-parameter_pack_cleanup : orig line is 4, orig col is 14, <Newline>, PRE is false
-parameter_pack_cleanup : orig line is 5, orig col is 1, Text() 'nTelIndex', type is WORD, PRE is false
-parameter_pack_cleanup : orig line is 5, orig col is 10, Text() '(', type is PAREN_OPEN, PRE is false
-parameter_pack_cleanup : orig line is 5, orig col is 11, Text() 'n', type is WORD, PRE is false
-parameter_pack_cleanup : orig line is 5, orig col is 12, Text() ')', type is PAREN_CLOSE, PRE is false
-parameter_pack_cleanup : orig line is 5, orig col is 13, <Newline>, PRE is false
-parameter_pack_cleanup : orig line is 6, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
-parameter_pack_cleanup : orig line is 6, orig col is 2, <Newline>, PRE is false
-parameter_pack_cleanup : orig line is 7, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
-parameter_pack_cleanup : orig line is 7, orig col is 2, <Newline>, PRE is false
-parameter_pack_cleanup : orig line is 9, orig col is 1, Text() '~', type is INV, PRE is false
-parameter_pack_cleanup : orig line is 9, orig col is 2, Text() 'TelegramIndex', type is WORD, PRE is false
-parameter_pack_cleanup : orig line is 9, orig col is 15, Text() '(', type is PAREN_OPEN, PRE is false
-parameter_pack_cleanup : orig line is 9, orig col is 16, Text() ')', type is PAREN_CLOSE, PRE is false
-parameter_pack_cleanup : orig line is 9, orig col is 17, <Newline>, PRE is false
-parameter_pack_cleanup : orig line is 10, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
-parameter_pack_cleanup : orig line is 10, orig col is 2, <Newline>, PRE is false
-parameter_pack_cleanup : orig line is 11, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
-parameter_pack_cleanup : orig line is 11, orig col is 2, <Newline>, PRE is false
-parameter_pack_cleanup : orig line is 13, orig col is 1, Text() 'const', type is QUALIFIER, PRE is false
-parameter_pack_cleanup : orig line is 13, orig col is 7, Text() 'char', type is TYPE, PRE is false
-parameter_pack_cleanup : orig line is 13, orig col is 11, Text() '*', type is PTR_TYPE, PRE is false
-parameter_pack_cleanup : orig line is 13, orig col is 13, Text() 'const', type is QUALIFIER, PRE is false
-parameter_pack_cleanup : orig line is 13, orig col is 19, Text() 'pTelName', type is WORD, PRE is false
-parameter_pack_cleanup : orig line is 13, orig col is 27, Text() ';', type is SEMICOLON, PRE is false
-parameter_pack_cleanup : orig line is 13, orig col is 28, <Newline>, PRE is false
-parameter_pack_cleanup : orig line is 14, orig col is 1, Text() 'unsigned', type is TYPE, PRE is false
-parameter_pack_cleanup : orig line is 14, orig col is 10, Text() 'long', type is TYPE, PRE is false
-parameter_pack_cleanup : orig line is 14, orig col is 15, Text() 'nTelIndex', type is WORD, PRE is false
-parameter_pack_cleanup : orig line is 14, orig col is 24, Text() ';', type is SEMICOLON, PRE is false
-parameter_pack_cleanup : orig line is 14, orig col is 25, <Newline>, PRE is false
-parameter_pack_cleanup : orig line is 15, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
-parameter_pack_cleanup : orig line is 15, orig col is 2, Text() ';', type is SEMICOLON, PRE is false
-parameter_pack_cleanup : orig line is 15, orig col is 3, <Newline>, PRE is false
-log_rule(enum_cleanup : rule is 'mod_enum_last_comma'
-newline_var_def_blk : orig line is 1, orig col is 1, Text() 'struct', type is STRUCT, PRE is false
-newline_var_def_blk : orig line is 15, orig col is 3, <Newline>, PRE is false
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/31.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/31.txt
deleted file mode 100644
index d269b195..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/31.txt
+++ /dev/null
@@ -1,876 +0,0 @@
-indent_text : orig line is 1, orig col is 1, Text() 'struct', type is STRUCT, PRE is false
-indent_text : orig line is 1, orig col is 1, column is 1, for 'struct'
- []
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 1, orig col is 1, Text() is 'struct', type is STRUCT
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-reindent_line : orig line is 1, orig col is 1, on 'struct' [STRUCT/NONE] => 1
- [CallStack]
-indent_text : pc orig line is 1, orig col is 8, Text() is 'TelegramIndex', type is TYPE
-indent_text : orig line is 1, orig col is 8, Text() 'TelegramIndex', type is TYPE, PRE is false
-indent_text : orig line is 1, orig col is 8, column is 8, for 'TelegramIndex'
- []
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 1, orig col is 8, Text() is 'TelegramIndex', type is TYPE
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 1, orig col is 21, Text() is '', type is NEWLINE
-indent_text : orig line is 1, orig col is 21, <Newline>, PRE is false
-indent_text : orig line is 1, <Newline>
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 1, orig col is 21, Text() is '', type is NEWLINE
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : frm.pse_tos is 0, ...indent is 1
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 2, orig col is 1, Text() is '{', type is BRACE_OPEN
-indent_text : orig line is 2, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
-indent_text : orig line is 2, orig col is 1, column is 1, for '{'
- []
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 2, orig col is 1, Text() is '{', type is BRACE_OPEN
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : frm.pse_tos is 1, ... indent is 9
-indent_text : orig line is 2, orig col is 1, Text() is '{', parent type is STRUCT
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-reindent_line : orig line is 2, orig col is 1, on '{' [BRACE_OPEN/STRUCT] => 1
- [CallStack]
-indent_text : pc orig line is 2, orig col is 2, Text() is '', type is NEWLINE
-indent_text : orig line is 2, orig col is 2, <Newline>, PRE is false
-indent_text : orig line is 2, <Newline>
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 3, orig col is 1, Text() is 'TelegramIndex', type is FUNC_CLASS_DEF
-indent_text : orig line is 3, orig col is 1, Text() 'TelegramIndex', type is FUNC_CLASS_DEF, PRE is false
-indent_text : orig line is 3, orig col is 1, column is 1, for 'TelegramIndex'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-reindent_line : orig line is 3, orig col is 1, on 'TelegramIndex' [FUNC_CLASS_DEF/NONE] => 9
- [CallStack]
-indent_text : pc orig line is 3, orig col is 14, Text() is '(', type is FPAREN_OPEN
-indent_text : orig line is 3, orig col is 14, Text() '(', type is FPAREN_OPEN, PRE is false
-indent_text : orig line is 3, orig col is 14, column is 22, for '('
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 2, ...indent is 23
-indent_text : frm.pse_tos is 2, ...indent is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 15, Text() is 'const', type is QUALIFIER
-indent_text : orig line is 3, orig col is 15, Text() 'const', type is QUALIFIER, PRE is false
-indent_text : orig line is 3, orig col is 15, column is 23, for 'const'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 21, Text() is 'char', type is TYPE
-indent_text : orig line is 3, orig col is 21, Text() 'char', type is TYPE, PRE is false
-indent_text : orig line is 3, orig col is 21, column is 29, for 'char'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 25, Text() is '*', type is PTR_TYPE
-indent_text : orig line is 3, orig col is 25, Text() '*', type is PTR_TYPE, PRE is false
-indent_text : orig line is 3, orig col is 25, column is 33, for '*'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 27, Text() is 'pN', type is WORD
-indent_text : orig line is 3, orig col is 27, Text() 'pN', type is WORD, PRE is false
-indent_text : orig line is 3, orig col is 27, column is 35, for 'pN'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 29, Text() is ',', type is COMMA
-indent_text : orig line is 3, orig col is 29, Text() ',', type is COMMA, PRE is false
-indent_text : orig line is 3, orig col is 29, column is 37, for ','
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 31, Text() is 'unsigned', type is TYPE
-indent_text : orig line is 3, orig col is 31, Text() 'unsigned', type is TYPE, PRE is false
-indent_text : orig line is 3, orig col is 31, column is 39, for 'unsigned'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 40, Text() is 'long', type is TYPE
-indent_text : orig line is 3, orig col is 40, Text() 'long', type is TYPE, PRE is false
-indent_text : orig line is 3, orig col is 40, column is 48, for 'long'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 45, Text() is 'nI', type is WORD
-indent_text : orig line is 3, orig col is 45, Text() 'nI', type is WORD, PRE is false
-indent_text : orig line is 3, orig col is 45, column is 53, for 'nI'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 47, Text() is ')', type is FPAREN_CLOSE
-indent_text : orig line is 3, orig col is 47, Text() ')', type is FPAREN_CLOSE, PRE is false
-indent_text : orig line is 3, orig col is 47, column is 55, for ')'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 47, Text() is ')', type is FPAREN_CLOSE
-indent_text : pc orig line is 3, orig col is 47, Text() is ')', type is FPAREN_CLOSE
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 3, orig col is 49, Text() is ':', type is CONSTR_COLON
-indent_text : orig line is 3, orig col is 49, Text() ':', type is CONSTR_COLON, PRE is false
-indent_text : orig line is 3, orig col is 49, column is 57, for ':'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 2, ...indent is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 3, orig col is 50, Text() is '', type is NEWLINE
-indent_text : orig line is 3, orig col is 50, <Newline>, PRE is false
-indent_text : orig line is 3, <Newline>
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 3, orig col is 50, Text() is '', type is NEWLINE
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 2, ...indent is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 4, orig col is 1, Text() is 'pTelName', type is FUNC_CTOR_VAR
-indent_text : orig line is 4, orig col is 1, Text() 'pTelName', type is FUNC_CTOR_VAR, PRE is false
-indent_text : orig line is 4, orig col is 1, column is 1, for 'pTelName'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 4, orig col is 1, Text() is 'pTelName', type is FUNC_CTOR_VAR
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-reindent_line : orig line is 4, orig col is 1, on 'pTelName' [FUNC_CTOR_VAR/NONE] => 17
- [CallStack]
-indent_text : pc orig line is 4, orig col is 9, Text() is '(', type is FPAREN_OPEN
-indent_text : orig line is 4, orig col is 9, Text() '(', type is FPAREN_OPEN, PRE is false
-indent_text : orig line is 4, orig col is 9, column is 25, for '('
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 4, orig col is 9, Text() is '(', type is FPAREN_OPEN
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 3, ...indent is 26
-indent_text : frm.pse_tos is 3, ...indent is 26
-indent_text : frm.pse_tos is 3, ...indent_tmp is 26
-indent_text : pc orig line is 4, orig col is 10, Text() is 'pN', type is WORD
-indent_text : orig line is 4, orig col is 10, Text() 'pN', type is WORD, PRE is false
-indent_text : orig line is 4, orig col is 10, column is 26, for 'pN'
- []
-indent_text : frm.pse_tos is 3, ...indent_tmp is 26
-indent_text : frm.pse_tos is 3, ...indent_tmp is 26
-indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : orig line is 4, orig col is 12, Text() ')', type is FPAREN_CLOSE, PRE is false
-indent_text : orig line is 4, orig col is 12, column is 28, for ')'
- []
-indent_text : frm.pse_tos is 3, ...indent_tmp is 26
-indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 4, orig col is 13, Text() is ',', type is COMMA
-indent_text : orig line is 4, orig col is 13, Text() ',', type is COMMA, PRE is false
-indent_text : orig line is 4, orig col is 13, column is 29, for ','
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 4, orig col is 13, Text() is ',', type is COMMA
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 4, orig col is 14, Text() is '', type is NEWLINE
-indent_text : orig line is 4, orig col is 14, <Newline>, PRE is false
-indent_text : orig line is 4, <Newline>
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 4, orig col is 14, Text() is '', type is NEWLINE
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 2, ...indent is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 5, orig col is 1, Text() is 'nTelIndex', type is FUNC_CTOR_VAR
-indent_text : orig line is 5, orig col is 1, Text() 'nTelIndex', type is FUNC_CTOR_VAR, PRE is false
-indent_text : orig line is 5, orig col is 1, column is 1, for 'nTelIndex'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 5, orig col is 1, Text() is 'nTelIndex', type is FUNC_CTOR_VAR
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-reindent_line : orig line is 5, orig col is 1, on 'nTelIndex' [FUNC_CTOR_VAR/NONE] => 17
- [CallStack]
-indent_text : pc orig line is 5, orig col is 10, Text() is '(', type is FPAREN_OPEN
-indent_text : orig line is 5, orig col is 10, Text() '(', type is FPAREN_OPEN, PRE is false
-indent_text : orig line is 5, orig col is 10, column is 26, for '('
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 5, orig col is 10, Text() is '(', type is FPAREN_OPEN
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 3, ...indent is 27
-indent_text : frm.pse_tos is 3, ...indent is 27
-indent_text : frm.pse_tos is 3, ...indent_tmp is 27
-indent_text : pc orig line is 5, orig col is 11, Text() is 'n', type is WORD
-indent_text : orig line is 5, orig col is 11, Text() 'n', type is WORD, PRE is false
-indent_text : orig line is 5, orig col is 11, column is 27, for 'n'
- []
-indent_text : frm.pse_tos is 3, ...indent_tmp is 27
-indent_text : frm.pse_tos is 3, ...indent_tmp is 27
-indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : orig line is 5, orig col is 12, Text() ')', type is FPAREN_CLOSE, PRE is false
-indent_text : orig line is 5, orig col is 12, column is 28, for ')'
- []
-indent_text : frm.pse_tos is 3, ...indent_tmp is 27
-indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 5, orig col is 13, Text() is '', type is NEWLINE
-indent_text : orig line is 5, orig col is 13, <Newline>, PRE is false
-indent_text : orig line is 5, <Newline>
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 5, orig col is 13, Text() is '', type is NEWLINE
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 2, ...indent is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 6, orig col is 1, Text() is '{', type is BRACE_OPEN
-indent_text : orig line is 6, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
-indent_text : orig line is 6, orig col is 1, column is 1, for '{'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 6, orig col is 1, Text() is '{', type is BRACE_OPEN
-indent_text : pc orig line is 6, orig col is 1, Text() is '{', type is BRACE_OPEN
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 2, ... indent is 17
-indent_text : orig line is 6, orig col is 1, Text() is '{', parent type is FUNC_CLASS_DEF
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-reindent_line : orig line is 6, orig col is 1, on '{' [BRACE_OPEN/FUNC_CLASS_DEF] => 9
- [CallStack]
-indent_text : pc orig line is 6, orig col is 2, Text() is '', type is NEWLINE
-indent_text : orig line is 6, orig col is 2, <Newline>, PRE is false
-indent_text : orig line is 6, <Newline>
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 2, ...indent is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 7, orig col is 1, Text() is '}', type is BRACE_CLOSE
-indent_text : orig line is 7, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
-indent_text : orig line is 7, orig col is 1, column is 1, for '}'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 7, orig col is 1, Text() is '}', type is BRACE_CLOSE
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 7, orig col is 1, Text() is '}', type is BRACE_CLOSE
-reindent_line : orig line is 7, orig col is 1, on '}' [BRACE_CLOSE/FUNC_CLASS_DEF] => 9
- [CallStack]
-indent_text : pc orig line is 7, orig col is 2, Text() is '', type is NEWLINE
-indent_text : orig line is 7, orig col is 2, <Newline>, PRE is false
-indent_text : orig line is 7, <Newline>
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 9, orig col is 1, Text() is '~', type is DESTRUCTOR
-indent_text : orig line is 9, orig col is 1, Text() '~', type is DESTRUCTOR, PRE is false
-indent_text : orig line is 9, orig col is 1, column is 1, for '~'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-reindent_line : orig line is 9, orig col is 1, on '~' [DESTRUCTOR/FUNC_CLASS_DEF] => 9
- [CallStack]
-indent_text : pc orig line is 9, orig col is 2, Text() is 'TelegramIndex', type is FUNC_CLASS_DEF
-indent_text : orig line is 9, orig col is 2, Text() 'TelegramIndex', type is FUNC_CLASS_DEF, PRE is false
-indent_text : orig line is 9, orig col is 2, column is 10, for 'TelegramIndex'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 9, orig col is 15, Text() is '(', type is FPAREN_OPEN
-indent_text : orig line is 9, orig col is 15, Text() '(', type is FPAREN_OPEN, PRE is false
-indent_text : orig line is 9, orig col is 15, column is 23, for '('
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 2, ...indent is 24
-indent_text : frm.pse_tos is 2, ...indent is 24
-indent_text : frm.pse_tos is 2, ...indent_tmp is 24
-indent_text : pc orig line is 9, orig col is 16, Text() is ')', type is FPAREN_CLOSE
-indent_text : orig line is 9, orig col is 16, Text() ')', type is FPAREN_CLOSE, PRE is false
-indent_text : orig line is 9, orig col is 16, column is 24, for ')'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 24
-indent_text : pc orig line is 9, orig col is 16, Text() is ')', type is FPAREN_CLOSE
-indent_text : pc orig line is 9, orig col is 16, Text() is ')', type is FPAREN_CLOSE
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 9, orig col is 17, Text() is '', type is NEWLINE
-indent_text : orig line is 9, orig col is 17, <Newline>, PRE is false
-indent_text : orig line is 9, <Newline>
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 10, orig col is 1, Text() is '{', type is BRACE_OPEN
-indent_text : orig line is 10, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
-indent_text : orig line is 10, orig col is 1, column is 1, for '{'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 2, ... indent is 17
-indent_text : orig line is 10, orig col is 1, Text() is '{', parent type is FUNC_CLASS_DEF
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-reindent_line : orig line is 10, orig col is 1, on '{' [BRACE_OPEN/FUNC_CLASS_DEF] => 9
- [CallStack]
-indent_text : pc orig line is 10, orig col is 2, Text() is '', type is NEWLINE
-indent_text : orig line is 10, orig col is 2, <Newline>, PRE is false
-indent_text : orig line is 10, <Newline>
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 2, ...indent is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 11, orig col is 1, Text() is '}', type is BRACE_CLOSE
-indent_text : orig line is 11, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
-indent_text : orig line is 11, orig col is 1, column is 1, for '}'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 11, orig col is 1, Text() is '}', type is BRACE_CLOSE
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 11, orig col is 1, Text() is '}', type is BRACE_CLOSE
-reindent_line : orig line is 11, orig col is 1, on '}' [BRACE_CLOSE/FUNC_CLASS_DEF] => 9
- [CallStack]
-indent_text : pc orig line is 11, orig col is 2, Text() is '', type is NEWLINE
-indent_text : orig line is 11, orig col is 2, <Newline>, PRE is false
-indent_text : orig line is 11, <Newline>
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 13, orig col is 1, Text() is 'const', type is QUALIFIER
-indent_text : orig line is 13, orig col is 1, Text() 'const', type is QUALIFIER, PRE is false
-indent_text : orig line is 13, orig col is 1, column is 1, for 'const'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-reindent_line : orig line is 13, orig col is 1, on 'const' [QUALIFIER/NONE] => 9
- [CallStack]
-indent_text : pc orig line is 13, orig col is 7, Text() is 'char', type is TYPE
-indent_text : orig line is 13, orig col is 7, Text() 'char', type is TYPE, PRE is false
-indent_text : orig line is 13, orig col is 7, column is 15, for 'char'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 13, orig col is 11, Text() is '*', type is PTR_TYPE
-indent_text : orig line is 13, orig col is 11, Text() '*', type is PTR_TYPE, PRE is false
-indent_text : orig line is 13, orig col is 11, column is 19, for '*'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 13, orig col is 13, Text() is 'const', type is QUALIFIER
-indent_text : orig line is 13, orig col is 13, Text() 'const', type is QUALIFIER, PRE is false
-indent_text : orig line is 13, orig col is 13, column is 21, for 'const'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 13, orig col is 19, Text() is 'pTelName', type is WORD
-indent_text : orig line is 13, orig col is 19, Text() 'pTelName', type is WORD, PRE is false
-indent_text : orig line is 13, orig col is 19, column is 27, for 'pTelName'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 13, orig col is 27, Text() is ';', type is SEMICOLON
-indent_text : orig line is 13, orig col is 27, Text() ';', type is SEMICOLON, PRE is false
-indent_text : orig line is 13, orig col is 27, column is 35, for ';'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 13, orig col is 28, Text() is '', type is NEWLINE
-indent_text : orig line is 13, orig col is 28, <Newline>, PRE is false
-indent_text : orig line is 13, <Newline>
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 14, orig col is 1, Text() is 'unsigned', type is TYPE
-indent_text : orig line is 14, orig col is 1, Text() 'unsigned', type is TYPE, PRE is false
-indent_text : orig line is 14, orig col is 1, column is 1, for 'unsigned'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-reindent_line : orig line is 14, orig col is 1, on 'unsigned' [TYPE/NONE] => 9
- [CallStack]
-indent_text : pc orig line is 14, orig col is 10, Text() is 'long', type is TYPE
-indent_text : orig line is 14, orig col is 10, Text() 'long', type is TYPE, PRE is false
-indent_text : orig line is 14, orig col is 10, column is 18, for 'long'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 14, orig col is 15, Text() is 'nTelIndex', type is WORD
-indent_text : orig line is 14, orig col is 15, Text() 'nTelIndex', type is WORD, PRE is false
-indent_text : orig line is 14, orig col is 15, column is 23, for 'nTelIndex'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 14, orig col is 24, Text() is ';', type is SEMICOLON
-indent_text : orig line is 14, orig col is 24, Text() ';', type is SEMICOLON, PRE is false
-indent_text : orig line is 14, orig col is 24, column is 32, for ';'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 14, orig col is 25, Text() is '', type is NEWLINE
-indent_text : orig line is 14, orig col is 25, <Newline>, PRE is false
-indent_text : orig line is 14, <Newline>
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 15, orig col is 1, Text() is '}', type is BRACE_CLOSE
-indent_text : orig line is 15, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
-indent_text : orig line is 15, orig col is 1, column is 1, for '}'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 15, orig col is 1, Text() is '}', type is BRACE_CLOSE
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 15, orig col is 1, Text() is '}', type is BRACE_CLOSE
-reindent_line : orig line is 15, orig col is 1, on '}' [BRACE_CLOSE/STRUCT] => 1
- [CallStack]
-indent_text : pc orig line is 15, orig col is 2, Text() is ';', type is SEMICOLON
-indent_text : orig line is 15, orig col is 2, Text() ';', type is SEMICOLON, PRE is false
-indent_text : orig line is 15, orig col is 2, column is 2, for ';'
- []
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 15, orig col is 2, Text() is ';', type is SEMICOLON
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 15, orig col is 3, Text() is '', type is NEWLINE
-indent_text : orig line is 15, orig col is 3, <Newline>, PRE is false
-indent_text : orig line is 15, <Newline>
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 15, orig col is 3, Text() is '', type is NEWLINE
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : frm.pse_tos is 0, ...indent is 1
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 0, orig col is 0, Text() is '', type is NONE
-indent_text : before quick_align_again
-indent_text : after quick_align_again
-indent_text : orig line is 1, orig col is 1, Text() 'struct', type is STRUCT, PRE is false
-indent_text : orig line is 1, orig col is 1, column is 1, for 'struct'
- []
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 1, orig col is 1, Text() is 'struct', type is STRUCT
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-reindent_line : orig line is 1, orig col is 1, on 'struct' [STRUCT/NONE] => 1
- [CallStack]
-indent_text : pc orig line is 1, orig col is 8, Text() is 'TelegramIndex', type is TYPE
-indent_text : orig line is 1, orig col is 8, Text() 'TelegramIndex', type is TYPE, PRE is false
-indent_text : orig line is 1, orig col is 8, column is 8, for 'TelegramIndex'
- []
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 1, orig col is 8, Text() is 'TelegramIndex', type is TYPE
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 1, orig col is 21, Text() is '', type is NEWLINE
-indent_text : orig line is 1, orig col is 21, <Newline>, PRE is false
-indent_text : orig line is 1, <Newline>
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 1, orig col is 21, Text() is '', type is NEWLINE
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : frm.pse_tos is 0, ...indent is 1
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 2, orig col is 1, Text() is '{', type is BRACE_OPEN
-indent_text : orig line is 2, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
-indent_text : orig line is 2, orig col is 1, column is 1, for '{'
- []
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 2, orig col is 1, Text() is '{', type is BRACE_OPEN
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : frm.pse_tos is 1, ... indent is 9
-indent_text : orig line is 2, orig col is 1, Text() is '{', parent type is STRUCT
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-reindent_line : orig line is 2, orig col is 1, on '{' [BRACE_OPEN/STRUCT] => 1
- [CallStack]
-indent_text : pc orig line is 2, orig col is 2, Text() is '', type is NEWLINE
-indent_text : orig line is 2, orig col is 2, <Newline>, PRE is false
-indent_text : orig line is 2, <Newline>
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 3, orig col is 1, Text() is 'TelegramIndex', type is FUNC_CLASS_DEF
-indent_text : orig line is 3, orig col is 1, Text() 'TelegramIndex', type is FUNC_CLASS_DEF, PRE is false
-indent_text : orig line is 3, orig col is 1, column is 9, for 'TelegramIndex'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-reindent_line : orig line is 3, orig col is 1, on 'TelegramIndex' [FUNC_CLASS_DEF/NONE] => 9
- [CallStack]
-indent_text : pc orig line is 3, orig col is 14, Text() is '(', type is FPAREN_OPEN
-indent_text : orig line is 3, orig col is 14, Text() '(', type is FPAREN_OPEN, PRE is false
-indent_text : orig line is 3, orig col is 14, column is 22, for '('
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 2, ...indent is 23
-indent_text : frm.pse_tos is 2, ...indent is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 15, Text() is 'const', type is QUALIFIER
-indent_text : orig line is 3, orig col is 15, Text() 'const', type is QUALIFIER, PRE is false
-indent_text : orig line is 3, orig col is 15, column is 23, for 'const'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 21, Text() is 'char', type is TYPE
-indent_text : orig line is 3, orig col is 21, Text() 'char', type is TYPE, PRE is false
-indent_text : orig line is 3, orig col is 21, column is 29, for 'char'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 25, Text() is '*', type is PTR_TYPE
-indent_text : orig line is 3, orig col is 25, Text() '*', type is PTR_TYPE, PRE is false
-indent_text : orig line is 3, orig col is 25, column is 33, for '*'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 27, Text() is 'pN', type is WORD
-indent_text : orig line is 3, orig col is 27, Text() 'pN', type is WORD, PRE is false
-indent_text : orig line is 3, orig col is 27, column is 35, for 'pN'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 29, Text() is ',', type is COMMA
-indent_text : orig line is 3, orig col is 29, Text() ',', type is COMMA, PRE is false
-indent_text : orig line is 3, orig col is 29, column is 37, for ','
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 31, Text() is 'unsigned', type is TYPE
-indent_text : orig line is 3, orig col is 31, Text() 'unsigned', type is TYPE, PRE is false
-indent_text : orig line is 3, orig col is 31, column is 39, for 'unsigned'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 40, Text() is 'long', type is TYPE
-indent_text : orig line is 3, orig col is 40, Text() 'long', type is TYPE, PRE is false
-indent_text : orig line is 3, orig col is 40, column is 48, for 'long'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 45, Text() is 'nI', type is WORD
-indent_text : orig line is 3, orig col is 45, Text() 'nI', type is WORD, PRE is false
-indent_text : orig line is 3, orig col is 45, column is 53, for 'nI'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 47, Text() is ')', type is FPAREN_CLOSE
-indent_text : orig line is 3, orig col is 47, Text() ')', type is FPAREN_CLOSE, PRE is false
-indent_text : orig line is 3, orig col is 47, column is 55, for ')'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 23
-indent_text : pc orig line is 3, orig col is 47, Text() is ')', type is FPAREN_CLOSE
-indent_text : pc orig line is 3, orig col is 47, Text() is ')', type is FPAREN_CLOSE
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 3, orig col is 49, Text() is ':', type is CONSTR_COLON
-indent_text : orig line is 3, orig col is 49, Text() ':', type is CONSTR_COLON, PRE is false
-indent_text : orig line is 3, orig col is 49, column is 57, for ':'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 2, ...indent is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 3, orig col is 50, Text() is '', type is NEWLINE
-indent_text : orig line is 3, orig col is 50, <Newline>, PRE is false
-indent_text : orig line is 3, <Newline>
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 3, orig col is 50, Text() is '', type is NEWLINE
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 2, ...indent is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 4, orig col is 1, Text() is 'pTelName', type is FUNC_CTOR_VAR
-indent_text : orig line is 4, orig col is 1, Text() 'pTelName', type is FUNC_CTOR_VAR, PRE is false
-indent_text : orig line is 4, orig col is 1, column is 17, for 'pTelName'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 4, orig col is 1, Text() is 'pTelName', type is FUNC_CTOR_VAR
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-reindent_line : orig line is 4, orig col is 1, on 'pTelName' [FUNC_CTOR_VAR/NONE] => 17
- [CallStack]
-indent_text : pc orig line is 4, orig col is 9, Text() is '(', type is FPAREN_OPEN
-indent_text : orig line is 4, orig col is 9, Text() '(', type is FPAREN_OPEN, PRE is false
-indent_text : orig line is 4, orig col is 9, column is 25, for '('
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 4, orig col is 9, Text() is '(', type is FPAREN_OPEN
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 3, ...indent is 26
-indent_text : frm.pse_tos is 3, ...indent is 26
-indent_text : frm.pse_tos is 3, ...indent_tmp is 26
-indent_text : pc orig line is 4, orig col is 10, Text() is 'pN', type is WORD
-indent_text : orig line is 4, orig col is 10, Text() 'pN', type is WORD, PRE is false
-indent_text : orig line is 4, orig col is 10, column is 26, for 'pN'
- []
-indent_text : frm.pse_tos is 3, ...indent_tmp is 26
-indent_text : frm.pse_tos is 3, ...indent_tmp is 26
-indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : orig line is 4, orig col is 12, Text() ')', type is FPAREN_CLOSE, PRE is false
-indent_text : orig line is 4, orig col is 12, column is 28, for ')'
- []
-indent_text : frm.pse_tos is 3, ...indent_tmp is 26
-indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 4, orig col is 13, Text() is ',', type is COMMA
-indent_text : orig line is 4, orig col is 13, Text() ',', type is COMMA, PRE is false
-indent_text : orig line is 4, orig col is 13, column is 29, for ','
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 4, orig col is 13, Text() is ',', type is COMMA
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 4, orig col is 14, Text() is '', type is NEWLINE
-indent_text : orig line is 4, orig col is 14, <Newline>, PRE is false
-indent_text : orig line is 4, <Newline>
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 4, orig col is 14, Text() is '', type is NEWLINE
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 2, ...indent is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 5, orig col is 1, Text() is 'nTelIndex', type is FUNC_CTOR_VAR
-indent_text : orig line is 5, orig col is 1, Text() 'nTelIndex', type is FUNC_CTOR_VAR, PRE is false
-indent_text : orig line is 5, orig col is 1, column is 17, for 'nTelIndex'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 5, orig col is 1, Text() is 'nTelIndex', type is FUNC_CTOR_VAR
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-reindent_line : orig line is 5, orig col is 1, on 'nTelIndex' [FUNC_CTOR_VAR/NONE] => 17
- [CallStack]
-indent_text : pc orig line is 5, orig col is 10, Text() is '(', type is FPAREN_OPEN
-indent_text : orig line is 5, orig col is 10, Text() '(', type is FPAREN_OPEN, PRE is false
-indent_text : orig line is 5, orig col is 10, column is 26, for '('
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 5, orig col is 10, Text() is '(', type is FPAREN_OPEN
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 3, ...indent is 27
-indent_text : frm.pse_tos is 3, ...indent is 27
-indent_text : frm.pse_tos is 3, ...indent_tmp is 27
-indent_text : pc orig line is 5, orig col is 11, Text() is 'n', type is WORD
-indent_text : orig line is 5, orig col is 11, Text() 'n', type is WORD, PRE is false
-indent_text : orig line is 5, orig col is 11, column is 27, for 'n'
- []
-indent_text : frm.pse_tos is 3, ...indent_tmp is 27
-indent_text : frm.pse_tos is 3, ...indent_tmp is 27
-indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : orig line is 5, orig col is 12, Text() ')', type is FPAREN_CLOSE, PRE is false
-indent_text : orig line is 5, orig col is 12, column is 28, for ')'
- []
-indent_text : frm.pse_tos is 3, ...indent_tmp is 27
-indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 5, orig col is 13, Text() is '', type is NEWLINE
-indent_text : orig line is 5, orig col is 13, <Newline>, PRE is false
-indent_text : orig line is 5, <Newline>
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 5, orig col is 13, Text() is '', type is NEWLINE
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 2, ...indent is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 6, orig col is 1, Text() is '{', type is BRACE_OPEN
-indent_text : orig line is 6, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
-indent_text : orig line is 6, orig col is 1, column is 9, for '{'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 6, orig col is 1, Text() is '{', type is BRACE_OPEN
-indent_text : pc orig line is 6, orig col is 1, Text() is '{', type is BRACE_OPEN
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 2, ... indent is 17
-indent_text : orig line is 6, orig col is 1, Text() is '{', parent type is FUNC_CLASS_DEF
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-reindent_line : orig line is 6, orig col is 1, on '{' [BRACE_OPEN/FUNC_CLASS_DEF] => 9
- [CallStack]
-indent_text : pc orig line is 6, orig col is 2, Text() is '', type is NEWLINE
-indent_text : orig line is 6, orig col is 2, <Newline>, PRE is false
-indent_text : orig line is 6, <Newline>
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 2, ...indent is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 7, orig col is 1, Text() is '}', type is BRACE_CLOSE
-indent_text : orig line is 7, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
-indent_text : orig line is 7, orig col is 1, column is 9, for '}'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 7, orig col is 1, Text() is '}', type is BRACE_CLOSE
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 7, orig col is 1, Text() is '}', type is BRACE_CLOSE
-reindent_line : orig line is 7, orig col is 1, on '}' [BRACE_CLOSE/FUNC_CLASS_DEF] => 9
- [CallStack]
-indent_text : pc orig line is 7, orig col is 2, Text() is '', type is NEWLINE
-indent_text : orig line is 7, orig col is 2, <Newline>, PRE is false
-indent_text : orig line is 7, <Newline>
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 9, orig col is 1, Text() is '~', type is DESTRUCTOR
-indent_text : orig line is 9, orig col is 1, Text() '~', type is DESTRUCTOR, PRE is false
-indent_text : orig line is 9, orig col is 1, column is 9, for '~'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-reindent_line : orig line is 9, orig col is 1, on '~' [DESTRUCTOR/FUNC_CLASS_DEF] => 9
- [CallStack]
-indent_text : pc orig line is 9, orig col is 2, Text() is 'TelegramIndex', type is FUNC_CLASS_DEF
-indent_text : orig line is 9, orig col is 2, Text() 'TelegramIndex', type is FUNC_CLASS_DEF, PRE is false
-indent_text : orig line is 9, orig col is 2, column is 10, for 'TelegramIndex'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 9, orig col is 15, Text() is '(', type is FPAREN_OPEN
-indent_text : orig line is 9, orig col is 15, Text() '(', type is FPAREN_OPEN, PRE is false
-indent_text : orig line is 9, orig col is 15, column is 23, for '('
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 2, ...indent is 24
-indent_text : frm.pse_tos is 2, ...indent is 24
-indent_text : frm.pse_tos is 2, ...indent_tmp is 24
-indent_text : pc orig line is 9, orig col is 16, Text() is ')', type is FPAREN_CLOSE
-indent_text : orig line is 9, orig col is 16, Text() ')', type is FPAREN_CLOSE, PRE is false
-indent_text : orig line is 9, orig col is 16, column is 24, for ')'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 24
-indent_text : pc orig line is 9, orig col is 16, Text() is ')', type is FPAREN_CLOSE
-indent_text : pc orig line is 9, orig col is 16, Text() is ')', type is FPAREN_CLOSE
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 9, orig col is 17, Text() is '', type is NEWLINE
-indent_text : orig line is 9, orig col is 17, <Newline>, PRE is false
-indent_text : orig line is 9, <Newline>
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 10, orig col is 1, Text() is '{', type is BRACE_OPEN
-indent_text : orig line is 10, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
-indent_text : orig line is 10, orig col is 1, column is 9, for '{'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 2, ... indent is 17
-indent_text : orig line is 10, orig col is 1, Text() is '{', parent type is FUNC_CLASS_DEF
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-reindent_line : orig line is 10, orig col is 1, on '{' [BRACE_OPEN/FUNC_CLASS_DEF] => 9
- [CallStack]
-indent_text : pc orig line is 10, orig col is 2, Text() is '', type is NEWLINE
-indent_text : orig line is 10, orig col is 2, <Newline>, PRE is false
-indent_text : orig line is 10, <Newline>
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : frm.pse_tos is 2, ...indent is 17
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 11, orig col is 1, Text() is '}', type is BRACE_CLOSE
-indent_text : orig line is 11, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
-indent_text : orig line is 11, orig col is 1, column is 9, for '}'
- []
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 11, orig col is 1, Text() is '}', type is BRACE_CLOSE
-indent_text : frm.pse_tos is 2, ...indent_tmp is 17
-indent_text : pc orig line is 11, orig col is 1, Text() is '}', type is BRACE_CLOSE
-reindent_line : orig line is 11, orig col is 1, on '}' [BRACE_CLOSE/FUNC_CLASS_DEF] => 9
- [CallStack]
-indent_text : pc orig line is 11, orig col is 2, Text() is '', type is NEWLINE
-indent_text : orig line is 11, orig col is 2, <Newline>, PRE is false
-indent_text : orig line is 11, <Newline>
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 13, orig col is 1, Text() is 'const', type is QUALIFIER
-indent_text : orig line is 13, orig col is 1, Text() 'const', type is QUALIFIER, PRE is false
-indent_text : orig line is 13, orig col is 1, column is 9, for 'const'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-reindent_line : orig line is 13, orig col is 1, on 'const' [QUALIFIER/NONE] => 9
- [CallStack]
-indent_text : pc orig line is 13, orig col is 7, Text() is 'char', type is TYPE
-indent_text : orig line is 13, orig col is 7, Text() 'char', type is TYPE, PRE is false
-indent_text : orig line is 13, orig col is 7, column is 15, for 'char'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 13, orig col is 11, Text() is '*', type is PTR_TYPE
-indent_text : orig line is 13, orig col is 11, Text() '*', type is PTR_TYPE, PRE is false
-indent_text : orig line is 13, orig col is 11, column is 19, for '*'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 13, orig col is 13, Text() is 'const', type is QUALIFIER
-indent_text : orig line is 13, orig col is 13, Text() 'const', type is QUALIFIER, PRE is false
-indent_text : orig line is 13, orig col is 13, column is 21, for 'const'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 13, orig col is 19, Text() is 'pTelName', type is WORD
-indent_text : orig line is 13, orig col is 19, Text() 'pTelName', type is WORD, PRE is false
-indent_text : orig line is 13, orig col is 19, column is 27, for 'pTelName'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 13, orig col is 27, Text() is ';', type is SEMICOLON
-indent_text : orig line is 13, orig col is 27, Text() ';', type is SEMICOLON, PRE is false
-indent_text : orig line is 13, orig col is 27, column is 35, for ';'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 13, orig col is 28, Text() is '', type is NEWLINE
-indent_text : orig line is 13, orig col is 28, <Newline>, PRE is false
-indent_text : orig line is 13, <Newline>
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 14, orig col is 1, Text() is 'unsigned', type is TYPE
-indent_text : orig line is 14, orig col is 1, Text() 'unsigned', type is TYPE, PRE is false
-indent_text : orig line is 14, orig col is 1, column is 9, for 'unsigned'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-reindent_line : orig line is 14, orig col is 1, on 'unsigned' [TYPE/NONE] => 9
- [CallStack]
-indent_text : pc orig line is 14, orig col is 10, Text() is 'long', type is TYPE
-indent_text : orig line is 14, orig col is 10, Text() 'long', type is TYPE, PRE is false
-indent_text : orig line is 14, orig col is 10, column is 18, for 'long'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 14, orig col is 15, Text() is 'nTelIndex', type is WORD
-indent_text : orig line is 14, orig col is 15, Text() 'nTelIndex', type is WORD, PRE is false
-indent_text : orig line is 14, orig col is 15, column is 23, for 'nTelIndex'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 14, orig col is 24, Text() is ';', type is SEMICOLON
-indent_text : orig line is 14, orig col is 24, Text() ';', type is SEMICOLON, PRE is false
-indent_text : orig line is 14, orig col is 24, column is 32, for ';'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 14, orig col is 25, Text() is '', type is NEWLINE
-indent_text : orig line is 14, orig col is 25, <Newline>, PRE is false
-indent_text : orig line is 14, <Newline>
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : frm.pse_tos is 1, ...indent is 9
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 15, orig col is 1, Text() is '}', type is BRACE_CLOSE
-indent_text : orig line is 15, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
-indent_text : orig line is 15, orig col is 1, column is 1, for '}'
- []
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 15, orig col is 1, Text() is '}', type is BRACE_CLOSE
-indent_text : frm.pse_tos is 1, ...indent_tmp is 9
-indent_text : pc orig line is 15, orig col is 1, Text() is '}', type is BRACE_CLOSE
-reindent_line : orig line is 15, orig col is 1, on '}' [BRACE_CLOSE/STRUCT] => 1
- [CallStack]
-indent_text : pc orig line is 15, orig col is 2, Text() is ';', type is SEMICOLON
-indent_text : orig line is 15, orig col is 2, Text() ';', type is SEMICOLON, PRE is false
-indent_text : orig line is 15, orig col is 2, column is 2, for ';'
- []
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 15, orig col is 2, Text() is ';', type is SEMICOLON
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 15, orig col is 3, Text() is '', type is NEWLINE
-indent_text : orig line is 15, orig col is 3, <Newline>, PRE is false
-indent_text : orig line is 15, <Newline>
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 15, orig col is 3, Text() is '', type is NEWLINE
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : frm.pse_tos is 0, ...indent is 1
-indent_text : frm.pse_tos is 0, ...indent_tmp is 1
-indent_text : pc orig line is 0, orig col is 0, Text() is '', type is NONE
-indent_text : before quick_align_again
-indent_text : after quick_align_again
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/66.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/66.txt
deleted file mode 100644
index 237507e0..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/66.txt
+++ /dev/null
@@ -1,800 +0,0 @@
-space_text : orig line is 1, orig col is 1, 'struct' type is STRUCT
-space_text : back-to-back words need a space: pc->Text() 'struct', next->Text() 'TelegramIndex'
-space_text : orig line is 1, orig col is 1, pc-Text() 'struct', type is STRUCT
-do_space : orig line is 1, orig col is 1, first Text() 'struct', type is STRUCT
-do_space : first orig line is 1, orig col is 1, Text() is 'struct', [STRUCT/NONE] <===>
- second orig line is 1, orig col is 8, Text() is 'TelegramIndex', [TYPE/STRUCT] : rule ADD from add_space_table[ ]
-ensure_force_space : <force between 'struct' and 'TelegramIndex'>
-space_text : orig line is 1, orig col is 1, pc-Text() 'struct', type is STRUCT
-space_text : rule = ADD @ 1 => 8
-space_text : orig line is 1, orig col is 8, 'TelegramIndex' type is TYPE
-space_text : orig line is 1, orig col is 8, pc-Text() 'TelegramIndex', type is TYPE
-do_space : orig line is 1, orig col is 8, first Text() 'TelegramIndex', type is TYPE
-space_text : orig line is 1, orig col is 8, pc-Text() 'TelegramIndex', type is TYPE
-space_text : rule = REMOVE @ 0 => 21
-space_text : orig line is 1, orig col is 21, <Newline>, nl is 1
-space_text : orig line is 2, orig col is 1, '{' type is BRACE_OPEN
-space_text : orig line is 2, orig col is 1, pc-Text() '{', type is BRACE_OPEN
-do_space : orig line is 2, orig col is 1, first Text() '{', type is BRACE_OPEN
-space_text : orig line is 2, orig col is 1, pc-Text() '{', type is BRACE_OPEN
-space_text : rule = REMOVE @ 0 => 2
-space_text : orig line is 2, orig col is 2, <Newline>, nl is 1
-space_text : orig line is 3, orig col is 1, 'TelegramIndex' type is FUNC_CLASS_DEF
-space_text : orig line is 3, orig col is 1, pc-Text() 'TelegramIndex', type is FUNC_CLASS_DEF
-do_space : orig line is 3, orig col is 1, first Text() 'TelegramIndex', type is FUNC_CLASS_DEF
-do_space : first orig line is 3, orig col is 1, Text() is 'TelegramIndex', [FUNC_CLASS_DEF/NONE] <===>
- second orig line is 3, orig col is 14, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] : rule sp_func_class_paren[ ]
-space_text : orig line is 3, orig col is 1, pc-Text() 'TelegramIndex', type is FUNC_CLASS_DEF
-space_text : rule = IGNORE @ 0 => 14
-space_text : orig line is 3, orig col is 14, '(' type is FPAREN_OPEN
-space_text : orig line is 3, orig col is 14, pc-Text() '(', type is FPAREN_OPEN
-do_space : orig line is 3, orig col is 14, first Text() '(', type is FPAREN_OPEN
-do_space : first orig line is 3, orig col is 14, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] <===>
- second orig line is 3, orig col is 15, Text() is 'const', [QUALIFIER/NONE] : rule sp_inside_fparen[ ]
-space_text : orig line is 3, orig col is 14, pc-Text() '(', type is FPAREN_OPEN
-space_text : rule = IGNORE @ 0 => 15
-space_text : orig line is 3, orig col is 15, 'const' type is QUALIFIER
-space_text : back-to-back words need a space: pc->Text() 'const', next->Text() 'char'
-space_text : orig line is 3, orig col is 15, pc-Text() 'const', type is QUALIFIER
-do_space : orig line is 3, orig col is 15, first Text() 'const', type is QUALIFIER
-do_space : first orig line is 3, orig col is 15, Text() is 'const', [QUALIFIER/NONE] <===>
- second orig line is 3, orig col is 21, Text() is 'char', [TYPE/NONE] : rule sp_after_type[ ]
-ensure_force_space : <force between 'const' and 'char'>
-space_text : orig line is 3, orig col is 15, pc-Text() 'const', type is QUALIFIER
-space_text : rule = FORCE @ 1 => 21
-space_text : orig line is 3, orig col is 21, 'char' type is TYPE
-space_text : orig line is 3, orig col is 21, pc-Text() 'char', type is TYPE
-do_space : orig line is 3, orig col is 21, first Text() 'char', type is TYPE
-do_space : first orig line is 3, orig col is 21, Text() is 'char', [TYPE/NONE] <===>
- second orig line is 3, orig col is 25, Text() is '*', [PTR_TYPE/NONE] : rule IGNORE[ ]
-space_text : orig line is 3, orig col is 21, pc-Text() 'char', type is TYPE
-space_text : rule = IGNORE @ 0 => 25
-space_text : orig line is 3, orig col is 25, '*' type is PTR_TYPE
-space_text : orig line is 3, orig col is 25, pc-Text() '*', type is PTR_TYPE
-do_space : orig line is 3, orig col is 25, first Text() '*', type is PTR_TYPE
-do_space : first orig line is 3, orig col is 25, Text() is '*', [PTR_TYPE/NONE] <===>
- second orig line is 3, orig col is 27, Text() is 'pN', [WORD/NONE] : rule sp_after_ptr_star[ ]
-space_text : orig line is 3, orig col is 25, pc-Text() '*', type is PTR_TYPE
-space_text : rule = IGNORE @ 1 => 27
-space_text : orig line is 3, orig col is 27, 'pN' type is WORD
-space_text : orig line is 3, orig col is 27, pc-Text() 'pN', type is WORD
-do_space : orig line is 3, orig col is 27, first Text() 'pN', type is WORD
-do_space : first orig line is 3, orig col is 27, Text() is 'pN', [WORD/NONE] <===>
- second orig line is 3, orig col is 29, Text() is ',', [COMMA/NONE] : rule sp_before_comma[ ]
-space_text : orig line is 3, orig col is 27, pc-Text() 'pN', type is WORD
-space_text : rule = REMOVE @ 0 => 29
-space_text : orig line is 3, orig col is 29, ',' type is COMMA
-space_text : orig line is 3, orig col is 29, pc-Text() ',', type is COMMA
-do_space : orig line is 3, orig col is 29, first Text() ',', type is COMMA
-do_space : first orig line is 3, orig col is 29, Text() is ',', [COMMA/NONE] <===>
- second orig line is 3, orig col is 31, Text() is 'unsigned', [TYPE/NONE] : rule sp_after_comma[ ]
-space_text : orig line is 3, orig col is 29, pc-Text() ',', type is COMMA
-space_text : rule = IGNORE @ 1 => 31
-space_text : orig line is 3, orig col is 31, 'unsigned' type is TYPE
-space_text : back-to-back words need a space: pc->Text() 'unsigned', next->Text() 'long'
-space_text : orig line is 3, orig col is 31, pc-Text() 'unsigned', type is TYPE
-do_space : orig line is 3, orig col is 31, first Text() 'unsigned', type is TYPE
-do_space : first orig line is 3, orig col is 31, Text() is 'unsigned', [TYPE/NONE] <===>
- second orig line is 3, orig col is 40, Text() is 'long', [TYPE/NONE] : rule sp_after_type[ ]
-ensure_force_space : <force between 'unsigned' and 'long'>
-space_text : orig line is 3, orig col is 31, pc-Text() 'unsigned', type is TYPE
-space_text : rule = FORCE @ 1 => 40
-space_text : orig line is 3, orig col is 40, 'long' type is TYPE
-space_text : back-to-back words need a space: pc->Text() 'long', next->Text() 'nI'
-space_text : orig line is 3, orig col is 40, pc-Text() 'long', type is TYPE
-do_space : orig line is 3, orig col is 40, first Text() 'long', type is TYPE
-do_space : first orig line is 3, orig col is 40, Text() is 'long', [TYPE/NONE] <===>
- second orig line is 3, orig col is 45, Text() is 'nI', [WORD/NONE] : rule sp_after_type[ ]
-ensure_force_space : <force between 'long' and 'nI'>
-space_text : orig line is 3, orig col is 40, pc-Text() 'long', type is TYPE
-space_text : rule = FORCE @ 1 => 45
-space_text : orig line is 3, orig col is 45, 'nI' type is WORD
-space_text : orig line is 3, orig col is 45, pc-Text() 'nI', type is WORD
-do_space : orig line is 3, orig col is 45, first Text() 'nI', type is WORD
-do_space : first orig line is 3, orig col is 45, Text() is 'nI', [WORD/NONE] <===>
- second orig line is 3, orig col is 47, Text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] : rule sp_inside_fparen[ ]
-space_text : orig line is 3, orig col is 45, pc-Text() 'nI', type is WORD
-space_text : rule = IGNORE @ 0 => 47
-space_text : orig line is 3, orig col is 47, ')' type is FPAREN_CLOSE
-space_text : orig line is 3, orig col is 47, pc-Text() ')', type is FPAREN_CLOSE
-do_space : orig line is 3, orig col is 47, first Text() ')', type is FPAREN_CLOSE
-do_space : first orig line is 3, orig col is 47, Text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] <===>
- second orig line is 3, orig col is 49, Text() is ':', [CONSTR_COLON/NONE] : rule sp_before_constr_colon[ ]
-space_text : orig line is 3, orig col is 47, pc-Text() ')', type is FPAREN_CLOSE
-space_text : rule = ADD @ 1 => 49
-space_text : orig line is 3, orig col is 49, ':' type is CONSTR_COLON
-space_text : orig line is 3, orig col is 49, pc-Text() ':', type is CONSTR_COLON
-do_space : orig line is 3, orig col is 49, first Text() ':', type is CONSTR_COLON
-space_text : orig line is 3, orig col is 49, pc-Text() ':', type is CONSTR_COLON
-space_text : rule = REMOVE @ 0 => 50
-space_text : orig line is 3, orig col is 50, <Newline>, nl is 1
-space_text : orig line is 4, orig col is 1, 'pTelName' type is FUNC_CTOR_VAR
-space_text : orig line is 4, orig col is 1, pc-Text() 'pTelName', type is FUNC_CTOR_VAR
-do_space : orig line is 4, orig col is 1, first Text() 'pTelName', type is FUNC_CTOR_VAR
-do_space : first orig line is 4, orig col is 1, Text() is 'pTelName', [FUNC_CTOR_VAR/NONE] <===>
- second orig line is 4, orig col is 9, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] : rule sp_func_call_paren[ ]
-space_text : orig line is 4, orig col is 1, pc-Text() 'pTelName', type is FUNC_CTOR_VAR
-space_text : rule = IGNORE @ 0 => 9
-space_text : orig line is 4, orig col is 9, '(' type is FPAREN_OPEN
-space_text : orig line is 4, orig col is 9, pc-Text() '(', type is FPAREN_OPEN
-do_space : orig line is 4, orig col is 9, first Text() '(', type is FPAREN_OPEN
-do_space : first orig line is 4, orig col is 9, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] <===>
- second orig line is 4, orig col is 10, Text() is 'pN', [WORD/NONE] : rule sp_inside_fparen[ ]
-space_text : orig line is 4, orig col is 9, pc-Text() '(', type is FPAREN_OPEN
-space_text : rule = IGNORE @ 0 => 10
-space_text : orig line is 4, orig col is 10, 'pN' type is WORD
-space_text : orig line is 4, orig col is 10, pc-Text() 'pN', type is WORD
-do_space : orig line is 4, orig col is 10, first Text() 'pN', type is WORD
-do_space : first orig line is 4, orig col is 10, Text() is 'pN', [WORD/NONE] <===>
- second orig line is 4, orig col is 12, Text() is ')', [FPAREN_CLOSE/FUNC_CTOR_VAR] : rule sp_inside_fparen[ ]
-space_text : orig line is 4, orig col is 10, pc-Text() 'pN', type is WORD
-space_text : rule = IGNORE @ 0 => 12
-space_text : orig line is 4, orig col is 12, ')' type is FPAREN_CLOSE
-space_text : orig line is 4, orig col is 12, pc-Text() ')', type is FPAREN_CLOSE
-do_space : orig line is 4, orig col is 12, first Text() ')', type is FPAREN_CLOSE
-do_space : first orig line is 4, orig col is 12, Text() is ')', [FPAREN_CLOSE/FUNC_CTOR_VAR] <===>
- second orig line is 4, orig col is 13, Text() is ',', [COMMA/NONE] : rule sp_before_comma[ ]
-space_text : orig line is 4, orig col is 12, pc-Text() ')', type is FPAREN_CLOSE
-space_text : rule = REMOVE @ 0 => 13
-space_text : orig line is 4, orig col is 13, ',' type is COMMA
-space_text : orig line is 4, orig col is 13, pc-Text() ',', type is COMMA
-do_space : orig line is 4, orig col is 13, first Text() ',', type is COMMA
-space_text : orig line is 4, orig col is 13, pc-Text() ',', type is COMMA
-space_text : rule = REMOVE @ 0 => 14
-space_text : orig line is 4, orig col is 14, <Newline>, nl is 1
-space_text : orig line is 5, orig col is 1, 'nTelIndex' type is FUNC_CTOR_VAR
-space_text : orig line is 5, orig col is 1, pc-Text() 'nTelIndex', type is FUNC_CTOR_VAR
-do_space : orig line is 5, orig col is 1, first Text() 'nTelIndex', type is FUNC_CTOR_VAR
-do_space : first orig line is 5, orig col is 1, Text() is 'nTelIndex', [FUNC_CTOR_VAR/NONE] <===>
- second orig line is 5, orig col is 10, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] : rule sp_func_call_paren[ ]
-space_text : orig line is 5, orig col is 1, pc-Text() 'nTelIndex', type is FUNC_CTOR_VAR
-space_text : rule = IGNORE @ 0 => 10
-space_text : orig line is 5, orig col is 10, '(' type is FPAREN_OPEN
-space_text : orig line is 5, orig col is 10, pc-Text() '(', type is FPAREN_OPEN
-do_space : orig line is 5, orig col is 10, first Text() '(', type is FPAREN_OPEN
-do_space : first orig line is 5, orig col is 10, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] <===>
- second orig line is 5, orig col is 11, Text() is 'n', [WORD/NONE] : rule sp_inside_fparen[ ]
-space_text : orig line is 5, orig col is 10, pc-Text() '(', type is FPAREN_OPEN
-space_text : rule = IGNORE @ 0 => 11
-space_text : orig line is 5, orig col is 11, 'n' type is WORD
-space_text : orig line is 5, orig col is 11, pc-Text() 'n', type is WORD
-do_space : orig line is 5, orig col is 11, first Text() 'n', type is WORD
-do_space : first orig line is 5, orig col is 11, Text() is 'n', [WORD/NONE] <===>
- second orig line is 5, orig col is 12, Text() is ')', [FPAREN_CLOSE/FUNC_CTOR_VAR] : rule sp_inside_fparen[ ]
-space_text : orig line is 5, orig col is 11, pc-Text() 'n', type is WORD
-space_text : rule = IGNORE @ 0 => 12
-space_text : orig line is 5, orig col is 12, ')' type is FPAREN_CLOSE
-space_text : orig line is 5, orig col is 12, pc-Text() ')', type is FPAREN_CLOSE
-do_space : orig line is 5, orig col is 12, first Text() ')', type is FPAREN_CLOSE
-space_text : orig line is 5, orig col is 12, pc-Text() ')', type is FPAREN_CLOSE
-space_text : rule = REMOVE @ 0 => 13
-space_text : orig line is 5, orig col is 13, <Newline>, nl is 1
-space_text : orig line is 6, orig col is 1, '{' type is BRACE_OPEN
-space_text : orig line is 6, orig col is 1, pc-Text() '{', type is BRACE_OPEN
-do_space : orig line is 6, orig col is 1, first Text() '{', type is BRACE_OPEN
-space_text : orig line is 6, orig col is 1, pc-Text() '{', type is BRACE_OPEN
-space_text : rule = REMOVE @ 0 => 2
-space_text : orig line is 6, orig col is 2, <Newline>, nl is 1
-space_text : orig line is 7, orig col is 1, '}' type is BRACE_CLOSE
-space_text : orig line is 7, orig col is 1, pc-Text() '}', type is BRACE_CLOSE
-do_space : orig line is 7, orig col is 1, first Text() '}', type is BRACE_CLOSE
-space_text : orig line is 7, orig col is 1, pc-Text() '}', type is BRACE_CLOSE
-space_text : rule = REMOVE @ 0 => 2
-space_text : orig line is 7, orig col is 2, <Newline>, nl is 2
-space_text : orig line is 9, orig col is 1, '~' type is DESTRUCTOR
-space_text : orig line is 9, orig col is 1, pc-Text() '~', type is DESTRUCTOR
-do_space : orig line is 9, orig col is 1, first Text() '~', type is DESTRUCTOR
-do_space : first orig line is 9, orig col is 1, Text() is '~', [DESTRUCTOR/FUNC_CLASS_DEF] <===>
- second orig line is 9, orig col is 2, Text() is 'TelegramIndex', [FUNC_CLASS_DEF/DESTRUCTOR] : rule REMOVE[ ]
-space_text : orig line is 9, orig col is 1, pc-Text() '~', type is DESTRUCTOR
-space_text : rule = REMOVE @ 0 => 2
-space_text : orig line is 9, orig col is 2, 'TelegramIndex' type is FUNC_CLASS_DEF
-space_text : orig line is 9, orig col is 2, pc-Text() 'TelegramIndex', type is FUNC_CLASS_DEF
-do_space : orig line is 9, orig col is 2, first Text() 'TelegramIndex', type is FUNC_CLASS_DEF
-do_space : first orig line is 9, orig col is 2, Text() is 'TelegramIndex', [FUNC_CLASS_DEF/DESTRUCTOR] <===>
- second orig line is 9, orig col is 15, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] : rule sp_func_class_paren[ ]
-space_text : orig line is 9, orig col is 2, pc-Text() 'TelegramIndex', type is FUNC_CLASS_DEF
-space_text : rule = IGNORE @ 0 => 15
-space_text : orig line is 9, orig col is 15, '(' type is FPAREN_OPEN
-space_text : orig line is 9, orig col is 15, pc-Text() '(', type is FPAREN_OPEN
-do_space : orig line is 9, orig col is 15, first Text() '(', type is FPAREN_OPEN
-do_space : first orig line is 9, orig col is 15, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] <===>
- second orig line is 9, orig col is 16, Text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] : rule sp_inside_fparens[ ]
-space_text : orig line is 9, orig col is 15, pc-Text() '(', type is FPAREN_OPEN
-space_text : rule = IGNORE @ 0 => 16
-space_text : orig line is 9, orig col is 16, ')' type is FPAREN_CLOSE
-space_text : orig line is 9, orig col is 16, pc-Text() ')', type is FPAREN_CLOSE
-do_space : orig line is 9, orig col is 16, first Text() ')', type is FPAREN_CLOSE
-space_text : orig line is 9, orig col is 16, pc-Text() ')', type is FPAREN_CLOSE
-space_text : rule = REMOVE @ 0 => 17
-space_text : orig line is 9, orig col is 17, <Newline>, nl is 1
-space_text : orig line is 10, orig col is 1, '{' type is BRACE_OPEN
-space_text : orig line is 10, orig col is 1, pc-Text() '{', type is BRACE_OPEN
-do_space : orig line is 10, orig col is 1, first Text() '{', type is BRACE_OPEN
-space_text : orig line is 10, orig col is 1, pc-Text() '{', type is BRACE_OPEN
-space_text : rule = REMOVE @ 0 => 2
-space_text : orig line is 10, orig col is 2, <Newline>, nl is 1
-space_text : orig line is 11, orig col is 1, '}' type is BRACE_CLOSE
-space_text : orig line is 11, orig col is 1, pc-Text() '}', type is BRACE_CLOSE
-do_space : orig line is 11, orig col is 1, first Text() '}', type is BRACE_CLOSE
-space_text : orig line is 11, orig col is 1, pc-Text() '}', type is BRACE_CLOSE
-space_text : rule = REMOVE @ 0 => 2
-space_text : orig line is 11, orig col is 2, <Newline>, nl is 2
-space_text : orig line is 13, orig col is 1, 'const' type is QUALIFIER
-space_text : back-to-back words need a space: pc->Text() 'const', next->Text() 'char'
-space_text : orig line is 13, orig col is 1, pc-Text() 'const', type is QUALIFIER
-do_space : orig line is 13, orig col is 1, first Text() 'const', type is QUALIFIER
-do_space : first orig line is 13, orig col is 1, Text() is 'const', [QUALIFIER/NONE] <===>
- second orig line is 13, orig col is 7, Text() is 'char', [TYPE/NONE] : rule sp_after_type[ ]
-ensure_force_space : <force between 'const' and 'char'>
-space_text : orig line is 13, orig col is 1, pc-Text() 'const', type is QUALIFIER
-space_text : rule = FORCE @ 1 => 7
-space_text : orig line is 13, orig col is 7, 'char' type is TYPE
-space_text : orig line is 13, orig col is 7, pc-Text() 'char', type is TYPE
-do_space : orig line is 13, orig col is 7, first Text() 'char', type is TYPE
-do_space : first orig line is 13, orig col is 7, Text() is 'char', [TYPE/NONE] <===>
- second orig line is 13, orig col is 11, Text() is '*', [PTR_TYPE/NONE] : rule IGNORE[ ]
-space_text : orig line is 13, orig col is 7, pc-Text() 'char', type is TYPE
-space_text : rule = IGNORE @ 0 => 11
-space_text : orig line is 13, orig col is 11, '*' type is PTR_TYPE
-space_text : orig line is 13, orig col is 11, pc-Text() '*', type is PTR_TYPE
-do_space : orig line is 13, orig col is 11, first Text() '*', type is PTR_TYPE
-do_space : first orig line is 13, orig col is 11, Text() is '*', [PTR_TYPE/NONE] <===>
- second orig line is 13, orig col is 13, Text() is 'const', [QUALIFIER/NONE] : rule sp_after_ptr_star_qualifier[ ]
-space_text : orig line is 13, orig col is 11, pc-Text() '*', type is PTR_TYPE
-space_text : rule = IGNORE @ 1 => 13
-space_text : orig line is 13, orig col is 13, 'const' type is QUALIFIER
-space_text : back-to-back words need a space: pc->Text() 'const', next->Text() 'pTelName'
-space_text : orig line is 13, orig col is 13, pc-Text() 'const', type is QUALIFIER
-do_space : orig line is 13, orig col is 13, first Text() 'const', type is QUALIFIER
-do_space : first orig line is 13, orig col is 13, Text() is 'const', [QUALIFIER/NONE] <===>
- second orig line is 13, orig col is 19, Text() is 'pTelName', [WORD/NONE] : rule sp_after_type[ ]
-ensure_force_space : <force between 'const' and 'pTelName'>
-space_text : orig line is 13, orig col is 13, pc-Text() 'const', type is QUALIFIER
-space_text : rule = FORCE @ 1 => 19
-space_text : orig line is 13, orig col is 19, 'pTelName' type is WORD
-space_text : orig line is 13, orig col is 19, pc-Text() 'pTelName', type is WORD
-do_space : orig line is 13, orig col is 19, first Text() 'pTelName', type is WORD
-do_space : first orig line is 13, orig col is 19, Text() is 'pTelName', [WORD/NONE] <===>
- second orig line is 13, orig col is 27, Text() is ';', [SEMICOLON/NONE] : rule sp_before_semi[ ]
-space_text : orig line is 13, orig col is 19, pc-Text() 'pTelName', type is WORD
-space_text : rule = REMOVE @ 0 => 27
-space_text : orig line is 13, orig col is 27, ';' type is SEMICOLON
-space_text : orig line is 13, orig col is 27, pc-Text() ';', type is SEMICOLON
-do_space : orig line is 13, orig col is 27, first Text() ';', type is SEMICOLON
-space_text : orig line is 13, orig col is 27, pc-Text() ';', type is SEMICOLON
-space_text : rule = REMOVE @ 0 => 28
-space_text : orig line is 13, orig col is 28, <Newline>, nl is 1
-space_text : orig line is 14, orig col is 1, 'unsigned' type is TYPE
-space_text : back-to-back words need a space: pc->Text() 'unsigned', next->Text() 'long'
-space_text : orig line is 14, orig col is 1, pc-Text() 'unsigned', type is TYPE
-do_space : orig line is 14, orig col is 1, first Text() 'unsigned', type is TYPE
-do_space : first orig line is 14, orig col is 1, Text() is 'unsigned', [TYPE/NONE] <===>
- second orig line is 14, orig col is 10, Text() is 'long', [TYPE/NONE] : rule sp_after_type[ ]
-ensure_force_space : <force between 'unsigned' and 'long'>
-space_text : orig line is 14, orig col is 1, pc-Text() 'unsigned', type is TYPE
-space_text : rule = FORCE @ 1 => 10
-space_text : orig line is 14, orig col is 10, 'long' type is TYPE
-space_text : back-to-back words need a space: pc->Text() 'long', next->Text() 'nTelIndex'
-space_text : orig line is 14, orig col is 10, pc-Text() 'long', type is TYPE
-do_space : orig line is 14, orig col is 10, first Text() 'long', type is TYPE
-do_space : first orig line is 14, orig col is 10, Text() is 'long', [TYPE/NONE] <===>
- second orig line is 14, orig col is 15, Text() is 'nTelIndex', [WORD/NONE] : rule sp_after_type[ ]
-ensure_force_space : <force between 'long' and 'nTelIndex'>
-space_text : orig line is 14, orig col is 10, pc-Text() 'long', type is TYPE
-space_text : rule = FORCE @ 1 => 15
-space_text : orig line is 14, orig col is 15, 'nTelIndex' type is WORD
-space_text : orig line is 14, orig col is 15, pc-Text() 'nTelIndex', type is WORD
-do_space : orig line is 14, orig col is 15, first Text() 'nTelIndex', type is WORD
-do_space : first orig line is 14, orig col is 15, Text() is 'nTelIndex', [WORD/NONE] <===>
- second orig line is 14, orig col is 24, Text() is ';', [SEMICOLON/NONE] : rule sp_before_semi[ ]
-space_text : orig line is 14, orig col is 15, pc-Text() 'nTelIndex', type is WORD
-space_text : rule = REMOVE @ 0 => 24
-space_text : orig line is 14, orig col is 24, ';' type is SEMICOLON
-space_text : orig line is 14, orig col is 24, pc-Text() ';', type is SEMICOLON
-do_space : orig line is 14, orig col is 24, first Text() ';', type is SEMICOLON
-space_text : orig line is 14, orig col is 24, pc-Text() ';', type is SEMICOLON
-space_text : rule = REMOVE @ 0 => 25
-space_text : orig line is 14, orig col is 25, <Newline>, nl is 1
-space_text : orig line is 15, orig col is 1, '}' type is BRACE_CLOSE
-space_text : orig line is 15, orig col is 1, pc-Text() '}', type is BRACE_CLOSE
-do_space : orig line is 15, orig col is 1, first Text() '}', type is BRACE_CLOSE
-do_space : first orig line is 15, orig col is 1, Text() is '}', [BRACE_CLOSE/STRUCT] <===>
- second orig line is 15, orig col is 2, Text() is ';', [SEMICOLON/STRUCT] : rule sp_before_semi[ ]
-space_text : orig line is 15, orig col is 1, pc-Text() '}', type is BRACE_CLOSE
-space_text : rule = REMOVE @ 0 => 2
-space_text : orig line is 15, orig col is 2, ';' type is SEMICOLON
-space_text : orig line is 15, orig col is 2, pc-Text() ';', type is SEMICOLON
-do_space : orig line is 15, orig col is 2, first Text() ';', type is SEMICOLON
-space_text : orig line is 15, orig col is 2, pc-Text() ';', type is SEMICOLON
-space_text : rule = REMOVE @ 0 => 3
-space_text : orig line is 15, orig col is 3, <Newline>, nl is 2
-space_col_align : first orig line is 3, orig col is 1, [FUNC_CLASS_DEF/NONE], Text() 'TelegramIndex' <==>
-space_col_align : second orig line is 3, orig col is 14 [FPAREN_OPEN/FUNC_CLASS_DEF], Text() '(', [CallStack]
-do_space : orig line is 3, orig col is 1, first Text() 'TelegramIndex', type is FUNC_CLASS_DEF
-do_space : first orig line is 3, orig col is 1, Text() is 'TelegramIndex', [FUNC_CLASS_DEF/NONE] <===>
- second orig line is 3, orig col is 14, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] : rule sp_func_class_paren[ ]
-space_col_align : av is ignore
-space_col_align : Len is 13
-space_col_align : => coldiff is 13
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 3
-space_col_align : => second orig line is 3
-space_col_align : => first Text() is 'TelegramIndex'
-space_col_align : => second Text() is '('
-space_col_align : => first orig col is 1
-space_col_align : => second orig col is 14
-space_col_align : => first Len() is 13
-space_col_align : => coldiff is 13
-space_col_align : first orig line is 3, orig col is 14, [FPAREN_OPEN/FUNC_CLASS_DEF], Text() '(' <==>
-space_col_align : second orig line is 3, orig col is 15 [QUALIFIER/NONE], Text() 'const', [CallStack]
-do_space : orig line is 3, orig col is 14, first Text() '(', type is FPAREN_OPEN
-do_space : first orig line is 3, orig col is 14, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] <===>
- second orig line is 3, orig col is 15, Text() is 'const', [QUALIFIER/NONE] : rule sp_inside_fparen[ ]
-space_col_align : av is ignore
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 3
-space_col_align : => second orig line is 3
-space_col_align : => first Text() is '('
-space_col_align : => second Text() is 'const'
-space_col_align : => first orig col is 14
-space_col_align : => second orig col is 15
-space_col_align : => first Len() is 1
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 3, orig col is 15, [QUALIFIER/NONE], Text() 'const' <==>
-space_col_align : second orig line is 3, orig col is 21 [TYPE/NONE], Text() 'char', [CallStack]
-do_space : orig line is 3, orig col is 15, first Text() 'const', type is QUALIFIER
-do_space : first orig line is 3, orig col is 15, Text() is 'const', [QUALIFIER/NONE] <===>
- second orig line is 3, orig col is 21, Text() is 'char', [TYPE/NONE] : rule sp_after_type[ ]
-ensure_force_space : <force between 'const' and 'char'>
-space_col_align : av is force
-space_col_align : Len is 5
-space_col_align : => coldiff is 5
-space_col_align : => av is FORCE
-space_col_align : => coldiff is 6
-space_col_align : first orig line is 3, orig col is 21, [TYPE/NONE], Text() 'char' <==>
-space_col_align : second orig line is 3, orig col is 25 [PTR_TYPE/NONE], Text() '*', [CallStack]
-do_space : orig line is 3, orig col is 21, first Text() 'char', type is TYPE
-do_space : first orig line is 3, orig col is 21, Text() is 'char', [TYPE/NONE] <===>
- second orig line is 3, orig col is 25, Text() is '*', [PTR_TYPE/NONE] : rule IGNORE[ ]
-space_col_align : av is ignore
-space_col_align : Len is 4
-space_col_align : => coldiff is 4
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 3
-space_col_align : => second orig line is 3
-space_col_align : => first Text() is 'char'
-space_col_align : => second Text() is '*'
-space_col_align : => first orig col is 21
-space_col_align : => second orig col is 25
-space_col_align : => first Len() is 4
-space_col_align : => coldiff is 4
-space_col_align : first orig line is 3, orig col is 25, [PTR_TYPE/NONE], Text() '*' <==>
-space_col_align : second orig line is 3, orig col is 27 [WORD/NONE], Text() 'pN', [CallStack]
-do_space : orig line is 3, orig col is 25, first Text() '*', type is PTR_TYPE
-do_space : first orig line is 3, orig col is 25, Text() is '*', [PTR_TYPE/NONE] <===>
- second orig line is 3, orig col is 27, Text() is 'pN', [WORD/NONE] : rule sp_after_ptr_star[ ]
-space_col_align : av is ignore
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 3
-space_col_align : => second orig line is 3
-space_col_align : => first Text() is '*'
-space_col_align : => second Text() is 'pN'
-space_col_align : => first orig col is 25
-space_col_align : => second orig col is 27
-space_col_align : => first Len() is 1
-space_col_align : => coldiff is 2
-space_col_align : first orig line is 3, orig col is 27, [WORD/NONE], Text() 'pN' <==>
-space_col_align : second orig line is 3, orig col is 29 [COMMA/NONE], Text() ',', [CallStack]
-do_space : orig line is 3, orig col is 27, first Text() 'pN', type is WORD
-do_space : first orig line is 3, orig col is 27, Text() is 'pN', [WORD/NONE] <===>
- second orig line is 3, orig col is 29, Text() is ',', [COMMA/NONE] : rule sp_before_comma[ ]
-space_col_align : av is remove
-space_col_align : Len is 2
-space_col_align : => coldiff is 2
-space_col_align : => av is REMOVE
-space_col_align : => coldiff is 2
-space_col_align : first orig line is 3, orig col is 29, [COMMA/NONE], Text() ',' <==>
-space_col_align : second orig line is 3, orig col is 31 [TYPE/NONE], Text() 'unsigned', [CallStack]
-do_space : orig line is 3, orig col is 29, first Text() ',', type is COMMA
-do_space : first orig line is 3, orig col is 29, Text() is ',', [COMMA/NONE] <===>
- second orig line is 3, orig col is 31, Text() is 'unsigned', [TYPE/NONE] : rule sp_after_comma[ ]
-space_col_align : av is ignore
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 3
-space_col_align : => second orig line is 3
-space_col_align : => first Text() is ','
-space_col_align : => second Text() is 'unsigned'
-space_col_align : => first orig col is 29
-space_col_align : => second orig col is 31
-space_col_align : => first Len() is 1
-space_col_align : => coldiff is 2
-space_col_align : first orig line is 3, orig col is 31, [TYPE/NONE], Text() 'unsigned' <==>
-space_col_align : second orig line is 3, orig col is 40 [TYPE/NONE], Text() 'long', [CallStack]
-do_space : orig line is 3, orig col is 31, first Text() 'unsigned', type is TYPE
-do_space : first orig line is 3, orig col is 31, Text() is 'unsigned', [TYPE/NONE] <===>
- second orig line is 3, orig col is 40, Text() is 'long', [TYPE/NONE] : rule sp_after_type[ ]
-ensure_force_space : <force between 'unsigned' and 'long'>
-space_col_align : av is force
-space_col_align : Len is 8
-space_col_align : => coldiff is 8
-space_col_align : => av is FORCE
-space_col_align : => coldiff is 9
-space_col_align : first orig line is 3, orig col is 40, [TYPE/NONE], Text() 'long' <==>
-space_col_align : second orig line is 3, orig col is 45 [WORD/NONE], Text() 'nI', [CallStack]
-do_space : orig line is 3, orig col is 40, first Text() 'long', type is TYPE
-do_space : first orig line is 3, orig col is 40, Text() is 'long', [TYPE/NONE] <===>
- second orig line is 3, orig col is 45, Text() is 'nI', [WORD/NONE] : rule sp_after_type[ ]
-ensure_force_space : <force between 'long' and 'nI'>
-space_col_align : av is force
-space_col_align : Len is 4
-space_col_align : => coldiff is 4
-space_col_align : => av is FORCE
-space_col_align : => coldiff is 5
-space_col_align : first orig line is 3, orig col is 45, [WORD/NONE], Text() 'nI' <==>
-space_col_align : second orig line is 3, orig col is 47 [FPAREN_CLOSE/FUNC_CLASS_DEF], Text() ')', [CallStack]
-do_space : orig line is 3, orig col is 45, first Text() 'nI', type is WORD
-do_space : first orig line is 3, orig col is 45, Text() is 'nI', [WORD/NONE] <===>
- second orig line is 3, orig col is 47, Text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] : rule sp_inside_fparen[ ]
-space_col_align : av is ignore
-space_col_align : Len is 2
-space_col_align : => coldiff is 2
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 3
-space_col_align : => second orig line is 3
-space_col_align : => first Text() is 'nI'
-space_col_align : => second Text() is ')'
-space_col_align : => first orig col is 45
-space_col_align : => second orig col is 47
-space_col_align : => first Len() is 2
-space_col_align : => coldiff is 2
-space_col_align : first orig line is 3, orig col is 47, [FPAREN_CLOSE/FUNC_CLASS_DEF], Text() ')' <==>
-space_col_align : second orig line is 3, orig col is 49 [CONSTR_COLON/NONE], Text() ':', [CallStack]
-do_space : orig line is 3, orig col is 47, first Text() ')', type is FPAREN_CLOSE
-do_space : first orig line is 3, orig col is 47, Text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] <===>
- second orig line is 3, orig col is 49, Text() is ':', [CONSTR_COLON/NONE] : rule sp_before_constr_colon[ ]
-space_col_align : av is add
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is ADD
-space_col_align : => coldiff is 2
-space_col_align : first orig line is 3, orig col is 49, [CONSTR_COLON/NONE], Text() ':' <==>
-space_col_align : second orig line is 3, orig col is 50 [NEWLINE/NONE], Text() '', [CallStack]
-do_space : orig line is 3, orig col is 49, first Text() ':', type is CONSTR_COLON
-space_col_align : av is remove
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is REMOVE
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 4, orig col is 1, [FUNC_CTOR_VAR/NONE], Text() 'pTelName' <==>
-space_col_align : second orig line is 4, orig col is 9 [FPAREN_OPEN/FUNC_CTOR_VAR], Text() '(', [CallStack]
-do_space : orig line is 4, orig col is 1, first Text() 'pTelName', type is FUNC_CTOR_VAR
-do_space : first orig line is 4, orig col is 1, Text() is 'pTelName', [FUNC_CTOR_VAR/NONE] <===>
- second orig line is 4, orig col is 9, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] : rule sp_func_call_paren[ ]
-space_col_align : av is ignore
-space_col_align : Len is 8
-space_col_align : => coldiff is 8
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 4
-space_col_align : => second orig line is 4
-space_col_align : => first Text() is 'pTelName'
-space_col_align : => second Text() is '('
-space_col_align : => first orig col is 1
-space_col_align : => second orig col is 9
-space_col_align : => first Len() is 8
-space_col_align : => coldiff is 8
-space_col_align : first orig line is 4, orig col is 9, [FPAREN_OPEN/FUNC_CTOR_VAR], Text() '(' <==>
-space_col_align : second orig line is 4, orig col is 10 [WORD/NONE], Text() 'pN', [CallStack]
-do_space : orig line is 4, orig col is 9, first Text() '(', type is FPAREN_OPEN
-do_space : first orig line is 4, orig col is 9, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] <===>
- second orig line is 4, orig col is 10, Text() is 'pN', [WORD/NONE] : rule sp_inside_fparen[ ]
-space_col_align : av is ignore
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 4
-space_col_align : => second orig line is 4
-space_col_align : => first Text() is '('
-space_col_align : => second Text() is 'pN'
-space_col_align : => first orig col is 9
-space_col_align : => second orig col is 10
-space_col_align : => first Len() is 1
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 4, orig col is 10, [WORD/NONE], Text() 'pN' <==>
-space_col_align : second orig line is 4, orig col is 12 [FPAREN_CLOSE/FUNC_CTOR_VAR], Text() ')', [CallStack]
-do_space : orig line is 4, orig col is 10, first Text() 'pN', type is WORD
-do_space : first orig line is 4, orig col is 10, Text() is 'pN', [WORD/NONE] <===>
- second orig line is 4, orig col is 12, Text() is ')', [FPAREN_CLOSE/FUNC_CTOR_VAR] : rule sp_inside_fparen[ ]
-space_col_align : av is ignore
-space_col_align : Len is 2
-space_col_align : => coldiff is 2
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 4
-space_col_align : => second orig line is 4
-space_col_align : => first Text() is 'pN'
-space_col_align : => second Text() is ')'
-space_col_align : => first orig col is 10
-space_col_align : => second orig col is 12
-space_col_align : => first Len() is 2
-space_col_align : => coldiff is 2
-space_col_align : first orig line is 4, orig col is 12, [FPAREN_CLOSE/FUNC_CTOR_VAR], Text() ')' <==>
-space_col_align : second orig line is 4, orig col is 13 [COMMA/NONE], Text() ',', [CallStack]
-do_space : orig line is 4, orig col is 12, first Text() ')', type is FPAREN_CLOSE
-do_space : first orig line is 4, orig col is 12, Text() is ')', [FPAREN_CLOSE/FUNC_CTOR_VAR] <===>
- second orig line is 4, orig col is 13, Text() is ',', [COMMA/NONE] : rule sp_before_comma[ ]
-space_col_align : av is remove
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is REMOVE
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 4, orig col is 13, [COMMA/NONE], Text() ',' <==>
-space_col_align : second orig line is 4, orig col is 14 [NEWLINE/NONE], Text() '', [CallStack]
-do_space : orig line is 4, orig col is 13, first Text() ',', type is COMMA
-space_col_align : av is remove
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is REMOVE
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 5, orig col is 1, [FUNC_CTOR_VAR/NONE], Text() 'nTelIndex' <==>
-space_col_align : second orig line is 5, orig col is 10 [FPAREN_OPEN/FUNC_CTOR_VAR], Text() '(', [CallStack]
-do_space : orig line is 5, orig col is 1, first Text() 'nTelIndex', type is FUNC_CTOR_VAR
-do_space : first orig line is 5, orig col is 1, Text() is 'nTelIndex', [FUNC_CTOR_VAR/NONE] <===>
- second orig line is 5, orig col is 10, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] : rule sp_func_call_paren[ ]
-space_col_align : av is ignore
-space_col_align : Len is 9
-space_col_align : => coldiff is 9
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 5
-space_col_align : => second orig line is 5
-space_col_align : => first Text() is 'nTelIndex'
-space_col_align : => second Text() is '('
-space_col_align : => first orig col is 1
-space_col_align : => second orig col is 10
-space_col_align : => first Len() is 9
-space_col_align : => coldiff is 9
-space_col_align : first orig line is 5, orig col is 10, [FPAREN_OPEN/FUNC_CTOR_VAR], Text() '(' <==>
-space_col_align : second orig line is 5, orig col is 11 [WORD/NONE], Text() 'n', [CallStack]
-do_space : orig line is 5, orig col is 10, first Text() '(', type is FPAREN_OPEN
-do_space : first orig line is 5, orig col is 10, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] <===>
- second orig line is 5, orig col is 11, Text() is 'n', [WORD/NONE] : rule sp_inside_fparen[ ]
-space_col_align : av is ignore
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 5
-space_col_align : => second orig line is 5
-space_col_align : => first Text() is '('
-space_col_align : => second Text() is 'n'
-space_col_align : => first orig col is 10
-space_col_align : => second orig col is 11
-space_col_align : => first Len() is 1
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 5, orig col is 11, [WORD/NONE], Text() 'n' <==>
-space_col_align : second orig line is 5, orig col is 12 [FPAREN_CLOSE/FUNC_CTOR_VAR], Text() ')', [CallStack]
-do_space : orig line is 5, orig col is 11, first Text() 'n', type is WORD
-do_space : first orig line is 5, orig col is 11, Text() is 'n', [WORD/NONE] <===>
- second orig line is 5, orig col is 12, Text() is ')', [FPAREN_CLOSE/FUNC_CTOR_VAR] : rule sp_inside_fparen[ ]
-space_col_align : av is ignore
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 5
-space_col_align : => second orig line is 5
-space_col_align : => first Text() is 'n'
-space_col_align : => second Text() is ')'
-space_col_align : => first orig col is 11
-space_col_align : => second orig col is 12
-space_col_align : => first Len() is 1
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 5, orig col is 12, [FPAREN_CLOSE/FUNC_CTOR_VAR], Text() ')' <==>
-space_col_align : second orig line is 5, orig col is 13 [NEWLINE/NONE], Text() '', [CallStack]
-do_space : orig line is 5, orig col is 12, first Text() ')', type is FPAREN_CLOSE
-space_col_align : av is remove
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is REMOVE
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 6, orig col is 1, [BRACE_OPEN/FUNC_CLASS_DEF], Text() '{' <==>
-space_col_align : second orig line is 6, orig col is 2 [NEWLINE/NONE], Text() '', [CallStack]
-do_space : orig line is 6, orig col is 1, first Text() '{', type is BRACE_OPEN
-space_col_align : av is remove
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is REMOVE
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 7, orig col is 1, [BRACE_CLOSE/FUNC_CLASS_DEF], Text() '}' <==>
-space_col_align : second orig line is 7, orig col is 2 [NEWLINE/NONE], Text() '', [CallStack]
-do_space : orig line is 7, orig col is 1, first Text() '}', type is BRACE_CLOSE
-space_col_align : av is remove
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is REMOVE
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 9, orig col is 1, [DESTRUCTOR/FUNC_CLASS_DEF], Text() '~' <==>
-space_col_align : second orig line is 9, orig col is 2 [FUNC_CLASS_DEF/DESTRUCTOR], Text() 'TelegramIndex', [CallStack]
-do_space : orig line is 9, orig col is 1, first Text() '~', type is DESTRUCTOR
-do_space : first orig line is 9, orig col is 1, Text() is '~', [DESTRUCTOR/FUNC_CLASS_DEF] <===>
- second orig line is 9, orig col is 2, Text() is 'TelegramIndex', [FUNC_CLASS_DEF/DESTRUCTOR] : rule REMOVE[ ]
-space_col_align : av is remove
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is REMOVE
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 9, orig col is 2, [FUNC_CLASS_DEF/DESTRUCTOR], Text() 'TelegramIndex' <==>
-space_col_align : second orig line is 9, orig col is 15 [FPAREN_OPEN/FUNC_CLASS_DEF], Text() '(', [CallStack]
-do_space : orig line is 9, orig col is 2, first Text() 'TelegramIndex', type is FUNC_CLASS_DEF
-do_space : first orig line is 9, orig col is 2, Text() is 'TelegramIndex', [FUNC_CLASS_DEF/DESTRUCTOR] <===>
- second orig line is 9, orig col is 15, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] : rule sp_func_class_paren[ ]
-space_col_align : av is ignore
-space_col_align : Len is 13
-space_col_align : => coldiff is 13
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 9
-space_col_align : => second orig line is 9
-space_col_align : => first Text() is 'TelegramIndex'
-space_col_align : => second Text() is '('
-space_col_align : => first orig col is 2
-space_col_align : => second orig col is 15
-space_col_align : => first Len() is 13
-space_col_align : => coldiff is 13
-space_col_align : first orig line is 9, orig col is 15, [FPAREN_OPEN/FUNC_CLASS_DEF], Text() '(' <==>
-space_col_align : second orig line is 9, orig col is 16 [FPAREN_CLOSE/FUNC_CLASS_DEF], Text() ')', [CallStack]
-do_space : orig line is 9, orig col is 15, first Text() '(', type is FPAREN_OPEN
-do_space : first orig line is 9, orig col is 15, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] <===>
- second orig line is 9, orig col is 16, Text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] : rule sp_inside_fparens[ ]
-space_col_align : av is ignore
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 9
-space_col_align : => second orig line is 9
-space_col_align : => first Text() is '('
-space_col_align : => second Text() is ')'
-space_col_align : => first orig col is 15
-space_col_align : => second orig col is 16
-space_col_align : => first Len() is 1
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 9, orig col is 16, [FPAREN_CLOSE/FUNC_CLASS_DEF], Text() ')' <==>
-space_col_align : second orig line is 9, orig col is 17 [NEWLINE/NONE], Text() '', [CallStack]
-do_space : orig line is 9, orig col is 16, first Text() ')', type is FPAREN_CLOSE
-space_col_align : av is remove
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is REMOVE
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 10, orig col is 1, [BRACE_OPEN/FUNC_CLASS_DEF], Text() '{' <==>
-space_col_align : second orig line is 10, orig col is 2 [NEWLINE/NONE], Text() '', [CallStack]
-do_space : orig line is 10, orig col is 1, first Text() '{', type is BRACE_OPEN
-space_col_align : av is remove
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is REMOVE
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 11, orig col is 1, [BRACE_CLOSE/FUNC_CLASS_DEF], Text() '}' <==>
-space_col_align : second orig line is 11, orig col is 2 [NEWLINE/NONE], Text() '', [CallStack]
-do_space : orig line is 11, orig col is 1, first Text() '}', type is BRACE_CLOSE
-space_col_align : av is remove
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is REMOVE
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 13, orig col is 1, [QUALIFIER/NONE], Text() 'const' <==>
-space_col_align : second orig line is 13, orig col is 7 [TYPE/NONE], Text() 'char', [CallStack]
-do_space : orig line is 13, orig col is 1, first Text() 'const', type is QUALIFIER
-do_space : first orig line is 13, orig col is 1, Text() is 'const', [QUALIFIER/NONE] <===>
- second orig line is 13, orig col is 7, Text() is 'char', [TYPE/NONE] : rule sp_after_type[ ]
-ensure_force_space : <force between 'const' and 'char'>
-space_col_align : av is force
-space_col_align : Len is 5
-space_col_align : => coldiff is 5
-space_col_align : => av is FORCE
-space_col_align : => coldiff is 6
-space_col_align : first orig line is 13, orig col is 7, [TYPE/NONE], Text() 'char' <==>
-space_col_align : second orig line is 13, orig col is 11 [PTR_TYPE/NONE], Text() '*', [CallStack]
-do_space : orig line is 13, orig col is 7, first Text() 'char', type is TYPE
-do_space : first orig line is 13, orig col is 7, Text() is 'char', [TYPE/NONE] <===>
- second orig line is 13, orig col is 11, Text() is '*', [PTR_TYPE/NONE] : rule IGNORE[ ]
-space_col_align : av is ignore
-space_col_align : Len is 4
-space_col_align : => coldiff is 4
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 13
-space_col_align : => second orig line is 13
-space_col_align : => first Text() is 'char'
-space_col_align : => second Text() is '*'
-space_col_align : => first orig col is 7
-space_col_align : => second orig col is 11
-space_col_align : => first Len() is 4
-space_col_align : => coldiff is 4
-space_col_align : first orig line is 13, orig col is 11, [PTR_TYPE/NONE], Text() '*' <==>
-space_col_align : second orig line is 13, orig col is 13 [QUALIFIER/NONE], Text() 'const', [CallStack]
-do_space : orig line is 13, orig col is 11, first Text() '*', type is PTR_TYPE
-do_space : first orig line is 13, orig col is 11, Text() is '*', [PTR_TYPE/NONE] <===>
- second orig line is 13, orig col is 13, Text() is 'const', [QUALIFIER/NONE] : rule sp_after_ptr_star_qualifier[ ]
-space_col_align : av is ignore
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is IGNORE
-space_col_align : => first orig line is 13
-space_col_align : => second orig line is 13
-space_col_align : => first Text() is '*'
-space_col_align : => second Text() is 'const'
-space_col_align : => first orig col is 11
-space_col_align : => second orig col is 13
-space_col_align : => first Len() is 1
-space_col_align : => coldiff is 2
-space_col_align : first orig line is 13, orig col is 13, [QUALIFIER/NONE], Text() 'const' <==>
-space_col_align : second orig line is 13, orig col is 19 [WORD/NONE], Text() 'pTelName', [CallStack]
-do_space : orig line is 13, orig col is 13, first Text() 'const', type is QUALIFIER
-do_space : first orig line is 13, orig col is 13, Text() is 'const', [QUALIFIER/NONE] <===>
- second orig line is 13, orig col is 19, Text() is 'pTelName', [WORD/NONE] : rule sp_after_type[ ]
-ensure_force_space : <force between 'const' and 'pTelName'>
-space_col_align : av is force
-space_col_align : Len is 5
-space_col_align : => coldiff is 5
-space_col_align : => av is FORCE
-space_col_align : => coldiff is 6
-space_col_align : first orig line is 13, orig col is 19, [WORD/NONE], Text() 'pTelName' <==>
-space_col_align : second orig line is 13, orig col is 27 [SEMICOLON/NONE], Text() ';', [CallStack]
-do_space : orig line is 13, orig col is 19, first Text() 'pTelName', type is WORD
-do_space : first orig line is 13, orig col is 19, Text() is 'pTelName', [WORD/NONE] <===>
- second orig line is 13, orig col is 27, Text() is ';', [SEMICOLON/NONE] : rule sp_before_semi[ ]
-space_col_align : av is remove
-space_col_align : Len is 8
-space_col_align : => coldiff is 8
-space_col_align : => av is REMOVE
-space_col_align : => coldiff is 8
-space_col_align : first orig line is 13, orig col is 27, [SEMICOLON/NONE], Text() ';' <==>
-space_col_align : second orig line is 13, orig col is 28 [NEWLINE/NONE], Text() '', [CallStack]
-do_space : orig line is 13, orig col is 27, first Text() ';', type is SEMICOLON
-space_col_align : av is remove
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is REMOVE
-space_col_align : => coldiff is 1
-space_col_align : first orig line is 14, orig col is 1, [TYPE/NONE], Text() 'unsigned' <==>
-space_col_align : second orig line is 14, orig col is 10 [TYPE/NONE], Text() 'long', [CallStack]
-do_space : orig line is 14, orig col is 1, first Text() 'unsigned', type is TYPE
-do_space : first orig line is 14, orig col is 1, Text() is 'unsigned', [TYPE/NONE] <===>
- second orig line is 14, orig col is 10, Text() is 'long', [TYPE/NONE] : rule sp_after_type[ ]
-ensure_force_space : <force between 'unsigned' and 'long'>
-space_col_align : av is force
-space_col_align : Len is 8
-space_col_align : => coldiff is 8
-space_col_align : => av is FORCE
-space_col_align : => coldiff is 9
-space_col_align : first orig line is 14, orig col is 10, [TYPE/NONE], Text() 'long' <==>
-space_col_align : second orig line is 14, orig col is 15 [WORD/NONE], Text() 'nTelIndex', [CallStack]
-do_space : orig line is 14, orig col is 10, first Text() 'long', type is TYPE
-do_space : first orig line is 14, orig col is 10, Text() is 'long', [TYPE/NONE] <===>
- second orig line is 14, orig col is 15, Text() is 'nTelIndex', [WORD/NONE] : rule sp_after_type[ ]
-ensure_force_space : <force between 'long' and 'nTelIndex'>
-space_col_align : av is force
-space_col_align : Len is 4
-space_col_align : => coldiff is 4
-space_col_align : => av is FORCE
-space_col_align : => coldiff is 5
-space_col_align : first orig line is 14, orig col is 15, [WORD/NONE], Text() 'nTelIndex' <==>
-space_col_align : second orig line is 14, orig col is 24 [SEMICOLON/NONE], Text() ';', [CallStack]
-do_space : orig line is 14, orig col is 15, first Text() 'nTelIndex', type is WORD
-do_space : first orig line is 14, orig col is 15, Text() is 'nTelIndex', [WORD/NONE] <===>
- second orig line is 14, orig col is 24, Text() is ';', [SEMICOLON/NONE] : rule sp_before_semi[ ]
-space_col_align : av is remove
-space_col_align : Len is 9
-space_col_align : => coldiff is 9
-space_col_align : => av is REMOVE
-space_col_align : => coldiff is 9
-space_col_align : first orig line is 14, orig col is 24, [SEMICOLON/NONE], Text() ';' <==>
-space_col_align : second orig line is 14, orig col is 25 [NEWLINE/NONE], Text() '', [CallStack]
-do_space : orig line is 14, orig col is 24, first Text() ';', type is SEMICOLON
-space_col_align : av is remove
-space_col_align : Len is 1
-space_col_align : => coldiff is 1
-space_col_align : => av is REMOVE
-space_col_align : => coldiff is 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/92.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/92.txt
deleted file mode 100644
index 60a8a584..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/92.txt
+++ /dev/null
@@ -1,196 +0,0 @@
-parse_word : orig line is 1, orig col is 1, Text() is 'struct'
- type is NONE, parent type is NONE => new type is WORD
-parse_word : orig line is 1, orig col is 1, Text() is 'struct'
- type is WORD, parent type is NONE => new type is STRUCT
-parse_whitespace : orig line is 1, orig col is 7, Text() is ''
- type is NONE, parent type is NONE => new type is WHITESPACE
-parse_word : orig line is 1, orig col is 8, Text() is 'TelegramIndex'
- type is NONE, parent type is NONE => new type is WORD
-parse_whitespace : orig line is 1, orig col is 21, Text() is <Newline>
- type is NONE, parent type is NONE => new type is NEWLINE
-parse_next : orig line is 2, orig col is 1, Text() is '{'
- type is NONE, parent type is NONE => new type is BRACE_OPEN
-parse_whitespace : orig line is 2, orig col is 2, Text() is <Newline>
- type is NONE, parent type is NONE => new type is NEWLINE
-parse_word : orig line is 3, orig col is 1, Text() is 'TelegramIndex'
- type is NONE, parent type is NONE => new type is WORD
-parse_next : orig line is 3, orig col is 14, Text() is '('
- type is NONE, parent type is NONE => new type is PAREN_OPEN
-parse_word : orig line is 3, orig col is 15, Text() is 'const'
- type is NONE, parent type is NONE => new type is WORD
-parse_word : orig line is 3, orig col is 15, Text() is 'const'
- type is WORD, parent type is NONE => new type is QUALIFIER
-parse_whitespace : orig line is 3, orig col is 20, Text() is ''
- type is NONE, parent type is NONE => new type is WHITESPACE
-parse_word : orig line is 3, orig col is 21, Text() is 'char'
- type is NONE, parent type is NONE => new type is WORD
-parse_word : orig line is 3, orig col is 21, Text() is 'char'
- type is WORD, parent type is NONE => new type is TYPE
-parse_next : orig line is 3, orig col is 25, Text() is '*'
- type is NONE, parent type is NONE => new type is STAR
-parse_whitespace : orig line is 3, orig col is 26, Text() is ''
- type is NONE, parent type is NONE => new type is WHITESPACE
-parse_word : orig line is 3, orig col is 27, Text() is 'pN'
- type is NONE, parent type is NONE => new type is WORD
-parse_next : orig line is 3, orig col is 29, Text() is ','
- type is NONE, parent type is NONE => new type is COMMA
-parse_whitespace : orig line is 3, orig col is 30, Text() is ''
- type is NONE, parent type is NONE => new type is WHITESPACE
-parse_word : orig line is 3, orig col is 31, Text() is 'unsigned'
- type is NONE, parent type is NONE => new type is WORD
-parse_word : orig line is 3, orig col is 31, Text() is 'unsigned'
- type is WORD, parent type is NONE => new type is TYPE
-parse_whitespace : orig line is 3, orig col is 39, Text() is ''
- type is NONE, parent type is NONE => new type is WHITESPACE
-parse_word : orig line is 3, orig col is 40, Text() is 'long'
- type is NONE, parent type is NONE => new type is WORD
-parse_word : orig line is 3, orig col is 40, Text() is 'long'
- type is WORD, parent type is NONE => new type is TYPE
-parse_whitespace : orig line is 3, orig col is 44, Text() is ''
- type is NONE, parent type is NONE => new type is WHITESPACE
-parse_word : orig line is 3, orig col is 45, Text() is 'nI'
- type is NONE, parent type is NONE => new type is WORD
-parse_next : orig line is 3, orig col is 47, Text() is ')'
- type is NONE, parent type is NONE => new type is PAREN_CLOSE
-parse_whitespace : orig line is 3, orig col is 48, Text() is ''
- type is NONE, parent type is NONE => new type is WHITESPACE
-parse_next : orig line is 3, orig col is 49, Text() is ':'
- type is NONE, parent type is NONE => new type is COLON
-parse_whitespace : orig line is 3, orig col is 50, Text() is <Newline>
- type is NONE, parent type is NONE => new type is NEWLINE
-parse_word : orig line is 4, orig col is 1, Text() is 'pTelName'
- type is NONE, parent type is NONE => new type is WORD
-parse_next : orig line is 4, orig col is 9, Text() is '('
- type is NONE, parent type is NONE => new type is PAREN_OPEN
-parse_word : orig line is 4, orig col is 10, Text() is 'pN'
- type is NONE, parent type is NONE => new type is WORD
-parse_next : orig line is 4, orig col is 12, Text() is ')'
- type is NONE, parent type is NONE => new type is PAREN_CLOSE
-parse_next : orig line is 4, orig col is 13, Text() is ','
- type is NONE, parent type is NONE => new type is COMMA
-parse_whitespace : orig line is 4, orig col is 14, Text() is <Newline>
- type is NONE, parent type is NONE => new type is NEWLINE
-parse_word : orig line is 5, orig col is 1, Text() is 'nTelIndex'
- type is NONE, parent type is NONE => new type is WORD
-parse_next : orig line is 5, orig col is 10, Text() is '('
- type is NONE, parent type is NONE => new type is PAREN_OPEN
-parse_word : orig line is 5, orig col is 11, Text() is 'n'
- type is NONE, parent type is NONE => new type is WORD
-parse_next : orig line is 5, orig col is 12, Text() is ')'
- type is NONE, parent type is NONE => new type is PAREN_CLOSE
-parse_whitespace : orig line is 5, orig col is 13, Text() is <Newline>
- type is NONE, parent type is NONE => new type is NEWLINE
-parse_next : orig line is 6, orig col is 1, Text() is '{'
- type is NONE, parent type is NONE => new type is BRACE_OPEN
-parse_whitespace : orig line is 6, orig col is 2, Text() is <Newline>
- type is NONE, parent type is NONE => new type is NEWLINE
-parse_next : orig line is 7, orig col is 1, Text() is '}'
- type is NONE, parent type is NONE => new type is BRACE_CLOSE
-parse_whitespace : orig line is 7, orig col is 2, Text() is <Newline>
- type is NONE, parent type is NONE => new type is NEWLINE
-parse_next : orig line is 9, orig col is 1, Text() is '~'
- type is NONE, parent type is NONE => new type is INV
-parse_word : orig line is 9, orig col is 2, Text() is 'TelegramIndex'
- type is NONE, parent type is NONE => new type is WORD
-parse_next : orig line is 9, orig col is 15, Text() is '('
- type is NONE, parent type is NONE => new type is PAREN_OPEN
-parse_next : orig line is 9, orig col is 16, Text() is ')'
- type is NONE, parent type is NONE => new type is PAREN_CLOSE
-parse_whitespace : orig line is 9, orig col is 17, Text() is <Newline>
- type is NONE, parent type is NONE => new type is NEWLINE
-parse_next : orig line is 10, orig col is 1, Text() is '{'
- type is NONE, parent type is NONE => new type is BRACE_OPEN
-parse_whitespace : orig line is 10, orig col is 2, Text() is <Newline>
- type is NONE, parent type is NONE => new type is NEWLINE
-parse_next : orig line is 11, orig col is 1, Text() is '}'
- type is NONE, parent type is NONE => new type is BRACE_CLOSE
-parse_whitespace : orig line is 11, orig col is 2, Text() is <Newline>
- type is NONE, parent type is NONE => new type is NEWLINE
-parse_word : orig line is 13, orig col is 1, Text() is 'const'
- type is NONE, parent type is NONE => new type is WORD
-parse_word : orig line is 13, orig col is 1, Text() is 'const'
- type is WORD, parent type is NONE => new type is QUALIFIER
-parse_whitespace : orig line is 13, orig col is 6, Text() is ''
- type is NONE, parent type is NONE => new type is WHITESPACE
-parse_word : orig line is 13, orig col is 7, Text() is 'char'
- type is NONE, parent type is NONE => new type is WORD
-parse_word : orig line is 13, orig col is 7, Text() is 'char'
- type is WORD, parent type is NONE => new type is TYPE
-parse_next : orig line is 13, orig col is 11, Text() is '*'
- type is NONE, parent type is NONE => new type is STAR
-parse_whitespace : orig line is 13, orig col is 12, Text() is ''
- type is NONE, parent type is NONE => new type is WHITESPACE
-parse_word : orig line is 13, orig col is 13, Text() is 'const'
- type is NONE, parent type is NONE => new type is WORD
-parse_word : orig line is 13, orig col is 13, Text() is 'const'
- type is WORD, parent type is NONE => new type is QUALIFIER
-parse_whitespace : orig line is 13, orig col is 18, Text() is ''
- type is NONE, parent type is NONE => new type is WHITESPACE
-parse_word : orig line is 13, orig col is 19, Text() is 'pTelName'
- type is NONE, parent type is NONE => new type is WORD
-parse_next : orig line is 13, orig col is 27, Text() is ';'
- type is NONE, parent type is NONE => new type is SEMICOLON
-parse_whitespace : orig line is 13, orig col is 28, Text() is <Newline>
- type is NONE, parent type is NONE => new type is NEWLINE
-parse_word : orig line is 14, orig col is 1, Text() is 'unsigned'
- type is NONE, parent type is NONE => new type is WORD
-parse_word : orig line is 14, orig col is 1, Text() is 'unsigned'
- type is WORD, parent type is NONE => new type is TYPE
-parse_whitespace : orig line is 14, orig col is 9, Text() is ''
- type is NONE, parent type is NONE => new type is WHITESPACE
-parse_word : orig line is 14, orig col is 10, Text() is 'long'
- type is NONE, parent type is NONE => new type is WORD
-parse_word : orig line is 14, orig col is 10, Text() is 'long'
- type is WORD, parent type is NONE => new type is TYPE
-parse_whitespace : orig line is 14, orig col is 14, Text() is ''
- type is NONE, parent type is NONE => new type is WHITESPACE
-parse_word : orig line is 14, orig col is 15, Text() is 'nTelIndex'
- type is NONE, parent type is NONE => new type is WORD
-parse_next : orig line is 14, orig col is 24, Text() is ';'
- type is NONE, parent type is NONE => new type is SEMICOLON
-parse_whitespace : orig line is 14, orig col is 25, Text() is <Newline>
- type is NONE, parent type is NONE => new type is NEWLINE
-parse_next : orig line is 15, orig col is 1, Text() is '}'
- type is NONE, parent type is NONE => new type is BRACE_CLOSE
-parse_next : orig line is 15, orig col is 2, Text() is ';'
- type is NONE, parent type is NONE => new type is SEMICOLON
-parse_whitespace : orig line is 15, orig col is 3, Text() is <Newline>
- type is NONE, parent type is NONE => new type is NEWLINE
-tokenize_cleanup : orig line is 1, orig col is 8, Text() is 'TelegramIndex'
- type is WORD, parent type is NONE => new type is TYPE
-tokenize_cleanup : orig line is 3, orig col is 25, Text() is '*'
- type is STAR, parent type is NONE => new type is PTR_TYPE
-tokenize_cleanup : orig line is 13, orig col is 11, Text() is '*'
- type is STAR, parent type is NONE => new type is PTR_TYPE
-try_find_end_chunk : orig line is 1, orig col is 8, Text() is 'TelegramIndex'
- type is TYPE, parent type is NONE => new type is WORD
-make_type : orig line is 1, orig col is 8, Text() is 'TelegramIndex'
- type is WORD, parent type is NONE => new type is TYPE
-mark_constructors : orig line is 3, orig col is 1, Text() is 'TelegramIndex'
- type is WORD, parent type is NONE => new type is FUNC_CLASS_DEF
-flag_parens : orig line is 3, orig col is 14, Text() is '('
- type is PAREN_OPEN, parent type is NONE => new type is FPAREN_OPEN
-flag_parens : orig line is 3, orig col is 47, Text() is ')'
- type is PAREN_CLOSE, parent type is NONE => new type is FPAREN_CLOSE
-mark_cpp_constructor : orig line is 3, orig col is 49, Text() is ':'
- type is COLON, parent type is NONE => new type is CONSTR_COLON
-mark_cpp_constructor : orig line is 4, orig col is 1, Text() is 'pTelName'
- type is WORD, parent type is NONE => new type is FUNC_CTOR_VAR
-flag_parens : orig line is 4, orig col is 9, Text() is '('
- type is PAREN_OPEN, parent type is NONE => new type is FPAREN_OPEN
-flag_parens : orig line is 4, orig col is 12, Text() is ')'
- type is PAREN_CLOSE, parent type is NONE => new type is FPAREN_CLOSE
-mark_cpp_constructor : orig line is 5, orig col is 1, Text() is 'nTelIndex'
- type is WORD, parent type is NONE => new type is FUNC_CTOR_VAR
-flag_parens : orig line is 5, orig col is 10, Text() is '('
- type is PAREN_OPEN, parent type is NONE => new type is FPAREN_OPEN
-flag_parens : orig line is 5, orig col is 12, Text() is ')'
- type is PAREN_CLOSE, parent type is NONE => new type is FPAREN_CLOSE
-mark_constructors : orig line is 9, orig col is 2, Text() is 'TelegramIndex'
- type is WORD, parent type is NONE => new type is FUNC_CLASS_DEF
-mark_cpp_constructor : orig line is 9, orig col is 1, Text() is '~'
- type is INV, parent type is NONE => new type is DESTRUCTOR
-flag_parens : orig line is 9, orig col is 15, Text() is '('
- type is PAREN_OPEN, parent type is NONE => new type is FPAREN_OPEN
-flag_parens : orig line is 9, orig col is 16, Text() is ')'
- type is PAREN_CLOSE, parent type is NONE => new type is FPAREN_CLOSE
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/Debug_tracking_space.html b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/Debug_tracking_space.html
deleted file mode 100644
index 0b5786b1..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/Debug_tracking_space.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<html>
-<head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
- <title>Uncrustify: where do the Spaces options work</title>
-</head>
-<body lang="en-US">
-<p>
-</p>
-<pre>
-{<a title="REMOVE: 1"><font color="red">M</font></a>
- a<a title="sp_assign: 2"><font color="red">M</font></a>=<a title="sp_assign: 3, 86"><font color="red">M</font></a>b<a title="sp_arith: 4, 87, 93"><font color="red">M</font></a>+<a title="sp_arith: 5, 88, 94, 99"><font color="red">M</font></a>111<a title="sp_arith: 6, 89, 95, 100, 104"><font color="red">M</font></a>-<a title="sp_arith: 7, 90, 96, 101, 105, 108"><font color="red">M</font></a>55<a title="sp_before_semi: 8, 91, 97, 102, 106, 109, 111"><font color="red">M</font></a>;<a title="REMOVE: 9, 92, 98, 103, 107, 110, 112, 113"><font color="red">M</font></a>
-}<a title="REMOVE: 10"><font color="red">M</font></a>
-template<a title="sp_before_angle: 11"><font color="red">M</font></a>&lt;<a title="sp_inside_angle: 12, 114"><font color="red">M</font></a>typename<a title="ADD from add_space_table: 13, 115, 123"><font color="red">M</font></a>...<a title="sp_ellipsis_parameter_pack: 14, 116, 124, 131"><font color="red">M</font></a>A<a title="sp_before_comma: 15, 117, 125, 132, 138"><font color="red">M</font></a>,<a title="sp_after_comma: 16, 118, 126, 133, 139, 144"><font color="red">M</font></a>int<a title="sp_type_ellipsis: 17, 119, 127, 134, 140, 145, 149"><font color="red">M</font></a>...<a title="FORCE: 18, 120, 128, 135, 141, 146, 150, 153"><font color="red">M</font></a>B<a title="sp_inside_angle: 19, 121, 129, 136, 142, 147, 151, 154, 156"><font color="red">M</font></a>&gt;<a title="REMOVE: 20, 122, 130, 137, 143, 148, 152, 155, 157, 158"><font color="red">M</font></a>
-struct<a title="ADD from add_space_table: 21"><font color="red">M</font></a>foo1<a title="sp_after_type: 22, 159"><font color="red">M</font></a>:<a title="ADD from add_space_table: 23, 160, 177"><font color="red">M</font></a>foo1<a title="sp_before_angle: 24, 161, 178, 194"><font color="red">M</font></a>&lt;<a title="sp_inside_angle: 25, 162, 179, 195, 210"><font color="red">M</font></a>A<a title="sp_parameter_pack_ellipsis: 26, 163, 180, 196, 211, 225"><font color="red">M</font></a>...<a title="sp_before_comma: 27, 164, 181, 197, 212, 226, 239"><font color="red">M</font></a>,<a title="sp_after_comma: 28, 165, 182, 198, 213, 227, 240, 252"><font color="red">M</font></a>(<a title="sp_inside_paren: 29, 166, 183, 199, 214, 228, 241, 253, 264"><font color="red">M</font></a>sizeof<a title="sp_sizeof_ellipsis: 30, 167, 184, 200, 215, 229, 242, 254, 265, 275"><font color="red">M</font></a>...<a title="sp_sizeof_ellipsis_paren: 31, 168, 185, 201, 216, 230, 243, 255, 266, 276, 285"><font color="red">M</font></a>(<a title="sp_inside_paren: 32, 169, 186, 202, 217, 231, 244, 256, 267, 277, 286, 294"><font color="red">M</font></a>A<a title="sp_inside_paren: 33, 170, 187, 203, 218, 232, 245, 257, 268, 278, 287, 295, 302"><font color="red">M</font></a>)<a title="sp_arith: 34, 171, 188, 204, 219, 233, 246, 258, 269, 279, 288, 296, 303, 309"><font color="red">M</font></a>+<a title="sp_arith: 35, 172, 189, 205, 220, 234, 247, 259, 270, 280, 289, 297, 304, 310, 315"><font color="red">M</font></a>B<a title="sp_inside_paren: 36, 173, 190, 206, 221, 235, 248, 260, 271, 281, 290, 298, 305, 311, 316, 320"><font color="red">M</font></a>)<a title="sp_paren_ellipsis: 272, 324, 321, 317, 312, 306, 299, 291, 282, 37, 261, 249, 236, 222, 207, 191, 174"><font color="red">M</font></a>...<a title="sp_inside_angle: 283, 327, 325, 322, 318, 313, 307, 300, 292, 38, 273, 262, 250, 237, 223, 208, 192, 175"><font color="red">M</font></a>&gt;<a title="REMOVE: 284, 329, 328, 326, 323, 319, 314, 308, 301, 293, 39, 274, 263, 251, 238, 224, 209, 193, 176"><font color="red">M</font></a>
-{<a title="REMOVE: 40"><font color="red">M</font></a>
- foo1<a title="sp_func_class_paren: 41, 64"><font color="red">M</font></a>(<a title="sp_inside_fparens: 42, 65, 330"><font color="red">M</font></a>)<a title="sp_fparen_brace: 43, 66, 331, 333"><font color="red">M</font></a>{<a title="REMOVE: 44, 67, 332, 334, 335"><font color="red">M</font></a>
- int<a title="sp_after_type: 45, 68"><font color="red">M</font></a>x<a title="sp_assign: 46, 69, 336"><font color="red">M</font></a>=<a title="sp_assign: 47, 70, 337, 344"><font color="red">M</font></a>sizeof<a title="sp_sizeof_ellipsis: 48, 71, 338, 345, 351"><font color="red">M</font></a>...<a title="sp_sizeof_ellipsis_paren: 49, 72, 339, 346, 352, 357"><font color="red">M</font></a>(<a title="sp_inside_paren: 50, 73, 340, 347, 353, 358, 362"><font color="red">M</font></a>A<a title="sp_inside_paren: 51, 74, 341, 348, 354, 359, 363, 366"><font color="red">M</font></a>)<a title="sp_before_semi: 52, 75, 342, 349, 355, 360, 364, 367, 369"><font color="red">M</font></a>;<a title="REMOVE: 53, 76, 343, 350, 356, 361, 365, 368, 370, 371"><font color="red">M</font></a>
- bool<a title="sp_after_type: 54, 77"><font color="red">M</font></a>b<a title="sp_assign: 55, 78, 372"><font color="red">M</font></a>=<a title="sp_assign: 56, 79, 373, 378"><font color="red">M</font></a>x<a title="sp_compare: 57, 80, 374, 379, 383"><font color="red">M</font></a>><a title="sp_compare: 58, 81, 375, 380, 384, 387"><font color="red">M</font></a>1<a title="sp_before_semi: 59, 82, 376, 381, 385, 388, 390"><font color="red">M</font></a>;<a title="REMOVE: 60, 83, 377, 382, 386, 389, 391, 392"><font color="red">M</font></a>
- }<a title="REMOVE: 61, 84"><font color="red">M</font></a>
-}<a title="sp_before_semi: 62"><font color="red">M</font></a>;<a title="REMOVE: 63, 393"><font color="red">M</font></a>
-</pre>
-</body>
-</html>
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/class_enum_struct_union.csv b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/class_enum_struct_union.csv
deleted file mode 100644
index c441a593..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/class_enum_struct_union.csv
+++ /dev/null
@@ -1,685 +0,0 @@
-number of loops,1,
-language,CPP,
-Line,Tag,Parent_type,Type of the parent,Column,Orig Col Strt,Orig Col End,Orig Sp Before,Br,Lvl,pp,Flags,Nl Before,Nl After,Text,
-1,COMMENT_MULTI,COMMENT_WHOLE,PARENT_NOT_SET,1,4,7,3,0,0,0,"",9,0," /**␤ * the enum (and variable declarations thereof) could be of␤ * the following forms:␤ *␤ * ""enum type [: integral_type] { ... } [x, ...]""␤ * ""enum type [: integral_type]""␤ * ""enum class type [: integral_type] { ... } [x, ...]""␤ * ""enum class type [: integral_type]""␤ * ""enum [: integral_type] { ... } x, ...""␤ */"
-10,NEWLINE,NONE,PARENT_NOT_SET,7,7,4,0,0,0,0,"",2,0,
-12,COMMENT_MULTI,COMMENT_WHOLE,PARENT_NOT_SET,1,4,7,0,0,0,0,"",9,0," /**␤ * the class/struct (and variable declarations thereof) could be of␤ * the following forms:␤ *␤ * template<...> class/struct[<...>] [macros/attributes ...] type [: bases ...] { }␤ * template<...> class/struct[<...>] [macros/attributes ...] type␤ * class/struct[ [macros/attributes ...] type [: bases ...] { } [x, ...]␤ * class/struct [macros/attributes ...] type [x, ...]␤ * class/struct [macros/attributes ...] [: bases] { } x, ...␤ */"
-21,NEWLINE,NONE,PARENT_NOT_SET,7,7,1,0,0,0,0,"",2,0,
-23,PREPROC,PP_DEFINE,PARENT_NOT_SET,1,1,2,0,1,1,0,"IN_PREPROC,STMT_START,EXPR_START,DONT_INDENT,PUNCTUATOR",0,0," #"
-23,PP_DEFINE,NONE,PARENT_NOT_SET,2,2,8,0,1,1,0,"IN_PREPROC,FORCE_SPACE",0,0," define"
-23,MACRO_FUNC,NONE,PARENT_NOT_SET,9,9,16,1,1,1,0,"IN_PREPROC,EXPR_START",0,0," ALIGNAS"
-23,FPAREN_OPEN,MACRO_FUNC,PARENT_NOT_SET,16,16,17,0,1,1,0,"IN_PREPROC,PUNCTUATOR",0,0," ("
-23,WORD,NONE,PARENT_NOT_SET,17,17,31,0,1,2,0,"IN_PREPROC,IN_FCN_CALL,EXPR_START",0,0," byte_alignment"
-23,FPAREN_CLOSE,MACRO_FUNC,PARENT_NOT_SET,31,31,32,0,1,1,0,"IN_PREPROC,IN_FCN_CALL,PUNCTUATOR",0,0," )"
-23,ATTRIBUTE,NONE,PARENT_NOT_SET,33,33,46,1,1,1,0,"IN_PREPROC",0,0," __attribute__"
-23,FPAREN_OPEN,ATTRIBUTE,PARENT_NOT_SET,46,46,47,0,1,1,0,"IN_PREPROC,PUNCTUATOR",0,0," ("
-23,PAREN_OPEN,NONE,PARENT_NOT_SET,47,47,48,0,1,2,0,"IN_PREPROC,EXPR_START,PUNCTUATOR",0,0," ("
-23,FUNC_CALL,NONE,PARENT_NOT_SET,48,48,55,0,1,3,0,"IN_PREPROC,EXPR_START",0,0," aligned"
-23,FPAREN_OPEN,FUNC_CALL,PARENT_NOT_SET,55,55,56,0,1,3,0,"IN_PREPROC,PUNCTUATOR",0,0," ("
-23,WORD,NONE,PARENT_NOT_SET,56,56,70,0,1,4,0,"IN_PREPROC,IN_FCN_CALL,EXPR_START",0,0," byte_alignment"
-23,FPAREN_CLOSE,FUNC_CALL,PARENT_NOT_SET,70,70,71,0,1,3,0,"IN_PREPROC,IN_FCN_CALL,PUNCTUATOR",0,0," )"
-23,PAREN_CLOSE,NONE,PARENT_NOT_SET,71,71,72,0,1,2,0,"IN_PREPROC,PUNCTUATOR",0,0," )"
-23,FPAREN_CLOSE,ATTRIBUTE,PARENT_NOT_SET,72,72,73,0,1,1,0,"IN_PREPROC,PUNCTUATOR",0,0," )"
-23,NEWLINE,NONE,PARENT_NOT_SET,73,73,1,0,0,0,0,"",2,0,
-25,PREPROC,PP_IF,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_PREPROC,DONT_INDENT,PUNCTUATOR",0,0," #"
-25,PP_IF,NONE,PARENT_NOT_SET,2,2,4,0,0,0,1,"IN_PREPROC,FORCE_SPACE",0,0," if"
-25,PP_DEFINED,NONE,PARENT_NOT_SET,5,5,12,1,0,0,1,"IN_PREPROC,EXPR_START",0,0," defined"
-25,PAREN_OPEN,NONE,PARENT_NOT_SET,13,13,14,1,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," ("
-25,WORD,NONE,PARENT_NOT_SET,14,14,22,0,0,0,1,"IN_PREPROC,EXPR_START",0,0," __unix__"
-25,PAREN_CLOSE,NONE,PARENT_NOT_SET,22,22,23,0,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," )"
-25,BOOL,NONE,PARENT_NOT_SET,24,24,26,1,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," ||"
-25,PAREN_OPEN,NONE,PARENT_NOT_SET,27,27,28,1,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," ("
-25,PP_DEFINED,NONE,PARENT_NOT_SET,28,28,35,0,0,0,1,"IN_PREPROC,EXPR_START",0,0," defined"
-25,PAREN_OPEN,NONE,PARENT_NOT_SET,36,36,37,1,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," ("
-25,WORD,NONE,PARENT_NOT_SET,37,37,46,0,0,0,1,"IN_PREPROC,EXPR_START",0,0," __APPLE__"
-25,PAREN_CLOSE,NONE,PARENT_NOT_SET,46,46,47,0,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," )"
-25,BOOL,NONE,PARENT_NOT_SET,48,48,50,1,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," &&"
-25,PP_DEFINED,NONE,PARENT_NOT_SET,51,51,58,1,0,0,1,"IN_PREPROC",0,0," defined"
-25,PAREN_OPEN,NONE,PARENT_NOT_SET,59,59,60,1,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," ("
-25,WORD,NONE,PARENT_NOT_SET,60,60,68,0,0,0,1,"IN_PREPROC,EXPR_START",0,0," __MACH__"
-25,PAREN_CLOSE,NONE,PARENT_NOT_SET,68,68,69,0,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," )"
-25,PAREN_CLOSE,NONE,PARENT_NOT_SET,69,69,70,0,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," )"
-25,NEWLINE,NONE,PARENT_NOT_SET,70,70,1,0,0,0,1,"",1,0,
-26,PREPROC,PP_DEFINE,PARENT_NOT_SET,1,1,2,0,1,1,1,"IN_PREPROC,STMT_START,EXPR_START,DONT_INDENT,PUNCTUATOR",0,0," #"
-26,PP_DEFINE,NONE,PARENT_NOT_SET,2,2,8,0,1,1,1,"IN_PREPROC,FORCE_SPACE",0,0," define"
-26,MACRO,NONE,PARENT_NOT_SET,9,9,19,1,1,1,1,"IN_PREPROC,FORCE_SPACE",0,0," API_EXPORT"
-26,ATTRIBUTE,NONE,PARENT_NOT_SET,20,20,33,1,1,1,1,"IN_PREPROC,EXPR_START",0,0," __attribute__"
-26,FPAREN_OPEN,ATTRIBUTE,PARENT_NOT_SET,34,34,35,1,1,1,1,"IN_PREPROC,STMT_START,EXPR_START,PUNCTUATOR",0,0," ("
-26,PAREN_OPEN,NONE,PARENT_NOT_SET,35,35,36,0,1,2,1,"IN_PREPROC,EXPR_START,PUNCTUATOR",0,0," ("
-26,FUNC_CALL,NONE,PARENT_NOT_SET,36,36,46,0,1,3,1,"IN_PREPROC,EXPR_START",0,0," visibility"
-26,FPAREN_OPEN,FUNC_CALL,PARENT_NOT_SET,46,46,47,0,1,3,1,"IN_PREPROC,PUNCTUATOR",0,0," ("
-26,STRING,NONE,PARENT_NOT_SET,47,47,56,0,1,4,1,"IN_PREPROC,IN_FCN_CALL,EXPR_START",0,0," ""default"""
-26,FPAREN_CLOSE,FUNC_CALL,PARENT_NOT_SET,56,56,57,0,1,3,1,"IN_PREPROC,IN_FCN_CALL,PUNCTUATOR",0,0," )"
-26,PAREN_CLOSE,NONE,PARENT_NOT_SET,57,57,58,0,1,2,1,"IN_PREPROC,PUNCTUATOR",0,0," )"
-26,FPAREN_CLOSE,ATTRIBUTE,PARENT_NOT_SET,58,58,59,0,1,1,1,"IN_PREPROC,PUNCTUATOR",0,0," )"
-26,NEWLINE,NONE,PARENT_NOT_SET,59,59,1,0,0,0,1,"",1,0,
-27,PREPROC,PP_ELSE,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_PREPROC,DONT_INDENT,PUNCTUATOR",0,0," #"
-27,PP_ELSE,NONE,PP_IF,2,2,6,0,0,0,1,"IN_PREPROC,FORCE_SPACE",0,0," elif"
-27,PP_DEFINED,NONE,PARENT_NOT_SET,7,7,14,1,0,0,1,"IN_PREPROC,FORCE_SPACE,EXPR_START",0,0," defined"
-27,WORD,NONE,PARENT_NOT_SET,15,15,21,1,0,0,1,"IN_PREPROC",0,0," _WIN32"
-27,NEWLINE,NONE,PARENT_NOT_SET,21,21,1,0,0,0,1,"",1,0,
-28,PREPROC,PP_DEFINE,PARENT_NOT_SET,1,1,2,0,1,1,1,"IN_PREPROC,STMT_START,EXPR_START,DONT_INDENT,PUNCTUATOR",0,0," #"
-28,PP_DEFINE,NONE,PARENT_NOT_SET,2,2,8,0,1,1,1,"IN_PREPROC,FORCE_SPACE",0,0," define"
-28,MACRO,NONE,PARENT_NOT_SET,9,9,19,1,1,1,1,"IN_PREPROC,FORCE_SPACE",0,0," API_EXPORT"
-28,DECLSPEC,NONE,PARENT_NOT_SET,20,20,30,1,1,1,1,"IN_PREPROC,STMT_START,EXPR_START",0,0," __declspec"
-28,PAREN_OPEN,DECLSPEC,PARENT_NOT_SET,30,30,31,0,1,1,1,"IN_PREPROC,PUNCTUATOR",0,0," ("
-28,WORD,NONE,PARENT_NOT_SET,31,31,40,0,1,2,1,"IN_PREPROC,EXPR_START",0,0," dllexport"
-28,PAREN_CLOSE,DECLSPEC,PARENT_NOT_SET,40,40,41,0,1,1,1,"IN_PREPROC,PUNCTUATOR",0,0," )"
-28,NEWLINE,NONE,PARENT_NOT_SET,41,41,1,0,0,0,1,"",1,0,
-29,PREPROC,PP_ELSE,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_PREPROC,DONT_INDENT,PUNCTUATOR",0,0," #"
-29,PP_ELSE,NONE,PP_IF,2,2,6,0,0,0,1,"IN_PREPROC",0,0," else"
-29,NEWLINE,NONE,PARENT_NOT_SET,6,6,1,0,0,0,1,"",1,0,
-30,PREPROC,PP_DEFINE,PARENT_NOT_SET,1,1,2,0,1,1,1,"IN_PREPROC,STMT_START,EXPR_START,DONT_INDENT,PUNCTUATOR",0,0," #"
-30,PP_DEFINE,NONE,PARENT_NOT_SET,2,2,8,0,1,1,1,"IN_PREPROC,FORCE_SPACE",0,0," define"
-30,MACRO,NONE,PARENT_NOT_SET,9,9,19,1,1,1,1,"IN_PREPROC",0,0," API_EXPORT"
-30,NEWLINE,NONE,PARENT_NOT_SET,19,19,1,0,0,0,1,"",1,0,
-31,PREPROC,PP_ENDIF,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_PREPROC,DONT_INDENT,PUNCTUATOR",0,0," #"
-31,PP_ENDIF,NONE,PP_IF,2,2,7,0,0,0,0,"IN_PREPROC",0,0," endif"
-31,NEWLINE,NONE,PARENT_NOT_SET,7,7,1,0,0,0,0,"",2,0,
-33,NAMESPACE,NONE,PARENT_NOT_SET,1,1,10,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," namespace"
-33,WORD,NAMESPACE,PARENT_NOT_SET,11,11,26,1,0,0,0,"",0,0," outer_namespace"
-33,NEWLINE,NONE,PARENT_NOT_SET,26,26,1,0,0,0,0,"",1,0,
-34,BRACE_OPEN,NAMESPACE,PARENT_NOT_SET,1,1,2,0,0,0,0,"PUNCTUATOR",0,0," {"
-34,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,1,1,0,"IN_NAMESPACE",2,0,
-36,NAMESPACE,NONE,PARENT_NOT_SET,1,1,10,0,1,1,0,"IN_NAMESPACE,FORCE_SPACE,STMT_START,EXPR_START",0,0," namespace"
-36,WORD,NAMESPACE,PARENT_NOT_SET,11,11,26,1,1,1,0,"IN_NAMESPACE",0,0," inner_namespace"
-36,NEWLINE,NONE,PARENT_NOT_SET,26,26,1,0,1,1,0,"IN_NAMESPACE",1,0,
-37,BRACE_OPEN,NAMESPACE,PARENT_NOT_SET,1,1,2,0,1,1,0,"IN_NAMESPACE,PUNCTUATOR",0,0," {"
-37,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,2,2,0,"IN_NAMESPACE",2,0,
-39,CLASS,NONE,PARENT_NOT_SET,1,1,6,0,2,2,0,"IN_NAMESPACE,FORCE_SPACE,STMT_START,EXPR_START",0,0," class"
-39,TYPE,CLASS,PARENT_NOT_SET,7,7,12,1,2,2,0,"IN_NAMESPACE",0,0," Base1"
-39,BRACE_OPEN,CLASS,PARENT_NOT_SET,13,13,14,1,2,2,0,"IN_CLASS,IN_NAMESPACE,ONE_LINER,EMPTY_BODY,PUNCTUATOR",0,0," {"
-39,BRACE_CLOSE,CLASS,PARENT_NOT_SET,15,15,16,1,2,2,0,"IN_CLASS,IN_NAMESPACE,ONE_LINER,EMPTY_BODY,PUNCTUATOR",0,0," }"
-39,SEMICOLON,CLASS,PARENT_NOT_SET,16,16,17,0,2,2,0,"PUNCTUATOR",0,0," ;"
-39,NEWLINE,NONE,PARENT_NOT_SET,17,17,1,0,2,2,0,"",2,0,
-41,TEMPLATE,NONE,PARENT_NOT_SET,1,1,9,0,2,2,0,"STMT_START,EXPR_START",0,0," template"
-41,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,9,9,10,0,2,2,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
-41,TYPENAME,NONE,PARENT_NOT_SET,10,10,18,0,2,3,0,"IN_TEMPLATE,EXPR_START",0,0," typename"
-41,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,18,18,19,0,2,2,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
-41,CLASS,TEMPLATE,PARENT_NOT_SET,20,20,25,1,2,2,0,"FORCE_SPACE,EXPR_START",0,0," class"
-41,TYPE,CLASS,PARENT_NOT_SET,26,26,31,1,2,2,0,"",0,0," Base2"
-41,BRACE_OPEN,CLASS,PARENT_NOT_SET,32,32,33,1,2,2,0,"IN_CLASS,ONE_LINER,EMPTY_BODY,PUNCTUATOR",0,0," {"
-41,BRACE_CLOSE,CLASS,PARENT_NOT_SET,34,34,35,1,2,2,0,"IN_CLASS,ONE_LINER,EMPTY_BODY,PUNCTUATOR",0,0," }"
-41,SEMICOLON,CLASS,PARENT_NOT_SET,35,35,36,0,2,2,0,"PUNCTUATOR",0,0," ;"
-41,NEWLINE,NONE,PARENT_NOT_SET,36,36,1,0,2,2,0,"",2,0,
-43,BRACE_CLOSE,NAMESPACE,PARENT_NOT_SET,1,1,2,0,1,1,0,"PUNCTUATOR",0,0," }"
-43,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,1,1,0,"",2,0,
-45,BRACE_CLOSE,NAMESPACE,PARENT_NOT_SET,1,1,2,0,0,0,0,"PUNCTUATOR",0,0," }"
-45,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,0,0,0,"",2,0,
-47,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,82,0,0,0,0,"",0,0," // template<...> class/struct[<...>] [macros/attributes ...] type : bases ... { }"
-47,NEWLINE,NONE,PARENT_NOT_SET,82,82,1,0,0,0,0,"",1,0,
-48,TEMPLATE,NONE,PARENT_NOT_SET,1,1,9,0,0,0,0,"STMT_START,EXPR_START",0,0," template"
-48,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,9,9,10,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
-48,TYPENAME,NONE,PARENT_NOT_SET,10,10,18,0,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," typename"
-48,COMMA,NONE,PARENT_NOT_SET,18,18,19,0,0,1,0,"IN_TEMPLATE,PUNCTUATOR",0,0," ,"
-48,TYPENAME,NONE,PARENT_NOT_SET,20,20,28,1,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," typename"
-48,ELLIPSIS,NONE,PARENT_NOT_SET,29,29,32,1,0,1,0,"IN_TEMPLATE,PUNCTUATOR",0,0," ..."
-48,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,32,32,33,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
-48,NEWLINE,NONE,PARENT_NOT_SET,33,33,1,0,0,0,0,"",1,0,
-49,CLASS,TEMPLATE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,EXPR_START",0,0," class"
-49,WORD,NONE,PARENT_NOT_SET,7,7,17,1,0,0,0,"FORCE_SPACE",0,0," API_EXPORT"
-49,ATTRIBUTE,NONE,PARENT_NOT_SET,18,18,31,1,0,0,0,"",0,0," __attribute__"
-49,FPAREN_OPEN,ATTRIBUTE,PARENT_NOT_SET,31,31,32,0,0,0,0,"PUNCTUATOR",0,0," ("
-49,PAREN_OPEN,NONE,PARENT_NOT_SET,32,32,33,0,0,1,0,"EXPR_START,PUNCTUATOR",0,0," ("
-49,WORD,NONE,PARENT_NOT_SET,33,33,47,0,0,2,0,"EXPR_START",0,0," __deprecated__"
-49,PAREN_CLOSE,NONE,PARENT_NOT_SET,47,47,48,0,0,1,0,"PUNCTUATOR",0,0," )"
-49,FPAREN_CLOSE,ATTRIBUTE,PARENT_NOT_SET,48,48,49,0,0,0,0,"PUNCTUATOR",0,0," )"
-49,MACRO_FUNC_CALL,NONE,PARENT_NOT_SET,50,50,57,1,0,0,0,"",0,0," ALIGNAS"
-49,FPAREN_OPEN,MACRO_FUNC_CALL,PARENT_NOT_SET,57,57,58,0,0,0,0,"PUNCTUATOR",0,0," ("
-49,NUMBER,NONE,PARENT_NOT_SET,58,58,59,0,0,1,0,"EXPR_START",0,0," 4"
-49,FPAREN_CLOSE,MACRO_FUNC_CALL,PARENT_NOT_SET,59,59,60,0,0,0,0,"PUNCTUATOR",0,0," )"
-49,TYPE,CLASS,PARENT_NOT_SET,61,61,63,1,0,0,0,"",0,0," c1"
-49,NEWLINE,NONE,PARENT_NOT_SET,63,63,1,0,0,0,0,"",1,0,
-50,CLASS_COLON,CLASS,PARENT_NOT_SET,9,1,2,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," :"
-50,QUALIFIER,NONE,PARENT_NOT_SET,11,3,9,1,0,0,0,"IN_CLASS_BASE,FORCE_SPACE,STMT_START,EXPR_START",0,0," public"
-50,TYPE,NONE,PARENT_NOT_SET,18,10,25,1,0,0,0,"IN_CLASS_BASE",0,0," outer_namespace"
-50,DC_MEMBER,NONE,PARENT_NOT_SET,33,25,27,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
-50,TYPE,NONE,PARENT_NOT_SET,35,27,42,0,0,0,0,"IN_CLASS_BASE",0,0," inner_namespace"
-50,DC_MEMBER,NONE,PARENT_NOT_SET,50,42,44,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
-50,TYPE,NONE,PARENT_NOT_SET,52,44,49,0,0,0,0,"IN_CLASS_BASE",0,0," Base1"
-50,COMMA,NONE,PARENT_NOT_SET,57,49,50,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ,"
-50,NEWLINE,NONE,PARENT_NOT_SET,58,50,3,0,0,0,0,"",1,0,
-51,QUALIFIER,NONE,PARENT_NOT_SET,9,3,9,0,0,0,0,"IN_CLASS_BASE,FORCE_SPACE,EXPR_START",0,0," public"
-51,TYPE,NONE,PARENT_NOT_SET,16,10,25,1,0,0,0,"IN_CLASS_BASE",0,0," outer_namespace"
-51,DC_MEMBER,NONE,PARENT_NOT_SET,31,25,27,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
-51,TYPE,NONE,PARENT_NOT_SET,33,27,42,0,0,0,0,"IN_CLASS_BASE",0,0," inner_namespace"
-51,DC_MEMBER,NONE,PARENT_NOT_SET,48,42,44,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
-51,TYPE,NONE,PARENT_NOT_SET,50,44,49,0,0,0,0,"IN_CLASS_BASE",0,0," Base2"
-51,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,55,49,50,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," <"
-51,TYPE,NONE,PARENT_NOT_SET,56,50,65,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE,EXPR_START",0,0," outer_namespace"
-51,DC_MEMBER,NONE,PARENT_NOT_SET,71,65,67,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
-51,TYPE,NONE,PARENT_NOT_SET,73,67,82,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE",0,0," inner_namespace"
-51,DC_MEMBER,NONE,PARENT_NOT_SET,88,82,84,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
-51,TYPE,NONE,PARENT_NOT_SET,90,84,89,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE",0,0," Base1"
-51,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,95,89,90,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," >"
-51,NEWLINE,NONE,PARENT_NOT_SET,96,90,1,0,0,0,0,"",1,0,
-52,BRACE_OPEN,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_CLASS,EXPR_START,EMPTY_BODY,PUNCTUATOR",0,0," {"
-52,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,1,1,0,"IN_CLASS",2,0,
-54,BRACE_CLOSE,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_CLASS,EMPTY_BODY,PUNCTUATOR",0,0," }"
-54,SEMICOLON,CLASS,PARENT_NOT_SET,2,2,3,0,0,0,0,"PUNCTUATOR",0,0," ;"
-54,NEWLINE,NONE,PARENT_NOT_SET,3,3,1,0,0,0,0,"",2,0,
-56,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,70,0,0,0,0,"",0,0," // template<...> class/struct[<...>] [macros/attributes ...] type { }"
-56,NEWLINE,NONE,PARENT_NOT_SET,70,70,1,0,0,0,0,"",1,0,
-57,TEMPLATE,NONE,PARENT_NOT_SET,1,1,9,0,0,0,0,"STMT_START,EXPR_START",0,0," template"
-57,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,9,9,10,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
-57,TYPENAME,NONE,PARENT_NOT_SET,10,10,18,0,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," typename"
-57,COMMA,NONE,PARENT_NOT_SET,18,18,19,0,0,1,0,"IN_TEMPLATE,PUNCTUATOR",0,0," ,"
-57,TYPENAME,NONE,PARENT_NOT_SET,20,20,28,1,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," typename"
-57,ELLIPSIS,NONE,PARENT_NOT_SET,29,29,32,1,0,1,0,"IN_TEMPLATE,PUNCTUATOR",0,0," ..."
-57,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,32,32,33,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
-57,NEWLINE,NONE,PARENT_NOT_SET,33,33,1,0,0,0,0,"",1,0,
-58,CLASS,TEMPLATE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,EXPR_START",0,0," class"
-58,WORD,NONE,PARENT_NOT_SET,7,7,17,1,0,0,0,"FORCE_SPACE",0,0," API_EXPORT"
-58,TYPE,CLASS,PARENT_NOT_SET,18,18,20,1,0,0,0,"",0,0," c2"
-58,NEWLINE,NONE,PARENT_NOT_SET,20,20,1,0,0,0,0,"",1,0,
-59,BRACE_OPEN,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_CLASS,PUNCTUATOR",0,0," {"
-59,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,1,1,0,"IN_CLASS",1,0,
-60,ACCESS,NONE,PARENT_NOT_SET,1,1,7,0,1,1,0,"IN_CLASS,STMT_START,EXPR_START",0,0," public"
-60,ACCESS_COLON,NONE,PARENT_NOT_SET,7,7,8,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," :"
-60,NEWLINE,NONE,PARENT_NOT_SET,8,8,4,0,1,1,0,"IN_CLASS",2,0,
-62,TEMPLATE,NONE,PARENT_NOT_SET,1,4,12,0,1,1,0,"IN_CLASS,STMT_START,EXPR_START",0,0," template"
-62,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,9,12,13,0,1,1,0,"IN_TEMPLATE,IN_CLASS,PUNCTUATOR",0,0," <"
-62,TYPENAME,NONE,PARENT_NOT_SET,10,13,21,0,1,2,0,"IN_TEMPLATE,IN_CLASS,FORCE_SPACE,EXPR_START",0,0," typename"
-62,TYPE,NONE,PARENT_NOT_SET,19,22,23,1,1,2,0,"IN_TEMPLATE,IN_CLASS",0,0," T"
-62,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,20,23,24,0,1,1,0,"IN_TEMPLATE,IN_CLASS,PUNCTUATOR",0,0," >"
-62,NEWLINE,NONE,PARENT_NOT_SET,21,24,4,0,1,1,0,"IN_CLASS",1,0,
-63,STRUCT,TEMPLATE,PARENT_NOT_SET,1,4,10,0,1,1,0,"IN_CLASS,FORCE_SPACE,EXPR_START",0,0," struct"
-63,TYPE,STRUCT,PARENT_NOT_SET,8,11,22,1,1,1,0,"IN_CLASS",0,0," inner_class"
-63,NEWLINE,NONE,PARENT_NOT_SET,19,22,4,0,1,1,0,"IN_CLASS",1,0,
-64,BRACE_OPEN,STRUCT,PARENT_NOT_SET,1,4,5,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," {"
-64,NEWLINE,NONE,PARENT_NOT_SET,2,5,7,0,2,2,0,"IN_STRUCT,IN_CLASS",1,0,
-65,QUALIFIER,NONE,PARENT_NOT_SET,9,7,13,0,2,2,0,"IN_STRUCT,IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE",0,0," static"
-65,TYPE,NONE,PARENT_NOT_SET,16,14,25,1,2,2,0,"IN_STRUCT,IN_CLASS,VAR_TYPE",0,0," inner_class"
-65,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,27,25,26,0,2,2,0,"IN_STRUCT,IN_TEMPLATE,IN_CLASS,PUNCTUATOR",0,0," <"
-65,TYPE,NONE,PARENT_NOT_SET,28,26,27,0,2,3,0,"IN_STRUCT,IN_TEMPLATE,IN_CLASS,EXPR_START",0,0," T"
-65,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,29,27,28,0,2,2,0,"IN_STRUCT,IN_TEMPLATE,IN_CLASS,PUNCTUATOR",0,0," >"
-65,PTR_TYPE,NONE,PARENT_NOT_SET,31,29,30,1,2,2,0,"IN_STRUCT,IN_CLASS,EXPR_START,VAR_TYPE,PUNCTUATOR",0,0," *"
-65,WORD,NONE,PARENT_NOT_SET,32,30,43,0,2,2,0,"IN_STRUCT,IN_CLASS,EXPR_START,VAR_DEF,VAR_1ST",0,0," m_inner_class"
-65,SEMICOLON,NONE,PARENT_NOT_SET,45,43,44,0,2,2,0,"IN_STRUCT,IN_CLASS,PUNCTUATOR",0,0," ;"
-65,NEWLINE,NONE,PARENT_NOT_SET,46,44,4,0,2,2,0,"IN_STRUCT,IN_CLASS",1,0,
-66,BRACE_CLOSE,STRUCT,PARENT_NOT_SET,1,4,5,0,1,1,0,"IN_STRUCT,IN_CLASS,PUNCTUATOR",0,0," }"
-66,SEMICOLON,STRUCT,PARENT_NOT_SET,2,5,6,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," ;"
-66,NEWLINE,NONE,PARENT_NOT_SET,3,6,1,0,1,1,0,"IN_CLASS",1,0,
-67,BRACE_CLOSE,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_CLASS,PUNCTUATOR",0,0," }"
-67,SEMICOLON,CLASS,PARENT_NOT_SET,2,2,3,0,0,0,0,"PUNCTUATOR",0,0," ;"
-67,NEWLINE,NONE,PARENT_NOT_SET,3,3,1,0,0,0,0,"",2,0,
-69,TEMPLATE,NONE,PARENT_NOT_SET,1,1,9,0,0,0,0,"STMT_START,EXPR_START",0,0," template"
-69,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,9,9,10,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
-69,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,10,10,11,0,0,0,0,"IN_TEMPLATE,EXPR_START,PUNCTUATOR",0,0," >"
-69,TEMPLATE,NONE,PARENT_NOT_SET,12,12,20,1,0,0,0,"EXPR_START",0,0," template"
-69,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,20,20,21,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
-69,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,21,21,22,0,0,0,0,"IN_TEMPLATE,EXPR_START,PUNCTUATOR",0,0," >"
-69,STRUCT,TEMPLATE,PARENT_NOT_SET,23,23,29,1,0,0,0,"FORCE_SPACE,EXPR_START",0,0," struct"
-69,WORD,NONE,PARENT_NOT_SET,30,30,40,1,0,0,0,"FORCE_SPACE",0,0," API_EXPORT"
-69,TYPE,NONE,PARENT_NOT_SET,41,41,43,1,0,0,0,"",0,0," c2"
-69,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,43,43,44,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
-69,TYPE,NONE,PARENT_NOT_SET,44,44,47,0,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," int"
-69,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,47,47,48,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
-69,DC_MEMBER,NONE,PARENT_NOT_SET,48,48,50,0,0,0,0,"EXPR_START,PUNCTUATOR",0,0," ::"
-69,TYPE,STRUCT,PARENT_NOT_SET,50,50,61,0,0,0,0,"VAR_TYPE",0,0," inner_class"
-69,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,61,61,62,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
-69,TYPE,NONE,PARENT_NOT_SET,62,62,65,0,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," int"
-69,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,65,65,66,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
-69,PTR_TYPE,NONE,PARENT_NOT_SET,67,67,68,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
-69,TYPE,NONE,PARENT_NOT_SET,68,68,70,0,0,0,0,"EXPR_START",0,0," c2"
-69,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,70,70,71,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
-69,TYPE,NONE,PARENT_NOT_SET,71,71,74,0,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," int"
-69,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,74,74,75,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
-69,DC_MEMBER,NONE,PARENT_NOT_SET,75,75,77,0,0,0,0,"EXPR_START,PUNCTUATOR",0,0," ::"
-69,TYPE,NONE,PARENT_NOT_SET,77,77,88,0,0,0,0,"",0,0," inner_class"
-69,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,88,88,89,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
-69,TYPE,NONE,PARENT_NOT_SET,89,89,92,0,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," int"
-69,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,92,92,93,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
-69,DC_MEMBER,NONE,PARENT_NOT_SET,93,93,95,0,0,0,0,"EXPR_START,PUNCTUATOR",0,0," ::"
-69,WORD,NONE,PARENT_NOT_SET,95,95,108,0,0,0,0,"VAR_DEF,VAR_1ST,LVALUE",0,0," m_inner_class"
-69,ASSIGN,NONE,PARENT_NOT_SET,109,109,110,1,0,0,0,"PUNCTUATOR",0,0," ="
-69,WORD,NONE,PARENT_NOT_SET,111,111,118,1,0,0,0,"EXPR_START",0,0," nullptr"
-69,SEMICOLON,STRUCT,PARENT_NOT_SET,118,118,119,0,0,0,0,"PUNCTUATOR",0,0," ;"
-69,NEWLINE,NONE,PARENT_NOT_SET,119,119,1,0,0,0,0,"",2,0,
-71,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,66,0,0,0,0,"",0,0," // template<...> class/struct[<...>] [macros/attributes ...] type"
-71,NEWLINE,NONE,PARENT_NOT_SET,66,66,1,0,0,0,0,"",1,0,
-72,TEMPLATE,NONE,PARENT_NOT_SET,1,1,9,0,0,0,0,"STMT_START,EXPR_START",0,0," template"
-72,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,9,9,10,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
-72,TYPENAME,NONE,PARENT_NOT_SET,10,10,18,0,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," typename"
-72,COMMA,NONE,PARENT_NOT_SET,18,18,19,0,0,1,0,"IN_TEMPLATE,PUNCTUATOR",0,0," ,"
-72,TYPENAME,NONE,PARENT_NOT_SET,20,20,28,1,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," typename"
-72,ELLIPSIS,NONE,PARENT_NOT_SET,29,29,32,1,0,1,0,"IN_TEMPLATE,PUNCTUATOR",0,0," ..."
-72,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,32,32,33,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
-72,NEWLINE,NONE,PARENT_NOT_SET,33,33,1,0,0,0,0,"",1,0,
-73,CLASS,TEMPLATE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,EXPR_START,INCOMPLETE",0,0," class"
-73,WORD,NONE,PARENT_NOT_SET,7,7,17,1,0,0,0,"FORCE_SPACE,INCOMPLETE",0,0," API_EXPORT"
-73,TYPE,CLASS,PARENT_NOT_SET,18,18,20,1,0,0,0,"INCOMPLETE",0,0," c2"
-73,SEMICOLON,CLASS,PARENT_NOT_SET,20,20,21,0,0,0,0,"PUNCTUATOR",0,0," ;"
-73,NEWLINE,NONE,PARENT_NOT_SET,21,21,1,0,0,0,0,"",2,0,
-75,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,68,0,0,0,0,"",0,0," // class/struct [macros/attributes ...] type : bases ... { } x, ..."
-75,NEWLINE,NONE,PARENT_NOT_SET,68,68,1,0,0,0,0,"",1,0,
-76,CLASS,NONE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," class"
-76,WORD,NONE,PARENT_NOT_SET,7,7,17,1,0,0,0,"FORCE_SPACE",0,0," API_EXPORT"
-76,ATTRIBUTE,NONE,PARENT_NOT_SET,18,18,31,1,0,0,0,"",0,0," __attribute__"
-76,FPAREN_OPEN,ATTRIBUTE,PARENT_NOT_SET,31,31,32,0,0,0,0,"PUNCTUATOR",0,0," ("
-76,PAREN_OPEN,NONE,PARENT_NOT_SET,32,32,33,0,0,1,0,"EXPR_START,PUNCTUATOR",0,0," ("
-76,WORD,NONE,PARENT_NOT_SET,33,33,47,0,0,2,0,"EXPR_START",0,0," __deprecated__"
-76,PAREN_CLOSE,NONE,PARENT_NOT_SET,47,47,48,0,0,1,0,"PUNCTUATOR",0,0," )"
-76,FPAREN_CLOSE,ATTRIBUTE,PARENT_NOT_SET,48,48,49,0,0,0,0,"PUNCTUATOR",0,0," )"
-76,MACRO_FUNC_CALL,NONE,PARENT_NOT_SET,50,50,57,1,0,0,0,"",0,0," ALIGNAS"
-76,FPAREN_OPEN,MACRO_FUNC_CALL,PARENT_NOT_SET,57,57,58,0,0,0,0,"PUNCTUATOR",0,0," ("
-76,NUMBER,NONE,PARENT_NOT_SET,58,58,59,0,0,1,0,"EXPR_START",0,0," 4"
-76,FPAREN_CLOSE,MACRO_FUNC_CALL,PARENT_NOT_SET,59,59,60,0,0,0,0,"PUNCTUATOR",0,0," )"
-76,TYPE,CLASS,PARENT_NOT_SET,61,61,63,1,0,0,0,"VAR_TYPE",0,0," c3"
-76,NEWLINE,NONE,PARENT_NOT_SET,63,63,1,0,0,0,0,"",1,0,
-77,CLASS_COLON,CLASS,PARENT_NOT_SET,9,1,2,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," :"
-77,QUALIFIER,NONE,PARENT_NOT_SET,11,3,9,1,0,0,0,"IN_CLASS_BASE,FORCE_SPACE,STMT_START,EXPR_START",0,0," public"
-77,TYPE,NONE,PARENT_NOT_SET,18,10,25,1,0,0,0,"IN_CLASS_BASE",0,0," outer_namespace"
-77,DC_MEMBER,NONE,PARENT_NOT_SET,33,25,27,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
-77,TYPE,NONE,PARENT_NOT_SET,35,27,42,0,0,0,0,"IN_CLASS_BASE",0,0," inner_namespace"
-77,DC_MEMBER,NONE,PARENT_NOT_SET,50,42,44,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
-77,TYPE,NONE,PARENT_NOT_SET,52,44,49,0,0,0,0,"IN_CLASS_BASE",0,0," Base2"
-77,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,57,49,50,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," <"
-77,TYPE,NONE,PARENT_NOT_SET,58,50,53,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE,EXPR_START",0,0," int"
-77,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,61,53,54,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," >"
-77,COMMA,NONE,PARENT_NOT_SET,62,54,55,0,0,0,0,"IN_CLASS_BASE,EXPR_START,PUNCTUATOR",0,0," ,"
-77,NEWLINE,NONE,PARENT_NOT_SET,63,55,3,0,0,0,0,"",1,0,
-78,QUALIFIER,NONE,PARENT_NOT_SET,9,3,9,0,0,0,0,"IN_CLASS_BASE,FORCE_SPACE,EXPR_START",0,0," public"
-78,TYPE,NONE,PARENT_NOT_SET,16,10,12,1,0,0,0,"IN_CLASS_BASE",0,0," c2"
-78,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,18,12,13,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," <"
-78,TYPE,NONE,PARENT_NOT_SET,19,13,16,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE,EXPR_START",0,0," int"
-78,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,22,16,17,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," >"
-78,DC_MEMBER,NONE,PARENT_NOT_SET,23,17,19,0,0,0,0,"IN_CLASS_BASE,EXPR_START,PUNCTUATOR",0,0," ::"
-78,TYPE,NONE,PARENT_NOT_SET,25,19,30,0,0,0,0,"IN_CLASS_BASE",0,0," inner_class"
-78,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,36,30,31,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," <"
-78,TYPE,NONE,PARENT_NOT_SET,37,31,34,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE,EXPR_START",0,0," int"
-78,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,40,34,35,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," >"
-78,NEWLINE,NONE,PARENT_NOT_SET,41,35,1,0,0,0,0,"",1,0,
-79,BRACE_OPEN,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_CLASS,EXPR_START,PUNCTUATOR",0,0," {"
-79,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,1,1,0,"IN_CLASS",1,0,
-80,ACCESS,NONE,PARENT_NOT_SET,1,1,7,0,1,1,0,"IN_CLASS,STMT_START,EXPR_START",0,0," public"
-80,ACCESS_COLON,NONE,PARENT_NOT_SET,7,7,8,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," :"
-80,NEWLINE,NONE,PARENT_NOT_SET,8,8,4,0,1,1,0,"IN_CLASS",1,0,
-81,FUNC_CLASS_DEF,NONE,PARENT_NOT_SET,1,4,6,0,1,1,0,"IN_CLASS,STMT_START,EXPR_START",0,0," c3"
-81,FPAREN_OPEN,FUNC_CLASS_DEF,PARENT_NOT_SET,3,6,7,0,1,1,0,"IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ("
-81,TYPE,NONE,PARENT_NOT_SET,4,7,10,0,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,FORCE_SPACE,EXPR_START,VAR_TYPE,LVALUE",0,0," int"
-81,WORD,NONE,PARENT_NOT_SET,8,11,12,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,VAR_DEF,LVALUE",0,0," x"
-81,ASSIGN_DEFAULT_ARG,FUNC_PROTO,PARENT_NOT_SET,10,13,14,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ="
-81,NUMBER,NONE,PARENT_NOT_SET,12,15,16,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," 0"
-81,COMMA,NONE,PARENT_NOT_SET,13,16,17,0,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ,"
-81,TYPE,NONE,PARENT_NOT_SET,15,18,21,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,FORCE_SPACE,EXPR_START,VAR_TYPE,LVALUE",0,0," int"
-81,WORD,NONE,PARENT_NOT_SET,19,22,23,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,VAR_DEF,LVALUE",0,0," y"
-81,ASSIGN_DEFAULT_ARG,FUNC_PROTO,PARENT_NOT_SET,21,24,25,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ="
-81,NUMBER,NONE,PARENT_NOT_SET,23,26,27,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," 0"
-81,COMMA,NONE,PARENT_NOT_SET,24,27,28,0,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ,"
-81,TYPE,NONE,PARENT_NOT_SET,26,29,32,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,FORCE_SPACE,EXPR_START,VAR_TYPE,LVALUE",0,0," int"
-81,WORD,NONE,PARENT_NOT_SET,30,33,34,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,VAR_DEF,LVALUE",0,0," z"
-81,ASSIGN_DEFAULT_ARG,FUNC_PROTO,PARENT_NOT_SET,32,35,36,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ="
-81,NUMBER,NONE,PARENT_NOT_SET,34,37,38,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," 0"
-81,FPAREN_CLOSE,FUNC_CLASS_DEF,PARENT_NOT_SET,35,38,39,0,1,1,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," )"
-81,CONSTR_COLON,NONE,PARENT_NOT_SET,37,40,41,1,1,1,0,"IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," :"
-81,FUNC_CTOR_VAR,NONE,PARENT_NOT_SET,39,42,45,1,1,1,0,"IN_CONST_ARGS,IN_CLASS,STMT_START,EXPR_START",0,0," m_x"
-81,FPAREN_OPEN,FUNC_CTOR_VAR,PARENT_NOT_SET,42,45,46,0,1,1,0,"IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ("
-81,WORD,NONE,PARENT_NOT_SET,43,46,47,0,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," x"
-81,FPAREN_CLOSE,FUNC_CTOR_VAR,PARENT_NOT_SET,44,47,48,0,1,1,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," )"
-81,COMMA,NONE,PARENT_NOT_SET,45,48,49,0,1,1,0,"IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ,"
-81,FUNC_CTOR_VAR,NONE,PARENT_NOT_SET,47,50,53,1,1,1,0,"IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," m_y"
-81,FPAREN_OPEN,FUNC_CTOR_VAR,PARENT_NOT_SET,50,53,54,0,1,1,0,"IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ("
-81,WORD,NONE,PARENT_NOT_SET,51,54,55,0,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," y"
-81,FPAREN_CLOSE,FUNC_CTOR_VAR,PARENT_NOT_SET,52,55,56,0,1,1,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," )"
-81,COMMA,NONE,PARENT_NOT_SET,53,56,57,0,1,1,0,"IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ,"
-81,FUNC_CTOR_VAR,NONE,PARENT_NOT_SET,55,58,61,1,1,1,0,"IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," m_z"
-81,FPAREN_OPEN,FUNC_CTOR_VAR,PARENT_NOT_SET,58,61,62,0,1,1,0,"IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ("
-81,WORD,NONE,PARENT_NOT_SET,59,62,63,0,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," z"
-81,FPAREN_CLOSE,FUNC_CTOR_VAR,PARENT_NOT_SET,60,63,64,0,1,1,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," )"
-81,BRACE_OPEN,FUNC_CLASS_DEF,PARENT_NOT_SET,62,65,66,1,1,1,0,"IN_CLASS,EMPTY_BODY,PUNCTUATOR",0,0," {"
-81,NEWLINE,NONE,PARENT_NOT_SET,63,67,0,0,1,1,0,"IN_CLASS",1,0,
-81,BRACE_CLOSE,FUNC_CLASS_DEF,PARENT_NOT_SET,1,67,68,1,1,1,0,"IN_CLASS,EMPTY_BODY,PUNCTUATOR",0,0," }"
-81,NEWLINE,NONE,PARENT_NOT_SET,2,68,4,0,1,1,0,"IN_CLASS",2,0,
-83,TYPE,NONE,PARENT_NOT_SET,1,4,7,0,1,1,0,"IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE",0,0," int"
-83,WORD,NONE,PARENT_NOT_SET,5,8,11,1,1,1,0,"IN_CLASS,VAR_DEF,VAR_1ST",0,0," m_x"
-83,SEMICOLON,NONE,PARENT_NOT_SET,8,11,12,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," ;"
-83,NEWLINE,NONE,PARENT_NOT_SET,9,12,4,0,1,1,0,"IN_CLASS",1,0,
-84,TYPE,NONE,PARENT_NOT_SET,1,4,7,0,1,1,0,"IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE",0,0," int"
-84,WORD,NONE,PARENT_NOT_SET,5,8,11,1,1,1,0,"IN_CLASS,VAR_DEF,VAR_1ST",0,0," m_y"
-84,SEMICOLON,NONE,PARENT_NOT_SET,8,11,12,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," ;"
-84,NEWLINE,NONE,PARENT_NOT_SET,9,12,4,0,1,1,0,"IN_CLASS",1,0,
-85,TYPE,NONE,PARENT_NOT_SET,1,4,7,0,1,1,0,"IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE",0,0," int"
-85,WORD,NONE,PARENT_NOT_SET,5,8,11,1,1,1,0,"IN_CLASS,VAR_DEF,VAR_1ST",0,0," m_z"
-85,SEMICOLON,NONE,PARENT_NOT_SET,8,11,12,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," ;"
-85,NEWLINE,NONE,PARENT_NOT_SET,9,12,1,0,1,1,0,"IN_CLASS",1,0,
-86,BRACE_CLOSE,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_CLASS,PUNCTUATOR",0,0," }"
-86,WORD,NONE,PARENT_NOT_SET,3,3,6,1,0,0,0,"STMT_START,EXPR_START,VAR_DEF,VAR_1ST,VAR_INLINE",0,0," c31"
-86,COMMA,NONE,PARENT_NOT_SET,6,6,7,0,0,0,0,"PUNCTUATOR",0,0," ,"
-86,PTR_TYPE,CLASS,PARENT_NOT_SET,8,8,9,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
-86,WORD,NONE,PARENT_NOT_SET,9,9,12,0,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE,LVALUE",0,0," c32"
-86,ASSIGN,NONE,PARENT_NOT_SET,13,13,14,1,0,0,0,"PUNCTUATOR",0,0," ="
-86,WORD,NONE,PARENT_NOT_SET,15,15,22,1,0,0,0,"EXPR_START",0,0," nullptr"
-86,COMMA,NONE,PARENT_NOT_SET,22,22,23,0,0,0,0,"PUNCTUATOR",0,0," ,"
-86,PTR_TYPE,CLASS,PARENT_NOT_SET,24,24,25,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
-86,WORD,NONE,PARENT_NOT_SET,25,25,28,0,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," c33"
-86,TSQUARE,NONE,PARENT_NOT_SET,28,28,30,0,0,0,0,"PUNCTUATOR",0,0," []"
-86,ASSIGN,NONE,PARENT_NOT_SET,31,31,32,1,0,0,0,"PUNCTUATOR",0,0," ="
-86,BRACE_OPEN,BRACED_INIT_LIST,PARENT_NOT_SET,33,33,34,1,0,0,0,"EXPR_START,ONE_LINER,PUNCTUATOR",0,0," {"
-86,WORD,NONE,PARENT_NOT_SET,35,35,42,1,1,1,0,"EXPR_START,ONE_LINER",0,0," nullptr"
-86,COMMA,NONE,PARENT_NOT_SET,42,42,43,0,1,1,0,"ONE_LINER,PUNCTUATOR",0,0," ,"
-86,WORD,NONE,PARENT_NOT_SET,44,44,51,1,1,1,0,"EXPR_START,ONE_LINER",0,0," nullptr"
-86,BRACE_CLOSE,BRACED_INIT_LIST,PARENT_NOT_SET,52,52,53,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," }"
-86,COMMA,NONE,PARENT_NOT_SET,53,53,54,0,0,0,0,"PUNCTUATOR",0,0," ,"
-86,WORD,NONE,PARENT_NOT_SET,55,55,58,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE,LVALUE",0,0," c34"
-86,BRACE_OPEN,BRACED_INIT_LIST,PARENT_NOT_SET,58,58,59,0,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
-86,NUMBER,NONE,PARENT_NOT_SET,60,60,61,1,1,1,0,"STMT_START,EXPR_START,ONE_LINER",0,0," 0"
-86,COMMA,NONE,PARENT_NOT_SET,61,61,62,0,1,1,0,"ONE_LINER,PUNCTUATOR",0,0," ,"
-86,NUMBER,NONE,PARENT_NOT_SET,63,63,64,1,1,1,0,"EXPR_START,ONE_LINER",0,0," 1"
-86,COMMA,NONE,PARENT_NOT_SET,64,64,65,0,1,1,0,"ONE_LINER,PUNCTUATOR",0,0," ,"
-86,NUMBER,NONE,PARENT_NOT_SET,66,66,67,1,1,1,0,"EXPR_START,ONE_LINER",0,0," 2"
-86,BRACE_CLOSE,BRACED_INIT_LIST,PARENT_NOT_SET,67,67,68,0,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," }"
-86,COMMA,NONE,PARENT_NOT_SET,68,68,69,0,0,0,0,"PUNCTUATOR",0,0," ,"
-86,PTR_TYPE,CLASS,PARENT_NOT_SET,70,70,71,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
-86,QUALIFIER,NONE,PARENT_NOT_SET,72,72,77,1,0,0,0,"FORCE_SPACE,EXPR_START",0,0," const"
-86,FUNC_CALL,NONE,PARENT_NOT_SET,78,78,81,1,0,0,0,"VAR_DEF,VAR_INLINE",0,0," c35"
-86,FPAREN_OPEN,FUNC_CALL,PARENT_NOT_SET,81,81,82,0,0,0,0,"PUNCTUATOR",0,0," ("
-86,WORD,NONE,PARENT_NOT_SET,82,82,89,0,0,1,0,"IN_FCN_CALL,EXPR_START",0,0," nullptr"
-86,FPAREN_CLOSE,FUNC_CALL,PARENT_NOT_SET,89,89,90,0,0,0,0,"IN_FCN_CALL,PUNCTUATOR",0,0," )"
-86,COMMA,NONE,PARENT_NOT_SET,90,90,91,0,0,0,0,"PUNCTUATOR",0,0," ,"
-86,FUNC_CALL,NONE,PARENT_NOT_SET,92,92,95,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," c16"
-86,FPAREN_OPEN,FUNC_CALL,PARENT_NOT_SET,95,95,96,0,0,0,0,"PUNCTUATOR",0,0," ("
-86,NUMBER,NONE,PARENT_NOT_SET,96,96,97,0,0,1,0,"IN_FCN_CALL,EXPR_START",0,0," 0"
-86,COMMA,NONE,PARENT_NOT_SET,97,97,98,0,0,1,0,"IN_FCN_CALL,PUNCTUATOR",0,0," ,"
-86,NUMBER,NONE,PARENT_NOT_SET,99,99,100,1,0,1,0,"IN_FCN_CALL,EXPR_START",0,0," 1"
-86,COMMA,NONE,PARENT_NOT_SET,100,100,101,0,0,1,0,"IN_FCN_CALL,PUNCTUATOR",0,0," ,"
-86,NUMBER,NONE,PARENT_NOT_SET,102,102,103,1,0,1,0,"IN_FCN_CALL,EXPR_START",0,0," 2"
-86,FPAREN_CLOSE,FUNC_CALL,PARENT_NOT_SET,103,103,104,0,0,0,0,"IN_FCN_CALL,PUNCTUATOR",0,0," )"
-86,SEMICOLON,CLASS,PARENT_NOT_SET,104,104,105,0,0,0,0,"PUNCTUATOR",0,0," ;"
-86,NEWLINE,NONE,PARENT_NOT_SET,105,105,1,0,0,0,0,"",2,0,
-88,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,52,0,0,0,0,"",0,0," // class/struct [macros/attributes ...] type x, ..."
-88,NEWLINE,NONE,PARENT_NOT_SET,52,52,1,0,0,0,0,"",1,0,
-89,CLASS,NONE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," class"
-89,ATTRIBUTE,NONE,PARENT_NOT_SET,7,7,20,1,0,0,0,"",0,0," __attribute__"
-89,FPAREN_OPEN,ATTRIBUTE,PARENT_NOT_SET,20,20,21,0,0,0,0,"PUNCTUATOR",0,0," ("
-89,PAREN_OPEN,NONE,PARENT_NOT_SET,21,21,22,0,0,1,0,"EXPR_START,PUNCTUATOR",0,0," ("
-89,WORD,NONE,PARENT_NOT_SET,22,22,36,0,0,2,0,"EXPR_START",0,0," __deprecated__"
-89,PAREN_CLOSE,NONE,PARENT_NOT_SET,36,36,37,0,0,1,0,"PUNCTUATOR",0,0," )"
-89,FPAREN_CLOSE,ATTRIBUTE,PARENT_NOT_SET,37,37,38,0,0,0,0,"PUNCTUATOR",0,0," )"
-89,WORD,NONE,PARENT_NOT_SET,39,39,49,1,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," API_EXPORT"
-89,MACRO_FUNC_CALL,NONE,PARENT_NOT_SET,50,50,57,1,0,0,0,"",0,0," ALIGNAS"
-89,FPAREN_OPEN,MACRO_FUNC_CALL,PARENT_NOT_SET,57,57,58,0,0,0,0,"PUNCTUATOR",0,0," ("
-89,NUMBER,NONE,PARENT_NOT_SET,58,58,59,0,0,1,0,"EXPR_START",0,0," 4"
-89,FPAREN_CLOSE,MACRO_FUNC_CALL,PARENT_NOT_SET,59,59,60,0,0,0,0,"PUNCTUATOR",0,0," )"
-89,TYPE,CLASS,PARENT_NOT_SET,61,61,63,1,0,0,0,"FORCE_SPACE,VAR_TYPE",0,0," c3"
-89,WORD,NONE,PARENT_NOT_SET,64,64,67,1,0,0,0,"VAR_DEF,VAR_1ST",0,0," c41"
-89,COMMA,NONE,PARENT_NOT_SET,67,67,68,0,0,0,0,"PUNCTUATOR",0,0," ,"
-89,PTR_TYPE,CLASS,PARENT_NOT_SET,69,69,70,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
-89,WORD,NONE,PARENT_NOT_SET,70,70,73,0,0,0,0,"EXPR_START,VAR_DEF,LVALUE",0,0," c42"
-89,ASSIGN,NONE,PARENT_NOT_SET,74,74,75,1,0,0,0,"PUNCTUATOR",0,0," ="
-89,WORD,NONE,PARENT_NOT_SET,76,76,79,1,0,0,0,"EXPR_START",0,0," c32"
-89,QUESTION,NONE,PARENT_NOT_SET,80,80,81,1,0,0,0,"PUNCTUATOR,IN_CONDITIONAL",0,0," ?"
-89,WORD,NONE,PARENT_NOT_SET,82,82,85,1,0,0,0,"EXPR_START,IN_CONDITIONAL",0,0," c32"
-89,COND_COLON,NONE,PARENT_NOT_SET,86,86,87,1,0,0,0,"PUNCTUATOR,IN_CONDITIONAL",0,0," :"
-89,WORD,NONE,PARENT_NOT_SET,88,88,95,1,0,0,0,"STMT_START,EXPR_START,IN_CONDITIONAL",0,0," nullptr"
-89,COMMA,NONE,PARENT_NOT_SET,95,95,96,0,0,0,0,"PUNCTUATOR,IN_CONDITIONAL",0,0," ,"
-89,PTR_TYPE,CLASS,PARENT_NOT_SET,97,97,98,1,0,0,0,"EXPR_START,PUNCTUATOR,IN_CONDITIONAL",0,0," *"
-89,WORD,NONE,PARENT_NOT_SET,98,98,101,0,0,0,0,"EXPR_START,VAR_DEF,IN_CONDITIONAL",0,0," c43"
-89,TSQUARE,NONE,PARENT_NOT_SET,101,101,103,0,0,0,0,"PUNCTUATOR,IN_CONDITIONAL",0,0," []"
-89,ASSIGN,NONE,PARENT_NOT_SET,104,104,105,1,0,0,0,"PUNCTUATOR,IN_CONDITIONAL",0,0," ="
-89,BRACE_OPEN,BRACED_INIT_LIST,PARENT_NOT_SET,106,106,107,1,0,0,0,"EXPR_START,ONE_LINER,PUNCTUATOR,IN_CONDITIONAL",0,0," {"
-89,WORD,NONE,PARENT_NOT_SET,108,108,115,1,1,1,0,"EXPR_START,ONE_LINER,IN_CONDITIONAL",0,0," nullptr"
-89,COMMA,NONE,PARENT_NOT_SET,115,115,116,0,1,1,0,"ONE_LINER,PUNCTUATOR,IN_CONDITIONAL",0,0," ,"
-89,WORD,NONE,PARENT_NOT_SET,117,117,124,1,1,1,0,"EXPR_START,ONE_LINER,IN_CONDITIONAL",0,0," nullptr"
-89,BRACE_CLOSE,BRACED_INIT_LIST,PARENT_NOT_SET,125,125,126,1,0,0,0,"ONE_LINER,PUNCTUATOR,IN_CONDITIONAL",0,0," }"
-89,COMMA,NONE,PARENT_NOT_SET,126,126,127,0,0,0,0,"PUNCTUATOR,IN_CONDITIONAL",0,0," ,"
-89,WORD,NONE,PARENT_NOT_SET,128,128,131,1,0,0,0,"EXPR_START,VAR_DEF,LVALUE,IN_CONDITIONAL",0,0," c44"
-89,BRACE_OPEN,BRACED_INIT_LIST,PARENT_NOT_SET,131,131,132,0,0,0,0,"ONE_LINER,PUNCTUATOR,IN_CONDITIONAL",0,0," {"
-89,NUMBER,NONE,PARENT_NOT_SET,133,133,134,1,1,1,0,"STMT_START,EXPR_START,ONE_LINER,IN_CONDITIONAL",0,0," 0"
-89,COMMA,NONE,PARENT_NOT_SET,134,134,135,0,1,1,0,"ONE_LINER,PUNCTUATOR,IN_CONDITIONAL",0,0," ,"
-89,NUMBER,NONE,PARENT_NOT_SET,136,136,137,1,1,1,0,"EXPR_START,ONE_LINER,IN_CONDITIONAL",0,0," 1"
-89,COMMA,NONE,PARENT_NOT_SET,137,137,138,0,1,1,0,"ONE_LINER,PUNCTUATOR,IN_CONDITIONAL",0,0," ,"
-89,NUMBER,NONE,PARENT_NOT_SET,139,139,140,1,1,1,0,"EXPR_START,ONE_LINER,IN_CONDITIONAL",0,0," 2"
-89,BRACE_CLOSE,BRACED_INIT_LIST,PARENT_NOT_SET,140,140,141,0,0,0,0,"ONE_LINER,PUNCTUATOR,IN_CONDITIONAL",0,0," }"
-89,COMMA,NONE,PARENT_NOT_SET,141,141,142,0,0,0,0,"PUNCTUATOR,IN_CONDITIONAL",0,0," ,"
-89,PTR_TYPE,CLASS,PARENT_NOT_SET,143,143,144,1,0,0,0,"EXPR_START,PUNCTUATOR,IN_CONDITIONAL",0,0," *"
-89,QUALIFIER,NONE,PARENT_NOT_SET,145,145,150,1,0,0,0,"FORCE_SPACE,EXPR_START,IN_CONDITIONAL",0,0," const"
-89,FUNC_CALL,NONE,PARENT_NOT_SET,151,151,154,1,0,0,0,"VAR_DEF,IN_CONDITIONAL",0,0," c45"
-89,FPAREN_OPEN,FUNC_CALL,PARENT_NOT_SET,154,154,155,0,0,0,0,"PUNCTUATOR,IN_CONDITIONAL",0,0," ("
-89,WORD,NONE,PARENT_NOT_SET,155,155,162,0,0,1,0,"IN_FCN_CALL,EXPR_START,IN_CONDITIONAL",0,0," nullptr"
-89,FPAREN_CLOSE,FUNC_CALL,PARENT_NOT_SET,162,162,163,0,0,0,0,"IN_FCN_CALL,PUNCTUATOR,IN_CONDITIONAL",0,0," )"
-89,COMMA,NONE,PARENT_NOT_SET,163,163,164,0,0,0,0,"PUNCTUATOR,IN_CONDITIONAL",0,0," ,"
-89,FUNC_CALL,NONE,PARENT_NOT_SET,165,165,168,1,0,0,0,"EXPR_START,VAR_DEF,IN_CONDITIONAL",0,0," c46"
-89,FPAREN_OPEN,FUNC_CALL,PARENT_NOT_SET,168,168,169,0,0,0,0,"PUNCTUATOR,IN_CONDITIONAL",0,0," ("
-89,NUMBER,NONE,PARENT_NOT_SET,169,169,170,0,0,1,0,"IN_FCN_CALL,EXPR_START,IN_CONDITIONAL",0,0," 0"
-89,COMMA,NONE,PARENT_NOT_SET,170,170,171,0,0,1,0,"IN_FCN_CALL,PUNCTUATOR,IN_CONDITIONAL",0,0," ,"
-89,NUMBER,NONE,PARENT_NOT_SET,172,172,173,1,0,1,0,"IN_FCN_CALL,EXPR_START,IN_CONDITIONAL",0,0," 1"
-89,COMMA,NONE,PARENT_NOT_SET,173,173,174,0,0,1,0,"IN_FCN_CALL,PUNCTUATOR,IN_CONDITIONAL",0,0," ,"
-89,NUMBER,NONE,PARENT_NOT_SET,175,175,176,1,0,1,0,"IN_FCN_CALL,EXPR_START,IN_CONDITIONAL",0,0," 2"
-89,FPAREN_CLOSE,FUNC_CALL,PARENT_NOT_SET,176,176,177,0,0,0,0,"IN_FCN_CALL,PUNCTUATOR,IN_CONDITIONAL",0,0," )"
-89,SEMICOLON,CLASS,PARENT_NOT_SET,177,177,178,0,0,0,0,"PUNCTUATOR,IN_CONDITIONAL",0,0," ;"
-89,NEWLINE,NONE,PARENT_NOT_SET,178,178,1,0,0,0,0,"",2,0,
-91,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,68,0,0,0,0,"",0,0," // class/struct [macros/attributes ...] type : bases ... { } x, ..."
-91,NEWLINE,NONE,PARENT_NOT_SET,68,68,1,0,0,0,0,"",1,0,
-92,CLASS,NONE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," class"
-92,FUNC_CALL,NONE,PARENT_NOT_SET,7,7,14,1,0,0,0,"",0,0," ALIGNAS"
-92,FPAREN_OPEN,FUNC_CALL,PARENT_NOT_SET,14,14,15,0,0,0,0,"PUNCTUATOR",0,0," ("
-92,NUMBER,NONE,PARENT_NOT_SET,15,15,16,0,0,1,0,"IN_FCN_CALL,EXPR_START",0,0," 4"
-92,FPAREN_CLOSE,FUNC_CALL,PARENT_NOT_SET,16,16,17,0,0,0,0,"IN_FCN_CALL,PUNCTUATOR",0,0," )"
-92,WORD,NONE,PARENT_NOT_SET,18,18,28,1,0,0,0,"FORCE_SPACE",0,0," API_EXPORT"
-92,ATTRIBUTE,NONE,PARENT_NOT_SET,29,29,42,1,0,0,0,"",0,0," __attribute__"
-92,FPAREN_OPEN,ATTRIBUTE,PARENT_NOT_SET,42,42,43,0,0,0,0,"PUNCTUATOR",0,0," ("
-92,PAREN_OPEN,NONE,PARENT_NOT_SET,43,43,44,0,0,1,0,"EXPR_START,PUNCTUATOR",0,0," ("
-92,WORD,NONE,PARENT_NOT_SET,44,44,58,0,0,2,0,"EXPR_START",0,0," __deprecated__"
-92,PAREN_CLOSE,NONE,PARENT_NOT_SET,58,58,59,0,0,1,0,"PUNCTUATOR",0,0," )"
-92,FPAREN_CLOSE,ATTRIBUTE,PARENT_NOT_SET,59,59,60,0,0,0,0,"PUNCTUATOR",0,0," )"
-92,NEWLINE,NONE,PARENT_NOT_SET,60,60,1,0,0,0,0,"",1,0,
-93,CLASS_COLON,CLASS,PARENT_NOT_SET,9,1,2,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," :"
-93,QUALIFIER,NONE,PARENT_NOT_SET,11,3,9,1,0,0,0,"IN_CLASS_BASE,FORCE_SPACE,STMT_START,EXPR_START",0,0," public"
-93,TYPE,NONE,PARENT_NOT_SET,18,10,25,1,0,0,0,"IN_CLASS_BASE",0,0," outer_namespace"
-93,DC_MEMBER,NONE,PARENT_NOT_SET,33,25,27,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
-93,TYPE,NONE,PARENT_NOT_SET,35,27,42,0,0,0,0,"IN_CLASS_BASE",0,0," inner_namespace"
-93,DC_MEMBER,NONE,PARENT_NOT_SET,50,42,44,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
-93,TYPE,NONE,PARENT_NOT_SET,52,44,49,0,0,0,0,"IN_CLASS_BASE",0,0," Base1"
-93,NEWLINE,NONE,PARENT_NOT_SET,57,49,1,0,0,0,0,"",1,0,
-94,BRACE_OPEN,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"PUNCTUATOR",0,0," {"
-94,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,1,1,0,"IN_CLASS",1,0,
-95,ACCESS,NONE,PARENT_NOT_SET,1,1,7,0,1,1,0,"IN_CLASS,STMT_START,EXPR_START",0,0," public"
-95,ACCESS_COLON,NONE,PARENT_NOT_SET,7,7,8,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," :"
-95,NEWLINE,NONE,PARENT_NOT_SET,8,8,4,0,1,1,0,"IN_CLASS",1,0,
-96,TYPE,NONE,PARENT_NOT_SET,1,4,7,0,1,1,0,"IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE",0,0," int"
-96,WORD,NONE,PARENT_NOT_SET,5,8,11,1,1,1,0,"IN_CLASS,VAR_DEF,VAR_1ST",0,0," m_x"
-96,SEMICOLON,NONE,PARENT_NOT_SET,8,11,12,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," ;"
-96,NEWLINE,NONE,PARENT_NOT_SET,9,12,4,0,1,1,0,"IN_CLASS",1,0,
-97,TYPE,NONE,PARENT_NOT_SET,1,4,7,0,1,1,0,"IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE",0,0," int"
-97,WORD,NONE,PARENT_NOT_SET,5,8,11,1,1,1,0,"IN_CLASS,VAR_DEF,VAR_1ST",0,0," m_y"
-97,SEMICOLON,NONE,PARENT_NOT_SET,8,11,12,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," ;"
-97,NEWLINE,NONE,PARENT_NOT_SET,9,12,4,0,1,1,0,"IN_CLASS",1,0,
-98,TYPE,NONE,PARENT_NOT_SET,1,4,7,0,1,1,0,"IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE",0,0," int"
-98,WORD,NONE,PARENT_NOT_SET,5,8,11,1,1,1,0,"IN_CLASS,VAR_DEF,VAR_1ST",0,0," m_z"
-98,SEMICOLON,NONE,PARENT_NOT_SET,8,11,12,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," ;"
-98,NEWLINE,NONE,PARENT_NOT_SET,9,12,1,0,1,1,0,"IN_CLASS",1,0,
-99,BRACE_CLOSE,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_CLASS,PUNCTUATOR",0,0," }"
-99,WORD,NONE,PARENT_NOT_SET,3,3,6,1,0,0,0,"STMT_START,EXPR_START,VAR_DEF,VAR_1ST,VAR_INLINE",0,0," c51"
-99,COMMA,NONE,PARENT_NOT_SET,6,6,7,0,0,0,0,"PUNCTUATOR",0,0," ,"
-99,PTR_TYPE,CLASS,PARENT_NOT_SET,8,8,9,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
-99,WORD,NONE,PARENT_NOT_SET,9,9,12,0,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE,LVALUE",0,0," c52"
-99,ASSIGN,NONE,PARENT_NOT_SET,13,13,14,1,0,0,0,"PUNCTUATOR",0,0," ="
-99,WORD,NONE,PARENT_NOT_SET,15,15,22,1,0,0,0,"EXPR_START",0,0," nullptr"
-99,COMMA,NONE,PARENT_NOT_SET,22,22,23,0,0,0,0,"PUNCTUATOR",0,0," ,"
-99,PTR_TYPE,CLASS,PARENT_NOT_SET,24,24,25,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
-99,WORD,NONE,PARENT_NOT_SET,25,25,28,0,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," c53"
-99,TSQUARE,NONE,PARENT_NOT_SET,28,28,30,0,0,0,0,"PUNCTUATOR",0,0," []"
-99,ASSIGN,NONE,PARENT_NOT_SET,31,31,32,1,0,0,0,"PUNCTUATOR",0,0," ="
-99,BRACE_OPEN,BRACED_INIT_LIST,PARENT_NOT_SET,33,33,34,1,0,0,0,"EXPR_START,ONE_LINER,PUNCTUATOR",0,0," {"
-99,WORD,NONE,PARENT_NOT_SET,35,35,42,1,1,1,0,"EXPR_START,ONE_LINER",0,0," nullptr"
-99,COMMA,NONE,PARENT_NOT_SET,42,42,43,0,1,1,0,"ONE_LINER,PUNCTUATOR",0,0," ,"
-99,WORD,NONE,PARENT_NOT_SET,44,44,51,1,1,1,0,"EXPR_START,ONE_LINER",0,0," nullptr"
-99,BRACE_CLOSE,BRACED_INIT_LIST,PARENT_NOT_SET,52,52,53,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," }"
-99,SEMICOLON,CLASS,PARENT_NOT_SET,53,53,54,0,0,0,0,"PUNCTUATOR",0,0," ;"
-99,NEWLINE,NONE,PARENT_NOT_SET,54,54,1,0,0,0,0,"",3,0,
-102,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,44,0,0,0,0,"",0,0," // enum type : integral_type { ... } x, ..."
-102,NEWLINE,NONE,PARENT_NOT_SET,44,44,1,0,0,0,0,"",1,0,
-103,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," enum"
-103,TYPE,ENUM,PARENT_NOT_SET,6,6,8,1,0,0,0,"VAR_TYPE",0,0," e1"
-103,BIT_COLON,ENUM,PARENT_NOT_SET,9,9,10,1,0,0,0,"PUNCTUATOR",0,0," :"
-103,TYPE,BIT_COLON,PARENT_NOT_SET,11,11,15,1,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," long"
-103,TYPE,BIT_COLON,PARENT_NOT_SET,16,16,20,1,0,0,0,"",0,0," long"
-103,BRACE_OPEN,ENUM,PARENT_NOT_SET,21,21,22,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
-103,WORD,NONE,PARENT_NOT_SET,23,23,25,1,1,1,0,"IN_ENUM,STMT_START,EXPR_START,ONE_LINER",0,0," a1"
-103,COMMA,NONE,PARENT_NOT_SET,25,25,26,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
-103,WORD,NONE,PARENT_NOT_SET,27,27,29,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," b1"
-103,COMMA,NONE,PARENT_NOT_SET,29,29,30,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
-103,WORD,NONE,PARENT_NOT_SET,31,31,33,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," d1"
-103,BRACE_CLOSE,ENUM,PARENT_NOT_SET,34,34,35,1,0,0,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," }"
-103,WORD,NONE,PARENT_NOT_SET,36,36,39,1,0,0,0,"STMT_START,EXPR_START,VAR_DEF,VAR_1ST,VAR_INLINE",0,0," e11"
-103,COMMA,NONE,PARENT_NOT_SET,39,39,40,0,0,0,0,"PUNCTUATOR",0,0," ,"
-103,WORD,NONE,PARENT_NOT_SET,41,41,44,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," e12"
-103,COMMA,NONE,PARENT_NOT_SET,44,44,45,0,0,0,0,"PUNCTUATOR",0,0," ,"
-103,WORD,NONE,PARENT_NOT_SET,46,46,49,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," e13"
-103,SEMICOLON,ENUM,PARENT_NOT_SET,49,49,50,0,0,0,0,"PUNCTUATOR",0,0," ;"
-103,NEWLINE,NONE,PARENT_NOT_SET,50,50,1,0,0,0,0,"",2,0,
-105,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,37,0,0,0,0,"",0,0," // enum type : integral_type { ... }"
-105,NEWLINE,NONE,PARENT_NOT_SET,37,37,1,0,0,0,0,"",1,0,
-106,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," enum"
-106,TYPE,ENUM,PARENT_NOT_SET,6,6,8,1,0,0,0,"",0,0," e2"
-106,BIT_COLON,ENUM,PARENT_NOT_SET,9,9,10,1,0,0,0,"PUNCTUATOR",0,0," :"
-106,TYPE,BIT_COLON,PARENT_NOT_SET,11,11,19,1,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," unsigned"
-106,TYPE,BIT_COLON,PARENT_NOT_SET,20,20,23,1,0,0,0,"",0,0," int"
-106,BRACE_OPEN,ENUM,PARENT_NOT_SET,24,24,25,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
-106,WORD,NONE,PARENT_NOT_SET,26,26,28,1,1,1,0,"IN_ENUM,STMT_START,EXPR_START,ONE_LINER",0,0," a2"
-106,COMMA,NONE,PARENT_NOT_SET,28,28,29,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
-106,WORD,NONE,PARENT_NOT_SET,30,30,32,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," b2"
-106,COMMA,NONE,PARENT_NOT_SET,32,32,33,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
-106,WORD,NONE,PARENT_NOT_SET,34,34,36,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," d2"
-106,BRACE_CLOSE,ENUM,PARENT_NOT_SET,37,37,38,1,0,0,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," }"
-106,SEMICOLON,ENUM,PARENT_NOT_SET,38,38,39,0,0,0,0,"PUNCTUATOR",0,0," ;"
-106,NEWLINE,NONE,PARENT_NOT_SET,39,39,1,0,0,0,0,"",2,0,
-108,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,29,0,0,0,0,"",0,0," // enum type : integral_type"
-108,NEWLINE,NONE,PARENT_NOT_SET,29,29,1,0,0,0,0,"",1,0,
-109,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START,INCOMPLETE",0,0," enum"
-109,TYPE,ENUM,PARENT_NOT_SET,6,6,8,1,0,0,0,"INCOMPLETE",0,0," e3"
-109,BIT_COLON,ENUM,PARENT_NOT_SET,9,9,10,1,0,0,0,"PUNCTUATOR",0,0," :"
-109,TYPE,BIT_COLON,PARENT_NOT_SET,11,11,16,1,0,0,0,"STMT_START,EXPR_START",0,0," short"
-109,SEMICOLON,ENUM,PARENT_NOT_SET,16,16,17,0,0,0,0,"PUNCTUATOR",0,0," ;"
-109,NEWLINE,NONE,PARENT_NOT_SET,17,17,1,0,0,0,0,"",2,0,
-111,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,20,0,0,0,0,"",0,0," // enum type x, ..."
-111,NEWLINE,NONE,PARENT_NOT_SET,20,20,1,0,0,0,0,"",1,0,
-112,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," enum"
-112,TYPE,ENUM,PARENT_NOT_SET,6,6,8,1,0,0,0,"FORCE_SPACE,VAR_TYPE",0,0," e3"
-112,WORD,NONE,PARENT_NOT_SET,9,9,12,1,0,0,0,"VAR_DEF,VAR_1ST",0,0," e31"
-112,COMMA,NONE,PARENT_NOT_SET,12,12,13,0,0,0,0,"PUNCTUATOR",0,0," ,"
-112,WORD,NONE,PARENT_NOT_SET,14,14,17,1,0,0,0,"EXPR_START,VAR_DEF",0,0," e32"
-112,SEMICOLON,ENUM,PARENT_NOT_SET,17,17,18,0,0,0,0,"PUNCTUATOR",0,0," ;"
-112,NEWLINE,NONE,PARENT_NOT_SET,18,18,1,0,0,0,0,"",2,0,
-114,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,50,0,0,0,0,"",0,0," // enum class type : integral_type { ... } x, ..."
-114,NEWLINE,NONE,PARENT_NOT_SET,50,50,1,0,0,0,0,"",1,0,
-115,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," enum"
-115,ENUM_CLASS,NONE,PARENT_NOT_SET,6,6,11,1,0,0,0,"FORCE_SPACE",0,0," class"
-115,TYPE,ENUM,PARENT_NOT_SET,12,12,14,1,0,0,0,"VAR_TYPE",0,0," e4"
-115,BIT_COLON,ENUM,PARENT_NOT_SET,15,15,16,1,0,0,0,"PUNCTUATOR",0,0," :"
-115,TYPE,BIT_COLON,PARENT_NOT_SET,17,17,21,1,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," long"
-115,TYPE,BIT_COLON,PARENT_NOT_SET,22,22,26,1,0,0,0,"",0,0," long"
-115,BRACE_OPEN,ENUM,PARENT_NOT_SET,27,27,28,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
-115,WORD,NONE,PARENT_NOT_SET,29,29,31,1,1,1,0,"IN_ENUM,STMT_START,EXPR_START,ONE_LINER",0,0," a4"
-115,COMMA,NONE,PARENT_NOT_SET,31,31,32,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
-115,WORD,NONE,PARENT_NOT_SET,33,33,35,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," b4"
-115,COMMA,NONE,PARENT_NOT_SET,35,35,36,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
-115,WORD,NONE,PARENT_NOT_SET,37,37,39,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," d4"
-115,BRACE_CLOSE,ENUM,PARENT_NOT_SET,40,40,41,1,0,0,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," }"
-115,WORD,NONE,PARENT_NOT_SET,42,42,45,1,0,0,0,"STMT_START,EXPR_START,VAR_DEF,VAR_1ST,VAR_INLINE",0,0," e41"
-115,COMMA,NONE,PARENT_NOT_SET,45,45,46,0,0,0,0,"PUNCTUATOR",0,0," ,"
-115,WORD,NONE,PARENT_NOT_SET,47,47,50,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," e42"
-115,COMMA,NONE,PARENT_NOT_SET,50,50,51,0,0,0,0,"PUNCTUATOR",0,0," ,"
-115,WORD,NONE,PARENT_NOT_SET,52,52,55,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," e43"
-115,COMMA,NONE,PARENT_NOT_SET,55,55,56,0,0,0,0,"PUNCTUATOR",0,0," ,"
-115,WORD,NONE,PARENT_NOT_SET,57,57,60,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," e44"
-115,SEMICOLON,ENUM,PARENT_NOT_SET,60,60,61,0,0,0,0,"PUNCTUATOR",0,0," ;"
-115,NEWLINE,NONE,PARENT_NOT_SET,61,61,1,0,0,0,0,"",2,0,
-117,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,43,0,0,0,0,"",0,0," // enum class type : integral_type { ... }"
-117,NEWLINE,NONE,PARENT_NOT_SET,43,43,1,0,0,0,0,"",1,0,
-118,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," enum"
-118,ENUM_CLASS,NONE,PARENT_NOT_SET,6,6,11,1,0,0,0,"FORCE_SPACE",0,0," class"
-118,TYPE,ENUM,PARENT_NOT_SET,12,12,14,1,0,0,0,"",0,0," e5"
-118,BIT_COLON,ENUM,PARENT_NOT_SET,15,15,16,1,0,0,0,"PUNCTUATOR",0,0," :"
-118,TYPE,BIT_COLON,PARENT_NOT_SET,17,17,25,1,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," unsigned"
-118,TYPE,BIT_COLON,PARENT_NOT_SET,26,26,29,1,0,0,0,"",0,0," int"
-118,BRACE_OPEN,ENUM,PARENT_NOT_SET,30,30,31,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
-118,WORD,NONE,PARENT_NOT_SET,32,32,34,1,1,1,0,"IN_ENUM,STMT_START,EXPR_START,ONE_LINER",0,0," a5"
-118,COMMA,NONE,PARENT_NOT_SET,34,34,35,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
-118,WORD,NONE,PARENT_NOT_SET,36,36,38,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," b5"
-118,COMMA,NONE,PARENT_NOT_SET,38,38,39,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
-118,WORD,NONE,PARENT_NOT_SET,40,40,42,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," d5"
-118,BRACE_CLOSE,ENUM,PARENT_NOT_SET,43,43,44,1,0,0,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," }"
-118,SEMICOLON,ENUM,PARENT_NOT_SET,44,44,45,0,0,0,0,"PUNCTUATOR",0,0," ;"
-118,NEWLINE,NONE,PARENT_NOT_SET,45,45,1,0,0,0,0,"",2,0,
-120,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,35,0,0,0,0,"",0,0," // enum class type : integral_type"
-120,NEWLINE,NONE,PARENT_NOT_SET,35,35,1,0,0,0,0,"",1,0,
-121,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START,INCOMPLETE",0,0," enum"
-121,ENUM_CLASS,NONE,PARENT_NOT_SET,6,6,11,1,0,0,0,"FORCE_SPACE,INCOMPLETE",0,0," class"
-121,TYPE,ENUM,PARENT_NOT_SET,12,12,14,1,0,0,0,"INCOMPLETE",0,0," e6"
-121,BIT_COLON,ENUM,PARENT_NOT_SET,15,15,16,1,0,0,0,"PUNCTUATOR",0,0," :"
-121,TYPE,BIT_COLON,PARENT_NOT_SET,17,17,22,1,0,0,0,"STMT_START,EXPR_START",0,0," short"
-121,SEMICOLON,ENUM,PARENT_NOT_SET,22,22,23,0,0,0,0,"PUNCTUATOR",0,0," ;"
-121,NEWLINE,NONE,PARENT_NOT_SET,23,23,1,0,0,0,0,"",2,0,
-123,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,19,0,0,0,0,"",0,0," // enum class type"
-123,NEWLINE,NONE,PARENT_NOT_SET,19,19,1,0,0,0,0,"",1,0,
-124,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START,INCOMPLETE",0,0," enum"
-124,ENUM_CLASS,NONE,PARENT_NOT_SET,6,6,11,1,0,0,0,"FORCE_SPACE,INCOMPLETE",0,0," class"
-124,TYPE,ENUM,PARENT_NOT_SET,12,12,14,1,0,0,0,"INCOMPLETE",0,0," e7"
-124,SEMICOLON,ENUM,PARENT_NOT_SET,14,14,15,0,0,0,0,"PUNCTUATOR",0,0," ;"
-124,NEWLINE,NONE,PARENT_NOT_SET,15,15,1,0,0,0,0,"",2,0,
-126,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,39,0,0,0,0,"",0,0," // enum : integral_type { ... } x, ..."
-126,NEWLINE,NONE,PARENT_NOT_SET,39,39,1,0,0,0,0,"",1,0,
-127,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"STMT_START,EXPR_START",0,0," enum"
-127,BIT_COLON,ENUM,PARENT_NOT_SET,6,6,7,1,0,0,0,"PUNCTUATOR",0,0," :"
-127,TYPE,BIT_COLON,PARENT_NOT_SET,8,8,12,1,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," long"
-127,TYPE,BIT_COLON,PARENT_NOT_SET,13,13,17,1,0,0,0,"",0,0," long"
-127,BRACE_OPEN,ENUM,PARENT_NOT_SET,18,18,19,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
-127,WORD,NONE,PARENT_NOT_SET,20,20,22,1,1,1,0,"IN_ENUM,STMT_START,EXPR_START,ONE_LINER",0,0," a8"
-127,COMMA,NONE,PARENT_NOT_SET,22,22,23,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
-127,WORD,NONE,PARENT_NOT_SET,24,24,26,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," b8"
-127,COMMA,NONE,PARENT_NOT_SET,26,26,27,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
-127,WORD,NONE,PARENT_NOT_SET,28,28,30,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," c8"
-127,BRACE_CLOSE,ENUM,PARENT_NOT_SET,31,31,32,1,0,0,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," }"
-127,WORD,NONE,PARENT_NOT_SET,33,33,36,1,0,0,0,"STMT_START,EXPR_START,VAR_DEF,VAR_1ST,VAR_INLINE",0,0," e81"
-127,COMMA,NONE,PARENT_NOT_SET,36,36,37,0,0,0,0,"PUNCTUATOR",0,0," ,"
-127,WORD,NONE,PARENT_NOT_SET,38,38,41,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," e82"
-127,SEMICOLON,ENUM,PARENT_NOT_SET,41,41,42,0,0,0,0,"PUNCTUATOR",0,0," ;"
-127,NEWLINE,NONE,PARENT_NOT_SET,42,42,1,0,0,0,0,"",2,0,
-129,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,23,0,0,0,0,"",0,0," // enum { ... } x, ..."
-129,NEWLINE,NONE,PARENT_NOT_SET,23,23,1,0,0,0,0,"",1,0,
-130,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"STMT_START,EXPR_START",0,0," enum"
-130,BRACE_OPEN,ENUM,PARENT_NOT_SET,6,6,7,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
-130,WORD,NONE,PARENT_NOT_SET,8,8,10,1,1,1,0,"IN_ENUM,STMT_START,EXPR_START,ONE_LINER",0,0," a9"
-130,COMMA,NONE,PARENT_NOT_SET,10,10,11,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
-130,WORD,NONE,PARENT_NOT_SET,12,12,14,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," b9"
-130,COMMA,NONE,PARENT_NOT_SET,14,14,15,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
-130,WORD,NONE,PARENT_NOT_SET,16,16,18,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," c9"
-130,BRACE_CLOSE,ENUM,PARENT_NOT_SET,19,19,20,1,0,0,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," }"
-130,WORD,NONE,PARENT_NOT_SET,21,21,24,1,0,0,0,"STMT_START,EXPR_START,VAR_DEF,VAR_1ST,VAR_INLINE",0,0," e91"
-130,COMMA,NONE,PARENT_NOT_SET,24,24,25,0,0,0,0,"PUNCTUATOR",0,0," ,"
-130,WORD,NONE,PARENT_NOT_SET,26,26,29,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," e92"
-130,SEMICOLON,ENUM,PARENT_NOT_SET,29,29,30,0,0,0,0,"PUNCTUATOR",0,0," ;"
-130,NEWLINE,NONE,PARENT_NOT_SET,30,30,1,0,0,0,0,"",2,0,
-132,UNION,NONE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," union"
-132,WORD,NONE,PARENT_NOT_SET,7,7,17,1,0,0,0,"FORCE_SPACE",0,0," API_EXPORT"
-132,TYPE,UNION,PARENT_NOT_SET,18,18,20,1,0,0,0,"VAR_TYPE",0,0," u1"
-132,BRACE_OPEN,UNION,PARENT_NOT_SET,21,21,22,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
-132,TYPE,NONE,PARENT_NOT_SET,23,23,26,1,1,1,0,"FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE,ONE_LINER",0,0," int"
-132,WORD,NONE,PARENT_NOT_SET,27,27,28,1,1,1,0,"VAR_DEF,VAR_1ST,ONE_LINER",0,0," x"
-132,SEMICOLON,NONE,PARENT_NOT_SET,28,28,29,0,1,1,0,"ONE_LINER,PUNCTUATOR",0,0," ;"
-132,TYPE,NONE,PARENT_NOT_SET,30,30,34,1,1,1,0,"FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE,ONE_LINER",0,0," long"
-132,WORD,NONE,PARENT_NOT_SET,35,35,36,1,1,1,0,"VAR_DEF,VAR_1ST,ONE_LINER",0,0," y"
-132,SEMICOLON,NONE,PARENT_NOT_SET,36,36,37,0,1,1,0,"ONE_LINER,PUNCTUATOR",0,0," ;"
-132,BRACE_CLOSE,UNION,PARENT_NOT_SET,38,38,39,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," }"
-132,WORD,NONE,PARENT_NOT_SET,40,40,43,1,0,0,0,"STMT_START,EXPR_START,VAR_DEF,VAR_1ST,VAR_INLINE",0,0," u11"
-132,COMMA,NONE,PARENT_NOT_SET,43,43,44,0,0,0,0,"PUNCTUATOR",0,0," ,"
-132,PTR_TYPE,UNION,PARENT_NOT_SET,45,45,46,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
-132,WORD,NONE,PARENT_NOT_SET,46,46,49,0,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE,LVALUE",0,0," u12"
-132,ASSIGN,NONE,PARENT_NOT_SET,50,50,51,1,0,0,0,"PUNCTUATOR",0,0," ="
-132,WORD,NONE,PARENT_NOT_SET,52,52,59,1,0,0,0,"EXPR_START",0,0," nullptr"
-132,COMMA,NONE,PARENT_NOT_SET,59,59,60,0,0,0,0,"PUNCTUATOR",0,0," ,"
-132,PTR_TYPE,UNION,PARENT_NOT_SET,61,61,62,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
-132,WORD,NONE,PARENT_NOT_SET,62,62,65,0,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE,LVALUE",0,0," u13"
-132,BRACE_OPEN,BRACED_INIT_LIST,PARENT_NOT_SET,65,65,66,0,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
-132,NUMBER,NONE,PARENT_NOT_SET,66,66,67,0,1,1,0,"STMT_START,EXPR_START,ONE_LINER",0,0," 0"
-132,BRACE_CLOSE,BRACED_INIT_LIST,PARENT_NOT_SET,67,67,68,0,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," }"
-132,SEMICOLON,UNION,PARENT_NOT_SET,68,68,69,0,0,0,0,"PUNCTUATOR",0,0," ;"
-132,NEWLINE,NONE,PARENT_NOT_SET,69,69,1,0,0,0,0,"",2,0,
-134,UNION,NONE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," union"
-134,WORD,NONE,PARENT_NOT_SET,7,7,17,1,0,0,0,"FORCE_SPACE",0,0," API_EXPORT"
-134,TYPE,UNION,PARENT_NOT_SET,18,18,20,1,0,0,0,"FORCE_SPACE,VAR_TYPE",0,0," u1"
-134,WORD,NONE,PARENT_NOT_SET,21,21,24,1,0,0,0,"VAR_DEF,VAR_1ST",0,0," u21"
-134,SEMICOLON,UNION,PARENT_NOT_SET,24,24,25,0,0,0,0,"PUNCTUATOR",0,0," ;"
-134,NEWLINE,NONE,PARENT_NOT_SET,25,25,1,0,0,0,0,"",1,0, \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/class_enum_struct_union.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/class_enum_struct_union.txt
deleted file mode 100644
index c52e7000..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/class_enum_struct_union.txt
+++ /dev/null
@@ -1,692 +0,0 @@
-
-# option(s) with 'not default' value: 0
-#
-# -=====-
-# number of loops = 1
-# -=====-
-# language = CPP
-# -=====-
-# Line Tag Parent_type Type of the parent Columns Br/Lvl/pp Flags Nl Text
-# 1> COMMENT_MULTI| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 4/ 7/ 3][0/0/0][ 0][9-0] /**␤ * the enum (and variable declarations thereof) could be of␤ * the following forms:␤ *␤ * "enum type [: integral_type] { ... } [x, ...]"␤ * "enum type [: integral_type]"␤ * "enum class type [: integral_type] { ... } [x, ...]"␤ * "enum class type [: integral_type]"␤ * "enum [: integral_type] { ... } x, ..."␤ */
-# 10> NEWLINE| NONE| PARENT_NOT_SET[ 7/ 7/ 4/ 0][0/0/0][ 0][2-0]
-# 12> COMMENT_MULTI| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 4/ 7/ 0][0/0/0][ 0][9-0] /**␤ * the class/struct (and variable declarations thereof) could be of␤ * the following forms:␤ *␤ * template<...> class/struct[<...>] [macros/attributes ...] type [: bases ...] { }␤ * template<...> class/struct[<...>] [macros/attributes ...] type␤ * class/struct[ [macros/attributes ...] type [: bases ...] { } [x, ...]␤ * class/struct [macros/attributes ...] type [x, ...]␤ * class/struct [macros/attributes ...] [: bases] { } x, ...␤ */
-# 21> NEWLINE| NONE| PARENT_NOT_SET[ 7/ 7/ 1/ 0][0/0/0][ 0][2-0]
-# 23> PREPROC| PP_DEFINE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][1/1/0][ 2 001c 0001][0-0] #
-# 23> PP_DEFINE| NONE| PARENT_NOT_SET[ 2/ 2/ 8/ 0][1/1/0][ 2 0001][0-0] define
-# 23> MACRO_FUNC| NONE| PARENT_NOT_SET[ 9/ 9/ 16/ 1][1/1/0][ 8 0001][0-0] ALIGNAS
-# 23> FPAREN_OPEN| MACRO_FUNC| PARENT_NOT_SET[ 16/ 16/ 17/ 0][1/1/0][ 2 0000 0001][0-0] (
-# 23> WORD| NONE| PARENT_NOT_SET[ 17/ 17/ 31/ 0][1/2/0][ 8 0011][0-0] byte_alignment
-# 23> FPAREN_CLOSE| MACRO_FUNC| PARENT_NOT_SET[ 31/ 31/ 32/ 0][1/1/0][ 2 0000 0011][0-0] )
-# 23> ATTRIBUTE| NONE| PARENT_NOT_SET[ 33/ 33/ 46/ 1][1/1/0][ 1][0-0] __attribute__
-# 23> FPAREN_OPEN| ATTRIBUTE| PARENT_NOT_SET[ 46/ 46/ 47/ 0][1/1/0][ 2 0000 0001][0-0] (
-# 23> PAREN_OPEN| NONE| PARENT_NOT_SET[ 47/ 47/ 48/ 0][1/2/0][ 2 0008 0001][0-0] (
-# 23> FUNC_CALL| NONE| PARENT_NOT_SET[ 48/ 48/ 55/ 0][1/3/0][ 8 0001][0-0] aligned
-# 23> FPAREN_OPEN| FUNC_CALL| PARENT_NOT_SET[ 55/ 55/ 56/ 0][1/3/0][ 2 0000 0001][0-0] (
-# 23> WORD| NONE| PARENT_NOT_SET[ 56/ 56/ 70/ 0][1/4/0][ 8 0011][0-0] byte_alignment
-# 23> FPAREN_CLOSE| FUNC_CALL| PARENT_NOT_SET[ 70/ 70/ 71/ 0][1/3/0][ 2 0000 0011][0-0] )
-# 23> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 71/ 71/ 72/ 0][1/2/0][ 2 0000 0001][0-0] )
-# 23> FPAREN_CLOSE| ATTRIBUTE| PARENT_NOT_SET[ 72/ 72/ 73/ 0][1/1/0][ 2 0000 0001][0-0] )
-# 23> NEWLINE| NONE| PARENT_NOT_SET[ 73/ 73/ 1/ 0][0/0/0][ 0][2-0]
-# 25> PREPROC| PP_IF| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0010 0001][0-0] #
-# 25> PP_IF| NONE| PARENT_NOT_SET[ 2/ 2/ 4/ 0][0/0/1][ 2 0001][0-0] if
-# 25> PP_DEFINED| NONE| PARENT_NOT_SET[ 5/ 5/ 12/ 1][0/0/1][ 8 0001][0-0] defined
-# 25> PAREN_OPEN| NONE| PARENT_NOT_SET[ 13/ 13/ 14/ 1][0/0/1][ 2 0000 0001][0-0] (
-# 25> WORD| NONE| PARENT_NOT_SET[ 14/ 14/ 22/ 0][0/0/1][ 8 0001][0-0] __unix__
-# 25> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 22/ 22/ 23/ 0][0/0/1][ 2 0000 0001][0-0] )
-# 25> BOOL| NONE| PARENT_NOT_SET[ 24/ 24/ 26/ 1][0/0/1][ 2 0000 0001][0-0] ||
-# 25> PAREN_OPEN| NONE| PARENT_NOT_SET[ 27/ 27/ 28/ 1][0/0/1][ 2 0000 0001][0-0] (
-# 25> PP_DEFINED| NONE| PARENT_NOT_SET[ 28/ 28/ 35/ 0][0/0/1][ 8 0001][0-0] defined
-# 25> PAREN_OPEN| NONE| PARENT_NOT_SET[ 36/ 36/ 37/ 1][0/0/1][ 2 0000 0001][0-0] (
-# 25> WORD| NONE| PARENT_NOT_SET[ 37/ 37/ 46/ 0][0/0/1][ 8 0001][0-0] __APPLE__
-# 25> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 46/ 46/ 47/ 0][0/0/1][ 2 0000 0001][0-0] )
-# 25> BOOL| NONE| PARENT_NOT_SET[ 48/ 48/ 50/ 1][0/0/1][ 2 0000 0001][0-0] &&
-# 25> PP_DEFINED| NONE| PARENT_NOT_SET[ 51/ 51/ 58/ 1][0/0/1][ 1][0-0] defined
-# 25> PAREN_OPEN| NONE| PARENT_NOT_SET[ 59/ 59/ 60/ 1][0/0/1][ 2 0000 0001][0-0] (
-# 25> WORD| NONE| PARENT_NOT_SET[ 60/ 60/ 68/ 0][0/0/1][ 8 0001][0-0] __MACH__
-# 25> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 68/ 68/ 69/ 0][0/0/1][ 2 0000 0001][0-0] )
-# 25> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 69/ 69/ 70/ 0][0/0/1][ 2 0000 0001][0-0] )
-# 25> NEWLINE| NONE| PARENT_NOT_SET[ 70/ 70/ 1/ 0][0/0/1][ 0][1-0]
-# 26> PREPROC| PP_DEFINE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][1/1/1][ 2 001c 0001][0-0] #
-# 26> PP_DEFINE| NONE| PARENT_NOT_SET[ 2/ 2/ 8/ 0][1/1/1][ 2 0001][0-0] define
-# 26> MACRO| NONE| PARENT_NOT_SET[ 9/ 9/ 19/ 1][1/1/1][ 2 0001][0-0] API_EXPORT
-# 26> ATTRIBUTE| NONE| PARENT_NOT_SET[ 20/ 20/ 33/ 1][1/1/1][ 8 0001][0-0] __attribute__
-# 26> FPAREN_OPEN| ATTRIBUTE| PARENT_NOT_SET[ 34/ 34/ 35/ 1][1/1/1][ 2 000c 0001][0-0] (
-# 26> PAREN_OPEN| NONE| PARENT_NOT_SET[ 35/ 35/ 36/ 0][1/2/1][ 2 0008 0001][0-0] (
-# 26> FUNC_CALL| NONE| PARENT_NOT_SET[ 36/ 36/ 46/ 0][1/3/1][ 8 0001][0-0] visibility
-# 26> FPAREN_OPEN| FUNC_CALL| PARENT_NOT_SET[ 46/ 46/ 47/ 0][1/3/1][ 2 0000 0001][0-0] (
-# 26> STRING| NONE| PARENT_NOT_SET[ 47/ 47/ 56/ 0][1/4/1][ 8 0011][0-0] "default"
-# 26> FPAREN_CLOSE| FUNC_CALL| PARENT_NOT_SET[ 56/ 56/ 57/ 0][1/3/1][ 2 0000 0011][0-0] )
-# 26> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 57/ 57/ 58/ 0][1/2/1][ 2 0000 0001][0-0] )
-# 26> FPAREN_CLOSE| ATTRIBUTE| PARENT_NOT_SET[ 58/ 58/ 59/ 0][1/1/1][ 2 0000 0001][0-0] )
-# 26> NEWLINE| NONE| PARENT_NOT_SET[ 59/ 59/ 1/ 0][0/0/1][ 0][1-0]
-# 27> PREPROC| PP_ELSE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0010 0001][0-0] #
-# 27> PP_ELSE| NONE| PP_IF[ 2/ 2/ 6/ 0][0/0/1][ 2 0001][0-0] elif
-# 27> PP_DEFINED| NONE| PARENT_NOT_SET[ 7/ 7/ 14/ 1][0/0/1][ a 0001][0-0] defined
-# 27> WORD| NONE| PARENT_NOT_SET[ 15/ 15/ 21/ 1][0/0/1][ 1][0-0] _WIN32
-# 27> NEWLINE| NONE| PARENT_NOT_SET[ 21/ 21/ 1/ 0][0/0/1][ 0][1-0]
-# 28> PREPROC| PP_DEFINE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][1/1/1][ 2 001c 0001][0-0] #
-# 28> PP_DEFINE| NONE| PARENT_NOT_SET[ 2/ 2/ 8/ 0][1/1/1][ 2 0001][0-0] define
-# 28> MACRO| NONE| PARENT_NOT_SET[ 9/ 9/ 19/ 1][1/1/1][ 2 0001][0-0] API_EXPORT
-# 28> DECLSPEC| NONE| PARENT_NOT_SET[ 20/ 20/ 30/ 1][1/1/1][ c 0001][0-0] __declspec
-# 28> PAREN_OPEN| DECLSPEC| PARENT_NOT_SET[ 30/ 30/ 31/ 0][1/1/1][ 2 0000 0001][0-0] (
-# 28> WORD| NONE| PARENT_NOT_SET[ 31/ 31/ 40/ 0][1/2/1][ 8 0001][0-0] dllexport
-# 28> PAREN_CLOSE| DECLSPEC| PARENT_NOT_SET[ 40/ 40/ 41/ 0][1/1/1][ 2 0000 0001][0-0] )
-# 28> NEWLINE| NONE| PARENT_NOT_SET[ 41/ 41/ 1/ 0][0/0/1][ 0][1-0]
-# 29> PREPROC| PP_ELSE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0010 0001][0-0] #
-# 29> PP_ELSE| NONE| PP_IF[ 2/ 2/ 6/ 0][0/0/1][ 1][0-0] else
-# 29> NEWLINE| NONE| PARENT_NOT_SET[ 6/ 6/ 1/ 0][0/0/1][ 0][1-0]
-# 30> PREPROC| PP_DEFINE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][1/1/1][ 2 001c 0001][0-0] #
-# 30> PP_DEFINE| NONE| PARENT_NOT_SET[ 2/ 2/ 8/ 0][1/1/1][ 2 0001][0-0] define
-# 30> MACRO| NONE| PARENT_NOT_SET[ 9/ 9/ 19/ 1][1/1/1][ 1][0-0] API_EXPORT
-# 30> NEWLINE| NONE| PARENT_NOT_SET[ 19/ 19/ 1/ 0][0/0/1][ 0][1-0]
-# 31> PREPROC| PP_ENDIF| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0010 0001][0-0] #
-# 31> PP_ENDIF| NONE| PP_IF[ 2/ 2/ 7/ 0][0/0/0][ 1][0-0] endif
-# 31> NEWLINE| NONE| PARENT_NOT_SET[ 7/ 7/ 1/ 0][0/0/0][ 0][2-0]
-# 33> NAMESPACE| NONE| PARENT_NOT_SET[ 1/ 1/ 10/ 0][0/0/0][ e 0000][0-0] namespace
-# 33> WORD| NAMESPACE| PARENT_NOT_SET[ 11/ 11/ 26/ 1][0/0/0][ 0][0-0] outer_namespace
-# 33> NEWLINE| NONE| PARENT_NOT_SET[ 26/ 26/ 1/ 0][0/0/0][ 0][1-0]
-# 34> BRACE_OPEN| NAMESPACE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0000 0000][0-0] {
-# 34> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][1/1/0][ 1000][2-0]
-# 36> NAMESPACE| NONE| PARENT_NOT_SET[ 1/ 1/ 10/ 0][1/1/0][ e 1000][0-0] namespace
-# 36> WORD| NAMESPACE| PARENT_NOT_SET[ 11/ 11/ 26/ 1][1/1/0][ 1000][0-0] inner_namespace
-# 36> NEWLINE| NONE| PARENT_NOT_SET[ 26/ 26/ 1/ 0][1/1/0][ 1000][1-0]
-# 37> BRACE_OPEN| NAMESPACE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][1/1/0][ 2 0000 1000][0-0] {
-# 37> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][2/2/0][ 1000][2-0]
-# 39> CLASS| NONE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][2/2/0][ e 1000][0-0] class
-# 39> TYPE| CLASS| PARENT_NOT_SET[ 7/ 7/ 12/ 1][2/2/0][ 1000][0-0] Base1
-# 39> BRACE_OPEN| CLASS| PARENT_NOT_SET[ 13/ 13/ 14/ 1][2/2/0][ 2 c000 1400][0-0] {
-# 39> BRACE_CLOSE| CLASS| PARENT_NOT_SET[ 15/ 15/ 16/ 1][2/2/0][ 2 c000 1400][0-0] }
-# 39> SEMICOLON| CLASS| PARENT_NOT_SET[ 16/ 16/ 17/ 0][2/2/0][ 2 0000 0000][0-0] ;
-# 39> NEWLINE| NONE| PARENT_NOT_SET[ 17/ 17/ 1/ 0][2/2/0][ 0][2-0]
-# 41> TEMPLATE| NONE| PARENT_NOT_SET[ 1/ 1/ 9/ 0][2/2/0][ c 0000][0-0] template
-# 41> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 9/ 9/ 10/ 0][2/2/0][ 2 0000 0040][0-0] <
-# 41> TYPENAME| NONE| PARENT_NOT_SET[ 10/ 10/ 18/ 0][2/3/0][ 8 0040][0-0] typename
-# 41> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 18/ 18/ 19/ 0][2/2/0][ 2 0000 0040][0-0] >
-# 41> CLASS| TEMPLATE| PARENT_NOT_SET[ 20/ 20/ 25/ 1][2/2/0][ a 0000][0-0] class
-# 41> TYPE| CLASS| PARENT_NOT_SET[ 26/ 26/ 31/ 1][2/2/0][ 0][0-0] Base2
-# 41> BRACE_OPEN| CLASS| PARENT_NOT_SET[ 32/ 32/ 33/ 1][2/2/0][ 2 c000 0400][0-0] {
-# 41> BRACE_CLOSE| CLASS| PARENT_NOT_SET[ 34/ 34/ 35/ 1][2/2/0][ 2 c000 0400][0-0] }
-# 41> SEMICOLON| CLASS| PARENT_NOT_SET[ 35/ 35/ 36/ 0][2/2/0][ 2 0000 0000][0-0] ;
-# 41> NEWLINE| NONE| PARENT_NOT_SET[ 36/ 36/ 1/ 0][2/2/0][ 0][2-0]
-# 43> BRACE_CLOSE| NAMESPACE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][1/1/0][ 2 0000 0000][0-0] }
-# 43> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][1/1/0][ 0][2-0]
-# 45> BRACE_CLOSE| NAMESPACE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0000 0000][0-0] }
-# 45> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][0/0/0][ 0][2-0]
-# 47> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 82/ 0][0/0/0][ 0][0-0] // template<...> class/struct[<...>] [macros/attributes ...] type : bases ... { }
-# 47> NEWLINE| NONE| PARENT_NOT_SET[ 82/ 82/ 1/ 0][0/0/0][ 0][1-0]
-# 48> TEMPLATE| NONE| PARENT_NOT_SET[ 1/ 1/ 9/ 0][0/0/0][ c 0000][0-0] template
-# 48> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 9/ 9/ 10/ 0][0/0/0][ 2 0000 0040][0-0] <
-# 48> TYPENAME| NONE| PARENT_NOT_SET[ 10/ 10/ 18/ 0][0/1/0][ 8 0040][0-0] typename
-# 48> COMMA| NONE| PARENT_NOT_SET[ 18/ 18/ 19/ 0][0/1/0][ 2 0000 0040][0-0] ,
-# 48> TYPENAME| NONE| PARENT_NOT_SET[ 20/ 20/ 28/ 1][0/1/0][ 8 0040][0-0] typename
-# 48> ELLIPSIS| NONE| PARENT_NOT_SET[ 29/ 29/ 32/ 1][0/1/0][ 2 0000 0040][0-0] ...
-# 48> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 32/ 32/ 33/ 0][0/0/0][ 2 0000 0040][0-0] >
-# 48> NEWLINE| NONE| PARENT_NOT_SET[ 33/ 33/ 1/ 0][0/0/0][ 0][1-0]
-# 49> CLASS| TEMPLATE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ a 0000][0-0] class
-# 49> WORD| NONE| PARENT_NOT_SET[ 7/ 7/ 17/ 1][0/0/0][ 2 0000][0-0] API_EXPORT
-# 49> ATTRIBUTE| NONE| PARENT_NOT_SET[ 18/ 18/ 31/ 1][0/0/0][ 0][0-0] __attribute__
-# 49> FPAREN_OPEN| ATTRIBUTE| PARENT_NOT_SET[ 31/ 31/ 32/ 0][0/0/0][ 2 0000 0000][0-0] (
-# 49> PAREN_OPEN| NONE| PARENT_NOT_SET[ 32/ 32/ 33/ 0][0/1/0][ 2 0008 0000][0-0] (
-# 49> WORD| NONE| PARENT_NOT_SET[ 33/ 33/ 47/ 0][0/2/0][ 8 0000][0-0] __deprecated__
-# 49> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 47/ 47/ 48/ 0][0/1/0][ 2 0000 0000][0-0] )
-# 49> FPAREN_CLOSE| ATTRIBUTE| PARENT_NOT_SET[ 48/ 48/ 49/ 0][0/0/0][ 2 0000 0000][0-0] )
-# 49> MACRO_FUNC_CALL| NONE| PARENT_NOT_SET[ 50/ 50/ 57/ 1][0/0/0][ 0][0-0] ALIGNAS
-# 49> FPAREN_OPEN| MACRO_FUNC_CALL| PARENT_NOT_SET[ 57/ 57/ 58/ 0][0/0/0][ 2 0000 0000][0-0] (
-# 49> NUMBER| NONE| PARENT_NOT_SET[ 58/ 58/ 59/ 0][0/1/0][ 8 0000][0-0] 4
-# 49> FPAREN_CLOSE| MACRO_FUNC_CALL| PARENT_NOT_SET[ 59/ 59/ 60/ 0][0/0/0][ 2 0000 0000][0-0] )
-# 49> TYPE| CLASS| PARENT_NOT_SET[ 61/ 61/ 63/ 1][0/0/0][ 0][0-0] c1
-# 49> NEWLINE| NONE| PARENT_NOT_SET[ 63/ 63/ 1/ 0][0/0/0][ 0][1-0]
-# 50> CLASS_COLON| CLASS| PARENT_NOT_SET[ 9/ 1/ 2/ 0][0/0/0][ 2 0000 0800][0-0] :
-# 50> QUALIFIER| NONE| PARENT_NOT_SET[ 11/ 3/ 9/ 1][0/0/0][ e 0800][0-0] public
-# 50> TYPE| NONE| PARENT_NOT_SET[ 18/ 10/ 25/ 1][0/0/0][ 800][0-0] outer_namespace
-# 50> DC_MEMBER| NONE| PARENT_NOT_SET[ 33/ 25/ 27/ 0][0/0/0][ 2 0000 0800][0-0] ::
-# 50> TYPE| NONE| PARENT_NOT_SET[ 35/ 27/ 42/ 0][0/0/0][ 800][0-0] inner_namespace
-# 50> DC_MEMBER| NONE| PARENT_NOT_SET[ 50/ 42/ 44/ 0][0/0/0][ 2 0000 0800][0-0] ::
-# 50> TYPE| NONE| PARENT_NOT_SET[ 52/ 44/ 49/ 0][0/0/0][ 800][0-0] Base1
-# 50> COMMA| NONE| PARENT_NOT_SET[ 57/ 49/ 50/ 0][0/0/0][ 2 0000 0800][0-0] ,
-# 50> NEWLINE| NONE| PARENT_NOT_SET[ 58/ 50/ 3/ 0][0/0/0][ 0][1-0]
-# 51> QUALIFIER| NONE| PARENT_NOT_SET[ 9/ 3/ 9/ 0][0/0/0][ a 0800][0-0] public
-# 51> TYPE| NONE| PARENT_NOT_SET[ 16/ 10/ 25/ 1][0/0/0][ 800][0-0] outer_namespace
-# 51> DC_MEMBER| NONE| PARENT_NOT_SET[ 31/ 25/ 27/ 0][0/0/0][ 2 0000 0800][0-0] ::
-# 51> TYPE| NONE| PARENT_NOT_SET[ 33/ 27/ 42/ 0][0/0/0][ 800][0-0] inner_namespace
-# 51> DC_MEMBER| NONE| PARENT_NOT_SET[ 48/ 42/ 44/ 0][0/0/0][ 2 0000 0800][0-0] ::
-# 51> TYPE| NONE| PARENT_NOT_SET[ 50/ 44/ 49/ 0][0/0/0][ 800][0-0] Base2
-# 51> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 55/ 49/ 50/ 0][0/0/0][ 2 0000 0840][0-0] <
-# 51> TYPE| NONE| PARENT_NOT_SET[ 56/ 50/ 65/ 0][0/1/0][ 8 0840][0-0] outer_namespace
-# 51> DC_MEMBER| NONE| PARENT_NOT_SET[ 71/ 65/ 67/ 0][0/1/0][ 2 0000 0840][0-0] ::
-# 51> TYPE| NONE| PARENT_NOT_SET[ 73/ 67/ 82/ 0][0/1/0][ 840][0-0] inner_namespace
-# 51> DC_MEMBER| NONE| PARENT_NOT_SET[ 88/ 82/ 84/ 0][0/1/0][ 2 0000 0840][0-0] ::
-# 51> TYPE| NONE| PARENT_NOT_SET[ 90/ 84/ 89/ 0][0/1/0][ 840][0-0] Base1
-# 51> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 95/ 89/ 90/ 0][0/0/0][ 2 0000 0840][0-0] >
-# 51> NEWLINE| NONE| PARENT_NOT_SET[ 96/ 90/ 1/ 0][0/0/0][ 0][1-0]
-# 52> BRACE_OPEN| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 8008 0400][0-0] {
-# 52> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][1/1/0][ 400][2-0]
-# 54> BRACE_CLOSE| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 8000 0400][0-0] }
-# 54> SEMICOLON| CLASS| PARENT_NOT_SET[ 2/ 2/ 3/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 54> NEWLINE| NONE| PARENT_NOT_SET[ 3/ 3/ 1/ 0][0/0/0][ 0][2-0]
-# 56> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 70/ 0][0/0/0][ 0][0-0] // template<...> class/struct[<...>] [macros/attributes ...] type { }
-# 56> NEWLINE| NONE| PARENT_NOT_SET[ 70/ 70/ 1/ 0][0/0/0][ 0][1-0]
-# 57> TEMPLATE| NONE| PARENT_NOT_SET[ 1/ 1/ 9/ 0][0/0/0][ c 0000][0-0] template
-# 57> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 9/ 9/ 10/ 0][0/0/0][ 2 0000 0040][0-0] <
-# 57> TYPENAME| NONE| PARENT_NOT_SET[ 10/ 10/ 18/ 0][0/1/0][ 8 0040][0-0] typename
-# 57> COMMA| NONE| PARENT_NOT_SET[ 18/ 18/ 19/ 0][0/1/0][ 2 0000 0040][0-0] ,
-# 57> TYPENAME| NONE| PARENT_NOT_SET[ 20/ 20/ 28/ 1][0/1/0][ 8 0040][0-0] typename
-# 57> ELLIPSIS| NONE| PARENT_NOT_SET[ 29/ 29/ 32/ 1][0/1/0][ 2 0000 0040][0-0] ...
-# 57> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 32/ 32/ 33/ 0][0/0/0][ 2 0000 0040][0-0] >
-# 57> NEWLINE| NONE| PARENT_NOT_SET[ 33/ 33/ 1/ 0][0/0/0][ 0][1-0]
-# 58> CLASS| TEMPLATE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ a 0000][0-0] class
-# 58> WORD| NONE| PARENT_NOT_SET[ 7/ 7/ 17/ 1][0/0/0][ 2 0000][0-0] API_EXPORT
-# 58> TYPE| CLASS| PARENT_NOT_SET[ 18/ 18/ 20/ 1][0/0/0][ 0][0-0] c2
-# 58> NEWLINE| NONE| PARENT_NOT_SET[ 20/ 20/ 1/ 0][0/0/0][ 0][1-0]
-# 59> BRACE_OPEN| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0000 0400][0-0] {
-# 59> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][1/1/0][ 400][1-0]
-# 60> ACCESS| NONE| PARENT_NOT_SET[ 1/ 1/ 7/ 0][1/1/0][ c 0400][0-0] public
-# 60> ACCESS_COLON| NONE| PARENT_NOT_SET[ 7/ 7/ 8/ 0][1/1/0][ 2 0000 0400][0-0] :
-# 60> NEWLINE| NONE| PARENT_NOT_SET[ 8/ 8/ 4/ 0][1/1/0][ 400][2-0]
-# 62> TEMPLATE| NONE| PARENT_NOT_SET[ 1/ 4/ 12/ 0][1/1/0][ c 0400][0-0] template
-# 62> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 9/ 12/ 13/ 0][1/1/0][ 2 0000 0440][0-0] <
-# 62> TYPENAME| NONE| PARENT_NOT_SET[ 10/ 13/ 21/ 0][1/2/0][ a 0440][0-0] typename
-# 62> TYPE| NONE| PARENT_NOT_SET[ 19/ 22/ 23/ 1][1/2/0][ 440][0-0] T
-# 62> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 20/ 23/ 24/ 0][1/1/0][ 2 0000 0440][0-0] >
-# 62> NEWLINE| NONE| PARENT_NOT_SET[ 21/ 24/ 4/ 0][1/1/0][ 400][1-0]
-# 63> STRUCT| TEMPLATE| PARENT_NOT_SET[ 1/ 4/ 10/ 0][1/1/0][ a 0400][0-0] struct
-# 63> TYPE| STRUCT| PARENT_NOT_SET[ 8/ 11/ 22/ 1][1/1/0][ 400][0-0] inner_class
-# 63> NEWLINE| NONE| PARENT_NOT_SET[ 19/ 22/ 4/ 0][1/1/0][ 400][1-0]
-# 64> BRACE_OPEN| STRUCT| PARENT_NOT_SET[ 1/ 4/ 5/ 0][1/1/0][ 2 0000 0400][0-0] {
-# 64> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 5/ 7/ 0][2/2/0][ 402][1-0]
-# 65> QUALIFIER| NONE| PARENT_NOT_SET[ 9/ 7/ 13/ 0][2/2/0][ 8e 0402][0-0] static
-# 65> TYPE| NONE| PARENT_NOT_SET[ 16/ 14/ 25/ 1][2/2/0][ 80 0402][0-0] inner_class
-# 65> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 27/ 25/ 26/ 0][2/2/0][ 2 0000 0442][0-0] <
-# 65> TYPE| NONE| PARENT_NOT_SET[ 28/ 26/ 27/ 0][2/3/0][ 8 0442][0-0] T
-# 65> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 29/ 27/ 28/ 0][2/2/0][ 2 0000 0442][0-0] >
-# 65> PTR_TYPE| NONE| PARENT_NOT_SET[ 31/ 29/ 30/ 1][2/2/0][ 2 0088 0402][0-0] *
-# 65> WORD| NONE| PARENT_NOT_SET[ 32/ 30/ 43/ 0][2/2/0][ 308 0402][0-0] m_inner_class
-# 65> SEMICOLON| NONE| PARENT_NOT_SET[ 45/ 43/ 44/ 0][2/2/0][ 2 0000 0402][0-0] ;
-# 65> NEWLINE| NONE| PARENT_NOT_SET[ 46/ 44/ 4/ 0][2/2/0][ 402][1-0]
-# 66> BRACE_CLOSE| STRUCT| PARENT_NOT_SET[ 1/ 4/ 5/ 0][1/1/0][ 2 0000 0402][0-0] }
-# 66> SEMICOLON| STRUCT| PARENT_NOT_SET[ 2/ 5/ 6/ 0][1/1/0][ 2 0000 0400][0-0] ;
-# 66> NEWLINE| NONE| PARENT_NOT_SET[ 3/ 6/ 1/ 0][1/1/0][ 400][1-0]
-# 67> BRACE_CLOSE| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0000 0400][0-0] }
-# 67> SEMICOLON| CLASS| PARENT_NOT_SET[ 2/ 2/ 3/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 67> NEWLINE| NONE| PARENT_NOT_SET[ 3/ 3/ 1/ 0][0/0/0][ 0][2-0]
-# 69> TEMPLATE| NONE| PARENT_NOT_SET[ 1/ 1/ 9/ 0][0/0/0][ c 0000][0-0] template
-# 69> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 9/ 9/ 10/ 0][0/0/0][ 2 0000 0040][0-0] <
-# 69> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 10/ 10/ 11/ 0][0/0/0][ 2 0008 0040][0-0] >
-# 69> TEMPLATE| NONE| PARENT_NOT_SET[ 12/ 12/ 20/ 1][0/0/0][ 8 0000][0-0] template
-# 69> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 20/ 20/ 21/ 0][0/0/0][ 2 0000 0040][0-0] <
-# 69> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 21/ 21/ 22/ 0][0/0/0][ 2 0008 0040][0-0] >
-# 69> STRUCT| TEMPLATE| PARENT_NOT_SET[ 23/ 23/ 29/ 1][0/0/0][ a 0000][0-0] struct
-# 69> WORD| NONE| PARENT_NOT_SET[ 30/ 30/ 40/ 1][0/0/0][ 2 0000][0-0] API_EXPORT
-# 69> TYPE| NONE| PARENT_NOT_SET[ 41/ 41/ 43/ 1][0/0/0][ 0][0-0] c2
-# 69> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 43/ 43/ 44/ 0][0/0/0][ 2 0000 0040][0-0] <
-# 69> TYPE| NONE| PARENT_NOT_SET[ 44/ 44/ 47/ 0][0/1/0][ 8 0040][0-0] int
-# 69> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 47/ 47/ 48/ 0][0/0/0][ 2 0000 0040][0-0] >
-# 69> DC_MEMBER| NONE| PARENT_NOT_SET[ 48/ 48/ 50/ 0][0/0/0][ 2 0008 0000][0-0] ::
-# 69> TYPE| STRUCT| PARENT_NOT_SET[ 50/ 50/ 61/ 0][0/0/0][ 80 0000][0-0] inner_class
-# 69> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 61/ 61/ 62/ 0][0/0/0][ 2 0000 0040][0-0] <
-# 69> TYPE| NONE| PARENT_NOT_SET[ 62/ 62/ 65/ 0][0/1/0][ 8 0040][0-0] int
-# 69> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 65/ 65/ 66/ 0][0/0/0][ 2 0000 0040][0-0] >
-# 69> PTR_TYPE| NONE| PARENT_NOT_SET[ 67/ 67/ 68/ 1][0/0/0][ 2 0008 0000][0-0] *
-# 69> TYPE| NONE| PARENT_NOT_SET[ 68/ 68/ 70/ 0][0/0/0][ 8 0000][0-0] c2
-# 69> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 70/ 70/ 71/ 0][0/0/0][ 2 0000 0040][0-0] <
-# 69> TYPE| NONE| PARENT_NOT_SET[ 71/ 71/ 74/ 0][0/1/0][ 8 0040][0-0] int
-# 69> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 74/ 74/ 75/ 0][0/0/0][ 2 0000 0040][0-0] >
-# 69> DC_MEMBER| NONE| PARENT_NOT_SET[ 75/ 75/ 77/ 0][0/0/0][ 2 0008 0000][0-0] ::
-# 69> TYPE| NONE| PARENT_NOT_SET[ 77/ 77/ 88/ 0][0/0/0][ 0][0-0] inner_class
-# 69> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 88/ 88/ 89/ 0][0/0/0][ 2 0000 0040][0-0] <
-# 69> TYPE| NONE| PARENT_NOT_SET[ 89/ 89/ 92/ 0][0/1/0][ 8 0040][0-0] int
-# 69> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 92/ 92/ 93/ 0][0/0/0][ 2 0000 0040][0-0] >
-# 69> DC_MEMBER| NONE| PARENT_NOT_SET[ 93/ 93/ 95/ 0][0/0/0][ 2 0008 0000][0-0] ::
-# 69> WORD| NONE| PARENT_NOT_SET[ 95/ 95/108/ 0][0/0/0][ 2300 0000][0-0] m_inner_class
-# 69> ASSIGN| NONE| PARENT_NOT_SET[109/109/110/ 1][0/0/0][ 2 0000 0000][0-0] =
-# 69> WORD| NONE| PARENT_NOT_SET[111/111/118/ 1][0/0/0][ 8 0000][0-0] nullptr
-# 69> SEMICOLON| STRUCT| PARENT_NOT_SET[118/118/119/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 69> NEWLINE| NONE| PARENT_NOT_SET[119/119/ 1/ 0][0/0/0][ 0][2-0]
-# 71> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 66/ 0][0/0/0][ 0][0-0] // template<...> class/struct[<...>] [macros/attributes ...] type
-# 71> NEWLINE| NONE| PARENT_NOT_SET[ 66/ 66/ 1/ 0][0/0/0][ 0][1-0]
-# 72> TEMPLATE| NONE| PARENT_NOT_SET[ 1/ 1/ 9/ 0][0/0/0][ c 0000][0-0] template
-# 72> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 9/ 9/ 10/ 0][0/0/0][ 2 0000 0040][0-0] <
-# 72> TYPENAME| NONE| PARENT_NOT_SET[ 10/ 10/ 18/ 0][0/1/0][ 8 0040][0-0] typename
-# 72> COMMA| NONE| PARENT_NOT_SET[ 18/ 18/ 19/ 0][0/1/0][ 2 0000 0040][0-0] ,
-# 72> TYPENAME| NONE| PARENT_NOT_SET[ 20/ 20/ 28/ 1][0/1/0][ 8 0040][0-0] typename
-# 72> ELLIPSIS| NONE| PARENT_NOT_SET[ 29/ 29/ 32/ 1][0/1/0][ 2 0000 0040][0-0] ...
-# 72> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 32/ 32/ 33/ 0][0/0/0][ 2 0000 0040][0-0] >
-# 72> NEWLINE| NONE| PARENT_NOT_SET[ 33/ 33/ 1/ 0][0/0/0][ 0][1-0]
-# 73> CLASS| TEMPLATE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ 1000 000a 0000][0-0] class
-# 73> WORD| NONE| PARENT_NOT_SET[ 7/ 7/ 17/ 1][0/0/0][ 1000 0002 0000][0-0] API_EXPORT
-# 73> TYPE| CLASS| PARENT_NOT_SET[ 18/ 18/ 20/ 1][0/0/0][ 1000 0000 0000][0-0] c2
-# 73> SEMICOLON| CLASS| PARENT_NOT_SET[ 20/ 20/ 21/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 73> NEWLINE| NONE| PARENT_NOT_SET[ 21/ 21/ 1/ 0][0/0/0][ 0][2-0]
-# 75> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 68/ 0][0/0/0][ 0][0-0] // class/struct [macros/attributes ...] type : bases ... { } x, ...
-# 75> NEWLINE| NONE| PARENT_NOT_SET[ 68/ 68/ 1/ 0][0/0/0][ 0][1-0]
-# 76> CLASS| NONE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ e 0000][0-0] class
-# 76> WORD| NONE| PARENT_NOT_SET[ 7/ 7/ 17/ 1][0/0/0][ 2 0000][0-0] API_EXPORT
-# 76> ATTRIBUTE| NONE| PARENT_NOT_SET[ 18/ 18/ 31/ 1][0/0/0][ 0][0-0] __attribute__
-# 76> FPAREN_OPEN| ATTRIBUTE| PARENT_NOT_SET[ 31/ 31/ 32/ 0][0/0/0][ 2 0000 0000][0-0] (
-# 76> PAREN_OPEN| NONE| PARENT_NOT_SET[ 32/ 32/ 33/ 0][0/1/0][ 2 0008 0000][0-0] (
-# 76> WORD| NONE| PARENT_NOT_SET[ 33/ 33/ 47/ 0][0/2/0][ 8 0000][0-0] __deprecated__
-# 76> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 47/ 47/ 48/ 0][0/1/0][ 2 0000 0000][0-0] )
-# 76> FPAREN_CLOSE| ATTRIBUTE| PARENT_NOT_SET[ 48/ 48/ 49/ 0][0/0/0][ 2 0000 0000][0-0] )
-# 76> MACRO_FUNC_CALL| NONE| PARENT_NOT_SET[ 50/ 50/ 57/ 1][0/0/0][ 0][0-0] ALIGNAS
-# 76> FPAREN_OPEN| MACRO_FUNC_CALL| PARENT_NOT_SET[ 57/ 57/ 58/ 0][0/0/0][ 2 0000 0000][0-0] (
-# 76> NUMBER| NONE| PARENT_NOT_SET[ 58/ 58/ 59/ 0][0/1/0][ 8 0000][0-0] 4
-# 76> FPAREN_CLOSE| MACRO_FUNC_CALL| PARENT_NOT_SET[ 59/ 59/ 60/ 0][0/0/0][ 2 0000 0000][0-0] )
-# 76> TYPE| CLASS| PARENT_NOT_SET[ 61/ 61/ 63/ 1][0/0/0][ 80 0000][0-0] c3
-# 76> NEWLINE| NONE| PARENT_NOT_SET[ 63/ 63/ 1/ 0][0/0/0][ 0][1-0]
-# 77> CLASS_COLON| CLASS| PARENT_NOT_SET[ 9/ 1/ 2/ 0][0/0/0][ 2 0000 0800][0-0] :
-# 77> QUALIFIER| NONE| PARENT_NOT_SET[ 11/ 3/ 9/ 1][0/0/0][ e 0800][0-0] public
-# 77> TYPE| NONE| PARENT_NOT_SET[ 18/ 10/ 25/ 1][0/0/0][ 800][0-0] outer_namespace
-# 77> DC_MEMBER| NONE| PARENT_NOT_SET[ 33/ 25/ 27/ 0][0/0/0][ 2 0000 0800][0-0] ::
-# 77> TYPE| NONE| PARENT_NOT_SET[ 35/ 27/ 42/ 0][0/0/0][ 800][0-0] inner_namespace
-# 77> DC_MEMBER| NONE| PARENT_NOT_SET[ 50/ 42/ 44/ 0][0/0/0][ 2 0000 0800][0-0] ::
-# 77> TYPE| NONE| PARENT_NOT_SET[ 52/ 44/ 49/ 0][0/0/0][ 800][0-0] Base2
-# 77> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 57/ 49/ 50/ 0][0/0/0][ 2 0000 0840][0-0] <
-# 77> TYPE| NONE| PARENT_NOT_SET[ 58/ 50/ 53/ 0][0/1/0][ 8 0840][0-0] int
-# 77> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 61/ 53/ 54/ 0][0/0/0][ 2 0000 0840][0-0] >
-# 77> COMMA| NONE| PARENT_NOT_SET[ 62/ 54/ 55/ 0][0/0/0][ 2 0008 0800][0-0] ,
-# 77> NEWLINE| NONE| PARENT_NOT_SET[ 63/ 55/ 3/ 0][0/0/0][ 0][1-0]
-# 78> QUALIFIER| NONE| PARENT_NOT_SET[ 9/ 3/ 9/ 0][0/0/0][ a 0800][0-0] public
-# 78> TYPE| NONE| PARENT_NOT_SET[ 16/ 10/ 12/ 1][0/0/0][ 800][0-0] c2
-# 78> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 18/ 12/ 13/ 0][0/0/0][ 2 0000 0840][0-0] <
-# 78> TYPE| NONE| PARENT_NOT_SET[ 19/ 13/ 16/ 0][0/1/0][ 8 0840][0-0] int
-# 78> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 22/ 16/ 17/ 0][0/0/0][ 2 0000 0840][0-0] >
-# 78> DC_MEMBER| NONE| PARENT_NOT_SET[ 23/ 17/ 19/ 0][0/0/0][ 2 0008 0800][0-0] ::
-# 78> TYPE| NONE| PARENT_NOT_SET[ 25/ 19/ 30/ 0][0/0/0][ 800][0-0] inner_class
-# 78> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 36/ 30/ 31/ 0][0/0/0][ 2 0000 0840][0-0] <
-# 78> TYPE| NONE| PARENT_NOT_SET[ 37/ 31/ 34/ 0][0/1/0][ 8 0840][0-0] int
-# 78> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 40/ 34/ 35/ 0][0/0/0][ 2 0000 0840][0-0] >
-# 78> NEWLINE| NONE| PARENT_NOT_SET[ 41/ 35/ 1/ 0][0/0/0][ 0][1-0]
-# 79> BRACE_OPEN| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0008 0400][0-0] {
-# 79> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][1/1/0][ 400][1-0]
-# 80> ACCESS| NONE| PARENT_NOT_SET[ 1/ 1/ 7/ 0][1/1/0][ c 0400][0-0] public
-# 80> ACCESS_COLON| NONE| PARENT_NOT_SET[ 7/ 7/ 8/ 0][1/1/0][ 2 0000 0400][0-0] :
-# 80> NEWLINE| NONE| PARENT_NOT_SET[ 8/ 8/ 4/ 0][1/1/0][ 400][1-0]
-# 81> FUNC_CLASS_DEF| NONE| PARENT_NOT_SET[ 1/ 4/ 6/ 0][1/1/0][ c 0400][0-0] c3
-# 81> FPAREN_OPEN| FUNC_CLASS_DEF| PARENT_NOT_SET[ 3/ 6/ 7/ 0][1/1/0][ 2 0000 0500][0-0] (
-# 81> TYPE| NONE| PARENT_NOT_SET[ 4/ 7/ 10/ 0][1/2/0][ 208a 0510][0-0] int
-# 81> WORD| NONE| PARENT_NOT_SET[ 8/ 11/ 12/ 1][1/2/0][ 2100 0510][0-0] x
-# 81> ASSIGN_DEFAULT_ARG| FUNC_PROTO| PARENT_NOT_SET[ 10/ 13/ 14/ 1][1/2/0][ 2 0000 0510][0-0] =
-# 81> NUMBER| NONE| PARENT_NOT_SET[ 12/ 15/ 16/ 1][1/2/0][ 8 0510][0-0] 0
-# 81> COMMA| NONE| PARENT_NOT_SET[ 13/ 16/ 17/ 0][1/2/0][ 2 0000 0510][0-0] ,
-# 81> TYPE| NONE| PARENT_NOT_SET[ 15/ 18/ 21/ 1][1/2/0][ 208a 0510][0-0] int
-# 81> WORD| NONE| PARENT_NOT_SET[ 19/ 22/ 23/ 1][1/2/0][ 2100 0510][0-0] y
-# 81> ASSIGN_DEFAULT_ARG| FUNC_PROTO| PARENT_NOT_SET[ 21/ 24/ 25/ 1][1/2/0][ 2 0000 0510][0-0] =
-# 81> NUMBER| NONE| PARENT_NOT_SET[ 23/ 26/ 27/ 1][1/2/0][ 8 0510][0-0] 0
-# 81> COMMA| NONE| PARENT_NOT_SET[ 24/ 27/ 28/ 0][1/2/0][ 2 0000 0510][0-0] ,
-# 81> TYPE| NONE| PARENT_NOT_SET[ 26/ 29/ 32/ 1][1/2/0][ 208a 0510][0-0] int
-# 81> WORD| NONE| PARENT_NOT_SET[ 30/ 33/ 34/ 1][1/2/0][ 2100 0510][0-0] z
-# 81> ASSIGN_DEFAULT_ARG| FUNC_PROTO| PARENT_NOT_SET[ 32/ 35/ 36/ 1][1/2/0][ 2 0000 0510][0-0] =
-# 81> NUMBER| NONE| PARENT_NOT_SET[ 34/ 37/ 38/ 1][1/2/0][ 8 0510][0-0] 0
-# 81> FPAREN_CLOSE| FUNC_CLASS_DEF| PARENT_NOT_SET[ 35/ 38/ 39/ 0][1/1/0][ 2 0000 0510][0-0] )
-# 81> CONSTR_COLON| NONE| PARENT_NOT_SET[ 37/ 40/ 41/ 1][1/1/0][ 2 0000 0500][0-0] :
-# 81> FUNC_CTOR_VAR| NONE| PARENT_NOT_SET[ 39/ 42/ 45/ 1][1/1/0][ c 0500][0-0] m_x
-# 81> FPAREN_OPEN| FUNC_CTOR_VAR| PARENT_NOT_SET[ 42/ 45/ 46/ 0][1/1/0][ 2 0000 0500][0-0] (
-# 81> WORD| NONE| PARENT_NOT_SET[ 43/ 46/ 47/ 0][1/2/0][ 8 0510][0-0] x
-# 81> FPAREN_CLOSE| FUNC_CTOR_VAR| PARENT_NOT_SET[ 44/ 47/ 48/ 0][1/1/0][ 2 0000 0510][0-0] )
-# 81> COMMA| NONE| PARENT_NOT_SET[ 45/ 48/ 49/ 0][1/1/0][ 2 0000 0500][0-0] ,
-# 81> FUNC_CTOR_VAR| NONE| PARENT_NOT_SET[ 47/ 50/ 53/ 1][1/1/0][ 8 0500][0-0] m_y
-# 81> FPAREN_OPEN| FUNC_CTOR_VAR| PARENT_NOT_SET[ 50/ 53/ 54/ 0][1/1/0][ 2 0000 0500][0-0] (
-# 81> WORD| NONE| PARENT_NOT_SET[ 51/ 54/ 55/ 0][1/2/0][ 8 0510][0-0] y
-# 81> FPAREN_CLOSE| FUNC_CTOR_VAR| PARENT_NOT_SET[ 52/ 55/ 56/ 0][1/1/0][ 2 0000 0510][0-0] )
-# 81> COMMA| NONE| PARENT_NOT_SET[ 53/ 56/ 57/ 0][1/1/0][ 2 0000 0500][0-0] ,
-# 81> FUNC_CTOR_VAR| NONE| PARENT_NOT_SET[ 55/ 58/ 61/ 1][1/1/0][ 8 0500][0-0] m_z
-# 81> FPAREN_OPEN| FUNC_CTOR_VAR| PARENT_NOT_SET[ 58/ 61/ 62/ 0][1/1/0][ 2 0000 0500][0-0] (
-# 81> WORD| NONE| PARENT_NOT_SET[ 59/ 62/ 63/ 0][1/2/0][ 8 0510][0-0] z
-# 81> FPAREN_CLOSE| FUNC_CTOR_VAR| PARENT_NOT_SET[ 60/ 63/ 64/ 0][1/1/0][ 2 0000 0510][0-0] )
-# 81> BRACE_OPEN| FUNC_CLASS_DEF| PARENT_NOT_SET[ 62/ 65/ 66/ 1][1/1/0][ 2 8000 0400][0-0] {
-# 81> NEWLINE| NONE| PARENT_NOT_SET[ 63/ 67/ 0/ 0][1/1/0][ 400][1-0]
-# 81> BRACE_CLOSE| FUNC_CLASS_DEF| PARENT_NOT_SET[ 1/ 67/ 68/ 1][1/1/0][ 2 8000 0400][0-0] }
-# 81> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 68/ 4/ 0][1/1/0][ 400][2-0]
-# 83> TYPE| NONE| PARENT_NOT_SET[ 1/ 4/ 7/ 0][1/1/0][ 8e 0400][0-0] int
-# 83> WORD| NONE| PARENT_NOT_SET[ 5/ 8/ 11/ 1][1/1/0][ 300 0400][0-0] m_x
-# 83> SEMICOLON| NONE| PARENT_NOT_SET[ 8/ 11/ 12/ 0][1/1/0][ 2 0000 0400][0-0] ;
-# 83> NEWLINE| NONE| PARENT_NOT_SET[ 9/ 12/ 4/ 0][1/1/0][ 400][1-0]
-# 84> TYPE| NONE| PARENT_NOT_SET[ 1/ 4/ 7/ 0][1/1/0][ 8e 0400][0-0] int
-# 84> WORD| NONE| PARENT_NOT_SET[ 5/ 8/ 11/ 1][1/1/0][ 300 0400][0-0] m_y
-# 84> SEMICOLON| NONE| PARENT_NOT_SET[ 8/ 11/ 12/ 0][1/1/0][ 2 0000 0400][0-0] ;
-# 84> NEWLINE| NONE| PARENT_NOT_SET[ 9/ 12/ 4/ 0][1/1/0][ 400][1-0]
-# 85> TYPE| NONE| PARENT_NOT_SET[ 1/ 4/ 7/ 0][1/1/0][ 8e 0400][0-0] int
-# 85> WORD| NONE| PARENT_NOT_SET[ 5/ 8/ 11/ 1][1/1/0][ 300 0400][0-0] m_z
-# 85> SEMICOLON| NONE| PARENT_NOT_SET[ 8/ 11/ 12/ 0][1/1/0][ 2 0000 0400][0-0] ;
-# 85> NEWLINE| NONE| PARENT_NOT_SET[ 9/ 12/ 1/ 0][1/1/0][ 400][1-0]
-# 86> BRACE_CLOSE| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0000 0400][0-0] }
-# 86> WORD| NONE| PARENT_NOT_SET[ 3/ 3/ 6/ 1][0/0/0][ 70c 0000][0-0] c31
-# 86> COMMA| NONE| PARENT_NOT_SET[ 6/ 6/ 7/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 86> PTR_TYPE| CLASS| PARENT_NOT_SET[ 8/ 8/ 9/ 1][0/0/0][ 2 0008 0000][0-0] *
-# 86> WORD| NONE| PARENT_NOT_SET[ 9/ 9/ 12/ 0][0/0/0][ 2508 0000][0-0] c32
-# 86> ASSIGN| NONE| PARENT_NOT_SET[ 13/ 13/ 14/ 1][0/0/0][ 2 0000 0000][0-0] =
-# 86> WORD| NONE| PARENT_NOT_SET[ 15/ 15/ 22/ 1][0/0/0][ 8 0000][0-0] nullptr
-# 86> COMMA| NONE| PARENT_NOT_SET[ 22/ 22/ 23/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 86> PTR_TYPE| CLASS| PARENT_NOT_SET[ 24/ 24/ 25/ 1][0/0/0][ 2 0008 0000][0-0] *
-# 86> WORD| NONE| PARENT_NOT_SET[ 25/ 25/ 28/ 0][0/0/0][ 508 0000][0-0] c33
-# 86> TSQUARE| NONE| PARENT_NOT_SET[ 28/ 28/ 30/ 0][0/0/0][ 2 0000 0000][0-0] []
-# 86> ASSIGN| NONE| PARENT_NOT_SET[ 31/ 31/ 32/ 1][0/0/0][ 2 0000 0000][0-0] =
-# 86> BRACE_OPEN| BRACED_INIT_LIST| PARENT_NOT_SET[ 33/ 33/ 34/ 1][0/0/0][ 2 4008 0000][0-0] {
-# 86> WORD| NONE| PARENT_NOT_SET[ 35/ 35/ 42/ 1][1/1/0][ 4008 0000][0-0] nullptr
-# 86> COMMA| NONE| PARENT_NOT_SET[ 42/ 42/ 43/ 0][1/1/0][ 2 4000 0000][0-0] ,
-# 86> WORD| NONE| PARENT_NOT_SET[ 44/ 44/ 51/ 1][1/1/0][ 4008 0000][0-0] nullptr
-# 86> BRACE_CLOSE| BRACED_INIT_LIST| PARENT_NOT_SET[ 52/ 52/ 53/ 1][0/0/0][ 2 4000 0000][0-0] }
-# 86> COMMA| NONE| PARENT_NOT_SET[ 53/ 53/ 54/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 86> WORD| NONE| PARENT_NOT_SET[ 55/ 55/ 58/ 1][0/0/0][ 2508 0000][0-0] c34
-# 86> BRACE_OPEN| BRACED_INIT_LIST| PARENT_NOT_SET[ 58/ 58/ 59/ 0][0/0/0][ 2 4000 0000][0-0] {
-# 86> NUMBER| NONE| PARENT_NOT_SET[ 60/ 60/ 61/ 1][1/1/0][ 400c 0000][0-0] 0
-# 86> COMMA| NONE| PARENT_NOT_SET[ 61/ 61/ 62/ 0][1/1/0][ 2 4000 0000][0-0] ,
-# 86> NUMBER| NONE| PARENT_NOT_SET[ 63/ 63/ 64/ 1][1/1/0][ 4008 0000][0-0] 1
-# 86> COMMA| NONE| PARENT_NOT_SET[ 64/ 64/ 65/ 0][1/1/0][ 2 4000 0000][0-0] ,
-# 86> NUMBER| NONE| PARENT_NOT_SET[ 66/ 66/ 67/ 1][1/1/0][ 4008 0000][0-0] 2
-# 86> BRACE_CLOSE| BRACED_INIT_LIST| PARENT_NOT_SET[ 67/ 67/ 68/ 0][0/0/0][ 2 4000 0000][0-0] }
-# 86> COMMA| NONE| PARENT_NOT_SET[ 68/ 68/ 69/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 86> PTR_TYPE| CLASS| PARENT_NOT_SET[ 70/ 70/ 71/ 1][0/0/0][ 2 0008 0000][0-0] *
-# 86> QUALIFIER| NONE| PARENT_NOT_SET[ 72/ 72/ 77/ 1][0/0/0][ a 0000][0-0] const
-# 86> FUNC_CALL| NONE| PARENT_NOT_SET[ 78/ 78/ 81/ 1][0/0/0][ 500 0000][0-0] c35
-# 86> FPAREN_OPEN| FUNC_CALL| PARENT_NOT_SET[ 81/ 81/ 82/ 0][0/0/0][ 2 0000 0000][0-0] (
-# 86> WORD| NONE| PARENT_NOT_SET[ 82/ 82/ 89/ 0][0/1/0][ 8 0010][0-0] nullptr
-# 86> FPAREN_CLOSE| FUNC_CALL| PARENT_NOT_SET[ 89/ 89/ 90/ 0][0/0/0][ 2 0000 0010][0-0] )
-# 86> COMMA| NONE| PARENT_NOT_SET[ 90/ 90/ 91/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 86> FUNC_CALL| NONE| PARENT_NOT_SET[ 92/ 92/ 95/ 1][0/0/0][ 508 0000][0-0] c16
-# 86> FPAREN_OPEN| FUNC_CALL| PARENT_NOT_SET[ 95/ 95/ 96/ 0][0/0/0][ 2 0000 0000][0-0] (
-# 86> NUMBER| NONE| PARENT_NOT_SET[ 96/ 96/ 97/ 0][0/1/0][ 8 0010][0-0] 0
-# 86> COMMA| NONE| PARENT_NOT_SET[ 97/ 97/ 98/ 0][0/1/0][ 2 0000 0010][0-0] ,
-# 86> NUMBER| NONE| PARENT_NOT_SET[ 99/ 99/100/ 1][0/1/0][ 8 0010][0-0] 1
-# 86> COMMA| NONE| PARENT_NOT_SET[100/100/101/ 0][0/1/0][ 2 0000 0010][0-0] ,
-# 86> NUMBER| NONE| PARENT_NOT_SET[102/102/103/ 1][0/1/0][ 8 0010][0-0] 2
-# 86> FPAREN_CLOSE| FUNC_CALL| PARENT_NOT_SET[103/103/104/ 0][0/0/0][ 2 0000 0010][0-0] )
-# 86> SEMICOLON| CLASS| PARENT_NOT_SET[104/104/105/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 86> NEWLINE| NONE| PARENT_NOT_SET[105/105/ 1/ 0][0/0/0][ 0][2-0]
-# 88> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 52/ 0][0/0/0][ 0][0-0] // class/struct [macros/attributes ...] type x, ...
-# 88> NEWLINE| NONE| PARENT_NOT_SET[ 52/ 52/ 1/ 0][0/0/0][ 0][1-0]
-# 89> CLASS| NONE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ e 0000][0-0] class
-# 89> ATTRIBUTE| NONE| PARENT_NOT_SET[ 7/ 7/ 20/ 1][0/0/0][ 0][0-0] __attribute__
-# 89> FPAREN_OPEN| ATTRIBUTE| PARENT_NOT_SET[ 20/ 20/ 21/ 0][0/0/0][ 2 0000 0000][0-0] (
-# 89> PAREN_OPEN| NONE| PARENT_NOT_SET[ 21/ 21/ 22/ 0][0/1/0][ 2 0008 0000][0-0] (
-# 89> WORD| NONE| PARENT_NOT_SET[ 22/ 22/ 36/ 0][0/2/0][ 8 0000][0-0] __deprecated__
-# 89> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 36/ 36/ 37/ 0][0/1/0][ 2 0000 0000][0-0] )
-# 89> FPAREN_CLOSE| ATTRIBUTE| PARENT_NOT_SET[ 37/ 37/ 38/ 0][0/0/0][ 2 0000 0000][0-0] )
-# 89> WORD| NONE| PARENT_NOT_SET[ 39/ 39/ 49/ 1][0/0/0][ e 0000][0-0] API_EXPORT
-# 89> MACRO_FUNC_CALL| NONE| PARENT_NOT_SET[ 50/ 50/ 57/ 1][0/0/0][ 0][0-0] ALIGNAS
-# 89> FPAREN_OPEN| MACRO_FUNC_CALL| PARENT_NOT_SET[ 57/ 57/ 58/ 0][0/0/0][ 2 0000 0000][0-0] (
-# 89> NUMBER| NONE| PARENT_NOT_SET[ 58/ 58/ 59/ 0][0/1/0][ 8 0000][0-0] 4
-# 89> FPAREN_CLOSE| MACRO_FUNC_CALL| PARENT_NOT_SET[ 59/ 59/ 60/ 0][0/0/0][ 2 0000 0000][0-0] )
-# 89> TYPE| CLASS| PARENT_NOT_SET[ 61/ 61/ 63/ 1][0/0/0][ 82 0000][0-0] c3
-# 89> WORD| NONE| PARENT_NOT_SET[ 64/ 64/ 67/ 1][0/0/0][ 300 0000][0-0] c41
-# 89> COMMA| NONE| PARENT_NOT_SET[ 67/ 67/ 68/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 89> PTR_TYPE| CLASS| PARENT_NOT_SET[ 69/ 69/ 70/ 1][0/0/0][ 2 0008 0000][0-0] *
-# 89> WORD| NONE| PARENT_NOT_SET[ 70/ 70/ 73/ 0][0/0/0][ 2108 0000][0-0] c42
-# 89> ASSIGN| NONE| PARENT_NOT_SET[ 74/ 74/ 75/ 1][0/0/0][ 2 0000 0000][0-0] =
-# 89> WORD| NONE| PARENT_NOT_SET[ 76/ 76/ 79/ 1][0/0/0][ 8 0000][0-0] c32
-# 89> QUESTION| NONE| PARENT_NOT_SET[ 80/ 80/ 81/ 1][0/0/0][ 1 0002 0000 0000][0-0] ?
-# 89> WORD| NONE| PARENT_NOT_SET[ 82/ 82/ 85/ 1][0/0/0][ 1 0000 0008 0000][0-0] c32
-# 89> COND_COLON| NONE| PARENT_NOT_SET[ 86/ 86/ 87/ 1][0/0/0][ 1 0002 0000 0000][0-0] :
-# 89> WORD| NONE| PARENT_NOT_SET[ 88/ 88/ 95/ 1][0/0/0][ 1 0000 000c 0000][0-0] nullptr
-# 89> COMMA| NONE| PARENT_NOT_SET[ 95/ 95/ 96/ 0][0/0/0][ 1 0002 0000 0000][0-0] ,
-# 89> PTR_TYPE| CLASS| PARENT_NOT_SET[ 97/ 97/ 98/ 1][0/0/0][ 1 0002 0008 0000][0-0] *
-# 89> WORD| NONE| PARENT_NOT_SET[ 98/ 98/101/ 0][0/0/0][ 1 0000 0108 0000][0-0] c43
-# 89> TSQUARE| NONE| PARENT_NOT_SET[101/101/103/ 0][0/0/0][ 1 0002 0000 0000][0-0] []
-# 89> ASSIGN| NONE| PARENT_NOT_SET[104/104/105/ 1][0/0/0][ 1 0002 0000 0000][0-0] =
-# 89> BRACE_OPEN| BRACED_INIT_LIST| PARENT_NOT_SET[106/106/107/ 1][0/0/0][ 1 0002 4008 0000][0-0] {
-# 89> WORD| NONE| PARENT_NOT_SET[108/108/115/ 1][1/1/0][ 1 0000 4008 0000][0-0] nullptr
-# 89> COMMA| NONE| PARENT_NOT_SET[115/115/116/ 0][1/1/0][ 1 0002 4000 0000][0-0] ,
-# 89> WORD| NONE| PARENT_NOT_SET[117/117/124/ 1][1/1/0][ 1 0000 4008 0000][0-0] nullptr
-# 89> BRACE_CLOSE| BRACED_INIT_LIST| PARENT_NOT_SET[125/125/126/ 1][0/0/0][ 1 0002 4000 0000][0-0] }
-# 89> COMMA| NONE| PARENT_NOT_SET[126/126/127/ 0][0/0/0][ 1 0002 0000 0000][0-0] ,
-# 89> WORD| NONE| PARENT_NOT_SET[128/128/131/ 1][0/0/0][ 1 0000 2108 0000][0-0] c44
-# 89> BRACE_OPEN| BRACED_INIT_LIST| PARENT_NOT_SET[131/131/132/ 0][0/0/0][ 1 0002 4000 0000][0-0] {
-# 89> NUMBER| NONE| PARENT_NOT_SET[133/133/134/ 1][1/1/0][ 1 0000 400c 0000][0-0] 0
-# 89> COMMA| NONE| PARENT_NOT_SET[134/134/135/ 0][1/1/0][ 1 0002 4000 0000][0-0] ,
-# 89> NUMBER| NONE| PARENT_NOT_SET[136/136/137/ 1][1/1/0][ 1 0000 4008 0000][0-0] 1
-# 89> COMMA| NONE| PARENT_NOT_SET[137/137/138/ 0][1/1/0][ 1 0002 4000 0000][0-0] ,
-# 89> NUMBER| NONE| PARENT_NOT_SET[139/139/140/ 1][1/1/0][ 1 0000 4008 0000][0-0] 2
-# 89> BRACE_CLOSE| BRACED_INIT_LIST| PARENT_NOT_SET[140/140/141/ 0][0/0/0][ 1 0002 4000 0000][0-0] }
-# 89> COMMA| NONE| PARENT_NOT_SET[141/141/142/ 0][0/0/0][ 1 0002 0000 0000][0-0] ,
-# 89> PTR_TYPE| CLASS| PARENT_NOT_SET[143/143/144/ 1][0/0/0][ 1 0002 0008 0000][0-0] *
-# 89> QUALIFIER| NONE| PARENT_NOT_SET[145/145/150/ 1][0/0/0][ 1 0000 000a 0000][0-0] const
-# 89> FUNC_CALL| NONE| PARENT_NOT_SET[151/151/154/ 1][0/0/0][ 1 0000 0100 0000][0-0] c45
-# 89> FPAREN_OPEN| FUNC_CALL| PARENT_NOT_SET[154/154/155/ 0][0/0/0][ 1 0002 0000 0000][0-0] (
-# 89> WORD| NONE| PARENT_NOT_SET[155/155/162/ 0][0/1/0][ 1 0000 0008 0010][0-0] nullptr
-# 89> FPAREN_CLOSE| FUNC_CALL| PARENT_NOT_SET[162/162/163/ 0][0/0/0][ 1 0002 0000 0010][0-0] )
-# 89> COMMA| NONE| PARENT_NOT_SET[163/163/164/ 0][0/0/0][ 1 0002 0000 0000][0-0] ,
-# 89> FUNC_CALL| NONE| PARENT_NOT_SET[165/165/168/ 1][0/0/0][ 1 0000 0108 0000][0-0] c46
-# 89> FPAREN_OPEN| FUNC_CALL| PARENT_NOT_SET[168/168/169/ 0][0/0/0][ 1 0002 0000 0000][0-0] (
-# 89> NUMBER| NONE| PARENT_NOT_SET[169/169/170/ 0][0/1/0][ 1 0000 0008 0010][0-0] 0
-# 89> COMMA| NONE| PARENT_NOT_SET[170/170/171/ 0][0/1/0][ 1 0002 0000 0010][0-0] ,
-# 89> NUMBER| NONE| PARENT_NOT_SET[172/172/173/ 1][0/1/0][ 1 0000 0008 0010][0-0] 1
-# 89> COMMA| NONE| PARENT_NOT_SET[173/173/174/ 0][0/1/0][ 1 0002 0000 0010][0-0] ,
-# 89> NUMBER| NONE| PARENT_NOT_SET[175/175/176/ 1][0/1/0][ 1 0000 0008 0010][0-0] 2
-# 89> FPAREN_CLOSE| FUNC_CALL| PARENT_NOT_SET[176/176/177/ 0][0/0/0][ 1 0002 0000 0010][0-0] )
-# 89> SEMICOLON| CLASS| PARENT_NOT_SET[177/177/178/ 0][0/0/0][ 1 0002 0000 0000][0-0] ;
-# 89> NEWLINE| NONE| PARENT_NOT_SET[178/178/ 1/ 0][0/0/0][ 0][2-0]
-# 91> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 68/ 0][0/0/0][ 0][0-0] // class/struct [macros/attributes ...] type : bases ... { } x, ...
-# 91> NEWLINE| NONE| PARENT_NOT_SET[ 68/ 68/ 1/ 0][0/0/0][ 0][1-0]
-# 92> CLASS| NONE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ e 0000][0-0] class
-# 92> FUNC_CALL| NONE| PARENT_NOT_SET[ 7/ 7/ 14/ 1][0/0/0][ 0][0-0] ALIGNAS
-# 92> FPAREN_OPEN| FUNC_CALL| PARENT_NOT_SET[ 14/ 14/ 15/ 0][0/0/0][ 2 0000 0000][0-0] (
-# 92> NUMBER| NONE| PARENT_NOT_SET[ 15/ 15/ 16/ 0][0/1/0][ 8 0010][0-0] 4
-# 92> FPAREN_CLOSE| FUNC_CALL| PARENT_NOT_SET[ 16/ 16/ 17/ 0][0/0/0][ 2 0000 0010][0-0] )
-# 92> WORD| NONE| PARENT_NOT_SET[ 18/ 18/ 28/ 1][0/0/0][ 2 0000][0-0] API_EXPORT
-# 92> ATTRIBUTE| NONE| PARENT_NOT_SET[ 29/ 29/ 42/ 1][0/0/0][ 0][0-0] __attribute__
-# 92> FPAREN_OPEN| ATTRIBUTE| PARENT_NOT_SET[ 42/ 42/ 43/ 0][0/0/0][ 2 0000 0000][0-0] (
-# 92> PAREN_OPEN| NONE| PARENT_NOT_SET[ 43/ 43/ 44/ 0][0/1/0][ 2 0008 0000][0-0] (
-# 92> WORD| NONE| PARENT_NOT_SET[ 44/ 44/ 58/ 0][0/2/0][ 8 0000][0-0] __deprecated__
-# 92> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 58/ 58/ 59/ 0][0/1/0][ 2 0000 0000][0-0] )
-# 92> FPAREN_CLOSE| ATTRIBUTE| PARENT_NOT_SET[ 59/ 59/ 60/ 0][0/0/0][ 2 0000 0000][0-0] )
-# 92> NEWLINE| NONE| PARENT_NOT_SET[ 60/ 60/ 1/ 0][0/0/0][ 0][1-0]
-# 93> CLASS_COLON| CLASS| PARENT_NOT_SET[ 9/ 1/ 2/ 0][0/0/0][ 2 0000 0800][0-0] :
-# 93> QUALIFIER| NONE| PARENT_NOT_SET[ 11/ 3/ 9/ 1][0/0/0][ e 0800][0-0] public
-# 93> TYPE| NONE| PARENT_NOT_SET[ 18/ 10/ 25/ 1][0/0/0][ 800][0-0] outer_namespace
-# 93> DC_MEMBER| NONE| PARENT_NOT_SET[ 33/ 25/ 27/ 0][0/0/0][ 2 0000 0800][0-0] ::
-# 93> TYPE| NONE| PARENT_NOT_SET[ 35/ 27/ 42/ 0][0/0/0][ 800][0-0] inner_namespace
-# 93> DC_MEMBER| NONE| PARENT_NOT_SET[ 50/ 42/ 44/ 0][0/0/0][ 2 0000 0800][0-0] ::
-# 93> TYPE| NONE| PARENT_NOT_SET[ 52/ 44/ 49/ 0][0/0/0][ 800][0-0] Base1
-# 93> NEWLINE| NONE| PARENT_NOT_SET[ 57/ 49/ 1/ 0][0/0/0][ 0][1-0]
-# 94> BRACE_OPEN| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0000 0000][0-0] {
-# 94> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][1/1/0][ 400][1-0]
-# 95> ACCESS| NONE| PARENT_NOT_SET[ 1/ 1/ 7/ 0][1/1/0][ c 0400][0-0] public
-# 95> ACCESS_COLON| NONE| PARENT_NOT_SET[ 7/ 7/ 8/ 0][1/1/0][ 2 0000 0400][0-0] :
-# 95> NEWLINE| NONE| PARENT_NOT_SET[ 8/ 8/ 4/ 0][1/1/0][ 400][1-0]
-# 96> TYPE| NONE| PARENT_NOT_SET[ 1/ 4/ 7/ 0][1/1/0][ 8e 0400][0-0] int
-# 96> WORD| NONE| PARENT_NOT_SET[ 5/ 8/ 11/ 1][1/1/0][ 300 0400][0-0] m_x
-# 96> SEMICOLON| NONE| PARENT_NOT_SET[ 8/ 11/ 12/ 0][1/1/0][ 2 0000 0400][0-0] ;
-# 96> NEWLINE| NONE| PARENT_NOT_SET[ 9/ 12/ 4/ 0][1/1/0][ 400][1-0]
-# 97> TYPE| NONE| PARENT_NOT_SET[ 1/ 4/ 7/ 0][1/1/0][ 8e 0400][0-0] int
-# 97> WORD| NONE| PARENT_NOT_SET[ 5/ 8/ 11/ 1][1/1/0][ 300 0400][0-0] m_y
-# 97> SEMICOLON| NONE| PARENT_NOT_SET[ 8/ 11/ 12/ 0][1/1/0][ 2 0000 0400][0-0] ;
-# 97> NEWLINE| NONE| PARENT_NOT_SET[ 9/ 12/ 4/ 0][1/1/0][ 400][1-0]
-# 98> TYPE| NONE| PARENT_NOT_SET[ 1/ 4/ 7/ 0][1/1/0][ 8e 0400][0-0] int
-# 98> WORD| NONE| PARENT_NOT_SET[ 5/ 8/ 11/ 1][1/1/0][ 300 0400][0-0] m_z
-# 98> SEMICOLON| NONE| PARENT_NOT_SET[ 8/ 11/ 12/ 0][1/1/0][ 2 0000 0400][0-0] ;
-# 98> NEWLINE| NONE| PARENT_NOT_SET[ 9/ 12/ 1/ 0][1/1/0][ 400][1-0]
-# 99> BRACE_CLOSE| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0000 0400][0-0] }
-# 99> WORD| NONE| PARENT_NOT_SET[ 3/ 3/ 6/ 1][0/0/0][ 70c 0000][0-0] c51
-# 99> COMMA| NONE| PARENT_NOT_SET[ 6/ 6/ 7/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 99> PTR_TYPE| CLASS| PARENT_NOT_SET[ 8/ 8/ 9/ 1][0/0/0][ 2 0008 0000][0-0] *
-# 99> WORD| NONE| PARENT_NOT_SET[ 9/ 9/ 12/ 0][0/0/0][ 2508 0000][0-0] c52
-# 99> ASSIGN| NONE| PARENT_NOT_SET[ 13/ 13/ 14/ 1][0/0/0][ 2 0000 0000][0-0] =
-# 99> WORD| NONE| PARENT_NOT_SET[ 15/ 15/ 22/ 1][0/0/0][ 8 0000][0-0] nullptr
-# 99> COMMA| NONE| PARENT_NOT_SET[ 22/ 22/ 23/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 99> PTR_TYPE| CLASS| PARENT_NOT_SET[ 24/ 24/ 25/ 1][0/0/0][ 2 0008 0000][0-0] *
-# 99> WORD| NONE| PARENT_NOT_SET[ 25/ 25/ 28/ 0][0/0/0][ 508 0000][0-0] c53
-# 99> TSQUARE| NONE| PARENT_NOT_SET[ 28/ 28/ 30/ 0][0/0/0][ 2 0000 0000][0-0] []
-# 99> ASSIGN| NONE| PARENT_NOT_SET[ 31/ 31/ 32/ 1][0/0/0][ 2 0000 0000][0-0] =
-# 99> BRACE_OPEN| BRACED_INIT_LIST| PARENT_NOT_SET[ 33/ 33/ 34/ 1][0/0/0][ 2 4008 0000][0-0] {
-# 99> WORD| NONE| PARENT_NOT_SET[ 35/ 35/ 42/ 1][1/1/0][ 4008 0000][0-0] nullptr
-# 99> COMMA| NONE| PARENT_NOT_SET[ 42/ 42/ 43/ 0][1/1/0][ 2 4000 0000][0-0] ,
-# 99> WORD| NONE| PARENT_NOT_SET[ 44/ 44/ 51/ 1][1/1/0][ 4008 0000][0-0] nullptr
-# 99> BRACE_CLOSE| BRACED_INIT_LIST| PARENT_NOT_SET[ 52/ 52/ 53/ 1][0/0/0][ 2 4000 0000][0-0] }
-# 99> SEMICOLON| CLASS| PARENT_NOT_SET[ 53/ 53/ 54/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 99> NEWLINE| NONE| PARENT_NOT_SET[ 54/ 54/ 1/ 0][0/0/0][ 0][3-0]
-# 102> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 44/ 0][0/0/0][ 0][0-0] // enum type : integral_type { ... } x, ...
-# 102> NEWLINE| NONE| PARENT_NOT_SET[ 44/ 44/ 1/ 0][0/0/0][ 0][1-0]
-# 103> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ e 0000][0-0] enum
-# 103> TYPE| ENUM| PARENT_NOT_SET[ 6/ 6/ 8/ 1][0/0/0][ 80 0000][0-0] e1
-# 103> BIT_COLON| ENUM| PARENT_NOT_SET[ 9/ 9/ 10/ 1][0/0/0][ 2 0000 0000][0-0] :
-# 103> TYPE| BIT_COLON| PARENT_NOT_SET[ 11/ 11/ 15/ 1][0/0/0][ e 0000][0-0] long
-# 103> TYPE| BIT_COLON| PARENT_NOT_SET[ 16/ 16/ 20/ 1][0/0/0][ 0][0-0] long
-# 103> BRACE_OPEN| ENUM| PARENT_NOT_SET[ 21/ 21/ 22/ 1][0/0/0][ 2 4000 0000][0-0] {
-# 103> WORD| NONE| PARENT_NOT_SET[ 23/ 23/ 25/ 1][1/1/0][ 400c 0004][0-0] a1
-# 103> COMMA| NONE| PARENT_NOT_SET[ 25/ 25/ 26/ 0][1/1/0][ 2 4000 0004][0-0] ,
-# 103> WORD| NONE| PARENT_NOT_SET[ 27/ 27/ 29/ 1][1/1/0][ 4008 0004][0-0] b1
-# 103> COMMA| NONE| PARENT_NOT_SET[ 29/ 29/ 30/ 0][1/1/0][ 2 4000 0004][0-0] ,
-# 103> WORD| NONE| PARENT_NOT_SET[ 31/ 31/ 33/ 1][1/1/0][ 4008 0004][0-0] d1
-# 103> BRACE_CLOSE| ENUM| PARENT_NOT_SET[ 34/ 34/ 35/ 1][0/0/0][ 2 4000 0004][0-0] }
-# 103> WORD| NONE| PARENT_NOT_SET[ 36/ 36/ 39/ 1][0/0/0][ 70c 0000][0-0] e11
-# 103> COMMA| NONE| PARENT_NOT_SET[ 39/ 39/ 40/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 103> WORD| NONE| PARENT_NOT_SET[ 41/ 41/ 44/ 1][0/0/0][ 508 0000][0-0] e12
-# 103> COMMA| NONE| PARENT_NOT_SET[ 44/ 44/ 45/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 103> WORD| NONE| PARENT_NOT_SET[ 46/ 46/ 49/ 1][0/0/0][ 508 0000][0-0] e13
-# 103> SEMICOLON| ENUM| PARENT_NOT_SET[ 49/ 49/ 50/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 103> NEWLINE| NONE| PARENT_NOT_SET[ 50/ 50/ 1/ 0][0/0/0][ 0][2-0]
-# 105> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 37/ 0][0/0/0][ 0][0-0] // enum type : integral_type { ... }
-# 105> NEWLINE| NONE| PARENT_NOT_SET[ 37/ 37/ 1/ 0][0/0/0][ 0][1-0]
-# 106> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ e 0000][0-0] enum
-# 106> TYPE| ENUM| PARENT_NOT_SET[ 6/ 6/ 8/ 1][0/0/0][ 0][0-0] e2
-# 106> BIT_COLON| ENUM| PARENT_NOT_SET[ 9/ 9/ 10/ 1][0/0/0][ 2 0000 0000][0-0] :
-# 106> TYPE| BIT_COLON| PARENT_NOT_SET[ 11/ 11/ 19/ 1][0/0/0][ e 0000][0-0] unsigned
-# 106> TYPE| BIT_COLON| PARENT_NOT_SET[ 20/ 20/ 23/ 1][0/0/0][ 0][0-0] int
-# 106> BRACE_OPEN| ENUM| PARENT_NOT_SET[ 24/ 24/ 25/ 1][0/0/0][ 2 4000 0000][0-0] {
-# 106> WORD| NONE| PARENT_NOT_SET[ 26/ 26/ 28/ 1][1/1/0][ 400c 0004][0-0] a2
-# 106> COMMA| NONE| PARENT_NOT_SET[ 28/ 28/ 29/ 0][1/1/0][ 2 4000 0004][0-0] ,
-# 106> WORD| NONE| PARENT_NOT_SET[ 30/ 30/ 32/ 1][1/1/0][ 4008 0004][0-0] b2
-# 106> COMMA| NONE| PARENT_NOT_SET[ 32/ 32/ 33/ 0][1/1/0][ 2 4000 0004][0-0] ,
-# 106> WORD| NONE| PARENT_NOT_SET[ 34/ 34/ 36/ 1][1/1/0][ 4008 0004][0-0] d2
-# 106> BRACE_CLOSE| ENUM| PARENT_NOT_SET[ 37/ 37/ 38/ 1][0/0/0][ 2 4000 0004][0-0] }
-# 106> SEMICOLON| ENUM| PARENT_NOT_SET[ 38/ 38/ 39/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 106> NEWLINE| NONE| PARENT_NOT_SET[ 39/ 39/ 1/ 0][0/0/0][ 0][2-0]
-# 108> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 29/ 0][0/0/0][ 0][0-0] // enum type : integral_type
-# 108> NEWLINE| NONE| PARENT_NOT_SET[ 29/ 29/ 1/ 0][0/0/0][ 0][1-0]
-# 109> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ 1000 000e 0000][0-0] enum
-# 109> TYPE| ENUM| PARENT_NOT_SET[ 6/ 6/ 8/ 1][0/0/0][ 1000 0000 0000][0-0] e3
-# 109> BIT_COLON| ENUM| PARENT_NOT_SET[ 9/ 9/ 10/ 1][0/0/0][ 2 0000 0000][0-0] :
-# 109> TYPE| BIT_COLON| PARENT_NOT_SET[ 11/ 11/ 16/ 1][0/0/0][ c 0000][0-0] short
-# 109> SEMICOLON| ENUM| PARENT_NOT_SET[ 16/ 16/ 17/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 109> NEWLINE| NONE| PARENT_NOT_SET[ 17/ 17/ 1/ 0][0/0/0][ 0][2-0]
-# 111> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 20/ 0][0/0/0][ 0][0-0] // enum type x, ...
-# 111> NEWLINE| NONE| PARENT_NOT_SET[ 20/ 20/ 1/ 0][0/0/0][ 0][1-0]
-# 112> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ e 0000][0-0] enum
-# 112> TYPE| ENUM| PARENT_NOT_SET[ 6/ 6/ 8/ 1][0/0/0][ 82 0000][0-0] e3
-# 112> WORD| NONE| PARENT_NOT_SET[ 9/ 9/ 12/ 1][0/0/0][ 300 0000][0-0] e31
-# 112> COMMA| NONE| PARENT_NOT_SET[ 12/ 12/ 13/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 112> WORD| NONE| PARENT_NOT_SET[ 14/ 14/ 17/ 1][0/0/0][ 108 0000][0-0] e32
-# 112> SEMICOLON| ENUM| PARENT_NOT_SET[ 17/ 17/ 18/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 112> NEWLINE| NONE| PARENT_NOT_SET[ 18/ 18/ 1/ 0][0/0/0][ 0][2-0]
-# 114> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 50/ 0][0/0/0][ 0][0-0] // enum class type : integral_type { ... } x, ...
-# 114> NEWLINE| NONE| PARENT_NOT_SET[ 50/ 50/ 1/ 0][0/0/0][ 0][1-0]
-# 115> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ e 0000][0-0] enum
-# 115> ENUM_CLASS| NONE| PARENT_NOT_SET[ 6/ 6/ 11/ 1][0/0/0][ 2 0000][0-0] class
-# 115> TYPE| ENUM| PARENT_NOT_SET[ 12/ 12/ 14/ 1][0/0/0][ 80 0000][0-0] e4
-# 115> BIT_COLON| ENUM| PARENT_NOT_SET[ 15/ 15/ 16/ 1][0/0/0][ 2 0000 0000][0-0] :
-# 115> TYPE| BIT_COLON| PARENT_NOT_SET[ 17/ 17/ 21/ 1][0/0/0][ e 0000][0-0] long
-# 115> TYPE| BIT_COLON| PARENT_NOT_SET[ 22/ 22/ 26/ 1][0/0/0][ 0][0-0] long
-# 115> BRACE_OPEN| ENUM| PARENT_NOT_SET[ 27/ 27/ 28/ 1][0/0/0][ 2 4000 0000][0-0] {
-# 115> WORD| NONE| PARENT_NOT_SET[ 29/ 29/ 31/ 1][1/1/0][ 400c 0004][0-0] a4
-# 115> COMMA| NONE| PARENT_NOT_SET[ 31/ 31/ 32/ 0][1/1/0][ 2 4000 0004][0-0] ,
-# 115> WORD| NONE| PARENT_NOT_SET[ 33/ 33/ 35/ 1][1/1/0][ 4008 0004][0-0] b4
-# 115> COMMA| NONE| PARENT_NOT_SET[ 35/ 35/ 36/ 0][1/1/0][ 2 4000 0004][0-0] ,
-# 115> WORD| NONE| PARENT_NOT_SET[ 37/ 37/ 39/ 1][1/1/0][ 4008 0004][0-0] d4
-# 115> BRACE_CLOSE| ENUM| PARENT_NOT_SET[ 40/ 40/ 41/ 1][0/0/0][ 2 4000 0004][0-0] }
-# 115> WORD| NONE| PARENT_NOT_SET[ 42/ 42/ 45/ 1][0/0/0][ 70c 0000][0-0] e41
-# 115> COMMA| NONE| PARENT_NOT_SET[ 45/ 45/ 46/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 115> WORD| NONE| PARENT_NOT_SET[ 47/ 47/ 50/ 1][0/0/0][ 508 0000][0-0] e42
-# 115> COMMA| NONE| PARENT_NOT_SET[ 50/ 50/ 51/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 115> WORD| NONE| PARENT_NOT_SET[ 52/ 52/ 55/ 1][0/0/0][ 508 0000][0-0] e43
-# 115> COMMA| NONE| PARENT_NOT_SET[ 55/ 55/ 56/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 115> WORD| NONE| PARENT_NOT_SET[ 57/ 57/ 60/ 1][0/0/0][ 508 0000][0-0] e44
-# 115> SEMICOLON| ENUM| PARENT_NOT_SET[ 60/ 60/ 61/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 115> NEWLINE| NONE| PARENT_NOT_SET[ 61/ 61/ 1/ 0][0/0/0][ 0][2-0]
-# 117> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 43/ 0][0/0/0][ 0][0-0] // enum class type : integral_type { ... }
-# 117> NEWLINE| NONE| PARENT_NOT_SET[ 43/ 43/ 1/ 0][0/0/0][ 0][1-0]
-# 118> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ e 0000][0-0] enum
-# 118> ENUM_CLASS| NONE| PARENT_NOT_SET[ 6/ 6/ 11/ 1][0/0/0][ 2 0000][0-0] class
-# 118> TYPE| ENUM| PARENT_NOT_SET[ 12/ 12/ 14/ 1][0/0/0][ 0][0-0] e5
-# 118> BIT_COLON| ENUM| PARENT_NOT_SET[ 15/ 15/ 16/ 1][0/0/0][ 2 0000 0000][0-0] :
-# 118> TYPE| BIT_COLON| PARENT_NOT_SET[ 17/ 17/ 25/ 1][0/0/0][ e 0000][0-0] unsigned
-# 118> TYPE| BIT_COLON| PARENT_NOT_SET[ 26/ 26/ 29/ 1][0/0/0][ 0][0-0] int
-# 118> BRACE_OPEN| ENUM| PARENT_NOT_SET[ 30/ 30/ 31/ 1][0/0/0][ 2 4000 0000][0-0] {
-# 118> WORD| NONE| PARENT_NOT_SET[ 32/ 32/ 34/ 1][1/1/0][ 400c 0004][0-0] a5
-# 118> COMMA| NONE| PARENT_NOT_SET[ 34/ 34/ 35/ 0][1/1/0][ 2 4000 0004][0-0] ,
-# 118> WORD| NONE| PARENT_NOT_SET[ 36/ 36/ 38/ 1][1/1/0][ 4008 0004][0-0] b5
-# 118> COMMA| NONE| PARENT_NOT_SET[ 38/ 38/ 39/ 0][1/1/0][ 2 4000 0004][0-0] ,
-# 118> WORD| NONE| PARENT_NOT_SET[ 40/ 40/ 42/ 1][1/1/0][ 4008 0004][0-0] d5
-# 118> BRACE_CLOSE| ENUM| PARENT_NOT_SET[ 43/ 43/ 44/ 1][0/0/0][ 2 4000 0004][0-0] }
-# 118> SEMICOLON| ENUM| PARENT_NOT_SET[ 44/ 44/ 45/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 118> NEWLINE| NONE| PARENT_NOT_SET[ 45/ 45/ 1/ 0][0/0/0][ 0][2-0]
-# 120> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 35/ 0][0/0/0][ 0][0-0] // enum class type : integral_type
-# 120> NEWLINE| NONE| PARENT_NOT_SET[ 35/ 35/ 1/ 0][0/0/0][ 0][1-0]
-# 121> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ 1000 000e 0000][0-0] enum
-# 121> ENUM_CLASS| NONE| PARENT_NOT_SET[ 6/ 6/ 11/ 1][0/0/0][ 1000 0002 0000][0-0] class
-# 121> TYPE| ENUM| PARENT_NOT_SET[ 12/ 12/ 14/ 1][0/0/0][ 1000 0000 0000][0-0] e6
-# 121> BIT_COLON| ENUM| PARENT_NOT_SET[ 15/ 15/ 16/ 1][0/0/0][ 2 0000 0000][0-0] :
-# 121> TYPE| BIT_COLON| PARENT_NOT_SET[ 17/ 17/ 22/ 1][0/0/0][ c 0000][0-0] short
-# 121> SEMICOLON| ENUM| PARENT_NOT_SET[ 22/ 22/ 23/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 121> NEWLINE| NONE| PARENT_NOT_SET[ 23/ 23/ 1/ 0][0/0/0][ 0][2-0]
-# 123> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 19/ 0][0/0/0][ 0][0-0] // enum class type
-# 123> NEWLINE| NONE| PARENT_NOT_SET[ 19/ 19/ 1/ 0][0/0/0][ 0][1-0]
-# 124> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ 1000 000e 0000][0-0] enum
-# 124> ENUM_CLASS| NONE| PARENT_NOT_SET[ 6/ 6/ 11/ 1][0/0/0][ 1000 0002 0000][0-0] class
-# 124> TYPE| ENUM| PARENT_NOT_SET[ 12/ 12/ 14/ 1][0/0/0][ 1000 0000 0000][0-0] e7
-# 124> SEMICOLON| ENUM| PARENT_NOT_SET[ 14/ 14/ 15/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 124> NEWLINE| NONE| PARENT_NOT_SET[ 15/ 15/ 1/ 0][0/0/0][ 0][2-0]
-# 126> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 39/ 0][0/0/0][ 0][0-0] // enum : integral_type { ... } x, ...
-# 126> NEWLINE| NONE| PARENT_NOT_SET[ 39/ 39/ 1/ 0][0/0/0][ 0][1-0]
-# 127> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ c 0000][0-0] enum
-# 127> BIT_COLON| ENUM| PARENT_NOT_SET[ 6/ 6/ 7/ 1][0/0/0][ 2 0000 0000][0-0] :
-# 127> TYPE| BIT_COLON| PARENT_NOT_SET[ 8/ 8/ 12/ 1][0/0/0][ e 0000][0-0] long
-# 127> TYPE| BIT_COLON| PARENT_NOT_SET[ 13/ 13/ 17/ 1][0/0/0][ 0][0-0] long
-# 127> BRACE_OPEN| ENUM| PARENT_NOT_SET[ 18/ 18/ 19/ 1][0/0/0][ 2 4000 0000][0-0] {
-# 127> WORD| NONE| PARENT_NOT_SET[ 20/ 20/ 22/ 1][1/1/0][ 400c 0004][0-0] a8
-# 127> COMMA| NONE| PARENT_NOT_SET[ 22/ 22/ 23/ 0][1/1/0][ 2 4000 0004][0-0] ,
-# 127> WORD| NONE| PARENT_NOT_SET[ 24/ 24/ 26/ 1][1/1/0][ 4008 0004][0-0] b8
-# 127> COMMA| NONE| PARENT_NOT_SET[ 26/ 26/ 27/ 0][1/1/0][ 2 4000 0004][0-0] ,
-# 127> WORD| NONE| PARENT_NOT_SET[ 28/ 28/ 30/ 1][1/1/0][ 4008 0004][0-0] c8
-# 127> BRACE_CLOSE| ENUM| PARENT_NOT_SET[ 31/ 31/ 32/ 1][0/0/0][ 2 4000 0004][0-0] }
-# 127> WORD| NONE| PARENT_NOT_SET[ 33/ 33/ 36/ 1][0/0/0][ 70c 0000][0-0] e81
-# 127> COMMA| NONE| PARENT_NOT_SET[ 36/ 36/ 37/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 127> WORD| NONE| PARENT_NOT_SET[ 38/ 38/ 41/ 1][0/0/0][ 508 0000][0-0] e82
-# 127> SEMICOLON| ENUM| PARENT_NOT_SET[ 41/ 41/ 42/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 127> NEWLINE| NONE| PARENT_NOT_SET[ 42/ 42/ 1/ 0][0/0/0][ 0][2-0]
-# 129> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 23/ 0][0/0/0][ 0][0-0] // enum { ... } x, ...
-# 129> NEWLINE| NONE| PARENT_NOT_SET[ 23/ 23/ 1/ 0][0/0/0][ 0][1-0]
-# 130> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ c 0000][0-0] enum
-# 130> BRACE_OPEN| ENUM| PARENT_NOT_SET[ 6/ 6/ 7/ 1][0/0/0][ 2 4000 0000][0-0] {
-# 130> WORD| NONE| PARENT_NOT_SET[ 8/ 8/ 10/ 1][1/1/0][ 400c 0004][0-0] a9
-# 130> COMMA| NONE| PARENT_NOT_SET[ 10/ 10/ 11/ 0][1/1/0][ 2 4000 0004][0-0] ,
-# 130> WORD| NONE| PARENT_NOT_SET[ 12/ 12/ 14/ 1][1/1/0][ 4008 0004][0-0] b9
-# 130> COMMA| NONE| PARENT_NOT_SET[ 14/ 14/ 15/ 0][1/1/0][ 2 4000 0004][0-0] ,
-# 130> WORD| NONE| PARENT_NOT_SET[ 16/ 16/ 18/ 1][1/1/0][ 4008 0004][0-0] c9
-# 130> BRACE_CLOSE| ENUM| PARENT_NOT_SET[ 19/ 19/ 20/ 1][0/0/0][ 2 4000 0004][0-0] }
-# 130> WORD| NONE| PARENT_NOT_SET[ 21/ 21/ 24/ 1][0/0/0][ 70c 0000][0-0] e91
-# 130> COMMA| NONE| PARENT_NOT_SET[ 24/ 24/ 25/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 130> WORD| NONE| PARENT_NOT_SET[ 26/ 26/ 29/ 1][0/0/0][ 508 0000][0-0] e92
-# 130> SEMICOLON| ENUM| PARENT_NOT_SET[ 29/ 29/ 30/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 130> NEWLINE| NONE| PARENT_NOT_SET[ 30/ 30/ 1/ 0][0/0/0][ 0][2-0]
-# 132> UNION| NONE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ e 0000][0-0] union
-# 132> WORD| NONE| PARENT_NOT_SET[ 7/ 7/ 17/ 1][0/0/0][ 2 0000][0-0] API_EXPORT
-# 132> TYPE| UNION| PARENT_NOT_SET[ 18/ 18/ 20/ 1][0/0/0][ 80 0000][0-0] u1
-# 132> BRACE_OPEN| UNION| PARENT_NOT_SET[ 21/ 21/ 22/ 1][0/0/0][ 2 4000 0000][0-0] {
-# 132> TYPE| NONE| PARENT_NOT_SET[ 23/ 23/ 26/ 1][1/1/0][ 408e 0000][0-0] int
-# 132> WORD| NONE| PARENT_NOT_SET[ 27/ 27/ 28/ 1][1/1/0][ 4300 0000][0-0] x
-# 132> SEMICOLON| NONE| PARENT_NOT_SET[ 28/ 28/ 29/ 0][1/1/0][ 2 4000 0000][0-0] ;
-# 132> TYPE| NONE| PARENT_NOT_SET[ 30/ 30/ 34/ 1][1/1/0][ 408e 0000][0-0] long
-# 132> WORD| NONE| PARENT_NOT_SET[ 35/ 35/ 36/ 1][1/1/0][ 4300 0000][0-0] y
-# 132> SEMICOLON| NONE| PARENT_NOT_SET[ 36/ 36/ 37/ 0][1/1/0][ 2 4000 0000][0-0] ;
-# 132> BRACE_CLOSE| UNION| PARENT_NOT_SET[ 38/ 38/ 39/ 1][0/0/0][ 2 4000 0000][0-0] }
-# 132> WORD| NONE| PARENT_NOT_SET[ 40/ 40/ 43/ 1][0/0/0][ 70c 0000][0-0] u11
-# 132> COMMA| NONE| PARENT_NOT_SET[ 43/ 43/ 44/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 132> PTR_TYPE| UNION| PARENT_NOT_SET[ 45/ 45/ 46/ 1][0/0/0][ 2 0008 0000][0-0] *
-# 132> WORD| NONE| PARENT_NOT_SET[ 46/ 46/ 49/ 0][0/0/0][ 2508 0000][0-0] u12
-# 132> ASSIGN| NONE| PARENT_NOT_SET[ 50/ 50/ 51/ 1][0/0/0][ 2 0000 0000][0-0] =
-# 132> WORD| NONE| PARENT_NOT_SET[ 52/ 52/ 59/ 1][0/0/0][ 8 0000][0-0] nullptr
-# 132> COMMA| NONE| PARENT_NOT_SET[ 59/ 59/ 60/ 0][0/0/0][ 2 0000 0000][0-0] ,
-# 132> PTR_TYPE| UNION| PARENT_NOT_SET[ 61/ 61/ 62/ 1][0/0/0][ 2 0008 0000][0-0] *
-# 132> WORD| NONE| PARENT_NOT_SET[ 62/ 62/ 65/ 0][0/0/0][ 2508 0000][0-0] u13
-# 132> BRACE_OPEN| BRACED_INIT_LIST| PARENT_NOT_SET[ 65/ 65/ 66/ 0][0/0/0][ 2 4000 0000][0-0] {
-# 132> NUMBER| NONE| PARENT_NOT_SET[ 66/ 66/ 67/ 0][1/1/0][ 400c 0000][0-0] 0
-# 132> BRACE_CLOSE| BRACED_INIT_LIST| PARENT_NOT_SET[ 67/ 67/ 68/ 0][0/0/0][ 2 4000 0000][0-0] }
-# 132> SEMICOLON| UNION| PARENT_NOT_SET[ 68/ 68/ 69/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 132> NEWLINE| NONE| PARENT_NOT_SET[ 69/ 69/ 1/ 0][0/0/0][ 0][2-0]
-# 134> UNION| NONE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ e 0000][0-0] union
-# 134> WORD| NONE| PARENT_NOT_SET[ 7/ 7/ 17/ 1][0/0/0][ 2 0000][0-0] API_EXPORT
-# 134> TYPE| UNION| PARENT_NOT_SET[ 18/ 18/ 20/ 1][0/0/0][ 82 0000][0-0] u1
-# 134> WORD| NONE| PARENT_NOT_SET[ 21/ 21/ 24/ 1][0/0/0][ 300 0000][0-0] u21
-# 134> SEMICOLON| UNION| PARENT_NOT_SET[ 24/ 24/ 25/ 0][0/0/0][ 2 0000 0000][0-0] ;
-# 134> NEWLINE| NONE| PARENT_NOT_SET[ 25/ 25/ 1/ 0][0/0/0][ 0][1-0]
-# -=====-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/help.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/help.txt
deleted file mode 100644
index f6c25116..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/help.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-Usage:
-uncrustify [options] [files ...]
-
-If no input files are specified, the input is read from stdin
-If reading from stdin, you should specify the language using -l
-or specify a filename using --assume for automatic language detection.
-
-If -F is used or files are specified on the command line,
-the output filename is 'prefix/filename' + suffix
-
-When reading from stdin or doing a single file via the '-f' option,
-the output is dumped to stdout, unless redirected with -o FILE.
-
-Errors are always dumped to stderr
-
-The '-f' and '-o' options may not be used with '-F' or '--replace'.
-The '--prefix' and '--suffix' options may not be used with '--replace'.
-
-Basic Options:
- -c CFG : Use the config file CFG, or defaults if CFG is set to '-'.
- -f FILE : Process the single file FILE (output to stdout, use with -o).
- -o FILE : Redirect stdout to FILE.
- -F FILE : Read files to process from FILE, one filename per line (- is stdin).
- --check : Do not output the new text, instead verify that nothing changes when
- the file(s) are processed.
- The status of every file is printed to stderr.
- The exit code is EXIT_SUCCESS if there were no changes, EXIT_FAILURE otherwise.
- files : Files to process (can be combined with -F).
- --suffix SFX : Append SFX to the output filename. The default is '.uncrustify'
- --prefix PFX : Prepend PFX to the output filename path.
- --replace : Replace source files (creates a backup).
- --no-backup : Do not create backup and md5 files. Useful if files are under source control.
- --if-changed : Write to stdout (or create output FILE) only if a change was detected.
- -l : Language override: C, CPP, D, CS, JAVA, PAWN, OC, OC+, VALA.
- -t : Load a file with types (usually not needed).
- -q : Quiet mode - no output on stderr (-L will override).
- --frag : Code fragment, assume the first line is indented correctly.
- --assume FN : Uses the filename FN for automatic language detection if reading
- from stdin unless -l is specified.
-
-Config/Help Options:
- -h -? --help --usage : Print this message and exit.
- --version : Print the version and exit.
- --count-options : Print the number of available options and exit.
- --show-config : Print out option documentation and exit.
- --update-config : Output a new config file. Use with -o FILE.
- --update-config-with-doc : Output a new config file. Use with -o FILE.
- --universalindent : Output a config file for Universal Indent GUI.
- --detect : Detects the config from a source file. Use with '-f FILE'.
- Detection is fairly limited.
- --set <option>=<value> : Sets a new value to a config option.
-
-Debug Options:
- -p FILE : Dump debug info into FILE, or to stdout if FILE is set to '-'.
- Must be used in combination with '-f FILE'
- -ds FILE : Dump parsing info at various moments of the formatting process.
- --dump-steps FILE This creates a series of files named 'FILE_nnn.log', each
- corresponding to a formatting step in uncrustify.
- The file 'FILE_000.log' lists the formatting options in use.
- Must be used in combination with '-f FILE'
- -L SEV : Set the log severity (see log_levels.h; note 'A' = 'all')
- -s : Show the log severity in the logs.
- --decode : Decode remaining args (chunk flags) and exit.
- --tracking_space FILE : Prepare space tracking information for debugging.
- --tracking_nl FILE : Prepare newline tracking information for debugging.
- Cannot be used with the -o option'
-
-Usage Examples
-cat foo.d | uncrustify -q -c my.cfg -l d
-uncrustify -c my.cfg -f foo.d
-uncrustify -c my.cfg -f foo.d -L0-2,20-23,51
-uncrustify -c my.cfg -f foo.d -o foo.d
-uncrustify -c my.cfg -f foo.d -o foo.d -ds dump
-uncrustify -c my.cfg foo.d
-uncrustify -c my.cfg --replace foo.d
-uncrustify -c my.cfg --no-backup foo.d
-uncrustify -c my.cfg --prefix=out -F files.txt
-
-Note: Use comments containing ' *INDENT-OFF*' and ' *INDENT-ON*' to disable
- processing of parts of the source file (these can be overridden with
- enable_processing_cmt and disable_processing_cmt).
-
-There are currently x options and minimal documentation.
-Try UniversalIndentGUI and good luck.
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/replace.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/replace.txt
deleted file mode 100644
index 91bffadc..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/replace.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-do_source_file(1524): Parsing: input/I-3310.c as language C
-do_source_file(1524): Parsing: input/backup.h as language C-Header
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/tracking_space.html b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/tracking_space.html
deleted file mode 100644
index b0098a0e..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/tracking_space.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<html>
-<head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
- <title>Uncrustify: where do the Spaces options work</title>
-</head>
-<body lang="en-US">
-<p>
-</p>
-<pre>
-{
- a = b + 111 - 55;
-}
-template<typename ...A, int... B>
-struct foo1 : foo1<A..., (sizeof...(A) + B)...>
-{
- foo1() {
- int x = sizeof...(A);
- bool b = x > 1;
- }
-};
-</pre>
-</body>
-</html>
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/universalindent.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/universalindent.cfg
deleted file mode 100644
index 4d7457be..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/universalindent.cfg
+++ /dev/null
@@ -1,7386 +0,0 @@
-[header]
-categories=General options|Spacing options|Indenting options|Newline adding and removing options|Blank line options|Positioning options|Line splitting options|Code alignment options (not left column spaces/tabs)|Comment modification options|Code modifying options (non-whitespace)|Preprocessor options|Sort includes options|Use or Do not Use options|Warn levels - 1: error, 2: warning (default), 3: note
-cfgFileParameterEnding=cr
-configFilename=uncrustify.cfg
-fileTypes=*.c|*.c++|*.cc|*.cp|*.cpp|*.cs|*.cxx|*.d|*.di|*.es|*.h|*.h++|*.hh|*.hp|*.hpp|*.hxx|*.inl|*.java|*.js|*.m|*.mm|*.p|*.pawn|*.sma|*.sqc|*.sql|*.vala
-indenterFileName=uncrustify
-indenterName=Uncrustify (C, C++, C#, ObjectiveC, D, Java, Pawn, VALA)
-inputFileName=indentinput
-inputFileParameter="-f "
-manual=http://uncrustify.sourceforge.net/config.txt
-outputFileName=indentoutput
-outputFileParameter="-o "
-stringparaminquotes=false
-parameterOrder=ipo
-showHelpParameter=-h
-stringparaminquotes=false
-useCfgFileParameter="-c "
-
-
-[Newlines]
-Category=0
-Description="<html>The type of line endings.<br/><br/>Default: auto</html>"
-Enabled=false
-EditorType=multiple
-Choices=newlines=lf|newlines=crlf|newlines=cr|newlines=auto
-ChoicesReadable="Newlines Unix|Newlines Win|Newlines Mac|Newlines Auto"
-ValueDefault=auto
-
-[Input Tab Size]
-Category=0
-Description="<html>The original size of tabs in the input.<br/><br/>Default: 8</html>"
-Enabled=false
-EditorType=numeric
-CallName="input_tab_size="
-MinVal=1
-MaxVal=32
-ValueDefault=8
-
-[Output Tab Size]
-Category=0
-Description="<html>The size of tabs in the output (only used if align_with_tabs=true).<br/><br/>Default: 8</html>"
-Enabled=false
-EditorType=numeric
-CallName="output_tab_size="
-MinVal=1
-MaxVal=32
-ValueDefault=8
-
-[String Escape Char]
-Category=0
-Description="<html>The ASCII value of the string escape char, usually 92 (\) or (Pawn) 94 (^).<br/><br/>Default: 92</html>"
-Enabled=false
-EditorType=numeric
-CallName="string_escape_char="
-MinVal=0
-MaxVal=255
-ValueDefault=92
-
-[String Escape Char2]
-Category=0
-Description="<html>Alternate string escape char (usually only used for Pawn).<br/>Only works right before the quote char.</html>"
-Enabled=false
-EditorType=numeric
-CallName="string_escape_char2="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[String Replace Tab Chars]
-Category=0
-Description="<html>Replace tab characters found in string literals with the escape sequence \t<br/>instead.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=string_replace_tab_chars=true|string_replace_tab_chars=false
-ValueDefault=false
-
-[Tok Split Gte]
-Category=0
-Description="<html>Allow interpreting '&gt;=' and '&gt;&gt;=' as part of a template in code like<br/>'void f(list&lt;list&lt;B&gt;&gt;=val);'. If true, 'assert(x&lt;0 &amp;&amp; y&gt;=3)' will be broken.<br/>Improvements to template detection may make this option obsolete.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=tok_split_gte=true|tok_split_gte=false
-ValueDefault=false
-
-[Disable Processing Nl Cont]
-Category=0
-Description="<html>Disable formatting of NL_CONT ('\\n') ended lines (e.g. multi-line macros).</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=disable_processing_nl_cont=true|disable_processing_nl_cont=false
-ValueDefault=false
-
-[Disable Processing Cmt]
-Category=0
-Description="<html>Specify the marker used in comments to disable processing of part of the<br/>file.<br/><br/>Default: *INDENT-OFF*</html>"
-Enabled=false
-CallName=disable_processing_cmt=
-EditorType=string
-ValueDefault= *INDENT-OFF*
-
-[Enable Processing Cmt]
-Category=0
-Description="<html>Specify the marker used in comments to (re)enable processing in a file.<br/><br/>Default: *INDENT-ON*</html>"
-Enabled=false
-CallName=enable_processing_cmt=
-EditorType=string
-ValueDefault= *INDENT-ON*
-
-[Enable Digraphs]
-Category=0
-Description="<html>Enable parsing of digraphs.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=enable_digraphs=true|enable_digraphs=false
-ValueDefault=false
-
-[Processing Cmt As Regex]
-Category=0
-Description="<html>Option to allow both disable_processing_cmt and enable_processing_cmt<br/>strings, if specified, to be interpreted as ECMAScript regular expressions.<br/>If true, a regex search will be performed within comments according to the<br/>specified patterns in order to disable/enable processing.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=processing_cmt_as_regex=true|processing_cmt_as_regex=false
-ValueDefault=false
-
-[Utf8 Bom]
-Category=0
-Description="<html>Add or remove the UTF-8 BOM (recommend 'remove').</html>"
-Enabled=false
-EditorType=multiple
-Choices=utf8_bom=ignore|utf8_bom=add|utf8_bom=remove|utf8_bom=force|utf8_bom=not_defined
-ChoicesReadable="Ignore Utf8 Bom|Add Utf8 Bom|Remove Utf8 Bom|Force Utf8 Bom"
-ValueDefault=ignore
-
-[Utf8 Byte]
-Category=0
-Description="<html>If the file contains bytes with values between 128 and 255, but is not<br/>UTF-8, then output as UTF-8.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=utf8_byte=true|utf8_byte=false
-ValueDefault=false
-
-[Utf8 Force]
-Category=0
-Description="<html>Force the output encoding to UTF-8.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=utf8_force=true|utf8_force=false
-ValueDefault=false
-
-[Sp Arith]
-Category=1
-Description="<html>Add or remove space around non-assignment symbolic operators ('+', '/', '%',<br/>'&lt;&lt;', and so forth).</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_arith=ignore|sp_arith=add|sp_arith=remove|sp_arith=force|sp_arith=not_defined
-ChoicesReadable="Ignore Sp Arith|Add Sp Arith|Remove Sp Arith|Force Sp Arith"
-ValueDefault=ignore
-
-[Sp Arith Additive]
-Category=1
-Description="<html>Add or remove space around arithmetic operators '+' and '-'.<br/><br/>Overrides sp_arith.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_arith_additive=ignore|sp_arith_additive=add|sp_arith_additive=remove|sp_arith_additive=force|sp_arith_additive=not_defined
-ChoicesReadable="Ignore Sp Arith Additive|Add Sp Arith Additive|Remove Sp Arith Additive|Force Sp Arith Additive"
-ValueDefault=ignore
-
-[Sp Assign]
-Category=1
-Description="<html>Add or remove space around assignment operator '=', '+=', etc.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_assign=ignore|sp_assign=add|sp_assign=remove|sp_assign=force|sp_assign=not_defined
-ChoicesReadable="Ignore Sp Assign|Add Sp Assign|Remove Sp Assign|Force Sp Assign"
-ValueDefault=ignore
-
-[Sp Cpp Lambda Assign]
-Category=1
-Description="<html>Add or remove space around '=' in C++11 lambda capture specifications.<br/><br/>Overrides sp_assign.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_lambda_assign=ignore|sp_cpp_lambda_assign=add|sp_cpp_lambda_assign=remove|sp_cpp_lambda_assign=force|sp_cpp_lambda_assign=not_defined
-ChoicesReadable="Ignore Sp Cpp Lambda Assign|Add Sp Cpp Lambda Assign|Remove Sp Cpp Lambda Assign|Force Sp Cpp Lambda Assign"
-ValueDefault=ignore
-
-[Sp Cpp Lambda Square Paren]
-Category=1
-Description="<html>Add or remove space after the capture specification of a C++11 lambda when<br/>an argument list is present, as in '[] &lt;here&gt; (int x){ ... }'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_lambda_square_paren=ignore|sp_cpp_lambda_square_paren=add|sp_cpp_lambda_square_paren=remove|sp_cpp_lambda_square_paren=force|sp_cpp_lambda_square_paren=not_defined
-ChoicesReadable="Ignore Sp Cpp Lambda Square Paren|Add Sp Cpp Lambda Square Paren|Remove Sp Cpp Lambda Square Paren|Force Sp Cpp Lambda Square Paren"
-ValueDefault=ignore
-
-[Sp Cpp Lambda Square Brace]
-Category=1
-Description="<html>Add or remove space after the capture specification of a C++11 lambda with<br/>no argument list is present, as in '[] &lt;here&gt; { ... }'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_lambda_square_brace=ignore|sp_cpp_lambda_square_brace=add|sp_cpp_lambda_square_brace=remove|sp_cpp_lambda_square_brace=force|sp_cpp_lambda_square_brace=not_defined
-ChoicesReadable="Ignore Sp Cpp Lambda Square Brace|Add Sp Cpp Lambda Square Brace|Remove Sp Cpp Lambda Square Brace|Force Sp Cpp Lambda Square Brace"
-ValueDefault=ignore
-
-[Sp Cpp Lambda Argument List]
-Category=1
-Description="<html>Add or remove space after the opening parenthesis and before the closing<br/>parenthesis of a argument list of a C++11 lambda, as in<br/>'[]( &lt;here&gt; int x &lt;here&gt; ){ ... }'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_lambda_argument_list=ignore|sp_cpp_lambda_argument_list=add|sp_cpp_lambda_argument_list=remove|sp_cpp_lambda_argument_list=force|sp_cpp_lambda_argument_list=not_defined
-ChoicesReadable="Ignore Sp Cpp Lambda Argument List|Add Sp Cpp Lambda Argument List|Remove Sp Cpp Lambda Argument List|Force Sp Cpp Lambda Argument List"
-ValueDefault=ignore
-
-[Sp Cpp Lambda Paren Brace]
-Category=1
-Description="<html>Add or remove space after the argument list of a C++11 lambda, as in<br/>'[](int x) &lt;here&gt; { ... }'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_lambda_paren_brace=ignore|sp_cpp_lambda_paren_brace=add|sp_cpp_lambda_paren_brace=remove|sp_cpp_lambda_paren_brace=force|sp_cpp_lambda_paren_brace=not_defined
-ChoicesReadable="Ignore Sp Cpp Lambda Paren Brace|Add Sp Cpp Lambda Paren Brace|Remove Sp Cpp Lambda Paren Brace|Force Sp Cpp Lambda Paren Brace"
-ValueDefault=ignore
-
-[Sp Cpp Lambda Fparen]
-Category=1
-Description="<html>Add or remove space between a lambda body and its call operator of an<br/>immediately invoked lambda, as in '[]( ... ){ ... } &lt;here&gt; ( ... )'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_lambda_fparen=ignore|sp_cpp_lambda_fparen=add|sp_cpp_lambda_fparen=remove|sp_cpp_lambda_fparen=force|sp_cpp_lambda_fparen=not_defined
-ChoicesReadable="Ignore Sp Cpp Lambda Fparen|Add Sp Cpp Lambda Fparen|Remove Sp Cpp Lambda Fparen|Force Sp Cpp Lambda Fparen"
-ValueDefault=ignore
-
-[Sp Assign Default]
-Category=1
-Description="<html>Add or remove space around assignment operator '=' in a prototype.<br/><br/>If set to ignore, use sp_assign.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_assign_default=ignore|sp_assign_default=add|sp_assign_default=remove|sp_assign_default=force|sp_assign_default=not_defined
-ChoicesReadable="Ignore Sp Assign Default|Add Sp Assign Default|Remove Sp Assign Default|Force Sp Assign Default"
-ValueDefault=ignore
-
-[Sp Before Assign]
-Category=1
-Description="<html>Add or remove space before assignment operator '=', '+=', etc.<br/><br/>Overrides sp_assign.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_assign=ignore|sp_before_assign=add|sp_before_assign=remove|sp_before_assign=force|sp_before_assign=not_defined
-ChoicesReadable="Ignore Sp Before Assign|Add Sp Before Assign|Remove Sp Before Assign|Force Sp Before Assign"
-ValueDefault=ignore
-
-[Sp After Assign]
-Category=1
-Description="<html>Add or remove space after assignment operator '=', '+=', etc.<br/><br/>Overrides sp_assign.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_assign=ignore|sp_after_assign=add|sp_after_assign=remove|sp_after_assign=force|sp_after_assign=not_defined
-ChoicesReadable="Ignore Sp After Assign|Add Sp After Assign|Remove Sp After Assign|Force Sp After Assign"
-ValueDefault=ignore
-
-[Sp Enum Brace]
-Category=1
-Description="<html>Add or remove space in 'enum {'.<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_enum_brace=ignore|sp_enum_brace=add|sp_enum_brace=remove|sp_enum_brace=force|sp_enum_brace=not_defined
-ChoicesReadable="Ignore Sp Enum Brace|Add Sp Enum Brace|Remove Sp Enum Brace|Force Sp Enum Brace"
-ValueDefault=add
-
-[Sp Enum Paren]
-Category=1
-Description="<html>Add or remove space in 'NS_ENUM ('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_enum_paren=ignore|sp_enum_paren=add|sp_enum_paren=remove|sp_enum_paren=force|sp_enum_paren=not_defined
-ChoicesReadable="Ignore Sp Enum Paren|Add Sp Enum Paren|Remove Sp Enum Paren|Force Sp Enum Paren"
-ValueDefault=ignore
-
-[Sp Enum Assign]
-Category=1
-Description="<html>Add or remove space around assignment '=' in enum.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_enum_assign=ignore|sp_enum_assign=add|sp_enum_assign=remove|sp_enum_assign=force|sp_enum_assign=not_defined
-ChoicesReadable="Ignore Sp Enum Assign|Add Sp Enum Assign|Remove Sp Enum Assign|Force Sp Enum Assign"
-ValueDefault=ignore
-
-[Sp Enum Before Assign]
-Category=1
-Description="<html>Add or remove space before assignment '=' in enum.<br/><br/>Overrides sp_enum_assign.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_enum_before_assign=ignore|sp_enum_before_assign=add|sp_enum_before_assign=remove|sp_enum_before_assign=force|sp_enum_before_assign=not_defined
-ChoicesReadable="Ignore Sp Enum Before Assign|Add Sp Enum Before Assign|Remove Sp Enum Before Assign|Force Sp Enum Before Assign"
-ValueDefault=ignore
-
-[Sp Enum After Assign]
-Category=1
-Description="<html>Add or remove space after assignment '=' in enum.<br/><br/>Overrides sp_enum_assign.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_enum_after_assign=ignore|sp_enum_after_assign=add|sp_enum_after_assign=remove|sp_enum_after_assign=force|sp_enum_after_assign=not_defined
-ChoicesReadable="Ignore Sp Enum After Assign|Add Sp Enum After Assign|Remove Sp Enum After Assign|Force Sp Enum After Assign"
-ValueDefault=ignore
-
-[Sp Enum Colon]
-Category=1
-Description="<html>Add or remove space around assignment ':' in enum.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_enum_colon=ignore|sp_enum_colon=add|sp_enum_colon=remove|sp_enum_colon=force|sp_enum_colon=not_defined
-ChoicesReadable="Ignore Sp Enum Colon|Add Sp Enum Colon|Remove Sp Enum Colon|Force Sp Enum Colon"
-ValueDefault=ignore
-
-[Sp Pp Concat]
-Category=1
-Description="<html>Add or remove space around preprocessor '##' concatenation operator.<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_pp_concat=ignore|sp_pp_concat=add|sp_pp_concat=remove|sp_pp_concat=force|sp_pp_concat=not_defined
-ChoicesReadable="Ignore Sp Pp Concat|Add Sp Pp Concat|Remove Sp Pp Concat|Force Sp Pp Concat"
-ValueDefault=add
-
-[Sp Pp Stringify]
-Category=1
-Description="<html>Add or remove space after preprocessor '#' stringify operator.<br/>Also affects the '#@' charizing operator.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_pp_stringify=ignore|sp_pp_stringify=add|sp_pp_stringify=remove|sp_pp_stringify=force|sp_pp_stringify=not_defined
-ChoicesReadable="Ignore Sp Pp Stringify|Add Sp Pp Stringify|Remove Sp Pp Stringify|Force Sp Pp Stringify"
-ValueDefault=ignore
-
-[Sp Before Pp Stringify]
-Category=1
-Description="<html>Add or remove space before preprocessor '#' stringify operator<br/>as in '#define x(y) L#y'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_pp_stringify=ignore|sp_before_pp_stringify=add|sp_before_pp_stringify=remove|sp_before_pp_stringify=force|sp_before_pp_stringify=not_defined
-ChoicesReadable="Ignore Sp Before Pp Stringify|Add Sp Before Pp Stringify|Remove Sp Before Pp Stringify|Force Sp Before Pp Stringify"
-ValueDefault=ignore
-
-[Sp Bool]
-Category=1
-Description="<html>Add or remove space around boolean operators '&amp;&amp;' and '||'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_bool=ignore|sp_bool=add|sp_bool=remove|sp_bool=force|sp_bool=not_defined
-ChoicesReadable="Ignore Sp Bool|Add Sp Bool|Remove Sp Bool|Force Sp Bool"
-ValueDefault=ignore
-
-[Sp Compare]
-Category=1
-Description="<html>Add or remove space around compare operator '&lt;', '&gt;', '==', etc.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_compare=ignore|sp_compare=add|sp_compare=remove|sp_compare=force|sp_compare=not_defined
-ChoicesReadable="Ignore Sp Compare|Add Sp Compare|Remove Sp Compare|Force Sp Compare"
-ValueDefault=ignore
-
-[Sp Inside Paren]
-Category=1
-Description="<html>Add or remove space inside '(' and ')'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_paren=ignore|sp_inside_paren=add|sp_inside_paren=remove|sp_inside_paren=force|sp_inside_paren=not_defined
-ChoicesReadable="Ignore Sp Inside Paren|Add Sp Inside Paren|Remove Sp Inside Paren|Force Sp Inside Paren"
-ValueDefault=ignore
-
-[Sp Paren Paren]
-Category=1
-Description="<html>Add or remove space between nested parentheses, i.e. '((' vs. ') )'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_paren_paren=ignore|sp_paren_paren=add|sp_paren_paren=remove|sp_paren_paren=force|sp_paren_paren=not_defined
-ChoicesReadable="Ignore Sp Paren Paren|Add Sp Paren Paren|Remove Sp Paren Paren|Force Sp Paren Paren"
-ValueDefault=ignore
-
-[Sp Cparen Oparen]
-Category=1
-Description="<html>Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cparen_oparen=ignore|sp_cparen_oparen=add|sp_cparen_oparen=remove|sp_cparen_oparen=force|sp_cparen_oparen=not_defined
-ChoicesReadable="Ignore Sp Cparen Oparen|Add Sp Cparen Oparen|Remove Sp Cparen Oparen|Force Sp Cparen Oparen"
-ValueDefault=ignore
-
-[Sp Balance Nested Parens]
-Category=1
-Description="<html>Whether to balance spaces inside nested parentheses.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=sp_balance_nested_parens=true|sp_balance_nested_parens=false
-ValueDefault=false
-
-[Sp Paren Brace]
-Category=1
-Description="<html>Add or remove space between ')' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_paren_brace=ignore|sp_paren_brace=add|sp_paren_brace=remove|sp_paren_brace=force|sp_paren_brace=not_defined
-ChoicesReadable="Ignore Sp Paren Brace|Add Sp Paren Brace|Remove Sp Paren Brace|Force Sp Paren Brace"
-ValueDefault=ignore
-
-[Sp Brace Brace]
-Category=1
-Description="<html>Add or remove space between nested braces, i.e. '{{' vs. '{ {'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_brace_brace=ignore|sp_brace_brace=add|sp_brace_brace=remove|sp_brace_brace=force|sp_brace_brace=not_defined
-ChoicesReadable="Ignore Sp Brace Brace|Add Sp Brace Brace|Remove Sp Brace Brace|Force Sp Brace Brace"
-ValueDefault=ignore
-
-[Sp Before Ptr Star]
-Category=1
-Description="<html>Add or remove space before pointer star '*'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_ptr_star=ignore|sp_before_ptr_star=add|sp_before_ptr_star=remove|sp_before_ptr_star=force|sp_before_ptr_star=not_defined
-ChoicesReadable="Ignore Sp Before Ptr Star|Add Sp Before Ptr Star|Remove Sp Before Ptr Star|Force Sp Before Ptr Star"
-ValueDefault=ignore
-
-[Sp Before Unnamed Ptr Star]
-Category=1
-Description="<html>Add or remove space before pointer star '*' that isn't followed by a<br/>variable name. If set to ignore, sp_before_ptr_star is used instead.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_unnamed_ptr_star=ignore|sp_before_unnamed_ptr_star=add|sp_before_unnamed_ptr_star=remove|sp_before_unnamed_ptr_star=force|sp_before_unnamed_ptr_star=not_defined
-ChoicesReadable="Ignore Sp Before Unnamed Ptr Star|Add Sp Before Unnamed Ptr Star|Remove Sp Before Unnamed Ptr Star|Force Sp Before Unnamed Ptr Star"
-ValueDefault=ignore
-
-[Sp Between Ptr Star]
-Category=1
-Description="<html>Add or remove space between pointer stars '*', as in 'int ***a;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_between_ptr_star=ignore|sp_between_ptr_star=add|sp_between_ptr_star=remove|sp_between_ptr_star=force|sp_between_ptr_star=not_defined
-ChoicesReadable="Ignore Sp Between Ptr Star|Add Sp Between Ptr Star|Remove Sp Between Ptr Star|Force Sp Between Ptr Star"
-ValueDefault=ignore
-
-[Sp After Ptr Star]
-Category=1
-Description="<html>Add or remove space after pointer star '*', if followed by a word.<br/><br/>Overrides sp_type_func.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_ptr_star=ignore|sp_after_ptr_star=add|sp_after_ptr_star=remove|sp_after_ptr_star=force|sp_after_ptr_star=not_defined
-ChoicesReadable="Ignore Sp After Ptr Star|Add Sp After Ptr Star|Remove Sp After Ptr Star|Force Sp After Ptr Star"
-ValueDefault=ignore
-
-[Sp After Ptr Block Caret]
-Category=1
-Description="<html>Add or remove space after pointer caret '^', if followed by a word.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_ptr_block_caret=ignore|sp_after_ptr_block_caret=add|sp_after_ptr_block_caret=remove|sp_after_ptr_block_caret=force|sp_after_ptr_block_caret=not_defined
-ChoicesReadable="Ignore Sp After Ptr Block Caret|Add Sp After Ptr Block Caret|Remove Sp After Ptr Block Caret|Force Sp After Ptr Block Caret"
-ValueDefault=ignore
-
-[Sp After Ptr Star Qualifier]
-Category=1
-Description="<html>Add or remove space after pointer star '*', if followed by a qualifier.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_ptr_star_qualifier=ignore|sp_after_ptr_star_qualifier=add|sp_after_ptr_star_qualifier=remove|sp_after_ptr_star_qualifier=force|sp_after_ptr_star_qualifier=not_defined
-ChoicesReadable="Ignore Sp After Ptr Star Qualifier|Add Sp After Ptr Star Qualifier|Remove Sp After Ptr Star Qualifier|Force Sp After Ptr Star Qualifier"
-ValueDefault=ignore
-
-[Sp After Ptr Star Func]
-Category=1
-Description="<html>Add or remove space after a pointer star '*', if followed by a function<br/>prototype or function definition.<br/><br/>Overrides sp_after_ptr_star and sp_type_func.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_ptr_star_func=ignore|sp_after_ptr_star_func=add|sp_after_ptr_star_func=remove|sp_after_ptr_star_func=force|sp_after_ptr_star_func=not_defined
-ChoicesReadable="Ignore Sp After Ptr Star Func|Add Sp After Ptr Star Func|Remove Sp After Ptr Star Func|Force Sp After Ptr Star Func"
-ValueDefault=ignore
-
-[Sp After Ptr Star Trailing]
-Category=1
-Description="<html>Add or remove space after a pointer star '*' in the trailing return of a<br/>function prototype or function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_ptr_star_trailing=ignore|sp_after_ptr_star_trailing=add|sp_after_ptr_star_trailing=remove|sp_after_ptr_star_trailing=force|sp_after_ptr_star_trailing=not_defined
-ChoicesReadable="Ignore Sp After Ptr Star Trailing|Add Sp After Ptr Star Trailing|Remove Sp After Ptr Star Trailing|Force Sp After Ptr Star Trailing"
-ValueDefault=ignore
-
-[Sp Ptr Star Func Var]
-Category=1
-Description="<html>Add or remove space between the pointer star '*' and the name of the variable<br/>in a function pointer definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_ptr_star_func_var=ignore|sp_ptr_star_func_var=add|sp_ptr_star_func_var=remove|sp_ptr_star_func_var=force|sp_ptr_star_func_var=not_defined
-ChoicesReadable="Ignore Sp Ptr Star Func Var|Add Sp Ptr Star Func Var|Remove Sp Ptr Star Func Var|Force Sp Ptr Star Func Var"
-ValueDefault=ignore
-
-[Sp Ptr Star Func Type]
-Category=1
-Description="<html>Add or remove space between the pointer star '*' and the name of the type<br/>in a function pointer type definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_ptr_star_func_type=ignore|sp_ptr_star_func_type=add|sp_ptr_star_func_type=remove|sp_ptr_star_func_type=force|sp_ptr_star_func_type=not_defined
-ChoicesReadable="Ignore Sp Ptr Star Func Type|Add Sp Ptr Star Func Type|Remove Sp Ptr Star Func Type|Force Sp Ptr Star Func Type"
-ValueDefault=ignore
-
-[Sp Ptr Star Paren]
-Category=1
-Description="<html>Add or remove space after a pointer star '*', if followed by an open<br/>parenthesis, as in 'void* (*)()'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_ptr_star_paren=ignore|sp_ptr_star_paren=add|sp_ptr_star_paren=remove|sp_ptr_star_paren=force|sp_ptr_star_paren=not_defined
-ChoicesReadable="Ignore Sp Ptr Star Paren|Add Sp Ptr Star Paren|Remove Sp Ptr Star Paren|Force Sp Ptr Star Paren"
-ValueDefault=ignore
-
-[Sp Before Ptr Star Func]
-Category=1
-Description="<html>Add or remove space before a pointer star '*', if followed by a function<br/>prototype or function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_ptr_star_func=ignore|sp_before_ptr_star_func=add|sp_before_ptr_star_func=remove|sp_before_ptr_star_func=force|sp_before_ptr_star_func=not_defined
-ChoicesReadable="Ignore Sp Before Ptr Star Func|Add Sp Before Ptr Star Func|Remove Sp Before Ptr Star Func|Force Sp Before Ptr Star Func"
-ValueDefault=ignore
-
-[Sp Before Ptr Star Trailing]
-Category=1
-Description="<html>Add or remove space before a pointer star '*' in the trailing return of a<br/>function prototype or function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_ptr_star_trailing=ignore|sp_before_ptr_star_trailing=add|sp_before_ptr_star_trailing=remove|sp_before_ptr_star_trailing=force|sp_before_ptr_star_trailing=not_defined
-ChoicesReadable="Ignore Sp Before Ptr Star Trailing|Add Sp Before Ptr Star Trailing|Remove Sp Before Ptr Star Trailing|Force Sp Before Ptr Star Trailing"
-ValueDefault=ignore
-
-[Sp Before Byref]
-Category=1
-Description="<html>Add or remove space before a reference sign '&amp;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_byref=ignore|sp_before_byref=add|sp_before_byref=remove|sp_before_byref=force|sp_before_byref=not_defined
-ChoicesReadable="Ignore Sp Before Byref|Add Sp Before Byref|Remove Sp Before Byref|Force Sp Before Byref"
-ValueDefault=ignore
-
-[Sp Before Unnamed Byref]
-Category=1
-Description="<html>Add or remove space before a reference sign '&amp;' that isn't followed by a<br/>variable name. If set to ignore, sp_before_byref is used instead.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_unnamed_byref=ignore|sp_before_unnamed_byref=add|sp_before_unnamed_byref=remove|sp_before_unnamed_byref=force|sp_before_unnamed_byref=not_defined
-ChoicesReadable="Ignore Sp Before Unnamed Byref|Add Sp Before Unnamed Byref|Remove Sp Before Unnamed Byref|Force Sp Before Unnamed Byref"
-ValueDefault=ignore
-
-[Sp After Byref]
-Category=1
-Description="<html>Add or remove space after reference sign '&amp;', if followed by a word.<br/><br/>Overrides sp_type_func.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_byref=ignore|sp_after_byref=add|sp_after_byref=remove|sp_after_byref=force|sp_after_byref=not_defined
-ChoicesReadable="Ignore Sp After Byref|Add Sp After Byref|Remove Sp After Byref|Force Sp After Byref"
-ValueDefault=ignore
-
-[Sp After Byref Func]
-Category=1
-Description="<html>Add or remove space after a reference sign '&amp;', if followed by a function<br/>prototype or function definition.<br/><br/>Overrides sp_after_byref and sp_type_func.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_byref_func=ignore|sp_after_byref_func=add|sp_after_byref_func=remove|sp_after_byref_func=force|sp_after_byref_func=not_defined
-ChoicesReadable="Ignore Sp After Byref Func|Add Sp After Byref Func|Remove Sp After Byref Func|Force Sp After Byref Func"
-ValueDefault=ignore
-
-[Sp Before Byref Func]
-Category=1
-Description="<html>Add or remove space before a reference sign '&amp;', if followed by a function<br/>prototype or function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_byref_func=ignore|sp_before_byref_func=add|sp_before_byref_func=remove|sp_before_byref_func=force|sp_before_byref_func=not_defined
-ChoicesReadable="Ignore Sp Before Byref Func|Add Sp Before Byref Func|Remove Sp Before Byref Func|Force Sp Before Byref Func"
-ValueDefault=ignore
-
-[Sp Byref Paren]
-Category=1
-Description="<html>Add or remove space after a reference sign '&amp;', if followed by an open<br/>parenthesis, as in 'char&amp; (*)()'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_byref_paren=ignore|sp_byref_paren=add|sp_byref_paren=remove|sp_byref_paren=force|sp_byref_paren=not_defined
-ChoicesReadable="Ignore Sp Byref Paren|Add Sp Byref Paren|Remove Sp Byref Paren|Force Sp Byref Paren"
-ValueDefault=ignore
-
-[Sp After Type]
-Category=1
-Description="<html>Add or remove space between type and word. In cases where total removal of<br/>whitespace would be a syntax error, a value of 'remove' is treated the same<br/>as 'force'.<br/><br/>This also affects some other instances of space following a type that are<br/>not covered by other options; for example, between the return type and<br/>parenthesis of a function type template argument, between the type and<br/>parenthesis of an array parameter, or between 'decltype(...)' and the<br/>following word.<br/><br/>Default: force</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_type=ignore|sp_after_type=add|sp_after_type=remove|sp_after_type=force|sp_after_type=not_defined
-ChoicesReadable="Ignore Sp After Type|Add Sp After Type|Remove Sp After Type|Force Sp After Type"
-ValueDefault=force
-
-[Sp After Decltype]
-Category=1
-Description="<html>Add or remove space between 'decltype(...)' and word,<br/>brace or function call.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_decltype=ignore|sp_after_decltype=add|sp_after_decltype=remove|sp_after_decltype=force|sp_after_decltype=not_defined
-ChoicesReadable="Ignore Sp After Decltype|Add Sp After Decltype|Remove Sp After Decltype|Force Sp After Decltype"
-ValueDefault=ignore
-
-[Sp Before Template Paren]
-Category=1
-Description="<html>(D) Add or remove space before the parenthesis in the D constructs<br/>'template Foo(' and 'class Foo('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_template_paren=ignore|sp_before_template_paren=add|sp_before_template_paren=remove|sp_before_template_paren=force|sp_before_template_paren=not_defined
-ChoicesReadable="Ignore Sp Before Template Paren|Add Sp Before Template Paren|Remove Sp Before Template Paren|Force Sp Before Template Paren"
-ValueDefault=ignore
-
-[Sp Template Angle]
-Category=1
-Description="<html>Add or remove space between 'template' and '&lt;'.<br/>If set to ignore, sp_before_angle is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_template_angle=ignore|sp_template_angle=add|sp_template_angle=remove|sp_template_angle=force|sp_template_angle=not_defined
-ChoicesReadable="Ignore Sp Template Angle|Add Sp Template Angle|Remove Sp Template Angle|Force Sp Template Angle"
-ValueDefault=ignore
-
-[Sp Before Angle]
-Category=1
-Description="<html>Add or remove space before '&lt;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_angle=ignore|sp_before_angle=add|sp_before_angle=remove|sp_before_angle=force|sp_before_angle=not_defined
-ChoicesReadable="Ignore Sp Before Angle|Add Sp Before Angle|Remove Sp Before Angle|Force Sp Before Angle"
-ValueDefault=ignore
-
-[Sp Inside Angle]
-Category=1
-Description="<html>Add or remove space inside '&lt;' and '&gt;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_angle=ignore|sp_inside_angle=add|sp_inside_angle=remove|sp_inside_angle=force|sp_inside_angle=not_defined
-ChoicesReadable="Ignore Sp Inside Angle|Add Sp Inside Angle|Remove Sp Inside Angle|Force Sp Inside Angle"
-ValueDefault=ignore
-
-[Sp Inside Angle Empty]
-Category=1
-Description="<html>Add or remove space inside '&lt;&gt;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_angle_empty=ignore|sp_inside_angle_empty=add|sp_inside_angle_empty=remove|sp_inside_angle_empty=force|sp_inside_angle_empty=not_defined
-ChoicesReadable="Ignore Sp Inside Angle Empty|Add Sp Inside Angle Empty|Remove Sp Inside Angle Empty|Force Sp Inside Angle Empty"
-ValueDefault=ignore
-
-[Sp Angle Colon]
-Category=1
-Description="<html>Add or remove space between '&gt;' and ':'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_angle_colon=ignore|sp_angle_colon=add|sp_angle_colon=remove|sp_angle_colon=force|sp_angle_colon=not_defined
-ChoicesReadable="Ignore Sp Angle Colon|Add Sp Angle Colon|Remove Sp Angle Colon|Force Sp Angle Colon"
-ValueDefault=ignore
-
-[Sp After Angle]
-Category=1
-Description="<html>Add or remove space after '&gt;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_angle=ignore|sp_after_angle=add|sp_after_angle=remove|sp_after_angle=force|sp_after_angle=not_defined
-ChoicesReadable="Ignore Sp After Angle|Add Sp After Angle|Remove Sp After Angle|Force Sp After Angle"
-ValueDefault=ignore
-
-[Sp Angle Paren]
-Category=1
-Description="<html>Add or remove space between '&gt;' and '(' as found in 'new List&lt;byte&gt;(foo);'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_angle_paren=ignore|sp_angle_paren=add|sp_angle_paren=remove|sp_angle_paren=force|sp_angle_paren=not_defined
-ChoicesReadable="Ignore Sp Angle Paren|Add Sp Angle Paren|Remove Sp Angle Paren|Force Sp Angle Paren"
-ValueDefault=ignore
-
-[Sp Angle Paren Empty]
-Category=1
-Description="<html>Add or remove space between '&gt;' and '()' as found in 'new List&lt;byte&gt;();'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_angle_paren_empty=ignore|sp_angle_paren_empty=add|sp_angle_paren_empty=remove|sp_angle_paren_empty=force|sp_angle_paren_empty=not_defined
-ChoicesReadable="Ignore Sp Angle Paren Empty|Add Sp Angle Paren Empty|Remove Sp Angle Paren Empty|Force Sp Angle Paren Empty"
-ValueDefault=ignore
-
-[Sp Angle Word]
-Category=1
-Description="<html>Add or remove space between '&gt;' and a word as in 'List&lt;byte&gt; m;' or<br/>'template &lt;typename T&gt; static ...'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_angle_word=ignore|sp_angle_word=add|sp_angle_word=remove|sp_angle_word=force|sp_angle_word=not_defined
-ChoicesReadable="Ignore Sp Angle Word|Add Sp Angle Word|Remove Sp Angle Word|Force Sp Angle Word"
-ValueDefault=ignore
-
-[Sp Angle Shift]
-Category=1
-Description="<html>Add or remove space between '&gt;' and '&gt;' in '&gt;&gt;' (template stuff).<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_angle_shift=ignore|sp_angle_shift=add|sp_angle_shift=remove|sp_angle_shift=force|sp_angle_shift=not_defined
-ChoicesReadable="Ignore Sp Angle Shift|Add Sp Angle Shift|Remove Sp Angle Shift|Force Sp Angle Shift"
-ValueDefault=add
-
-[Sp Permit Cpp11 Shift]
-Category=1
-Description="<html>(C++11) Permit removal of the space between '&gt;&gt;' in 'foo&lt;bar&lt;int&gt; &gt;'. Note<br/>that sp_angle_shift cannot remove the space without this option.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=sp_permit_cpp11_shift=true|sp_permit_cpp11_shift=false
-ValueDefault=false
-
-[Sp Before Sparen]
-Category=1
-Description="<html>Add or remove space before '(' of control statements ('if', 'for', 'switch',<br/>'while', etc.).</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_sparen=ignore|sp_before_sparen=add|sp_before_sparen=remove|sp_before_sparen=force|sp_before_sparen=not_defined
-ChoicesReadable="Ignore Sp Before Sparen|Add Sp Before Sparen|Remove Sp Before Sparen|Force Sp Before Sparen"
-ValueDefault=ignore
-
-[Sp Inside Sparen]
-Category=1
-Description="<html>Add or remove space inside '(' and ')' of control statements other than<br/>'for'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_sparen=ignore|sp_inside_sparen=add|sp_inside_sparen=remove|sp_inside_sparen=force|sp_inside_sparen=not_defined
-ChoicesReadable="Ignore Sp Inside Sparen|Add Sp Inside Sparen|Remove Sp Inside Sparen|Force Sp Inside Sparen"
-ValueDefault=ignore
-
-[Sp Inside Sparen Open]
-Category=1
-Description="<html>Add or remove space after '(' of control statements other than 'for'.<br/><br/>Overrides sp_inside_sparen.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_sparen_open=ignore|sp_inside_sparen_open=add|sp_inside_sparen_open=remove|sp_inside_sparen_open=force|sp_inside_sparen_open=not_defined
-ChoicesReadable="Ignore Sp Inside Sparen Open|Add Sp Inside Sparen Open|Remove Sp Inside Sparen Open|Force Sp Inside Sparen Open"
-ValueDefault=ignore
-
-[Sp Inside Sparen Close]
-Category=1
-Description="<html>Add or remove space before ')' of control statements other than 'for'.<br/><br/>Overrides sp_inside_sparen.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_sparen_close=ignore|sp_inside_sparen_close=add|sp_inside_sparen_close=remove|sp_inside_sparen_close=force|sp_inside_sparen_close=not_defined
-ChoicesReadable="Ignore Sp Inside Sparen Close|Add Sp Inside Sparen Close|Remove Sp Inside Sparen Close|Force Sp Inside Sparen Close"
-ValueDefault=ignore
-
-[Sp Inside For]
-Category=1
-Description="<html>Add or remove space inside '(' and ')' of 'for' statements.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_for=ignore|sp_inside_for=add|sp_inside_for=remove|sp_inside_for=force|sp_inside_for=not_defined
-ChoicesReadable="Ignore Sp Inside For|Add Sp Inside For|Remove Sp Inside For|Force Sp Inside For"
-ValueDefault=ignore
-
-[Sp Inside For Open]
-Category=1
-Description="<html>Add or remove space after '(' of 'for' statements.<br/><br/>Overrides sp_inside_for.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_for_open=ignore|sp_inside_for_open=add|sp_inside_for_open=remove|sp_inside_for_open=force|sp_inside_for_open=not_defined
-ChoicesReadable="Ignore Sp Inside For Open|Add Sp Inside For Open|Remove Sp Inside For Open|Force Sp Inside For Open"
-ValueDefault=ignore
-
-[Sp Inside For Close]
-Category=1
-Description="<html>Add or remove space before ')' of 'for' statements.<br/><br/>Overrides sp_inside_for.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_for_close=ignore|sp_inside_for_close=add|sp_inside_for_close=remove|sp_inside_for_close=force|sp_inside_for_close=not_defined
-ChoicesReadable="Ignore Sp Inside For Close|Add Sp Inside For Close|Remove Sp Inside For Close|Force Sp Inside For Close"
-ValueDefault=ignore
-
-[Sp Sparen Paren]
-Category=1
-Description="<html>Add or remove space between '((' or '))' of control statements.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_sparen_paren=ignore|sp_sparen_paren=add|sp_sparen_paren=remove|sp_sparen_paren=force|sp_sparen_paren=not_defined
-ChoicesReadable="Ignore Sp Sparen Paren|Add Sp Sparen Paren|Remove Sp Sparen Paren|Force Sp Sparen Paren"
-ValueDefault=ignore
-
-[Sp After Sparen]
-Category=1
-Description="<html>Add or remove space after ')' of control statements.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_sparen=ignore|sp_after_sparen=add|sp_after_sparen=remove|sp_after_sparen=force|sp_after_sparen=not_defined
-ChoicesReadable="Ignore Sp After Sparen|Add Sp After Sparen|Remove Sp After Sparen|Force Sp After Sparen"
-ValueDefault=ignore
-
-[Sp Sparen Brace]
-Category=1
-Description="<html>Add or remove space between ')' and '{' of control statements.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_sparen_brace=ignore|sp_sparen_brace=add|sp_sparen_brace=remove|sp_sparen_brace=force|sp_sparen_brace=not_defined
-ChoicesReadable="Ignore Sp Sparen Brace|Add Sp Sparen Brace|Remove Sp Sparen Brace|Force Sp Sparen Brace"
-ValueDefault=ignore
-
-[Sp Do Brace Open]
-Category=1
-Description="<html>Add or remove space between 'do' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_do_brace_open=ignore|sp_do_brace_open=add|sp_do_brace_open=remove|sp_do_brace_open=force|sp_do_brace_open=not_defined
-ChoicesReadable="Ignore Sp Do Brace Open|Add Sp Do Brace Open|Remove Sp Do Brace Open|Force Sp Do Brace Open"
-ValueDefault=ignore
-
-[Sp Brace Close While]
-Category=1
-Description="<html>Add or remove space between '}' and 'while'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_brace_close_while=ignore|sp_brace_close_while=add|sp_brace_close_while=remove|sp_brace_close_while=force|sp_brace_close_while=not_defined
-ChoicesReadable="Ignore Sp Brace Close While|Add Sp Brace Close While|Remove Sp Brace Close While|Force Sp Brace Close While"
-ValueDefault=ignore
-
-[Sp While Paren Open]
-Category=1
-Description="<html>Add or remove space between 'while' and '('. Overrides sp_before_sparen.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_while_paren_open=ignore|sp_while_paren_open=add|sp_while_paren_open=remove|sp_while_paren_open=force|sp_while_paren_open=not_defined
-ChoicesReadable="Ignore Sp While Paren Open|Add Sp While Paren Open|Remove Sp While Paren Open|Force Sp While Paren Open"
-ValueDefault=ignore
-
-[Sp Invariant Paren]
-Category=1
-Description="<html>(D) Add or remove space between 'invariant' and '('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_invariant_paren=ignore|sp_invariant_paren=add|sp_invariant_paren=remove|sp_invariant_paren=force|sp_invariant_paren=not_defined
-ChoicesReadable="Ignore Sp Invariant Paren|Add Sp Invariant Paren|Remove Sp Invariant Paren|Force Sp Invariant Paren"
-ValueDefault=ignore
-
-[Sp After Invariant Paren]
-Category=1
-Description="<html>(D) Add or remove space after the ')' in 'invariant (C) c'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_invariant_paren=ignore|sp_after_invariant_paren=add|sp_after_invariant_paren=remove|sp_after_invariant_paren=force|sp_after_invariant_paren=not_defined
-ChoicesReadable="Ignore Sp After Invariant Paren|Add Sp After Invariant Paren|Remove Sp After Invariant Paren|Force Sp After Invariant Paren"
-ValueDefault=ignore
-
-[Sp Special Semi]
-Category=1
-Description="<html>Add or remove space before empty statement ';' on 'if', 'for' and 'while'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_special_semi=ignore|sp_special_semi=add|sp_special_semi=remove|sp_special_semi=force|sp_special_semi=not_defined
-ChoicesReadable="Ignore Sp Special Semi|Add Sp Special Semi|Remove Sp Special Semi|Force Sp Special Semi"
-ValueDefault=ignore
-
-[Sp Before Semi]
-Category=1
-Description="<html>Add or remove space before ';'.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_semi=ignore|sp_before_semi=add|sp_before_semi=remove|sp_before_semi=force|sp_before_semi=not_defined
-ChoicesReadable="Ignore Sp Before Semi|Add Sp Before Semi|Remove Sp Before Semi|Force Sp Before Semi"
-ValueDefault=remove
-
-[Sp Before Semi For]
-Category=1
-Description="<html>Add or remove space before ';' in non-empty 'for' statements.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_semi_for=ignore|sp_before_semi_for=add|sp_before_semi_for=remove|sp_before_semi_for=force|sp_before_semi_for=not_defined
-ChoicesReadable="Ignore Sp Before Semi For|Add Sp Before Semi For|Remove Sp Before Semi For|Force Sp Before Semi For"
-ValueDefault=ignore
-
-[Sp Before Semi For Empty]
-Category=1
-Description="<html>Add or remove space before a semicolon of an empty left part of a for<br/>statement, as in 'for ( &lt;here&gt; ; ; )'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_semi_for_empty=ignore|sp_before_semi_for_empty=add|sp_before_semi_for_empty=remove|sp_before_semi_for_empty=force|sp_before_semi_for_empty=not_defined
-ChoicesReadable="Ignore Sp Before Semi For Empty|Add Sp Before Semi For Empty|Remove Sp Before Semi For Empty|Force Sp Before Semi For Empty"
-ValueDefault=ignore
-
-[Sp Between Semi For Empty]
-Category=1
-Description="<html>Add or remove space between the semicolons of an empty middle part of a for<br/>statement, as in 'for ( ; &lt;here&gt; ; )'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_between_semi_for_empty=ignore|sp_between_semi_for_empty=add|sp_between_semi_for_empty=remove|sp_between_semi_for_empty=force|sp_between_semi_for_empty=not_defined
-ChoicesReadable="Ignore Sp Between Semi For Empty|Add Sp Between Semi For Empty|Remove Sp Between Semi For Empty|Force Sp Between Semi For Empty"
-ValueDefault=ignore
-
-[Sp After Semi]
-Category=1
-Description="<html>Add or remove space after ';', except when followed by a comment.<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_semi=ignore|sp_after_semi=add|sp_after_semi=remove|sp_after_semi=force|sp_after_semi=not_defined
-ChoicesReadable="Ignore Sp After Semi|Add Sp After Semi|Remove Sp After Semi|Force Sp After Semi"
-ValueDefault=add
-
-[Sp After Semi For]
-Category=1
-Description="<html>Add or remove space after ';' in non-empty 'for' statements.<br/><br/>Default: force</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_semi_for=ignore|sp_after_semi_for=add|sp_after_semi_for=remove|sp_after_semi_for=force|sp_after_semi_for=not_defined
-ChoicesReadable="Ignore Sp After Semi For|Add Sp After Semi For|Remove Sp After Semi For|Force Sp After Semi For"
-ValueDefault=force
-
-[Sp After Semi For Empty]
-Category=1
-Description="<html>Add or remove space after the final semicolon of an empty part of a for<br/>statement, as in 'for ( ; ; &lt;here&gt; )'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_semi_for_empty=ignore|sp_after_semi_for_empty=add|sp_after_semi_for_empty=remove|sp_after_semi_for_empty=force|sp_after_semi_for_empty=not_defined
-ChoicesReadable="Ignore Sp After Semi For Empty|Add Sp After Semi For Empty|Remove Sp After Semi For Empty|Force Sp After Semi For Empty"
-ValueDefault=ignore
-
-[Sp Before Square]
-Category=1
-Description="<html>Add or remove space before '[' (except '[]').</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_square=ignore|sp_before_square=add|sp_before_square=remove|sp_before_square=force|sp_before_square=not_defined
-ChoicesReadable="Ignore Sp Before Square|Add Sp Before Square|Remove Sp Before Square|Force Sp Before Square"
-ValueDefault=ignore
-
-[Sp Before Vardef Square]
-Category=1
-Description="<html>Add or remove space before '[' for a variable definition.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_vardef_square=ignore|sp_before_vardef_square=add|sp_before_vardef_square=remove|sp_before_vardef_square=force|sp_before_vardef_square=not_defined
-ChoicesReadable="Ignore Sp Before Vardef Square|Add Sp Before Vardef Square|Remove Sp Before Vardef Square|Force Sp Before Vardef Square"
-ValueDefault=remove
-
-[Sp Before Square Asm Block]
-Category=1
-Description="<html>Add or remove space before '[' for asm block.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_square_asm_block=ignore|sp_before_square_asm_block=add|sp_before_square_asm_block=remove|sp_before_square_asm_block=force|sp_before_square_asm_block=not_defined
-ChoicesReadable="Ignore Sp Before Square Asm Block|Add Sp Before Square Asm Block|Remove Sp Before Square Asm Block|Force Sp Before Square Asm Block"
-ValueDefault=ignore
-
-[Sp Before Squares]
-Category=1
-Description="<html>Add or remove space before '[]'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_squares=ignore|sp_before_squares=add|sp_before_squares=remove|sp_before_squares=force|sp_before_squares=not_defined
-ChoicesReadable="Ignore Sp Before Squares|Add Sp Before Squares|Remove Sp Before Squares|Force Sp Before Squares"
-ValueDefault=ignore
-
-[Sp Cpp Before Struct Binding]
-Category=1
-Description="<html>Add or remove space before C++17 structured bindings.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_before_struct_binding=ignore|sp_cpp_before_struct_binding=add|sp_cpp_before_struct_binding=remove|sp_cpp_before_struct_binding=force|sp_cpp_before_struct_binding=not_defined
-ChoicesReadable="Ignore Sp Cpp Before Struct Binding|Add Sp Cpp Before Struct Binding|Remove Sp Cpp Before Struct Binding|Force Sp Cpp Before Struct Binding"
-ValueDefault=ignore
-
-[Sp Inside Square]
-Category=1
-Description="<html>Add or remove space inside a non-empty '[' and ']'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_square=ignore|sp_inside_square=add|sp_inside_square=remove|sp_inside_square=force|sp_inside_square=not_defined
-ChoicesReadable="Ignore Sp Inside Square|Add Sp Inside Square|Remove Sp Inside Square|Force Sp Inside Square"
-ValueDefault=ignore
-
-[Sp Inside Square Empty]
-Category=1
-Description="<html>Add or remove space inside '[]'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_square_empty=ignore|sp_inside_square_empty=add|sp_inside_square_empty=remove|sp_inside_square_empty=force|sp_inside_square_empty=not_defined
-ChoicesReadable="Ignore Sp Inside Square Empty|Add Sp Inside Square Empty|Remove Sp Inside Square Empty|Force Sp Inside Square Empty"
-ValueDefault=ignore
-
-[Sp Inside Square Oc Array]
-Category=1
-Description="<html>(OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and<br/>']'. If set to ignore, sp_inside_square is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_square_oc_array=ignore|sp_inside_square_oc_array=add|sp_inside_square_oc_array=remove|sp_inside_square_oc_array=force|sp_inside_square_oc_array=not_defined
-ChoicesReadable="Ignore Sp Inside Square Oc Array|Add Sp Inside Square Oc Array|Remove Sp Inside Square Oc Array|Force Sp Inside Square Oc Array"
-ValueDefault=ignore
-
-[Sp After Comma]
-Category=1
-Description="<html>Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_comma=ignore|sp_after_comma=add|sp_after_comma=remove|sp_after_comma=force|sp_after_comma=not_defined
-ChoicesReadable="Ignore Sp After Comma|Add Sp After Comma|Remove Sp After Comma|Force Sp After Comma"
-ValueDefault=ignore
-
-[Sp Before Comma]
-Category=1
-Description="<html>Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_comma=ignore|sp_before_comma=add|sp_before_comma=remove|sp_before_comma=force|sp_before_comma=not_defined
-ChoicesReadable="Ignore Sp Before Comma|Add Sp Before Comma|Remove Sp Before Comma|Force Sp Before Comma"
-ValueDefault=remove
-
-[Sp After Mdatype Commas]
-Category=1
-Description="<html>(C#, Vala) Add or remove space between ',' and ']' in multidimensional array type<br/>like 'int[,,]'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_mdatype_commas=ignore|sp_after_mdatype_commas=add|sp_after_mdatype_commas=remove|sp_after_mdatype_commas=force|sp_after_mdatype_commas=not_defined
-ChoicesReadable="Ignore Sp After Mdatype Commas|Add Sp After Mdatype Commas|Remove Sp After Mdatype Commas|Force Sp After Mdatype Commas"
-ValueDefault=ignore
-
-[Sp Before Mdatype Commas]
-Category=1
-Description="<html>(C#, Vala) Add or remove space between '[' and ',' in multidimensional array type<br/>like 'int[,,]'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_mdatype_commas=ignore|sp_before_mdatype_commas=add|sp_before_mdatype_commas=remove|sp_before_mdatype_commas=force|sp_before_mdatype_commas=not_defined
-ChoicesReadable="Ignore Sp Before Mdatype Commas|Add Sp Before Mdatype Commas|Remove Sp Before Mdatype Commas|Force Sp Before Mdatype Commas"
-ValueDefault=ignore
-
-[Sp Between Mdatype Commas]
-Category=1
-Description="<html>(C#, Vala) Add or remove space between ',' in multidimensional array type<br/>like 'int[,,]'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_between_mdatype_commas=ignore|sp_between_mdatype_commas=add|sp_between_mdatype_commas=remove|sp_between_mdatype_commas=force|sp_between_mdatype_commas=not_defined
-ChoicesReadable="Ignore Sp Between Mdatype Commas|Add Sp Between Mdatype Commas|Remove Sp Between Mdatype Commas|Force Sp Between Mdatype Commas"
-ValueDefault=ignore
-
-[Sp Paren Comma]
-Category=1
-Description="<html>Add or remove space between an open parenthesis and comma,<br/>i.e. '(,' vs. '( ,'.<br/><br/>Default: force</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_paren_comma=ignore|sp_paren_comma=add|sp_paren_comma=remove|sp_paren_comma=force|sp_paren_comma=not_defined
-ChoicesReadable="Ignore Sp Paren Comma|Add Sp Paren Comma|Remove Sp Paren Comma|Force Sp Paren Comma"
-ValueDefault=force
-
-[Sp Type Colon]
-Category=1
-Description="<html>Add or remove space between a type and ':'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_type_colon=ignore|sp_type_colon=add|sp_type_colon=remove|sp_type_colon=force|sp_type_colon=not_defined
-ChoicesReadable="Ignore Sp Type Colon|Add Sp Type Colon|Remove Sp Type Colon|Force Sp Type Colon"
-ValueDefault=ignore
-
-[Sp After Ellipsis]
-Category=1
-Description="<html>Add or remove space after the variadic '...' when preceded by a<br/>non-punctuator.<br/>The value REMOVE will be overridden with FORCE</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_ellipsis=ignore|sp_after_ellipsis=add|sp_after_ellipsis=remove|sp_after_ellipsis=force|sp_after_ellipsis=not_defined
-ChoicesReadable="Ignore Sp After Ellipsis|Add Sp After Ellipsis|Remove Sp After Ellipsis|Force Sp After Ellipsis"
-ValueDefault=ignore
-
-[Sp Before Ellipsis]
-Category=1
-Description="<html>Add or remove space before the variadic '...' when preceded by a<br/>non-punctuator.<br/>The value REMOVE will be overridden with FORCE</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_ellipsis=ignore|sp_before_ellipsis=add|sp_before_ellipsis=remove|sp_before_ellipsis=force|sp_before_ellipsis=not_defined
-ChoicesReadable="Ignore Sp Before Ellipsis|Add Sp Before Ellipsis|Remove Sp Before Ellipsis|Force Sp Before Ellipsis"
-ValueDefault=ignore
-
-[Sp Type Ellipsis]
-Category=1
-Description="<html>Add or remove space between a type and '...'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_type_ellipsis=ignore|sp_type_ellipsis=add|sp_type_ellipsis=remove|sp_type_ellipsis=force|sp_type_ellipsis=not_defined
-ChoicesReadable="Ignore Sp Type Ellipsis|Add Sp Type Ellipsis|Remove Sp Type Ellipsis|Force Sp Type Ellipsis"
-ValueDefault=ignore
-
-[Sp Ptr Type Ellipsis]
-Category=1
-Description="<html>Add or remove space between a '*' and '...'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_ptr_type_ellipsis=ignore|sp_ptr_type_ellipsis=add|sp_ptr_type_ellipsis=remove|sp_ptr_type_ellipsis=force|sp_ptr_type_ellipsis=not_defined
-ChoicesReadable="Ignore Sp Ptr Type Ellipsis|Add Sp Ptr Type Ellipsis|Remove Sp Ptr Type Ellipsis|Force Sp Ptr Type Ellipsis"
-ValueDefault=ignore
-
-[Sp Paren Ellipsis]
-Category=1
-Description="<html>Add or remove space between ')' and '...'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_paren_ellipsis=ignore|sp_paren_ellipsis=add|sp_paren_ellipsis=remove|sp_paren_ellipsis=force|sp_paren_ellipsis=not_defined
-ChoicesReadable="Ignore Sp Paren Ellipsis|Add Sp Paren Ellipsis|Remove Sp Paren Ellipsis|Force Sp Paren Ellipsis"
-ValueDefault=ignore
-
-[Sp Byref Ellipsis]
-Category=1
-Description="<html>Add or remove space between '&amp;&amp;' and '...'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_byref_ellipsis=ignore|sp_byref_ellipsis=add|sp_byref_ellipsis=remove|sp_byref_ellipsis=force|sp_byref_ellipsis=not_defined
-ChoicesReadable="Ignore Sp Byref Ellipsis|Add Sp Byref Ellipsis|Remove Sp Byref Ellipsis|Force Sp Byref Ellipsis"
-ValueDefault=ignore
-
-[Sp Paren Qualifier]
-Category=1
-Description="<html>Add or remove space between ')' and a qualifier such as 'const'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_paren_qualifier=ignore|sp_paren_qualifier=add|sp_paren_qualifier=remove|sp_paren_qualifier=force|sp_paren_qualifier=not_defined
-ChoicesReadable="Ignore Sp Paren Qualifier|Add Sp Paren Qualifier|Remove Sp Paren Qualifier|Force Sp Paren Qualifier"
-ValueDefault=ignore
-
-[Sp Paren Noexcept]
-Category=1
-Description="<html>Add or remove space between ')' and 'noexcept'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_paren_noexcept=ignore|sp_paren_noexcept=add|sp_paren_noexcept=remove|sp_paren_noexcept=force|sp_paren_noexcept=not_defined
-ChoicesReadable="Ignore Sp Paren Noexcept|Add Sp Paren Noexcept|Remove Sp Paren Noexcept|Force Sp Paren Noexcept"
-ValueDefault=ignore
-
-[Sp After Class Colon]
-Category=1
-Description="<html>Add or remove space after class ':'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_class_colon=ignore|sp_after_class_colon=add|sp_after_class_colon=remove|sp_after_class_colon=force|sp_after_class_colon=not_defined
-ChoicesReadable="Ignore Sp After Class Colon|Add Sp After Class Colon|Remove Sp After Class Colon|Force Sp After Class Colon"
-ValueDefault=ignore
-
-[Sp Before Class Colon]
-Category=1
-Description="<html>Add or remove space before class ':'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_class_colon=ignore|sp_before_class_colon=add|sp_before_class_colon=remove|sp_before_class_colon=force|sp_before_class_colon=not_defined
-ChoicesReadable="Ignore Sp Before Class Colon|Add Sp Before Class Colon|Remove Sp Before Class Colon|Force Sp Before Class Colon"
-ValueDefault=ignore
-
-[Sp After Constr Colon]
-Category=1
-Description="<html>Add or remove space after class constructor ':'.<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_constr_colon=ignore|sp_after_constr_colon=add|sp_after_constr_colon=remove|sp_after_constr_colon=force|sp_after_constr_colon=not_defined
-ChoicesReadable="Ignore Sp After Constr Colon|Add Sp After Constr Colon|Remove Sp After Constr Colon|Force Sp After Constr Colon"
-ValueDefault=add
-
-[Sp Before Constr Colon]
-Category=1
-Description="<html>Add or remove space before class constructor ':'.<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_constr_colon=ignore|sp_before_constr_colon=add|sp_before_constr_colon=remove|sp_before_constr_colon=force|sp_before_constr_colon=not_defined
-ChoicesReadable="Ignore Sp Before Constr Colon|Add Sp Before Constr Colon|Remove Sp Before Constr Colon|Force Sp Before Constr Colon"
-ValueDefault=add
-
-[Sp Before Case Colon]
-Category=1
-Description="<html>Add or remove space before case ':'.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_case_colon=ignore|sp_before_case_colon=add|sp_before_case_colon=remove|sp_before_case_colon=force|sp_before_case_colon=not_defined
-ChoicesReadable="Ignore Sp Before Case Colon|Add Sp Before Case Colon|Remove Sp Before Case Colon|Force Sp Before Case Colon"
-ValueDefault=remove
-
-[Sp After Operator]
-Category=1
-Description="<html>Add or remove space between 'operator' and operator sign.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_operator=ignore|sp_after_operator=add|sp_after_operator=remove|sp_after_operator=force|sp_after_operator=not_defined
-ChoicesReadable="Ignore Sp After Operator|Add Sp After Operator|Remove Sp After Operator|Force Sp After Operator"
-ValueDefault=ignore
-
-[Sp After Operator Sym]
-Category=1
-Description="<html>Add or remove space between the operator symbol and the open parenthesis, as<br/>in 'operator ++('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_operator_sym=ignore|sp_after_operator_sym=add|sp_after_operator_sym=remove|sp_after_operator_sym=force|sp_after_operator_sym=not_defined
-ChoicesReadable="Ignore Sp After Operator Sym|Add Sp After Operator Sym|Remove Sp After Operator Sym|Force Sp After Operator Sym"
-ValueDefault=ignore
-
-[Sp After Operator Sym Empty]
-Category=1
-Description="<html>Overrides sp_after_operator_sym when the operator has no arguments, as in<br/>'operator *()'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_operator_sym_empty=ignore|sp_after_operator_sym_empty=add|sp_after_operator_sym_empty=remove|sp_after_operator_sym_empty=force|sp_after_operator_sym_empty=not_defined
-ChoicesReadable="Ignore Sp After Operator Sym Empty|Add Sp After Operator Sym Empty|Remove Sp After Operator Sym Empty|Force Sp After Operator Sym Empty"
-ValueDefault=ignore
-
-[Sp After Cast]
-Category=1
-Description="<html>Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or<br/>'(int)a' vs. '(int) a'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_cast=ignore|sp_after_cast=add|sp_after_cast=remove|sp_after_cast=force|sp_after_cast=not_defined
-ChoicesReadable="Ignore Sp After Cast|Add Sp After Cast|Remove Sp After Cast|Force Sp After Cast"
-ValueDefault=ignore
-
-[Sp Inside Paren Cast]
-Category=1
-Description="<html>Add or remove spaces inside cast parentheses.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_paren_cast=ignore|sp_inside_paren_cast=add|sp_inside_paren_cast=remove|sp_inside_paren_cast=force|sp_inside_paren_cast=not_defined
-ChoicesReadable="Ignore Sp Inside Paren Cast|Add Sp Inside Paren Cast|Remove Sp Inside Paren Cast|Force Sp Inside Paren Cast"
-ValueDefault=ignore
-
-[Sp Cpp Cast Paren]
-Category=1
-Description="<html>Add or remove space between the type and open parenthesis in a C++ cast,<br/>i.e. 'int(exp)' vs. 'int (exp)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cpp_cast_paren=ignore|sp_cpp_cast_paren=add|sp_cpp_cast_paren=remove|sp_cpp_cast_paren=force|sp_cpp_cast_paren=not_defined
-ChoicesReadable="Ignore Sp Cpp Cast Paren|Add Sp Cpp Cast Paren|Remove Sp Cpp Cast Paren|Force Sp Cpp Cast Paren"
-ValueDefault=ignore
-
-[Sp Sizeof Paren]
-Category=1
-Description="<html>Add or remove space between 'sizeof' and '('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_sizeof_paren=ignore|sp_sizeof_paren=add|sp_sizeof_paren=remove|sp_sizeof_paren=force|sp_sizeof_paren=not_defined
-ChoicesReadable="Ignore Sp Sizeof Paren|Add Sp Sizeof Paren|Remove Sp Sizeof Paren|Force Sp Sizeof Paren"
-ValueDefault=ignore
-
-[Sp Sizeof Ellipsis]
-Category=1
-Description="<html>Add or remove space between 'sizeof' and '...'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_sizeof_ellipsis=ignore|sp_sizeof_ellipsis=add|sp_sizeof_ellipsis=remove|sp_sizeof_ellipsis=force|sp_sizeof_ellipsis=not_defined
-ChoicesReadable="Ignore Sp Sizeof Ellipsis|Add Sp Sizeof Ellipsis|Remove Sp Sizeof Ellipsis|Force Sp Sizeof Ellipsis"
-ValueDefault=ignore
-
-[Sp Sizeof Ellipsis Paren]
-Category=1
-Description="<html>Add or remove space between 'sizeof...' and '('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_sizeof_ellipsis_paren=ignore|sp_sizeof_ellipsis_paren=add|sp_sizeof_ellipsis_paren=remove|sp_sizeof_ellipsis_paren=force|sp_sizeof_ellipsis_paren=not_defined
-ChoicesReadable="Ignore Sp Sizeof Ellipsis Paren|Add Sp Sizeof Ellipsis Paren|Remove Sp Sizeof Ellipsis Paren|Force Sp Sizeof Ellipsis Paren"
-ValueDefault=ignore
-
-[Sp Ellipsis Parameter Pack]
-Category=1
-Description="<html>Add or remove space between '...' and a parameter pack.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_ellipsis_parameter_pack=ignore|sp_ellipsis_parameter_pack=add|sp_ellipsis_parameter_pack=remove|sp_ellipsis_parameter_pack=force|sp_ellipsis_parameter_pack=not_defined
-ChoicesReadable="Ignore Sp Ellipsis Parameter Pack|Add Sp Ellipsis Parameter Pack|Remove Sp Ellipsis Parameter Pack|Force Sp Ellipsis Parameter Pack"
-ValueDefault=ignore
-
-[Sp Parameter Pack Ellipsis]
-Category=1
-Description="<html>Add or remove space between a parameter pack and '...'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_parameter_pack_ellipsis=ignore|sp_parameter_pack_ellipsis=add|sp_parameter_pack_ellipsis=remove|sp_parameter_pack_ellipsis=force|sp_parameter_pack_ellipsis=not_defined
-ChoicesReadable="Ignore Sp Parameter Pack Ellipsis|Add Sp Parameter Pack Ellipsis|Remove Sp Parameter Pack Ellipsis|Force Sp Parameter Pack Ellipsis"
-ValueDefault=ignore
-
-[Sp Decltype Paren]
-Category=1
-Description="<html>Add or remove space between 'decltype' and '('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_decltype_paren=ignore|sp_decltype_paren=add|sp_decltype_paren=remove|sp_decltype_paren=force|sp_decltype_paren=not_defined
-ChoicesReadable="Ignore Sp Decltype Paren|Add Sp Decltype Paren|Remove Sp Decltype Paren|Force Sp Decltype Paren"
-ValueDefault=ignore
-
-[Sp After Tag]
-Category=1
-Description="<html>(Pawn) Add or remove space after the tag keyword.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_tag=ignore|sp_after_tag=add|sp_after_tag=remove|sp_after_tag=force|sp_after_tag=not_defined
-ChoicesReadable="Ignore Sp After Tag|Add Sp After Tag|Remove Sp After Tag|Force Sp After Tag"
-ValueDefault=ignore
-
-[Sp Inside Braces Enum]
-Category=1
-Description="<html>Add or remove space inside enum '{' and '}'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_braces_enum=ignore|sp_inside_braces_enum=add|sp_inside_braces_enum=remove|sp_inside_braces_enum=force|sp_inside_braces_enum=not_defined
-ChoicesReadable="Ignore Sp Inside Braces Enum|Add Sp Inside Braces Enum|Remove Sp Inside Braces Enum|Force Sp Inside Braces Enum"
-ValueDefault=ignore
-
-[Sp Inside Braces Struct]
-Category=1
-Description="<html>Add or remove space inside struct/union '{' and '}'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_braces_struct=ignore|sp_inside_braces_struct=add|sp_inside_braces_struct=remove|sp_inside_braces_struct=force|sp_inside_braces_struct=not_defined
-ChoicesReadable="Ignore Sp Inside Braces Struct|Add Sp Inside Braces Struct|Remove Sp Inside Braces Struct|Force Sp Inside Braces Struct"
-ValueDefault=ignore
-
-[Sp Inside Braces Oc Dict]
-Category=1
-Description="<html>(OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_braces_oc_dict=ignore|sp_inside_braces_oc_dict=add|sp_inside_braces_oc_dict=remove|sp_inside_braces_oc_dict=force|sp_inside_braces_oc_dict=not_defined
-ChoicesReadable="Ignore Sp Inside Braces Oc Dict|Add Sp Inside Braces Oc Dict|Remove Sp Inside Braces Oc Dict|Force Sp Inside Braces Oc Dict"
-ValueDefault=ignore
-
-[Sp After Type Brace Init Lst Open]
-Category=1
-Description="<html>Add or remove space after open brace in an unnamed temporary<br/>direct-list-initialization<br/>if statement is a brace_init_lst<br/>works only if sp_brace_brace is set to ignore.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_type_brace_init_lst_open=ignore|sp_after_type_brace_init_lst_open=add|sp_after_type_brace_init_lst_open=remove|sp_after_type_brace_init_lst_open=force|sp_after_type_brace_init_lst_open=not_defined
-ChoicesReadable="Ignore Sp After Type Brace Init Lst Open|Add Sp After Type Brace Init Lst Open|Remove Sp After Type Brace Init Lst Open|Force Sp After Type Brace Init Lst Open"
-ValueDefault=ignore
-
-[Sp Before Type Brace Init Lst Close]
-Category=1
-Description="<html>Add or remove space before close brace in an unnamed temporary<br/>direct-list-initialization<br/>if statement is a brace_init_lst<br/>works only if sp_brace_brace is set to ignore.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_type_brace_init_lst_close=ignore|sp_before_type_brace_init_lst_close=add|sp_before_type_brace_init_lst_close=remove|sp_before_type_brace_init_lst_close=force|sp_before_type_brace_init_lst_close=not_defined
-ChoicesReadable="Ignore Sp Before Type Brace Init Lst Close|Add Sp Before Type Brace Init Lst Close|Remove Sp Before Type Brace Init Lst Close|Force Sp Before Type Brace Init Lst Close"
-ValueDefault=ignore
-
-[Sp Inside Type Brace Init Lst]
-Category=1
-Description="<html>Add or remove space inside an unnamed temporary direct-list-initialization<br/>if statement is a brace_init_lst<br/>works only if sp_brace_brace is set to ignore<br/>works only if sp_before_type_brace_init_lst_close is set to ignore.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_type_brace_init_lst=ignore|sp_inside_type_brace_init_lst=add|sp_inside_type_brace_init_lst=remove|sp_inside_type_brace_init_lst=force|sp_inside_type_brace_init_lst=not_defined
-ChoicesReadable="Ignore Sp Inside Type Brace Init Lst|Add Sp Inside Type Brace Init Lst|Remove Sp Inside Type Brace Init Lst|Force Sp Inside Type Brace Init Lst"
-ValueDefault=ignore
-
-[Sp Inside Braces]
-Category=1
-Description="<html>Add or remove space inside '{' and '}'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_braces=ignore|sp_inside_braces=add|sp_inside_braces=remove|sp_inside_braces=force|sp_inside_braces=not_defined
-ChoicesReadable="Ignore Sp Inside Braces|Add Sp Inside Braces|Remove Sp Inside Braces|Force Sp Inside Braces"
-ValueDefault=ignore
-
-[Sp Inside Braces Empty]
-Category=1
-Description="<html>Add or remove space inside '{}'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_braces_empty=ignore|sp_inside_braces_empty=add|sp_inside_braces_empty=remove|sp_inside_braces_empty=force|sp_inside_braces_empty=not_defined
-ChoicesReadable="Ignore Sp Inside Braces Empty|Add Sp Inside Braces Empty|Remove Sp Inside Braces Empty|Force Sp Inside Braces Empty"
-ValueDefault=ignore
-
-[Sp Trailing Return]
-Category=1
-Description="<html>Add or remove space around trailing return operator '-&gt;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_trailing_return=ignore|sp_trailing_return=add|sp_trailing_return=remove|sp_trailing_return=force|sp_trailing_return=not_defined
-ChoicesReadable="Ignore Sp Trailing Return|Add Sp Trailing Return|Remove Sp Trailing Return|Force Sp Trailing Return"
-ValueDefault=ignore
-
-[Sp Type Func]
-Category=1
-Description="<html>Add or remove space between return type and function name. A minimum of 1<br/>is forced except for pointer return types.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_type_func=ignore|sp_type_func=add|sp_type_func=remove|sp_type_func=force|sp_type_func=not_defined
-ChoicesReadable="Ignore Sp Type Func|Add Sp Type Func|Remove Sp Type Func|Force Sp Type Func"
-ValueDefault=ignore
-
-[Sp Type Brace Init Lst]
-Category=1
-Description="<html>Add or remove space between type and open brace of an unnamed temporary<br/>direct-list-initialization.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_type_brace_init_lst=ignore|sp_type_brace_init_lst=add|sp_type_brace_init_lst=remove|sp_type_brace_init_lst=force|sp_type_brace_init_lst=not_defined
-ChoicesReadable="Ignore Sp Type Brace Init Lst|Add Sp Type Brace Init Lst|Remove Sp Type Brace Init Lst|Force Sp Type Brace Init Lst"
-ValueDefault=ignore
-
-[Sp Func Proto Paren]
-Category=1
-Description="<html>Add or remove space between function name and '(' on function declaration.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_proto_paren=ignore|sp_func_proto_paren=add|sp_func_proto_paren=remove|sp_func_proto_paren=force|sp_func_proto_paren=not_defined
-ChoicesReadable="Ignore Sp Func Proto Paren|Add Sp Func Proto Paren|Remove Sp Func Proto Paren|Force Sp Func Proto Paren"
-ValueDefault=ignore
-
-[Sp Func Proto Paren Empty]
-Category=1
-Description="<html>Add or remove space between function name and '()' on function declaration<br/>without parameters.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_proto_paren_empty=ignore|sp_func_proto_paren_empty=add|sp_func_proto_paren_empty=remove|sp_func_proto_paren_empty=force|sp_func_proto_paren_empty=not_defined
-ChoicesReadable="Ignore Sp Func Proto Paren Empty|Add Sp Func Proto Paren Empty|Remove Sp Func Proto Paren Empty|Force Sp Func Proto Paren Empty"
-ValueDefault=ignore
-
-[Sp Func Type Paren]
-Category=1
-Description="<html>Add or remove space between function name and '(' with a typedef specifier.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_type_paren=ignore|sp_func_type_paren=add|sp_func_type_paren=remove|sp_func_type_paren=force|sp_func_type_paren=not_defined
-ChoicesReadable="Ignore Sp Func Type Paren|Add Sp Func Type Paren|Remove Sp Func Type Paren|Force Sp Func Type Paren"
-ValueDefault=ignore
-
-[Sp Func Def Paren]
-Category=1
-Description="<html>Add or remove space between alias name and '(' of a non-pointer function type typedef.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_def_paren=ignore|sp_func_def_paren=add|sp_func_def_paren=remove|sp_func_def_paren=force|sp_func_def_paren=not_defined
-ChoicesReadable="Ignore Sp Func Def Paren|Add Sp Func Def Paren|Remove Sp Func Def Paren|Force Sp Func Def Paren"
-ValueDefault=ignore
-
-[Sp Func Def Paren Empty]
-Category=1
-Description="<html>Add or remove space between function name and '()' on function definition<br/>without parameters.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_def_paren_empty=ignore|sp_func_def_paren_empty=add|sp_func_def_paren_empty=remove|sp_func_def_paren_empty=force|sp_func_def_paren_empty=not_defined
-ChoicesReadable="Ignore Sp Func Def Paren Empty|Add Sp Func Def Paren Empty|Remove Sp Func Def Paren Empty|Force Sp Func Def Paren Empty"
-ValueDefault=ignore
-
-[Sp Inside Fparens]
-Category=1
-Description="<html>Add or remove space inside empty function '()'.<br/>Overrides sp_after_angle unless use_sp_after_angle_always is set to true.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_fparens=ignore|sp_inside_fparens=add|sp_inside_fparens=remove|sp_inside_fparens=force|sp_inside_fparens=not_defined
-ChoicesReadable="Ignore Sp Inside Fparens|Add Sp Inside Fparens|Remove Sp Inside Fparens|Force Sp Inside Fparens"
-ValueDefault=ignore
-
-[Sp Inside Fparen]
-Category=1
-Description="<html>Add or remove space inside function '(' and ')'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_fparen=ignore|sp_inside_fparen=add|sp_inside_fparen=remove|sp_inside_fparen=force|sp_inside_fparen=not_defined
-ChoicesReadable="Ignore Sp Inside Fparen|Add Sp Inside Fparen|Remove Sp Inside Fparen|Force Sp Inside Fparen"
-ValueDefault=ignore
-
-[Sp Inside Tparen]
-Category=1
-Description="<html>Add or remove space inside the first parentheses in a function type, as in<br/>'void (*x)(...)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_tparen=ignore|sp_inside_tparen=add|sp_inside_tparen=remove|sp_inside_tparen=force|sp_inside_tparen=not_defined
-ChoicesReadable="Ignore Sp Inside Tparen|Add Sp Inside Tparen|Remove Sp Inside Tparen|Force Sp Inside Tparen"
-ValueDefault=ignore
-
-[Sp After Tparen Close]
-Category=1
-Description="<html>Add or remove space between the ')' and '(' in a function type, as in<br/>'void (*x)(...)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_tparen_close=ignore|sp_after_tparen_close=add|sp_after_tparen_close=remove|sp_after_tparen_close=force|sp_after_tparen_close=not_defined
-ChoicesReadable="Ignore Sp After Tparen Close|Add Sp After Tparen Close|Remove Sp After Tparen Close|Force Sp After Tparen Close"
-ValueDefault=ignore
-
-[Sp Square Fparen]
-Category=1
-Description="<html>Add or remove space between ']' and '(' when part of a function call.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_square_fparen=ignore|sp_square_fparen=add|sp_square_fparen=remove|sp_square_fparen=force|sp_square_fparen=not_defined
-ChoicesReadable="Ignore Sp Square Fparen|Add Sp Square Fparen|Remove Sp Square Fparen|Force Sp Square Fparen"
-ValueDefault=ignore
-
-[Sp Fparen Brace]
-Category=1
-Description="<html>Add or remove space between ')' and '{' of function.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_fparen_brace=ignore|sp_fparen_brace=add|sp_fparen_brace=remove|sp_fparen_brace=force|sp_fparen_brace=not_defined
-ChoicesReadable="Ignore Sp Fparen Brace|Add Sp Fparen Brace|Remove Sp Fparen Brace|Force Sp Fparen Brace"
-ValueDefault=ignore
-
-[Sp Fparen Brace Initializer]
-Category=1
-Description="<html>Add or remove space between ')' and '{' of a function call in object<br/>initialization.<br/><br/>Overrides sp_fparen_brace.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_fparen_brace_initializer=ignore|sp_fparen_brace_initializer=add|sp_fparen_brace_initializer=remove|sp_fparen_brace_initializer=force|sp_fparen_brace_initializer=not_defined
-ChoicesReadable="Ignore Sp Fparen Brace Initializer|Add Sp Fparen Brace Initializer|Remove Sp Fparen Brace Initializer|Force Sp Fparen Brace Initializer"
-ValueDefault=ignore
-
-[Sp Fparen Dbrace]
-Category=1
-Description="<html>(Java) Add or remove space between ')' and '{{' of double brace initializer.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_fparen_dbrace=ignore|sp_fparen_dbrace=add|sp_fparen_dbrace=remove|sp_fparen_dbrace=force|sp_fparen_dbrace=not_defined
-ChoicesReadable="Ignore Sp Fparen Dbrace|Add Sp Fparen Dbrace|Remove Sp Fparen Dbrace|Force Sp Fparen Dbrace"
-ValueDefault=ignore
-
-[Sp Func Call Paren]
-Category=1
-Description="<html>Add or remove space between function name and '(' on function calls.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_call_paren=ignore|sp_func_call_paren=add|sp_func_call_paren=remove|sp_func_call_paren=force|sp_func_call_paren=not_defined
-ChoicesReadable="Ignore Sp Func Call Paren|Add Sp Func Call Paren|Remove Sp Func Call Paren|Force Sp Func Call Paren"
-ValueDefault=ignore
-
-[Sp Func Call Paren Empty]
-Category=1
-Description="<html>Add or remove space between function name and '()' on function calls without<br/>parameters. If set to ignore (the default), sp_func_call_paren is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_call_paren_empty=ignore|sp_func_call_paren_empty=add|sp_func_call_paren_empty=remove|sp_func_call_paren_empty=force|sp_func_call_paren_empty=not_defined
-ChoicesReadable="Ignore Sp Func Call Paren Empty|Add Sp Func Call Paren Empty|Remove Sp Func Call Paren Empty|Force Sp Func Call Paren Empty"
-ValueDefault=ignore
-
-[Sp Func Call User Paren]
-Category=1
-Description="<html>Add or remove space between the user function name and '(' on function<br/>calls. You need to set a keyword to be a user function in the config file,<br/>like:<br/> set func_call_user tr _ i18n</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_call_user_paren=ignore|sp_func_call_user_paren=add|sp_func_call_user_paren=remove|sp_func_call_user_paren=force|sp_func_call_user_paren=not_defined
-ChoicesReadable="Ignore Sp Func Call User Paren|Add Sp Func Call User Paren|Remove Sp Func Call User Paren|Force Sp Func Call User Paren"
-ValueDefault=ignore
-
-[Sp Func Call User Inside Fparen]
-Category=1
-Description="<html>Add or remove space inside user function '(' and ')'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_call_user_inside_fparen=ignore|sp_func_call_user_inside_fparen=add|sp_func_call_user_inside_fparen=remove|sp_func_call_user_inside_fparen=force|sp_func_call_user_inside_fparen=not_defined
-ChoicesReadable="Ignore Sp Func Call User Inside Fparen|Add Sp Func Call User Inside Fparen|Remove Sp Func Call User Inside Fparen|Force Sp Func Call User Inside Fparen"
-ValueDefault=ignore
-
-[Sp Func Call User Paren Paren]
-Category=1
-Description="<html>Add or remove space between nested parentheses with user functions,<br/>i.e. '((' vs. '( ('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_call_user_paren_paren=ignore|sp_func_call_user_paren_paren=add|sp_func_call_user_paren_paren=remove|sp_func_call_user_paren_paren=force|sp_func_call_user_paren_paren=not_defined
-ChoicesReadable="Ignore Sp Func Call User Paren Paren|Add Sp Func Call User Paren Paren|Remove Sp Func Call User Paren Paren|Force Sp Func Call User Paren Paren"
-ValueDefault=ignore
-
-[Sp Func Class Paren]
-Category=1
-Description="<html>Add or remove space between a constructor/destructor and the open<br/>parenthesis.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_class_paren=ignore|sp_func_class_paren=add|sp_func_class_paren=remove|sp_func_class_paren=force|sp_func_class_paren=not_defined
-ChoicesReadable="Ignore Sp Func Class Paren|Add Sp Func Class Paren|Remove Sp Func Class Paren|Force Sp Func Class Paren"
-ValueDefault=ignore
-
-[Sp Func Class Paren Empty]
-Category=1
-Description="<html>Add or remove space between a constructor without parameters or destructor<br/>and '()'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_func_class_paren_empty=ignore|sp_func_class_paren_empty=add|sp_func_class_paren_empty=remove|sp_func_class_paren_empty=force|sp_func_class_paren_empty=not_defined
-ChoicesReadable="Ignore Sp Func Class Paren Empty|Add Sp Func Class Paren Empty|Remove Sp Func Class Paren Empty|Force Sp Func Class Paren Empty"
-ValueDefault=ignore
-
-[Sp Return]
-Category=1
-Description="<html>Add or remove space after 'return'.<br/><br/>Default: force</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_return=ignore|sp_return=add|sp_return=remove|sp_return=force|sp_return=not_defined
-ChoicesReadable="Ignore Sp Return|Add Sp Return|Remove Sp Return|Force Sp Return"
-ValueDefault=force
-
-[Sp Return Paren]
-Category=1
-Description="<html>Add or remove space between 'return' and '('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_return_paren=ignore|sp_return_paren=add|sp_return_paren=remove|sp_return_paren=force|sp_return_paren=not_defined
-ChoicesReadable="Ignore Sp Return Paren|Add Sp Return Paren|Remove Sp Return Paren|Force Sp Return Paren"
-ValueDefault=ignore
-
-[Sp Return Brace]
-Category=1
-Description="<html>Add or remove space between 'return' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_return_brace=ignore|sp_return_brace=add|sp_return_brace=remove|sp_return_brace=force|sp_return_brace=not_defined
-ChoicesReadable="Ignore Sp Return Brace|Add Sp Return Brace|Remove Sp Return Brace|Force Sp Return Brace"
-ValueDefault=ignore
-
-[Sp Attribute Paren]
-Category=1
-Description="<html>Add or remove space between '__attribute__' and '('.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_attribute_paren=ignore|sp_attribute_paren=add|sp_attribute_paren=remove|sp_attribute_paren=force|sp_attribute_paren=not_defined
-ChoicesReadable="Ignore Sp Attribute Paren|Add Sp Attribute Paren|Remove Sp Attribute Paren|Force Sp Attribute Paren"
-ValueDefault=ignore
-
-[Sp Defined Paren]
-Category=1
-Description="<html>Add or remove space between 'defined' and '(' in '#if defined (FOO)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_defined_paren=ignore|sp_defined_paren=add|sp_defined_paren=remove|sp_defined_paren=force|sp_defined_paren=not_defined
-ChoicesReadable="Ignore Sp Defined Paren|Add Sp Defined Paren|Remove Sp Defined Paren|Force Sp Defined Paren"
-ValueDefault=ignore
-
-[Sp Throw Paren]
-Category=1
-Description="<html>Add or remove space between 'throw' and '(' in 'throw (something)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_throw_paren=ignore|sp_throw_paren=add|sp_throw_paren=remove|sp_throw_paren=force|sp_throw_paren=not_defined
-ChoicesReadable="Ignore Sp Throw Paren|Add Sp Throw Paren|Remove Sp Throw Paren|Force Sp Throw Paren"
-ValueDefault=ignore
-
-[Sp After Throw]
-Category=1
-Description="<html>Add or remove space between 'throw' and anything other than '(' as in<br/>'@throw [...];'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_throw=ignore|sp_after_throw=add|sp_after_throw=remove|sp_after_throw=force|sp_after_throw=not_defined
-ChoicesReadable="Ignore Sp After Throw|Add Sp After Throw|Remove Sp After Throw|Force Sp After Throw"
-ValueDefault=ignore
-
-[Sp Catch Paren]
-Category=1
-Description="<html>Add or remove space between 'catch' and '(' in 'catch (something) { }'.<br/>If set to ignore, sp_before_sparen is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_catch_paren=ignore|sp_catch_paren=add|sp_catch_paren=remove|sp_catch_paren=force|sp_catch_paren=not_defined
-ChoicesReadable="Ignore Sp Catch Paren|Add Sp Catch Paren|Remove Sp Catch Paren|Force Sp Catch Paren"
-ValueDefault=ignore
-
-[Sp Oc Catch Paren]
-Category=1
-Description="<html>(OC) Add or remove space between '@catch' and '('<br/>in '@catch (something) { }'. If set to ignore, sp_catch_paren is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_oc_catch_paren=ignore|sp_oc_catch_paren=add|sp_oc_catch_paren=remove|sp_oc_catch_paren=force|sp_oc_catch_paren=not_defined
-ChoicesReadable="Ignore Sp Oc Catch Paren|Add Sp Oc Catch Paren|Remove Sp Oc Catch Paren|Force Sp Oc Catch Paren"
-ValueDefault=ignore
-
-[Sp Before Oc Proto List]
-Category=1
-Description="<html>(OC) Add or remove space before Objective-C protocol list<br/>as in '@protocol Protocol&lt;here&gt;&lt;Protocol_A&gt;' or '@interface MyClass : NSObject&lt;here&gt;&lt;MyProtocol&gt;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_oc_proto_list=ignore|sp_before_oc_proto_list=add|sp_before_oc_proto_list=remove|sp_before_oc_proto_list=force|sp_before_oc_proto_list=not_defined
-ChoicesReadable="Ignore Sp Before Oc Proto List|Add Sp Before Oc Proto List|Remove Sp Before Oc Proto List|Force Sp Before Oc Proto List"
-ValueDefault=ignore
-
-[Sp Oc Classname Paren]
-Category=1
-Description="<html>(OC) Add or remove space between class name and '('<br/>in '@interface className(categoryName)&lt;ProtocolName&gt;:BaseClass'</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_oc_classname_paren=ignore|sp_oc_classname_paren=add|sp_oc_classname_paren=remove|sp_oc_classname_paren=force|sp_oc_classname_paren=not_defined
-ChoicesReadable="Ignore Sp Oc Classname Paren|Add Sp Oc Classname Paren|Remove Sp Oc Classname Paren|Force Sp Oc Classname Paren"
-ValueDefault=ignore
-
-[Sp Version Paren]
-Category=1
-Description="<html>(D) Add or remove space between 'version' and '('<br/>in 'version (something) { }'. If set to ignore, sp_before_sparen is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_version_paren=ignore|sp_version_paren=add|sp_version_paren=remove|sp_version_paren=force|sp_version_paren=not_defined
-ChoicesReadable="Ignore Sp Version Paren|Add Sp Version Paren|Remove Sp Version Paren|Force Sp Version Paren"
-ValueDefault=ignore
-
-[Sp Scope Paren]
-Category=1
-Description="<html>(D) Add or remove space between 'scope' and '('<br/>in 'scope (something) { }'. If set to ignore, sp_before_sparen is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_scope_paren=ignore|sp_scope_paren=add|sp_scope_paren=remove|sp_scope_paren=force|sp_scope_paren=not_defined
-ChoicesReadable="Ignore Sp Scope Paren|Add Sp Scope Paren|Remove Sp Scope Paren|Force Sp Scope Paren"
-ValueDefault=ignore
-
-[Sp Super Paren]
-Category=1
-Description="<html>Add or remove space between 'super' and '(' in 'super (something)'.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_super_paren=ignore|sp_super_paren=add|sp_super_paren=remove|sp_super_paren=force|sp_super_paren=not_defined
-ChoicesReadable="Ignore Sp Super Paren|Add Sp Super Paren|Remove Sp Super Paren|Force Sp Super Paren"
-ValueDefault=remove
-
-[Sp This Paren]
-Category=1
-Description="<html>Add or remove space between 'this' and '(' in 'this (something)'.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_this_paren=ignore|sp_this_paren=add|sp_this_paren=remove|sp_this_paren=force|sp_this_paren=not_defined
-ChoicesReadable="Ignore Sp This Paren|Add Sp This Paren|Remove Sp This Paren|Force Sp This Paren"
-ValueDefault=remove
-
-[Sp Macro]
-Category=1
-Description="<html>Add or remove space between a macro name and its definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_macro=ignore|sp_macro=add|sp_macro=remove|sp_macro=force|sp_macro=not_defined
-ChoicesReadable="Ignore Sp Macro|Add Sp Macro|Remove Sp Macro|Force Sp Macro"
-ValueDefault=ignore
-
-[Sp Macro Func]
-Category=1
-Description="<html>Add or remove space between a macro function ')' and its definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_macro_func=ignore|sp_macro_func=add|sp_macro_func=remove|sp_macro_func=force|sp_macro_func=not_defined
-ChoicesReadable="Ignore Sp Macro Func|Add Sp Macro Func|Remove Sp Macro Func|Force Sp Macro Func"
-ValueDefault=ignore
-
-[Sp Else Brace]
-Category=1
-Description="<html>Add or remove space between 'else' and '{' if on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_else_brace=ignore|sp_else_brace=add|sp_else_brace=remove|sp_else_brace=force|sp_else_brace=not_defined
-ChoicesReadable="Ignore Sp Else Brace|Add Sp Else Brace|Remove Sp Else Brace|Force Sp Else Brace"
-ValueDefault=ignore
-
-[Sp Brace Else]
-Category=1
-Description="<html>Add or remove space between '}' and 'else' if on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_brace_else=ignore|sp_brace_else=add|sp_brace_else=remove|sp_brace_else=force|sp_brace_else=not_defined
-ChoicesReadable="Ignore Sp Brace Else|Add Sp Brace Else|Remove Sp Brace Else|Force Sp Brace Else"
-ValueDefault=ignore
-
-[Sp Brace Typedef]
-Category=1
-Description="<html>Add or remove space between '}' and the name of a typedef on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_brace_typedef=ignore|sp_brace_typedef=add|sp_brace_typedef=remove|sp_brace_typedef=force|sp_brace_typedef=not_defined
-ChoicesReadable="Ignore Sp Brace Typedef|Add Sp Brace Typedef|Remove Sp Brace Typedef|Force Sp Brace Typedef"
-ValueDefault=ignore
-
-[Sp Catch Brace]
-Category=1
-Description="<html>Add or remove space before the '{' of a 'catch' statement, if the '{' and<br/>'catch' are on the same line, as in 'catch (decl) &lt;here&gt; {'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_catch_brace=ignore|sp_catch_brace=add|sp_catch_brace=remove|sp_catch_brace=force|sp_catch_brace=not_defined
-ChoicesReadable="Ignore Sp Catch Brace|Add Sp Catch Brace|Remove Sp Catch Brace|Force Sp Catch Brace"
-ValueDefault=ignore
-
-[Sp Oc Catch Brace]
-Category=1
-Description="<html>(OC) Add or remove space before the '{' of a '@catch' statement, if the '{'<br/>and '@catch' are on the same line, as in '@catch (decl) &lt;here&gt; {'.<br/>If set to ignore, sp_catch_brace is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_oc_catch_brace=ignore|sp_oc_catch_brace=add|sp_oc_catch_brace=remove|sp_oc_catch_brace=force|sp_oc_catch_brace=not_defined
-ChoicesReadable="Ignore Sp Oc Catch Brace|Add Sp Oc Catch Brace|Remove Sp Oc Catch Brace|Force Sp Oc Catch Brace"
-ValueDefault=ignore
-
-[Sp Brace Catch]
-Category=1
-Description="<html>Add or remove space between '}' and 'catch' if on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_brace_catch=ignore|sp_brace_catch=add|sp_brace_catch=remove|sp_brace_catch=force|sp_brace_catch=not_defined
-ChoicesReadable="Ignore Sp Brace Catch|Add Sp Brace Catch|Remove Sp Brace Catch|Force Sp Brace Catch"
-ValueDefault=ignore
-
-[Sp Oc Brace Catch]
-Category=1
-Description="<html>(OC) Add or remove space between '}' and '@catch' if on the same line.<br/>If set to ignore, sp_brace_catch is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_oc_brace_catch=ignore|sp_oc_brace_catch=add|sp_oc_brace_catch=remove|sp_oc_brace_catch=force|sp_oc_brace_catch=not_defined
-ChoicesReadable="Ignore Sp Oc Brace Catch|Add Sp Oc Brace Catch|Remove Sp Oc Brace Catch|Force Sp Oc Brace Catch"
-ValueDefault=ignore
-
-[Sp Finally Brace]
-Category=1
-Description="<html>Add or remove space between 'finally' and '{' if on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_finally_brace=ignore|sp_finally_brace=add|sp_finally_brace=remove|sp_finally_brace=force|sp_finally_brace=not_defined
-ChoicesReadable="Ignore Sp Finally Brace|Add Sp Finally Brace|Remove Sp Finally Brace|Force Sp Finally Brace"
-ValueDefault=ignore
-
-[Sp Brace Finally]
-Category=1
-Description="<html>Add or remove space between '}' and 'finally' if on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_brace_finally=ignore|sp_brace_finally=add|sp_brace_finally=remove|sp_brace_finally=force|sp_brace_finally=not_defined
-ChoicesReadable="Ignore Sp Brace Finally|Add Sp Brace Finally|Remove Sp Brace Finally|Force Sp Brace Finally"
-ValueDefault=ignore
-
-[Sp Try Brace]
-Category=1
-Description="<html>Add or remove space between 'try' and '{' if on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_try_brace=ignore|sp_try_brace=add|sp_try_brace=remove|sp_try_brace=force|sp_try_brace=not_defined
-ChoicesReadable="Ignore Sp Try Brace|Add Sp Try Brace|Remove Sp Try Brace|Force Sp Try Brace"
-ValueDefault=ignore
-
-[Sp Getset Brace]
-Category=1
-Description="<html>Add or remove space between get/set and '{' if on the same line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_getset_brace=ignore|sp_getset_brace=add|sp_getset_brace=remove|sp_getset_brace=force|sp_getset_brace=not_defined
-ChoicesReadable="Ignore Sp Getset Brace|Add Sp Getset Brace|Remove Sp Getset Brace|Force Sp Getset Brace"
-ValueDefault=ignore
-
-[Sp Word Brace Init Lst]
-Category=1
-Description="<html>Add or remove space between a variable and '{' for C++ uniform<br/>initialization.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_word_brace_init_lst=ignore|sp_word_brace_init_lst=add|sp_word_brace_init_lst=remove|sp_word_brace_init_lst=force|sp_word_brace_init_lst=not_defined
-ChoicesReadable="Ignore Sp Word Brace Init Lst|Add Sp Word Brace Init Lst|Remove Sp Word Brace Init Lst|Force Sp Word Brace Init Lst"
-ValueDefault=ignore
-
-[Sp Word Brace Ns]
-Category=1
-Description="<html>Add or remove space between a variable and '{' for a namespace.<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_word_brace_ns=ignore|sp_word_brace_ns=add|sp_word_brace_ns=remove|sp_word_brace_ns=force|sp_word_brace_ns=not_defined
-ChoicesReadable="Ignore Sp Word Brace Ns|Add Sp Word Brace Ns|Remove Sp Word Brace Ns|Force Sp Word Brace Ns"
-ValueDefault=add
-
-[Sp Before Dc]
-Category=1
-Description="<html>Add or remove space before the '::' operator.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_dc=ignore|sp_before_dc=add|sp_before_dc=remove|sp_before_dc=force|sp_before_dc=not_defined
-ChoicesReadable="Ignore Sp Before Dc|Add Sp Before Dc|Remove Sp Before Dc|Force Sp Before Dc"
-ValueDefault=ignore
-
-[Sp After Dc]
-Category=1
-Description="<html>Add or remove space after the '::' operator.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_dc=ignore|sp_after_dc=add|sp_after_dc=remove|sp_after_dc=force|sp_after_dc=not_defined
-ChoicesReadable="Ignore Sp After Dc|Add Sp After Dc|Remove Sp After Dc|Force Sp After Dc"
-ValueDefault=ignore
-
-[Sp D Array Colon]
-Category=1
-Description="<html>(D) Add or remove around the D named array initializer ':' operator.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_d_array_colon=ignore|sp_d_array_colon=add|sp_d_array_colon=remove|sp_d_array_colon=force|sp_d_array_colon=not_defined
-ChoicesReadable="Ignore Sp D Array Colon|Add Sp D Array Colon|Remove Sp D Array Colon|Force Sp D Array Colon"
-ValueDefault=ignore
-
-[Sp Not]
-Category=1
-Description="<html>Add or remove space after the '!' (not) unary operator.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_not=ignore|sp_not=add|sp_not=remove|sp_not=force|sp_not=not_defined
-ChoicesReadable="Ignore Sp Not|Add Sp Not|Remove Sp Not|Force Sp Not"
-ValueDefault=remove
-
-[Sp Not Not]
-Category=1
-Description="<html>Add or remove space between two '!' (not) unary operators.<br/>If set to ignore, sp_not will be used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_not_not=ignore|sp_not_not=add|sp_not_not=remove|sp_not_not=force|sp_not_not=not_defined
-ChoicesReadable="Ignore Sp Not Not|Add Sp Not Not|Remove Sp Not Not|Force Sp Not Not"
-ValueDefault=ignore
-
-[Sp Inv]
-Category=1
-Description="<html>Add or remove space after the '~' (invert) unary operator.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inv=ignore|sp_inv=add|sp_inv=remove|sp_inv=force|sp_inv=not_defined
-ChoicesReadable="Ignore Sp Inv|Add Sp Inv|Remove Sp Inv|Force Sp Inv"
-ValueDefault=remove
-
-[Sp Addr]
-Category=1
-Description="<html>Add or remove space after the '&amp;' (address-of) unary operator. This does not<br/>affect the spacing after a '&amp;' that is part of a type.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_addr=ignore|sp_addr=add|sp_addr=remove|sp_addr=force|sp_addr=not_defined
-ChoicesReadable="Ignore Sp Addr|Add Sp Addr|Remove Sp Addr|Force Sp Addr"
-ValueDefault=remove
-
-[Sp Member]
-Category=1
-Description="<html>Add or remove space around the '.' or '-&gt;' operators.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_member=ignore|sp_member=add|sp_member=remove|sp_member=force|sp_member=not_defined
-ChoicesReadable="Ignore Sp Member|Add Sp Member|Remove Sp Member|Force Sp Member"
-ValueDefault=remove
-
-[Sp Deref]
-Category=1
-Description="<html>Add or remove space after the '*' (dereference) unary operator. This does<br/>not affect the spacing after a '*' that is part of a type.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_deref=ignore|sp_deref=add|sp_deref=remove|sp_deref=force|sp_deref=not_defined
-ChoicesReadable="Ignore Sp Deref|Add Sp Deref|Remove Sp Deref|Force Sp Deref"
-ValueDefault=remove
-
-[Sp Sign]
-Category=1
-Description="<html>Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_sign=ignore|sp_sign=add|sp_sign=remove|sp_sign=force|sp_sign=not_defined
-ChoicesReadable="Ignore Sp Sign|Add Sp Sign|Remove Sp Sign|Force Sp Sign"
-ValueDefault=remove
-
-[Sp Incdec]
-Category=1
-Description="<html>Add or remove space between '++' and '--' the word to which it is being<br/>applied, as in '(--x)' or 'y++;'.<br/><br/>Default: remove</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_incdec=ignore|sp_incdec=add|sp_incdec=remove|sp_incdec=force|sp_incdec=not_defined
-ChoicesReadable="Ignore Sp Incdec|Add Sp Incdec|Remove Sp Incdec|Force Sp Incdec"
-ValueDefault=remove
-
-[Sp Before Nl Cont]
-Category=1
-Description="<html>Add or remove space before a backslash-newline at the end of a line.<br/><br/>Default: add</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_nl_cont=ignore|sp_before_nl_cont=add|sp_before_nl_cont=remove|sp_before_nl_cont=force|sp_before_nl_cont=not_defined
-ChoicesReadable="Ignore Sp Before Nl Cont|Add Sp Before Nl Cont|Remove Sp Before Nl Cont|Force Sp Before Nl Cont"
-ValueDefault=add
-
-[Sp After Oc Scope]
-Category=1
-Description="<html>(OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;'<br/>or '+(int) bar;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_scope=ignore|sp_after_oc_scope=add|sp_after_oc_scope=remove|sp_after_oc_scope=force|sp_after_oc_scope=not_defined
-ChoicesReadable="Ignore Sp After Oc Scope|Add Sp After Oc Scope|Remove Sp After Oc Scope|Force Sp After Oc Scope"
-ValueDefault=ignore
-
-[Sp After Oc Colon]
-Category=1
-Description="<html>(OC) Add or remove space after the colon in message specs,<br/>i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_colon=ignore|sp_after_oc_colon=add|sp_after_oc_colon=remove|sp_after_oc_colon=force|sp_after_oc_colon=not_defined
-ChoicesReadable="Ignore Sp After Oc Colon|Add Sp After Oc Colon|Remove Sp After Oc Colon|Force Sp After Oc Colon"
-ValueDefault=ignore
-
-[Sp Before Oc Colon]
-Category=1
-Description="<html>(OC) Add or remove space before the colon in message specs,<br/>i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_oc_colon=ignore|sp_before_oc_colon=add|sp_before_oc_colon=remove|sp_before_oc_colon=force|sp_before_oc_colon=not_defined
-ChoicesReadable="Ignore Sp Before Oc Colon|Add Sp Before Oc Colon|Remove Sp Before Oc Colon|Force Sp Before Oc Colon"
-ValueDefault=ignore
-
-[Sp After Oc Dict Colon]
-Category=1
-Description="<html>(OC) Add or remove space after the colon in immutable dictionary expression<br/>'NSDictionary *test = @{@"foo" :@"bar"};'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_dict_colon=ignore|sp_after_oc_dict_colon=add|sp_after_oc_dict_colon=remove|sp_after_oc_dict_colon=force|sp_after_oc_dict_colon=not_defined
-ChoicesReadable="Ignore Sp After Oc Dict Colon|Add Sp After Oc Dict Colon|Remove Sp After Oc Dict Colon|Force Sp After Oc Dict Colon"
-ValueDefault=ignore
-
-[Sp Before Oc Dict Colon]
-Category=1
-Description="<html>(OC) Add or remove space before the colon in immutable dictionary expression<br/>'NSDictionary *test = @{@"foo" :@"bar"};'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_oc_dict_colon=ignore|sp_before_oc_dict_colon=add|sp_before_oc_dict_colon=remove|sp_before_oc_dict_colon=force|sp_before_oc_dict_colon=not_defined
-ChoicesReadable="Ignore Sp Before Oc Dict Colon|Add Sp Before Oc Dict Colon|Remove Sp Before Oc Dict Colon|Force Sp Before Oc Dict Colon"
-ValueDefault=ignore
-
-[Sp After Send Oc Colon]
-Category=1
-Description="<html>(OC) Add or remove space after the colon in message specs,<br/>i.e. '[object setValue:1];' vs. '[object setValue: 1];'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_send_oc_colon=ignore|sp_after_send_oc_colon=add|sp_after_send_oc_colon=remove|sp_after_send_oc_colon=force|sp_after_send_oc_colon=not_defined
-ChoicesReadable="Ignore Sp After Send Oc Colon|Add Sp After Send Oc Colon|Remove Sp After Send Oc Colon|Force Sp After Send Oc Colon"
-ValueDefault=ignore
-
-[Sp Before Send Oc Colon]
-Category=1
-Description="<html>(OC) Add or remove space before the colon in message specs,<br/>i.e. '[object setValue:1];' vs. '[object setValue :1];'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_send_oc_colon=ignore|sp_before_send_oc_colon=add|sp_before_send_oc_colon=remove|sp_before_send_oc_colon=force|sp_before_send_oc_colon=not_defined
-ChoicesReadable="Ignore Sp Before Send Oc Colon|Add Sp Before Send Oc Colon|Remove Sp Before Send Oc Colon|Force Sp Before Send Oc Colon"
-ValueDefault=ignore
-
-[Sp After Oc Type]
-Category=1
-Description="<html>(OC) Add or remove space after the (type) in message specs,<br/>i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_type=ignore|sp_after_oc_type=add|sp_after_oc_type=remove|sp_after_oc_type=force|sp_after_oc_type=not_defined
-ChoicesReadable="Ignore Sp After Oc Type|Add Sp After Oc Type|Remove Sp After Oc Type|Force Sp After Oc Type"
-ValueDefault=ignore
-
-[Sp After Oc Return Type]
-Category=1
-Description="<html>(OC) Add or remove space after the first (type) in message specs,<br/>i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_return_type=ignore|sp_after_oc_return_type=add|sp_after_oc_return_type=remove|sp_after_oc_return_type=force|sp_after_oc_return_type=not_defined
-ChoicesReadable="Ignore Sp After Oc Return Type|Add Sp After Oc Return Type|Remove Sp After Oc Return Type|Force Sp After Oc Return Type"
-ValueDefault=ignore
-
-[Sp After Oc At Sel]
-Category=1
-Description="<html>(OC) Add or remove space between '@selector' and '(',<br/>i.e. '@selector(msgName)' vs. '@selector (msgName)'.<br/>Also applies to '@protocol()' constructs.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_at_sel=ignore|sp_after_oc_at_sel=add|sp_after_oc_at_sel=remove|sp_after_oc_at_sel=force|sp_after_oc_at_sel=not_defined
-ChoicesReadable="Ignore Sp After Oc At Sel|Add Sp After Oc At Sel|Remove Sp After Oc At Sel|Force Sp After Oc At Sel"
-ValueDefault=ignore
-
-[Sp After Oc At Sel Parens]
-Category=1
-Description="<html>(OC) Add or remove space between '@selector(x)' and the following word,<br/>i.e. '@selector(foo) a:' vs. '@selector(foo)a:'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_at_sel_parens=ignore|sp_after_oc_at_sel_parens=add|sp_after_oc_at_sel_parens=remove|sp_after_oc_at_sel_parens=force|sp_after_oc_at_sel_parens=not_defined
-ChoicesReadable="Ignore Sp After Oc At Sel Parens|Add Sp After Oc At Sel Parens|Remove Sp After Oc At Sel Parens|Force Sp After Oc At Sel Parens"
-ValueDefault=ignore
-
-[Sp Inside Oc At Sel Parens]
-Category=1
-Description="<html>(OC) Add or remove space inside '@selector' parentheses,<br/>i.e. '@selector(foo)' vs. '@selector( foo )'.<br/>Also applies to '@protocol()' constructs.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_oc_at_sel_parens=ignore|sp_inside_oc_at_sel_parens=add|sp_inside_oc_at_sel_parens=remove|sp_inside_oc_at_sel_parens=force|sp_inside_oc_at_sel_parens=not_defined
-ChoicesReadable="Ignore Sp Inside Oc At Sel Parens|Add Sp Inside Oc At Sel Parens|Remove Sp Inside Oc At Sel Parens|Force Sp Inside Oc At Sel Parens"
-ValueDefault=ignore
-
-[Sp Before Oc Block Caret]
-Category=1
-Description="<html>(OC) Add or remove space before a block pointer caret,<br/>i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_oc_block_caret=ignore|sp_before_oc_block_caret=add|sp_before_oc_block_caret=remove|sp_before_oc_block_caret=force|sp_before_oc_block_caret=not_defined
-ChoicesReadable="Ignore Sp Before Oc Block Caret|Add Sp Before Oc Block Caret|Remove Sp Before Oc Block Caret|Force Sp Before Oc Block Caret"
-ValueDefault=ignore
-
-[Sp After Oc Block Caret]
-Category=1
-Description="<html>(OC) Add or remove space after a block pointer caret,<br/>i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_block_caret=ignore|sp_after_oc_block_caret=add|sp_after_oc_block_caret=remove|sp_after_oc_block_caret=force|sp_after_oc_block_caret=not_defined
-ChoicesReadable="Ignore Sp After Oc Block Caret|Add Sp After Oc Block Caret|Remove Sp After Oc Block Caret|Force Sp After Oc Block Caret"
-ValueDefault=ignore
-
-[Sp After Oc Msg Receiver]
-Category=1
-Description="<html>(OC) Add or remove space between the receiver and selector in a message,<br/>as in '[receiver selector ...]'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_msg_receiver=ignore|sp_after_oc_msg_receiver=add|sp_after_oc_msg_receiver=remove|sp_after_oc_msg_receiver=force|sp_after_oc_msg_receiver=not_defined
-ChoicesReadable="Ignore Sp After Oc Msg Receiver|Add Sp After Oc Msg Receiver|Remove Sp After Oc Msg Receiver|Force Sp After Oc Msg Receiver"
-ValueDefault=ignore
-
-[Sp After Oc Property]
-Category=1
-Description="<html>(OC) Add or remove space after '@property'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_property=ignore|sp_after_oc_property=add|sp_after_oc_property=remove|sp_after_oc_property=force|sp_after_oc_property=not_defined
-ChoicesReadable="Ignore Sp After Oc Property|Add Sp After Oc Property|Remove Sp After Oc Property|Force Sp After Oc Property"
-ValueDefault=ignore
-
-[Sp After Oc Synchronized]
-Category=1
-Description="<html>(OC) Add or remove space between '@synchronized' and the open parenthesis,<br/>i.e. '@synchronized(foo)' vs. '@synchronized (foo)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_oc_synchronized=ignore|sp_after_oc_synchronized=add|sp_after_oc_synchronized=remove|sp_after_oc_synchronized=force|sp_after_oc_synchronized=not_defined
-ChoicesReadable="Ignore Sp After Oc Synchronized|Add Sp After Oc Synchronized|Remove Sp After Oc Synchronized|Force Sp After Oc Synchronized"
-ValueDefault=ignore
-
-[Sp Cond Colon]
-Category=1
-Description="<html>Add or remove space around the ':' in 'b ? t : f'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cond_colon=ignore|sp_cond_colon=add|sp_cond_colon=remove|sp_cond_colon=force|sp_cond_colon=not_defined
-ChoicesReadable="Ignore Sp Cond Colon|Add Sp Cond Colon|Remove Sp Cond Colon|Force Sp Cond Colon"
-ValueDefault=ignore
-
-[Sp Cond Colon Before]
-Category=1
-Description="<html>Add or remove space before the ':' in 'b ? t : f'.<br/><br/>Overrides sp_cond_colon.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cond_colon_before=ignore|sp_cond_colon_before=add|sp_cond_colon_before=remove|sp_cond_colon_before=force|sp_cond_colon_before=not_defined
-ChoicesReadable="Ignore Sp Cond Colon Before|Add Sp Cond Colon Before|Remove Sp Cond Colon Before|Force Sp Cond Colon Before"
-ValueDefault=ignore
-
-[Sp Cond Colon After]
-Category=1
-Description="<html>Add or remove space after the ':' in 'b ? t : f'.<br/><br/>Overrides sp_cond_colon.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cond_colon_after=ignore|sp_cond_colon_after=add|sp_cond_colon_after=remove|sp_cond_colon_after=force|sp_cond_colon_after=not_defined
-ChoicesReadable="Ignore Sp Cond Colon After|Add Sp Cond Colon After|Remove Sp Cond Colon After|Force Sp Cond Colon After"
-ValueDefault=ignore
-
-[Sp Cond Question]
-Category=1
-Description="<html>Add or remove space around the '?' in 'b ? t : f'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cond_question=ignore|sp_cond_question=add|sp_cond_question=remove|sp_cond_question=force|sp_cond_question=not_defined
-ChoicesReadable="Ignore Sp Cond Question|Add Sp Cond Question|Remove Sp Cond Question|Force Sp Cond Question"
-ValueDefault=ignore
-
-[Sp Cond Question Before]
-Category=1
-Description="<html>Add or remove space before the '?' in 'b ? t : f'.<br/><br/>Overrides sp_cond_question.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cond_question_before=ignore|sp_cond_question_before=add|sp_cond_question_before=remove|sp_cond_question_before=force|sp_cond_question_before=not_defined
-ChoicesReadable="Ignore Sp Cond Question Before|Add Sp Cond Question Before|Remove Sp Cond Question Before|Force Sp Cond Question Before"
-ValueDefault=ignore
-
-[Sp Cond Question After]
-Category=1
-Description="<html>Add or remove space after the '?' in 'b ? t : f'.<br/><br/>Overrides sp_cond_question.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cond_question_after=ignore|sp_cond_question_after=add|sp_cond_question_after=remove|sp_cond_question_after=force|sp_cond_question_after=not_defined
-ChoicesReadable="Ignore Sp Cond Question After|Add Sp Cond Question After|Remove Sp Cond Question After|Force Sp Cond Question After"
-ValueDefault=ignore
-
-[Sp Cond Ternary Short]
-Category=1
-Description="<html>In the abbreviated ternary form '(a ?: b)', add or remove space between '?'<br/>and ':'.<br/><br/>Overrides all other sp_cond_* options.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cond_ternary_short=ignore|sp_cond_ternary_short=add|sp_cond_ternary_short=remove|sp_cond_ternary_short=force|sp_cond_ternary_short=not_defined
-ChoicesReadable="Ignore Sp Cond Ternary Short|Add Sp Cond Ternary Short|Remove Sp Cond Ternary Short|Force Sp Cond Ternary Short"
-ValueDefault=ignore
-
-[Sp Case Label]
-Category=1
-Description="<html>Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make<br/>sense here.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_case_label=ignore|sp_case_label=add|sp_case_label=remove|sp_case_label=force|sp_case_label=not_defined
-ChoicesReadable="Ignore Sp Case Label|Add Sp Case Label|Remove Sp Case Label|Force Sp Case Label"
-ValueDefault=ignore
-
-[Sp Range]
-Category=1
-Description="<html>(D) Add or remove space around the D '..' operator.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_range=ignore|sp_range=add|sp_range=remove|sp_range=force|sp_range=not_defined
-ChoicesReadable="Ignore Sp Range|Add Sp Range|Remove Sp Range|Force Sp Range"
-ValueDefault=ignore
-
-[Sp After For Colon]
-Category=1
-Description="<html>Add or remove space after ':' in a Java/C++11 range-based 'for',<br/>as in 'for (Type var : &lt;here&gt; expr)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_for_colon=ignore|sp_after_for_colon=add|sp_after_for_colon=remove|sp_after_for_colon=force|sp_after_for_colon=not_defined
-ChoicesReadable="Ignore Sp After For Colon|Add Sp After For Colon|Remove Sp After For Colon|Force Sp After For Colon"
-ValueDefault=ignore
-
-[Sp Before For Colon]
-Category=1
-Description="<html>Add or remove space before ':' in a Java/C++11 range-based 'for',<br/>as in 'for (Type var &lt;here&gt; : expr)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_for_colon=ignore|sp_before_for_colon=add|sp_before_for_colon=remove|sp_before_for_colon=force|sp_before_for_colon=not_defined
-ChoicesReadable="Ignore Sp Before For Colon|Add Sp Before For Colon|Remove Sp Before For Colon|Force Sp Before For Colon"
-ValueDefault=ignore
-
-[Sp Extern Paren]
-Category=1
-Description="<html>(D) Add or remove space between 'extern' and '(' as in 'extern &lt;here&gt; (C)'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_extern_paren=ignore|sp_extern_paren=add|sp_extern_paren=remove|sp_extern_paren=force|sp_extern_paren=not_defined
-ChoicesReadable="Ignore Sp Extern Paren|Add Sp Extern Paren|Remove Sp Extern Paren|Force Sp Extern Paren"
-ValueDefault=ignore
-
-[Sp Cmt Cpp Start]
-Category=1
-Description="<html>Add or remove space after the opening of a C++ comment, as in '// &lt;here&gt; A'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cmt_cpp_start=ignore|sp_cmt_cpp_start=add|sp_cmt_cpp_start=remove|sp_cmt_cpp_start=force|sp_cmt_cpp_start=not_defined
-ChoicesReadable="Ignore Sp Cmt Cpp Start|Add Sp Cmt Cpp Start|Remove Sp Cmt Cpp Start|Force Sp Cmt Cpp Start"
-ValueDefault=ignore
-
-[Sp Cmt Cpp Region]
-Category=1
-Description="<html>Add or remove space in a C++ region marker comment, as in '// &lt;here&gt; BEGIN'.<br/>A region marker is defined as a comment which is not preceded by other text<br/>(i.e. the comment is the first non-whitespace on the line), and which starts<br/>with either 'BEGIN' or 'END'.<br/><br/>Overrides sp_cmt_cpp_start.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_cmt_cpp_region=ignore|sp_cmt_cpp_region=add|sp_cmt_cpp_region=remove|sp_cmt_cpp_region=force|sp_cmt_cpp_region=not_defined
-ChoicesReadable="Ignore Sp Cmt Cpp Region|Add Sp Cmt Cpp Region|Remove Sp Cmt Cpp Region|Force Sp Cmt Cpp Region"
-ValueDefault=ignore
-
-[Sp Cmt Cpp Doxygen]
-Category=1
-Description="<html>If true, space added with sp_cmt_cpp_start will be added after Doxygen<br/>sequences like '///', '///&lt;', '//!' and '//!&lt;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=sp_cmt_cpp_doxygen=true|sp_cmt_cpp_doxygen=false
-ValueDefault=false
-
-[Sp Cmt Cpp Qttr]
-Category=1
-Description="<html>If true, space added with sp_cmt_cpp_start will be added after Qt translator<br/>or meta-data comments like '//:', '//=', and '//~'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=sp_cmt_cpp_qttr=true|sp_cmt_cpp_qttr=false
-ValueDefault=false
-
-[Sp Endif Cmt]
-Category=1
-Description="<html>Add or remove space between #else or #endif and a trailing comment.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_endif_cmt=ignore|sp_endif_cmt=add|sp_endif_cmt=remove|sp_endif_cmt=force|sp_endif_cmt=not_defined
-ChoicesReadable="Ignore Sp Endif Cmt|Add Sp Endif Cmt|Remove Sp Endif Cmt|Force Sp Endif Cmt"
-ValueDefault=ignore
-
-[Sp After New]
-Category=1
-Description="<html>Add or remove space after 'new', 'delete' and 'delete[]'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_new=ignore|sp_after_new=add|sp_after_new=remove|sp_after_new=force|sp_after_new=not_defined
-ChoicesReadable="Ignore Sp After New|Add Sp After New|Remove Sp After New|Force Sp After New"
-ValueDefault=ignore
-
-[Sp Between New Paren]
-Category=1
-Description="<html>Add or remove space between 'new' and '(' in 'new()'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_between_new_paren=ignore|sp_between_new_paren=add|sp_between_new_paren=remove|sp_between_new_paren=force|sp_between_new_paren=not_defined
-ChoicesReadable="Ignore Sp Between New Paren|Add Sp Between New Paren|Remove Sp Between New Paren|Force Sp Between New Paren"
-ValueDefault=ignore
-
-[Sp After Newop Paren]
-Category=1
-Description="<html>Add or remove space between ')' and type in 'new(foo) BAR'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_newop_paren=ignore|sp_after_newop_paren=add|sp_after_newop_paren=remove|sp_after_newop_paren=force|sp_after_newop_paren=not_defined
-ChoicesReadable="Ignore Sp After Newop Paren|Add Sp After Newop Paren|Remove Sp After Newop Paren|Force Sp After Newop Paren"
-ValueDefault=ignore
-
-[Sp Inside Newop Paren]
-Category=1
-Description="<html>Add or remove space inside parentheses of the new operator<br/>as in 'new(foo) BAR'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_newop_paren=ignore|sp_inside_newop_paren=add|sp_inside_newop_paren=remove|sp_inside_newop_paren=force|sp_inside_newop_paren=not_defined
-ChoicesReadable="Ignore Sp Inside Newop Paren|Add Sp Inside Newop Paren|Remove Sp Inside Newop Paren|Force Sp Inside Newop Paren"
-ValueDefault=ignore
-
-[Sp Inside Newop Paren Open]
-Category=1
-Description="<html>Add or remove space after the open parenthesis of the new operator,<br/>as in 'new(foo) BAR'.<br/><br/>Overrides sp_inside_newop_paren.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_newop_paren_open=ignore|sp_inside_newop_paren_open=add|sp_inside_newop_paren_open=remove|sp_inside_newop_paren_open=force|sp_inside_newop_paren_open=not_defined
-ChoicesReadable="Ignore Sp Inside Newop Paren Open|Add Sp Inside Newop Paren Open|Remove Sp Inside Newop Paren Open|Force Sp Inside Newop Paren Open"
-ValueDefault=ignore
-
-[Sp Inside Newop Paren Close]
-Category=1
-Description="<html>Add or remove space before the close parenthesis of the new operator,<br/>as in 'new(foo) BAR'.<br/><br/>Overrides sp_inside_newop_paren.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_inside_newop_paren_close=ignore|sp_inside_newop_paren_close=add|sp_inside_newop_paren_close=remove|sp_inside_newop_paren_close=force|sp_inside_newop_paren_close=not_defined
-ChoicesReadable="Ignore Sp Inside Newop Paren Close|Add Sp Inside Newop Paren Close|Remove Sp Inside Newop Paren Close|Force Sp Inside Newop Paren Close"
-ValueDefault=ignore
-
-[Sp Before Tr Cmt]
-Category=1
-Description="<html>Add or remove space before a trailing comment.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_tr_cmt=ignore|sp_before_tr_cmt=add|sp_before_tr_cmt=remove|sp_before_tr_cmt=force|sp_before_tr_cmt=not_defined
-ChoicesReadable="Ignore Sp Before Tr Cmt|Add Sp Before Tr Cmt|Remove Sp Before Tr Cmt|Force Sp Before Tr Cmt"
-ValueDefault=ignore
-
-[Sp Num Before Tr Cmt]
-Category=1
-Description="<html>Number of spaces before a trailing comment.</html>"
-Enabled=false
-EditorType=numeric
-CallName="sp_num_before_tr_cmt="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Sp Before Emb Cmt]
-Category=1
-Description="<html>Add or remove space before an embedded comment.<br/><br/>Default: force</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_before_emb_cmt=ignore|sp_before_emb_cmt=add|sp_before_emb_cmt=remove|sp_before_emb_cmt=force|sp_before_emb_cmt=not_defined
-ChoicesReadable="Ignore Sp Before Emb Cmt|Add Sp Before Emb Cmt|Remove Sp Before Emb Cmt|Force Sp Before Emb Cmt"
-ValueDefault=force
-
-[Sp Num Before Emb Cmt]
-Category=1
-Description="<html>Number of spaces before an embedded comment.<br/><br/>Default: 1</html>"
-Enabled=false
-EditorType=numeric
-CallName="sp_num_before_emb_cmt="
-MinVal=0
-MaxVal=16
-ValueDefault=1
-
-[Sp After Emb Cmt]
-Category=1
-Description="<html>Add or remove space after an embedded comment.<br/><br/>Default: force</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_emb_cmt=ignore|sp_after_emb_cmt=add|sp_after_emb_cmt=remove|sp_after_emb_cmt=force|sp_after_emb_cmt=not_defined
-ChoicesReadable="Ignore Sp After Emb Cmt|Add Sp After Emb Cmt|Remove Sp After Emb Cmt|Force Sp After Emb Cmt"
-ValueDefault=force
-
-[Sp Num After Emb Cmt]
-Category=1
-Description="<html>Number of spaces after an embedded comment.<br/><br/>Default: 1</html>"
-Enabled=false
-EditorType=numeric
-CallName="sp_num_after_emb_cmt="
-MinVal=0
-MaxVal=16
-ValueDefault=1
-
-[Sp Annotation Paren]
-Category=1
-Description="<html>(Java) Add or remove space between an annotation and the open parenthesis.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_annotation_paren=ignore|sp_annotation_paren=add|sp_annotation_paren=remove|sp_annotation_paren=force|sp_annotation_paren=not_defined
-ChoicesReadable="Ignore Sp Annotation Paren|Add Sp Annotation Paren|Remove Sp Annotation Paren|Force Sp Annotation Paren"
-ValueDefault=ignore
-
-[Sp Skip Vbrace Tokens]
-Category=1
-Description="<html>If true, vbrace tokens are dropped to the previous token and skipped.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=sp_skip_vbrace_tokens=true|sp_skip_vbrace_tokens=false
-ValueDefault=false
-
-[Sp After Noexcept]
-Category=1
-Description="<html>Add or remove space after 'noexcept'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_after_noexcept=ignore|sp_after_noexcept=add|sp_after_noexcept=remove|sp_after_noexcept=force|sp_after_noexcept=not_defined
-ChoicesReadable="Ignore Sp After Noexcept|Add Sp After Noexcept|Remove Sp After Noexcept|Force Sp After Noexcept"
-ValueDefault=ignore
-
-[Sp Vala After Translation]
-Category=1
-Description="<html>Add or remove space after '_'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=sp_vala_after_translation=ignore|sp_vala_after_translation=add|sp_vala_after_translation=remove|sp_vala_after_translation=force|sp_vala_after_translation=not_defined
-ChoicesReadable="Ignore Sp Vala After Translation|Add Sp Vala After Translation|Remove Sp Vala After Translation|Force Sp Vala After Translation"
-ValueDefault=ignore
-
-[Force Tab After Define]
-Category=1
-Description="<html>If true, a &lt;TAB&gt; is inserted after #define.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=force_tab_after_define=true|force_tab_after_define=false
-ValueDefault=false
-
-[Indent Columns]
-Category=2
-Description="<html>The number of columns to indent per level. Usually 2, 3, 4, or 8.<br/><br/>Default: 8</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_columns="
-MinVal=0
-MaxVal=16
-ValueDefault=8
-
-[Indent Ignore First Continue]
-Category=2
-Description="<html>Whether to ignore indent for the first continuation line. Subsequent<br/>continuation lines will still be indented to match the first.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_first_continue=true|indent_ignore_first_continue=false
-ValueDefault=false
-
-[Indent Continue]
-Category=2
-Description="<html>The continuation indent. If non-zero, this overrides the indent of '(', '['<br/>and '=' continuation indents. Negative values are OK; negative value is<br/>absolute and not increased for each '(' or '[' level.<br/><br/>For FreeBSD, this is set to 4.<br/>Requires indent_ignore_first_continue=false.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_continue="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Indent Continue Class Head]
-Category=2
-Description="<html>The continuation indent, only for class header line(s). If non-zero, this<br/>overrides the indent of 'class' continuation indents.<br/>Requires indent_ignore_first_continue=false.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_continue_class_head="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Single Newlines]
-Category=2
-Description="<html>Whether to indent empty lines (i.e. lines which contain only spaces before<br/>the newline character).</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_single_newlines=true|indent_single_newlines=false
-ValueDefault=false
-
-[Indent Param]
-Category=2
-Description="<html>The continuation indent for func_*_param if they are true. If non-zero, this<br/>overrides the indent.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_param="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent With Tabs]
-Category=2
-Description="<html>How to use tabs when indenting code.<br/><br/>0: Spaces only<br/>1: Indent with tabs to brace level, align with spaces (default)<br/>2: Indent and align with tabs, using spaces when not on a tabstop<br/><br/>Default: 1</html>"
-Enabled=true
-EditorType=multiple
-Choices="indent_with_tabs=0|indent_with_tabs=1|indent_with_tabs=2"
-ChoicesReadable="Spaces only|Indent with tabs, align with spaces|Indent and align with tabs"
-ValueDefault=1
-
-[Indent Cmt With Tabs]
-Category=2
-Description="<html>Whether to indent comments that are not at a brace level with tabs on a<br/>tabstop. Requires indent_with_tabs=2. If false, will use spaces.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_cmt_with_tabs=true|indent_cmt_with_tabs=false
-ValueDefault=false
-
-[Indent Align String]
-Category=2
-Description="<html>Whether to indent strings broken by '\' so that they line up.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_align_string=true|indent_align_string=false
-ValueDefault=false
-
-[Indent Xml String]
-Category=2
-Description="<html>The number of spaces to indent multi-line XML strings.<br/>Requires indent_align_string=true.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_xml_string="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Brace]
-Category=2
-Description="<html>Spaces to indent '{' from level.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_brace="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Braces]
-Category=2
-Description="<html>Whether braces are indented to the body level.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_braces=true|indent_braces=false
-ValueDefault=false
-
-[Indent Braces No Func]
-Category=2
-Description="<html>Whether to disable indenting function braces if indent_braces=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_braces_no_func=true|indent_braces_no_func=false
-ValueDefault=false
-
-[Indent Braces No Class]
-Category=2
-Description="<html>Whether to disable indenting class braces if indent_braces=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_braces_no_class=true|indent_braces_no_class=false
-ValueDefault=false
-
-[Indent Braces No Struct]
-Category=2
-Description="<html>Whether to disable indenting struct braces if indent_braces=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_braces_no_struct=true|indent_braces_no_struct=false
-ValueDefault=false
-
-[Indent Brace Parent]
-Category=2
-Description="<html>Whether to indent based on the size of the brace parent,<br/>i.e. 'if' =&gt; 3 spaces, 'for' =&gt; 4 spaces, etc.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_brace_parent=true|indent_brace_parent=false
-ValueDefault=false
-
-[Indent Paren Open Brace]
-Category=2
-Description="<html>Whether to indent based on the open parenthesis instead of the open brace<br/>in '({\n'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_paren_open_brace=true|indent_paren_open_brace=false
-ValueDefault=false
-
-[Indent Cs Delegate Brace]
-Category=2
-Description="<html>(C#) Whether to indent the brace of a C# delegate by another level.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_cs_delegate_brace=true|indent_cs_delegate_brace=false
-ValueDefault=false
-
-[Indent Cs Delegate Body]
-Category=2
-Description="<html>(C#) Whether to indent a C# delegate (to handle delegates with no brace) by<br/>another level.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_cs_delegate_body=true|indent_cs_delegate_body=false
-ValueDefault=false
-
-[Indent Namespace]
-Category=2
-Description="<html>Whether to indent the body of a 'namespace'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_namespace=true|indent_namespace=false
-ValueDefault=false
-
-[Indent Namespace Single Indent]
-Category=2
-Description="<html>Whether to indent only the first namespace, and not any nested namespaces.<br/>Requires indent_namespace=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_namespace_single_indent=true|indent_namespace_single_indent=false
-ValueDefault=false
-
-[Indent Namespace Level]
-Category=2
-Description="<html>The number of spaces to indent a namespace block.<br/>If set to zero, use the value indent_columns</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_namespace_level="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Namespace Limit]
-Category=2
-Description="<html>If the body of the namespace is longer than this number, it won't be<br/>indented. Requires indent_namespace=true. 0 means no limit.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_namespace_limit="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[Indent Namespace Inner Only]
-Category=2
-Description="<html>Whether to indent only in inner namespaces (nested in other namespaces).<br/>Requires indent_namespace=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_namespace_inner_only=true|indent_namespace_inner_only=false
-ValueDefault=false
-
-[Indent Extern]
-Category=2
-Description="<html>Whether the 'extern "C"' body is indented.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_extern=true|indent_extern=false
-ValueDefault=false
-
-[Indent Class]
-Category=2
-Description="<html>Whether the 'class' body is indented.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_class=true|indent_class=false
-ValueDefault=false
-
-[Indent Ignore Before Class Colon]
-Category=2
-Description="<html>Whether to ignore indent for the leading base class colon.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_before_class_colon=true|indent_ignore_before_class_colon=false
-ValueDefault=false
-
-[Indent Before Class Colon]
-Category=2
-Description="<html>Additional indent before the leading base class colon.<br/>Negative values decrease indent down to the first column.<br/>Requires indent_ignore_before_class_colon=false and a newline break before<br/>the colon (see pos_class_colon and nl_class_colon)</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_before_class_colon="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Indent Class Colon]
-Category=2
-Description="<html>Whether to indent the stuff after a leading base class colon.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_class_colon=true|indent_class_colon=false
-ValueDefault=false
-
-[Indent Class On Colon]
-Category=2
-Description="<html>Whether to indent based on a class colon instead of the stuff after the<br/>colon. Requires indent_class_colon=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_class_on_colon=true|indent_class_on_colon=false
-ValueDefault=false
-
-[Indent Ignore Before Constr Colon]
-Category=2
-Description="<html>Whether to ignore indent for a leading class initializer colon.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_before_constr_colon=true|indent_ignore_before_constr_colon=false
-ValueDefault=false
-
-[Indent Constr Colon]
-Category=2
-Description="<html>Whether to indent the stuff after a leading class initializer colon.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_constr_colon=true|indent_constr_colon=false
-ValueDefault=false
-
-[Indent Ctor Init Leading]
-Category=2
-Description="<html>Virtual indent from the ':' for leading member initializers.<br/><br/>Default: 2</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_ctor_init_leading="
-MinVal=0
-MaxVal=16
-ValueDefault=2
-
-[Indent Ctor Init Following]
-Category=2
-Description="<html>Virtual indent from the ':' for following member initializers.<br/><br/>Default: 2</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_ctor_init_following="
-MinVal=0
-MaxVal=16
-ValueDefault=2
-
-[Indent Ctor Init]
-Category=2
-Description="<html>Additional indent for constructor initializer list.<br/>Negative values decrease indent down to the first column.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_ctor_init="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Indent Else If]
-Category=2
-Description="<html>Whether to indent 'if' following 'else' as a new block under the 'else'.<br/>If false, 'else\nif' is treated as 'else if' for indenting purposes.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_else_if=true|indent_else_if=false
-ValueDefault=false
-
-[Indent Var Def Blk]
-Category=2
-Description="<html>Amount to indent variable declarations after a open brace.<br/><br/> &lt;0: Relative<br/>&gt;=0: Absolute</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_var_def_blk="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Indent Var Def Cont]
-Category=2
-Description="<html>Whether to indent continued variable declarations instead of aligning.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_var_def_cont=true|indent_var_def_cont=false
-ValueDefault=false
-
-[Indent Shift]
-Category=2
-Description="<html>How to indent continued shift expressions ('&lt;&lt;' and '&gt;&gt;').<br/>Set align_left_shift=false when using this.<br/> 0: Align shift operators instead of indenting them (default)<br/> 1: Indent by one level<br/>-1: Preserve original indentation</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_shift="
-MinVal=-1
-MaxVal=1
-ValueDefault=0
-
-[Indent Func Def Force Col1]
-Category=2
-Description="<html>Whether to force indentation of function definitions to start in column 1.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_func_def_force_col1=true|indent_func_def_force_col1=false
-ValueDefault=false
-
-[Indent Func Call Param]
-Category=2
-Description="<html>Whether to indent continued function call parameters one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_func_call_param=true|indent_func_call_param=false
-ValueDefault=false
-
-[Indent Func Def Param]
-Category=2
-Description="<html>Whether to indent continued function definition parameters one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_func_def_param=true|indent_func_def_param=false
-ValueDefault=false
-
-[Indent Func Def Param Paren Pos Threshold]
-Category=2
-Description="<html>for function definitions, only if indent_func_def_param is false<br/>Allows to align params when appropriate and indent them when not<br/>behave as if it was true if paren position is more than this value<br/>if paren position is more than the option value</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_func_def_param_paren_pos_threshold="
-MinVal=0
-MaxVal=160
-ValueDefault=0
-
-[Indent Func Proto Param]
-Category=2
-Description="<html>Whether to indent continued function call prototype one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_func_proto_param=true|indent_func_proto_param=false
-ValueDefault=false
-
-[Indent Func Class Param]
-Category=2
-Description="<html>Whether to indent continued function call declaration one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_func_class_param=true|indent_func_class_param=false
-ValueDefault=false
-
-[Indent Func Ctor Var Param]
-Category=2
-Description="<html>Whether to indent continued class variable constructors one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_func_ctor_var_param=true|indent_func_ctor_var_param=false
-ValueDefault=false
-
-[Indent Template Param]
-Category=2
-Description="<html>Whether to indent continued template parameter list one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_template_param=true|indent_template_param=false
-ValueDefault=false
-
-[Indent Func Param Double]
-Category=2
-Description="<html>Double the indent for indent_func_xxx_param options.<br/>Use both values of the options indent_columns and indent_param.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_func_param_double=true|indent_func_param_double=false
-ValueDefault=false
-
-[Indent Func Const]
-Category=2
-Description="<html>Indentation column for standalone 'const' qualifier on a function<br/>prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_func_const="
-MinVal=0
-MaxVal=69
-ValueDefault=0
-
-[Indent Func Throw]
-Category=2
-Description="<html>Indentation column for standalone 'throw' qualifier on a function<br/>prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_func_throw="
-MinVal=0
-MaxVal=41
-ValueDefault=0
-
-[Indent Macro Brace]
-Category=2
-Description="<html>How to indent within a macro followed by a brace on the same line<br/>This allows reducing the indent in macros that have (for example)<br/>`do { ... } while ` blocks bracketing them.<br/><br/>true: add an indent for the brace on the same line as the macro<br/>false: do not add an indent for the brace on the same line as the macro<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_macro_brace=true|indent_macro_brace=false
-ValueDefault=true
-
-[Indent Member]
-Category=2
-Description="<html>The number of spaces to indent a continued '-&gt;' or '.'.<br/>Usually set to 0, 1, or indent_columns.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_member="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Member Single]
-Category=2
-Description="<html>Whether lines broken at '.' or '-&gt;' should be indented by a single indent.<br/>The indent_member option will not be effective if this is set to true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_member_single=true|indent_member_single=false
-ValueDefault=false
-
-[Indent Single Line Comments Before]
-Category=2
-Description="<html>Spaces to indent single line ('//') comments on lines before code.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_single_line_comments_before="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Single Line Comments After]
-Category=2
-Description="<html>Spaces to indent single line ('//') comments on lines after code.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_single_line_comments_after="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Sparen Extra]
-Category=2
-Description="<html>When opening a paren for a control statement (if, for, while, etc), increase<br/>the indent level by this value. Negative values decrease the indent level.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_sparen_extra="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Indent Relative Single Line Comments]
-Category=2
-Description="<html>Whether to indent trailing single line ('//') comments relative to the code<br/>instead of trying to keep the same absolute column.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_relative_single_line_comments=true|indent_relative_single_line_comments=false
-ValueDefault=false
-
-[Indent Switch Case]
-Category=2
-Description="<html>Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.<br/>It might be wise to choose the same value for the option indent_case_brace.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_switch_case="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Switch Body]
-Category=2
-Description="<html>Spaces to indent the body of a 'switch' before any 'case'.<br/>Usually the same as indent_columns or indent_switch_case.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_switch_body="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Ignore Case Brace]
-Category=2
-Description="<html>Whether to ignore indent for '{' following 'case'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_case_brace=true|indent_ignore_case_brace=false
-ValueDefault=false
-
-[Indent Case Brace]
-Category=2
-Description="<html>Spaces to indent '{' from 'case'. By default, the brace will appear under<br/>the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.<br/>It might be wise to choose the same value for the option indent_switch_case.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_case_brace="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Indent Switch Break With Case]
-Category=2
-Description="<html>indent 'break' with 'case' from 'switch'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_switch_break_with_case=true|indent_switch_break_with_case=false
-ValueDefault=false
-
-[Indent Switch Pp]
-Category=2
-Description="<html>Whether to indent preprocessor statements inside of switch statements.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_switch_pp=true|indent_switch_pp=false
-ValueDefault=true
-
-[Indent Case Shift]
-Category=2
-Description="<html>Spaces to shift the 'case' line, without affecting any other lines.<br/>Usually 0.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_case_shift="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Case Comment]
-Category=2
-Description="<html>Whether to align comments before 'case' with the 'case'.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_case_comment=true|indent_case_comment=false
-ValueDefault=true
-
-[Indent Comment]
-Category=2
-Description="<html>Whether to indent comments not found in first column.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_comment=true|indent_comment=false
-ValueDefault=true
-
-[Indent Col1 Comment]
-Category=2
-Description="<html>Whether to indent comments found in first column.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_col1_comment=true|indent_col1_comment=false
-ValueDefault=false
-
-[Indent Col1 Multi String Literal]
-Category=2
-Description="<html>Whether to indent multi string literal in first column.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_col1_multi_string_literal=true|indent_col1_multi_string_literal=false
-ValueDefault=false
-
-[Indent Comment Align Thresh]
-Category=2
-Description="<html>Align comments on adjacent lines that are this many columns apart or less.<br/><br/>Default: 3</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_comment_align_thresh="
-MinVal=0
-MaxVal=16
-ValueDefault=3
-
-[Indent Ignore Label]
-Category=2
-Description="<html>Whether to ignore indent for goto labels.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_label=true|indent_ignore_label=false
-ValueDefault=false
-
-[Indent Label]
-Category=2
-Description="<html>How to indent goto labels. Requires indent_ignore_label=false.<br/><br/> &gt;0: Absolute column where 1 is the leftmost column<br/>&lt;=0: Subtract from brace indent<br/><br/>Default: 1</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_label="
-MinVal=-16
-MaxVal=16
-ValueDefault=1
-
-[Indent Access Spec]
-Category=2
-Description="<html>How to indent access specifiers that are followed by a<br/>colon.<br/><br/> &gt;0: Absolute column where 1 is the leftmost column<br/>&lt;=0: Subtract from brace indent<br/><br/>Default: 1</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_access_spec="
-MinVal=-16
-MaxVal=16
-ValueDefault=1
-
-[Indent Access Spec Body]
-Category=2
-Description="<html>Whether to indent the code after an access specifier by one level.<br/>If true, this option forces 'indent_access_spec=0'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_access_spec_body=true|indent_access_spec_body=false
-ValueDefault=false
-
-[Indent Paren Nl]
-Category=2
-Description="<html>If an open parenthesis is followed by a newline, whether to indent the next<br/>line so that it lines up after the open parenthesis (not recommended).</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_paren_nl=true|indent_paren_nl=false
-ValueDefault=false
-
-[Indent Paren Close]
-Category=2
-Description="<html>How to indent a close parenthesis after a newline.<br/><br/> 0: Indent to body level (default)<br/> 1: Align under the open parenthesis<br/> 2: Indent to the brace level<br/>-1: Preserve original indentation</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_paren_close="
-MinVal=-1
-MaxVal=2
-ValueDefault=0
-
-[Indent Paren After Func Def]
-Category=2
-Description="<html>Whether to indent the open parenthesis of a function definition,<br/>if the parenthesis is on its own line.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_paren_after_func_def=true|indent_paren_after_func_def=false
-ValueDefault=false
-
-[Indent Paren After Func Decl]
-Category=2
-Description="<html>Whether to indent the open parenthesis of a function declaration,<br/>if the parenthesis is on its own line.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_paren_after_func_decl=true|indent_paren_after_func_decl=false
-ValueDefault=false
-
-[Indent Paren After Func Call]
-Category=2
-Description="<html>Whether to indent the open parenthesis of a function call,<br/>if the parenthesis is on its own line.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_paren_after_func_call=true|indent_paren_after_func_call=false
-ValueDefault=false
-
-[Indent Comma Brace]
-Category=2
-Description="<html>How to indent a comma when inside braces.<br/> 0: Indent by one level (default)<br/> 1: Align under the open brace<br/>-1: Preserve original indentation</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_comma_brace="
-MinVal=-1
-MaxVal=1
-ValueDefault=0
-
-[Indent Comma Paren]
-Category=2
-Description="<html>How to indent a comma when inside parentheses.<br/> 0: Indent by one level (default)<br/> 1: Align under the open parenthesis<br/>-1: Preserve original indentation</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_comma_paren="
-MinVal=-1
-MaxVal=1
-ValueDefault=0
-
-[Indent Bool Paren]
-Category=2
-Description="<html>How to indent a Boolean operator when inside parentheses.<br/> 0: Indent by one level (default)<br/> 1: Align under the open parenthesis<br/>-1: Preserve original indentation</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_bool_paren="
-MinVal=-1
-MaxVal=1
-ValueDefault=0
-
-[Indent Ignore Bool]
-Category=2
-Description="<html>Whether to ignore the indentation of a Boolean operator when outside<br/>parentheses.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_bool=true|indent_ignore_bool=false
-ValueDefault=false
-
-[Indent Ignore Arith]
-Category=2
-Description="<html>Whether to ignore the indentation of an arithmetic operator.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_arith=true|indent_ignore_arith=false
-ValueDefault=false
-
-[Indent Semicolon For Paren]
-Category=2
-Description="<html>Whether to indent a semicolon when inside a for parenthesis.<br/>If true, aligns under the open for parenthesis.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_semicolon_for_paren=true|indent_semicolon_for_paren=false
-ValueDefault=false
-
-[Indent Ignore Semicolon]
-Category=2
-Description="<html>Whether to ignore the indentation of a semicolon outside of a 'for'<br/>statement.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_semicolon=true|indent_ignore_semicolon=false
-ValueDefault=false
-
-[Indent First Bool Expr]
-Category=2
-Description="<html>Whether to align the first expression to following ones<br/>if indent_bool_paren=1.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_first_bool_expr=true|indent_first_bool_expr=false
-ValueDefault=false
-
-[Indent First For Expr]
-Category=2
-Description="<html>Whether to align the first expression to following ones<br/>if indent_semicolon_for_paren=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_first_for_expr=true|indent_first_for_expr=false
-ValueDefault=false
-
-[Indent Square Nl]
-Category=2
-Description="<html>If an open square is followed by a newline, whether to indent the next line<br/>so that it lines up after the open square (not recommended).</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_square_nl=true|indent_square_nl=false
-ValueDefault=false
-
-[Indent Preserve Sql]
-Category=2
-Description="<html>(ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_preserve_sql=true|indent_preserve_sql=false
-ValueDefault=false
-
-[Indent Ignore Assign]
-Category=2
-Description="<html>Whether to ignore the indentation of an assignment operator.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_assign=true|indent_ignore_assign=false
-ValueDefault=false
-
-[Indent Align Assign]
-Category=2
-Description="<html>Whether to align continued statements at the '='. If false or if the '=' is<br/>followed by a newline, the next line is indent one tab.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_align_assign=true|indent_align_assign=false
-ValueDefault=true
-
-[Indent Off After Assign]
-Category=2
-Description="<html>If true, the indentation of the chunks after a '=' sequence will be set at<br/>LHS token indentation column before '='.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_off_after_assign=true|indent_off_after_assign=false
-ValueDefault=false
-
-[Indent Align Paren]
-Category=2
-Description="<html>Whether to align continued statements at the '('. If false or the '(' is<br/>followed by a newline, the next line indent is one tab.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_align_paren=true|indent_align_paren=false
-ValueDefault=true
-
-[Indent Oc Inside Msg Sel]
-Category=2
-Description="<html>(OC) Whether to indent Objective-C code inside message selectors.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_inside_msg_sel=true|indent_oc_inside_msg_sel=false
-ValueDefault=false
-
-[Indent Oc Block]
-Category=2
-Description="<html>(OC) Whether to indent Objective-C blocks at brace level instead of usual<br/>rules.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_block=true|indent_oc_block=false
-ValueDefault=false
-
-[Indent Oc Block Msg]
-Category=2
-Description="<html>(OC) Indent for Objective-C blocks in a message relative to the parameter<br/>name.<br/><br/>=0: Use indent_oc_block rules<br/>&gt;0: Use specified number of spaces to indent</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_oc_block_msg="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Oc Msg Colon]
-Category=2
-Description="<html>(OC) Minimum indent for subsequent parameters</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_oc_msg_colon="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Indent Oc Msg Prioritize First Colon]
-Category=2
-Description="<html>(OC) Whether to prioritize aligning with initial colon (and stripping spaces<br/>from lines, if necessary).<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_msg_prioritize_first_colon=true|indent_oc_msg_prioritize_first_colon=false
-ValueDefault=true
-
-[Indent Oc Block Msg Xcode Style]
-Category=2
-Description="<html>(OC) Whether to indent blocks the way that Xcode does by default<br/>(from the keyword if the parameter is on its own line; otherwise, from the<br/>previous indentation level). Requires indent_oc_block_msg=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_block_msg_xcode_style=true|indent_oc_block_msg_xcode_style=false
-ValueDefault=false
-
-[Indent Oc Block Msg From Keyword]
-Category=2
-Description="<html>(OC) Whether to indent blocks from where the brace is, relative to a<br/>message keyword. Requires indent_oc_block_msg=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_block_msg_from_keyword=true|indent_oc_block_msg_from_keyword=false
-ValueDefault=false
-
-[Indent Oc Block Msg From Colon]
-Category=2
-Description="<html>(OC) Whether to indent blocks from where the brace is, relative to a message<br/>colon. Requires indent_oc_block_msg=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_block_msg_from_colon=true|indent_oc_block_msg_from_colon=false
-ValueDefault=false
-
-[Indent Oc Block Msg From Caret]
-Category=2
-Description="<html>(OC) Whether to indent blocks from where the block caret is.<br/>Requires indent_oc_block_msg=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_block_msg_from_caret=true|indent_oc_block_msg_from_caret=false
-ValueDefault=false
-
-[Indent Oc Block Msg From Brace]
-Category=2
-Description="<html>(OC) Whether to indent blocks from where the brace caret is.<br/>Requires indent_oc_block_msg=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_oc_block_msg_from_brace=true|indent_oc_block_msg_from_brace=false
-ValueDefault=false
-
-[Indent Min Vbrace Open]
-Category=2
-Description="<html>When indenting after virtual brace open and newline add further spaces to<br/>reach this minimum indent.</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_min_vbrace_open="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Indent Vbrace Open On Tabstop]
-Category=2
-Description="<html>Whether to add further spaces after regular indent to reach next tabstop<br/>when indenting after virtual brace open and newline.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_vbrace_open_on_tabstop=true|indent_vbrace_open_on_tabstop=false
-ValueDefault=false
-
-[Indent Token After Brace]
-Category=2
-Description="<html>How to indent after a brace followed by another token (not a newline).<br/>true: indent all contained lines to match the token<br/>false: indent all contained lines to match the brace<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_token_after_brace=true|indent_token_after_brace=false
-ValueDefault=true
-
-[Indent Cpp Lambda Body]
-Category=2
-Description="<html>Whether to indent the body of a C++11 lambda.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_cpp_lambda_body=true|indent_cpp_lambda_body=false
-ValueDefault=false
-
-[Indent Compound Literal Return]
-Category=2
-Description="<html>How to indent compound literals that are being returned.<br/>true: add both the indent from return &amp; the compound literal open brace<br/> (i.e. 2 indent levels)<br/>false: only indent 1 level, don't add the indent for the open brace, only<br/> add the indent for the return.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_compound_literal_return=true|indent_compound_literal_return=false
-ValueDefault=true
-
-[Indent Using Block]
-Category=2
-Description="<html>(C#) Whether to indent a 'using' block if no braces are used.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_using_block=true|indent_using_block=false
-ValueDefault=true
-
-[Indent Ternary Operator]
-Category=2
-Description="<html>How to indent the continuation of ternary operator.<br/><br/>0: Off (default)<br/>1: When the `if_false` is a continuation, indent it under the `if_true` branch<br/>2: When the `:` is a continuation, indent it under `?`</html>"
-Enabled=false
-EditorType=numeric
-CallName="indent_ternary_operator="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Indent Inside Ternary Operator]
-Category=2
-Description="<html>Whether to indent the statements inside ternary operator.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_inside_ternary_operator=true|indent_inside_ternary_operator=false
-ValueDefault=false
-
-[Indent Off After Return]
-Category=2
-Description="<html>If true, the indentation of the chunks after a `return` sequence will be set at return indentation column.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_off_after_return=true|indent_off_after_return=false
-ValueDefault=false
-
-[Indent Off After Return New]
-Category=2
-Description="<html>If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_off_after_return_new=true|indent_off_after_return_new=false
-ValueDefault=false
-
-[Indent Single After Return]
-Category=2
-Description="<html>If true, the tokens after return are indented with regular single indentation. By default (false) the indentation is after the return token.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_single_after_return=true|indent_single_after_return=false
-ValueDefault=false
-
-[Indent Ignore Asm Block]
-Category=2
-Description="<html>Whether to ignore indent and alignment for 'asm' blocks (i.e. assume they<br/>have their own indentation).</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_ignore_asm_block=true|indent_ignore_asm_block=false
-ValueDefault=false
-
-[Donot Indent Func Def Close Paren]
-Category=2
-Description="<html>Don't indent the close parenthesis of a function definition,<br/>if the parenthesis is on its own line.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=donot_indent_func_def_close_paren=true|donot_indent_func_def_close_paren=false
-ValueDefault=false
-
-[Nl Collapse Empty Body]
-Category=3
-Description="<html>Whether to collapse empty blocks between '{' and '}' except for functions.<br/>Use nl_collapse_empty_body_functions to specify how empty function braces<br/>should be formatted.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_collapse_empty_body=true|nl_collapse_empty_body=false
-ValueDefault=false
-
-[Nl Collapse Empty Body Functions]
-Category=3
-Description="<html>Whether to collapse empty blocks between '{' and '}' for functions only.<br/>If true, overrides nl_inside_empty_func.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_collapse_empty_body_functions=true|nl_collapse_empty_body_functions=false
-ValueDefault=false
-
-[Nl Assign Leave One Liners]
-Category=3
-Description="<html>Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_assign_leave_one_liners=true|nl_assign_leave_one_liners=false
-ValueDefault=false
-
-[Nl Class Leave One Liners]
-Category=3
-Description="<html>Don't split one-line braced statements inside a 'class xx { }' body.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_class_leave_one_liners=true|nl_class_leave_one_liners=false
-ValueDefault=false
-
-[Nl Enum Leave One Liners]
-Category=3
-Description="<html>Don't split one-line enums, as in 'enum foo { BAR = 15 };'</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_enum_leave_one_liners=true|nl_enum_leave_one_liners=false
-ValueDefault=false
-
-[Nl Getset Leave One Liners]
-Category=3
-Description="<html>Don't split one-line get or set functions.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_getset_leave_one_liners=true|nl_getset_leave_one_liners=false
-ValueDefault=false
-
-[Nl Cs Property Leave One Liners]
-Category=3
-Description="<html>(C#) Don't split one-line property get or set functions.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_cs_property_leave_one_liners=true|nl_cs_property_leave_one_liners=false
-ValueDefault=false
-
-[Nl Func Leave One Liners]
-Category=3
-Description="<html>Don't split one-line function definitions, as in 'int foo() { return 0; }'.<br/>might modify nl_func_type_name</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_leave_one_liners=true|nl_func_leave_one_liners=false
-ValueDefault=false
-
-[Nl Cpp Lambda Leave One Liners]
-Category=3
-Description="<html>Don't split one-line C++11 lambdas, as in '[]() { return 0; }'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_cpp_lambda_leave_one_liners=true|nl_cpp_lambda_leave_one_liners=false
-ValueDefault=false
-
-[Nl If Leave One Liners]
-Category=3
-Description="<html>Don't split one-line if/else statements, as in 'if(...) b++;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_if_leave_one_liners=true|nl_if_leave_one_liners=false
-ValueDefault=false
-
-[Nl While Leave One Liners]
-Category=3
-Description="<html>Don't split one-line while statements, as in 'while(...) b++;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_while_leave_one_liners=true|nl_while_leave_one_liners=false
-ValueDefault=false
-
-[Nl Do Leave One Liners]
-Category=3
-Description="<html>Don't split one-line do statements, as in 'do { b++; } while(...);'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_do_leave_one_liners=true|nl_do_leave_one_liners=false
-ValueDefault=false
-
-[Nl For Leave One Liners]
-Category=3
-Description="<html>Don't split one-line for statements, as in 'for(...) b++;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_for_leave_one_liners=true|nl_for_leave_one_liners=false
-ValueDefault=false
-
-[Nl Oc Msg Leave One Liner]
-Category=3
-Description="<html>(OC) Don't split one-line Objective-C messages.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_oc_msg_leave_one_liner=true|nl_oc_msg_leave_one_liner=false
-ValueDefault=false
-
-[Nl Oc Mdef Brace]
-Category=3
-Description="<html>(OC) Add or remove newline between method declaration and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_mdef_brace=ignore|nl_oc_mdef_brace=add|nl_oc_mdef_brace=remove|nl_oc_mdef_brace=force|nl_oc_mdef_brace=not_defined
-ChoicesReadable="Ignore Nl Oc Mdef Brace|Add Nl Oc Mdef Brace|Remove Nl Oc Mdef Brace|Force Nl Oc Mdef Brace"
-ValueDefault=ignore
-
-[Nl Oc Block Brace]
-Category=3
-Description="<html>(OC) Add or remove newline between Objective-C block signature and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_block_brace=ignore|nl_oc_block_brace=add|nl_oc_block_brace=remove|nl_oc_block_brace=force|nl_oc_block_brace=not_defined
-ChoicesReadable="Ignore Nl Oc Block Brace|Add Nl Oc Block Brace|Remove Nl Oc Block Brace|Force Nl Oc Block Brace"
-ValueDefault=ignore
-
-[Nl Oc Before Interface]
-Category=3
-Description="<html>(OC) Add or remove blank line before '@interface' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_before_interface=ignore|nl_oc_before_interface=add|nl_oc_before_interface=remove|nl_oc_before_interface=force|nl_oc_before_interface=not_defined
-ChoicesReadable="Ignore Nl Oc Before Interface|Add Nl Oc Before Interface|Remove Nl Oc Before Interface|Force Nl Oc Before Interface"
-ValueDefault=ignore
-
-[Nl Oc Before Implementation]
-Category=3
-Description="<html>(OC) Add or remove blank line before '@implementation' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_before_implementation=ignore|nl_oc_before_implementation=add|nl_oc_before_implementation=remove|nl_oc_before_implementation=force|nl_oc_before_implementation=not_defined
-ChoicesReadable="Ignore Nl Oc Before Implementation|Add Nl Oc Before Implementation|Remove Nl Oc Before Implementation|Force Nl Oc Before Implementation"
-ValueDefault=ignore
-
-[Nl Oc Before End]
-Category=3
-Description="<html>(OC) Add or remove blank line before '@end' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_before_end=ignore|nl_oc_before_end=add|nl_oc_before_end=remove|nl_oc_before_end=force|nl_oc_before_end=not_defined
-ChoicesReadable="Ignore Nl Oc Before End|Add Nl Oc Before End|Remove Nl Oc Before End|Force Nl Oc Before End"
-ValueDefault=ignore
-
-[Nl Oc Interface Brace]
-Category=3
-Description="<html>(OC) Add or remove newline between '@interface' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_interface_brace=ignore|nl_oc_interface_brace=add|nl_oc_interface_brace=remove|nl_oc_interface_brace=force|nl_oc_interface_brace=not_defined
-ChoicesReadable="Ignore Nl Oc Interface Brace|Add Nl Oc Interface Brace|Remove Nl Oc Interface Brace|Force Nl Oc Interface Brace"
-ValueDefault=ignore
-
-[Nl Oc Implementation Brace]
-Category=3
-Description="<html>(OC) Add or remove newline between '@implementation' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_implementation_brace=ignore|nl_oc_implementation_brace=add|nl_oc_implementation_brace=remove|nl_oc_implementation_brace=force|nl_oc_implementation_brace=not_defined
-ChoicesReadable="Ignore Nl Oc Implementation Brace|Add Nl Oc Implementation Brace|Remove Nl Oc Implementation Brace|Force Nl Oc Implementation Brace"
-ValueDefault=ignore
-
-[Nl Start Of File]
-Category=3
-Description="<html>Add or remove newlines at the start of the file.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_start_of_file=ignore|nl_start_of_file=add|nl_start_of_file=remove|nl_start_of_file=force|nl_start_of_file=not_defined
-ChoicesReadable="Ignore Nl Start Of File|Add Nl Start Of File|Remove Nl Start Of File|Force Nl Start Of File"
-ValueDefault=ignore
-
-[Nl Start Of File Min]
-Category=3
-Description="<html>The minimum number of newlines at the start of the file (only used if<br/>nl_start_of_file is 'add' or 'force').</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_start_of_file_min="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl End Of File]
-Category=3
-Description="<html>Add or remove newline at the end of the file.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_end_of_file=ignore|nl_end_of_file=add|nl_end_of_file=remove|nl_end_of_file=force|nl_end_of_file=not_defined
-ChoicesReadable="Ignore Nl End Of File|Add Nl End Of File|Remove Nl End Of File|Force Nl End Of File"
-ValueDefault=ignore
-
-[Nl End Of File Min]
-Category=3
-Description="<html>The minimum number of newlines at the end of the file (only used if<br/>nl_end_of_file is 'add' or 'force').</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_end_of_file_min="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Assign Brace]
-Category=3
-Description="<html>Add or remove newline between '=' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_assign_brace=ignore|nl_assign_brace=add|nl_assign_brace=remove|nl_assign_brace=force|nl_assign_brace=not_defined
-ChoicesReadable="Ignore Nl Assign Brace|Add Nl Assign Brace|Remove Nl Assign Brace|Force Nl Assign Brace"
-ValueDefault=ignore
-
-[Nl Assign Square]
-Category=3
-Description="<html>(D) Add or remove newline between '=' and '['.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_assign_square=ignore|nl_assign_square=add|nl_assign_square=remove|nl_assign_square=force|nl_assign_square=not_defined
-ChoicesReadable="Ignore Nl Assign Square|Add Nl Assign Square|Remove Nl Assign Square|Force Nl Assign Square"
-ValueDefault=ignore
-
-[Nl Tsquare Brace]
-Category=3
-Description="<html>Add or remove newline between '[]' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_tsquare_brace=ignore|nl_tsquare_brace=add|nl_tsquare_brace=remove|nl_tsquare_brace=force|nl_tsquare_brace=not_defined
-ChoicesReadable="Ignore Nl Tsquare Brace|Add Nl Tsquare Brace|Remove Nl Tsquare Brace|Force Nl Tsquare Brace"
-ValueDefault=ignore
-
-[Nl After Square Assign]
-Category=3
-Description="<html>(D) Add or remove newline after '= ['. Will also affect the newline before<br/>the ']'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_square_assign=ignore|nl_after_square_assign=add|nl_after_square_assign=remove|nl_after_square_assign=force|nl_after_square_assign=not_defined
-ChoicesReadable="Ignore Nl After Square Assign|Add Nl After Square Assign|Remove Nl After Square Assign|Force Nl After Square Assign"
-ValueDefault=ignore
-
-[Nl Fcall Brace]
-Category=3
-Description="<html>Add or remove newline between a function call's ')' and '{', as in<br/>'list_for_each(item, &amp;list) { }'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_fcall_brace=ignore|nl_fcall_brace=add|nl_fcall_brace=remove|nl_fcall_brace=force|nl_fcall_brace=not_defined
-ChoicesReadable="Ignore Nl Fcall Brace|Add Nl Fcall Brace|Remove Nl Fcall Brace|Force Nl Fcall Brace"
-ValueDefault=ignore
-
-[Nl Enum Brace]
-Category=3
-Description="<html>Add or remove newline between 'enum' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_enum_brace=ignore|nl_enum_brace=add|nl_enum_brace=remove|nl_enum_brace=force|nl_enum_brace=not_defined
-ChoicesReadable="Ignore Nl Enum Brace|Add Nl Enum Brace|Remove Nl Enum Brace|Force Nl Enum Brace"
-ValueDefault=ignore
-
-[Nl Enum Class]
-Category=3
-Description="<html>Add or remove newline between 'enum' and 'class'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_enum_class=ignore|nl_enum_class=add|nl_enum_class=remove|nl_enum_class=force|nl_enum_class=not_defined
-ChoicesReadable="Ignore Nl Enum Class|Add Nl Enum Class|Remove Nl Enum Class|Force Nl Enum Class"
-ValueDefault=ignore
-
-[Nl Enum Class Identifier]
-Category=3
-Description="<html>Add or remove newline between 'enum class' and the identifier.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_enum_class_identifier=ignore|nl_enum_class_identifier=add|nl_enum_class_identifier=remove|nl_enum_class_identifier=force|nl_enum_class_identifier=not_defined
-ChoicesReadable="Ignore Nl Enum Class Identifier|Add Nl Enum Class Identifier|Remove Nl Enum Class Identifier|Force Nl Enum Class Identifier"
-ValueDefault=ignore
-
-[Nl Enum Identifier Colon]
-Category=3
-Description="<html>Add or remove newline between 'enum class' type and ':'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_enum_identifier_colon=ignore|nl_enum_identifier_colon=add|nl_enum_identifier_colon=remove|nl_enum_identifier_colon=force|nl_enum_identifier_colon=not_defined
-ChoicesReadable="Ignore Nl Enum Identifier Colon|Add Nl Enum Identifier Colon|Remove Nl Enum Identifier Colon|Force Nl Enum Identifier Colon"
-ValueDefault=ignore
-
-[Nl Enum Colon Type]
-Category=3
-Description="<html>Add or remove newline between 'enum class identifier :' and type.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_enum_colon_type=ignore|nl_enum_colon_type=add|nl_enum_colon_type=remove|nl_enum_colon_type=force|nl_enum_colon_type=not_defined
-ChoicesReadable="Ignore Nl Enum Colon Type|Add Nl Enum Colon Type|Remove Nl Enum Colon Type|Force Nl Enum Colon Type"
-ValueDefault=ignore
-
-[Nl Struct Brace]
-Category=3
-Description="<html>Add or remove newline between 'struct and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_struct_brace=ignore|nl_struct_brace=add|nl_struct_brace=remove|nl_struct_brace=force|nl_struct_brace=not_defined
-ChoicesReadable="Ignore Nl Struct Brace|Add Nl Struct Brace|Remove Nl Struct Brace|Force Nl Struct Brace"
-ValueDefault=ignore
-
-[Nl Union Brace]
-Category=3
-Description="<html>Add or remove newline between 'union' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_union_brace=ignore|nl_union_brace=add|nl_union_brace=remove|nl_union_brace=force|nl_union_brace=not_defined
-ChoicesReadable="Ignore Nl Union Brace|Add Nl Union Brace|Remove Nl Union Brace|Force Nl Union Brace"
-ValueDefault=ignore
-
-[Nl If Brace]
-Category=3
-Description="<html>Add or remove newline between 'if' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_if_brace=ignore|nl_if_brace=add|nl_if_brace=remove|nl_if_brace=force|nl_if_brace=not_defined
-ChoicesReadable="Ignore Nl If Brace|Add Nl If Brace|Remove Nl If Brace|Force Nl If Brace"
-ValueDefault=ignore
-
-[Nl Brace Else]
-Category=3
-Description="<html>Add or remove newline between '}' and 'else'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_else=ignore|nl_brace_else=add|nl_brace_else=remove|nl_brace_else=force|nl_brace_else=not_defined
-ChoicesReadable="Ignore Nl Brace Else|Add Nl Brace Else|Remove Nl Brace Else|Force Nl Brace Else"
-ValueDefault=ignore
-
-[Nl Elseif Brace]
-Category=3
-Description="<html>Add or remove newline between 'else if' and '{'. If set to ignore,<br/>nl_if_brace is used instead.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_elseif_brace=ignore|nl_elseif_brace=add|nl_elseif_brace=remove|nl_elseif_brace=force|nl_elseif_brace=not_defined
-ChoicesReadable="Ignore Nl Elseif Brace|Add Nl Elseif Brace|Remove Nl Elseif Brace|Force Nl Elseif Brace"
-ValueDefault=ignore
-
-[Nl Else Brace]
-Category=3
-Description="<html>Add or remove newline between 'else' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_else_brace=ignore|nl_else_brace=add|nl_else_brace=remove|nl_else_brace=force|nl_else_brace=not_defined
-ChoicesReadable="Ignore Nl Else Brace|Add Nl Else Brace|Remove Nl Else Brace|Force Nl Else Brace"
-ValueDefault=ignore
-
-[Nl Else If]
-Category=3
-Description="<html>Add or remove newline between 'else' and 'if'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_else_if=ignore|nl_else_if=add|nl_else_if=remove|nl_else_if=force|nl_else_if=not_defined
-ChoicesReadable="Ignore Nl Else If|Add Nl Else If|Remove Nl Else If|Force Nl Else If"
-ValueDefault=ignore
-
-[Nl Before Opening Brace Func Class Def]
-Category=3
-Description="<html>Add or remove newline before '{' opening brace</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_opening_brace_func_class_def=ignore|nl_before_opening_brace_func_class_def=add|nl_before_opening_brace_func_class_def=remove|nl_before_opening_brace_func_class_def=force|nl_before_opening_brace_func_class_def=not_defined
-ChoicesReadable="Ignore Nl Before Opening Brace Func Class Def|Add Nl Before Opening Brace Func Class Def|Remove Nl Before Opening Brace Func Class Def|Force Nl Before Opening Brace Func Class Def"
-ValueDefault=ignore
-
-[Nl Before If Closing Paren]
-Category=3
-Description="<html>Add or remove newline before 'if'/'else if' closing parenthesis.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_if_closing_paren=ignore|nl_before_if_closing_paren=add|nl_before_if_closing_paren=remove|nl_before_if_closing_paren=force|nl_before_if_closing_paren=not_defined
-ChoicesReadable="Ignore Nl Before If Closing Paren|Add Nl Before If Closing Paren|Remove Nl Before If Closing Paren|Force Nl Before If Closing Paren"
-ValueDefault=ignore
-
-[Nl Brace Finally]
-Category=3
-Description="<html>Add or remove newline between '}' and 'finally'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_finally=ignore|nl_brace_finally=add|nl_brace_finally=remove|nl_brace_finally=force|nl_brace_finally=not_defined
-ChoicesReadable="Ignore Nl Brace Finally|Add Nl Brace Finally|Remove Nl Brace Finally|Force Nl Brace Finally"
-ValueDefault=ignore
-
-[Nl Finally Brace]
-Category=3
-Description="<html>Add or remove newline between 'finally' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_finally_brace=ignore|nl_finally_brace=add|nl_finally_brace=remove|nl_finally_brace=force|nl_finally_brace=not_defined
-ChoicesReadable="Ignore Nl Finally Brace|Add Nl Finally Brace|Remove Nl Finally Brace|Force Nl Finally Brace"
-ValueDefault=ignore
-
-[Nl Try Brace]
-Category=3
-Description="<html>Add or remove newline between 'try' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_try_brace=ignore|nl_try_brace=add|nl_try_brace=remove|nl_try_brace=force|nl_try_brace=not_defined
-ChoicesReadable="Ignore Nl Try Brace|Add Nl Try Brace|Remove Nl Try Brace|Force Nl Try Brace"
-ValueDefault=ignore
-
-[Nl Getset Brace]
-Category=3
-Description="<html>Add or remove newline between get/set and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_getset_brace=ignore|nl_getset_brace=add|nl_getset_brace=remove|nl_getset_brace=force|nl_getset_brace=not_defined
-ChoicesReadable="Ignore Nl Getset Brace|Add Nl Getset Brace|Remove Nl Getset Brace|Force Nl Getset Brace"
-ValueDefault=ignore
-
-[Nl For Brace]
-Category=3
-Description="<html>Add or remove newline between 'for' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_for_brace=ignore|nl_for_brace=add|nl_for_brace=remove|nl_for_brace=force|nl_for_brace=not_defined
-ChoicesReadable="Ignore Nl For Brace|Add Nl For Brace|Remove Nl For Brace|Force Nl For Brace"
-ValueDefault=ignore
-
-[Nl Catch Brace]
-Category=3
-Description="<html>Add or remove newline before the '{' of a 'catch' statement, as in<br/>'catch (decl) &lt;here&gt; {'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_catch_brace=ignore|nl_catch_brace=add|nl_catch_brace=remove|nl_catch_brace=force|nl_catch_brace=not_defined
-ChoicesReadable="Ignore Nl Catch Brace|Add Nl Catch Brace|Remove Nl Catch Brace|Force Nl Catch Brace"
-ValueDefault=ignore
-
-[Nl Oc Catch Brace]
-Category=3
-Description="<html>(OC) Add or remove newline before the '{' of a '@catch' statement, as in<br/>'@catch (decl) &lt;here&gt; {'. If set to ignore, nl_catch_brace is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_catch_brace=ignore|nl_oc_catch_brace=add|nl_oc_catch_brace=remove|nl_oc_catch_brace=force|nl_oc_catch_brace=not_defined
-ChoicesReadable="Ignore Nl Oc Catch Brace|Add Nl Oc Catch Brace|Remove Nl Oc Catch Brace|Force Nl Oc Catch Brace"
-ValueDefault=ignore
-
-[Nl Brace Catch]
-Category=3
-Description="<html>Add or remove newline between '}' and 'catch'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_catch=ignore|nl_brace_catch=add|nl_brace_catch=remove|nl_brace_catch=force|nl_brace_catch=not_defined
-ChoicesReadable="Ignore Nl Brace Catch|Add Nl Brace Catch|Remove Nl Brace Catch|Force Nl Brace Catch"
-ValueDefault=ignore
-
-[Nl Oc Brace Catch]
-Category=3
-Description="<html>(OC) Add or remove newline between '}' and '@catch'. If set to ignore,<br/>nl_brace_catch is used.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_oc_brace_catch=ignore|nl_oc_brace_catch=add|nl_oc_brace_catch=remove|nl_oc_brace_catch=force|nl_oc_brace_catch=not_defined
-ChoicesReadable="Ignore Nl Oc Brace Catch|Add Nl Oc Brace Catch|Remove Nl Oc Brace Catch|Force Nl Oc Brace Catch"
-ValueDefault=ignore
-
-[Nl Brace Square]
-Category=3
-Description="<html>Add or remove newline between '}' and ']'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_square=ignore|nl_brace_square=add|nl_brace_square=remove|nl_brace_square=force|nl_brace_square=not_defined
-ChoicesReadable="Ignore Nl Brace Square|Add Nl Brace Square|Remove Nl Brace Square|Force Nl Brace Square"
-ValueDefault=ignore
-
-[Nl Brace Fparen]
-Category=3
-Description="<html>Add or remove newline between '}' and ')' in a function invocation.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_fparen=ignore|nl_brace_fparen=add|nl_brace_fparen=remove|nl_brace_fparen=force|nl_brace_fparen=not_defined
-ChoicesReadable="Ignore Nl Brace Fparen|Add Nl Brace Fparen|Remove Nl Brace Fparen|Force Nl Brace Fparen"
-ValueDefault=ignore
-
-[Nl While Brace]
-Category=3
-Description="<html>Add or remove newline between 'while' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_while_brace=ignore|nl_while_brace=add|nl_while_brace=remove|nl_while_brace=force|nl_while_brace=not_defined
-ChoicesReadable="Ignore Nl While Brace|Add Nl While Brace|Remove Nl While Brace|Force Nl While Brace"
-ValueDefault=ignore
-
-[Nl Scope Brace]
-Category=3
-Description="<html>(D) Add or remove newline between 'scope (x)' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_scope_brace=ignore|nl_scope_brace=add|nl_scope_brace=remove|nl_scope_brace=force|nl_scope_brace=not_defined
-ChoicesReadable="Ignore Nl Scope Brace|Add Nl Scope Brace|Remove Nl Scope Brace|Force Nl Scope Brace"
-ValueDefault=ignore
-
-[Nl Unittest Brace]
-Category=3
-Description="<html>(D) Add or remove newline between 'unittest' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_unittest_brace=ignore|nl_unittest_brace=add|nl_unittest_brace=remove|nl_unittest_brace=force|nl_unittest_brace=not_defined
-ChoicesReadable="Ignore Nl Unittest Brace|Add Nl Unittest Brace|Remove Nl Unittest Brace|Force Nl Unittest Brace"
-ValueDefault=ignore
-
-[Nl Version Brace]
-Category=3
-Description="<html>(D) Add or remove newline between 'version (x)' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_version_brace=ignore|nl_version_brace=add|nl_version_brace=remove|nl_version_brace=force|nl_version_brace=not_defined
-ChoicesReadable="Ignore Nl Version Brace|Add Nl Version Brace|Remove Nl Version Brace|Force Nl Version Brace"
-ValueDefault=ignore
-
-[Nl Using Brace]
-Category=3
-Description="<html>(C#) Add or remove newline between 'using' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_using_brace=ignore|nl_using_brace=add|nl_using_brace=remove|nl_using_brace=force|nl_using_brace=not_defined
-ChoicesReadable="Ignore Nl Using Brace|Add Nl Using Brace|Remove Nl Using Brace|Force Nl Using Brace"
-ValueDefault=ignore
-
-[Nl Brace Brace]
-Category=3
-Description="<html>Add or remove newline between two open or close braces. Due to general<br/>newline/brace handling, REMOVE may not work.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_brace=ignore|nl_brace_brace=add|nl_brace_brace=remove|nl_brace_brace=force|nl_brace_brace=not_defined
-ChoicesReadable="Ignore Nl Brace Brace|Add Nl Brace Brace|Remove Nl Brace Brace|Force Nl Brace Brace"
-ValueDefault=ignore
-
-[Nl Do Brace]
-Category=3
-Description="<html>Add or remove newline between 'do' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_do_brace=ignore|nl_do_brace=add|nl_do_brace=remove|nl_do_brace=force|nl_do_brace=not_defined
-ChoicesReadable="Ignore Nl Do Brace|Add Nl Do Brace|Remove Nl Do Brace|Force Nl Do Brace"
-ValueDefault=ignore
-
-[Nl Brace While]
-Category=3
-Description="<html>Add or remove newline between '}' and 'while' of 'do' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_while=ignore|nl_brace_while=add|nl_brace_while=remove|nl_brace_while=force|nl_brace_while=not_defined
-ChoicesReadable="Ignore Nl Brace While|Add Nl Brace While|Remove Nl Brace While|Force Nl Brace While"
-ValueDefault=ignore
-
-[Nl Switch Brace]
-Category=3
-Description="<html>Add or remove newline between 'switch' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_switch_brace=ignore|nl_switch_brace=add|nl_switch_brace=remove|nl_switch_brace=force|nl_switch_brace=not_defined
-ChoicesReadable="Ignore Nl Switch Brace|Add Nl Switch Brace|Remove Nl Switch Brace|Force Nl Switch Brace"
-ValueDefault=ignore
-
-[Nl Synchronized Brace]
-Category=3
-Description="<html>Add or remove newline between 'synchronized' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_synchronized_brace=ignore|nl_synchronized_brace=add|nl_synchronized_brace=remove|nl_synchronized_brace=force|nl_synchronized_brace=not_defined
-ChoicesReadable="Ignore Nl Synchronized Brace|Add Nl Synchronized Brace|Remove Nl Synchronized Brace|Force Nl Synchronized Brace"
-ValueDefault=ignore
-
-[Nl Multi Line Cond]
-Category=3
-Description="<html>Add a newline between ')' and '{' if the ')' is on a different line than the<br/>if/for/etc.<br/><br/>Overrides nl_for_brace, nl_if_brace, nl_switch_brace, nl_while_switch and<br/>nl_catch_brace.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_multi_line_cond=true|nl_multi_line_cond=false
-ValueDefault=false
-
-[Nl Multi Line Sparen Open]
-Category=3
-Description="<html>Add a newline after '(' if an if/for/while/switch condition spans multiple<br/>lines</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_multi_line_sparen_open=ignore|nl_multi_line_sparen_open=add|nl_multi_line_sparen_open=remove|nl_multi_line_sparen_open=force|nl_multi_line_sparen_open=not_defined
-ChoicesReadable="Ignore Nl Multi Line Sparen Open|Add Nl Multi Line Sparen Open|Remove Nl Multi Line Sparen Open|Force Nl Multi Line Sparen Open"
-ValueDefault=ignore
-
-[Nl Multi Line Sparen Close]
-Category=3
-Description="<html>Add a newline before ')' if an if/for/while/switch condition spans multiple<br/>lines. Overrides nl_before_if_closing_paren if both are specified.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_multi_line_sparen_close=ignore|nl_multi_line_sparen_close=add|nl_multi_line_sparen_close=remove|nl_multi_line_sparen_close=force|nl_multi_line_sparen_close=not_defined
-ChoicesReadable="Ignore Nl Multi Line Sparen Close|Add Nl Multi Line Sparen Close|Remove Nl Multi Line Sparen Close|Force Nl Multi Line Sparen Close"
-ValueDefault=ignore
-
-[Nl Multi Line Define]
-Category=3
-Description="<html>Force a newline in a define after the macro name for multi-line defines.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_multi_line_define=true|nl_multi_line_define=false
-ValueDefault=false
-
-[Nl Before Case]
-Category=3
-Description="<html>Whether to add a newline before 'case', and a blank line before a 'case'<br/>statement that follows a ';' or '}'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_before_case=true|nl_before_case=false
-ValueDefault=false
-
-[Nl After Case]
-Category=3
-Description="<html>Whether to add a newline after a 'case' statement.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_case=true|nl_after_case=false
-ValueDefault=false
-
-[Nl Case Colon Brace]
-Category=3
-Description="<html>Add or remove newline between a case ':' and '{'.<br/><br/>Overrides nl_after_case.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_case_colon_brace=ignore|nl_case_colon_brace=add|nl_case_colon_brace=remove|nl_case_colon_brace=force|nl_case_colon_brace=not_defined
-ChoicesReadable="Ignore Nl Case Colon Brace|Add Nl Case Colon Brace|Remove Nl Case Colon Brace|Force Nl Case Colon Brace"
-ValueDefault=ignore
-
-[Nl Before Throw]
-Category=3
-Description="<html>Add or remove newline between ')' and 'throw'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_throw=ignore|nl_before_throw=add|nl_before_throw=remove|nl_before_throw=force|nl_before_throw=not_defined
-ChoicesReadable="Ignore Nl Before Throw|Add Nl Before Throw|Remove Nl Before Throw|Force Nl Before Throw"
-ValueDefault=ignore
-
-[Nl Namespace Brace]
-Category=3
-Description="<html>Add or remove newline between 'namespace' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_namespace_brace=ignore|nl_namespace_brace=add|nl_namespace_brace=remove|nl_namespace_brace=force|nl_namespace_brace=not_defined
-ChoicesReadable="Ignore Nl Namespace Brace|Add Nl Namespace Brace|Remove Nl Namespace Brace|Force Nl Namespace Brace"
-ValueDefault=ignore
-
-[Nl Template Class]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template class.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_class=ignore|nl_template_class=add|nl_template_class=remove|nl_template_class=force|nl_template_class=not_defined
-ChoicesReadable="Ignore Nl Template Class|Add Nl Template Class|Remove Nl Template Class|Force Nl Template Class"
-ValueDefault=ignore
-
-[Nl Template Class Decl]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template class declaration.<br/><br/>Overrides nl_template_class.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_class_decl=ignore|nl_template_class_decl=add|nl_template_class_decl=remove|nl_template_class_decl=force|nl_template_class_decl=not_defined
-ChoicesReadable="Ignore Nl Template Class Decl|Add Nl Template Class Decl|Remove Nl Template Class Decl|Force Nl Template Class Decl"
-ValueDefault=ignore
-
-[Nl Template Class Decl Special]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized class declaration.<br/><br/>Overrides nl_template_class_decl.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_class_decl_special=ignore|nl_template_class_decl_special=add|nl_template_class_decl_special=remove|nl_template_class_decl_special=force|nl_template_class_decl_special=not_defined
-ChoicesReadable="Ignore Nl Template Class Decl Special|Add Nl Template Class Decl Special|Remove Nl Template Class Decl Special|Force Nl Template Class Decl Special"
-ValueDefault=ignore
-
-[Nl Template Class Def]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template class definition.<br/><br/>Overrides nl_template_class.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_class_def=ignore|nl_template_class_def=add|nl_template_class_def=remove|nl_template_class_def=force|nl_template_class_def=not_defined
-ChoicesReadable="Ignore Nl Template Class Def|Add Nl Template Class Def|Remove Nl Template Class Def|Force Nl Template Class Def"
-ValueDefault=ignore
-
-[Nl Template Class Def Special]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized class definition.<br/><br/>Overrides nl_template_class_def.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_class_def_special=ignore|nl_template_class_def_special=add|nl_template_class_def_special=remove|nl_template_class_def_special=force|nl_template_class_def_special=not_defined
-ChoicesReadable="Ignore Nl Template Class Def Special|Add Nl Template Class Def Special|Remove Nl Template Class Def Special|Force Nl Template Class Def Special"
-ValueDefault=ignore
-
-[Nl Template Func]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template function.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_func=ignore|nl_template_func=add|nl_template_func=remove|nl_template_func=force|nl_template_func=not_defined
-ChoicesReadable="Ignore Nl Template Func|Add Nl Template Func|Remove Nl Template Func|Force Nl Template Func"
-ValueDefault=ignore
-
-[Nl Template Func Decl]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template function<br/>declaration.<br/><br/>Overrides nl_template_func.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_func_decl=ignore|nl_template_func_decl=add|nl_template_func_decl=remove|nl_template_func_decl=force|nl_template_func_decl=not_defined
-ChoicesReadable="Ignore Nl Template Func Decl|Add Nl Template Func Decl|Remove Nl Template Func Decl|Force Nl Template Func Decl"
-ValueDefault=ignore
-
-[Nl Template Func Decl Special]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized function<br/>declaration.<br/><br/>Overrides nl_template_func_decl.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_func_decl_special=ignore|nl_template_func_decl_special=add|nl_template_func_decl_special=remove|nl_template_func_decl_special=force|nl_template_func_decl_special=not_defined
-ChoicesReadable="Ignore Nl Template Func Decl Special|Add Nl Template Func Decl Special|Remove Nl Template Func Decl Special|Force Nl Template Func Decl Special"
-ValueDefault=ignore
-
-[Nl Template Func Def]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template function<br/>definition.<br/><br/>Overrides nl_template_func.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_func_def=ignore|nl_template_func_def=add|nl_template_func_def=remove|nl_template_func_def=force|nl_template_func_def=not_defined
-ChoicesReadable="Ignore Nl Template Func Def|Add Nl Template Func Def|Remove Nl Template Func Def|Force Nl Template Func Def"
-ValueDefault=ignore
-
-[Nl Template Func Def Special]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized function<br/>definition.<br/><br/>Overrides nl_template_func_def.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_func_def_special=ignore|nl_template_func_def_special=add|nl_template_func_def_special=remove|nl_template_func_def_special=force|nl_template_func_def_special=not_defined
-ChoicesReadable="Ignore Nl Template Func Def Special|Add Nl Template Func Def Special|Remove Nl Template Func Def Special|Force Nl Template Func Def Special"
-ValueDefault=ignore
-
-[Nl Template Var]
-Category=3
-Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template variable.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_var=ignore|nl_template_var=add|nl_template_var=remove|nl_template_var=force|nl_template_var=not_defined
-ChoicesReadable="Ignore Nl Template Var|Add Nl Template Var|Remove Nl Template Var|Force Nl Template Var"
-ValueDefault=ignore
-
-[Nl Template Using]
-Category=3
-Description="<html>Add or remove newline between 'template&lt;...&gt;' and 'using' of a templated<br/>type alias.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_template_using=ignore|nl_template_using=add|nl_template_using=remove|nl_template_using=force|nl_template_using=not_defined
-ChoicesReadable="Ignore Nl Template Using|Add Nl Template Using|Remove Nl Template Using|Force Nl Template Using"
-ValueDefault=ignore
-
-[Nl Class Brace]
-Category=3
-Description="<html>Add or remove newline between 'class' and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_class_brace=ignore|nl_class_brace=add|nl_class_brace=remove|nl_class_brace=force|nl_class_brace=not_defined
-ChoicesReadable="Ignore Nl Class Brace|Add Nl Class Brace|Remove Nl Class Brace|Force Nl Class Brace"
-ValueDefault=ignore
-
-[Nl Class Init Args]
-Category=3
-Description="<html>Add or remove newline before or after (depending on pos_class_comma,<br/>may not be IGNORE) each',' in the base class list.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_class_init_args=ignore|nl_class_init_args=add|nl_class_init_args=remove|nl_class_init_args=force|nl_class_init_args=not_defined
-ChoicesReadable="Ignore Nl Class Init Args|Add Nl Class Init Args|Remove Nl Class Init Args|Force Nl Class Init Args"
-ValueDefault=ignore
-
-[Nl Constr Init Args]
-Category=3
-Description="<html>Add or remove newline after each ',' in the constructor member<br/>initialization. Related to nl_constr_colon, pos_constr_colon and<br/>pos_constr_comma.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_constr_init_args=ignore|nl_constr_init_args=add|nl_constr_init_args=remove|nl_constr_init_args=force|nl_constr_init_args=not_defined
-ChoicesReadable="Ignore Nl Constr Init Args|Add Nl Constr Init Args|Remove Nl Constr Init Args|Force Nl Constr Init Args"
-ValueDefault=ignore
-
-[Nl Enum Own Lines]
-Category=3
-Description="<html>Add or remove newline before first element, after comma, and after last<br/>element, in 'enum'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_enum_own_lines=ignore|nl_enum_own_lines=add|nl_enum_own_lines=remove|nl_enum_own_lines=force|nl_enum_own_lines=not_defined
-ChoicesReadable="Ignore Nl Enum Own Lines|Add Nl Enum Own Lines|Remove Nl Enum Own Lines|Force Nl Enum Own Lines"
-ValueDefault=ignore
-
-[Nl Func Type Name]
-Category=3
-Description="<html>Add or remove newline between return type and function name in a function<br/>definition.<br/>might be modified by nl_func_leave_one_liners</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_type_name=ignore|nl_func_type_name=add|nl_func_type_name=remove|nl_func_type_name=force|nl_func_type_name=not_defined
-ChoicesReadable="Ignore Nl Func Type Name|Add Nl Func Type Name|Remove Nl Func Type Name|Force Nl Func Type Name"
-ValueDefault=ignore
-
-[Nl Func Type Name Class]
-Category=3
-Description="<html>Add or remove newline between return type and function name inside a class<br/>definition. If set to ignore, nl_func_type_name or nl_func_proto_type_name<br/>is used instead.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_type_name_class=ignore|nl_func_type_name_class=add|nl_func_type_name_class=remove|nl_func_type_name_class=force|nl_func_type_name_class=not_defined
-ChoicesReadable="Ignore Nl Func Type Name Class|Add Nl Func Type Name Class|Remove Nl Func Type Name Class|Force Nl Func Type Name Class"
-ValueDefault=ignore
-
-[Nl Func Class Scope]
-Category=3
-Description="<html>Add or remove newline between class specification and '::'<br/>in 'void A::f() { }'. Only appears in separate member implementation (does<br/>not appear with in-line implementation).</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_class_scope=ignore|nl_func_class_scope=add|nl_func_class_scope=remove|nl_func_class_scope=force|nl_func_class_scope=not_defined
-ChoicesReadable="Ignore Nl Func Class Scope|Add Nl Func Class Scope|Remove Nl Func Class Scope|Force Nl Func Class Scope"
-ValueDefault=ignore
-
-[Nl Func Scope Name]
-Category=3
-Description="<html>Add or remove newline between function scope and name, as in<br/>'void A :: &lt;here&gt; f() { }'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_scope_name=ignore|nl_func_scope_name=add|nl_func_scope_name=remove|nl_func_scope_name=force|nl_func_scope_name=not_defined
-ChoicesReadable="Ignore Nl Func Scope Name|Add Nl Func Scope Name|Remove Nl Func Scope Name|Force Nl Func Scope Name"
-ValueDefault=ignore
-
-[Nl Func Proto Type Name]
-Category=3
-Description="<html>Add or remove newline between return type and function name in a prototype.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_proto_type_name=ignore|nl_func_proto_type_name=add|nl_func_proto_type_name=remove|nl_func_proto_type_name=force|nl_func_proto_type_name=not_defined
-ChoicesReadable="Ignore Nl Func Proto Type Name|Add Nl Func Proto Type Name|Remove Nl Func Proto Type Name|Force Nl Func Proto Type Name"
-ValueDefault=ignore
-
-[Nl Func Paren]
-Category=3
-Description="<html>Add or remove newline between a function name and the opening '(' in the<br/>declaration.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_paren=ignore|nl_func_paren=add|nl_func_paren=remove|nl_func_paren=force|nl_func_paren=not_defined
-ChoicesReadable="Ignore Nl Func Paren|Add Nl Func Paren|Remove Nl Func Paren|Force Nl Func Paren"
-ValueDefault=ignore
-
-[Nl Func Paren Empty]
-Category=3
-Description="<html>Overrides nl_func_paren for functions with no parameters.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_paren_empty=ignore|nl_func_paren_empty=add|nl_func_paren_empty=remove|nl_func_paren_empty=force|nl_func_paren_empty=not_defined
-ChoicesReadable="Ignore Nl Func Paren Empty|Add Nl Func Paren Empty|Remove Nl Func Paren Empty|Force Nl Func Paren Empty"
-ValueDefault=ignore
-
-[Nl Func Def Paren]
-Category=3
-Description="<html>Add or remove newline between a function name and the opening '(' in the<br/>definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_paren=ignore|nl_func_def_paren=add|nl_func_def_paren=remove|nl_func_def_paren=force|nl_func_def_paren=not_defined
-ChoicesReadable="Ignore Nl Func Def Paren|Add Nl Func Def Paren|Remove Nl Func Def Paren|Force Nl Func Def Paren"
-ValueDefault=ignore
-
-[Nl Func Def Paren Empty]
-Category=3
-Description="<html>Overrides nl_func_def_paren for functions with no parameters.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_paren_empty=ignore|nl_func_def_paren_empty=add|nl_func_def_paren_empty=remove|nl_func_def_paren_empty=force|nl_func_def_paren_empty=not_defined
-ChoicesReadable="Ignore Nl Func Def Paren Empty|Add Nl Func Def Paren Empty|Remove Nl Func Def Paren Empty|Force Nl Func Def Paren Empty"
-ValueDefault=ignore
-
-[Nl Func Call Paren]
-Category=3
-Description="<html>Add or remove newline between a function name and the opening '(' in the<br/>call.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_call_paren=ignore|nl_func_call_paren=add|nl_func_call_paren=remove|nl_func_call_paren=force|nl_func_call_paren=not_defined
-ChoicesReadable="Ignore Nl Func Call Paren|Add Nl Func Call Paren|Remove Nl Func Call Paren|Force Nl Func Call Paren"
-ValueDefault=ignore
-
-[Nl Func Call Paren Empty]
-Category=3
-Description="<html>Overrides nl_func_call_paren for functions with no parameters.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_call_paren_empty=ignore|nl_func_call_paren_empty=add|nl_func_call_paren_empty=remove|nl_func_call_paren_empty=force|nl_func_call_paren_empty=not_defined
-ChoicesReadable="Ignore Nl Func Call Paren Empty|Add Nl Func Call Paren Empty|Remove Nl Func Call Paren Empty|Force Nl Func Call Paren Empty"
-ValueDefault=ignore
-
-[Nl Func Decl Start]
-Category=3
-Description="<html>Add or remove newline after '(' in a function declaration.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_decl_start=ignore|nl_func_decl_start=add|nl_func_decl_start=remove|nl_func_decl_start=force|nl_func_decl_start=not_defined
-ChoicesReadable="Ignore Nl Func Decl Start|Add Nl Func Decl Start|Remove Nl Func Decl Start|Force Nl Func Decl Start"
-ValueDefault=ignore
-
-[Nl Func Def Start]
-Category=3
-Description="<html>Add or remove newline after '(' in a function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_start=ignore|nl_func_def_start=add|nl_func_def_start=remove|nl_func_def_start=force|nl_func_def_start=not_defined
-ChoicesReadable="Ignore Nl Func Def Start|Add Nl Func Def Start|Remove Nl Func Def Start|Force Nl Func Def Start"
-ValueDefault=ignore
-
-[Nl Func Decl Start Single]
-Category=3
-Description="<html>Overrides nl_func_decl_start when there is only one parameter.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_decl_start_single=ignore|nl_func_decl_start_single=add|nl_func_decl_start_single=remove|nl_func_decl_start_single=force|nl_func_decl_start_single=not_defined
-ChoicesReadable="Ignore Nl Func Decl Start Single|Add Nl Func Decl Start Single|Remove Nl Func Decl Start Single|Force Nl Func Decl Start Single"
-ValueDefault=ignore
-
-[Nl Func Def Start Single]
-Category=3
-Description="<html>Overrides nl_func_def_start when there is only one parameter.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_start_single=ignore|nl_func_def_start_single=add|nl_func_def_start_single=remove|nl_func_def_start_single=force|nl_func_def_start_single=not_defined
-ChoicesReadable="Ignore Nl Func Def Start Single|Add Nl Func Def Start Single|Remove Nl Func Def Start Single|Force Nl Func Def Start Single"
-ValueDefault=ignore
-
-[Nl Func Decl Start Multi Line]
-Category=3
-Description="<html>Whether to add a newline after '(' in a function declaration if '(' and ')'<br/>are in different lines. If false, nl_func_decl_start is used instead.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_decl_start_multi_line=true|nl_func_decl_start_multi_line=false
-ValueDefault=false
-
-[Nl Func Def Start Multi Line]
-Category=3
-Description="<html>Whether to add a newline after '(' in a function definition if '(' and ')'<br/>are in different lines. If false, nl_func_def_start is used instead.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_def_start_multi_line=true|nl_func_def_start_multi_line=false
-ValueDefault=false
-
-[Nl Func Decl Args]
-Category=3
-Description="<html>Add or remove newline after each ',' in a function declaration.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_decl_args=ignore|nl_func_decl_args=add|nl_func_decl_args=remove|nl_func_decl_args=force|nl_func_decl_args=not_defined
-ChoicesReadable="Ignore Nl Func Decl Args|Add Nl Func Decl Args|Remove Nl Func Decl Args|Force Nl Func Decl Args"
-ValueDefault=ignore
-
-[Nl Func Def Args]
-Category=3
-Description="<html>Add or remove newline after each ',' in a function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_args=ignore|nl_func_def_args=add|nl_func_def_args=remove|nl_func_def_args=force|nl_func_def_args=not_defined
-ChoicesReadable="Ignore Nl Func Def Args|Add Nl Func Def Args|Remove Nl Func Def Args|Force Nl Func Def Args"
-ValueDefault=ignore
-
-[Nl Func Call Args]
-Category=3
-Description="<html>Add or remove newline after each ',' in a function call.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_call_args=ignore|nl_func_call_args=add|nl_func_call_args=remove|nl_func_call_args=force|nl_func_call_args=not_defined
-ChoicesReadable="Ignore Nl Func Call Args|Add Nl Func Call Args|Remove Nl Func Call Args|Force Nl Func Call Args"
-ValueDefault=ignore
-
-[Nl Func Decl Args Multi Line]
-Category=3
-Description="<html>Whether to add a newline after each ',' in a function declaration if '('<br/>and ')' are in different lines. If false, nl_func_decl_args is used instead.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_decl_args_multi_line=true|nl_func_decl_args_multi_line=false
-ValueDefault=false
-
-[Nl Func Def Args Multi Line]
-Category=3
-Description="<html>Whether to add a newline after each ',' in a function definition if '('<br/>and ')' are in different lines. If false, nl_func_def_args is used instead.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_def_args_multi_line=true|nl_func_def_args_multi_line=false
-ValueDefault=false
-
-[Nl Func Decl End]
-Category=3
-Description="<html>Add or remove newline before the ')' in a function declaration.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_decl_end=ignore|nl_func_decl_end=add|nl_func_decl_end=remove|nl_func_decl_end=force|nl_func_decl_end=not_defined
-ChoicesReadable="Ignore Nl Func Decl End|Add Nl Func Decl End|Remove Nl Func Decl End|Force Nl Func Decl End"
-ValueDefault=ignore
-
-[Nl Func Def End]
-Category=3
-Description="<html>Add or remove newline before the ')' in a function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_end=ignore|nl_func_def_end=add|nl_func_def_end=remove|nl_func_def_end=force|nl_func_def_end=not_defined
-ChoicesReadable="Ignore Nl Func Def End|Add Nl Func Def End|Remove Nl Func Def End|Force Nl Func Def End"
-ValueDefault=ignore
-
-[Nl Func Decl End Single]
-Category=3
-Description="<html>Overrides nl_func_decl_end when there is only one parameter.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_decl_end_single=ignore|nl_func_decl_end_single=add|nl_func_decl_end_single=remove|nl_func_decl_end_single=force|nl_func_decl_end_single=not_defined
-ChoicesReadable="Ignore Nl Func Decl End Single|Add Nl Func Decl End Single|Remove Nl Func Decl End Single|Force Nl Func Decl End Single"
-ValueDefault=ignore
-
-[Nl Func Def End Single]
-Category=3
-Description="<html>Overrides nl_func_def_end when there is only one parameter.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_end_single=ignore|nl_func_def_end_single=add|nl_func_def_end_single=remove|nl_func_def_end_single=force|nl_func_def_end_single=not_defined
-ChoicesReadable="Ignore Nl Func Def End Single|Add Nl Func Def End Single|Remove Nl Func Def End Single|Force Nl Func Def End Single"
-ValueDefault=ignore
-
-[Nl Func Decl End Multi Line]
-Category=3
-Description="<html>Whether to add a newline before ')' in a function declaration if '(' and ')'<br/>are in different lines. If false, nl_func_decl_end is used instead.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_decl_end_multi_line=true|nl_func_decl_end_multi_line=false
-ValueDefault=false
-
-[Nl Func Def End Multi Line]
-Category=3
-Description="<html>Whether to add a newline before ')' in a function definition if '(' and ')'<br/>are in different lines. If false, nl_func_def_end is used instead.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_def_end_multi_line=true|nl_func_def_end_multi_line=false
-ValueDefault=false
-
-[Nl Func Decl Empty]
-Category=3
-Description="<html>Add or remove newline between '()' in a function declaration.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_decl_empty=ignore|nl_func_decl_empty=add|nl_func_decl_empty=remove|nl_func_decl_empty=force|nl_func_decl_empty=not_defined
-ChoicesReadable="Ignore Nl Func Decl Empty|Add Nl Func Decl Empty|Remove Nl Func Decl Empty|Force Nl Func Decl Empty"
-ValueDefault=ignore
-
-[Nl Func Def Empty]
-Category=3
-Description="<html>Add or remove newline between '()' in a function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_def_empty=ignore|nl_func_def_empty=add|nl_func_def_empty=remove|nl_func_def_empty=force|nl_func_def_empty=not_defined
-ChoicesReadable="Ignore Nl Func Def Empty|Add Nl Func Def Empty|Remove Nl Func Def Empty|Force Nl Func Def Empty"
-ValueDefault=ignore
-
-[Nl Func Call Empty]
-Category=3
-Description="<html>Add or remove newline between '()' in a function call.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_call_empty=ignore|nl_func_call_empty=add|nl_func_call_empty=remove|nl_func_call_empty=force|nl_func_call_empty=not_defined
-ChoicesReadable="Ignore Nl Func Call Empty|Add Nl Func Call Empty|Remove Nl Func Call Empty|Force Nl Func Call Empty"
-ValueDefault=ignore
-
-[Nl Func Call Start]
-Category=3
-Description="<html>Whether to add a newline after '(' in a function call,<br/>has preference over nl_func_call_start_multi_line.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_call_start=ignore|nl_func_call_start=add|nl_func_call_start=remove|nl_func_call_start=force|nl_func_call_start=not_defined
-ChoicesReadable="Ignore Nl Func Call Start|Add Nl Func Call Start|Remove Nl Func Call Start|Force Nl Func Call Start"
-ValueDefault=ignore
-
-[Nl Func Call End]
-Category=3
-Description="<html>Whether to add a newline before ')' in a function call.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_func_call_end=ignore|nl_func_call_end=add|nl_func_call_end=remove|nl_func_call_end=force|nl_func_call_end=not_defined
-ChoicesReadable="Ignore Nl Func Call End|Add Nl Func Call End|Remove Nl Func Call End|Force Nl Func Call End"
-ValueDefault=ignore
-
-[Nl Func Call Start Multi Line]
-Category=3
-Description="<html>Whether to add a newline after '(' in a function call if '(' and ')' are in<br/>different lines.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_call_start_multi_line=true|nl_func_call_start_multi_line=false
-ValueDefault=false
-
-[Nl Func Call Args Multi Line]
-Category=3
-Description="<html>Whether to add a newline after each ',' in a function call if '(' and ')'<br/>are in different lines.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_call_args_multi_line=true|nl_func_call_args_multi_line=false
-ValueDefault=false
-
-[Nl Func Call End Multi Line]
-Category=3
-Description="<html>Whether to add a newline before ')' in a function call if '(' and ')' are in<br/>different lines.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_call_end_multi_line=true|nl_func_call_end_multi_line=false
-ValueDefault=false
-
-[Nl Func Call Args Multi Line Ignore Closures]
-Category=3
-Description="<html>Whether to respect nl_func_call_XXX option in case of closure args.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_func_call_args_multi_line_ignore_closures=true|nl_func_call_args_multi_line_ignore_closures=false
-ValueDefault=false
-
-[Nl Template Start]
-Category=3
-Description="<html>Whether to add a newline after '&lt;' of a template parameter list.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_template_start=true|nl_template_start=false
-ValueDefault=false
-
-[Nl Template Args]
-Category=3
-Description="<html>Whether to add a newline after each ',' in a template parameter list.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_template_args=true|nl_template_args=false
-ValueDefault=false
-
-[Nl Template End]
-Category=3
-Description="<html>Whether to add a newline before '&gt;' of a template parameter list.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_template_end=true|nl_template_end=false
-ValueDefault=false
-
-[Nl Oc Msg Args]
-Category=3
-Description="<html>(OC) Whether to put each Objective-C message parameter on a separate line.<br/>See nl_oc_msg_leave_one_liner.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_oc_msg_args=true|nl_oc_msg_args=false
-ValueDefault=false
-
-[Nl Oc Msg Args Min Params]
-Category=3
-Description="<html>(OC) Minimum number of Objective-C message parameters before applying nl_oc_msg_args.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_oc_msg_args_min_params="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Oc Msg Args Max Code Width]
-Category=3
-Description="<html>(OC) Max code width of Objective-C message before applying nl_oc_msg_args.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_oc_msg_args_max_code_width="
-MinVal=0
-MaxVal=10000
-ValueDefault=0
-
-[Nl Fdef Brace]
-Category=3
-Description="<html>Add or remove newline between function signature and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_fdef_brace=ignore|nl_fdef_brace=add|nl_fdef_brace=remove|nl_fdef_brace=force|nl_fdef_brace=not_defined
-ChoicesReadable="Ignore Nl Fdef Brace|Add Nl Fdef Brace|Remove Nl Fdef Brace|Force Nl Fdef Brace"
-ValueDefault=ignore
-
-[Nl Fdef Brace Cond]
-Category=3
-Description="<html>Add or remove newline between function signature and '{',<br/>if signature ends with ')'. Overrides nl_fdef_brace.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_fdef_brace_cond=ignore|nl_fdef_brace_cond=add|nl_fdef_brace_cond=remove|nl_fdef_brace_cond=force|nl_fdef_brace_cond=not_defined
-ChoicesReadable="Ignore Nl Fdef Brace Cond|Add Nl Fdef Brace Cond|Remove Nl Fdef Brace Cond|Force Nl Fdef Brace Cond"
-ValueDefault=ignore
-
-[Nl Cpp Ldef Brace]
-Category=3
-Description="<html>Add or remove newline between C++11 lambda signature and '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_cpp_ldef_brace=ignore|nl_cpp_ldef_brace=add|nl_cpp_ldef_brace=remove|nl_cpp_ldef_brace=force|nl_cpp_ldef_brace=not_defined
-ChoicesReadable="Ignore Nl Cpp Ldef Brace|Add Nl Cpp Ldef Brace|Remove Nl Cpp Ldef Brace|Force Nl Cpp Ldef Brace"
-ValueDefault=ignore
-
-[Nl Return Expr]
-Category=3
-Description="<html>Add or remove newline between 'return' and the return expression.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_return_expr=ignore|nl_return_expr=add|nl_return_expr=remove|nl_return_expr=force|nl_return_expr=not_defined
-ChoicesReadable="Ignore Nl Return Expr|Add Nl Return Expr|Remove Nl Return Expr|Force Nl Return Expr"
-ValueDefault=ignore
-
-[Nl Throw Expr]
-Category=3
-Description="<html>Add or remove newline between 'throw' and the throw expression.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_throw_expr=ignore|nl_throw_expr=add|nl_throw_expr=remove|nl_throw_expr=force|nl_throw_expr=not_defined
-ChoicesReadable="Ignore Nl Throw Expr|Add Nl Throw Expr|Remove Nl Throw Expr|Force Nl Throw Expr"
-ValueDefault=ignore
-
-[Nl After Semicolon]
-Category=3
-Description="<html>Whether to add a newline after semicolons, except in 'for' statements.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_semicolon=true|nl_after_semicolon=false
-ValueDefault=false
-
-[Nl Paren Dbrace Open]
-Category=3
-Description="<html>(Java) Add or remove newline between the ')' and '{{' of the double brace<br/>initializer.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_paren_dbrace_open=ignore|nl_paren_dbrace_open=add|nl_paren_dbrace_open=remove|nl_paren_dbrace_open=force|nl_paren_dbrace_open=not_defined
-ChoicesReadable="Ignore Nl Paren Dbrace Open|Add Nl Paren Dbrace Open|Remove Nl Paren Dbrace Open|Force Nl Paren Dbrace Open"
-ValueDefault=ignore
-
-[Nl Type Brace Init Lst]
-Category=3
-Description="<html>Whether to add a newline after the type in an unnamed temporary<br/>direct-list-initialization, better:<br/>before a direct-list-initialization.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_type_brace_init_lst=ignore|nl_type_brace_init_lst=add|nl_type_brace_init_lst=remove|nl_type_brace_init_lst=force|nl_type_brace_init_lst=not_defined
-ChoicesReadable="Ignore Nl Type Brace Init Lst|Add Nl Type Brace Init Lst|Remove Nl Type Brace Init Lst|Force Nl Type Brace Init Lst"
-ValueDefault=ignore
-
-[Nl Type Brace Init Lst Open]
-Category=3
-Description="<html>Whether to add a newline after the open brace in an unnamed temporary<br/>direct-list-initialization.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_type_brace_init_lst_open=ignore|nl_type_brace_init_lst_open=add|nl_type_brace_init_lst_open=remove|nl_type_brace_init_lst_open=force|nl_type_brace_init_lst_open=not_defined
-ChoicesReadable="Ignore Nl Type Brace Init Lst Open|Add Nl Type Brace Init Lst Open|Remove Nl Type Brace Init Lst Open|Force Nl Type Brace Init Lst Open"
-ValueDefault=ignore
-
-[Nl Type Brace Init Lst Close]
-Category=3
-Description="<html>Whether to add a newline before the close brace in an unnamed temporary<br/>direct-list-initialization.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_type_brace_init_lst_close=ignore|nl_type_brace_init_lst_close=add|nl_type_brace_init_lst_close=remove|nl_type_brace_init_lst_close=force|nl_type_brace_init_lst_close=not_defined
-ChoicesReadable="Ignore Nl Type Brace Init Lst Close|Add Nl Type Brace Init Lst Close|Remove Nl Type Brace Init Lst Close|Force Nl Type Brace Init Lst Close"
-ValueDefault=ignore
-
-[Nl Before Brace Open]
-Category=3
-Description="<html>Whether to add a newline before '{'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_before_brace_open=true|nl_before_brace_open=false
-ValueDefault=false
-
-[Nl After Brace Open]
-Category=3
-Description="<html>Whether to add a newline after '{'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_brace_open=true|nl_after_brace_open=false
-ValueDefault=false
-
-[Nl After Brace Open Cmt]
-Category=3
-Description="<html>Whether to add a newline between the open brace and a trailing single-line<br/>comment. Requires nl_after_brace_open=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_brace_open_cmt=true|nl_after_brace_open_cmt=false
-ValueDefault=false
-
-[Nl After Vbrace Open]
-Category=3
-Description="<html>Whether to add a newline after a virtual brace open with a non-empty body.<br/>These occur in un-braced if/while/do/for statement bodies.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_vbrace_open=true|nl_after_vbrace_open=false
-ValueDefault=false
-
-[Nl After Vbrace Open Empty]
-Category=3
-Description="<html>Whether to add a newline after a virtual brace open with an empty body.<br/>These occur in un-braced if/while/do/for statement bodies.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_vbrace_open_empty=true|nl_after_vbrace_open_empty=false
-ValueDefault=false
-
-[Nl After Brace Close]
-Category=3
-Description="<html>Whether to add a newline after '}'. Does not apply if followed by a<br/>necessary ';'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_brace_close=true|nl_after_brace_close=false
-ValueDefault=false
-
-[Nl After Vbrace Close]
-Category=3
-Description="<html>Whether to add a newline after a virtual brace close,<br/>as in 'if (foo) a++; &lt;here&gt; return;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_vbrace_close=true|nl_after_vbrace_close=false
-ValueDefault=false
-
-[Nl Brace Struct Var]
-Category=3
-Description="<html>Add or remove newline between the close brace and identifier,<br/>as in 'struct { int a; } &lt;here&gt; b;'. Affects enumerations, unions and<br/>structures. If set to ignore, uses nl_after_brace_close.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_brace_struct_var=ignore|nl_brace_struct_var=add|nl_brace_struct_var=remove|nl_brace_struct_var=force|nl_brace_struct_var=not_defined
-ChoicesReadable="Ignore Nl Brace Struct Var|Add Nl Brace Struct Var|Remove Nl Brace Struct Var|Force Nl Brace Struct Var"
-ValueDefault=ignore
-
-[Nl Define Macro]
-Category=3
-Description="<html>Whether to alter newlines in '#define' macros.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_define_macro=true|nl_define_macro=false
-ValueDefault=false
-
-[Nl Squeeze Paren Close]
-Category=3
-Description="<html>Whether to alter newlines between consecutive parenthesis closes. The number<br/>of closing parentheses in a line will depend on respective open parenthesis<br/>lines.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_squeeze_paren_close=true|nl_squeeze_paren_close=false
-ValueDefault=false
-
-[Nl Squeeze Ifdef]
-Category=3
-Description="<html>Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and<br/>'#endif'. Does not affect top-level #ifdefs.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_squeeze_ifdef=true|nl_squeeze_ifdef=false
-ValueDefault=false
-
-[Nl Squeeze Ifdef Top Level]
-Category=3
-Description="<html>Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_squeeze_ifdef_top_level=true|nl_squeeze_ifdef_top_level=false
-ValueDefault=false
-
-[Nl Before If]
-Category=3
-Description="<html>Add or remove blank line before 'if'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_if=ignore|nl_before_if=add|nl_before_if=remove|nl_before_if=force|nl_before_if=not_defined
-ChoicesReadable="Ignore Nl Before If|Add Nl Before If|Remove Nl Before If|Force Nl Before If"
-ValueDefault=ignore
-
-[Nl After If]
-Category=3
-Description="<html>Add or remove blank line after 'if' statement. Add/Force work only if the<br/>next token is not a closing brace.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_if=ignore|nl_after_if=add|nl_after_if=remove|nl_after_if=force|nl_after_if=not_defined
-ChoicesReadable="Ignore Nl After If|Add Nl After If|Remove Nl After If|Force Nl After If"
-ValueDefault=ignore
-
-[Nl Before For]
-Category=3
-Description="<html>Add or remove blank line before 'for'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_for=ignore|nl_before_for=add|nl_before_for=remove|nl_before_for=force|nl_before_for=not_defined
-ChoicesReadable="Ignore Nl Before For|Add Nl Before For|Remove Nl Before For|Force Nl Before For"
-ValueDefault=ignore
-
-[Nl After For]
-Category=3
-Description="<html>Add or remove blank line after 'for' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_for=ignore|nl_after_for=add|nl_after_for=remove|nl_after_for=force|nl_after_for=not_defined
-ChoicesReadable="Ignore Nl After For|Add Nl After For|Remove Nl After For|Force Nl After For"
-ValueDefault=ignore
-
-[Nl Before While]
-Category=3
-Description="<html>Add or remove blank line before 'while'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_while=ignore|nl_before_while=add|nl_before_while=remove|nl_before_while=force|nl_before_while=not_defined
-ChoicesReadable="Ignore Nl Before While|Add Nl Before While|Remove Nl Before While|Force Nl Before While"
-ValueDefault=ignore
-
-[Nl After While]
-Category=3
-Description="<html>Add or remove blank line after 'while' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_while=ignore|nl_after_while=add|nl_after_while=remove|nl_after_while=force|nl_after_while=not_defined
-ChoicesReadable="Ignore Nl After While|Add Nl After While|Remove Nl After While|Force Nl After While"
-ValueDefault=ignore
-
-[Nl Before Switch]
-Category=3
-Description="<html>Add or remove blank line before 'switch'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_switch=ignore|nl_before_switch=add|nl_before_switch=remove|nl_before_switch=force|nl_before_switch=not_defined
-ChoicesReadable="Ignore Nl Before Switch|Add Nl Before Switch|Remove Nl Before Switch|Force Nl Before Switch"
-ValueDefault=ignore
-
-[Nl After Switch]
-Category=3
-Description="<html>Add or remove blank line after 'switch' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_switch=ignore|nl_after_switch=add|nl_after_switch=remove|nl_after_switch=force|nl_after_switch=not_defined
-ChoicesReadable="Ignore Nl After Switch|Add Nl After Switch|Remove Nl After Switch|Force Nl After Switch"
-ValueDefault=ignore
-
-[Nl Before Synchronized]
-Category=3
-Description="<html>Add or remove blank line before 'synchronized'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_synchronized=ignore|nl_before_synchronized=add|nl_before_synchronized=remove|nl_before_synchronized=force|nl_before_synchronized=not_defined
-ChoicesReadable="Ignore Nl Before Synchronized|Add Nl Before Synchronized|Remove Nl Before Synchronized|Force Nl Before Synchronized"
-ValueDefault=ignore
-
-[Nl After Synchronized]
-Category=3
-Description="<html>Add or remove blank line after 'synchronized' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_synchronized=ignore|nl_after_synchronized=add|nl_after_synchronized=remove|nl_after_synchronized=force|nl_after_synchronized=not_defined
-ChoicesReadable="Ignore Nl After Synchronized|Add Nl After Synchronized|Remove Nl After Synchronized|Force Nl After Synchronized"
-ValueDefault=ignore
-
-[Nl Before Do]
-Category=3
-Description="<html>Add or remove blank line before 'do'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_do=ignore|nl_before_do=add|nl_before_do=remove|nl_before_do=force|nl_before_do=not_defined
-ChoicesReadable="Ignore Nl Before Do|Add Nl Before Do|Remove Nl Before Do|Force Nl Before Do"
-ValueDefault=ignore
-
-[Nl After Do]
-Category=3
-Description="<html>Add or remove blank line after 'do/while' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_do=ignore|nl_after_do=add|nl_after_do=remove|nl_after_do=force|nl_after_do=not_defined
-ChoicesReadable="Ignore Nl After Do|Add Nl After Do|Remove Nl After Do|Force Nl After Do"
-ValueDefault=ignore
-
-[Nl Before Ignore After Case]
-Category=3
-Description="<html>Ignore nl_before_{if,for,switch,do,synchronized} if the control<br/>statement is immediately after a case statement.<br/>if nl_before_{if,for,switch,do} is set to remove, this option<br/>does nothing.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_before_ignore_after_case=true|nl_before_ignore_after_case=false
-ValueDefault=false
-
-[Nl Before Return]
-Category=3
-Description="<html>Whether to put a blank line before 'return' statements, unless after an open<br/>brace.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_before_return=true|nl_before_return=false
-ValueDefault=false
-
-[Nl After Return]
-Category=3
-Description="<html>Whether to put a blank line after 'return' statements, unless followed by a<br/>close brace.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_return=true|nl_after_return=false
-ValueDefault=false
-
-[Nl Before Member]
-Category=3
-Description="<html>Whether to put a blank line before a member '.' or '-&gt;' operators.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_before_member=ignore|nl_before_member=add|nl_before_member=remove|nl_before_member=force|nl_before_member=not_defined
-ChoicesReadable="Ignore Nl Before Member|Add Nl Before Member|Remove Nl Before Member|Force Nl Before Member"
-ValueDefault=ignore
-
-[Nl After Member]
-Category=3
-Description="<html>(Java) Whether to put a blank line after a member '.' or '-&gt;' operators.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_member=ignore|nl_after_member=add|nl_after_member=remove|nl_after_member=force|nl_after_member=not_defined
-ChoicesReadable="Ignore Nl After Member|Add Nl After Member|Remove Nl After Member|Force Nl After Member"
-ValueDefault=ignore
-
-[Nl Ds Struct Enum Cmt]
-Category=3
-Description="<html>Whether to double-space commented-entries in 'struct'/'union'/'enum'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_ds_struct_enum_cmt=true|nl_ds_struct_enum_cmt=false
-ValueDefault=false
-
-[Nl Ds Struct Enum Close Brace]
-Category=3
-Description="<html>Whether to force a newline before '}' of a 'struct'/'union'/'enum'.<br/>(Lower priority than eat_blanks_before_close_brace.)</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_ds_struct_enum_close_brace=true|nl_ds_struct_enum_close_brace=false
-ValueDefault=false
-
-[Nl Class Colon]
-Category=3
-Description="<html>Add or remove newline before or after (depending on pos_class_colon) a class<br/>colon, as in 'class Foo &lt;here&gt; : &lt;or here&gt; public Bar'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_class_colon=ignore|nl_class_colon=add|nl_class_colon=remove|nl_class_colon=force|nl_class_colon=not_defined
-ChoicesReadable="Ignore Nl Class Colon|Add Nl Class Colon|Remove Nl Class Colon|Force Nl Class Colon"
-ValueDefault=ignore
-
-[Nl Constr Colon]
-Category=3
-Description="<html>Add or remove newline around a class constructor colon. The exact position<br/>depends on nl_constr_init_args, pos_constr_colon and pos_constr_comma.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_constr_colon=ignore|nl_constr_colon=add|nl_constr_colon=remove|nl_constr_colon=force|nl_constr_colon=not_defined
-ChoicesReadable="Ignore Nl Constr Colon|Add Nl Constr Colon|Remove Nl Constr Colon|Force Nl Constr Colon"
-ValueDefault=ignore
-
-[Nl Namespace Two To One Liner]
-Category=3
-Description="<html>Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }'<br/>into a single line. If true, prevents other brace newline rules from turning<br/>such code into four lines. If true, it also preserves one-liner namespaces.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_namespace_two_to_one_liner=true|nl_namespace_two_to_one_liner=false
-ValueDefault=false
-
-[Nl Create If One Liner]
-Category=3
-Description="<html>Whether to remove a newline in simple unbraced if statements, turning them<br/>into one-liners, as in 'if(b)\n i++;' =&gt; 'if(b) i++;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_create_if_one_liner=true|nl_create_if_one_liner=false
-ValueDefault=false
-
-[Nl Create For One Liner]
-Category=3
-Description="<html>Whether to remove a newline in simple unbraced for statements, turning them<br/>into one-liners, as in 'for (...)\n stmt;' =&gt; 'for (...) stmt;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_create_for_one_liner=true|nl_create_for_one_liner=false
-ValueDefault=false
-
-[Nl Create While One Liner]
-Category=3
-Description="<html>Whether to remove a newline in simple unbraced while statements, turning<br/>them into one-liners, as in 'while (expr)\n stmt;' =&gt; 'while (expr) stmt;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_create_while_one_liner=true|nl_create_while_one_liner=false
-ValueDefault=false
-
-[Nl Create Func Def One Liner]
-Category=3
-Description="<html>Whether to collapse a function definition whose body (not counting braces)<br/>is only one line so that the entire definition (prototype, braces, body) is<br/>a single line.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_create_func_def_one_liner=true|nl_create_func_def_one_liner=false
-ValueDefault=false
-
-[Nl Create List One Liner]
-Category=3
-Description="<html>Whether to split one-line simple list definitions into three lines by<br/>adding newlines, as in 'int a[12] = { &lt;here&gt; 0 &lt;here&gt; };'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_create_list_one_liner=true|nl_create_list_one_liner=false
-ValueDefault=false
-
-[Nl Split If One Liner]
-Category=3
-Description="<html>Whether to split one-line simple unbraced if statements into two lines by<br/>adding a newline, as in 'if(b) &lt;here&gt; i++;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_split_if_one_liner=true|nl_split_if_one_liner=false
-ValueDefault=false
-
-[Nl Split For One Liner]
-Category=3
-Description="<html>Whether to split one-line simple unbraced for statements into two lines by<br/>adding a newline, as in 'for (...) &lt;here&gt; stmt;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_split_for_one_liner=true|nl_split_for_one_liner=false
-ValueDefault=false
-
-[Nl Split While One Liner]
-Category=3
-Description="<html>Whether to split one-line simple unbraced while statements into two lines by<br/>adding a newline, as in 'while (expr) &lt;here&gt; stmt;'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_split_while_one_liner=true|nl_split_while_one_liner=false
-ValueDefault=false
-
-[Donot Add Nl Before Cpp Comment]
-Category=3
-Description="<html>Don't add a newline before a cpp-comment in a parameter list of a function<br/>call.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=donot_add_nl_before_cpp_comment=true|donot_add_nl_before_cpp_comment=false
-ValueDefault=false
-
-[Nl Max]
-Category=4
-Description="<html>The maximum number of consecutive newlines (3 = 2 blank lines).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_max="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Max Blank In Func]
-Category=4
-Description="<html>The maximum number of consecutive newlines in a function.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_max_blank_in_func="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Inside Empty Func]
-Category=4
-Description="<html>The number of newlines inside an empty function body.<br/>This option overrides eat_blanks_after_open_brace and<br/>eat_blanks_before_close_brace, but is ignored when<br/>nl_collapse_empty_body_functions=true</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_inside_empty_func="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Func Body Proto]
-Category=4
-Description="<html>The number of newlines before a function prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_func_body_proto="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Func Body Def]
-Category=4
-Description="<html>The number of newlines before a multi-line function definition. Where<br/>applicable, this option is overridden with eat_blanks_after_open_brace=true</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_func_body_def="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Func Class Proto]
-Category=4
-Description="<html>The number of newlines before a class constructor/destructor prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_func_class_proto="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Func Class Def]
-Category=4
-Description="<html>The number of newlines before a class constructor/destructor definition.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_func_class_def="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Func Proto]
-Category=4
-Description="<html>The number of newlines after a function prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_func_proto="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Func Proto Group]
-Category=4
-Description="<html>The number of newlines after a function prototype, if not followed by<br/>another function prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_func_proto_group="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Func Class Proto]
-Category=4
-Description="<html>The number of newlines after a class constructor/destructor prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_func_class_proto="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Func Class Proto Group]
-Category=4
-Description="<html>The number of newlines after a class constructor/destructor prototype,<br/>if not followed by another constructor/destructor prototype.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_func_class_proto_group="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Class Leave One Liner Groups]
-Category=4
-Description="<html>Whether one-line method definitions inside a class body should be treated<br/>as if they were prototypes for the purposes of adding newlines.<br/><br/>Requires nl_class_leave_one_liners=true. Overrides nl_before_func_body_def<br/>and nl_before_func_class_def for one-liners.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_class_leave_one_liner_groups=true|nl_class_leave_one_liner_groups=false
-ValueDefault=false
-
-[Nl After Func Body]
-Category=4
-Description="<html>The number of newlines after '}' of a multi-line function body.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_func_body="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Func Body Class]
-Category=4
-Description="<html>The number of newlines after '}' of a multi-line function body in a class<br/>declaration. Also affects class constructors/destructors.<br/><br/>Overrides nl_after_func_body.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_func_body_class="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Func Body One Liner]
-Category=4
-Description="<html>The number of newlines after '}' of a single line function body. Also<br/>affects class constructors/destructors.<br/><br/>Overrides nl_after_func_body and nl_after_func_body_class.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_func_body_one_liner="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Typedef Blk Start]
-Category=4
-Description="<html>The number of newlines before a block of typedefs. If nl_after_access_spec<br/>is non-zero, that option takes precedence.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_typedef_blk_start="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Typedef Blk End]
-Category=4
-Description="<html>The number of newlines after a block of typedefs.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_typedef_blk_end="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Typedef Blk In]
-Category=4
-Description="<html>The maximum number of consecutive newlines within a block of typedefs.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_typedef_blk_in="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Var Def Blk End Func Top]
-Category=4
-Description="<html>The minimum number of blank lines after a block of variable definitions<br/>at the top of a function body. If any preprocessor directives appear<br/>between the opening brace of the function and the variable block, then<br/>it is considered as not at the top of the function.Newlines are added<br/>before trailing preprocessor directives, if any exist.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_var_def_blk_end_func_top="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Var Def Blk Start]
-Category=4
-Description="<html>The minimum number of empty newlines before a block of variable definitions<br/>not at the top of a function body. If nl_after_access_spec is non-zero,<br/>that option takes precedence. Newlines are not added at the top of the<br/>file or just after an opening brace. Newlines are added above any<br/>preprocessor directives before the block.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_var_def_blk_start="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Var Def Blk End]
-Category=4
-Description="<html>The minimum number of empty newlines after a block of variable definitions<br/>not at the top of a function body. Newlines are not added if the block<br/>is at the bottom of the file or just before a preprocessor directive.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_var_def_blk_end="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Var Def Blk In]
-Category=4
-Description="<html>The maximum number of consecutive newlines within a block of variable<br/>definitions.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_var_def_blk_in="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Block Comment]
-Category=4
-Description="<html>The minimum number of newlines before a multi-line comment.<br/>Doesn't apply if after a brace open or another multi-line comment.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_block_comment="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before C Comment]
-Category=4
-Description="<html>The minimum number of newlines before a single-line C comment.<br/>Doesn't apply if after a brace open or other single-line C comments.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_c_comment="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Cpp Comment]
-Category=4
-Description="<html>The minimum number of newlines before a CPP comment.<br/>Doesn't apply if after a brace open or other CPP comments.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_cpp_comment="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Multiline Comment]
-Category=4
-Description="<html>Whether to force a newline after a multi-line comment.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_multiline_comment=true|nl_after_multiline_comment=false
-ValueDefault=false
-
-[Nl After Label Colon]
-Category=4
-Description="<html>Whether to force a newline after a label's colon.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=nl_after_label_colon=true|nl_after_label_colon=false
-ValueDefault=false
-
-[Nl Before Struct]
-Category=4
-Description="<html>The number of newlines before a struct definition.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_struct="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Struct]
-Category=4
-Description="<html>The number of newlines after '}' or ';' of a struct/enum/union definition.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_struct="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Class]
-Category=4
-Description="<html>The number of newlines before a class definition.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_class="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Class]
-Category=4
-Description="<html>The number of newlines after '}' or ';' of a class definition.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_class="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Namespace]
-Category=4
-Description="<html>The number of newlines before a namespace.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_namespace="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Inside Namespace]
-Category=4
-Description="<html>The number of newlines after '{' of a namespace. This also adds newlines<br/>before the matching '}'.<br/><br/>0: Apply eat_blanks_after_open_brace or eat_blanks_before_close_brace if<br/> applicable, otherwise no change.<br/><br/>Overrides eat_blanks_after_open_brace and eat_blanks_before_close_brace.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_inside_namespace="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Namespace]
-Category=4
-Description="<html>The number of newlines after '}' of a namespace.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_namespace="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Access Spec]
-Category=4
-Description="<html>The number of newlines before an access specifier label. This also includes<br/>the Qt-specific 'signals:' and 'slots:'. Will not change the newline count<br/>if after a brace open.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_access_spec="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Access Spec]
-Category=4
-Description="<html>The number of newlines after an access specifier label. This also includes<br/>the Qt-specific 'signals:' and 'slots:'. Will not change the newline count<br/>if after a brace open.<br/><br/>0: No change (default).<br/><br/>Overrides nl_typedef_blk_start and nl_var_def_blk_start.</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_access_spec="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Comment Func Def]
-Category=4
-Description="<html>The number of newlines between a function definition and the function<br/>comment, as in '// comment\n &lt;here&gt; void foo() {...}'.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_comment_func_def="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Try Catch Finally]
-Category=4
-Description="<html>The number of newlines after a try-catch-finally block that isn't followed<br/>by a brace close.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_try_catch_finally="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Around Cs Property]
-Category=4
-Description="<html>(C#) The number of newlines before and after a property, indexer or event<br/>declaration.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_around_cs_property="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Between Get Set]
-Category=4
-Description="<html>(C#) The number of newlines between the get/set/add/remove handlers.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_between_get_set="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Property Brace]
-Category=4
-Description="<html>(C#) Add or remove newline between property and the '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_property_brace=ignore|nl_property_brace=add|nl_property_brace=remove|nl_property_brace=force|nl_property_brace=not_defined
-ChoicesReadable="Ignore Nl Property Brace|Add Nl Property Brace|Remove Nl Property Brace|Force Nl Property Brace"
-ValueDefault=ignore
-
-[Eat Blanks After Open Brace]
-Category=4
-Description="<html>Whether to remove blank lines after '{'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=eat_blanks_after_open_brace=true|eat_blanks_after_open_brace=false
-ValueDefault=false
-
-[Eat Blanks Before Close Brace]
-Category=4
-Description="<html>Whether to remove blank lines before '}'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=eat_blanks_before_close_brace=true|eat_blanks_before_close_brace=false
-ValueDefault=false
-
-[Nl Remove Extra Newlines]
-Category=4
-Description="<html>How aggressively to remove extra newlines not in preprocessor.<br/><br/>0: No change (default)<br/>1: Remove most newlines not handled by other config<br/>2: Remove all newlines and reformat completely by config</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_remove_extra_newlines="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Nl After Annotation]
-Category=4
-Description="<html>(Java) Add or remove newline after an annotation statement. Only affects<br/>annotations that are after a newline.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_after_annotation=ignore|nl_after_annotation=add|nl_after_annotation=remove|nl_after_annotation=force|nl_after_annotation=not_defined
-ChoicesReadable="Ignore Nl After Annotation|Add Nl After Annotation|Remove Nl After Annotation|Force Nl After Annotation"
-ValueDefault=ignore
-
-[Nl Between Annotation]
-Category=4
-Description="<html>(Java) Add or remove newline between two annotations.</html>"
-Enabled=false
-EditorType=multiple
-Choices=nl_between_annotation=ignore|nl_between_annotation=add|nl_between_annotation=remove|nl_between_annotation=force|nl_between_annotation=not_defined
-ChoicesReadable="Ignore Nl Between Annotation|Add Nl Between Annotation|Remove Nl Between Annotation|Force Nl Between Annotation"
-ValueDefault=ignore
-
-[Nl Before Whole File Ifdef]
-Category=4
-Description="<html>The number of newlines before a whole-file #ifdef.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_whole_file_ifdef="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Whole File Ifdef]
-Category=4
-Description="<html>The number of newlines after a whole-file #ifdef.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_whole_file_ifdef="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl Before Whole File Endif]
-Category=4
-Description="<html>The number of newlines before a whole-file #endif.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_before_whole_file_endif="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Nl After Whole File Endif]
-Category=4
-Description="<html>The number of newlines after a whole-file #endif.<br/><br/>0: No change (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="nl_after_whole_file_endif="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Pos Arith]
-Category=5
-Description="<html>The position of arithmetic operators in wrapped expressions.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_arith=ignore|pos_arith=break|pos_arith=force|pos_arith=lead|pos_arith=trail|pos_arith=join|pos_arith=lead_break|pos_arith=lead_force|pos_arith=trail_break|pos_arith=trail_force
-ChoicesReadable="Ignore Pos Arith|Break Pos Arith|Force Pos Arith|Lead Pos Arith|Trail Pos Arith|Join Pos Arith|Lead Break Pos Arith|Lead Force Pos Arith|Trail Break Pos Arith|Trail Force Pos Arith"
-ValueDefault=ignore
-
-[Pos Assign]
-Category=5
-Description="<html>The position of assignment in wrapped expressions. Do not affect '='<br/>followed by '{'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_assign=ignore|pos_assign=break|pos_assign=force|pos_assign=lead|pos_assign=trail|pos_assign=join|pos_assign=lead_break|pos_assign=lead_force|pos_assign=trail_break|pos_assign=trail_force
-ChoicesReadable="Ignore Pos Assign|Break Pos Assign|Force Pos Assign|Lead Pos Assign|Trail Pos Assign|Join Pos Assign|Lead Break Pos Assign|Lead Force Pos Assign|Trail Break Pos Assign|Trail Force Pos Assign"
-ValueDefault=ignore
-
-[Pos Bool]
-Category=5
-Description="<html>The position of Boolean operators in wrapped expressions.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_bool=ignore|pos_bool=break|pos_bool=force|pos_bool=lead|pos_bool=trail|pos_bool=join|pos_bool=lead_break|pos_bool=lead_force|pos_bool=trail_break|pos_bool=trail_force
-ChoicesReadable="Ignore Pos Bool|Break Pos Bool|Force Pos Bool|Lead Pos Bool|Trail Pos Bool|Join Pos Bool|Lead Break Pos Bool|Lead Force Pos Bool|Trail Break Pos Bool|Trail Force Pos Bool"
-ValueDefault=ignore
-
-[Pos Compare]
-Category=5
-Description="<html>The position of comparison operators in wrapped expressions.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_compare=ignore|pos_compare=break|pos_compare=force|pos_compare=lead|pos_compare=trail|pos_compare=join|pos_compare=lead_break|pos_compare=lead_force|pos_compare=trail_break|pos_compare=trail_force
-ChoicesReadable="Ignore Pos Compare|Break Pos Compare|Force Pos Compare|Lead Pos Compare|Trail Pos Compare|Join Pos Compare|Lead Break Pos Compare|Lead Force Pos Compare|Trail Break Pos Compare|Trail Force Pos Compare"
-ValueDefault=ignore
-
-[Pos Conditional]
-Category=5
-Description="<html>The position of conditional operators, as in the '?' and ':' of<br/>'expr ? stmt : stmt', in wrapped expressions.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_conditional=ignore|pos_conditional=break|pos_conditional=force|pos_conditional=lead|pos_conditional=trail|pos_conditional=join|pos_conditional=lead_break|pos_conditional=lead_force|pos_conditional=trail_break|pos_conditional=trail_force
-ChoicesReadable="Ignore Pos Conditional|Break Pos Conditional|Force Pos Conditional|Lead Pos Conditional|Trail Pos Conditional|Join Pos Conditional|Lead Break Pos Conditional|Lead Force Pos Conditional|Trail Break Pos Conditional|Trail Force Pos Conditional"
-ValueDefault=ignore
-
-[Pos Comma]
-Category=5
-Description="<html>The position of the comma in wrapped expressions.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_comma=ignore|pos_comma=break|pos_comma=force|pos_comma=lead|pos_comma=trail|pos_comma=join|pos_comma=lead_break|pos_comma=lead_force|pos_comma=trail_break|pos_comma=trail_force
-ChoicesReadable="Ignore Pos Comma|Break Pos Comma|Force Pos Comma|Lead Pos Comma|Trail Pos Comma|Join Pos Comma|Lead Break Pos Comma|Lead Force Pos Comma|Trail Break Pos Comma|Trail Force Pos Comma"
-ValueDefault=ignore
-
-[Pos Enum Comma]
-Category=5
-Description="<html>The position of the comma in enum entries.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_enum_comma=ignore|pos_enum_comma=break|pos_enum_comma=force|pos_enum_comma=lead|pos_enum_comma=trail|pos_enum_comma=join|pos_enum_comma=lead_break|pos_enum_comma=lead_force|pos_enum_comma=trail_break|pos_enum_comma=trail_force
-ChoicesReadable="Ignore Pos Enum Comma|Break Pos Enum Comma|Force Pos Enum Comma|Lead Pos Enum Comma|Trail Pos Enum Comma|Join Pos Enum Comma|Lead Break Pos Enum Comma|Lead Force Pos Enum Comma|Trail Break Pos Enum Comma|Trail Force Pos Enum Comma"
-ValueDefault=ignore
-
-[Pos Class Comma]
-Category=5
-Description="<html>The position of the comma in the base class list if there is more than one<br/>line. Affects nl_class_init_args.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_class_comma=ignore|pos_class_comma=break|pos_class_comma=force|pos_class_comma=lead|pos_class_comma=trail|pos_class_comma=join|pos_class_comma=lead_break|pos_class_comma=lead_force|pos_class_comma=trail_break|pos_class_comma=trail_force
-ChoicesReadable="Ignore Pos Class Comma|Break Pos Class Comma|Force Pos Class Comma|Lead Pos Class Comma|Trail Pos Class Comma|Join Pos Class Comma|Lead Break Pos Class Comma|Lead Force Pos Class Comma|Trail Break Pos Class Comma|Trail Force Pos Class Comma"
-ValueDefault=ignore
-
-[Pos Constr Comma]
-Category=5
-Description="<html>The position of the comma in the constructor initialization list.<br/>Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_constr_comma=ignore|pos_constr_comma=break|pos_constr_comma=force|pos_constr_comma=lead|pos_constr_comma=trail|pos_constr_comma=join|pos_constr_comma=lead_break|pos_constr_comma=lead_force|pos_constr_comma=trail_break|pos_constr_comma=trail_force
-ChoicesReadable="Ignore Pos Constr Comma|Break Pos Constr Comma|Force Pos Constr Comma|Lead Pos Constr Comma|Trail Pos Constr Comma|Join Pos Constr Comma|Lead Break Pos Constr Comma|Lead Force Pos Constr Comma|Trail Break Pos Constr Comma|Trail Force Pos Constr Comma"
-ValueDefault=ignore
-
-[Pos Class Colon]
-Category=5
-Description="<html>The position of trailing/leading class colon, between class and base class<br/>list. Affects nl_class_colon.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_class_colon=ignore|pos_class_colon=break|pos_class_colon=force|pos_class_colon=lead|pos_class_colon=trail|pos_class_colon=join|pos_class_colon=lead_break|pos_class_colon=lead_force|pos_class_colon=trail_break|pos_class_colon=trail_force
-ChoicesReadable="Ignore Pos Class Colon|Break Pos Class Colon|Force Pos Class Colon|Lead Pos Class Colon|Trail Pos Class Colon|Join Pos Class Colon|Lead Break Pos Class Colon|Lead Force Pos Class Colon|Trail Break Pos Class Colon|Trail Force Pos Class Colon"
-ValueDefault=ignore
-
-[Pos Constr Colon]
-Category=5
-Description="<html>The position of colons between constructor and member initialization.<br/>Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_constr_colon=ignore|pos_constr_colon=break|pos_constr_colon=force|pos_constr_colon=lead|pos_constr_colon=trail|pos_constr_colon=join|pos_constr_colon=lead_break|pos_constr_colon=lead_force|pos_constr_colon=trail_break|pos_constr_colon=trail_force
-ChoicesReadable="Ignore Pos Constr Colon|Break Pos Constr Colon|Force Pos Constr Colon|Lead Pos Constr Colon|Trail Pos Constr Colon|Join Pos Constr Colon|Lead Break Pos Constr Colon|Lead Force Pos Constr Colon|Trail Break Pos Constr Colon|Trail Force Pos Constr Colon"
-ValueDefault=ignore
-
-[Pos Shift]
-Category=5
-Description="<html>The position of shift operators in wrapped expressions.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pos_shift=ignore|pos_shift=break|pos_shift=force|pos_shift=lead|pos_shift=trail|pos_shift=join|pos_shift=lead_break|pos_shift=lead_force|pos_shift=trail_break|pos_shift=trail_force
-ChoicesReadable="Ignore Pos Shift|Break Pos Shift|Force Pos Shift|Lead Pos Shift|Trail Pos Shift|Join Pos Shift|Lead Break Pos Shift|Lead Force Pos Shift|Trail Break Pos Shift|Trail Force Pos Shift"
-ValueDefault=ignore
-
-[Code Width]
-Category=6
-Description="<html>Try to limit code width to N columns.</html>"
-Enabled=false
-EditorType=numeric
-CallName="code_width="
-MinVal=0
-MaxVal=10000
-ValueDefault=0
-
-[Ls For Split Full]
-Category=6
-Description="<html>Whether to fully split long 'for' statements at semi-colons.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=ls_for_split_full=true|ls_for_split_full=false
-ValueDefault=false
-
-[Ls Func Split Full]
-Category=6
-Description="<html>Whether to fully split long function prototypes/calls at commas.<br/>The option ls_code_width has priority over the option ls_func_split_full.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=ls_func_split_full=true|ls_func_split_full=false
-ValueDefault=false
-
-[Ls Code Width]
-Category=6
-Description="<html>Whether to split lines as close to code_width as possible and ignore some<br/>groupings.<br/>The option ls_code_width has priority over the option ls_func_split_full.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=ls_code_width=true|ls_code_width=false
-ValueDefault=false
-
-[Align Keep Tabs]
-Category=7
-Description="<html>Whether to keep non-indenting tabs.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_keep_tabs=true|align_keep_tabs=false
-ValueDefault=false
-
-[Align With Tabs]
-Category=7
-Description="<html>Whether to use tabs for aligning.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_with_tabs=true|align_with_tabs=false
-ValueDefault=false
-
-[Align On Tabstop]
-Category=7
-Description="<html>Whether to bump out to the next tab when aligning.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_on_tabstop=true|align_on_tabstop=false
-ValueDefault=false
-
-[Align Number Right]
-Category=7
-Description="<html>Whether to right-align numbers.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_number_right=true|align_number_right=false
-ValueDefault=false
-
-[Align Keep Extra Space]
-Category=7
-Description="<html>Whether to keep whitespace not required for alignment.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_keep_extra_space=true|align_keep_extra_space=false
-ValueDefault=false
-
-[Align Func Params]
-Category=7
-Description="<html>Whether to align variable definitions in prototypes and functions.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_func_params=true|align_func_params=false
-ValueDefault=false
-
-[Align Func Params Span]
-Category=7
-Description="<html>The span for aligning parameter definitions in function on parameter name.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_params_span="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Func Params Thresh]
-Category=7
-Description="<html>The threshold for aligning function parameter definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_params_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Func Params Gap]
-Category=7
-Description="<html>The gap for aligning function parameter definitions.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_params_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Constr Value Span]
-Category=7
-Description="<html>The span for aligning constructor value.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_constr_value_span="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Constr Value Thresh]
-Category=7
-Description="<html>The threshold for aligning constructor value.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_constr_value_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Constr Value Gap]
-Category=7
-Description="<html>The gap for aligning constructor value.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_constr_value_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Same Func Call Params]
-Category=7
-Description="<html>Whether to align parameters in single-line functions that have the same<br/>name. The function names must already be aligned with each other.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_same_func_call_params=true|align_same_func_call_params=false
-ValueDefault=false
-
-[Align Same Func Call Params Span]
-Category=7
-Description="<html>The span for aligning function-call parameters for single line functions.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_same_func_call_params_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Same Func Call Params Thresh]
-Category=7
-Description="<html>The threshold for aligning function-call parameters for single line<br/>functions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_same_func_call_params_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Def Span]
-Category=7
-Description="<html>The span for aligning variable definitions.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_def_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Def Star Style]
-Category=7
-Description="<html>How to consider (or treat) the '*' in the alignment of variable definitions.<br/><br/>0: Part of the type 'void * foo;' (default)<br/>1: Part of the variable 'void *foo;'<br/>2: Dangling 'void *foo;'<br/>Dangling: the '*' will not be taken into account when aligning.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_def_star_style="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Var Def Amp Style]
-Category=7
-Description="<html>How to consider (or treat) the '&amp;' in the alignment of variable definitions.<br/><br/>0: Part of the type 'long &amp; foo;' (default)<br/>1: Part of the variable 'long &amp;foo;'<br/>2: Dangling 'long &amp;foo;'<br/>Dangling: the '&amp;' will not be taken into account when aligning.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_def_amp_style="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Var Def Thresh]
-Category=7
-Description="<html>The threshold for aligning variable definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_def_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Def Gap]
-Category=7
-Description="<html>The gap for aligning variable definitions.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_def_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Var Def Colon]
-Category=7
-Description="<html>Whether to align the colon in struct bit fields.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_var_def_colon=true|align_var_def_colon=false
-ValueDefault=false
-
-[Align Var Def Colon Gap]
-Category=7
-Description="<html>The gap for aligning the colon in struct bit fields.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_def_colon_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Var Def Attribute]
-Category=7
-Description="<html>Whether to align any attribute after the variable name.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_var_def_attribute=true|align_var_def_attribute=false
-ValueDefault=false
-
-[Align Var Def Inline]
-Category=7
-Description="<html>Whether to align inline struct/enum/union variable definitions.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_var_def_inline=true|align_var_def_inline=false
-ValueDefault=false
-
-[Align Assign Span]
-Category=7
-Description="<html>The span for aligning on '=' in assignments.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_assign_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Assign Func Proto Span]
-Category=7
-Description="<html>The span for aligning on '=' in function prototype modifier.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_assign_func_proto_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Assign Thresh]
-Category=7
-Description="<html>The threshold for aligning on '=' in assignments.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_assign_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Assign On Multi Var Defs]
-Category=7
-Description="<html>Whether to align on the left most assignment when multiple<br/>definitions are found on the same line.<br/>Depends on 'align_assign_span' and 'align_assign_thresh' settings.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_assign_on_multi_var_defs=true|align_assign_on_multi_var_defs=false
-ValueDefault=false
-
-[Align Braced Init List Span]
-Category=7
-Description="<html>The span for aligning on '{' in braced init list.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_braced_init_list_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Braced Init List Thresh]
-Category=7
-Description="<html>The threshold for aligning on '{' in braced init list.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_braced_init_list_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Assign Decl Func]
-Category=7
-Description="<html>How to apply align_assign_span to function declaration "assignments", i.e.<br/>'virtual void foo() = 0' or '~foo() = {default|delete}'.<br/><br/>0: Align with other assignments (default)<br/>1: Align with each other, ignoring regular assignments<br/>2: Don't align</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_assign_decl_func="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Enum Equ Span]
-Category=7
-Description="<html>The span for aligning on '=' in enums.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_enum_equ_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Enum Equ Thresh]
-Category=7
-Description="<html>The threshold for aligning on '=' in enums.<br/>Use a negative number for absolute thresholds.<br/><br/>0: no limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_enum_equ_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Class Span]
-Category=7
-Description="<html>The span for aligning class member definitions.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_class_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Class Thresh]
-Category=7
-Description="<html>The threshold for aligning class member definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_class_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Class Gap]
-Category=7
-Description="<html>The gap for aligning class member definitions.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_class_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Var Struct Span]
-Category=7
-Description="<html>The span for aligning struct/union member definitions.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_struct_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Struct Thresh]
-Category=7
-Description="<html>The threshold for aligning struct/union member definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_struct_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Var Struct Gap]
-Category=7
-Description="<html>The gap for aligning struct/union member definitions.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_var_struct_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Struct Init Span]
-Category=7
-Description="<html>The span for aligning struct initializer values.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_struct_init_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Typedef Span]
-Category=7
-Description="<html>The span for aligning single-line typedefs.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_typedef_span="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Typedef Gap]
-Category=7
-Description="<html>The minimum space between the type and the synonym of a typedef.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_typedef_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Typedef Func]
-Category=7
-Description="<html>How to align typedef'd functions with other typedefs.<br/><br/>0: Don't mix them at all (default)<br/>1: Align the open parenthesis with the types<br/>2: Align the function type name with the other type names</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_typedef_func="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Typedef Star Style]
-Category=7
-Description="<html>How to consider (or treat) the '*' in the alignment of typedefs.<br/><br/>0: Part of the typedef type, 'typedef int * pint;' (default)<br/>1: Part of type name: 'typedef int *pint;'<br/>2: Dangling: 'typedef int *pint;'<br/>Dangling: the '*' will not be taken into account when aligning.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_typedef_star_style="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Typedef Amp Style]
-Category=7
-Description="<html>How to consider (or treat) the '&amp;' in the alignment of typedefs.<br/><br/>0: Part of the typedef type, 'typedef int &amp; intref;' (default)<br/>1: Part of type name: 'typedef int &amp;intref;'<br/>2: Dangling: 'typedef int &amp;intref;'<br/>Dangling: the '&amp;' will not be taken into account when aligning.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_typedef_amp_style="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Right Cmt Span]
-Category=7
-Description="<html>The span for aligning comments that end lines.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_right_cmt_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Right Cmt Gap]
-Category=7
-Description="<html>Minimum number of columns between preceding text and a trailing comment in<br/>order for the comment to qualify for being aligned. Must be non-zero to have<br/>an effect.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_right_cmt_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Right Cmt Mix]
-Category=7
-Description="<html>If aligning comments, whether to mix with comments after '}' and #endif with<br/>less than three spaces before the comment.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_right_cmt_mix=true|align_right_cmt_mix=false
-ValueDefault=false
-
-[Align Right Cmt Same Level]
-Category=7
-Description="<html>Whether to only align trailing comments that are at the same brace level.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_right_cmt_same_level=true|align_right_cmt_same_level=false
-ValueDefault=false
-
-[Align Right Cmt At Col]
-Category=7
-Description="<html>Minimum column at which to align trailing comments. Comments which are<br/>aligned beyond this column, but which can be aligned in a lesser column,<br/>may be "pulled in".<br/><br/>0: Ignore (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_right_cmt_at_col="
-MinVal=0
-MaxVal=200
-ValueDefault=0
-
-[Align Func Proto Span]
-Category=7
-Description="<html>The span for aligning function prototypes.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_proto_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Func Proto Star Style]
-Category=7
-Description="<html>How to consider (or treat) the '*' in the alignment of function prototypes.<br/><br/>0: Part of the type 'void * foo();' (default)<br/>1: Part of the function 'void *foo();'<br/>2: Dangling 'void *foo();'<br/>Dangling: the '*' will not be taken into account when aligning.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_proto_star_style="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Func Proto Amp Style]
-Category=7
-Description="<html>How to consider (or treat) the '&amp;' in the alignment of function prototypes.<br/><br/>0: Part of the type 'long &amp; foo();' (default)<br/>1: Part of the function 'long &amp;foo();'<br/>2: Dangling 'long &amp;foo();'<br/>Dangling: the '&amp;' will not be taken into account when aligning.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_proto_amp_style="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Align Func Proto Thresh]
-Category=7
-Description="<html>The threshold for aligning function prototypes.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_proto_thresh="
-MinVal=-1000
-MaxVal=5000
-ValueDefault=0
-
-[Align Func Proto Gap]
-Category=7
-Description="<html>Minimum gap between the return type and the function name.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_func_proto_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align On Operator]
-Category=7
-Description="<html>Whether to align function prototypes on the 'operator' keyword instead of<br/>what follows.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_on_operator=true|align_on_operator=false
-ValueDefault=false
-
-[Align Mix Var Proto]
-Category=7
-Description="<html>Whether to mix aligning prototype and variable declarations. If true,<br/>align_var_def_XXX options are used instead of align_func_proto_XXX options.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_mix_var_proto=true|align_mix_var_proto=false
-ValueDefault=false
-
-[Align Single Line Func]
-Category=7
-Description="<html>Whether to align single-line functions with function prototypes.<br/>Uses align_func_proto_span.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_single_line_func=true|align_single_line_func=false
-ValueDefault=false
-
-[Align Single Line Brace]
-Category=7
-Description="<html>Whether to align the open brace of single-line functions.<br/>Requires align_single_line_func=true. Uses align_func_proto_span.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_single_line_brace=true|align_single_line_brace=false
-ValueDefault=false
-
-[Align Single Line Brace Gap]
-Category=7
-Description="<html>Gap for align_single_line_brace.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_single_line_brace_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Oc Msg Spec Span]
-Category=7
-Description="<html>(OC) The span for aligning Objective-C message specifications.<br/><br/>0: Don't align (default).</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_oc_msg_spec_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Nl Cont]
-Category=7
-Description="<html>Whether to align macros wrapped with a backslash and a newline. This will<br/>not work right if the macro contains a multi-line comment.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_nl_cont=true|align_nl_cont=false
-ValueDefault=false
-
-[Align Pp Define Together]
-Category=7
-Description="<html>Whether to align macro functions and variables together.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_pp_define_together=true|align_pp_define_together=false
-ValueDefault=false
-
-[Align Pp Define Span]
-Category=7
-Description="<html>The span for aligning on '#define' bodies.<br/><br/>=0: Don't align (default)<br/>&gt;0: Number of lines (including comments) between blocks</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_pp_define_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Pp Define Gap]
-Category=7
-Description="<html>The minimum space between label and value of a preprocessor define.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_pp_define_gap="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Align Left Shift]
-Category=7
-Description="<html>Whether to align lines that start with '&lt;&lt;' with previous '&lt;&lt;'.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_left_shift=true|align_left_shift=false
-ValueDefault=true
-
-[Align Eigen Comma Init]
-Category=7
-Description="<html>Whether to align comma-separated statements following '&lt;&lt;' (as used to<br/>initialize Eigen matrices).</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_eigen_comma_init=true|align_eigen_comma_init=false
-ValueDefault=false
-
-[Align Asm Colon]
-Category=7
-Description="<html>Whether to align text after 'asm volatile ()' colons.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_asm_colon=true|align_asm_colon=false
-ValueDefault=false
-
-[Align Oc Msg Colon Span]
-Category=7
-Description="<html>(OC) Span for aligning parameters in an Objective-C message call<br/>on the ':'.<br/><br/>0: Don't align.</html>"
-Enabled=false
-EditorType=numeric
-CallName="align_oc_msg_colon_span="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Align Oc Msg Colon First]
-Category=7
-Description="<html>(OC) Whether to always align with the first parameter, even if it is too<br/>short.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_oc_msg_colon_first=true|align_oc_msg_colon_first=false
-ValueDefault=false
-
-[Align Oc Decl Colon]
-Category=7
-Description="<html>(OC) Whether to align parameters in an Objective-C '+' or '-' declaration<br/>on the ':'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_oc_decl_colon=true|align_oc_decl_colon=false
-ValueDefault=false
-
-[Align Oc Msg Colon Xcode Like]
-Category=7
-Description="<html>(OC) Whether to not align parameters in an Objectve-C message call if first<br/>colon is not on next line of the message call (the same way Xcode does<br/>alignment)</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=align_oc_msg_colon_xcode_like=true|align_oc_msg_colon_xcode_like=false
-ValueDefault=false
-
-[Cmt Width]
-Category=8
-Description="<html>Try to wrap comments at N columns.</html>"
-Enabled=false
-EditorType=numeric
-CallName="cmt_width="
-MinVal=0
-MaxVal=256
-ValueDefault=0
-
-[Cmt Reflow Mode]
-Category=8
-Description="<html>How to reflow comments.<br/><br/>0: No reflowing (apart from the line wrapping due to cmt_width) (default)<br/>1: No touching at all<br/>2: Full reflow (enable cmt_indent_multi for indent with line wrapping due to cmt_width)</html>"
-Enabled=false
-EditorType=numeric
-CallName="cmt_reflow_mode="
-MinVal=0
-MaxVal=2
-ValueDefault=0
-
-[Cmt Reflow Fold Regex File]
-Category=8
-Description="<html>Path to a file that contains regular expressions describing patterns for<br/>which the end of one line and the beginning of the next will be folded into<br/>the same sentence or paragraph during full comment reflow. The regular<br/>expressions are described using ECMAScript syntax. The syntax for this<br/>specification is as follows, where "..." indicates the custom regular<br/>expression and "n" indicates the nth end_of_prev_line_regex and<br/>beg_of_next_line_regex regular expression pair:<br/><br/>end_of_prev_line_regex[1] = "...$"<br/>beg_of_next_line_regex[1] = "^..."<br/>end_of_prev_line_regex[2] = "...$"<br/>beg_of_next_line_regex[2] = "^..."<br/> .<br/> .<br/> .<br/>end_of_prev_line_regex[n] = "...$"<br/>beg_of_next_line_regex[n] = "^..."<br/><br/>Note that use of this option overrides the default reflow fold regular<br/>expressions, which are internally defined as follows:<br/><br/>end_of_prev_line_regex[1] = "[\w,\]\)]$"<br/>beg_of_next_line_regex[1] = "^[\w,\[\(]"<br/>end_of_prev_line_regex[2] = "\.$"<br/>beg_of_next_line_regex[2] = "^[A-Z]"</html>"
-Enabled=false
-CallName=cmt_reflow_fold_regex_file=
-EditorType=string
-ValueDefault=
-
-[Cmt Reflow Indent To Paragraph Start]
-Category=8
-Description="<html>Whether to indent wrapped lines to the start of the encompassing paragraph<br/>during full comment reflow (cmt_reflow_mode = 2). Overrides the value<br/>specified by cmt_sp_after_star_cont.<br/><br/>Note that cmt_align_doxygen_javadoc_tags overrides this option for<br/>paragraphs associated with javadoc tags</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_reflow_indent_to_paragraph_start=true|cmt_reflow_indent_to_paragraph_start=false
-ValueDefault=false
-
-[Cmt Convert Tab To Spaces]
-Category=8
-Description="<html>Whether to convert all tabs to spaces in comments. If false, tabs in<br/>comments are left alone, unless used for indenting.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_convert_tab_to_spaces=true|cmt_convert_tab_to_spaces=false
-ValueDefault=false
-
-[Cmt Indent Multi]
-Category=8
-Description="<html>Whether to apply changes to multi-line comments, including cmt_width,<br/>keyword substitution and leading chars.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_indent_multi=true|cmt_indent_multi=false
-ValueDefault=true
-
-[Cmt Align Doxygen Javadoc Tags]
-Category=8
-Description="<html>Whether to align doxygen javadoc-style tags ('@param', '@return', etc.)<br/>and corresponding fields such that groups of consecutive block tags,<br/>parameter names, and descriptions align with one another. Overrides that<br/>which is specified by the cmt_sp_after_star_cont. If cmt_width &gt; 0, it may<br/>be necessary to enable cmt_indent_multi and set cmt_reflow_mode = 2<br/>in order to achieve the desired alignment for line-wrapping.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_align_doxygen_javadoc_tags=true|cmt_align_doxygen_javadoc_tags=false
-ValueDefault=false
-
-[Cmt Sp Before Doxygen Javadoc Tags]
-Category=8
-Description="<html>The number of spaces to insert after the star and before doxygen<br/>javadoc-style tags (@param, @return, etc). Requires enabling<br/>cmt_align_doxygen_javadoc_tags. Overrides that which is specified by the<br/>cmt_sp_after_star_cont.<br/><br/>Default: 1</html>"
-Enabled=false
-EditorType=numeric
-CallName="cmt_sp_before_doxygen_javadoc_tags="
-MinVal=0
-MaxVal=16
-ValueDefault=1
-
-[Cmt Trailing Single Line C To Cpp]
-Category=8
-Description="<html>Whether to change trailing, single-line c-comments into cpp-comments.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_trailing_single_line_c_to_cpp=true|cmt_trailing_single_line_c_to_cpp=false
-ValueDefault=false
-
-[Cmt C Group]
-Category=8
-Description="<html>Whether to group c-comments that look like they are in a block.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_c_group=true|cmt_c_group=false
-ValueDefault=false
-
-[Cmt C Nl Start]
-Category=8
-Description="<html>Whether to put an empty '/*' on the first line of the combined c-comment.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_c_nl_start=true|cmt_c_nl_start=false
-ValueDefault=false
-
-[Cmt C Nl End]
-Category=8
-Description="<html>Whether to add a newline before the closing '*/' of the combined c-comment.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_c_nl_end=true|cmt_c_nl_end=false
-ValueDefault=false
-
-[Cmt Cpp To C]
-Category=8
-Description="<html>Whether to change cpp-comments into c-comments.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_cpp_to_c=true|cmt_cpp_to_c=false
-ValueDefault=false
-
-[Cmt Cpp Group]
-Category=8
-Description="<html>Whether to group cpp-comments that look like they are in a block. Only<br/>meaningful if cmt_cpp_to_c=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_cpp_group=true|cmt_cpp_group=false
-ValueDefault=false
-
-[Cmt Cpp Nl Start]
-Category=8
-Description="<html>Whether to put an empty '/*' on the first line of the combined cpp-comment<br/>when converting to a c-comment.<br/><br/>Requires cmt_cpp_to_c=true and cmt_cpp_group=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_cpp_nl_start=true|cmt_cpp_nl_start=false
-ValueDefault=false
-
-[Cmt Cpp Nl End]
-Category=8
-Description="<html>Whether to add a newline before the closing '*/' of the combined cpp-comment<br/>when converting to a c-comment.<br/><br/>Requires cmt_cpp_to_c=true and cmt_cpp_group=true.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_cpp_nl_end=true|cmt_cpp_nl_end=false
-ValueDefault=false
-
-[Cmt Star Cont]
-Category=8
-Description="<html>Whether to put a star on subsequent comment lines.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_star_cont=true|cmt_star_cont=false
-ValueDefault=false
-
-[Cmt Sp Before Star Cont]
-Category=8
-Description="<html>The number of spaces to insert at the start of subsequent comment lines.</html>"
-Enabled=false
-EditorType=numeric
-CallName="cmt_sp_before_star_cont="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Cmt Sp After Star Cont]
-Category=8
-Description="<html>The number of spaces to insert after the star on subsequent comment lines.</html>"
-Enabled=false
-EditorType=numeric
-CallName="cmt_sp_after_star_cont="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Cmt Multi Check Last]
-Category=8
-Description="<html>For multi-line comments with a '*' lead, remove leading spaces if the first<br/>and last lines of the comment are the same length.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_multi_check_last=true|cmt_multi_check_last=false
-ValueDefault=true
-
-[Cmt Multi First Len Minimum]
-Category=8
-Description="<html>For multi-line comments with a '*' lead, remove leading spaces if the first<br/>and last lines of the comment are the same length AND if the length is<br/>bigger as the first_len minimum.<br/><br/>Default: 4</html>"
-Enabled=false
-EditorType=numeric
-CallName="cmt_multi_first_len_minimum="
-MinVal=1
-MaxVal=20
-ValueDefault=4
-
-[Cmt Insert File Header]
-Category=8
-Description="<html>Path to a file that contains text to insert at the beginning of a file if<br/>the file doesn't start with a C/C++ comment. If the inserted text contains<br/>'$(filename)', that will be replaced with the current file's name.</html>"
-Enabled=false
-CallName=cmt_insert_file_header=
-EditorType=string
-ValueDefault=
-
-[Cmt Insert File Footer]
-Category=8
-Description="<html>Path to a file that contains text to insert at the end of a file if the<br/>file doesn't end with a C/C++ comment. If the inserted text contains<br/>'$(filename)', that will be replaced with the current file's name.</html>"
-Enabled=false
-CallName=cmt_insert_file_footer=
-EditorType=string
-ValueDefault=
-
-[Cmt Insert Func Header]
-Category=8
-Description="<html>Path to a file that contains text to insert before a function definition if<br/>the function isn't preceded by a C/C++ comment. If the inserted text<br/>contains '$(function)', '$(javaparam)' or '$(fclass)', these will be<br/>replaced with, respectively, the name of the function, the javadoc '@param'<br/>and '@return' stuff, or the name of the class to which the member function<br/>belongs.</html>"
-Enabled=false
-CallName=cmt_insert_func_header=
-EditorType=string
-ValueDefault=
-
-[Cmt Insert Class Header]
-Category=8
-Description="<html>Path to a file that contains text to insert before a class if the class<br/>isn't preceded by a C/C++ comment. If the inserted text contains '$(class)',<br/>that will be replaced with the class name.</html>"
-Enabled=false
-CallName=cmt_insert_class_header=
-EditorType=string
-ValueDefault=
-
-[Cmt Insert Oc Msg Header]
-Category=8
-Description="<html>Path to a file that contains text to insert before an Objective-C message<br/>specification, if the method isn't preceded by a C/C++ comment. If the<br/>inserted text contains '$(message)' or '$(javaparam)', these will be<br/>replaced with, respectively, the name of the function, or the javadoc<br/>'@param' and '@return' stuff.</html>"
-Enabled=false
-CallName=cmt_insert_oc_msg_header=
-EditorType=string
-ValueDefault=
-
-[Cmt Insert Before Preproc]
-Category=8
-Description="<html>Whether a comment should be inserted if a preprocessor is encountered when<br/>stepping backwards from a function name.<br/><br/>Applies to cmt_insert_oc_msg_header, cmt_insert_func_header and<br/>cmt_insert_class_header.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_insert_before_preproc=true|cmt_insert_before_preproc=false
-ValueDefault=false
-
-[Cmt Insert Before Inlines]
-Category=8
-Description="<html>Whether a comment should be inserted if a function is declared inline to a<br/>class definition.<br/><br/>Applies to cmt_insert_func_header.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_insert_before_inlines=true|cmt_insert_before_inlines=false
-ValueDefault=true
-
-[Cmt Insert Before Ctor Dtor]
-Category=8
-Description="<html>Whether a comment should be inserted if the function is a class constructor<br/>or destructor.<br/><br/>Applies to cmt_insert_func_header.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=cmt_insert_before_ctor_dtor=true|cmt_insert_before_ctor_dtor=false
-ValueDefault=false
-
-[Mod Full Brace Do]
-Category=9
-Description="<html>Add or remove braces on a single-line 'do' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_full_brace_do=ignore|mod_full_brace_do=add|mod_full_brace_do=remove|mod_full_brace_do=force|mod_full_brace_do=not_defined
-ChoicesReadable="Ignore Mod Full Brace Do|Add Mod Full Brace Do|Remove Mod Full Brace Do|Force Mod Full Brace Do"
-ValueDefault=ignore
-
-[Mod Full Brace For]
-Category=9
-Description="<html>Add or remove braces on a single-line 'for' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_full_brace_for=ignore|mod_full_brace_for=add|mod_full_brace_for=remove|mod_full_brace_for=force|mod_full_brace_for=not_defined
-ChoicesReadable="Ignore Mod Full Brace For|Add Mod Full Brace For|Remove Mod Full Brace For|Force Mod Full Brace For"
-ValueDefault=ignore
-
-[Mod Full Brace Function]
-Category=9
-Description="<html>(Pawn) Add or remove braces on a single-line function definition.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_full_brace_function=ignore|mod_full_brace_function=add|mod_full_brace_function=remove|mod_full_brace_function=force|mod_full_brace_function=not_defined
-ChoicesReadable="Ignore Mod Full Brace Function|Add Mod Full Brace Function|Remove Mod Full Brace Function|Force Mod Full Brace Function"
-ValueDefault=ignore
-
-[Mod Full Brace If]
-Category=9
-Description="<html>Add or remove braces on a single-line 'if' statement. Braces will not be<br/>removed if the braced statement contains an 'else'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_full_brace_if=ignore|mod_full_brace_if=add|mod_full_brace_if=remove|mod_full_brace_if=force|mod_full_brace_if=not_defined
-ChoicesReadable="Ignore Mod Full Brace If|Add Mod Full Brace If|Remove Mod Full Brace If|Force Mod Full Brace If"
-ValueDefault=ignore
-
-[Mod Full Brace If Chain]
-Category=9
-Description="<html>Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either<br/>have, or do not have, braces. Overrides mod_full_brace_if.<br/><br/>0: Don't override mod_full_brace_if<br/>1: Add braces to all blocks if any block needs braces and remove braces if<br/> they can be removed from all blocks<br/>2: Add braces to all blocks if any block already has braces, regardless of<br/> whether it needs them<br/>3: Add braces to all blocks if any block needs braces and remove braces if<br/> they can be removed from all blocks, except if all blocks have braces<br/> despite none needing them</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_full_brace_if_chain="
-MinVal=0
-MaxVal=3
-ValueDefault=0
-
-[Mod Full Brace If Chain Only]
-Category=9
-Description="<html>Whether to add braces to all blocks of an 'if'/'else if'/'else' chain.<br/>If true, mod_full_brace_if_chain will only remove braces from an 'if' that<br/>does not have an 'else if' or 'else'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_full_brace_if_chain_only=true|mod_full_brace_if_chain_only=false
-ValueDefault=false
-
-[Mod Full Brace While]
-Category=9
-Description="<html>Add or remove braces on single-line 'while' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_full_brace_while=ignore|mod_full_brace_while=add|mod_full_brace_while=remove|mod_full_brace_while=force|mod_full_brace_while=not_defined
-ChoicesReadable="Ignore Mod Full Brace While|Add Mod Full Brace While|Remove Mod Full Brace While|Force Mod Full Brace While"
-ValueDefault=ignore
-
-[Mod Full Brace Using]
-Category=9
-Description="<html>Add or remove braces on single-line 'using ()' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_full_brace_using=ignore|mod_full_brace_using=add|mod_full_brace_using=remove|mod_full_brace_using=force|mod_full_brace_using=not_defined
-ChoicesReadable="Ignore Mod Full Brace Using|Add Mod Full Brace Using|Remove Mod Full Brace Using|Force Mod Full Brace Using"
-ValueDefault=ignore
-
-[Mod Full Brace Nl]
-Category=9
-Description="<html>Don't remove braces around statements that span N newlines</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_full_brace_nl="
-MinVal=0
-MaxVal=5000
-ValueDefault=0
-
-[Mod Full Brace Nl Block Rem Mlcond]
-Category=9
-Description="<html>Whether to prevent removal of braces from 'if'/'for'/'while'/etc. blocks<br/>which span multiple lines.<br/><br/>Affects:<br/> mod_full_brace_for<br/> mod_full_brace_if<br/> mod_full_brace_if_chain<br/> mod_full_brace_if_chain_only<br/> mod_full_brace_while<br/> mod_full_brace_using<br/><br/>Does not affect:<br/> mod_full_brace_do<br/> mod_full_brace_function</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_full_brace_nl_block_rem_mlcond=true|mod_full_brace_nl_block_rem_mlcond=false
-ValueDefault=false
-
-[Mod Paren On Return]
-Category=9
-Description="<html>Add or remove unnecessary parentheses on 'return' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_paren_on_return=ignore|mod_paren_on_return=add|mod_paren_on_return=remove|mod_paren_on_return=force|mod_paren_on_return=not_defined
-ChoicesReadable="Ignore Mod Paren On Return|Add Mod Paren On Return|Remove Mod Paren On Return|Force Mod Paren On Return"
-ValueDefault=ignore
-
-[Mod Paren On Throw]
-Category=9
-Description="<html>Add or remove unnecessary parentheses on 'throw' statement.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_paren_on_throw=ignore|mod_paren_on_throw=add|mod_paren_on_throw=remove|mod_paren_on_throw=force|mod_paren_on_throw=not_defined
-ChoicesReadable="Ignore Mod Paren On Throw|Add Mod Paren On Throw|Remove Mod Paren On Throw|Force Mod Paren On Throw"
-ValueDefault=ignore
-
-[Mod Pawn Semicolon]
-Category=9
-Description="<html>(Pawn) Whether to change optional semicolons to real semicolons.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_pawn_semicolon=true|mod_pawn_semicolon=false
-ValueDefault=false
-
-[Mod Full Paren If Bool]
-Category=9
-Description="<html>Whether to fully parenthesize Boolean expressions in 'while' and 'if'<br/>statement, as in 'if (a &amp;&amp; b &gt; c)' =&gt; 'if (a &amp;&amp; (b &gt; c))'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_full_paren_if_bool=true|mod_full_paren_if_bool=false
-ValueDefault=false
-
-[Mod Full Paren Assign Bool]
-Category=9
-Description="<html>Whether to fully parenthesize Boolean expressions after '='<br/>statement, as in 'x = a &amp;&amp; b &gt; c;' =&gt; 'x = (a &amp;&amp; (b &gt; c));'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_full_paren_assign_bool=true|mod_full_paren_assign_bool=false
-ValueDefault=false
-
-[Mod Full Paren Return Bool]
-Category=9
-Description="<html>Whether to fully parenthesize Boolean expressions after '='<br/>statement, as in 'return a &amp;&amp; b &gt; c;' =&gt; 'return (a &amp;&amp; (b &gt; c));'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_full_paren_return_bool=true|mod_full_paren_return_bool=false
-ValueDefault=false
-
-[Mod Remove Extra Semicolon]
-Category=9
-Description="<html>Whether to remove superfluous semicolons.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_remove_extra_semicolon=true|mod_remove_extra_semicolon=false
-ValueDefault=false
-
-[Mod Remove Duplicate Include]
-Category=9
-Description="<html>Whether to remove duplicate include.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_remove_duplicate_include=true|mod_remove_duplicate_include=false
-ValueDefault=false
-
-[Mod Add Long Function Closebrace Comment]
-Category=9
-Description="<html>If a function body exceeds the specified number of newlines and doesn't have<br/>a comment after the close brace, a comment will be added.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_add_long_function_closebrace_comment="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[Mod Add Long Namespace Closebrace Comment]
-Category=9
-Description="<html>If a namespace body exceeds the specified number of newlines and doesn't<br/>have a comment after the close brace, a comment will be added.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_add_long_namespace_closebrace_comment="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[Mod Add Long Class Closebrace Comment]
-Category=9
-Description="<html>If a class body exceeds the specified number of newlines and doesn't have a<br/>comment after the close brace, a comment will be added.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_add_long_class_closebrace_comment="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[Mod Add Long Switch Closebrace Comment]
-Category=9
-Description="<html>If a switch body exceeds the specified number of newlines and doesn't have a<br/>comment after the close brace, a comment will be added.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_add_long_switch_closebrace_comment="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[Mod Add Long Ifdef Endif Comment]
-Category=9
-Description="<html>If an #ifdef body exceeds the specified number of newlines and doesn't have<br/>a comment after the #endif, a comment will be added.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_add_long_ifdef_endif_comment="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[Mod Add Long Ifdef Else Comment]
-Category=9
-Description="<html>If an #ifdef or #else body exceeds the specified number of newlines and<br/>doesn't have a comment after the #else, a comment will be added.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_add_long_ifdef_else_comment="
-MinVal=0
-MaxVal=255
-ValueDefault=0
-
-[Mod Sort Case Sensitive]
-Category=9
-Description="<html>Whether to take care of the case by the mod_sort_xx options.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_case_sensitive=true|mod_sort_case_sensitive=false
-ValueDefault=false
-
-[Mod Sort Import]
-Category=9
-Description="<html>Whether to sort consecutive single-line 'import' statements.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_import=true|mod_sort_import=false
-ValueDefault=false
-
-[Mod Sort Using]
-Category=9
-Description="<html>(C#) Whether to sort consecutive single-line 'using' statements.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_using=true|mod_sort_using=false
-ValueDefault=false
-
-[Mod Sort Include]
-Category=9
-Description="<html>Whether to sort consecutive single-line '#include' statements (C/C++) and<br/>'#import' statements (Objective-C). Be aware that this has the potential to<br/>break your code if your includes/imports have ordering dependencies.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_include=true|mod_sort_include=false
-ValueDefault=false
-
-[Mod Sort Incl Import Prioritize Filename]
-Category=9
-Description="<html>Whether to prioritize '#include' and '#import' statements that contain<br/>filename without extension when sorting is enabled.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_incl_import_prioritize_filename=true|mod_sort_incl_import_prioritize_filename=false
-ValueDefault=false
-
-[Mod Sort Incl Import Prioritize Extensionless]
-Category=9
-Description="<html>Whether to prioritize '#include' and '#import' statements that does not<br/>contain extensions when sorting is enabled.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_incl_import_prioritize_extensionless=true|mod_sort_incl_import_prioritize_extensionless=false
-ValueDefault=false
-
-[Mod Sort Incl Import Prioritize Angle Over Quotes]
-Category=9
-Description="<html>Whether to prioritize '#include' and '#import' statements that contain<br/>angle over quotes when sorting is enabled.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_incl_import_prioritize_angle_over_quotes=true|mod_sort_incl_import_prioritize_angle_over_quotes=false
-ValueDefault=false
-
-[Mod Sort Incl Import Ignore Extension]
-Category=9
-Description="<html>Whether to ignore file extension in '#include' and '#import' statements<br/>for sorting comparison.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_incl_import_ignore_extension=true|mod_sort_incl_import_ignore_extension=false
-ValueDefault=false
-
-[Mod Sort Incl Import Grouping Enabled]
-Category=9
-Description="<html>Whether to group '#include' and '#import' statements when sorting is enabled.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_incl_import_grouping_enabled=true|mod_sort_incl_import_grouping_enabled=false
-ValueDefault=false
-
-[Mod Move Case Break]
-Category=9
-Description="<html>Whether to move a 'break' that appears after a fully braced 'case' before<br/>the close brace, as in 'case X: { ... } break;' =&gt; 'case X: { ... break; }'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_move_case_break=true|mod_move_case_break=false
-ValueDefault=false
-
-[Mod Move Case Return]
-Category=9
-Description="<html>Whether to move a 'return' that appears after a fully braced 'case' before<br/>the close brace, as in 'case X: { ... } return;' =&gt; 'case X: { ... return; }'.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_move_case_return=true|mod_move_case_return=false
-ValueDefault=false
-
-[Mod Case Brace]
-Category=9
-Description="<html>Add or remove braces around a fully braced case statement. Will only remove<br/>braces if there are no variable declarations in the block.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_case_brace=ignore|mod_case_brace=add|mod_case_brace=remove|mod_case_brace=force|mod_case_brace=not_defined
-ChoicesReadable="Ignore Mod Case Brace|Add Mod Case Brace|Remove Mod Case Brace|Force Mod Case Brace"
-ValueDefault=ignore
-
-[Mod Remove Empty Return]
-Category=9
-Description="<html>Whether to remove a void 'return;' that appears as the last statement in a<br/>function.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_remove_empty_return=true|mod_remove_empty_return=false
-ValueDefault=false
-
-[Mod Enum Last Comma]
-Category=9
-Description="<html>Add or remove the comma after the last value of an enumeration.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_enum_last_comma=ignore|mod_enum_last_comma=add|mod_enum_last_comma=remove|mod_enum_last_comma=force|mod_enum_last_comma=not_defined
-ChoicesReadable="Ignore Mod Enum Last Comma|Add Mod Enum Last Comma|Remove Mod Enum Last Comma|Force Mod Enum Last Comma"
-ValueDefault=ignore
-
-[Mod Infinite Loop]
-Category=9
-Description="<html>Syntax to use for infinite loops.<br/><br/>0: Leave syntax alone (default)<br/>1: Rewrite as `for(;;)`<br/>2: Rewrite as `while(true)`<br/>3: Rewrite as `do`...`while(true);`<br/>4: Rewrite as `while`<br/>5: Rewrite as `do`...`while;`<br/><br/>Infinite loops that do not already match one of these syntaxes are ignored.<br/>Other options that affect loop formatting will be applied after transforming<br/>the syntax.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_infinite_loop="
-MinVal=0
-MaxVal=5
-ValueDefault=0
-
-[Mod Int Short]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'int short'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_int_short=ignore|mod_int_short=add|mod_int_short=remove|mod_int_short=force|mod_int_short=not_defined
-ChoicesReadable="Ignore Mod Int Short|Add Mod Int Short|Remove Mod Int Short|Force Mod Int Short"
-ValueDefault=ignore
-
-[Mod Short Int]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'short int'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_short_int=ignore|mod_short_int=add|mod_short_int=remove|mod_short_int=force|mod_short_int=not_defined
-ChoicesReadable="Ignore Mod Short Int|Add Mod Short Int|Remove Mod Short Int|Force Mod Short Int"
-ValueDefault=ignore
-
-[Mod Int Long]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'int long'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_int_long=ignore|mod_int_long=add|mod_int_long=remove|mod_int_long=force|mod_int_long=not_defined
-ChoicesReadable="Ignore Mod Int Long|Add Mod Int Long|Remove Mod Int Long|Force Mod Int Long"
-ValueDefault=ignore
-
-[Mod Long Int]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'long int'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_long_int=ignore|mod_long_int=add|mod_long_int=remove|mod_long_int=force|mod_long_int=not_defined
-ChoicesReadable="Ignore Mod Long Int|Add Mod Long Int|Remove Mod Long Int|Force Mod Long Int"
-ValueDefault=ignore
-
-[Mod Int Signed]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'int signed'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_int_signed=ignore|mod_int_signed=add|mod_int_signed=remove|mod_int_signed=force|mod_int_signed=not_defined
-ChoicesReadable="Ignore Mod Int Signed|Add Mod Int Signed|Remove Mod Int Signed|Force Mod Int Signed"
-ValueDefault=ignore
-
-[Mod Signed Int]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'signed int'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_signed_int=ignore|mod_signed_int=add|mod_signed_int=remove|mod_signed_int=force|mod_signed_int=not_defined
-ChoicesReadable="Ignore Mod Signed Int|Add Mod Signed Int|Remove Mod Signed Int|Force Mod Signed Int"
-ValueDefault=ignore
-
-[Mod Int Unsigned]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'int unsigned'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_int_unsigned=ignore|mod_int_unsigned=add|mod_int_unsigned=remove|mod_int_unsigned=force|mod_int_unsigned=not_defined
-ChoicesReadable="Ignore Mod Int Unsigned|Add Mod Int Unsigned|Remove Mod Int Unsigned|Force Mod Int Unsigned"
-ValueDefault=ignore
-
-[Mod Unsigned Int]
-Category=9
-Description="<html>Add or remove the 'int' keyword in 'unsigned int'.</html>"
-Enabled=false
-EditorType=multiple
-Choices=mod_unsigned_int=ignore|mod_unsigned_int=add|mod_unsigned_int=remove|mod_unsigned_int=force|mod_unsigned_int=not_defined
-ChoicesReadable="Ignore Mod Unsigned Int|Add Mod Unsigned Int|Remove Mod Unsigned Int|Force Mod Unsigned Int"
-ValueDefault=ignore
-
-[Mod Int Prefer Int On Left]
-Category=9
-Description="<html>If there is a situation where mod_int_* and mod_*_int would result in<br/>multiple int keywords, whether to keep the rightmost int (the default) or the<br/>leftmost int.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_int_prefer_int_on_left=true|mod_int_prefer_int_on_left=false
-ValueDefault=false
-
-[Mod Sort Oc Properties]
-Category=9
-Description="<html>(OC) Whether to organize the properties. If true, properties will be<br/>rearranged according to the mod_sort_oc_property_*_weight factors.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=mod_sort_oc_properties=true|mod_sort_oc_properties=false
-ValueDefault=false
-
-[Mod Sort Oc Property Class Weight]
-Category=9
-Description="<html>(OC) Weight of a class property modifier.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_sort_oc_property_class_weight="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Mod Sort Oc Property Thread Safe Weight]
-Category=9
-Description="<html>(OC) Weight of 'atomic' and 'nonatomic'.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_sort_oc_property_thread_safe_weight="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Mod Sort Oc Property Readwrite Weight]
-Category=9
-Description="<html>(OC) Weight of 'readwrite' when organizing properties.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_sort_oc_property_readwrite_weight="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Mod Sort Oc Property Reference Weight]
-Category=9
-Description="<html>(OC) Weight of a reference type specifier ('retain', 'copy', 'assign',<br/>'weak', 'strong') when organizing properties.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_sort_oc_property_reference_weight="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Mod Sort Oc Property Getter Weight]
-Category=9
-Description="<html>(OC) Weight of getter type ('getter=') when organizing properties.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_sort_oc_property_getter_weight="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Mod Sort Oc Property Setter Weight]
-Category=9
-Description="<html>(OC) Weight of setter type ('setter=') when organizing properties.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_sort_oc_property_setter_weight="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Mod Sort Oc Property Nullability Weight]
-Category=9
-Description="<html>(OC) Weight of nullability type ('nullable', 'nonnull', 'null_unspecified',<br/>'null_resettable') when organizing properties.</html>"
-Enabled=false
-EditorType=numeric
-CallName="mod_sort_oc_property_nullability_weight="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Pp Indent With Tabs]
-Category=10
-Description="<html>How to use tabs when indenting preprocessor code.<br/><br/>-1: Use 'indent_with_tabs' setting (default)<br/> 0: Spaces only<br/> 1: Indent with tabs to brace level, align with spaces<br/> 2: Indent and align with tabs, using spaces when not on a tabstop<br/><br/>Default: -1</html>"
-Enabled=false
-EditorType=numeric
-CallName="pp_indent_with_tabs="
-MinVal=-1
-MaxVal=2
-ValueDefault=-1
-
-[Pp Indent]
-Category=10
-Description="<html>Add or remove indentation of preprocessor directives inside #if blocks<br/>at brace level 0 (file-level).</html>"
-Enabled=false
-EditorType=multiple
-Choices=pp_indent=ignore|pp_indent=add|pp_indent=remove|pp_indent=force|pp_indent=not_defined
-ChoicesReadable="Ignore Pp Indent|Add Pp Indent|Remove Pp Indent|Force Pp Indent"
-ValueDefault=ignore
-
-[Pp Indent At Level]
-Category=10
-Description="<html>Whether to indent #if/#else/#endif at the brace level. If false, these are<br/>indented from column 1.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_indent_at_level=true|pp_indent_at_level=false
-ValueDefault=false
-
-[Pp Indent At Level0]
-Category=10
-Description="<html>Whether to indent #if/#else/#endif at the parenthesis level if the brace<br/>level is 0. If false, these are indented from column 1.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_indent_at_level0=true|pp_indent_at_level0=false
-ValueDefault=false
-
-[Pp Indent Count]
-Category=10
-Description="<html>Specifies the number of columns to indent preprocessors per level<br/>at brace level 0 (file-level). If pp_indent_at_level=false, also specifies<br/>the number of columns to indent preprocessors per level<br/>at brace level &gt; 0 (function-level).<br/><br/>Default: 1</html>"
-Enabled=false
-EditorType=numeric
-CallName="pp_indent_count="
-MinVal=0
-MaxVal=16
-ValueDefault=1
-
-[Pp Space After]
-Category=10
-Description="<html>Add or remove space after # based on pp level of #if blocks.</html>"
-Enabled=false
-EditorType=multiple
-Choices=pp_space_after=ignore|pp_space_after=add|pp_space_after=remove|pp_space_after=force|pp_space_after=not_defined
-ChoicesReadable="Ignore Pp Space After|Add Pp Space After|Remove Pp Space After|Force Pp Space After"
-ValueDefault=ignore
-
-[Pp Space Count]
-Category=10
-Description="<html>Sets the number of spaces per level added with pp_space_after.</html>"
-Enabled=false
-EditorType=numeric
-CallName="pp_space_count="
-MinVal=0
-MaxVal=16
-ValueDefault=0
-
-[Pp Indent Region]
-Category=10
-Description="<html>The indent for '#region' and '#endregion' in C# and '#pragma region' in<br/>C/C++. Negative values decrease indent down to the first column.</html>"
-Enabled=false
-EditorType=numeric
-CallName="pp_indent_region="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Pp Region Indent Code]
-Category=10
-Description="<html>Whether to indent the code between #region and #endregion.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_region_indent_code=true|pp_region_indent_code=false
-ValueDefault=false
-
-[Pp Indent If]
-Category=10
-Description="<html>If pp_indent_at_level=true, sets the indent for #if, #else and #endif when<br/>not at file-level. Negative values decrease indent down to the first column.<br/><br/>=0: Indent preprocessors using output_tab_size<br/>&gt;0: Column at which all preprocessors will be indented</html>"
-Enabled=false
-EditorType=numeric
-CallName="pp_indent_if="
-MinVal=-16
-MaxVal=16
-ValueDefault=0
-
-[Pp If Indent Code]
-Category=10
-Description="<html>Whether to indent the code between #if, #else and #endif.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_if_indent_code=true|pp_if_indent_code=false
-ValueDefault=false
-
-[Pp Indent In Guard]
-Category=10
-Description="<html>Whether to indent the body of an #if that encompasses all the code in the file.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_indent_in_guard=true|pp_indent_in_guard=false
-ValueDefault=false
-
-[Pp Define At Level]
-Category=10
-Description="<html>Whether to indent '#define' at the brace level. If false, these are<br/>indented from column 1.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_define_at_level=true|pp_define_at_level=false
-ValueDefault=false
-
-[Pp Include At Level]
-Category=10
-Description="<html>Whether to indent '#include' at the brace level.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_include_at_level=true|pp_include_at_level=false
-ValueDefault=false
-
-[Pp Ignore Define Body]
-Category=10
-Description="<html>Whether to ignore the '#define' body while formatting.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_ignore_define_body=true|pp_ignore_define_body=false
-ValueDefault=false
-
-[Pp Multiline Define Body Indent]
-Category=10
-Description="<html>An offset value that controls the indentation of the body of a multiline #define.<br/>'body' refers to all the lines of a multiline #define except the first line.<br/>Requires 'pp_ignore_define_body = false'.<br/><br/> &lt;0: Absolute column: the body indentation starts off at the specified column<br/> (ex. -3 ==&gt; the body is indented starting from column 3)<br/>&gt;=0: Relative to the column of the '#' of '#define'<br/> (ex. 3 ==&gt; the body is indented starting 3 columns at the right of '#')<br/><br/>Default: 8</html>"
-Enabled=false
-EditorType=numeric
-CallName="pp_multiline_define_body_indent="
-MinVal=-32
-MaxVal=32
-ValueDefault=8
-
-[Pp Indent Case]
-Category=10
-Description="<html>Whether to indent case statements between #if, #else, and #endif.<br/>Only applies to the indent of the preprocessor that the case statements<br/>directly inside of.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_indent_case=true|pp_indent_case=false
-ValueDefault=true
-
-[Pp Indent Func Def]
-Category=10
-Description="<html>Whether to indent whole function definitions between #if, #else, and #endif.<br/>Only applies to the indent of the preprocessor that the function definition<br/>is directly inside of.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_indent_func_def=true|pp_indent_func_def=false
-ValueDefault=true
-
-[Pp Indent Extern]
-Category=10
-Description="<html>Whether to indent extern C blocks between #if, #else, and #endif.<br/>Only applies to the indent of the preprocessor that the extern block is<br/>directly inside of.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_indent_extern=true|pp_indent_extern=false
-ValueDefault=true
-
-[Pp Indent Brace]
-Category=10
-Description="<html>How to indent braces directly inside #if, #else, and #endif.<br/>Requires pp_if_indent_code=true and only applies to the indent of the<br/>preprocessor that the braces are directly inside of.<br/> 0: No extra indent<br/> 1: Indent by one level<br/>-1: Preserve original indentation<br/><br/>Default: 1</html>"
-Enabled=false
-EditorType=numeric
-CallName="pp_indent_brace="
-MinVal=-1
-MaxVal=1
-ValueDefault=1
-
-[Pp Warn Unbalanced If]
-Category=10
-Description="<html>Whether to print warning messages for unbalanced #if and #else blocks.<br/>This will print a message in the following cases:<br/>- if an #ifdef block ends on a different indent level than<br/> where it started from. Example:<br/><br/> #ifdef TEST<br/> int i;<br/> {<br/> int j;<br/> #endif<br/><br/>- an #elif/#else block ends on a different indent level than<br/> the corresponding #ifdef block. Example:<br/><br/> #ifdef TEST<br/> int i;<br/> #else<br/> }<br/> int j;<br/> #endif</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=pp_warn_unbalanced_if=true|pp_warn_unbalanced_if=false
-ValueDefault=false
-
-[Include Category 0]
-Category=11
-Description="<html>The regex for include category with priority 0.</html>"
-Enabled=false
-CallName=include_category_0=
-EditorType=string
-ValueDefault=
-
-[Include Category 1]
-Category=11
-Description="<html>The regex for include category with priority 1.</html>"
-Enabled=false
-CallName=include_category_1=
-EditorType=string
-ValueDefault=
-
-[Include Category 2]
-Category=11
-Description="<html>The regex for include category with priority 2.</html>"
-Enabled=false
-CallName=include_category_2=
-EditorType=string
-ValueDefault=
-
-[Use Indent Func Call Param]
-Category=12
-Description="<html>true: indent_func_call_param will be used (default)<br/>false: indent_func_call_param will NOT be used<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=use_indent_func_call_param=true|use_indent_func_call_param=false
-ValueDefault=true
-
-[Use Indent Continue Only Once]
-Category=12
-Description="<html>The value of the indentation for a continuation line is calculated<br/>differently if the statement is:<br/>- a declaration: your case with QString fileName ...<br/>- an assignment: your case with pSettings = new QSettings( ...<br/><br/>At the second case the indentation value might be used twice:<br/>- at the assignment<br/>- at the function call (if present)<br/><br/>To prevent the double use of the indentation value, use this option with the<br/>value 'true'.<br/><br/>true: indent_continue will be used only once<br/>false: indent_continue will be used every time (default)<br/><br/>Requires indent_ignore_first_continue=false.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=use_indent_continue_only_once=true|use_indent_continue_only_once=false
-ValueDefault=false
-
-[Indent Cpp Lambda Only Once]
-Category=12
-Description="<html>The indentation can be:<br/>- after the assignment, at the '[' character<br/>- at the beginning of the lambda body<br/><br/>true: indentation will be at the beginning of the lambda body<br/>false: indentation will be after the assignment (default)</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=indent_cpp_lambda_only_once=true|indent_cpp_lambda_only_once=false
-ValueDefault=false
-
-[Use Sp After Angle Always]
-Category=12
-Description="<html>Whether sp_after_angle takes precedence over sp_inside_fparen. This was the<br/>historic behavior, but is probably not the desired behavior, so this is off<br/>by default.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=use_sp_after_angle_always=true|use_sp_after_angle_always=false
-ValueDefault=false
-
-[Use Options Overriding For Qt Macros]
-Category=12
-Description="<html>Whether to apply special formatting for Qt SIGNAL/SLOT macros. Essentially,<br/>this tries to format these so that they match Qt's normalized form (i.e. the<br/>result of QMetaObject::normalizedSignature), which can slightly improve the<br/>performance of the QObject::connect call, rather than how they would<br/>otherwise be formatted.<br/><br/>See options_for_QT.cpp for details.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=use_options_overriding_for_qt_macros=true|use_options_overriding_for_qt_macros=false
-ValueDefault=true
-
-[Use Form Feed No More As Whitespace Character]
-Category=12
-Description="<html>If true: the form feed character is removed from the list of whitespace<br/>characters. See https://en.cppreference.com/w/cpp/string/byte/isspace.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=use_form_feed_no_more_as_whitespace_character=true|use_form_feed_no_more_as_whitespace_character=false
-ValueDefault=false
-
-[Warn Level Tabs Found In Verbatim String Literals]
-Category=13
-Description="<html>(C#) Warning is given if doing tab-to-\t replacement and we have found one<br/>in a C# verbatim string literal.<br/><br/>Default: 2</html>"
-Enabled=false
-EditorType=numeric
-CallName="warn_level_tabs_found_in_verbatim_string_literals="
-MinVal=1
-MaxVal=3
-ValueDefault=2
-
-[Debug Max Number Of Loops]
-Category=13
-Description="<html>Limit the number of loops.<br/>Used by uncrustify.cpp to exit from infinite loop.<br/>0: no limit.</html>"
-Enabled=false
-EditorType=numeric
-CallName="debug_max_number_of_loops="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Debug Line Number To Protocol]
-Category=13
-Description="<html>Set the number of the line to protocol;<br/>Used in the function prot_the_line if the 2. parameter is zero.<br/>0: nothing protocol.</html>"
-Enabled=false
-EditorType=numeric
-CallName="debug_line_number_to_protocol="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Debug Timeout]
-Category=13
-Description="<html>Set the number of second(s) before terminating formatting the current file,<br/>0: no timeout.<br/>only for linux</html>"
-Enabled=false
-EditorType=numeric
-CallName="debug_timeout="
-MinVal=
-MaxVal=
-ValueDefault=0
-
-[Debug Truncate]
-Category=13
-Description="<html>Set the number of characters to be printed if the text is too long,<br/>0: do not truncate.</html>"
-Enabled=false
-EditorType=numeric
-CallName="debug_truncate="
-MinVal=0
-MaxVal=960
-ValueDefault=0
-
-[Debug Sort The Tracks]
-Category=13
-Description="<html>sort (or not) the tracking info.<br/><br/>Default: true</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=debug_sort_the_tracks=true|debug_sort_the_tracks=false
-ValueDefault=true
-
-[Debug Decode The Flags]
-Category=13
-Description="<html>decode (or not) the flags as a new line.<br/>only if the -p option is set.</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=debug_decode_the_flags=true|debug_decode_the_flags=false
-ValueDefault=false
-
-[Set Numbering For Html Output]
-Category=13
-Description="<html>insert the number of the line at the beginning of each line</html>"
-Enabled=false
-EditorType=boolean
-TrueFalse=set_numbering_for_html_output=true|set_numbering_for_html_output=false
-ValueDefault=false
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/test_cli_options.py b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/test_cli_options.py
deleted file mode 100755
index 06b658bc..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/test_cli_options.py
+++ /dev/null
@@ -1,855 +0,0 @@
-#!/usr/bin/python
-
-"""
-test_cli_options.py
-
-Tests output generated by Uncrustifys commandline options
-(excluding actual source code formatting)
-
-:author: DanielChumak
-:license: GPL v2+
-"""
-
-from __future__ import print_function
-from sys import stderr, argv, exit as sys_exit
-from os import makedirs, remove, name as os_name
-from os.path import dirname, relpath, isdir, isfile, join as path_join, split as path_split
-from shutil import rmtree, copyfile
-from subprocess import Popen, PIPE
-from io import open
-from datetime import date
-import re
-import difflib
-import argparse
-import pprint
-
-if os_name == 'nt':
- EX_OK = 0
- EX_USAGE = 64
- EX_SOFTWARE = 70
- NULL_DEVICE = 'nul'
-else:
- from os import EX_OK, EX_USAGE, EX_SOFTWARE
- NULL_DEVICE = '/dev/null'
-
-RE_CALLSTACK = r'\[CallStack:( \w+:\w+(, \w+:\w+)*|-DEBUG NOT SET-)?\]'
-RE_DO_SPACE = (r'\n\ndo_space : WARNING: unrecognized do_space:'
- r'\n[^\n]+\n[^\n]+\n')
-
-
-def eprint(*args, **kwargs):
- """
- print() wrapper that sets file=stderr
- """
- print(*args, file=stderr, **kwargs)
-
-
-def decode_out(text):
- text = text.decode('utf-8')
- text = text.replace(u'\r\n', u'\n')
- text = text.replace(u'\r', u'\n')
- return text
-
-
-def proc(bin_path, args_arr=()):
- """
- simple Popen wrapper to return std out/err utf8 strings
-
-
- Parameters
- ----------------------------------------------------------------------------
- :param bin_path: string
- path to the binary that is going to be called
-
- :param args_arr : list/tuple
- all needed arguments
-
-
- :return: string, string
- ----------------------------------------------------------------------------
- generated output of both stdout and stderr
-
- >>> proc("echo", "test")
- 'test'
- """
- if not isfile(bin_path):
- eprint("bin is not a file: %s" % bin_path)
- return False
-
- # call uncrustify, hold output in memory
- call_arr = [bin_path]
- call_arr.extend(args_arr)
- proc = Popen(call_arr, stdout=PIPE, stderr=PIPE)
-
- out_txt, err_txt = proc.communicate()
-
- return decode_out(out_txt), decode_out(err_txt)
-
-
-def write_to_output_path(output_path, result_str):
- """
- writes the contents of result_str to the output path
- """
- print("Auto appending differences to: " + output_path)
-
- '''
- newline = None: this outputs \r\n
- newline = "\r": this outputs \r
- newline = "\n": this outputs \n
- newline = "" : this outputs \n
- For the sake of consistency, all newlines are now being written out as \n
- However, if the result_str itself contains \r\n, then \r\n will be output
- as this code doesn't post process the data being written out
- '''
- with open(output_path, 'w', encoding="utf-8", newline="\n") as f:
- f.write(result_str)
-
-
-def get_file_content(fp):
- """
- returns file content as an utf8 string or None if fp is not a file
-
-
- Parameters
- ----------------------------------------------------------------------------
- :param fp: string
- path of the file that will be read
-
-
- :return: string or None
- ----------------------------------------------------------------------------
- the file content
-
- """
- out = None
-
- if isfile(fp):
- with open(fp, encoding="utf-8", newline="\n") as f:
- out = f.read()
- else:
- eprint("is not a file: %s" % fp)
-
- return out
-
-
-def check_generated_output(gen_expected_path, gen_result_path,
- result_manip=None, program_args=None):
- """
- compares the content of two files,
-
- is intended to compare a file that was generated during a call of Uncrustify
- with a file that has the expected content
-
-
- Parameters
- ----------------------------------------------------------------------------
- :param gen_expected_path: string
- path to a file that will be compared with the generated file
-
- :param gen_result_path: string
- path to the file that will be generated by Uncrustify
-
- :param result_manip: lambda OR list or tuple of lambdas
- optional lambda function(s) that will be applied (before the comparison)
- on the content of the generated file,
- the lambda function(s) should accept one string parameter
-
- :param program_args: tuple of options
- a collection of multiple options used to add extra functionality to the
- script (i.e. auto apply changes or show diffs on command line)
-
- :return: bool
- ----------------------------------------------------------------------------
- True or False depending on whether both files have the same content
-
- >>> check_generated_output("/dev/null", "/dev/null")
- True
- """
-
- gen_exp_txt = get_file_content(gen_expected_path)
- if gen_exp_txt is None:
- return False
-
- gen_res_txt = get_file_content(gen_result_path)
- if gen_res_txt is None:
- return False
-
- if result_manip is not None:
- if type(result_manip) is list or type(result_manip) is tuple:
- for m in result_manip:
- gen_res_txt = m(gen_res_txt)
- else:
- gen_res_txt = result_manip(gen_res_txt)
-
- if gen_res_txt != gen_exp_txt:
- with open(gen_result_path, 'w', encoding="utf-8", newline="") as f:
- f.write(gen_res_txt)
-
- if program_args.apply and program_args.auto_output_path:
- write_to_output_path(program_args.auto_output_path, gen_res_txt)
- return True
- elif program_args.diff:
- print("\n************************************")
- print("Problem (1) with %s" % gen_result_path)
- print("************************************")
-
- file_diff = difflib.ndiff(gen_res_txt.splitlines(False),
- gen_exp_txt.splitlines(False))
-
- for line in file_diff:
- pprint.PrettyPrinter(indent=4, width=280).pprint(line)
-
- return False
- else:
- print("\nProblem (2) with %s" % gen_result_path)
- print("use(gen): '--diff' to find out why %s %s are different"
- % (gen_result_path, gen_expected_path))
- return False
-
- remove(gen_result_path)
-
- return True
-
-
-def check_std_output(expected_path, result_path, result_str, result_manip=None,
- program_args=None):
- """
- compares output generated by Uncrustify (std out/err) with a the content of
- a file
-
- Parameters
- ----------------------------------------------------------------------------
- :param expected_path: string
- path of the file that will be compared with the output of Uncrustify
-
- :param result_path: string
- path to which the Uncrustifys output will be saved in case of a mismatch
-
- :param result_str: string (utf8)
- the output string generated by Uncrustify
-
- :param result_manip: lambda OR list or tuple of lambdas
- see result_manip for check_generated_output
-
- :param program_args: tuple of options
- a collection of multiple options used to add extra functionality to the
- script (i.e. auto apply changes or show diffs on command line)
-
- :return: bool
- ----------------------------------------------------------------------------
- True or False depending on whether both files have the same content
-
- """
- exp_txt = get_file_content(expected_path)
- if exp_txt is None:
- return False
-
- if result_manip is not None:
- if type(result_manip) is list or type(result_manip) is tuple:
- for m in result_manip:
- result_str = m(result_str)
- else:
- result_str = result_manip(result_str)
-
- if result_str != exp_txt:
- with open(result_path, 'w', encoding="utf-8", newline="\n") as f:
- f.write(result_str)
-
- if program_args.apply and program_args.auto_output_path:
- write_to_output_path(program_args.auto_output_path, result_str)
- return True
-
- if program_args.diff:
- print("\n************************************")
- print("Problem (3) with result_path is %s" % result_path)
- print(" expected_path is %s" % expected_path)
- print("************************************")
-
- file_diff = difflib.ndiff(result_str.splitlines(False),
- exp_txt.splitlines(False))
-
- """
- change the value of width
- look at: If compact is false (the default)...
- """
- for line in file_diff:
- pprint.PrettyPrinter(indent=4, width=280).pprint(line)
- else:
- print("\nProblem (4) with %s" % result_path)
- print("use: '--diff' to find out why %s %s are different"
- % (result_path, expected_path))
- return False
- return True
-
-
-def check_uncrustify_output(
- uncr_bin,
- program_args,
- args_arr=(),
- out_expected_path=None, out_result_manip=None, out_result_path=None,
- err_expected_path=None, err_result_manip=None, err_result_path=None,
- gen_expected_path=None, gen_result_manip=None, gen_result_path=None):
- """
- compares outputs generated by Uncrustify with files
-
- Parameters
- ----------------------------------------------------------------------------
- :param uncr_bin: string
- path to the Uncrustify binary
-
- :param program_args: tuple of options
- a collection of multiple options used to add extra functionality to the
- script (i.e. auto apply changes or show diffs on command line)
-
- :param args_arr: list/tuple
- Uncrustify commandline arguments
-
- :param out_expected_path: string
- file that will be compared with Uncrustifys stdout output
-
- :param out_result_manip: string
- lambda function that will be applied to Uncrustifys stdout output
- (before the comparison with out_expected_path),
- the lambda function should accept one string parameter
-
- :param out_result_path: string
- path where Uncrustifys stdout output will be saved to in case of a
- mismatch
-
- :param err_expected_path: string
- path to a file that will be compared with Uncrustifys stderr output
-
- :param err_result_manip: string
- see out_result_manip (is applied to Uncrustifys stderr instead)
-
- :param err_result_path: string
- see out_result_path (is applied to Uncrustifys stderr instead)
-
- :param gen_expected_path: string
- path to a file that will be compared with a file generated by Uncrustify
-
- :param gen_result_path: string
- path to a file that will be generated by Uncrustify
-
- :param gen_result_manip:
- see out_result_path (is applied, in memory, to the file content of the
- file generated by Uncrustify instead)
-
-
- :return: bool
- ----------------------------------------------------------------------------
- True if all specified files match up, False otherwise
- """
- # check param sanity
- if not out_expected_path and not err_expected_path and not gen_expected_path:
- eprint("No expected comparison file provided")
- return False
-
- if bool(gen_expected_path) != bool(gen_result_path):
- eprint("'gen_expected_path' and 'gen_result_path' must be used in "
- "combination")
- return False
-
- if gen_result_manip and not gen_result_path:
- eprint("Set up 'gen_result_path' if 'gen_result_manip' is used")
-
- out_res_txt, err_res_txt = proc(uncr_bin, args_arr)
-
- ret_flag = True
-
- if program_args.apply:
- valid_path = [out_expected_path, err_expected_path, gen_expected_path]
- program_args.auto_output_path = next(item for item in valid_path if item is not None)
-
- if out_expected_path and not check_std_output(
- out_expected_path, out_result_path, out_res_txt,
- result_manip=out_result_manip,
- program_args=program_args):
- ret_flag = False
-
- if program_args.apply:
- valid_path = [err_expected_path, out_expected_path, gen_expected_path]
- program_args.auto_output_path = next(item for item in valid_path if item is not None)
-
- if err_expected_path and not check_std_output(
- err_expected_path, err_result_path, err_res_txt,
- result_manip=err_result_manip,
- program_args=program_args):
- ret_flag = False
-
- if gen_expected_path and not check_generated_output(
- gen_expected_path, gen_result_path,
- result_manip=gen_result_manip,
- program_args=program_args):
- ret_flag = False
-
- return ret_flag
-
-
-def clear_dir(path):
- """
- clears a directory by deleting and creating it again
-
-
- Parameters
- ----------------------------------------------------------------------------
- :param path:
- path of the directory
-
-
- :return: void
- """
- if isdir(path):
- rmtree(path)
- makedirs(path)
-
-
-def reg_replace(pattern, replacement):
- """
- returns a generated lambda function that applies a regex string replacement
-
-
- Parameters:
- ----------------------------------------------------------------------------
-
- :param pattern: regex pattern
- the pattern that will be used to find targets to replace
-
- :param replacement: string
- the replacement that will be applied
-
-
- :return: lambda function
- ----------------------------------------------------------------------------
- the generated lambda function, takes in a string on which the
- replacement will be applied and returned
-
- >>> l = reg_replace(r"a", "b")
- >>> a = l("a")
- 'b'
- """
- return lambda text: re.sub(pattern, replacement, text)
-
-
-def string_replace(string_target, replacement):
- """
- returns a generated lambda function that applies a string replacement
-
- like reg_replace, uses string.replace() instead
- """
- return lambda text: text.replace(string_target, replacement)
-
-
-def s_path_join(path, *paths):
- """
- Wrapper for the os.path.join function, splits every path component to
- replace it with a system specific path separator. This is for consistent
- path separators (and also systems that don't use either '\' or '/')
-
-
- Parameter
- ----------------------------------------------------------------------------
- :params path, paths: string
- see os.path.join
-
- :return: string
- ----------------------------------------------------------------------------
- a joined path, see os.path.join
-
- >>> s_path_join('./z/d/', '../a/b/c/f')
- r'.\z\a\b\c\f'
- """
- p_splits = list(path_split(path))
- for r in map(path_split, paths):
- p_splits.extend(r)
- return path_join(*p_splits)
-
-
-def main(args):
- # set working dir to script dir
- script_dir = dirname(relpath(__file__))
-
- parser = argparse.ArgumentParser(description='Test CLI Options')
- parser.add_argument('--diff', action='store_true',
- help='show diffs when there is a test mismatch')
- parser.add_argument('--apply', action='store_true',
- help='auto apply the changes from the results folder to the output folder')
- parser.add_argument('--build',
- default=s_path_join(script_dir, '../../build'),
- help='specify location of the build directory')
- parser.add_argument('--config',
- default='Release',
- help='the build_type value (Release or Debug)')
- parser.add_argument('--test',
- default=s_path_join(script_dir, '../../build/tests/cli'),
- help='specify the location of the test cli build folder')
-
- parsed_args = parser.parse_args()
-
- # find the uncrustify binary
- bin_found = False
- uncr_bin = ''
- bd_dir = parsed_args.build
- test_dir = parsed_args.test
-
- bin_paths = [s_path_join(bd_dir, 'uncrustify'),
- s_path_join(bd_dir, 'uncrustify.exe'),
- s_path_join(bd_dir, 'Debug/uncrustify'),
- s_path_join(bd_dir, 'Debug/uncrustify.exe'),
- s_path_join(bd_dir, 'Release/uncrustify'),
- s_path_join(bd_dir, 'Release/uncrustify.exe'),
- s_path_join(bd_dir, 'RelWithDebInfo/uncrustify'),
- s_path_join(bd_dir, 'RelWithDebInfo/uncrustify.exe'),
- s_path_join(bd_dir, 'MinSizeRel/uncrustify'),
- s_path_join(bd_dir, 'MinSizeRel/uncrustify.exe')]
- for uncr_bin in bin_paths:
- if not isfile(uncr_bin):
- eprint("is not a file: %s" % uncr_bin)
- else:
- print("Uncrustify binary found: %s" % uncr_bin)
- bin_found = True
- break
- if not bin_found:
- eprint("No Uncrustify binary found")
- sys_exit(EX_USAGE)
-
- clear_dir(s_path_join(test_dir, 'results'))
-
- return_flag = True
-
- #
- # Test help
- # -h -? --help --usage
- if not check_uncrustify_output(
- uncr_bin,
- parsed_args,
- out_expected_path=s_path_join(script_dir, 'output/help.txt'),
- out_result_path=s_path_join(test_dir, 'results/help.txt'),
- out_result_manip=[
- string_replace(' --mtime : Preserve mtime on replaced files.\n', ''),
- string_replace('.exe', ''),
- reg_replace(r'currently \d+ options', 'currently x options')
- ]):
- return_flag = False
-
- #
- # Test false parameter
- # --xyz
- if not check_uncrustify_output(
- uncr_bin,
- parsed_args,
- args_arr=['--xyz'],
- err_expected_path=s_path_join(script_dir, 'output/xyz-err.txt'),
- err_result_path=s_path_join(test_dir, 'results/xyz-err.txt')
- ):
- return_flag = False
-
- #
- # Test Version
- # -v
- if not check_uncrustify_output(
- uncr_bin,
- parsed_args,
- args_arr=['-v'],
- out_expected_path=s_path_join(script_dir, 'output/v-out.txt'),
- out_result_path=s_path_join(test_dir, 'results/v-out.txt'),
- out_result_manip=reg_replace(r'Uncrustify.+', 'Uncrustify')
- ):
- return_flag = False
-
- # temporary removed
- ##
- ## Test --show-config
- ##
- #if not check_uncrustify_output(
- # uncr_bin,
- # parsed_args,
- # args_arr=['--show-config'],
- # out_expected_path=s_path_join(script_dir, 'output/show_config.txt'),
- # out_result_path=s_path_join(test_dir, 'results/show_config.txt'),
- # out_result_manip=reg_replace(r'\# Uncrustify.+', '')
- # ):
- # return_flag = False
-
- #
- # Test the truncate option
- #
- if not check_uncrustify_output(
- uncr_bin,
- parsed_args,
- args_arr=['-c', s_path_join(script_dir, 'config/truncate.cfg'),
- '-f', s_path_join(script_dir, 'input/truncate.cpp'),
- '-o', NULL_DEVICE,
- '-L', '83'],
- err_expected_path=s_path_join(script_dir, 'output/truncate.txt'),
- err_result_path=s_path_join(test_dir, 'results/truncate.txt'),
- err_result_manip=[reg_replace(r'\([0-9]+\)', ' '),
- reg_replace(RE_DO_SPACE, '')]
- ):
- return_flag = False
-
- # temporary removed
- ##
- ## Test --update-config
- ##
- #if not check_uncrustify_output(
- # uncr_bin,
- # parsed_args,
- # args_arr=['-c', s_path_join(script_dir, 'config/mini_d.cfg'),
- # '--update-config'],
- # out_expected_path=s_path_join(script_dir, 'output/mini_d_uc.txt'),
- # out_result_path=s_path_join(test_dir, 'results/mini_d_uc.txt'),
- # out_result_manip=reg_replace(r'\# Uncrustify.+', ''),
- # err_expected_path=s_path_join(script_dir, 'output/mini_d_error.txt'),
- # err_result_path=s_path_join(test_dir, 'results/mini_d_error0.txt'),
- # err_result_manip=string_replace('\\', '/')
- # ):
- # return_flag = False
-
- #if not check_uncrustify_output(
- # uncr_bin,
- # parsed_args,
- # args_arr=['-c', s_path_join(script_dir, 'config/mini_nd.cfg'),
- # '--update-config'],
- # out_expected_path=s_path_join(script_dir, 'output/mini_nd_uc.txt'),
- # out_result_path=s_path_join(test_dir, 'results/mini_nd_uc.txt'),
- # out_result_manip=reg_replace(r'\# Uncrustify.+', ''),
- # err_expected_path=s_path_join(script_dir, 'output/mini_d_error.txt'),
- # err_result_path=s_path_join(test_dir, 'results/mini_d_error1.txt'),
- # err_result_manip=string_replace('\\', '/')
- # ):
- # return_flag = False
-
- ##
- ## Test --update-config-with-doc
- ##
- #if not check_uncrustify_output(
- # uncr_bin,
- # parsed_args,
- # args_arr=['-c', s_path_join(script_dir, 'config/mini_d.cfg'),
- # '--update-config-with-doc'],
- # out_expected_path=s_path_join(script_dir, 'output/mini_d_ucwd.txt'),
- # out_result_path=s_path_join(test_dir, 'results/mini_d_ucwd.txt'),
- # out_result_manip=reg_replace(r'\# Uncrustify.+', ''),
- # err_expected_path=s_path_join(script_dir, 'output/mini_d_error.txt'),
- # err_result_path=s_path_join(test_dir, 'results/mini_d_error2.txt'),
- # err_result_manip=string_replace('\\', '/')
- # ):
- # return_flag = False
-
- #if not check_uncrustify_output(
- # uncr_bin,
- # parsed_args,
- # args_arr=['-c', s_path_join(script_dir, 'config/mini_nd.cfg'),
- # '--update-config-with-doc'],
- # out_expected_path=s_path_join(script_dir, 'output/mini_nd_ucwd.txt'),
- # out_result_path=s_path_join(test_dir, 'results/mini_nd_ucwd.txt'),
- # out_result_manip=reg_replace(r'\# Uncrustify.+', ''),
- # err_expected_path=s_path_join(script_dir, 'output/mini_d_error.txt'),
- # err_result_path=s_path_join(test_dir, 'results/mini_d_error3.txt'),
- # err_result_manip=string_replace('\\', '/')
- # ):
- # return_flag = False
-
- #
- # Test -p
- #
- if os_name != 'nt':
- if not check_uncrustify_output(
- uncr_bin,
- parsed_args,
- args_arr=['-c', s_path_join(script_dir, 'config/mini_nd.cfg'),
- '-f', s_path_join(script_dir, 'input/testSrcP.cpp'),
- '-p', s_path_join(test_dir, 'results/p.txt')],
- gen_expected_path=s_path_join(script_dir, 'output/p.txt'),
- gen_result_path=s_path_join(test_dir, 'results/p.txt'),
- gen_result_manip=reg_replace(r'\# Uncrustify.+[^\n\r]', '')
- ):
- return_flag = False
-
- if not check_uncrustify_output(
- uncr_bin,
- parsed_args,
- args_arr=['-f', s_path_join(script_dir, 'input/class_enum_struct_union.cpp'),
- '-p', s_path_join(test_dir, 'results/class_enum_struct_union.txt')],
- gen_expected_path=s_path_join(script_dir, 'output/class_enum_struct_union.txt'),
- gen_result_path=s_path_join(test_dir, 'results/class_enum_struct_union.txt'),
- gen_result_manip=reg_replace(r'\# Uncrustify.+[^\n\r]', '')
- ):
- return_flag = False
-
- if os_name == 'nt' or check_uncrustify_output(
- uncr_bin,
- parsed_args,
- args_arr=['-c', '-',
- '-f', NULL_DEVICE,
- '-p', '-'],
- out_expected_path=s_path_join(script_dir, 'output/pc-.txt'),
- out_result_manip=reg_replace(r'\# Uncrustify.+[^\n\r]', ''),
- out_result_path=s_path_join(test_dir, 'results/pc-.txt')
- ):
- pass
- #
- # Test -p and -c with '-' input
- #
- else:
- return_flag = False
-
- #
- # Test -p and --debug-csv-format option
- #
- if os_name != 'nt' and not check_uncrustify_output(
- uncr_bin,
- parsed_args,
- args_arr=['-c', '-',
- '-f', s_path_join(script_dir, 'input/class_enum_struct_union.cpp'),
- '-p', s_path_join(test_dir, 'results/class_enum_struct_union.csv'),
- '--debug-csv-format'],
- gen_expected_path=s_path_join(script_dir, 'output/class_enum_struct_union.csv'),
- gen_result_path=s_path_join(test_dir, 'results/class_enum_struct_union.csv'),
- ):
- return_flag = False
-
- #
- # Test --tracking_space FILE
- #
- if os_name != 'nt':
- # &lt; &gt; doesn't work under windows
- if parsed_args.config == 'Debug':
- eprint("Debug")
- if not check_uncrustify_output(
- uncr_bin,
- parsed_args,
- args_arr=['-c', s_path_join(script_dir, 'config/tracking_space.cfg'),
- '-f', s_path_join(script_dir, 'input/tracking_space.cpp'),
- '--tracking_space', s_path_join(test_dir, 'results/Debug_tracking_space.html')],
- gen_expected_path=s_path_join(script_dir, 'output/Debug_tracking_space.html'),
- gen_result_path=s_path_join(test_dir, 'results/Debug_tracking_space.html'),
- ):
- return_flag = False
- else:
- eprint(parsed_args.config)
- if not check_uncrustify_output(
- uncr_bin,
- parsed_args,
- args_arr=['-c', s_path_join(script_dir, 'config/tracking_space.cfg'),
- '-f', s_path_join(script_dir, 'input/tracking_space.cpp'),
- '--tracking_space', s_path_join(test_dir, 'results/tracking_space.html')],
- gen_expected_path=s_path_join(script_dir, 'output/tracking_space.html'),
- gen_result_path=s_path_join(test_dir, 'results/tracking_space.html'),
- ):
- return_flag = False
-
- #
- # Test --replace
- #
- copyfile("input/backup.h-save", "input/backup.h")
- if not check_uncrustify_output(
- uncr_bin,
- parsed_args,
- args_arr=['-c', s_path_join(script_dir, 'config/replace.cfg'),
- '-F', s_path_join(script_dir, 'input/replace.list'),
- '--replace', '--no-backup'],
- gen_expected_path=s_path_join(script_dir, 'output/backup.h'),
- gen_result_path=s_path_join(script_dir, 'input/backup.h'),
- err_expected_path=s_path_join(script_dir, 'output/replace.txt'),
- err_result_path=s_path_join(test_dir, 'results/replace.txt'),
- ):
- return_flag = False
-
- # The flag CMAKE_BUILD_TYPE must be set to "Release", or all lines with
- # 'Description="<html>(<number>)text abc.</html>" must be changed to
- # 'Description="<html>text abc.</html>"
- #
- # OR it is possible to introduce a new parameter: gen_expected_manip
- #
- # The last "reg_replace(r'\r', '')" is necessary under Windows, because
- # fprintf puts a \r\n at the end of a line. To make the check, we use
- # output/universalindent.cfg, generated under Linux, with only \n at the
- # end of a line.
- if not check_uncrustify_output(
- uncr_bin,
- parsed_args,
- args_arr=['-o', s_path_join(test_dir, 'results/universalindent.cfg'),
- '--universalindent'],
- gen_expected_path=s_path_join(script_dir, 'output/universalindent.cfg'),
- gen_result_path=s_path_join(test_dir, 'results/universalindent.cfg'),
- gen_result_manip=[reg_replace(r'version=U.+', ''),
- reg_replace(r'\(\d+\)', ''),
- reg_replace(r'\r', '')]
- ):
- return_flag = False
-
- # Debug Options:
- # -L
- # look at src/log_levels.h
- Ls_A = ['9', '21', '25', '28', '31', '36', '66', '92']
- for L in Ls_A:
- if not check_uncrustify_output(
- uncr_bin,
- parsed_args,
- args_arr=['-c', NULL_DEVICE, '-L', L, '-o', NULL_DEVICE,
- '-f', s_path_join(script_dir, 'input/testSrc.cpp')],
- err_expected_path=s_path_join(script_dir, 'output/%s.txt' % L),
- err_result_path=s_path_join(test_dir, 'results/%s.txt' % L),
- err_result_manip=[reg_replace(r'\([0-9]+\)', ' '),
- reg_replace(r'\:[0-9]+\)', ' '),
- reg_replace(r'\[line [0-9]+', '[ '),
- reg_replace(r' \[[_|,|1|A-Z]*\]', ' []'),
- reg_replace(r', \[[_|,|1|A-Z]*\]', ', []'),
- reg_replace(r', \[0[xX][0-9a-fA-F]+:[_|,|1|A-Z]*\]', ', []'),
- reg_replace(r' \[0[xX][0-9a-fA-F]+:[_|,|1|A-Z]*\]', ' []'),
- reg_replace(r'^[ \t]*[_A-Za-z][_A-Za-z0-9]*::', ''),
- reg_replace(RE_CALLSTACK, '[CallStack]'),
- reg_replace(RE_DO_SPACE, '')]
- ):
- return_flag = False
-
- # Test logger buffer overflow
- if not check_uncrustify_output(
- uncr_bin,
- parsed_args,
- args_arr=['-c', NULL_DEVICE, '-L', '99', '-o', NULL_DEVICE,
- '-f', s_path_join(script_dir, 'input/logger.cs')],
- err_expected_path=s_path_join(script_dir, 'output/logger_cs_L_99.txt'),
- err_result_path=s_path_join(test_dir, 'results/logger_cs_L_99.txt'),
- err_result_manip=reg_replace(r'[0-9]', '')
- ):
- return_flag = False
-
- # misc error_tests
- error_tests = ["I-842", "unmatched_close_pp"]
- for test in error_tests:
- if not check_uncrustify_output(
- uncr_bin,
- parsed_args,
- args_arr=['-c', s_path_join(script_dir, 'config/%s.cfg' % test),
- '-f', s_path_join(script_dir, 'input/%s.cpp' % test),
- '-o', NULL_DEVICE, '-q'],
- err_expected_path=s_path_join(script_dir, 'output/%s.txt' % test),
- err_result_path=s_path_join(test_dir, 'results/%s.txt' % test)
- ):
- return_flag = False
-
- # Test $(year) keyword (issue #3251)
- if not check_uncrustify_output(
- uncr_bin,
- parsed_args,
- args_arr=['-c', s_path_join(script_dir, 'config/copyright-header.cfg'),
- '-f', s_path_join(script_dir, 'input/testSrc.cpp')],
- out_expected_path=s_path_join(script_dir, 'output/copyright-header.cpp'),
- out_result_path=s_path_join(test_dir, 'results/copyright-header.cpp'),
- out_result_manip=string_replace(str(date.today().year), 'this year'),
- ):
- return_flag = False
-
- if return_flag:
- print("all tests are OK")
- sys_exit(EX_OK)
- else:
- print("some problem(s) are still present")
- sys_exit(EX_SOFTWARE)
-
-
-if __name__ == "__main__":
- main(argv[1:])
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/1liner-no-split.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/1liner-no-split.cfg
deleted file mode 100644
index 84eba64d..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/1liner-no-split.cfg
+++ /dev/null
@@ -1,10 +0,0 @@
-sp_before_sparen = force
-sp_inside_braces = force
-sp_fparen_brace = add
-sp_else_brace = force
-sp_brace_else = force
-indent_columns = 3
-nl_func_leave_one_liners = true
-nl_start_of_file = remove
-mod_full_brace_if = add
-mod_paren_on_return = add \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2360-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2360-a.cfg
deleted file mode 100644
index 85052020..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2360-a.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-nl_multi_line_sparen_open = force
-nl_multi_line_sparen_close = force
-nl_before_if_closing_paren = ignore
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2360-b.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2360-b.cfg
deleted file mode 100644
index b61841cc..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2360-b.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-nl_multi_line_sparen_open = false
-nl_multi_line_sparen_close = remove
-nl_before_if_closing_paren = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3169.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3169.cfg
deleted file mode 100644
index ae9fa1f3..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3169.cfg
+++ /dev/null
@@ -1,5 +0,0 @@
-sp_pp_concat = ignore
-indent_columns = 2
-pp_multiline_define_body_indent = 2
-align_var_def_span = 1
-align_nl_cont = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-1.cfg
deleted file mode 100644
index 481776c1..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-1.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-mod_infinite_loop = 1
-mod_full_brace_for = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-2.cfg
deleted file mode 100644
index e3064ece..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-2.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-mod_infinite_loop = 2
-mod_full_brace_while = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-4.cfg
deleted file mode 100644
index 4ff28748..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-4.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-mod_infinite_loop = 4
-mod_full_brace_while = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_049.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_049.cfg
deleted file mode 100644
index 50a5b61c..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_049.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-sp_assign = force
-sp_after_comma = force
-indent_columns = 3
-indent_with_tabs = 0
-pp_multiline_define_body_indent = 3
-align_nl_cont = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_056.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_056.cfg
deleted file mode 100644
index fdf8230b..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_056.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-indent_columns = 3
-pp_multiline_define_body_indent = 3
-align_nl_cont = true
-pp_space_after = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_058.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_058.cfg
deleted file mode 100644
index 60757d30..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_058.cfg
+++ /dev/null
@@ -1,10 +0,0 @@
-sp_inside_paren = remove
-sp_before_sparen = force
-sp_return_paren = remove
-indent_columns = 3
-indent_switch_body = 3
-pp_multiline_define_body_indent = 3
-nl_switch_brace = add
-eat_blanks_before_close_brace = true
-align_nl_cont = true
-mod_paren_on_return = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_072.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_072.cfg
deleted file mode 100644
index e58fa4fc..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_072.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-indent_columns = 3
-pp_multiline_define_body_indent = 3
-eat_blanks_before_close_brace = true
-align_nl_cont = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_081.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_081.cfg
deleted file mode 100644
index 630b3cbc..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_081.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-sp_before_ellipsis = remove
-indent_columns = 3
-pp_multiline_define_body_indent = 3
-align_nl_cont = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_085.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_085.cfg
deleted file mode 100644
index b02673d7..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_085.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-sp_paren_paren = remove
-sp_inside_fparen = remove
-indent_columns = 3 \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_090.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_090.cfg
deleted file mode 100644
index 340afec1..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_090.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-indent_columns = 3
-pp_multiline_define_body_indent = 3
-align_nl_cont = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-banner.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-banner.cfg
deleted file mode 100644
index 2fc753a6..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-banner.cfg
+++ /dev/null
@@ -1,15 +0,0 @@
-# Banner style
-output_tab_size = 2
-sp_fparen_brace = add
-sp_else_brace = force
-sp_do_brace_open = force
-indent_columns = 2
-indent_braces = true
-indent_braces_no_func = true
-nl_if_brace = remove
-nl_else_brace = remove
-nl_for_brace = remove
-nl_while_brace = remove
-nl_do_brace = remove
-nl_brace_while = add
-nl_fdef_brace = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-kr-br.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-kr-br.cfg
deleted file mode 100644
index 59bc4084..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-kr-br.cfg
+++ /dev/null
@@ -1,5 +0,0 @@
-# K&R style
-sp_else_brace = force
-nl_if_brace = remove
-nl_after_brace_open = true
-mod_full_brace_if = add \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-kr.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-kr.cfg
deleted file mode 100644
index 7ef5aa16..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-kr.cfg
+++ /dev/null
@@ -1,12 +0,0 @@
-# K&R style
-sp_else_brace = force
-sp_brace_else = force
-sp_do_brace_open = force
-nl_fcall_brace = add
-nl_if_brace = remove
-nl_brace_else = remove
-nl_else_brace = remove
-nl_for_brace = remove
-nl_while_brace = remove
-nl_do_brace = remove
-nl_fdef_brace = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/convert_cmt_vbrace_one_line.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/convert_cmt_vbrace_one_line.cfg
deleted file mode 100644
index dc5a6d92..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/convert_cmt_vbrace_one_line.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-mod_full_brace_if = add
-nl_after_brace_open = true
-nl_if_leave_one_liners = true
-sp_inside_braces = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/freebsd.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/freebsd.cfg
deleted file mode 100644
index 725b00b0..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/freebsd.cfg
+++ /dev/null
@@ -1,27 +0,0 @@
-sp_arith = force
-sp_bool = force
-sp_before_ptr_star = force
-sp_after_ptr_star = remove
-sp_before_semi_for_empty = force
-sp_between_semi_for_empty = force
-sp_after_semi_for_empty = force
-sp_type_func = force
-sp_brace_else = force
-indent_continue = 4
-nl_brace_else = remove
-nl_for_brace = add
-nl_while_brace = add
-nl_switch_brace = add
-nl_before_case = true
-nl_after_func_proto_group = 2
-nl_after_func_body = 3
-pos_arith = trail
-align_var_def_span = 1
-align_var_def_star_style = 1
-align_typedef_gap = 3
-align_typedef_span = 5
-mod_full_brace_for = add
-mod_full_brace_if = add
-mod_full_brace_while = add
-mod_full_paren_if_bool = true
-mod_remove_extra_semicolon = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/if_chain.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/if_chain.cfg
deleted file mode 100644
index d3449cc5..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/if_chain.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-sp_before_sparen = force
-sp_inside_sparen = remove
-sp_else_brace = force
-sp_brace_else = force
-nl_if_brace = remove
-nl_brace_else = remove
-nl_else_brace = remove
-align_right_cmt_span = 3
-mod_full_brace_if_chain = 1
-mod_full_brace_nl = 3
-mod_full_brace_while = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/issue_527.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/issue_527.cfg
deleted file mode 100644
index cb63239a..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/issue_527.cfg
+++ /dev/null
@@ -1,266 +0,0 @@
-## Ingres coding style config for http://uncrustify.sourceforge.net/
-##
-## Based on defaults.cfg file (from uncrustify-0.40).
-## Main diffs are spaces for tabs and tab length.
-### FIXME find out why old 0.38 version removed spaces in "# if..." 0.40 retains them.
-##
-## There is a GUI from http://universalindent.sourceforge.net/
-## which can use different formatters too, e.g.
-## gnu indent (no suport for EXEC SQL)
-## bcpp
-
-## FIXME try different settings for indent_preserve_sql - not seeing any difference!
-##indent_preserve_sql = false # false/true
-
-# How to run:
-# $ uncrustify -c ./ingres.cfg -f dirtyfile.c > cleanfile.c
-# > uncrustify -c ingres.cfg -f dirtyfile.c > cleanfile.c
-#
-
-##############################
-
-newlines = auto
-input_tab_size = 4
-output_tab_size = 4
-string_escape_char = 92
-string_escape_char2 = 0
-indent_columns = 4
-indent_with_tabs = 0
-indent_align_string = false
-indent_xml_string = 0
-indent_brace = 0
-indent_braces = false
-indent_braces_no_func = false
-indent_brace_parent = false
-indent_namespace = false
-indent_class = false
-indent_class_colon = false
-indent_func_call_param = false
-indent_member = 0
-indent_single_line_comments_before = 0
-indent_switch_case = indent_columns
-indent_case_shift = 0
-indent_case_brace = 0
-indent_col1_comment = false
-indent_label = 1
-indent_access_spec = 1
-indent_paren_nl = false
-indent_paren_close = 0
-indent_comma_paren = 0
-indent_bool_paren = 0
-indent_square_nl = false
-indent_preserve_sql = false
-sp_arith = ignore
-sp_assign = ignore
-sp_bool = ignore
-sp_compare = ignore
-sp_inside_paren = ignore
-sp_paren_paren = ignore
-sp_balance_nested_parens = false
-sp_paren_brace = ignore
-sp_before_ptr_star = ignore
-sp_between_ptr_star = ignore
-sp_after_ptr_star = ignore
-sp_before_byref = ignore
-sp_after_byref = ignore
-sp_before_angle = ignore
-sp_after_angle = ignore
-sp_angle_paren = ignore
-sp_angle_word = ignore
-sp_before_sparen = add
-sp_inside_sparen = remove
-sp_after_sparen = remove
-sp_sparen_brace = ignore
-sp_special_semi = ignore
-sp_before_semi = remove
-sp_before_semi_for = ignore
-sp_before_semi_for_empty = ignore
-sp_between_semi_for_empty = ignore
-sp_after_semi_for_empty = ignore
-sp_before_square = remove
-sp_before_squares = remove
-sp_inside_square = remove
-sp_after_comma = add
-sp_before_comma = remove
-sp_after_operator = ignore
-sp_after_cast = add
-sp_inside_paren_cast = remove
-sp_sizeof_paren = remove
-sp_after_tag = ignore
-sp_inside_braces_enum = ignore
-sp_inside_braces_struct = ignore
-sp_inside_braces = ignore
-sp_inside_angle = remove
-sp_type_func = remove
-sp_func_proto_paren = remove
-sp_func_def_paren = remove
-sp_inside_fparens = remove
-sp_inside_fparen = remove
-sp_square_fparen = ignore
-sp_fparen_brace = ignore
-sp_func_call_paren = ignore
-sp_func_class_paren = ignore
-sp_return_paren = ignore
-sp_attribute_paren = ignore
-sp_macro = ignore
-sp_macro_func = ignore
-sp_else_brace = ignore
-sp_brace_else = ignore
-sp_catch_brace = ignore
-sp_brace_catch = ignore
-sp_finally_brace = ignore
-sp_brace_finally = ignore
-sp_try_brace = ignore
-sp_getset_brace = ignore
-sp_before_dc = ignore
-sp_after_dc = ignore
-sp_d_array_colon = ignore
-sp_not = remove
-sp_inv = remove
-sp_addr = remove
-sp_deref = remove
-align_keep_tabs = false
-align_with_tabs = false
-align_on_tabstop = false
-align_number_right = false
-align_func_params = false
-align_var_def_span = 1
-align_var_def_star_style = 1
-align_var_def_amp_style = 0
-align_var_def_thresh = 0
-align_var_def_colon = false
-align_var_def_inline = false
-align_assign_span = 0
-align_assign_thresh = 0
-align_enum_equ_span = 0
-align_enum_equ_thresh = 0
-align_var_struct_span = 0
-align_var_struct_thresh = 0
-align_struct_init_span = 0
-align_typedef_gap = 0
-align_typedef_span = 0
-align_typedef_func = 0
-align_typedef_star_style = 0
-align_typedef_amp_style = 0
-align_right_cmt_span = 0
-align_func_proto_span = 0
-align_nl_cont = false
-align_pp_define_gap = 0
-align_pp_define_span = 0
-nl_collapse_empty_body = false
-nl_assign_leave_one_liners = false
-nl_class_leave_one_liners = false
-nl_enum_leave_one_liners = false
-nl_getset_leave_one_liners = false
-nl_func_leave_one_liners = false
-nl_if_leave_one_liners = false
-nl_start_of_file = ignore
-nl_start_of_file_min = 0
-nl_end_of_file = ignore
-nl_end_of_file_min = 0
-nl_assign_brace = ignore
-nl_assign_square = ignore
-nl_after_square_assign = ignore
-nl_var_def_blk_end_func_top = 0
-nl_fcall_brace = ignore
-nl_enum_brace = ignore
-nl_struct_brace = ignore
-nl_union_brace = ignore
-nl_if_brace = force
-nl_brace_else = force
-nl_elseif_brace = force
-nl_else_brace = force
-nl_brace_finally = ignore
-nl_finally_brace = ignore
-nl_try_brace = ignore
-nl_getset_brace = ignore
-nl_for_brace = force
-nl_catch_brace = ignore
-nl_brace_catch = ignore
-nl_while_brace = force
-nl_do_brace = force
-nl_brace_while = force
-nl_switch_brace = force
-nl_multi_line_cond = false
-nl_before_case = false
-nl_after_case = false
-nl_namespace_brace = ignore
-nl_template_class = ignore
-nl_class_brace = ignore
-nl_class_init_args = ignore
-nl_func_type_name = ignore
-nl_func_paren = force
-nl_func_decl_start = ignore
-nl_func_decl_args = ignore
-nl_func_decl_end = ignore
-nl_fdef_brace = ignore
-nl_after_return = false
-nl_after_semicolon = false
-nl_after_brace_open = false
-nl_after_vbrace_open = false
-nl_define_macro = false
-nl_squeeze_ifdef = false
-nl_before_if = ignore
-nl_after_if = ignore
-nl_before_for = ignore
-nl_after_for = ignore
-nl_before_while = ignore
-nl_after_while = ignore
-nl_before_switch = ignore
-nl_after_switch = ignore
-nl_before_do = ignore
-nl_after_do = ignore
-nl_ds_struct_enum_cmt = false
-nl_ds_struct_enum_close_brace = false
-nl_class_colon = ignore
-nl_create_if_one_liner = false
-nl_create_for_one_liner = false
-nl_create_while_one_liner = false
-pos_bool = ignore
-pos_comma = ignore
-pos_class_comma = ignore
-pos_class_colon = ignore
-code_width = 0
-ls_for_split_full = false
-ls_func_split_full = false
-nl_max = 0
-nl_after_func_proto = 0
-nl_after_func_proto_group = 0
-nl_after_func_body = 0
-nl_after_func_body_one_liner = 0
-nl_before_block_comment = 0
-nl_before_c_comment = 0
-nl_before_cpp_comment = 0
-nl_after_multiline_comment = false
-nl_before_access_spec = 0
-nl_after_access_spec = 0
-eat_blanks_after_open_brace = false
-eat_blanks_before_close_brace = false
-mod_full_brace_do = ignore
-mod_full_brace_for = ignore
-mod_full_brace_function = ignore
-mod_full_brace_if = ignore
-mod_full_brace_nl = 0
-mod_full_brace_while = ignore
-mod_paren_on_return = ignore
-mod_pawn_semicolon = false
-mod_full_paren_if_bool = false
-mod_remove_extra_semicolon = false
-cmt_width = 0
-cmt_c_group = false
-cmt_c_nl_start = false
-cmt_c_nl_end = false
-cmt_cpp_group = false
-cmt_cpp_nl_start = false
-cmt_cpp_nl_end = false
-cmt_cpp_to_c = false
-cmt_star_cont = false
-cmt_sp_before_star_cont = 0
-cmt_sp_after_star_cont = 0
-pp_indent = ignore
-pp_indent_at_level = false
-pp_space_after = ignore
-pp_indent_region = 0
-pp_region_indent_code = false
-pp_indent_if = 0
-pp_if_indent_code = false
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/label_colon_nl_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/label_colon_nl_1.cfg
deleted file mode 100644
index 5c394f28..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/label_colon_nl_1.cfg
+++ /dev/null
@@ -1,5 +0,0 @@
-nl_before_case = true
-nl_after_semicolon = true
-nl_after_label_colon = true
-nl_remove_extra_newlines = 2
-align_var_struct_span = 3 \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/label_colon_nl_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/label_colon_nl_2.cfg
deleted file mode 100644
index b1fafca7..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/label_colon_nl_2.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-nl_before_case = true
-nl_after_semicolon = true
-nl_remove_extra_newlines = 2
-align_var_struct_span = 3 \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-1.cfg
deleted file mode 100644
index d387a19e..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-1.cfg
+++ /dev/null
@@ -1 +0,0 @@
-mod_infinite_loop = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-2.cfg
deleted file mode 100644
index bd311daf..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-2.cfg
+++ /dev/null
@@ -1 +0,0 @@
-mod_infinite_loop = 2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-4.cfg
deleted file mode 100644
index 07388b83..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-4.cfg
+++ /dev/null
@@ -1 +0,0 @@
-mod_infinite_loop = 4
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/my_conf.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/my_conf.cfg
deleted file mode 100644
index 6bfddbb5..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/my_conf.cfg
+++ /dev/null
@@ -1,17 +0,0 @@
-sp_assign = add
-sp_before_sparen = add
-sp_inside_sparen = remove
-sp_func_def_paren = force
-indent_columns = 4
-indent_with_tabs = 0
-indent_switch_case = 4
-indent_switch_break_with_case = true
-nl_end_of_file = force
-nl_end_of_file_min = 1
-nl_if_brace = add
-nl_else_brace = add
-nl_switch_brace = add
-nl_before_case = true
-cmt_width = 80
-mod_full_brace_for = add
-mod_full_brace_if = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_1.cfg
deleted file mode 100644
index e480c46c..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_1.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-nl_collapse_empty_body = false
-nl_collapse_empty_body_functions = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_2.cfg
deleted file mode 100644
index e7313c5f..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_2.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-nl_collapse_empty_body = true
-nl_collapse_empty_body_functions = false
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_3.cfg
deleted file mode 100644
index b0e47279..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_3.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-nl_collapse_empty_body = false
-nl_collapse_empty_body_functions = false
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_4.cfg
deleted file mode 100644
index 3d58e483..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_collapse_empty_4.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-nl_collapse_empty_body = true
-nl_collapse_empty_body_functions = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_create_one_liner.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_create_one_liner.cfg
deleted file mode 100644
index ec8b120c..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_create_one_liner.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-indent_columns = 3
-nl_create_if_one_liner = true
-nl_create_for_one_liner = true
-nl_create_while_one_liner = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_nl.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_nl.cfg
deleted file mode 100644
index 549e031f..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_nl.cfg
+++ /dev/null
@@ -1,5 +0,0 @@
-input_tab_size = 2
-output_tab_size = 2
-indent_columns = 2
-pp_indent_with_tabs = 0
-align_nl_cont = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_cnt3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_cnt3.cfg
deleted file mode 100644
index 70b1a6b4..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_cnt3.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-input_tab_size = 2
-output_tab_size = 2
-indent_columns = 2
-pp_indent_with_tabs = 0
-pp_indent_count = 3
-pp_indent = force
-align_nl_cont = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_col1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_col1.cfg
deleted file mode 100644
index fe6b63c7..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_col1.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-input_tab_size = 2
-output_tab_size = 2
-indent_columns = 2
-pp_indent_with_tabs = 0
-pp_indent_count = 0
-pp_indent = force
-align_nl_cont = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml-1.cfg
deleted file mode 100644
index 20526ce9..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml-1.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-input_tab_size = 2
-output_tab_size = 2
-indent_columns = 2
-pp_indent_with_tabs = 0
-pp_indent_count = 2
-pp_multiline_define_body_indent = -1
-pp_indent = force
-align_nl_cont = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml-5.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml-5.cfg
deleted file mode 100644
index d09a083d..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml-5.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-input_tab_size = 2
-output_tab_size = 2
-indent_columns = 2
-pp_indent_with_tabs = 0
-pp_indent_count = 2
-pp_multiline_define_body_indent = -5
-pp_indent = force
-align_nl_cont = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml0.cfg
deleted file mode 100644
index 694bdca5..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml0.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-input_tab_size = 2
-output_tab_size = 2
-indent_columns = 2
-pp_indent_with_tabs = 0
-pp_indent_count = 2
-pp_multiline_define_body_indent = 0
-pp_indent = force
-align_nl_cont = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml2.cfg
deleted file mode 100644
index 6a55e5b9..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml2.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-input_tab_size = 2
-output_tab_size = 2
-indent_columns = 2
-pp_indent_with_tabs = 0
-pp_indent_count = 2
-pp_multiline_define_body_indent = 2
-pp_indent = force
-align_nl_cont = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml4.cfg
deleted file mode 100644
index 2206a130..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_align_pp_ml4.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-input_tab_size = 2
-output_tab_size = 2
-indent_columns = 2
-pp_indent_with_tabs = 0
-pp_indent_count = 2
-pp_multiline_define_body_indent = 4
-pp_indent = force
-align_nl_cont = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_with_spaces.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_with_spaces.cfg
deleted file mode 100644
index 1b4c74ab..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_with_spaces.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-input_tab_size = 2
-output_tab_size = 2
-indent_columns = 2
-pp_indent_with_tabs = 0
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/width-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/width-3.cfg
deleted file mode 100644
index 843f6669..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/width-3.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-# width stuff
-sp_arith = force
-indent_columns = 4
-indent_with_tabs = 0
-nl_if_brace = remove
-code_width = 80
-ls_func_split_full = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/width.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/width.cfg
deleted file mode 100644
index 10cb731c..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/width.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-# width stuff
-sp_arith = force
-indent_columns = 4
-indent_with_tabs = 0
-nl_if_brace = remove
-code_width = 60
-ls_func_split_full = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet.cfg
deleted file mode 100644
index 170c9488..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet.cfg
+++ /dev/null
@@ -1,510 +0,0 @@
-# Uncrustify 0.61
-newlines = auto
-input_tab_size = 4
-output_tab_size = 8
-string_escape_char = 92
-string_escape_char2 = 0
-string_replace_tab_chars = true
-tok_split_gte = false
-disable_processing_cmt = "*begin-nonstandard-formatting*"
-enable_processing_cmt = "*end-nonstandard-formatting*"
-utf8_bom = remove
-utf8_byte = false
-utf8_force = false
-indent_columns = 4
-indent_continue = 4
-indent_with_tabs = 0
-indent_cmt_with_tabs = false
-indent_align_string = false
-indent_xml_string = 0
-indent_brace = 0
-indent_braces = false
-indent_braces_no_func = false
-indent_braces_no_class = false
-indent_braces_no_struct = false
-indent_brace_parent = false
-indent_paren_open_brace = false
-indent_namespace = false
-indent_namespace_single_indent = true
-indent_namespace_level = 0
-indent_namespace_limit = 0
-indent_extern = false
-indent_class = true
-indent_class_colon = false
-indent_class_on_colon = false
-indent_constr_colon = false
-indent_ctor_init_leading = 2
-indent_ctor_init = 0
-indent_else_if = false
-indent_var_def_blk = 0
-indent_var_def_cont = false
-indent_shift = 0
-indent_func_def_force_col1 = false
-indent_func_call_param = true
-indent_func_def_param = true
-indent_func_proto_param = true
-indent_func_class_param = false
-indent_func_ctor_var_param = false
-indent_template_param = false
-indent_func_param_double = false
-indent_func_const = 0
-indent_func_throw = 0
-indent_member = 0
-indent_single_line_comments_before = 0
-indent_relative_single_line_comments = true
-indent_switch_case = 0
-indent_case_shift = 0
-indent_case_brace = 0
-indent_col1_comment = false
-indent_label = -4
-indent_access_spec = -4
-indent_access_spec_body = false
-indent_paren_nl = false
-indent_paren_close = 0
-indent_comma_paren = 0
-indent_bool_paren = 0
-indent_first_bool_expr = false
-indent_square_nl = false
-indent_preserve_sql = false
-indent_align_assign = false
-indent_oc_block = false
-indent_oc_block_msg = 0
-indent_oc_msg_colon = 0
-indent_oc_msg_prioritize_first_colon = true
-indent_oc_block_msg_xcode_style = true
-indent_oc_block_msg_from_keyword = false
-indent_oc_block_msg_from_colon = false
-indent_oc_block_msg_from_caret = false
-indent_oc_block_msg_from_brace = false
-indent_min_vbrace_open = 0
-indent_vbrace_open_on_tabstop = false
-sp_arith = force
-sp_assign = add
-sp_cpp_lambda_assign = ignore
-sp_cpp_lambda_square_paren = ignore
-sp_assign_default = add
-sp_before_assign = force
-sp_after_assign = force
-sp_enum_paren = ignore
-sp_enum_assign = add
-sp_enum_before_assign = ignore
-sp_enum_after_assign = ignore
-sp_pp_concat = remove
-sp_pp_stringify = remove
-sp_before_pp_stringify = ignore
-sp_bool = add
-sp_compare = add
-sp_inside_paren = remove
-sp_paren_paren = remove
-sp_cparen_oparen = ignore
-sp_balance_nested_parens = false
-sp_paren_brace = force
-sp_before_ptr_star = force
-sp_before_unnamed_ptr_star = ignore
-sp_between_ptr_star = remove
-sp_after_ptr_star = remove
-sp_after_ptr_star_qualifier = remove
-sp_after_ptr_star_func = remove
-sp_ptr_star_func_type = remove
-sp_ptr_star_paren = remove
-sp_before_ptr_star_func = force
-sp_before_byref = remove
-sp_before_unnamed_byref = remove
-sp_after_byref = force
-sp_after_byref_func = force
-sp_before_byref_func = remove
-sp_after_type = force
-sp_after_decltype = force
-sp_before_template_paren = ignore
-sp_template_angle = remove
-sp_before_angle = remove
-sp_inside_angle = remove
-sp_after_angle = remove
-sp_angle_paren = remove
-sp_angle_paren_empty = remove
-sp_angle_word = force
-sp_angle_shift = remove
-sp_permit_cpp11_shift = false
-sp_before_sparen = force
-sp_inside_sparen = remove
-sp_inside_sparen_close = ignore
-sp_inside_sparen_open = ignore
-sp_after_sparen = add
-sp_sparen_brace = force
-sp_invariant_paren = ignore
-sp_after_invariant_paren = ignore
-sp_special_semi = force
-sp_before_semi = remove
-sp_before_semi_for = remove
-sp_before_semi_for_empty = remove
-sp_between_semi_for_empty = remove
-sp_after_semi = force
-sp_after_semi_for = force
-sp_after_semi_for_empty = remove
-sp_before_square = remove
-sp_before_squares = remove
-sp_inside_square = remove
-sp_after_comma = add
-sp_before_comma = remove
-sp_after_mdatype_commas = remove
-sp_before_mdatype_commas = remove
-sp_between_mdatype_commas = remove
-sp_paren_comma = remove
-sp_before_ellipsis = ignore
-sp_after_class_colon = force
-sp_before_class_colon = force
-sp_after_constr_colon = ignore
-sp_before_constr_colon = ignore
-sp_before_case_colon = remove
-sp_after_operator = ignore
-sp_after_operator_sym = ignore
-sp_after_cast = force
-sp_inside_paren_cast = remove
-sp_cpp_cast_paren = remove
-sp_sizeof_paren = remove
-sp_decltype_paren = remove
-sp_after_tag = ignore
-sp_inside_braces_enum = add
-sp_inside_braces_struct = ignore
-sp_inside_braces = ignore
-sp_inside_braces_empty = remove
-sp_type_func = force
-sp_func_proto_paren = remove
-sp_func_def_paren = remove
-sp_inside_fparens = remove
-sp_inside_fparen = remove
-sp_inside_tparen = remove
-sp_after_tparen_close = remove
-sp_square_fparen = ignore
-sp_fparen_brace = force
-sp_fparen_dbrace = ignore
-sp_func_call_paren = remove
-sp_func_call_paren_empty = remove
-sp_func_call_user_paren = remove
-sp_func_class_paren = remove
-sp_return_paren = add
-sp_attribute_paren = ignore
-sp_defined_paren = remove
-sp_throw_paren = add
-sp_after_throw = ignore
-sp_catch_paren = add
-sp_version_paren = ignore
-sp_scope_paren = ignore
-sp_macro = ignore
-sp_macro_func = ignore
-sp_else_brace = force
-sp_brace_else = force
-sp_brace_typedef = add
-sp_catch_brace = force
-sp_brace_catch = force
-sp_finally_brace = force
-sp_brace_finally = force
-sp_try_brace = force
-sp_getset_brace = add
-sp_word_brace_init_lst = add
-sp_word_brace_ns = add
-sp_before_dc = remove
-sp_after_dc = remove
-sp_d_array_colon = ignore
-sp_not = remove
-sp_inv = remove
-sp_addr = remove
-sp_member = remove
-sp_deref = remove
-sp_sign = remove
-sp_incdec = remove
-sp_before_nl_cont = add
-sp_after_oc_scope = force
-sp_after_oc_colon = remove
-sp_before_oc_colon = remove
-sp_after_oc_dict_colon = force
-sp_before_oc_dict_colon = remove
-sp_after_send_oc_colon = remove
-sp_before_send_oc_colon = remove
-sp_after_oc_type = remove
-sp_after_oc_return_type = remove
-sp_after_oc_at_sel = remove
-sp_after_oc_at_sel_parens = force
-sp_inside_oc_at_sel_parens = remove
-sp_before_oc_block_caret = remove
-sp_after_oc_block_caret = remove
-sp_after_oc_msg_receiver = force
-sp_after_oc_property = force
-sp_cond_colon = add
-sp_cond_colon_before = ignore
-sp_cond_colon_after = ignore
-sp_cond_question = add
-sp_cond_question_before = ignore
-sp_cond_question_after = ignore
-sp_cond_ternary_short = ignore
-sp_case_label = force
-sp_range = ignore
-sp_after_for_colon = force
-sp_before_for_colon = force
-sp_extern_paren = ignore
-sp_cmt_cpp_start = ignore
-sp_cmt_cpp_doxygen = false
-sp_endif_cmt = ignore
-sp_after_new = force
-sp_between_new_paren = remove
-sp_before_tr_cmt = ignore
-sp_num_before_tr_cmt = 0
-sp_annotation_paren = remove
-align_keep_tabs = false
-align_with_tabs = false
-align_on_tabstop = false
-align_number_right = false
-align_keep_extra_space = false
-align_func_params = false
-align_same_func_call_params = false
-align_var_def_span = 0
-align_var_def_star_style = 0
-align_var_def_amp_style = 0
-align_var_def_thresh = 0
-align_var_def_gap = 0
-align_var_def_colon = false
-align_var_def_attribute = false
-align_var_def_inline = false
-align_assign_span = 0
-align_assign_thresh = 0
-align_enum_equ_span = 0
-align_enum_equ_thresh = 0
-align_var_struct_span = 0
-align_var_struct_thresh = 0
-align_var_struct_gap = 0
-align_struct_init_span = 0
-align_typedef_gap = 0
-align_typedef_span = 0
-align_typedef_func = 0
-align_typedef_star_style = 0
-align_typedef_amp_style = 0
-align_right_cmt_span = 0
-align_right_cmt_mix = false
-align_right_cmt_gap = 0
-align_right_cmt_at_col = 0
-align_func_proto_span = 0
-align_func_proto_gap = 0
-align_on_operator = false
-align_mix_var_proto = false
-align_single_line_func = false
-align_single_line_brace = false
-align_single_line_brace_gap = 0
-align_oc_msg_spec_span = 0
-align_nl_cont = false
-align_pp_define_together = false
-align_pp_define_gap = 0
-align_pp_define_span = 0
-align_left_shift = false
-align_oc_msg_colon_span = 20
-align_oc_msg_colon_first = true
-align_oc_decl_colon = true
-nl_collapse_empty_body = false
-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_if_leave_one_liners = true
-nl_oc_msg_leave_one_liner = 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
-nl_assign_square = ignore
-nl_after_square_assign = ignore
-nl_var_def_blk_end_func_top = 0
-nl_typedef_blk_start = 0
-nl_typedef_blk_end = 0
-nl_typedef_blk_in = 0
-nl_var_def_blk_start = 0
-nl_var_def_blk_end = 0
-nl_var_def_blk_in = 0
-nl_fcall_brace = ignore
-nl_enum_brace = remove
-nl_struct_brace = remove
-nl_union_brace = remove
-nl_if_brace = remove
-nl_brace_else = remove
-nl_elseif_brace = ignore
-nl_else_brace = remove
-nl_else_if = remove
-nl_brace_finally = remove
-nl_finally_brace = remove
-nl_try_brace = remove
-nl_getset_brace = remove
-nl_for_brace = remove
-nl_catch_brace = remove
-nl_brace_catch = remove
-nl_brace_square = ignore
-nl_brace_fparen = ignore
-nl_while_brace = remove
-nl_scope_brace = ignore
-nl_unittest_brace = ignore
-nl_version_brace = ignore
-nl_using_brace = remove
-nl_brace_brace = ignore
-nl_do_brace = remove
-nl_brace_while = remove
-nl_switch_brace = remove
-nl_multi_line_cond = false
-nl_multi_line_define = false
-nl_before_case = false
-nl_before_throw = ignore
-nl_after_case = false
-nl_case_colon_brace = remove
-nl_namespace_brace = remove
-nl_template_class = ignore
-nl_class_brace = remove
-nl_class_init_args = ignore
-nl_constr_init_args = ignore
-nl_func_type_name = ignore
-nl_func_type_name_class = ignore
-nl_func_scope_name = ignore
-nl_func_proto_type_name = ignore
-nl_func_paren = ignore
-nl_func_def_paren = ignore
-nl_func_decl_start = ignore
-nl_func_def_start = ignore
-nl_func_decl_start_single = ignore
-nl_func_def_start_single = ignore
-nl_func_decl_args = ignore
-nl_func_def_args = ignore
-nl_func_decl_end = ignore
-nl_func_def_end = ignore
-nl_func_decl_end_single = ignore
-nl_func_def_end_single = ignore
-nl_func_decl_empty = ignore
-nl_func_def_empty = ignore
-nl_oc_msg_args = false
-nl_fdef_brace = remove
-nl_cpp_ldef_brace = ignore
-nl_return_expr = ignore
-nl_after_semicolon = false
-nl_paren_dbrace_open = ignore
-nl_after_brace_open = false
-nl_after_brace_open_cmt = false
-nl_after_vbrace_open = false
-nl_after_vbrace_open_empty = false
-nl_after_brace_close = false
-nl_after_vbrace_close = false
-nl_brace_struct_var = ignore
-nl_define_macro = false
-nl_squeeze_ifdef = false
-nl_before_if = ignore
-nl_after_if = ignore
-nl_before_for = ignore
-nl_after_for = ignore
-nl_before_while = ignore
-nl_after_while = ignore
-nl_before_switch = ignore
-nl_after_switch = ignore
-nl_before_do = ignore
-nl_after_do = ignore
-nl_ds_struct_enum_cmt = false
-nl_ds_struct_enum_close_brace = false
-nl_class_colon = ignore
-nl_constr_colon = ignore
-nl_create_if_one_liner = false
-nl_create_for_one_liner = false
-nl_create_while_one_liner = false
-pos_arith = ignore
-pos_assign = ignore
-pos_bool = ignore
-pos_compare = ignore
-pos_conditional = ignore
-pos_comma = ignore
-pos_class_comma = ignore
-pos_constr_comma = ignore
-pos_class_colon = ignore
-pos_constr_colon = ignore
-code_width = 0
-ls_for_split_full = false
-ls_func_split_full = false
-ls_code_width = false
-nl_max = 3
-nl_after_func_proto = 0
-nl_after_func_proto_group = 0
-nl_after_func_body = 2
-nl_after_func_body_class = 0
-nl_after_func_body_one_liner = 0
-nl_before_block_comment = 0
-nl_before_c_comment = 0
-nl_before_cpp_comment = 0
-nl_after_multiline_comment = false
-nl_after_label_colon = false
-nl_after_struct = 0
-nl_after_class = 0
-nl_before_access_spec = 0
-nl_after_access_spec = 0
-nl_comment_func_def = 0
-nl_after_try_catch_finally = 0
-nl_around_cs_property = 0
-nl_between_get_set = 0
-nl_property_brace = force
-eat_blanks_after_open_brace = true
-eat_blanks_before_close_brace = true
-nl_remove_extra_newlines = 0
-nl_before_return = false
-nl_after_return = false
-nl_after_annotation = ignore
-nl_between_annotation = ignore
-mod_full_brace_do = ignore
-mod_full_brace_for = ignore
-mod_full_brace_function = ignore
-mod_full_brace_if = ignore
-mod_full_brace_if_chain = 0
-mod_full_brace_nl = 0
-mod_full_brace_while = ignore
-mod_full_brace_using = ignore
-mod_paren_on_return = ignore
-mod_pawn_semicolon = false
-mod_full_paren_if_bool = false
-mod_remove_extra_semicolon = true
-mod_add_long_function_closebrace_comment = 0
-mod_add_long_namespace_closebrace_comment = 0
-mod_add_long_switch_closebrace_comment = 0
-mod_add_long_ifdef_endif_comment = 0
-mod_add_long_ifdef_else_comment = 0
-mod_sort_import = false
-mod_sort_using = false
-mod_sort_include = false
-mod_move_case_break = false
-mod_case_brace = ignore
-mod_remove_empty_return = true
-cmt_width = 0
-cmt_reflow_mode = 0
-cmt_convert_tab_to_spaces = false
-cmt_indent_multi = false
-cmt_c_group = false
-cmt_c_nl_start = false
-cmt_c_nl_end = false
-cmt_cpp_group = false
-cmt_cpp_nl_start = false
-cmt_cpp_nl_end = false
-cmt_cpp_to_c = false
-cmt_star_cont = false
-cmt_sp_before_star_cont = 0
-cmt_sp_after_star_cont = 0
-cmt_multi_check_last = false
-cmt_insert_file_header = ""
-cmt_insert_file_footer = ""
-cmt_insert_func_header = ""
-cmt_insert_class_header = ""
-cmt_insert_oc_msg_header = ""
-cmt_insert_before_preproc = false
-pp_indent = ignore
-pp_indent_at_level = false
-pp_indent_count = 1
-pp_space_after = ignore
-pp_space_count = 0
-pp_indent_region = 0
-pp_region_indent_code = false
-pp_indent_if = 0
-pp_if_indent_code = false
-pp_define_at_level = false
-pp_multiline_define_body_indent = 4
-
-# Add or remove newline between method declaration and '{'
-nl_oc_mdef_brace = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/d.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/d.cfg
deleted file mode 100644
index d45001c5..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/d.cfg
+++ /dev/null
@@ -1,50 +0,0 @@
-sp_before_semi_for = remove
-sp_arith = force
-sp_assign = force
-sp_compare = force
-sp_inside_paren = remove
-sp_paren_paren = remove
-sp_before_ptr_star = force
-sp_between_ptr_star = remove
-sp_after_ptr_star = remove
-sp_after_ptr_star_func = remove
-sp_before_sparen = force
-sp_inside_sparen = remove
-sp_inside_for = remove
-sp_before_square = remove
-sp_before_squares = remove
-sp_after_comma = force
-sp_after_cast = remove
-sp_func_proto_paren = remove
-sp_func_def_paren = remove
-sp_inside_fparen = remove
-sp_func_call_paren = remove
-sp_range = force
-sp_while_paren_open = force
-indent_columns = 4
-indent_with_tabs = 0
-indent_class = true
-indent_case_brace = 4
-indent_label = 2
-nl_var_def_blk_end_func_top = 1
-nl_var_def_blk_end = 1
-nl_enum_brace = add
-nl_if_brace = add
-nl_else_brace = add
-nl_else_if = remove
-nl_for_brace = add
-nl_before_case = true
-nl_fdef_brace = add
-nl_after_brace_open = true
-eat_blanks_after_open_brace = true
-eat_blanks_before_close_brace = true
-nl_after_return = true
-align_var_def_span = 2
-align_var_def_star_style = 1
-align_assign_span = 1
-align_enum_equ_span = 4
-align_var_class_span = 2
-align_typedef_gap = 3
-align_typedef_span = 5
-align_typedef_star_style = 1
-align_right_cmt_span = 3
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/mod_full_brace_if_chain_only-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/mod_full_brace_if_chain_only-t.cfg
deleted file mode 100644
index ec61c84b..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/mod_full_brace_if_chain_only-t.cfg
+++ /dev/null
@@ -1 +0,0 @@
-mod_full_brace_if_chain_only = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_inside_fparen-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_inside_fparen-f.cfg
deleted file mode 100644
index 2b159a36..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_inside_fparen-f.cfg
+++ /dev/null
@@ -1 +0,0 @@
-sp_inside_fparen = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/width-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/width-2.cfg
deleted file mode 100644
index 6c18a158..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/width-2.cfg
+++ /dev/null
@@ -1,13 +0,0 @@
-# width stuff
-sp_arith = force
-indent_columns = 4
-indent_with_tabs = 0
-nl_if_brace = remove
-code_width = 60
-ls_for_split_full = true
-cmt_width = 60
-cmt_c_group = true
-cmt_c_nl_end = true
-cmt_cpp_group = true
-cmt_cpp_to_c = true
-cmt_star_cont = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2224.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2224.cfg
deleted file mode 100644
index 8973a14f..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2224.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-output_tab_size = 4
-indent_columns = 4
-nl_create_if_one_liner = true
-mod_full_brace_if = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3220-ir.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3220-ir.cfg
deleted file mode 100644
index 17d298b2..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3220-ir.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-indent_with_tabs = 0
-sp_after_ptr_star = ignore
-sp_after_ptr_star_func = ignore
-sp_after_ptr_star_trailing = ignore
-sp_after_ptr_star_qualifier = ignore
-sp_before_ptr_star = remove
-sp_before_ptr_star_func = ignore
-sp_before_ptr_star_trailing = ignore
-sp_before_unnamed_ptr_star = ignore
-sp_between_ptr_star = ignore
-sp_ptr_star_paren = ignore
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-29935.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-29935.cfg
deleted file mode 100644
index 28d338ee..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-29935.cfg
+++ /dev/null
@@ -1,148 +0,0 @@
-input_tab_size = 4
-string_replace_tab_chars = true
-disable_processing_cmt = "*begin-nonstandard-formatting*"
-enable_processing_cmt = "*end-nonstandard-formatting*"
-utf8_bom = remove
-sp_arith = add
-sp_assign = add
-sp_assign_default = add
-sp_enum_assign = add
-sp_pp_concat = remove
-sp_pp_stringify = remove
-sp_bool = add
-sp_compare = add
-sp_inside_paren = remove
-sp_paren_paren = remove
-sp_paren_brace = force
-sp_after_type = ignore
-sp_template_angle = remove
-sp_before_angle = remove
-sp_inside_angle = remove
-sp_angle_paren = remove
-sp_angle_paren_empty = remove
-sp_angle_word = add
-sp_angle_shift = remove
-sp_before_sparen = force
-sp_inside_sparen = remove
-sp_after_sparen = add
-sp_sparen_brace = force
-sp_special_semi = force
-sp_before_semi_for = remove
-sp_before_semi_for_empty = remove
-sp_between_semi_for_empty = remove
-sp_after_semi_for_empty = remove
-sp_before_square = remove
-sp_before_squares = remove
-sp_inside_square = remove
-sp_after_comma = add
-sp_before_comma = ignore
-sp_after_mdatype_commas = remove
-sp_before_mdatype_commas = remove
-sp_between_mdatype_commas = remove
-sp_paren_comma = remove
-sp_after_class_colon = force
-sp_before_class_colon = force
-sp_after_operator = remove
-sp_after_operator_sym = remove
-sp_after_operator_sym_empty = remove
-sp_after_cast = remove
-sp_inside_paren_cast = remove
-sp_cpp_cast_paren = remove
-sp_sizeof_paren = remove
-sp_inside_braces_enum = add
-sp_inside_braces_empty = remove
-sp_func_proto_paren = remove
-sp_func_def_paren = remove
-sp_inside_fparens = remove
-sp_inside_fparen = remove
-sp_fparen_brace = add
-sp_func_call_paren = remove
-sp_func_call_paren_empty = remove
-sp_func_call_user_paren = remove
-sp_func_class_paren = remove
-sp_return_paren = add
-sp_defined_paren = remove
-sp_throw_paren = add
-sp_catch_paren = add
-sp_brace_typedef = add
-sp_getset_brace = add
-sp_after_dc = remove
-sp_after_oc_scope = force
-sp_after_oc_colon = remove
-sp_before_oc_colon = remove
-sp_after_oc_dict_colon = force
-sp_before_oc_dict_colon = remove
-sp_after_send_oc_colon = force
-sp_before_send_oc_colon = remove
-sp_after_oc_type = remove
-sp_after_oc_return_type = remove
-sp_after_oc_at_sel = remove
-sp_inside_oc_at_sel_parens = remove
-sp_cond_colon = add
-sp_cond_question = add
-sp_after_new = force
-sp_between_new_paren = remove
-sp_skip_vbrace_tokens = true
-indent_columns = 4
-indent_with_tabs = 0
-indent_cs_delegate_brace = true
-indent_namespace = true
-indent_class = true
-indent_func_call_param = true
-indent_func_def_param = true
-indent_func_proto_param = true
-indent_switch_case = 4
-indent_label = -4
-indent_access_spec = -4
-indent_align_assign = false
-indent_align_paren = false
-indent_oc_block_msg_xcode_style = true
-indent_off_after_return_new = true
-indent_single_after_return = true
-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_oc_msg_leave_one_liner = true
-nl_start_of_file = remove
-nl_end_of_file = force
-nl_end_of_file_min = 1
-nl_assign_brace = force
-nl_enum_brace = force
-nl_struct_brace = force
-nl_union_brace = force
-nl_if_brace = force
-nl_brace_else = force
-nl_else_brace = force
-nl_else_if = remove
-nl_brace_finally = force
-nl_finally_brace = force
-nl_try_brace = force
-nl_getset_brace = force
-nl_for_brace = force
-nl_catch_brace = force
-nl_brace_catch = force
-nl_while_brace = force
-nl_using_brace = force
-nl_do_brace = force
-nl_brace_while = force
-nl_switch_brace = force
-nl_case_colon_brace = force
-nl_namespace_brace = force
-nl_class_brace = force
-nl_fdef_brace = force
-nl_max = 3
-nl_after_func_body = 2
-nl_property_brace = force
-eat_blanks_after_open_brace = true
-eat_blanks_before_close_brace = true
-align_left_shift = false
-cmt_convert_tab_to_spaces = true
-cmt_indent_multi = false
-cmt_multi_check_last = false
-mod_remove_extra_semicolon = true
-mod_remove_empty_return = true
-use_options_overriding_for_qt_macros = false
-warn_level_tabs_found_in_verbatim_string_literals = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-32657.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-32657.cfg
deleted file mode 100644
index 775b6abb..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-32657.cfg
+++ /dev/null
@@ -1,316 +0,0 @@
-input_tab_size=4
-string_replace_tab_chars=true
-tok_split_gte=false
-disable_processing_cmt=*begin-nonstandard-formatting*
-enable_processing_cmt=*end-nonstandard-formatting*
-utf8_bom=remove
-utf8_byte=false
-utf8_force=false
-indent_columns=4
-indent_with_tabs=0
-indent_cmt_with_tabs=false
-indent_align_string=false
-indent_braces=false
-indent_braces_no_func=false
-indent_braces_no_class=false
-indent_braces_no_struct=false
-indent_brace_parent=false
-indent_cs_delegate_brace=true
-indent_namespace=true
-indent_extern=false
-indent_class=true
-indent_class_colon=false
-indent_else_if=false
-indent_var_def_cont=false
-indent_func_call_param=true
-indent_func_def_param=true
-indent_func_proto_param=true
-indent_func_class_param=false
-indent_func_ctor_var_param=false
-indent_template_param=false
-indent_func_param_double=false
-indent_member_single=false
-indent_relative_single_line_comments=false
-indent_switch_case=4
-indent_case_shift=0
-indent_case_brace=0
-indent_col1_comment=false
-indent_label=-4
-indent_access_spec=-4
-indent_paren_nl=false
-indent_comma_paren=0
-indent_bool_paren=0
-indent_first_bool_expr=false
-indent_square_nl=false
-indent_preserve_sql=false
-indent_align_paren=false
-indent_oc_block_msg_xcode_style=true
-indent_off_after_return_new=true
-indent_single_after_return=true
-sp_arith=add
-sp_assign=add
-sp_assign_default=add
-sp_enum_assign=add
-sp_pp_concat=remove
-sp_pp_stringify=remove
-sp_bool=add
-sp_compare=add
-sp_inside_paren=remove
-sp_paren_paren=remove
-sp_balance_nested_parens=false
-sp_paren_brace=force
-sp_after_type=ignore
-sp_template_angle=remove
-sp_before_angle=remove
-sp_inside_angle=remove
-sp_angle_paren=remove
-sp_angle_paren_empty=remove
-sp_angle_word=add
-sp_angle_shift=remove
-sp_before_sparen=force
-sp_inside_sparen=remove
-sp_after_sparen=add
-sp_sparen_brace=force
-sp_special_semi=force
-sp_before_semi=remove
-sp_before_semi_for=remove
-sp_before_semi_for_empty=remove
-sp_between_semi_for_empty=remove
-sp_after_semi=add
-sp_after_semi_for=force
-sp_after_semi_for_empty=remove
-sp_before_square=remove
-sp_before_squares=remove
-sp_inside_square=remove
-sp_after_comma=add
-sp_before_comma=ignore
-sp_after_mdatype_commas=remove
-sp_before_mdatype_commas=remove
-sp_between_mdatype_commas=remove
-sp_paren_comma=remove
-sp_after_class_colon=force
-sp_before_class_colon=force
-sp_before_case_colon=remove
-sp_after_operator=remove
-sp_after_operator_sym=remove
-sp_after_operator_sym_empty=remove
-sp_after_cast=remove
-sp_inside_paren_cast=remove
-sp_cpp_cast_paren=remove
-sp_sizeof_paren=remove
-sp_inside_braces_enum=add
-sp_inside_braces_empty=remove
-sp_type_func=ignore
-sp_func_proto_paren=remove
-sp_func_def_paren=remove
-sp_inside_fparens=remove
-sp_inside_fparen=remove
-sp_fparen_brace=add
-sp_func_call_paren=remove
-sp_func_call_paren_empty=remove
-sp_func_call_user_paren=remove
-sp_func_class_paren=remove
-sp_return_paren=add
-sp_defined_paren=remove
-sp_throw_paren=add
-sp_catch_paren=add
-sp_brace_typedef=add
-sp_getset_brace=add
-sp_after_dc=remove
-sp_not=remove
-sp_inv=remove
-sp_addr=remove
-sp_member=remove
-sp_deref=remove
-sp_sign=remove
-sp_incdec=remove
-sp_before_nl_cont=add
-sp_after_oc_scope=force
-sp_after_oc_colon=remove
-sp_before_oc_colon=remove
-sp_after_oc_dict_colon=force
-sp_before_oc_dict_colon=remove
-sp_after_send_oc_colon=force
-sp_before_send_oc_colon=remove
-sp_after_oc_type=remove
-sp_after_oc_return_type=remove
-sp_after_oc_at_sel=remove
-sp_inside_oc_at_sel_parens=remove
-sp_cond_colon=add
-sp_cond_question=add
-sp_case_label=ignore
-sp_after_new=force
-sp_between_new_paren=remove
-sp_skip_vbrace_tokens=true
-align_keep_tabs=false
-align_with_tabs=false
-align_on_tabstop=false
-align_number_right=false
-align_func_params=false
-align_same_func_call_params=false
-align_var_def_colon=false
-align_var_def_attribute=false
-align_var_def_inline=false
-align_right_cmt_mix=false
-align_on_operator=false
-align_mix_var_proto=false
-align_single_line_func=false
-align_single_line_brace=false
-align_nl_cont=false
-align_left_shift=false
-nl_collapse_empty_body=false
-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_if_leave_one_liners=false
-nl_oc_msg_leave_one_liner=true
-nl_start_of_file=remove
-nl_end_of_file=force
-nl_end_of_file_min=1
-nl_assign_brace=force
-nl_enum_brace=force
-nl_struct_brace=force
-nl_union_brace=force
-nl_if_brace=force
-nl_brace_else=force
-nl_else_brace=force
-nl_else_if=remove
-nl_brace_finally=force
-nl_finally_brace=force
-nl_try_brace=force
-nl_getset_brace=force
-nl_for_brace=force
-nl_catch_brace=force
-nl_brace_catch=force
-nl_while_brace=force
-nl_using_brace=force
-nl_brace_brace=ignore
-nl_do_brace=force
-nl_brace_while=force
-nl_switch_brace=force
-nl_multi_line_cond=false
-nl_before_case=false
-nl_after_case=false
-nl_case_colon_brace=force
-nl_namespace_brace=force
-nl_template_class=ignore
-nl_class_brace=force
-nl_fdef_brace=force
-nl_after_semicolon=false
-nl_after_brace_open=false
-nl_after_brace_open_cmt=false
-nl_after_vbrace_open=false
-nl_after_vbrace_open_empty=false
-nl_after_brace_close=false
-nl_after_vbrace_close=false
-nl_squeeze_ifdef=false
-nl_ds_struct_enum_cmt=false
-nl_ds_struct_enum_close_brace=false
-nl_namespace_two_to_one_liner=false
-nl_create_if_one_liner=false
-nl_create_for_one_liner=false
-nl_create_while_one_liner=false
-nl_create_func_def_one_liner=false
-ls_for_split_full=false
-ls_func_split_full=false
-nl_max=3
-nl_after_func_body=2
-nl_after_multiline_comment=false
-nl_property_brace=force
-eat_blanks_after_open_brace=true
-eat_blanks_before_close_brace=true
-nl_after_return=false
-mod_full_brace_if_chain=0
-mod_paren_on_return=ignore
-mod_pawn_semicolon=false
-mod_full_paren_if_bool=false
-mod_remove_extra_semicolon=true
-mod_move_case_break=false
-mod_remove_empty_return=true
-cmt_convert_tab_to_spaces=True
-cmt_indent_multi=false
-cmt_c_group=false
-cmt_c_nl_start=false
-cmt_c_nl_end=false
-cmt_cpp_group=false
-cmt_cpp_nl_start=false
-cmt_cpp_nl_end=false
-cmt_cpp_to_c=false
-cmt_star_cont=false
-cmt_multi_check_last=false
-cmt_insert_before_preproc=false
-pp_space_after=ignore
-use_options_overriding_for_qt_macros=false
-warn_level_tabs_found_in_verbatim_string_literals=1
-# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
-# can be turned back on at any time
-mod_add_long_ifdef_else_comment=0
-mod_add_long_ifdef_endif_comment=0
-
-# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
-#
-# x = o.Func2(a, b,
-# y);
-# o.Func2(a, b,
-# y);
-#
-# ...but setting it 'true' is often worse:
-#
-# ExtraReallyLongType reallyLongVariableName = someTest
-# ? someTrueExpr
-# : someFalseExpr
-#
-# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
-# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
-# (currently unreported)
-indent_align_assign=false
-
-# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
-# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
-# comment line at the same level of indentation.
-# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
-# (test using Runtime/Allocator/BucketAllocator.h)
-# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
-#sp_cmt_cpp_start=add
-sp_cmt_cpp_start=ignore
-
-# https://sourceforge.net/p/uncrustify/bugs/619/
-#sp_endif_cmt=force
-sp_endif_cmt=ignore
-
-# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
-# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
-#nl_cpp_ldef_brace=force
-
-# workaround for some nasty macroing we're doing
-set COMMENT PLATFORM_EXCEPTION_SAFEGUARD_PROLOG
-
-# without this, uncrustify will parse and process the contents of #defines, which is super unstable. very easy to get into edge cases it does not support,
-# so just have it treat #defines as black boxes. this will keep all of the contents of the #define as unprocessed.
-pp_ignore_define_body=true
-
-# macros in #includes aren't known to Uncrustify, so have to inform it here for macros that will confuse it
-set MACRO_FUNC ATTRIBUTE_ALIGN
-
-# we have some truly insane deep namespace nesting in il2cpp. :/
-indent_namespace_single_indent=true
-
-# needed for fmod apparently (via HEVAGTool.h - the *'s near F_STDCALL will be interpreted as ARITH without this)
-set COMMENT F_STDCALL
-
-# https://github.com/uncrustify/uncrustify/pull/602
-# https://sourceforge.net/p/uncrustify/bugs/633/
-set COMMENT __cdecl
-set COMMENT __clrcall
-set COMMENT __fastcall
-set COMMENT __stdcall
-set COMMENT __thiscall
-set COMMENT __vectorcall
-set COMMENT WINAPI
-
-# We need to make FAKE_FUNCTION a PROTO_WRAP macro function to help properly tokenize it's parameters.
-# Previously parameters with CT_AMP and CT_STAR were tokenized as CT_ARITH. Support for optional parenthesis added in github PR #629.
-set PROTO_WRAP FAKE_FUNCTION
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align-330.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align-330.cfg
deleted file mode 100644
index 2b1e6107..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align-330.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-sp_after_comma = force
-indent_columns = 3
-pp_multiline_define_body_indent = 3
-nl_class_colon = force
-align_nl_cont = true
-align_pp_define_gap = 4
-align_pp_define_span = 3
-indent_with_tabs = 0
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/avalon.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/avalon.cfg
deleted file mode 100644
index aef9ed44..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/avalon.cfg
+++ /dev/null
@@ -1,14 +0,0 @@
-sp_before_byref = remove
-sp_before_byref_func = remove
-sp_before_square = force
-sp_func_proto_paren = remove
-sp_func_def_paren = remove
-sp_before_vardef_square = force
-indent_columns = 2
-nl_start_of_file = remove
-nl_struct_brace = remove
-nl_fdef_brace = force
-nl_after_func_body = 2
-eat_blanks_after_open_brace = true
-eat_blanks_before_close_brace = true
-mod_full_brace_if = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/avalon2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/avalon2.cfg
deleted file mode 100644
index 97783b66..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/avalon2.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-sp_before_ptr_star = remove
-sp_before_byref = remove
-sp_before_angle = remove
-sp_inside_angle = remove
-sp_angle_paren = remove
-sp_angle_paren_empty = remove
-sp_angle_word = force
-sp_before_square = force
-indent_columns = 2
-nl_if_brace = remove
-nl_after_func_proto_group = 2 \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/avalon4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/avalon4.cfg
deleted file mode 100644
index 1577d2b3..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/avalon4.cfg
+++ /dev/null
@@ -1,13 +0,0 @@
-sp_before_ptr_star = remove
-sp_after_ptr_star = force
-sp_before_angle = remove
-sp_inside_angle = remove
-sp_after_comma = force
-sp_before_dc = remove
-sp_after_ptr_star_qualifier = remove
-indent_columns = 2
-nl_end_of_file = force
-nl_end_of_file_min = 1
-nl_if_brace = remove
-nl_func_decl_args = remove
-mod_full_brace_if = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_031.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_031.cfg
deleted file mode 100644
index fe2182c9..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_031.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-indent_columns = 3
-indent_class = true
-indent_label = 2
-indent_access_spec = 2 \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1349.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1349.cfg
deleted file mode 100644
index abe4253c..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1349.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-indent_columns = 4
-code_width = 115
-align_struct_init_span = 5 \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_409-create.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_409-create.cfg
deleted file mode 100644
index ec0f6ca4..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_409-create.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-nl_create_if_one_liner = true
-nl_create_for_one_liner = true
-nl_create_while_one_liner = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-nl_func-add2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-nl_func-add2.cfg
deleted file mode 100644
index f8a35e0d..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-nl_func-add2.cfg
+++ /dev/null
@@ -1,18 +0,0 @@
-# moves class colon ops to the end of line
-sp_before_byref = remove
-sp_after_comma = force
-sp_before_dc = remove
-sp_after_dc = remove
-indent_columns = 3
-indent_class = true
-indent_access_spec = 2
-nl_class_init_args = add
-nl_constr_init_args = remove
-nl_fdef_brace = force
-nl_class_colon = add
-nl_constr_colon = remove
-eat_blanks_after_open_brace = true
-pos_class_comma = trail
-align_nl_cont = true
-align_pp_define_gap = 4
-align_pp_define_span = 3 \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/if_chain_braces_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/if_chain_braces_2.cfg
deleted file mode 100644
index 6547c095..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/if_chain_braces_2.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-mod_full_brace_if_chain = 1
-mod_full_brace_if_chain_only = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_full_brace_if_chain-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_full_brace_if_chain-1.cfg
deleted file mode 100644
index a0b0f5d3..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_full_brace_if_chain-1.cfg
+++ /dev/null
@@ -1 +0,0 @@
-mod_full_brace_if_chain = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_full_brace_if_chain-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_full_brace_if_chain-2.cfg
deleted file mode 100644
index c78f179b..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_full_brace_if_chain-2.cfg
+++ /dev/null
@@ -1 +0,0 @@
-mod_full_brace_if_chain = 2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_full_brace_if_chain-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_full_brace_if_chain-3.cfg
deleted file mode 100644
index dd552dd0..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_full_brace_if_chain-3.cfg
+++ /dev/null
@@ -1 +0,0 @@
-mod_full_brace_if_chain = 3
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_body-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_body-2.cfg
deleted file mode 100644
index 9c9e7d57..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_body-2.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-sp_fparen_brace = force
-indent_class = true
-nl_class_leave_one_liners = true
-nl_fdef_brace = remove
-nl_after_func_body = 4
-nl_after_func_body_one_liner = 2
-eat_blanks_before_close_brace = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_body.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_body.cfg
deleted file mode 100644
index 68633b6d..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_body.cfg
+++ /dev/null
@@ -1,5 +0,0 @@
-sp_fparen_brace = force
-indent_class = true
-nl_fdef_brace = remove
-nl_after_func_body = 4
-eat_blanks_before_close_brace = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pp_multi_comment.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pp_multi_comment.cfg
deleted file mode 100644
index 0c23b380..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pp_multi_comment.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-sp_after_comma = force
-indent_columns = 3
-nl_class_colon = force
-align_nl_cont = true
-align_pp_define_gap = 4
-align_pp_define_span = 3
-indent_with_tabs = 0
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ptr_star-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ptr_star-3.cfg
deleted file mode 100644
index 3a5ed163..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ptr_star-3.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-sp_before_ptr_star = force
-sp_before_unnamed_ptr_star = remove
-sp_between_ptr_star = remove
-sp_after_ptr_star = remove
-sp_after_ptr_star_func = force
-sp_after_ptr_star_trailing = force
-sp_before_ptr_star_trailing = remove
-sp_after_ptr_star_qualifier = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_brace_catch.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_brace_catch.cfg
deleted file mode 100644
index 7ee0209d..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_brace_catch.cfg
+++ /dev/null
@@ -1 +0,0 @@
-sp_brace_catch = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_catch_brace.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_catch_brace.cfg
deleted file mode 100644
index d2da6d91..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_catch_brace.cfg
+++ /dev/null
@@ -1 +0,0 @@
-sp_catch_brace = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U01-Cs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U01-Cs.cfg
deleted file mode 100644
index 03d51601..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U01-Cs.cfg
+++ /dev/null
@@ -1,282 +0,0 @@
-input_tab_size=4
-string_replace_tab_chars=true
-tok_split_gte=false
-disable_processing_cmt=*begin-nonstandard-formatting*
-enable_processing_cmt=*end-nonstandard-formatting*
-utf8_bom=remove
-utf8_byte=false
-utf8_force=false
-indent_columns=4
-indent_with_tabs=0
-indent_cmt_with_tabs=false
-indent_align_string=false
-indent_braces=false
-indent_braces_no_func=false
-indent_braces_no_class=false
-indent_braces_no_struct=false
-indent_brace_parent=false
-indent_cs_delegate_brace=true
-indent_namespace=true
-indent_extern=false
-indent_class=true
-indent_class_colon=false
-indent_else_if=false
-indent_var_def_cont=false
-indent_func_call_param=true
-indent_func_def_param=true
-indent_func_proto_param=true
-indent_func_class_param=false
-indent_func_ctor_var_param=false
-indent_template_param=false
-indent_func_param_double=false
-indent_relative_single_line_comments=false
-indent_switch_case=4
-indent_case_shift=0
-indent_case_brace=0
-indent_col1_comment=false
-indent_label=-4
-indent_access_spec=-4
-indent_paren_nl=false
-indent_comma_paren=0
-indent_bool_paren=0
-indent_first_bool_expr=false
-indent_square_nl=false
-indent_preserve_sql=false
-indent_oc_block_msg_xcode_style=true
-indent_off_after_return_new=true
-indent_single_after_return=true
-sp_arith=add
-sp_assign=add
-sp_assign_default=add
-sp_enum_assign=add
-sp_pp_concat=remove
-sp_pp_stringify=remove
-sp_bool=add
-sp_compare=add
-sp_inside_paren=remove
-sp_paren_paren=remove
-sp_balance_nested_parens=false
-sp_paren_brace=force
-sp_after_type=ignore
-sp_template_angle=remove
-sp_before_angle=remove
-sp_inside_angle=remove
-sp_angle_paren=remove
-sp_angle_paren_empty=remove
-sp_angle_word=add
-sp_angle_shift=remove
-sp_before_sparen=force
-sp_inside_sparen=remove
-sp_after_sparen=add
-sp_sparen_brace=force
-sp_special_semi=force
-sp_before_semi=remove
-sp_before_semi_for=remove
-sp_before_semi_for_empty=remove
-sp_between_semi_for_empty=remove
-sp_after_semi=add
-sp_after_semi_for=force
-sp_after_semi_for_empty=remove
-sp_before_square=remove
-sp_before_squares=remove
-sp_inside_square=remove
-sp_after_comma=add
-sp_before_comma=ignore
-sp_after_mdatype_commas=remove
-sp_before_mdatype_commas=remove
-sp_between_mdatype_commas=remove
-sp_paren_comma=remove
-sp_after_class_colon=force
-sp_before_class_colon=force
-sp_before_case_colon=remove
-sp_after_operator=remove
-sp_after_operator_sym=remove
-sp_after_operator_sym_empty=remove
-sp_after_cast=remove
-sp_inside_paren_cast=remove
-sp_cpp_cast_paren=remove
-sp_sizeof_paren=remove
-sp_inside_braces_enum=add
-sp_inside_braces_empty=remove
-sp_type_func=ignore
-sp_func_proto_paren=remove
-sp_func_def_paren=remove
-sp_inside_fparens=remove
-sp_inside_fparen=remove
-sp_fparen_brace=add
-sp_func_call_paren=remove
-sp_func_call_paren_empty=remove
-sp_func_call_user_paren=remove
-sp_func_class_paren=remove
-sp_return_paren=add
-sp_defined_paren=remove
-sp_throw_paren=add
-sp_catch_paren=add
-sp_brace_typedef=add
-sp_getset_brace=add
-sp_after_dc=remove
-sp_not=remove
-sp_inv=remove
-sp_addr=remove
-sp_member=remove
-sp_deref=remove
-sp_sign=remove
-sp_incdec=remove
-sp_before_nl_cont=add
-sp_after_oc_scope=force
-sp_after_oc_colon=remove
-sp_before_oc_colon=remove
-sp_after_oc_dict_colon=force
-sp_before_oc_dict_colon=remove
-sp_after_send_oc_colon=force
-sp_before_send_oc_colon=remove
-sp_after_oc_type=remove
-sp_after_oc_return_type=remove
-sp_after_oc_at_sel=remove
-sp_inside_oc_at_sel_parens=remove
-sp_cond_colon=add
-sp_cond_question=add
-sp_case_label=ignore
-sp_after_new=force
-sp_between_new_paren=remove
-sp_skip_vbrace_tokens=true
-align_keep_tabs=false
-align_with_tabs=false
-align_on_tabstop=false
-align_number_right=false
-align_func_params=false
-align_same_func_call_params=false
-align_var_def_colon=false
-align_var_def_attribute=false
-align_var_def_inline=false
-align_right_cmt_mix=false
-align_on_operator=false
-align_mix_var_proto=false
-align_single_line_func=false
-align_single_line_brace=false
-align_nl_cont=false
-align_left_shift=false
-nl_collapse_empty_body=false
-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_if_leave_one_liners=false
-nl_oc_msg_leave_one_liner=true
-nl_start_of_file=remove
-nl_end_of_file=force
-nl_end_of_file_min=1
-nl_assign_brace=force
-nl_enum_brace=force
-nl_struct_brace=force
-nl_union_brace=force
-nl_if_brace=force
-nl_brace_else=force
-nl_else_brace=force
-nl_else_if=remove
-nl_brace_finally=force
-nl_finally_brace=force
-nl_try_brace=force
-nl_getset_brace=force
-nl_for_brace=force
-nl_catch_brace=force
-nl_brace_catch=force
-nl_while_brace=force
-nl_using_brace=force
-nl_brace_brace=ignore
-nl_do_brace=force
-nl_brace_while=force
-nl_switch_brace=force
-nl_multi_line_cond=false
-nl_before_case=false
-nl_after_case=false
-nl_case_colon_brace=force
-nl_namespace_brace=force
-nl_template_class=ignore
-nl_fdef_brace=force
-nl_after_semicolon=false
-nl_after_brace_open=false
-nl_after_brace_open_cmt=false
-nl_after_vbrace_open=false
-nl_after_vbrace_open_empty=false
-nl_after_brace_close=false
-nl_after_vbrace_close=false
-nl_squeeze_ifdef=false
-nl_ds_struct_enum_cmt=false
-nl_ds_struct_enum_close_brace=false
-nl_create_if_one_liner=false
-nl_create_for_one_liner=false
-nl_create_while_one_liner=false
-ls_for_split_full=false
-ls_func_split_full=false
-nl_max=3
-nl_after_func_body=2
-nl_after_multiline_comment=false
-nl_property_brace=force
-eat_blanks_after_open_brace=true
-eat_blanks_before_close_brace=true
-nl_after_return=false
-mod_full_brace_if_chain=0
-mod_paren_on_return=ignore
-mod_pawn_semicolon=false
-mod_full_paren_if_bool=false
-mod_remove_extra_semicolon=true
-mod_move_case_break=false
-mod_remove_empty_return=true
-cmt_indent_multi=false
-cmt_c_group=false
-cmt_c_nl_start=false
-cmt_c_nl_end=false
-cmt_cpp_group=false
-cmt_cpp_nl_start=false
-cmt_cpp_nl_end=false
-cmt_cpp_to_c=false
-cmt_star_cont=false
-cmt_multi_check_last=false
-cmt_insert_before_preproc=false
-pp_space_after=ignore
-use_options_overriding_for_qt_macros=false
-warn_level_tabs_found_in_verbatim_string_literals=1
-# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
-# can be turned back on at any time
-#mod_add_long_ifdef_else_comment=8
-#mod_add_long_ifdef_endif_comment=8
-mod_add_long_ifdef_else_comment=0
-mod_add_long_ifdef_endif_comment=0
-
-
-
-# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
-#
-# x = o.Func2(a, b,
-# y);
-# o.Func2(a, b,
-# y);
-#
-# ...but setting it 'true' is often worse:
-#
-# ExtraReallyLongType reallyLongVariableName = someTest
-# ? someTrueExpr
-# : someFalseExpr
-#
-# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
-# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
-# (currently unreported)
-indent_align_assign=false
-
-# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
-# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
-# comment line at the same level of indentation.
-# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
-# (test using Runtime/Allocator/BucketAllocator.h)
-# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
-sp_cmt_cpp_start=ignore
-
-# https://sourceforge.net/p/uncrustify/bugs/619/
-sp_endif_cmt=ignore
-
-# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
-# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
-#nl_cpp_ldef_brace=force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U07-Cs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U07-Cs.cfg
deleted file mode 100644
index 6306e07e..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U07-Cs.cfg
+++ /dev/null
@@ -1,283 +0,0 @@
-input_tab_size=4
-string_replace_tab_chars=true
-tok_split_gte=false
-disable_processing_cmt=*begin-nonstandard-formatting*
-enable_processing_cmt=*end-nonstandard-formatting*
-utf8_bom=remove
-utf8_byte=false
-utf8_force=false
-indent_columns=4
-indent_with_tabs=0
-indent_cmt_with_tabs=false
-indent_align_string=false
-indent_braces=false
-indent_braces_no_func=false
-indent_braces_no_class=false
-indent_braces_no_struct=false
-indent_brace_parent=false
-indent_cs_delegate_brace=true
-indent_namespace=true
-indent_extern=false
-indent_class=true
-indent_class_colon=false
-indent_else_if=false
-indent_var_def_cont=false
-indent_func_call_param=true
-indent_func_def_param=true
-indent_func_proto_param=true
-indent_func_class_param=false
-indent_func_ctor_var_param=false
-indent_template_param=false
-indent_func_param_double=false
-indent_relative_single_line_comments=false
-indent_switch_case=4
-indent_case_shift=0
-indent_case_brace=0
-indent_col1_comment=false
-indent_label=-4
-indent_access_spec=-4
-indent_paren_nl=false
-indent_comma_paren=0
-indent_bool_paren=0
-indent_first_bool_expr=false
-indent_square_nl=false
-indent_preserve_sql=false
-indent_oc_block_msg_xcode_style=true
-indent_off_after_return_new=true
-indent_single_after_return=true
-sp_arith=add
-sp_assign=add
-sp_assign_default=add
-sp_enum_assign=add
-sp_pp_concat=remove
-sp_pp_stringify=remove
-sp_bool=add
-sp_compare=add
-sp_inside_paren=remove
-sp_paren_paren=remove
-sp_balance_nested_parens=false
-sp_paren_brace=force
-sp_after_type=ignore
-sp_template_angle=remove
-sp_before_angle=remove
-sp_inside_angle=remove
-sp_angle_paren=remove
-sp_angle_paren_empty=remove
-sp_angle_word=add
-sp_angle_shift=remove
-sp_before_sparen=force
-sp_inside_sparen=remove
-sp_after_sparen=add
-sp_sparen_brace=force
-sp_special_semi=force
-sp_before_semi=remove
-sp_before_semi_for=remove
-sp_before_semi_for_empty=remove
-sp_between_semi_for_empty=remove
-sp_after_semi=add
-sp_after_semi_for=force
-sp_after_semi_for_empty=remove
-sp_before_square=remove
-sp_before_squares=remove
-sp_inside_square=remove
-sp_after_comma=add
-sp_before_comma=ignore
-sp_after_mdatype_commas=remove
-sp_before_mdatype_commas=remove
-sp_between_mdatype_commas=remove
-sp_paren_comma=remove
-sp_after_class_colon=force
-sp_before_class_colon=force
-sp_before_case_colon=remove
-sp_after_operator=remove
-sp_after_operator_sym=remove
-sp_after_operator_sym_empty=remove
-sp_after_cast=remove
-sp_inside_paren_cast=remove
-sp_cpp_cast_paren=remove
-sp_sizeof_paren=remove
-sp_inside_braces_enum=add
-sp_inside_braces_empty=remove
-sp_type_func=ignore
-sp_func_proto_paren=remove
-sp_func_def_paren=remove
-sp_inside_fparens=remove
-sp_inside_fparen=remove
-sp_fparen_brace=add
-sp_func_call_paren=remove
-sp_func_call_paren_empty=remove
-sp_func_call_user_paren=remove
-sp_func_class_paren=remove
-sp_return_paren=add
-sp_defined_paren=remove
-sp_throw_paren=add
-sp_catch_paren=add
-sp_brace_typedef=add
-sp_getset_brace=add
-sp_after_dc=remove
-sp_not=remove
-sp_inv=remove
-sp_addr=remove
-sp_member=remove
-sp_deref=remove
-sp_sign=remove
-sp_incdec=remove
-sp_before_nl_cont=add
-sp_after_oc_scope=force
-sp_after_oc_colon=remove
-sp_before_oc_colon=remove
-sp_after_oc_dict_colon=force
-sp_before_oc_dict_colon=remove
-sp_after_send_oc_colon=force
-sp_before_send_oc_colon=remove
-sp_after_oc_type=remove
-sp_after_oc_return_type=remove
-sp_after_oc_at_sel=remove
-sp_inside_oc_at_sel_parens=remove
-sp_cond_colon=add
-sp_cond_question=add
-sp_case_label=ignore
-sp_after_new=force
-sp_between_new_paren=remove
-sp_skip_vbrace_tokens=true
-align_keep_tabs=false
-align_with_tabs=false
-align_on_tabstop=false
-align_number_right=false
-align_func_params=false
-align_same_func_call_params=false
-align_var_def_colon=false
-align_var_def_attribute=false
-align_var_def_inline=false
-align_right_cmt_mix=false
-align_on_operator=false
-align_mix_var_proto=false
-align_single_line_func=false
-align_single_line_brace=false
-align_nl_cont=false
-align_left_shift=false
-nl_collapse_empty_body=false
-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_if_leave_one_liners=false
-nl_oc_msg_leave_one_liner=true
-nl_start_of_file=remove
-nl_end_of_file=force
-nl_end_of_file_min=1
-nl_assign_brace=force
-nl_enum_brace=force
-nl_struct_brace=force
-nl_union_brace=force
-nl_if_brace=force
-nl_brace_else=force
-nl_else_brace=force
-nl_else_if=remove
-nl_brace_finally=force
-nl_finally_brace=force
-nl_try_brace=force
-nl_getset_brace=force
-nl_for_brace=force
-nl_catch_brace=force
-nl_brace_catch=force
-nl_while_brace=force
-nl_using_brace=force
-nl_brace_brace=ignore
-nl_do_brace=force
-nl_brace_while=force
-nl_switch_brace=force
-nl_multi_line_cond=false
-nl_before_case=false
-nl_after_case=false
-nl_case_colon_brace=force
-nl_namespace_brace=force
-nl_template_class=ignore
-nl_class_brace=force
-nl_fdef_brace=force
-nl_after_semicolon=false
-nl_after_brace_open=false
-nl_after_brace_open_cmt=false
-nl_after_vbrace_open=false
-nl_after_vbrace_open_empty=false
-nl_after_brace_close=false
-nl_after_vbrace_close=false
-nl_squeeze_ifdef=false
-nl_ds_struct_enum_cmt=false
-nl_ds_struct_enum_close_brace=false
-nl_create_if_one_liner=false
-nl_create_for_one_liner=false
-nl_create_while_one_liner=false
-ls_for_split_full=false
-ls_func_split_full=false
-nl_max=3
-nl_after_multiline_comment=false
-nl_property_brace=force
-eat_blanks_after_open_brace=true
-eat_blanks_before_close_brace=true
-nl_after_return=false
-mod_full_brace_if_chain=0
-mod_paren_on_return=ignore
-mod_pawn_semicolon=false
-mod_full_paren_if_bool=false
-mod_remove_extra_semicolon=true
-mod_move_case_break=false
-mod_remove_empty_return=true
-cmt_indent_multi=false
-cmt_c_group=false
-cmt_c_nl_start=false
-cmt_c_nl_end=false
-cmt_cpp_group=false
-cmt_cpp_nl_start=false
-cmt_cpp_nl_end=false
-cmt_cpp_to_c=false
-cmt_star_cont=false
-cmt_multi_check_last=false
-cmt_insert_before_preproc=false
-pp_space_after=ignore
-use_options_overriding_for_qt_macros=false
-warn_level_tabs_found_in_verbatim_string_literals=1
-
-# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
-# can be turned back on at any time
-mod_add_long_ifdef_else_comment=0
-mod_add_long_ifdef_endif_comment=0
-
-
-
-# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
-#
-# x = o.Func2(a, b,
-# y);
-# o.Func2(a, b,
-# y);
-#
-# ...but setting it 'true' is often worse:
-#
-# ExtraReallyLongType reallyLongVariableName = someTest
-# ? someTrueExpr
-# : someFalseExpr
-#
-# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
-# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
-# (currently unreported)
-indent_align_assign=false
-
-# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
-# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
-# comment line at the same level of indentation.
-# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
-# (test using Runtime/Allocator/BucketAllocator.h)
-# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
-#sp_cmt_cpp_start=add
-sp_cmt_cpp_start=ignore
-
-# https://sourceforge.net/p/uncrustify/bugs/619/
-#sp_endif_cmt=force
-sp_endif_cmt=ignore
-
-# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
-# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
-#nl_cpp_ldef_brace=force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U08-Cs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U08-Cs.cfg
deleted file mode 100644
index b5f5cb08..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U08-Cs.cfg
+++ /dev/null
@@ -1,282 +0,0 @@
-input_tab_size=4
-string_replace_tab_chars=true
-tok_split_gte=false
-disable_processing_cmt=*begin-nonstandard-formatting*
-enable_processing_cmt=*end-nonstandard-formatting*
-utf8_bom=remove
-utf8_byte=false
-utf8_force=false
-indent_columns=4
-indent_with_tabs=0
-indent_cmt_with_tabs=false
-indent_align_string=false
-indent_braces=false
-indent_braces_no_func=false
-indent_braces_no_class=false
-indent_braces_no_struct=false
-indent_brace_parent=false
-indent_cs_delegate_brace=true
-indent_namespace=true
-indent_extern=false
-indent_class=true
-indent_class_colon=false
-indent_else_if=false
-indent_var_def_cont=false
-indent_func_call_param=true
-indent_func_def_param=true
-indent_func_proto_param=true
-indent_func_class_param=false
-indent_func_ctor_var_param=false
-indent_template_param=false
-indent_func_param_double=false
-indent_relative_single_line_comments=false
-indent_switch_case=4
-indent_case_shift=0
-indent_case_brace=0
-indent_col1_comment=false
-indent_label=-4
-indent_access_spec=-4
-indent_paren_nl=false
-indent_comma_paren=0
-indent_bool_paren=0
-indent_first_bool_expr=false
-indent_square_nl=false
-indent_preserve_sql=false
-indent_oc_block_msg_xcode_style=true
-indent_off_after_return_new=true
-indent_single_after_return=true
-sp_arith=add
-sp_assign=add
-sp_assign_default=add
-sp_enum_assign=add
-sp_pp_concat=remove
-sp_pp_stringify=remove
-sp_bool=add
-sp_compare=add
-sp_inside_paren=remove
-sp_paren_paren=remove
-sp_balance_nested_parens=false
-sp_paren_brace=force
-sp_after_type=remove
-sp_template_angle=remove
-sp_before_angle=remove
-sp_inside_angle=remove
-sp_angle_paren=remove
-sp_angle_paren_empty=remove
-sp_angle_word=add
-sp_angle_shift=remove
-sp_before_sparen=force
-sp_inside_sparen=remove
-sp_after_sparen=add
-sp_sparen_brace=force
-sp_special_semi=force
-sp_before_semi=remove
-sp_before_semi_for=remove
-sp_before_semi_for_empty=remove
-sp_between_semi_for_empty=remove
-sp_after_semi=add
-sp_after_semi_for=force
-sp_after_semi_for_empty=remove
-sp_before_square=remove
-sp_before_squares=remove
-sp_inside_square=remove
-sp_after_comma=add
-sp_before_comma=ignore
-sp_after_mdatype_commas=remove
-sp_before_mdatype_commas=remove
-sp_between_mdatype_commas=remove
-sp_paren_comma=remove
-sp_after_class_colon=force
-sp_before_class_colon=force
-sp_before_case_colon=remove
-sp_after_operator=remove
-sp_after_operator_sym=remove
-sp_after_operator_sym_empty=remove
-sp_after_cast=remove
-sp_inside_paren_cast=remove
-sp_cpp_cast_paren=remove
-sp_sizeof_paren=remove
-sp_inside_braces_enum=add
-sp_inside_braces_empty=remove
-sp_type_func=ignore
-sp_func_proto_paren=remove
-sp_func_def_paren=remove
-sp_inside_fparens=remove
-sp_inside_fparen=remove
-sp_fparen_brace=add
-sp_func_call_paren=remove
-sp_func_call_paren_empty=remove
-sp_func_call_user_paren=remove
-sp_func_class_paren=remove
-sp_return_paren=add
-sp_defined_paren=remove
-sp_throw_paren=add
-sp_catch_paren=add
-sp_brace_typedef=add
-sp_getset_brace=add
-sp_after_dc=remove
-sp_not=remove
-sp_inv=remove
-sp_addr=remove
-sp_member=remove
-sp_deref=remove
-sp_sign=remove
-sp_incdec=remove
-sp_before_nl_cont=add
-sp_after_oc_scope=force
-sp_after_oc_colon=remove
-sp_before_oc_colon=remove
-sp_after_oc_dict_colon=force
-sp_before_oc_dict_colon=remove
-sp_after_send_oc_colon=force
-sp_before_send_oc_colon=remove
-sp_after_oc_type=remove
-sp_after_oc_return_type=remove
-sp_after_oc_at_sel=remove
-sp_inside_oc_at_sel_parens=remove
-sp_cond_colon=add
-sp_cond_question=add
-sp_case_label=ignore
-sp_after_new=force
-sp_between_new_paren=remove
-sp_skip_vbrace_tokens=true
-align_keep_tabs=false
-align_with_tabs=false
-align_on_tabstop=false
-align_number_right=false
-align_func_params=false
-align_same_func_call_params=false
-align_var_def_colon=false
-align_var_def_attribute=false
-align_var_def_inline=false
-align_right_cmt_mix=false
-align_on_operator=false
-align_mix_var_proto=false
-align_single_line_func=false
-align_single_line_brace=false
-align_nl_cont=false
-align_left_shift=false
-nl_collapse_empty_body=false
-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_if_leave_one_liners=false
-nl_oc_msg_leave_one_liner=true
-nl_start_of_file=remove
-nl_end_of_file=force
-nl_end_of_file_min=1
-nl_assign_brace=force
-nl_enum_brace=force
-nl_struct_brace=force
-nl_union_brace=force
-nl_if_brace=force
-nl_brace_else=force
-nl_else_brace=force
-nl_else_if=remove
-nl_brace_finally=force
-nl_finally_brace=force
-nl_try_brace=force
-nl_getset_brace=force
-nl_for_brace=force
-nl_catch_brace=force
-nl_brace_catch=force
-nl_while_brace=force
-nl_using_brace=force
-nl_brace_brace=ignore
-nl_do_brace=force
-nl_brace_while=force
-nl_switch_brace=force
-nl_multi_line_cond=false
-nl_before_case=false
-nl_after_case=false
-nl_case_colon_brace=force
-nl_namespace_brace=force
-nl_template_class=ignore
-nl_class_brace=force
-nl_fdef_brace=force
-nl_after_semicolon=false
-nl_after_brace_open=false
-nl_after_brace_open_cmt=false
-nl_after_vbrace_open=false
-nl_after_vbrace_open_empty=false
-nl_after_brace_close=false
-nl_after_vbrace_close=false
-nl_squeeze_ifdef=false
-nl_ds_struct_enum_cmt=false
-nl_ds_struct_enum_close_brace=false
-nl_create_if_one_liner=false
-nl_create_for_one_liner=false
-nl_create_while_one_liner=false
-ls_for_split_full=false
-ls_func_split_full=false
-nl_max=3
-nl_after_func_body=2
-nl_after_multiline_comment=false
-nl_property_brace=force
-eat_blanks_after_open_brace=true
-eat_blanks_before_close_brace=true
-nl_after_return=false
-mod_paren_on_return=ignore
-mod_pawn_semicolon=false
-mod_full_paren_if_bool=false
-mod_remove_extra_semicolon=true
-mod_move_case_break=false
-mod_remove_empty_return=true
-cmt_indent_multi=false
-cmt_c_group=false
-cmt_c_nl_start=false
-cmt_c_nl_end=false
-cmt_cpp_group=false
-cmt_cpp_nl_start=false
-cmt_cpp_nl_end=false
-cmt_cpp_to_c=false
-cmt_star_cont=false
-cmt_multi_check_last=false
-cmt_insert_before_preproc=false
-pp_space_after=ignore
-use_options_overriding_for_qt_macros=false
-warn_level_tabs_found_in_verbatim_string_literals=1
-# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
-# can be turned back on at any time
-mod_add_long_ifdef_else_comment=0
-mod_add_long_ifdef_endif_comment=0
-
-
-
-# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
-#
-# x = o.Func2(a, b,
-# y);
-# o.Func2(a, b,
-# y);
-#
-# ...but setting it 'true' is often worse:
-#
-# ExtraReallyLongType reallyLongVariableName = someTest
-# ? someTrueExpr
-# : someFalseExpr
-#
-# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
-# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
-# (currently unreported)
-indent_align_assign=false
-
-# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
-# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
-# comment line at the same level of indentation.
-# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
-# (test using Runtime/Allocator/BucketAllocator.h)
-# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
-#sp_cmt_cpp_start=add
-sp_cmt_cpp_start=ignore
-
-# https://sourceforge.net/p/uncrustify/bugs/619/
-#sp_endif_cmt=force
-sp_endif_cmt=ignore
-
-# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
-# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
-#nl_cpp_ldef_brace=force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-11993.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-11993.cfg
deleted file mode 100644
index 69092def..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-11993.cfg
+++ /dev/null
@@ -1,287 +0,0 @@
-input_tab_size=4
-string_replace_tab_chars=true
-tok_split_gte=false
-disable_processing_cmt=*begin-nonstandard-formatting
-enable_processing_cmt=*end-nonstandard-formatting*
-utf8_bom=remove
-utf8_byte=false
-utf8_force=false
-indent_columns=4
-indent_with_tabs=0
-indent_cmt_with_tabs=false
-indent_align_string=false
-indent_braces=false
-indent_braces_no_func=false
-indent_braces_no_class=false
-indent_braces_no_struct=false
-indent_brace_parent=false
-indent_cs_delegate_brace=true
-indent_namespace=true
-indent_extern=false
-indent_class=true
-indent_class_colon=false
-indent_else_if=false
-indent_var_def_cont=false
-indent_func_call_param=true
-indent_func_def_param=true
-indent_func_proto_param=true
-indent_func_class_param=false
-indent_func_ctor_var_param=false
-indent_template_param=false
-indent_func_param_double=false
-indent_member_single=false
-indent_relative_single_line_comments=false
-indent_switch_case=4
-indent_case_shift=0
-indent_case_brace=0
-indent_col1_comment=false
-indent_label=-4
-indent_access_spec=-4
-indent_paren_nl=false
-indent_comma_paren=0
-indent_bool_paren=0
-indent_first_bool_expr=false
-indent_square_nl=false
-indent_preserve_sql=false
-indent_align_paren=false
-indent_oc_block_msg_xcode_style=true
-indent_off_after_return_new=true
-indent_single_after_return=true
-sp_arith=add
-sp_assign=add
-sp_assign_default=add
-sp_enum_assign=add
-sp_pp_concat=remove
-sp_pp_stringify=remove
-sp_bool=add
-sp_compare=add
-sp_inside_paren=remove
-sp_paren_paren=remove
-sp_balance_nested_parens=false
-sp_paren_brace=force
-sp_after_type=ignore
-sp_template_angle=remove
-sp_before_angle=remove
-sp_inside_angle=remove
-sp_angle_paren=remove
-sp_angle_paren_empty=remove
-sp_angle_word=add
-sp_angle_shift=remove
-sp_before_sparen=force
-sp_inside_sparen=remove
-sp_after_sparen=add
-sp_sparen_brace=force
-sp_special_semi=force
-sp_before_semi=remove
-sp_before_semi_for=remove
-sp_before_semi_for_empty=remove
-sp_between_semi_for_empty=remove
-sp_after_semi=add
-sp_after_semi_for=force
-sp_after_semi_for_empty=remove
-sp_before_square=remove
-sp_before_squares=remove
-sp_inside_square=remove
-sp_after_comma=add
-sp_before_comma=ignore
-sp_after_mdatype_commas=remove
-sp_before_mdatype_commas=remove
-sp_between_mdatype_commas=remove
-sp_paren_comma=remove
-sp_after_class_colon=force
-sp_before_class_colon=force
-sp_before_case_colon=remove
-sp_after_operator=remove
-sp_after_operator_sym=remove
-sp_after_operator_sym_empty=remove
-sp_after_cast=remove
-sp_inside_paren_cast=remove
-sp_cpp_cast_paren=remove
-sp_sizeof_paren=remove
-sp_inside_braces_enum=add
-sp_inside_braces_empty=remove
-sp_type_func=ignore
-sp_func_proto_paren=remove
-sp_func_def_paren=remove
-sp_inside_fparens=remove
-sp_inside_fparen=remove
-sp_fparen_brace=add
-sp_func_call_paren=remove
-sp_func_call_paren_empty=remove
-sp_func_call_user_paren=remove
-sp_func_class_paren=remove
-sp_return_paren=add
-sp_defined_paren=remove
-sp_throw_paren=add
-sp_catch_paren=add
-sp_brace_typedef=add
-sp_getset_brace=add
-sp_after_dc=remove
-sp_not=remove
-sp_inv=remove
-sp_addr=remove
-sp_member=remove
-sp_deref=remove
-sp_sign=remove
-sp_incdec=remove
-sp_before_nl_cont=add
-sp_after_oc_scope=force
-sp_after_oc_colon=remove
-sp_before_oc_colon=remove
-sp_after_oc_dict_colon=force
-sp_before_oc_dict_colon=remove
-sp_after_send_oc_colon=force
-sp_before_send_oc_colon=remove
-sp_after_oc_type=remove
-sp_after_oc_return_type=remove
-sp_after_oc_at_sel=remove
-sp_inside_oc_at_sel_parens=remove
-sp_cond_colon=add
-sp_cond_question=add
-sp_case_label=ignore
-sp_after_new=force
-sp_between_new_paren=remove
-sp_skip_vbrace_tokens=true
-align_keep_tabs=false
-align_with_tabs=false
-align_on_tabstop=false
-align_number_right=false
-align_func_params=false
-align_same_func_call_params=false
-align_var_def_colon=false
-align_var_def_attribute=false
-align_var_def_inline=false
-align_right_cmt_mix=false
-align_on_operator=false
-align_mix_var_proto=false
-align_single_line_func=false
-align_single_line_brace=false
-align_nl_cont=false
-align_left_shift=false
-nl_collapse_empty_body=false
-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_if_leave_one_liners=false
-nl_oc_msg_leave_one_liner=true
-nl_start_of_file=remove
-nl_end_of_file=force
-nl_end_of_file_min=1
-nl_assign_brace=force
-nl_enum_brace=force
-nl_struct_brace=force
-nl_union_brace=force
-nl_if_brace=force
-nl_brace_else=force
-nl_else_brace=force
-nl_else_if=remove
-nl_brace_finally=force
-nl_finally_brace=force
-nl_try_brace=force
-nl_getset_brace=force
-nl_for_brace=force
-nl_catch_brace=force
-nl_brace_catch=force
-nl_while_brace=force
-nl_using_brace=force
-nl_brace_brace=ignore
-nl_do_brace=force
-nl_brace_while=force
-nl_switch_brace=force
-nl_multi_line_cond=false
-nl_before_case=false
-nl_after_case=false
-nl_case_colon_brace=force
-nl_namespace_brace=force
-nl_template_class=ignore
-nl_class_brace=force
-nl_fdef_brace=force
-nl_after_semicolon=false
-nl_after_brace_open=false
-nl_after_brace_open_cmt=false
-nl_after_vbrace_open=false
-nl_after_vbrace_open_empty=false
-nl_after_brace_close=false
-nl_after_vbrace_close=false
-nl_squeeze_ifdef=false
-nl_ds_struct_enum_cmt=false
-nl_ds_struct_enum_close_brace=false
-nl_namespace_two_to_one_liner=false
-nl_create_if_one_liner=false
-nl_create_for_one_liner=false
-nl_create_while_one_liner=false
-nl_create_func_def_one_liner=false
-ls_for_split_full=false
-ls_func_split_full=false
-nl_max=3
-nl_after_func_body=2
-nl_after_multiline_comment=false
-nl_property_brace=force
-eat_blanks_after_open_brace=true
-eat_blanks_before_close_brace=true
-nl_after_return=false
-mod_full_brace_if_chain=0
-mod_paren_on_return=ignore
-mod_pawn_semicolon=false
-mod_full_paren_if_bool=false
-mod_remove_extra_semicolon=true
-mod_move_case_break=false
-mod_remove_empty_return=true
-cmt_convert_tab_to_spaces=True
-cmt_indent_multi=false
-cmt_c_group=false
-cmt_c_nl_start=false
-cmt_c_nl_end=false
-cmt_cpp_group=false
-cmt_cpp_nl_start=false
-cmt_cpp_nl_end=false
-cmt_cpp_to_c=false
-cmt_star_cont=false
-cmt_multi_check_last=false
-cmt_insert_before_preproc=false
-pp_space_after=ignore
-use_options_overriding_for_qt_macros=false
-warn_level_tabs_found_in_verbatim_string_literals=1
-# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
-# can be turned back on at any time
-mod_add_long_ifdef_else_comment=0
-mod_add_long_ifdef_endif_comment=0
-
-
-# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
-#
-# x = o.Func2(a, b,
-# y);
-# o.Func2(a, b,
-# y);
-#
-# ...but setting it 'true' is often worse:
-#
-# ExtraReallyLongType reallyLongVariableName = someTest
-# ? someTrueExpr
-# : someFalseExpr
-#
-# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
-# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
-# (currently unreported)
-indent_align_assign=false
-
-# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
-# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
-# comment line at the same level of indentation.
-# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
-# (test using Runtime/Allocator/BucketAllocator.h)
-# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
-#sp_cmt_cpp_start=add
-sp_cmt_cpp_start=ignore
-
-# https://sourceforge.net/p/uncrustify/bugs/619/
-#sp_endif_cmt=force
-sp_endif_cmt=ignore
-
-# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
-# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
-#nl_cpp_ldef_brace=force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-18437.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-18437.cfg
deleted file mode 100644
index a72d6cb2..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-18437.cfg
+++ /dev/null
@@ -1,287 +0,0 @@
-input_tab_size=4
-string_replace_tab_chars=true
-tok_split_gte=false
-disable_processing_cmt=*begin-nonstandard-formatting*
-enable_processing_cmt=*end-nonstandard-formatting*
-utf8_bom=remove
-utf8_byte=false
-utf8_force=false
-indent_columns=4
-indent_with_tabs=0
-indent_cmt_with_tabs=false
-indent_align_string=false
-indent_braces=false
-indent_braces_no_func=false
-indent_braces_no_class=false
-indent_braces_no_struct=false
-indent_brace_parent=false
-indent_cs_delegate_brace=true
-indent_namespace=true
-indent_extern=false
-indent_class=true
-indent_class_colon=false
-indent_else_if=false
-indent_var_def_cont=false
-indent_func_call_param=true
-indent_func_def_param=true
-indent_func_proto_param=true
-indent_func_class_param=false
-indent_func_ctor_var_param=false
-indent_template_param=false
-indent_func_param_double=false
-indent_relative_single_line_comments=false
-indent_switch_case=4
-indent_case_shift=0
-indent_case_brace=0
-indent_col1_comment=false
-indent_label=-4
-indent_access_spec=-4
-indent_paren_nl=false
-indent_comma_paren=0
-indent_bool_paren=0
-indent_first_bool_expr=false
-indent_square_nl=false
-indent_preserve_sql=false
-indent_align_paren=false
-indent_oc_block_msg_xcode_style=true
-indent_off_after_return_new=true
-indent_single_after_return=true
-sp_arith=add
-sp_assign=add
-sp_assign_default=add
-sp_enum_assign=add
-sp_pp_concat=remove
-sp_pp_stringify=remove
-sp_bool=add
-sp_compare=add
-sp_inside_paren=remove
-sp_paren_paren=remove
-sp_balance_nested_parens=false
-sp_paren_brace=force
-sp_after_type=ignore
-sp_template_angle=remove
-sp_before_angle=remove
-sp_inside_angle=remove
-sp_angle_paren=remove
-sp_angle_paren_empty=remove
-sp_angle_word=add
-sp_angle_shift=remove
-sp_before_sparen=force
-sp_inside_sparen=remove
-sp_after_sparen=add
-sp_sparen_brace=force
-sp_special_semi=force
-sp_before_semi=remove
-sp_before_semi_for=remove
-sp_before_semi_for_empty=remove
-sp_between_semi_for_empty=remove
-sp_after_semi=add
-sp_after_semi_for=force
-sp_after_semi_for_empty=remove
-sp_before_square=remove
-sp_before_squares=remove
-sp_inside_square=remove
-sp_after_comma=add
-sp_before_comma=ignore
-sp_after_mdatype_commas=remove
-sp_before_mdatype_commas=remove
-sp_between_mdatype_commas=remove
-sp_paren_comma=remove
-sp_after_class_colon=force
-sp_before_class_colon=force
-sp_before_case_colon=remove
-sp_after_operator=remove
-sp_after_operator_sym=remove
-sp_after_operator_sym_empty=remove
-sp_after_cast=remove
-sp_inside_paren_cast=remove
-sp_cpp_cast_paren=remove
-sp_sizeof_paren=remove
-sp_inside_braces_enum=add
-sp_inside_braces_empty=remove
-sp_type_func=ignore
-sp_func_proto_paren=remove
-sp_func_def_paren=remove
-sp_inside_fparens=remove
-sp_inside_fparen=remove
-sp_fparen_brace=add
-sp_func_call_paren=remove
-sp_func_call_paren_empty=remove
-sp_func_call_user_paren=remove
-sp_func_class_paren=remove
-sp_return_paren=add
-sp_defined_paren=remove
-sp_throw_paren=add
-sp_catch_paren=add
-sp_brace_typedef=add
-sp_getset_brace=add
-sp_after_dc=remove
-sp_not=remove
-sp_inv=remove
-sp_addr=remove
-sp_member=remove
-sp_deref=remove
-sp_sign=remove
-sp_incdec=remove
-sp_before_nl_cont=add
-sp_after_oc_scope=force
-sp_after_oc_colon=remove
-sp_before_oc_colon=remove
-sp_after_oc_dict_colon=force
-sp_before_oc_dict_colon=remove
-sp_after_send_oc_colon=force
-sp_before_send_oc_colon=remove
-sp_after_oc_type=remove
-sp_after_oc_return_type=remove
-sp_after_oc_at_sel=remove
-sp_inside_oc_at_sel_parens=remove
-sp_cond_colon=add
-sp_cond_question=add
-sp_case_label=ignore
-sp_after_new=force
-sp_between_new_paren=remove
-sp_skip_vbrace_tokens=true
-align_keep_tabs=false
-align_with_tabs=false
-align_on_tabstop=false
-align_number_right=false
-align_func_params=false
-align_same_func_call_params=false
-align_var_def_colon=false
-align_var_def_attribute=false
-align_var_def_inline=false
-align_right_cmt_mix=false
-align_on_operator=false
-align_mix_var_proto=false
-align_single_line_func=false
-align_single_line_brace=false
-align_nl_cont=false
-align_left_shift=false
-nl_collapse_empty_body=false
-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_if_leave_one_liners=false
-nl_oc_msg_leave_one_liner=true
-nl_start_of_file=remove
-nl_end_of_file=force
-nl_end_of_file_min=1
-nl_assign_brace=force
-nl_enum_brace=force
-nl_struct_brace=force
-nl_union_brace=force
-nl_if_brace=force
-nl_brace_else=force
-nl_else_brace=force
-nl_else_if=remove
-nl_brace_finally=force
-nl_finally_brace=force
-nl_try_brace=force
-nl_getset_brace=force
-nl_for_brace=force
-nl_catch_brace=force
-nl_brace_catch=force
-nl_while_brace=force
-nl_using_brace=force
-nl_brace_brace=ignore
-nl_do_brace=force
-nl_brace_while=force
-nl_switch_brace=force
-nl_multi_line_cond=false
-nl_before_case=false
-nl_after_case=false
-nl_case_colon_brace=force
-nl_namespace_brace=force
-nl_template_class=ignore
-nl_class_brace=force
-nl_fdef_brace=force
-nl_after_semicolon=false
-nl_after_brace_open=false
-nl_after_brace_open_cmt=false
-nl_after_vbrace_open=false
-nl_after_vbrace_open_empty=false
-nl_after_brace_close=false
-nl_after_vbrace_close=false
-nl_squeeze_ifdef=false
-nl_ds_struct_enum_cmt=false
-nl_ds_struct_enum_close_brace=false
-nl_namespace_two_to_one_liner=false
-nl_create_if_one_liner=false
-nl_create_for_one_liner=false
-nl_create_while_one_liner=false
-nl_create_func_def_one_liner=false
-ls_for_split_full=false
-ls_func_split_full=false
-nl_max=3
-nl_after_func_body=2
-nl_after_multiline_comment=false
-nl_property_brace=force
-eat_blanks_after_open_brace=true
-eat_blanks_before_close_brace=true
-nl_after_return=false
-mod_full_brace_if_chain=0
-mod_paren_on_return=ignore
-mod_pawn_semicolon=false
-mod_full_paren_if_bool=false
-mod_remove_extra_semicolon=true
-mod_move_case_break=false
-mod_remove_empty_return=true
-cmt_convert_tab_to_spaces=True
-cmt_indent_multi=false
-cmt_c_group=false
-cmt_c_nl_start=false
-cmt_c_nl_end=false
-cmt_cpp_group=false
-cmt_cpp_nl_start=false
-cmt_cpp_nl_end=false
-cmt_cpp_to_c=false
-cmt_star_cont=false
-cmt_multi_check_last=false
-cmt_insert_before_preproc=false
-pp_space_after=ignore
-use_options_overriding_for_qt_macros=false
-warn_level_tabs_found_in_verbatim_string_literals=1
-# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
-# can be turned back on at any time
-mod_add_long_ifdef_else_comment=0
-mod_add_long_ifdef_endif_comment=0
-
-
-# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
-#
-# x = o.Func2(a, b,
-# y);
-# o.Func2(a, b,
-# y);
-#
-# ...but setting it 'true' is often worse:
-#
-# ExtraReallyLongType reallyLongVariableName = someTest
-# ? someTrueExpr
-# : someFalseExpr
-#
-# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
-# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
-# (currently unreported)
-indent_align_assign=false
-
-# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
-# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
-# comment line at the same level of indentation.
-# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
-# (test using Runtime/Allocator/BucketAllocator.h)
-# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
-#sp_cmt_cpp_start=add
-sp_cmt_cpp_start=ignore
-
-# https://sourceforge.net/p/uncrustify/bugs/619/
-#sp_endif_cmt=force
-sp_endif_cmt=ignore
-
-# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
-# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
-#nl_cpp_ldef_brace=force
-indent_member_single=true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-32658.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-32658.cfg
deleted file mode 100644
index a0b747d1..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-32658.cfg
+++ /dev/null
@@ -1,286 +0,0 @@
-input_tab_size=4
-string_replace_tab_chars=true
-tok_split_gte=false
-disable_processing_cmt=*begin-nonstandard-formatting*
-enable_processing_cmt=*end-nonstandard-formatting*
-utf8_bom=remove
-utf8_byte=false
-utf8_force=false
-indent_columns=4
-indent_with_tabs=0
-indent_cmt_with_tabs=false
-indent_align_string=false
-indent_braces=false
-indent_braces_no_func=false
-indent_braces_no_class=false
-indent_braces_no_struct=false
-indent_brace_parent=false
-indent_cs_delegate_brace=true
-indent_namespace=true
-indent_extern=false
-indent_class=true
-indent_class_colon=false
-indent_else_if=false
-indent_var_def_cont=false
-indent_func_call_param=true
-indent_func_def_param=true
-indent_func_proto_param=true
-indent_func_class_param=false
-indent_func_ctor_var_param=false
-indent_template_param=false
-indent_func_param_double=false
-indent_member_single=false
-indent_relative_single_line_comments=false
-indent_switch_case=4
-indent_case_shift=0
-indent_case_brace=0
-indent_col1_comment=false
-indent_label=-4
-indent_access_spec=-4
-indent_paren_nl=false
-indent_comma_paren=0
-indent_bool_paren=0
-indent_first_bool_expr=false
-indent_square_nl=false
-indent_preserve_sql=false
-indent_align_paren=false
-indent_oc_block_msg_xcode_style=true
-indent_off_after_return_new=true
-indent_single_after_return=true
-sp_arith=add
-sp_assign=add
-sp_assign_default=add
-sp_enum_assign=add
-sp_pp_concat=remove
-sp_pp_stringify=remove
-sp_bool=add
-sp_compare=add
-sp_inside_paren=remove
-sp_paren_paren=remove
-sp_balance_nested_parens=false
-sp_paren_brace=force
-sp_after_type=ignore
-sp_template_angle=remove
-sp_before_angle=remove
-sp_inside_angle=remove
-sp_angle_paren=remove
-sp_angle_paren_empty=remove
-sp_angle_word=add
-sp_angle_shift=remove
-sp_before_sparen=force
-sp_inside_sparen=remove
-sp_after_sparen=add
-sp_sparen_brace=force
-sp_special_semi=force
-sp_before_semi=remove
-sp_before_semi_for=remove
-sp_before_semi_for_empty=remove
-sp_between_semi_for_empty=remove
-sp_after_semi=add
-sp_after_semi_for=force
-sp_after_semi_for_empty=remove
-sp_before_square=remove
-sp_before_squares=remove
-sp_inside_square=remove
-sp_after_comma=add
-sp_before_comma=ignore
-sp_after_mdatype_commas=remove
-sp_before_mdatype_commas=remove
-sp_between_mdatype_commas=remove
-sp_paren_comma=remove
-sp_after_class_colon=force
-sp_before_class_colon=force
-sp_before_case_colon=remove
-sp_after_operator=remove
-sp_after_operator_sym=remove
-sp_after_operator_sym_empty=remove
-sp_after_cast=remove
-sp_inside_paren_cast=remove
-sp_cpp_cast_paren=remove
-sp_sizeof_paren=remove
-sp_inside_braces_enum=add
-sp_inside_braces_empty=remove
-sp_type_func=ignore
-sp_func_proto_paren=remove
-sp_func_def_paren=remove
-sp_inside_fparens=remove
-sp_inside_fparen=remove
-sp_fparen_brace=add
-sp_func_call_paren=remove
-sp_func_call_paren_empty=remove
-sp_func_call_user_paren=remove
-sp_func_class_paren=remove
-sp_return_paren=add
-sp_defined_paren=remove
-sp_throw_paren=add
-sp_catch_paren=add
-sp_brace_typedef=add
-sp_getset_brace=add
-sp_after_dc=remove
-sp_not=remove
-sp_inv=remove
-sp_addr=remove
-sp_member=remove
-sp_deref=remove
-sp_sign=remove
-sp_incdec=remove
-sp_before_nl_cont=add
-sp_after_oc_scope=force
-sp_after_oc_colon=remove
-sp_before_oc_colon=remove
-sp_after_oc_dict_colon=force
-sp_before_oc_dict_colon=remove
-sp_after_send_oc_colon=force
-sp_before_send_oc_colon=remove
-sp_after_oc_type=remove
-sp_after_oc_return_type=remove
-sp_after_oc_at_sel=remove
-sp_inside_oc_at_sel_parens=remove
-sp_cond_colon=add
-sp_cond_question=add
-sp_case_label=ignore
-sp_after_new=force
-sp_between_new_paren=remove
-sp_skip_vbrace_tokens=true
-align_keep_tabs=false
-align_with_tabs=false
-align_on_tabstop=false
-align_number_right=false
-align_func_params=false
-align_same_func_call_params=false
-align_var_def_colon=false
-align_var_def_attribute=false
-align_var_def_inline=false
-align_right_cmt_mix=false
-align_on_operator=false
-align_mix_var_proto=false
-align_single_line_func=false
-align_single_line_brace=false
-align_nl_cont=false
-align_left_shift=false
-nl_collapse_empty_body=false
-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_if_leave_one_liners=false
-nl_oc_msg_leave_one_liner=true
-nl_start_of_file=remove
-nl_end_of_file=force
-nl_end_of_file_min=1
-nl_assign_brace=force
-nl_enum_brace=force
-nl_struct_brace=force
-nl_union_brace=force
-nl_if_brace=force
-nl_brace_else=force
-nl_else_brace=force
-nl_else_if=remove
-nl_brace_finally=force
-nl_finally_brace=force
-nl_try_brace=force
-nl_getset_brace=force
-nl_for_brace=force
-nl_catch_brace=force
-nl_brace_catch=force
-nl_while_brace=force
-nl_using_brace=force
-nl_brace_brace=ignore
-nl_do_brace=force
-nl_brace_while=force
-nl_switch_brace=force
-nl_multi_line_cond=false
-nl_before_case=false
-nl_after_case=false
-nl_case_colon_brace=force
-nl_namespace_brace=force
-nl_template_class=ignore
-nl_class_brace=force
-nl_fdef_brace=force
-nl_after_semicolon=false
-nl_after_brace_open=false
-nl_after_brace_open_cmt=false
-nl_after_vbrace_open=false
-nl_after_vbrace_open_empty=false
-nl_after_brace_close=false
-nl_after_vbrace_close=false
-nl_squeeze_ifdef=false
-nl_ds_struct_enum_cmt=false
-nl_ds_struct_enum_close_brace=false
-nl_namespace_two_to_one_liner=false
-nl_create_if_one_liner=false
-nl_create_for_one_liner=false
-nl_create_while_one_liner=false
-nl_create_func_def_one_liner=false
-ls_for_split_full=false
-ls_func_split_full=false
-nl_max=3
-nl_after_func_body=2
-nl_after_multiline_comment=false
-nl_property_brace=force
-eat_blanks_after_open_brace=true
-eat_blanks_before_close_brace=true
-nl_after_return=false
-mod_full_brace_if_chain=0
-mod_paren_on_return=ignore
-mod_pawn_semicolon=false
-mod_full_paren_if_bool=false
-mod_remove_extra_semicolon=true
-mod_move_case_break=false
-mod_remove_empty_return=true
-cmt_convert_tab_to_spaces=True
-cmt_indent_multi=false
-cmt_c_group=false
-cmt_c_nl_start=false
-cmt_c_nl_end=false
-cmt_cpp_group=false
-cmt_cpp_nl_start=false
-cmt_cpp_nl_end=false
-cmt_cpp_to_c=false
-cmt_star_cont=false
-cmt_multi_check_last=false
-cmt_insert_before_preproc=false
-pp_space_after=ignore
-use_options_overriding_for_qt_macros=false
-warn_level_tabs_found_in_verbatim_string_literals=1
-# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
-# can be turned back on at any time
-mod_add_long_ifdef_else_comment=0
-mod_add_long_ifdef_endif_comment=0
-
-# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
-#
-# x = o.Func2(a, b,
-# y);
-# o.Func2(a, b,
-# y);
-#
-# ...but setting it 'true' is often worse:
-#
-# ExtraReallyLongType reallyLongVariableName = someTest
-# ? someTrueExpr
-# : someFalseExpr
-#
-# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
-# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
-# (currently unreported)
-indent_align_assign=false
-
-# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
-# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
-# comment line at the same level of indentation.
-# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
-# (test using Runtime/Allocator/BucketAllocator.h)
-# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
-#sp_cmt_cpp_start=add
-sp_cmt_cpp_start=ignore
-
-# https://sourceforge.net/p/uncrustify/bugs/619/
-#sp_endif_cmt=force
-sp_endif_cmt=ignore
-
-# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
-# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
-#nl_cpp_ldef_brace=force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-37241.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-37241.cfg
deleted file mode 100644
index f4fe568b..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-37241.cfg
+++ /dev/null
@@ -1,287 +0,0 @@
-input_tab_size=4 # Number
-string_replace_tab_chars=true # { False, True }
-tok_split_gte=false # { False, True }
-disable_processing_cmt=*begin-nonstandard-formatting*
-enable_processing_cmt=*end-nonstandard-formatting*
-utf8_bom=remove # { Ignore, Add, Remove, Force }
-utf8_byte=false # { False, True }
-utf8_force=false # { False, True }
-indent_columns=4 # Number
-indent_with_tabs=0 # Number
-indent_cmt_with_tabs=false # { False, True }
-indent_align_string=false # { False, True }
-indent_braces=false # { False, True }
-indent_braces_no_func=false # { False, True }
-indent_braces_no_class=false # { False, True }
-indent_braces_no_struct=false # { False, True }
-indent_brace_parent=false # { False, True }
-indent_cs_delegate_brace=true # { False, True }
-indent_namespace=true # { False, True }
-indent_extern=false # { False, True }
-indent_class=true # { False, True }
-indent_class_colon=false # { False, True }
-indent_else_if=false # { False, True }
-indent_var_def_cont=false # { False, True }
-indent_func_call_param=true # { False, True }
-indent_func_def_param=true # { False, True }
-indent_func_proto_param=true # { False, True }
-indent_func_class_param=false # { False, True }
-indent_func_ctor_var_param=false # { False, True }
-indent_template_param=false # { False, True }
-indent_func_param_double=false # { False, True }
-indent_member_single=false # false/true
-indent_relative_single_line_comments=false # { False, True }
-indent_switch_case=4 # Number
-indent_case_shift=0 # Number
-indent_case_brace=0 # Number
-indent_col1_comment=false # { False, True }
-indent_label=-4 # Number
-indent_access_spec=-4 # Number
-indent_paren_nl=false # { False, True }
-indent_comma_paren=0 # Number
-indent_bool_paren=0 # Number
-indent_first_bool_expr=false # { False, True }
-indent_square_nl=false # { False, True }
-indent_preserve_sql=false # { False, True }
-indent_align_paren=false # { False, True }
-indent_oc_block_msg_xcode_style=true # { False, True }
-indent_off_after_return_new=true # { False, True }
-indent_single_after_return=true # { False, True }
-sp_arith=add # { Ignore, Add, Remove, Force }
-sp_assign=add # { Ignore, Add, Remove, Force }
-sp_assign_default=add # { Ignore, Add, Remove, Force }
-sp_enum_assign=add # { Ignore, Add, Remove, Force }
-sp_pp_concat=remove # { Ignore, Add, Remove, Force }
-sp_pp_stringify=remove # { Ignore, Add, Remove, Force }
-sp_bool=add # { Ignore, Add, Remove, Force }
-sp_compare=add # { Ignore, Add, Remove, Force }
-sp_inside_paren=remove # { Ignore, Add, Remove, Force }
-sp_paren_paren=remove # { Ignore, Add, Remove, Force }
-sp_balance_nested_parens=false # { False, True }
-sp_paren_brace=force # { Ignore, Add, Remove, Force }
-sp_after_type=ignore # { Ignore, Add, Remove, Force }
-sp_template_angle=remove # { Ignore, Add, Remove, Force }
-sp_before_angle=remove # { Ignore, Add, Remove, Force }
-sp_inside_angle=remove # { Ignore, Add, Remove, Force }
-sp_angle_paren=remove # { Ignore, Add, Remove, Force }
-sp_angle_paren_empty=remove # { Ignore, Add, Remove, Force }
-sp_angle_word=add # { Ignore, Add, Remove, Force }
-sp_angle_shift=remove # { Ignore, Add, Remove, Force }
-sp_before_sparen=force # { Ignore, Add, Remove, Force }
-sp_inside_sparen=remove # { Ignore, Add, Remove, Force }
-sp_after_sparen=add # { Ignore, Add, Remove, Force }
-sp_sparen_brace=force # { Ignore, Add, Remove, Force }
-sp_special_semi=force # { Ignore, Add, Remove, Force }
-sp_before_semi=remove # { Ignore, Add, Remove, Force }
-sp_before_semi_for=remove # { Ignore, Add, Remove, Force }
-sp_before_semi_for_empty=remove # { Ignore, Add, Remove, Force }
-sp_between_semi_for_empty=remove # { Ignore, Add, Remove, Force }
-sp_after_semi=add # { Ignore, Add, Remove, Force }
-sp_after_semi_for=force # { Ignore, Add, Remove, Force }
-sp_after_semi_for_empty=remove # { Ignore, Add, Remove, Force }
-sp_before_square=remove # { Ignore, Add, Remove, Force }
-sp_before_squares=remove # { Ignore, Add, Remove, Force }
-sp_inside_square=remove # { Ignore, Add, Remove, Force }
-sp_after_comma=add # { Ignore, Add, Remove, Force }
-sp_before_comma=ignore # { Ignore, Add, Remove, Force }
-sp_after_mdatype_commas=remove # { Ignore, Add, Remove, Force }
-sp_before_mdatype_commas=remove # { Ignore, Add, Remove, Force }
-sp_between_mdatype_commas=remove # { Ignore, Add, Remove, Force }
-sp_paren_comma=remove # { Ignore, Add, Remove, Force }
-sp_after_class_colon=force # { Ignore, Add, Remove, Force }
-sp_before_class_colon=force # { Ignore, Add, Remove, Force }
-sp_before_case_colon=remove # { Ignore, Add, Remove, Force }
-sp_after_operator=remove # { Ignore, Add, Remove, Force }
-sp_after_operator_sym=remove # { Ignore, Add, Remove, Force }
-sp_after_operator_sym_empty=remove # { Ignore, Add, Remove, Force }
-sp_after_cast=remove # { Ignore, Add, Remove, Force }
-sp_inside_paren_cast=remove # { Ignore, Add, Remove, Force }
-sp_cpp_cast_paren=remove # { Ignore, Add, Remove, Force }
-sp_sizeof_paren=remove # { Ignore, Add, Remove, Force }
-sp_inside_braces_enum=add # { Ignore, Add, Remove, Force }
-sp_inside_braces_empty=remove # { Ignore, Add, Remove, Force }
-sp_type_func=ignore # { Ignore, Add, Remove, Force }
-sp_func_proto_paren=remove # { Ignore, Add, Remove, Force }
-sp_func_def_paren=remove # { Ignore, Add, Remove, Force }
-sp_inside_fparens=remove # { Ignore, Add, Remove, Force }
-sp_inside_fparen=remove # { Ignore, Add, Remove, Force }
-sp_fparen_brace=add # { Ignore, Add, Remove, Force }
-sp_func_call_paren=remove # { Ignore, Add, Remove, Force }
-sp_func_call_paren_empty=remove # { Ignore, Add, Remove, Force }
-sp_func_call_user_paren=remove # { Ignore, Add, Remove, Force }
-sp_func_class_paren=remove # { Ignore, Add, Remove, Force }
-sp_return_paren=add # { Ignore, Add, Remove, Force }
-sp_defined_paren=remove # { Ignore, Add, Remove, Force }
-sp_throw_paren=add # { Ignore, Add, Remove, Force }
-sp_catch_paren=add # { Ignore, Add, Remove, Force }
-sp_brace_typedef=add # { Ignore, Add, Remove, Force }
-sp_getset_brace=add # { Ignore, Add, Remove, Force }
-sp_after_dc=remove # { Ignore, Add, Remove, Force }
-sp_not=remove # { Ignore, Add, Remove, Force }
-sp_inv=remove # { Ignore, Add, Remove, Force }
-sp_addr=remove # { Ignore, Add, Remove, Force }
-sp_member=remove # { Ignore, Add, Remove, Force }
-sp_deref=remove # { Ignore, Add, Remove, Force }
-sp_sign=remove # { Ignore, Add, Remove, Force }
-sp_incdec=remove # { Ignore, Add, Remove, Force }
-sp_before_nl_cont=add # { Ignore, Add, Remove, Force }
-sp_after_oc_scope=force # { Ignore, Add, Remove, Force }
-sp_after_oc_colon=remove # { Ignore, Add, Remove, Force }
-sp_before_oc_colon=remove # { Ignore, Add, Remove, Force }
-sp_after_oc_dict_colon=force # { Ignore, Add, Remove, Force }
-sp_before_oc_dict_colon=remove # { Ignore, Add, Remove, Force }
-sp_after_send_oc_colon=force # { Ignore, Add, Remove, Force }
-sp_before_send_oc_colon=remove # { Ignore, Add, Remove, Force }
-sp_after_oc_type=remove # { Ignore, Add, Remove, Force }
-sp_after_oc_return_type=remove # { Ignore, Add, Remove, Force }
-sp_after_oc_at_sel=remove # { Ignore, Add, Remove, Force }
-sp_inside_oc_at_sel_parens=remove # { Ignore, Add, Remove, Force }
-sp_cond_colon=add # { Ignore, Add, Remove, Force }
-sp_cond_question=add # { Ignore, Add, Remove, Force }
-sp_case_label=ignore # { Ignore, Add, Remove, Force }
-sp_after_new=force # { Ignore, Add, Remove, Force }
-sp_between_new_paren=remove # { Ignore, Add, Remove, Force }
-sp_skip_vbrace_tokens=true # { False, True }
-align_keep_tabs=false # { False, True }
-align_with_tabs=false # { False, True }
-align_on_tabstop=false # { False, True }
-align_number_right=false # { False, True }
-align_func_params=false # { False, True }
-align_same_func_call_params=false # { False, True }
-align_var_def_colon=false # { False, True }
-align_var_def_attribute=false # { False, True }
-align_var_def_inline=false # { False, True }
-align_right_cmt_mix=false # { False, True }
-align_on_operator=false # { False, True }
-align_mix_var_proto=false # { False, True }
-align_single_line_func=false # { False, True }
-align_single_line_brace=false # { False, True }
-align_nl_cont=false # { False, True }
-align_left_shift=false # { False, True }
-nl_collapse_empty_body=false # { False, True }
-nl_assign_leave_one_liners=true # { False, True }
-nl_class_leave_one_liners=true # { False, True }
-nl_enum_leave_one_liners=true # { False, True }
-nl_getset_leave_one_liners=true # { False, True }
-nl_func_leave_one_liners=true # { False, True }
-nl_cpp_lambda_leave_one_liners=true # { False, True }
-nl_if_leave_one_liners=false # { False, True }
-nl_oc_msg_leave_one_liner=true # { False, True }
-nl_start_of_file=remove # { Ignore, Add, Remove, Force }
-nl_end_of_file=force # { Ignore, Add, Remove, Force }
-nl_end_of_file_min=1 # Number
-nl_assign_brace=force # { Ignore, Add, Remove, Force }
-nl_enum_brace=force # { Ignore, Add, Remove, Force }
-nl_struct_brace=force # { Ignore, Add, Remove, Force }
-nl_union_brace=force # { Ignore, Add, Remove, Force }
-nl_if_brace=force # { Ignore, Add, Remove, Force }
-nl_brace_else=force # { Ignore, Add, Remove, Force }
-nl_else_brace=force # { Ignore, Add, Remove, Force }
-nl_else_if=remove # { Ignore, Add, Remove, Force }
-nl_brace_finally=force # { Ignore, Add, Remove, Force }
-nl_finally_brace=force # { Ignore, Add, Remove, Force }
-nl_try_brace=force # { Ignore, Add, Remove, Force }
-nl_getset_brace=force # { Ignore, Add, Remove, Force }
-nl_for_brace=force # { Ignore, Add, Remove, Force }
-nl_catch_brace=force # { Ignore, Add, Remove, Force }
-nl_brace_catch=force # { Ignore, Add, Remove, Force }
-nl_while_brace=force # { Ignore, Add, Remove, Force }
-nl_using_brace=force # { Ignore, Add, Remove, Force }
-nl_brace_brace=ignore # { Ignore, Add, Remove, Force }
-nl_do_brace=force # { Ignore, Add, Remove, Force }
-nl_brace_while=force # { Ignore, Add, Remove, Force }
-nl_switch_brace=force # { Ignore, Add, Remove, Force }
-nl_multi_line_cond=false # { False, True }
-nl_before_case=false # { False, True }
-nl_after_case=false # { False, True }
-nl_case_colon_brace=force # { Ignore, Add, Remove, Force }
-nl_namespace_brace=force # { Ignore, Add, Remove, Force }
-nl_template_class=ignore # { Ignore, Add, Remove, Force }
-nl_class_brace=force # { Ignore, Add, Remove, Force }
-nl_fdef_brace=force # { Ignore, Add, Remove, Force }
-nl_after_semicolon=false # { False, True }
-nl_after_brace_open=false # { False, True }
-nl_after_brace_open_cmt=false # { False, True }
-nl_after_vbrace_open=false # { False, True }
-nl_after_vbrace_open_empty=false # { False, True }
-nl_after_brace_close=false # { False, True }
-nl_after_vbrace_close=false # { False, True }
-nl_squeeze_ifdef=false # { False, True }
-nl_ds_struct_enum_cmt=false # { False, True }
-nl_ds_struct_enum_close_brace=false # { False, True }
-nl_namespace_two_to_one_liner=false # { False, True }
-nl_create_if_one_liner=false # { False, True }
-nl_create_for_one_liner=false # { False, True }
-nl_create_while_one_liner=false # { False, True }
-nl_create_func_def_one_liner=false # { False, True }
-ls_for_split_full=false # { False, True }
-ls_func_split_full=false # { False, True }
-nl_max=3 # Number
-nl_after_func_body=2 # Number
-nl_after_multiline_comment=false # { False, True }
-nl_property_brace=force # { Ignore, Add, Remove, Force }
-eat_blanks_after_open_brace=true # { False, True }
-eat_blanks_before_close_brace=true # { False, True }
-nl_after_return=false # { False, True }
-mod_full_brace_if_chain=0 # Number
-mod_paren_on_return=ignore # { Ignore, Add, Remove, Force }
-mod_pawn_semicolon=false # { False, True }
-mod_full_paren_if_bool=false # { False, True }
-mod_remove_extra_semicolon=true # { False, True }
-mod_move_case_break=false # { False, True }
-mod_remove_empty_return=true # { False, True }
-cmt_convert_tab_to_spaces=True # { False, True }
-cmt_indent_multi=false # { False, True }
-cmt_c_group=false # { False, True }
-cmt_c_nl_start=false # { False, True }
-cmt_c_nl_end=false # { False, True }
-cmt_cpp_group=false # { False, True }
-cmt_cpp_nl_start=false # { False, True }
-cmt_cpp_nl_end=false # { False, True }
-cmt_cpp_to_c=false # { False, True }
-cmt_star_cont=false # { False, True }
-cmt_multi_check_last=false # { False, True }
-cmt_insert_before_preproc=false # { False, True }
-pp_space_after=ignore # { Ignore, Add, Remove, Force }
-use_options_overriding_for_qt_macros=false # { False, True }
-warn_level_tabs_found_in_verbatim_string_literals=1 # { 1, 2, 3 }
-# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
-# can be turned back on at any time
-mod_add_long_ifdef_else_comment=0
-mod_add_long_ifdef_endif_comment=0
-
-# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
-#
-# x = o.Func2(a, b,
-# y);
-# o.Func2(a, b,
-# y);
-#
-# ...but setting it 'true' is often worse:
-#
-# ExtraReallyLongType reallyLongVariableName = someTest
-# ? someTrueExpr
-# : someFalseExpr
-#
-# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
-# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
-# (currently unreported)
-indent_align_assign=false
-
-# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
-# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
-# comment line at the same level of indentation.
-# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
-# (test using Runtime/Allocator/BucketAllocator.h)
-# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
-#sp_cmt_cpp_start=add
-sp_cmt_cpp_start=ignore
-
-# https://sourceforge.net/p/uncrustify/bugs/619/
-#sp_endif_cmt=force
-sp_endif_cmt=ignore
-
-# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
-# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
-#nl_cpp_ldef_brace=force
-nl_cs_property_leave_one_liners=true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_1620.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_1620.cfg
deleted file mode 100644
index a51f35fb..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_1620.cfg
+++ /dev/null
@@ -1,289 +0,0 @@
-input_tab_size=4
-string_replace_tab_chars=true
-tok_split_gte=false
-disable_processing_cmt=*begin-nonstandard-formatting*
-enable_processing_cmt=*end-nonstandard-formatting*
-utf8_bom=remove
-utf8_byte=false
-utf8_force=false
-indent_columns=4
-indent_with_tabs=0
-indent_cmt_with_tabs=false
-indent_align_string=false
-indent_braces=false
-indent_braces_no_func=false
-indent_braces_no_class=false
-indent_braces_no_struct=false
-indent_brace_parent=false
-indent_cs_delegate_brace=true
-indent_namespace=true
-indent_extern=false
-indent_class=true
-indent_class_colon=false
-indent_else_if=false
-indent_var_def_cont=false
-indent_func_call_param=true
-indent_func_def_param=true
-indent_func_proto_param=true
-indent_func_class_param=false
-indent_func_ctor_var_param=false
-indent_template_param=false
-indent_func_param_double=false
-indent_member_single=false
-indent_relative_single_line_comments=false
-indent_switch_case=4
-indent_case_shift=0
-indent_case_brace=0
-indent_col1_comment=false
-indent_label=-4
-indent_access_spec=-4
-indent_paren_nl=false
-indent_comma_paren=0
-indent_bool_paren=0
-indent_first_bool_expr=false
-indent_square_nl=false
-indent_preserve_sql=false
-indent_align_paren=false
-indent_oc_block_msg_xcode_style=true
-indent_off_after_return_new=true
-indent_single_after_return=true
-sp_arith=add
-sp_assign=add
-sp_assign_default=add
-sp_enum_assign=add
-sp_pp_concat=remove
-sp_pp_stringify=remove
-sp_bool=add
-sp_compare=add
-sp_inside_paren=remove
-sp_paren_paren=remove
-sp_balance_nested_parens=false
-sp_paren_brace=force
-sp_after_type=ignore
-sp_template_angle=remove
-sp_before_angle=remove
-sp_inside_angle=remove
-sp_angle_paren=remove
-sp_angle_paren_empty=remove
-sp_angle_word=add
-sp_angle_shift=remove
-sp_before_sparen=force
-sp_inside_sparen=remove
-sp_after_sparen=add
-sp_sparen_brace=force
-sp_special_semi=force
-sp_before_semi=remove
-sp_before_semi_for=remove
-sp_before_semi_for_empty=remove
-sp_between_semi_for_empty=remove
-sp_after_semi=add
-sp_after_semi_for=force
-sp_after_semi_for_empty=remove
-sp_before_square=remove
-sp_before_squares=remove
-sp_inside_square=remove
-sp_after_comma=add
-sp_before_comma=ignore
-sp_after_mdatype_commas=remove
-sp_before_mdatype_commas=remove
-sp_between_mdatype_commas=remove
-sp_paren_comma=remove
-sp_after_class_colon=force
-sp_before_class_colon=force
-sp_before_case_colon=remove
-sp_after_operator=remove
-sp_after_operator_sym=remove
-sp_after_operator_sym_empty=remove
-sp_after_cast=remove
-sp_inside_paren_cast=remove
-sp_cpp_cast_paren=remove
-sp_sizeof_paren=remove
-sp_inside_braces_enum=add
-sp_inside_braces_empty=remove
-sp_type_func=ignore
-sp_func_proto_paren=remove
-sp_func_def_paren=remove
-sp_inside_fparens=remove
-sp_inside_fparen=remove
-sp_fparen_brace=add
-sp_func_call_paren=remove
-sp_func_call_paren_empty=remove
-sp_func_call_user_paren=remove
-sp_func_class_paren=remove
-sp_return_paren=add
-sp_defined_paren=remove
-sp_throw_paren=add
-sp_catch_paren=add
-sp_brace_typedef=add
-sp_getset_brace=add
-sp_after_dc=remove
-sp_not=remove
-sp_inv=remove
-sp_addr=remove
-sp_member=remove
-sp_deref=remove
-sp_sign=remove
-sp_incdec=remove
-sp_before_nl_cont=add
-sp_after_oc_scope=force
-sp_after_oc_colon=remove
-sp_before_oc_colon=remove
-sp_after_oc_dict_colon=force
-sp_before_oc_dict_colon=remove
-sp_after_send_oc_colon=force
-sp_before_send_oc_colon=remove
-sp_after_oc_type=remove
-sp_after_oc_return_type=remove
-sp_after_oc_at_sel=remove
-sp_inside_oc_at_sel_parens=remove
-sp_cond_colon=add
-sp_cond_question=add
-sp_case_label=ignore
-sp_after_new=force
-sp_between_new_paren=remove
-sp_skip_vbrace_tokens=true
-align_keep_tabs=false
-align_with_tabs=false
-align_on_tabstop=false
-align_number_right=false
-align_func_params=false
-align_same_func_call_params=false
-align_var_def_colon=false
-align_var_def_attribute=false
-align_var_def_inline=false
-align_right_cmt_mix=false
-align_on_operator=false
-align_mix_var_proto=false
-align_single_line_func=false
-align_single_line_brace=false
-align_nl_cont=false
-align_left_shift=false
-nl_collapse_empty_body=false
-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_if_leave_one_liners=false
-nl_oc_msg_leave_one_liner=true
-nl_start_of_file=remove
-nl_end_of_file=force
-nl_end_of_file_min=1
-nl_assign_brace=force
-nl_enum_brace=force
-nl_struct_brace=force
-nl_union_brace=force
-nl_if_brace=force
-nl_brace_else=force
-nl_else_brace=force
-nl_else_if=remove
-nl_brace_finally=force
-nl_finally_brace=force
-nl_try_brace=force
-nl_getset_brace=force
-nl_for_brace=force
-nl_catch_brace=force
-nl_brace_catch=force
-nl_while_brace=force
-nl_using_brace=force
-nl_brace_brace=ignore
-nl_do_brace=force
-nl_brace_while=force
-nl_switch_brace=force
-nl_multi_line_cond=false
-nl_before_case=false
-nl_after_case=false
-nl_case_colon_brace=force
-nl_namespace_brace=force
-nl_template_class=ignore
-nl_class_brace=force
-nl_fdef_brace=force
-nl_after_semicolon=false
-nl_after_brace_open=false
-nl_after_brace_open_cmt=false
-nl_after_vbrace_open=false
-nl_after_vbrace_open_empty=false
-nl_after_brace_close=false
-nl_after_vbrace_close=false
-nl_squeeze_ifdef=false
-nl_ds_struct_enum_cmt=false
-nl_ds_struct_enum_close_brace=false
-nl_namespace_two_to_one_liner=false
-nl_create_if_one_liner=false
-nl_create_for_one_liner=false
-nl_create_while_one_liner=false
-nl_create_func_def_one_liner=false
-ls_for_split_full=false
-ls_func_split_full=false
-nl_max=3
-nl_after_func_body=2
-nl_after_multiline_comment=false
-nl_property_brace=force
-eat_blanks_after_open_brace=true
-eat_blanks_before_close_brace=true
-nl_after_return=false
-mod_full_brace_if_chain=0
-mod_paren_on_return=ignore
-mod_pawn_semicolon=false
-mod_full_paren_if_bool=false
-mod_remove_extra_semicolon=true
-mod_move_case_break=false
-mod_remove_empty_return=true
-cmt_convert_tab_to_spaces=True
-cmt_indent_multi=false
-cmt_c_group=false
-cmt_c_nl_start=false
-cmt_c_nl_end=false
-cmt_cpp_group=false
-cmt_cpp_nl_start=false
-cmt_cpp_nl_end=false
-cmt_cpp_to_c=false
-cmt_star_cont=false
-cmt_multi_check_last=false
-cmt_insert_before_preproc=false
-pp_space_after=ignore
-use_options_overriding_for_qt_macros=false
-warn_level_tabs_found_in_verbatim_string_literals=1
-mod_add_long_ifdef_else_comment=0
-mod_add_long_ifdef_endif_comment=0
-
-
-
-# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
-#
-# x = o.Func2(a, b,
-# y);
-# o.Func2(a, b,
-# y);
-#
-# ...but setting it 'true' is often worse:
-#
-# ExtraReallyLongType reallyLongVariableName = someTest
-# ? someTrueExpr
-# : someFalseExpr
-#
-# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
-# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
-# (currently unreported)
-indent_align_assign=false
-
-# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
-# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
-# comment line at the same level of indentation.
-# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
-# (test using Runtime/Allocator/BucketAllocator.h)
-# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
-#sp_cmt_cpp_start=add
-sp_cmt_cpp_start=ignore
-
-# https://sourceforge.net/p/uncrustify/bugs/619/
-#sp_endif_cmt=force
-sp_endif_cmt=ignore
-
-# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
-# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
-#nl_cpp_ldef_brace=force
-indent_paren_open_brace=true
-indent_cs_delegate_brace=false
-indent_paren_close=2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_1637.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_1637.cfg
deleted file mode 100644
index 81291e9c..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_1637.cfg
+++ /dev/null
@@ -1,287 +0,0 @@
-input_tab_size=4
-string_replace_tab_chars=true
-tok_split_gte=false
-disable_processing_cmt=*begin-nonstandard-formatting*
-enable_processing_cmt=*end-nonstandard-formatting*
-utf8_bom=remove
-utf8_byte=false
-utf8_force=false
-indent_columns=4
-indent_with_tabs=0
-indent_cmt_with_tabs=false
-indent_align_string=false
-indent_braces=false
-indent_braces_no_func=false
-indent_braces_no_class=false
-indent_braces_no_struct=false
-indent_brace_parent=false
-indent_cs_delegate_brace=true
-indent_namespace=true
-indent_extern=false
-indent_class=true
-indent_class_colon=false
-indent_else_if=false
-indent_var_def_cont=false
-indent_func_call_param=true
-indent_func_def_param=true
-indent_func_proto_param=true
-indent_func_class_param=false
-indent_func_ctor_var_param=false
-indent_template_param=false
-indent_func_param_double=false
-indent_member_single=false
-indent_relative_single_line_comments=false
-indent_switch_case=4
-indent_case_shift=0
-indent_case_brace=0
-indent_col1_comment=false
-indent_label=-4
-indent_access_spec=-4
-indent_paren_nl=false
-indent_comma_paren=0
-indent_bool_paren=0
-indent_first_bool_expr=false
-indent_square_nl=false
-indent_preserve_sql=false
-indent_align_paren=false
-indent_oc_block_msg_xcode_style=true
-indent_off_after_return_new=true
-indent_single_after_return=true
-sp_arith=add
-sp_assign=add
-sp_assign_default=add
-sp_enum_assign=add
-sp_pp_concat=remove
-sp_pp_stringify=remove
-sp_bool=add
-sp_compare=add
-sp_inside_paren=remove
-sp_paren_paren=remove
-sp_balance_nested_parens=false
-sp_paren_brace=force
-sp_after_type=ignore
-sp_template_angle=remove
-sp_before_angle=remove
-sp_inside_angle=remove
-sp_angle_paren=remove
-sp_angle_paren_empty=remove
-sp_angle_word=add
-sp_angle_shift=remove
-sp_before_sparen=force
-sp_inside_sparen=remove
-sp_after_sparen=add
-sp_sparen_brace=force
-sp_special_semi=force
-sp_before_semi=remove
-sp_before_semi_for=remove
-sp_before_semi_for_empty=remove
-sp_between_semi_for_empty=remove
-sp_after_semi=add
-sp_after_semi_for=force
-sp_after_semi_for_empty=remove
-sp_before_square=remove
-sp_before_squares=remove
-sp_inside_square=remove
-sp_after_comma=add
-sp_before_comma=ignore
-sp_after_mdatype_commas=remove
-sp_before_mdatype_commas=remove
-sp_between_mdatype_commas=remove
-sp_paren_comma=remove
-sp_after_class_colon=force
-sp_before_class_colon=force
-sp_before_case_colon=remove
-sp_after_operator=remove
-sp_after_operator_sym=remove
-sp_after_operator_sym_empty=remove
-sp_after_cast=remove
-sp_inside_paren_cast=remove
-sp_cpp_cast_paren=remove
-sp_sizeof_paren=remove
-sp_inside_braces_enum=add
-sp_inside_braces_empty=remove
-sp_type_func=ignore
-sp_func_proto_paren=remove
-sp_func_def_paren=remove
-sp_inside_fparens=remove
-sp_inside_fparen=remove
-sp_fparen_brace=add
-sp_func_call_paren=remove
-sp_func_call_paren_empty=remove
-sp_func_call_user_paren=remove
-sp_func_class_paren=remove
-sp_return_paren=add
-sp_defined_paren=remove
-sp_throw_paren=add
-sp_catch_paren=add
-sp_brace_typedef=add
-sp_getset_brace=add
-sp_after_dc=remove
-sp_not=remove
-sp_inv=remove
-sp_addr=remove
-sp_member=remove
-sp_deref=remove
-sp_sign=remove
-sp_incdec=remove
-sp_before_nl_cont=add
-sp_after_oc_scope=force
-sp_after_oc_colon=remove
-sp_before_oc_colon=remove
-sp_after_oc_dict_colon=force
-sp_before_oc_dict_colon=remove
-sp_after_send_oc_colon=force
-sp_before_send_oc_colon=remove
-sp_after_oc_type=remove
-sp_after_oc_return_type=remove
-sp_after_oc_at_sel=remove
-sp_inside_oc_at_sel_parens=remove
-sp_cond_colon=add
-sp_cond_question=add
-sp_case_label=ignore
-sp_after_new=force
-sp_between_new_paren=remove
-sp_skip_vbrace_tokens=true
-align_keep_tabs=false
-align_with_tabs=false
-align_on_tabstop=false
-align_number_right=false
-align_func_params=false
-align_same_func_call_params=false
-align_var_def_colon=false
-align_var_def_attribute=false
-align_var_def_inline=false
-align_right_cmt_mix=false
-align_on_operator=false
-align_mix_var_proto=false
-align_single_line_func=false
-align_single_line_brace=false
-align_nl_cont=false
-align_left_shift=false
-nl_collapse_empty_body=false
-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_if_leave_one_liners=false
-nl_oc_msg_leave_one_liner=true
-nl_start_of_file=remove
-nl_end_of_file=force
-nl_end_of_file_min=1
-nl_assign_brace=force
-nl_enum_brace=force
-nl_struct_brace=force
-nl_union_brace=force
-nl_if_brace=force
-nl_brace_else=force
-nl_else_brace=force
-nl_else_if=remove
-nl_brace_finally=force
-nl_finally_brace=force
-nl_try_brace=force
-nl_getset_brace=force
-nl_for_brace=force
-nl_catch_brace=force
-nl_brace_catch=force
-nl_while_brace=force
-nl_using_brace=force
-nl_brace_brace=ignore
-nl_do_brace=force
-nl_brace_while=force
-nl_switch_brace=force
-nl_multi_line_cond=false
-nl_before_case=false
-nl_after_case=false
-nl_case_colon_brace=force
-nl_namespace_brace=force
-nl_template_class=ignore
-nl_class_brace=force
-nl_fdef_brace=force
-nl_after_semicolon=false
-nl_after_brace_open=false
-nl_after_brace_open_cmt=false
-nl_after_vbrace_open=false
-nl_after_vbrace_open_empty=false
-nl_after_brace_close=false
-nl_after_vbrace_close=false
-nl_squeeze_ifdef=false
-nl_ds_struct_enum_cmt=false
-nl_ds_struct_enum_close_brace=false
-nl_namespace_two_to_one_liner=false
-nl_create_if_one_liner=false
-nl_create_for_one_liner=false
-nl_create_while_one_liner=false
-nl_create_func_def_one_liner=false
-ls_for_split_full=false
-ls_func_split_full=false
-nl_max=3
-nl_after_func_body=2
-nl_after_multiline_comment=false
-nl_property_brace=force
-eat_blanks_after_open_brace=true
-eat_blanks_before_close_brace=true
-nl_after_return=false
-mod_full_brace_if_chain=0
-mod_pawn_semicolon=false
-mod_full_paren_if_bool=false
-mod_remove_extra_semicolon=true
-mod_move_case_break=false
-mod_remove_empty_return=true
-cmt_convert_tab_to_spaces=True
-cmt_indent_multi=false
-cmt_c_group=false
-cmt_c_nl_start=false
-cmt_c_nl_end=false
-cmt_cpp_group=false
-cmt_cpp_nl_start=false
-cmt_cpp_nl_end=false
-cmt_cpp_to_c=false
-cmt_star_cont=false
-cmt_multi_check_last=false
-cmt_insert_before_preproc=false
-pp_space_after=ignore
-use_options_overriding_for_qt_macros=false
-warn_level_tabs_found_in_verbatim_string_literals=1
-mod_add_long_ifdef_else_comment=0
-mod_add_long_ifdef_endif_comment=0
-
-
-
-# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
-#
-# x = o.Func2(a, b,
-# y);
-# o.Func2(a, b,
-# y);
-#
-# ...but setting it 'true' is often worse:
-#
-# ExtraReallyLongType reallyLongVariableName = someTest
-# ? someTrueExpr
-# : someFalseExpr
-#
-# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
-# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
-# (currently unreported)
-indent_align_assign=false
-
-# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
-# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
-# comment line at the same level of indentation.
-# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
-# (test using Runtime/Allocator/BucketAllocator.h)
-# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
-#sp_cmt_cpp_start=add
-sp_cmt_cpp_start=ignore
-
-# https://sourceforge.net/p/uncrustify/bugs/619/
-#sp_endif_cmt=force
-sp_endif_cmt=ignore
-
-# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
-# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
-#nl_cpp_ldef_brace=force
-
-mod_paren_on_return=remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_1650.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_1650.cfg
deleted file mode 100644
index 9bcbfed5..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_1650.cfg
+++ /dev/null
@@ -1,288 +0,0 @@
-input_tab_size=4
-string_replace_tab_chars=true
-tok_split_gte=false
-disable_processing_cmt=*begin-nonstandard-formatting*
-enable_processing_cmt=*end-nonstandard-formatting*
-utf8_bom=remove
-utf8_byte=false
-utf8_force=false
-indent_columns=4
-indent_with_tabs=0
-indent_cmt_with_tabs=false
-indent_align_string=false
-indent_braces=false
-indent_braces_no_func=false
-indent_braces_no_class=false
-indent_braces_no_struct=false
-indent_brace_parent=false
-indent_cs_delegate_brace=true
-indent_namespace=true
-indent_extern=false
-indent_class=true
-indent_class_colon=false
-indent_else_if=false
-indent_var_def_cont=false
-indent_func_call_param=true
-indent_func_def_param=true
-indent_func_proto_param=true
-indent_func_class_param=false
-indent_func_ctor_var_param=false
-indent_template_param=false
-indent_func_param_double=false
-indent_relative_single_line_comments=false
-indent_switch_case=4
-indent_case_shift=0
-indent_case_brace=0
-indent_col1_comment=false
-indent_label=-4
-indent_access_spec=-4
-indent_paren_nl=false
-indent_comma_paren=0
-indent_bool_paren=0
-indent_first_bool_expr=false
-indent_square_nl=false
-indent_preserve_sql=false
-indent_align_paren=false
-indent_oc_block_msg_xcode_style=true
-indent_off_after_return_new=true
-indent_single_after_return=true
-sp_arith=add
-sp_assign=add
-sp_assign_default=add
-sp_enum_assign=add
-sp_pp_concat=remove
-sp_pp_stringify=remove
-sp_bool=add
-sp_compare=add
-sp_inside_paren=remove
-sp_paren_paren=remove
-sp_balance_nested_parens=false
-sp_paren_brace=force
-sp_after_type=ignore
-sp_template_angle=remove
-sp_before_angle=remove
-sp_inside_angle=remove
-sp_angle_paren=remove
-sp_angle_paren_empty=remove
-sp_angle_word=add
-sp_angle_shift=remove
-sp_before_sparen=force
-sp_inside_sparen=remove
-sp_after_sparen=add
-sp_sparen_brace=force
-sp_special_semi=force
-sp_before_semi=remove
-sp_before_semi_for=remove
-sp_before_semi_for_empty=remove
-sp_between_semi_for_empty=remove
-sp_after_semi=add
-sp_after_semi_for=force
-sp_after_semi_for_empty=remove
-sp_before_square=remove
-sp_before_squares=remove
-sp_inside_square=remove
-sp_after_comma=add
-sp_before_comma=ignore
-sp_after_mdatype_commas=remove
-sp_before_mdatype_commas=remove
-sp_between_mdatype_commas=remove
-sp_paren_comma=remove
-sp_after_class_colon=force
-sp_before_class_colon=force
-sp_before_case_colon=remove
-sp_after_operator=remove
-sp_after_operator_sym=remove
-sp_after_operator_sym_empty=remove
-sp_after_cast=remove
-sp_inside_paren_cast=remove
-sp_cpp_cast_paren=remove
-sp_sizeof_paren=remove
-sp_inside_braces_enum=add
-sp_inside_braces_empty=remove
-sp_type_func=ignore
-sp_func_proto_paren=remove
-sp_func_def_paren=remove
-sp_inside_fparens=remove
-sp_inside_fparen=remove
-sp_fparen_brace=add
-sp_func_call_paren=remove
-sp_func_call_paren_empty=remove
-sp_func_call_user_paren=remove
-sp_func_class_paren=remove
-sp_return_paren=add
-sp_defined_paren=remove
-sp_throw_paren=add
-sp_catch_paren=add
-sp_getset_brace=add
-sp_after_dc=remove
-sp_not=remove
-sp_inv=remove
-sp_addr=remove
-sp_member=remove
-sp_deref=remove
-sp_sign=remove
-sp_incdec=remove
-sp_before_nl_cont=add
-sp_after_oc_scope=force
-sp_after_oc_colon=remove
-sp_before_oc_colon=remove
-sp_after_oc_dict_colon=force
-sp_before_oc_dict_colon=remove
-sp_after_send_oc_colon=force
-sp_before_send_oc_colon=remove
-sp_after_oc_type=remove
-sp_after_oc_return_type=remove
-sp_after_oc_at_sel=remove
-sp_inside_oc_at_sel_parens=remove
-sp_cond_colon=add
-sp_cond_question=add
-sp_case_label=ignore
-sp_after_new=force
-sp_between_new_paren=remove
-sp_skip_vbrace_tokens=true
-align_keep_tabs=false
-align_with_tabs=false
-align_on_tabstop=false
-align_number_right=false
-align_func_params=false
-align_same_func_call_params=false
-align_var_def_colon=false
-align_var_def_attribute=false
-align_var_def_inline=false
-align_right_cmt_mix=false
-align_on_operator=false
-align_mix_var_proto=false
-align_single_line_func=false
-align_single_line_brace=false
-align_nl_cont=false
-align_left_shift=false
-nl_collapse_empty_body=false
-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_if_leave_one_liners=false
-nl_oc_msg_leave_one_liner=true
-nl_start_of_file=remove
-nl_end_of_file=force
-nl_end_of_file_min=1
-nl_assign_brace=force
-nl_enum_brace=force
-nl_struct_brace=force
-nl_union_brace=force
-nl_if_brace=force
-nl_brace_else=force
-nl_else_brace=force
-nl_else_if=remove
-nl_brace_finally=force
-nl_finally_brace=force
-nl_try_brace=force
-nl_getset_brace=force
-nl_for_brace=force
-nl_catch_brace=force
-nl_brace_catch=force
-nl_while_brace=force
-nl_using_brace=force
-nl_brace_brace=ignore
-nl_do_brace=force
-nl_brace_while=force
-nl_switch_brace=force
-nl_multi_line_cond=false
-nl_before_case=false
-nl_after_case=false
-nl_case_colon_brace=force
-nl_namespace_brace=force
-nl_template_class=ignore
-nl_class_brace=force
-nl_fdef_brace=force
-nl_after_semicolon=false
-nl_after_brace_open=false
-nl_after_brace_open_cmt=false
-nl_after_vbrace_open=false
-nl_after_vbrace_open_empty=false
-nl_after_brace_close=false
-nl_after_vbrace_close=false
-nl_squeeze_ifdef=false
-nl_ds_struct_enum_cmt=false
-nl_ds_struct_enum_close_brace=false
-nl_namespace_two_to_one_liner=false
-nl_create_if_one_liner=false
-nl_create_for_one_liner=false
-nl_create_while_one_liner=false
-nl_create_func_def_one_liner=false
-ls_for_split_full=false
-ls_func_split_full=false
-nl_max=3
-nl_after_func_body=2
-nl_after_multiline_comment=false
-nl_property_brace=force
-eat_blanks_after_open_brace=true
-eat_blanks_before_close_brace=true
-nl_after_return=false
-mod_full_brace_if_chain=0
-mod_paren_on_return=ignore
-mod_pawn_semicolon=false
-mod_full_paren_if_bool=false
-mod_remove_extra_semicolon=true
-mod_move_case_break=false
-mod_remove_empty_return=true
-cmt_convert_tab_to_spaces=True
-cmt_indent_multi=false
-cmt_c_group=false
-cmt_c_nl_start=false
-cmt_c_nl_end=false
-cmt_cpp_group=false
-cmt_cpp_nl_start=false
-cmt_cpp_nl_end=false
-cmt_cpp_to_c=false
-cmt_star_cont=false
-cmt_multi_check_last=false
-cmt_insert_before_preproc=false
-pp_space_after=ignore
-use_options_overriding_for_qt_macros=false
-warn_level_tabs_found_in_verbatim_string_literals=1
-mod_add_long_ifdef_else_comment=0
-mod_add_long_ifdef_endif_comment=0
-
-
-
-# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
-#
-# x = o.Func2(a, b,
-# y);
-# o.Func2(a, b,
-# y);
-#
-# ...but setting it 'true' is often worse:
-#
-# ExtraReallyLongType reallyLongVariableName = someTest
-# ? someTrueExpr
-# : someFalseExpr
-#
-# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
-# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
-# (currently unreported)
-indent_align_assign=false
-
-# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
-# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
-# comment line at the same level of indentation.
-# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
-# (test using Runtime/Allocator/BucketAllocator.h)
-# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
-#sp_cmt_cpp_start=add
-sp_cmt_cpp_start=ignore
-
-# https://sourceforge.net/p/uncrustify/bugs/619/
-#sp_endif_cmt=force
-sp_endif_cmt=ignore
-
-# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
-# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
-#nl_cpp_ldef_brace=force
-indent_cs_delegate_body=true
-indent_paren_open_brace=true
-indent_member_single=true
-indent_paren_close=2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d2.cfg
deleted file mode 100644
index e3702fbe..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d2.cfg
+++ /dev/null
@@ -1,49 +0,0 @@
-sp_arith = force
-sp_compare = force
-sp_inside_paren = remove
-sp_paren_paren = remove
-sp_before_template_paren = force
-sp_before_sparen = force
-sp_inside_sparen = remove
-sp_inside_for = remove
-sp_after_comma = force
-sp_after_cast = remove
-sp_func_def_paren = remove
-sp_inside_fparen = remove
-sp_fparen_brace = force
-sp_else_brace = force
-sp_do_brace_open = force
-sp_while_paren_open = force
-indent_columns = 4
-indent_with_tabs = 0
-indent_class = true
-indent_case_brace = 4
-nl_start_of_file = remove
-nl_end_of_file = force
-nl_end_of_file_min = 1
-nl_var_def_blk_end_func_top = 1
-nl_enum_brace = remove
-nl_if_brace = remove
-nl_else_brace = remove
-nl_for_brace = remove
-nl_while_brace = remove
-nl_do_brace = remove
-nl_switch_brace = remove
-nl_before_case = true
-nl_fdef_brace = remove
-nl_after_brace_open = true
-eat_blanks_after_open_brace = true
-eat_blanks_before_close_brace = true
-nl_after_return = true
-align_var_def_span = 2
-align_var_def_star_style = 1
-align_assign_span = 1
-align_enum_equ_span = 4
-align_var_class_span = 2
-align_typedef_gap = 3
-align_typedef_span = 5
-align_right_cmt_span = 3
-cmt_star_cont = true
-mod_full_brace_if = add
-mod_full_brace_while = add
-mod_paren_on_return = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/1927.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/1927.cfg
deleted file mode 100644
index 3734f63d..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/1927.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-# Add or remove space between '}' and '@catch' if on the same line.
-# If set to ignore, sp_brace_catch is used.
-sp_oc_brace_catch = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/UNI-11095.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/UNI-11095.cfg
deleted file mode 100644
index 104bc385..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/UNI-11095.cfg
+++ /dev/null
@@ -1,319 +0,0 @@
-input_tab_size=4
-string_replace_tab_chars=true
-tok_split_gte=false
-disable_processing_cmt=*begin-nonstandard-formatting*
-enable_processing_cmt=*end-nonstandard-formatting*
-utf8_bom=remove
-utf8_byte=false
-utf8_force=false
-indent_columns=4
-indent_with_tabs=0
-indent_cmt_with_tabs=false
-indent_align_string=false
-indent_braces=false
-indent_braces_no_func=false
-indent_braces_no_class=false
-indent_braces_no_struct=false
-indent_brace_parent=false
-indent_cs_delegate_brace=true
-indent_namespace=true
-indent_extern=false
-indent_class=true
-indent_class_colon=false
-indent_else_if=false
-indent_var_def_cont=false
-indent_func_call_param=true
-indent_func_def_param=true
-indent_func_proto_param=true
-indent_func_class_param=false
-indent_func_ctor_var_param=false
-indent_template_param=false
-indent_func_param_double=false
-indent_relative_single_line_comments=false
-indent_switch_case=4
-indent_case_shift=0
-indent_case_brace=0
-indent_col1_comment=false
-indent_label=-4
-indent_access_spec=-4
-indent_paren_nl=false
-indent_comma_paren=0
-indent_bool_paren=0
-indent_first_bool_expr=false
-indent_square_nl=false
-indent_preserve_sql=false
-indent_align_paren=false
-indent_oc_block_msg_xcode_style=true
-indent_off_after_return_new=true
-indent_single_after_return=true
-sp_arith=add
-sp_assign=add
-sp_assign_default=add
-sp_enum_assign=add
-sp_pp_concat=remove
-sp_pp_stringify=remove
-sp_bool=add
-sp_compare=add
-sp_inside_paren=remove
-sp_paren_paren=remove
-sp_balance_nested_parens=false
-sp_paren_brace=force
-sp_after_type=ignore
-sp_template_angle=remove
-sp_before_angle=remove
-sp_inside_angle=remove
-sp_angle_paren=remove
-sp_angle_paren_empty=remove
-sp_angle_word=add
-sp_angle_shift=remove
-sp_before_sparen=force
-sp_inside_sparen=remove
-sp_after_sparen=add
-sp_sparen_brace=force
-sp_special_semi=force
-sp_before_semi=remove
-sp_before_semi_for=remove
-sp_before_semi_for_empty=remove
-sp_between_semi_for_empty=remove
-sp_after_semi=add
-sp_after_semi_for=force
-sp_after_semi_for_empty=remove
-sp_before_square=remove
-sp_before_squares=remove
-sp_inside_square=remove
-sp_after_comma=add
-sp_before_comma=ignore
-sp_after_mdatype_commas=remove
-sp_before_mdatype_commas=remove
-sp_between_mdatype_commas=remove
-sp_paren_comma=remove
-sp_after_class_colon=force
-sp_before_class_colon=force
-sp_before_case_colon=remove
-sp_after_operator=remove
-sp_after_operator_sym=remove
-sp_after_operator_sym_empty=remove
-sp_after_cast=remove
-sp_inside_paren_cast=remove
-sp_cpp_cast_paren=remove
-sp_sizeof_paren=remove
-sp_inside_braces_enum=add
-sp_inside_braces_empty=remove
-sp_type_func=ignore
-sp_func_proto_paren=remove
-sp_func_def_paren=remove
-sp_inside_fparens=remove
-sp_inside_fparen=remove
-sp_fparen_brace=add
-sp_func_call_paren=remove
-sp_func_call_paren_empty=remove
-sp_func_call_user_paren=remove
-sp_func_class_paren=remove
-sp_return_paren=add
-sp_defined_paren=remove
-sp_throw_paren=add
-sp_catch_paren=add
-sp_brace_typedef=add
-sp_getset_brace=add
-sp_after_dc=remove
-sp_not=remove
-sp_inv=remove
-sp_addr=remove
-sp_member=remove
-sp_deref=remove
-sp_sign=remove
-sp_incdec=remove
-sp_before_nl_cont=add
-sp_after_oc_scope=force
-sp_after_oc_colon=remove
-sp_before_oc_colon=remove
-sp_after_oc_dict_colon=force
-sp_before_oc_dict_colon=remove
-sp_after_send_oc_colon=force
-sp_before_send_oc_colon=remove
-sp_after_oc_type=remove
-sp_after_oc_return_type=remove
-sp_after_oc_at_sel=remove
-sp_inside_oc_at_sel_parens=remove
-sp_cond_colon=add
-sp_cond_question=add
-sp_case_label=ignore
-sp_after_new=force
-sp_between_new_paren=remove
-sp_skip_vbrace_tokens=true
-align_keep_tabs=false
-align_with_tabs=false
-align_on_tabstop=false
-align_number_right=false
-align_func_params=false
-align_same_func_call_params=false
-align_var_def_colon=false
-align_var_def_attribute=false
-align_var_def_inline=false
-align_right_cmt_mix=false
-align_on_operator=false
-align_mix_var_proto=false
-align_single_line_func=false
-align_single_line_brace=false
-align_nl_cont=false
-align_left_shift=false
-nl_collapse_empty_body=false
-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_if_leave_one_liners=false
-nl_oc_msg_leave_one_liner=true
-nl_start_of_file=remove
-nl_end_of_file=force
-nl_end_of_file_min=1
-nl_assign_brace=force
-nl_enum_brace=force
-nl_struct_brace=force
-nl_union_brace=force
-nl_if_brace=force
-nl_brace_else=force
-nl_else_brace=force
-nl_else_if=remove
-nl_brace_finally=force
-nl_finally_brace=force
-nl_try_brace=force
-nl_getset_brace=force
-nl_for_brace=force
-nl_catch_brace=force
-nl_brace_catch=force
-nl_while_brace=force
-nl_using_brace=force
-nl_brace_brace=ignore
-nl_do_brace=force
-nl_brace_while=force
-nl_switch_brace=force
-nl_multi_line_cond=false
-nl_before_case=false
-nl_after_case=false
-nl_case_colon_brace=force
-nl_namespace_brace=force
-nl_template_class=ignore
-nl_class_brace=force
-nl_fdef_brace=force
-nl_after_semicolon=false
-nl_after_brace_open=false
-nl_after_brace_open_cmt=false
-nl_after_vbrace_open=false
-nl_after_vbrace_open_empty=false
-nl_after_brace_close=false
-nl_after_vbrace_close=false
-nl_squeeze_ifdef=false
-nl_ds_struct_enum_cmt=false
-nl_ds_struct_enum_close_brace=false
-nl_namespace_two_to_one_liner=false
-nl_create_if_one_liner=false
-nl_create_for_one_liner=false
-nl_create_while_one_liner=false
-nl_create_func_def_one_liner=false
-ls_for_split_full=false
-ls_func_split_full=false
-nl_max=3
-nl_after_func_body=2
-nl_after_multiline_comment=false
-nl_property_brace=force
-eat_blanks_after_open_brace=true
-eat_blanks_before_close_brace=true
-nl_after_return=false
-mod_full_brace_if_chain=0
-mod_paren_on_return=ignore
-mod_pawn_semicolon=false
-mod_full_paren_if_bool=false
-mod_remove_extra_semicolon=true
-mod_move_case_break=false
-mod_remove_empty_return=true
-cmt_convert_tab_to_spaces=True
-cmt_indent_multi=false
-cmt_c_group=false
-cmt_c_nl_start=false
-cmt_c_nl_end=false
-cmt_cpp_group=false
-cmt_cpp_nl_start=false
-cmt_cpp_nl_end=false
-cmt_cpp_to_c=false
-cmt_star_cont=false
-cmt_multi_check_last=false
-cmt_insert_before_preproc=false
-pp_space_after=ignore
-use_options_overriding_for_qt_macros=false
-warn_level_tabs_found_in_verbatim_string_literals=1
-# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
-# can be turned back on at any time
-mod_add_long_ifdef_else_comment=0
-mod_add_long_ifdef_endif_comment=0
-
-
-
-# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
-#
-# x = o.Func2(a, b,
-# y);
-# o.Func2(a, b,
-# y);
-#
-# ...but setting it 'true' is often worse:
-#
-# ExtraReallyLongType reallyLongVariableName = someTest
-# ? someTrueExpr
-# : someFalseExpr
-#
-# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
-# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
-# (currently unreported)
-indent_align_assign=false
-
-# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
-# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
-# comment line at the same level of indentation.
-# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
-# (test using Runtime/Allocator/BucketAllocator.h)
-# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
-#sp_cmt_cpp_start=add
-sp_cmt_cpp_start=ignore
-
-# https://sourceforge.net/p/uncrustify/bugs/619/
-#sp_endif_cmt=force
-sp_endif_cmt=ignore
-
-# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
-# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
-#nl_cpp_ldef_brace=force
-
-# workaround for some nasty macroing we're doing
-set COMMENT PLATFORM_EXCEPTION_SAFEGUARD_PROLOG
-
-# without this, uncrustify will parse and process the contents of #defines, which is super unstable. very easy to get into edge cases it does not support,
-# so just have it treat #defines as black boxes. this will keep all of the contents of the #define as unprocessed.
-pp_ignore_define_body=true
-
-# macros in #includes aren't known to Uncrustify, so have to inform it here for macros that will confuse it
-set MACRO_FUNC ATTRIBUTE_ALIGN
-
-# we have some truly insane deep namespace nesting in il2cpp. :/
-indent_namespace_single_indent=true
-
-# needed for fmod apparently (via HEVAGTool.h - the *'s near F_STDCALL will be interpreted as ARITH without this)
-set COMMENT F_STDCALL
-
-# https://github.com/uncrustify/uncrustify/pull/602
-# https://sourceforge.net/p/uncrustify/bugs/633/
-set COMMENT __cdecl
-set COMMENT __clrcall
-set COMMENT __fastcall
-set COMMENT __stdcall
-set COMMENT __thiscall
-set COMMENT __vectorcall
-set COMMENT WINAPI
-
-# We need to make FAKE_FUNCTION a PROTO_WRAP macro function to help properly tokenize it's parameters.
-# Previously parameters with CT_AMP and CT_STAR were tokenized as CT_ARITH. Support for optional parenthesis added in github PR #629.
-set PROTO_WRAP FAKE_FUNCTION
-nl_create_func_def_one_liner=true
-sp_inside_braces=Add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/indent_single_newline.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/indent_single_newline.cfg
deleted file mode 100644
index 1496b522..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/indent_single_newline.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-indent_single_newlines = true
-indent_columns = 4 # number
-indent_with_tabs = 0 # number
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_catch-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_catch-i.cfg
deleted file mode 100644
index 98e8f829..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_catch-i.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-sp_oc_catch_paren = ignore
-sp_catch_paren = add
-sp_oc_catch_brace = add
-sp_catch_brace = force
-sp_oc_brace_catch = add
-sp_brace_catch = force
-nl_oc_catch_brace = remove
-nl_catch_brace = remove
-nl_oc_brace_catch = add
-nl_brace_catch = remove
-sp_finally_brace = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_catch-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_catch-r.cfg
deleted file mode 100644
index 789e2872..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_catch-r.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-sp_oc_catch_paren = remove
-sp_catch_paren = add
-sp_oc_catch_brace = add
-sp_catch_brace = force
-sp_oc_brace_catch = add
-sp_brace_catch = force
-nl_oc_catch_brace = remove
-nl_catch_brace = remove
-nl_oc_brace_catch = add
-nl_brace_catch = remove
-sp_finally_brace = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_catch.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_catch.cfg
deleted file mode 100644
index 7367541a..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_catch.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-sp_oc_catch_paren = force
-sp_catch_paren = add # ignore/add/remove/force
-sp_oc_catch_brace = add # ignore/add/remove/force
-sp_catch_brace = force # ignore/add/remove/force
-sp_oc_brace_catch = add # ignore/add/remove/force
-sp_brace_catch = force # ignore/add/remove/force
-nl_oc_catch_brace = remove # ignore/add/remove/force
-nl_catch_brace = remove # ignore/add/remove/force
-nl_oc_brace_catch = add # ignore/add/remove/force
-nl_brace_catch = remove # ignore/add/remove/force
-sp_finally_brace = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_synchronized.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_synchronized.cfg
deleted file mode 100644
index 5056f70f..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_synchronized.cfg
+++ /dev/null
@@ -1 +0,0 @@
-sp_after_oc_synchronized = force # ignore/add/remove/force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/pawn-escape.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/pawn-escape.cfg
deleted file mode 100644
index 8d10ec23..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/pawn-escape.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-string_escape_char = 94 # '^'
-indent_columns = 4
-indent_with_tabs = 0
-mod_pawn_semicolon = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/pawn.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/pawn.cfg
deleted file mode 100644
index 7859328a..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/pawn.cfg
+++ /dev/null
@@ -1,16 +0,0 @@
-input_tab_size = 4
-sp_arith = force
-sp_after_tag = remove
-sp_inside_braces = add
-sp_brace_else = force
-sp_else_brace = force
-sp_func_call_paren = remove
-#sp_func_call_paren = force
-indent_columns = 4
-indent_with_tabs = 0
-nl_brace_else = remove
-nl_fdef_brace = force
-mod_full_brace_for = add
-mod_full_brace_function = add
-mod_full_brace_if = add
-mod_pawn_semicolon = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cpp.test b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cpp.test
deleted file mode 100644
index cdd407d7..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cpp.test
+++ /dev/null
@@ -1,1134 +0,0 @@
-#
-# Test cases specifically for the C++ language.
-#
-# Range: 30000 - 39999
-# test.name config.file input.file
-
-# there are additional tests inside imported.test.
-
-02102 common/clark.cfg cpp/indent-c.cpp
-02103 common/clark.cfg cpp/output.cpp
-
-30000 cpp/ben_001.cfg cpp/cout.cpp
-30001 cpp/sp_angle_colon.cfg cpp/alt_tokens.cpp
-30002 cpp/ben_003.cfg cpp/constructor.cpp
-30003 cpp/ben_004.cfg cpp/strings.cpp
-
-30010 cpp/ben_005.cfg cpp/class.h
-30011 cpp/ben_006.cfg cpp/misc.cpp
-30012 cpp/avalon2.cfg cpp/misc2.cpp
-30013 cpp/sim.cfg cpp/sim.h
-30014 common/indent_columns-3.cfg cpp/ctor-var.cpp
-30015 cpp/ben_008.cfg cpp/exception.cpp
-30016 cpp/custom-open.cfg cpp/custom-open.cpp
-30017 cpp/custom-open2.cfg cpp/custom-open.cpp
-30018 cpp/ben_009.cfg cpp/class-addr.h
-30019 cpp/ben_010.cfg cpp/wacky-template.cpp
-
-30020 common/ben_011.cfg cpp/bool.cpp
-30021 cpp/ben_012.cfg cpp/byref.cpp
-30022 cpp/ben_013.cfg cpp/extern_c.h
-30023 cpp/ben_014.cfg cpp/templates.cpp
-30024 cpp/class-nl_func-add.cfg cpp/class-init.cpp
-30025 cpp/class-nl_func-del.cfg cpp/class-init.cpp
-30026 cpp/byref-left.cfg cpp/byref.cpp
-30027 cpp/byref-right.cfg cpp/byref.cpp
-30028 cpp/byref-center.cfg cpp/byref.cpp
-30029 cpp/ben_015.cfg cpp/init_align.h
-
-30030 cpp/avalon.cfg cpp/Timestamp.h
-30031 cpp/avalon.cfg cpp/operator.cpp
-30032 cpp/op-space-force.cfg cpp/operator.cpp
-30033 cpp/op-space-remove.cfg cpp/operator.cpp
-30034 cpp/op-space-force.cfg cpp/operator_proto.cpp
-30035 cpp/op-space-remove.cfg cpp/operator_proto.cpp
-30036 cpp/op-space-remove-align-1.cfg cpp/operator.cpp
-30037 cpp/op-space-remove-align-1.cfg cpp/operator_proto.cpp
-30038 cpp/op-space-remove-align-2.cfg cpp/operator.cpp
-30039 cpp/op-space-remove-align-2.cfg cpp/operator_proto.cpp
-
-30040 cpp/nl_class-r.cfg cpp/nl-class.h
-30041 cpp/nl_class-a.cfg cpp/nl-class.h
-30042 cpp/Issue_2020.cfg cpp/Issue_2020.cpp
-30043 cpp/nl_func_call_empty-r.cfg cpp/nl_func_call_empty.cpp
-30044 cpp/nl_func_call_paren_empty-r.cfg cpp/nl_func_call_paren_empty.cpp
-30045 cpp/nl_func_decl_1.cfg cpp/nl_func_decl.cpp
-30046 cpp/nl_func_decl_2.cfg cpp/nl_func_decl.cpp
-30047 cpp/nl_func_paren_empty.cfg cpp/nl_func_paren_empty.cpp
-30048 cpp/nl_func_def_paren_empty-r.cfg cpp/nl_func_def_paren_empty.cpp
-30049 cpp/nl_func_call_paren-f.cfg cpp/nl_func_call_paren.cpp
-
-30050 cpp/nl_namespace-r.cfg cpp/nl-namespace.h
-30051 cpp/nl_namespace-a.cfg cpp/nl-namespace.h
-30052 cpp/nl_try-a.cfg cpp/try-catch-nl.cpp
-30053 cpp/sp_catch_brace.cfg cpp/exception.cpp
-30054 cpp/Issue_2091.cfg cpp/Issue_2091.cpp
-30055 cpp/nl_after_func_body.cfg cpp/nl_func.cpp
-30056 cpp/nl_after_func_body-2.cfg cpp/nl_func.cpp
-30057 cpp/nl_inside_namespace_1.cfg cpp/nl_inside_namespace.cpp
-30058 cpp/nl_inside_namespace_2.cfg cpp/nl_inside_namespace.cpp
-30059 cpp/Issue_2186.cfg cpp/Issue_2186.cpp
-
-30060 cpp/Issue_1734.cfg cpp/Issue_1734.cpp
-
-# Class colon positioning
-30061 cpp/class-colon-pos-eol.cfg cpp/class-init.cpp
-30062 cpp/class-colon-pos-sol.cfg cpp/class-init.cpp
-30063 cpp/class-colon-pos-eol-add.cfg cpp/class-init.cpp
-30064 cpp/class-colon-pos-sol-add.cfg cpp/class-init.cpp
-30065 cpp/class-colon-pos-sol.cfg cpp/Example.h
-30066 cpp/class-on-colon-indent.cfg cpp/class-init.cpp
-30067 cpp/nl_func_class_scope-a.cfg cpp/nl_func_type_name.cpp
-30068 cpp/nl_func_class_scope-a.cfg cpp/nl_func_scope_name.cpp
-30069 cpp/nl_func_class_scope-a.cfg cpp/class-implementation.cpp
-
-30070 cpp/nl_func_scope_name-a.cfg cpp/nl_func_scope_name.cpp
-30071 cpp/lineEndings-to-Win.cfg cpp/lineEndings-Mac.cpp
-30072 cpp/lineEndings-to-Unix.cfg cpp/lineEndings-Win.cpp
-30073 cpp/lineEndings-to-Mac.cfg cpp/lineEndings-Unix.cpp
-30074 common/empty.cfg cpp/bom.cpp
-30075 common/empty.cfg cpp/goto.cpp
-30076 cpp/Issue_2594.cfg cpp/Issue_2594.cpp
-30077 cpp/Issue_2596.cfg cpp/Issue_2596.cpp
-30078 common/empty.cfg cpp/Issue_2672-a.cpp
-30079 common/empty.cfg cpp/Issue_2672-b.cpp
-
-30080 cpp/nl_brace_brace-a.cfg cpp/nl_brace_brace.cpp
-30081 cpp/Issue_2383.cfg cpp/Issue_2383.cpp
-30082 cpp/Issue_931.cfg cpp/Issue_931.cpp
-30083 cpp/Issue_995-do.cfg cpp/Issue_995-do.cpp
-30084 cpp/Issue_1184.cfg cpp/Issue_1184.cpp
-30085 cpp/nSolve.cfg cpp/align_class.cpp
-30086 cpp/align_class-constr.cfg cpp/align_class-constr.cpp
-30087 cpp/Issue_1511.cfg cpp/Issue_1511.cpp
-30088 cpp/Issue_2561.cfg cpp/Issue_2561.cpp
-30089 cpp/Issue_2281.cfg cpp/Issue_2281.cpp
-
-30090 cpp/bug_488.cfg cpp/bug_488.cpp
-30091 cpp/bug_472.cfg cpp/bug_472.cpp
-30092 cpp/ben_016.cfg cpp/bug_481.cpp
-30093 common/sp_after_cast.cfg cpp/bug_484.cpp
-30094 common/align-1.cfg cpp/bug_495.cpp
-30095 cpp/ben_017.cfg cpp/bug_485.cpp
-30096 cpp/bug_1854.cfg cpp/bug_1854.cpp
-30097 common/align-1.cfg cpp/issue_1946.cpp
-30098 cpp/Issue_2692.cfg cpp/Issue_2692.cpp
-30099 common/sp_arith-f.cfg cpp/bug_1127.cpp
-
-30100 cpp/nl_template-f.cfg cpp/templates.cpp
-30101 cpp/nl_template-r.cfg cpp/templates.cpp
-30102 cpp/template_sp-force.cfg cpp/templates.cpp
-30103 cpp/template_sp-remove.cfg cpp/templates.cpp
-30104 cpp/avalon3.cfg cpp/templ_class.h
-30105 cpp/avalon4.cfg cpp/av.h
-30106 cpp/nl_template-f.cfg cpp/templates2.cpp
-30107 cpp/nl_template-r.cfg cpp/templates2.cpp
-30108 cpp/nl_template-r.cfg cpp/templates3.cpp
-30109 common/empty.cfg cpp/templates4.cpp
-
-30110 cpp/class-nl_func-add2.cfg cpp/class-init.cpp
-30111 cpp/indent_columns-4.cfg cpp/bug_1346.h
-30112 cpp/bug_1432.cfg cpp/bug_1432.cpp
-30113 cpp/bug_1452.cfg cpp/bug_1452.cpp
-30114 cpp/template_sp-remove.cfg cpp/bug_1462.cpp
-30115 common/empty.cfg cpp/Issue_1704.cpp
-30116 cpp/Issue_1052.cfg cpp/Issue_1052.cpp
-30117 cpp/Issue_2343.cfg cpp/Issue_2343.cpp
-30118 cpp/Issue_2758.cfg cpp/Issue_2758.cpp
-30119 cpp/Issue_2879.cfg cpp/Issue_2879.cpp
-
-30120 cpp/template_sp-force.cfg cpp/sp_after_angle.cpp
-30121 cpp/template_sp-remove.cfg cpp/sp_after_angle.cpp
-30122 common/sp_inside_fparen-f.cfg cpp/sp_after_angle.cpp
-30123 cpp/sp_inside_fparen-r.cfg cpp/sp_after_angle.cpp
-30124 cpp/sp_after_angle-1.cfg cpp/sp_after_angle.cpp
-30125 cpp/sp_after_angle-2.cfg cpp/sp_after_angle.cpp
-30126 cpp/sp_after_angle-3.cfg cpp/sp_after_angle.cpp
-30127 common/empty.cfg cpp/Issue_2565.cpp
-30128 cpp/Issue_2873.cfg cpp/Issue_2873.cpp
-30129 cpp/Issue_2890.cfg cpp/Issue_2890.cpp
-
-30130 common/brace-allman.cfg cpp/if-constexpr.cpp
-30131 cpp/Issue_3010.cfg cpp/Issue_3010.cpp
-30132 cpp/sp_brace_catch.cfg cpp/sp_brace_catch.cpp
-30133 cpp/Issue_3252.cfg cpp/Issue_3252.cpp
-30134 cpp/Issue_3357.cfg cpp/Issue_3357.cpp
-30135 cpp/Issue_3448.cfg cpp/Issue_3448.cpp
-30136 cpp/Issue_3413.cfg cpp/Issue_3413.cpp
-30137 cpp/Issue_3513.cfg cpp/Issue_3513-0.cpp
-30138 cpp/Issue_3513.cfg cpp/Issue_3513-1.cpp
-30139 cpp/Issue_3604.cfg cpp/Issue_3604.cpp
-
-30140 cpp/Issue_3785.cfg cpp/Issue_3785.cpp
-
-30200 cpp/bug_1862.cfg cpp/bug_1862.cpp
-30201 cpp/cmt_indent-1.cfg cpp/cmt_indent.cpp
-30202 cpp/cmt_indent-2.cfg cpp/cmt_indent.cpp
-30203 cpp/cmt_indent-3.cfg cpp/cmt_indent.cpp
-30204 cpp/indent_columns-4.cfg cpp/comment-align.cpp
-30205 cpp/indent_columns-4.cfg cpp/cmt_right.cpp
-30206 common/empty.cfg cpp/cmt_backslash_eol.cpp
-30207 cpp/indent_class-t_columns-4.cfg cpp/cmt_indent_pp.h
-30208 cpp/bug_1108.cfg cpp/bug_1108.cpp
-30209 common/empty.cfg cpp/bug_1134.cpp
-
-30210 common/empty.cfg cpp/bug_1338.cpp
-30211 cpp/space_indent_class-t_columns-4.cfg cpp/indent_comment_align_thresh.cpp
-30212 cpp/indent_comment_align_thresh_2.cfg cpp/indent_comment_align_thresh.cpp
-30213 cpp/align_right_comment.cfg cpp/align_right_comment.cpp
-30214 cpp/issue_1887.cfg cpp/align_across_braces.cpp
-30215 common/empty.cfg cpp/Issue_2099.cpp
-30216 cpp/Issue_2302.cfg cpp/Issue_2302.cpp
-30217 common/empty.cfg cpp/2138.cpp
-30218 cpp/Issue_3710.cfg cpp/Issue_3710.cpp
-
-30220 cpp/bug_1340.cfg cpp/bug_1340.cpp
-30221 cpp/Issue_2914.cfg cpp/Issue_2914.cpp
-30223 cpp/sp_enum_colon.cfg cpp/sp_enum_colon.cpp
-30224 cpp/sp_enum_colon-r.cfg cpp/sp_enum_colon.cpp
-30225 common/empty.cfg cpp/Issue_3176.cpp
-30226 cpp/sp_enum_colon-i.cfg cpp/sp_enum_colon.cpp
-30227 cpp/sp_inside_braces_enum-i.cfg cpp/sp_inside_braces_enum.cpp
-30228 cpp/sp_inside_braces_enum-f.cfg cpp/sp_inside_braces_enum.cpp
-30229 cpp/sp_inside_braces_enum-r.cfg cpp/sp_inside_braces_enum.cpp
-
-30230 cpp/sp_type_func-r.cfg cpp/sp_type_func.cpp
-30231 cpp/sp_type_func-f.cfg cpp/sp_type_func.cpp
-30232 cpp/sp_type_func-1.cfg cpp/sp_type_func.cpp
-30233 cpp/sp_type_func-2.cfg cpp/sp_type_func.cpp
-30234 cpp/functype_param-r.cfg cpp/functype_param.cpp
-30235 cpp/functype_param-f.cfg cpp/functype_param.cpp
-30236 cpp/Issue_750.cfg cpp/Issue_750.cpp
-
-30240 cpp/align_func_params-t.cfg cpp/align_func_params.cpp
-30241 cpp/align_func_params_span-1.cfg cpp/align_func_params.cpp
-30242 cpp/align_func_params_gap.cfg cpp/align_func_params.cpp
-30243 cpp/align_func_params_thresh_1.cfg cpp/align_func_params.cpp
-30244 cpp/align_func_params_thresh_2.cfg cpp/align_func_params.cpp
-30245 cpp/align_func_params_thresh_3.cfg cpp/align_func_params.cpp
-30246 cpp/align_func_params_thresh_4.cfg cpp/align_func_params.cpp
-30247 common/empty.cfg cpp/Issue_2332.cpp
-30248 cpp/Issue_2831.cfg cpp/Issue_2831.cpp
-30249 cpp/align-330.cfg cpp/align-330.cpp
-
-30250 cpp/align_fcall.cfg cpp/align_fcall.cpp
-30251 cpp/align_fcall-2.cfg cpp/align_fcall.cpp
-30252 common/empty.cfg cpp/Issue_3691.h
-30253 common/empty.cfg cpp/align_left_shift.cpp
-30254 common/empty.cfg cpp/align_left_shift2.cpp
-30255 cpp/ben_018.cfg cpp/align_constr.cpp
-30256 common/empty.cfg cpp/func_call.cpp
-30257 cpp/indent_columns-4.cfg cpp/func_call_chain.cpp
-30258 common/indent_columns-3.cfg cpp/casts.cpp
-30259 cpp/sp_after_constr_colon.cfg cpp/sp_after_constr_colon.cpp
-
-30260 cpp/var_def_gap.cfg cpp/var_def_gap.cpp
-30261 cpp/align_var_def_thresh_1.cfg cpp/align_var_def_thresh.cpp
-30262 cpp/align_var_def_thresh_2.cfg cpp/align_var_def_thresh.cpp
-30263 cpp/align_var_def_thresh_3.cfg cpp/align_var_def_thresh.cpp
-30264 cpp/Issue_2668.cfg cpp/Issue_2668.cpp
-30265 cpp/long_br_cmt.cfg cpp/long_br_cmt.cpp
-30266 cpp/Issue_2921.cfg cpp/Issue_2921.cpp
-30267 cpp/Issue_2930.cfg cpp/Issue_2930.cpp
-30268 cpp/Issue_2692.cfg cpp/Issue_3018.cpp
-
-30270 cpp/const_throw.cfg cpp/const_throw.cpp
-30271 cpp/sp_throw_paren-r.cfg cpp/sp_throw_paren.cpp
-30272 cpp/sp_throw_paren-f.cfg cpp/sp_throw_paren.cpp
-30273 common/sp_cparen_oparen-f.cfg cpp/sp_cparen_oparen.cpp
-30274 cpp/sp_cparen_oparen-r.cfg cpp/sp_cparen_oparen.cpp
-30275 common/empty.cfg cpp/bug_1321.cpp
-30278 cpp/bug_1439.cfg cpp/bug_1439.cpp
-30279 common/indent_inside_ternary_operator.cfg cpp/indent-inside-ternary-operator.cpp
-
-30280 cpp/sp_dc.cfg cpp/sf557.cpp
-30281 cpp/Issue_2478.cfg cpp/Issue_2478.cpp
-30282 cpp/Issue_2703.cfg cpp/Issue_2703.cpp
-30283 common/empty.cfg cpp/Issue_3321.h
-30284 cpp/Issue_2957.cfg cpp/Issue_2957.cpp
-30285 cpp/Issue_2971.cfg cpp/Issue_2971.cpp
-30286 cpp/Issue_3558.cfg cpp/Issue_3558.cpp
-30287! cpp/Issue_3786.cfg cpp/Issue_3786.cpp
-
-30290 cpp/indent_shift.cfg cpp/align_left_shift.cpp
-30291 cpp/indent_shift.cfg cpp/indent_shift.cpp
-30292 cpp/align_eigen_comma_init.cfg cpp/eigen.cpp
-30293 cpp/pos_shift-lead.cfg cpp/pos_shift.cpp
-30294 cpp/pos_shift-trail.cfg cpp/pos_shift.cpp
-30295 cpp/pos_shift-join.cfg cpp/pos_shift.cpp
-
-30300 cpp/ben_020.cfg cpp/enum_shr.cpp
-30301 cpp/al.cfg cpp/enum_class.h
-30302 cpp/bug_1315.cfg cpp/bug_1315.cpp
-30303 cpp/Issue_2902.cfg cpp/Issue_2902.cpp
-
-# TODO: Make a tests for a braced_init_list. See also 34153-34166.
-30310 cpp/sp_word_brace_force.cfg cpp/braced_init_list.cpp
-30311 cpp/sp_word_brace_remove.cfg cpp/uniform_initialization.cpp
-30312 cpp/sp_inside_type_brace_init_lst-f.cfg cpp/return_init_list.cpp
-30313 cpp/sp_brace_brace-r.cfg cpp/sp_brace_brace.cpp
-30314 cpp/sp_brace_brace-f.cfg cpp/sp_brace_brace.cpp
-30315 cpp/issue_1997.cfg cpp/return_braced_init.cpp
-30316 cpp/Issue_2428.cfg cpp/Issue_2428.cpp
-30317 cpp/pos_comma-tb.cfg cpp/braced_init_template_decltype.cpp
-30318 cpp/Issue_2949.cfg cpp/Issue_2949.cpp
-30319 cpp/Issue_2886.cfg cpp/Issue_2886.cpp
-
-30320 cpp/sp_return_paren-r.cfg cpp/returns.cpp
-30321 cpp/sp_return_paren-f.cfg cpp/returns.cpp
-30322 cpp/sp_return_brace-r.cfg cpp/returns.cpp
-30323 cpp/sp_return_brace-f.cfg cpp/returns.cpp
-30324 common/mod_paren_on_return-a.cfg cpp/returns.cpp
-30325 common/mod_paren_on_return-r.cfg cpp/returns.cpp
-30326 cpp/indent_off_after_return.cfg cpp/indent_off_after_return.cpp
-30327 cpp/indent_off_after_return.cfg cpp/indent_off_after_return.cpp
-30328 cpp/nl_type_brace_init_lst-f.cfg cpp/call_brace_init_lst.cpp
-30329 cpp/nl_type_brace_init_lst-r.cfg cpp/call_brace_init_lst.cpp
-
-30330 cpp/Issue_3080.cfg cpp/Issue_3080.cpp
-
-30400 common/attribute_specifier_seqs.cfg cpp/attribute_specifier_seqs.cpp
-30401 cpp/Issue_2570.cfg cpp/Issue_2570.cpp
-
-# function def newlines
-30701 common/func-def-1.cfg cpp/function-def.cpp
-30702 common/func-def-2.cfg cpp/function-def.cpp
-30703 common/func-def-3.cfg cpp/function-def.cpp
-
-30705 cpp/func_param.cfg cpp/func_param.cpp
-30706 cpp/bug_1020.cfg cpp/bug_1020.cpp
-
-30711 common/del_semicolon.cfg cpp/semicolons.cpp
-30712 common/empty.cfg cpp/bug_1158.cpp
-30713 common/empty.cfg cpp/fix_for_relational_operators.cpp
-30714 common/empty.cfg cpp/Issue_1733.cpp
-30715 cpp/Issue_2942.cfg cpp/Issue_2942.cpp
-
-30720 cpp/wessex.cfg cpp/custom-open-2.cpp
-30721 cpp/Issue_2386.cfg cpp/Issue_2386.cpp
-
-30730 cpp/qt-1.cfg cpp/qt-1.cpp
-30731 cpp/nl_access_spec.cfg cpp/qt-1.cpp
-30732 cpp/Issue_2734.cfg cpp/Issue_2734.cpp
-
-30740 cpp/sef.cfg cpp/sef.cpp
-30741 cpp/al.cfg cpp/al.cpp
-30742 cpp/indent_columns-2.cfg cpp/delete.cpp
-
-30745 cpp/Issue_2170.cfg cpp/Issue_2170.cpp
-30746 cpp/DefaultAndDelete-0.cfg cpp/DefaultAndDelete.cpp
-30747 cpp/DefaultAndDelete-1.cfg cpp/DefaultAndDelete.cpp
-30748 cpp/DefaultAndDelete-2.cfg cpp/DefaultAndDelete.cpp
-
-# TODO: Reduce the number of options, leave only those that affect lambda.
-# TODO: Add tests for nested lambdas.
-
-30750 cpp/ben_021.cfg cpp/lambda.cpp
-30751 cpp/lambda1.cfg cpp/lambda.cpp
-30752 cpp/lambda2.cfg cpp/lambda.cpp
-30753 cpp/lambda3.cfg cpp/lambda2.cpp
-30754 cpp/indent_with_tabs-0.cfg cpp/bug_i_682.h
-30755 common/empty.cfg cpp/bug_i_938.h
-30756 cpp/bug_1296-T.cfg cpp/bug_1296.cpp
-30757 cpp/Issue_3054.cfg cpp/Issue_3054.cpp
-30758 cpp/Issue_3054-2.cfg cpp/Issue_3054-2.cpp
-30759 cpp/lambda4.cfg cpp/lambda2.cpp
-
-30760 cpp/bug_1296-F.cfg cpp/bug_1296.cpp
-30761 cpp/out-668-F.cfg cpp/out-668.cpp
-30762 cpp/out-668-T.cfg cpp/out-668.cpp
-30763 cpp/Issue_2166.cfg cpp/Issue_2166.cpp
-30764 cpp/Issue_2591.cfg cpp/Issue_2591.cpp
-30765 cpp/sp_cpp_lambda_square_paren-i.cfg cpp/lambda.cpp
-30766 cpp/sp_cpp_lambda_square_brace-i.cfg cpp/lambda.cpp
-30767 cpp/sp_cpp_lambda_paren_brace-i.cfg cpp/lambda.cpp
-30768 cpp/sp_cpp_lambda_fparen-i.cfg cpp/sp_cpp_lambda_fparen.cpp
-
-30770 cpp/sp_cpp_lambda_square_paren-r.cfg cpp/lambda.cpp
-30771 cpp/sp_cpp_lambda_square_paren-f.cfg cpp/lambda.cpp
-30772 cpp/sp_cpp_lambda_square_brace-r.cfg cpp/lambda.cpp
-30773 cpp/sp_cpp_lambda_square_brace-f.cfg cpp/lambda.cpp
-30774 cpp/sp_cpp_lambda_paren_brace-r.cfg cpp/lambda.cpp
-30775 cpp/sp_cpp_lambda_paren_brace-f.cfg cpp/lambda.cpp
-30776 cpp/sp_cpp_lambda_fparen-r.cfg cpp/sp_cpp_lambda_fparen.cpp
-30777 cpp/sp_cpp_lambda_fparen-f.cfg cpp/sp_cpp_lambda_fparen.cpp
-
-30780 cpp/lambda_in_one_liner.cfg cpp/lambda_in_one_liner.cpp
-30781 cpp/lambda_in_one_liner.cfg cpp/lambda_brace_list.cpp
-
-30790 cpp/Issue_2795.cfg cpp/Issue_2795.cpp
-30791 cpp/Issue_3203.cfg cpp/Issue_3203.cpp
-
-30800 common/star_pos-0.cfg cpp/align-star-amp-pos.cpp
-30801 cpp/star_pos-1.cfg cpp/align-star-amp-pos.cpp
-30802 cpp/star_pos-2.cfg cpp/align-star-amp-pos.cpp
-30803 cpp/bug_1403.cfg cpp/bug_1403.cpp
-30805 cpp/ptr_star-1.cfg cpp/ptr-star.cpp
-30806 cpp/ptr_star-2.cfg cpp/ptr-star.cpp
-30807 cpp/ptr_star-3.cfg cpp/ptr-star.cpp
-30808 cpp/sp_after_ptr_star_qualifier-f.cfg cpp/ptr-star.cpp
-30809 common/empty.cfg cpp/bug_1289.cpp
-
-30810 cpp/ben_022.cfg cpp/ptr-star.cpp
-30811 cpp/avalon4.cfg cpp/misc3.cpp
-30812 cpp/ben_023.cfg cpp/misc4.cpp
-30813 cpp/ben_024.cfg cpp/misc5.cpp
-30814 common/empty.cfg cpp/misc6.cpp
-30815 common/width-2.cfg cpp/cmt-reflow.cpp
-30816 cpp/cu.cfg cpp/for_long.cpp
-30817 common/indent_columns-3.cfg cpp/cmt-cpp-cont.cpp
-30818 cpp/bug_1169.cfg cpp/bug_1169.cpp
-30819 cpp/bug_1170.cfg cpp/bug_1170.cpp
-
-30820 cpp/pp_define_at_level-1.cfg cpp/pp-define-indent.cpp
-30821 common/empty.cfg cpp/pp_indent_case.cpp
-30822 common/empty.cfg cpp/pp_indent_brace.cpp
-30823 common/empty.cfg cpp/pp_indent_func_def.cpp
-30824 common/empty.cfg cpp/pp_indent_extern.cpp
-30825 cpp/Issue_1966.cfg cpp/Issue_1966.cpp
-30826 cpp/Issue_2319.cfg cpp/Issue_2319.cpp
-30827 cpp/Issue_1167.cfg cpp/Issue_1167.cpp
-30828 cpp/bug_1691.cfg cpp/bug_1691.cpp
-30829 cpp/ptr_star-2.cfg cpp/Issue_2726.cpp
-
-30830 common/kw_subst2.cfg cpp/kw_subst.cpp
-30831 common/kw_subst.cfg cpp/kw_subst2.cpp
-30832 common/kw_subst4.cfg cpp/kw_subst.cpp
-
-30840 cpp/nl_func_type_name_remove.cfg cpp/nl_func_type_name.cpp
-30841 cpp/nl_func_type_name_force.cfg cpp/nl_func_type_name.cpp
-30842 cpp/nl_func_type_name_class.cfg cpp/nl_func_type_name.cpp
-30843 cpp/nl_func_type_name_mixed.cfg cpp/nl_func_type_name.cpp
-30844 cpp/Issue_2771.cfg cpp/Issue_2771.cpp
-30845 cpp/ben_026.cfg cpp/deref.cpp
-30846 cpp/Issue_3197.cfg cpp/Issue_3197.h
-
-30850 common/sp_cmt_cpp_start_force.cfg cpp/sp_cmt_cpp_start.cc
-30852 cpp/sp_paren_qualifier-f.cfg cpp/Issue_2138.cpp
-30853 cpp/sp_paren_noexcept-f.cfg cpp/noexcept.cpp
-30854 cpp/Issue_1703.cfg cpp/Issue_1703.cpp
-30855 common/empty.cfg cpp/cpp_move.cpp
-30856 cpp/sp_cmt_cpp_region-f.cfg cpp/sp_cmt_cpp_region.cpp
-30857 cpp/sp_cmt_cpp_region-r.cfg cpp/sp_cmt_cpp_region.cpp
-
-30860 cpp/sf574.cfg cpp/sf574.cpp
-
-30870 common/cmt_insert-0.cfg cpp/cmt_insert.cpp
-30871 common/cmt_insert-1.cfg cpp/cmt_insert.cpp
-30872 cpp/Issue_2752.cfg cpp/Issue_2752.cpp
-# will also use the file footer.txt
-
-30880 common/empty.cfg cpp/bug_1758.cpp
-30881 cpp/bug_1758-f.cfg cpp/bug_1758-f.cpp
-
-30900 common/region-0.cfg cpp/region.cpp
-30901 common/region-1.cfg cpp/region.cpp
-30902 common/region-2.cfg cpp/region.cpp
-30903 common/region-3.cfg cpp/region.cpp
-30907 cpp/Issue_1813.cfg cpp/Issue_1813.cpp
-30908 cpp/Issue_1813.cfg cpp/Issue_1813-2.cpp
-30909 cpp/Issue_1813.cfg cpp/Issue_1813-3.cpp
-
-30910 cpp/indent_namespace-t.cfg cpp/indent_namespace.h
-30911 cpp/indent_class-t.cfg cpp/indent_namespace.h
-30912 cpp/long_namespace.cfg cpp/long_namespace.cpp
-30913 cpp/indent_namespace-t.cfg cpp/indent_namespace2.h
-30914 cpp/indent_namespace_single_indent.cfg cpp/indent_namespace_single_indent.h
-30915 common/empty.cfg cpp/bug_1235.cpp
-30916 common/empty.cfg cpp/Issue_1737.cpp
-30917 cpp/Issue_2345.cfg cpp/Issue_2345-3.cpp
-30918 cpp/Issue_2345.cfg cpp/Issue_2345-4.cpp
-30919 common/empty.cfg cpp/Issue_2387.cpp
-
-30920 cpp/ben_027.cfg cpp/indent-off.cpp
-30921 cpp/ben_028.cfg cpp/variadic-template.h
-30922 cpp/sp_before_ellipsis-f.cfg cpp/variadic-template.h
-30923 cpp/sf.2886991-f.cfg cpp/sf.2886991.cpp
-30924 cpp/sf.2886991-r.cfg cpp/sf.2886991.cpp
-30925 cpp/sp_func_call_empty.cfg cpp/function-def.cpp
-30926 cpp/sp_func_class_empty.cfg cpp/function-def.cpp
-30927 cpp/sp_func_def_empty.cfg cpp/function-def.cpp
-30928 cpp/sp_func_proto_empty.cfg cpp/function-def.cpp
-30929 cpp/bug_1324.cfg cpp/bug_1324.cpp
-
-30930 common/indent_var_def.cfg cpp/indent_var_def.cpp
-30931 cpp/indent_var_def_cont-t.cfg cpp/indent_var_def_cont.cpp
-30932 common/empty.cfg cpp/indent_var_def_cont.cpp
-30933 cpp/indent_paren_after_func_def-t.cfg cpp/indent_paren_after_func_def.cpp
-30934 cpp/indent_paren_after_func_decl-t.cfg cpp/indent_paren_after_func_decl.cpp
-30935 cpp/ben_029.cfg cpp/indent-misc.cpp
-30936 cpp/indent_braces_no.cfg cpp/indent_braces_no.h
-30937 cpp/indent_param.cfg cpp/indent_param.cpp
-30938 common/empty.cfg cpp/indent_switch_pp.cpp
-30939 cpp/indent_paren_after_func_call-t.cfg cpp/indent_paren_after_func_call.cpp
-
-30940 common/mod_case_brace_rm.cfg cpp/case-brace-remove.cpp
-30941 cpp/Issue_2150.cfg cpp/Issue_2150.cpp
-30942 cpp/Issue_1692.cfg cpp/Issue_1692.cpp
-30943 cpp/Issue_2735.cfg cpp/Issue_2735.cpp
-#30944
-30945 common/sp_before_byref-r.cfg cpp/sf.3266678.cpp
-30946 cpp/sf.3315874.cfg cpp/sf.3315874.h
-30947 cpp/bug_1689.cfg cpp/bug_1689.cpp
-30948 cpp/sp_before_byref_func.cfg cpp/sp_before_byref_func.cpp
-30949 cpp/Issue_2757.cfg cpp/Issue_2757.cpp
-
-30950 cpp/sp_before_tr_emb_cmt-f.cfg cpp/sp_before_tr_emb_cmt_input.cpp
-30951 cpp/sp_before_tr_emb_cmt-a.cfg cpp/sp_before_tr_emb_cmt_input.cpp
-30952 cpp/sp_before_constr_colon.cfg cpp/sp_before_constr_colon.cpp
-30953 cpp/constr_colon.cfg cpp/constr_colon.cpp
-30954 cpp/Issue_2305.cfg cpp/Issue_2305.cpp
-30955 cpp/indent_ctor_init.cfg cpp/indent_ctor_init.cpp
-30956 cpp/indent_ctor_init_following.cfg cpp/indent_ctor_init.cpp
-30957 cpp/negative_indent.cfg cpp/class-init.cpp
-30958 cpp/nl_for_leave_one_liners-f.cfg cpp/nl_for_leave_one_liners.cpp
-30959 cpp/nl_for_leave_one_liners-t.cfg cpp/nl_for_leave_one_liners.cpp
-
-30960 cpp/Issue_2151.cfg cpp/Issue_2151.cpp
-30961 cpp/Issue_2232.cfg cpp/Issue_2232.cpp
-30962 cpp/nl_assign_leave_one_liners.cfg cpp/nl_assign_leave_one_liners.cpp
-30963 cpp/Issue_2907.cfg cpp/Issue_2907.cpp
-30964 cpp/Issue_2823.cfg cpp/Issue_2823.cpp
-
-30970 cpp/Issue_2219.cfg cpp/Issue_2219.cpp
-30971 cpp/Issue_2224.cfg cpp/Issue_2224.cpp
-30972 cpp/Issue_2229.cfg cpp/Issue_2229.cpp
-30973 cpp/Issue_2236.cfg cpp/Issue_2236.cpp
-30974 cpp/using-alias-in-define.cfg cpp/using-alias-in-define.cpp
-
-31000 common/empty.cfg cpp/digraph.cpp
-31001 cpp/ben_030.cfg cpp/digraph.cpp
-
-31050 common/empty.cfg cpp/pos_assign.cpp
-31051 cpp/pos_assign.cfg cpp/pos_assign.cpp
-
-31101 common/empty.cfg cpp/nl_before_brace_open_test.cpp
-31102 cpp/nl_before_brace_open_1.cfg cpp/nl_before_brace_open_test.cpp
-31103 cpp/nl_before_brace_open_2.cfg cpp/nl_before_brace_open_test.cpp
-31104 cpp/nl_before_brace_open_3.cfg cpp/nl_before_brace_open_test.cpp
-
-31400 cpp/sp_trailing_return-f.cfg cpp/trailing_return.cpp
-31401 cpp/sp_trailing_return-r.cfg cpp/trailing_return.cpp
-31402 cpp/sp_assign_default.cfg cpp/trailing_return.cpp
-31403 cpp/sp_trailing_return_byref_ptr-left.cfg cpp/trailing_return_byref_ptr.cpp
-31404 cpp/sp_trailing_return_byref_ptr-right.cfg cpp/trailing_return_byref_ptr.cpp
-
-31450 cpp/indent_paren_close_0.cfg cpp/indent_func_alias_prototype.cpp
-31451 cpp/indent_paren_close_1.cfg cpp/indent_func_alias_prototype.cpp
-31452 cpp/indent_paren_close_2.cfg cpp/indent_func_alias_prototype.cpp
-
-31562 cpp/space_indent_class-t_columns-4.cfg cpp/sf562.cpp
-31567 common/align_same_func_call_params-t.cfg cpp/sf567.cpp
-31568 cpp/Issue_2368.cfg cpp/Issue_2368.cpp
-
-31583 common/empty.cfg cpp/sf583.cpp
-31593 common/indent_continue-8.cfg cpp/sf593.cpp
-31594 common/issue_672.cfg cpp/issue_672.cpp
-31595 cpp/issue_1778.cfg cpp/issue_1778.cpp
-31596 cpp/issue_1782.cfg cpp/issue_1782.cpp
-31597 cpp/issue_1804.cfg cpp/issue_1804.cpp
-31598 cpp/Issue_1753.cfg cpp/Issue_1753.cpp
-31599 cpp/sp_paren_ellipsis-i.cfg cpp/parameter-packs.cpp
-
-31600 cpp/sp_paren_ellipsis-f.cfg cpp/parameter-packs.cpp
-31601 cpp/sp_paren_ellipsis-r.cfg cpp/parameter-packs.cpp
-31602 cpp/sp_sizeof_ellipsis-f.cfg cpp/parameter-packs.cpp
-31603 cpp/sp_sizeof_ellipsis-r.cfg cpp/parameter-packs.cpp
-31604 cpp/sp_before_ellipsis-f.cfg cpp/parameter-packs.cpp
-31605 cpp/sp_before_ellipsis-r.cfg cpp/parameter-packs.cpp
-31606 cpp/sp_type_ellipsis-f.cfg cpp/parameter-packs.cpp
-31607 cpp/sp_type_ellipsis-r.cfg cpp/parameter-packs.cpp
-31608 cpp/sp_sizeof_ellipsis_paren-f.cfg cpp/parameter-packs.cpp
-31609 cpp/sp_sizeof_ellipsis_paren-r.cfg cpp/parameter-packs.cpp
-
-31610 cpp/Issue_2085.cfg cpp/Issue_2085.cpp
-31611 cpp/sp_sizeof_ellipsis-i.cfg cpp/parameter-packs.cpp
-31612 cpp/sp_sizeof_ellipsis_paren-i.cfg cpp/parameter-packs.cpp
-31613 cpp/sp_type_ellipsis-i.cfg cpp/parameter-packs.cpp
-31614 cpp/Issue_3309-i.cfg cpp/Issue_3309.cpp
-31615 cpp/Issue_3309-f.cfg cpp/Issue_3309.cpp
-31616 cpp/Issue_3309-r.cfg cpp/Issue_3309.cpp
-
-31620 common/sp_after_type-f.cfg cpp/sp_after_type.cpp
-31621 cpp/sp_after_type-i.cfg cpp/sp_after_type.cpp
-31622 cpp/sp_after_cast-f.cfg cpp/sp_after_type.cpp
-31623 cpp/sp_after_cast-r.cfg cpp/sp_after_type.cpp
-31624 cpp/sp_before_ptr_star-f.cfg cpp/sp_after_type.cpp
-31625 cpp/sp_before_ptr_star-r.cfg cpp/sp_after_type.cpp
-31626 cpp/sp_decltype_paren-f.cfg cpp/issue_1916.cpp
-31627 cpp/sp_decltype_paren-r.cfg cpp/issue_1916.cpp
-31628 cpp/sp_after_decltype-f.cfg cpp/issue_1916.cpp
-31629 cpp/sp_after_decltype-r.cfg cpp/issue_1916.cpp
-
-31630 common/sp_after_type-f.cfg cpp/issue_1916.cpp
-31631 common/sp_after_type-r.cfg cpp/issue_1916.cpp
-31632 cpp/issue_1916.cfg cpp/issue_1916.cpp
-31633 cpp/sp_after_decltype-f.cfg cpp/sp_after_decltype.cpp
-31634 cpp/sp_after_decltype-r.cfg cpp/sp_after_decltype.cpp
-31635 common/empty.cfg cpp/sp_decltype.cpp
-31636 cpp/Issue_1923.cfg cpp/Issue_1923.cpp
-31637 cpp/Issue_3446.cfg cpp/Issue_3446.cpp
-
-31660 cpp/var_def_blks-1.cfg cpp/issue_1919.cpp
-31661 cpp/Issue_3097.cfg cpp/Issue_3097.cpp
-31662 cpp/var_def_blks-1.cfg cpp/var_def_blks.cpp
-31663 cpp/var_def_blks-2.cfg cpp/var_def_blks.cpp
-31664 cpp/var_def_blks-3.cfg cpp/var_def_blks.cpp
-31665 cpp/var_def_blks-4.cfg cpp/var_def_blks.cpp
-31666 cpp/var_def_blks-5.cfg cpp/var_def_blks.cpp
-31667 cpp/var_def_blks-6.cfg cpp/var_def_blks.cpp
-31668 cpp/var_def_blks-7.cfg cpp/var_def_blks.cpp
-
-31700 cpp/toggle_processing_cmt.cfg cpp/toggle_processing_cmt.cpp
-31701 cpp/toggle_processing_cmt2.cfg cpp/toggle_processing_cmt2.cpp
-31702 cpp/toggle_processing_cmt3.cfg cpp/toggle_processing_cmt.cpp
-31703 cpp/toggle_processing_cmt4.cfg cpp/toggle_processing_cmt.cpp
-
-31710 common/empty.cfg cpp/string_replace_tab_chars.cpp
-31711 cpp/string_replace_tab_chars-t.cfg cpp/string_replace_tab_chars.cpp
-
-31720 cpp/ben_031.cfg cpp/bit-colon.cpp
-31721 cpp/Issue_2689.cfg cpp/Issue_2689.cpp
-
-31730 cpp/sp_arith-a.cfg cpp/ms-style-ref.cpp
-
-31740 common/empty.cfg cpp/I2102.cpp
-
-32000 cpp/sp_skip_vbrace_tokens.cfg cpp/sp_skip_vbrace_tokens.cpp
-32001 common/empty.cfg cpp/issue_547_for_each.cpp
-32002 common/empty.cfg cpp/proto-wrap.cpp
-32003 cpp/align_var_class_span-1.cfg cpp/issue_633_typename.cpp
-32004 common/empty.cfg cpp/issue_624_angle.cpp
-32005 cpp/align_var_class_span-1.cfg cpp/issue_633_typename.cpp
-32006 common/space_indent_columns-4.cfg cpp/bug_i_687.cpp
-32007 common/Issue_3052.cfg cpp/Issue_3052.cpp
-32008 cpp/Issue_3034.cfg cpp/Issue_3034.cpp
-32009 cpp/Issue_3422-1.cfg cpp/Issue_3422.cpp
-32010 cpp/Issue_3422-2.cfg cpp/Issue_3422.cpp
-
-32100 cpp/cpp17.cfg cpp/cpp17.cpp
-32105 cpp/I2103.cfg cpp/I2103.cpp
-
-32115 cpp/2185.cfg cpp/2185.cpp
-
-33000 cpp/tab-0-11.cfg cpp/tab-0.cpp
-33001 cpp/indent_columns-11.cfg cpp/tab-1.cpp
-33002 common/empty.cfg cpp/cmt_convert_tab_to_spaces.cpp
-33003 cpp/cmt_convert_tab_to_spaces-t.cfg cpp/cmt_convert_tab_to_spaces.cpp
-33004 common/sp_cmt_cpp_start-a.cfg cpp/DoxygenComments.cpp
-33005 cpp/sp_cmt.cfg cpp/DoxygenComments.cpp
-33006 common/empty.cfg cpp/string_replace_tab_chars.cpp
-33007 common/empty.cfg cpp/NewLine.cpp
-33008 cpp/NewLine-r.cfg cpp/NewLine.cpp
-33009 cpp/NewLine-f.cfg cpp/NewLine0.cpp
-
-33010 cpp/indent_columns-4.cfg cpp/Q_EMIT.cpp
-33011 cpp/indent_class-t_columns-4.cfg cpp/static.h
-33012 cpp/kdepim2.cfg cpp/Q_SIGNAL_SLOT.cpp
-33013 cpp/kdepim3.cfg cpp/Q_2.cpp
-33014 cpp/indent_columns-4.cfg cpp/DB.cpp
-33015 cpp/kdepim5.cfg cpp/Q_FOREACH.cpp
-33016 cpp/indent_once.cfg cpp/indent.cpp
-33017 cpp/bug_1160.cfg cpp/bug_1160.cpp
-#33018
-33019 cpp/bug_657.cfg cpp/bug_657.cpp
-
-33020 cpp/sp_cmt.cfg cpp/bug_662.cpp
-33021 cpp/bug_633.cfg cpp/bug_633.cpp
-33022 common/empty.cfg cpp/bug_634.cpp
-33023 cpp/indent_once.cfg cpp/bug_651.cpp
-33024 common/empty.cfg cpp/bug_653.cpp
-33025 common/empty.cfg cpp/bug_654.cpp
-33026 common/empty.cfg cpp/bug_631.cpp
-33027 cpp/bug_664.cfg cpp/bug_664.cpp
-33028 cpp/sp_inside_braces_empty-r.cfg cpp/braces_empty.cpp
-33029 cpp/cast.cfg cpp/cast.cpp
-
-33030 common/space_indent_columns-4.cfg cpp/Q_FOREVER.cpp
-33031 cpp/align_assign_span-1.cfg cpp/bug_612.cpp
-33032 cpp/bug_670.cfg cpp/bug_670.cpp
-33033 cpp/bug_670.cfg cpp/bug_670.h
-33034 common/bug_671.cfg cpp/bug_671.h
-33035 cpp/cmt_cpp_to_c-t.cfg cpp/patch_32.cpp
-33036 common/empty.cfg cpp/bug_663.cpp
-33037 cpp/func_class.cfg cpp/func_class.cpp
-33038 cpp/func_class.cfg cpp/func_class.h
-33039 cpp/mod_remove_empty_return-t.cfg cpp/mod_remove_empty_return.cpp
-
-33040 cpp/nl_after_func_proto_group-3.cfg cpp/bug_i_411.cpp
-33041 cpp/nl_after_func_proto-3.cfg cpp/bug_i_411.cpp
-33042 cpp/nl_after_func_class_proto-3.cfg cpp/bug_i_411.cpp
-33043 cpp/bug_i_478.cfg cpp/bug_i_478.cpp
-33044 cpp/sp_before_comma-f.cfg cpp/bug_i_481.cpp
-33045 cpp/indent_columns-4.cfg cpp/bug_i_width.cpp
-33046 cpp/bug_i_409-split.cfg cpp/bug_i_409.cpp
-33047 cpp/bug_i_409-create.cfg cpp/bug_i_409.cpp
-33048 cpp/bug_i_405.cfg cpp/bug_i_405.cpp
-33049 cpp/pp-pragma.cfg cpp/pp-pragma.cpp
-
-33050 common/empty.cfg cpp/issue_523.cpp
-33051 common/empty.cfg cpp/bug_i_503.cpp
-33052 common/empty.cfg cpp/bug_i_512.cpp
-33053 common/space_indent_columns-4.cfg cpp/for_auto.cpp
-33054 common/indent_columns-3.cfg cpp/bug_i_825.cpp
-33056 common/empty.cfg cpp/bug_33056.cpp
-33057 cpp/bug_1349.cfg cpp/bug_1349.cpp
-33058 cpp/Issue_3164.cfg cpp/Issue_3164.cpp
-33039 cpp/mod_remove_empty_return-t.cfg cpp/mod_remove_empty_return.cpp
-33059 cpp/mod_remove_empty_return-t.cfg cpp/mod_remove_empty_return-2.cpp
-
-33060 common/empty.cfg cpp/if_constexpr.cpp
-33061 common/empty.cfg cpp/if_chain_braces.cpp
-33062 cpp/mod_full_brace_if_chain-1.cfg cpp/if_chain_braces.cpp
-33063 common/mod_full_brace_if_chain_only-t.cfg cpp/if_chain_braces.cpp
-33064 cpp/if_chain_braces_2.cfg cpp/if_chain_braces.cpp
-33065 cpp/Issue_3316.cfg cpp/Issue_3316.cpp
-33066 cpp/mod_full_brace_if_chain-2.cfg cpp/if_chain_braces.cpp
-33067 cpp/mod_full_brace_if_chain-3.cfg cpp/if_chain_braces.cpp
-
-33069 cpp/Issue_2195.cfg cpp/Issue_2195.cpp
-
-33070 cpp/code_width-70.cfg cpp/multi_line.cpp
-33071 cpp/multi_line_1.cfg cpp/multi_line.cpp
-33072 cpp/multi_line_2.cfg cpp/multi_line.cpp
-33073 cpp/multi_line_3.cfg cpp/multi_line.cpp
-33074 cpp/multi_line_4.cfg cpp/multi_line.cpp
-33075 cpp/multi_line_5.cfg cpp/multi_line.cpp
-33076 cpp/multi_line_6.cfg cpp/multi_line.cpp
-33077 cpp/multi_line_7.cfg cpp/multi_line.cpp
-33078 cpp/multi_line_8.cfg cpp/multi_line.cpp
-33079 cpp/multi_line_9.cfg cpp/multi_line.cpp
-
-33080 cpp/multi_line_10.cfg cpp/multi_line.cpp
-33081 common/space_indent_columns-4.cfg cpp/bug_i_552.cpp
-33082 common/empty.cfg cpp/namespace_namespace.cpp
-33083 cpp/bug_i_359.cfg cpp/bug_i_359.cpp
-33084 cpp/op_sym_empty.cfg cpp/op_sym_empty.cpp
-33085 cpp/indent_with_tabs-0.cfg cpp/bug_i_323.cpp
-33086 cpp/indent_class-t.cfg cpp/bug_i_568.cpp
-33087 common/space_indent_columns-4.cfg cpp/bug_i_596.cpp
-33088 common/empty.cfg cpp/bug_i_197.cpp
-33089 cpp/indent_class-t_columns-4.cfg cpp/bug_643.cpp
-
-33090 common/empty.cfg cpp/gh555.cpp
-33091 cpp/no_squeeze_ifdef.cfg cpp/squeeze_ifdef.cpp
-33092 cpp/squeeze_ifdef.cfg cpp/squeeze_ifdef.cpp
-33093 cpp/sp_angle_paren-f.cfg cpp/sp_angle_paren.cpp
-33094 cpp/sp_angle_paren_empty.cfg cpp/sp_angle_paren.cpp
-33095 cpp/bug_i_322.cfg cpp/bug_i_322.cpp
-33096 cpp/squeeze_ifdef_top.cfg cpp/squeeze_ifdef.cpp
-33097 cpp/pos_enum_comma-tf.cfg cpp/enum_comma.h
-33098 cpp/pos_comma-lf.cfg cpp/enum_comma.h
-33099 cpp/enum_comma-3.cfg cpp/enum_comma.h
-
-33100 cpp/enum_comma-4.cfg cpp/enum_comma.h
-33101 cpp/pos_comma-tb.cfg cpp/enum_comma.h
-33102 cpp/enum_comma-6.cfg cpp/enum_comma.h
-33103 cpp/bug_858-f.cfg cpp/bug_858.cpp
-33104 cpp/bug_858-r.cfg cpp/bug_858.cpp
-33105 cpp/bug_1001.cfg cpp/bug_1001.cpp
-33106 common/bool-pos-eol-force.cfg cpp/pos_bool_in_template.h
-33107 cpp/Issue_2688.cfg cpp/Issue_2688.cpp
-33108 cpp/Issue_2045.cfg cpp/Issue_2045.cpp
-33109 common/empty.cfg cpp/Issue_3205.cpp
-
-33110 cpp/enum.cfg cpp/enum.cpp
-33120 cpp/Issue_2149.cfg cpp/Issue_2149.cpp
-
-33150 cpp/indent_columns-4.cfg cpp/bug_i_753.cpp
-33151 cpp/bug_i_752.cfg cpp/bug_i_752.cpp
-33152 cpp/bug_1004.cfg cpp/bug_1004.cpp
-
-33160 common/sp_before_byref-r.cfg cpp/bug_1112.cpp
-33161 common/sp_before_byref-r.cfg cpp/byref-3.cpp
-33162 cpp/sp_not_not.cfg cpp/sp_not_not.cpp
-
-33180 cpp/pp_multi_comment.cfg cpp/pp_multi_comment.cpp
-33181 cpp/Issue_2759.cfg cpp/Issue_2759.cpp
-33182 cpp/Issue_2794.cfg cpp/Issue_2794.cpp
-
-33200 cpp/cmt_multi_first_len_minimum-1.cfg cpp/first_len_minimum.cpp
-
-33201 cpp/indent_ctor_members_twice.cfg cpp/indent_ctor_members_twice.cpp
-33202 cpp/initlist_leading_commas.cfg cpp/initlist_leading_commas.cpp
-33203 cpp/Issue_2574.cfg cpp/Issue_2574.cpp
-33204 cpp/Issue_2582.cfg cpp/Issue_2582.cpp
-33205 cpp/Issue_3198.cfg cpp/Issue_3198.cpp
-
-33210 cpp/disable_nl_cont.cfg cpp/templates4.cpp
-33211 cpp/disable_nl_cont.cfg cpp/pp_multi_comment.cpp
-33212 cpp/disable_nl_cont.cfg cpp/pp-define-indent.cpp
-33213 cpp/disable_nl_cont.cfg cpp/disable_macro.cpp
-33214 cpp/Issue_2742.cfg cpp/Issue_2742.cpp
-33215 cpp/Issue_3055.cfg cpp/Issue_3055.cpp
-33216 cpp/Issue_3055.cfg cpp/Issue_3055-a.cpp
-33217 common/empty.cfg cpp/Issue_3113.cpp
-
-34001 common/nl_before_after.cfg cpp/nl_before_after.h
-34002 common/indent_columns-3.cfg cpp/bug_i_793.cpp
-34003 cpp/nl_max_blank_in_func-1.cfg cpp/nl_max_blank_in_func.cpp
-34004 cpp/nl_max_blank_in_func-4.cfg cpp/nl_max_blank_in_func.cpp
-34005 common/empty.cfg cpp/nl_max_blank_in_func.cpp
-34006 common/empty.cfg cpp/bug_i_575.cpp
-34007 cpp/indent_with_tabs-0.cfg cpp/bug_i_928.cpp
-
-34100 common/empty.cfg cpp/bug_i_525.cpp
-34101 common/empty.cfg cpp/bug_i_646.cpp
-34105 cpp/bug_i_663.cfg cpp/bug_i_663.cpp
-34108 cpp/bug_i_666.cfg cpp/bug_i_666.cpp
-
-34112 cpp/sp_after_cast-r.cfg cpp/bug_i_889.cpp
-34113 cpp/nl_before_func_body_def-1.cfg cpp/bug_902.cpp
-34114 cpp/nl_before_func_body_def-2.cfg cpp/bug_902.cpp
-34115 cpp/nl_before_func_body_def-2.cfg cpp/nl_before_func_body_def.cpp
-34116 cpp/nl_before_func_body_def-2.cfg cpp/issue_2000.cpp
-34117 cpp/extern_func.cfg cpp/extern_func.cpp
-34118 cpp/Issue_2163.cfg cpp/Issue_2163.cpp
-
-34120 cpp/align_assign_span-1.cfg cpp/bug_i_999.cpp
-34121 cpp/bug_1717.cfg cpp/bug_1717.cpp
-34122 cpp/Issue_2440.cfg cpp/Issue_2440.cpp
-34123 cpp/Issue_2440_nl.cfg cpp/Issue_2440_nl.cpp
-
-34130 cpp/nl_brace_fparen-f.cfg cpp/bug_i_1000.cpp
-34131 cpp/nl_brace_fparen-r.cfg cpp/bug_i_1000.cpp
-34132 cpp/new_op_a.cfg cpp/new_op.cpp
-34133 cpp/new_op_f.cfg cpp/new_op.cpp
-34134 cpp/new_op_r.cfg cpp/new_op.cpp
-34135 cpp/new_op_paren_open_close.cfg cpp/new_op.cpp
-34136 cpp/sp_balance_nested_parens.cfg cpp/sp_balance_nested_parens.cpp
-
-34140 common/empty.cfg cpp/bug_1027.cpp
-34141 common/empty.cfg cpp/bug_1005.cpp
-34142 common/sp_before_byref-r.cfg cpp/I1112-1.cpp
-34143 cpp/I1112-2.cfg cpp/I1112-2.cpp
-34144 cpp/sp_before_ptr_star-r.cfg cpp/I1112-3.cpp
-34145 cpp/i683.cfg cpp/i683.cpp
-34146 cpp/sp_bool-f.cfg cpp/bug_1002.cpp
-34147 cpp/sp_bool-r.cfg cpp/bug_1002.cpp
-34148 cpp/nl_before_if_closing_paren-f.cfg cpp/bug_1139.cpp
-34149 cpp/nl_before_if_closing_paren-r.cfg cpp/bug_1139.cpp
-
-34150 common/empty.cfg cpp/bug_1032.cpp
-34151 cpp/indent_else_if-t.cfg cpp/bug_666.cpp
-34152 common/empty.cfg cpp/bug_1068.cpp
-34153 cpp/nl_type_brace_init_lst-f.cfg cpp/type_brace_init_lst.cpp
-34154 cpp/nl_type_brace_init_lst-r.cfg cpp/type_brace_init_lst.cpp
-34155 cpp/nl_type_brace_init_lst_open-f.cfg cpp/type_brace_init_lst.cpp
-34156 cpp/nl_type_brace_init_lst_open-r.cfg cpp/type_brace_init_lst.cpp
-34157 cpp/nl_type_brace_init_lst_close-f.cfg cpp/type_brace_init_lst.cpp
-34158 cpp/nl_type_brace_init_lst_close-r.cfg cpp/type_brace_init_lst.cpp
-34159 cpp/sp_type_brace_init_lst-f.cfg cpp/type_brace_init_lst.cpp
-
-34160 cpp/sp_type_brace_init_lst-r.cfg cpp/type_brace_init_lst.cpp
-34161 cpp/sp_inside_type_brace_init_lst-f.cfg cpp/type_brace_init_lst.cpp
-34162 cpp/sp_inside_type_brace_init_lst-r.cfg cpp/type_brace_init_lst.cpp
-34163 cpp/sp_after_type_brace_init_lst_open-f.cfg cpp/type_brace_init_lst.cpp
-34164 cpp/sp_after_type_brace_init_lst_open-r.cfg cpp/type_brace_init_lst.cpp
-34165 cpp/sp_before_type_brace_init_lst_close-f.cfg cpp/type_brace_init_lst.cpp
-34166 cpp/sp_before_type_brace_init_lst_close-r.cfg cpp/type_brace_init_lst.cpp
-34168 cpp/nl_type_brace_init_lst-r.cfg cpp/Issue_2910.cpp
-34169 cpp/sp_inside_fparens-f.cfg cpp/init-list-call.cpp
-
-34170 common/empty.cfg cpp/i1082.cpp
-34171 common/empty.cfg cpp/i1181.cpp
-34172 common/space_indent_columns-4.cfg cpp/i1165.cpp
-34173 cpp/arith-vs-ptr.cfg cpp/i1464.cpp
-34174 cpp/arith-vs-ptr.cfg cpp/i1466.cpp
-34175 cpp/align_assign_span-1.cfg cpp/i1509.cpp
-34176 cpp/align_assign_span-1.cfg cpp/i1509_bug_1112_correction.cpp
-34177 cpp/sp_func_call_paren.cfg cpp/sp_func_call_paren.cpp
-34178 cpp/Issue_3237.cfg cpp/Issue_3237.cpp
-34179 cpp/arith-vs-byref.cfg cpp/arith_vs_byref.cpp
-
-34180 cpp/bug_1402.cfg cpp/bug_1402.cpp
-
-34190 cpp/bug_1003.cfg cpp/bug_1003.cpp
-34191 common/empty.cfg cpp/comment-align-multiline.cpp
-34192 cpp/mod_remove_extra_semicolon-t.cfg cpp/i1207.cpp
-34193 common/empty.cfg cpp/i1218.cpp
-34194 cpp/sp_arith_additive-f.cfg cpp/sp_arith_additive.cpp
-34195 cpp/sp_arith_additive-r.cfg cpp/sp_arith_additive.cpp
-34196 cpp/Issue_1460.cfg cpp/Issue_1460.h
-34197 cpp/bug_1161.cfg cpp/bug_1161.cpp
-34198 cpp/sp_dc.cfg cpp/bug_1249.cpp
-34199 common/empty.cfg cpp/not_lambda.cpp
-
-34200 cpp/i1536.cfg cpp/i1536.cpp
-34201 cpp/mod_add_long_namespace_closebrace_comment-1.cfg cpp/i1565.cpp
-34202 cpp/mod_add_long_namespace_closebrace_comment-1.cfg cpp/i1617.cpp
-34203 cpp/i1516.cfg cpp/i1516.cpp
-34204 cpp/align_func_params_span-1.cfg cpp/func_param_indent_leading_comma.cpp
-34205 cpp/bug_1395.cfg cpp/bug_1395.cpp
-34206 cpp/indent_semicolon_for_paren-t.cfg cpp/for_loop_head.cpp
-34207 cpp/indent_first_for_expr-t.cfg cpp/for_loop_head.cpp
-34208 cpp/nl_func_type_name-r.cfg cpp/conversion_operator.cpp
-34209 cpp/nl-brAfter-fcallParen.cfg cpp/lambda_selfcalling.cpp
-
-# TODO: Find relevant test cases for 'override'.
-34210 common/empty.cfg cpp/override_virtual.cpp
-34211 cpp/anonymous_enum.cfg cpp/anonymous_enum.cpp
-34212 cpp/mod_add_long_class_closebrace_comment.cfg cpp/func_class.h
-
-34250 common/empty.cfg cpp/bug_1607.cpp
-34251 cpp/bug_1649.cfg cpp/bug_1649.cpp
-34252 cpp/nl_after_func_proto_group-3.cfg cpp/issue_2001.cpp
-34253 cpp/nl_after_func_proto_group-3.cfg cpp/friends.cpp
-34254 cpp/issue_1985.cfg cpp/issue_1985.cpp
-34255 cpp/eat_blanks_after_codewidth.cfg cpp/eat_blanks_after_codewidth.cpp
-34256 cpp/Issue_2836.cfg cpp/Issue_2836.cpp
-34257 cpp/code_width-70.cfg cpp/brace_init_stdint_macros.cpp
-
-34280 cpp/UNI-29935.cfg cpp/UNI-29935.cpp
-
-34290 cpp/sp_type_brace_init_lst-f.cfg cpp/brace_brace_init_lst.cpp
-34291 cpp/sp_type_brace_init_lst-r.cfg cpp/brace_brace_init_lst.cpp
-34292 cpp/sp_inside_type_brace_init_lst-f.cfg cpp/brace_brace_init_lst.cpp
-34293 cpp/sp_inside_type_brace_init_lst-r.cfg cpp/brace_brace_init_lst.cpp
-34294 cpp/sp_after_type_brace_init_lst_open-f.cfg cpp/brace_brace_init_lst.cpp
-34295 cpp/sp_after_type_brace_init_lst_open-r.cfg cpp/brace_brace_init_lst.cpp
-34296 cpp/i1768.cfg cpp/i1768.cpp
-34297 cpp/align_assign_decl_func-0.cfg cpp/align-assign-mixed.cpp
-34298 cpp/align_assign_decl_func-1.cfg cpp/align-assign-mixed.cpp
-34299 cpp/align_assign_decl_func-2.cfg cpp/align-assign-mixed.cpp
-
-# __asm__
-34300 cpp/bug_1236.cfg cpp/bug_1236.cpp
-34301 cpp/nl_fdef_brace_cond-f.cfg cpp/nl_fdef_brace_cond-f.cpp
-34302 cpp/nl_fdef_brace_cond-r.cfg cpp/nl_fdef_brace_cond-r.cpp
-34303 cpp/nl_fdef_brace_cond-fr.cfg cpp/nl_fdef_brace_cond-fr.cpp
-34304 cpp/nl_fdef_brace_cond-rf.cfg cpp/nl_fdef_brace_cond-rf.cpp
-34305 cpp/issue_2124-1.cfg cpp/issue_2124-1.cpp
-34306 cpp/issue_2124-2.cfg cpp/issue_2124-2.cpp
-34307 cpp/2203.cfg cpp/2203.cpp
-34308 cpp/enum_comment_wrap.cfg cpp/enum_comment_wrap.cpp
-34309 cpp/issue_2209.cfg cpp/issue_2209-1.cpp
-
-34310 cpp/issue_2209.cfg cpp/issue_2209-2.cpp
-34311 cpp/Issue_2250.cfg cpp/Issue_2250.cpp
-34312 cpp/Issue_2101.cfg cpp/Issue_2101.cpp
-34313 cpp/Issue_2437.cfg cpp/Issue_2437.cpp
-34314 cpp/Issue_2604.cfg cpp/Issue_2604.cpp
-34315 cpp/align_func_proto_thresh_1.cfg cpp/align_func_proto_thresh.cpp
-34316 cpp/align_func_proto_thresh_2.cfg cpp/align_func_proto_thresh.cpp
-34317 cpp/align_func_proto_thresh_3.cfg cpp/align_func_proto_thresh.cpp
-34318 cpp/align_assign_func_proto_1.cfg cpp/align_assign_func_proto.cpp
-34319 cpp/align_func_proto_thresh_4.cfg cpp/align_func_proto_thresh2.cpp
-
-34320 cpp/align_func_proto_thresh_5.cfg cpp/align_func_proto_thresh2.cpp
-34321 cpp/bug_2285.cfg cpp/bug_2285.cpp
-34322 cpp/issue_2623_1.cfg cpp/issue_2623.cpp
-34323 cpp/issue_2623_2.cfg cpp/issue_2623.cpp
-34324 cpp/issue_2623_3.cfg cpp/issue_2623.cpp
-34325 cpp/Issue_3025.cfg cpp/Issue_3025.cpp
-34326 cpp/Issue_3040.cfg cpp/Issue_3040.cpp
-34327 cpp/Issue_3044.cfg cpp/Issue_3044.cpp
-34328 cpp/Issue_3048.cfg cpp/Issue_3048.cpp
-
-34330 cpp/Issue_3061_0nl.cfg cpp/Issue_3061_0nl.cpp
-34331 cpp/Issue_3061_0nl.cfg cpp/Issue_3061_1nl.cpp
-34332 cpp/Issue_3061_0nl.cfg cpp/Issue_3061_2nl.cpp
-34333 cpp/Issue_3061_1nl.cfg cpp/Issue_3061_0nl.cpp
-34334 cpp/Issue_3061_1nl.cfg cpp/Issue_3061_1nl.cpp
-34335 cpp/Issue_3061_1nl.cfg cpp/Issue_3061_2nl.cpp
-34336 cpp/Issue_3061_2nl.cfg cpp/Issue_3061_0nl.cpp
-34337 cpp/Issue_3061_2nl.cfg cpp/Issue_3061_1nl.cpp
-34338 cpp/Issue_3061_2nl.cfg cpp/Issue_3061_2nl.cpp
-34339 cpp/Issue_3061_3nl.cfg cpp/Issue_3061_0nl.cpp
-34340 cpp/Issue_3061_3nl.cfg cpp/Issue_3061_1nl.cpp
-34341 cpp/Issue_3061_3nl.cfg cpp/Issue_3061_2nl.cpp
-
-34350 cpp/indent_comma_brace.cfg cpp/indent_comma_brace_glob.cpp
-34351 cpp/indent_comma_brace.cfg cpp/indent_comma_brace_func.cpp
-30353 common/indent_ternary_operator-1.cfg cpp/indent_ternary-1.cpp
-
-34360 cpp/nl_before_struct.cfg cpp/nl_before_struct_struct.cpp
-34361 cpp/nl_before_struct.cfg cpp/nl_before_struct_scoped_enum.cpp
-
-34370 cpp/asm_block_pp.cfg cpp/asm_block_pp.cpp
-
-# test the options sp_ with the value "ignore"
-34500 cpp/sp_before_case_colon.cfg cpp/sp_before_case_colon.cpp
-34501 cpp/sp_endif_cmt.cfg cpp/sp_endif_cmt.cpp
-34502 cpp/sp_enum_assign-f.cfg cpp/sp_enum_assign.cpp
-34503 cpp/sp_enum_assign-i.cfg cpp/sp_enum_assign.cpp
-34504 cpp/issue_574-i-i.cfg cpp/issue_574-i.cpp
-34505 cpp/Issue_3220-f.cfg cpp/Issue_3220.cpp
-34506 cpp/Issue_3220-i.cfg cpp/Issue_3220.cpp
-34507 cpp/Issue_3220-r.cfg cpp/Issue_3220.cpp
-34508 cpp/Issue_3220-ir.cfg cpp/Issue_3220.cpp
-34509 cpp/byref-ir.cfg cpp/byref-2.cpp
-
-34510 cpp/byref-i.cfg cpp/byref-2.cpp
-34511 cpp/byref-f.cfg cpp/byref-2.cpp
-34512 cpp/byref-r.cfg cpp/byref-2.cpp
-34513 cpp/sp_cond_question-ir.cfg cpp/sp_cond_question.cpp
-34514 cpp/sp_cond_question-i.cfg cpp/sp_cond_question.cpp
-34515 cpp/sp_cond_question-f.cfg cpp/sp_cond_question.cpp
-34516 cpp/sp_cond_question-r.cfg cpp/sp_cond_question.cpp
-34517 cpp/semi-f.cfg cpp/semi.cpp
-34518 cpp/semi-i.cfg cpp/semi.cpp
-34519 cpp/semi-r.cfg cpp/semi.cpp
-
-34520 cpp/comma-f.cfg cpp/comma.cpp
-34521 cpp/comma-i.cfg cpp/comma.cpp
-34522 cpp/comma-r.cfg cpp/comma.cpp
-34523 cpp/ellipsis-i.cfg cpp/gcc_case_ellipsis.cpp
-34524 cpp/sp_bool-i.cfg cpp/bug_1002.cpp
-34525 cpp/sp_paren_brace-f.cfg cpp/sp_paren_brace.cpp
-34526 cpp/sp_paren_brace-i.cfg cpp/sp_paren_brace.cpp
-34527 cpp/sp_paren_brace-r.cfg cpp/sp_paren_brace.cpp
-34528 cpp/cmt_trailing_single_line_c_to_cpp.cfg cpp/cmt_trailing_single_line_c_to_cpp.cpp
-34529 cpp/sp_inside_type_brace_init_lst-iif.cfg cpp/type_brace_init_lst.cpp
-
-34530 cpp/sp_inside_type_brace_init_lst-irf.cfg cpp/type_brace_init_lst.cpp
-34531 cpp/sp_inside_type_brace_init_lst-rf.cfg cpp/type_brace_init_lst.cpp
-34532 cpp/sp_inside_type_brace_init_lst-iii.cfg cpp/type_brace_init_lst.cpp
-34533 cpp/templates-i.cfg cpp/templates.cpp
-34534 cpp/templates-r.cfg cpp/templates.cpp
-34535 cpp/template_sp-ignore.cfg cpp/sp_after_angle.cpp
-34536 cpp/template_sp-remove.cfg cpp/sp_after_angle.cpp
-
-34540 cpp/sp_byref_paren-i.cfg cpp/byref-4.cpp
-34541 cpp/sp_byref_paren-a.cfg cpp/byref-4.cpp
-34542 cpp/sp_byref_paren-r.cfg cpp/byref-4.cpp
-34543 cpp/sp_byref_paren-f.cfg cpp/byref-4.cpp
-
-34550 cpp/nl_throw_expr-i.cfg cpp/throws.cpp
-34551 cpp/nl_throw_expr-a.cfg cpp/throws.cpp
-34552 cpp/nl_throw_expr-r.cfg cpp/throws.cpp
-34553 cpp/nl_throw_expr-f.cfg cpp/throws.cpp
-34554 cpp/mod_paren_on_throw-i.cfg cpp/throws.cpp
-34555 cpp/mod_paren_on_throw-a.cfg cpp/throws.cpp
-34556 cpp/mod_paren_on_throw-r.cfg cpp/throws.cpp
-34557 cpp/mod_paren_on_throw-f.cfg cpp/throws.cpp
-
-# Adopt some UT tests
-10000 common/empty.cfg cpp/621_this-spacing.cpp
-10001 common/empty.cfg cpp/622_ifdef-indentation.cpp
-10002 cpp/623_caret-spacing.cfg cpp/623_caret-spacing.cpp
-10003 cpp/633_decl-in-func-typedef.cfg cpp/633_decl-in-func-typedef.cpp
-10004 common/empty.cfg cpp/634_extern-c-no-block.cpp
-10005 cpp/Uncrustify.Cpp.cfg cpp/define-indentation.cpp
-10006 cpp/dont-detab-strings.cfg cpp/dont-detab-strings.cpp
-10007 cpp/dont-process-defines.cfg cpp/dont-process-defines.cpp
-10008 common/empty.cfg cpp/PR326_invalid-backslash-eol-csharp.cpp
-10009 cpp/STUCK_macro-difficulties.cfg cpp/STUCK_macro-difficulties.cpp
-
-10020 cpp/U02-Cpp.cfg cpp/macro_spaces.cpp
-10021 cpp/U03-Cpp.cfg cpp/braces_align.cpp
-10022 cpp/U04-Cpp.cfg cpp/foreach.cpp
-10023 cpp/U05-Cpp.cfg cpp/for_auto.cpp
-10024 cpp/U06-Cpp.cfg cpp/ifcomment.cpp
-10025 cpp/U07-Cpp.cfg cpp/qtargs.cpp
-10026 cpp/sp_before_ellipsis-r.cfg cpp/gcc_case_ellipsis.cpp
-10027 cpp/Issue_3058.cfg cpp/Issue_3058.cpp
-10028 cpp/sp_before_ellipsis-f.cfg cpp/gcc_case_ellipsis.cpp
-10029 cpp/sp_after_ellipsis-f.cfg cpp/gcc_case_ellipsis.cpp
-
-10047 cpp/U16-Cpp.cfg cpp/UNI-1334.cpp
-10048 common/empty.cfg cpp/UNI-1335.cpp
-
-10050 cpp/U18-Cpp.cfg cpp/UNI-1337.cpp
-10052 common/empty.cfg cpp/UNI-1339.cpp
-10053 cpp/UNI-1340.cfg cpp/UNI-1340.cpp
-10054 cpp/UNI-1344.cfg cpp/UNI-1344.cpp
-10056 cpp/UNI-1346.cfg cpp/UNI-1346.cpp
-10057 cpp/UNI-1347.cfg cpp/UNI-1347.cpp
-
-10060 cpp/UNI-1350.cfg cpp/UNI-1350.cpp
-10062 cpp/UNI-1356.cfg cpp/UNI-1356.cpp
-10063 cpp/UNI-1358.cfg cpp/UNI-1358.cpp
-10069 common/empty.cfg cpp/UNI-1980.cpp
-
-10070 cpp/U21-Cpp.cfg cpp/UNI-1981.cpp
-10071 common/empty.cfg cpp/UNI-1983.cpp
-10079 cpp/U23-Cpp.cfg cpp/UNI-9650.cpp
-
-10080 cpp/UNI-10496.cfg cpp/UNI-10496.cpp
-
-10100 cpp/issue_564.cfg cpp/issue_564.cpp
-10101 cpp/issue_574.cfg cpp/issue_574.cpp
-10102 cpp/issue_574-i-a.cfg cpp/issue_574.cpp
-10103 cpp/issue_574-i-b.cfg cpp/issue_574.cpp
-
-10566 common/empty.cfg cpp/issue_1752.cpp
-
-11000 cpp/UNI-12046.cfg cpp/UNI-12046.cpp
-
-20002 cpp/UNI-32657.cfg cpp/UNI-32657.cpp
-
-20011 common/empty.cfg cpp/UNI-38381.cpp
-
-60001 cpp/UNI-2650.cfg cpp/UNI-2650.cpp
-60002 cpp/U25-Cpp.cfg cpp/UNI-16283.cpp
-60003 cpp/U26-Cpp.cfg cpp/UNI-1288.cpp
-60006 cpp/UNI-2049.cfg cpp/UNI-2049.cpp
-60017 cpp/U27-Cpp.cfg cpp/UNI-2683.cpp
-
-60022 cpp/U28-Cpp.cfg cpp/UNI-18439.cpp
-60025 cpp/U29-Cpp.cfg cpp/UNI-19894.cpp
-60027 cpp/U30-Cpp.cfg cpp/UNI-21506.cpp
-60028 cpp/U31-Cpp.cfg cpp/UNI-21509.cpp
-60029 common/empty.cfg cpp/UNI-21510.cpp
-
-60030 cpp/U33-Cpp.cfg cpp/UNI-21727.cpp
-60031 common/empty.cfg cpp/UNI-21728.cpp
-60032 common/empty.cfg cpp/UNI-21729.cpp
-60036 cpp/UNI-2680.cfg cpp/UNI-2680.cpp
-60038 cpp/UNI-30088.cfg cpp/UNI-30088.cpp
-60039 cpp/U36-Cpp.cfg cpp/UNI-30628.cpp
-
-60042 common/UNI-18777.cfg cpp/UNI-18777.cpp
-60043 cpp/nl_remove_extra_newlines-1.cfg cpp/i2033.cpp
-60044 cpp/nl_fdef_brace-r__nl_collapse_empty_body-t.cfg cpp/i2116.cpp
-60045 cpp/align_asterisk_after_type_cast.cfg cpp/align_asterisk_after_type_cast.cpp
-60046 cpp/align_continuation_left_shift.cfg cpp/align_continuation_left_shift.cpp
-60047 cpp/align_default_after_override.cfg cpp/align_default_after_override.cpp
-60048 cpp/bug_2322.cfg cpp/bug_2322.cpp
-60049 cpp/bug_2402.cfg cpp/bug_2402.cpp
-
-60051 cpp/bug_2371.cfg cpp/bug_2371.cpp
-60052 cpp/bug_2433_1.cfg cpp/bug_2433_1.cpp
-60053 cpp/bug_2433_2.cfg cpp/bug_2433_2.cpp
-60054 cpp/interface-keyword-in-cpp.cfg cpp/interface-keyword-in-cpp.cpp
-60055 cpp/issue_3116.cfg cpp/issue_3116.cpp
-60056 cpp/issue_3116.cfg cpp/issue_3116-2.cpp
-60057 cpp/issue_3116-2.cfg cpp/issue_3116.cpp
-60058 cpp/sp_constr_colon-i.cfg cpp/issue_3330.cpp
-60059 cpp/indent_ctor_init_leading.cfg cpp/indent_ctor_init.cpp
-
-60060 cpp/sp_return-a.cfg cpp/returns.cpp
-60061 cpp/sp_return-f.cfg cpp/returns.cpp
-60062 cpp/sp_return-i.cfg cpp/returns.cpp
-60063 cpp/sp_return-r.cfg cpp/returns.cpp
-60064 cpp/sp_constr_colon-i.cfg cpp/issue_3368.cpp
-60065 cpp/issue_3378.cfg cpp/issue_3378.cpp
-60066 cpp/Issue_3409.cfg cpp/Issue_3409.cpp
-60067 common/empty.cfg cpp/Issue_3283.cpp
-60068 cpp/Issue_3428.cfg cpp/Issue_3428.cpp
-60069 cpp/Issue_3428_2.cfg cpp/Issue_3428.cpp
-
-60070 cpp/Issue_3428_3.cfg cpp/Issue_3428.cpp
-60071 cpp/Issue_3428_4.cfg cpp/Issue_3428.cpp
-60072 cpp/Issue_3428_5.cfg cpp/Issue_3428.cpp
-60073 cpp/Issue_3428_6.cfg cpp/Issue_3428.cpp
-60074 cpp/Issue_3284.cfg cpp/Issue_3284.cpp
-60075 cpp/Issue_3294.cfg cpp/Issue_3294.cpp
-60076 cpp/indent_ignore_before_class_colon-t.cfg cpp/indent_ctor_init.cpp
-60077 cpp/indent_ignore_before_constr_colon-t.cfg cpp/indent_ctor_init.cpp
-60078 cpp/indent_func_proto_param-t.cfg cpp/Issue_3505.cpp
-60079 common/empty.cfg cpp/Issue_3536.cpp
-
-60080 common/empty.cfg cpp/Issue_3538.cpp
-60081 cpp/Issue_3546.cfg cpp/Issue_3546.cpp
-60082 cpp/Issue_3552.cfg cpp/Issue_3552.cpp
-60083 cpp/Issue_3570.cfg cpp/Issue_3570.h
-60084 cpp/Issue_3576-a.cfg cpp/Issue_3576.h
-60085 cpp/Issue_3576-b.cfg cpp/Issue_3576.h
-60086 cpp/indent_namespace_inner_only.cfg cpp/indent_namespace_inner_only.h
-60087 cpp/Issue_3550.cfg cpp/Issue_3550.cpp
-60088 common/empty.cfg cpp/Issue_3761.cpp
-60089 cpp/Issue_3863.cfg cpp/Issue_3863.cpp
-60090 cpp/Issue_3863.cfg cpp/Issue_3863_2.cpp
-60091 cpp/Issue_3863.cfg cpp/Issue_3863_3.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00901-code_width.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00901-code_width.c
deleted file mode 100644
index 6c2a99c7..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00901-code_width.c
+++ /dev/null
@@ -1,87 +0,0 @@
-
-static int short_function_name(struct device *dev,
- struct device_driver *drv);
-
-/* Assuming a 60-column limit */
-static int short_function_name(struct device *dev,
- struct device_driver *drv)
-{
- this->translateLabels(labelID,
- completedLabelID,
- selectedLabelID,
- text,
- selectedText,
- completedText,
- fontId,
- selectedFontId,
- completedFontId);
- call_some_really_long_function.of_some_sort(
- some_long_parameter1,
- some_long_parameter2);
-
- abc = call_some_other_really_long_function.of_some_sort(
- some_long_parameter1,
- some_long_parameter2);
-
- abc.def.ghi =
- call_some_other_really_long_function.of_some_sort(
- some_long_parameter1,
- some_long_parameter2);
-
- abcdefghijklmnopqrstuvwxyz = abc + def + ghi + jkl +
- mno + prq + stu + vwx + yz;
-
- return 1;
-}
-
-typedef
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- yyyyyyyyyyyyyyyyyyyyyy;
-
-typedef some_return_value (*some_function_type)(another_type
- parameter1,
- another_type
- parameter2);
-
-typedef struct
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-{
- int yyyyyyyyyyyyyyyyyyyyyy;
-} x_t;
-
-static void some_really_long_function_name(
- struct device *dev,
- struct device_driver *drv)
-{
- if ((some_variable_name &&
- somefunction(param1, param2, param3))) {
- asdfghjk = asdfasdfasd.aasdfasd +
- (asdfasd.asdas * 1234.65);
- }
-
- for (struct something_really_really_excessive *
- a_long_ptr_name = get_first_item();
- a_long_ptr_name != NULL;
- a_long_ptr_name = get_next_item(a_long_ptr_name))
- {
- }
-
- for (a = get_first(); a != NULL; a = GetNext(a))
- {
- }
-
- for (a_ptr = get_first(); a_ptr != NULL;
- a_ptr = GetNext(a))
- {
- }
-
- register_clcmd( "examine",
- "do_examine",
- -1,
- "-Allows a player to examine the health and armor of a teammate" );
- register_clcmd( "/examine",
- "do_examine",
- -1,
- "-Allows a player to examine the health and armor of a teammate" );
-}
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00902-code_width.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00902-code_width.c
deleted file mode 100644
index be2e42f4..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00902-code_width.c
+++ /dev/null
@@ -1,76 +0,0 @@
-
-static int short_function_name(struct device *dev,
- struct device_driver *drv);
-
-/* Assuming a 60-column limit */
-static int short_function_name(struct device *dev,
- struct device_driver *drv)
-{
- this->translateLabels(labelID, completedLabelID,
- selectedLabelID, text,
- selectedText, completedText,
- fontId, selectedFontId,
- completedFontId);
- call_some_really_long_function.of_some_sort(
- some_long_parameter1, some_long_parameter2);
-
- abc = call_some_other_really_long_function.of_some_sort(
- some_long_parameter1, some_long_parameter2);
-
- abc.def.ghi =
- call_some_other_really_long_function.of_some_sort(
- some_long_parameter1, some_long_parameter2);
-
- abcdefghijklmnopqrstuvwxyz = abc + def + ghi + jkl +
- mno + prq + stu + vwx + yz;
-
- return 1;
-}
-
-typedef
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- yyyyyyyyyyyyyyyyyyyyyy;
-
-typedef some_return_value (*some_function_type)(another_type
- parameter1,
- another_type
- parameter2);
-
-typedef struct
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-{
- int yyyyyyyyyyyyyyyyyyyyyy;
-} x_t;
-
-static void some_really_long_function_name(
- struct device *dev, struct device_driver *drv)
-{
- if ((some_variable_name &&
- somefunction(param1, param2, param3))) {
- asdfghjk = asdfasdfasd.aasdfasd +
- (asdfasd.asdas * 1234.65);
- }
-
- for (struct something_really_really_excessive *
- a_long_ptr_name = get_first_item();
- a_long_ptr_name != NULL;
- a_long_ptr_name = get_next_item(a_long_ptr_name))
- {
- }
-
- for (a = get_first(); a != NULL; a = GetNext(a))
- {
- }
-
- for (a_ptr = get_first();
- a_ptr != NULL;
- a_ptr = GetNext(a))
- {
- }
-
- register_clcmd( "examine", "do_examine", -1,
- "-Allows a player to examine the health and armor of a teammate" );
- register_clcmd( "/examine", "do_examine", -1,
- "-Allows a player to examine the health and armor of a teammate" );
-}
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00903-code_width.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00903-code_width.c
deleted file mode 100644
index 70b3a113..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00903-code_width.c
+++ /dev/null
@@ -1,75 +0,0 @@
-
-static int short_function_name(struct device *dev, struct device_driver *drv);
-
-/* Assuming a 60-column limit */
-static int short_function_name(struct device *dev, struct device_driver *drv)
-{
- this->translateLabels(labelID,
- completedLabelID,
- selectedLabelID,
- text,
- selectedText,
- completedText,
- fontId,
- selectedFontId,
- completedFontId);
- call_some_really_long_function.of_some_sort(some_long_parameter1,
- some_long_parameter2);
-
- abc = call_some_other_really_long_function.of_some_sort(
- some_long_parameter1,
- some_long_parameter2);
-
- abc.def.ghi = call_some_other_really_long_function.of_some_sort(
- some_long_parameter1,
- some_long_parameter2);
-
- abcdefghijklmnopqrstuvwxyz = abc + def + ghi + jkl + mno + prq + stu + vwx +
- yz;
-
- return 1;
-}
-
-typedef xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- yyyyyyyyyyyyyyyyyyyyyy;
-
-typedef some_return_value (*some_function_type)(another_type parameter1,
- another_type parameter2);
-
-typedef struct xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-{
- int yyyyyyyyyyyyyyyyyyyyyy;
-} x_t;
-
-static void some_really_long_function_name(struct device *dev,
- struct device_driver *drv)
-{
- if ((some_variable_name && somefunction(param1, param2, param3))) {
- asdfghjk = asdfasdfasd.aasdfasd + (asdfasd.asdas * 1234.65);
- }
-
- for (struct something_really_really_excessive *a_long_ptr_name =
- get_first_item();
- a_long_ptr_name != NULL;
- a_long_ptr_name = get_next_item(a_long_ptr_name))
- {
- }
-
- for (a = get_first(); a != NULL; a = GetNext(a))
- {
- }
-
- for (a_ptr = get_first(); a_ptr != NULL; a_ptr = GetNext(a))
- {
- }
-
- register_clcmd( "examine",
- "do_examine",
- -1,
- "-Allows a player to examine the health and armor of a teammate" );
- register_clcmd( "/examine",
- "do_examine",
- -1,
- "-Allows a player to examine the health and armor of a teammate" );
-}
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02302-nl-cont.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02302-nl-cont.c
deleted file mode 100644
index dfbb0c2d..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02302-nl-cont.c
+++ /dev/null
@@ -1,23 +0,0 @@
-
-#define FOO(bar) create_a_really_long_identifier name(some_function( \
- bar1 + bar2), bar3, \
- bar4);
-
-#define VNV_RECORD_CYCLES(m) do { \
- uint16_t cyc_out = ((uint16_t )TMR4) - cyc_in; \
- if (cyc_out < vnv_ticks[m].min) vnv_ticks[m].min = cyc_out; \
- if (cyc_out > vnv_ticks[m].max) vnv_ticks[m].max = cyc_out; \
-} while (0)
-
-#define multilinemacro do { (x+5); } while (0); \
- printf("a multilinemacro"); \
- printf("a multilinemacro2");
-
-int main(int argc, char *argv[])
-{
- int a, b;
- a = 1; /* stupid comment \\ */
- b = 2;
-
- return(a+b);
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02303-nl-cont2.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02303-nl-cont2.c
deleted file mode 100644
index a0129423..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02303-nl-cont2.c
+++ /dev/null
@@ -1,18 +0,0 @@
-
-#define FOO(bar) create_a_really_long_identifier name(some_function( \
- bar1 + bar2), bar3, \
- bar4);
-
-#define multilinemacro do { (x+5); } while (0); \
- printf("a multilinemacro"); \
- printf("a multilinemacro2");
-
-int main(int argc, char *argv[])
-{
- int a, b;
- a = 1; /* stupid comment \
- * b = 2; */
-
- return(a+b);
-}
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02530-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02530-pp_multiline_define.c
deleted file mode 100644
index 24b840f3..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02530-pp_multiline_define.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#define gettext(Msgid) \
- QWERTY0 Msgid;
-#ifdef TEST
-#define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- } \
- while(true) \
- { \
- g = g + 1; \
- }
-int i = 3;
-
-#define x \
- ( \
- x \
- ) \
- { \
- QWERTY2 Msgid; \
- }
-void f()
-{
- int i=2;
-}
-#endif
-
-#pragma multi \
- line \
- pragma
-
- #define setint(x) x = x + 1
-#define K 2
- #define gettext2(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- g = g + 1; \
- } \
- while(true); \
- }
-
-#warning multi \
- line \
- warning
-
-#ifdef TEST1
- #ifdef TEST2
-#ifdef TEST3
- #ifdef TEST4
-#define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- if (false) { \
- g = g + 1; \
- } \
- } \
- while(true); \
- }
-#endif
- #endif
- #endif
- #endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02531-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02531-pp_multiline_define.c
deleted file mode 100644
index b73bb9af..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02531-pp_multiline_define.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#define gettext(Msgid) \
- QWERTY0 Msgid;
-#ifdef TEST
-#define gettext1(Msgid) \
- if (true) \
- {\
- QWERTY1 Msgid; \
-}\
-while(true) \
-{ \
- g = g + 1; \
-}
-int i = 3;
-
-#define x \
- (\
- x\
- )\
- {\
- QWERTY2 Msgid; \
-}
-void f()
-{
- int i=2;
-}
-#endif
-
-#pragma multi \
- line \
- pragma
-
- #define setint(x) x = x + 1
-#define K 2
- #define gettext2(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
-do \
-{ \
-g = g + 1; \
-} \
-while(true); \
-}
-
-#warning multi \
- line \
- warning
-
-#ifdef TEST1
- #ifdef TEST2
-#ifdef TEST3
- #ifdef TEST4
-#define gettext1(Msgid) \
- if (true) \
- {\
- QWERTY1 Msgid; \
- do \
- { \
- if (false){ \
-g = g + 1; \
- }\
- } \
-while(true); \
-}
-#endif
- #endif
- #endif
- #endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02532-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02532-pp_multiline_define.c
deleted file mode 100644
index 780d71e1..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02532-pp_multiline_define.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#define gettext(Msgid) \
- QWERTY0 Msgid;
-#ifdef TEST
-#define gettext1(Msgid) \
- if (true) \
- {\
- QWERTY1 Msgid; \
-}\
-while(true) \
-{ \
- g = g + 1; \
-}
-int i = 3;
-
-#define x \
- (\
- x\
- )\
- {\
- QWERTY2 Msgid; \
-}
-void f()
-{
- int i=2;
-}
-#endif
-
-#pragma multi \
- line \
- pragma
-
- #define setint(x) x = x + 1
-#define K 2
- #define gettext2(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
-do \
-{ \
-g = g + 1; \
-} \
-while(true); \
-}
-
-#warning multi \
- line \
- warning
-
-#ifdef TEST1
- #ifdef TEST2
-#ifdef TEST3
- #ifdef TEST4
-#define gettext1(Msgid) \
- if (true) \
- {\
- QWERTY1 Msgid; \
- do \
- { \
- if (false){ \
-g = g + 1; \
- }\
- } \
-while(true); \
-}
-#endif
- #endif
- #endif
- #endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02533-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02533-pp_multiline_define.c
deleted file mode 100644
index 088418e7..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02533-pp_multiline_define.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#define gettext(Msgid) \
- QWERTY0 Msgid;
-#ifdef TEST
-#define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- } \
- while(true) \
- { \
- g = g + 1; \
- }
-int i = 3;
-
-#define x \
- ( \
- x \
- ) \
- { \
- QWERTY2 Msgid; \
- }
-void f()
-{
- int i=2;
-}
-#endif
-
-#pragma multi \
- line \
- pragma
-
- #define setint(x) x = x + 1
-#define K 2
- #define gettext2(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- g = g + 1; \
- } \
- while(true); \
- }
-
-#warning multi \
- line \
- warning
-
-#ifdef TEST1
- #ifdef TEST2
-#ifdef TEST3
- #ifdef TEST4
-#define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- if (false) { \
- g = g + 1; \
- } \
- } \
- while(true); \
- }
-#endif
- #endif
- #endif
- #endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02534-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02534-pp_multiline_define.c
deleted file mode 100644
index 81837e7c..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02534-pp_multiline_define.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#define gettext(Msgid) \
- QWERTY0 Msgid;
-#ifdef TEST
-#define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- } \
- while(true) \
- { \
- g = g + 1; \
- }
-int i = 3;
-
-#define x \
- ( \
- x \
- ) \
- { \
- QWERTY2 Msgid; \
- }
-void f()
-{
- int i=2;
-}
-#endif
-
-#pragma multi \
- line \
- pragma
-
- #define setint(x) x = x + 1
-#define K 2
- #define gettext2(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- g = g + 1; \
- } \
- while(true); \
- }
-
-#warning multi \
- line \
- warning
-
-#ifdef TEST1
- #ifdef TEST2
-#ifdef TEST3
- #ifdef TEST4
-#define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- if (false) { \
- g = g + 1; \
- } \
- } \
- while(true); \
- }
-#endif
- #endif
- #endif
- #endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02535-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02535-pp_multiline_define.c
deleted file mode 100644
index 04375283..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02535-pp_multiline_define.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#define gettext(Msgid) \
- QWERTY0 Msgid;
-#ifdef TEST
-#define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- } \
- while(true) \
- { \
- g = g + 1; \
- }
-int i = 3;
-
-#define x \
- ( \
- x \
- ) \
- { \
- QWERTY2 Msgid; \
- }
-void f()
-{
- int i=2;
-}
-#endif
-
-#pragma multi \
- line \
- pragma
-
-#define setint(x) x = x + 1
-#define K 2
-#define gettext2(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- g = g + 1; \
- } \
- while(true); \
- }
-
-#warning multi \
- line \
- warning
-
-#ifdef TEST1
-#ifdef TEST2
-#ifdef TEST3
-#ifdef TEST4
-#define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- if (false) { \
- g = g + 1; \
- } \
- } \
- while(true); \
- }
-#endif
-#endif
-#endif
-#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02536-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02536-pp_multiline_define.c
deleted file mode 100644
index 490510ac..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02536-pp_multiline_define.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#define gettext(Msgid) \
- QWERTY0 Msgid;
-#ifdef TEST
- #define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- } \
- while(true) \
- { \
- g = g + 1; \
- }
-int i = 3;
-
- #define x \
- ( \
- x \
- ) \
- { \
- QWERTY2 Msgid; \
- }
-void f()
-{
- int i=2;
-}
-#endif
-
-#pragma multi \
- line \
- pragma
-
-#define setint(x) x = x + 1
-#define K 2
-#define gettext2(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- g = g + 1; \
- } \
- while(true); \
- }
-
-#warning multi \
- line \
- warning
-
-#ifdef TEST1
- #ifdef TEST2
- #ifdef TEST3
- #ifdef TEST4
- #define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- if (false) { \
- g = g + 1; \
- } \
- } \
- while(true); \
- }
- #endif
- #endif
- #endif
-#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02537-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02537-pp_multiline_define.c
deleted file mode 100644
index 9cca3cc8..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02537-pp_multiline_define.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#define gettext(Msgid) \
- QWERTY0 Msgid;
-#ifdef TEST
- #define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- } \
- while(true) \
- { \
- g = g + 1; \
- }
-int i = 3;
-
- #define x \
- ( \
- x \
- ) \
- { \
- QWERTY2 Msgid; \
- }
-void f()
-{
- int i=2;
-}
-#endif
-
-#pragma multi \
- line \
- pragma
-
-#define setint(x) x = x + 1
-#define K 2
-#define gettext2(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- g = g + 1; \
- } \
- while(true); \
- }
-
-#warning multi \
- line \
- warning
-
-#ifdef TEST1
- #ifdef TEST2
- #ifdef TEST3
- #ifdef TEST4
- #define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- if (false) { \
- g = g + 1; \
- } \
- } \
- while(true); \
- }
- #endif
- #endif
- #endif
-#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02538-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02538-pp_multiline_define.c
deleted file mode 100644
index 649c473e..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02538-pp_multiline_define.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#define gettext(Msgid) \
- QWERTY0 Msgid;
-#ifdef TEST
- #define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- } \
- while(true) \
- { \
- g = g + 1; \
- }
-int i = 3;
-
- #define x \
- ( \
- x \
- ) \
- { \
- QWERTY2 Msgid; \
- }
-void f()
-{
- int i=2;
-}
-#endif
-
-#pragma multi \
- line \
- pragma
-
-#define setint(x) x = x + 1
-#define K 2
-#define gettext2(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- g = g + 1; \
- } \
- while(true); \
- }
-
-#warning multi \
- line \
- warning
-
-#ifdef TEST1
- #ifdef TEST2
- #ifdef TEST3
- #ifdef TEST4
- #define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- if (false) { \
- g = g + 1; \
- } \
- } \
- while(true); \
- }
- #endif
- #endif
- #endif
-#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02539-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02539-pp_multiline_define.c
deleted file mode 100644
index e437aa73..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02539-pp_multiline_define.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#define gettext(Msgid) \
-QWERTY0 Msgid;
-#ifdef TEST
- #define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- } \
- while(true) \
- { \
- g = g + 1; \
- }
-int i = 3;
-
- #define x \
- ( \
- x \
- ) \
- { \
- QWERTY2 Msgid; \
- }
-void f()
-{
- int i=2;
-}
-#endif
-
-#pragma multi \
- line \
- pragma
-
-#define setint(x) x = x + 1
-#define K 2
-#define gettext2(Msgid) \
-if (true) \
-{ \
- QWERTY1 Msgid; \
- do \
- { \
- g = g + 1; \
- } \
- while(true); \
-}
-
-#warning multi \
- line \
- warning
-
-#ifdef TEST1
- #ifdef TEST2
- #ifdef TEST3
- #ifdef TEST4
- #define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- if (false) { \
- g = g + 1; \
- } \
- } \
- while(true); \
- }
- #endif
- #endif
- #endif
-#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02540-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02540-pp_multiline_define.c
deleted file mode 100644
index ab382e23..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02540-pp_multiline_define.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#define gettext(Msgid) \
-QWERTY0 Msgid;
-#ifdef TEST
- #define gettext1(Msgid) \
-if (true) \
-{ \
- QWERTY1 Msgid; \
-} \
-while(true) \
-{ \
- g = g + 1; \
-}
-int i = 3;
-
- #define x \
-( \
- x \
-) \
-{ \
- QWERTY2 Msgid; \
-}
-void f()
-{
- int i=2;
-}
-#endif
-
-#pragma multi \
- line \
- pragma
-
-#define setint(x) x = x + 1
-#define K 2
-#define gettext2(Msgid) \
-if (true) \
-{ \
- QWERTY1 Msgid; \
- do \
- { \
- g = g + 1; \
- } \
- while(true); \
-}
-
-#warning multi \
- line \
- warning
-
-#ifdef TEST1
- #ifdef TEST2
- #ifdef TEST3
- #ifdef TEST4
- #define gettext1(Msgid) \
-if (true) \
-{ \
- QWERTY1 Msgid; \
- do \
- { \
- if (false) { \
- g = g + 1; \
- } \
- } \
- while(true); \
-}
- #endif
- #endif
- #endif
-#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02541-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02541-pp_multiline_define.c
deleted file mode 100644
index 37db1457..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02541-pp_multiline_define.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#define gettext(Msgid) \
- QWERTY0 Msgid;
-#ifdef TEST
- #define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- } \
- while(true) \
- { \
- g = g + 1; \
- }
-int i = 3;
-
- #define x \
- ( \
- x \
- ) \
- { \
- QWERTY2 Msgid; \
- }
-void f()
-{
- int i=2;
-}
-#endif
-
-#pragma multi \
- line \
- pragma
-
-#define setint(x) x = x + 1
-#define K 2
-#define gettext2(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- g = g + 1; \
- } \
- while(true); \
- }
-
-#warning multi \
- line \
- warning
-
-#ifdef TEST1
- #ifdef TEST2
- #ifdef TEST3
- #ifdef TEST4
- #define gettext1(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
- do \
- { \
- if (false) { \
- g = g + 1; \
- } \
- } \
- while(true); \
- }
- #endif
- #endif
- #endif
-#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10081-infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10081-infinite-loops.c
deleted file mode 100644
index 0505f2a5..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10081-infinite-loops.c
+++ /dev/null
@@ -1,135 +0,0 @@
-int main(void)
-{
- int x;
-
-
- /* Braces on their own lines */
-
- for (;;)
- {
- }
-
- for(;;)
- {
- }
-
- for(;;)
- {
- }
-
- for(;;)
- {
- }
-
- for(;;)
- {
- }
-
-
- /* Braces on the same lines as the keywords */
-
- for (;;) {
- }
-
- for(;;) {
- }
-
- for(;;) {
- }
-
- for(;;) {
- }
-
- for(;;) {
- }
-
-
- /* Braces but everything on one line */
-
- for (;;) {}
-
- for(;;) {}
-
- for(;;) {}
-
- for(;;) {}
-
- for(;;) {}
-
-
- /* No braces */
-
- for (;;)
- x++;
-
- for(;;)
- x++;
-
- for(;;)
- x++;
-
- for(;;)
- x++;
-
- for(;;)
- x++;
-
-
- /* No braces and everything on one line */
-
- for (;;) x++;
-
- for(;;) x++;
-
- for(;;) x++;
-
- for(;;) x++;
-
- for(;;) x++;
-
-
- /* Comments near or in loop syntax */
-
- for (; /*ever*/ ;)
- x++;
-
- while (/* always */ 1)
- x++;
-
- do
- x++;
- while (1) /* without end */;
-
- /* comment */ for(;;)
- x++;
-
- for(;;) // comment
- x++;
-
- for(;;) // comment
- x++;
- // comment
-
-
- /* Unusual infinite loop conditions */
-
- for (; 999 ;)
- x++;
-
- while (999)
- x++;
-
- do
- x++;
- while (999);
-
- for (; 1 == 1 ;)
- x++;
-
- while (1 == 1)
- x++;
-
- do
- x++;
- while (1 == 1);
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10084-infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10084-infinite-loops.c
deleted file mode 100644
index 1f2eccdd..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10084-infinite-loops.c
+++ /dev/null
@@ -1,135 +0,0 @@
-int main(void)
-{
- int x;
-
-
- /* Braces on their own lines */
-
- while(1)
- {
- }
-
- while(1)
- {
- }
-
- while(1)
- {
- }
-
- while (1)
- {
- }
-
- while(1)
- {
- }
-
-
- /* Braces on the same lines as the keywords */
-
- while(1) {
- }
-
- while(1) {
- }
-
- while(1) {
- }
-
- while (1) {
- }
-
- while(1) {
- }
-
-
- /* Braces but everything on one line */
-
- while(1) {}
-
- while(1) {}
-
- while(1) {}
-
- while (1) {}
-
- while(1) {}
-
-
- /* No braces */
-
- while(1)
- x++;
-
- while(1)
- x++;
-
- while(1)
- x++;
-
- while (1)
- x++;
-
- while(1)
- x++;
-
-
- /* No braces and everything on one line */
-
- while(1) x++;
-
- while(1) x++;
-
- while(1) x++;
-
- while (1) x++;
-
- while(1) x++;
-
-
- /* Comments near or in loop syntax */
-
- for (; /*ever*/ ;)
- x++;
-
- while (/* always */ 1)
- x++;
-
- do
- x++;
- while (1) /* without end */;
-
- /* comment */ while(1)
- x++;
-
- while(1) // comment
- x++;
-
- while(1) // comment
- x++;
- // comment
-
-
- /* Unusual infinite loop conditions */
-
- for (; 999 ;)
- x++;
-
- while (999)
- x++;
-
- do
- x++;
- while (999);
-
- for (; 1 == 1 ;)
- x++;
-
- while (1 == 1)
- x++;
-
- do
- x++;
- while (1 == 1);
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10086-infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10086-infinite-loops.c
deleted file mode 100644
index 0bdd0220..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10086-infinite-loops.c
+++ /dev/null
@@ -1,146 +0,0 @@
-int main(void)
-{
- int x;
-
-
- /* Braces on their own lines */
-
- for (;;)
- {
- }
-
- for(;;)
- {
- }
-
- for(;;)
- {
- }
-
- for(;;)
- {
- }
-
- for(;;)
- {
- }
-
-
- /* Braces on the same lines as the keywords */
-
- for (;;) {
- }
-
- for(;;) {
- }
-
- for(;;) {
- }
-
- for(;;) {
- }
-
- for(;;) {
- }
-
-
- /* Braces but everything on one line */
-
- for (;;) {}
-
- for(;;) {}
-
- for(;;) {}
-
- for(;;) {}
-
- for(;;) {}
-
-
- /* No braces */
-
- for (;;) {
- x++;
- }
-
- for(;;) {
- x++;
- }
-
- for(;;) {
- x++;
- }
-
- for(;;) {
- x++;
- }
-
- for(;;) {
- x++;
- }
-
-
- /* No braces and everything on one line */
-
- for (;;) {x++;}
-
- for(;;) {x++;}
-
- for(;;) {x++;}
-
- for(;;) {x++;}
-
- for(;;) {x++;}
-
-
- /* Comments near or in loop syntax */
-
- for (; /*ever*/ ;) {
- x++;
- }
-
- while (/* always */ 1)
- x++;
-
- do
- x++;
- while (1) /* without end */;
-
- /* comment */ for(;;) {
- x++;
- }
-
- for(;;) { // comment
- x++;
- }
-
- for(;;) { // comment
- x++;
- }
- // comment
-
-
- /* Unusual infinite loop conditions */
-
- for (; 999 ;) {
- x++;
- }
-
- while (999)
- x++;
-
- do
- x++;
- while (999);
-
- for (; 1 == 1 ;) {
- x++;
- }
-
- while (1 == 1)
- x++;
-
- do
- x++;
- while (1 == 1);
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10089-infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10089-infinite-loops.c
deleted file mode 100644
index 8d02250f..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10089-infinite-loops.c
+++ /dev/null
@@ -1,146 +0,0 @@
-int main(void)
-{
- int x;
-
-
- /* Braces on their own lines */
-
- while(1)
- {
- }
-
- while(1)
- {
- }
-
- while(1)
- {
- }
-
- while (1)
- {
- }
-
- while(1)
- {
- }
-
-
- /* Braces on the same lines as the keywords */
-
- while(1) {
- }
-
- while(1) {
- }
-
- while(1) {
- }
-
- while (1) {
- }
-
- while(1) {
- }
-
-
- /* Braces but everything on one line */
-
- while(1) {}
-
- while(1) {}
-
- while(1) {}
-
- while (1) {}
-
- while(1) {}
-
-
- /* No braces */
-
- while(1) {
- x++;
- }
-
- while(1) {
- x++;
- }
-
- while(1) {
- x++;
- }
-
- while (1) {
- x++;
- }
-
- while(1) {
- x++;
- }
-
-
- /* No braces and everything on one line */
-
- while(1) {x++;}
-
- while(1) {x++;}
-
- while(1) {x++;}
-
- while (1) {x++;}
-
- while(1) {x++;}
-
-
- /* Comments near or in loop syntax */
-
- for (; /*ever*/ ;)
- x++;
-
- while (/* always */ 1) {
- x++;
- }
-
- do
- x++;
- while (1) /* without end */;
-
- /* comment */ while(1) {
- x++;
- }
-
- while(1) { // comment
- x++;
- }
-
- while(1) { // comment
- x++;
- }
- // comment
-
-
- /* Unusual infinite loop conditions */
-
- for (; 999 ;)
- x++;
-
- while (999) {
- x++;
- }
-
- do
- x++;
- while (999);
-
- for (; 1 == 1 ;)
- x++;
-
- while (1 == 1) {
- x++;
- }
-
- do
- x++;
- while (1 == 1);
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/02102-indent-c.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/02102-indent-c.cpp
deleted file mode 100644
index 978dfae4..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/02102-indent-c.cpp
+++ /dev/null
@@ -1,1024 +0,0 @@
-/**
- * @file indent.cpp
- * Does all the indenting stuff.
- *
- * $Id: indent.cpp 548 2006-10-21 02:31:55Z bengardner $
- */
-#include "uncrustify_types.h"
-#include "chunk.h"
-#include "prototypes.h"
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-#include <cerrno>
-#include <cctype>
-
-
-/**
- * General indenting approach:
- * Indenting levels are put into a stack.
- *
- * The stack entries contain:
- * - opening type
- * - brace column
- * - continuation column
- *
- * Items that start a new stack item:
- * - preprocessor (new parse frame)
- * - Brace Open (Virtual brace also)
- * - Paren, Square, Angle open
- * - Assignments
- * - C++ '<<' operator (ie, cout << "blah")
- * - case
- * - class colon
- * - return
- * - types
- * - any other continued statement
- *
- * Note that the column of items marked 'PCF_WAS_ALIGNED' is not changed.
- *
- * For an open brace:
- * - indent increases by indent_columns
- * - if part of if/else/do/while/switch/etc, an extra indent may be applied
- * - if in a paren, then cont-col is set to column + 1, ie "({ some code })"
- *
- * Open paren/square/angle:
- * cont-col is set to the column of the item after the open paren, unless
- * followed by a newline, then it is set to (brace-col + indent_columns).
- * Examples:
- * a_really_long_funcion_name(
- * param1, param2);
- * a_really_long_funcion_name(param1,
- * param2);
- *
- * Assignments:
- * Assignments are continued aligned with the first item after the assignment,
- * unless the assign is followed by a newline.
- * Examples:
- * some.variable = asdf + asdf +
- * asdf;
- * some.variable =
- * asdf + asdf + asdf;
- *
- * C++ << operator:
- * Handled the same as assignment.
- * Examples:
- * cout << "this is test number: "
- * << test_number;
- *
- * case:
- * Started with case or default.
- * Terminated with close brace at level or another case or default.
- * Special indenting according to various rules.
- * - indent of case label
- * - indent of case body
- * - how to handle optional braces
- * Examples:
- * {
- * case x: {
- * a++;
- * break;
- * }
- * case y:
- * b--;
- * break;
- * default:
- * c++;
- * break;
- * }
- *
- * Class colon:
- * Indent continuation by indent_columns:
- * class my_class :
- * baseclass1,
- * baseclass2
- * {
- *
- * Return: same as assignemts
- * If the return statement is not fully paren'd, then the indent continues at
- * the column of the item after the return. If it is paren'd, then the paren
- * rules apply.
- * return somevalue +
- * othervalue;
- *
- * Type: pretty much the same as assignments
- * Examples:
- * int foo,
- * bar,
- * baz;
- *
- * Any other continued item:
- * There shouldn't be anything not covered by the above cases, but any other
- * continued item is indented by indent_columns:
- * Example:
- * somereallycrazylongname.with[lotsoflongstuff].
- * thatreallyannoysme.whenIhavetomaintain[thecode] = 3;
- */
-
-static void indent_comment(Chunk *pc, int col);
-
-
-void indent_to_column(Chunk *pc, int column)
- {
- if (column < pc->GetColumn())
- column = pc->GetColumn();
-
- reindent_line(pc, column);
- }
-
-/**
- * Changes the initial indent for a line to the given column
- *
- * @param pc The chunk at the start of the line
- * @param column The desired column
- */
-void reindent_line(Chunk *pc, int column)
- {
- int col_delta;
- int min_col;
-
- LOG_FMT(LINDLINE, "%s: %d] col %d on %.*s [%s] => %d\n",
- __func__, pc->GetOrigLine(), pc->GetColumn(), pc->len, pc->GetStr(),
- get_token_name(pc->GetType()), column);
-
- if (column == pc->GetColumn())
- return;
-
- col_delta = column - pc->GetColumn();
- pc->SetColumn(column);
- min_col = pc->GetColumn();
-
- do
- {
- min_col += pc->len;
- pc = pc->GetNext();
-
- if (pc != NULL)
- {
- if (pc->IsComment())
- {
- pc->SetColumn(pc->GetOrigCol());
-
- if (pc->GetColumn() < min_col)
- pc->SetColumn(min_col + 1);
-
- LOG_FMT(LINDLINE, "%s: set comment on line %d to col %d (orig %d)\n",
- __func__, pc->GetOrigLine(), pc->GetColumn(), pc->GetOrigCol());
- }
- else
- {
- pc->SetColumn(pc->GetColumn() + col_delta);
-
- if (pc->GetColumn() < min_col)
- pc->SetColumn(min_col);
- }
- }
- }
- while ((pc != NULL) && (pc->GetNlCount() == 0));
- }
-
-/**
- * Starts a new entry
- *
- * @param frm The parse frame
- * @param pc The chunk causing the push
- */
-static void indent_pse_push(struct parse_frame& frm, Chunk *pc)
- {
- static int ref = 0;
-
- /* check the stack depth */
- if (frm.pse_tos < (int)ARRAY_SIZE(frm.pse))
- {
- /* Bump up the index and initialize it */
- frm.pse_tos++;
- memset(&frm.pse[frm.pse_tos], 0, sizeof(frm.pse[frm.pse_tos]));
-
- LOG_FMT(LINDPSE, "%4d] OPEN [%d,%s] level=%d\n",
- pc->GetOrigLine(), frm.pse_tos, get_token_name(pc->GetType()), pc->GetLevel());
-
- frm.pse[frm.pse_tos].type = pc->GetType();
- frm.pse[frm.pse_tos].level = pc->GetLevel();
- frm.pse[frm.pse_tos].open_line = pc->GetOrigLine();
- frm.pse[frm.pse_tos].ref = ++ref;
- frm.pse[frm.pse_tos].in_preproc = (pc->GetFlags() & PCF_IN_PREPROC) != 0;
- }
- }
-
-/**
- * Removes the top entry
- *
- * @param frm The parse frame
- * @param pc The chunk causing the push
- */
-static void indent_pse_pop(struct parse_frame& frm, Chunk *pc)
- {
- /* Bump up the index and initialize it */
- if (frm.pse_tos > 0)
- {
- if (pc != NULL)
- {
- LOG_FMT(LINDPSE, "%4d] CLOSE [%d,%s] on %s, started on line %d, level=%d/%d\n",
- pc->GetOrigLine(), frm.pse_tos,
- get_token_name(frm.pse[frm.pse_tos].type),
- get_token_name(pc->GetType()),
- frm.pse[frm.pse_tos].open_line,
- frm.pse[frm.pse_tos].level,
- pc->GetLevel());
- }
- else
- {
- LOG_FMT(LINDPSE, " EOF] CLOSE [%d,%s], started on line %d\n",
- frm.pse_tos, get_token_name(frm.pse[frm.pse_tos].type),
- frm.pse[frm.pse_tos].open_line);
- }
-
- frm.pse_tos--;
- }
- }
-
-static int token_indent(E_Token type)
- {
- switch (type)
- {
- case CT_IF:
- case CT_DO:
- return 3;
-
- case CT_FOR:
- case CT_ELSE: // wacky, but that's what is wanted
- return 4;
-
- case CT_WHILE:
- return 6;
-
- case CT_SWITCH:
- return 7;
-
- case CT_ELSEIF:
- return 8;
-
- default:
- return 0; //cpd.settings[UO_indent_braces].n;
- }
- }
-
-/**
- * Change the top-level indentation only by changing the column member in
- * the chunk structures.
- * The level indicator must already be set.
- */
-void indent_text(void)
- {
- Chunk *pc;
- Chunk *next;
- Chunk *prev = NULL;
- bool did_newline = true;
- int idx;
- int vardefcol = 0;
- int indent_size = cpd.settings[UO_indent_columns].n;
- int tmp;
- struct parse_frame frm;
- bool in_preproc = false, was_preproc = false;
- int indent_column;
- int cout_col = 0; // for aligning << stuff
- int cout_level = 0; // for aligning << stuff
- int parent_token_indent = 0;
-
- memset(&frm, 0, sizeof(frm));
-
- /* dummy top-level entry */
- frm.pse[0].indent = 1;
- frm.pse[0].indent_tmp = 1;
- frm.pse[0].type = CT_EOF;
-
- pc = Chunk::GetHead();
-
- while (pc != NULL)
- {
- /* Handle proprocessor transitions */
- was_preproc = in_preproc;
- in_preproc = (pc->GetFlags() & PCF_IN_PREPROC) != 0;
-
- if (cpd.settings[UO_indent_brace_parent].b)
- parent_token_indent = token_indent(pc->GetParentType());
-
- /* Clean up after a #define */
- if (!in_preproc)
- while ((frm.pse_tos > 0) && frm.pse[frm.pse_tos].in_preproc)
- indent_pse_pop(frm, pc);
-
- else
- {
- pf_check(&frm, pc);
-
- if (!was_preproc)
- {
- /* Transition into a preproc by creating a dummy indent */
- frm.level++;
- indent_pse_push(frm, pc);
-
- frm.pse[frm.pse_tos].indent = 1 + indent_size;
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos].indent;
- }
- }
-
- if ((cout_col > 0) &&
- (pc->IsSemicolon() ||
- (pc->GetLevel() < cout_level)))
- {
- cout_col = 0;
- cout_level = 0;
- }
-
- /**
- * Handle non-brace closures
- */
-
- int old_pse_tos;
-
- do
- {
- old_pse_tos = frm.pse_tos;
-
- /* End anything that drops a level
- * REVISIT: not sure about the preproc check
- */
- if (!pc->IsNewline() &&
- !pc->IsComment() &&
- ((pc->GetFlags() & PCF_IN_PREPROC) == 0) &&
- (frm.pse[frm.pse_tos].level > pc->GetLevel()))
- indent_pse_pop(frm, pc);
-
- if (frm.pse[frm.pse_tos].level == pc->GetLevel())
- {
- /* process virtual braces closes (no text output) */
- if ((pc->GetType() == CT_VBRACE_CLOSE) &&
- (frm.pse[frm.pse_tos].type == CT_VBRACE_OPEN))
- {
- indent_pse_pop(frm, pc);
- frm.level--;
- pc = pc->GetNext();
- }
-
- /* End any assign operations with a semicolon on the same level */
- if ((frm.pse[frm.pse_tos].type == CT_ASSIGN) &&
- (pc->IsSemicolon() ||
- (pc->GetType() == CT_COMMA) ||
- (pc->GetType() == CT_BRACE_OPEN)))
- indent_pse_pop(frm, pc);
-
- /* End any CPP class colon crap */
- if ((frm.pse[frm.pse_tos].type == CT_CLASS_COLON) &&
- ((pc->GetType() == CT_BRACE_OPEN) ||
- pc->IsSemicolon()))
- indent_pse_pop(frm, pc);
-
- /* a case is ended with another case or a close brace */
- if ((frm.pse[frm.pse_tos].type == CT_CASE) &&
- ((pc->GetType() == CT_BRACE_CLOSE) ||
- (pc->GetType() == CT_CASE)))
- indent_pse_pop(frm, pc);
-
- /* a return is ended with a semicolon */
- if ((frm.pse[frm.pse_tos].type == CT_RETURN) &&
- pc->IsSemicolon())
- indent_pse_pop(frm, pc);
-
- /* Close out parens and squares */
- if ((frm.pse[frm.pse_tos].type == (pc->GetType() - 1)) &&
- ((pc->GetType() == CT_PAREN_CLOSE) ||
- (pc->GetType() == CT_SPAREN_CLOSE) ||
- (pc->GetType() == CT_FPAREN_CLOSE) ||
- (pc->GetType() == CT_SQUARE_CLOSE) ||
- (pc->GetType() == CT_ANGLE_CLOSE)))
- {
- indent_pse_pop(frm, pc);
- frm.paren_count--;
- }
- }
- }
- while (old_pse_tos > frm.pse_tos);
-
- /* Grab a copy of the current indent */
- indent_column = frm.pse[frm.pse_tos].indent_tmp;
-
- if (!pc->IsNewline() && !pc->IsComment())
- {
- LOG_FMT(LINDPC, " -=[ %.*s ]=- top=%d %s %d/%d\n",
- pc->len, pc->GetStr(),
- frm.pse_tos,
- get_token_name(frm.pse[frm.pse_tos].type),
- frm.pse[frm.pse_tos].indent_tmp,
- frm.pse[frm.pse_tos].indent);
- }
-
- /**
- * Handle stuff that can affect the current indent:
- * - brace close
- * - vbrace open
- * - brace open
- * - case (immediate)
- * - labels (immediate)
- * - class colons (immediate)
- *
- * And some stuff that can't
- * - open paren
- * - open square
- * - assignment
- * - return
- */
-
- if (pc->GetType() == CT_BRACE_CLOSE)
- {
- if (frm.pse[frm.pse_tos].type == CT_BRACE_OPEN)
- {
- indent_pse_pop(frm, pc);
- frm.level--;
-
- /* Update the indent_column if needed */
- if (!cpd.settings[UO_indent_braces].b &&
- (parent_token_indent == 0))
- indent_column = frm.pse[frm.pse_tos].indent_tmp;
-
- if ((pc->GetParentType() == CT_IF) ||
- (pc->GetParentType() == CT_ELSE) ||
- (pc->GetParentType() == CT_ELSEIF) ||
- (pc->GetParentType() == CT_DO) ||
- (pc->GetParentType() == CT_WHILE) ||
- (pc->GetParentType() == CT_SWITCH) ||
- (pc->GetParentType() == CT_FOR))
- indent_column += cpd.settings[UO_indent_brace].n;
- }
- }
- else if (pc->GetType() == CT_VBRACE_OPEN)
- {
- frm.level++;
- indent_pse_push(frm, pc);
-
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - 1].indent + indent_size;
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos].indent;
-
- /* Always indent on virtual braces */
- indent_column = frm.pse[frm.pse_tos].indent_tmp;
- }
- else if (pc->GetType() == CT_BRACE_OPEN)
- {
- frm.level++;
- indent_pse_push(frm, pc);
-
- if (frm.paren_count != 0)
- /* We are inside ({ ... }) -- indent one tab from the paren */
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - 1].indent_tmp + indent_size;
- else
- {
- /* Use the prev indent level + indent_size. */
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - 1].indent + indent_size;
-
- /* If this brace is part of a statement, bump it out by indent_brace */
- if ((pc->GetParentType() == CT_IF) ||
- (pc->GetParentType() == CT_ELSE) ||
- (pc->GetParentType() == CT_ELSEIF) ||
- (pc->GetParentType() == CT_DO) ||
- (pc->GetParentType() == CT_WHILE) ||
- (pc->GetParentType() == CT_SWITCH) ||
- (pc->GetParentType() == CT_FOR))
- {
- if (parent_token_indent != 0)
- frm.pse[frm.pse_tos].indent += parent_token_indent - indent_size;
- else
- {
- frm.pse[frm.pse_tos].indent += cpd.settings[UO_indent_brace].n;
- indent_column += cpd.settings[UO_indent_brace].n;
- }
- }
- else if (pc->GetParentType() == CT_CASE)
- {
- /* The indent_case_brace setting affects the parent CT_CASE */
- frm.pse[frm.pse_tos].indent_tmp += cpd.settings[UO_indent_case_brace].n;
- frm.pse[frm.pse_tos].indent += cpd.settings[UO_indent_case_brace].n;
- }
- else if ((pc->GetParentType() == CT_CLASS) && !cpd.settings[UO_indent_class].b)
- frm.pse[frm.pse_tos].indent -= indent_size;
- else if ((pc->GetParentType() == CT_NAMESPACE) && !cpd.settings[UO_indent_namespace].b)
- frm.pse[frm.pse_tos].indent -= indent_size;
- }
-
- if ((pc->GetFlags() & PCF_DONT_INDENT) != 0)
- {
- frm.pse[frm.pse_tos].indent = pc->GetColumn();
- indent_column = pc->GetColumn();
- }
- else
- {
- /**
- * If there isn't a newline between the open brace and the next
- * item, just indent to wherever the next token is.
- * This covers this sort of stuff:
- * { a++;
- * b--; };
- */
- next = pc->GetNextNcNnl();
-
- if (!pc->IsNewlineBetween(next))
- frm.pse[frm.pse_tos].indent = next->GetColumn();
-
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos].indent;
- frm.pse[frm.pse_tos].open_line = pc->GetOrigLine();
-
- /* Update the indent_column if needed */
- if (cpd.settings[UO_indent_braces].n ||
- (parent_token_indent != 0))
- indent_column = frm.pse[frm.pse_tos].indent_tmp;
- }
- }
- else if (pc->GetType() == CT_CASE)
- {
- /* Start a case - indent UO_indent_switch_case from the switch level */
- tmp = frm.pse[frm.pse_tos].indent + cpd.settings[UO_indent_switch_case].n;
-
- indent_pse_push(frm, pc);
-
- frm.pse[frm.pse_tos].indent = tmp;
- frm.pse[frm.pse_tos].indent_tmp = tmp - indent_size;
-
- /* Always set on case statements */
- indent_column = frm.pse[frm.pse_tos].indent_tmp;
- }
- else if (pc->GetType() == CT_LABEL)
- {
- /* Labels get sent to the left or backed up */
- if (cpd.settings[UO_indent_label].n > 0)
- indent_column = cpd.settings[UO_indent_label].n;
- else
- indent_column = frm.pse[frm.pse_tos].indent +
- cpd.settings[UO_indent_label].n;
- }
- else if (pc->GetType() == CT_CLASS_COLON)
- {
- /* just indent one level */
- indent_pse_push(frm, pc);
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - 1].indent_tmp + indent_size;
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos].indent;
-
- indent_column = frm.pse[frm.pse_tos].indent_tmp;
-
- if (cpd.settings[UO_indent_class_colon].b)
- {
- prev = pc->GetPrev();
-
- if (prev->IsNewline())
- {
- frm.pse[frm.pse_tos].indent += 2;
- /* don't change indent of current line */
- }
- }
- }
- else if ((pc->GetType() == CT_PAREN_OPEN) ||
- (pc->GetType() == CT_SPAREN_OPEN) ||
- (pc->GetType() == CT_FPAREN_OPEN) ||
- (pc->GetType() == CT_SQUARE_OPEN) ||
- (pc->GetType() == CT_ANGLE_OPEN))
- {
- /* Open parens and squares - never update indent_column */
- indent_pse_push(frm, pc);
- frm.pse[frm.pse_tos].indent = pc->GetColumn() + pc->len;
-
- if (cpd.settings[UO_indent_func_call_param].b &&
- (pc->GetType() == CT_FPAREN_OPEN) &&
- (pc->GetParentType() == CT_FUNC_CALL))
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - 1].indent + indent_size;
-
- if ((chunk_is_str(pc, "(", 1) && !cpd.settings[UO_indent_paren_nl].b) ||
- (chunk_is_str(pc, "[", 1) && !cpd.settings[UO_indent_square_nl].b))
- {
- next = pc->GetNextNc();
-
- if (next->IsNewline())
- {
- int sub = 1;
-
- if (frm.pse[frm.pse_tos - 1].type == CT_ASSIGN)
- sub = 2;
-
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - sub].indent + indent_size;
- }
- }
-
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos].indent;
- frm.paren_count++;
- }
- else if (pc->GetType() == CT_ASSIGN)
- {
- /**
- * if there is a newline after the '=', just indent one level,
- * otherwise align on the '='.
- * Never update indent_column.
- */
- next = pc->GetNext();
-
- if (next != NULL)
- {
- indent_pse_push(frm, pc);
-
- if (next->IsNewline())
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - 1].indent_tmp + indent_size;
- else
- frm.pse[frm.pse_tos].indent = pc->GetColumn() + pc->len + 1;
-
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos].indent;
- }
- }
- else if (pc->GetType() == CT_RETURN)
- {
- /* don't count returns inside a () or [] */
- if (pc->GetLevel() == pc->GetBraceLevel())
- {
- indent_pse_push(frm, pc);
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - 1].indent + pc->len + 1;
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos - 1].indent;
- }
- }
- else if (chunk_is_str(pc, "<<", 2))
- {
- if (cout_col == 0)
- {
- cout_col = pc->GetColumn();
- cout_level = pc->GetLevel();
- }
- }
- else
- {
- /* anything else? */
- }
-
- /**
- * Indent the line if needed
- */
- if (did_newline && !pc->IsNewline() && (pc->len != 0))
- {
- /**
- * Check for special continuations.
- * Note that some of these could be done as a stack item like
- * everything else
- */
-
- prev = pc->GetPrevNcNnl();
-
- if ((pc->GetType() == CT_MEMBER) ||
- (pc->GetType() == CT_DC_MEMBER) ||
- ((prev != NULL) &&
- ((prev->GetType() == CT_MEMBER) ||
- (prev->GetType() == CT_DC_MEMBER))))
- {
- tmp = cpd.settings[UO_indent_member].n + indent_column;
- LOG_FMT(LINDENT, "%s: %d] member => %d\n",
- __func__, pc->GetOrigLine(), tmp);
- reindent_line(pc, tmp);
- }
- else if (chunk_is_str(pc, "<<", 2) && (cout_col > 0))
- {
- LOG_FMT(LINDENT, "%s: %d] cout_col => %d\n",
- __func__, pc->GetOrigLine(), cout_col);
- reindent_line(pc, cout_col);
- }
- else if ((vardefcol > 0) &&
- (pc->GetType() == CT_WORD) &&
- ((pc->GetFlags() & PCF_VAR_DEF) != 0) &&
- (prev != NULL) && (prev->GetType() == CT_COMMA))
- {
- LOG_FMT(LINDENT, "%s: %d] Vardefcol => %d\n",
- __func__, pc->GetOrigLine(), vardefcol);
- reindent_line(pc, vardefcol);
- }
- else if ((pc->GetType() == CT_STRING) && (prev->GetType() == CT_STRING) &&
- cpd.settings[UO_indent_align_string].b)
- {
- LOG_FMT(LINDENT, "%s: %d] String => %d\n",
- __func__, pc->GetOrigLine(), prev->GetColumn());
- reindent_line(pc, prev->GetColumn());
- }
- else if (pc->IsComment())
- {
- LOG_FMT(LINDENT, "%s: %d] comment => %d\n",
- __func__, pc->GetOrigLine(), frm.pse[frm.pse_tos].indent_tmp);
- indent_comment(pc, frm.pse[frm.pse_tos].indent_tmp);
- }
- else if (pc->GetType() == CT_PREPROC)
- {
- /* Preprocs are always in column 1. See indent_preproc() */
- if (pc->GetColumn() != 1)
- reindent_line(pc, 1);
- }
- else
- {
- if (pc->GetColumn() != indent_column)
- {
- LOG_FMT(LINDENT, "%s: %d] indent => %d [%.*s]\n",
- __func__, pc->GetOrigLine(), indent_column, pc->len, pc->GetStr());
- reindent_line(pc, indent_column);
- }
- }
-
- did_newline = false;
- }
-
- /**
- * Handle variable definition continuation indenting
- */
- if ((pc->GetType() == CT_WORD) &&
- ((pc->GetFlags() & PCF_IN_FCN_DEF) == 0) &&
- ((pc->GetFlags() & PCF_VAR_1ST_DEF) == PCF_VAR_1ST_DEF))
- vardefcol = pc->GetColumn();
-
- if (pc->IsSemicolon() ||
- ((pc->GetType() == CT_BRACE_OPEN) && (pc->GetParentType() == CT_FUNCTION)))
- vardefcol = 0;
-
- /* if we hit a newline, reset indent_tmp */
- if (pc->IsNewline() ||
- (pc->GetType() == CT_COMMENT_MULTI) ||
- (pc->GetType() == CT_COMMENT_CPP))
- {
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos].indent;
-
- /**
- * Handle the case of a multi-line #define w/o anything on the
- * first line (indent_tmp will be 1 or 0)
- */
- if ((pc->GetType() == CT_NL_CONT) &&
- (frm.pse[frm.pse_tos].indent_tmp <= indent_size))
- frm.pse[frm.pse_tos].indent_tmp = indent_size + 1;
-
- /* Get ready to indent the next item */
- did_newline = true;
- }
-
- if (!pc->IsComment() && !pc->IsNewline())
- prev = pc;
-
- pc = pc->GetNext();
- }
-
- /* Throw out any stuff inside a preprocessor - no need to warn */
- while ((frm.pse_tos > 0) && frm.pse[frm.pse_tos].in_preproc)
- indent_pse_pop(frm, pc);
-
- for (idx = 1; idx <= frm.pse_tos; idx++)
- {
- LOG_FMT(LWARN, "%s:%d Unmatched %s\n",
- cpd.filename, frm.pse[idx].open_line,
- get_token_name(frm.pse[idx].type));
- cpd.error_count++;
- }
- }
-
-/**
- * returns true if forward scan reveals only single newlines or comments
- * stops when hits code
- * false if next thing hit is a closing brace, also if 2 newlines in a row
- */
-
-
-static bool single_line_comment_indent_rule_applies(Chunk *start)
- {
- Chunk *pc = start;
- int nl_count = 0;
-
- if (!pc->IsSingleLineComment())
- return false;
-
- /* scan forward, if only single newlines and comments before next line of code, we want to apply */
- while ((pc = pc->GetNext()) != NULL)
- {
- if (pc->IsNewline())
- {
- if (nl_count > 0 || pc->GetNlCount() > 1)
- return false;
-
- nl_count++;
- }
- else
- {
- nl_count = 0;
-
- if (!pc->IsSingleLineComment())
- {
- /* here we check for things to run into that we wouldn't want to indent the comment for */
- /* for example, non-single line comment, closing brace */
- if (pc->IsComment() || pc->IsBraceClose())
- return false;
-
- return true;
- }
- }
- }
-
- return false;
- }
-
-/**
- * REVISIT: This needs to be re-checked, maybe cleaned up
- *
- * Indents comments in a (hopefully) smart manner.
- *
- * There are two type of comments that get indented:
- * - stand alone (ie, no tokens on the line before the comment)
- * - trailing comments (last token on the line apart from a linefeed)
- * + note that a stand-alone comment is a special case of a trailing
- *
- * The stand alone comments will get indented in one of three ways:
- * - column 1:
- * + There is an empty line before the comment AND the indent level is 0
- * + The comment was originally in column 1
- *
- * - Same column as trailing comment on previous line (ie, aligned)
- * + if originally within TBD (3) columns of the previous comment
- *
- * - syntax indent level
- * + doesn't fit in the previous categories
- *
- * Options modify this behavior:
- * - keep original column (don't move the comment, if possible)
- * - keep relative column (move out the same amount as first item on line)
- * - fix trailing comment in column TBD
- *
- * @param pc The comment, which is the first item on a line
- * @param col The column if this is to be put at indent level
- */
-static void indent_comment(Chunk *pc, int col)
- {
- Chunk *nl;
- Chunk *prev;
-
- LOG_FMT(LCMTIND, "%s: line %d, col %d, level %d: ", __func__,
- pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
-
- /* force column 1 comment to column 1 if not changing them */
- if ((pc->GetOrigCol() == 1) && !cpd.settings[UO_indent_col1_comment].b)
- {
- LOG_FMT(LCMTIND, "rule 1 - keep in col 1\n");
- pc->SetColumn(1);
- return;
- }
-
- nl = pc->GetPrev();
-
- /* outside of any expression or statement? */
- if (pc->GetLevel() == 0)
- {
- if ((nl != NULL) && (nl->GetNlCount() > 1))
- {
- LOG_FMT(LCMTIND, "rule 2 - level 0, nl before\n");
- pc->SetColumn(1);
- return;
- }
- }
-
- prev = nl->GetPrev();
-
- if (prev->IsComment() && (nl->GetNlCount() == 1))
- {
- int coldiff = prev->GetOrigCol() - pc->GetOrigCol();
-
- if ((coldiff <= 3) && (coldiff >= -3))
- {
- pc->SetColumn(prev->GetColumn());
- LOG_FMT(LCMTIND, "rule 3 - prev comment, coldiff = %d, now in %d\n",
- coldiff, pc->GetColumn());
- return;
- }
- }
-
- /* check if special single line comment rule applies */
- if (cpd.settings[UO_indent_sing_line_comments].n > 0 && single_line_comment_indent_rule_applies(pc))
- {
- pc->SetColumn(col + cpd.settings[UO_indent_sing_line_comments].n);
- LOG_FMT(LCMTIND, "rule 4 - single line comment indent, now in %d\n", pc->GetColumn());
- return;
- }
-
- LOG_FMT(LCMTIND, "rule 5 - fall-through, stay in %d\n", col);
-
- pc->SetColumn(col);
- }
-
-/**
- * Put spaces on either side of the preproc (#) symbol.
- * This is done by pointing pc->GetStr() into pp_str and adjusting the
- * length.
- */
-void indent_preproc(void)
- {
- Chunk *pc;
- Chunk *next;
- int pp_level;
- int pp_level_sub = 0;
- int tmp;
-
- /* Define a string of 16 spaces + # + 16 spaces */
- static const char *pp_str = " # ";
- static const char *alt_str = " %: ";
-
- /* Scan to see if the whole file is covered by one #ifdef */
- int stage = 0;
-
- for (pc = Chunk::GetHead(); pc != NULL; pc = pc->GetNext())
- {
- if (pc->IsComment() || pc->IsNewline())
- continue;
-
- if (stage == 0)
- {
- /* Check the first PP, make sure it is an #if type */
- if (pc->GetType() != CT_PREPROC)
- break;
-
- next = pc->GetNext();
-
- if ((next == NULL) || (next->GetType() != CT_PP_IF))
- break;
-
- stage = 1;
- }
- else if (stage == 1)
- {
- /* Scan until a PP at level 0 is found - the close to the #if */
- if ((pc->GetType() == CT_PREPROC) &&
- (pc->GetPpLevel() == 0))
- stage = 2;
-
- continue;
- }
- else if (stage == 2)
- {
- /* We should only see the rest of the preprocessor */
- if ((pc->GetType() == CT_PREPROC) ||
- ((pc->GetFlags() & PCF_IN_PREPROC) == 0))
- {
- stage = 0;
- break;
- }
- }
- }
-
- if (stage == 2)
- {
- LOG_FMT(LINFO, "The whole file is covered by a #IF\n");
- pp_level_sub = 1;
- }
-
- for (pc = Chunk::GetHead(); pc != NULL; pc = pc->GetNext())
- {
- if (pc->GetType() != CT_PREPROC)
- continue;
-
- if (pc->GetColumn() != 1)
- {
- /* Don't handle preprocessors that aren't in column 1 */
- LOG_FMT(LINFO, "%s: Line %d doesn't start in column 1 (%d)\n",
- __func__, pc->GetOrigLine(), pc->GetColumn());
- continue;
- }
-
- /* point into pp_str */
- if (pc->len == 2)
- /* alternate token crap */
- pc->Str() = &alt_str[16];
- else
- pc->Str() = &pp_str[16];
-
- pp_level = pc->GetPpLevel() - pp_level_sub;
-
- if (pp_level < 0)
- pp_level = 0;
- else if (pp_level > 16)
- pp_level = 16;
-
- /* Note that the indent is removed by default */
- if ((cpd.settings[UO_pp_indent].a & AV_ADD) != 0)
- {
- /* Need to add some spaces */
- pc->Str() -= pp_level;
- pc->len += pp_level;
- }
- else if (cpd.settings[UO_pp_indent].a == AV_IGNORE)
- {
- tmp = (pc->GetOrigCol() <= 16) ? pc->GetOrigCol() - 1 : 16;
- pc->Str() -= tmp;
- pc->len += tmp;
- }
-
- /* Add spacing by adjusting the length */
- if ((cpd.settings[UO_pp_space].a & AV_ADD) != 0)
- pc->len += pp_level;
-
- next = pc->GetNext();
-
- if (next != NULL)
- reindent_line(next, pc->len + 1);
-
- LOG_FMT(LPPIS, "%s: Indent line %d to %d (len %d, next->col %d)\n",
- __func__, pc->GetOrigLine(), GetPpLevel(), pc->len, next->GetColumn());
- }
- }
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33110-enum.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33110-enum.cpp
deleted file mode 100644
index b4f7df56..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33110-enum.cpp
+++ /dev/null
@@ -1,203 +0,0 @@
-enum class angle_state_e : unsigned int
-{
- NONE = 0,
- OPEN = 1, //'<' found
- CLOSE = 2, //'>' found
-};
-
-// align.cpp
-enum class comment_align_e : unsigned int
-{
- REGULAR,
- BRACE,
- ENDIF,
-};
-
-// chunk.h
-enum class E_Scope : unsigned int
-{
- ALL, /**< search in all kind of chunks */
- PREPROC, /**< search only in preprocessor chunks */
-};
-
-// chunk.cpp
-enum class E_Direction : unsigned int
-{
- FORWARD,
- BACKWARD
-};
-
-// combine.cpp
-{
- enum class angle_state_e : unsigned int
- {
- NONE = 0,
- OPEN = 1, // '<' found
- CLOSE = 2, // '>' found
- };
-}
-
-// indent.cpp
-enum class align_mode_e : unsigned int
-{
- SHIFT, /* shift relative to the current column */
- KEEP_ABS, /* try to keep the original absolute column */
- KEEP_REL, /* try to keep the original gap */
-};
-
-// align_stack.h
-{
- enum StarStyle
- {
- SS_IGNORE, // don't look for prev stars
- SS_INCLUDE, // include prev * before add
- SS_DANGLE // include prev * after add
- };
-}
-
-// log_levels.h
-enum log_sev_t
-{
- LSYS = 0,
- LERR = 1,
- LWARN = 2,
- LNOTE = 3,
- LINFO = 4,
- LDATA = 5,
-
- LFILELIST = 8, /* Files in the file list file */
- LLINEENDS = 9, /* Show which line endings are used */
- LCASTS = 10, /* align casts */
- LALBR = 11, /* align braces */
- LALTD = 12, /* Align Typedef */
- LALPP = 13, /* align #define */
- LALPROTO = 14, /* align prototype */
- LALNLC = 15, /* align backslash-newline */
- LALTC = 16, /* align trailing comments */
- LALADD = 17, /* align add */
- LALASS = 18, /* align assign */
- LFVD = 19, /* fix_var_def */
- LFVD2 = 20, /* fix_var_def-2 */
- LINDENT = 21, /* indent_text */
- LINDENT2 = 22, /* indent_text tab level */
- LINDPSE = 23, /* indent_text stack */
- LINDPC = 24, /* indent play-by-play */
- LNEWLINE = 25, /* newlines */
- LPF = 26, /* Parse Frame */
- LSTMT = 27, /* Marking statements/expressions */
- LTOK = 28, /* Tokenize */
- LALRC = 29, /* align right comment */
- LCMTIND = 30, /* Comment Indent */
- LINDLINE = 31, /* indent line */
- LSIB = 32, /* Scan IB */
- LRETURN = 33, /* add/remove parens for return */
- LBRDEL = 34, /* brace removal */
- LFCN = 35, /* function detection */
- LFCNP = 36, /* function parameters */
- LPCU = 37, /* parse cleanup */
- LDYNKW = 38, /* dynamic keywords */
- LOUTIND = 39, /* output indent */
- LBCSAFTER = 40, /* Brace cleanup stack - after each token */
- LBCSPOP = 41, /* Brace cleanup stack - log pops */
- LBCSPUSH = 42, /* Brace cleanup stack - log push */
- LBCSSWAP = 43, /* Brace cleanup stack - log swaps */
- LFTOR = 44, /* Class Ctor or Dtor */
- LAS = 45, /* align_stack */
- LPPIS = 46, /* Preprocessor Indent and Space */
- LTYPEDEF = 47, /* Typedef and function types */
- LVARDEF = 48, /* Variable def marking */
- LDEFVAL = 49, /* define values */
- LPVSEMI = 50, /* Pawn: virtual semicolons */
- LPFUNC = 51, /* Pawn: function recognition */
- LSPLIT = 52, /* Line splitting */
- LFTYPE = 53, /* Function type detection */
- LTEMPL = 54, /* Template detection */
- LPARADD = 55, /* adding parens in if/while */
- LPARADD2 = 56, /* adding parens in if/while - details */
- LBLANKD = 57, /* blank line details */
- LTEMPFUNC = 58, /* Template function detection */
- LSCANSEMI = 59, /* scan semi colon removal */
- LDELSEMI = 60, /* Removing semicolons */
- LFPARAM = 61, /* Testing for a full parameter */
- LNL1LINE = 62, /* NL check for 1 liners */
- LPFCHK = 63, /* Parse Frame check fcn call */
- LAVDB = 64, /* align var def braces */
- LSORT = 65, /* Sorting */
- LSPACE = 66, /* Space */
- LALIGN = 67, /* align */
- LALAGAIN = 68, /* align again */
- LOPERATOR = 69, /* operator */
- LASFCP = 70, /* Align Same Function Call Params */
- LINDLINED = 71, /* indent line details */
- LBCTRL = 72, /* beautifier control */
- LRMRETURN = 73, /* remove 'return;' */
- LPPIF = 74, /* #if/#else/#endif pair processing */
- LMCB = 75, /* mod_case_brace */
- LBRCH = 76, /* if brace chain */
- LFCNR = 77, /* function return type */
- LOCCLASS = 78, /* OC Class stuff */
- LOCMSG = 79, /* OC Message stuff */
- LBLANK = 80, /* Blank Lines */
- LOBJCWORD = 81, /* Convert keyword to CT_WORD in certain circumstances */
- LCHANGE = 82, /* something changed */
- LCONTTEXT = 83, /* comment cont_text set */
- LANNOT = 84, /* Java annotation */
- LOCBLK = 85, /* OC Block stuff */
- LFLPAREN = 86, /* Flag paren */
- LOCMSGD = 87, /* OC Message declaration */
- LINDENTAG = 88, /* indent again */
- LNFD = 89, /* newline-function-def */
- LJDBI = 90, /* Java Double Brace Init */
- LSETPAR = 91, /* Chunk::SetParentTypeReal() */
- LSETTYP = 92, /* Chunk::SetTypeReal() */
- LSETFLG = 93, /* set_chunk_flags() */
- LNLFUNCT = 94, /* newlines before function */
- LCHUNK = 95, /* Add or del chunk */
- LGUY98 = 98, /* for guy-test */
- LGUY = 99, /* for guy-test */
-};
-
-// options.h
-enum argtype_e
-{
- AT_BOOL, /**< true / false */
- AT_IARF, /**< Ignore / Add / Remove / Force */
- AT_NUM, /**< Number */
- AT_LINE, /**< Line Endings */
- AT_POS, /**< start/end or Trail/Lead */
- AT_STRING, /**< string value */
- AT_UNUM, /**< unsigned Number */
-};
-
-enum argval_t
-{
- AV_IGNORE = 0,
- AV_ADD = 1,
- AV_REMOVE = 2,
- AV_FORCE = 3, /**< remove + add */
- AV_NOT_DEFINED = 4 /* to be used with QT, SIGNAL SLOT macros */
-};
-
-enum lineends_e
-{
- LE_LF, /* "\n" */
- LE_CRLF, /* "\r\n" */
- LE_CR, /* "\r" */
-
- LE_AUTO, /* keep last */
-};
-
-enum tokenpos_e
-{
- TP_IGNORE = 0, /* don't change it */
- TP_BREAK = 1, /* add a newline before or after the if not present */
- TP_FORCE = 2, /* force a newline on one side and not the other */
- TP_LEAD = 4, /* at the start of a line or leading if wrapped line */
- TP_LEAD_BREAK = (TP_LEAD | TP_BREAK),
- TP_LEAD_FORCE = (TP_LEAD | TP_FORCE),
- TP_TRAIL = 8, /* at the end of a line or trailing if wrapped line */
- TP_TRAIL_BREAK = (TP_TRAIL | TP_BREAK),
- TP_TRAIL_FORCE = (TP_TRAIL | TP_FORCE),
- TP_JOIN = 16, /* remove newlines on both sides */
-};
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34330-Issue_3061_0nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34330-Issue_3061_0nl.cpp
deleted file mode 100644
index d46f2655..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34330-Issue_3061_0nl.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-DCOPClient::DCOPClient()
-{
- TQObject::connect(
- &d->postMessageTimer, TQT_SIGNAL(
- timeout()), this,
- TQT_SLOT(
- processPostedMessagesInternal()));
- TQObject::connect(
- &d->eventLoopTimer, TQT_SIGNAL(
- timeout()), this, TQT_SLOT(
- eventLoopTimeout()));
-}
-
-#include <dcopclient.moc> \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34331-Issue_3061_1nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34331-Issue_3061_1nl.cpp
deleted file mode 100644
index d46f2655..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34331-Issue_3061_1nl.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-DCOPClient::DCOPClient()
-{
- TQObject::connect(
- &d->postMessageTimer, TQT_SIGNAL(
- timeout()), this,
- TQT_SLOT(
- processPostedMessagesInternal()));
- TQObject::connect(
- &d->eventLoopTimer, TQT_SIGNAL(
- timeout()), this, TQT_SLOT(
- eventLoopTimeout()));
-}
-
-#include <dcopclient.moc> \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34332-Issue_3061_2nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34332-Issue_3061_2nl.cpp
deleted file mode 100644
index d46f2655..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34332-Issue_3061_2nl.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-DCOPClient::DCOPClient()
-{
- TQObject::connect(
- &d->postMessageTimer, TQT_SIGNAL(
- timeout()), this,
- TQT_SLOT(
- processPostedMessagesInternal()));
- TQObject::connect(
- &d->eventLoopTimer, TQT_SIGNAL(
- timeout()), this, TQT_SLOT(
- eventLoopTimeout()));
-}
-
-#include <dcopclient.moc> \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34333-Issue_3061_0nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34333-Issue_3061_0nl.cpp
deleted file mode 100644
index ef73253e..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34333-Issue_3061_0nl.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-DCOPClient::DCOPClient()
-{
- TQObject::connect(
- &d->postMessageTimer, TQT_SIGNAL(
- timeout()), this,
- TQT_SLOT(
- processPostedMessagesInternal()));
- TQObject::connect(
- &d->eventLoopTimer, TQT_SIGNAL(
- timeout()), this, TQT_SLOT(
- eventLoopTimeout()));
-}
-
-#include <dcopclient.moc>
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34334-Issue_3061_1nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34334-Issue_3061_1nl.cpp
deleted file mode 100644
index ef73253e..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34334-Issue_3061_1nl.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-DCOPClient::DCOPClient()
-{
- TQObject::connect(
- &d->postMessageTimer, TQT_SIGNAL(
- timeout()), this,
- TQT_SLOT(
- processPostedMessagesInternal()));
- TQObject::connect(
- &d->eventLoopTimer, TQT_SIGNAL(
- timeout()), this, TQT_SLOT(
- eventLoopTimeout()));
-}
-
-#include <dcopclient.moc>
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34335-Issue_3061_2nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34335-Issue_3061_2nl.cpp
deleted file mode 100644
index ef73253e..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34335-Issue_3061_2nl.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-DCOPClient::DCOPClient()
-{
- TQObject::connect(
- &d->postMessageTimer, TQT_SIGNAL(
- timeout()), this,
- TQT_SLOT(
- processPostedMessagesInternal()));
- TQObject::connect(
- &d->eventLoopTimer, TQT_SIGNAL(
- timeout()), this, TQT_SLOT(
- eventLoopTimeout()));
-}
-
-#include <dcopclient.moc>
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34336-Issue_3061_0nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34336-Issue_3061_0nl.cpp
deleted file mode 100644
index c228ce46..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34336-Issue_3061_0nl.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-DCOPClient::DCOPClient()
-{
- TQObject::connect(
- &d->postMessageTimer, TQT_SIGNAL(
- timeout()), this,
- TQT_SLOT(
- processPostedMessagesInternal()));
- TQObject::connect(
- &d->eventLoopTimer, TQT_SIGNAL(
- timeout()), this, TQT_SLOT(
- eventLoopTimeout()));
-}
-
-#include <dcopclient.moc>
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34337-Issue_3061_1nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34337-Issue_3061_1nl.cpp
deleted file mode 100644
index c228ce46..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34337-Issue_3061_1nl.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-DCOPClient::DCOPClient()
-{
- TQObject::connect(
- &d->postMessageTimer, TQT_SIGNAL(
- timeout()), this,
- TQT_SLOT(
- processPostedMessagesInternal()));
- TQObject::connect(
- &d->eventLoopTimer, TQT_SIGNAL(
- timeout()), this, TQT_SLOT(
- eventLoopTimeout()));
-}
-
-#include <dcopclient.moc>
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34338-Issue_3061_2nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34338-Issue_3061_2nl.cpp
deleted file mode 100644
index c228ce46..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34338-Issue_3061_2nl.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-DCOPClient::DCOPClient()
-{
- TQObject::connect(
- &d->postMessageTimer, TQT_SIGNAL(
- timeout()), this,
- TQT_SLOT(
- processPostedMessagesInternal()));
- TQObject::connect(
- &d->eventLoopTimer, TQT_SIGNAL(
- timeout()), this, TQT_SLOT(
- eventLoopTimeout()));
-}
-
-#include <dcopclient.moc>
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34339-Issue_3061_0nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34339-Issue_3061_0nl.cpp
deleted file mode 100644
index 7188f0d0..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34339-Issue_3061_0nl.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-DCOPClient::DCOPClient()
-{
- TQObject::connect(
- &d->postMessageTimer, TQT_SIGNAL(
- timeout()), this,
- TQT_SLOT(
- processPostedMessagesInternal()));
- TQObject::connect(
- &d->eventLoopTimer, TQT_SIGNAL(
- timeout()), this, TQT_SLOT(
- eventLoopTimeout()));
-}
-
-#include <dcopclient.moc>
-
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34340-Issue_3061_1nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34340-Issue_3061_1nl.cpp
deleted file mode 100644
index 7188f0d0..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34340-Issue_3061_1nl.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-DCOPClient::DCOPClient()
-{
- TQObject::connect(
- &d->postMessageTimer, TQT_SIGNAL(
- timeout()), this,
- TQT_SLOT(
- processPostedMessagesInternal()));
- TQObject::connect(
- &d->eventLoopTimer, TQT_SIGNAL(
- timeout()), this, TQT_SLOT(
- eventLoopTimeout()));
-}
-
-#include <dcopclient.moc>
-
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34341-Issue_3061_2nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34341-Issue_3061_2nl.cpp
deleted file mode 100644
index 7188f0d0..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34341-Issue_3061_2nl.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-DCOPClient::DCOPClient()
-{
- TQObject::connect(
- &d->postMessageTimer, TQT_SIGNAL(
- timeout()), this,
- TQT_SLOT(
- processPostedMessagesInternal()));
- TQObject::connect(
- &d->eventLoopTimer, TQT_SIGNAL(
- timeout()), this, TQT_SLOT(
- eventLoopTimeout()));
-}
-
-#include <dcopclient.moc>
-
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34508-Issue_3220.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34508-Issue_3220.cpp
deleted file mode 100644
index aba03416..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34508-Issue_3220.cpp
+++ /dev/null
@@ -1,6 +0,0 @@
-int* b;
-auto Func2(Model* model) -> Color * * const;
-auto Func2(Model* model) -> Color * * const {
- return nullptr;
-}
-int * Funcf(Model* model, int* *);
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60055-issue_3116.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60055-issue_3116.cpp
deleted file mode 100644
index fcc38415..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60055-issue_3116.cpp
+++ /dev/null
@@ -1,233 +0,0 @@
-// Singular with various newline formats
-auto f = [] -> void {
- return;
-};
-
-auto f = [] -> void {
- return;
-}();
-
-auto f = [] -> void
-{
- return;
-}();
-
-auto f =
- [] -> void {
- return;
- };
-
-auto f =
- [] -> void
- {
- return;
- };
-
-auto f
- = [] -> void {
- int i = 0;
- return;
- };
-
-auto f
- = []
- {
- int i = 0;
- return;
- };
-
-// Nested lambda
-auto f = [] {
- auto g = [] {
- auto h = [] {
- return;
- };
- return;
- };
- return;
-};
-
-auto f = [] {
- auto g = []
- {
- auto h = [] {
- return;
- };
- return;
- };
- return;
-};
-
-auto f = []
-{
- auto g = [] {
- auto h = []
- {
- return;
- };
- return;
- };
- return;
-};
-
-// Nested lambda within functions
-Func(
- [] {
- return;
- },
- [] {
- return;
- }
-);
-
-Func([] {
- return;
- },
- [] {
- return;
- }
-);
-
-Func([] {
- return;
- },
- [] {
- return;
- }
-)();
-
-Func([] {
- return;
- },
- [] {
- return;
- })();
-
-Func([] {
- return;
- },
- [] {
- return;
- });
-
-A(
- B([] (const std::string &s) -> bool {
- s = "hello";
- return true;
- }), 1
-);
-
-A(
- B(
- [] (const std::string &s) -> bool {
- s = "hello";
- return true;
- }
- ), 1
-);
-
-// Inside scope
-{
- std::thread([](const char *c) {
- std::cout << c << std::endl;
- }).detach();
-
- std::thread(
- [](const char *c) {
- std::cout << c << std::endl;
- }
- ).detach();
-
- auto f = [&](int a) {
- return b;
- };
-
- auto f = [&](int a)
- {
- return b;
- };
-}
-
-Func(std::count_if(v.begin(), v.end(), [&](const auto &a) {
- return a == 3;
- }));
-
-Func(
- std::count_if(v.begin(), v.end(), [&](const auto &a)
- {
- return a == 3;
- }));
-
-Func(
- std::count_if(v.begin(), v.end(), [&](const auto &a) {
- return a == 3;
- }));
-
-Func(
- std::count_if(v.begin(), v.end(), [&](const auto &a) {
- return a == 3;
- })
-);
-
-// Test case from issue #3116
-const auto compare = [] (const auto i, const auto j)
-{
- return i >= j;
-};
-
-std::sort(
- vector.begin(),
- vector.end(),
- [] (const auto i, const auto j)
- {
- return i >= j;
- }
-);
-
-// Test case from issue #3116
-if(isWidgetOfCurrentRow)
-{
- it = std::find_if(
- reloaded.begin(),
- reloaded.end(),
- [&rowGuid](const auto& device)
- {
- return (device.thingGUID == rowGuid && !device.isWidget);
- }
- );
-}
-else
-{
- it = std::find_if(
- reloaded.begin(),
- reloaded.end(),
- [&rowGuid](const auto& device)
- {
- return device.thingGUID == rowGuid;
- }
- );
-}
-
-// Test case from issue 1296 and some variants
-obj->Func([&](int a)
- {
- return b;
- });
-
-obj->Func([] -> int
- {
- return b;
- });
-
-obj->Func([]
- {
- return b;
- }
-);
-
-obj->Func(
- Func([]
- {
- return b;
- })
-);
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60057-issue_3116.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60057-issue_3116.cpp
deleted file mode 100644
index 991c46bd..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60057-issue_3116.cpp
+++ /dev/null
@@ -1,233 +0,0 @@
-// Singular with various newline formats
-auto f = [] -> void {
- return;
- };
-
-auto f = [] -> void {
- return;
- }();
-
-auto f = [] -> void
- {
- return;
- }();
-
-auto f =
- [] -> void {
- return;
- };
-
-auto f =
- [] -> void
- {
- return;
- };
-
-auto f
- = [] -> void {
- int i = 0;
- return;
- };
-
-auto f
- = []
- {
- int i = 0;
- return;
- };
-
-// Nested lambda
-auto f = [] {
- auto g = [] {
- auto h = [] {
- return;
- };
- return;
- };
- return;
- };
-
-auto f = [] {
- auto g = []
- {
- auto h = [] {
- return;
- };
- return;
- };
- return;
- };
-
-auto f = []
- {
- auto g = [] {
- auto h = []
- {
- return;
- };
- return;
- };
- return;
- };
-
-// Nested lambda within functions
-Func(
- [] {
- return;
- },
- [] {
- return;
- }
-);
-
-Func([] {
- return;
- },
- [] {
- return;
- }
-);
-
-Func([] {
- return;
- },
- [] {
- return;
- }
-)();
-
-Func([] {
- return;
- },
- [] {
- return;
- })();
-
-Func([] {
- return;
- },
- [] {
- return;
- });
-
-A(
- B([] (const std::string &s) -> bool {
- s = "hello";
- return true;
- }), 1
-);
-
-A(
- B(
- [] (const std::string &s) -> bool {
- s = "hello";
- return true;
- }
- ), 1
-);
-
-// Inside scope
-{
- std::thread([](const char *c) {
- std::cout << c << std::endl;
- }).detach();
-
- std::thread(
- [](const char *c) {
- std::cout << c << std::endl;
- }
- ).detach();
-
- auto f = [&](int a) {
- return b;
- };
-
- auto f = [&](int a)
- {
- return b;
- };
-}
-
-Func(std::count_if(v.begin(), v.end(), [&](const auto &a) {
- return a == 3;
- }));
-
-Func(
- std::count_if(v.begin(), v.end(), [&](const auto &a)
- {
- return a == 3;
- }));
-
-Func(
- std::count_if(v.begin(), v.end(), [&](const auto &a) {
- return a == 3;
- }));
-
-Func(
- std::count_if(v.begin(), v.end(), [&](const auto &a) {
- return a == 3;
- })
-);
-
-// Test case from issue #3116
-const auto compare = [] (const auto i, const auto j)
- {
- return i >= j;
- };
-
-std::sort(
- vector.begin(),
- vector.end(),
- [] (const auto i, const auto j)
- {
- return i >= j;
- }
-);
-
-// Test case from issue #3116
-if(isWidgetOfCurrentRow)
-{
- it = std::find_if(
- reloaded.begin(),
- reloaded.end(),
- [&rowGuid](const auto& device)
- {
- return (device.thingGUID == rowGuid && !device.isWidget);
- }
- );
-}
-else
-{
- it = std::find_if(
- reloaded.begin(),
- reloaded.end(),
- [&rowGuid](const auto& device)
- {
- return device.thingGUID == rowGuid;
- }
- );
-}
-
-// Test case from issue 1296 and some variants
-obj->Func([&](int a)
- {
- return b;
- });
-
-obj->Func([] -> int
- {
- return b;
- });
-
-obj->Func([]
- {
- return b;
- }
-);
-
-obj->Func(
- Func([]
- {
- return b;
- })
-);
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10022-indent-objc-block.m b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10022-indent-objc-block.m
deleted file mode 100644
index 4aab0fc0..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10022-indent-objc-block.m
+++ /dev/null
@@ -1,149 +0,0 @@
-const auto c =
- [FDSTapTargetComponent
- accessibilityContext:{
- .accessibilityLabel = ^{
- return [AccessibilityLabelBuilder build];
- }
- }];
-
-methodCall1(^{
- send(component1);
-},
- x);
-
-methodCall2( ^ {
- send(component2);
-});
-
-[array block:^ (id obj, NSUInteger idx, BOOL *stop) {
- NSLog(@"Object at index %lu is %@", idx, obj);
- }];
-
-
-[UIView animateWithDuration:3.0f animation:^{
- LOG(@"animate");
- }
- completion:^(BOOL finished){
- LOG(@"finished");
- }];
-
-[UIView
- animationBlock: ^ {
- [[Log alloc] callback:^NSString *(NSString *result){
- return @"log";
- }];
- }
- completion:^(BOOL finished){
- LOG(@"finished");
- }];
-
-
-methodCall3(x, ^KSC::ActionCell::Item (Item item) {
- variant.action.send(component);
-});
-
-methodCall4( x, ^ id (Component *c) {
- NSLog(@"methodCall4");
-});
-
-methodCall5( ^ id (Component *c) {
- NSLog(@"methodCall5");
-});
-
-methodCall6( ^(NSString *)(Component *c) {
- return @"methodCall6";
-});
-
-methodCall7(^ (Component *c) {
- NSLog(@"methodCall7");
-}, y);
-
-methodCall8(x, ^(Component *c) {
- NSLog(@"methodCall8");
-}, y);
-
-
-[Object callMethod:xArg
- block:^id (Component *c) {
- NSLog(@"methodCall4");
- }];
-
-[Object callMethod:xArg
- block:^id (Component *c) {
- NSLog(@"methodCall5");
- }];
-
-[Object callMethod:xArg block:^(NSString *)(Component *c) {
- return @"methodCall6";
- }];
-
-
-[Object callMethod:xArg
- block:^ (Component *c) {
- NSLog(@"methodCall7");
- }
- yMethod:yArg];
-
-[Object callMethod:xArg
- block:^(Component *c) {
- NSLog(@"methodCall8");
- }
- yMethod:yArg];
-
-[Object callMethod:xArg
- block:^(NSString *)(Component *c1) {
- [Object callMethod:xArg block:^(Component *c) {
- NSLog(@"methodCal9");
- }
- yMethod:yArg];
- }
- anotherBlock:^(NSString *)(Component *c2) {
- return @"methodCall10";
- }
- yetAnotherBlock:^(NSString *)(Component *c3) {
- return @"methodCall11";
- }];
-
-[dialog
- dismissWithCompletion:^{
- _deleteConversation(
- strongSelf->_session,
- ^{
- if (auto const innerStrongSelf = weakSelf) {
- [NavigationCoordinator(innerStrongSelf)
- dismissViewController:innerStrongSelf
- completion:nil];
- }
- });
- }];
-
-
-[FlexboxComponent
- newWithView:{
- {
- .accessibilityLabel = ^{
- return
- [[[[AccessibilityLabelBuilder builder]
- appendPhrase:title]
- appendPhrase:body]
- getResult];
- },
- }
- }];
-
-
-MainComponent(
- .builder = ^{
- return
- value;
-},
- param1,
- param2,
- );
-
-KSC::map(
- _items,
- ^ ActionCell::Item (Item item) {
- return x;
-}
- );
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_multiline_define.c
deleted file mode 100644
index 3ac9db6b..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_multiline_define.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#define gettext(Msgid) \
- QWERTY0 Msgid;
-#ifdef TEST
-#define gettext1(Msgid) \
- if (true) \
- {\
- QWERTY1 Msgid; \
-}\
-while(true) \
-{ \
- g = g + 1; \
-}
- int i = 3;
-
-#define x \
- (\
- x\
- )\
- {\
- QWERTY2 Msgid; \
-}
-void f()
-{
-int i=2;
-}
-#endif
-
-#pragma multi \
- line \
- pragma
-
- #define setint(x) x = x + 1
-#define K 2
- #define gettext2(Msgid) \
- if (true) \
- { \
- QWERTY1 Msgid; \
-do \
-{ \
-g = g + 1; \
-} \
-while(true); \
-}
-
-#warning multi \
- line \
- warning
-
-#ifdef TEST1
- #ifdef TEST2
-#ifdef TEST3
- #ifdef TEST4
-#define gettext1(Msgid) \
- if (true) \
- {\
- QWERTY1 Msgid; \
- do \
- { \
- if (false){ \
-g = g + 1; \
- }\
- } \
-while(true); \
-}
-#endif
- #endif
- #endif
- #endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum.cpp
deleted file mode 100644
index 88b229a0..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum.cpp
+++ /dev/null
@@ -1,207 +0,0 @@
- enum
- class
- angle_state_e
- :
- unsigned
-int {
- NONE=0, OPEN=1, //'<' found
-CLOSE = 2 , //'>' found
-};
-
-// align.cpp
-enum class comment_align_e : unsigned int
-{
- REGULAR,
- BRACE,
- ENDIF,
-};
-
-// chunk.h
-enum class E_Scope : unsigned int
-{
- ALL, /**< search in all kind of chunks */
- PREPROC, /**< search only in preprocessor chunks */
-};
-
-// chunk.cpp
-enum class E_Direction : unsigned int
-{
- FORWARD,
- BACKWARD
-};
-
-// combine.cpp
-{
- enum class angle_state_e : unsigned int
- {
- NONE = 0,
- OPEN = 1, // '<' found
- CLOSE = 2, // '>' found
- };
-}
-
-// indent.cpp
-enum class align_mode_e : unsigned int
-{
- SHIFT, /* shift relative to the current column */
- KEEP_ABS, /* try to keep the original absolute column */
- KEEP_REL, /* try to keep the original gap */
-};
-
-// align_stack.h
-{
- enum StarStyle
- {
- SS_IGNORE, // don't look for prev stars
- SS_INCLUDE, // include prev * before add
- SS_DANGLE // include prev * after add
- };
-}
-
-// log_levels.h
-enum log_sev_t
-{
- LSYS = 0,
- LERR = 1,
- LWARN = 2,
- LNOTE = 3,
- LINFO = 4,
- LDATA = 5,
-
- LFILELIST = 8, /* Files in the file list file */
- LLINEENDS = 9, /* Show which line endings are used */
- LCASTS = 10, /* align casts */
- LALBR = 11, /* align braces */
- LALTD = 12, /* Align Typedef */
- LALPP = 13, /* align #define */
- LALPROTO = 14, /* align prototype */
- LALNLC = 15, /* align backslash-newline */
- LALTC = 16, /* align trailing comments */
- LALADD = 17, /* align add */
- LALASS = 18, /* align assign */
- LFVD = 19, /* fix_var_def */
- LFVD2 = 20, /* fix_var_def-2 */
- LINDENT = 21, /* indent_text */
- LINDENT2 = 22, /* indent_text tab level */
- LINDPSE = 23, /* indent_text stack */
- LINDPC = 24, /* indent play-by-play */
- LNEWLINE = 25, /* newlines */
- LPF = 26, /* Parse Frame */
- LSTMT = 27, /* Marking statements/expressions */
- LTOK = 28, /* Tokenize */
- LALRC = 29, /* align right comment */
- LCMTIND = 30, /* Comment Indent */
- LINDLINE = 31, /* indent line */
- LSIB = 32, /* Scan IB */
- LRETURN = 33, /* add/remove parens for return */
- LBRDEL = 34, /* brace removal */
- LFCN = 35, /* function detection */
- LFCNP = 36, /* function parameters */
- LPCU = 37, /* parse cleanup */
- LDYNKW = 38, /* dynamic keywords */
- LOUTIND = 39, /* output indent */
- LBCSAFTER = 40, /* Brace cleanup stack - after each token */
- LBCSPOP = 41, /* Brace cleanup stack - log pops */
- LBCSPUSH = 42, /* Brace cleanup stack - log push */
- LBCSSWAP = 43, /* Brace cleanup stack - log swaps */
- LFTOR = 44, /* Class Ctor or Dtor */
- LAS = 45, /* align_stack */
- LPPIS = 46, /* Preprocessor Indent and Space */
- LTYPEDEF = 47, /* Typedef and function types */
- LVARDEF = 48, /* Variable def marking */
- LDEFVAL = 49, /* define values */
- LPVSEMI = 50, /* Pawn: virtual semicolons */
- LPFUNC = 51, /* Pawn: function recognition */
- LSPLIT = 52, /* Line splitting */
- LFTYPE = 53, /* Function type detection */
- LTEMPL = 54, /* Template detection */
- LPARADD = 55, /* adding parens in if/while */
- LPARADD2 = 56, /* adding parens in if/while - details */
- LBLANKD = 57, /* blank line details */
- LTEMPFUNC = 58, /* Template function detection */
- LSCANSEMI = 59, /* scan semi colon removal */
- LDELSEMI = 60, /* Removing semicolons */
- LFPARAM = 61, /* Testing for a full parameter */
- LNL1LINE = 62, /* NL check for 1 liners */
- LPFCHK = 63, /* Parse Frame check fcn call */
- LAVDB = 64, /* align var def braces */
- LSORT = 65, /* Sorting */
- LSPACE = 66, /* Space */
- LALIGN = 67, /* align */
- LALAGAIN = 68, /* align again */
- LOPERATOR = 69, /* operator */
- LASFCP = 70, /* Align Same Function Call Params */
- LINDLINED = 71, /* indent line details */
- LBCTRL = 72, /* beautifier control */
- LRMRETURN = 73, /* remove 'return;' */
- LPPIF = 74, /* #if/#else/#endif pair processing */
- LMCB = 75, /* mod_case_brace */
- LBRCH = 76, /* if brace chain */
- LFCNR = 77, /* function return type */
- LOCCLASS = 78, /* OC Class stuff */
- LOCMSG = 79, /* OC Message stuff */
- LBLANK = 80, /* Blank Lines */
- LOBJCWORD = 81, /* Convert keyword to CT_WORD in certain circumstances */
- LCHANGE = 82, /* something changed */
- LCONTTEXT = 83, /* comment cont_text set */
- LANNOT = 84, /* Java annotation */
- LOCBLK = 85, /* OC Block stuff */
- LFLPAREN = 86, /* Flag paren */
- LOCMSGD = 87, /* OC Message declaration */
- LINDENTAG = 88, /* indent again */
- LNFD = 89, /* newline-function-def */
- LJDBI = 90, /* Java Double Brace Init */
- LSETPAR = 91, /* Chunk::SetParentTypeReal() */
- LSETTYP = 92, /* Chunk::SetTypeReal() */
- LSETFLG = 93, /* set_chunk_flags() */
- LNLFUNCT = 94, /* newlines before function */
- LCHUNK = 95, /* Add or del chunk */
- LGUY98 = 98, /* for guy-test */
- LGUY = 99, /* for guy-test */
-};
-
-// options.h
-enum argtype_e
-{
- AT_BOOL, /**< true / false */
- AT_IARF, /**< Ignore / Add / Remove / Force */
- AT_NUM, /**< Number */
- AT_LINE, /**< Line Endings */
- AT_POS, /**< start/end or Trail/Lead */
- AT_STRING, /**< string value */
- AT_UNUM, /**< unsigned Number */
-};
-
-enum argval_t
-{
- AV_IGNORE = 0,
- AV_ADD = 1,
- AV_REMOVE = 2,
- AV_FORCE = 3, /**< remove + add */
- AV_NOT_DEFINED = 4 /* to be used with QT, SIGNAL SLOT macros */
-};
-
-enum lineends_e
-{
- LE_LF, /* "\n" */
- LE_CRLF, /* "\r\n" */
- LE_CR, /* "\r" */
-
- LE_AUTO, /* keep last */
-};
-
-enum tokenpos_e
-{
- TP_IGNORE = 0, /* don't change it */
- TP_BREAK = 1, /* add a newline before or after the if not present */
- TP_FORCE = 2, /* force a newline on one side and not the other */
- TP_LEAD = 4, /* at the start of a line or leading if wrapped line */
- TP_LEAD_BREAK = (TP_LEAD | TP_BREAK),
- TP_LEAD_FORCE = (TP_LEAD | TP_FORCE),
- TP_TRAIL = 8, /* at the end of a line or trailing if wrapped line */
- TP_TRAIL_BREAK = (TP_TRAIL | TP_BREAK),
- TP_TRAIL_FORCE = (TP_TRAIL | TP_FORCE),
- TP_JOIN = 16, /* remove newlines on both sides */
-};
-
-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent-c.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent-c.cpp
deleted file mode 100644
index 5b4ace27..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent-c.cpp
+++ /dev/null
@@ -1,1084 +0,0 @@
-/**
- * @file indent.cpp
- * Does all the indenting stuff.
- *
- * $Id: indent.cpp 548 2006-10-21 02:31:55Z bengardner $
- */
-#include "uncrustify_types.h"
-#include "chunk.h"
-#include "prototypes.h"
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-#include <cerrno>
-#include <cctype>
-
-
-/**
- * General indenting approach:
- * Indenting levels are put into a stack.
- *
- * The stack entries contain:
- * - opening type
- * - brace column
- * - continuation column
- *
- * Items that start a new stack item:
- * - preprocessor (new parse frame)
- * - Brace Open (Virtual brace also)
- * - Paren, Square, Angle open
- * - Assignments
- * - C++ '<<' operator (ie, cout << "blah")
- * - case
- * - class colon
- * - return
- * - types
- * - any other continued statement
- *
- * Note that the column of items marked 'PCF_WAS_ALIGNED' is not changed.
- *
- * For an open brace:
- * - indent increases by indent_columns
- * - if part of if/else/do/while/switch/etc, an extra indent may be applied
- * - if in a paren, then cont-col is set to column + 1, ie "({ some code })"
- *
- * Open paren/square/angle:
- * cont-col is set to the column of the item after the open paren, unless
- * followed by a newline, then it is set to (brace-col + indent_columns).
- * Examples:
- * a_really_long_funcion_name(
- * param1, param2);
- * a_really_long_funcion_name(param1,
- * param2);
- *
- * Assignments:
- * Assignments are continued aligned with the first item after the assignment,
- * unless the assign is followed by a newline.
- * Examples:
- * some.variable = asdf + asdf +
- * asdf;
- * some.variable =
- * asdf + asdf + asdf;
- *
- * C++ << operator:
- * Handled the same as assignment.
- * Examples:
- * cout << "this is test number: "
- * << test_number;
- *
- * case:
- * Started with case or default.
- * Terminated with close brace at level or another case or default.
- * Special indenting according to various rules.
- * - indent of case label
- * - indent of case body
- * - how to handle optional braces
- * Examples:
- * {
- * case x: {
- * a++;
- * break;
- * }
- * case y:
- * b--;
- * break;
- * default:
- * c++;
- * break;
- * }
- *
- * Class colon:
- * Indent continuation by indent_columns:
- * class my_class :
- * baseclass1,
- * baseclass2
- * {
- *
- * Return: same as assignemts
- * If the return statement is not fully paren'd, then the indent continues at
- * the column of the item after the return. If it is paren'd, then the paren
- * rules apply.
- * return somevalue +
- * othervalue;
- *
- * Type: pretty much the same as assignments
- * Examples:
- * int foo,
- * bar,
- * baz;
- *
- * Any other continued item:
- * There shouldn't be anything not covered by the above cases, but any other
- * continued item is indented by indent_columns:
- * Example:
- * somereallycrazylongname.with[lotsoflongstuff].
- * thatreallyannoysme.whenIhavetomaintain[thecode] = 3;
- */
-
-static void indent_comment(Chunk *pc, int col);
-
-
-void indent_to_column(Chunk *pc, int column)
-{
- if (column < pc->GetColumn())
- {
- column = pc->GetColumn();
- }
- reindent_line(pc, column);
-}
-
-/**
- * Changes the initial indent for a line to the given column
- *
- * @param pc The chunk at the start of the line
- * @param column The desired column
- */
-void reindent_line(Chunk *pc, int column)
-{
- int col_delta;
- int min_col;
-
- LOG_FMT(LINDLINE, "%s: %d] col %d on %.*s [%s] => %d\n",
- __func__, pc->GetOrigLine(), pc->GetColumn(), pc->len, pc->GetStr(),
- get_token_name(pc->GetType()), column);
-
- if (column == pc->GetColumn())
- {
- return;
- }
- col_delta = column - pc->GetColumn();
- pc->SetColumn(column);
- min_col = pc->GetColumn();
-
- do
- {
- min_col += pc->len;
- pc = pc->GetNext();
- if (pc != NULL)
- {
- if (pc->IsComment())
- {
- pc->SetColumn(pc->GetOrigCol());
- if (pc->GetColumn() < min_col)
- {
- pc->SetColumn(min_col + 1);
- }
- LOG_FMT(LINDLINE, "%s: set comment on line %d to col %d (orig %d)\n",
- __func__, pc->GetOrigLine(), pc->GetColumn(), pc->GetOrigCol());
- }
- else
- {
- pc->SetColumn(pc->GetColumn() + col_delta);
- if (pc->GetColumn() < min_col)
- {
- pc->SetColumn(min_col);
- }
- }
- }
- } while ((pc != NULL) && (pc->GetNlCount() == 0));
-}
-
-
-/**
- * Starts a new entry
- *
- * @param frm The parse frame
- * @param pc The chunk causing the push
- */
-static void indent_pse_push(struct parse_frame& frm, Chunk *pc)
-{
- static int ref = 0;
-
- /* check the stack depth */
- if (frm.pse_tos < (int)ARRAY_SIZE(frm.pse))
- {
- /* Bump up the index and initialize it */
- frm.pse_tos++;
- memset(&frm.pse[frm.pse_tos], 0, sizeof(frm.pse[frm.pse_tos]));
-
- LOG_FMT(LINDPSE, "%4d] OPEN [%d,%s] level=%d\n",
- pc->GetOrigLine(), frm.pse_tos, get_token_name(pc->GetType()), pc->GetLevel());
-
- frm.pse[frm.pse_tos].type = pc->GetType();
- frm.pse[frm.pse_tos].level = pc->GetLevel();
- frm.pse[frm.pse_tos].open_line = pc->GetOrigLine();
- frm.pse[frm.pse_tos].ref = ++ref;
- frm.pse[frm.pse_tos].in_preproc = (pc->GetFlags() & PCF_IN_PREPROC) != 0;
- }
-}
-
-
-/**
- * Removes the top entry
- *
- * @param frm The parse frame
- * @param pc The chunk causing the push
- */
-static void indent_pse_pop(struct parse_frame& frm, Chunk *pc)
-{
- /* Bump up the index and initialize it */
- if (frm.pse_tos > 0)
- {
- if (pc != NULL)
- {
- LOG_FMT(LINDPSE, "%4d] CLOSE [%d,%s] on %s, started on line %d, level=%d/%d\n",
- pc->GetOrigLine(), frm.pse_tos,
- get_token_name(frm.pse[frm.pse_tos].type),
- get_token_name(pc->GetType()),
- frm.pse[frm.pse_tos].open_line,
- frm.pse[frm.pse_tos].level,
- pc->GetLevel());
- }
- else
- {
- LOG_FMT(LINDPSE, " EOF] CLOSE [%d,%s], started on line %d\n",
- frm.pse_tos, get_token_name(frm.pse[frm.pse_tos].type),
- frm.pse[frm.pse_tos].open_line);
- }
- frm.pse_tos--;
- }
-}
-
-
-static int token_indent(E_Token type)
-{
- switch (type)
- {
- case CT_IF:
- case CT_DO:
- return(3);
-
- case CT_FOR:
- case CT_ELSE: // wacky, but that's what is wanted
- return(4);
-
- case CT_WHILE:
- return(6);
-
- case CT_SWITCH:
- return(7);
-
- case CT_ELSEIF:
- return(8);
-
- default:
- return(0); //cpd.settings[UO_indent_braces].n;
- }
-}
-
-
-/**
- * Change the top-level indentation only by changing the column member in
- * the chunk structures.
- * The level indicator must already be set.
- */
-void indent_text(void)
-{
- Chunk *pc;
- Chunk *next;
- Chunk *prev = NULL;
- bool did_newline = true;
- int idx;
- int vardefcol = 0;
- int indent_size = cpd.settings[UO_indent_columns].n;
- int tmp;
- struct parse_frame frm;
- bool in_preproc = false, was_preproc = false;
- int indent_column;
- int cout_col = 0; // for aligning << stuff
- int cout_level = 0; // for aligning << stuff
- int parent_token_indent = 0;
-
- memset(&frm, 0, sizeof(frm));
-
- /* dummy top-level entry */
- frm.pse[0].indent = 1;
- frm.pse[0].indent_tmp = 1;
- frm.pse[0].type = CT_EOF;
-
- pc = Chunk::GetHead();
- while (pc != NULL)
- {
- /* Handle proprocessor transitions */
- was_preproc = in_preproc;
- in_preproc = (pc->GetFlags() & PCF_IN_PREPROC) != 0;
-
- if (cpd.settings[UO_indent_brace_parent].b)
- {
- parent_token_indent = token_indent(pc->GetParentType());
- }
-
- /* Clean up after a #define */
- if (!in_preproc)
- {
- while ((frm.pse_tos > 0) && frm.pse[frm.pse_tos].in_preproc)
- {
- indent_pse_pop(frm, pc);
- }
- }
- else
- {
- pf_check(&frm, pc);
-
- if (!was_preproc)
- {
- /* Transition into a preproc by creating a dummy indent */
- frm.level++;
- indent_pse_push(frm, pc);
-
- frm.pse[frm.pse_tos].indent = 1 + indent_size;
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos].indent;
- }
- }
-
- if ((cout_col > 0) &&
- (pc->IsSemicolon() ||
- (pc->GetLevel() < cout_level)))
- {
- cout_col = 0;
- cout_level = 0;
- }
-
- /**
- * Handle non-brace closures
- */
-
- int old_pse_tos;
- do
- {
- old_pse_tos = frm.pse_tos;
-
- /* End anything that drops a level
- * REVISIT: not sure about the preproc check
- */
- if (!pc->IsNewline() &&
- !pc->IsComment() &&
- ((pc->GetFlags() & PCF_IN_PREPROC) == 0) &&
- (frm.pse[frm.pse_tos].level > pc->GetLevel()))
- {
- indent_pse_pop(frm, pc);
- }
-
- if (frm.pse[frm.pse_tos].level == pc->GetLevel())
- {
- /* process virtual braces closes (no text output) */
- if ((pc->GetType() == CT_VBRACE_CLOSE) &&
- (frm.pse[frm.pse_tos].type == CT_VBRACE_OPEN))
- {
- indent_pse_pop(frm, pc);
- frm.level--;
- pc = pc->GetNext();
- }
-
- /* End any assign operations with a semicolon on the same level */
- if ((frm.pse[frm.pse_tos].type == CT_ASSIGN) &&
- (pc->IsSemicolon() ||
- (pc->GetType() == CT_COMMA) ||
- (pc->GetType() == CT_BRACE_OPEN)))
- {
- indent_pse_pop(frm, pc);
- }
-
- /* End any CPP class colon crap */
- if ((frm.pse[frm.pse_tos].type == CT_CLASS_COLON) &&
- ((pc->GetType() == CT_BRACE_OPEN) ||
- pc->IsSemicolon()))
- {
- indent_pse_pop(frm, pc);
- }
-
- /* a case is ended with another case or a close brace */
- if ((frm.pse[frm.pse_tos].type == CT_CASE) &&
- ((pc->GetType() == CT_BRACE_CLOSE) ||
- (pc->GetType() == CT_CASE)))
- {
- indent_pse_pop(frm, pc);
- }
-
- /* a return is ended with a semicolon */
- if ((frm.pse[frm.pse_tos].type == CT_RETURN) &&
- pc->IsSemicolon())
- {
- indent_pse_pop(frm, pc);
- }
-
- /* Close out parens and squares */
- if ((frm.pse[frm.pse_tos].type == (pc->GetType() - 1)) &&
- ((pc->GetType() == CT_PAREN_CLOSE) ||
- (pc->GetType() == CT_SPAREN_CLOSE) ||
- (pc->GetType() == CT_FPAREN_CLOSE) ||
- (pc->GetType() == CT_SQUARE_CLOSE) ||
- (pc->GetType() == CT_ANGLE_CLOSE)))
- {
- indent_pse_pop(frm, pc);
- frm.paren_count--;
- }
- }
- } while (old_pse_tos > frm.pse_tos);
-
- /* Grab a copy of the current indent */
- indent_column = frm.pse[frm.pse_tos].indent_tmp;
-
- if (!pc->IsNewline() && !pc->IsComment())
- {
- LOG_FMT(LINDPC, " -=[ %.*s ]=- top=%d %s %d/%d\n",
- pc->len, pc->GetStr(),
- frm.pse_tos,
- get_token_name(frm.pse[frm.pse_tos].type),
- frm.pse[frm.pse_tos].indent_tmp,
- frm.pse[frm.pse_tos].indent);
- }
-
- /**
- * Handle stuff that can affect the current indent:
- * - brace close
- * - vbrace open
- * - brace open
- * - case (immediate)
- * - labels (immediate)
- * - class colons (immediate)
- *
- * And some stuff that can't
- * - open paren
- * - open square
- * - assignment
- * - return
- */
-
- if (pc->GetType() == CT_BRACE_CLOSE)
- {
- if (frm.pse[frm.pse_tos].type == CT_BRACE_OPEN)
- {
- indent_pse_pop(frm, pc);
- frm.level--;
-
- /* Update the indent_column if needed */
- if (!cpd.settings[UO_indent_braces].b &&
- (parent_token_indent == 0))
- {
- indent_column = frm.pse[frm.pse_tos].indent_tmp;
- }
-
- if ((pc->GetParentType() == CT_IF) ||
- (pc->GetParentType() == CT_ELSE) ||
- (pc->GetParentType() == CT_ELSEIF) ||
- (pc->GetParentType() == CT_DO) ||
- (pc->GetParentType() == CT_WHILE) ||
- (pc->GetParentType() == CT_SWITCH) ||
- (pc->GetParentType() == CT_FOR))
- {
- indent_column += cpd.settings[UO_indent_brace].n;
- }
- }
- }
- else if (pc->GetType() == CT_VBRACE_OPEN)
- {
- frm.level++;
- indent_pse_push(frm, pc);
-
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - 1].indent + indent_size;
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos].indent;
-
- /* Always indent on virtual braces */
- indent_column = frm.pse[frm.pse_tos].indent_tmp;
- }
- else if (pc->GetType() == CT_BRACE_OPEN)
- {
- frm.level++;
- indent_pse_push(frm, pc);
-
- if (frm.paren_count != 0)
- {
- /* We are inside ({ ... }) -- indent one tab from the paren */
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - 1].indent_tmp + indent_size;
- }
- else
- {
- /* Use the prev indent level + indent_size. */
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - 1].indent + indent_size;
-
- /* If this brace is part of a statement, bump it out by indent_brace */
- if ((pc->GetParentType() == CT_IF) ||
- (pc->GetParentType() == CT_ELSE) ||
- (pc->GetParentType() == CT_ELSEIF) ||
- (pc->GetParentType() == CT_DO) ||
- (pc->GetParentType() == CT_WHILE) ||
- (pc->GetParentType() == CT_SWITCH) ||
- (pc->GetParentType() == CT_FOR))
- {
- if (parent_token_indent != 0)
- {
- frm.pse[frm.pse_tos].indent += parent_token_indent - indent_size;
- }
- else
- {
- frm.pse[frm.pse_tos].indent += cpd.settings[UO_indent_brace].n;
- indent_column += cpd.settings[UO_indent_brace].n;
- }
- }
- else if (pc->GetParentType() == CT_CASE)
- {
- /* The indent_case_brace setting affects the parent CT_CASE */
- frm.pse[frm.pse_tos].indent_tmp += cpd.settings[UO_indent_case_brace].n;
- frm.pse[frm.pse_tos].indent += cpd.settings[UO_indent_case_brace].n;
- }
- else if ((pc->GetParentType() == CT_CLASS) && !cpd.settings[UO_indent_class].b)
- {
- frm.pse[frm.pse_tos].indent -= indent_size;
- }
- else if ((pc->GetParentType() == CT_NAMESPACE) && !cpd.settings[UO_indent_namespace].b)
- {
- frm.pse[frm.pse_tos].indent -= indent_size;
- }
- }
-
- if ((pc->GetFlags() & PCF_DONT_INDENT) != 0)
- {
- frm.pse[frm.pse_tos].indent = pc->GetColumn();
- indent_column = pc->GetColumn();
- }
- else
- {
- /**
- * If there isn't a newline between the open brace and the next
- * item, just indent to wherever the next token is.
- * This covers this sort of stuff:
- * { a++;
- * b--; };
- */
- next = pc->GetNextNcNnl();
- if (!pc->IsNewlineBetween(next))
- {
- frm.pse[frm.pse_tos].indent = next->GetColumn();
- }
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos].indent;
- frm.pse[frm.pse_tos].open_line = pc->GetOrigLine();
-
- /* Update the indent_column if needed */
- if (cpd.settings[UO_indent_braces].n ||
- (parent_token_indent != 0))
- {
- indent_column = frm.pse[frm.pse_tos].indent_tmp;
- }
- }
- }
- else if (pc->GetType() == CT_CASE)
- {
- /* Start a case - indent UO_indent_switch_case from the switch level */
- tmp = frm.pse[frm.pse_tos].indent + cpd.settings[UO_indent_switch_case].n;
-
- indent_pse_push(frm, pc);
-
- frm.pse[frm.pse_tos].indent = tmp;
- frm.pse[frm.pse_tos].indent_tmp = tmp - indent_size;
-
- /* Always set on case statements */
- indent_column = frm.pse[frm.pse_tos].indent_tmp;
- }
- else if (pc->GetType() == CT_LABEL)
- {
- /* Labels get sent to the left or backed up */
- if (cpd.settings[UO_indent_label].n > 0)
- {
- indent_column = cpd.settings[UO_indent_label].n;
- }
- else
- {
- indent_column = frm.pse[frm.pse_tos].indent +
- cpd.settings[UO_indent_label].n;
- }
- }
- else if (pc->GetType() == CT_CLASS_COLON)
- {
- /* just indent one level */
- indent_pse_push(frm, pc);
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - 1].indent_tmp + indent_size;
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos].indent;
-
- indent_column = frm.pse[frm.pse_tos].indent_tmp;
-
- if (cpd.settings[UO_indent_class_colon].b)
- {
- prev = pc->GetPrev();
- if (prev->IsNewline())
- {
- frm.pse[frm.pse_tos].indent += 2;
- /* don't change indent of current line */
- }
- }
- }
- else if ((pc->GetType() == CT_PAREN_OPEN) ||
- (pc->GetType() == CT_SPAREN_OPEN) ||
- (pc->GetType() == CT_FPAREN_OPEN) ||
- (pc->GetType() == CT_SQUARE_OPEN) ||
- (pc->GetType() == CT_ANGLE_OPEN))
- {
- /* Open parens and squares - never update indent_column */
- indent_pse_push(frm, pc);
- frm.pse[frm.pse_tos].indent = pc->GetColumn() + pc->len;
-
- if (cpd.settings[UO_indent_func_call_param].b &&
- (pc->GetType() == CT_FPAREN_OPEN) &&
- (pc->GetParentType() == CT_FUNC_CALL))
- {
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - 1].indent + indent_size;
- }
-
- if ((chunk_is_str(pc, "(", 1) && !cpd.settings[UO_indent_paren_nl].b) ||
- (chunk_is_str(pc, "[", 1) && !cpd.settings[UO_indent_square_nl].b))
- {
- next = pc->GetNextNc();
- if (next->IsNewline())
- {
- int sub = 1;
- if (frm.pse[frm.pse_tos - 1].type == CT_ASSIGN)
- {
- sub = 2;
- }
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - sub].indent + indent_size;
- }
- }
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos].indent;
- frm.paren_count++;
- }
- else if (pc->GetType() == CT_ASSIGN)
- {
- /**
- * if there is a newline after the '=', just indent one level,
- * otherwise align on the '='.
- * Never update indent_column.
- */
- next = pc->GetNext();
- if (next != NULL)
- {
- indent_pse_push(frm, pc);
- if (next->IsNewline())
- {
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - 1].indent_tmp + indent_size;
- }
- else
- {
- frm.pse[frm.pse_tos].indent = pc->GetColumn() + pc->len + 1;
- }
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos].indent;
- }
- }
- else if (pc->GetType() == CT_RETURN)
- {
- /* don't count returns inside a () or [] */
- if (pc->GetLevel() == pc->GetBraceLevel())
- {
- indent_pse_push(frm, pc);
- frm.pse[frm.pse_tos].indent = frm.pse[frm.pse_tos - 1].indent + pc->len + 1;
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos - 1].indent;
- }
- }
- else if (chunk_is_str(pc, "<<", 2))
- {
- if (cout_col == 0)
- {
- cout_col = pc->GetColumn();
- cout_level = pc->GetLevel();
- }
- }
- else
- {
- /* anything else? */
- }
-
-
- /**
- * Indent the line if needed
- */
- if (did_newline && !pc->IsNewline() && (pc->len != 0))
- {
- /**
- * Check for special continuations.
- * Note that some of these could be done as a stack item like
- * everything else
- */
-
- prev = pc->GetPrevNcNnl();
- if ((pc->GetType() == CT_MEMBER) ||
- (pc->GetType() == CT_DC_MEMBER) ||
- ((prev != NULL) &&
- ((prev->GetType() == CT_MEMBER) ||
- (prev->GetType() == CT_DC_MEMBER))))
- {
- tmp = cpd.settings[UO_indent_member].n + indent_column;
- LOG_FMT(LINDENT, "%s: %d] member => %d\n",
- __func__, pc->GetOrigLine(), tmp);
- reindent_line(pc, tmp);
- }
- else if (chunk_is_str(pc, "<<", 2) && (cout_col > 0))
- {
- LOG_FMT(LINDENT, "%s: %d] cout_col => %d\n",
- __func__, pc->GetOrigLine(), cout_col);
- reindent_line(pc, cout_col);
- }
- else if ((vardefcol > 0) &&
- (pc->GetType() == CT_WORD) &&
- ((pc->GetFlags() & PCF_VAR_DEF) != 0) &&
- (prev != NULL) && (prev->GetType() == CT_COMMA))
- {
- LOG_FMT(LINDENT, "%s: %d] Vardefcol => %d\n",
- __func__, pc->GetOrigLine(), vardefcol);
- reindent_line(pc, vardefcol);
- }
- else if ((pc->GetType() == CT_STRING) && (prev->GetType() == CT_STRING) &&
- cpd.settings[UO_indent_align_string].b)
- {
- LOG_FMT(LINDENT, "%s: %d] String => %d\n",
- __func__, pc->GetOrigLine(), prev->GetColumn());
- reindent_line(pc, prev->GetColumn());
- }
- else if (pc->IsComment())
- {
- LOG_FMT(LINDENT, "%s: %d] comment => %d\n",
- __func__, pc->GetOrigLine(), frm.pse[frm.pse_tos].indent_tmp);
- indent_comment(pc, frm.pse[frm.pse_tos].indent_tmp);
- }
- else if (pc->GetType() == CT_PREPROC)
- {
- /* Preprocs are always in column 1. See indent_preproc() */
- if (pc->GetColumn() != 1)
- {
- reindent_line(pc, 1);
- }
- }
- else
- {
- if (pc->GetColumn() != indent_column)
- {
- LOG_FMT(LINDENT, "%s: %d] indent => %d [%.*s]\n",
- __func__, pc->GetOrigLine(), indent_column, pc->len, pc->GetStr());
- reindent_line(pc, indent_column);
- }
- }
- did_newline = false;
- }
-
- /**
- * Handle variable definition continuation indenting
- */
- if ((pc->GetType() == CT_WORD) &&
- ((pc->GetFlags() & PCF_IN_FCN_DEF) == 0) &&
- ((pc->GetFlags() & PCF_VAR_1ST_DEF) == PCF_VAR_1ST_DEF))
- {
- vardefcol = pc->GetColumn();
- }
- if (pc->IsSemicolon() ||
- ((pc->GetType() == CT_BRACE_OPEN) && (pc->GetParentType() == CT_FUNCTION)))
- {
- vardefcol = 0;
- }
-
- /* if we hit a newline, reset indent_tmp */
- if (pc->IsNewline() ||
- (pc->GetType() == CT_COMMENT_MULTI) ||
- (pc->GetType() == CT_COMMENT_CPP))
- {
- frm.pse[frm.pse_tos].indent_tmp = frm.pse[frm.pse_tos].indent;
-
- /**
- * Handle the case of a multi-line #define w/o anything on the
- * first line (indent_tmp will be 1 or 0)
- */
- if ((pc->GetType() == CT_NL_CONT) &&
- (frm.pse[frm.pse_tos].indent_tmp <= indent_size))
- {
- frm.pse[frm.pse_tos].indent_tmp = indent_size + 1;
- }
-
- /* Get ready to indent the next item */
- did_newline = true;
- }
-
- if (!pc->IsComment() && !pc->IsNewline())
- {
- prev = pc;
- }
- pc = pc->GetNext();
- }
-
- /* Throw out any stuff inside a preprocessor - no need to warn */
- while ((frm.pse_tos > 0) && frm.pse[frm.pse_tos].in_preproc)
- {
- indent_pse_pop(frm, pc);
- }
-
- for (idx = 1; idx <= frm.pse_tos; idx++)
- {
- LOG_FMT(LWARN, "%s:%d Unmatched %s\n",
- cpd.filename, frm.pse[idx].open_line,
- get_token_name(frm.pse[idx].type));
- cpd.error_count++;
- }
-}
-
-/**
- * returns true if forward scan reveals only single newlines or comments
- * stops when hits code
- * false if next thing hit is a closing brace, also if 2 newlines in a row
- */
-
-
-static bool single_line_comment_indent_rule_applies(Chunk *start)
-{
- Chunk *pc = start;
- int nl_count = 0;
- if (!pc->IsSingleLineComment())
- {
- return(false);
- }
- /* scan forward, if only single newlines and comments before next line of code, we want to apply */
- while ((pc = pc->GetNext()) != NULL)
- {
- if (pc->IsNewline())
- {
- if (nl_count > 0 || pc->GetNlCount() > 1)
- {
- return(false);
- }
-
- nl_count++;
- }
- else
- {
- nl_count = 0;
- if (!pc->IsSingleLineComment())
- {
- /* here we check for things to run into that we wouldn't want to indent the comment for */
- /* for example, non-single line comment, closing brace */
- if (pc->IsComment() || pc->IsBraceClose())
- {
- return(false);
- }
-
- return(true);
- }
- }
- }
-
- return(false);
-}
-
-/**
- * REVISIT: This needs to be re-checked, maybe cleaned up
- *
- * Indents comments in a (hopefully) smart manner.
- *
- * There are two type of comments that get indented:
- * - stand alone (ie, no tokens on the line before the comment)
- * - trailing comments (last token on the line apart from a linefeed)
- * + note that a stand-alone comment is a special case of a trailing
- *
- * The stand alone comments will get indented in one of three ways:
- * - column 1:
- * + There is an empty line before the comment AND the indent level is 0
- * + The comment was originally in column 1
- *
- * - Same column as trailing comment on previous line (ie, aligned)
- * + if originally within TBD (3) columns of the previous comment
- *
- * - syntax indent level
- * + doesn't fit in the previous categories
- *
- * Options modify this behavior:
- * - keep original column (don't move the comment, if possible)
- * - keep relative column (move out the same amount as first item on line)
- * - fix trailing comment in column TBD
- *
- * @param pc The comment, which is the first item on a line
- * @param col The column if this is to be put at indent level
- */
-static void indent_comment(Chunk *pc, int col)
-{
- Chunk *nl;
- Chunk *prev;
-
- LOG_FMT(LCMTIND, "%s: line %d, col %d, level %d: ", __func__,
- pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
-
- /* force column 1 comment to column 1 if not changing them */
- if ((pc->GetOrigCol() == 1) && !cpd.settings[UO_indent_col1_comment].b)
- {
- LOG_FMT(LCMTIND, "rule 1 - keep in col 1\n");
- pc->SetColumn(1);
- return;
- }
-
- nl = pc->GetPrev();
-
- /* outside of any expression or statement? */
- if (pc->GetLevel() == 0)
- {
- if ((nl != NULL) && (nl->GetNlCount() > 1))
- {
- LOG_FMT(LCMTIND, "rule 2 - level 0, nl before\n");
- pc->SetColumn(1);
- return;
- }
- }
-
- prev = nl->GetPrev();
- if (prev->IsComment() && (nl->GetNlCount() == 1))
- {
- int coldiff = prev->GetOrigCol() - pc->GetOrigCol();
-
- if ((coldiff <= 3) && (coldiff >= -3))
- {
- pc->SetColumn(prev->GetColumn());
- LOG_FMT(LCMTIND, "rule 3 - prev comment, coldiff = %d, now in %d\n",
- coldiff, pc->GetColumn());
- return;
- }
- }
- /* check if special single line comment rule applies */
- if (cpd.settings[UO_indent_sing_line_comments].n > 0 && single_line_comment_indent_rule_applies(pc))
- {
- pc->SetColumn(col + cpd.settings[UO_indent_sing_line_comments].n);
- LOG_FMT(LCMTIND, "rule 4 - single line comment indent, now in %d\n", pc->GetColumn());
- return;
- }
- LOG_FMT(LCMTIND, "rule 5 - fall-through, stay in %d\n", col);
-
- pc->SetColumn(col);
-}
-
-
-/**
- * Put spaces on either side of the preproc (#) symbol.
- * This is done by pointing pc->GetStr() into pp_str and adjusting the
- * length.
- */
-void indent_preproc(void)
-{
- Chunk *pc;
- Chunk *next;
- int pp_level;
- int pp_level_sub = 0;
- int tmp;
-
- /* Define a string of 16 spaces + # + 16 spaces */
- static const char *pp_str = " # ";
- static const char *alt_str = " %: ";
-
- /* Scan to see if the whole file is covered by one #ifdef */
- int stage = 0;
-
- for (pc = Chunk::GetHead(); pc != NULL; pc = pc->GetNext())
- {
- if (pc->IsComment() || pc->IsNewline())
- {
- continue;
- }
-
- if (stage == 0)
- {
- /* Check the first PP, make sure it is an #if type */
- if (pc->GetType() != CT_PREPROC)
- {
- break;
- }
- next = pc->GetNext();
- if ((next == NULL) || (next->GetType() != CT_PP_IF))
- {
- break;
- }
- stage = 1;
- }
- else if (stage == 1)
- {
- /* Scan until a PP at level 0 is found - the close to the #if */
- if ((pc->GetType() == CT_PREPROC) &&
- (pc->GetPpLevel() == 0))
- {
- stage = 2;
- }
- continue;
- }
- else if (stage == 2)
- {
- /* We should only see the rest of the preprocessor */
- if ((pc->GetType() == CT_PREPROC) ||
- ((pc->GetFlags() & PCF_IN_PREPROC) == 0))
- {
- stage = 0;
- break;
- }
- }
- }
-
- if (stage == 2)
- {
- LOG_FMT(LINFO, "The whole file is covered by a #IF\n");
- pp_level_sub = 1;
- }
-
- for (pc = Chunk::GetHead(); pc != NULL; pc = pc->GetNext())
- {
- if (pc->GetType() != CT_PREPROC)
- {
- continue;
- }
-
- if (pc->GetColumn() != 1)
- {
- /* Don't handle preprocessors that aren't in column 1 */
- LOG_FMT(LINFO, "%s: Line %d doesn't start in column 1 (%d)\n",
- __func__, pc->GetOrigLine(), pc->GetColumn());
- continue;
- }
-
- /* point into pp_str */
- if (pc->len == 2)
- {
- /* alternate token crap */
- pc->Str() = &alt_str[16];
- }
- else
- {
- pc->Str() = &pp_str[16];
- }
-
- pp_level = pc->GetPpLevel() - pp_level_sub;
- if (pp_level < 0)
- {
- pp_level = 0;
- }
- else if (pp_level > 16)
- {
- pp_level = 16;
- }
-
- /* Note that the indent is removed by default */
- if ((cpd.settings[UO_pp_indent].a & AV_ADD) != 0)
- {
- /* Need to add some spaces */
- pc->Str() -= pp_level;
- pc->len += pp_level;
- }
- else if (cpd.settings[UO_pp_indent].a == AV_IGNORE)
- {
- tmp = (pc->GetOrigCol() <= 16) ? pc->GetOrigCol() - 1 : 16;
- pc->Str() -= tmp;
- pc->len += tmp;
- }
-
- /* Add spacing by adjusting the length */
- if ((cpd.settings[UO_pp_space].a & AV_ADD) != 0)
- {
- pc->len += pp_level;
- }
-
- next = pc->GetNext();
- if (next != NULL)
- {
- reindent_line(next, pc->len + 1);
- }
-
- LOG_FMT(LPPIS, "%s: Indent line %d to %d (len %d, next->col %d)\n",
- __func__, pc->GetOrigLine(), GetPpLevel(), pc->len, next->GetColumn());
- }
-}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3116.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3116.cpp
deleted file mode 100644
index 96167df1..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3116.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-// Singular with various newline formats
-auto f = [] -> void {
- return;
-};
-
-auto f = [] -> void {
- return;
-}();
-
-auto f = [] -> void
-{
- return;
-}();
-
-auto f =
-[] -> void {
- return;
-};
-
-auto f =
-[] -> void
-{
- return;
-};
-
-auto f
- = [] -> void {
- int i = 0;
- return;
- };
-
-auto f
- = []
- {
- int i = 0;
- return;
- };
-
-// Nested lambda
-auto f = [] {
- auto g = [] {
- auto h = [] {
- return;
- };
- return;
- };
- return;
-};
-
-auto f = [] {
- auto g = []
- {
- auto h = [] {
- return;
- };
- return;
- };
- return;
-};
-
-auto f = []
-{
- auto g = [] {
- auto h = []
- {
- return;
- };
- return;
- };
- return;
-};
-
-// Nested lambda within functions
-Func(
- [] { return; },
- [] { return; }
-);
-
-Func([] { return; },
- [] { return; }
-);
-
-Func([] { return; },
- [] { return; }
-)();
-
-Func([] { return; },
- [] { return; })();
-
-Func([] { return; },
- [] { return; });
-
-A(
- B([] (const std::string &s) -> bool {
- s = "hello";
- return true;
- }), 1
- );
-
-A(
- B(
- [] (const std::string &s) -> bool {
- s = "hello";
- return true;
- }
- ), 1
- );
-
-// Inside scope
-{
- std::thread([](const char *c) {
- std::cout << c << std::endl;
- }).detach();
-
- std::thread(
- [](const char *c) {
- std::cout << c << std::endl;
- }
- ).detach();
-
- auto f = [&](int a) {
- return b;
- };
-
- auto f = [&](int a)
- {
- return b;
- };
-}
-
-Func(std::count_if(v.begin(), v.end(), [&](const auto &a) {
- return a == 3;
- }));
-
-Func(
- std::count_if(v.begin(), v.end(), [&](const auto &a)
- {
- return a == 3;
- }));
-
-Func(
- std::count_if(v.begin(), v.end(), [&](const auto &a) {
- return a == 3;
- }));
-
-Func(
- std::count_if(v.begin(), v.end(), [&](const auto &a) {
- return a == 3;
- })
- );
-
-// Test case from issue #3116
-const auto compare = [] (const auto i, const auto j)
-{
- return i >= j;
-};
-
-std::sort(
- vector.begin(),
- vector.end(),
- [] (const auto i, const auto j)
-{
- return i >= j;
-}
-);
-
-// Test case from issue #3116
-if(isWidgetOfCurrentRow)
-{
- it = std::find_if(
- reloaded.begin(),
- reloaded.end(),
- [&rowGuid](const auto& device)
- {
- return (device.thingGUID == rowGuid && !device.isWidget);
- }
- );
-}
-else
-{
- it = std::find_if(
- reloaded.begin(),
- reloaded.end(),
- [&rowGuid](const auto& device)
- {
- return device.thingGUID == rowGuid;
- }
- );
-}
-
-// Test case from issue 1296 and some variants
-obj->Func([&](int a)
- {
- return b;
- });
-
-obj->Func([] -> int
- {
- return b;
- });
-
-obj->Func([]
- {
- return b;
- }
- );
-
-obj->Func(
- Func([]
- {
- return b;
- })
- );
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/objective-c.test b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/objective-c.test
deleted file mode 100644
index 84fea584..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/objective-c.test
+++ /dev/null
@@ -1,214 +0,0 @@
-# Test cases specifically for the Objective C language.
-#
-# Range: 50000 - 59999
-# test.name config.file input.file
-
-# The .h file needs a language override
-50001 oc/oc1.cfg oc/Fraction.h OC
-50002 oc/oc2.cfg oc/Fraction.m
-50003 oc/oc2.cfg oc/main.m
-50004 oc/oc4.cfg oc/string.m
-50005 oc/oc5.cfg oc/Declarations.h OC
-50006 oc/oc6.cfg oc/exceptions.m
-50007 oc/oc7.cfg oc/misc.m
-50008 oc/oc8.cfg oc/protocol.m
-50009 oc/oc9.cfg oc/literals.mm
-
-50010 oc/sp_after_oc_return_type_add.cfg oc/return_type.m
-50011 oc/sp_after_oc_return_type_force.cfg oc/return_type.m
-50012 oc/sp_after_oc_return_type_remove.cfg oc/return_type.m
-
-50014 oc/sp_oc_classname_paren-r.cfg oc/sp_oc_classname_paren-r.m
-50015 oc/oc10.cfg oc/receiver.m
-
-50016 oc/oc11.cfg oc/ternary.m
-50017 oc/ternary_short.cfg oc/ternary.m
-
-50018 common/indent_inside_ternary_operator.cfg oc/indent-inside-ternary-operator.m
-
-50020 oc/sp_after_oc_at_sel_add.cfg oc/selector.m
-50021 oc/sp_after_oc_at_sel_force.cfg oc/selector.m
-50022 oc/sp_after_oc_at_sel_remove.cfg oc/selector.m
-
-50025 oc/oc6.cfg oc/exceptions.m
-50026 oc/sp_after_throw_remove.cfg oc/exceptions.m
-
-50030 common/sort_imports.cfg oc/sort_import.m
-50031 oc/mod_sort_incl_import_prioritize_filename.cfg oc/sort_import.m
-50032 oc/mod_sort_incl_import_ignore_extension.cfg oc/sort_import.m
-50033 oc/mod_sort_incl_import_prioritize_extensionless.cfg oc/sort_import.m
-50034 oc/mod_sort_incl_import_prioritize_angle_over_quotes.cfg oc/sort_import.m
-50035 oc/mod_sort_incl_import_grouping_enabled.cfg oc/sort_import_group.m
-50036 oc/mod_sort_incl_import_grouping_enabled_with_regex.cfg oc/sort_import_group_regex.mm
-
-50040 oc/objc_complex_method.cfg oc/complex_method.m
-
-50050 oc/objc_complex_method.cfg oc/real_world_file.m
-
-50060 oc/align_oc_msg_colon_span-1.cfg oc/oc-split.m
-50061 oc/bug_167.cfg oc/bug_167.m
-
-50062 common/aet.cfg oc/issue_2631.m
-
-50070 oc/blocks.cfg oc/blocks.m
-50071 oc/sp_before_oc_block_caret_force.cfg oc/blocks.m
-50072 oc/sp_before_oc_block_caret_remove.cfg oc/blocks.m
-50073 oc/sp_after_oc_block_caret_add.cfg oc/blocks.m
-50074 oc/sp_after_oc_block_caret_force.cfg oc/blocks.m
-50075 oc/blocks.cfg oc/blocks.m
-50076 oc/sp_before_oc_block_caret_remove.cfg oc/blocks.m
-
-50077 oc/blocks.cfg oc/more_blocks.m
-50078 oc/sp_before_oc_block_caret_force.cfg oc/more_blocks.m
-50079 oc/sp_before_oc_block_caret_remove.cfg oc/more_blocks.m
-50080 oc/sp_after_oc_block_caret_add.cfg oc/more_blocks.m
-50081 oc/sp_after_oc_block_caret_force.cfg oc/more_blocks.m
-50082 oc/blocks.cfg oc/more_blocks.m
-50083 oc/sp_before_oc_block_caret_remove.cfg oc/more_blocks.m
-50084 oc/nl_brace_square.cfg oc/more_blocks.m
-50085 oc/nl_after_func_body-3.cfg oc/block_in_method.m
-50086 oc/issue_2643.cfg oc/block_in_method.m
-50087 oc/indent_oc_inside_msg_sel.cfg oc/indent_oc_inside_msg_sel.m
-
-50090 oc/oc12.cfg oc/kw.m
-50091 oc/issue_2656.cfg oc/block_in_method.m
-
-50095 oc/oc13.cfg oc/box.m
-50100 oc/bug_340.cfg oc/bug_340.m
-
-50110 oc/oc14.cfg oc/msg_align.m
-50111 common/del_semicolon.cfg oc/ns_enum.m
-50112 common/empty.cfg oc/ns_enum.m
-50113 oc/sp_enum_paren-r.cfg oc/ns_enum.m
-
-50120 oc/gh137.cfg oc/gh137.m
-
-50200 oc/sp_block_as_argument.cfg oc/more_blocks_2.m
-50201 oc/sp_block_as_argument.cfg oc/blocks_align.m
-50202 oc/sp_block_as_argument2.cfg oc/blocks_align.m
-50203 oc/sp_block_as_argument3.cfg oc/blocks_align.m
-50204 oc/sp_block_as_argument4.cfg oc/blocks_align.m
-50205 oc/sp_block_as_argument5.cfg oc/msg_align.m
-50206 common/aet.cfg oc/issue_2727.m
-50207 oc/issue_3031.cfg oc/issue_3031.mm
-
-50300 oc/sp_after_send_oc_colon-f.cfg oc/msg.m
-
-50400 oc/oc16.cfg oc/for.m
-
-50410 oc/oc_cond_colon.cfg oc/oc_cond_colon.m OC+
-50411 common/attribute_specifier_seqs.cfg oc/attribute_specifier_seqs.mm OC+
-
-50500 oc/oc17.cfg oc/code_placeholder.m
-
-50510 oc/gh293.a.cfg oc/gh293.m
-50511 oc/gh293.b.cfg oc/gh293.m
-50512 oc/sp_oc_catch.cfg oc/sp_oc_catch.m
-50513 oc/sp_oc_boxed.cfg oc/sp_oc_boxed.m
-50514 oc/indent_boxed.cfg oc/indent_boxed.m
-50515 oc/sp_oc_synchronized.cfg oc/sp_oc_synchronized.m
-
-50600 oc/nl_oc_block_brace-f.cfg oc/bug_i_477.m
-50601 common/empty.cfg oc/bug_i_408.m
-50602 oc/bug_i_125-412.cfg oc/bug_i_125-412.m
-50603 oc/oc18.cfg oc/gh511.m
-50604 oc/objc_bug_497.cfg oc/bug_497.m
-50605 common/empty.cfg oc/bug_404.m
-50606 oc/oc19.cfg oc/bug_1366.m
-50607 common/aet-sp_after_oc_msg_receiver.cfg oc/sp_after_oc_msg_receiver.m
-50608 common/aet.cfg oc/blocks_align2.m
-50609 common/sp_arith-f.cfg oc/negative_value.m
-50610 common/aet.cfg oc/nelem.m
-50611 common/aet.cfg oc/for2.m
-50612 common/aet.cfg oc/chunk_ends_type1.m
-50613 common/aet.cfg oc/chunk_ends_type2.m
-50614 common/aet.cfg oc/chunk_ends_type3.m
-50615 common/aet.cfg oc/block_literal_protocol.m
-50616 common/aet.cfg oc/oc_msg_in_pp.m
-50617 common/aet.cfg oc/boxed_receiver.m
-50618 common/aet-func_def.cfg oc/func_def.mm
-50619 common/aet.cfg oc/cast.m
-50620 common/aet.cfg oc/sp_after_angle.m
-50621 common/aet.cfg oc/Fraction.h
-50622 common/aet.cfg oc/c-cpp-oc-wrapper.c
-50623 common/aet.cfg oc/extern-c-attribute.m
-50624 common/aet.cfg oc/typeof.m
-50625 common/aet-sp_inside_braces_oc_dict.cfg oc/sp_inside_braces_oc_dict.m
-50626 common/aet.cfg oc/chunk_ends_type4.m
-50627 common/aet.cfg oc/method_ends_semicolon.m
-50628 common/aet.cfg oc/macro-close-brace.m
-50629 common/aet.cfg oc/pp_bool.m
-
-50630 oc/nl_func_call_args_multi_line_ignore_closures.cfg oc/nl_func_call_args_multi_line_ignore_closures.m
-
-50631 oc/nl_oc_msg_args_min_params.cfg oc/nl_oc_msg_args_min_params.m
-50632 oc/nl_oc_msg_args_max_code_width.cfg oc/nl_oc_msg_args_max_code_width.m
-
-50633 common/aet.cfg oc/ocpp_msg_access.mm
-
-50700 common/cmt_insert-0.cfg oc/cmt_insert.m
-50701 common/cmt_insert-0.cfg oc/cmt_insert2.m
-
-50800 oc/obj-c-properties.cfg oc/properties.m
-50801 common/empty.cfg oc/i1213.m
-50802 oc/obj-c-available.cfg oc/available.m
-50803 oc/indent_single_newline.cfg oc/indent_single_newline.m
-
-50804 common/aet.cfg oc/issue_2629.m
-50805 common/aet.cfg oc/issue_2724.m
-
-50810 oc/bug_841.cfg oc/bug_841.m
-50811 oc/oc_bug_1674.cfg oc/bug_1674.m
-50812 oc/oc_bug_1683.cfg oc/bug_1683.m
-
-50813 oc/sp_before_oc_proto_list_add.cfg oc/sp_before_oc_proto_list.m
-50814 oc/sp_before_oc_proto_list_force.cfg oc/sp_before_oc_proto_list.m
-50815 oc/sp_before_oc_proto_list_remove.cfg oc/sp_before_oc_proto_list.m
-
-50816 oc/issue_2675.cfg oc/issue_2675.m
-50817 common/aet.cfg oc/issue_2722.m
-
-50900 oc/1927.cfg oc/1927.m
-50901 oc/Issue_2172.cfg oc/Issue_2172.m
-50902 common/empty.cfg oc/Issue_2289.m
-50903 oc/Issue_681.cfg oc/Issue_681.oc
-
-50904 oc/double_angle_space_1.cfg oc/double_angle_space.m
-50905 oc/double_angle_space_2.cfg oc/double_angle_space.m
-50906 oc/double_angle_space_3.cfg oc/double_angle_space.m
-
-50907 oc/align_colon_with_ternary_1.cfg oc/align_colon_with_ternary_1.m
-50908 oc/align_colon_with_ternary_2.cfg oc/align_colon_with_ternary_2.m
-50909 oc/3766.cfg oc/3766.m
-50910 oc/3767.cfg oc/3767.mm OC+
-50911 oc/3811.cfg oc/3811.mm OC+
-50912 oc/3812.cfg oc/3812.m
-50913 oc/3813.cfg oc/3813.m
-50914 oc/3819.cfg oc/3819.m
-50915 common/empty.cfg oc/3822.h
-50916 oc/3823.cfg oc/3823.m
-
-# test the options sp_ with the value "ignore"
-51000 oc/sp_cond_ternary_short.cfg oc/sp_cond_ternary_short.m
-51001 oc/sp_enum_paren-i.cfg oc/ns_enum-i.m
-51002 oc/sp_oc_catch-i.cfg oc/sp_oc_catch.m
-51003 oc/sp_oc_catch-r.cfg oc/sp_oc_catch.m
-51004 oc/block_pointer.cfg oc/block_pointer.m
-
-#
-# adopt tests from UT
-10018 oc/delete-space-oc.cfg oc/delete-space-oc.mm
-10019 common/empty.cfg oc/func-param-wrap-oc.mm
-10020 oc/align-objc-like-xcode.cfg oc/align-objc-like-xcode.m
-10021 oc/double-indent-objc-dict.cfg oc/double-indent-objc-dict.m
-10022 oc/indent-objc-block.cfg oc/indent-objc-block.m
-10033 oc/U11-Cpp.cfg oc/objc.mm
-10034 oc/U12-Cpp.cfg oc/asm.h.mm
-10035 oc/U13-Cpp.cfg oc/definesalign.h.mm
-10036 oc/U14-Cpp.cfg oc/inttypes.h.mm
-10046 oc/U15-Cpp.cfg oc/UNI-1333.mm
-10102 oc/U24-Cpp.cfg oc/pp-ignore.mm
-11030 oc/U08-Cpp.cfg oc/argtypes.mm
-11031 oc/U09-Cpp.cfg oc/casting.mm
-11032 oc/U10-Cpp.cfg oc/newlines.mm
-60011 oc/UNI-11095.cfg oc/UNI-11095.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.editorconfig b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.editorconfig
index 05c9fc6c..05c9fc6c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.editorconfig
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.editorconfig
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.gitattributes b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.gitattributes
index 5ef989a3..5ef989a3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.gitattributes
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.gitattributes
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.github/ISSUE_TEMPLATE b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.github/ISSUE_TEMPLATE
index d98e5cf5..d98e5cf5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.github/ISSUE_TEMPLATE
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.github/ISSUE_TEMPLATE
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.github/workflows/uncrustify_test.yml b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.github/workflows/uncrustify_test.yml
index 00e972ff..00e972ff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.github/workflows/uncrustify_test.yml
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.github/workflows/uncrustify_test.yml
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.gitignore b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.gitignore
index 098b0695..098b0695 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.gitignore
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.gitignore
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.pc/.quilt_patches b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.pc/.quilt_patches
new file mode 100644
index 00000000..6857a8d4
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.pc/.quilt_patches
@@ -0,0 +1 @@
+debian/patches
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.pc/.quilt_series b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.pc/.quilt_series
new file mode 100644
index 00000000..c2067066
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.pc/.quilt_series
@@ -0,0 +1 @@
+series
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.pc/.version b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.pc/.version
new file mode 100644
index 00000000..0cfbf088
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.pc/.version
@@ -0,0 +1 @@
+2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.travis.yml b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.travis.yml
index a3bfcf7a..a3bfcf7a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/.travis.yml
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/.travis.yml
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/AUTHORS b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/AUTHORS
new file mode 100644
index 00000000..5d2c147f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/AUTHORS
@@ -0,0 +1,189 @@
+Author:
+2005 - 2016 : Ben Gardner
+
+Maintenance:
+Guy Maurel
+Michele Calgaro
+Matthew Woehlke
+
+until 2022-11-22:
+Other collaborators:
+Alan Fineberg
+Alexander GQ Gerasiov
+Alex Henrie
+André Berg
+Andrei Alexandrescu
+Andrey Starodubtsev
+Anirban Pramanick
+Antti Tapaninen
+Arne Forlie
+Arseniy Shestakov
+asobhy
+atauzki
+Aurélien Gâteau
+Benio
+Ben Iofel
+Ben Mayo
+Beren Minor
+Bi-Ruei, Chiu
+Biswa96
+Biswapriyo Nath
+B. Kevin Hardman
+Bogdan Popescu
+Brandon Slack
+Brecht Sanders
+Brendan Long
+Brian Kelley
+CharlieYJH
+Chris Lalancette
+Clemens Rabe
+Clint Lawrence
+Code Able
+Cody Schafer
+Corentin Noël
+Dandielo
+Daniel Chumak
+Daniele Bartolini
+Dan Rose
+Dave Lee
+David Catmull
+David E. O'Brien
+David Lechner
+David Schaefgen
+Dirk Thomas
+Dittrich, Rico
+Dmitry Marakasov
+Dmitry Povolotsky
+Dmytro Povolotskyi
+Dundar Göc
+Dženan Zukić
+Eism
+Emerson Knapp
+Emmanuel Christophe
+epac-tom
+Ethan Gao
+Florin Pop
+Frank J. T. Wojcik
+Gary Ash
+Ger Hobbelt
+Hackerpilot
+Hannes Schmidt
+hghdev
+Huang-Ming Huang
+Husk3r
+Ilya Lyubimov
+Ingo Brückl
+Ivan Nazarenko
+Ivan Romanov
+Jakub Lukasiewicz
+Jakub Schmidtke
+Jan Weiß
+Jason
+JavDevGames
+Jeremy H
+Jeremy T Hilliker
+Jim Meyering
+Jiri Hruska
+jodi.the.tigger@gmail.com
+Jody Hagins
+Joel Ostraat
+Joergen Ibsen
+Johnny Oskarsson
+Jonas Hurrelmann
+Jorengarenar
+Joshua Gross
+Joshua Parker
+Julian Picht
+Kalle Raiskila
+Keepun
+Kevin Wong
+krys
+Laurent Tréguier
+Lauri Kasanen
+lbmaian
+Leon Breedt
+Lorenz Haas
+Lykurg
+Maciej Bogusz
+Manning, James
+Marco Stephan
+Marcus Nilsson
+Marek Fort
+Marius Zwicker
+Mark Stegeman
+Markus Geimer
+Martin Delille
+Martin Simonovsky
+Martin Storsjo
+Matthew McDole
+Matthew Woehlke
+Maxim Mikityanskiy
+Max Smolens
+MeXx
+Michaël Peeters
+Michele Calgaro
+Mihai Popescu
+Mike
+Mike Gelfand
+Mirko König
+mjbogusz
+MrTheMake
+Nate
+neok-m4700
+Nico Decker
+Oleg Liatte
+Oleg Smolsky
+Owen Rudge
+Pat Notz
+Patrick Rohr
+Paul Cercueil
+Paul Smith
+Pavel Geiger
+Paweł Benetkiewicz
+PerfectCarl
+Peter Bruin
+Peter Hartley
+Peter Jonas
+Peter Kolbus
+Peter Tao
+Peter Waller
+Piet Van Reepingen
+PMheart
+Randolph R. Settgast
+Randolph Settgast
+RaveTheTadpole
+Ray Strode
+Richard Maxwell
+Ricky Lopez
+Roland Schulz
+Roman Gordienko
+Ryan Maxwell
+Samish Chandra Kolli
+Samish Kolli
+Scott Bilas
+Sebastian Andersson
+Sebastian Bilek
+S. Gilles
+Shazron Abdullah
+Siddharth Kannan
+Slávek Banko
+Spark-NF
+Stefan Koch
+Stefan Nunninger
+Stephen Gilles
+Steven Lee
+Suhaib Ishaque
+t-bltg
+Tim Hütz
+Timotheus Pokorra
+Todd Richmond
+Twigz
+U-RDEC\ParkerJS
+Vadim Zeitlin
+Viktor Kireev
+Vincent Rouillé
+Vojtěch Balík
+Vyacheslav Shegai
+Waldir Pimenta
+Yannick Bühler
+Yegor Yefremov
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/BUGS b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/BUGS
index a6e2ccaa..a6e2ccaa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/BUGS
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/BUGS
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/CMakeLists.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/CMakeLists.txt
new file mode 100644
index 00000000..2ea7cbe7
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/CMakeLists.txt
@@ -0,0 +1,560 @@
+cmake_minimum_required(VERSION 3.5)
+
+project(uncrustify)
+
+if("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
+ message(FATAL_ERROR "
+ In-source builds are not supported, please remove the `CMakeFiles'
+ folder and `CMakeCache.txt', and create a folder for the build:
+ mkdir build; cd build; cmake ..
+ ")
+endif()
+
+include(CheckCXXCompilerFlag)
+include(CheckIncludeFileCXX)
+include(CheckSymbolExists)
+include(CheckCXXSymbolExists)
+include(CheckTypeSize)
+include(CTest)
+
+if( ${CMAKE_VERSION} VERSION_LESS "3.12" )
+ find_package( PythonInterp )
+ if( NOT PYTHON_EXECUTABLE )
+ message( FATAL_ERROR "Python is required, but was not found on your system" )
+ endif()
+ else( )
+ find_package(Python3 REQUIRED)
+ set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
+endif()
+
+#
+# Check compiler flags
+#
+if(MSVC)
+ add_definitions(/D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /wd4267)
+ add_definitions(/utf-8)
+elseif(CMAKE_COMPILER_IS_GNUCXX)
+ set(gcc_warning_flags
+ -Wall
+ -Wextra
+ -Wshadow
+ -Wpointer-arith
+ -Wcast-qual
+ -Wcast-align
+ -Wc++11-extensions
+ )
+ foreach(flag ${gcc_warning_flags})
+ string(REGEX REPLACE "[^a-zA-Z0-9]+" "_" flag_var "CXXFLAG_${flag}")
+ CHECK_CXX_COMPILER_FLAG("${flag}" ${flag_var})
+ if(${flag_var})
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
+ endif()
+ unset(flag_var)
+ endforeach()
+ if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers")
+ endif()
+ unset(gcc_warning_flags)
+elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-deprecated-declarations")
+endif()
+
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED YES)
+
+if(ENABLE_SANITIZER)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1 -fno-omit-frame-pointer -fsanitize=${ENABLE_SANITIZER}")
+endif()
+
+#set(UNCRUSTIFY_SEPARATE_TESTS "True")
+
+include_directories(
+ ${PROJECT_BINARY_DIR}/src
+ ${PROJECT_SOURCE_DIR}/src
+ ${PROJECT_BINARY_DIR}
+)
+
+#
+# Determine config
+#
+if(WIN32)
+ # Windows builds use src/windows_compat.h instead of config.h
+else()
+ # Generate config.h
+ set(avail_headers "")
+
+ set(headers
+ inttypes.h
+ memory.h
+ stdint.h
+ stdlib.h
+ strings.h
+ string.h
+ sys/stat.h
+ sys/types.h
+ unistd.h
+ utime.h
+ )
+ foreach(header ${headers})
+ string(TOUPPER "${header}" header_uc)
+ string(REGEX REPLACE "[^A-Z0-9_]" "_" include_var "HAVE_${header_uc}")
+ check_include_file_cxx("${header}" ${include_var})
+ if(${include_var})
+ list(APPEND avail_headers ${header})
+ endif()
+ unset(include_var)
+ unset(header_uc)
+ endforeach()
+ unset(headers)
+
+ check_include_file("stdbool.h" HAVE_STDBOOL_H)
+
+ set(symbols
+ memset
+ strcasecmp
+ strchr
+ strdup
+ strerror
+ strtol
+ strtoul
+ )
+ foreach(symbol ${symbols})
+ string(TOUPPER "${symbol}" symbol_uc)
+ string(REGEX REPLACE "[^A-Z0-9_]" "_" symbol_var "HAVE_${symbol_uc}")
+ check_cxx_symbol_exists("${symbol}" "${avail_headers}" ${symbol_var})
+ unset(symbol_var)
+ unset(symbol_uc)
+ endforeach()
+ unset(symbols)
+
+ unset(avail_headers)
+
+ check_type_size(_Bool _BOOL LANGUAGE C)
+
+ configure_file(src/config.h.in config.h @ONLY)
+endif()
+
+#
+# Generate uncrustify_version.h
+#
+
+set(UNCRUSTIFY_VERSION "0.78.0_f")
+
+option(NoGitVersionString "Do not use make_version.py and git to build a version string" OFF)
+if(NoGitVersionString)
+ configure_file(src/uncrustify_version.h.in uncrustify_version.h @ONLY)
+ add_custom_target(generate_version_header) # Dummy target
+else()
+ # Add target to generate version header;
+ # do this every build to ensure git SHA is up to date
+ add_custom_target(generate_version_header
+ BYPRODUCTS "${PROJECT_BINARY_DIR}/uncrustify_version.h"
+ COMMAND
+ ${CMAKE_COMMAND}
+ -D PYTHON_EXECUTABLE:STRING=${PYTHON_EXECUTABLE}
+ -D SOURCE_DIR:PATH="${PROJECT_SOURCE_DIR}"
+ -D INPUT:PATH="${PROJECT_SOURCE_DIR}/src/uncrustify_version.h.in"
+ -D OUTPUT:PATH="${PROJECT_BINARY_DIR}/uncrustify_version.h"
+ -D UNCRUSTIFY_VERSION:STRING="${UNCRUSTIFY_VERSION}"
+ -P ${PROJECT_SOURCE_DIR}/cmake/GenerateVersionHeader.cmake
+ COMMENT "Generating version header"
+ )
+ set_source_files_properties(
+ "${PROJECT_BINARY_DIR}/uncrustify_version.h"
+ PROPERTIES GENERATED TRUE
+ )
+endif()
+
+#
+# Generate token_names.h
+#
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/token_names.h"
+ COMMAND ${CMAKE_COMMAND}
+ "-Dsrc_file=${PROJECT_SOURCE_DIR}/src/token_enum.h"
+ "-Ddst_file=${CMAKE_CURRENT_BINARY_DIR}/token_names.h"
+ -P "${PROJECT_SOURCE_DIR}/cmake/GenerateTokenNames.cmake"
+ MAIN_DEPENDENCY src/token_enum.h
+ COMMENT "Generating token_names.h"
+)
+
+# Set up commands for generated source files
+function(py_gen OUTPUT SCRIPT INPUT)
+ set(out "${PROJECT_BINARY_DIR}/src/${OUTPUT}")
+ set(deps "${PROJECT_SOURCE_DIR}/src/${INPUT}")
+ get_filename_component(outdir "${out}" DIRECTORY)
+ foreach(arg IN LISTS ARGN)
+ if (IS_ABSOLUTE "${arg}")
+ list(APPEND deps "${arg}")
+ else()
+ list(APPEND deps "${PROJECT_SOURCE_DIR}/src/${arg}")
+ endif()
+ endforeach()
+
+ add_custom_command(
+ OUTPUT "${out}"
+ COMMAND ${CMAKE_COMMAND} -E make_directory "${outdir}"
+ COMMAND ${PYTHON_EXECUTABLE}
+ "${PROJECT_SOURCE_DIR}/scripts/${SCRIPT}"
+ "${out}"
+ ${deps}
+ DEPENDS ${deps} "${PROJECT_SOURCE_DIR}/scripts/${SCRIPT}"
+ MAIN_DEPENDENCY src/${INPUT}
+ COMMENT "Generating ${OUTPUT}"
+ )
+endfunction()
+
+py_gen(punctuator_table.h
+ make_punctuator_table.py
+ symbols_table.h
+)
+
+py_gen(options.cpp
+ make_options.py
+ options.h
+ options.cpp.in
+)
+
+py_gen(option_enum.h
+ make_option_enum.py
+ option.h
+ option_enum.h.in
+)
+
+py_gen(option_enum.cpp
+ make_option_enum.py
+ option.h
+ option_enum.cpp.in
+)
+
+py_gen(../etc/uncrustify.xml
+ make_katehl.py
+ ../etc/uncrustify.xml.in
+ "${PROJECT_BINARY_DIR}/uncrustify_version.h"
+ options.h
+ option.h
+ token_enum.h
+)
+
+#
+# Uncrustify
+#
+set(uncrustify_sources
+ src/align_add.cpp
+ src/align_asm_colon.cpp
+ src/align_assign.cpp
+ src/align_braced_init_list.cpp
+ src/align.cpp
+ src/align_eigen_comma_init.cpp
+ src/align_func_params.cpp
+ src/align_func_proto.cpp
+ src/align_init_brace.cpp
+ src/align_left_shift.cpp
+ src/align_log_al.cpp
+ src/align_nl_cont.cpp
+ src/align_oc_decl_colon.cpp
+ src/align_oc_msg_colons.cpp
+ src/align_oc_msg_spec.cpp
+ src/align_preprocessor.cpp
+ src/align_same_func_call_params.cpp
+ src/align_stack.cpp
+ src/align_struct_initializers.cpp
+ src/align_tab_column.cpp
+ src/align_tools.cpp
+ src/align_trailing_comments.cpp
+ src/align_typedefs.cpp
+ src/align_var_def_brace.cpp
+ src/args.cpp
+ src/backup.cpp
+ src/brace_cleanup.cpp
+ src/braces.cpp
+ src/calculate_closing_brace_position.cpp
+ src/change_int_types.cpp
+ src/check_template.cpp
+ src/chunk.cpp
+ src/ChunkStack.cpp
+ src/combine.cpp
+ src/combine_fix_mark.cpp
+ src/combine_labels.cpp
+ src/combine_tools.cpp
+ src/combine_skip.cpp
+ src/compat_posix.cpp
+ src/compat_win32.cpp
+ src/cs_top_is_question.cpp
+ src/detect.cpp
+ src/enum_cleanup.cpp
+ src/EnumStructUnionParser.cpp
+ src/EnumStructUnionParser.h
+ src/flag_braced_init_list.cpp
+ src/flag_decltype.cpp
+ src/flag_parens.cpp
+ src/indent.cpp
+ src/keywords.cpp
+ src/lang_pawn.cpp
+ src/language_names.cpp
+ src/language_tools.cpp
+ src/logger.cpp
+ src/logmask.cpp
+ src/log_rules.cpp
+ src/mark_functor.cpp
+ src/mark_question_colon.cpp
+ src/md5.cpp
+ src/newlines.cpp
+ src/option.cpp
+ src/options_for_QT.cpp
+ src/output.cpp
+ src/parameter_pack_cleanup.cpp
+ src/parens.cpp
+ src/parent_for_pp.cpp
+ src/parsing_frame.cpp
+ src/parsing_frame_stack.cpp
+ src/pragma_cleanup.cpp
+ src/pcf_flags.cpp
+ src/punctuators.cpp
+ src/quick_align_again.cpp
+ src/remove_duplicate_include.cpp
+ src/remove_extra_returns.cpp
+ src/rewrite_infinite_loops.cpp
+ src/semicolons.cpp
+ src/sorting.cpp
+ src/space.cpp
+ src/tokenize_cleanup.cpp
+ src/tokenize.cpp
+ src/uncrustify.cpp
+ src/uncrustify_emscripten.cpp
+ src/uncrustify_types.cpp
+ src/unc_ctype.cpp
+ src/unc_text.cpp
+ src/unc_tools.cpp
+ src/unicode.cpp
+ src/universalindentgui.cpp
+ src/width.cpp
+ ${PROJECT_BINARY_DIR}/src/options.cpp
+ ${PROJECT_BINARY_DIR}/src/option_enum.cpp
+)
+
+set(uncrustify_headers
+ src/add_space_table.h
+ src/align_add.h
+ src/align_asm_colon.h
+ src/align_assign.h
+ src/align_braced_init_list.h
+ src/align_func_params.h
+ src/align_func_proto.h
+ src/align.h
+ src/align_eigen_comma_init.h
+ src/align_init_brace.h
+ src/align_left_shift.h
+ src/align_log_al.h
+ src/align_nl_cont.h
+ src/align_oc_decl_colon.h
+ src/align_oc_msg_colons.h
+ src/align_oc_msg_spec.h
+ src/align_preprocessor.h
+ src/align_same_func_call_params.h
+ src/align_stack.h
+ src/align_struct_initializers.h
+ src/align_tab_column.h
+ src/align_tools.h
+ src/align_trailing_comments.h
+ src/align_typedefs.h
+ src/align_var_def_brace.h
+ src/args.h
+ src/backup.h
+ src/base_types.h
+ src/brace_cleanup.h
+ src/braces.h
+ src/calculate_closing_brace_position.h
+ src/change_int_types.h
+ src/char_table.h
+ src/check_template.h
+ src/chunk.h
+ src/ChunkStack.h
+ src/combine.h
+ src/combine_fix_mark.h
+ src/combine_labels.h
+ src/combine_skip.h
+ src/combine_tools.h
+ src/compat.h
+ src/cs_top_is_question.h
+ src/detect.h
+ src/enum_cleanup.h
+ src/enum_flags.h
+ src/error_types.h
+ src/flag_braced_init_list.h
+ src/flag_decltype.h
+ src/flag_parens.h
+ src/indent.h
+ src/keywords.h
+ src/lang_pawn.h
+ src/language_names.h
+ src/language_tools.h
+ src/ListManager.h
+ src/logger.h
+ src/log_levels.h
+ src/logmask.h
+ src/log_rules.h
+ src/mark_functor.h
+ src/mark_question_colon.h
+ src/md5.h
+ src/newlines.h
+ src/option.h
+ src/options_for_QT.h
+ src/options.h
+ src/output.h
+ src/parameter_pack_cleanup.h
+ src/parens.h
+ src/parent_for_pp.h
+ src/parsing_frame.h
+ src/parsing_frame_stack.h
+ src/pragma_cleanup.h
+ src/pcf_flags.h
+ src/prototypes.h
+ src/punctuators.h
+ src/quick_align_again.h
+ src/remove_duplicate_include.h
+ src/remove_extra_returns.h
+ src/rewrite_infinite_loops.h
+ src/semicolons.h
+ src/sorting.h
+ src/space.h
+ src/symbols_table.h
+ src/token_enum.h
+ src/tokenize_cleanup.h
+ src/tokenize.h
+ src/unc_ctype.h
+ src/uncrustify.h
+ src/uncrustify_limits.h
+ src/uncrustify_types.h
+ src/unc_text.h
+ src/unc_tools.h
+ src/unicode.h
+ src/universalindentgui.h
+ src/width.h
+ src/windows_compat.h
+ ${PROJECT_BINARY_DIR}/src/option_enum.h
+ ${PROJECT_BINARY_DIR}/uncrustify_version.h
+)
+
+set(uncrustify_docs
+ "${PROJECT_SOURCE_DIR}/AUTHORS"
+ "${PROJECT_SOURCE_DIR}/BUGS"
+ "${PROJECT_SOURCE_DIR}/ChangeLog"
+ "${PROJECT_SOURCE_DIR}/COPYING"
+ "${PROJECT_SOURCE_DIR}/HELP"
+ "${PROJECT_SOURCE_DIR}/README.md"
+)
+
+add_executable(uncrustify ${uncrustify_sources} ${uncrustify_headers})
+add_dependencies(uncrustify generate_version_header)
+
+set_property(TARGET uncrustify APPEND PROPERTY
+ COMPILE_DEFINITIONS $<$<OR:$<CONFIG:Debug>,$<CONFIG:>>:DEBUG>
+)
+
+#
+# Generate uncrustify.1
+#
+configure_file(man/uncrustify.1.in uncrustify.1 @ONLY)
+
+#
+# Generate uncrustify.xml (katepart highlighting file)
+#
+add_custom_target(katehl
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/etc/uncrustify.xml
+)
+
+#
+# Tests
+#
+if(BUILD_TESTING)
+ enable_testing()
+ add_subdirectory(tests)
+endif()
+
+#
+# Coverage
+#
+OPTION(ENABLE_CODECOVERAGE "Enable code coverage testing support")
+if(ENABLE_CODECOVERAGE)
+ set(CODECOVERAGE_DEPENDS uncrustify)
+ include(${CMAKE_SOURCE_DIR}/cmake/CodeCoverage.cmake)
+endif(ENABLE_CODECOVERAGE)
+
+#
+# Build command to run uncrustify on its own sources
+#
+add_custom_target(format-sources)
+foreach(source IN LISTS uncrustify_sources uncrustify_headers)
+ get_filename_component(source_name ${source} NAME)
+ add_custom_target(format-${source_name}
+ COMMAND uncrustify
+ -c forUncrustifySources.cfg
+ -lCPP --no-backup ${source}
+ COMMENT "Formatting ${source}"
+ WORKING_DIRECTORY ${uncrustify_SOURCE_DIR}
+ )
+ add_dependencies(format-sources format-${source_name})
+endforeach()
+
+#
+# Package
+#
+set(CPACK_PACKAGE_NAME "uncrustify")
+set(CPACK_PACKAGE_VERSION "${UNCRUSTIFY_VERSION}")
+set(CPACK_PACKAGE_VENDOR "Ben Gardner")
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Code beautifier")
+set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/README.md")
+set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING")
+set(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/README.md")
+set(CPACK_SOURCE_IGNORE_FILES "/\\\\.git/;/\\\\.hg/;/tests/results/;/build.*/")
+if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
+ set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY FALSE)
+ set(CPACK_GENERATOR "ZIP")
+endif()
+include(CPack)
+
+#
+# Install
+#
+if(MSVC)
+ install(TARGETS uncrustify DESTINATION ".")
+ install(FILES ${uncrustify_docs}
+ DESTINATION "."
+ )
+ install(FILES "${PROJECT_SOURCE_DIR}/documentation/htdocs/index.html"
+ DESTINATION "doc"
+ )
+ install(DIRECTORY "${PROJECT_SOURCE_DIR}/etc/"
+ DESTINATION "cfg"
+ FILES_MATCHING PATTERN "*.cfg"
+ )
+else()
+ include(GNUInstallDirs)
+ install(TARGETS uncrustify
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ )
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/uncrustify.1"
+ DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
+ )
+ install(DIRECTORY "${PROJECT_SOURCE_DIR}/etc/"
+ DESTINATION "${CMAKE_INSTALL_DOCDIR}/examples"
+ FILES_MATCHING PATTERN "*.cfg"
+ )
+ install(FILES ${uncrustify_docs}
+ DESTINATION "${CMAKE_INSTALL_DOCDIR}"
+ )
+endif()
+
+#
+# Uninstall
+#
+get_directory_property(hasParent PARENT_DIRECTORY)
+if(NOT hasParent)
+ add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${PROJECT_SOURCE_DIR}/cmake/uninstall.cmake")
+endif()
+
+#
+# add to build the compile_commands.json file, to be used by clang-tidy
+#
+set(CMAKE_EXPORT_COMPILE_COMMANDS "ON" CACHE BOOL "to create the compile_commands.json file" FORCE)
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/CODEOWNERS b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/CODEOWNERS
index c29e4a1f..c29e4a1f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/CODEOWNERS
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/CODEOWNERS
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/CONTRIBUTING.md b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/CONTRIBUTING.md
new file mode 100644
index 00000000..c5766bd3
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/CONTRIBUTING.md
@@ -0,0 +1,94 @@
+# Contributing to Uncrustify
+
+## How to contribute
+
+There are lots of ways to contribute to Uncrustify:
+
+- Report Issues
+
+- Propose Features or Improvements
+
+- Submit Pull Requests
+
+## Making changes
+
+* Pull latest [master][master] and create a new branch:
+ - Branch name _should_ use lowercase, using `-` to separate words
+ and not `_`. Other special characters _should_ be avoided.
+ (However, feel free to use option names verbatim in branch names;
+ `_` _should_ be used when part of an option name.)
+ - A hierarchical structure _may_ be designated using `/`
+ (e.g. `area/topic`), although this is uncommon.
+ The last part of the name can be keywords like `bugfix`, `feature`,
+ `optim`, `docs`, `refactor`, `test`, etc.
+ - Branches _should_ be named after _what_ the change is about.
+ - Branches _should not_ be named after the issue number,
+ developer name, etc.
+
+* Organize your work:
+ - Specialize your branch to target only one thing.
+ Split your work in multiple branches if necessary.
+ - Make commits of logical units.
+ - Avoid "fix-up" commits.
+ Instead, rewrite your history so that the original commit is "clean".
+ - Try to write a [quality commit message][commits]:
+ + Separate subject line from body with a blank line.
+ + Limit subject line to 50 characters.
+ + Capitalize the subject line.
+ + Do not end the subject line with a period.
+ + Use imperative present tense in the subject line.
+ A proper subject can complete the sentence
+ "If applied, this commit will, [subject]".
+ + Wrap the body at 72 characters.
+ + Include motivation for the change
+ and contrast its implementation with previous behavior.
+ Explain the _what_ and _why_ instead of _how_.
+ - If the git diff command, or the diff part of the git gui,
+ don't produce accurate output, it might be necessary to add
+ some lines to the ~/.gitconfig file:
+ [diff]
+ algorithm = patience
+ [gui]
+ diffopts = --patience
+
+
+* Add or update unit tests:
+ - All behavioral changes should come with a unit test that verifies
+ that the new feature or fixed issue works as expected.
+ - Consider improving existing tests if it makes sense to do so.
+ - Any unused test number may be used,
+ however it is preferred to keep related tests together, if possible.
+ - Read [Writing Tests][tests] for more details.
+
+* Polish your work:
+ - The code should be clean, with documentation where needed.
+ - The change must be complete (no upcoming fix-up commits).
+ - Functional changes should always be accompanied by tests (see above).
+ Changes without tests should explain why tests are not present.
+ (Changes that are non-functional, such as documentation changes,
+ can usually omit tests without justification.)
+ - Any updates to `src/options.h`, including option descriptions, should be
+ accompanied by an update of the option documentation. This can be done by
+ building uncrustify and then running:
+ `./scripts/release_tool.py optiondocs path_to_uncrustify_binary`
+
+* Prepare a Pull Request (PR):
+ - To reduce the likelihood of conflicts and test failures,
+ consider rebasing your work on top of latest master before creating a PR.
+ - Verify that your code is working properly
+ by running `ctest` in your build directory.
+ (Changes that fail CI will _not_ be merged.
+ Running the tests locally will help to avoid this.)
+ You can change the level of logging by changing the line 104 and 109
+ of the file tests/test_uncrustify/test.py to another value.
+ - The PR title should represent _what_ is being changed
+ (a rephrasing of the branch name if set correctly).
+ - The PR description should document the _why_ the change needed to be done
+ and not _how_, which should be obvious by doing the code review.
+ - After commiting a new PR, one may have a look to the results:
+ https://coveralls.io/github/uncrustify/uncrustify
+
+
+[master]: https://github.com/uncrustify/uncrustify/tree/master
+[commits]: https://chris.beams.io/posts/git-commit/
+[tests]: https://github.com/uncrustify/uncrustify/wiki/Writing-Tests
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/COPYING b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/COPYING
index d60c31a9..d60c31a9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/COPYING
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/COPYING
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/ChangeLog b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/ChangeLog
new file mode 100644
index 00000000..a4492cf9
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/ChangeLog
@@ -0,0 +1,1690 @@
+Change highlights in uncrustify-0.78.0 (November 2023)
+-------------------------------------------------------------------------------
+ 50b364e02d4e6ebe5fa99d2d1de642f1a3fb6570
+ Added : align_nl_cont_spaces May 11 2023
+ 7c53d3cc66d939dc5b0de25868e947508e2353d5
+ Added : sp_after_bit_colon Jun 28 2023
+ Added : sp_before_bit_colon Jun 28 2023
+ b4af21a59630315f79ec28bc5449c31f48194111
+ Added : sp_between_ptr_ref Jul 14 2023
+ 84780fef16da0552e7f44785d63d23a2b0e6a8b4
+ Added : nl_min_after_func_body Aug 3 2023
+ d8931537292a5cb897cfd561adf581d27087bfe4
+ Added : sp_before_keyword_ptr_star Aug 10 2023
+ 8ffe999d3382c6f516372627bd529917bc6611ae
+ Added : sp_before_global_scope_ptr_star Aug 10 2023
+ Added : sp_before_scope_ptr_star Aug 10 2023
+ f493e4d9e003648753e6574ba2cd61f5c0bd1352
+ Added : sp_before_operator_ptr_star Aug 10 2023
+ Added : sp_before_qualifier_ptr_star Aug 10 2023
+ Removed : sp_before_keyword_ptr_star Aug 10 2023
+ adbb82b0f6e551ef976e64a1351ca0eb05acf932
+ Added : debug_use_the_exit_function_pop Aug 15 2023
+ 2e0e019dc28cac0844b5cff81d05859ee1a02394
+ Added : nl_max_after_func_body Aug 28 2023
+ cb44fe733a2c1e0391cfa5afdac77f7e66d688e1
+ Added : sp_cpp_lambda_argument_list_empty Sep 12 2023
+ e058aafd4ee5e407e250a6b921886d2c00d6a622
+ Added : align_func_proto_span_ignore_cont_lines Oct 21 2023
+
+Change highlights in uncrustify-0.77.0 (May 2023)
+-------------------------------------------------------------------------------
+ ea6c54eefe2f3272a4867d30920408c327167199
+ Added : sp_cmt_cpp_pvs Jan 28 2023
+ 74cf6ca40a0ce1b0d2499a92128ccde34bb48428
+ Added : sp_inside_rparen Feb 15 2023
+ Added : sp_func_call_user_inside_rparen Feb 15 2023
+ Added : sp_inside_rparens Feb 15 2023
+ 70fac8d68b8a697132a21c5c59a09fd91e0a0486
+ Added : sp_cmt_cpp_lint Mar 18 2023
+ 73d9ab72ce736e9689f56406302f6d62ddfc3835
+ Added : sp_qualifier_ptr_star_trailing Apr 13 2023
+ Added : sp_qualifier_unnamed_ptr_star Apr 13 2023
+ Added : sp_qualifier_ptr_star_func Apr 13 2023
+ 8b639a0b31637204da3d17dc29cc659def6f4cf7
+ Added : mod_add_force_c_closebrace_comment Apr 19 2023
+
+Change highlights in uncrustify-0.76.0 (November 2022)
+-------------------------------------------------------------------------------
+ 1aea3d1fcb55dc2ca40dfe2b1d548685a415ef3a
+ Added : nl_collapse_empty_body_functions Apr 29 2022
+ c7f5df072f56bb0e3a9b897e16b8e5fc283f3bcf
+ Added : set_numbering_for_html_output May 29 2022
+ 92e4a36a5a78d9af523008aeb71e7acfe199269a
+ Added : mod_infinite_loop Jun 22 2022
+ 6e807bcec01382b164562c8ae5939d2b5ee76877
+ Added : mod_short_int Jun 28 2022
+ Added : mod_long_int Jun 28 2022
+ Added : mod_unsigned_int Jun 28 2022
+ Added : mod_signed_int Jun 28 2022
+ baad5db83faf5fb771cea8898760ad582227ccda
+ Added : mod_int_prefer_int_on_left Jul 6 2022
+ Added : mod_int_long Jul 6 2022
+ Added : mod_int_signed Jul 6 2022
+ Added : mod_int_unsigned Jul 6 2022
+ Added : mod_int_short Jul 6 2022
+ e6a5458d32ca26c8b7d24f514115ebc36fce2348
+ Added : nl_oc_msg_args_min_params Jul 9 2022
+ 862369a315763ce1286732da3713414cd2533227
+ Added : pp_space_after Jul 14 2022
+ Added : pp_space_before Jul 14 2022
+ Removed : pp_space Jul 14 2022
+ be0d1664f901d1cbfa7bf7697a883adf4b709444
+ Added : nl_throw_expr Jul 19 2022
+ Added : mod_paren_on_throw Jul 19 2022
+ 9e65feefa2d66c5d08049e53468cae682f66800d
+ Added : debug_sort_the_tracks Aug 2 2022
+ b58f1298a3ddcd256ecb0688f6b18ca7c623f594
+ Removed : pp_space_before Aug 6 2022
+ a31e5c100de768b4fec45a3e1c2d1e008824b2c6
+ Added : nl_var_def_blk_end_func_top Aug 11 2022
+ Removed : nl_func_var_def_blk Aug 11 2022
+ 56e2159b29c372ebd1e240d427c842b5bb0b2147
+ Added : pp_indent_with_tabs Sep 6 2022
+ 35075d50967014dd7127640d2505bca5dc21dfe5
+ Added : pp_multiline_define_body_indent Sep 15 2022
+ 5b88110f5bb685a9b298b247207e32c305366d18
+ Added : nl_oc_msg_args_max_code_width Sep 20 2022
+ 0c8e5e827d3b5a007247ef3d5ed937cf18378680
+ Added : debug_decode_the_flags Oct 9 2022
+
+Change highlights in uncrustify-0.75.0 (May 2022)
+-------------------------------------------------------------------------------
+ 52131d9fa22fd0c655ae2510563ff85306d4bd27
+ Added : mod_move_case_return Nov 25 2021
+ d0008e933daca163ef8f7258f526e75fb8b5b160
+ Added : sp_ptr_star_func_type Dec 8 2021
+ a17751ae534cb7d1a8b505a111d7b8b50c9842d4
+ Added : pp_indent_at_level0 Dec 14 2021
+ 498c1b3a6c96c9dd8ec13a4c0f616acdb7a03cc5
+ Added : align_braced_init_list_thresh Dec 16 2021
+ Added : align_braced_init_list_span Dec 16 2021
+ 8e811b9a57bc43d280aa592d8838cff93227968e
+ Added : align_assign_on_multi_var_defs Dec 18 2021
+ 75d3c536789ef23d2d8568d891a4e3ba73aa7045
+ Added : sp_byref_paren Dec 24 2021
+ d8507bb212aa317dce0f51227b8fd862354e03c2
+ Added : sp_not_not Dec 28 2021
+ d9e2ae9aad5481f9da818909893e2f55d51ba392
+ Added : indent_ignore_comma_paren Jan 4 2022
+ Added : indent_ignore_comma_brace Jan 4 2022
+ 8eff5202a58732e17f063af8360ff3e2691713aa
+ Added : indent_ignore_bool_paren Jan 13 2022
+ 2c02f5c8285882ddf756992d842db12d0f98188a
+ Added : indent_ignore_arith Jan 18 2022
+ 0664cacee7689cf838425e83f38fb84f5e71bc63
+ Added : mod_full_paren_return_bool Jan 21 2022
+ Added : mod_full_paren_assign_bool Jan 21 2022
+ d593f257e88161a3ed1cff15b354c85e3da68992
+ Added : sp_type_colon Jan 25 2022
+ 026162b8da51660126863b42d00245e21a47d7c0
+ Removed : indent_ignore_comma_paren Jan 28 2022
+ Removed : indent_ignore_bool_paren Jan 28 2022
+ Removed : indent_ignore_comma_brace Jan 28 2022
+ 6cb50031c5e2e3681d69c3dafdbb865a5b6b6a2c
+ Added : indent_ignore_semicolon Feb 1 2022
+ b6f55dd25fb6a12c7f81c0090f8ee42e8823ee93
+ Added : sp_enum_brace Feb 2 2022
+ 8aa0522fcc2ad468f1122943443f5ebf426fffc1
+ Added : indent_ignore_before_class_colon Feb 4 2022
+ 133fe55d6fc0b2e1695bd7a70ccd6d2dcd1b2262
+ Added : indent_ignore_before_constr_colon Feb 4 2022
+ c95460809c74a73459c61712ff2d9142dff101d7
+ Added : indent_ignore_bool Feb 25 2022
+ b37091110063b5c24b64516a49af09b8ca3cc18c
+ Added : indent_ignore_first_continue Feb 25 2022
+ e84f08879a7cf53b0301099a64faadeacf04a3a5
+ Added : indent_ignore_assign Mar 1 2022
+ 6ef69ee2a359f2e1bd8517ba4af25b969951fa71
+ Added : indent_ignore_case_brace Mar 9 2022
+ 02a5e50419fd1bf7c9bf0ff9d208035b47db6fbf
+ Added : indent_namespace_inner_only Apr 12 2022
+ 9040b9f068a179c3a09e0cf202a5ed7f91b2a12b
+ Added : pp_warn_unbalanced_if Apr 15 2022
+ df2ef721c95105b62a9e0cb0e9985947a739a44b
+ Removed : sp_type_question Apr 30 2022
+
+Change highlights in uncrustify-0.74.0 (November 2021)
+-------------------------------------------------------------------------------
+ 4714d5d673d5b9c8f45d70c179f508d60130b18a
+ Added : nl_before_struct Mar 12 2021
+ dbb2903a94668e147b588d3eebc3be917ac4ebca
+ Added : nl_before_ignore_after_case Jun 22 2021
+ e97b93418c03cde680d6fd46209d7e43c5e09bfe
+ Added : sp_before_ptr_star_trailing Jul 1 2021
+ Added : sp_after_ptr_star_trailing Jul 1 2021
+ dd5a7c3b2ab64b903e888a264693a9edb7a98ee5
+ Added : sp_sparen_paren Jul 19 2021
+ 94941c2f9aa8952debab1f8257eb0625bc459392
+ Added : pp_indent_in_guard Jul 28 2021
+ 84d3b9276c007642c4bb73ff562008253e4fe014
+ Added : indent_single_line_comments_before Jul 31 2021
+ Added : indent_single_line_comments_after Jul 31 2021
+ Removed : indent_sing_line_comments Jul 31 2021
+ 0d956a006d64fddd4f8131e6a16a23f7e447cca3
+ Added : sp_after_ellipsis Jul 31 2021
+ 40bbb979ecf7ad36128150f5540a462c890d5e2c
+ Added : mod_remove_duplicate_include Aug 15 2021
+ 97d24f3a05a53521ff2ce94928534f4bab0cc0af
+ Added : sp_between_semi_for_empty Aug 22 2021
+ 63109e6253387480b8bfe7f73a7f2949865fc380
+ Added : nl_before_brace_open Aug 27 2021
+ 03c9ac261c9282b3cf5e92d69de70d6b4566d8e9
+ Added : cmt_trailing_single_line_c_to_cpp Sep 1 2021
+ 1525722486dba45aa053f2c83e3015fa64880443
+ Added : sp_ellipsis_parameter_pack Sep 16 2021
+ Added : sp_parameter_pack_ellipsis Sep 16 2021
+ 2e33ac4314dfbfc18c56ec694b0eba3e6a1318f5
+ Added : sp_byref_ellipsis Sep 21 2021
+ Added : sp_ptr_type_ellipsis Sep 21 2021
+ f19bf09cdce5822cf3d71065cb3900ea52f6e5c7
+ Added : indent_ctor_init_following Sep 30 2021
+ b1274c20bea3f8e2a8d6cd05cbb23c8d66f187a7
+ Added : sp_before_emb_cmt Oct 8 2021
+ Added : sp_num_after_emb_cmt Oct 8 2021
+ Added : sp_before_tr_cmt Oct 8 2021
+ Added : sp_num_before_emb_cmt Oct 8 2021
+ Added : sp_num_before_tr_cmt Oct 8 2021
+ Added : sp_after_emb_cmt Oct 8 2021
+ Removed : sp_before_tr_emb_cmt Oct 8 2021
+ Removed : sp_num_before_tr_emb_cmt Oct 8 2021
+ 563d72fcae6e0aad6e5f0ff998992a48a6767986
+ Added : pp_include_at_level Oct 11 2021
+ 28486dbadcc4d0ff9376776eb63f3c3bd800cf2d
+ Added : sp_return Oct 12 2021
+ 86105064d13fc60d14cfd134a8c3d402e7d27492
+ Added : indent_comment_align_thresh Oct 13 2021
+ 964db2ac20372c45621a55313cdfb1eeb8298800
+ Added : indent_comment Oct 18 2021
+ 92b9047256ece8d9ace2da5c743be2b9cc2b54d8
+ Added : align_func_proto_amp_style Oct 23 2021
+ Added : align_func_proto_star_style Oct 23 2021
+ 094c79e06f6ec3111684b37b77063cf7af658105
+ Added : indent_case_comment Oct 26 2021
+ 7eb595caa38ced024a42ba1602d69e0387b8e3a1
+ Added : indent_switch_body Nov 3 2021
+ cf845deb008b45783ff94a1986131eb180fb54a8
+ Added : sp_inside_for_close Nov 6 2021
+ Added : sp_inside_for Nov 6 2021
+ Added : sp_inside_for_open Nov 6 2021
+ 2caaa17866c3b421de7e28670e85c8f8dade5a77
+ Added : indent_ignore_label Nov 10 2021
+ d8436ef370027bcfd289b19037c39ffdaf0ad4ff
+ Added : sp_ptr_star_func_var Nov 15 2021
+
+Change highlights in uncrustify-0.73.0 (May 2021)
+-------------------------------------------------------------------------------
+
+ b514f25120b12db7b1ca57cdb93dd929a5bf43c4
+ Added : indent_before_class_colon Nov 16 2020
+ 39c969b69663f6e6cee9673e23d349a308edc44a
+ Added : sp_cmt_cpp_region Dec 9 2020
+ 9ca37d0c32729570de2e51c97338bc567e124ae3
+ Added : cmt_sp_before_doxygen_javadoc_tags Dec 24 2020
+ Added : cmt_align_doxygen_javadoc_tags Dec 24 2020
+ 84e2c750d19b47bbe2547141b092855ec1f64424
+ Added : cmt_reflow_fold_regex_file Dec 24 2020
+ 3a8e33a12839ca3bac2e1e0b49eb279362a2ab89
+ Added : processing_cmt_as_regex Dec 31 2020
+ c622135751824705979d37681fe16d9a60e3d77a
+ Added : cmt_reflow_indent_to_paragraph_start Jan 9 2021
+ 9c0799aa096b68550507980a32a529099caf97c5
+ Added : sp_cpp_lambda_argument_list Jan 19 2021
+ 02054b1085166903e8c1384308ac7922cb57bd59
+ Added : nl_do_leave_one_liners Jan 29 2021
+ 6a4d27914fca0c64273fad979355e16021626f8a
+ Added : debug_truncate Feb 7 2021
+ a711e96ef7be6afc9f014c4c7e1e5ea5347aad0d
+ Added : indent_comma_brace Mar 9 2021
+
+Change highlights in uncrustify-0.72.0 (November 2020)
+-------------------------------------------------------------------------------
+ new command option:
+ --debug-csv-format : Dump debug info to file in csv-delimited format.
+
+ b29dfb58d6bebb79a961d0e709543a152d260dbc
+ Added : nl_inside_empty_func Aug 4 2020
+ 5068a4a78d7770a7292ea7a016ab7ca0bf49cbf7
+ Added : debug_timeout Sep 1 2020
+ cf3e5acfb4d55b47b25b7e7daa2844e2998b47cc
+ Added : sp_inside_square_empty Sep 8 2020
+ b66c26c669bf9752f468115f1e6444481c0b9e6d
+ Added : align_eigen_comma_init Sep 9 2020
+ 7b5fd82fa5d6fc035ddfb7c087c5aeb7cf6f4bd7
+ Added : pos_shift Sep 16 2020
+ b61b7952835be3451cd1131baeda7b54cb61a50e
+ Added : donot_indent_func_def_close_paren Sep 26 2020
+ 85001632261196dc1c2f3760dc9180e4c443f9ba
+ Added : donot_add_nl_before_cpp_comment Oct 14 2020
+
+Change highlights in uncrustify-0.71.0 (May 2020)
+-------------------------------------------------------------------------------
+
+ 6bcfb640d908038402869cb3be7bd80adcdb4708
+ Added : align_oc_msg_colon_xcode_like Nov 29 2019
+ 2fd5aaf255e1d0369842f54ae8d444bcbc079c7b
+ Added : indent_compound_literal_return Nov 19 2019
+ 4b74315b6cf8e91801b663c4171c1e0a9e12ea5b
+ Added : indent_sparen_extra Nov 19 2019
+ f012dd24e2d116d867404667ce15c3309466046f
+ Added : sp_word_brace_init_lst Jan 21 2020
+ Removed : sp_word_brace Jan 21 2020
+ 466b8bcf5f8ee04686d2d7af62b5ce76241c777d
+ Added : nl_func_call_args Jan 24 2020
+ 807e27e81112f28ae71b21f43718a1b859ad473a
+ Added : sp_before_oc_proto_list Feb 4 2020
+ 94f18ac9c0c7c7fab64f14425aea69f0f49bb240
+ Added : indent_off_after_assign Feb 7 2020
+ 25e20f9e4ab389c06fc76bcf0dcb3fe07ab91aea
+ Added : indent_off_after_return Feb 7 2020
+ cee950462787ab3b7725c5fb77fa38b992527e99
+ Added : indent_oc_inside_msg_sel Feb 10 2020
+ 2d04118314be95654f29fb32ae50b8cd46af8682
+ Added : nl_func_call_args_multi_line_ignore_closures Dec 17 2019
+ 369192830c01beedcfe87c432f9c26637c1e6587
+ Added : indent_inside_ternary_operator Dec 9 2019
+ 100db726b938d263c6c7f07530385dec0cdd711e
+ Added : use_form_feed_no_more_as_whitespace_character Feb 21 2020
+ 24e27fe8cdda55e422b1db659f255da353b3022c
+ Added : debug_max_number_of_loops Feb 27 2020
+ 30da6cafa6b0819c48a02513cadbc256a5b450c5
+ Added : debug_line_number_to_protocol Mar 17 2020
+ f5d8ee093eb521ecc0c57060b0009dd5f05e039e
+ Added : mod_sort_incl_import_prioritize_filename Mar 27 2020
+ 8d595cb0721b299db8f1169c22d38d45df899a51
+ Added : mod_sort_incl_import_ignore_extension Mar 27 2020
+ 9f8b7754f03aa970ede730a5cd4e2cbd94f139cc
+ Added : mod_sort_incl_import_prioritize_extensionless Mar 27 2020
+ 6d5829551886ee9e643e5d6019c5389dfa738c3b
+ Added : mod_sort_incl_import_prioritize_angle_over_quotes Mar 27 2020
+ 27b33d779e7aa33c1ebc39a52e54c3a95bc153d4
+ Added : mod_sort_incl_import_grouping_enabled Mar 27 2020
+ ac62be9498fa195a54c0e2c76c438c641d68a917
+ Added : disable_processing_nl_cont Apr 12 2020
+ e2b17b724e00c6180c6bd6cb5b592e969c47b6a9
+ Added : nl_before_opening_brace_func_class_def Apr 22 2020
+ 981c761da5a4a71b059361a883c4bfff69148c49
+ Added : nl_before_whole_file_endif Apr 24 2020
+ Added : nl_after_whole_file_endif Apr 24 2020
+ Added : nl_after_whole_file_ifdef Apr 24 2020
+ Added : nl_before_whole_file_ifdef Apr 24 2020
+ d55e9d21cd6377a38f741854baf1a561b984de36
+ Added : nl_func_call_end Apr 29 2020
+
+Change highlights in uncrustify-0.70.1 (November 2019)
+-------------------------------------------------------------------------------
+
+ 5114ea856acd79cbf52fd4261b83d423fafd98da
+ Added : nl_before_member Nov 17 2019
+ Added : nl_after_member Nov 17 2019
+ 1e911250996a7138e33006af1b664362b255f4b5
+ Added : nl_template_end_multi_line Nov 17 2019
+ Added : nl_template_start_multi_line Nov 17 2019
+ Added : nl_template_args_multi_line Nov 17 2019
+ 948bc227c46f89207346ad596e6199acb12d162f
+ Added : sp_before_vardef_square Nov 18 2019
+ 1ff6fc2da0b1cdef35089a2d6ac3364fbba304be
+ Added : nl_template_start Nov 21 2019
+ Added : nl_template_args Nov 21 2019
+ Added : nl_template_end Nov 21 2019
+ Removed : nl_template_end_multi_line Nov 21 2019
+ Removed : nl_template_start_multi_line Nov 21 2019
+ Removed : nl_template_args_multi_line Nov 21 2019
+ 2df82073bb1e3bc85f75c2165a541ba906f76b8d
+ Added : indent_macro_brace Nov 18 2019
+ 8cb5f1be52bcbcca4148cf0514b103dec5313c55
+ Added : indent_switch_break_with_case Nov 25 2019
+
+Change highlights in uncrustify-0.70.0 (is not released)
+-------------------------------------------------------------------------------
+
+ 710b9b90d063e1fac853b77ad9509bed37ff31ee
+ Added : mod_sort_case_sensitive May 12 2019
+ 40c028454904f4fc87bd93b9703eaeb58fa57dd0
+ Added : sp_before_square_asm_block Jul 29 2019
+ b9b7f2fffb2c73925906ca7e5c8536d03c93c4bc
+ Added : nl_multi_line_sparen_open Aug 3 2019
+ Added : nl_multi_line_sparen_close Aug 3 2019
+ 83a014197001ea815f92d977fc30aa36dec39e1b
+ Added : sp_cpp_lambda_square_paren Aug 20 2019
+ Added : sp_cpp_lambda_square_brace Aug 20 2019
+ Added : sp_cpp_lambda_paren_brace Aug 20 2019
+ Removed : sp_cpp_lambda_paren Aug 20 2019
+ 8b6455c08c4f70b04b03b48c32fa14b9014354b4
+ Added : use_sp_after_angle_always Sep 13 2019
+ 264ec3c988b5667c971b0d6508b17d0c9337c82c
+ Added : sp_cpp_lambda_fparen Sep 13 2019
+ 883ccefc3bf8c8cdf6b159f280e22c2d72ce83f5
+ Added : sp_func_type_paren Oct 11 2019
+ 8284db41edbb777829f26d247470c75d3d317641
+ Added : nl_before_namespace Oct 8 2019
+ Added : nl_after_namespace Oct 8 2019
+ 3af190ceda3f8025028b5f8aae7541d35bda39c7
+ Added : nl_template_class_def Oct 2 2019
+ Added : nl_template_func_def_special Oct 2 2019
+ Added : nl_template_using Oct 2 2019
+ Added : nl_template_func_def Oct 2 2019
+ Added : nl_template_class_decl Oct 2 2019
+ Added : nl_template_var Oct 2 2019
+ Added : nl_template_class_decl_special Oct 2 2019
+ Added : nl_template_func Oct 2 2019
+ Added : nl_template_func_decl_special Oct 2 2019
+ Added : nl_template_func_decl Oct 2 2019
+ Added : nl_template_class_def_special Oct 2 2019
+ e9bc08c3baa3b7545a592b5e1d0d23e530c58b7f
+ Added : sp_trailing_return Oct 23 2019
+ d783ecfe7f08b525eb882ff3a7c6525d8866d54b
+ Added : nl_oc_before_interface Oct 28 2019
+ Added : nl_oc_before_implementation Oct 28 2019
+ Added : nl_oc_before_end Oct 28 2019
+ 3741e59342c5741020b84eba147b0c1dfde0154b
+ Added : indent_func_def_param_paren_pos_threshold Nov 6 2019
+ 829b4124c02e36156489d06a8b33e3552e58d30b
+ Added : sp_brace_close_while Nov 8 2019
+ Added : sp_while_paren_open Nov 8 2019
+ Added : sp_do_brace_open Nov 8 2019
+ ea6f4ac515c0ad5651be020a3295dcae01c3baf9
+ Added : nl_create_list_one_liner Nov 11 2019
+
+Change highlights in uncrustify-0.69.0 (May 2019)
+-------------------------------------------------------------------------------
+
+Changing option:
+ - The option name is changed from 'align_assign_func_proto' to 'align_assign_func_proto_span'
+ Mar 4 17:19:40 2019
+
+New options:
+ - align_constr_value_gap Apr 24 2019
+ - align_constr_value_span Apr 24 2019
+ - align_constr_value_thresh Apr 24 2019
+ - align_func_proto_thresh Apr 5 2019
+ - indent_col1_multi_string_literal Mar 31 2019
+ - sp_paren_noexcept Jan 13 2019
+ - sp_paren_qualifier Jan 11 2019
+ - sp_type_question Jan 11 2019
+ - sp_inside_angle_empty Dec 27 2018
+ - nl_fdef_brace_cond Nov 29 2018
+ - nl_func_call_start Nov 29 2018
+
+
+Change highlights in uncrustify-0.68 (November 2018)
+-------------------------------------------------------------------------------
+
+New options:
+ - align_same_func_call_params_span Nov 9
+ - align_same_func_call_params_thresh Nov 9
+ - nl_class_leave_one_liner_groups Oct 17
+ - nl_inside_namespace Aug 26
+ - sp_return_brace Aug 21
+ - align_assign_decl_func Jul 24
+ - sp_brace_brace Jul 23
+ - sp_after_decltype Jul 22
+ - sp_decltype_paren Jul 22
+ - align_right_cmt_same_level Jul 14
+ - nl_oc_mdef_brace Jul 8
+ - mod_enum_last_comma Jul 8
+ - sp_type_ellipsis Jun 15
+ - sp_paren_ellipsis Jun 15
+ - sp_sizeof_ellipsis Jun 15
+ - sp_sizeof_ellipsis_paren Jun 15
+ - indent_continue_class_head May 30
+
+Bugfix:
+ - Issue # 1709, 1713, 1729, 1736, 1739, 1740, 1748, 1752, 1755, 1758, 1760,
+ 1762, 1763, 1776, 1778, 1782, 1783, 1784, 1786, 1788, 1789, 1804, 1827,
+ 1832, 1838, 1839, 1854, 1865, 1867, 1870, 1875, 1876, 1888, 1904, 1916,
+ 1917, 1918, 1919, 1942, 1946, 1947, 1958, 1960, 1962, 1965, 1969, 1979,
+ 1982, 1985, 1997, 2000, 2001, 2009, 2014, 2015, 2024, 2028, 2032, 2033,
+ 2035, 2037, 2046, 2055
+
+
+Change highlights in uncrustify-0.67 (May 2018)
+-------------------------------------------------------------------------------
+
+Changing option:
+
+Removed option:
+
+New options:
+ - indent_first_for_expr Apr 29
+ - indent_semicolon_for_paren Apr 29
+ - nl_oc_interface_brace Apr 13
+ - nl_oc_implementation_brace Apr 13
+ - indent_cpp_lambda_only_once Mar 24
+ - indent_cs_delegate_body Mar 18
+ - sp_after_noexcept Mar 18
+ - indent_single_newlines Mar 6
+ - sp_after_ptr_block_caret Feb 24
+ - sp_after_oc_synchronized Feb 24
+ - sp_inside_square_oc_array Feb 23
+ - sp_oc_catch_paren Feb 23
+ - sp_oc_catch_brace Feb 23
+ - sp_oc_brace_catch Feb 23
+ - nl_oc_catch_brace Feb 23
+ - nl_oc_brace_catch Feb 23
+ - nl_cs_property_leave_one_liners Feb 16
+ - indent_member_single Feb 10
+ - sp_func_call_user_paren_paren Feb 5
+ - sp_func_call_user_inside_fparen Feb 5
+ - sp_inside_braces_oc_dict Feb 5
+ - nl_create_func_def_one_liner Jan 17
+ - nl_namespace_two_to_one_liner Jan 15
+ - nl_squeeze_paren_close Jan 15
+ - sp_fparen_brace_initializer Jan 12
+ - sp_cpp_before_struct_binding 2018 Jan 12
+ - indent_align_paren Dec 14
+ - nl_tsquare_brace Dec 9
+ - indent_single_after_return Nov 28
+ - indent_off_after_return_new Nov 28
+ - indent_ignore_asm_block 2017 Nov 05
+
+New keyword:
+ - __unused Apr 21
+ - @synchronized Feb 24
+ - @available Feb 23
+ - fixed Feb 16
+ - @protected Feb 4
+ - @public Feb 4
+ - __autoreleasing Feb 4
+ - __bridge Feb 4
+ - __bridge_retained Feb 4
+ - __bridge_transfer Feb 4
+ - __declspec Feb 4
+ - __has_include Feb 4
+ - __has_include_next Feb 4
+ - __strong Feb 4
+ - __typeof Feb 4
+ - __unsafe_unretained Feb 4
+ - __weak Feb 4
+ - self Feb 4
+ - unsafe_unretained 2018 Feb 4
+ - where 2017 Dec 6
+
+Bugfix:
+ - Debian issue #881249 "FTBFS on armel/i386/mips64el/s390x: cpp_33057 fails"
+ is fixed
+ - Adopt many bugfix and tests from UT:
+ 10000, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009, 10011,
+ 10012, 10013, 10014, 10015, 10016, 10018, 10019, 10020, 10021, 10022,
+ 10023, 10024, 10025, 10027, 10028, 10029, 10030, 10031, 10032, 10033,
+ 10034, 10035, 10036, 10039, 10044, 10045, 10046, 10047, 10048, 10049,
+ 10050, 10051, 10052, 10053, 10054, 10054, 10055, 10056, 10057, 10058,
+ 10060, 10062, 10063, 10065, 10066, 10067, 10069, 10070, 10071, 10072,
+ 10073, 10074, 10075, 10076, 10077, 10078, 10079, 10080, 10100, 10102,
+ 10103, 10104,
+ 60001, 60002, 60003, 60004, 60005, 60006, 60007, 60008, 60009, 60011,
+ 60012, 60013, 60014, 60015, 60016, 60017, 60018, 60019, 60020, 60021,
+ 60022, 60023, 60024, 60025, 60026, 60027, 60028, 60029, 60030, 60031,
+ 60032, 60033, 60034, 60036, 60037, 60038, 60039, 60040
+
+New:
+ - Add crash handling for Windows
+
+Change highlights in uncrustify-0.66 (November 2017)
+-------------------------------------------------------------------------------
+
+New options:
+ - sp_arith_additive Oct 17
+ - sp_angle_colon Oct 17
+ - nl_func_call_empty Sep 30
+ - nl_func_call_paren_empty Sep 30
+ - align_func_params_span Sep 29
+ - align_func_params_thresh Sep 29
+ - align_func_params_gap Sep 29
+ - nl_func_call_paren Jul 25
+ - indent_paren_after_func_def Jul 21
+ - indent_paren_after_func_decl Jul 21
+ - indent_paren_after_func_call Jul 21
+ - nl_func_paren_empty Jul 07
+ - nl_func_def_paren_empty Jul 07
+ - indent_switch_pp Jun 22
+ - pp_indent_case Jun 22
+ - pp_indent_func_def Jun 22
+ - pp_indent_extern Jun 22
+ - pp_indent_brace Jun 22
+
+Changing option:
+ - The option name is changed from 'align_number_left' to 'align_number_right'
+
+Bugfix:
+ - Issue # 548, 1098, 1103, 1108, 1112, 1127, 1134, 1158, 1165, 1170, 1187,
+ 1200, 1203, 1236, 1249, 1310, 1315, 1340, 1349, 1352, 1366 are fixed
+
+Change highlights in uncrustify-0.65 (May 2017)
+-------------------------------------------------------------------------------
+
+New options:
+ - nl_before_if_closing_paren May 12
+ - sp_after_type_brace_init_lst_open May 09
+ - sp_before_type_brace_init_lst_close May 09
+ - sp_inside_type_brace_init_lst May 09
+ - sp_type_brace_init_lst May 09
+ - nl_type_brace_init_lst May 09
+ - nl_type_brace_init_lst_open May 09
+ - nl_type_brace_init_lst_close May 09
+ - mod_sort_oc_property_class_weight May 05
+ - mod_full_brace_nl_block_rem_mlcond Mar 17
+ - sp_inside_newop_paren_open Mar 13
+ - sp_inside_newop_paren Mar 13
+ - sp_after_newop_paren Mar 13
+ - sp_inside_newop_paren_close Mar 13
+ - pp_ignore_define_body Feb 18
+ - sp_enum_colon Feb 13
+ - nl_enum_class Feb 13
+ - nl_enum_class_identifier Feb 13
+ - nl_enum_identifier_colon Feb 13
+ - nl_enum_colon_type Feb 13
+ - indent_param Feb 01
+ - include_category_0 Jan 24
+ - include_category_1 Jan 24
+ - include_category_2 2017 Jan 24
+ - force_tab_after_define 2016 Dec 29
+ - nl_max_blank_in_func Nov 26
+ - indent_ternary_operator Nov 24
+ - indent_using_block Oct 20
+
+New:
+ - emscripten interface
+ - removal of autogen / configure build
+ - list options that are now AT_UNUM type
+ - change option name from align_number_left to align_number_right
+
+Removed option:
+ - dont_protect_xcode_code_placeholders
+
+Removed MS calling convention keywords:
+ - __cdecl, __clrcall, __fastcall, __stdcall, __thiscall, __vectorcall
+
+Bugfix:
+ - Issue # 324, 398, 404, 497, 525, 575, 633, 638, 643, 646, 663, 666,
+ 679, 682, 687, 726, 752, 753, 793, 815, 825, 842, 857, 859, 869, 870,
+ 889, 902, 916, 917, 928, 935, 938, 940, 972, 1002, 1005, 1020, 1030,
+ 1032, 1041, 1068, 1117, 1139 are fixed
+ - Proposal #381, 876 are adopted.
+
+Change highlights in uncrustify-0.64 (October 2016)
+-------------------------------------------------------------------------------
+
+New:
+ - Support for new C#6 language elements. (Bug #672)
+ Expression filter with the keyword 'when' in try/catch is now supported.
+ Null conditional operator (?.) is now supported.
+
+New options:
+ - align_var_class_span Aug 23
+ - align_var_class_thresh Aug 23
+ - align_var_class_gap Aug 23
+ - pos_enum_comma Aug 14
+ - indent_token_after_brace Aug 3
+ - cmt_multi_first_len_minimum Aug 2
+ - nl_enum_own_lines Aug 1
+ - nl_func_class_scope Jul 26
+ - nl_squeeze_ifdef_top_level Jul 24
+ - sp_super_paren Jul 21
+ - sp_this_paren Jul 21
+ - sp_angle_paren_empty Jul 21
+ - sp_after_operator_sym_empty Jul 20
+ - sp_skip_vbrace_tokens Jul 13
+ - indent_cs_delegate_brace Jul 9
+ - cmt_insert_before_inlines Jun 29
+ - cmt_insert_before_ctor_dtor Jun 29
+ - mod_full_brace_if_chain_only Jun 28
+ - nl_func_decl_start_multi_line Jun 28
+ - nl_func_def_start_multi_line Jun 28
+ - nl_func_decl_args_multi_line Jun 28
+ - nl_func_def_args_multi_line Jun 28
+ - nl_func_decl_end_multi_line Jun 28
+ - nl_func_def_end_multi_line Jun 28
+ - nl_func_call_start_multi_line Jun 28
+ - nl_func_call_args_multi_line Jun 28
+ - nl_func_call_end_multi_line Jun 28
+ - use_options_overriding_for_qt_macros Jun 16
+ - sp_func_def_paren_empty Jun 15
+ - sp_func_proto_paren_empty Jun 15
+ - sp_func_class_paren_empty Jun 15
+ - nl_oc_block_brace May 26
+ - nl_split_if_one_liner May 26
+ - nl_split_for_one_line May 24
+ - nl_split_while_one_liner May 24
+ - nl_after_func_class_proto May 12
+ - nl_after_func_class_proto_group May 12 2016
+
+Bugfix:
+ - Bugs #620, #651, #654, #662, #663, #664, #670, #671, #672, #674 are fixed
+ - Issues #322, #323, #359, #405, #408, #412, #478, #481, #495, #503, #509, #512, #513, #514,
+ #518, #519, #520, #521, #522, #524, #529, #530, #533, #536, #539, #542,
+ #543, #544, #546, #568 are fixed
+ - Proposals #409, #477 are implemented
+ - Issue #411 is partialy fixed
+
+
+Change highlights in uncrustify-0.63 (Mar 2016)
+-------------------------------------------------------------------------------
+
+New:
+ - The branch uncrustify4Qt is now merged.
+ - A configuration file for the sources of uncrustify is provided:
+ forUncrustifySources.cfg
+ - Some considerations about the problem "stable" are described at
+ forUncrustifySources.txt
+ - Simplify expressions such as:
+ if ((cpd.lang_flags & LANG_PAWN) != 0)
+ to
+ if (cpd.lang_flags & LANG_PAWN)
+ - introduce CT_STDCALL to work with typedef void (__stdcall *func)(); Bug # 633
+ - introduce some more MS calling conventions: __cdecl, __clrcall, __fastcall, __thiscall, __vectorcall
+ https://msdn.microsoft.com/en-us/library/984x0h58.aspx
+
+New options:
+ - nl_before_func_class_def Apr 16
+ - nl_before_func_class_proto Apr 16
+ - nl_before_func_body_def Apr 25
+ - nl_before_func_body_proto Apr 25
+ - use_indent_continue_only_once Mar 7 2016
+
+Bugfix:
+ - Simplify some more expressions.
+ - Bugfix for win32 for the flags.
+ - make test c/ 00617 stable
+ - make test c/ 02501 stable
+ - The issue #467 and the test tests/output/c/02100-i2c-core.c are not yet fixed.
+ - uncrustify all the sources with forUncrustifySources.cfg
+ - better descriptions for options
+ - bug #631 is fixed
+ - produce a better dump output
+ - DbConfig::configuredDatabase()->apply(db); is NOT a declaration of a variable
+ - bug # 657 is fixed: change 'mode' if necessary for 'pos_class_comma'
+ - fix 3 calls of unc_add_option for "align_oc_msg_colon_span",
+ "indent_oc_block_msg", "indent_oc_msg_colon"
+ - bugs #664, #662, #654, #653, #651 and #633 are fixed
+
+Reverse:
+ - space: drop vbrace tokens... 2014-09-01 06:33:17
+ I cannot anderstand this change.
+ It makes some troubles: Bug # 637
+ No test file for it found
+ Reverse the change until more informations could be found
+
+Change:
+ - CT_DC_MEMBER + CT_FOR into CT_DC_MEMBER + CT_FUNC_CALL
+
+Some more Qt-macros:
+ - Q_GADGET
+ - for_each
+
+
+Change highlights in uncrustify4Qt-0.62 (Oct 2015)
+-------------------------------------------------------------------------------
+This is an extention of uncrustify to support Qt-macros
+ - Q_OBJECT
+ - Q_EMIT
+ - SLOT
+ - SIGNAL
+ - Q_FOREACH
+ - Q_FOREVER
+
+Change highlights in uncrustify4Qt-0.62 (Oct 2015)
+-------------------------------------------------------------------------------
+New options:
+ - use_indent_func_call_param
+
+
+Change highlights in uncrustify-0.62 (2 Feb 2016)
+-------------------------------------------------------------------------------
+This release is just a roll-up of the past year.
+Many bugs were squashed and many options were added.
+
+New options:
+ - string_replace_tab_chars
+ - disable_processing_cmt
+ - enable_processing_cmt
+ - enable_digraphs
+ - indent_class_on_colon
+ - indent_shift
+ - indent_min_vbrace_open
+ - indent_vbrace_open_on_tabstop
+ - sp_after_mdatype_commas
+ - sp_before_mdatype_commas
+ - sp_between_mdatype_commas
+ - sp_cmt_cpp_doxygen
+ - sp_cmt_cpp_qttr
+ - sp_between_new_paren
+ - nl_while_leave_one_liners
+ - nl_synchronized_brace
+ - nl_before_synchronized
+ - nl_after_synchronized
+ - nl_after_label_colon
+
+
+Change highlights in uncrustify-0.61 (22 Dec 2014)
+-------------------------------------------------------------------------------
+This release is just a roll-up of the past two years.
+Many bugs were squashed and many options were added.
+
+New options:
+ - indent_paren_open_brace
+ - indent_namespace_single_indent
+ - indent_constr_colon
+ - indent_oc_msg_prioritize_first_colon
+ - indent_oc_block_msg_xcode_style
+ - indent_oc_block_msg_from_keyword
+ - indent_oc_block_msg_from_colon
+ - indent_oc_block_msg_from_caret
+ - indent_oc_block_msg_from_brace
+ - sp_enum_paren
+ - sp_cparen_oparen
+ - sp_after_ptr_star_qualifier
+ - sp_after_constr_colon
+ - sp_before_constr_colon
+ - sp_fparen_dbrace
+ - sp_word_brace
+ - sp_word_brace_ns
+ - sp_cond_colon_before
+ - sp_cond_colon_after
+ - sp_cond_question_before
+ - sp_cond_question_after
+ - sp_cond_ternary_short
+ - align_keep_extra_space
+ - nl_cpp_lambda_leave_one_liners
+ - nl_brace_square
+ - nl_brace_fparen
+ - nl_constr_init_args
+ - nl_cpp_ldef_brace
+ - nl_paren_dbrace_open
+ - nl_constr_colon
+ - pos_constr_comma
+ - pos_constr_colon
+ - mod_add_long_namespace_closebrace_comment
+ - cmt_convert_tab_to_spaces
+
+
+Change highlights in uncrustify-0.60 (1 Jan 2013)
+-------------------------------------------------------------------------------
+Objective C support was greatly enhanced in this release.
+Many bugs were squashed and many options were added.
+
+New options:
+ - align_oc_msg_colon_first
+ - align_pp_define_together
+ - indent_ctor_init_leading
+ - indent_func_def_force_col1
+ - indent_oc_block
+ - indent_oc_block_msg
+ - indent_oc_msg_colon
+ - ls_code_width
+ - nl_after_annotation
+ - nl_before_return
+ - nl_between_annotation
+ - nl_brace_struct_var
+ - nl_oc_msg_args
+ - nl_oc_msg_leave_one_liner
+ - nl_remove_extra_newlines
+ - nl_scope_brace
+ - nl_typedef_blk_end
+ - nl_typedef_blk_in
+ - nl_typedef_blk_start
+ - nl_unittest_brace
+ - nl_var_def_blk_end
+ - nl_var_def_blk_in
+ - nl_var_def_blk_start
+ - nl_version_brace
+ - sp_after_for_colon
+ - sp_after_oc_dict_colon
+ - sp_after_oc_msg_receiver
+ - sp_after_oc_property
+ - sp_after_throw
+ - sp_after_tparen_close
+ - sp_annotation_paren
+ - sp_before_for_colon
+ - sp_before_oc_dict_colon
+ - sp_before_pp_stringify
+ - sp_before_template_paren
+ - sp_cpp_lambda_assign
+ - sp_cpp_lambda_paren
+ - sp_extern_paren
+ - sp_inside_sparen_open
+ - sp_inside_tparen
+ - sp_permit_cpp11_shift
+ - sp_ptr_star_paren
+
+Changed default:
+ - sp_pp_stringify = ignore (was add)
+
+See commit.log for details.
+
+
+Change highlights in uncrustify-0.59 (4 Oct 2011)
+-------------------------------------------------------------------------------
+The biggest change in this release was to rework the string handling to add
+proper support for UTF-8 and UTF-16.
+
+New options:
+ - nl_case_colon_brace
+ - indent_ctor_init
+ - sp_before_tr_emb_cmt
+ - sp_num_before_tr_emb_cmt
+ - utf8_bom
+ - utf8_byte
+ - utf8_force
+ - sp_after_new
+ - nl_after_struct
+ - nl_after_class
+ - nl_property_brace
+ - nl_after_func_body_class
+
+See commit.log for details.
+
+
+Change highlights in uncrustify-0.58 (19 May 2011)
+-------------------------------------------------------------------------------
+New options:
+ - tok_split_gte
+ - sp_catch_paren
+ - sp_scope_paren
+ - sp_version_paren
+ - cmt_insert_oc_msg_header
+
+See commit.log for details.
+
+
+Change highlights in uncrustify-0.57 (25 Nov 2010)
+-------------------------------------------------------------------------------
+New options:
+ - sp_func_call_paren_empty
+ - nl_func_def_start
+ - nl_func_def_start_single
+ - nl_func_def_paren
+ - nl_func_def_args
+ - nl_func_def_empty
+ - nl_func_def_end
+ - nl_func_def_end_single
+
+See commit.log for details.
+
+
+Change highlights in uncrustify-0.56 (27 Mar 2010)
+-------------------------------------------------------------------------------
+New options:
+ - indent_continue
+ - indent_cmt_with_tabs
+ - indent_first_bool_expr
+ - indent_braces_no_class
+ - indent_braces_no_struct
+ - indent_var_def_cont
+ - sp_assign_default
+ - sp_after_oc_at_sel_parens
+ - sp_inside_oc_at_sel_parens
+ - align_oc_decl_colon
+ - nl_after_vbrace_close
+ - nl_using_brace
+ - mod_full_brace_using
+
+See commit.log for details.
+
+
+Change highlights in uncrustify-0.55 (27 Nov 2009)
+-------------------------------------------------------------------------------
+ - See the GIT history for a full list of changes
+ - Fix align_left_shift with array indexes
+ - Objective C changes (Andre Berg)
+ - Fix a close paren added inside a preprocessor line
+ - Fix handling of 'mutable'
+ - New options
+ - sp_endif_cmt
+ - nl_func_decl_start_single
+ - nl_func_decl_end_single
+ - nl_after_vbrace_open_empty
+ - Improved options
+ - sp_before_ellipsis
+ - nl_struct_brace
+ - align_on_tabstop
+ - align_with_tabs
+ - align_left_shift
+ - nl_func_type_name
+ - nl_create_if_one_liner
+ - pos_assign
+
+
+Changes in uncrustify-0.54 (16 Oct 2009)
+-------------------------------------------------------------------------------
+ - Add mod_case_brace
+ - Add sp_after_semi_for and sp_after_semi
+ - Add align_oc_msg_colon
+ - ObjC: Do not set the parent of everything in a message at OC_MSG (was breaking casts)
+ - ObjC: sp_before_square does not apply in "if (i < [a count])"
+ - Fix crash bug in chunk_get_prev() at the start of the file
+ - Fix issue with #if COND followed by a cast on the next line
+ - Add nl_func_decl_empty
+ - Add nl_func_type_name_class
+ - Add cmt_reflow_mode (Ger Hobbelt)
+ - A case statement starts an expression. Fixes "case -1:"
+ - Improve semicolon removal test
+ - fix marking of brace/paren pairs that have a preproc inside
+ - fix nl_func_type_name where the return type contains a template
+ - Add mod_full_brace_if_chain
+ - fix detection of deref in a macro function
+ - fix detection of "std::vector<void (*)(void)> functions;"
+ - Remove extra semicolons on an 'else if'
+ - Add sp_before_ellipsis
+ - treat a constructor the same as a function regarding nl_func_decl_*
+ - Add nl_brace_brace
+ - Allow any number of spaces between multi-line comments when combining them
+ - Add pos_compare
+ - Add pos_conditional
+ - Fix indent_relative_single_line_comments
+ - Add sp_after_oc_return_type and sp_after_oc_at_sel (Andre Berg)
+ - Add indent_namespace_level (James LewisMoss)
+ - Add indent_namespace_limit (Maciej Libera)
+
+
+Changes in uncrustify-0.53 (16 May 2009)
+-------------------------------------------------------------------------------
+ - Fix sp_inside_braces* options, which were broken by the fix to issue #2629652
+ - Fix sp_after_cast, which was broken by a previous fix
+ - Be a little more agressive in removing unecessary semicolons
+ - Fix one case where the parser leaves a preprocessor #define
+ - Fix indent of line starting with '(' after a function name
+ - Add align_var_def_attribute
+ - Fix nl_func_type_name for function without a return type (ie, cast operator)
+ - Reset up state variables after processing a file
+ - Fix a case where a semicolon was incorrectly removed
+ - Fix a case where braces were incorrectly removed
+ - Fix handling of 'force' setting for many newline options
+ - Add func_wrap type for use with 'set func_wrap FSUB'
+ - Add type_wrap type for use with 'set type_wrap STACK_OF'
+ - Make file replacement more atomic - write to a temp file then rename
+ - With the 'replace' option, only replace if the file content changes
+ - Handle C# wide literal string prefix S"foo"
+ - Handle the ObjC '@protocol' the same as '@interface'
+ - Add 'make check' and 'make clean' (Ger Hobbelt)
+ - Add align_right_cmt_at_col (Ger Hobbelt)
+ - Add sp_pp_concat and sp_pp_stringify (Ger Hobbelt)
+ - Add mod_add_long_ifdef_{else,endif}_comment (Ger Hobbelt)
+ - Objective C improvements (Etienne Samson)
+ - Only mess with escaped newlines in a comment if inside a preprocessor
+ - Fix pos_xxx options when a preprocessor is near
+ - Apply Debian patch to man file
+ - Fix '<<' indenting/aligning (moved from indent.cpp to align.cpp)
+ - Rework the sp_before_nl_cont option
+ - Fix a few other bugs
+
+
+Changes in uncrustify-0.52 (28 Feb 2009)
+-------------------------------------------------------------------------------
+ - Add sp_before_assign and sp_after_assign
+ - Add sp_enum_before_assign and sp_enum_after_assign
+ - Add indent_var_def_blk
+ - Add sp_inside_sparen_close for the 'CGAL' style
+ - First pass at supporting ECMAScript (.es) files
+ - Add support for the C# '??' operator
+ - Fix conflict between nl_after_func_proto_group and nl_squeeze_ifdef
+ - Add sp_cmt_cpp_start
+ - Add align_on_operator
+ - Fix nl_func_type_name for operators
+ - Allow '$' to be part of identifiers (global change)
+ - Fix detection of the '*' in 'int a = b[0] * c;'
+ - Fix and improve the description of nl_multi_line_cond
+ - Fix handling of global namespace type such as '::sockaddr'
+ - Add nl_after_brace_close
+ - Add nl_func_scope_name
+ - Add cmt_insert_file_footer
+
+
+Changes in uncrustify-0.51 (27 Nov 2008)
+-------------------------------------------------------------------------------
+ - Prefer to split at ',' and then '=' in for() statements if at paren level
+ - Fix a NULL deref crash
+ - Fix nl_namespace_brace when something trails the open brace
+ - Get sp_after_sparen and sp_sparen_brace to play well together
+ - Ignore trailing comments when inserting the function header comment
+ - Combine two C comments when they have no space between them "/***//***/"
+ - Add cmt_insert_before_preproc
+ - Add mod_remove_empty_return
+ - Add nl_comment_func_def
+ - Fix aligning of anonymous bit fields
+ - Add indent_align_assign
+ - Add sp_before_case_colon
+ - Fix D 'invariant' handling
+ - Add sp_invariant_after_paren and sp_invariant_paren
+ - Fix handling of the C# [assembly: xxx] construct
+ - Fix handling of the C# 'base()' construct
+ - Add sp_range for the D '..' range operator as in [start .. end]
+ - Update $(fclass) and $(function) to handle operators
+ - Improve handling of inserted comments
+ - Enable 'finally' blocks for C#
+ - Add nl_after_try_catch_finally
+ - Add nl_between_get_set and nl_around_cs_property
+
+
+Changes in uncrustify-0.50 (25-Oct-2008)
+-------------------------------------------------------------------------------
+ - Fix sp_before_unnamed_ptr_star in 'char ** n'
+ - Fix crash when a open brace is at the end of a file
+ - ObjC class definitions do not need { }
+ - Fix ObjC msg detection
+ - Add sp_after_ptr_star_func, sp_before_ptr_star_func
+ - Add sp_after_byref_func, sp_before_byref_func
+ - Treat an ObjC msg decl more like a function def
+ - Add indent_func_const, indent_func_throw (Thanks, Ron)
+ - Fix detection of prototype inside extern or namespace braces
+ - Add align_left_shift to handle aligning of '<<'
+ - Add sp_cpp_cast_paren
+ - Add support for ObjC '@property' statements
+ - Add sp_brace_typedef and sp_case_label
+ - Merge in the lastest UniversalIndent support (Thanks, Thomas!)
+ - Fix extra '\r' in multi-line comments and strings
+ - Add sp_throw_paren
+ - Assume a '<' in a preprocessor can't be part of a template
+ - Don't align a constructor with class variables
+ - Fix ending column error when tokenizing strings
+
+
+Changes in uncrustify-0.49 (22-Aug-2008)
+-------------------------------------------------------------------------------
+ - Allow the MSVC++ '64' suffix on numbers
+ - Initialize align_stack class members for the MSVC++ compiler
+ - Indent a line that starts with '='
+ - Add pos_arith and pos_assign (Thanks, Ron!)
+ - Fix pos_bool & code_width interaction (Thanks, Ron!)
+ - Fix cmt_width, which was going one word over the limit. (Thanks, Ron!)
+ - Major rework of the aligning code to better handle the gap options
+ - Indent comments before 'case' at the same level as 'case'
+ - mod_add_long_*_closebrace_comment adds the right comment type. (Thanks, Ron!)
+ - Relax number parsing even further to accept stuff like "3A"
+ - Add sp_after_oc_colon (Thanks, Kevin!)
+ - Add better detection and labeling of Objective C messages
+ - Add sp_after_send_oc_colon and sp_before_send_oc_colon (Thanks, Kevin!)
+ - Fix detection of '*' in "return n * f();"
+ - Add the 'set' config option which lets you create arbitrary keywords
+ - Add sp_func_call_user_paren and the 'func_call_user' keyword type
+
+
+Changes in uncrustify-0.48 (18-Jul-2008)
+-------------------------------------------------------------------------------
+ - Fix classification of '(' in '#if defined (FOO)'
+ - Add sp_defined_paren
+ - Fix handling of negative in '#if X < -1'
+ - Revert a change that broke indent continuation in an assignment
+ - Fix interaction between nl_squeeze_ifdef and nl_after_{if,for,while,switch,do}
+ - Preprocessor indents are indents, so indent_with_tabs=1 should do tabs
+ - Add pp_indent_count
+ - Handle C++ style casts, such as 'int(42.0)' a bit better
+ - Another rework of template detection
+ - Add sp_before_nl_cont, defaults to 'add'
+ - If a statement starts with 'operator', it is a function call
+ - Change sp_angle_word to be more generic
+ - Add sp_after_operator_sym for "operator ++(" vs "operator ++ ("
+ - Add sp_template_angle for "template<" vs "template <"
+ - Add support for " *INDENT-OFF* " and " *INDENT-ON* "
+ - Shuffle around spacing priorities
+ - Add handling for '...' in variadic templates
+ - Extend nl_template_class to handle anything after 'template <...>'
+ - Treat the template '<' the same as '(' for indenting
+ - Add indent_template_param
+ - Split internal CT_CAST into CT_C_CAST, CT_CPP_CAST and CT_D_CAST
+ - Swap priority of sp_after_angle and sp_before_ptr_star
+ - Change cmt_multi_indent=false to disable all reformatting (needs more work)
+ - Fix align_var_def_span - it wasn't counting newlines when it recursed
+ - Add nl_else_if
+ - mod_full_brace_if: Don't remove braces around certain 'else' statements
+ - Tweak template detection a bit more
+ - Rework and simplify multi-line comment indenting
+ - Add indent_else_if
+ - Improve right-comment aligning
+ - Fix detection of functions with a 'const' return type
+ - Add sp_cond_colon and sp_cond_question
+ - Fine-tune the right comment align stuff
+ - Add cmt_multi_check_last
+ - Add align_right_cmt_gap
+ - Add nl_return_expr
+ - Indent FPAREN_OPEN if after a newline but not before a newline
+ - Give sp_after_operator_sym priority over sp_func_call_paren
+ - Add align_same_func_call_params
+
+
+Changes in uncrustify-0.47 (06-Jun-2008)
+-------------------------------------------------------------------------------
+ - Fix inifinite loop bug in reindent_line
+ - Fix prototype detection with template parameter types
+ - Fix off-by-1 error on positive values for indent_access_spec and indent_label
+ - Add indent_extern to control indent extern-type namespaces
+ - Add initial support for Objective C++ (extension '.mm')
+ - Add nl_before_throw and indent 'throw' if after a prototype
+ - Extend line numbers to 32 bits (used for logging)
+ - Remove alternate token support for '<%', '%>', '<:', ':>', '%:', and '%:%:'
+ - Fix recently-broken mixing of right-comment aligning (PP_ENDIF/PP_ELSE issue)
+ - Indent a 'break' that follows a fully-braced 'case' at the level of the
+ close brace
+ - Add mod_move_case_break
+ - Fix '&' and '*' after 'delete'
+ - Escape opening '/*' when converting C++ comments to C comments
+ - Add sp_inside_braces_empty
+ - Fix cmt_sp_after_star_cont
+ - Fix cmt_sp_before_star_cont
+ - Explicitly disallow a tab after a space
+ - Improve multi-line comment indenting a bit
+ - Add sp_before_unnamed_byref and sp_before_unnamed_ptr_star
+
+
+Changes in uncrustify-0.46 (22-Apr-2008)
+-------------------------------------------------------------------------------
+ - Load the config file, if available, before handling '--universalindent'
+ - Add align_var_def_gap, align_var_def_colon_gap, align_var_struct_gap,
+ align_func_proto_gap, align_mix_var_proto, align_single_line_brace_gap
+ - (internal) Eliminate the 'trailer' stuff, simplify aligning
+
+
+Changes in uncrustify-0.45 (7-Mar-2008)
+-------------------------------------------------------------------------------
+ - Fix buffer overflow in logger code
+ - Add sp_enum_assign
+ - For elipses handling in the GCC extension "case 1 ... 5:"
+ - Add sp_after_class_colon, sp_before_class_colon, and sp_after_type
+ - Send usage text to stdout instead of stderr
+ - Fix mod_add_long_function_closebrace_comment if the file doesn't end in a newline
+ - Redo alignments after splitting long lines
+ - Add indent_relative_single_line_comments
+ - Add indent_access_spec_body
+ - Fix indent_func_proto_param to work on constructors
+ - Add cmt_indent_multi
+ - Add align_single_line_brace and align_single_line_func
+ - Fix interaction of virtual braces and #pragma
+ - Fix indenting problem with an assignment the last part of a for()
+ - Fix the order of opening files so that '-f' and '-o' can be used together
+ - Added a man file
+ - Many improvements thanks to Stas Grabois
+ - Fix a D problem due the lack of semicolons after struct/enum definitions
+ - Improve the way aligning is done
+
+
+Changes in uncrustify-0.44 (12-Feb-2008)
+-------------------------------------------------------------------------------
+ - Fix issue with #else and unmatched braces (issue 1868493)
+ - Update UnivarsalIndentGUI config output
+ - Add the version to generated config files
+ - Add nl_multi_line_define
+ - Minimize distance between code and the backslash-newline in macros
+ - Properly handle stuff like '#define MYHEADER <asm/arm.h>'
+ - Fix detection of 'int foo(int);' in C++ (func proto, not class variable)
+ - Improve handling of multi-line comments in a macro
+ - Fix crash bug with some ctype implementations
+ - Fix incorrect indenting of nested #endif with pp_if_indent_code
+ - Fix problem with nl_after_if and nl_before_if w/ trailing comments
+
+
+Changes in uncrustify-0.43 (08-Jan-2008)
+-------------------------------------------------------------------------------
+ - Add align_right_cmt_mix to control aligning of comments after '}' and '#endif'
+ - Allow a line split after an assignment
+ - Fix infinite loop bug
+ - Add sp_sign and sp_incdec
+ - Fix vbrace conversion where some are converted and some aren't
+ - Add a vbrace before a #pragma instead of after
+ - Improve Objective C support
+ - Add sp_before_oc_colon, sp_after_oc_scope, and sp_after_oc_type for ObjC
+ - Add align_oc_msg_spec_span for ObjC
+ - Add sp_member for spacing around '->' and '.'
+ - More template handling improvements
+ - Fix a NULL dereference related to __attribute__
+
+
+Changes in uncrustify-0.42 (30-Nov-2007)
+-------------------------------------------------------------------------------
+ - Fix bug that would remove a newline after a C++ comment
+ - Add "--mtime" command line option to preserve the mtime
+ - Remove extra semicolons before inserting newlines after semicolons
+ - Fix broken struct initializer alignment
+ - Fix problem with pos_class_comma in a #define
+ - Fix problem with an incomplete statement in a #define and virtual braces
+ - Add indent_func_proto_param and indent_func_def_param
+ - Add nl_func_proto_type_name, split from nl_func_type_name
+ - Add mod_add_long_switch_closebrace_comment, mod_add_long_function_closebrace_comment
+ - Add mod_sort_import to sort import statements (Java/D)
+ - Add mod_sort_using to sort using statements (C#)
+ - Add mod_sort_include to sort #include (C/C++) and #import (ObjC) statements
+ - Add indent_func_class_param, indent_func_ctor_var_param, and
+ indent_func_param_double
+ - Fix inserting a newline before a preprocessor
+ - Don't split empty function parens for code_width stuff
+
+
+Changes in uncrustify-0.41 (07-Nov-2007)
+-------------------------------------------------------------------------------
+ - Add cmt_insert_func_header, cmt_insert_file_header, and cmt_insert_class_header
+ - Fix detection of prototypes without named parameters
+ - sp_after_byref and sp_after_ptr_star only are applied if before a word
+ - internal rework
+ - Add pp_define_at_level
+ - Fix detection of deref in "sizeof *x"
+ - Fix broken output of backslash-newline in certain situations
+ - Fix pp_indent_if stuff
+ - Add nl_after_brace_open_cmt
+ - Properly handle anonymous namespaces
+ - Add pp_space_count
+
+
+Changes in uncrustify-0.40 (12-Oct-2007)
+-------------------------------------------------------------------------------
+ - Simplify preprocessor indenting
+ - Add pp_indent_region and pp_region_indent_code
+ - Add pp_indent_at_level
+ - Add pp_indent_if and pp_if_indent_code
+ - Add initial VALA support
+ - Fix a problem with mod_full_paren_if_bool and functions
+ - Add nl_func_paren
+ - Fix function type parameter marking (broken in the last few releases)
+ - Don't remove newline chunks before/after a preprocessor
+
+
+Changes in uncrustify-0.39 (25-Sep-2007)
+-------------------------------------------------------------------------------
+ - Improve conversion operators
+ - Prevent undesired chunk combining ("~ ~" vs "~~" in D)
+ - Add nl_after_multiline_comment
+ - Fix handling of try/catch/finally blocks in virtual braces
+ - Add sp_inv, sp_not, sp_addr, sp_deref (default to remove)
+ - Fix nl_class_brace
+ - Fix indent_func_call_param
+ - Add nl_create_if_one_liner, nl_create_for_one_liner, nl_create_while_one_liner
+ - Add indent_preserve_sql
+ - Fix one-liner detection with multiple statements on one line
+ - Add nl_func_leave_one_liners and nl_if_leave_one_liners
+ - More template improvements
+
+
+Changes in uncrustify-0.38 (04-Sep-2007)
+-------------------------------------------------------------------------------
+ - Fix line splitting WRT the CT_SPACE token
+ - Improve function call/prototype/definition detection
+ - Fix some spacing issues
+ - More template improvements
+ - Allow for a C++ struct constructor
+ - Add nl_before_access_spec and nl_after_access_spec
+ - Add cmt_width, cmt_c_group, cmt_c_nl_start, cmt_c_nl_end
+ - Handle conversion operators
+
+
+Changes in uncrustify-0.37 (16-Aug-2007)
+-------------------------------------------------------------------------------
+ - A bunch of D language improvements
+ - Add sp_d_array_colon, nl_assign_square, nl_after_square_assign
+ - Fix static keyword sort order
+ - Improve typedef detection and aligning
+ - Split nl_ds_struct_enum_close_brace out of nl_ds_struct_enum_cmt
+ - Add indent_paren_close
+ - Add indent_comma_paren and indent_bool_paren
+
+
+Changes in uncrustify-0.36 (04-Aug-2007)
+-------------------------------------------------------------------------------
+ - Add nl_after_vbrace_open
+ - Improve option descriptions
+ - Fix seg faults (check for NULL)
+ - Fix spacing for operators () and []
+ - Add sp_before_dc and sp_after_dc to control spacing around '::'
+ - Split pos_class_comma from pos_comma
+ - Improve line splitting a little - no longer break at '::' or '->' or '.'
+ - Add nl_enum_leave_one_liners and nl_getset_leave_one_liners
+ - Add mod_remove_extra_semicolon
+ - Fix handling of macro-open and macro-close
+ - Add align_var_struct_thresh
+ - Improve handling of comments after braces
+ - Add support for Qt slots and signals
+ - Add align_typedef_amp_style and align_var_def_amp_style
+ - Add sp_attribute_paren and handling of the '__attribute__' macro
+ - Add align_typedef_func, improve aligning of typedefs
+ - Add sp_after_semi_for_empty
+
+
+Changes in uncrustify-0.35 (14-Jul-2007)
+-------------------------------------------------------------------------------
+ - Fix bug with nl_func_type_name and empty param list: int foo() { ... }
+ - Don't parse pragma bodies
+ - Properly indent multiline #error and #warning
+ - Change nl_after_func_body to force the newline count (was a minimum)
+ - Fix handling of CT_PTR_STAR when all options are AV_IGNORE
+ - Fix problem when the first token in the file isn't in column 1
+ - Properly mark catch clauses that contain parameters, ie catch (Exception *e)
+ - Add a newline after the open brace for nl_catch_brace, nl_do_brace,
+ nl_else_brace, nl_try_brace, nl_getset_brace, nl_finally_brace
+ - Add nl_multi_line_cond
+ - Fix a bug with mod_full_paren_if_bool
+ - Fix handling of templated variables: Buffer<T>* buf
+ - Fix handling of dynamic_cast<T*>(obj) stuff
+ - Fix detection of templates in for() statements:
+ for (std::map<Key, Value*>::iterator it = map.begin(); ...
+ - Add --no-backup command-line option to replace w/o a backup file
+ - Fix nl_class_leave_one_liners when set to false
+ - Add nl_class_colon, which split the functionality of nl_class_init_args
+ - Improve detection of reference variable declarations (A& B)
+
+
+Changes in uncrustify-0.34 (11-May-2007)
+-------------------------------------------------------------------------------
+ - Add sp_angle_paren and sp_angle_word
+ - Properly handle multi-line CPP comments
+ - Add sp_inside_paren_cast
+ - improve indent_class_colon
+ - fix indenting on open parens
+ - Add sp_before_semi_for_empty
+ - Fix detection of while if the do is in a preprocessor chunk (1675673)
+ - (pawn) Don't add vsemi after case/switch brace close (1684840)
+ - Add nl_assign_leave_one_liners to allow "foo_t foo = { 0, 1 };"
+ - Change handling of #region stuff so that it is indented at brace level
+ - Fix handling of missing semicolon after while-of-do.
+ - Fix crash-bug in handling bad code: "if (a && );"
+ - Add pos_comma
+
+
+Changes in uncrustify-0.33 (05-Mar-2007)
+-------------------------------------------------------------------------------
+ - Fix converting C++ comments with embedded C comments
+ - Fix nl_func_var_def_blk with class variables
+ - Fix some output issues with the 1st line and C++ comments
+ - Eliminate indent_case_body, which wasn't used
+ - Change rules for indenting case braces and the use of indent_case_brace
+ - Fix variable declaration detection at the start of a code block
+ - Add support for custom open/close indenting macros
+ MACRO_OPEN, MACRO_ELSE, MACRO_CLOSE
+ - Fix the config updating routines to NOT lose custom types and stuff
+ - Add nl_after_func_body_one_liner
+ - Fix nl_class_init_args
+ - Add --universalindent option to output an ini file for UniversalIndentGUI
+
+
+Changes in uncrustify-0.32 (20-Feb-2007)
+-------------------------------------------------------------------------------
+ - Enable align_proto_var_def for constructors
+ - Fix while-of-do handling inside virtual braces
+ - Fix problem with comments between a close brace and else
+ - Add sp_before_comma
+ - Change align_var_def_star to align_var_def_star_style
+ - Change align_proto_var_def to align_func_params
+ - Add ls_func_split_full and ls_for_split_full
+ - Rework code width code a bit
+ - Start Objective C support
+ - Add cmt_sp_before_star_cont and cmt_sp_after_star_cont
+ - Fix spacing between (( and ))
+ - Add nl_try_brace, nl_catch_brace, nl_finally_brace, nl_brace_catch,
+ nl_brace_finally, sp_catch_brace, sp_brace_catch, sp_finally_brace,
+ sp_brace_finally, sp_try_brace
+ - Treat typedef functions the same as other function for param aligning
+ - Turn any word after a enum/struct/union into a type
+ - Add sp_getset_brace and nl_getset_brace
+ - Add mod_full_paren_if_bool
+ - Add nl_before_c_comment and nl_before_cpp_comment
+ - Fix nl_class_leave_one_liners
+ - Add nl_ds_struct_enum_cmt
+ - Add sp_balance_nested_parens
+
+
+Changes in uncrustify-0.31 (24-Jan-2007)
+-------------------------------------------------------------------------------
+ - Improve mixed tab indent / space align
+ - Try to fix spacing around embedded comments
+ - Add indent_access_spec
+ - Add __func__ and __FUNCTION__ detection for non-C99 compilers
+ - General code cleanup (Thanks Tom!)
+ - Add indent_xml_string
+ - Add align_proto_var_def to align variables in prototypes
+
+
+Changes in uncrustify-0.30 (24-Nov-2006)
+-------------------------------------------------------------------------------
+ - Use environment variable UNCRUSTIFY_CONFIG if no '-c' option (non-WIN32)
+ - Default to ~/.uncrustify.cfg if no '-c' option and no env var (non-WIN32)
+ - Add '-q' option to the usage info
+ - Added initial embedded SQL support
+ - Many bug fixes
+ - New options: indent_braces_no_func, indent_sing_line_comments, nl_before_if,
+ nl_before_for, nl_after_for, nl_before_while, nl_after_while,
+ nl_before_switch, nl_after_switch, nl_before_do, nl_after_do
+
+
+Changes in uncrustify-0.29 (26-Oct-2006)
+-------------------------------------------------------------------------------
+ - Add support for the 'Klaus' style
+ - Fix a bunch of c++ template bugs
+ - Add option nl_class_leave_one_liners
+
+
+Changes in uncrustify-0.28 (06-Oct-2006)
+-------------------------------------------------------------------------------
+ - Fix D range array detection a[1..4] => a[1 .. 4]
+ - Fix D delegate variable aligning
+ - More documentation updates (thanks Dirk!)
+ - New options: nl_after_semicolon and nl_after_open_brace
+
+
+Changes in uncrustify-0.27 (23-Sep-2006)
+-------------------------------------------------------------------------------
+ - Improve template detection again (allow CT_TYPE in a template)
+ - Fix bad formatting in "[ABC * 123]" and "[0xf & *val]"
+ - Add --replace option to convert files in-place
+ - Use a map for the options
+ - Major configuration/option cleanup
+ - add -o option to write to a file instead of stdout
+
+
+Changes in uncrustify-0.26 (09-Sep-2006) (removed a number from the version)
+-------------------------------------------------------------------------------
+ - Fix preprocessor labeling WRT comments
+ - Fix an indenting problem
+ - Add sp_after_byref
+ - Fix alignment of global variable definitions
+ - Fix detection of deref inside squares: a[*p]
+ - Fix a weird indenting bug
+ - Fix D template ! spacing
+ - Add sp_after_operator
+ - Add nl_template_class
+ - Add start to detailed docs inside the program
+ - Add --prefix and --suffix command line args
+ - Add align_enum_equ_thresh and fix align_enum_equ_span
+ - Fix formatting of function typedefs
+ - Add indent_member
+ - Simplify the indenting code a bit
+ - Improve type_cast stuff (ie, dynamic_cast<> or static_cast<>) and templates
+
+
+Changes in uncrustify-0.0.25 (26-Aug-2006)
+-------------------------------------------------------------------------------
+ - Add sp_after_ptr_star, sp_before_ptr_star, sp_between_ptr_star
+ - Fix D tokenizing for numbers and strings
+ - Fix a bug with cast detection and with nl_after_func_proto
+ - Improve template detection
+ - Rename nl_bool_pos to pos_bool
+ - Add pos_class_colon
+ - Add indent_class_colon
+ - Add nl_class_init_args
+ - Add nl_collapse_empty_body
+ - Add indent_square_nl
+
+
+Changes in uncrustify-0.0.24 (05-Aug-2006)
+-------------------------------------------------------------------------------
+ - Add initial PAWN support (thanks to Derek Evan Mart for testing and motivation!)
+ - Fix parsing of numbers like 10.0
+ - Fix double negative (- -x) vs (--x)
+ - Add ability to convert C++ (//) comments into C (/* */) comments
+ - Fix usage of indent_columns; output_tab_size is only needed if using tabs
+ - Add first small step in code width handling
+ - New options: sp_fparen_brace, sp_macro, sp_marco_func,
+ nl_elseif_brace, mod_pawn_semicolon, cmt_cpp_to_c, cmt_cpp_group,
+ cmt_cpp_nl_start, cmt_cpp_nl_end, sp_after_tag
+
+
+Changes in uncrustify-0.0.23 (22-Jul-2006)
+-------------------------------------------------------------------------------
+ - Fix some crash bugs and some formatting problems
+ - Fix Windows CRLF issues (binary vs text mode)
+ - Add indent_class and indent_namespace
+ - Add nl_class_brace and nl_namespace_brace
+ - Add handling of operator stuff in CPP
+ - Improve the test script a bit
+ - Add sp_inside_fparens
+ - Add ability to define types in the config file
+ - Started work on improving #ifdef handling by evaluating the preprocessor
+
+
+Changes in uncrustify-0.0.22 (15-Jul-2006)
+-------------------------------------------------------------------------------
+ - Implement nl_max, nl_before_block_comment, nl_after_func_body,
+ nl_after_func_proto, nl_after_func_proto_group
+ - Improve detection of function prototypes
+ - Improve marking of function prototype-related tokens
+ - Improve variable definition aligning
+ - fix align_var_def threshold
+ - Improve handling of "private:" style stuff
+ - Handle types with "::" in them
+ - Add preprocessor spacing and indenting
+ - Fix tab indenting style 1 (tab indent, space align)
+ - Improve multi-line comment formatting
+
+
+Changes in uncrustify-0.0.21 (01-Jul-2006)
+-------------------------------------------------------------------------------
+ - Clean up some memory leaks & uninitialized variables
+ - Add option to process multiple files at once
+ - Change the newlines values from [UNIX, DOS, MAC] to [LF, CRLF, CR]
+ - Properly mark the parens for functions
+ - Implement control over the format of the function prototypes and definitions
+ - Update configuration.txt
+
+
+Changes in uncrustify-0.0.20 (10-Jun-2006)
+-------------------------------------------------------------------------------
+ - Fix cast on a sizeof: (INT32)sizeof(x)
+ - Fix this: "#define SOME_JUNK /*lint -e123 */(const mytype_t *)-1"
+ - Don't align function typedefs (fixed again)
+ - Finally fix the DOS and MAC line-ending support
+ - Add line-ending autodetection
+ - Add Windows build support
+
+
+Changes in uncrustify-0.0.19 (27-May-2006)
+-------------------------------------------------------------------------------
+ - Fix C/C++/C# casts
+ - Improve D casts
+
+
+Changes in uncrustify-0.0.18 (12-May-2006)
+-------------------------------------------------------------------------------
+ - Add nl_bool_pos to move boolean ops between eol and sol
+ - Improve C99 array initializer aligning/formatting
+ - Replace nl_eat_start, nl_eat_end, and nl_eof_min with nl_start_of_file,
+ nl_start_of_file_min, nl_end_of_file, and nl_end_of_file_min
+
+
+Changes in uncrustify-0.0.17 (03-May-2006)
+-------------------------------------------------------------------------------
+ - Add nl_eat_start to remove newlines at the start of the file
+ - Add nl_eat_end to remove newlines at the end of the file
+ - Add nl_eof_min to set the minimum number of newlines at the end of file
+ - Add newlines setting to configure the newline output
+ - Add '-q' command line option to turn off logging
+ - Fix bug in nl_func_var_def_blk handling
+
+
+Changes in uncrustify-0.0.16 (21-Apr-2006)
+-------------------------------------------------------------------------------
+ - Add a stack alignment helper class
+ - Improve typedef formatting
+ - Add aligning thresholds for typedefs and assignments
+ - update the automake/autoconf stuff
+
+
+Changes in uncrustify-0.0.15 (14-Apr-2006)
+-------------------------------------------------------------------------------
+ - Switch to C++
+ - Improve C++ template formatting
+ - Improve C++ class handling
+
+
+Changes in uncrustify-0.0.14 (09-Apr-2006)
+-------------------------------------------------------------------------------
+ - Read from stdin if no file is specified
+ - Build on OS X
+
+
+Changes in uncrustify-0.0.13 (07-Apr-2006)
+-------------------------------------------------------------------------------
+ - Rewrite the indent code
+ - Fix a bunch of small problems with C casts
+ - Rename a few files
+ - Add more tests
+
+
+Changes in uncrustify-0.0.12 (30-Mar-2006)
+-------------------------------------------------------------------------------
+ - Add support for D template format "Foo!(int,char)"
+ - Fix a format bug in a log
+ - Fix elipsis spacing (remove space before elipsis)
+ - Don't use getopt as it isn't all that portable (at least for QNX)
+ - Rename some files
+ - Bugfix: don't add virtual braces on the same line as a preprocessor
+ - Bugfix: clean up indexed array aligning
+
+
+Changes in uncrustify-0.0.11 (27-Mar-2006)
+-------------------------------------------------------------------------------
+ - fix brace analysis on else statement
+ - allow options to depend on other options
+ - set the parent for case braces
+ - handle/indent the C++ class colon thingy
+ - handle C++ constructors and function defs
+ - special handling for '::' operator
+ - implement case indenting
+ - handle cout '<<' indenting
+ - handle DOS and MAC line endings in multiline comments
+ - rename some indent options
+ - fix ifndef handling
+ - fix volatile handling
+ - fix private/public/protected 'label' handling
+ - alternate punctuators are also part of C++
+ - handle C++ wide L"strings"
+ - improve C# get/set handling
+ - fix spacing bug "a++;" vs "a ++;" due to statement start misdetect
+ - add nl_assign_brace
+ - fix parent of vbrace close
+ - more test enhancements
+
+
+Changes in uncrustify-0.0.10 (22-Mar-2006)
+-------------------------------------------------------------------------------
+ - Complete rewrite of tokenizer and brace parser
+ - Added support for D nested comments
+ - Fixed some virtual brace bugs
+ - Added some documentation for the brace parsing stuff
+ - Add more tests to improve coverage (still lacking)
+
+
+Changes in uncrustify-0.0.9 (18-Mar-2006)
+-------------------------------------------------------------------------------
+ - Major enhancements for D
+ - Add handling for special "[]" sequence for C#/D
+ - add some more tests
+
+
+Changes in uncrustify-0.0.8 (13-Mar-2006)
+-------------------------------------------------------------------------------
+ - update TODO list
+ - add a threshold for brace removal
+ - improve brace removal
+ - keep track of whether a token follows a tab
+ - add option to preserve non-indenting tabs
+ - major keyword and operator cleanup for C++, C#, D, and Java
+ - add 'string' variants for ARITH, COMPARE, etc
+ - add C# get/set detection
+ - add template <type> detection
+ - add colon handling for class stuff and anonymous bitfields
+ - pop the whole indent stack when leaving a preprocessor
+ - fix embedded return handling in C#, ie: [ this should return negative ]
+ - fix a problem with the ifdef frame stack (still a problem lurking...)
+ - handle literal strings (C#)
+ - handle non-keyword words (C#) -- example: @if @switch
+ - set the parent on 'do' braces
+ - handle C# #region preprocessor stuff
+ - partially implement align on tabstop
+ - fix virtual brace spacing (no more "else return;" => "elsereturn;")
+ - add some more tests
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/Comments.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/Comments.txt
index b4696a3e..b4696a3e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/Comments.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/Comments.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/HELP b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/HELP
index 83792fa5..83792fa5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/HELP
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/HELP
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/LIMITATIONS.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/LIMITATIONS.txt
index a49f23f2..a49f23f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/LIMITATIONS.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/LIMITATIONS.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/NEWS b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/NEWS
index 8b6344a0..8b6344a0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/NEWS
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/NEWS
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/README.md b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/README.md
new file mode 100644
index 00000000..c8cac867
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/README.md
@@ -0,0 +1,395 @@
+[![AppVeyor](https://img.shields.io/appveyor/ci/uncrustify/uncrustify/master.svg?style=flat-square&label=Windows)](https://ci.appveyor.com/project/uncrustify/uncrustify)
+[![Coverage Status](https://coveralls.io/repos/github/uncrustify/uncrustify/badge.svg?branch=master)](https://coveralls.io/github/uncrustify/uncrustify?branch=master)
+<a href="#"><img src="https://img.shields.io/badge/C++-11-blue.svg?style=flat-square"></a>
+[![Conan Center](https://shields.io/conan/v/uncrustify)](https://conan.io/center/uncrustify)
+
+---------------------------
+
+# Uncrustify
+A source code beautifier for C, C++, C#, Objective-C, D, Java, Pawn and Vala.
+
+## Features
+* Highly configurable - 850 configurable options as of version 0.78.0
+- <details><summary>add/remove spaces</summary>
+
+ - `sp_before_sparen`: _Add or remove space before '(' of 'if', 'for', 'switch', 'while', etc._
+ - `sp_compare`: _Add or remove space around compare operator '<', '>', '==', etc_
+</details>
+
+- <details><summary>add/remove newlines</summary>
+
+ - `nl_if_brace`: _Add or remove newline between 'if' and '{'_
+ - `nl_brace_while`: _Add or remove newline between '}' and 'while' of 'do' statement_
+</details>
+
+- <details><summary>add/remove blanklines</summary>
+
+ - `eat_blanks_before_close_brace`: _Whether to remove blank lines before '}'_
+ - `nl_max`: _The maximum consecutive newlines (3 = 2 blank lines)_
+</details>
+
+- <details><summary>indent code</summary>
+
+ - `indent_switch_case`: _indent_switch_case: Spaces to indent 'case' from 'switch'_
+ - `indent_class_colon`: _Whether to indent the stuff after a leading base class colon_
+</details>
+
+- <details><summary>align code</summary>
+
+ - `align_func_params`: _Align variable definitions in prototypes and functions_
+ - `align_struct_init_span`: _The span for aligning struct initializer values (0=don't align)_
+</details>
+
+- <details><summary>modify code</summary>
+
+ - `mod_full_brace_for`: _Add or remove braces on single-line 'for' statement_
+ - `mod_paren_on_return`: _Add or remove unnecessary paren on 'return' statement_
+</details>
+
+Here is an example [configuration file](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/ben.cfg.txt),
+and here is a [before](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/examples/c-1.in.c)
+and [after](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/examples/c-1.out.c)
+C source example.
+That should give you a pretty good idea of what Uncrustify can do.
+
+
+
+
+
+---------------------------------------------------------------------------
+
+## Binaries
+Pre compiled binaries for Windows can be downloaded [here](https://sourceforge.net/projects/uncrustify/files/).
+
+## Build
+[Python](https://www.python.org/) is an "interpreted high-level programming language for general-purpose programming", for this project it is needed to extend the capabilities of CMake.
+
+[CMake](https://cmake.org/) is a tool that generates build systems
+(Makefiles, Visual Studio project files, Xcode project files and others).
+
+To generate a build system for Uncrustify using CMake on UNIX-like systems, create a
+build folder and run CMake from it, making sure to specify Release mode:
+
+```bash
+$ mkdir build
+$ cd build
+$ cmake -DCMAKE_BUILD_TYPE=Release ..
+```
+Other systems may require other flags (e.g. `cmake -G Xcode ..` for Xcode).
+
+Then use the build tools of your build system (in many cases this will
+simply be `make`, but on Windows it could be MSBuild or Visual Studio).
+Or use CMake to invoke it:
+
+```bash
+$ cmake --build . --config Release
+```
+
+If testing is enabled, CMake generates a `test` target, which you can
+_build_ using your build system tools (usually `make test`). This can also
+be invoked using CTest:
+
+```bash
+$ ctest -V -C Debug
+```
+
+There is also an `install` target, which can be used to install the
+Uncrustify executable (typically `make install`).
+
+### A note on CMake configurations
+Some build systems are single-configuration, which means you specify the
+build type when running CMake (by setting the `CMAKE_BUILD_TYPE`
+variable), and the generated files then build that configuration.
+
+An example of a single-configuration build system are Makefiles. You can
+build the Release or Debug configurations of Uncrustify (from the build folder) with:
+
+```bash
+$ cmake -DCMAKE_BUILD_TYPE=Release ..
+$ make
+```
+or
+```bash
+$ cmake -DCMAKE_BUILD_TYPE=Debug ..
+$ make
+```
+
+Other build systems are multi-configuration, which means you specify the
+build type when building.
+
+An example of a multi-configuration build system are Visual Studios project
+files. When you open the project in Visual Studio, you can select which
+configuration to build. You can also do this while building from the
+command line with `cmake --build . --config Debug`.
+
+
+## Bugs
+Post any bugs to the issue tracker found on the projects GitHub page:
+ https://github.com/uncrustify/uncrustify/issues
+
+Please include the following with your issue:
+ - a description of what is not working right
+ - input code sufficient to demonstrate the issue
+ - expected output code
+ - configuration options used to generate the output
+
+More about this is in the [ISSUE_TEMPLATE](https://github.com/uncrustify/uncrustify/blob/master/.github/ISSUE_TEMPLATE)
+
+
+### Known problems
+[Look at the Wiki](https://github.com/uncrustify/uncrustify/wiki/Known-Problems)
+
+
+## Which repositories have uncrustify?
+[Look here](https://repology.org/metapackage/uncrustify/versions)
+
+
+## Contribute
+If you want to add a feature, fix a bug, or implement missing
+functionality, feel free to do so! Patches are welcome!
+Here are some areas that need attention:
+
+- __Patches for Objective-C support__. We really need someone who knows
+ this language as it has more than plenty open issues. A good starting
+ point would be to integrate changes made in the
+ [Unity fork](https://github.com/Unity-Technologies/uncrustify/tree/fixes/c-oc-java)
+- Test Java support and provide feedback (or patches!)
+- Test Embedded SQL to see what works
+- A logo of some sort
+- Anything else that you want to do to make it better?
+
+### A note about pull requests
+Firstly take a look at the [CONTRIBUTING.md](https://github.com/uncrustify/uncrustify/blob/master/CONTRIBUTING.md)
+
+Currently we have two continuous integration systems that test your PRs,
+TravisCI and Appveyor.
+Tested are the test cases, the formatting of the code base and
+the output of the command line options.
+
+Test cases can be found in the `tests/` directory. Every file ending with
+`.test` is a test set. Inside each line with these components is a
+single test: `testNr[!] testConfigFileName testInputFileName [lang]`
+
+The configuration file `testConfigFileName` has to be located inside `tests/config`,
+the input file `testInputFileName` inside `tests/input/<testSetName>/`,
+and expected results file inside the `tests/expected/<testSetName>/`
+directory.
+Expected results have the following naming convention: `testNr-testInputFileName`.
+
+Optionally a `!` can follow the `testNr` to enable a custom rerun
+configuration.
+Rerun configurations need to be named like this:
+`testConfigFileName`(without extension)+`.rerun`+`.extension`
+
+Also, optionally a language for the input can be provided with `lang`.
+
+The codebase has to be formatted by the options set up in
+`forUncrustifySources.cfg`. Failing to format the sources correctly will
+cause TravisCI build failures.
+
+The Command line interface (CLI) output is tested by the
+`test_cli_options.sh` script. It is located inside of `tests/cli/` and operates
+on the subdirectories of that folder.
+
+If a PR is altering the CLI output, files inside those directories might
+need to be manually updated. This often happens when options are
+added, removed, or altered. Keep in mind that the version string line
+(example: `# Uncrustify-0.69.0_f`) of outputs from commands like
+`--show-config` should be replaced with a blank line.
+
+### Debugging
+
+The first method is to use uncrustify itself to get debug informations.
+Using:
+```.txt
+ uncrustify -c myExample.cfg -f myExample.cpp -p myExample.p -L A 2>myExample.A
+```
+you get two files for the first informations.
+The p-file gives you details of the parsing process and indentation.
+```.txt
+# Line Tag Parent Columns Br/Lvl/pp Flag Nl Text
+# 1> CLASS[ NONE][ 1/ 1/ 6/ 0][0/0/0][ 10070000][0-0] class
+# 1> TYPE[ CLASS][ 7/ 7/ 14/ 1][0/0/0][ 10000000][0-0] Capteur
+# 1> BRACE_OPEN[ CLASS][ 15/ 15/ 16/ 1][0/0/0][ 100000400][0-0] {
+```
+
+The A-file gives you many details about the run itself, where the process is running thru,
+which values have the most important variables.
+```.txt
+tokenize(2351): orig line is 1, orig col is 1, Text() 'class', type is CLASS, orig col_end is 6
+tokenize(2351): orig line is 1, orig col is 7, Text() 'Capteur', type is WORD, orig col_end is 14
+tokenize(2351): orig line is 1, orig col is 15, Text() '{', type is BRACE_OPEN, orig col_end is 16
+```
+
+You can also dump the parsing information of each formatting step using the 'dump steps' option.
+```.txt
+ uncrustify -c myExample.cfg -f myExample.cpp -ds dump
+```
+This will create a series of 'dump_nnn.log' files, each containing the parsing information at
+specific points of the formatting process ('dump_000.log' will list the formatting options in use).
+
+You can combine this option with -p and -L to get a lot of detailed debugging information.
+```.txt
+ uncrustify -c myExample.cfg -f myExample.cpp -p myExample.p -L A 2>myExample.A -ds dump
+```
+
+It might be useful to add some code lines to see where something is happening.
+Use the package `unc_tools`.
+Remove the comment at line:
+```.cpp
+#define DEVELOP_ONLY
+```
+Import the package:
+```.cpp
+#include "unc_tools.h"
+```
+Add at some places the line:
+```.cpp
+prot_the_line(__LINE__, 6, 0);
+```
+Compile again with DEBUG option.
+
+
+
+### How to add an option
+
+If you need a new option, there are a few steps to follow.
+Take as example the option `sp_trailing_ret_t`
+
+First define the option:
+- Insert the code below to the file src/options.h
+_NOTE:
+This file is processed by make_options.py, and must conform to a particular
+format. Option groups are marked by '//begin ' (in upper case; this example
+is lower case to prevent being considered a region marker for code folding)
+followed by the group description. Options consist of two lines of
+declaration preceded by one or more lines of C++ comments. The comments form
+the option description and are taken verbatim, aside from stripping the
+leading '// '. Only comments immediately preceding an option declaration,
+with no blank lines, are taken as part of the description, so a blank line
+may be used to separate notations from a description.
+An option declaration is 'extern TYPE\nNAME;', optionally followed by
+' // = VALUE' if the option has a default value that is different from the
+default-constructed value type of the option. The 'VALUE' must be valid C++
+code, and is taken verbatim as an argument when creating the option's
+instantiation. Note also that the line break, as shown, is required.
+_
+```.cpp
+// Add or remove space around trailing return operator '->'.
+extern Option<iarf_e>
+sp_trailing_ret_t;
+```
+- Insert the code below to the file src/space.cpp
+```.cpp
+ if (first->Is(CT_TRAILING_RET_T))
+ {
+ // Add or remove space around trailing return operator '->'.
+ log_rule("sp_trailing_ret_t");
+ return(options::sp_trailing_ret_t());
+ }
+```
+
+
+### Portability
+
+We are pretty sure that nothing OS-specific is used in the code base.
+The software has been previously tested on the following operating systems:
+- Linux
+- QNX
+- OS X
+- FreeBSD, NetBSD, OpenBSD
+- Sun Solaris 9
+- Windows (binary available)
+
+
+---------------------------------------------------------------------------
+
+## Running the program
+
+__NOTE__ This application works reasonably well but it has bugs. Do __not__
+apply it on your whole codebase without checking the results!
+
+Here are ways to run it:
+```
+$ uncrustify -c mystyle.cfg -f somefile.c -o somefile.c.unc
+$ uncrustify -c mystyle.cfg -f somefile.c > somefile.c.unc
+$ uncrustify -c mystyle.cfg somefile.c
+$ uncrustify -c mystyle.cfg --no-backup somefile.c
+$ uncrustify -c mystyle.cfg *.c
+$ uncrustify -c mystyle.cfg --no-backup *.c
+```
+The `-c` flag selects the configuration file.
+The `-f` flag specifies the input file.
+The `-o` flag specifies the output file.
+If flag `-f` is used without flag `-o` the output will be send to `stdout`.
+
+Alternatively, multiple or single files that should be processed can be
+specified at the command end without flags.
+If the flag `--no-backup` is missing, every file is saved with the initial
+name and an additional suffix (can be changed with --suffix).
+
+For more options descriptions call:
+```bash
+$ uncrustify -h
+```
+
+## Configuring the program
+Uncrustify usually reads configuration files that are passed via the `-c`
+flag. If the flag is not provided, Uncrustify will try to find a
+configuration file via the `UNCRUSTIFY_CONFIG` environment variable or a
+file with the name `.uncrustify.cfg` or `uncrustify.cfg` in your home folder.
+
+To get a list of:
+- all available options use:
+ ```bash
+ uncrustify --show-config
+ ```
+
+- all available options in a usable configuration file format use:
+ ```bash
+ uncrustify --update-config
+ ```
+
+ or
+
+ ```bash
+ uncrustify --update-config-with-doc
+ ```
+
+ As the names suggest, both options can produce output that adds newly
+ introduced options to your old configuration file. For this your old
+ configuration file has to be passed via the `-c` flag:
+ ```bash
+ uncrustify --update-config-with-doc -c path/to/your.cfg
+ ```
+
+Example configuration files that can be used as a starting point can be
+found in the `etc/` directory (such as [ben.cfg](./etc/ben.cfg)).
+
+Modify to your liking. Use a quality side-by-side diff tool to determine
+if the program did what you wanted. Repeat until your style is refined.
+
+To ease the process a bit, some 3rd party tools are available:
+- [Universal Indent GUI](http://universalindent.sourceforge.net/) - A
+ cross-platform graphical configuration file editor for many code
+ beautifiers, including Uncrustify.
+- [uncrustify_config](https://github.com/CDanU/uncrustify_config) - A web
+ configuration tool based on Uncrustify's emscripten interface.
+- [UncrustifyX](https://github.com/ryanmaxwell/UncrustifyX) - Uncrustify
+ utility and documentation browser for Mac OS X
+
+Under Windows:
+Uncrustify is a command-line tool, if you run it by double-clicking the
+executable, it will open a command prompt run the executable
+(which prints the help message), and then immediately close the window
+as uncrustify exits.
+
+You can open the command prompt (which is an interactive terminal
+window that allows you to run commands without it closing as soon as
+they exit) and run uncrustify.exe there.
+
+## Using uncrustify with vim
+Have a look [here](https://github.com/cofyc/vim-uncrustify)
+
+## Using uncrustify with IntelliJ
+Have a look at https://plugins.jetbrains.com/plugin/17528-uncrustify
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/TESTING b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/TESTING
index 63efbff7..63efbff7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/TESTING
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/TESTING
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/appveyor.yml b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/appveyor.yml
index 1bdd8d4c..1bdd8d4c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/appveyor.yml
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/appveyor.yml
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/CodeCoverage.cmake b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/CodeCoverage.cmake
index 670c5144..670c5144 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/CodeCoverage.cmake
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/CodeCoverage.cmake
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/GenerateTokenNames.cmake b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/GenerateTokenNames.cmake
index 02a6241a..02a6241a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/GenerateTokenNames.cmake
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/GenerateTokenNames.cmake
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/GenerateVersionHeader.cmake b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/GenerateVersionHeader.cmake
index 3d6d376b..3d6d376b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/GenerateVersionHeader.cmake
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/GenerateVersionHeader.cmake
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/Toolchain-mingw32.cmake b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/Toolchain-mingw32.cmake
index c220975c..c220975c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/Toolchain-mingw32.cmake
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/Toolchain-mingw32.cmake
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/Toolchain-mingw64.cmake b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/Toolchain-mingw64.cmake
index bc1a666e..bc1a666e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/Toolchain-mingw64.cmake
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/Toolchain-mingw64.cmake
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/uninstall.cmake b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/uninstall.cmake
index b9618a29..b9618a29 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/cmake/uninstall.cmake
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/cmake/uninstall.cmake
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/commit.log b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/commit.log
index 1a725f4e..1a725f4e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/commit.log
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/commit.log
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/coverity.sh b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/coverity.sh
index e52a3594..e52a3594 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/coverity.sh
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/coverity.sh
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/coverity.travis.yml b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/coverity.travis.yml
index ef306e8c..ef306e8c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/coverity.travis.yml
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/coverity.travis.yml
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/cdbs/debian-tde.mk b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/cdbs/debian-tde.mk
new file mode 100644
index 00000000..b031e698
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/cdbs/debian-tde.mk
@@ -0,0 +1,246 @@
+# -*- mode: makefile; coding: utf-8 -*-
+# Copyright © 2003 Christopher L Cheney <ccheney@debian.org>
+# Copyright © 2019 TDE Team
+# Description: A class for TDE packages; sets TDE environment variables, etc
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2, or (at
+# your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+# 02111-1307 USA.
+
+ifndef _cdbs_bootstrap
+_cdbs_scripts_path ?= /usr/lib/cdbs
+_cdbs_rules_path ?= /usr/share/cdbs/1/rules
+_cdbs_class_path ?= /usr/share/cdbs/1/class
+endif
+
+ifndef _cdbs_class_debian-qt-kde
+_cdbs_class_debian-qt-kde := 1
+
+# for dh_icons
+CDBS_BUILD_DEPENDS := $(CDBS_BUILD_DEPENDS), debhelper (>= 5.0.7ubuntu4)
+
+# Note: This _must_ be included before autotools.mk, or it won't work.
+common-configure-arch common-configure-indep:: debian/stamp-cvs-make
+debian/stamp-cvs-make:
+ifndef _cdbs_class_cmake
+ cp -Rp /usr/share/aclocal/libtool.m4 admin/libtool.m4.in
+ifneq "$(wildcard /usr/share/libtool/config/ltmain.sh)" ""
+ cp -Rp /usr/share/libtool/config/ltmain.sh admin/ltmain.sh
+endif
+ifneq "$(wildcard /usr/share/libtool/build-aux/ltmain.sh)" ""
+ cp -Rp /usr/share/libtool/build-aux/ltmain.sh admin/ltmain.sh
+endif
+ $(MAKE) -C $(DEB_SRCDIR) -f admin/Makefile.common dist;
+endif
+ touch debian/stamp-cvs-make
+
+include $(_cdbs_rules_path)/buildcore.mk$(_cdbs_makefile_suffix)
+
+ifdef _cdbs_tarball_dir
+DEB_BUILDDIR = $(_cdbs_tarball_dir)/obj-$(DEB_BUILD_GNU_TYPE)
+else
+DEB_BUILDDIR = obj-$(DEB_BUILD_GNU_TYPE)
+endif
+
+ifndef _cdbs_class_cmake
+include $(_cdbs_class_path)/autotools.mk$(_cdbs_makefile_suffix)
+endif
+
+ifdef _cdbs_class_cmake
+ifneq "$(wildcard /usr/bin/ninja)" ""
+MAKE = ninja -v
+DEB_MAKE_ENVVARS += DESTDIR=$(DEB_DESTDIR)
+DEB_MAKE_INSTALL_TARGET = install
+DEB_CMAKE_NORMAL_ARGS += -GNinja
+endif
+endif
+
+ifndef _cdbs_rules_patchsys_quilt
+DEB_PATCHDIRS := debian/patches/common debian/patches
+endif
+
+export kde_cgidir = \$${libdir}/cgi-bin
+export kde_confdir = \$${sysconfdir}/trinity
+export kde_htmldir = \$${datadir}/doc/tde/HTML
+
+DEB_KDE_ENABLE_FINAL := yes
+DEB_INSTALL_DOCS_ALL :=
+
+DEB_DH_MAKESHLIBS_ARGS_ALL := -V
+DEB_SHLIBDEPS_INCLUDE = $(foreach p,$(PACKAGES_WITH_LIBS),debian/$(p)/usr/lib)
+
+DEB_AC_AUX_DIR = $(DEB_SRCDIR)/admin
+DEB_CONFIGURE_INCLUDEDIR = "\$${prefix}/include"
+DEB_COMPRESS_EXCLUDE_ALL += .dcl .docbook -license .tag .sty .el
+
+# The default gzip compressor has been changed in dpkg >= 1.17.0.
+deb_default_compress = $(shell LANG=C dpkg-deb --version | head -n1 | \
+ sed -e "s|.*version ||" -e "s| .*||" | \
+ xargs -r dpkg --compare-versions 1.17.0 lt \
+ && echo xz || echo gzip)
+ifeq ($(deb_default_compress),gzip)
+DEB_DH_BUILDDEB_ARGS += -- -Z$(shell dpkg-deb --help | grep -q ":.* xz[,.]" \
+ && echo xz || echo bzip2)
+endif
+
+ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+ cdbs_treat_me_gently_arches := arm m68k alpha ppc64 armel armeb
+ ifeq (,$(filter $(DEB_HOST_ARCH_CPU),$(cdbs_treat_me_gently_arches)))
+ cdbs_kde_enable_final = $(if $(DEB_KDE_ENABLE_FINAL),--enable-final,)
+ else
+ cdbs_kde_enable_final =
+ endif
+endif
+
+ifneq (,$(filter nostrip,$(DEB_BUILD_OPTIONS)))
+ cdbs_kde_enable_final =
+ cdbs_kde_enable_debug = --enable-debug=yes
+else
+ cdbs_kde_enable_debug = --disable-debug
+endif
+
+ifneq (,$(filter debug,$(DEB_BUILD_OPTIONS)))
+ cdbs_kde_enable_debug = --enable-debug=full
+endif
+
+DEB_BUILD_PARALLEL ?= true
+
+cdbs_configure_flags += \
+ --with-qt-dir=/usr/share/qt3 \
+ --disable-rpath \
+ --with-xinerama \
+ $(cdbs_kde_enable_final) \
+ $(cdbs_kde_enable_debug)
+
+
+# This is a convenience target for calling manually.
+# It's not part of the build process.
+buildprep: clean apply-patches
+ifndef _cdbs_class_cmake
+ $(MAKE) -f admin/Makefile.common dist
+endif
+ debian/rules clean
+
+.tdepkginfo:
+ echo "# TDE package information" >.tdepkginfo
+ dpkg-parsechangelog | sed -n "s|^Source: |Name: |p" >>.tdepkginfo
+ dpkg-parsechangelog | sed -n "s|^Version: |Version: |p" >>.tdepkginfo
+ date +"DateTime: %m/%d/%Y %H:%M" -u -d "$$(dpkg-parsechangelog | sed -n 's|^Date: ||p')" >>.tdepkginfo
+
+post-patches:: .tdepkginfo
+
+common-build-arch:: debian/stamp-man-pages
+debian/stamp-man-pages:
+ if ! test -d debian/man/out; then mkdir -p debian/man/out; fi
+ for f in $$(find debian/man -name '*.sgml'); do \
+ docbook-to-man $$f > debian/man/out/`basename $$f .sgml`.1; \
+ done
+ for f in $$(find debian/man -name '*.man'); do \
+ soelim -I debian/man $$f \
+ > debian/man/out/`basename $$f .man`.`head -n1 $$f | awk '{print $$NF}'`; \
+ done
+ touch debian/stamp-man-pages
+
+common-binary-indep::
+ ( set -e; \
+ tmpf=`mktemp debian/versions.XXXXXX`; \
+ perl debian/cdbs/versions.pl >$$tmpf; \
+ for p in $(DEB_INDEP_PACKAGES); do \
+ cat $$tmpf >>debian/$$p.substvars; \
+ done; \
+ rm -f $$tmpf )
+
+common-binary-arch::
+ ( set -e; \
+ tmpf=`mktemp debian/versions.XXXXXX`; \
+ perl debian/cdbs/versions.pl >$$tmpf; \
+ for p in $(DEB_ARCH_PACKAGES); do \
+ cat $$tmpf >>debian/$$p.substvars; \
+ done; \
+ rm -f $$tmpf )
+ # update multi-arch path in install files
+ ls -d debian/* | \
+ grep -E "(install|links)$$" | \
+ while read a; do \
+ [ -d $$a ] || [ -f $$a.arch ] || \
+ ! grep -q "\$$(DEB_HOST_MULTIARCH)" $$a || \
+ sed -i.arch "s|\$$(DEB_HOST_MULTIARCH)|$(DEB_HOST_MULTIARCH)|g" $$a; \
+ done
+
+clean::
+ rm -rf debian/man/out
+ -rmdir debian/man
+ rm -f debian/stamp-man-pages
+ rm -rf debian/shlibs-check
+ # revert multi-arch path in install files
+ ls -d debian/* | \
+ grep -E "(install|links)$$" | \
+ while read a; do \
+ [ ! -f $$a.arch ] || \
+ mv $$a.arch $$a; \
+ done
+
+$(patsubst %,binary-install/%,$(DEB_PACKAGES)) :: binary-install/%:
+ if test -x /usr/bin/dh_icons; then dh_icons -p$(cdbs_curpkg) $(DEB_DH_ICONCACHE_ARGS); fi
+ if test -x /usr/bin/dh_desktop; then dh_desktop -p$(cdbs_curpkg) $(DEB_DH_DESKTOP_ARGS); fi
+ if test -e debian/$(cdbs_curpkg).lintian; then \
+ install -p -D -m644 debian/$(cdbs_curpkg).lintian \
+ debian/$(cdbs_curpkg)/usr/share/lintian/overrides/$(cdbs_curpkg); \
+ fi
+ if test -e debian/$(cdbs_curpkg).presubj; then \
+ install -p -D -m644 debian/$(cdbs_curpkg).presubj \
+ debian/$(cdbs_curpkg)/usr/share/bug/$(cdbs_curpkg)/presubj; \
+ fi
+
+binary-install/$(DEB_SOURCE_PACKAGE)-doc-html::
+ set -e; \
+ for doc in `cd $(DEB_DESTDIR)/opt/trinity/share/doc/tde/HTML/en; find . -name index.docbook`; do \
+ pkg=$${doc%/index.docbook}; pkg=$${pkg#./}; \
+ echo Building $$pkg HTML docs...; \
+ mkdir -p $(CURDIR)/debian/$(DEB_SOURCE_PACKAGE)-doc-html/opt/trinity/share/doc/tde/HTML/en/$$pkg; \
+ cd $(CURDIR)/debian/$(DEB_SOURCE_PACKAGE)-doc-html/opt/trinity/share/doc/tde/HTML/en/$$pkg; \
+ /opt/trinity/bin/meinproc $(DEB_DESTDIR)/opt/trinity/share/doc/tde/HTML/en/$$pkg/index.docbook; \
+ done
+ for pkg in $(DOC_HTML_PRUNE) ; do \
+ rm -rf debian/$(DEB_SOURCE_PACKAGE)-doc-html/opt/trinity/share/doc/tde/HTML/en/$$pkg; \
+ done
+
+common-build-indep:: debian/stamp-kde-apidox
+debian/stamp-kde-apidox:
+ $(if $(DEB_KDE_APIDOX),+$(DEB_MAKE_INVOKE) apidox)
+ touch $@
+
+common-install-indep:: common-install-kde-apidox
+common-install-kde-apidox::
+ $(if $(DEB_KDE_APIDOX),+DESTDIR=$(DEB_DESTDIR) $(DEB_MAKE_INVOKE) install-apidox)
+
+cleanbuilddir::
+ -$(if $(call cdbs_streq,$(DEB_BUILDDIR),$(DEB_SRCDIR)),,rm -rf $(DEB_BUILDDIR))
+
+clean::
+ifndef _cdbs_class_cmake
+ if test -n "$(DEB_KDE_CVS_MAKE)" && test -d $(DEB_SRCDIR); then \
+ cd $(DEB_SRCDIR); \
+ find . -name Makefile.in -print | \
+ xargs --no-run-if-empty rm -f; \
+ rm -f Makefile.am acinclude.m4 aclocal.m4 config.h.in \
+ configure configure.files configure.in stamp-h.in \
+ subdirs; \
+ fi
+endif
+ rm -f .tdepkginfo
+ rm -f debian/stamp-kde-apidox
+ rm -f debian/stamp-cvs-make
+
+endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/cdbs/versions.pl b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/cdbs/versions.pl
index 1b110f7a..1b110f7a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/cdbs/versions.pl
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/cdbs/versions.pl
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/changelog b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/changelog
new file mode 100644
index 00000000..0e7ef0c3
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/changelog
@@ -0,0 +1,352 @@
+uncrustify-trinity (0.78.0-0debian13.0.0+0) unstable; urgency=medium
+
+ * TDE version of upstream 0.78.0
+
+ -- Michele Calgaro <michele.calgaro@yahoo.it> Sun, 18 Nov 2023 17:35:00 +0900
+
+uncrustify-trinity (0.76.0-0debian12.0.0+0) unstable; urgency=medium
+
+ * TDE version of upstream 0.76.0
+
+ -- Michele Calgaro <michele.calgaro@yahoo.it> Sun, 04 Dec 2022 18:56:43 +0900
+
+uncrustify-trinity (0.75.0-0debian11.0.0+0) unstable; urgency=medium
+
+ * TDE version of upstream 0.75.0
+
+ -- Michele Calgaro <michele.calgaro@yahoo.it> Fri, 06 May 2022 13:49:07 +0900
+
+uncrustify-trinity (0.74.0-0debian11.0.0+0) unstable; urgency=medium
+
+ * TDE version of upstream 0.74.0
+
+ -- Michele Calgaro <michele.calgaro@yahoo.it> Wed, 19 May 2021 15:58:50 +0900
+
+uncrustify-trinity (0.73.0-0debian11.0.0+2) unstable; urgency=medium
+
+ * Fix Python detection on CMake < 3.12.
+
+ -- Slávek Banko <slavek.banko@axis.cz> Wed, 20 May 2021 00:00:40 +0200
+
+uncrustify-trinity (0.73.0-0debian11.0.0+1) unstable; urgency=medium
+
+ * Backported commits cb1a42dd from upstream.
+
+ -- Michele Calgaro <michele.calgaro@yahoo.it> Wed, 19 May 2021 15:58:50 +0900
+
+uncrustify-trinity (0.73.0-0debian11.0.0+0) unstable; urgency=medium
+
+ * TDE version of upstream 0.73.0
+
+ -- Michele Calgaro <michele.calgaro@yahoo.it> Wed, 19 May 2021 15:58:50 +0900
+
+uncrustify-trinity (0.72.0-0debian11.0.0+8) unstable; urgency=medium
+
+ * Switch to build using ninja-build
+
+ -- Slávek Banko <slavek.banko@axis.cz> Tue, 18 May 2021 19:30:49 +0200
+
+uncrustify-trinity (0.72.0-0debian11.0.0+7) unstable; urgency=medium
+
+ * TDE version 0.72-0+7
+ * Backported commits 5f3f392a and fb66774e from upstream.
+
+ -- Michele Calgaro <michele.calgaro@yahoo.it> Thu, 05 Jan 2021 11:08:00 +0900
+
+uncrustify-trinity (0.72.0-0debian11.0.0+6) unstable; urgency=medium
+
+ * TDE version 0.72-0+6
+ * Backported commits 45681e88 and 64d93e3fb from upstream.
+
+ -- Michele Calgaro <michele.calgaro@yahoo.it> Thu, 24 Dec 2020 20:14:00 +0900
+
+uncrustify-trinity (0.72.0-0debian11.0.0+0) unstable; urgency=medium
+
+ * TDE version of upstream 0.72.0
+
+ -- Michele Calgaro <michele.calgaro@yahoo.it> Thu, 20 Dec 2020 17:52:23 +0900
+
+uncrustify (0.72.0) unstable; urgency=medium
+
+ * New upstream version 0.72.0
+
+ -- Alexander GQ Gerasiov <gq@debian.org> Thu, 20 Dec 2020 17:34:01 +0900
+
+uncrustify (0.71.0+dfsg1-1) unstable; urgency=medium
+
+ * New upstream version 0.71.0
+ * d/control: Use debhelper-compat syntax, switch to level 12.
+ * d/control: Use python3 in B-D (Closes: #943295).
+ * d/control: Bump Standards-Version, no more changes needed.
+ * d/control: Remove unnnecessary --parallel.
+
+ -- Alexander GQ Gerasiov <gq@debian.org> Thu, 27 Aug 2020 17:12:57 +0300
+
+uncrustify (0.69.0+dfsg1-1) unstable; urgency=medium
+
+ * New upstream version 0.69.0
+ * Remove fix_parallel_test.patch: Fixed upstream.
+
+ -- Alexander GQ Gerasiov <gq@debian.org> Tue, 02 Jul 2019 19:00:32 +0300
+
+uncrustify (0.68.1+dfsg1-2) unstable; urgency=medium
+
+ * Add d/patches/fix_parallel_test.patch: Fix test failure on parallel run.
+
+ -- Alexander GQ Gerasiov <gq@debian.org> Mon, 10 Dec 2018 02:36:22 +0300
+
+uncrustify (0.68.1+dfsg1-1) unstable; urgency=medium
+
+ * New upstream version 0.68.1
+ * d/control: Add python-all to Build-Depensds.
+ * d/rules: Run all tests (now disabled by default by upstream).
+
+ -- Alexander GQ Gerasiov <gq@debian.org> Sun, 02 Dec 2018 16:19:42 +0300
+
+uncrustify (0.67+dfsg1-1) unstable; urgency=medium
+
+ * New upstream version 0.67
+ * debian/control: Move git to salsa.
+ * Add docs-remove-remote-images.patch: Remove remote images from docs.
+
+ -- Alexander GQ Gerasiov <gq@debian.org> Mon, 18 Jun 2018 01:13:56 +0300
+
+uncrustify (0.66.1+dfsg1-1) unstable; urgency=medium
+
+ * Add debian/gbp.conf.
+ * New upstream version 0.66.1 Fixed FTBFS on some arches (Closes: #881249)
+ * Bump Standards-Version to 4.1.2 (no additional changes needed).
+
+ -- Alexander GQ Gerasiov <gq@debian.org> Sun, 17 Dec 2017 18:49:06 +0300
+
+uncrustify (0.66+dfsg1-1) unstable; urgency=medium
+
+ * debian/control: Remove Fathi Boudra <fabo@debian.org> from uploaders.
+ (Closes: #879444.) Thanks for your job.
+ * New upstream version 0.66
+ * Bump Standards-Version to 4.1.1 (no additional changes needed).
+ * debian/control: Add more languages to short description.
+
+ -- Alexander GQ Gerasiov <gq@debian.org> Wed, 08 Nov 2017 18:18:47 +0300
+
+uncrustify (0.65+git20170831+dfsg1-1) unstable; urgency=medium
+
+ * New upstream version 0.65+git20170831. Fixes various FTBFS and autotests
+ failures on exotic archs. (Closes: #867376)
+ * Bump Standards-Version to 4.1.0 (no additional changes needed).
+
+ -- Alexander GQ Gerasiov <gq@debian.org> Thu, 31 Aug 2017 20:25:06 +0300
+
+uncrustify (0.65+dfsg1-1) unstable; urgency=medium
+
+ * New upstream version 0.65
+ * debian/control: Add python-minimal to Build-Depends.
+
+ -- Alexander GQ Gerasiov <gq@debian.org> Tue, 04 Jul 2017 14:50:47 +0300
+
+uncrustify (0.64+dfsg1-1) unstable; urgency=medium
+
+ * Imported Upstream version 0.64
+ (Closes: #748787, #814193, #594210, #775517, #594206, #616708)
+ * Remove non-free documentation/htdocs/project-support.jpg.
+ * Imported debian dir from previous version.
+ * Remove "debian/<q" file.
+ * Remove fix-ftbfs-with-gcc-4.7.patch (Fixed upstream).
+ * debian/control: Switch dependence from autotools to cmake.
+ * debian/control, debian/compat: Set compatibility level to 9.
+ * debian/rules: Remove legacy PRONY records.
+ * debian/control: Change Homepage to github.
+ * debian/watch: Update to github using current naming scheme.
+ * debian/copyright: Add myself.
+ * Install README.md and documentation dir into package's docs.
+ * debian/rules: Remove tests results on clean.
+ * debian/control: Set myself as maintainer. (Johann Rudloff is out of
+ business, thanks a lot for all; Fathi Boudra acked this.)
+ * Bump Standards-Version to 3.9.8 (no additional changes needed).
+ * Add debian/TODO file.
+ * debian/cotrol: Add link to collab-maint's git.
+
+ -- Alexander GQ Gerasiov <gq@debian.org> Sat, 03 Dec 2016 20:19:22 +0300
+
+uncrustify (0.59+dfsg1-1.1) unstable; urgency=medium
+
+ * Non-maintainer upload.
+ * Remove non-free file (project-support.jpg). Closes: #753760
+
+ -- Mathieu Malaterre <malat@debian.org> Fri, 16 Jan 2015 16:52:15 +0100
+
+uncrustify (0.59-2) unstable; urgency=low
+
+ * Fix FTBFS with gcc 4.7 by fixing missing <unistd.h> include.
+ (Closes: #667404)
+
+ -- Fathi Boudra <fabo@debian.org> Mon, 21 May 2012 15:40:46 +0300
+
+uncrustify (0.59-1) unstable; urgency=low
+
+ * New upstream release.
+ * Add myself to Uploaders.
+
+ -- Fathi Boudra <fabo@debian.org> Sat, 31 Dec 2011 12:49:32 +0200
+
+uncrustify (0.57-1) unstable; urgency=low
+
+ * New upstream release.
+
+ [ Fathi Boudra ]
+ * Removed patch to check for NULL - stolen upstream.
+ * Bumped Standards-Version to 3.9.1 (no changes needed).
+
+ -- Johann Rudloff <cypheon@gmx.net> Mon, 21 Feb 2011 11:54:28 +0200
+
+uncrustify (0.56-2) unstable; urgency=low
+
+ [ Fathi Boudra ]
+ * Added patch to check for NULL to prevent a segmentation fault.
+ (Closes: #580195)
+ * Bumped Standards-Version to 3.9.0 (no changes needed).
+
+ -- Johann Rudloff <cypheon@gmx.net> Thu, 01 Jul 2010 20:34:01 +0300
+
+uncrustify (0.56-1) unstable; urgency=low
+
+ * New upstream release.
+
+ [ Fathi Boudra ]
+ * Switch to dpkg-source 3.0 (quilt) format.
+ * debian/control:
+ - bumped debhelper version to 7.4.15
+ - fixed typo in long description.
+ * debian/copyright:
+ - added email author.
+ - added myself.
+
+ -- Johann Rudloff <cypheon@gmx.net> Tue, 20 Apr 2010 13:08:29 +0300
+
+uncrustify (0.55-1) unstable; urgency=low
+
+ * New upstream release (Closes: #540817)
+
+ [ Fathi Boudra ]
+ * debian/patches/manpage_fix_hyphens.diff: removed - merged upstream
+ * debian/compat: bumped to 7
+ * debian/control:
+ - bumped debhelper version to 7.4.13
+ - bumped Standards-Version to 3.8.4 (no changes needed)
+ - added ${misc:Depends}
+ * debian/docs: updated
+ * debian/rules: rewrited from scratch to use dh and enabled parallel build
+
+ -- Johann Rudloff <cypheon@gmx.net> Wed, 17 Feb 2010 09:18:41 +0100
+
+uncrustify (0.52-1) unstable; urgency=low
+
+ * New upstream release (closes: #526100)
+ * debian/copyright: changed years and wording of copyright
+ * debian/patches/manpage_fix_hyphens.diff: added patch to fix fixed hyphens
+ used as minus signs in manpage
+ * debian/rules: included usage of quilt
+ * debian/control: added build dependency quilt
+ bumped Standards-Version to 3.8.1 (no changes required)
+
+ -- Johann Rudloff <cypheon@gmx.net> Thu, 30 Apr 2009 11:32:27 +0200
+
+uncrustify (0.48-1) unstable; urgency=low
+
+ * New upstream release
+ * debian/rules: removed CFLAGS settings (done by dpkg-buildpackage)
+
+ -- Johann Rudloff <cypheon@gmx.net> Tue, 22 Jul 2008 11:19:54 +0200
+
+uncrustify (0.47-1) unstable; urgency=low
+
+ * New upstream release (closes: #479372)
+ * Bumped Standards-Version to 3.8.0 (no changes required)
+ * removed debian/uncrustify.1, since upstream sources now include a
+ manpage
+ * debian/rules: removed call to dh_installman, manpage is installed by
+ make install
+ * debian/rules: removed unneeded call to dh_installdirs
+
+ -- Johann Rudloff <cypheon@gmx.net> Sun, 08 Jun 2008 10:09:53 +0200
+
+uncrustify (0.44-1) unstable; urgency=low
+
+ * New upstream release
+ * debian/uncrustify.1: updated version number and date
+
+ -- Johann Rudloff <cypheon@gmx.net> Sun, 24 Feb 2008 09:13:49 +0100
+
+uncrustify (0.43-1) unstable; urgency=low
+
+ * New upstream release (closes: #461631)
+ * Bumped Standards-Version to 3.7.3 (no changes required)
+ * debian/copyright: updated years of copyright
+ * debian/control: moved homepage address from description to a separate field
+ * debian/uncrustify.1: updated year and month
+ * debian/rules: copy update config.{sub,guess} into source tree in
+ config.status target, remove them in clean target
+
+ -- Johann Rudloff <cypheon@gmx.net> Thu, 10 Jan 2008 15:37:19 +0100
+
+uncrustify (0.41-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Johann Rudloff <cypheon@gmx.net> Mon, 12 Nov 2007 21:22:25 +0100
+
+uncrustify (0.40-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Johann Rudloff <cypheon@gmx.net> Tue, 16 Oct 2007 21:26:13 +0200
+
+uncrustify (0.39-1) unstable; urgency=low
+
+ * New Upstream Version
+
+ -- Johann Rudloff <cypheon@gmx.net> Wed, 26 Sep 2007 23:50:30 +0200
+
+uncrustify (0.38-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Johann Rudloff <cypheon@gmx.net> Thu, 06 Sep 2007 22:52:16 +0200
+
+uncrustify (0.37-1) unstable; urgency=low
+
+ * New upstream release
+ * debian/uncrustify.1: added new command line options
+ * debian/uncrustify.1: changes in formatting and description
+
+ -- Johann Rudloff <cypheon@gmx.net> Sun, 19 Aug 2007 19:33:08 +0200
+
+uncrustify (0.36-1) unstable; urgency=low
+
+ * New upstream release (closes: #434938, #434939)
+
+ -- Johann Rudloff <cypheon@gmx.net> Tue, 07 Aug 2007 13:49:41 +0200
+
+uncrustify (0.35-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Johann Rudloff <cypheon@gmx.net> Sat, 21 Jul 2007 20:41:52 +0200
+
+uncrustify (0.33-1) unstable; urgency=low
+
+ * New upstream release (closes: #416469)
+ * Added debian/watch file
+ * debian/uncrustify.1: added new command line options
+ * debian/uncrustify.1: removed leading colons
+ * debian/copyright: updated years of copyright
+ * debian/copyright: updated parts concerning cmpcfg.pl, since it
+ now contains a proper license statement
+
+ -- Johann Rudloff <cypheon@gmx.net> Fri, 30 Mar 2007 20:51:27 +0200
+
+uncrustify (0.30-1) unstable; urgency=low
+
+ * Initial release
+
+ -- Johann Rudloff <cypheon@gmx.net> Sat, 25 Nov 2006 14:06:44 +0100
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/compat b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/compat
new file mode 100644
index 00000000..f599e28b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/compat
@@ -0,0 +1 @@
+10
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/control b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/control
index 21e39cb0..21e39cb0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/control
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/control
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/copyright b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/copyright
index 7c74f673..7c74f673 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/copyright
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/copyright
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/docs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/docs
index 3310d30d..3310d30d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/docs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/docs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/001_docs-remove-remote-images.patch b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/patches/001_docs-remove-remote-images.patch
index 9c7d3e3b..9c7d3e3b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/patches/001_docs-remove-remote-images.patch
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/patches/001_docs-remove-remote-images.patch
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/patches/002_trinity_customization.diff b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/patches/002_trinity_customization.diff
new file mode 100644
index 00000000..16acca5d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/patches/002_trinity_customization.diff
@@ -0,0 +1,215 @@
+Customize and repackage as a TDE package.
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,6 +1,6 @@
+ cmake_minimum_required(VERSION 3.5)
+
+-project(uncrustify)
++project(uncrustify-trinity)
+
+ if("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
+ message(FATAL_ERROR "
+@@ -239,7 +239,7 @@
+ #
+ # Uncrustify
+ #
+-set(uncrustify_sources
++set(uncrustify-trinity_sources
+ src/align_add.cpp
+ src/align_asm_colon.cpp
+ src/align_assign.cpp
+@@ -333,7 +333,7 @@
+ ${PROJECT_BINARY_DIR}/src/option_enum.cpp
+ )
+
+-set(uncrustify_headers
++set(uncrustify-trinity_headers
+ src/add_space_table.h
+ src/align_add.h
+ src/align_asm_colon.h
+@@ -436,7 +436,7 @@
+ ${PROJECT_BINARY_DIR}/uncrustify_version.h
+ )
+
+-set(uncrustify_docs
++set(uncrustify-trinity_docs
+ "${PROJECT_SOURCE_DIR}/AUTHORS"
+ "${PROJECT_SOURCE_DIR}/BUGS"
+ "${PROJECT_SOURCE_DIR}/ChangeLog"
+@@ -445,17 +445,17 @@
+ "${PROJECT_SOURCE_DIR}/README.md"
+ )
+
+-add_executable(uncrustify ${uncrustify_sources} ${uncrustify_headers})
+-add_dependencies(uncrustify generate_version_header)
++add_executable(uncrustify-trinity ${uncrustify-trinity_sources} ${uncrustify-trinity_headers})
++add_dependencies(uncrustify-trinity generate_version_header)
+
+-set_property(TARGET uncrustify APPEND PROPERTY
++set_property(TARGET uncrustify-trinity APPEND PROPERTY
+ COMPILE_DEFINITIONS $<$<OR:$<CONFIG:Debug>,$<CONFIG:>>:DEBUG>
+ )
+
+ #
+-# Generate uncrustify.1
++# Generate uncrustify-trinity.1
+ #
+-configure_file(man/uncrustify.1.in uncrustify.1 @ONLY)
++configure_file(man/uncrustify.1.in uncrustify-trinity.1 @ONLY)
+
+ #
+ # Generate uncrustify.xml (katepart highlighting file)
+@@ -477,7 +477,7 @@
+ #
+ OPTION(ENABLE_CODECOVERAGE "Enable code coverage testing support")
+ if(ENABLE_CODECOVERAGE)
+- set(CODECOVERAGE_DEPENDS uncrustify)
++ set(CODECOVERAGE_DEPENDS uncrustify-trinity)
+ include(${CMAKE_SOURCE_DIR}/cmake/CodeCoverage.cmake)
+ endif(ENABLE_CODECOVERAGE)
+
+@@ -485,10 +485,10 @@
+ # Build command to run uncrustify on its own sources
+ #
+ add_custom_target(format-sources)
+-foreach(source IN LISTS uncrustify_sources uncrustify_headers)
++foreach(source IN LISTS uncrustify-trinity_sources uncrustify-trinity_headers)
+ get_filename_component(source_name ${source} NAME)
+ add_custom_target(format-${source_name}
+- COMMAND uncrustify
++ COMMAND uncrustify-trinity
+ -c forUncrustifySources.cfg
+ -lCPP --no-backup ${source}
+ COMMENT "Formatting ${source}"
+@@ -500,7 +500,7 @@
+ #
+ # Package
+ #
+-set(CPACK_PACKAGE_NAME "uncrustify")
++set(CPACK_PACKAGE_NAME "uncrustify-trinity")
+ set(CPACK_PACKAGE_VERSION "${UNCRUSTIFY_VERSION}")
+ set(CPACK_PACKAGE_VENDOR "Ben Gardner")
+ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Code beautifier")
+@@ -518,8 +518,8 @@
+ # Install
+ #
+ if(MSVC)
+- install(TARGETS uncrustify DESTINATION ".")
+- install(FILES ${uncrustify_docs}
++ install(TARGETS uncrustify-trinity DESTINATION ".")
++ install(FILES ${uncrustify-trinity_docs}
+ DESTINATION "."
+ )
+ install(FILES "${PROJECT_SOURCE_DIR}/documentation/htdocs/index.html"
+@@ -531,17 +531,17 @@
+ )
+ else()
+ include(GNUInstallDirs)
+- install(TARGETS uncrustify
++ install(TARGETS uncrustify-trinity
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ )
+- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/uncrustify.1"
++ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/uncrustify-trinity.1"
+ DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
+ )
+ install(DIRECTORY "${PROJECT_SOURCE_DIR}/etc/"
+ DESTINATION "${CMAKE_INSTALL_DOCDIR}/examples"
+ FILES_MATCHING PATTERN "*.cfg"
+ )
+- install(FILES ${uncrustify_docs}
++ install(FILES ${uncrustify-trinity_docs}
+ DESTINATION "${CMAKE_INSTALL_DOCDIR}"
+ )
+ endif()
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -32,7 +32,7 @@
+ add_custom_command(
+ OUTPUT ${tests_ctest_file}
+ COMMAND ${PYTHON_EXECUTABLE} run_format_tests.py
+- --executable $<TARGET_FILE:uncrustify>
++ --executable $<TARGET_FILE:uncrustify-trinity>
+ --git ${GIT_EXECUTABLE}
+ --python ${PYTHON_EXECUTABLE}
+ --write-ctest ${tests_ctest_file}
+@@ -48,7 +48,7 @@
+ string(REPLACE ".test" "" lang "${suite}")
+ add_test(NAME ${lang}
+ COMMAND ${PYTHON_EXECUTABLE} run_format_tests.py ${lang}
+- --executable $<TARGET_FILE:uncrustify>
++ --executable $<TARGET_FILE:uncrustify-trinity>
+ -d --git ${GIT_EXECUTABLE}
+ --result-dir ${CMAKE_CURRENT_BINARY_DIR}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+@@ -60,7 +60,7 @@
+ add_test(
+ NAME sources_format
+ COMMAND ${PYTHON_EXECUTABLE} run_sources_tests.py
+- --executable $<TARGET_FILE:uncrustify>
++ --executable $<TARGET_FILE:uncrustify-trinity>
+ -d --git ${GIT_EXECUTABLE}
+ --result-dir ${CMAKE_CURRENT_BINARY_DIR}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+@@ -72,7 +72,7 @@
+ COMMAND ${PYTHON_EXECUTABLE}
+ test_cli_options.py
+ --config $<CONFIG>
+- --build ${uncrustify_BINARY_DIR}
++ --build ${uncrustify-trinity_BINARY_DIR}
+ --diff
+ --test ${CMAKE_CURRENT_BINARY_DIR}/cli
+ ${_configs}
+@@ -83,11 +83,11 @@
+ COMMAND ${PYTHON_EXECUTABLE}
+ test_cli_options.py
+ --config $<CONFIG>
+- --build ${uncrustify_BINARY_DIR}
++ --build ${uncrustify-trinity_BINARY_DIR}
+ --apply
+ --test ${CMAKE_CURRENT_BINARY_DIR}/cli
+- DEPENDS uncrustify
++ DEPENDS uncrustify-trinity
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cli
+ )
+
+-add_test(NAME sanity COMMAND uncrustify --help)
++add_test(NAME sanity COMMAND uncrustify-trinity --help)
+--- a/tests/cli/output/help.txt
++++ b/tests/cli/output/help.txt
+@@ -1,5 +1,5 @@
+ Usage:
+-uncrustify [options] [files ...]
++uncrustify-trinity [options] [files ...]
+
+ If no input files are specified, the input is read from stdin
+ If reading from stdin, you should specify the language using -l
+--- a/tests/cli/test_cli_options.py
++++ b/tests/cli/test_cli_options.py
+@@ -525,16 +525,16 @@
+ bd_dir = parsed_args.build
+ test_dir = parsed_args.test
+
+- bin_paths = [s_path_join(bd_dir, 'uncrustify'),
+- s_path_join(bd_dir, 'uncrustify.exe'),
+- s_path_join(bd_dir, 'Debug/uncrustify'),
+- s_path_join(bd_dir, 'Debug/uncrustify.exe'),
+- s_path_join(bd_dir, 'Release/uncrustify'),
+- s_path_join(bd_dir, 'Release/uncrustify.exe'),
+- s_path_join(bd_dir, 'RelWithDebInfo/uncrustify'),
+- s_path_join(bd_dir, 'RelWithDebInfo/uncrustify.exe'),
+- s_path_join(bd_dir, 'MinSizeRel/uncrustify'),
+- s_path_join(bd_dir, 'MinSizeRel/uncrustify.exe')]
++ bin_paths = [s_path_join(bd_dir, 'uncrustify-trinity'),
++ s_path_join(bd_dir, 'uncrustify-trinity.exe'),
++ s_path_join(bd_dir, 'Debug/uncrustify-trinity'),
++ s_path_join(bd_dir, 'Debug/uncrustify-trinity.exe'),
++ s_path_join(bd_dir, 'Release/uncrustify-trinity'),
++ s_path_join(bd_dir, 'Release/uncrustify-trinity.exe'),
++ s_path_join(bd_dir, 'RelWithDebInfo/uncrustify-trinity'),
++ s_path_join(bd_dir, 'RelWithDebInfo/uncrustify-trinity.exe'),
++ s_path_join(bd_dir, 'MinSizeRel/uncrustify-trinity'),
++ s_path_join(bd_dir, 'MinSizeRel/uncrustify-trinity.exe')]
+ for uncr_bin in bin_paths:
+ if not isfile(uncr_bin):
+ eprint("is 3 not a file: %s" % uncr_bin)
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/patches/003_fixed_usage.diff b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/patches/003_fixed_usage.diff
new file mode 100644
index 00000000..55d2454f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/patches/003_fixed_usage.diff
@@ -0,0 +1,55 @@
+Fixed usage message to match uncrustify-trinity.
+--- a/src/uncrustify.cpp
++++ b/src/uncrustify.cpp
+@@ -303,15 +303,15 @@
+ " Cannot be used with the -o option'\n"
+ "\n"
+ "Usage Examples\n"
+- "cat foo.d | uncrustify -q -c my.cfg -l d\n"
+- "uncrustify -c my.cfg -f foo.d\n"
+- "uncrustify -c my.cfg -f foo.d -L0-2,20-23,51\n"
+- "uncrustify -c my.cfg -f foo.d -o foo.d\n"
+- "uncrustify -c my.cfg -f foo.d -o foo.d -ds dump\n"
+- "uncrustify -c my.cfg foo.d\n"
+- "uncrustify -c my.cfg --replace foo.d\n"
+- "uncrustify -c my.cfg --no-backup foo.d\n"
+- "uncrustify -c my.cfg --prefix=out -F files.txt\n"
++ "cat foo.d | uncrustify-trinity -q -c my.cfg -l d\n"
++ "uncrustify-trinity -c my.cfg -f foo.d\n"
++ "uncrustify-trinity -c my.cfg -f foo.d -L0-2,20-23,51\n"
++ "uncrustify-trinity -c my.cfg -f foo.d -o foo.d\n"
++ "uncrustify-trinity -c my.cfg -f foo.d -o foo.d -ds dump\n"
++ "uncrustify-trinity -c my.cfg foo.d\n"
++ "uncrustify-trinity -c my.cfg --replace foo.d\n"
++ "uncrustify-trinity -c my.cfg --no-backup foo.d\n"
++ "uncrustify-trinity -c my.cfg --prefix=out -F files.txt\n"
+ "\n"
+ "Note: Use comments containing ' *INDENT-OFF*' and ' *INDENT-ON*' to disable\n"
+ " processing of parts of the source file (these can be overridden with\n"
+--- a/tests/cli/output/help.txt
++++ b/tests/cli/output/help.txt
+@@ -67,15 +67,15 @@
+ Cannot be used with the -o option'
+
+ Usage Examples
+-cat foo.d | uncrustify -q -c my.cfg -l d
+-uncrustify -c my.cfg -f foo.d
+-uncrustify -c my.cfg -f foo.d -L0-2,20-23,51
+-uncrustify -c my.cfg -f foo.d -o foo.d
+-uncrustify -c my.cfg -f foo.d -o foo.d -ds dump
+-uncrustify -c my.cfg foo.d
+-uncrustify -c my.cfg --replace foo.d
+-uncrustify -c my.cfg --no-backup foo.d
+-uncrustify -c my.cfg --prefix=out -F files.txt
++cat foo.d | uncrustify-trinity -q -c my.cfg -l d
++uncrustify-trinity -c my.cfg -f foo.d
++uncrustify-trinity -c my.cfg -f foo.d -L0-2,20-23,51
++uncrustify-trinity -c my.cfg -f foo.d -o foo.d
++uncrustify-trinity -c my.cfg -f foo.d -o foo.d -ds dump
++uncrustify-trinity -c my.cfg foo.d
++uncrustify-trinity -c my.cfg --replace foo.d
++uncrustify-trinity -c my.cfg --no-backup foo.d
++uncrustify-trinity -c my.cfg --prefix=out -F files.txt
+
+ Note: Use comments containing ' *INDENT-OFF*' and ' *INDENT-ON*' to disable
+ processing of parts of the source file (these can be overridden with
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/patches/series b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/patches/series
new file mode 100644
index 00000000..9bd2c227
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/patches/series
@@ -0,0 +1,3 @@
+001_docs-remove-remote-images.patch
+002_trinity_customization.diff
+003_fixed_usage.diff
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/rules b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/rules
new file mode 100755
index 00000000..921af9c1
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/rules
@@ -0,0 +1,19 @@
+#!/usr/bin/make -f
+
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/class/cmake.mk
+include debian/cdbs/debian-tde.mk
+
+DEB_CMAKE_EXTRA_FLAGS := \
+ -DCMAKE_EXPORT_COMPILE_COMMANDS="ON" \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DCMAKE_VERBOSE_MAKEFILE="ON" \
+ -DCMAKE_SKIP_RPATH="OFF" \
+ -DBUILD_TESTING="ON" \
+ -DUNCRUSTIFY_SEPARATE_TESTS="ON"
+
+DEB_MAKE_CHECK_TARGET = test
+
+DEB_MAKE_ENVVARS += PYTHONPYCACHEPREFIX=${DEB_DESTDIR}../../${DEB_BUILDDIR}/__pycache__
+DEB_MAKE_ENVVARS += CTEST_PARALLEL_LEVEL=6
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/source/format b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/source/format
index 163aaf8d..163aaf8d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/debian/source/format
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/source/format
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/source/options b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/source/options
new file mode 100644
index 00000000..72f1f545
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/debian/source/options
@@ -0,0 +1,6 @@
+# Use xz instead of gzip
+compression = "xz"
+compression-level = 9
+
+# Don't run differences
+diff-ignore = .*
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/Conditional_operator.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/Conditional_operator.txt
new file mode 100644
index 00000000..a9448718
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/Conditional_operator.txt
@@ -0,0 +1,7 @@
+The bug https://github.com/uncrustify/uncrustify/issues/1130
+shows the problem with the conditional operator ?
+indent_ternary_operator not aligning correctly.
+
+The solution is to transform the simple call to a recursiv call.
+The position of ? must be saved for each level and be used to
+position the colon operator.
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/Conditional_operator.txt-save b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/Conditional_operator.txt-save
new file mode 100644
index 00000000..a9448718
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/Conditional_operator.txt-save
@@ -0,0 +1,7 @@
+The bug https://github.com/uncrustify/uncrustify/issues/1130
+shows the problem with the conditional operator ?
+indent_ternary_operator not aligning correctly.
+
+The solution is to transform the simple call to a recursiv call.
+The position of ? must be saved for each level and be used to
+position the colon operator.
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/Track.jpg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/Track.jpg
index b18b0477..b18b0477 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/Track.jpg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/Track.jpg
Binary files differ
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/Tracking.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/Tracking.txt
new file mode 100644
index 00000000..1a428044
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/Tracking.txt
@@ -0,0 +1,54 @@
+2020-11-09
+
+Tracking is used to put some marks within a copy of the source and
+in the log file. uncrustify generate a HTML file with the marks.
+
+Using a browser, one can see where, which options are working.
+
+The command option is:
+
+uncrustify --tracking space:Track.html -c config-FILE -f source-FILE -L A 2>A.txt
+uncrustify --tracking nl:Track.html -c config-FILE -f source-FILE -L A 2>A.txt
+uncrustify --tracking start:Track.html -c config-FILE -f source-FILE -L A 2>A.txt
+
+Tracking puts a red "M" in the source to show where the options are working.
+A tracking number is used and written in the Track.html file and the output file A.txt
+to make possible to link the changes together.
+
+An example:
+
+tracking.cpp
+{
+ a = b + 111-55;
+}
+
+The config file:
+
+indent_with_tabs = 0
+sp_arith = force
+sp_assign = force
+
+The tracking file is:
+
+<html>
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+ <title>Uncrustify: where do the Spaces options work</title>
+</head>
+<body lang="en-US">
+<p>
+</p>
+<pre>
+{
+ a<a title="1,8,sp_assign"><font color="red">M</font></a>=<a title="2,9,16,sp_assign"><font color="red">M</font><
+/a>b<a title="3,10,17,22,sp_arith"><font color="red">M</font></a>+<a title="4,11,18,23,27,sp_arith"><font color="red">M<
+/font></a>111<a title="5,12,19,24,28,31,sp_arith"><font color="red">M</font></a>-<a title="6,13,20,25,29,32,34,sp_arith"
+><font color="red">M</font></a>55<a title="7,14,21,26,30,33,35,36,sp_before_semi"><font color="red">M</font></a>;
+}
+</pre>
+</body>
+</html>
+
+Use it with a browser and you can see the red "M"s.
+Let put the cursor on the "M"s, and you see the tracking number and the option used.
+(look at the picture track.jpg)
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/align-thresholds.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/align-thresholds.txt
index 5c18039d..5c18039d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/align-thresholds.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/align-thresholds.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/control_the_spaces.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/control_the_spaces.txt
index 8ea2ac52..8ea2ac52 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/control_the_spaces.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/control_the_spaces.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/dump-steps.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/dump-steps.txt
index 498a147e..498a147e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/dump-steps.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/dump-steps.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/example.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/example.c
index 7c8edf79..7c8edf79 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/example.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/example.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/goals.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/goals.txt
index 610ec121..610ec121 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/goals.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/goals.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/how_to_configure_options.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/how_to_configure_options.txt
index 2f0eee4e..2f0eee4e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/how_to_configure_options.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/how_to_configure_options.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/how_to_format_cpp_lambda_functions.rst b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/how_to_format_cpp_lambda_functions.rst
index e15776d4..e15776d4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/how_to_format_cpp_lambda_functions.rst
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/how_to_format_cpp_lambda_functions.rst
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/align_typedef.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/align_typedef.html
index 6d94eadf..6d94eadf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/align_typedef.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/align_typedef.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/ben.cfg.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/ben.cfg.txt
new file mode 100644
index 00000000..acc4c8f2
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/ben.cfg.txt
@@ -0,0 +1,113 @@
+#
+# My favorite format
+#
+
+newlines = LF # AUTO (default), CRLF, CR, or LF
+
+indent_with_tabs = 0 # 1=indent to level only, 2=indent with tabs
+input_tab_size = 8 # original tab size
+output_tab_size = 3 # new tab size
+indent_columns = output_tab_size
+# indent_label = 0 # pos: absolute col, neg: relative column
+indent_align_string = False # align broken strings
+indent_brace = 0
+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_max = 4
+nl_before_block_comment = 2
+nl_after_func_body = 2
+nl_after_func_proto_group = 2
+
+nl_assign_brace = add # "= {" vs "= \n {"
+nl_enum_brace = add # "enum {" vs "enum \n {"
+nl_union_brace = add # "union {" vs "union \n {"
+nl_struct_brace = add # "struct {" vs "struct \n {"
+nl_do_brace = add # "do {" vs "do \n {"
+nl_if_brace = add # "if () {" vs "if () \n {"
+nl_for_brace = add # "for () {" vs "for () \n {"
+nl_else_brace = add # "else {" vs "else \n {"
+nl_while_brace = add # "while () {" vs "while () \n {"
+nl_switch_brace = add # "switch () {" vs "switch () \n {"
+nl_var_def_blk_end_func_top = 1
+nl_before_case = 1
+nl_fcall_brace = add # "foo() {" vs "foo()\n{"
+nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
+nl_after_return = TRUE
+nl_brace_while = remove
+nl_brace_else = add
+nl_squeeze_ifdef = TRUE
+
+pos_bool = trail # BOOL ops on trailing end
+
+eat_blanks_before_close_brace = TRUE
+eat_blanks_after_open_brace = 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_for = 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_sparen_brace = add
+sp_fparen_brace = add
+sp_after_ptr_star = remove
+sp_before_ptr_star = force
+sp_between_ptr_star = remove
+
+align_with_tabs = FALSE # use tabs to align
+align_on_tabstop = FALSE # align on tabstops
+align_enum_equ_span = 4
+align_nl_cont = 1
+align_var_def_span = 1
+align_var_def_thresh = 12
+align_var_def_inline = TRUE
+align_var_def_star = TRUE
+align_var_def_colon = TRUE
+align_assign_span = 1
+align_assign_thresh = 12
+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_right = TRUE
+align_typedef_span = 5
+align_typedef_gap = 3
+
+cmt_star_cont = TRUE
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/config.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/config.txt
new file mode 100644
index 00000000..9b3d568c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/config.txt
@@ -0,0 +1,3708 @@
+# Uncrustify-0.78.0
+
+#
+# General options
+#
+
+# The type of line endings.
+#
+# Default: auto
+newlines = auto # lf/crlf/cr/auto
+
+# The original size of tabs in the input.
+#
+# Default: 8
+input_tab_size = 8 # unsigned number
+
+# The size of tabs in the output (only used if align_with_tabs=true).
+#
+# Default: 8
+output_tab_size = 8 # unsigned number
+
+# The ASCII value of the string escape char, usually 92 (\) or (Pawn) 94 (^).
+#
+# Default: 92
+string_escape_char = 92 # unsigned number
+
+# Alternate string escape char (usually only used for Pawn).
+# Only works right before the quote char.
+string_escape_char2 = 0 # unsigned number
+
+# Replace tab characters found in string literals with the escape sequence \t
+# instead.
+string_replace_tab_chars = false # true/false
+
+# Allow interpreting '>=' and '>>=' as part of a template in code like
+# 'void f(list<list<B>>=val);'. If true, 'assert(x<0 && y>=3)' will be broken.
+# Improvements to template detection may make this option obsolete.
+tok_split_gte = false # true/false
+
+# Disable formatting of NL_CONT ('\\n') ended lines (e.g. multi-line macros).
+disable_processing_nl_cont = false # true/false
+
+# Specify the marker used in comments to disable processing of part of the
+# file.
+#
+# Default: *INDENT-OFF*
+disable_processing_cmt = " *INDENT-OFF*" # string
+
+# Specify the marker used in comments to (re)enable processing in a file.
+#
+# Default: *INDENT-ON*
+enable_processing_cmt = " *INDENT-ON*" # string
+
+# Enable parsing of digraphs.
+enable_digraphs = false # true/false
+
+# Option to allow both disable_processing_cmt and enable_processing_cmt
+# strings, if specified, to be interpreted as ECMAScript regular expressions.
+# If true, a regex search will be performed within comments according to the
+# specified patterns in order to disable/enable processing.
+processing_cmt_as_regex = false # true/false
+
+# Add or remove the UTF-8 BOM (recommend 'remove').
+utf8_bom = ignore # ignore/add/remove/force/not_defined
+
+# If the file contains bytes with values between 128 and 255, but is not
+# UTF-8, then output as UTF-8.
+utf8_byte = false # true/false
+
+# Force the output encoding to UTF-8.
+utf8_force = false # true/false
+
+#
+# Spacing options
+#
+
+# Add or remove space around non-assignment symbolic operators ('+', '/', '%',
+# '<<', and so forth).
+sp_arith = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around arithmetic operators '+' and '-'.
+#
+# Overrides sp_arith.
+sp_arith_additive = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around assignment operator '=', '+=', etc.
+sp_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around '=' in C++11 lambda capture specifications.
+#
+# Overrides sp_assign.
+sp_cpp_lambda_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the capture specification of a C++11 lambda when
+# an argument list is present, as in '[] <here> (int x){ ... }'.
+sp_cpp_lambda_square_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the capture specification of a C++11 lambda with
+# no argument list is present, as in '[] <here> { ... }'.
+sp_cpp_lambda_square_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the opening parenthesis and before the closing
+# parenthesis of a argument list of a C++11 lambda, as in
+# '[]( <here> ){ ... }'
+# with an empty list.
+sp_cpp_lambda_argument_list_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the opening parenthesis and before the closing
+# parenthesis of a argument list of a C++11 lambda, as in
+# '[]( <here> int x <here> ){ ... }'.
+sp_cpp_lambda_argument_list = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the argument list of a C++11 lambda, as in
+# '[](int x) <here> { ... }'.
+sp_cpp_lambda_paren_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a lambda body and its call operator of an
+# immediately invoked lambda, as in '[]( ... ){ ... } <here> ( ... )'.
+sp_cpp_lambda_fparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around assignment operator '=' in a prototype.
+#
+# If set to ignore, use sp_assign.
+sp_assign_default = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before assignment operator '=', '+=', etc.
+#
+# Overrides sp_assign.
+sp_before_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after assignment operator '=', '+=', etc.
+#
+# Overrides sp_assign.
+sp_after_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space in 'enum {'.
+#
+# Default: add
+sp_enum_brace = add # ignore/add/remove/force/not_defined
+
+# Add or remove space in 'NS_ENUM ('.
+sp_enum_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around assignment '=' in enum.
+sp_enum_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before assignment '=' in enum.
+#
+# Overrides sp_enum_assign.
+sp_enum_before_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after assignment '=' in enum.
+#
+# Overrides sp_enum_assign.
+sp_enum_after_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around assignment ':' in enum.
+sp_enum_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around preprocessor '##' concatenation operator.
+#
+# Default: add
+sp_pp_concat = add # ignore/add/remove/force/not_defined
+
+# Add or remove space after preprocessor '#' stringify operator.
+# Also affects the '#@' charizing operator.
+sp_pp_stringify = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before preprocessor '#' stringify operator
+# as in '#define x(y) L#y'.
+sp_before_pp_stringify = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around boolean operators '&&' and '||'.
+sp_bool = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around compare operator '<', '>', '==', etc.
+sp_compare = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '(' and ')'.
+sp_inside_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between nested parentheses, i.e. '((' vs. ') )'.
+sp_paren_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.
+sp_cparen_oparen = ignore # ignore/add/remove/force/not_defined
+
+# Whether to balance spaces inside nested parentheses.
+sp_balance_nested_parens = false # true/false
+
+# Add or remove space between ')' and '{'.
+sp_paren_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between nested braces, i.e. '{{' vs. '{ {'.
+sp_brace_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*'.
+sp_before_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*' that isn't followed by a
+# variable name. If set to ignore, sp_before_ptr_star is used instead.
+sp_before_unnamed_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*' that is followed by a qualifier.
+# If set to ignore, sp_before_unnamed_ptr_star is used instead.
+sp_before_qualifier_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*' that is followed by 'operator' keyword.
+# If set to ignore, sp_before_unnamed_ptr_star is used instead.
+sp_before_operator_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*' that is followed by
+# a class scope (as in 'int *MyClass::method()') or namespace scope
+# (as in 'int *my_ns::func()').
+# If set to ignore, sp_before_unnamed_ptr_star is used instead.
+sp_before_scope_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*' that is followed by '::',
+# as in 'int *::func()'.
+# If set to ignore, sp_before_unnamed_ptr_star is used instead.
+sp_before_global_scope_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a qualifier and a pointer star '*' that isn't
+# followed by a variable name, as in '(char const *)'. If set to ignore,
+# sp_before_ptr_star is used instead.
+sp_qualifier_unnamed_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between pointer stars '*', as in 'int ***a;'.
+sp_between_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between pointer star '*' and reference '&', as in 'int *& a;'.
+sp_between_ptr_ref = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after pointer star '*', if followed by a word.
+#
+# Overrides sp_type_func.
+sp_after_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after pointer caret '^', if followed by a word.
+sp_after_ptr_block_caret = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after pointer star '*', if followed by a qualifier.
+sp_after_ptr_star_qualifier = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a pointer star '*', if followed by a function
+# prototype or function definition.
+#
+# Overrides sp_after_ptr_star and sp_type_func.
+sp_after_ptr_star_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a pointer star '*' in the trailing return of a
+# function prototype or function definition.
+sp_after_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the pointer star '*' and the name of the variable
+# in a function pointer definition.
+sp_ptr_star_func_var = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the pointer star '*' and the name of the type
+# in a function pointer type definition.
+sp_ptr_star_func_type = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a pointer star '*', if followed by an open
+# parenthesis, as in 'void* (*)()'.
+sp_ptr_star_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a pointer star '*', if followed by a function
+# prototype or function definition. If set to ignore, sp_before_ptr_star is
+# used instead.
+sp_before_ptr_star_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a qualifier and a pointer star '*' followed by
+# the name of the function in a function prototype or definition, as in
+# 'char const *foo()`. If set to ignore, sp_before_ptr_star is used instead.
+sp_qualifier_ptr_star_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a pointer star '*' in the trailing return of a
+# function prototype or function definition.
+sp_before_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a qualifier and a pointer star '*' in the
+# trailing return of a function prototype or function definition, as in
+# 'auto foo() -> char const *'.
+sp_qualifier_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a reference sign '&'.
+sp_before_byref = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a reference sign '&' that isn't followed by a
+# variable name. If set to ignore, sp_before_byref is used instead.
+sp_before_unnamed_byref = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after reference sign '&', if followed by a word.
+#
+# Overrides sp_type_func.
+sp_after_byref = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a reference sign '&', if followed by a function
+# prototype or function definition.
+#
+# Overrides sp_after_byref and sp_type_func.
+sp_after_byref_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a reference sign '&', if followed by a function
+# prototype or function definition.
+sp_before_byref_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a reference sign '&', if followed by an open
+# parenthesis, as in 'char& (*)()'.
+sp_byref_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between type and word. In cases where total removal of
+# whitespace would be a syntax error, a value of 'remove' is treated the same
+# as 'force'.
+#
+# This also affects some other instances of space following a type that are
+# not covered by other options; for example, between the return type and
+# parenthesis of a function type template argument, between the type and
+# parenthesis of an array parameter, or between 'decltype(...)' and the
+# following word.
+#
+# Default: force
+sp_after_type = force # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'decltype(...)' and word,
+# brace or function call.
+sp_after_decltype = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space before the parenthesis in the D constructs
+# 'template Foo(' and 'class Foo('.
+sp_before_template_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'template' and '<'.
+# If set to ignore, sp_before_angle is used.
+sp_template_angle = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before '<'.
+sp_before_angle = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '<' and '>'.
+sp_inside_angle = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '<>'.
+# if empty.
+sp_inside_angle_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '>' and ':'.
+sp_angle_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after '>'.
+sp_after_angle = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '>' and '(' as found in 'new List<byte>(foo);'.
+sp_angle_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '>' and '()' as found in 'new List<byte>();'.
+sp_angle_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '>' and a word as in 'List<byte> m;' or
+# 'template <typename T> static ...'.
+sp_angle_word = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '>' and '>' in '>>' (template stuff).
+#
+# Default: add
+sp_angle_shift = add # ignore/add/remove/force/not_defined
+
+# (C++11) Permit removal of the space between '>>' in 'foo<bar<int> >'. Note
+# that sp_angle_shift cannot remove the space without this option.
+sp_permit_cpp11_shift = false # true/false
+
+# Add or remove space before '(' of control statements ('if', 'for', 'switch',
+# 'while', etc.).
+sp_before_sparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '(' and ')' of control statements other than
+# 'for'.
+sp_inside_sparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after '(' of control statements other than 'for'.
+#
+# Overrides sp_inside_sparen.
+sp_inside_sparen_open = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before ')' of control statements other than 'for'.
+#
+# Overrides sp_inside_sparen.
+sp_inside_sparen_close = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '(' and ')' of 'for' statements.
+sp_inside_for = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after '(' of 'for' statements.
+#
+# Overrides sp_inside_for.
+sp_inside_for_open = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before ')' of 'for' statements.
+#
+# Overrides sp_inside_for.
+sp_inside_for_close = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '((' or '))' of control statements.
+sp_sparen_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after ')' of control statements.
+sp_after_sparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and '{' of control statements.
+sp_sparen_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'do' and '{'.
+sp_do_brace_open = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '}' and 'while'.
+sp_brace_close_while = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'while' and '('. Overrides sp_before_sparen.
+sp_while_paren_open = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space between 'invariant' and '('.
+sp_invariant_paren = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space after the ')' in 'invariant (C) c'.
+sp_after_invariant_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before empty statement ';' on 'if', 'for' and 'while'.
+sp_special_semi = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before ';'.
+#
+# Default: remove
+sp_before_semi = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space before ';' in non-empty 'for' statements.
+sp_before_semi_for = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a semicolon of an empty left part of a for
+# statement, as in 'for ( <here> ; ; )'.
+sp_before_semi_for_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the semicolons of an empty middle part of a for
+# statement, as in 'for ( ; <here> ; )'.
+sp_between_semi_for_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after ';', except when followed by a comment.
+#
+# Default: add
+sp_after_semi = add # ignore/add/remove/force/not_defined
+
+# Add or remove space after ';' in non-empty 'for' statements.
+#
+# Default: force
+sp_after_semi_for = force # ignore/add/remove/force/not_defined
+
+# Add or remove space after the final semicolon of an empty part of a for
+# statement, as in 'for ( ; ; <here> )'.
+sp_after_semi_for_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before '[' (except '[]').
+sp_before_square = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before '[' for a variable definition.
+#
+# Default: remove
+sp_before_vardef_square = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space before '[' for asm block.
+sp_before_square_asm_block = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before '[]'.
+sp_before_squares = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before C++17 structured bindings.
+sp_cpp_before_struct_binding = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside a non-empty '[' and ']'.
+sp_inside_square = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '[]'.
+# if empty.
+sp_inside_square_empty = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and
+# ']'. If set to ignore, sp_inside_square is used.
+sp_inside_square_oc_array = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.
+sp_after_comma = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.
+#
+# Default: remove
+sp_before_comma = remove # ignore/add/remove/force/not_defined
+
+# (C#, Vala) Add or remove space between ',' and ']' in multidimensional array type
+# like 'int[,,]'.
+sp_after_mdatype_commas = ignore # ignore/add/remove/force/not_defined
+
+# (C#, Vala) Add or remove space between '[' and ',' in multidimensional array type
+# like 'int[,,]'.
+sp_before_mdatype_commas = ignore # ignore/add/remove/force/not_defined
+
+# (C#, Vala) Add or remove space between ',' in multidimensional array type
+# like 'int[,,]'.
+sp_between_mdatype_commas = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between an open parenthesis and comma,
+# i.e. '(,' vs. '( ,'.
+#
+# Default: force
+sp_paren_comma = force # ignore/add/remove/force/not_defined
+
+# Add or remove space between a type and ':'.
+sp_type_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the variadic '...' when preceded by a
+# non-punctuator.
+# The value REMOVE will be overridden with FORCE
+sp_after_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before the variadic '...' when preceded by a
+# non-punctuator.
+# The value REMOVE will be overridden with FORCE
+sp_before_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a type and '...'.
+sp_type_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a '*' and '...'.
+sp_ptr_type_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and '...'.
+sp_paren_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '&&' and '...'.
+sp_byref_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and a qualifier such as 'const'.
+sp_paren_qualifier = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and 'noexcept'.
+sp_paren_noexcept = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after class ':'.
+sp_after_class_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before class ':'.
+sp_before_class_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after class constructor ':'.
+#
+# Default: add
+sp_after_constr_colon = add # ignore/add/remove/force/not_defined
+
+# Add or remove space before class constructor ':'.
+#
+# Default: add
+sp_before_constr_colon = add # ignore/add/remove/force/not_defined
+
+# Add or remove space before case ':'.
+#
+# Default: remove
+sp_before_case_colon = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'operator' and operator sign.
+sp_after_operator = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the operator symbol and the open parenthesis, as
+# in 'operator ++('.
+sp_after_operator_sym = ignore # ignore/add/remove/force/not_defined
+
+# Overrides sp_after_operator_sym when the operator has no arguments, as in
+# 'operator *()'.
+sp_after_operator_sym_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or
+# '(int)a' vs. '(int) a'.
+sp_after_cast = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove spaces inside cast parentheses.
+sp_inside_paren_cast = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the type and open parenthesis in a C++ cast,
+# i.e. 'int(exp)' vs. 'int (exp)'.
+sp_cpp_cast_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'sizeof' and '('.
+sp_sizeof_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'sizeof' and '...'.
+sp_sizeof_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'sizeof...' and '('.
+sp_sizeof_ellipsis_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '...' and a parameter pack.
+sp_ellipsis_parameter_pack = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a parameter pack and '...'.
+sp_parameter_pack_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'decltype' and '('.
+sp_decltype_paren = ignore # ignore/add/remove/force/not_defined
+
+# (Pawn) Add or remove space after the tag keyword.
+sp_after_tag = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside enum '{' and '}'.
+sp_inside_braces_enum = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside struct/union '{' and '}'.
+sp_inside_braces_struct = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'
+sp_inside_braces_oc_dict = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after open brace in an unnamed temporary
+# direct-list-initialization
+# if statement is a brace_init_lst
+# works only if sp_brace_brace is set to ignore.
+sp_after_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before close brace in an unnamed temporary
+# direct-list-initialization
+# if statement is a brace_init_lst
+# works only if sp_brace_brace is set to ignore.
+sp_before_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside an unnamed temporary direct-list-initialization
+# if statement is a brace_init_lst
+# works only if sp_brace_brace is set to ignore
+# works only if sp_before_type_brace_init_lst_close is set to ignore.
+sp_inside_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '{' and '}'.
+sp_inside_braces = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '{}'.
+# if empty.
+sp_inside_braces_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around trailing return operator '->'.
+sp_trailing_return = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between return type and function name. A minimum of 1
+# is forced except for pointer return types.
+sp_type_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between type and open brace of an unnamed temporary
+# direct-list-initialization.
+sp_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '(' on function declaration.
+sp_func_proto_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '()' on function declaration
+# if empty.
+sp_func_proto_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '(' with a typedef specifier.
+sp_func_type_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between alias name and '(' of a non-pointer function type typedef.
+sp_func_def_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '()' on function definition
+# if empty.
+sp_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside empty function '()'.
+# Overrides sp_after_angle unless use_sp_after_angle_always is set to true.
+sp_inside_fparens = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside function '(' and ')'.
+sp_inside_fparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside user functor '(' and ')'.
+sp_func_call_user_inside_rparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside empty functor '()'.
+# Overrides sp_after_angle unless use_sp_after_angle_always is set to true.
+sp_inside_rparens = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside functor '(' and ')'.
+sp_inside_rparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside the first parentheses in a function type, as in
+# 'void (*x)(...)'.
+sp_inside_tparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the ')' and '(' in a function type, as in
+# 'void (*x)(...)'.
+sp_after_tparen_close = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ']' and '(' when part of a function call.
+sp_square_fparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and '{' of function.
+sp_fparen_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and '{' of a function call in object
+# initialization.
+#
+# Overrides sp_fparen_brace.
+sp_fparen_brace_initializer = ignore # ignore/add/remove/force/not_defined
+
+# (Java) Add or remove space between ')' and '{{' of double brace initializer.
+sp_fparen_dbrace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '(' on function calls.
+sp_func_call_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '()' on function calls without
+# parameters. If set to ignore (the default), sp_func_call_paren is used.
+sp_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the user function name and '(' on function
+# calls. You need to set a keyword to be a user function in the config file,
+# like:
+# set func_call_user tr _ i18n
+sp_func_call_user_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside user function '(' and ')'.
+sp_func_call_user_inside_fparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between nested parentheses with user functions,
+# i.e. '((' vs. '( ('.
+sp_func_call_user_paren_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a constructor/destructor and the open
+# parenthesis.
+sp_func_class_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a constructor without parameters or destructor
+# and '()'.
+sp_func_class_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after 'return'.
+#
+# Default: force
+sp_return = force # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'return' and '('.
+sp_return_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'return' and '{'.
+sp_return_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '__attribute__' and '('.
+sp_attribute_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'defined' and '(' in '#if defined (FOO)'.
+sp_defined_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'throw' and '(' in 'throw (something)'.
+sp_throw_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'throw' and anything other than '(' as in
+# '@throw [...];'.
+sp_after_throw = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'catch' and '(' in 'catch (something) { }'.
+# If set to ignore, sp_before_sparen is used.
+sp_catch_paren = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between '@catch' and '('
+# in '@catch (something) { }'. If set to ignore, sp_catch_paren is used.
+sp_oc_catch_paren = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before Objective-C protocol list
+# as in '@protocol Protocol<here><Protocol_A>' or '@interface MyClass : NSObject<here><MyProtocol>'.
+sp_before_oc_proto_list = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between class name and '('
+# in '@interface className(categoryName)<ProtocolName>:BaseClass'
+sp_oc_classname_paren = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space between 'version' and '('
+# in 'version (something) { }'. If set to ignore, sp_before_sparen is used.
+sp_version_paren = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space between 'scope' and '('
+# in 'scope (something) { }'. If set to ignore, sp_before_sparen is used.
+sp_scope_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'super' and '(' in 'super (something)'.
+#
+# Default: remove
+sp_super_paren = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'this' and '(' in 'this (something)'.
+#
+# Default: remove
+sp_this_paren = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space between a macro name and its definition.
+sp_macro = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a macro function ')' and its definition.
+sp_macro_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'else' and '{' if on the same line.
+sp_else_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '}' and 'else' if on the same line.
+sp_brace_else = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '}' and the name of a typedef on the same line.
+sp_brace_typedef = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before the '{' of a 'catch' statement, if the '{' and
+# 'catch' are on the same line, as in 'catch (decl) <here> {'.
+sp_catch_brace = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before the '{' of a '@catch' statement, if the '{'
+# and '@catch' are on the same line, as in '@catch (decl) <here> {'.
+# If set to ignore, sp_catch_brace is used.
+sp_oc_catch_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '}' and 'catch' if on the same line.
+sp_brace_catch = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between '}' and '@catch' if on the same line.
+# If set to ignore, sp_brace_catch is used.
+sp_oc_brace_catch = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'finally' and '{' if on the same line.
+sp_finally_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '}' and 'finally' if on the same line.
+sp_brace_finally = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'try' and '{' if on the same line.
+sp_try_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between get/set and '{' if on the same line.
+sp_getset_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a variable and '{' for C++ uniform
+# initialization.
+sp_word_brace_init_lst = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a variable and '{' for a namespace.
+#
+# Default: add
+sp_word_brace_ns = add # ignore/add/remove/force/not_defined
+
+# Add or remove space before the '::' operator.
+sp_before_dc = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '::' operator.
+sp_after_dc = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove around the D named array initializer ':' operator.
+sp_d_array_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '!' (not) unary operator.
+#
+# Default: remove
+sp_not = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space between two '!' (not) unary operators.
+# If set to ignore, sp_not will be used.
+sp_not_not = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '~' (invert) unary operator.
+#
+# Default: remove
+sp_inv = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '&' (address-of) unary operator. This does not
+# affect the spacing after a '&' that is part of a type.
+#
+# Default: remove
+sp_addr = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space around the '.' or '->' operators.
+#
+# Default: remove
+sp_member = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '*' (dereference) unary operator. This does
+# not affect the spacing after a '*' that is part of a type.
+#
+# Default: remove
+sp_deref = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.
+#
+# Default: remove
+sp_sign = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space between '++' and '--' the word to which it is being
+# applied, as in '(--x)' or 'y++;'.
+#
+# Default: remove
+sp_incdec = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space before a backslash-newline at the end of a line.
+#
+# Default: add
+sp_before_nl_cont = add # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;'
+# or '+(int) bar;'.
+sp_after_oc_scope = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the colon in message specs,
+# i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.
+sp_after_oc_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before the colon in message specs,
+# i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.
+sp_before_oc_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the colon in immutable dictionary expression
+# 'NSDictionary *test = @{@"foo" :@"bar"};'.
+sp_after_oc_dict_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before the colon in immutable dictionary expression
+# 'NSDictionary *test = @{@"foo" :@"bar"};'.
+sp_before_oc_dict_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the colon in message specs,
+# i.e. '[object setValue:1];' vs. '[object setValue: 1];'.
+sp_after_send_oc_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before the colon in message specs,
+# i.e. '[object setValue:1];' vs. '[object setValue :1];'.
+sp_before_send_oc_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the (type) in message specs,
+# i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'.
+sp_after_oc_type = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the first (type) in message specs,
+# i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'.
+sp_after_oc_return_type = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between '@selector' and '(',
+# i.e. '@selector(msgName)' vs. '@selector (msgName)'.
+# Also applies to '@protocol()' constructs.
+sp_after_oc_at_sel = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between '@selector(x)' and the following word,
+# i.e. '@selector(foo) a:' vs. '@selector(foo)a:'.
+sp_after_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space inside '@selector' parentheses,
+# i.e. '@selector(foo)' vs. '@selector( foo )'.
+# Also applies to '@protocol()' constructs.
+sp_inside_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before a block pointer caret,
+# i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'.
+sp_before_oc_block_caret = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after a block pointer caret,
+# i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'.
+sp_after_oc_block_caret = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between the receiver and selector in a message,
+# as in '[receiver selector ...]'.
+sp_after_oc_msg_receiver = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after '@property'.
+sp_after_oc_property = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between '@synchronized' and the open parenthesis,
+# i.e. '@synchronized(foo)' vs. '@synchronized (foo)'.
+sp_after_oc_synchronized = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around the ':' in 'b ? t : f'.
+sp_cond_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before the ':' in 'b ? t : f'.
+#
+# Overrides sp_cond_colon.
+sp_cond_colon_before = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the ':' in 'b ? t : f'.
+#
+# Overrides sp_cond_colon.
+sp_cond_colon_after = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around the '?' in 'b ? t : f'.
+sp_cond_question = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before the '?' in 'b ? t : f'.
+#
+# Overrides sp_cond_question.
+sp_cond_question_before = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '?' in 'b ? t : f'.
+#
+# Overrides sp_cond_question.
+sp_cond_question_after = ignore # ignore/add/remove/force/not_defined
+
+# In the abbreviated ternary form '(a ?: b)', add or remove space between '?'
+# and ':'.
+#
+# Overrides all other sp_cond_* options.
+sp_cond_ternary_short = ignore # ignore/add/remove/force/not_defined
+
+# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make
+# sense here.
+sp_case_label = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space around the D '..' operator.
+sp_range = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after ':' in a Java/C++11 range-based 'for',
+# as in 'for (Type var : <here> expr)'.
+sp_after_for_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before ':' in a Java/C++11 range-based 'for',
+# as in 'for (Type var <here> : expr)'.
+sp_before_for_colon = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space between 'extern' and '(' as in 'extern <here> (C)'.
+sp_extern_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the opening of a C++ comment, as in '// <here> A'.
+sp_cmt_cpp_start = ignore # ignore/add/remove/force/not_defined
+
+# remove space after the '//' and the pvs command '-V1234',
+# only works with sp_cmt_cpp_start set to add or force.
+sp_cmt_cpp_pvs = false # true/false
+
+# remove space after the '//' and the command 'lint',
+# only works with sp_cmt_cpp_start set to add or force.
+sp_cmt_cpp_lint = false # true/false
+
+# Add or remove space in a C++ region marker comment, as in '// <here> BEGIN'.
+# A region marker is defined as a comment which is not preceded by other text
+# (i.e. the comment is the first non-whitespace on the line), and which starts
+# with either 'BEGIN' or 'END'.
+#
+# Overrides sp_cmt_cpp_start.
+sp_cmt_cpp_region = ignore # ignore/add/remove/force/not_defined
+
+# If true, space added with sp_cmt_cpp_start will be added after Doxygen
+# sequences like '///', '///<', '//!' and '//!<'.
+sp_cmt_cpp_doxygen = false # true/false
+
+# If true, space added with sp_cmt_cpp_start will be added after Qt translator
+# or meta-data comments like '//:', '//=', and '//~'.
+sp_cmt_cpp_qttr = false # true/false
+
+# Add or remove space between #else or #endif and a trailing comment.
+sp_endif_cmt = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after 'new', 'delete' and 'delete[]'.
+sp_after_new = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'new' and '(' in 'new()'.
+sp_between_new_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and type in 'new(foo) BAR'.
+sp_after_newop_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside parentheses of the new operator
+# as in 'new(foo) BAR'.
+sp_inside_newop_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the open parenthesis of the new operator,
+# as in 'new(foo) BAR'.
+#
+# Overrides sp_inside_newop_paren.
+sp_inside_newop_paren_open = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before the close parenthesis of the new operator,
+# as in 'new(foo) BAR'.
+#
+# Overrides sp_inside_newop_paren.
+sp_inside_newop_paren_close = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a trailing comment.
+sp_before_tr_cmt = ignore # ignore/add/remove/force/not_defined
+
+# Number of spaces before a trailing comment.
+sp_num_before_tr_cmt = 0 # unsigned number
+
+# Add or remove space before an embedded comment.
+#
+# Default: force
+sp_before_emb_cmt = force # ignore/add/remove/force/not_defined
+
+# Number of spaces before an embedded comment.
+#
+# Default: 1
+sp_num_before_emb_cmt = 1 # unsigned number
+
+# Add or remove space after an embedded comment.
+#
+# Default: force
+sp_after_emb_cmt = force # ignore/add/remove/force/not_defined
+
+# Number of spaces after an embedded comment.
+#
+# Default: 1
+sp_num_after_emb_cmt = 1 # unsigned number
+
+# (Java) Add or remove space between an annotation and the open parenthesis.
+sp_annotation_paren = ignore # ignore/add/remove/force/not_defined
+
+# If true, vbrace tokens are dropped to the previous token and skipped.
+sp_skip_vbrace_tokens = false # true/false
+
+# Add or remove space after 'noexcept'.
+sp_after_noexcept = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after '_'.
+sp_vala_after_translation = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a bit colon ':'.
+sp_before_bit_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a bit colon ':'.
+sp_after_bit_colon = ignore # ignore/add/remove/force/not_defined
+
+# If true, a <TAB> is inserted after #define.
+force_tab_after_define = false # true/false
+
+#
+# Indenting options
+#
+
+# The number of columns to indent per level. Usually 2, 3, 4, or 8.
+#
+# Default: 8
+indent_columns = 8 # unsigned number
+
+# Whether to ignore indent for the first continuation line. Subsequent
+# continuation lines will still be indented to match the first.
+indent_ignore_first_continue = false # true/false
+
+# The continuation indent. If non-zero, this overrides the indent of '(', '['
+# and '=' continuation indents. Negative values are OK; negative value is
+# absolute and not increased for each '(' or '[' level.
+#
+# For FreeBSD, this is set to 4.
+# Requires indent_ignore_first_continue=false.
+indent_continue = 0 # number
+
+# The continuation indent, only for class header line(s). If non-zero, this
+# overrides the indent of 'class' continuation indents.
+# Requires indent_ignore_first_continue=false.
+indent_continue_class_head = 0 # unsigned number
+
+# Whether to indent empty lines (i.e. lines which contain only spaces before
+# the newline character).
+indent_single_newlines = false # true/false
+
+# The continuation indent for func_*_param if they are true. If non-zero, this
+# overrides the indent.
+indent_param = 0 # unsigned number
+
+# How to use tabs when indenting code.
+#
+# 0: Spaces only
+# 1: Indent with tabs to brace level, align with spaces (default)
+# 2: Indent and align with tabs, using spaces when not on a tabstop
+#
+# Default: 1
+indent_with_tabs = 1 # unsigned number
+
+# Whether to indent comments that are not at a brace level with tabs on a
+# tabstop. Requires indent_with_tabs=2. If false, will use spaces.
+indent_cmt_with_tabs = false # true/false
+
+# Whether to indent strings broken by '\' so that they line up.
+indent_align_string = false # true/false
+
+# The number of spaces to indent multi-line XML strings.
+# Requires indent_align_string=true.
+indent_xml_string = 0 # unsigned number
+
+# Spaces to indent '{' from level.
+indent_brace = 0 # unsigned number
+
+# Whether braces are indented to the body level.
+indent_braces = false # true/false
+
+# Whether to disable indenting function braces if indent_braces=true.
+indent_braces_no_func = false # true/false
+
+# Whether to disable indenting class braces if indent_braces=true.
+indent_braces_no_class = false # true/false
+
+# Whether to disable indenting struct braces if indent_braces=true.
+indent_braces_no_struct = false # true/false
+
+# Whether to indent based on the size of the brace parent,
+# i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
+indent_brace_parent = false # true/false
+
+# Whether to indent based on the open parenthesis instead of the open brace
+# in '({\n'.
+indent_paren_open_brace = false # true/false
+
+# (C#) Whether to indent the brace of a C# delegate by another level.
+indent_cs_delegate_brace = false # true/false
+
+# (C#) Whether to indent a C# delegate (to handle delegates with no brace) by
+# another level.
+indent_cs_delegate_body = false # true/false
+
+# Whether to indent the body of a 'namespace'.
+indent_namespace = false # true/false
+
+# Whether to indent only the first namespace, and not any nested namespaces.
+# Requires indent_namespace=true.
+indent_namespace_single_indent = false # true/false
+
+# The number of spaces to indent a namespace block.
+# If set to zero, use the value indent_columns
+indent_namespace_level = 0 # unsigned number
+
+# If the body of the namespace is longer than this number, it won't be
+# indented. Requires indent_namespace=true. 0 means no limit.
+indent_namespace_limit = 0 # unsigned number
+
+# Whether to indent only in inner namespaces (nested in other namespaces).
+# Requires indent_namespace=true.
+indent_namespace_inner_only = false # true/false
+
+# Whether the 'extern "C"' body is indented.
+indent_extern = false # true/false
+
+# Whether the 'class' body is indented.
+indent_class = false # true/false
+
+# Whether to ignore indent for the leading base class colon.
+indent_ignore_before_class_colon = false # true/false
+
+# Additional indent before the leading base class colon.
+# Negative values decrease indent down to the first column.
+# Requires indent_ignore_before_class_colon=false and a newline break before
+# the colon (see pos_class_colon and nl_class_colon)
+indent_before_class_colon = 0 # number
+
+# Whether to indent the stuff after a leading base class colon.
+indent_class_colon = false # true/false
+
+# Whether to indent based on a class colon instead of the stuff after the
+# colon. Requires indent_class_colon=true.
+indent_class_on_colon = false # true/false
+
+# Whether to ignore indent for a leading class initializer colon.
+indent_ignore_before_constr_colon = false # true/false
+
+# Whether to indent the stuff after a leading class initializer colon.
+indent_constr_colon = false # true/false
+
+# Virtual indent from the ':' for leading member initializers.
+#
+# Default: 2
+indent_ctor_init_leading = 2 # unsigned number
+
+# Virtual indent from the ':' for following member initializers.
+#
+# Default: 2
+indent_ctor_init_following = 2 # unsigned number
+
+# Additional indent for constructor initializer list.
+# Negative values decrease indent down to the first column.
+indent_ctor_init = 0 # number
+
+# Whether to indent 'if' following 'else' as a new block under the 'else'.
+# If false, 'else\nif' is treated as 'else if' for indenting purposes.
+indent_else_if = false # true/false
+
+# Amount to indent variable declarations after a open brace.
+#
+# <0: Relative
+# >=0: Absolute
+indent_var_def_blk = 0 # number
+
+# Whether to indent continued variable declarations instead of aligning.
+indent_var_def_cont = false # true/false
+
+# How to indent continued shift expressions ('<<' and '>>').
+# Set align_left_shift=false when using this.
+# 0: Align shift operators instead of indenting them (default)
+# 1: Indent by one level
+# -1: Preserve original indentation
+indent_shift = 0 # number
+
+# Whether to force indentation of function definitions to start in column 1.
+indent_func_def_force_col1 = false # true/false
+
+# Whether to indent continued function call parameters one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_func_call_param = false # true/false
+
+# Whether to indent continued function definition parameters one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_func_def_param = false # true/false
+
+# for function definitions, only if indent_func_def_param is false
+# Allows to align params when appropriate and indent them when not
+# behave as if it was true if paren position is more than this value
+# if paren position is more than the option value
+indent_func_def_param_paren_pos_threshold = 0 # unsigned number
+
+# Whether to indent continued function call prototype one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_func_proto_param = false # true/false
+
+# Whether to indent continued function call declaration one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_func_class_param = false # true/false
+
+# Whether to indent continued class variable constructors one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_func_ctor_var_param = false # true/false
+
+# Whether to indent continued template parameter list one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_template_param = false # true/false
+
+# Double the indent for indent_func_xxx_param options.
+# Use both values of the options indent_columns and indent_param.
+indent_func_param_double = false # true/false
+
+# Indentation column for standalone 'const' qualifier on a function
+# prototype.
+indent_func_const = 0 # unsigned number
+
+# Indentation column for standalone 'throw' qualifier on a function
+# prototype.
+indent_func_throw = 0 # unsigned number
+
+# How to indent within a macro followed by a brace on the same line
+# This allows reducing the indent in macros that have (for example)
+# `do { ... } while (0)` blocks bracketing them.
+#
+# true: add an indent for the brace on the same line as the macro
+# false: do not add an indent for the brace on the same line as the macro
+#
+# Default: true
+indent_macro_brace = true # true/false
+
+# The number of spaces to indent a continued '->' or '.'.
+# Usually set to 0, 1, or indent_columns.
+indent_member = 0 # unsigned number
+
+# Whether lines broken at '.' or '->' should be indented by a single indent.
+# The indent_member option will not be effective if this is set to true.
+indent_member_single = false # true/false
+
+# Spaces to indent single line ('//') comments on lines before code.
+indent_single_line_comments_before = 0 # unsigned number
+
+# Spaces to indent single line ('//') comments on lines after code.
+indent_single_line_comments_after = 0 # unsigned number
+
+# When opening a paren for a control statement (if, for, while, etc), increase
+# the indent level by this value. Negative values decrease the indent level.
+indent_sparen_extra = 0 # number
+
+# Whether to indent trailing single line ('//') comments relative to the code
+# instead of trying to keep the same absolute column.
+indent_relative_single_line_comments = false # true/false
+
+# Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.
+# It might be wise to choose the same value for the option indent_case_brace.
+indent_switch_case = 0 # unsigned number
+
+# Spaces to indent the body of a 'switch' before any 'case'.
+# Usually the same as indent_columns or indent_switch_case.
+indent_switch_body = 0 # unsigned number
+
+# Whether to ignore indent for '{' following 'case'.
+indent_ignore_case_brace = false # true/false
+
+# Spaces to indent '{' from 'case'. By default, the brace will appear under
+# the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.
+# It might be wise to choose the same value for the option indent_switch_case.
+indent_case_brace = 0 # number
+
+# indent 'break' with 'case' from 'switch'.
+indent_switch_break_with_case = false # true/false
+
+# Whether to indent preprocessor statements inside of switch statements.
+#
+# Default: true
+indent_switch_pp = true # true/false
+
+# Spaces to shift the 'case' line, without affecting any other lines.
+# Usually 0.
+indent_case_shift = 0 # unsigned number
+
+# Whether to align comments before 'case' with the 'case'.
+#
+# Default: true
+indent_case_comment = true # true/false
+
+# Whether to indent comments not found in first column.
+#
+# Default: true
+indent_comment = true # true/false
+
+# Whether to indent comments found in first column.
+indent_col1_comment = false # true/false
+
+# Whether to indent multi string literal in first column.
+indent_col1_multi_string_literal = false # true/false
+
+# Align comments on adjacent lines that are this many columns apart or less.
+#
+# Default: 3
+indent_comment_align_thresh = 3 # unsigned number
+
+# Whether to ignore indent for goto labels.
+indent_ignore_label = false # true/false
+
+# How to indent goto labels. Requires indent_ignore_label=false.
+#
+# >0: Absolute column where 1 is the leftmost column
+# <=0: Subtract from brace indent
+#
+# Default: 1
+indent_label = 1 # number
+
+# How to indent access specifiers that are followed by a
+# colon.
+#
+# >0: Absolute column where 1 is the leftmost column
+# <=0: Subtract from brace indent
+#
+# Default: 1
+indent_access_spec = 1 # number
+
+# Whether to indent the code after an access specifier by one level.
+# If true, this option forces 'indent_access_spec=0'.
+indent_access_spec_body = false # true/false
+
+# If an open parenthesis is followed by a newline, whether to indent the next
+# line so that it lines up after the open parenthesis (not recommended).
+indent_paren_nl = false # true/false
+
+# How to indent a close parenthesis after a newline.
+#
+# 0: Indent to body level (default)
+# 1: Align under the open parenthesis
+# 2: Indent to the brace level
+# -1: Preserve original indentation
+indent_paren_close = 0 # number
+
+# Whether to indent the open parenthesis of a function definition,
+# if the parenthesis is on its own line.
+indent_paren_after_func_def = false # true/false
+
+# Whether to indent the open parenthesis of a function declaration,
+# if the parenthesis is on its own line.
+indent_paren_after_func_decl = false # true/false
+
+# Whether to indent the open parenthesis of a function call,
+# if the parenthesis is on its own line.
+indent_paren_after_func_call = false # true/false
+
+# How to indent a comma when inside braces.
+# 0: Indent by one level (default)
+# 1: Align under the open brace
+# -1: Preserve original indentation
+indent_comma_brace = 0 # number
+
+# How to indent a comma when inside parentheses.
+# 0: Indent by one level (default)
+# 1: Align under the open parenthesis
+# -1: Preserve original indentation
+indent_comma_paren = 0 # number
+
+# How to indent a Boolean operator when inside parentheses.
+# 0: Indent by one level (default)
+# 1: Align under the open parenthesis
+# -1: Preserve original indentation
+indent_bool_paren = 0 # number
+
+# Whether to ignore the indentation of a Boolean operator when outside
+# parentheses.
+indent_ignore_bool = false # true/false
+
+# Whether to ignore the indentation of an arithmetic operator.
+indent_ignore_arith = false # true/false
+
+# Whether to indent a semicolon when inside a for parenthesis.
+# If true, aligns under the open for parenthesis.
+indent_semicolon_for_paren = false # true/false
+
+# Whether to ignore the indentation of a semicolon outside of a 'for'
+# statement.
+indent_ignore_semicolon = false # true/false
+
+# Whether to align the first expression to following ones
+# if indent_bool_paren=1.
+indent_first_bool_expr = false # true/false
+
+# Whether to align the first expression to following ones
+# if indent_semicolon_for_paren=true.
+indent_first_for_expr = false # true/false
+
+# If an open square is followed by a newline, whether to indent the next line
+# so that it lines up after the open square (not recommended).
+indent_square_nl = false # true/false
+
+# (ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies.
+indent_preserve_sql = false # true/false
+
+# Whether to ignore the indentation of an assignment operator.
+indent_ignore_assign = false # true/false
+
+# Whether to align continued statements at the '='. If false or if the '=' is
+# followed by a newline, the next line is indent one tab.
+#
+# Default: true
+indent_align_assign = true # true/false
+
+# If true, the indentation of the chunks after a '=' sequence will be set at
+# LHS token indentation column before '='.
+indent_off_after_assign = false # true/false
+
+# Whether to align continued statements at the '('. If false or the '(' is
+# followed by a newline, the next line indent is one tab.
+#
+# Default: true
+indent_align_paren = true # true/false
+
+# (OC) Whether to indent Objective-C code inside message selectors.
+indent_oc_inside_msg_sel = false # true/false
+
+# (OC) Whether to indent Objective-C blocks at brace level instead of usual
+# rules.
+indent_oc_block = false # true/false
+
+# (OC) Indent for Objective-C blocks in a message relative to the parameter
+# name.
+#
+# =0: Use indent_oc_block rules
+# >0: Use specified number of spaces to indent
+indent_oc_block_msg = 0 # unsigned number
+
+# (OC) Minimum indent for subsequent parameters
+indent_oc_msg_colon = 0 # unsigned number
+
+# (OC) Whether to prioritize aligning with initial colon (and stripping spaces
+# from lines, if necessary).
+#
+# Default: true
+indent_oc_msg_prioritize_first_colon = true # true/false
+
+# (OC) Whether to indent blocks the way that Xcode does by default
+# (from the keyword if the parameter is on its own line; otherwise, from the
+# previous indentation level). Requires indent_oc_block_msg=true.
+indent_oc_block_msg_xcode_style = false # true/false
+
+# (OC) Whether to indent blocks from where the brace is, relative to a
+# message keyword. Requires indent_oc_block_msg=true.
+indent_oc_block_msg_from_keyword = false # true/false
+
+# (OC) Whether to indent blocks from where the brace is, relative to a message
+# colon. Requires indent_oc_block_msg=true.
+indent_oc_block_msg_from_colon = false # true/false
+
+# (OC) Whether to indent blocks from where the block caret is.
+# Requires indent_oc_block_msg=true.
+indent_oc_block_msg_from_caret = false # true/false
+
+# (OC) Whether to indent blocks from where the brace caret is.
+# Requires indent_oc_block_msg=true.
+indent_oc_block_msg_from_brace = false # true/false
+
+# When indenting after virtual brace open and newline add further spaces to
+# reach this minimum indent.
+indent_min_vbrace_open = 0 # unsigned number
+
+# Whether to add further spaces after regular indent to reach next tabstop
+# when indenting after virtual brace open and newline.
+indent_vbrace_open_on_tabstop = false # true/false
+
+# How to indent after a brace followed by another token (not a newline).
+# true: indent all contained lines to match the token
+# false: indent all contained lines to match the brace
+#
+# Default: true
+indent_token_after_brace = true # true/false
+
+# Whether to indent the body of a C++11 lambda.
+indent_cpp_lambda_body = false # true/false
+
+# How to indent compound literals that are being returned.
+# true: add both the indent from return & the compound literal open brace
+# (i.e. 2 indent levels)
+# false: only indent 1 level, don't add the indent for the open brace, only
+# add the indent for the return.
+#
+# Default: true
+indent_compound_literal_return = true # true/false
+
+# (C#) Whether to indent a 'using' block if no braces are used.
+#
+# Default: true
+indent_using_block = true # true/false
+
+# How to indent the continuation of ternary operator.
+#
+# 0: Off (default)
+# 1: When the `if_false` is a continuation, indent it under the `if_true` branch
+# 2: When the `:` is a continuation, indent it under `?`
+indent_ternary_operator = 0 # unsigned number
+
+# Whether to indent the statements inside ternary operator.
+indent_inside_ternary_operator = false # true/false
+
+# If true, the indentation of the chunks after a `return` sequence will be set at return indentation column.
+indent_off_after_return = false # true/false
+
+# If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column.
+indent_off_after_return_new = false # true/false
+
+# If true, the tokens after return are indented with regular single indentation. By default (false) the indentation is after the return token.
+indent_single_after_return = false # true/false
+
+# Whether to ignore indent and alignment for 'asm' blocks (i.e. assume they
+# have their own indentation).
+indent_ignore_asm_block = false # true/false
+
+# Don't indent the close parenthesis of a function definition,
+# if the parenthesis is on its own line.
+donot_indent_func_def_close_paren = false # true/false
+
+#
+# Newline adding and removing options
+#
+
+# Whether to collapse empty blocks between '{' and '}' except for functions.
+# Use nl_collapse_empty_body_functions to specify how empty function braces
+# should be formatted.
+nl_collapse_empty_body = false # true/false
+
+# Whether to collapse empty blocks between '{' and '}' for functions only.
+# If true, overrides nl_inside_empty_func.
+nl_collapse_empty_body_functions = false # true/false
+
+# Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'.
+nl_assign_leave_one_liners = false # true/false
+
+# Don't split one-line braced statements inside a 'class xx { }' body.
+nl_class_leave_one_liners = false # true/false
+
+# Don't split one-line enums, as in 'enum foo { BAR = 15 };'
+nl_enum_leave_one_liners = false # true/false
+
+# Don't split one-line get or set functions.
+nl_getset_leave_one_liners = false # true/false
+
+# (C#) Don't split one-line property get or set functions.
+nl_cs_property_leave_one_liners = false # true/false
+
+# Don't split one-line function definitions, as in 'int foo() { return 0; }'.
+# might modify nl_func_type_name
+nl_func_leave_one_liners = false # true/false
+
+# Don't split one-line C++11 lambdas, as in '[]() { return 0; }'.
+nl_cpp_lambda_leave_one_liners = false # true/false
+
+# Don't split one-line if/else statements, as in 'if(...) b++;'.
+nl_if_leave_one_liners = false # true/false
+
+# Don't split one-line while statements, as in 'while(...) b++;'.
+nl_while_leave_one_liners = false # true/false
+
+# Don't split one-line do statements, as in 'do { b++; } while(...);'.
+nl_do_leave_one_liners = false # true/false
+
+# Don't split one-line for statements, as in 'for(...) b++;'.
+nl_for_leave_one_liners = false # true/false
+
+# (OC) Don't split one-line Objective-C messages.
+nl_oc_msg_leave_one_liner = false # true/false
+
+# (OC) Add or remove newline between method declaration and '{'.
+nl_oc_mdef_brace = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove newline between Objective-C block signature and '{'.
+nl_oc_block_brace = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove blank line before '@interface' statement.
+nl_oc_before_interface = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove blank line before '@implementation' statement.
+nl_oc_before_implementation = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove blank line before '@end' statement.
+nl_oc_before_end = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove newline between '@interface' and '{'.
+nl_oc_interface_brace = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove newline between '@implementation' and '{'.
+nl_oc_implementation_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newlines at the start of the file.
+nl_start_of_file = ignore # ignore/add/remove/force/not_defined
+
+# The minimum 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 # unsigned number
+
+# Add or remove newline at the end of the file.
+nl_end_of_file = ignore # ignore/add/remove/force/not_defined
+
+# The minimum 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 = 0 # unsigned number
+
+# Add or remove newline between '=' and '{'.
+nl_assign_brace = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove newline between '=' and '['.
+nl_assign_square = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '[]' and '{'.
+nl_tsquare_brace = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove newline after '= ['. Will also affect the newline before
+# the ']'.
+nl_after_square_assign = ignore # ignore/add/remove/force/not_defined
+
+# 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/not_defined
+
+# Add or remove newline between 'enum' and '{'.
+nl_enum_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'enum' and 'class'.
+nl_enum_class = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'enum class' and the identifier.
+nl_enum_class_identifier = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'enum class' type and ':'.
+nl_enum_identifier_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'enum class identifier :' and type.
+nl_enum_colon_type = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'struct and '{'.
+nl_struct_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'union' and '{'.
+nl_union_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'if' and '{'.
+nl_if_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and 'else'.
+nl_brace_else = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'else if' and '{'. If set to ignore,
+# nl_if_brace is used instead.
+nl_elseif_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'else' and '{'.
+nl_else_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'else' and 'if'.
+nl_else_if = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before '{' opening brace
+nl_before_opening_brace_func_class_def = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before 'if'/'else if' closing parenthesis.
+nl_before_if_closing_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and 'finally'.
+nl_brace_finally = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'finally' and '{'.
+nl_finally_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'try' and '{'.
+nl_try_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between get/set and '{'.
+nl_getset_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'for' and '{'.
+nl_for_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before the '{' of a 'catch' statement, as in
+# 'catch (decl) <here> {'.
+nl_catch_brace = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove newline before the '{' of a '@catch' statement, as in
+# '@catch (decl) <here> {'. If set to ignore, nl_catch_brace is used.
+nl_oc_catch_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and 'catch'.
+nl_brace_catch = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove newline between '}' and '@catch'. If set to ignore,
+# nl_brace_catch is used.
+nl_oc_brace_catch = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and ']'.
+nl_brace_square = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and ')' in a function invocation.
+nl_brace_fparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'while' and '{'.
+nl_while_brace = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove newline between 'scope (x)' and '{'.
+nl_scope_brace = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove newline between 'unittest' and '{'.
+nl_unittest_brace = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove newline between 'version (x)' and '{'.
+nl_version_brace = ignore # ignore/add/remove/force/not_defined
+
+# (C#) Add or remove newline between 'using' and '{'.
+nl_using_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between two open or close braces. Due to general
+# newline/brace handling, REMOVE may not work.
+nl_brace_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'do' and '{'.
+nl_do_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and 'while' of 'do' statement.
+nl_brace_while = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'switch' and '{'.
+nl_switch_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'synchronized' and '{'.
+nl_synchronized_brace = ignore # ignore/add/remove/force/not_defined
+
+# 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 = false # true/false
+
+# Add a newline after '(' if an if/for/while/switch condition spans multiple
+# lines
+nl_multi_line_sparen_open = ignore # ignore/add/remove/force/not_defined
+
+# Add a newline before ')' if an if/for/while/switch condition spans multiple
+# lines. Overrides nl_before_if_closing_paren if both are specified.
+nl_multi_line_sparen_close = ignore # ignore/add/remove/force/not_defined
+
+# Force a newline in a define after the macro name for multi-line defines.
+nl_multi_line_define = false # true/false
+
+# Whether to add a newline before 'case', and a blank line before a 'case'
+# statement that follows a ';' or '}'.
+nl_before_case = false # true/false
+
+# Whether to add a newline after a 'case' statement.
+nl_after_case = false # true/false
+
+# Add or remove newline between a case ':' and '{'.
+#
+# Overrides nl_after_case.
+nl_case_colon_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between ')' and 'throw'.
+nl_before_throw = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'namespace' and '{'.
+nl_namespace_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template class.
+nl_template_class = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template class declaration.
+#
+# Overrides nl_template_class.
+nl_template_class_decl = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<>' of a specialized class declaration.
+#
+# Overrides nl_template_class_decl.
+nl_template_class_decl_special = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template class definition.
+#
+# Overrides nl_template_class.
+nl_template_class_def = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<>' of a specialized class definition.
+#
+# Overrides nl_template_class_def.
+nl_template_class_def_special = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template function.
+nl_template_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template function
+# declaration.
+#
+# Overrides nl_template_func.
+nl_template_func_decl = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<>' of a specialized function
+# declaration.
+#
+# Overrides nl_template_func_decl.
+nl_template_func_decl_special = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template function
+# definition.
+#
+# Overrides nl_template_func.
+nl_template_func_def = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<>' of a specialized function
+# definition.
+#
+# Overrides nl_template_func_def.
+nl_template_func_def_special = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template variable.
+nl_template_var = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'template<...>' and 'using' of a templated
+# type alias.
+nl_template_using = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'class' and '{'.
+nl_class_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before or after (depending on pos_class_comma,
+# may not be IGNORE) each',' in the base class list.
+nl_class_init_args = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after each ',' in the constructor member
+# initialization. Related to nl_constr_colon, pos_constr_colon and
+# pos_constr_comma.
+nl_constr_init_args = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before first element, after comma, and after last
+# element, in 'enum'.
+nl_enum_own_lines = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between return type and function name in a function
+# definition.
+# might be modified by nl_func_leave_one_liners
+nl_func_type_name = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between return type and function name inside a class
+# definition. If set to ignore, nl_func_type_name or nl_func_proto_type_name
+# is used instead.
+nl_func_type_name_class = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between class specification and '::'
+# in 'void A::f() { }'. Only appears in separate member implementation (does
+# not appear with in-line implementation).
+nl_func_class_scope = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between function scope and name, as in
+# 'void A :: <here> f() { }'.
+nl_func_scope_name = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between return type and function name in a prototype.
+nl_func_proto_type_name = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between a function name and the opening '(' in the
+# declaration.
+nl_func_paren = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_paren for functions with no parameters.
+nl_func_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between a function name and the opening '(' in the
+# definition.
+nl_func_def_paren = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_def_paren for functions with no parameters.
+nl_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between a function name and the opening '(' in the
+# call.
+nl_func_call_paren = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_call_paren for functions with no parameters.
+nl_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after '(' in a function declaration.
+nl_func_decl_start = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after '(' in a function definition.
+nl_func_def_start = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_decl_start when there is only one parameter.
+nl_func_decl_start_single = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_def_start when there is only one parameter.
+nl_func_def_start_single = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after '(' in a function declaration if '(' and ')'
+# are in different lines. If false, nl_func_decl_start is used instead.
+nl_func_decl_start_multi_line = false # true/false
+
+# Whether to add a newline after '(' in a function definition if '(' and ')'
+# are in different lines. If false, nl_func_def_start is used instead.
+nl_func_def_start_multi_line = false # true/false
+
+# Add or remove newline after each ',' in a function declaration.
+nl_func_decl_args = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after each ',' in a function definition.
+nl_func_def_args = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after each ',' in a function call.
+nl_func_call_args = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after each ',' in a function declaration if '('
+# and ')' are in different lines. If false, nl_func_decl_args is used instead.
+nl_func_decl_args_multi_line = false # true/false
+
+# Whether to add a newline after each ',' in a function definition if '('
+# and ')' are in different lines. If false, nl_func_def_args is used instead.
+nl_func_def_args_multi_line = false # true/false
+
+# Add or remove newline before the ')' in a function declaration.
+nl_func_decl_end = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before the ')' in a function definition.
+nl_func_def_end = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_decl_end when there is only one parameter.
+nl_func_decl_end_single = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_def_end when there is only one parameter.
+nl_func_def_end_single = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline before ')' in a function declaration if '(' and ')'
+# are in different lines. If false, nl_func_decl_end is used instead.
+nl_func_decl_end_multi_line = false # true/false
+
+# Whether to add a newline before ')' in a function definition if '(' and ')'
+# are in different lines. If false, nl_func_def_end is used instead.
+nl_func_def_end_multi_line = false # true/false
+
+# Add or remove newline between '()' in a function declaration.
+nl_func_decl_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '()' in a function definition.
+nl_func_def_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '()' in a function call.
+nl_func_call_empty = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after '(' in a function call,
+# has preference over nl_func_call_start_multi_line.
+nl_func_call_start = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline before ')' in a function call.
+nl_func_call_end = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after '(' in a function call if '(' and ')' are in
+# different lines.
+nl_func_call_start_multi_line = false # true/false
+
+# Whether to add a newline after each ',' in a function call if '(' and ')'
+# are in different lines.
+nl_func_call_args_multi_line = false # true/false
+
+# Whether to add a newline before ')' in a function call if '(' and ')' are in
+# different lines.
+nl_func_call_end_multi_line = false # true/false
+
+# Whether to respect nl_func_call_XXX option in case of closure args.
+nl_func_call_args_multi_line_ignore_closures = false # true/false
+
+# Whether to add a newline after '<' of a template parameter list.
+nl_template_start = false # true/false
+
+# Whether to add a newline after each ',' in a template parameter list.
+nl_template_args = false # true/false
+
+# Whether to add a newline before '>' of a template parameter list.
+nl_template_end = false # true/false
+
+# (OC) Whether to put each Objective-C message parameter on a separate line.
+# See nl_oc_msg_leave_one_liner.
+nl_oc_msg_args = false # true/false
+
+# (OC) Minimum number of Objective-C message parameters before applying nl_oc_msg_args.
+nl_oc_msg_args_min_params = 0 # unsigned number
+
+# (OC) Max code width of Objective-C message before applying nl_oc_msg_args.
+nl_oc_msg_args_max_code_width = 0 # unsigned number
+
+# Add or remove newline between function signature and '{'.
+nl_fdef_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between function signature and '{',
+# if signature ends with ')'. Overrides nl_fdef_brace.
+nl_fdef_brace_cond = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between C++11 lambda signature and '{'.
+nl_cpp_ldef_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'return' and the return expression.
+nl_return_expr = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'throw' and the throw expression.
+nl_throw_expr = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after semicolons, except in 'for' statements.
+nl_after_semicolon = false # true/false
+
+# (Java) Add or remove newline between the ')' and '{{' of the double brace
+# initializer.
+nl_paren_dbrace_open = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after the type in an unnamed temporary
+# direct-list-initialization, better:
+# before a direct-list-initialization.
+nl_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after the open brace in an unnamed temporary
+# direct-list-initialization.
+nl_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline before the close brace in an unnamed temporary
+# direct-list-initialization.
+nl_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline before '{'.
+nl_before_brace_open = false # true/false
+
+# Whether to add a newline after '{'.
+nl_after_brace_open = false # true/false
+
+# Whether to add a newline between the open brace and a trailing single-line
+# comment. Requires nl_after_brace_open=true.
+nl_after_brace_open_cmt = false # true/false
+
+# Whether to add a newline after a virtual brace open with a non-empty body.
+# These occur in un-braced if/while/do/for statement bodies.
+nl_after_vbrace_open = false # true/false
+
+# Whether to add a newline after a virtual brace open with an empty body.
+# These occur in un-braced if/while/do/for statement bodies.
+nl_after_vbrace_open_empty = false # true/false
+
+# Whether to add a newline after '}'. Does not apply if followed by a
+# necessary ';'.
+nl_after_brace_close = false # true/false
+
+# Whether to add a newline after a virtual brace close,
+# as in 'if (foo) a++; <here> return;'.
+nl_after_vbrace_close = false # true/false
+
+# Add or remove newline between the close brace and identifier,
+# as in 'struct { int a; } <here> b;'. Affects enumerations, unions and
+# structures. If set to ignore, uses nl_after_brace_close.
+nl_brace_struct_var = ignore # ignore/add/remove/force/not_defined
+
+# Whether to alter newlines in '#define' macros.
+nl_define_macro = false # true/false
+
+# Whether to alter newlines between consecutive parenthesis closes. The number
+# of closing parentheses in a line will depend on respective open parenthesis
+# lines.
+nl_squeeze_paren_close = false # true/false
+
+# Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and
+# '#endif'. Does not affect top-level #ifdefs.
+nl_squeeze_ifdef = false # true/false
+
+# Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well.
+nl_squeeze_ifdef_top_level = false # true/false
+
+# Add or remove blank line before 'if'.
+nl_before_if = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'if' statement. Add/Force work only if the
+# next token is not a closing brace.
+nl_after_if = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line before 'for'.
+nl_before_for = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'for' statement.
+nl_after_for = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line before 'while'.
+nl_before_while = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'while' statement.
+nl_after_while = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line before 'switch'.
+nl_before_switch = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'switch' statement.
+nl_after_switch = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line before 'synchronized'.
+nl_before_synchronized = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'synchronized' statement.
+nl_after_synchronized = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line before 'do'.
+nl_before_do = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'do/while' statement.
+nl_after_do = ignore # ignore/add/remove/force/not_defined
+
+# Ignore nl_before_{if,for,switch,do,synchronized} if the control
+# statement is immediately after a case statement.
+# if nl_before_{if,for,switch,do} is set to remove, this option
+# does nothing.
+nl_before_ignore_after_case = false # true/false
+
+# Whether to put a blank line before 'return' statements, unless after an open
+# brace.
+nl_before_return = false # true/false
+
+# Whether to put a blank line after 'return' statements, unless followed by a
+# close brace.
+nl_after_return = false # true/false
+
+# Whether to put a blank line before a member '.' or '->' operators.
+nl_before_member = ignore # ignore/add/remove/force/not_defined
+
+# (Java) Whether to put a blank line after a member '.' or '->' operators.
+nl_after_member = ignore # ignore/add/remove/force/not_defined
+
+# Whether to double-space commented-entries in 'struct'/'union'/'enum'.
+nl_ds_struct_enum_cmt = false # true/false
+
+# Whether to force a newline before '}' of a 'struct'/'union'/'enum'.
+# (Lower priority than eat_blanks_before_close_brace.)
+nl_ds_struct_enum_close_brace = false # true/false
+
+# Add or remove newline before or after (depending on pos_class_colon) a class
+# colon, as in 'class Foo <here> : <or here> public Bar'.
+nl_class_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline around a class constructor colon. The exact position
+# depends on nl_constr_init_args, pos_constr_colon and pos_constr_comma.
+nl_constr_colon = ignore # ignore/add/remove/force/not_defined
+
+# Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }'
+# into a single line. If true, prevents other brace newline rules from turning
+# such code into four lines. If true, it also preserves one-liner namespaces.
+nl_namespace_two_to_one_liner = false # true/false
+
+# Whether to remove a newline in simple unbraced if statements, turning them
+# into one-liners, as in 'if(b)\n i++;' => 'if(b) i++;'.
+nl_create_if_one_liner = false # true/false
+
+# Whether to remove a newline in simple unbraced for statements, turning them
+# into one-liners, as in 'for (...)\n stmt;' => 'for (...) stmt;'.
+nl_create_for_one_liner = false # true/false
+
+# Whether to remove a newline in simple unbraced while statements, turning
+# them into one-liners, as in 'while (expr)\n stmt;' => 'while (expr) stmt;'.
+nl_create_while_one_liner = false # true/false
+
+# Whether to collapse a function definition whose body (not counting braces)
+# is only one line so that the entire definition (prototype, braces, body) is
+# a single line.
+nl_create_func_def_one_liner = false # true/false
+
+# Whether to split one-line simple list definitions into three lines by
+# adding newlines, as in 'int a[12] = { <here> 0 <here> };'.
+nl_create_list_one_liner = false # true/false
+
+# Whether to split one-line simple unbraced if statements into two lines by
+# adding a newline, as in 'if(b) <here> i++;'.
+nl_split_if_one_liner = false # true/false
+
+# Whether to split one-line simple unbraced for statements into two lines by
+# adding a newline, as in 'for (...) <here> stmt;'.
+nl_split_for_one_liner = false # true/false
+
+# Whether to split one-line simple unbraced while statements into two lines by
+# adding a newline, as in 'while (expr) <here> stmt;'.
+nl_split_while_one_liner = false # true/false
+
+# Don't add a newline before a cpp-comment in a parameter list of a function
+# call.
+donot_add_nl_before_cpp_comment = false # true/false
+
+#
+# Blank line options
+#
+
+# The maximum number of consecutive newlines (3 = 2 blank lines).
+nl_max = 0 # unsigned number
+
+# The maximum number of consecutive newlines in a function.
+nl_max_blank_in_func = 0 # unsigned number
+
+# The number of newlines inside an empty function body.
+# This option overrides eat_blanks_after_open_brace and
+# eat_blanks_before_close_brace, but is ignored when
+# nl_collapse_empty_body_functions=true
+nl_inside_empty_func = 0 # unsigned number
+
+# The number of newlines before a function prototype.
+nl_before_func_body_proto = 0 # unsigned number
+
+# The number of newlines before a multi-line function definition. Where
+# applicable, this option is overridden with eat_blanks_after_open_brace=true
+nl_before_func_body_def = 0 # unsigned number
+
+# The number of newlines before a class constructor/destructor prototype.
+nl_before_func_class_proto = 0 # unsigned number
+
+# The number of newlines before a class constructor/destructor definition.
+nl_before_func_class_def = 0 # unsigned number
+
+# The number of newlines after a function prototype.
+nl_after_func_proto = 0 # unsigned number
+
+# The number of newlines after a function prototype, if not followed by
+# another function prototype.
+nl_after_func_proto_group = 0 # unsigned number
+
+# The number of newlines after a class constructor/destructor prototype.
+nl_after_func_class_proto = 0 # unsigned number
+
+# The number of newlines after a class constructor/destructor prototype,
+# if not followed by another constructor/destructor prototype.
+nl_after_func_class_proto_group = 0 # unsigned number
+
+# Whether one-line method definitions inside a class body should be treated
+# as if they were prototypes for the purposes of adding newlines.
+#
+# Requires nl_class_leave_one_liners=true. Overrides nl_before_func_body_def
+# and nl_before_func_class_def for one-liners.
+nl_class_leave_one_liner_groups = false # true/false
+
+# The number of newlines after '}' of a multi-line function body.
+#
+# Overrides nl_min_after_func_body and nl_max_after_func_body.
+nl_after_func_body = 0 # unsigned number
+
+# The minimum number of newlines after '}' of a multi-line function body.
+#
+# Only works when nl_after_func_body is 0.
+nl_min_after_func_body = 0 # unsigned number
+
+# The maximum number of newlines after '}' of a multi-line function body.
+#
+# Only works when nl_after_func_body is 0.
+# Takes precedence over nl_min_after_func_body.
+nl_max_after_func_body = 0 # unsigned number
+
+# The number of newlines after '}' of a multi-line function body in a class
+# declaration. Also affects class constructors/destructors.
+#
+# Overrides nl_after_func_body.
+nl_after_func_body_class = 0 # unsigned number
+
+# The number of newlines after '}' of a single line function body. Also
+# affects class constructors/destructors.
+#
+# Overrides nl_after_func_body and nl_after_func_body_class.
+nl_after_func_body_one_liner = 0 # unsigned number
+
+# The number of newlines before a block of typedefs. If nl_after_access_spec
+# is non-zero, that option takes precedence.
+#
+# 0: No change (default).
+nl_typedef_blk_start = 0 # unsigned number
+
+# The number of newlines after a block of typedefs.
+#
+# 0: No change (default).
+nl_typedef_blk_end = 0 # unsigned number
+
+# The maximum number of consecutive newlines within a block of typedefs.
+#
+# 0: No change (default).
+nl_typedef_blk_in = 0 # unsigned number
+
+# The minimum number of blank lines after a block of variable definitions
+# at the top of a function body. If any preprocessor directives appear
+# between the opening brace of the function and the variable block, then
+# it is considered as not at the top of the function.Newlines are added
+# before trailing preprocessor directives, if any exist.
+#
+# 0: No change (default).
+nl_var_def_blk_end_func_top = 0 # unsigned number
+
+# The minimum number of empty newlines before a block of variable definitions
+# not at the top of a function body. If nl_after_access_spec is non-zero,
+# that option takes precedence. Newlines are not added at the top of the
+# file or just after an opening brace. Newlines are added above any
+# preprocessor directives before the block.
+#
+# 0: No change (default).
+nl_var_def_blk_start = 0 # unsigned number
+
+# The minimum number of empty newlines after a block of variable definitions
+# not at the top of a function body. Newlines are not added if the block
+# is at the bottom of the file or just before a preprocessor directive.
+#
+# 0: No change (default).
+nl_var_def_blk_end = 0 # unsigned number
+
+# The maximum number of consecutive newlines within a block of variable
+# definitions.
+#
+# 0: No change (default).
+nl_var_def_blk_in = 0 # unsigned 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 # unsigned 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 # unsigned 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 # unsigned number
+
+# Whether to force a newline after a multi-line comment.
+nl_after_multiline_comment = false # true/false
+
+# Whether to force a newline after a label's colon.
+nl_after_label_colon = false # true/false
+
+# The number of newlines before a struct definition.
+nl_before_struct = 0 # unsigned number
+
+# The number of newlines after '}' or ';' of a struct/enum/union definition.
+nl_after_struct = 0 # unsigned number
+
+# The number of newlines before a class definition.
+nl_before_class = 0 # unsigned number
+
+# The number of newlines after '}' or ';' of a class definition.
+nl_after_class = 0 # unsigned number
+
+# The number of newlines before a namespace.
+nl_before_namespace = 0 # unsigned number
+
+# The number of newlines after '{' of a namespace. This also adds newlines
+# before the matching '}'.
+#
+# 0: Apply eat_blanks_after_open_brace or eat_blanks_before_close_brace if
+# applicable, otherwise no change.
+#
+# Overrides eat_blanks_after_open_brace and eat_blanks_before_close_brace.
+nl_inside_namespace = 0 # unsigned number
+
+# The number of newlines after '}' of a namespace.
+nl_after_namespace = 0 # unsigned number
+
+# The number of newlines before an access specifier label. This also includes
+# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
+# if after a brace open.
+#
+# 0: No change (default).
+nl_before_access_spec = 0 # unsigned number
+
+# The number of newlines after an access specifier label. This also includes
+# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
+# if after a brace open.
+#
+# 0: No change (default).
+#
+# Overrides nl_typedef_blk_start and nl_var_def_blk_start.
+nl_after_access_spec = 0 # unsigned number
+
+# The number of newlines between a function definition and the function
+# comment, as in '// comment\n <here> void foo() {...}'.
+#
+# 0: No change (default).
+nl_comment_func_def = 0 # unsigned number
+
+# The number of newlines after a try-catch-finally block that isn't followed
+# by a brace close.
+#
+# 0: No change (default).
+nl_after_try_catch_finally = 0 # unsigned number
+
+# (C#) The number of newlines before and after a property, indexer or event
+# declaration.
+#
+# 0: No change (default).
+nl_around_cs_property = 0 # unsigned number
+
+# (C#) The number of newlines between the get/set/add/remove handlers.
+#
+# 0: No change (default).
+nl_between_get_set = 0 # unsigned number
+
+# (C#) Add or remove newline between property and the '{'.
+nl_property_brace = ignore # ignore/add/remove/force/not_defined
+
+# Whether to remove blank lines after '{'.
+eat_blanks_after_open_brace = false # true/false
+
+# Whether to remove blank lines before '}'.
+eat_blanks_before_close_brace = false # true/false
+
+# How aggressively to remove extra newlines not in preprocessor.
+#
+# 0: No change (default)
+# 1: Remove most newlines not handled by other config
+# 2: Remove all newlines and reformat completely by config
+nl_remove_extra_newlines = 0 # unsigned number
+
+# (Java) Add or remove newline after an annotation statement. Only affects
+# annotations that are after a newline.
+nl_after_annotation = ignore # ignore/add/remove/force/not_defined
+
+# (Java) Add or remove newline between two annotations.
+nl_between_annotation = ignore # ignore/add/remove/force/not_defined
+
+# The number of newlines before a whole-file #ifdef.
+#
+# 0: No change (default).
+nl_before_whole_file_ifdef = 0 # unsigned number
+
+# The number of newlines after a whole-file #ifdef.
+#
+# 0: No change (default).
+nl_after_whole_file_ifdef = 0 # unsigned number
+
+# The number of newlines before a whole-file #endif.
+#
+# 0: No change (default).
+nl_before_whole_file_endif = 0 # unsigned number
+
+# The number of newlines after a whole-file #endif.
+#
+# 0: No change (default).
+nl_after_whole_file_endif = 0 # unsigned number
+
+#
+# Positioning options
+#
+
+# The position of arithmetic operators in wrapped expressions.
+pos_arith = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of assignment in wrapped expressions. Do not affect '='
+# followed by '{'.
+pos_assign = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of Boolean operators in wrapped expressions.
+pos_bool = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of comparison operators in wrapped expressions.
+pos_compare = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of conditional operators, as in the '?' and ':' of
+# 'expr ? stmt : stmt', in wrapped expressions.
+pos_conditional = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of the comma in wrapped expressions.
+pos_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of the comma in enum entries.
+pos_enum_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of the comma in the base class list if there is more than one
+# line. Affects nl_class_init_args.
+pos_class_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of the comma in the constructor initialization list.
+# Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon.
+pos_constr_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of trailing/leading class colon, between class and base class
+# list. Affects nl_class_colon.
+pos_class_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of colons between constructor and member initialization.
+# Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.
+pos_constr_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of shift operators in wrapped expressions.
+pos_shift = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+#
+# Line splitting options
+#
+
+# Try to limit code width to N columns.
+code_width = 0 # unsigned number
+
+# Whether to fully split long 'for' statements at semi-colons.
+ls_for_split_full = false # true/false
+
+# Whether to fully split long function prototypes/calls at commas.
+# The option ls_code_width has priority over the option ls_func_split_full.
+ls_func_split_full = false # true/false
+
+# Whether to split lines as close to code_width as possible and ignore some
+# groupings.
+# The option ls_code_width has priority over the option ls_func_split_full.
+ls_code_width = false # true/false
+
+#
+# Code alignment options (not left column spaces/tabs)
+#
+
+# Whether to keep non-indenting tabs.
+align_keep_tabs = false # true/false
+
+# Whether to use tabs for aligning.
+align_with_tabs = false # true/false
+
+# Whether to bump out to the next tab when aligning.
+align_on_tabstop = false # true/false
+
+# Whether to right-align numbers.
+align_number_right = false # true/false
+
+# Whether to keep whitespace not required for alignment.
+align_keep_extra_space = false # true/false
+
+# Whether to align variable definitions in prototypes and functions.
+align_func_params = false # true/false
+
+# The span for aligning parameter definitions in function on parameter name.
+#
+# 0: Don't align (default).
+align_func_params_span = 0 # unsigned number
+
+# The threshold for aligning function parameter definitions.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_func_params_thresh = 0 # number
+
+# The gap for aligning function parameter definitions.
+align_func_params_gap = 0 # unsigned number
+
+# The span for aligning constructor value.
+#
+# 0: Don't align (default).
+align_constr_value_span = 0 # unsigned number
+
+# The threshold for aligning constructor value.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_constr_value_thresh = 0 # number
+
+# The gap for aligning constructor value.
+align_constr_value_gap = 0 # unsigned number
+
+# Whether to align parameters in single-line functions that have the same
+# name. The function names must already be aligned with each other.
+align_same_func_call_params = false # true/false
+
+# The span for aligning function-call parameters for single line functions.
+#
+# 0: Don't align (default).
+align_same_func_call_params_span = 0 # unsigned number
+
+# The threshold for aligning function-call parameters for single line
+# functions.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_same_func_call_params_thresh = 0 # number
+
+# The span for aligning variable definitions.
+#
+# 0: Don't align (default).
+align_var_def_span = 0 # unsigned number
+
+# How to consider (or treat) the '*' in the alignment of variable definitions.
+#
+# 0: Part of the type 'void * foo;' (default)
+# 1: Part of the variable 'void *foo;'
+# 2: Dangling 'void *foo;'
+# Dangling: the '*' will not be taken into account when aligning.
+align_var_def_star_style = 0 # unsigned number
+
+# How to consider (or treat) the '&' in the alignment of variable definitions.
+#
+# 0: Part of the type 'long & foo;' (default)
+# 1: Part of the variable 'long &foo;'
+# 2: Dangling 'long &foo;'
+# Dangling: the '&' will not be taken into account when aligning.
+align_var_def_amp_style = 0 # unsigned number
+
+# The threshold for aligning variable definitions.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_var_def_thresh = 0 # number
+
+# The gap for aligning variable definitions.
+align_var_def_gap = 0 # unsigned number
+
+# Whether to align the colon in struct bit fields.
+align_var_def_colon = false # true/false
+
+# The gap for aligning the colon in struct bit fields.
+align_var_def_colon_gap = 0 # unsigned number
+
+# Whether to align any attribute after the variable name.
+align_var_def_attribute = false # true/false
+
+# Whether to align inline struct/enum/union variable definitions.
+align_var_def_inline = false # true/false
+
+# The span for aligning on '=' in assignments.
+#
+# 0: Don't align (default).
+align_assign_span = 0 # unsigned number
+
+# The span for aligning on '=' in function prototype modifier.
+#
+# 0: Don't align (default).
+align_assign_func_proto_span = 0 # unsigned number
+
+# The threshold for aligning on '=' in assignments.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_assign_thresh = 0 # number
+
+# Whether to align on the left most assignment when multiple
+# definitions are found on the same line.
+# Depends on 'align_assign_span' and 'align_assign_thresh' settings.
+align_assign_on_multi_var_defs = false # true/false
+
+# The span for aligning on '{' in braced init list.
+#
+# 0: Don't align (default).
+align_braced_init_list_span = 0 # unsigned number
+
+# The threshold for aligning on '{' in braced init list.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_braced_init_list_thresh = 0 # number
+
+# How to apply align_assign_span to function declaration "assignments", i.e.
+# 'virtual void foo() = 0' or '~foo() = {default|delete}'.
+#
+# 0: Align with other assignments (default)
+# 1: Align with each other, ignoring regular assignments
+# 2: Don't align
+align_assign_decl_func = 0 # unsigned number
+
+# The span for aligning on '=' in enums.
+#
+# 0: Don't align (default).
+align_enum_equ_span = 0 # unsigned number
+
+# The threshold for aligning on '=' in enums.
+# Use a negative number for absolute thresholds.
+#
+# 0: no limit (default).
+align_enum_equ_thresh = 0 # number
+
+# The span for aligning class member definitions.
+#
+# 0: Don't align (default).
+align_var_class_span = 0 # unsigned number
+
+# The threshold for aligning class member definitions.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_var_class_thresh = 0 # number
+
+# The gap for aligning class member definitions.
+align_var_class_gap = 0 # unsigned number
+
+# The span for aligning struct/union member definitions.
+#
+# 0: Don't align (default).
+align_var_struct_span = 0 # unsigned number
+
+# The threshold for aligning struct/union member definitions.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_var_struct_thresh = 0 # number
+
+# The gap for aligning struct/union member definitions.
+align_var_struct_gap = 0 # unsigned number
+
+# The span for aligning struct initializer values.
+#
+# 0: Don't align (default).
+align_struct_init_span = 0 # unsigned number
+
+# The span for aligning single-line typedefs.
+#
+# 0: Don't align (default).
+align_typedef_span = 0 # unsigned number
+
+# The minimum space between the type and the synonym of a typedef.
+align_typedef_gap = 0 # unsigned number
+
+# How to align typedef'd functions with other typedefs.
+#
+# 0: Don't mix them at all (default)
+# 1: Align the open parenthesis with the types
+# 2: Align the function type name with the other type names
+align_typedef_func = 0 # unsigned number
+
+# How to consider (or treat) the '*' in the alignment of typedefs.
+#
+# 0: Part of the typedef type, 'typedef int * pint;' (default)
+# 1: Part of type name: 'typedef int *pint;'
+# 2: Dangling: 'typedef int *pint;'
+# Dangling: the '*' will not be taken into account when aligning.
+align_typedef_star_style = 0 # unsigned number
+
+# How to consider (or treat) the '&' in the alignment of typedefs.
+#
+# 0: Part of the typedef type, 'typedef int & intref;' (default)
+# 1: Part of type name: 'typedef int &intref;'
+# 2: Dangling: 'typedef int &intref;'
+# Dangling: the '&' will not be taken into account when aligning.
+align_typedef_amp_style = 0 # unsigned number
+
+# The span for aligning comments that end lines.
+#
+# 0: Don't align (default).
+align_right_cmt_span = 0 # unsigned number
+
+# Minimum number of columns between preceding text and a trailing comment in
+# order for the comment to qualify for being aligned. Must be non-zero to have
+# an effect.
+align_right_cmt_gap = 0 # unsigned number
+
+# If aligning comments, whether to mix with comments after '}' and #endif with
+# less than three spaces before the comment.
+align_right_cmt_mix = false # true/false
+
+# Whether to only align trailing comments that are at the same brace level.
+align_right_cmt_same_level = false # true/false
+
+# Minimum column at which to align trailing comments. Comments which are
+# aligned beyond this column, but which can be aligned in a lesser column,
+# may be "pulled in".
+#
+# 0: Ignore (default).
+align_right_cmt_at_col = 0 # unsigned number
+
+# The span for aligning function prototypes.
+#
+# 0: Don't align (default).
+align_func_proto_span = 0 # unsigned number
+
+# Whether to ignore continuation lines when evaluating the number of
+# new lines for the function prototype alignment's span.
+#
+# false: continuation lines are part of the newlines count
+# true: continuation lines are not counted
+align_func_proto_span_ignore_cont_lines = false # true/false
+
+# How to consider (or treat) the '*' in the alignment of function prototypes.
+#
+# 0: Part of the type 'void * foo();' (default)
+# 1: Part of the function 'void *foo();'
+# 2: Dangling 'void *foo();'
+# Dangling: the '*' will not be taken into account when aligning.
+align_func_proto_star_style = 0 # unsigned number
+
+# How to consider (or treat) the '&' in the alignment of function prototypes.
+#
+# 0: Part of the type 'long & foo();' (default)
+# 1: Part of the function 'long &foo();'
+# 2: Dangling 'long &foo();'
+# Dangling: the '&' will not be taken into account when aligning.
+align_func_proto_amp_style = 0 # unsigned number
+
+# The threshold for aligning function prototypes.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_func_proto_thresh = 0 # number
+
+# Minimum gap between the return type and the function name.
+align_func_proto_gap = 0 # unsigned number
+
+# Whether to align function prototypes on the 'operator' keyword instead of
+# what follows.
+align_on_operator = false # true/false
+
+# 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 # true/false
+
+# Whether to align single-line functions with function prototypes.
+# Uses align_func_proto_span.
+align_single_line_func = false # true/false
+
+# Whether to align the open brace of single-line functions.
+# Requires align_single_line_func=true. Uses align_func_proto_span.
+align_single_line_brace = false # true/false
+
+# Gap for align_single_line_brace.
+align_single_line_brace_gap = 0 # unsigned number
+
+# (OC) The span for aligning Objective-C message specifications.
+#
+# 0: Don't align (default).
+align_oc_msg_spec_span = 0 # unsigned number
+
+# Whether and how to align backslashes that split a macro onto multiple lines.
+# This will not work right if the macro contains a multi-line comment.
+#
+# 0: Do nothing (default)
+# 1: Align the backslashes in the column at the end of the longest line
+# 2: Align with the backslash that is farthest to the left, or, if that
+# backslash is farther left than the end of the longest line, at the end of
+# the longest line
+# 3: Align with the backslash that is farthest to the right
+align_nl_cont = 0 # unsigned number
+
+# The minimum number of spaces between the end of a line and its continuation
+# backslash. Requires align_nl_cont.
+#
+# Default: 1
+align_nl_cont_spaces = 1 # unsigned number
+
+# Whether to align macro functions and variables together.
+align_pp_define_together = false # true/false
+
+# The span for aligning on '#define' bodies.
+#
+# =0: Don't align (default)
+# >0: Number of lines (including comments) between blocks
+align_pp_define_span = 0 # unsigned number
+
+# The minimum space between label and value of a preprocessor define.
+align_pp_define_gap = 0 # unsigned number
+
+# Whether to align lines that start with '<<' with previous '<<'.
+#
+# Default: true
+align_left_shift = true # true/false
+
+# Whether to align comma-separated statements following '<<' (as used to
+# initialize Eigen matrices).
+align_eigen_comma_init = false # true/false
+
+# Whether to align text after 'asm volatile ()' colons.
+align_asm_colon = false # true/false
+
+# (OC) Span for aligning parameters in an Objective-C message call
+# on the ':'.
+#
+# 0: Don't align.
+align_oc_msg_colon_span = 0 # unsigned number
+
+# (OC) Whether to always align with the first parameter, even if it is too
+# short.
+align_oc_msg_colon_first = false # true/false
+
+# (OC) Whether to align parameters in an Objective-C '+' or '-' declaration
+# on the ':'.
+align_oc_decl_colon = false # true/false
+
+# (OC) Whether to not align parameters in an Objectve-C message call if first
+# colon is not on next line of the message call (the same way Xcode does
+# alignment)
+align_oc_msg_colon_xcode_like = false # true/false
+
+#
+# Comment modification options
+#
+
+# Try to wrap comments at N columns.
+cmt_width = 0 # unsigned number
+
+# How to reflow comments.
+#
+# 0: No reflowing (apart from the line wrapping due to cmt_width) (default)
+# 1: No touching at all
+# 2: Full reflow (enable cmt_indent_multi for indent with line wrapping due to cmt_width)
+cmt_reflow_mode = 0 # unsigned number
+
+# Path to a file that contains regular expressions describing patterns for
+# which the end of one line and the beginning of the next will be folded into
+# the same sentence or paragraph during full comment reflow. The regular
+# expressions are described using ECMAScript syntax. The syntax for this
+# specification is as follows, where "..." indicates the custom regular
+# expression and "n" indicates the nth end_of_prev_line_regex and
+# beg_of_next_line_regex regular expression pair:
+#
+# end_of_prev_line_regex[1] = "...$"
+# beg_of_next_line_regex[1] = "^..."
+# end_of_prev_line_regex[2] = "...$"
+# beg_of_next_line_regex[2] = "^..."
+# .
+# .
+# .
+# end_of_prev_line_regex[n] = "...$"
+# beg_of_next_line_regex[n] = "^..."
+#
+# Note that use of this option overrides the default reflow fold regular
+# expressions, which are internally defined as follows:
+#
+# end_of_prev_line_regex[1] = "[\w,\]\)]$"
+# beg_of_next_line_regex[1] = "^[\w,\[\(]"
+# end_of_prev_line_regex[2] = "\.$"
+# beg_of_next_line_regex[2] = "^[A-Z]"
+cmt_reflow_fold_regex_file = "" # string
+
+# Whether to indent wrapped lines to the start of the encompassing paragraph
+# during full comment reflow (cmt_reflow_mode = 2). Overrides the value
+# specified by cmt_sp_after_star_cont.
+#
+# Note that cmt_align_doxygen_javadoc_tags overrides this option for
+# paragraphs associated with javadoc tags
+cmt_reflow_indent_to_paragraph_start = false # true/false
+
+# Whether to convert all tabs to spaces in comments. If false, tabs in
+# comments are left alone, unless used for indenting.
+cmt_convert_tab_to_spaces = false # true/false
+
+# Whether to apply changes to multi-line comments, including cmt_width,
+# keyword substitution and leading chars.
+#
+# Default: true
+cmt_indent_multi = true # true/false
+
+# Whether to align doxygen javadoc-style tags ('@param', '@return', etc.)
+# and corresponding fields such that groups of consecutive block tags,
+# parameter names, and descriptions align with one another. Overrides that
+# which is specified by the cmt_sp_after_star_cont. If cmt_width > 0, it may
+# be necessary to enable cmt_indent_multi and set cmt_reflow_mode = 2
+# in order to achieve the desired alignment for line-wrapping.
+cmt_align_doxygen_javadoc_tags = false # true/false
+
+# The number of spaces to insert after the star and before doxygen
+# javadoc-style tags (@param, @return, etc). Requires enabling
+# cmt_align_doxygen_javadoc_tags. Overrides that which is specified by the
+# cmt_sp_after_star_cont.
+#
+# Default: 1
+cmt_sp_before_doxygen_javadoc_tags = 1 # unsigned number
+
+# Whether to change trailing, single-line c-comments into cpp-comments.
+cmt_trailing_single_line_c_to_cpp = false # true/false
+
+# Whether to group c-comments that look like they are in a block.
+cmt_c_group = false # true/false
+
+# Whether to put an empty '/*' on the first line of the combined c-comment.
+cmt_c_nl_start = false # true/false
+
+# Whether to add a newline before the closing '*/' of the combined c-comment.
+cmt_c_nl_end = false # true/false
+
+# Whether to change cpp-comments into c-comments.
+cmt_cpp_to_c = false # true/false
+
+# Whether to group cpp-comments that look like they are in a block. Only
+# meaningful if cmt_cpp_to_c=true.
+cmt_cpp_group = false # true/false
+
+# Whether to put an empty '/*' on the first line of the combined cpp-comment
+# when converting to a c-comment.
+#
+# Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
+cmt_cpp_nl_start = false # true/false
+
+# Whether to add a newline before the closing '*/' of the combined cpp-comment
+# when converting to a c-comment.
+#
+# Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
+cmt_cpp_nl_end = false # true/false
+
+# Whether to put a star on subsequent comment lines.
+cmt_star_cont = false # true/false
+
+# The number of spaces to insert at the start of subsequent comment lines.
+cmt_sp_before_star_cont = 0 # unsigned number
+
+# The number of spaces to insert after the star on subsequent comment lines.
+cmt_sp_after_star_cont = 0 # unsigned number
+
+# For multi-line comments with a '*' lead, remove leading spaces if the first
+# and last lines of the comment are the same length.
+#
+# Default: true
+cmt_multi_check_last = true # true/false
+
+# For multi-line comments with a '*' lead, remove leading spaces if the first
+# and last lines of the comment are the same length AND if the length is
+# bigger as the first_len minimum.
+#
+# Default: 4
+cmt_multi_first_len_minimum = 4 # unsigned number
+
+# Path to a file that contains text to insert at the beginning of a file if
+# the file doesn't start with a C/C++ comment. If the inserted text contains
+# '$(filename)', that will be replaced with the current file's name.
+cmt_insert_file_header = "" # string
+
+# Path to a file that contains text to insert at the end of a file if the
+# file doesn't end with a C/C++ comment. If the inserted text contains
+# '$(filename)', that will be replaced with the current file's name.
+cmt_insert_file_footer = "" # string
+
+# Path to a file that contains text to insert before a function definition if
+# the function isn't preceded by a C/C++ comment. If the inserted text
+# contains '$(function)', '$(javaparam)' or '$(fclass)', these will be
+# replaced with, respectively, the name of the function, the javadoc '@param'
+# and '@return' stuff, or the name of the class to which the member function
+# belongs.
+cmt_insert_func_header = "" # string
+
+# Path to a file that contains text to insert before a class if the class
+# isn't preceded by a C/C++ comment. If the inserted text contains '$(class)',
+# that will be replaced with the class name.
+cmt_insert_class_header = "" # string
+
+# Path to a file that contains text to insert before an Objective-C message
+# specification, if the method isn't preceded by a C/C++ comment. If the
+# inserted text contains '$(message)' or '$(javaparam)', these will be
+# replaced with, respectively, the name of the function, or the javadoc
+# '@param' and '@return' stuff.
+cmt_insert_oc_msg_header = "" # string
+
+# Whether a comment should be inserted if a preprocessor is encountered when
+# stepping backwards from a function name.
+#
+# Applies to cmt_insert_oc_msg_header, cmt_insert_func_header and
+# cmt_insert_class_header.
+cmt_insert_before_preproc = false # true/false
+
+# Whether a comment should be inserted if a function is declared inline to a
+# class definition.
+#
+# Applies to cmt_insert_func_header.
+#
+# Default: true
+cmt_insert_before_inlines = true # true/false
+
+# Whether a comment should be inserted if the function is a class constructor
+# or destructor.
+#
+# Applies to cmt_insert_func_header.
+cmt_insert_before_ctor_dtor = false # true/false
+
+#
+# Code modifying options (non-whitespace)
+#
+
+# Add or remove braces on a single-line 'do' statement.
+mod_full_brace_do = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove braces on a single-line 'for' statement.
+mod_full_brace_for = ignore # ignore/add/remove/force/not_defined
+
+# (Pawn) Add or remove braces on a single-line function definition.
+mod_full_brace_function = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove braces on a single-line 'if' statement. Braces will not be
+# removed if the braced statement contains an 'else'.
+mod_full_brace_if = ignore # ignore/add/remove/force/not_defined
+
+# Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either
+# have, or do not have, braces. Overrides mod_full_brace_if.
+#
+# 0: Don't override mod_full_brace_if
+# 1: Add braces to all blocks if any block needs braces and remove braces if
+# they can be removed from all blocks
+# 2: Add braces to all blocks if any block already has braces, regardless of
+# whether it needs them
+# 3: Add braces to all blocks if any block needs braces and remove braces if
+# they can be removed from all blocks, except if all blocks have braces
+# despite none needing them
+mod_full_brace_if_chain = 0 # unsigned number
+
+# Whether to add braces to all blocks of an 'if'/'else if'/'else' chain.
+# If true, mod_full_brace_if_chain will only remove braces from an 'if' that
+# does not have an 'else if' or 'else'.
+mod_full_brace_if_chain_only = false # true/false
+
+# Add or remove braces on single-line 'while' statement.
+mod_full_brace_while = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove braces on single-line 'using ()' statement.
+mod_full_brace_using = ignore # ignore/add/remove/force/not_defined
+
+# Don't remove braces around statements that span N newlines
+mod_full_brace_nl = 0 # unsigned number
+
+# Whether to prevent removal of braces from 'if'/'for'/'while'/etc. blocks
+# which span multiple lines.
+#
+# Affects:
+# mod_full_brace_for
+# mod_full_brace_if
+# mod_full_brace_if_chain
+# mod_full_brace_if_chain_only
+# mod_full_brace_while
+# mod_full_brace_using
+#
+# Does not affect:
+# mod_full_brace_do
+# mod_full_brace_function
+mod_full_brace_nl_block_rem_mlcond = false # true/false
+
+# Add or remove unnecessary parentheses on 'return' statement.
+mod_paren_on_return = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove unnecessary parentheses on 'throw' statement.
+mod_paren_on_throw = ignore # ignore/add/remove/force/not_defined
+
+# (Pawn) Whether to change optional semicolons to real semicolons.
+mod_pawn_semicolon = false # true/false
+
+# Whether to fully parenthesize Boolean expressions in 'while' and 'if'
+# statement, as in 'if (a && b > c)' => 'if (a && (b > c))'.
+mod_full_paren_if_bool = false # true/false
+
+# Whether to fully parenthesize Boolean expressions after '='
+# statement, as in 'x = a && b > c;' => 'x = (a && (b > c));'.
+mod_full_paren_assign_bool = false # true/false
+
+# Whether to fully parenthesize Boolean expressions after '='
+# statement, as in 'return a && b > c;' => 'return (a && (b > c));'.
+mod_full_paren_return_bool = false # true/false
+
+# Whether to remove superfluous semicolons.
+mod_remove_extra_semicolon = false # true/false
+
+# Whether to remove duplicate include.
+mod_remove_duplicate_include = false # true/false
+
+# the following options (mod_XX_closebrace_comment) use different comment,
+# depending of the setting of the next option.
+# false: Use the c comment (default)
+# true : Use the cpp comment
+mod_add_force_c_closebrace_comment = false # true/false
+
+# 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 = 0 # unsigned number
+
+# If a namespace 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_namespace_closebrace_comment = 0 # unsigned number
+
+# If a class 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_class_closebrace_comment = 0 # unsigned 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 = 0 # unsigned number
+
+# If an #ifdef body exceeds the specified number of newlines and doesn't have
+# a comment after the #endif, a comment will be added.
+mod_add_long_ifdef_endif_comment = 0 # unsigned number
+
+# If an #ifdef or #else body exceeds the specified number of newlines and
+# doesn't have a comment after the #else, a comment will be added.
+mod_add_long_ifdef_else_comment = 0 # unsigned number
+
+# Whether to take care of the case by the mod_sort_xx options.
+mod_sort_case_sensitive = false # true/false
+
+# Whether to sort consecutive single-line 'import' statements.
+mod_sort_import = false # true/false
+
+# (C#) Whether to sort consecutive single-line 'using' statements.
+mod_sort_using = false # true/false
+
+# Whether to sort consecutive single-line '#include' statements (C/C++) and
+# '#import' statements (Objective-C). Be aware that this has the potential to
+# break your code if your includes/imports have ordering dependencies.
+mod_sort_include = false # true/false
+
+# Whether to prioritize '#include' and '#import' statements that contain
+# filename without extension when sorting is enabled.
+mod_sort_incl_import_prioritize_filename = false # true/false
+
+# Whether to prioritize '#include' and '#import' statements that does not
+# contain extensions when sorting is enabled.
+mod_sort_incl_import_prioritize_extensionless = false # true/false
+
+# Whether to prioritize '#include' and '#import' statements that contain
+# angle over quotes when sorting is enabled.
+mod_sort_incl_import_prioritize_angle_over_quotes = false # true/false
+
+# Whether to ignore file extension in '#include' and '#import' statements
+# for sorting comparison.
+mod_sort_incl_import_ignore_extension = false # true/false
+
+# Whether to group '#include' and '#import' statements when sorting is enabled.
+mod_sort_incl_import_grouping_enabled = false # true/false
+
+# Whether to move a 'break' that appears after a fully braced 'case' before
+# the close brace, as in 'case X: { ... } break;' => 'case X: { ... break; }'.
+mod_move_case_break = false # true/false
+
+# Whether to move a 'return' that appears after a fully braced 'case' before
+# the close brace, as in 'case X: { ... } return;' => 'case X: { ... return; }'.
+mod_move_case_return = false # true/false
+
+# Add or remove braces around a fully braced case statement. Will only remove
+# braces if there are no variable declarations in the block.
+mod_case_brace = ignore # ignore/add/remove/force/not_defined
+
+# Whether to remove a void 'return;' that appears as the last statement in a
+# function.
+mod_remove_empty_return = false # true/false
+
+# Add or remove the comma after the last value of an enumeration.
+mod_enum_last_comma = ignore # ignore/add/remove/force/not_defined
+
+# Syntax to use for infinite loops.
+#
+# 0: Leave syntax alone (default)
+# 1: Rewrite as `for(;;)`
+# 2: Rewrite as `while(true)`
+# 3: Rewrite as `do`...`while(true);`
+# 4: Rewrite as `while(1)`
+# 5: Rewrite as `do`...`while(1);`
+#
+# Infinite loops that do not already match one of these syntaxes are ignored.
+# Other options that affect loop formatting will be applied after transforming
+# the syntax.
+mod_infinite_loop = 0 # unsigned number
+
+# Add or remove the 'int' keyword in 'int short'.
+mod_int_short = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'short int'.
+mod_short_int = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'int long'.
+mod_int_long = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'long int'.
+mod_long_int = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'int signed'.
+mod_int_signed = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'signed int'.
+mod_signed_int = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'int unsigned'.
+mod_int_unsigned = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'unsigned int'.
+mod_unsigned_int = ignore # ignore/add/remove/force/not_defined
+
+# If there is a situation where mod_int_* and mod_*_int would result in
+# multiple int keywords, whether to keep the rightmost int (the default) or the
+# leftmost int.
+mod_int_prefer_int_on_left = false # true/false
+
+# (OC) Whether to organize the properties. If true, properties will be
+# rearranged according to the mod_sort_oc_property_*_weight factors.
+mod_sort_oc_properties = false # true/false
+
+# (OC) Weight of a class property modifier.
+mod_sort_oc_property_class_weight = 0 # number
+
+# (OC) Weight of 'atomic' and 'nonatomic'.
+mod_sort_oc_property_thread_safe_weight = 0 # number
+
+# (OC) Weight of 'readwrite' when organizing properties.
+mod_sort_oc_property_readwrite_weight = 0 # number
+
+# (OC) Weight of a reference type specifier ('retain', 'copy', 'assign',
+# 'weak', 'strong') when organizing properties.
+mod_sort_oc_property_reference_weight = 0 # number
+
+# (OC) Weight of getter type ('getter=') when organizing properties.
+mod_sort_oc_property_getter_weight = 0 # number
+
+# (OC) Weight of setter type ('setter=') when organizing properties.
+mod_sort_oc_property_setter_weight = 0 # number
+
+# (OC) Weight of nullability type ('nullable', 'nonnull', 'null_unspecified',
+# 'null_resettable') when organizing properties.
+mod_sort_oc_property_nullability_weight = 0 # number
+
+#
+# Preprocessor options
+#
+
+# How to use tabs when indenting preprocessor code.
+#
+# -1: Use 'indent_with_tabs' setting (default)
+# 0: Spaces only
+# 1: Indent with tabs to brace level, align with spaces
+# 2: Indent and align with tabs, using spaces when not on a tabstop
+#
+# Default: -1
+pp_indent_with_tabs = -1 # number
+
+# Add or remove indentation of preprocessor directives inside #if blocks
+# at brace level 0 (file-level).
+pp_indent = ignore # ignore/add/remove/force/not_defined
+
+# Whether to indent #if/#else/#endif at the brace level. If false, these are
+# indented from column 1.
+pp_indent_at_level = false # true/false
+
+# Whether to indent #if/#else/#endif at the parenthesis level if the brace
+# level is 0. If false, these are indented from column 1.
+pp_indent_at_level0 = false # true/false
+
+# Specifies the number of columns to indent preprocessors per level
+# at brace level 0 (file-level). If pp_indent_at_level=false, also specifies
+# the number of columns to indent preprocessors per level
+# at brace level > 0 (function-level).
+#
+# Default: 1
+pp_indent_count = 1 # unsigned number
+
+# Add or remove space after # based on pp level of #if blocks.
+pp_space_after = ignore # ignore/add/remove/force/not_defined
+
+# Sets the number of spaces per level added with pp_space_after.
+pp_space_count = 0 # unsigned number
+
+# The indent for '#region' and '#endregion' in C# and '#pragma region' in
+# C/C++. Negative values decrease indent down to the first column.
+pp_indent_region = 0 # number
+
+# Whether to indent the code between #region and #endregion.
+pp_region_indent_code = false # true/false
+
+# If pp_indent_at_level=true, sets the indent for #if, #else and #endif when
+# not at file-level. Negative values decrease indent down to the first column.
+#
+# =0: Indent preprocessors using output_tab_size
+# >0: Column at which all preprocessors will be indented
+pp_indent_if = 0 # number
+
+# Whether to indent the code between #if, #else and #endif.
+pp_if_indent_code = false # true/false
+
+# Whether to indent the body of an #if that encompasses all the code in the file.
+pp_indent_in_guard = false # true/false
+
+# Whether to indent '#define' at the brace level. If false, these are
+# indented from column 1.
+pp_define_at_level = false # true/false
+
+# Whether to indent '#include' at the brace level.
+pp_include_at_level = false # true/false
+
+# Whether to ignore the '#define' body while formatting.
+pp_ignore_define_body = false # true/false
+
+# An offset value that controls the indentation of the body of a multiline #define.
+# 'body' refers to all the lines of a multiline #define except the first line.
+# Requires 'pp_ignore_define_body = false'.
+#
+# <0: Absolute column: the body indentation starts off at the specified column
+# (ex. -3 ==> the body is indented starting from column 3)
+# >=0: Relative to the column of the '#' of '#define'
+# (ex. 3 ==> the body is indented starting 3 columns at the right of '#')
+#
+# Default: 8
+pp_multiline_define_body_indent = 8 # number
+
+# Whether to indent case statements between #if, #else, and #endif.
+# Only applies to the indent of the preprocessor that the case statements
+# directly inside of.
+#
+# Default: true
+pp_indent_case = true # true/false
+
+# Whether to indent whole function definitions between #if, #else, and #endif.
+# Only applies to the indent of the preprocessor that the function definition
+# is directly inside of.
+#
+# Default: true
+pp_indent_func_def = true # true/false
+
+# Whether to indent extern C blocks between #if, #else, and #endif.
+# Only applies to the indent of the preprocessor that the extern block is
+# directly inside of.
+#
+# Default: true
+pp_indent_extern = true # true/false
+
+# How to indent braces directly inside #if, #else, and #endif.
+# Requires pp_if_indent_code=true and only applies to the indent of the
+# preprocessor that the braces are directly inside of.
+# 0: No extra indent
+# 1: Indent by one level
+# -1: Preserve original indentation
+#
+# Default: 1
+pp_indent_brace = 1 # number
+
+# Whether to print warning messages for unbalanced #if and #else blocks.
+# This will print a message in the following cases:
+# - if an #ifdef block ends on a different indent level than
+# where it started from. Example:
+#
+# #ifdef TEST
+# int i;
+# {
+# int j;
+# #endif
+#
+# - an #elif/#else block ends on a different indent level than
+# the corresponding #ifdef block. Example:
+#
+# #ifdef TEST
+# int i;
+# #else
+# }
+# int j;
+# #endif
+pp_warn_unbalanced_if = false # true/false
+
+#
+# Sort includes options
+#
+
+# The regex for include category with priority 0.
+include_category_0 = "" # string
+
+# The regex for include category with priority 1.
+include_category_1 = "" # string
+
+# The regex for include category with priority 2.
+include_category_2 = "" # string
+
+#
+# Use or Do not Use options
+#
+
+# true: indent_func_call_param will be used (default)
+# false: indent_func_call_param will NOT be used
+#
+# Default: true
+use_indent_func_call_param = true # true/false
+
+# The value of the indentation for a continuation line is calculated
+# differently if the statement is:
+# - a declaration: your case with QString fileName ...
+# - an assignment: your case with pSettings = new QSettings( ...
+#
+# At the second case the indentation value might be used twice:
+# - at the assignment
+# - at the function call (if present)
+#
+# To prevent the double use of the indentation value, use this option with the
+# value 'true'.
+#
+# true: indent_continue will be used only once
+# false: indent_continue will be used every time (default)
+#
+# Requires indent_ignore_first_continue=false.
+use_indent_continue_only_once = false # true/false
+
+# The indentation can be:
+# - after the assignment, at the '[' character
+# - at the beginning of the lambda body
+#
+# true: indentation will be at the beginning of the lambda body
+# false: indentation will be after the assignment (default)
+indent_cpp_lambda_only_once = false # true/false
+
+# Whether sp_after_angle takes precedence over sp_inside_fparen. This was the
+# historic behavior, but is probably not the desired behavior, so this is off
+# by default.
+use_sp_after_angle_always = false # true/false
+
+# Whether to apply special formatting for Qt SIGNAL/SLOT macros. Essentially,
+# this tries to format these so that they match Qt's normalized form (i.e. the
+# result of QMetaObject::normalizedSignature), which can slightly improve the
+# performance of the QObject::connect call, rather than how they would
+# otherwise be formatted.
+#
+# See options_for_QT.cpp for details.
+#
+# Default: true
+use_options_overriding_for_qt_macros = true # true/false
+
+# If true: the form feed character is removed from the list of whitespace
+# characters. See https://en.cppreference.com/w/cpp/string/byte/isspace.
+use_form_feed_no_more_as_whitespace_character = false # true/false
+
+#
+# Warn levels - 1: error, 2: warning (default), 3: note
+#
+
+# (C#) Warning is given if doing tab-to-\t replacement and we have found one
+# in a C# verbatim string literal.
+#
+# Default: 2
+warn_level_tabs_found_in_verbatim_string_literals = 2 # unsigned number
+
+# Limit the number of loops.
+# Used by uncrustify.cpp to exit from infinite loop.
+# 0: no limit.
+debug_max_number_of_loops = 0 # number
+
+# Set the number of the line to protocol;
+# Used in the function prot_the_line if the 2. parameter is zero.
+# 0: nothing protocol.
+debug_line_number_to_protocol = 0 # number
+
+# Set the number of second(s) before terminating formatting the current file,
+# 0: no timeout.
+# only for linux
+debug_timeout = 0 # number
+
+# Set the number of characters to be printed if the text is too long,
+# 0: do not truncate.
+debug_truncate = 0 # unsigned number
+
+# sort (or not) the tracking info.
+#
+# Default: true
+debug_sort_the_tracks = true # true/false
+
+# decode (or not) the flags as a new line.
+# only if the -p option is set.
+debug_decode_the_flags = false # true/false
+
+# use (or not) the exit(EX_SOFTWARE) function.
+#
+# Default: true
+debug_use_the_exit_function_pop = true # true/false
+
+# insert the number of the line at the beginning of each line
+set_numbering_for_html_output = false # true/false
+
+# Meaning of the settings:
+# Ignore - do not do any changes
+# Add - makes sure there is 1 or more space/brace/newline/etc
+# Force - makes sure there is exactly 1 space/brace/newline/etc,
+# behaves like Add in some contexts
+# Remove - removes space/brace/newline/etc
+#
+#
+# - Token(s) can be treated as specific type(s) with the 'set' option:
+# `set tokenType tokenString [tokenString...]`
+#
+# Example:
+# `set BOOL __AND__ __OR__`
+#
+# tokenTypes are defined in src/token_enum.h, use them without the
+# 'CT_' prefix: 'CT_BOOL' => 'BOOL'
+#
+#
+# - Token(s) can be treated as type(s) with the 'type' option.
+# `type tokenString [tokenString...]`
+#
+# Example:
+# `type int c_uint_8 Rectangle`
+#
+# This can also be achieved with `set TYPE int c_uint_8 Rectangle`
+#
+#
+# To embed whitespace in tokenStrings use the '\' escape character, or quote
+# the tokenStrings. These quotes are supported: "'`
+#
+#
+# - Support for the auto detection of languages through the file ending can be
+# added using the 'file_ext' command.
+# `file_ext langType langString [langString..]`
+#
+# Example:
+# `file_ext CPP .ch .cxx .cpp.in`
+#
+# langTypes are defined in uncrusify_types.h in the lang_flag_e enum, use
+# them without the 'LANG_' prefix: 'LANG_CPP' => 'CPP'
+#
+#
+# - Custom macro-based indentation can be set up using 'macro-open',
+# 'macro-else' and 'macro-close'.
+# `(macro-open | macro-else | macro-close) tokenString`
+#
+# Example:
+# `macro-open BEGIN_TEMPLATE_MESSAGE_MAP`
+# `macro-open BEGIN_MESSAGE_MAP`
+# `macro-close END_MESSAGE_MAP`
+#
+#
+# option(s) with 'not default' value: 0
+#
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/configuration.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/configuration.txt
index f61b1176..f61b1176 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/configuration.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/configuration.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/default.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/default.cfg
new file mode 100644
index 00000000..9b3d568c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/default.cfg
@@ -0,0 +1,3708 @@
+# Uncrustify-0.78.0
+
+#
+# General options
+#
+
+# The type of line endings.
+#
+# Default: auto
+newlines = auto # lf/crlf/cr/auto
+
+# The original size of tabs in the input.
+#
+# Default: 8
+input_tab_size = 8 # unsigned number
+
+# The size of tabs in the output (only used if align_with_tabs=true).
+#
+# Default: 8
+output_tab_size = 8 # unsigned number
+
+# The ASCII value of the string escape char, usually 92 (\) or (Pawn) 94 (^).
+#
+# Default: 92
+string_escape_char = 92 # unsigned number
+
+# Alternate string escape char (usually only used for Pawn).
+# Only works right before the quote char.
+string_escape_char2 = 0 # unsigned number
+
+# Replace tab characters found in string literals with the escape sequence \t
+# instead.
+string_replace_tab_chars = false # true/false
+
+# Allow interpreting '>=' and '>>=' as part of a template in code like
+# 'void f(list<list<B>>=val);'. If true, 'assert(x<0 && y>=3)' will be broken.
+# Improvements to template detection may make this option obsolete.
+tok_split_gte = false # true/false
+
+# Disable formatting of NL_CONT ('\\n') ended lines (e.g. multi-line macros).
+disable_processing_nl_cont = false # true/false
+
+# Specify the marker used in comments to disable processing of part of the
+# file.
+#
+# Default: *INDENT-OFF*
+disable_processing_cmt = " *INDENT-OFF*" # string
+
+# Specify the marker used in comments to (re)enable processing in a file.
+#
+# Default: *INDENT-ON*
+enable_processing_cmt = " *INDENT-ON*" # string
+
+# Enable parsing of digraphs.
+enable_digraphs = false # true/false
+
+# Option to allow both disable_processing_cmt and enable_processing_cmt
+# strings, if specified, to be interpreted as ECMAScript regular expressions.
+# If true, a regex search will be performed within comments according to the
+# specified patterns in order to disable/enable processing.
+processing_cmt_as_regex = false # true/false
+
+# Add or remove the UTF-8 BOM (recommend 'remove').
+utf8_bom = ignore # ignore/add/remove/force/not_defined
+
+# If the file contains bytes with values between 128 and 255, but is not
+# UTF-8, then output as UTF-8.
+utf8_byte = false # true/false
+
+# Force the output encoding to UTF-8.
+utf8_force = false # true/false
+
+#
+# Spacing options
+#
+
+# Add or remove space around non-assignment symbolic operators ('+', '/', '%',
+# '<<', and so forth).
+sp_arith = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around arithmetic operators '+' and '-'.
+#
+# Overrides sp_arith.
+sp_arith_additive = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around assignment operator '=', '+=', etc.
+sp_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around '=' in C++11 lambda capture specifications.
+#
+# Overrides sp_assign.
+sp_cpp_lambda_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the capture specification of a C++11 lambda when
+# an argument list is present, as in '[] <here> (int x){ ... }'.
+sp_cpp_lambda_square_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the capture specification of a C++11 lambda with
+# no argument list is present, as in '[] <here> { ... }'.
+sp_cpp_lambda_square_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the opening parenthesis and before the closing
+# parenthesis of a argument list of a C++11 lambda, as in
+# '[]( <here> ){ ... }'
+# with an empty list.
+sp_cpp_lambda_argument_list_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the opening parenthesis and before the closing
+# parenthesis of a argument list of a C++11 lambda, as in
+# '[]( <here> int x <here> ){ ... }'.
+sp_cpp_lambda_argument_list = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the argument list of a C++11 lambda, as in
+# '[](int x) <here> { ... }'.
+sp_cpp_lambda_paren_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a lambda body and its call operator of an
+# immediately invoked lambda, as in '[]( ... ){ ... } <here> ( ... )'.
+sp_cpp_lambda_fparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around assignment operator '=' in a prototype.
+#
+# If set to ignore, use sp_assign.
+sp_assign_default = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before assignment operator '=', '+=', etc.
+#
+# Overrides sp_assign.
+sp_before_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after assignment operator '=', '+=', etc.
+#
+# Overrides sp_assign.
+sp_after_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space in 'enum {'.
+#
+# Default: add
+sp_enum_brace = add # ignore/add/remove/force/not_defined
+
+# Add or remove space in 'NS_ENUM ('.
+sp_enum_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around assignment '=' in enum.
+sp_enum_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before assignment '=' in enum.
+#
+# Overrides sp_enum_assign.
+sp_enum_before_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after assignment '=' in enum.
+#
+# Overrides sp_enum_assign.
+sp_enum_after_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around assignment ':' in enum.
+sp_enum_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around preprocessor '##' concatenation operator.
+#
+# Default: add
+sp_pp_concat = add # ignore/add/remove/force/not_defined
+
+# Add or remove space after preprocessor '#' stringify operator.
+# Also affects the '#@' charizing operator.
+sp_pp_stringify = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before preprocessor '#' stringify operator
+# as in '#define x(y) L#y'.
+sp_before_pp_stringify = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around boolean operators '&&' and '||'.
+sp_bool = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around compare operator '<', '>', '==', etc.
+sp_compare = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '(' and ')'.
+sp_inside_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between nested parentheses, i.e. '((' vs. ') )'.
+sp_paren_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.
+sp_cparen_oparen = ignore # ignore/add/remove/force/not_defined
+
+# Whether to balance spaces inside nested parentheses.
+sp_balance_nested_parens = false # true/false
+
+# Add or remove space between ')' and '{'.
+sp_paren_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between nested braces, i.e. '{{' vs. '{ {'.
+sp_brace_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*'.
+sp_before_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*' that isn't followed by a
+# variable name. If set to ignore, sp_before_ptr_star is used instead.
+sp_before_unnamed_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*' that is followed by a qualifier.
+# If set to ignore, sp_before_unnamed_ptr_star is used instead.
+sp_before_qualifier_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*' that is followed by 'operator' keyword.
+# If set to ignore, sp_before_unnamed_ptr_star is used instead.
+sp_before_operator_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*' that is followed by
+# a class scope (as in 'int *MyClass::method()') or namespace scope
+# (as in 'int *my_ns::func()').
+# If set to ignore, sp_before_unnamed_ptr_star is used instead.
+sp_before_scope_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*' that is followed by '::',
+# as in 'int *::func()'.
+# If set to ignore, sp_before_unnamed_ptr_star is used instead.
+sp_before_global_scope_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a qualifier and a pointer star '*' that isn't
+# followed by a variable name, as in '(char const *)'. If set to ignore,
+# sp_before_ptr_star is used instead.
+sp_qualifier_unnamed_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between pointer stars '*', as in 'int ***a;'.
+sp_between_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between pointer star '*' and reference '&', as in 'int *& a;'.
+sp_between_ptr_ref = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after pointer star '*', if followed by a word.
+#
+# Overrides sp_type_func.
+sp_after_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after pointer caret '^', if followed by a word.
+sp_after_ptr_block_caret = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after pointer star '*', if followed by a qualifier.
+sp_after_ptr_star_qualifier = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a pointer star '*', if followed by a function
+# prototype or function definition.
+#
+# Overrides sp_after_ptr_star and sp_type_func.
+sp_after_ptr_star_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a pointer star '*' in the trailing return of a
+# function prototype or function definition.
+sp_after_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the pointer star '*' and the name of the variable
+# in a function pointer definition.
+sp_ptr_star_func_var = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the pointer star '*' and the name of the type
+# in a function pointer type definition.
+sp_ptr_star_func_type = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a pointer star '*', if followed by an open
+# parenthesis, as in 'void* (*)()'.
+sp_ptr_star_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a pointer star '*', if followed by a function
+# prototype or function definition. If set to ignore, sp_before_ptr_star is
+# used instead.
+sp_before_ptr_star_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a qualifier and a pointer star '*' followed by
+# the name of the function in a function prototype or definition, as in
+# 'char const *foo()`. If set to ignore, sp_before_ptr_star is used instead.
+sp_qualifier_ptr_star_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a pointer star '*' in the trailing return of a
+# function prototype or function definition.
+sp_before_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a qualifier and a pointer star '*' in the
+# trailing return of a function prototype or function definition, as in
+# 'auto foo() -> char const *'.
+sp_qualifier_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a reference sign '&'.
+sp_before_byref = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a reference sign '&' that isn't followed by a
+# variable name. If set to ignore, sp_before_byref is used instead.
+sp_before_unnamed_byref = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after reference sign '&', if followed by a word.
+#
+# Overrides sp_type_func.
+sp_after_byref = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a reference sign '&', if followed by a function
+# prototype or function definition.
+#
+# Overrides sp_after_byref and sp_type_func.
+sp_after_byref_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a reference sign '&', if followed by a function
+# prototype or function definition.
+sp_before_byref_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a reference sign '&', if followed by an open
+# parenthesis, as in 'char& (*)()'.
+sp_byref_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between type and word. In cases where total removal of
+# whitespace would be a syntax error, a value of 'remove' is treated the same
+# as 'force'.
+#
+# This also affects some other instances of space following a type that are
+# not covered by other options; for example, between the return type and
+# parenthesis of a function type template argument, between the type and
+# parenthesis of an array parameter, or between 'decltype(...)' and the
+# following word.
+#
+# Default: force
+sp_after_type = force # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'decltype(...)' and word,
+# brace or function call.
+sp_after_decltype = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space before the parenthesis in the D constructs
+# 'template Foo(' and 'class Foo('.
+sp_before_template_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'template' and '<'.
+# If set to ignore, sp_before_angle is used.
+sp_template_angle = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before '<'.
+sp_before_angle = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '<' and '>'.
+sp_inside_angle = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '<>'.
+# if empty.
+sp_inside_angle_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '>' and ':'.
+sp_angle_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after '>'.
+sp_after_angle = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '>' and '(' as found in 'new List<byte>(foo);'.
+sp_angle_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '>' and '()' as found in 'new List<byte>();'.
+sp_angle_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '>' and a word as in 'List<byte> m;' or
+# 'template <typename T> static ...'.
+sp_angle_word = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '>' and '>' in '>>' (template stuff).
+#
+# Default: add
+sp_angle_shift = add # ignore/add/remove/force/not_defined
+
+# (C++11) Permit removal of the space between '>>' in 'foo<bar<int> >'. Note
+# that sp_angle_shift cannot remove the space without this option.
+sp_permit_cpp11_shift = false # true/false
+
+# Add or remove space before '(' of control statements ('if', 'for', 'switch',
+# 'while', etc.).
+sp_before_sparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '(' and ')' of control statements other than
+# 'for'.
+sp_inside_sparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after '(' of control statements other than 'for'.
+#
+# Overrides sp_inside_sparen.
+sp_inside_sparen_open = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before ')' of control statements other than 'for'.
+#
+# Overrides sp_inside_sparen.
+sp_inside_sparen_close = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '(' and ')' of 'for' statements.
+sp_inside_for = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after '(' of 'for' statements.
+#
+# Overrides sp_inside_for.
+sp_inside_for_open = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before ')' of 'for' statements.
+#
+# Overrides sp_inside_for.
+sp_inside_for_close = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '((' or '))' of control statements.
+sp_sparen_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after ')' of control statements.
+sp_after_sparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and '{' of control statements.
+sp_sparen_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'do' and '{'.
+sp_do_brace_open = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '}' and 'while'.
+sp_brace_close_while = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'while' and '('. Overrides sp_before_sparen.
+sp_while_paren_open = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space between 'invariant' and '('.
+sp_invariant_paren = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space after the ')' in 'invariant (C) c'.
+sp_after_invariant_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before empty statement ';' on 'if', 'for' and 'while'.
+sp_special_semi = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before ';'.
+#
+# Default: remove
+sp_before_semi = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space before ';' in non-empty 'for' statements.
+sp_before_semi_for = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a semicolon of an empty left part of a for
+# statement, as in 'for ( <here> ; ; )'.
+sp_before_semi_for_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the semicolons of an empty middle part of a for
+# statement, as in 'for ( ; <here> ; )'.
+sp_between_semi_for_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after ';', except when followed by a comment.
+#
+# Default: add
+sp_after_semi = add # ignore/add/remove/force/not_defined
+
+# Add or remove space after ';' in non-empty 'for' statements.
+#
+# Default: force
+sp_after_semi_for = force # ignore/add/remove/force/not_defined
+
+# Add or remove space after the final semicolon of an empty part of a for
+# statement, as in 'for ( ; ; <here> )'.
+sp_after_semi_for_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before '[' (except '[]').
+sp_before_square = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before '[' for a variable definition.
+#
+# Default: remove
+sp_before_vardef_square = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space before '[' for asm block.
+sp_before_square_asm_block = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before '[]'.
+sp_before_squares = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before C++17 structured bindings.
+sp_cpp_before_struct_binding = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside a non-empty '[' and ']'.
+sp_inside_square = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '[]'.
+# if empty.
+sp_inside_square_empty = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and
+# ']'. If set to ignore, sp_inside_square is used.
+sp_inside_square_oc_array = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.
+sp_after_comma = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.
+#
+# Default: remove
+sp_before_comma = remove # ignore/add/remove/force/not_defined
+
+# (C#, Vala) Add or remove space between ',' and ']' in multidimensional array type
+# like 'int[,,]'.
+sp_after_mdatype_commas = ignore # ignore/add/remove/force/not_defined
+
+# (C#, Vala) Add or remove space between '[' and ',' in multidimensional array type
+# like 'int[,,]'.
+sp_before_mdatype_commas = ignore # ignore/add/remove/force/not_defined
+
+# (C#, Vala) Add or remove space between ',' in multidimensional array type
+# like 'int[,,]'.
+sp_between_mdatype_commas = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between an open parenthesis and comma,
+# i.e. '(,' vs. '( ,'.
+#
+# Default: force
+sp_paren_comma = force # ignore/add/remove/force/not_defined
+
+# Add or remove space between a type and ':'.
+sp_type_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the variadic '...' when preceded by a
+# non-punctuator.
+# The value REMOVE will be overridden with FORCE
+sp_after_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before the variadic '...' when preceded by a
+# non-punctuator.
+# The value REMOVE will be overridden with FORCE
+sp_before_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a type and '...'.
+sp_type_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a '*' and '...'.
+sp_ptr_type_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and '...'.
+sp_paren_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '&&' and '...'.
+sp_byref_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and a qualifier such as 'const'.
+sp_paren_qualifier = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and 'noexcept'.
+sp_paren_noexcept = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after class ':'.
+sp_after_class_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before class ':'.
+sp_before_class_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after class constructor ':'.
+#
+# Default: add
+sp_after_constr_colon = add # ignore/add/remove/force/not_defined
+
+# Add or remove space before class constructor ':'.
+#
+# Default: add
+sp_before_constr_colon = add # ignore/add/remove/force/not_defined
+
+# Add or remove space before case ':'.
+#
+# Default: remove
+sp_before_case_colon = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'operator' and operator sign.
+sp_after_operator = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the operator symbol and the open parenthesis, as
+# in 'operator ++('.
+sp_after_operator_sym = ignore # ignore/add/remove/force/not_defined
+
+# Overrides sp_after_operator_sym when the operator has no arguments, as in
+# 'operator *()'.
+sp_after_operator_sym_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or
+# '(int)a' vs. '(int) a'.
+sp_after_cast = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove spaces inside cast parentheses.
+sp_inside_paren_cast = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the type and open parenthesis in a C++ cast,
+# i.e. 'int(exp)' vs. 'int (exp)'.
+sp_cpp_cast_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'sizeof' and '('.
+sp_sizeof_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'sizeof' and '...'.
+sp_sizeof_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'sizeof...' and '('.
+sp_sizeof_ellipsis_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '...' and a parameter pack.
+sp_ellipsis_parameter_pack = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a parameter pack and '...'.
+sp_parameter_pack_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'decltype' and '('.
+sp_decltype_paren = ignore # ignore/add/remove/force/not_defined
+
+# (Pawn) Add or remove space after the tag keyword.
+sp_after_tag = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside enum '{' and '}'.
+sp_inside_braces_enum = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside struct/union '{' and '}'.
+sp_inside_braces_struct = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'
+sp_inside_braces_oc_dict = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after open brace in an unnamed temporary
+# direct-list-initialization
+# if statement is a brace_init_lst
+# works only if sp_brace_brace is set to ignore.
+sp_after_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before close brace in an unnamed temporary
+# direct-list-initialization
+# if statement is a brace_init_lst
+# works only if sp_brace_brace is set to ignore.
+sp_before_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside an unnamed temporary direct-list-initialization
+# if statement is a brace_init_lst
+# works only if sp_brace_brace is set to ignore
+# works only if sp_before_type_brace_init_lst_close is set to ignore.
+sp_inside_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '{' and '}'.
+sp_inside_braces = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '{}'.
+# if empty.
+sp_inside_braces_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around trailing return operator '->'.
+sp_trailing_return = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between return type and function name. A minimum of 1
+# is forced except for pointer return types.
+sp_type_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between type and open brace of an unnamed temporary
+# direct-list-initialization.
+sp_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '(' on function declaration.
+sp_func_proto_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '()' on function declaration
+# if empty.
+sp_func_proto_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '(' with a typedef specifier.
+sp_func_type_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between alias name and '(' of a non-pointer function type typedef.
+sp_func_def_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '()' on function definition
+# if empty.
+sp_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside empty function '()'.
+# Overrides sp_after_angle unless use_sp_after_angle_always is set to true.
+sp_inside_fparens = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside function '(' and ')'.
+sp_inside_fparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside user functor '(' and ')'.
+sp_func_call_user_inside_rparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside empty functor '()'.
+# Overrides sp_after_angle unless use_sp_after_angle_always is set to true.
+sp_inside_rparens = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside functor '(' and ')'.
+sp_inside_rparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside the first parentheses in a function type, as in
+# 'void (*x)(...)'.
+sp_inside_tparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the ')' and '(' in a function type, as in
+# 'void (*x)(...)'.
+sp_after_tparen_close = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ']' and '(' when part of a function call.
+sp_square_fparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and '{' of function.
+sp_fparen_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and '{' of a function call in object
+# initialization.
+#
+# Overrides sp_fparen_brace.
+sp_fparen_brace_initializer = ignore # ignore/add/remove/force/not_defined
+
+# (Java) Add or remove space between ')' and '{{' of double brace initializer.
+sp_fparen_dbrace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '(' on function calls.
+sp_func_call_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '()' on function calls without
+# parameters. If set to ignore (the default), sp_func_call_paren is used.
+sp_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the user function name and '(' on function
+# calls. You need to set a keyword to be a user function in the config file,
+# like:
+# set func_call_user tr _ i18n
+sp_func_call_user_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside user function '(' and ')'.
+sp_func_call_user_inside_fparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between nested parentheses with user functions,
+# i.e. '((' vs. '( ('.
+sp_func_call_user_paren_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a constructor/destructor and the open
+# parenthesis.
+sp_func_class_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a constructor without parameters or destructor
+# and '()'.
+sp_func_class_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after 'return'.
+#
+# Default: force
+sp_return = force # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'return' and '('.
+sp_return_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'return' and '{'.
+sp_return_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '__attribute__' and '('.
+sp_attribute_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'defined' and '(' in '#if defined (FOO)'.
+sp_defined_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'throw' and '(' in 'throw (something)'.
+sp_throw_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'throw' and anything other than '(' as in
+# '@throw [...];'.
+sp_after_throw = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'catch' and '(' in 'catch (something) { }'.
+# If set to ignore, sp_before_sparen is used.
+sp_catch_paren = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between '@catch' and '('
+# in '@catch (something) { }'. If set to ignore, sp_catch_paren is used.
+sp_oc_catch_paren = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before Objective-C protocol list
+# as in '@protocol Protocol<here><Protocol_A>' or '@interface MyClass : NSObject<here><MyProtocol>'.
+sp_before_oc_proto_list = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between class name and '('
+# in '@interface className(categoryName)<ProtocolName>:BaseClass'
+sp_oc_classname_paren = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space between 'version' and '('
+# in 'version (something) { }'. If set to ignore, sp_before_sparen is used.
+sp_version_paren = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space between 'scope' and '('
+# in 'scope (something) { }'. If set to ignore, sp_before_sparen is used.
+sp_scope_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'super' and '(' in 'super (something)'.
+#
+# Default: remove
+sp_super_paren = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'this' and '(' in 'this (something)'.
+#
+# Default: remove
+sp_this_paren = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space between a macro name and its definition.
+sp_macro = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a macro function ')' and its definition.
+sp_macro_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'else' and '{' if on the same line.
+sp_else_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '}' and 'else' if on the same line.
+sp_brace_else = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '}' and the name of a typedef on the same line.
+sp_brace_typedef = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before the '{' of a 'catch' statement, if the '{' and
+# 'catch' are on the same line, as in 'catch (decl) <here> {'.
+sp_catch_brace = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before the '{' of a '@catch' statement, if the '{'
+# and '@catch' are on the same line, as in '@catch (decl) <here> {'.
+# If set to ignore, sp_catch_brace is used.
+sp_oc_catch_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '}' and 'catch' if on the same line.
+sp_brace_catch = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between '}' and '@catch' if on the same line.
+# If set to ignore, sp_brace_catch is used.
+sp_oc_brace_catch = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'finally' and '{' if on the same line.
+sp_finally_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '}' and 'finally' if on the same line.
+sp_brace_finally = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'try' and '{' if on the same line.
+sp_try_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between get/set and '{' if on the same line.
+sp_getset_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a variable and '{' for C++ uniform
+# initialization.
+sp_word_brace_init_lst = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a variable and '{' for a namespace.
+#
+# Default: add
+sp_word_brace_ns = add # ignore/add/remove/force/not_defined
+
+# Add or remove space before the '::' operator.
+sp_before_dc = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '::' operator.
+sp_after_dc = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove around the D named array initializer ':' operator.
+sp_d_array_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '!' (not) unary operator.
+#
+# Default: remove
+sp_not = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space between two '!' (not) unary operators.
+# If set to ignore, sp_not will be used.
+sp_not_not = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '~' (invert) unary operator.
+#
+# Default: remove
+sp_inv = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '&' (address-of) unary operator. This does not
+# affect the spacing after a '&' that is part of a type.
+#
+# Default: remove
+sp_addr = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space around the '.' or '->' operators.
+#
+# Default: remove
+sp_member = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '*' (dereference) unary operator. This does
+# not affect the spacing after a '*' that is part of a type.
+#
+# Default: remove
+sp_deref = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.
+#
+# Default: remove
+sp_sign = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space between '++' and '--' the word to which it is being
+# applied, as in '(--x)' or 'y++;'.
+#
+# Default: remove
+sp_incdec = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space before a backslash-newline at the end of a line.
+#
+# Default: add
+sp_before_nl_cont = add # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;'
+# or '+(int) bar;'.
+sp_after_oc_scope = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the colon in message specs,
+# i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.
+sp_after_oc_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before the colon in message specs,
+# i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.
+sp_before_oc_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the colon in immutable dictionary expression
+# 'NSDictionary *test = @{@"foo" :@"bar"};'.
+sp_after_oc_dict_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before the colon in immutable dictionary expression
+# 'NSDictionary *test = @{@"foo" :@"bar"};'.
+sp_before_oc_dict_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the colon in message specs,
+# i.e. '[object setValue:1];' vs. '[object setValue: 1];'.
+sp_after_send_oc_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before the colon in message specs,
+# i.e. '[object setValue:1];' vs. '[object setValue :1];'.
+sp_before_send_oc_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the (type) in message specs,
+# i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'.
+sp_after_oc_type = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the first (type) in message specs,
+# i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'.
+sp_after_oc_return_type = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between '@selector' and '(',
+# i.e. '@selector(msgName)' vs. '@selector (msgName)'.
+# Also applies to '@protocol()' constructs.
+sp_after_oc_at_sel = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between '@selector(x)' and the following word,
+# i.e. '@selector(foo) a:' vs. '@selector(foo)a:'.
+sp_after_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space inside '@selector' parentheses,
+# i.e. '@selector(foo)' vs. '@selector( foo )'.
+# Also applies to '@protocol()' constructs.
+sp_inside_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before a block pointer caret,
+# i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'.
+sp_before_oc_block_caret = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after a block pointer caret,
+# i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'.
+sp_after_oc_block_caret = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between the receiver and selector in a message,
+# as in '[receiver selector ...]'.
+sp_after_oc_msg_receiver = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after '@property'.
+sp_after_oc_property = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between '@synchronized' and the open parenthesis,
+# i.e. '@synchronized(foo)' vs. '@synchronized (foo)'.
+sp_after_oc_synchronized = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around the ':' in 'b ? t : f'.
+sp_cond_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before the ':' in 'b ? t : f'.
+#
+# Overrides sp_cond_colon.
+sp_cond_colon_before = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the ':' in 'b ? t : f'.
+#
+# Overrides sp_cond_colon.
+sp_cond_colon_after = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around the '?' in 'b ? t : f'.
+sp_cond_question = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before the '?' in 'b ? t : f'.
+#
+# Overrides sp_cond_question.
+sp_cond_question_before = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '?' in 'b ? t : f'.
+#
+# Overrides sp_cond_question.
+sp_cond_question_after = ignore # ignore/add/remove/force/not_defined
+
+# In the abbreviated ternary form '(a ?: b)', add or remove space between '?'
+# and ':'.
+#
+# Overrides all other sp_cond_* options.
+sp_cond_ternary_short = ignore # ignore/add/remove/force/not_defined
+
+# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make
+# sense here.
+sp_case_label = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space around the D '..' operator.
+sp_range = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after ':' in a Java/C++11 range-based 'for',
+# as in 'for (Type var : <here> expr)'.
+sp_after_for_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before ':' in a Java/C++11 range-based 'for',
+# as in 'for (Type var <here> : expr)'.
+sp_before_for_colon = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space between 'extern' and '(' as in 'extern <here> (C)'.
+sp_extern_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the opening of a C++ comment, as in '// <here> A'.
+sp_cmt_cpp_start = ignore # ignore/add/remove/force/not_defined
+
+# remove space after the '//' and the pvs command '-V1234',
+# only works with sp_cmt_cpp_start set to add or force.
+sp_cmt_cpp_pvs = false # true/false
+
+# remove space after the '//' and the command 'lint',
+# only works with sp_cmt_cpp_start set to add or force.
+sp_cmt_cpp_lint = false # true/false
+
+# Add or remove space in a C++ region marker comment, as in '// <here> BEGIN'.
+# A region marker is defined as a comment which is not preceded by other text
+# (i.e. the comment is the first non-whitespace on the line), and which starts
+# with either 'BEGIN' or 'END'.
+#
+# Overrides sp_cmt_cpp_start.
+sp_cmt_cpp_region = ignore # ignore/add/remove/force/not_defined
+
+# If true, space added with sp_cmt_cpp_start will be added after Doxygen
+# sequences like '///', '///<', '//!' and '//!<'.
+sp_cmt_cpp_doxygen = false # true/false
+
+# If true, space added with sp_cmt_cpp_start will be added after Qt translator
+# or meta-data comments like '//:', '//=', and '//~'.
+sp_cmt_cpp_qttr = false # true/false
+
+# Add or remove space between #else or #endif and a trailing comment.
+sp_endif_cmt = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after 'new', 'delete' and 'delete[]'.
+sp_after_new = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'new' and '(' in 'new()'.
+sp_between_new_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and type in 'new(foo) BAR'.
+sp_after_newop_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside parentheses of the new operator
+# as in 'new(foo) BAR'.
+sp_inside_newop_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the open parenthesis of the new operator,
+# as in 'new(foo) BAR'.
+#
+# Overrides sp_inside_newop_paren.
+sp_inside_newop_paren_open = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before the close parenthesis of the new operator,
+# as in 'new(foo) BAR'.
+#
+# Overrides sp_inside_newop_paren.
+sp_inside_newop_paren_close = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a trailing comment.
+sp_before_tr_cmt = ignore # ignore/add/remove/force/not_defined
+
+# Number of spaces before a trailing comment.
+sp_num_before_tr_cmt = 0 # unsigned number
+
+# Add or remove space before an embedded comment.
+#
+# Default: force
+sp_before_emb_cmt = force # ignore/add/remove/force/not_defined
+
+# Number of spaces before an embedded comment.
+#
+# Default: 1
+sp_num_before_emb_cmt = 1 # unsigned number
+
+# Add or remove space after an embedded comment.
+#
+# Default: force
+sp_after_emb_cmt = force # ignore/add/remove/force/not_defined
+
+# Number of spaces after an embedded comment.
+#
+# Default: 1
+sp_num_after_emb_cmt = 1 # unsigned number
+
+# (Java) Add or remove space between an annotation and the open parenthesis.
+sp_annotation_paren = ignore # ignore/add/remove/force/not_defined
+
+# If true, vbrace tokens are dropped to the previous token and skipped.
+sp_skip_vbrace_tokens = false # true/false
+
+# Add or remove space after 'noexcept'.
+sp_after_noexcept = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after '_'.
+sp_vala_after_translation = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a bit colon ':'.
+sp_before_bit_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a bit colon ':'.
+sp_after_bit_colon = ignore # ignore/add/remove/force/not_defined
+
+# If true, a <TAB> is inserted after #define.
+force_tab_after_define = false # true/false
+
+#
+# Indenting options
+#
+
+# The number of columns to indent per level. Usually 2, 3, 4, or 8.
+#
+# Default: 8
+indent_columns = 8 # unsigned number
+
+# Whether to ignore indent for the first continuation line. Subsequent
+# continuation lines will still be indented to match the first.
+indent_ignore_first_continue = false # true/false
+
+# The continuation indent. If non-zero, this overrides the indent of '(', '['
+# and '=' continuation indents. Negative values are OK; negative value is
+# absolute and not increased for each '(' or '[' level.
+#
+# For FreeBSD, this is set to 4.
+# Requires indent_ignore_first_continue=false.
+indent_continue = 0 # number
+
+# The continuation indent, only for class header line(s). If non-zero, this
+# overrides the indent of 'class' continuation indents.
+# Requires indent_ignore_first_continue=false.
+indent_continue_class_head = 0 # unsigned number
+
+# Whether to indent empty lines (i.e. lines which contain only spaces before
+# the newline character).
+indent_single_newlines = false # true/false
+
+# The continuation indent for func_*_param if they are true. If non-zero, this
+# overrides the indent.
+indent_param = 0 # unsigned number
+
+# How to use tabs when indenting code.
+#
+# 0: Spaces only
+# 1: Indent with tabs to brace level, align with spaces (default)
+# 2: Indent and align with tabs, using spaces when not on a tabstop
+#
+# Default: 1
+indent_with_tabs = 1 # unsigned number
+
+# Whether to indent comments that are not at a brace level with tabs on a
+# tabstop. Requires indent_with_tabs=2. If false, will use spaces.
+indent_cmt_with_tabs = false # true/false
+
+# Whether to indent strings broken by '\' so that they line up.
+indent_align_string = false # true/false
+
+# The number of spaces to indent multi-line XML strings.
+# Requires indent_align_string=true.
+indent_xml_string = 0 # unsigned number
+
+# Spaces to indent '{' from level.
+indent_brace = 0 # unsigned number
+
+# Whether braces are indented to the body level.
+indent_braces = false # true/false
+
+# Whether to disable indenting function braces if indent_braces=true.
+indent_braces_no_func = false # true/false
+
+# Whether to disable indenting class braces if indent_braces=true.
+indent_braces_no_class = false # true/false
+
+# Whether to disable indenting struct braces if indent_braces=true.
+indent_braces_no_struct = false # true/false
+
+# Whether to indent based on the size of the brace parent,
+# i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
+indent_brace_parent = false # true/false
+
+# Whether to indent based on the open parenthesis instead of the open brace
+# in '({\n'.
+indent_paren_open_brace = false # true/false
+
+# (C#) Whether to indent the brace of a C# delegate by another level.
+indent_cs_delegate_brace = false # true/false
+
+# (C#) Whether to indent a C# delegate (to handle delegates with no brace) by
+# another level.
+indent_cs_delegate_body = false # true/false
+
+# Whether to indent the body of a 'namespace'.
+indent_namespace = false # true/false
+
+# Whether to indent only the first namespace, and not any nested namespaces.
+# Requires indent_namespace=true.
+indent_namespace_single_indent = false # true/false
+
+# The number of spaces to indent a namespace block.
+# If set to zero, use the value indent_columns
+indent_namespace_level = 0 # unsigned number
+
+# If the body of the namespace is longer than this number, it won't be
+# indented. Requires indent_namespace=true. 0 means no limit.
+indent_namespace_limit = 0 # unsigned number
+
+# Whether to indent only in inner namespaces (nested in other namespaces).
+# Requires indent_namespace=true.
+indent_namespace_inner_only = false # true/false
+
+# Whether the 'extern "C"' body is indented.
+indent_extern = false # true/false
+
+# Whether the 'class' body is indented.
+indent_class = false # true/false
+
+# Whether to ignore indent for the leading base class colon.
+indent_ignore_before_class_colon = false # true/false
+
+# Additional indent before the leading base class colon.
+# Negative values decrease indent down to the first column.
+# Requires indent_ignore_before_class_colon=false and a newline break before
+# the colon (see pos_class_colon and nl_class_colon)
+indent_before_class_colon = 0 # number
+
+# Whether to indent the stuff after a leading base class colon.
+indent_class_colon = false # true/false
+
+# Whether to indent based on a class colon instead of the stuff after the
+# colon. Requires indent_class_colon=true.
+indent_class_on_colon = false # true/false
+
+# Whether to ignore indent for a leading class initializer colon.
+indent_ignore_before_constr_colon = false # true/false
+
+# Whether to indent the stuff after a leading class initializer colon.
+indent_constr_colon = false # true/false
+
+# Virtual indent from the ':' for leading member initializers.
+#
+# Default: 2
+indent_ctor_init_leading = 2 # unsigned number
+
+# Virtual indent from the ':' for following member initializers.
+#
+# Default: 2
+indent_ctor_init_following = 2 # unsigned number
+
+# Additional indent for constructor initializer list.
+# Negative values decrease indent down to the first column.
+indent_ctor_init = 0 # number
+
+# Whether to indent 'if' following 'else' as a new block under the 'else'.
+# If false, 'else\nif' is treated as 'else if' for indenting purposes.
+indent_else_if = false # true/false
+
+# Amount to indent variable declarations after a open brace.
+#
+# <0: Relative
+# >=0: Absolute
+indent_var_def_blk = 0 # number
+
+# Whether to indent continued variable declarations instead of aligning.
+indent_var_def_cont = false # true/false
+
+# How to indent continued shift expressions ('<<' and '>>').
+# Set align_left_shift=false when using this.
+# 0: Align shift operators instead of indenting them (default)
+# 1: Indent by one level
+# -1: Preserve original indentation
+indent_shift = 0 # number
+
+# Whether to force indentation of function definitions to start in column 1.
+indent_func_def_force_col1 = false # true/false
+
+# Whether to indent continued function call parameters one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_func_call_param = false # true/false
+
+# Whether to indent continued function definition parameters one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_func_def_param = false # true/false
+
+# for function definitions, only if indent_func_def_param is false
+# Allows to align params when appropriate and indent them when not
+# behave as if it was true if paren position is more than this value
+# if paren position is more than the option value
+indent_func_def_param_paren_pos_threshold = 0 # unsigned number
+
+# Whether to indent continued function call prototype one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_func_proto_param = false # true/false
+
+# Whether to indent continued function call declaration one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_func_class_param = false # true/false
+
+# Whether to indent continued class variable constructors one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_func_ctor_var_param = false # true/false
+
+# Whether to indent continued template parameter list one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_template_param = false # true/false
+
+# Double the indent for indent_func_xxx_param options.
+# Use both values of the options indent_columns and indent_param.
+indent_func_param_double = false # true/false
+
+# Indentation column for standalone 'const' qualifier on a function
+# prototype.
+indent_func_const = 0 # unsigned number
+
+# Indentation column for standalone 'throw' qualifier on a function
+# prototype.
+indent_func_throw = 0 # unsigned number
+
+# How to indent within a macro followed by a brace on the same line
+# This allows reducing the indent in macros that have (for example)
+# `do { ... } while (0)` blocks bracketing them.
+#
+# true: add an indent for the brace on the same line as the macro
+# false: do not add an indent for the brace on the same line as the macro
+#
+# Default: true
+indent_macro_brace = true # true/false
+
+# The number of spaces to indent a continued '->' or '.'.
+# Usually set to 0, 1, or indent_columns.
+indent_member = 0 # unsigned number
+
+# Whether lines broken at '.' or '->' should be indented by a single indent.
+# The indent_member option will not be effective if this is set to true.
+indent_member_single = false # true/false
+
+# Spaces to indent single line ('//') comments on lines before code.
+indent_single_line_comments_before = 0 # unsigned number
+
+# Spaces to indent single line ('//') comments on lines after code.
+indent_single_line_comments_after = 0 # unsigned number
+
+# When opening a paren for a control statement (if, for, while, etc), increase
+# the indent level by this value. Negative values decrease the indent level.
+indent_sparen_extra = 0 # number
+
+# Whether to indent trailing single line ('//') comments relative to the code
+# instead of trying to keep the same absolute column.
+indent_relative_single_line_comments = false # true/false
+
+# Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.
+# It might be wise to choose the same value for the option indent_case_brace.
+indent_switch_case = 0 # unsigned number
+
+# Spaces to indent the body of a 'switch' before any 'case'.
+# Usually the same as indent_columns or indent_switch_case.
+indent_switch_body = 0 # unsigned number
+
+# Whether to ignore indent for '{' following 'case'.
+indent_ignore_case_brace = false # true/false
+
+# Spaces to indent '{' from 'case'. By default, the brace will appear under
+# the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.
+# It might be wise to choose the same value for the option indent_switch_case.
+indent_case_brace = 0 # number
+
+# indent 'break' with 'case' from 'switch'.
+indent_switch_break_with_case = false # true/false
+
+# Whether to indent preprocessor statements inside of switch statements.
+#
+# Default: true
+indent_switch_pp = true # true/false
+
+# Spaces to shift the 'case' line, without affecting any other lines.
+# Usually 0.
+indent_case_shift = 0 # unsigned number
+
+# Whether to align comments before 'case' with the 'case'.
+#
+# Default: true
+indent_case_comment = true # true/false
+
+# Whether to indent comments not found in first column.
+#
+# Default: true
+indent_comment = true # true/false
+
+# Whether to indent comments found in first column.
+indent_col1_comment = false # true/false
+
+# Whether to indent multi string literal in first column.
+indent_col1_multi_string_literal = false # true/false
+
+# Align comments on adjacent lines that are this many columns apart or less.
+#
+# Default: 3
+indent_comment_align_thresh = 3 # unsigned number
+
+# Whether to ignore indent for goto labels.
+indent_ignore_label = false # true/false
+
+# How to indent goto labels. Requires indent_ignore_label=false.
+#
+# >0: Absolute column where 1 is the leftmost column
+# <=0: Subtract from brace indent
+#
+# Default: 1
+indent_label = 1 # number
+
+# How to indent access specifiers that are followed by a
+# colon.
+#
+# >0: Absolute column where 1 is the leftmost column
+# <=0: Subtract from brace indent
+#
+# Default: 1
+indent_access_spec = 1 # number
+
+# Whether to indent the code after an access specifier by one level.
+# If true, this option forces 'indent_access_spec=0'.
+indent_access_spec_body = false # true/false
+
+# If an open parenthesis is followed by a newline, whether to indent the next
+# line so that it lines up after the open parenthesis (not recommended).
+indent_paren_nl = false # true/false
+
+# How to indent a close parenthesis after a newline.
+#
+# 0: Indent to body level (default)
+# 1: Align under the open parenthesis
+# 2: Indent to the brace level
+# -1: Preserve original indentation
+indent_paren_close = 0 # number
+
+# Whether to indent the open parenthesis of a function definition,
+# if the parenthesis is on its own line.
+indent_paren_after_func_def = false # true/false
+
+# Whether to indent the open parenthesis of a function declaration,
+# if the parenthesis is on its own line.
+indent_paren_after_func_decl = false # true/false
+
+# Whether to indent the open parenthesis of a function call,
+# if the parenthesis is on its own line.
+indent_paren_after_func_call = false # true/false
+
+# How to indent a comma when inside braces.
+# 0: Indent by one level (default)
+# 1: Align under the open brace
+# -1: Preserve original indentation
+indent_comma_brace = 0 # number
+
+# How to indent a comma when inside parentheses.
+# 0: Indent by one level (default)
+# 1: Align under the open parenthesis
+# -1: Preserve original indentation
+indent_comma_paren = 0 # number
+
+# How to indent a Boolean operator when inside parentheses.
+# 0: Indent by one level (default)
+# 1: Align under the open parenthesis
+# -1: Preserve original indentation
+indent_bool_paren = 0 # number
+
+# Whether to ignore the indentation of a Boolean operator when outside
+# parentheses.
+indent_ignore_bool = false # true/false
+
+# Whether to ignore the indentation of an arithmetic operator.
+indent_ignore_arith = false # true/false
+
+# Whether to indent a semicolon when inside a for parenthesis.
+# If true, aligns under the open for parenthesis.
+indent_semicolon_for_paren = false # true/false
+
+# Whether to ignore the indentation of a semicolon outside of a 'for'
+# statement.
+indent_ignore_semicolon = false # true/false
+
+# Whether to align the first expression to following ones
+# if indent_bool_paren=1.
+indent_first_bool_expr = false # true/false
+
+# Whether to align the first expression to following ones
+# if indent_semicolon_for_paren=true.
+indent_first_for_expr = false # true/false
+
+# If an open square is followed by a newline, whether to indent the next line
+# so that it lines up after the open square (not recommended).
+indent_square_nl = false # true/false
+
+# (ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies.
+indent_preserve_sql = false # true/false
+
+# Whether to ignore the indentation of an assignment operator.
+indent_ignore_assign = false # true/false
+
+# Whether to align continued statements at the '='. If false or if the '=' is
+# followed by a newline, the next line is indent one tab.
+#
+# Default: true
+indent_align_assign = true # true/false
+
+# If true, the indentation of the chunks after a '=' sequence will be set at
+# LHS token indentation column before '='.
+indent_off_after_assign = false # true/false
+
+# Whether to align continued statements at the '('. If false or the '(' is
+# followed by a newline, the next line indent is one tab.
+#
+# Default: true
+indent_align_paren = true # true/false
+
+# (OC) Whether to indent Objective-C code inside message selectors.
+indent_oc_inside_msg_sel = false # true/false
+
+# (OC) Whether to indent Objective-C blocks at brace level instead of usual
+# rules.
+indent_oc_block = false # true/false
+
+# (OC) Indent for Objective-C blocks in a message relative to the parameter
+# name.
+#
+# =0: Use indent_oc_block rules
+# >0: Use specified number of spaces to indent
+indent_oc_block_msg = 0 # unsigned number
+
+# (OC) Minimum indent for subsequent parameters
+indent_oc_msg_colon = 0 # unsigned number
+
+# (OC) Whether to prioritize aligning with initial colon (and stripping spaces
+# from lines, if necessary).
+#
+# Default: true
+indent_oc_msg_prioritize_first_colon = true # true/false
+
+# (OC) Whether to indent blocks the way that Xcode does by default
+# (from the keyword if the parameter is on its own line; otherwise, from the
+# previous indentation level). Requires indent_oc_block_msg=true.
+indent_oc_block_msg_xcode_style = false # true/false
+
+# (OC) Whether to indent blocks from where the brace is, relative to a
+# message keyword. Requires indent_oc_block_msg=true.
+indent_oc_block_msg_from_keyword = false # true/false
+
+# (OC) Whether to indent blocks from where the brace is, relative to a message
+# colon. Requires indent_oc_block_msg=true.
+indent_oc_block_msg_from_colon = false # true/false
+
+# (OC) Whether to indent blocks from where the block caret is.
+# Requires indent_oc_block_msg=true.
+indent_oc_block_msg_from_caret = false # true/false
+
+# (OC) Whether to indent blocks from where the brace caret is.
+# Requires indent_oc_block_msg=true.
+indent_oc_block_msg_from_brace = false # true/false
+
+# When indenting after virtual brace open and newline add further spaces to
+# reach this minimum indent.
+indent_min_vbrace_open = 0 # unsigned number
+
+# Whether to add further spaces after regular indent to reach next tabstop
+# when indenting after virtual brace open and newline.
+indent_vbrace_open_on_tabstop = false # true/false
+
+# How to indent after a brace followed by another token (not a newline).
+# true: indent all contained lines to match the token
+# false: indent all contained lines to match the brace
+#
+# Default: true
+indent_token_after_brace = true # true/false
+
+# Whether to indent the body of a C++11 lambda.
+indent_cpp_lambda_body = false # true/false
+
+# How to indent compound literals that are being returned.
+# true: add both the indent from return & the compound literal open brace
+# (i.e. 2 indent levels)
+# false: only indent 1 level, don't add the indent for the open brace, only
+# add the indent for the return.
+#
+# Default: true
+indent_compound_literal_return = true # true/false
+
+# (C#) Whether to indent a 'using' block if no braces are used.
+#
+# Default: true
+indent_using_block = true # true/false
+
+# How to indent the continuation of ternary operator.
+#
+# 0: Off (default)
+# 1: When the `if_false` is a continuation, indent it under the `if_true` branch
+# 2: When the `:` is a continuation, indent it under `?`
+indent_ternary_operator = 0 # unsigned number
+
+# Whether to indent the statements inside ternary operator.
+indent_inside_ternary_operator = false # true/false
+
+# If true, the indentation of the chunks after a `return` sequence will be set at return indentation column.
+indent_off_after_return = false # true/false
+
+# If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column.
+indent_off_after_return_new = false # true/false
+
+# If true, the tokens after return are indented with regular single indentation. By default (false) the indentation is after the return token.
+indent_single_after_return = false # true/false
+
+# Whether to ignore indent and alignment for 'asm' blocks (i.e. assume they
+# have their own indentation).
+indent_ignore_asm_block = false # true/false
+
+# Don't indent the close parenthesis of a function definition,
+# if the parenthesis is on its own line.
+donot_indent_func_def_close_paren = false # true/false
+
+#
+# Newline adding and removing options
+#
+
+# Whether to collapse empty blocks between '{' and '}' except for functions.
+# Use nl_collapse_empty_body_functions to specify how empty function braces
+# should be formatted.
+nl_collapse_empty_body = false # true/false
+
+# Whether to collapse empty blocks between '{' and '}' for functions only.
+# If true, overrides nl_inside_empty_func.
+nl_collapse_empty_body_functions = false # true/false
+
+# Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'.
+nl_assign_leave_one_liners = false # true/false
+
+# Don't split one-line braced statements inside a 'class xx { }' body.
+nl_class_leave_one_liners = false # true/false
+
+# Don't split one-line enums, as in 'enum foo { BAR = 15 };'
+nl_enum_leave_one_liners = false # true/false
+
+# Don't split one-line get or set functions.
+nl_getset_leave_one_liners = false # true/false
+
+# (C#) Don't split one-line property get or set functions.
+nl_cs_property_leave_one_liners = false # true/false
+
+# Don't split one-line function definitions, as in 'int foo() { return 0; }'.
+# might modify nl_func_type_name
+nl_func_leave_one_liners = false # true/false
+
+# Don't split one-line C++11 lambdas, as in '[]() { return 0; }'.
+nl_cpp_lambda_leave_one_liners = false # true/false
+
+# Don't split one-line if/else statements, as in 'if(...) b++;'.
+nl_if_leave_one_liners = false # true/false
+
+# Don't split one-line while statements, as in 'while(...) b++;'.
+nl_while_leave_one_liners = false # true/false
+
+# Don't split one-line do statements, as in 'do { b++; } while(...);'.
+nl_do_leave_one_liners = false # true/false
+
+# Don't split one-line for statements, as in 'for(...) b++;'.
+nl_for_leave_one_liners = false # true/false
+
+# (OC) Don't split one-line Objective-C messages.
+nl_oc_msg_leave_one_liner = false # true/false
+
+# (OC) Add or remove newline between method declaration and '{'.
+nl_oc_mdef_brace = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove newline between Objective-C block signature and '{'.
+nl_oc_block_brace = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove blank line before '@interface' statement.
+nl_oc_before_interface = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove blank line before '@implementation' statement.
+nl_oc_before_implementation = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove blank line before '@end' statement.
+nl_oc_before_end = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove newline between '@interface' and '{'.
+nl_oc_interface_brace = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove newline between '@implementation' and '{'.
+nl_oc_implementation_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newlines at the start of the file.
+nl_start_of_file = ignore # ignore/add/remove/force/not_defined
+
+# The minimum 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 # unsigned number
+
+# Add or remove newline at the end of the file.
+nl_end_of_file = ignore # ignore/add/remove/force/not_defined
+
+# The minimum 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 = 0 # unsigned number
+
+# Add or remove newline between '=' and '{'.
+nl_assign_brace = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove newline between '=' and '['.
+nl_assign_square = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '[]' and '{'.
+nl_tsquare_brace = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove newline after '= ['. Will also affect the newline before
+# the ']'.
+nl_after_square_assign = ignore # ignore/add/remove/force/not_defined
+
+# 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/not_defined
+
+# Add or remove newline between 'enum' and '{'.
+nl_enum_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'enum' and 'class'.
+nl_enum_class = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'enum class' and the identifier.
+nl_enum_class_identifier = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'enum class' type and ':'.
+nl_enum_identifier_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'enum class identifier :' and type.
+nl_enum_colon_type = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'struct and '{'.
+nl_struct_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'union' and '{'.
+nl_union_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'if' and '{'.
+nl_if_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and 'else'.
+nl_brace_else = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'else if' and '{'. If set to ignore,
+# nl_if_brace is used instead.
+nl_elseif_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'else' and '{'.
+nl_else_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'else' and 'if'.
+nl_else_if = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before '{' opening brace
+nl_before_opening_brace_func_class_def = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before 'if'/'else if' closing parenthesis.
+nl_before_if_closing_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and 'finally'.
+nl_brace_finally = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'finally' and '{'.
+nl_finally_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'try' and '{'.
+nl_try_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between get/set and '{'.
+nl_getset_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'for' and '{'.
+nl_for_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before the '{' of a 'catch' statement, as in
+# 'catch (decl) <here> {'.
+nl_catch_brace = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove newline before the '{' of a '@catch' statement, as in
+# '@catch (decl) <here> {'. If set to ignore, nl_catch_brace is used.
+nl_oc_catch_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and 'catch'.
+nl_brace_catch = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove newline between '}' and '@catch'. If set to ignore,
+# nl_brace_catch is used.
+nl_oc_brace_catch = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and ']'.
+nl_brace_square = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and ')' in a function invocation.
+nl_brace_fparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'while' and '{'.
+nl_while_brace = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove newline between 'scope (x)' and '{'.
+nl_scope_brace = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove newline between 'unittest' and '{'.
+nl_unittest_brace = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove newline between 'version (x)' and '{'.
+nl_version_brace = ignore # ignore/add/remove/force/not_defined
+
+# (C#) Add or remove newline between 'using' and '{'.
+nl_using_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between two open or close braces. Due to general
+# newline/brace handling, REMOVE may not work.
+nl_brace_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'do' and '{'.
+nl_do_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and 'while' of 'do' statement.
+nl_brace_while = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'switch' and '{'.
+nl_switch_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'synchronized' and '{'.
+nl_synchronized_brace = ignore # ignore/add/remove/force/not_defined
+
+# 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 = false # true/false
+
+# Add a newline after '(' if an if/for/while/switch condition spans multiple
+# lines
+nl_multi_line_sparen_open = ignore # ignore/add/remove/force/not_defined
+
+# Add a newline before ')' if an if/for/while/switch condition spans multiple
+# lines. Overrides nl_before_if_closing_paren if both are specified.
+nl_multi_line_sparen_close = ignore # ignore/add/remove/force/not_defined
+
+# Force a newline in a define after the macro name for multi-line defines.
+nl_multi_line_define = false # true/false
+
+# Whether to add a newline before 'case', and a blank line before a 'case'
+# statement that follows a ';' or '}'.
+nl_before_case = false # true/false
+
+# Whether to add a newline after a 'case' statement.
+nl_after_case = false # true/false
+
+# Add or remove newline between a case ':' and '{'.
+#
+# Overrides nl_after_case.
+nl_case_colon_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between ')' and 'throw'.
+nl_before_throw = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'namespace' and '{'.
+nl_namespace_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template class.
+nl_template_class = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template class declaration.
+#
+# Overrides nl_template_class.
+nl_template_class_decl = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<>' of a specialized class declaration.
+#
+# Overrides nl_template_class_decl.
+nl_template_class_decl_special = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template class definition.
+#
+# Overrides nl_template_class.
+nl_template_class_def = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<>' of a specialized class definition.
+#
+# Overrides nl_template_class_def.
+nl_template_class_def_special = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template function.
+nl_template_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template function
+# declaration.
+#
+# Overrides nl_template_func.
+nl_template_func_decl = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<>' of a specialized function
+# declaration.
+#
+# Overrides nl_template_func_decl.
+nl_template_func_decl_special = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template function
+# definition.
+#
+# Overrides nl_template_func.
+nl_template_func_def = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<>' of a specialized function
+# definition.
+#
+# Overrides nl_template_func_def.
+nl_template_func_def_special = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template variable.
+nl_template_var = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'template<...>' and 'using' of a templated
+# type alias.
+nl_template_using = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'class' and '{'.
+nl_class_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before or after (depending on pos_class_comma,
+# may not be IGNORE) each',' in the base class list.
+nl_class_init_args = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after each ',' in the constructor member
+# initialization. Related to nl_constr_colon, pos_constr_colon and
+# pos_constr_comma.
+nl_constr_init_args = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before first element, after comma, and after last
+# element, in 'enum'.
+nl_enum_own_lines = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between return type and function name in a function
+# definition.
+# might be modified by nl_func_leave_one_liners
+nl_func_type_name = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between return type and function name inside a class
+# definition. If set to ignore, nl_func_type_name or nl_func_proto_type_name
+# is used instead.
+nl_func_type_name_class = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between class specification and '::'
+# in 'void A::f() { }'. Only appears in separate member implementation (does
+# not appear with in-line implementation).
+nl_func_class_scope = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between function scope and name, as in
+# 'void A :: <here> f() { }'.
+nl_func_scope_name = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between return type and function name in a prototype.
+nl_func_proto_type_name = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between a function name and the opening '(' in the
+# declaration.
+nl_func_paren = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_paren for functions with no parameters.
+nl_func_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between a function name and the opening '(' in the
+# definition.
+nl_func_def_paren = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_def_paren for functions with no parameters.
+nl_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between a function name and the opening '(' in the
+# call.
+nl_func_call_paren = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_call_paren for functions with no parameters.
+nl_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after '(' in a function declaration.
+nl_func_decl_start = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after '(' in a function definition.
+nl_func_def_start = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_decl_start when there is only one parameter.
+nl_func_decl_start_single = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_def_start when there is only one parameter.
+nl_func_def_start_single = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after '(' in a function declaration if '(' and ')'
+# are in different lines. If false, nl_func_decl_start is used instead.
+nl_func_decl_start_multi_line = false # true/false
+
+# Whether to add a newline after '(' in a function definition if '(' and ')'
+# are in different lines. If false, nl_func_def_start is used instead.
+nl_func_def_start_multi_line = false # true/false
+
+# Add or remove newline after each ',' in a function declaration.
+nl_func_decl_args = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after each ',' in a function definition.
+nl_func_def_args = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after each ',' in a function call.
+nl_func_call_args = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after each ',' in a function declaration if '('
+# and ')' are in different lines. If false, nl_func_decl_args is used instead.
+nl_func_decl_args_multi_line = false # true/false
+
+# Whether to add a newline after each ',' in a function definition if '('
+# and ')' are in different lines. If false, nl_func_def_args is used instead.
+nl_func_def_args_multi_line = false # true/false
+
+# Add or remove newline before the ')' in a function declaration.
+nl_func_decl_end = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before the ')' in a function definition.
+nl_func_def_end = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_decl_end when there is only one parameter.
+nl_func_decl_end_single = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_def_end when there is only one parameter.
+nl_func_def_end_single = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline before ')' in a function declaration if '(' and ')'
+# are in different lines. If false, nl_func_decl_end is used instead.
+nl_func_decl_end_multi_line = false # true/false
+
+# Whether to add a newline before ')' in a function definition if '(' and ')'
+# are in different lines. If false, nl_func_def_end is used instead.
+nl_func_def_end_multi_line = false # true/false
+
+# Add or remove newline between '()' in a function declaration.
+nl_func_decl_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '()' in a function definition.
+nl_func_def_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '()' in a function call.
+nl_func_call_empty = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after '(' in a function call,
+# has preference over nl_func_call_start_multi_line.
+nl_func_call_start = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline before ')' in a function call.
+nl_func_call_end = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after '(' in a function call if '(' and ')' are in
+# different lines.
+nl_func_call_start_multi_line = false # true/false
+
+# Whether to add a newline after each ',' in a function call if '(' and ')'
+# are in different lines.
+nl_func_call_args_multi_line = false # true/false
+
+# Whether to add a newline before ')' in a function call if '(' and ')' are in
+# different lines.
+nl_func_call_end_multi_line = false # true/false
+
+# Whether to respect nl_func_call_XXX option in case of closure args.
+nl_func_call_args_multi_line_ignore_closures = false # true/false
+
+# Whether to add a newline after '<' of a template parameter list.
+nl_template_start = false # true/false
+
+# Whether to add a newline after each ',' in a template parameter list.
+nl_template_args = false # true/false
+
+# Whether to add a newline before '>' of a template parameter list.
+nl_template_end = false # true/false
+
+# (OC) Whether to put each Objective-C message parameter on a separate line.
+# See nl_oc_msg_leave_one_liner.
+nl_oc_msg_args = false # true/false
+
+# (OC) Minimum number of Objective-C message parameters before applying nl_oc_msg_args.
+nl_oc_msg_args_min_params = 0 # unsigned number
+
+# (OC) Max code width of Objective-C message before applying nl_oc_msg_args.
+nl_oc_msg_args_max_code_width = 0 # unsigned number
+
+# Add or remove newline between function signature and '{'.
+nl_fdef_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between function signature and '{',
+# if signature ends with ')'. Overrides nl_fdef_brace.
+nl_fdef_brace_cond = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between C++11 lambda signature and '{'.
+nl_cpp_ldef_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'return' and the return expression.
+nl_return_expr = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'throw' and the throw expression.
+nl_throw_expr = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after semicolons, except in 'for' statements.
+nl_after_semicolon = false # true/false
+
+# (Java) Add or remove newline between the ')' and '{{' of the double brace
+# initializer.
+nl_paren_dbrace_open = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after the type in an unnamed temporary
+# direct-list-initialization, better:
+# before a direct-list-initialization.
+nl_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after the open brace in an unnamed temporary
+# direct-list-initialization.
+nl_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline before the close brace in an unnamed temporary
+# direct-list-initialization.
+nl_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline before '{'.
+nl_before_brace_open = false # true/false
+
+# Whether to add a newline after '{'.
+nl_after_brace_open = false # true/false
+
+# Whether to add a newline between the open brace and a trailing single-line
+# comment. Requires nl_after_brace_open=true.
+nl_after_brace_open_cmt = false # true/false
+
+# Whether to add a newline after a virtual brace open with a non-empty body.
+# These occur in un-braced if/while/do/for statement bodies.
+nl_after_vbrace_open = false # true/false
+
+# Whether to add a newline after a virtual brace open with an empty body.
+# These occur in un-braced if/while/do/for statement bodies.
+nl_after_vbrace_open_empty = false # true/false
+
+# Whether to add a newline after '}'. Does not apply if followed by a
+# necessary ';'.
+nl_after_brace_close = false # true/false
+
+# Whether to add a newline after a virtual brace close,
+# as in 'if (foo) a++; <here> return;'.
+nl_after_vbrace_close = false # true/false
+
+# Add or remove newline between the close brace and identifier,
+# as in 'struct { int a; } <here> b;'. Affects enumerations, unions and
+# structures. If set to ignore, uses nl_after_brace_close.
+nl_brace_struct_var = ignore # ignore/add/remove/force/not_defined
+
+# Whether to alter newlines in '#define' macros.
+nl_define_macro = false # true/false
+
+# Whether to alter newlines between consecutive parenthesis closes. The number
+# of closing parentheses in a line will depend on respective open parenthesis
+# lines.
+nl_squeeze_paren_close = false # true/false
+
+# Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and
+# '#endif'. Does not affect top-level #ifdefs.
+nl_squeeze_ifdef = false # true/false
+
+# Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well.
+nl_squeeze_ifdef_top_level = false # true/false
+
+# Add or remove blank line before 'if'.
+nl_before_if = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'if' statement. Add/Force work only if the
+# next token is not a closing brace.
+nl_after_if = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line before 'for'.
+nl_before_for = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'for' statement.
+nl_after_for = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line before 'while'.
+nl_before_while = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'while' statement.
+nl_after_while = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line before 'switch'.
+nl_before_switch = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'switch' statement.
+nl_after_switch = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line before 'synchronized'.
+nl_before_synchronized = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'synchronized' statement.
+nl_after_synchronized = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line before 'do'.
+nl_before_do = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'do/while' statement.
+nl_after_do = ignore # ignore/add/remove/force/not_defined
+
+# Ignore nl_before_{if,for,switch,do,synchronized} if the control
+# statement is immediately after a case statement.
+# if nl_before_{if,for,switch,do} is set to remove, this option
+# does nothing.
+nl_before_ignore_after_case = false # true/false
+
+# Whether to put a blank line before 'return' statements, unless after an open
+# brace.
+nl_before_return = false # true/false
+
+# Whether to put a blank line after 'return' statements, unless followed by a
+# close brace.
+nl_after_return = false # true/false
+
+# Whether to put a blank line before a member '.' or '->' operators.
+nl_before_member = ignore # ignore/add/remove/force/not_defined
+
+# (Java) Whether to put a blank line after a member '.' or '->' operators.
+nl_after_member = ignore # ignore/add/remove/force/not_defined
+
+# Whether to double-space commented-entries in 'struct'/'union'/'enum'.
+nl_ds_struct_enum_cmt = false # true/false
+
+# Whether to force a newline before '}' of a 'struct'/'union'/'enum'.
+# (Lower priority than eat_blanks_before_close_brace.)
+nl_ds_struct_enum_close_brace = false # true/false
+
+# Add or remove newline before or after (depending on pos_class_colon) a class
+# colon, as in 'class Foo <here> : <or here> public Bar'.
+nl_class_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline around a class constructor colon. The exact position
+# depends on nl_constr_init_args, pos_constr_colon and pos_constr_comma.
+nl_constr_colon = ignore # ignore/add/remove/force/not_defined
+
+# Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }'
+# into a single line. If true, prevents other brace newline rules from turning
+# such code into four lines. If true, it also preserves one-liner namespaces.
+nl_namespace_two_to_one_liner = false # true/false
+
+# Whether to remove a newline in simple unbraced if statements, turning them
+# into one-liners, as in 'if(b)\n i++;' => 'if(b) i++;'.
+nl_create_if_one_liner = false # true/false
+
+# Whether to remove a newline in simple unbraced for statements, turning them
+# into one-liners, as in 'for (...)\n stmt;' => 'for (...) stmt;'.
+nl_create_for_one_liner = false # true/false
+
+# Whether to remove a newline in simple unbraced while statements, turning
+# them into one-liners, as in 'while (expr)\n stmt;' => 'while (expr) stmt;'.
+nl_create_while_one_liner = false # true/false
+
+# Whether to collapse a function definition whose body (not counting braces)
+# is only one line so that the entire definition (prototype, braces, body) is
+# a single line.
+nl_create_func_def_one_liner = false # true/false
+
+# Whether to split one-line simple list definitions into three lines by
+# adding newlines, as in 'int a[12] = { <here> 0 <here> };'.
+nl_create_list_one_liner = false # true/false
+
+# Whether to split one-line simple unbraced if statements into two lines by
+# adding a newline, as in 'if(b) <here> i++;'.
+nl_split_if_one_liner = false # true/false
+
+# Whether to split one-line simple unbraced for statements into two lines by
+# adding a newline, as in 'for (...) <here> stmt;'.
+nl_split_for_one_liner = false # true/false
+
+# Whether to split one-line simple unbraced while statements into two lines by
+# adding a newline, as in 'while (expr) <here> stmt;'.
+nl_split_while_one_liner = false # true/false
+
+# Don't add a newline before a cpp-comment in a parameter list of a function
+# call.
+donot_add_nl_before_cpp_comment = false # true/false
+
+#
+# Blank line options
+#
+
+# The maximum number of consecutive newlines (3 = 2 blank lines).
+nl_max = 0 # unsigned number
+
+# The maximum number of consecutive newlines in a function.
+nl_max_blank_in_func = 0 # unsigned number
+
+# The number of newlines inside an empty function body.
+# This option overrides eat_blanks_after_open_brace and
+# eat_blanks_before_close_brace, but is ignored when
+# nl_collapse_empty_body_functions=true
+nl_inside_empty_func = 0 # unsigned number
+
+# The number of newlines before a function prototype.
+nl_before_func_body_proto = 0 # unsigned number
+
+# The number of newlines before a multi-line function definition. Where
+# applicable, this option is overridden with eat_blanks_after_open_brace=true
+nl_before_func_body_def = 0 # unsigned number
+
+# The number of newlines before a class constructor/destructor prototype.
+nl_before_func_class_proto = 0 # unsigned number
+
+# The number of newlines before a class constructor/destructor definition.
+nl_before_func_class_def = 0 # unsigned number
+
+# The number of newlines after a function prototype.
+nl_after_func_proto = 0 # unsigned number
+
+# The number of newlines after a function prototype, if not followed by
+# another function prototype.
+nl_after_func_proto_group = 0 # unsigned number
+
+# The number of newlines after a class constructor/destructor prototype.
+nl_after_func_class_proto = 0 # unsigned number
+
+# The number of newlines after a class constructor/destructor prototype,
+# if not followed by another constructor/destructor prototype.
+nl_after_func_class_proto_group = 0 # unsigned number
+
+# Whether one-line method definitions inside a class body should be treated
+# as if they were prototypes for the purposes of adding newlines.
+#
+# Requires nl_class_leave_one_liners=true. Overrides nl_before_func_body_def
+# and nl_before_func_class_def for one-liners.
+nl_class_leave_one_liner_groups = false # true/false
+
+# The number of newlines after '}' of a multi-line function body.
+#
+# Overrides nl_min_after_func_body and nl_max_after_func_body.
+nl_after_func_body = 0 # unsigned number
+
+# The minimum number of newlines after '}' of a multi-line function body.
+#
+# Only works when nl_after_func_body is 0.
+nl_min_after_func_body = 0 # unsigned number
+
+# The maximum number of newlines after '}' of a multi-line function body.
+#
+# Only works when nl_after_func_body is 0.
+# Takes precedence over nl_min_after_func_body.
+nl_max_after_func_body = 0 # unsigned number
+
+# The number of newlines after '}' of a multi-line function body in a class
+# declaration. Also affects class constructors/destructors.
+#
+# Overrides nl_after_func_body.
+nl_after_func_body_class = 0 # unsigned number
+
+# The number of newlines after '}' of a single line function body. Also
+# affects class constructors/destructors.
+#
+# Overrides nl_after_func_body and nl_after_func_body_class.
+nl_after_func_body_one_liner = 0 # unsigned number
+
+# The number of newlines before a block of typedefs. If nl_after_access_spec
+# is non-zero, that option takes precedence.
+#
+# 0: No change (default).
+nl_typedef_blk_start = 0 # unsigned number
+
+# The number of newlines after a block of typedefs.
+#
+# 0: No change (default).
+nl_typedef_blk_end = 0 # unsigned number
+
+# The maximum number of consecutive newlines within a block of typedefs.
+#
+# 0: No change (default).
+nl_typedef_blk_in = 0 # unsigned number
+
+# The minimum number of blank lines after a block of variable definitions
+# at the top of a function body. If any preprocessor directives appear
+# between the opening brace of the function and the variable block, then
+# it is considered as not at the top of the function.Newlines are added
+# before trailing preprocessor directives, if any exist.
+#
+# 0: No change (default).
+nl_var_def_blk_end_func_top = 0 # unsigned number
+
+# The minimum number of empty newlines before a block of variable definitions
+# not at the top of a function body. If nl_after_access_spec is non-zero,
+# that option takes precedence. Newlines are not added at the top of the
+# file or just after an opening brace. Newlines are added above any
+# preprocessor directives before the block.
+#
+# 0: No change (default).
+nl_var_def_blk_start = 0 # unsigned number
+
+# The minimum number of empty newlines after a block of variable definitions
+# not at the top of a function body. Newlines are not added if the block
+# is at the bottom of the file or just before a preprocessor directive.
+#
+# 0: No change (default).
+nl_var_def_blk_end = 0 # unsigned number
+
+# The maximum number of consecutive newlines within a block of variable
+# definitions.
+#
+# 0: No change (default).
+nl_var_def_blk_in = 0 # unsigned 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 # unsigned 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 # unsigned 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 # unsigned number
+
+# Whether to force a newline after a multi-line comment.
+nl_after_multiline_comment = false # true/false
+
+# Whether to force a newline after a label's colon.
+nl_after_label_colon = false # true/false
+
+# The number of newlines before a struct definition.
+nl_before_struct = 0 # unsigned number
+
+# The number of newlines after '}' or ';' of a struct/enum/union definition.
+nl_after_struct = 0 # unsigned number
+
+# The number of newlines before a class definition.
+nl_before_class = 0 # unsigned number
+
+# The number of newlines after '}' or ';' of a class definition.
+nl_after_class = 0 # unsigned number
+
+# The number of newlines before a namespace.
+nl_before_namespace = 0 # unsigned number
+
+# The number of newlines after '{' of a namespace. This also adds newlines
+# before the matching '}'.
+#
+# 0: Apply eat_blanks_after_open_brace or eat_blanks_before_close_brace if
+# applicable, otherwise no change.
+#
+# Overrides eat_blanks_after_open_brace and eat_blanks_before_close_brace.
+nl_inside_namespace = 0 # unsigned number
+
+# The number of newlines after '}' of a namespace.
+nl_after_namespace = 0 # unsigned number
+
+# The number of newlines before an access specifier label. This also includes
+# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
+# if after a brace open.
+#
+# 0: No change (default).
+nl_before_access_spec = 0 # unsigned number
+
+# The number of newlines after an access specifier label. This also includes
+# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
+# if after a brace open.
+#
+# 0: No change (default).
+#
+# Overrides nl_typedef_blk_start and nl_var_def_blk_start.
+nl_after_access_spec = 0 # unsigned number
+
+# The number of newlines between a function definition and the function
+# comment, as in '// comment\n <here> void foo() {...}'.
+#
+# 0: No change (default).
+nl_comment_func_def = 0 # unsigned number
+
+# The number of newlines after a try-catch-finally block that isn't followed
+# by a brace close.
+#
+# 0: No change (default).
+nl_after_try_catch_finally = 0 # unsigned number
+
+# (C#) The number of newlines before and after a property, indexer or event
+# declaration.
+#
+# 0: No change (default).
+nl_around_cs_property = 0 # unsigned number
+
+# (C#) The number of newlines between the get/set/add/remove handlers.
+#
+# 0: No change (default).
+nl_between_get_set = 0 # unsigned number
+
+# (C#) Add or remove newline between property and the '{'.
+nl_property_brace = ignore # ignore/add/remove/force/not_defined
+
+# Whether to remove blank lines after '{'.
+eat_blanks_after_open_brace = false # true/false
+
+# Whether to remove blank lines before '}'.
+eat_blanks_before_close_brace = false # true/false
+
+# How aggressively to remove extra newlines not in preprocessor.
+#
+# 0: No change (default)
+# 1: Remove most newlines not handled by other config
+# 2: Remove all newlines and reformat completely by config
+nl_remove_extra_newlines = 0 # unsigned number
+
+# (Java) Add or remove newline after an annotation statement. Only affects
+# annotations that are after a newline.
+nl_after_annotation = ignore # ignore/add/remove/force/not_defined
+
+# (Java) Add or remove newline between two annotations.
+nl_between_annotation = ignore # ignore/add/remove/force/not_defined
+
+# The number of newlines before a whole-file #ifdef.
+#
+# 0: No change (default).
+nl_before_whole_file_ifdef = 0 # unsigned number
+
+# The number of newlines after a whole-file #ifdef.
+#
+# 0: No change (default).
+nl_after_whole_file_ifdef = 0 # unsigned number
+
+# The number of newlines before a whole-file #endif.
+#
+# 0: No change (default).
+nl_before_whole_file_endif = 0 # unsigned number
+
+# The number of newlines after a whole-file #endif.
+#
+# 0: No change (default).
+nl_after_whole_file_endif = 0 # unsigned number
+
+#
+# Positioning options
+#
+
+# The position of arithmetic operators in wrapped expressions.
+pos_arith = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of assignment in wrapped expressions. Do not affect '='
+# followed by '{'.
+pos_assign = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of Boolean operators in wrapped expressions.
+pos_bool = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of comparison operators in wrapped expressions.
+pos_compare = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of conditional operators, as in the '?' and ':' of
+# 'expr ? stmt : stmt', in wrapped expressions.
+pos_conditional = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of the comma in wrapped expressions.
+pos_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of the comma in enum entries.
+pos_enum_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of the comma in the base class list if there is more than one
+# line. Affects nl_class_init_args.
+pos_class_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of the comma in the constructor initialization list.
+# Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon.
+pos_constr_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of trailing/leading class colon, between class and base class
+# list. Affects nl_class_colon.
+pos_class_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of colons between constructor and member initialization.
+# Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.
+pos_constr_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of shift operators in wrapped expressions.
+pos_shift = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+#
+# Line splitting options
+#
+
+# Try to limit code width to N columns.
+code_width = 0 # unsigned number
+
+# Whether to fully split long 'for' statements at semi-colons.
+ls_for_split_full = false # true/false
+
+# Whether to fully split long function prototypes/calls at commas.
+# The option ls_code_width has priority over the option ls_func_split_full.
+ls_func_split_full = false # true/false
+
+# Whether to split lines as close to code_width as possible and ignore some
+# groupings.
+# The option ls_code_width has priority over the option ls_func_split_full.
+ls_code_width = false # true/false
+
+#
+# Code alignment options (not left column spaces/tabs)
+#
+
+# Whether to keep non-indenting tabs.
+align_keep_tabs = false # true/false
+
+# Whether to use tabs for aligning.
+align_with_tabs = false # true/false
+
+# Whether to bump out to the next tab when aligning.
+align_on_tabstop = false # true/false
+
+# Whether to right-align numbers.
+align_number_right = false # true/false
+
+# Whether to keep whitespace not required for alignment.
+align_keep_extra_space = false # true/false
+
+# Whether to align variable definitions in prototypes and functions.
+align_func_params = false # true/false
+
+# The span for aligning parameter definitions in function on parameter name.
+#
+# 0: Don't align (default).
+align_func_params_span = 0 # unsigned number
+
+# The threshold for aligning function parameter definitions.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_func_params_thresh = 0 # number
+
+# The gap for aligning function parameter definitions.
+align_func_params_gap = 0 # unsigned number
+
+# The span for aligning constructor value.
+#
+# 0: Don't align (default).
+align_constr_value_span = 0 # unsigned number
+
+# The threshold for aligning constructor value.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_constr_value_thresh = 0 # number
+
+# The gap for aligning constructor value.
+align_constr_value_gap = 0 # unsigned number
+
+# Whether to align parameters in single-line functions that have the same
+# name. The function names must already be aligned with each other.
+align_same_func_call_params = false # true/false
+
+# The span for aligning function-call parameters for single line functions.
+#
+# 0: Don't align (default).
+align_same_func_call_params_span = 0 # unsigned number
+
+# The threshold for aligning function-call parameters for single line
+# functions.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_same_func_call_params_thresh = 0 # number
+
+# The span for aligning variable definitions.
+#
+# 0: Don't align (default).
+align_var_def_span = 0 # unsigned number
+
+# How to consider (or treat) the '*' in the alignment of variable definitions.
+#
+# 0: Part of the type 'void * foo;' (default)
+# 1: Part of the variable 'void *foo;'
+# 2: Dangling 'void *foo;'
+# Dangling: the '*' will not be taken into account when aligning.
+align_var_def_star_style = 0 # unsigned number
+
+# How to consider (or treat) the '&' in the alignment of variable definitions.
+#
+# 0: Part of the type 'long & foo;' (default)
+# 1: Part of the variable 'long &foo;'
+# 2: Dangling 'long &foo;'
+# Dangling: the '&' will not be taken into account when aligning.
+align_var_def_amp_style = 0 # unsigned number
+
+# The threshold for aligning variable definitions.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_var_def_thresh = 0 # number
+
+# The gap for aligning variable definitions.
+align_var_def_gap = 0 # unsigned number
+
+# Whether to align the colon in struct bit fields.
+align_var_def_colon = false # true/false
+
+# The gap for aligning the colon in struct bit fields.
+align_var_def_colon_gap = 0 # unsigned number
+
+# Whether to align any attribute after the variable name.
+align_var_def_attribute = false # true/false
+
+# Whether to align inline struct/enum/union variable definitions.
+align_var_def_inline = false # true/false
+
+# The span for aligning on '=' in assignments.
+#
+# 0: Don't align (default).
+align_assign_span = 0 # unsigned number
+
+# The span for aligning on '=' in function prototype modifier.
+#
+# 0: Don't align (default).
+align_assign_func_proto_span = 0 # unsigned number
+
+# The threshold for aligning on '=' in assignments.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_assign_thresh = 0 # number
+
+# Whether to align on the left most assignment when multiple
+# definitions are found on the same line.
+# Depends on 'align_assign_span' and 'align_assign_thresh' settings.
+align_assign_on_multi_var_defs = false # true/false
+
+# The span for aligning on '{' in braced init list.
+#
+# 0: Don't align (default).
+align_braced_init_list_span = 0 # unsigned number
+
+# The threshold for aligning on '{' in braced init list.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_braced_init_list_thresh = 0 # number
+
+# How to apply align_assign_span to function declaration "assignments", i.e.
+# 'virtual void foo() = 0' or '~foo() = {default|delete}'.
+#
+# 0: Align with other assignments (default)
+# 1: Align with each other, ignoring regular assignments
+# 2: Don't align
+align_assign_decl_func = 0 # unsigned number
+
+# The span for aligning on '=' in enums.
+#
+# 0: Don't align (default).
+align_enum_equ_span = 0 # unsigned number
+
+# The threshold for aligning on '=' in enums.
+# Use a negative number for absolute thresholds.
+#
+# 0: no limit (default).
+align_enum_equ_thresh = 0 # number
+
+# The span for aligning class member definitions.
+#
+# 0: Don't align (default).
+align_var_class_span = 0 # unsigned number
+
+# The threshold for aligning class member definitions.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_var_class_thresh = 0 # number
+
+# The gap for aligning class member definitions.
+align_var_class_gap = 0 # unsigned number
+
+# The span for aligning struct/union member definitions.
+#
+# 0: Don't align (default).
+align_var_struct_span = 0 # unsigned number
+
+# The threshold for aligning struct/union member definitions.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_var_struct_thresh = 0 # number
+
+# The gap for aligning struct/union member definitions.
+align_var_struct_gap = 0 # unsigned number
+
+# The span for aligning struct initializer values.
+#
+# 0: Don't align (default).
+align_struct_init_span = 0 # unsigned number
+
+# The span for aligning single-line typedefs.
+#
+# 0: Don't align (default).
+align_typedef_span = 0 # unsigned number
+
+# The minimum space between the type and the synonym of a typedef.
+align_typedef_gap = 0 # unsigned number
+
+# How to align typedef'd functions with other typedefs.
+#
+# 0: Don't mix them at all (default)
+# 1: Align the open parenthesis with the types
+# 2: Align the function type name with the other type names
+align_typedef_func = 0 # unsigned number
+
+# How to consider (or treat) the '*' in the alignment of typedefs.
+#
+# 0: Part of the typedef type, 'typedef int * pint;' (default)
+# 1: Part of type name: 'typedef int *pint;'
+# 2: Dangling: 'typedef int *pint;'
+# Dangling: the '*' will not be taken into account when aligning.
+align_typedef_star_style = 0 # unsigned number
+
+# How to consider (or treat) the '&' in the alignment of typedefs.
+#
+# 0: Part of the typedef type, 'typedef int & intref;' (default)
+# 1: Part of type name: 'typedef int &intref;'
+# 2: Dangling: 'typedef int &intref;'
+# Dangling: the '&' will not be taken into account when aligning.
+align_typedef_amp_style = 0 # unsigned number
+
+# The span for aligning comments that end lines.
+#
+# 0: Don't align (default).
+align_right_cmt_span = 0 # unsigned number
+
+# Minimum number of columns between preceding text and a trailing comment in
+# order for the comment to qualify for being aligned. Must be non-zero to have
+# an effect.
+align_right_cmt_gap = 0 # unsigned number
+
+# If aligning comments, whether to mix with comments after '}' and #endif with
+# less than three spaces before the comment.
+align_right_cmt_mix = false # true/false
+
+# Whether to only align trailing comments that are at the same brace level.
+align_right_cmt_same_level = false # true/false
+
+# Minimum column at which to align trailing comments. Comments which are
+# aligned beyond this column, but which can be aligned in a lesser column,
+# may be "pulled in".
+#
+# 0: Ignore (default).
+align_right_cmt_at_col = 0 # unsigned number
+
+# The span for aligning function prototypes.
+#
+# 0: Don't align (default).
+align_func_proto_span = 0 # unsigned number
+
+# Whether to ignore continuation lines when evaluating the number of
+# new lines for the function prototype alignment's span.
+#
+# false: continuation lines are part of the newlines count
+# true: continuation lines are not counted
+align_func_proto_span_ignore_cont_lines = false # true/false
+
+# How to consider (or treat) the '*' in the alignment of function prototypes.
+#
+# 0: Part of the type 'void * foo();' (default)
+# 1: Part of the function 'void *foo();'
+# 2: Dangling 'void *foo();'
+# Dangling: the '*' will not be taken into account when aligning.
+align_func_proto_star_style = 0 # unsigned number
+
+# How to consider (or treat) the '&' in the alignment of function prototypes.
+#
+# 0: Part of the type 'long & foo();' (default)
+# 1: Part of the function 'long &foo();'
+# 2: Dangling 'long &foo();'
+# Dangling: the '&' will not be taken into account when aligning.
+align_func_proto_amp_style = 0 # unsigned number
+
+# The threshold for aligning function prototypes.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_func_proto_thresh = 0 # number
+
+# Minimum gap between the return type and the function name.
+align_func_proto_gap = 0 # unsigned number
+
+# Whether to align function prototypes on the 'operator' keyword instead of
+# what follows.
+align_on_operator = false # true/false
+
+# 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 # true/false
+
+# Whether to align single-line functions with function prototypes.
+# Uses align_func_proto_span.
+align_single_line_func = false # true/false
+
+# Whether to align the open brace of single-line functions.
+# Requires align_single_line_func=true. Uses align_func_proto_span.
+align_single_line_brace = false # true/false
+
+# Gap for align_single_line_brace.
+align_single_line_brace_gap = 0 # unsigned number
+
+# (OC) The span for aligning Objective-C message specifications.
+#
+# 0: Don't align (default).
+align_oc_msg_spec_span = 0 # unsigned number
+
+# Whether and how to align backslashes that split a macro onto multiple lines.
+# This will not work right if the macro contains a multi-line comment.
+#
+# 0: Do nothing (default)
+# 1: Align the backslashes in the column at the end of the longest line
+# 2: Align with the backslash that is farthest to the left, or, if that
+# backslash is farther left than the end of the longest line, at the end of
+# the longest line
+# 3: Align with the backslash that is farthest to the right
+align_nl_cont = 0 # unsigned number
+
+# The minimum number of spaces between the end of a line and its continuation
+# backslash. Requires align_nl_cont.
+#
+# Default: 1
+align_nl_cont_spaces = 1 # unsigned number
+
+# Whether to align macro functions and variables together.
+align_pp_define_together = false # true/false
+
+# The span for aligning on '#define' bodies.
+#
+# =0: Don't align (default)
+# >0: Number of lines (including comments) between blocks
+align_pp_define_span = 0 # unsigned number
+
+# The minimum space between label and value of a preprocessor define.
+align_pp_define_gap = 0 # unsigned number
+
+# Whether to align lines that start with '<<' with previous '<<'.
+#
+# Default: true
+align_left_shift = true # true/false
+
+# Whether to align comma-separated statements following '<<' (as used to
+# initialize Eigen matrices).
+align_eigen_comma_init = false # true/false
+
+# Whether to align text after 'asm volatile ()' colons.
+align_asm_colon = false # true/false
+
+# (OC) Span for aligning parameters in an Objective-C message call
+# on the ':'.
+#
+# 0: Don't align.
+align_oc_msg_colon_span = 0 # unsigned number
+
+# (OC) Whether to always align with the first parameter, even if it is too
+# short.
+align_oc_msg_colon_first = false # true/false
+
+# (OC) Whether to align parameters in an Objective-C '+' or '-' declaration
+# on the ':'.
+align_oc_decl_colon = false # true/false
+
+# (OC) Whether to not align parameters in an Objectve-C message call if first
+# colon is not on next line of the message call (the same way Xcode does
+# alignment)
+align_oc_msg_colon_xcode_like = false # true/false
+
+#
+# Comment modification options
+#
+
+# Try to wrap comments at N columns.
+cmt_width = 0 # unsigned number
+
+# How to reflow comments.
+#
+# 0: No reflowing (apart from the line wrapping due to cmt_width) (default)
+# 1: No touching at all
+# 2: Full reflow (enable cmt_indent_multi for indent with line wrapping due to cmt_width)
+cmt_reflow_mode = 0 # unsigned number
+
+# Path to a file that contains regular expressions describing patterns for
+# which the end of one line and the beginning of the next will be folded into
+# the same sentence or paragraph during full comment reflow. The regular
+# expressions are described using ECMAScript syntax. The syntax for this
+# specification is as follows, where "..." indicates the custom regular
+# expression and "n" indicates the nth end_of_prev_line_regex and
+# beg_of_next_line_regex regular expression pair:
+#
+# end_of_prev_line_regex[1] = "...$"
+# beg_of_next_line_regex[1] = "^..."
+# end_of_prev_line_regex[2] = "...$"
+# beg_of_next_line_regex[2] = "^..."
+# .
+# .
+# .
+# end_of_prev_line_regex[n] = "...$"
+# beg_of_next_line_regex[n] = "^..."
+#
+# Note that use of this option overrides the default reflow fold regular
+# expressions, which are internally defined as follows:
+#
+# end_of_prev_line_regex[1] = "[\w,\]\)]$"
+# beg_of_next_line_regex[1] = "^[\w,\[\(]"
+# end_of_prev_line_regex[2] = "\.$"
+# beg_of_next_line_regex[2] = "^[A-Z]"
+cmt_reflow_fold_regex_file = "" # string
+
+# Whether to indent wrapped lines to the start of the encompassing paragraph
+# during full comment reflow (cmt_reflow_mode = 2). Overrides the value
+# specified by cmt_sp_after_star_cont.
+#
+# Note that cmt_align_doxygen_javadoc_tags overrides this option for
+# paragraphs associated with javadoc tags
+cmt_reflow_indent_to_paragraph_start = false # true/false
+
+# Whether to convert all tabs to spaces in comments. If false, tabs in
+# comments are left alone, unless used for indenting.
+cmt_convert_tab_to_spaces = false # true/false
+
+# Whether to apply changes to multi-line comments, including cmt_width,
+# keyword substitution and leading chars.
+#
+# Default: true
+cmt_indent_multi = true # true/false
+
+# Whether to align doxygen javadoc-style tags ('@param', '@return', etc.)
+# and corresponding fields such that groups of consecutive block tags,
+# parameter names, and descriptions align with one another. Overrides that
+# which is specified by the cmt_sp_after_star_cont. If cmt_width > 0, it may
+# be necessary to enable cmt_indent_multi and set cmt_reflow_mode = 2
+# in order to achieve the desired alignment for line-wrapping.
+cmt_align_doxygen_javadoc_tags = false # true/false
+
+# The number of spaces to insert after the star and before doxygen
+# javadoc-style tags (@param, @return, etc). Requires enabling
+# cmt_align_doxygen_javadoc_tags. Overrides that which is specified by the
+# cmt_sp_after_star_cont.
+#
+# Default: 1
+cmt_sp_before_doxygen_javadoc_tags = 1 # unsigned number
+
+# Whether to change trailing, single-line c-comments into cpp-comments.
+cmt_trailing_single_line_c_to_cpp = false # true/false
+
+# Whether to group c-comments that look like they are in a block.
+cmt_c_group = false # true/false
+
+# Whether to put an empty '/*' on the first line of the combined c-comment.
+cmt_c_nl_start = false # true/false
+
+# Whether to add a newline before the closing '*/' of the combined c-comment.
+cmt_c_nl_end = false # true/false
+
+# Whether to change cpp-comments into c-comments.
+cmt_cpp_to_c = false # true/false
+
+# Whether to group cpp-comments that look like they are in a block. Only
+# meaningful if cmt_cpp_to_c=true.
+cmt_cpp_group = false # true/false
+
+# Whether to put an empty '/*' on the first line of the combined cpp-comment
+# when converting to a c-comment.
+#
+# Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
+cmt_cpp_nl_start = false # true/false
+
+# Whether to add a newline before the closing '*/' of the combined cpp-comment
+# when converting to a c-comment.
+#
+# Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
+cmt_cpp_nl_end = false # true/false
+
+# Whether to put a star on subsequent comment lines.
+cmt_star_cont = false # true/false
+
+# The number of spaces to insert at the start of subsequent comment lines.
+cmt_sp_before_star_cont = 0 # unsigned number
+
+# The number of spaces to insert after the star on subsequent comment lines.
+cmt_sp_after_star_cont = 0 # unsigned number
+
+# For multi-line comments with a '*' lead, remove leading spaces if the first
+# and last lines of the comment are the same length.
+#
+# Default: true
+cmt_multi_check_last = true # true/false
+
+# For multi-line comments with a '*' lead, remove leading spaces if the first
+# and last lines of the comment are the same length AND if the length is
+# bigger as the first_len minimum.
+#
+# Default: 4
+cmt_multi_first_len_minimum = 4 # unsigned number
+
+# Path to a file that contains text to insert at the beginning of a file if
+# the file doesn't start with a C/C++ comment. If the inserted text contains
+# '$(filename)', that will be replaced with the current file's name.
+cmt_insert_file_header = "" # string
+
+# Path to a file that contains text to insert at the end of a file if the
+# file doesn't end with a C/C++ comment. If the inserted text contains
+# '$(filename)', that will be replaced with the current file's name.
+cmt_insert_file_footer = "" # string
+
+# Path to a file that contains text to insert before a function definition if
+# the function isn't preceded by a C/C++ comment. If the inserted text
+# contains '$(function)', '$(javaparam)' or '$(fclass)', these will be
+# replaced with, respectively, the name of the function, the javadoc '@param'
+# and '@return' stuff, or the name of the class to which the member function
+# belongs.
+cmt_insert_func_header = "" # string
+
+# Path to a file that contains text to insert before a class if the class
+# isn't preceded by a C/C++ comment. If the inserted text contains '$(class)',
+# that will be replaced with the class name.
+cmt_insert_class_header = "" # string
+
+# Path to a file that contains text to insert before an Objective-C message
+# specification, if the method isn't preceded by a C/C++ comment. If the
+# inserted text contains '$(message)' or '$(javaparam)', these will be
+# replaced with, respectively, the name of the function, or the javadoc
+# '@param' and '@return' stuff.
+cmt_insert_oc_msg_header = "" # string
+
+# Whether a comment should be inserted if a preprocessor is encountered when
+# stepping backwards from a function name.
+#
+# Applies to cmt_insert_oc_msg_header, cmt_insert_func_header and
+# cmt_insert_class_header.
+cmt_insert_before_preproc = false # true/false
+
+# Whether a comment should be inserted if a function is declared inline to a
+# class definition.
+#
+# Applies to cmt_insert_func_header.
+#
+# Default: true
+cmt_insert_before_inlines = true # true/false
+
+# Whether a comment should be inserted if the function is a class constructor
+# or destructor.
+#
+# Applies to cmt_insert_func_header.
+cmt_insert_before_ctor_dtor = false # true/false
+
+#
+# Code modifying options (non-whitespace)
+#
+
+# Add or remove braces on a single-line 'do' statement.
+mod_full_brace_do = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove braces on a single-line 'for' statement.
+mod_full_brace_for = ignore # ignore/add/remove/force/not_defined
+
+# (Pawn) Add or remove braces on a single-line function definition.
+mod_full_brace_function = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove braces on a single-line 'if' statement. Braces will not be
+# removed if the braced statement contains an 'else'.
+mod_full_brace_if = ignore # ignore/add/remove/force/not_defined
+
+# Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either
+# have, or do not have, braces. Overrides mod_full_brace_if.
+#
+# 0: Don't override mod_full_brace_if
+# 1: Add braces to all blocks if any block needs braces and remove braces if
+# they can be removed from all blocks
+# 2: Add braces to all blocks if any block already has braces, regardless of
+# whether it needs them
+# 3: Add braces to all blocks if any block needs braces and remove braces if
+# they can be removed from all blocks, except if all blocks have braces
+# despite none needing them
+mod_full_brace_if_chain = 0 # unsigned number
+
+# Whether to add braces to all blocks of an 'if'/'else if'/'else' chain.
+# If true, mod_full_brace_if_chain will only remove braces from an 'if' that
+# does not have an 'else if' or 'else'.
+mod_full_brace_if_chain_only = false # true/false
+
+# Add or remove braces on single-line 'while' statement.
+mod_full_brace_while = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove braces on single-line 'using ()' statement.
+mod_full_brace_using = ignore # ignore/add/remove/force/not_defined
+
+# Don't remove braces around statements that span N newlines
+mod_full_brace_nl = 0 # unsigned number
+
+# Whether to prevent removal of braces from 'if'/'for'/'while'/etc. blocks
+# which span multiple lines.
+#
+# Affects:
+# mod_full_brace_for
+# mod_full_brace_if
+# mod_full_brace_if_chain
+# mod_full_brace_if_chain_only
+# mod_full_brace_while
+# mod_full_brace_using
+#
+# Does not affect:
+# mod_full_brace_do
+# mod_full_brace_function
+mod_full_brace_nl_block_rem_mlcond = false # true/false
+
+# Add or remove unnecessary parentheses on 'return' statement.
+mod_paren_on_return = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove unnecessary parentheses on 'throw' statement.
+mod_paren_on_throw = ignore # ignore/add/remove/force/not_defined
+
+# (Pawn) Whether to change optional semicolons to real semicolons.
+mod_pawn_semicolon = false # true/false
+
+# Whether to fully parenthesize Boolean expressions in 'while' and 'if'
+# statement, as in 'if (a && b > c)' => 'if (a && (b > c))'.
+mod_full_paren_if_bool = false # true/false
+
+# Whether to fully parenthesize Boolean expressions after '='
+# statement, as in 'x = a && b > c;' => 'x = (a && (b > c));'.
+mod_full_paren_assign_bool = false # true/false
+
+# Whether to fully parenthesize Boolean expressions after '='
+# statement, as in 'return a && b > c;' => 'return (a && (b > c));'.
+mod_full_paren_return_bool = false # true/false
+
+# Whether to remove superfluous semicolons.
+mod_remove_extra_semicolon = false # true/false
+
+# Whether to remove duplicate include.
+mod_remove_duplicate_include = false # true/false
+
+# the following options (mod_XX_closebrace_comment) use different comment,
+# depending of the setting of the next option.
+# false: Use the c comment (default)
+# true : Use the cpp comment
+mod_add_force_c_closebrace_comment = false # true/false
+
+# 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 = 0 # unsigned number
+
+# If a namespace 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_namespace_closebrace_comment = 0 # unsigned number
+
+# If a class 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_class_closebrace_comment = 0 # unsigned 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 = 0 # unsigned number
+
+# If an #ifdef body exceeds the specified number of newlines and doesn't have
+# a comment after the #endif, a comment will be added.
+mod_add_long_ifdef_endif_comment = 0 # unsigned number
+
+# If an #ifdef or #else body exceeds the specified number of newlines and
+# doesn't have a comment after the #else, a comment will be added.
+mod_add_long_ifdef_else_comment = 0 # unsigned number
+
+# Whether to take care of the case by the mod_sort_xx options.
+mod_sort_case_sensitive = false # true/false
+
+# Whether to sort consecutive single-line 'import' statements.
+mod_sort_import = false # true/false
+
+# (C#) Whether to sort consecutive single-line 'using' statements.
+mod_sort_using = false # true/false
+
+# Whether to sort consecutive single-line '#include' statements (C/C++) and
+# '#import' statements (Objective-C). Be aware that this has the potential to
+# break your code if your includes/imports have ordering dependencies.
+mod_sort_include = false # true/false
+
+# Whether to prioritize '#include' and '#import' statements that contain
+# filename without extension when sorting is enabled.
+mod_sort_incl_import_prioritize_filename = false # true/false
+
+# Whether to prioritize '#include' and '#import' statements that does not
+# contain extensions when sorting is enabled.
+mod_sort_incl_import_prioritize_extensionless = false # true/false
+
+# Whether to prioritize '#include' and '#import' statements that contain
+# angle over quotes when sorting is enabled.
+mod_sort_incl_import_prioritize_angle_over_quotes = false # true/false
+
+# Whether to ignore file extension in '#include' and '#import' statements
+# for sorting comparison.
+mod_sort_incl_import_ignore_extension = false # true/false
+
+# Whether to group '#include' and '#import' statements when sorting is enabled.
+mod_sort_incl_import_grouping_enabled = false # true/false
+
+# Whether to move a 'break' that appears after a fully braced 'case' before
+# the close brace, as in 'case X: { ... } break;' => 'case X: { ... break; }'.
+mod_move_case_break = false # true/false
+
+# Whether to move a 'return' that appears after a fully braced 'case' before
+# the close brace, as in 'case X: { ... } return;' => 'case X: { ... return; }'.
+mod_move_case_return = false # true/false
+
+# Add or remove braces around a fully braced case statement. Will only remove
+# braces if there are no variable declarations in the block.
+mod_case_brace = ignore # ignore/add/remove/force/not_defined
+
+# Whether to remove a void 'return;' that appears as the last statement in a
+# function.
+mod_remove_empty_return = false # true/false
+
+# Add or remove the comma after the last value of an enumeration.
+mod_enum_last_comma = ignore # ignore/add/remove/force/not_defined
+
+# Syntax to use for infinite loops.
+#
+# 0: Leave syntax alone (default)
+# 1: Rewrite as `for(;;)`
+# 2: Rewrite as `while(true)`
+# 3: Rewrite as `do`...`while(true);`
+# 4: Rewrite as `while(1)`
+# 5: Rewrite as `do`...`while(1);`
+#
+# Infinite loops that do not already match one of these syntaxes are ignored.
+# Other options that affect loop formatting will be applied after transforming
+# the syntax.
+mod_infinite_loop = 0 # unsigned number
+
+# Add or remove the 'int' keyword in 'int short'.
+mod_int_short = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'short int'.
+mod_short_int = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'int long'.
+mod_int_long = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'long int'.
+mod_long_int = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'int signed'.
+mod_int_signed = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'signed int'.
+mod_signed_int = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'int unsigned'.
+mod_int_unsigned = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'unsigned int'.
+mod_unsigned_int = ignore # ignore/add/remove/force/not_defined
+
+# If there is a situation where mod_int_* and mod_*_int would result in
+# multiple int keywords, whether to keep the rightmost int (the default) or the
+# leftmost int.
+mod_int_prefer_int_on_left = false # true/false
+
+# (OC) Whether to organize the properties. If true, properties will be
+# rearranged according to the mod_sort_oc_property_*_weight factors.
+mod_sort_oc_properties = false # true/false
+
+# (OC) Weight of a class property modifier.
+mod_sort_oc_property_class_weight = 0 # number
+
+# (OC) Weight of 'atomic' and 'nonatomic'.
+mod_sort_oc_property_thread_safe_weight = 0 # number
+
+# (OC) Weight of 'readwrite' when organizing properties.
+mod_sort_oc_property_readwrite_weight = 0 # number
+
+# (OC) Weight of a reference type specifier ('retain', 'copy', 'assign',
+# 'weak', 'strong') when organizing properties.
+mod_sort_oc_property_reference_weight = 0 # number
+
+# (OC) Weight of getter type ('getter=') when organizing properties.
+mod_sort_oc_property_getter_weight = 0 # number
+
+# (OC) Weight of setter type ('setter=') when organizing properties.
+mod_sort_oc_property_setter_weight = 0 # number
+
+# (OC) Weight of nullability type ('nullable', 'nonnull', 'null_unspecified',
+# 'null_resettable') when organizing properties.
+mod_sort_oc_property_nullability_weight = 0 # number
+
+#
+# Preprocessor options
+#
+
+# How to use tabs when indenting preprocessor code.
+#
+# -1: Use 'indent_with_tabs' setting (default)
+# 0: Spaces only
+# 1: Indent with tabs to brace level, align with spaces
+# 2: Indent and align with tabs, using spaces when not on a tabstop
+#
+# Default: -1
+pp_indent_with_tabs = -1 # number
+
+# Add or remove indentation of preprocessor directives inside #if blocks
+# at brace level 0 (file-level).
+pp_indent = ignore # ignore/add/remove/force/not_defined
+
+# Whether to indent #if/#else/#endif at the brace level. If false, these are
+# indented from column 1.
+pp_indent_at_level = false # true/false
+
+# Whether to indent #if/#else/#endif at the parenthesis level if the brace
+# level is 0. If false, these are indented from column 1.
+pp_indent_at_level0 = false # true/false
+
+# Specifies the number of columns to indent preprocessors per level
+# at brace level 0 (file-level). If pp_indent_at_level=false, also specifies
+# the number of columns to indent preprocessors per level
+# at brace level > 0 (function-level).
+#
+# Default: 1
+pp_indent_count = 1 # unsigned number
+
+# Add or remove space after # based on pp level of #if blocks.
+pp_space_after = ignore # ignore/add/remove/force/not_defined
+
+# Sets the number of spaces per level added with pp_space_after.
+pp_space_count = 0 # unsigned number
+
+# The indent for '#region' and '#endregion' in C# and '#pragma region' in
+# C/C++. Negative values decrease indent down to the first column.
+pp_indent_region = 0 # number
+
+# Whether to indent the code between #region and #endregion.
+pp_region_indent_code = false # true/false
+
+# If pp_indent_at_level=true, sets the indent for #if, #else and #endif when
+# not at file-level. Negative values decrease indent down to the first column.
+#
+# =0: Indent preprocessors using output_tab_size
+# >0: Column at which all preprocessors will be indented
+pp_indent_if = 0 # number
+
+# Whether to indent the code between #if, #else and #endif.
+pp_if_indent_code = false # true/false
+
+# Whether to indent the body of an #if that encompasses all the code in the file.
+pp_indent_in_guard = false # true/false
+
+# Whether to indent '#define' at the brace level. If false, these are
+# indented from column 1.
+pp_define_at_level = false # true/false
+
+# Whether to indent '#include' at the brace level.
+pp_include_at_level = false # true/false
+
+# Whether to ignore the '#define' body while formatting.
+pp_ignore_define_body = false # true/false
+
+# An offset value that controls the indentation of the body of a multiline #define.
+# 'body' refers to all the lines of a multiline #define except the first line.
+# Requires 'pp_ignore_define_body = false'.
+#
+# <0: Absolute column: the body indentation starts off at the specified column
+# (ex. -3 ==> the body is indented starting from column 3)
+# >=0: Relative to the column of the '#' of '#define'
+# (ex. 3 ==> the body is indented starting 3 columns at the right of '#')
+#
+# Default: 8
+pp_multiline_define_body_indent = 8 # number
+
+# Whether to indent case statements between #if, #else, and #endif.
+# Only applies to the indent of the preprocessor that the case statements
+# directly inside of.
+#
+# Default: true
+pp_indent_case = true # true/false
+
+# Whether to indent whole function definitions between #if, #else, and #endif.
+# Only applies to the indent of the preprocessor that the function definition
+# is directly inside of.
+#
+# Default: true
+pp_indent_func_def = true # true/false
+
+# Whether to indent extern C blocks between #if, #else, and #endif.
+# Only applies to the indent of the preprocessor that the extern block is
+# directly inside of.
+#
+# Default: true
+pp_indent_extern = true # true/false
+
+# How to indent braces directly inside #if, #else, and #endif.
+# Requires pp_if_indent_code=true and only applies to the indent of the
+# preprocessor that the braces are directly inside of.
+# 0: No extra indent
+# 1: Indent by one level
+# -1: Preserve original indentation
+#
+# Default: 1
+pp_indent_brace = 1 # number
+
+# Whether to print warning messages for unbalanced #if and #else blocks.
+# This will print a message in the following cases:
+# - if an #ifdef block ends on a different indent level than
+# where it started from. Example:
+#
+# #ifdef TEST
+# int i;
+# {
+# int j;
+# #endif
+#
+# - an #elif/#else block ends on a different indent level than
+# the corresponding #ifdef block. Example:
+#
+# #ifdef TEST
+# int i;
+# #else
+# }
+# int j;
+# #endif
+pp_warn_unbalanced_if = false # true/false
+
+#
+# Sort includes options
+#
+
+# The regex for include category with priority 0.
+include_category_0 = "" # string
+
+# The regex for include category with priority 1.
+include_category_1 = "" # string
+
+# The regex for include category with priority 2.
+include_category_2 = "" # string
+
+#
+# Use or Do not Use options
+#
+
+# true: indent_func_call_param will be used (default)
+# false: indent_func_call_param will NOT be used
+#
+# Default: true
+use_indent_func_call_param = true # true/false
+
+# The value of the indentation for a continuation line is calculated
+# differently if the statement is:
+# - a declaration: your case with QString fileName ...
+# - an assignment: your case with pSettings = new QSettings( ...
+#
+# At the second case the indentation value might be used twice:
+# - at the assignment
+# - at the function call (if present)
+#
+# To prevent the double use of the indentation value, use this option with the
+# value 'true'.
+#
+# true: indent_continue will be used only once
+# false: indent_continue will be used every time (default)
+#
+# Requires indent_ignore_first_continue=false.
+use_indent_continue_only_once = false # true/false
+
+# The indentation can be:
+# - after the assignment, at the '[' character
+# - at the beginning of the lambda body
+#
+# true: indentation will be at the beginning of the lambda body
+# false: indentation will be after the assignment (default)
+indent_cpp_lambda_only_once = false # true/false
+
+# Whether sp_after_angle takes precedence over sp_inside_fparen. This was the
+# historic behavior, but is probably not the desired behavior, so this is off
+# by default.
+use_sp_after_angle_always = false # true/false
+
+# Whether to apply special formatting for Qt SIGNAL/SLOT macros. Essentially,
+# this tries to format these so that they match Qt's normalized form (i.e. the
+# result of QMetaObject::normalizedSignature), which can slightly improve the
+# performance of the QObject::connect call, rather than how they would
+# otherwise be formatted.
+#
+# See options_for_QT.cpp for details.
+#
+# Default: true
+use_options_overriding_for_qt_macros = true # true/false
+
+# If true: the form feed character is removed from the list of whitespace
+# characters. See https://en.cppreference.com/w/cpp/string/byte/isspace.
+use_form_feed_no_more_as_whitespace_character = false # true/false
+
+#
+# Warn levels - 1: error, 2: warning (default), 3: note
+#
+
+# (C#) Warning is given if doing tab-to-\t replacement and we have found one
+# in a C# verbatim string literal.
+#
+# Default: 2
+warn_level_tabs_found_in_verbatim_string_literals = 2 # unsigned number
+
+# Limit the number of loops.
+# Used by uncrustify.cpp to exit from infinite loop.
+# 0: no limit.
+debug_max_number_of_loops = 0 # number
+
+# Set the number of the line to protocol;
+# Used in the function prot_the_line if the 2. parameter is zero.
+# 0: nothing protocol.
+debug_line_number_to_protocol = 0 # number
+
+# Set the number of second(s) before terminating formatting the current file,
+# 0: no timeout.
+# only for linux
+debug_timeout = 0 # number
+
+# Set the number of characters to be printed if the text is too long,
+# 0: do not truncate.
+debug_truncate = 0 # unsigned number
+
+# sort (or not) the tracking info.
+#
+# Default: true
+debug_sort_the_tracks = true # true/false
+
+# decode (or not) the flags as a new line.
+# only if the -p option is set.
+debug_decode_the_flags = false # true/false
+
+# use (or not) the exit(EX_SOFTWARE) function.
+#
+# Default: true
+debug_use_the_exit_function_pop = true # true/false
+
+# insert the number of the line at the beginning of each line
+set_numbering_for_html_output = false # true/false
+
+# Meaning of the settings:
+# Ignore - do not do any changes
+# Add - makes sure there is 1 or more space/brace/newline/etc
+# Force - makes sure there is exactly 1 space/brace/newline/etc,
+# behaves like Add in some contexts
+# Remove - removes space/brace/newline/etc
+#
+#
+# - Token(s) can be treated as specific type(s) with the 'set' option:
+# `set tokenType tokenString [tokenString...]`
+#
+# Example:
+# `set BOOL __AND__ __OR__`
+#
+# tokenTypes are defined in src/token_enum.h, use them without the
+# 'CT_' prefix: 'CT_BOOL' => 'BOOL'
+#
+#
+# - Token(s) can be treated as type(s) with the 'type' option.
+# `type tokenString [tokenString...]`
+#
+# Example:
+# `type int c_uint_8 Rectangle`
+#
+# This can also be achieved with `set TYPE int c_uint_8 Rectangle`
+#
+#
+# To embed whitespace in tokenStrings use the '\' escape character, or quote
+# the tokenStrings. These quotes are supported: "'`
+#
+#
+# - Support for the auto detection of languages through the file ending can be
+# added using the 'file_ext' command.
+# `file_ext langType langString [langString..]`
+#
+# Example:
+# `file_ext CPP .ch .cxx .cpp.in`
+#
+# langTypes are defined in uncrusify_types.h in the lang_flag_e enum, use
+# them without the 'LANG_' prefix: 'LANG_CPP' => 'CPP'
+#
+#
+# - Custom macro-based indentation can be set up using 'macro-open',
+# 'macro-else' and 'macro-close'.
+# `(macro-open | macro-else | macro-close) tokenString`
+#
+# Example:
+# `macro-open BEGIN_TEMPLATE_MESSAGE_MAP`
+# `macro-open BEGIN_MESSAGE_MAP`
+# `macro-close END_MESSAGE_MAP`
+#
+#
+# option(s) with 'not default' value: 0
+#
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/examples/c-1.in.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/examples/c-1.in.c
index c1a53476..c1a53476 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/examples/c-1.in.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/examples/c-1.in.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/examples/c-1.out.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/examples/c-1.out.c
index ceb484c6..ceb484c6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/examples/c-1.out.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/examples/c-1.out.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/examples/example.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/examples/example.c
index 7c8edf79..7c8edf79 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/examples/example.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/examples/example.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/images/linuxlinks.gif b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/images/linuxlinks.gif
index d3adec5c..d3adec5c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/images/linuxlinks.gif
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/images/linuxlinks.gif
Binary files differ
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/index.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/index.html
new file mode 100644
index 00000000..1e832d9d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/index.html
@@ -0,0 +1,183 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+ <title>Uncrustify - Source Code Beautifier for C-like languages</title>
+ <link rel="stylesheet" type="text/css" href="uncrustify1.css" />
+ <!-- <link rel="shortcut icon" href="images/favicon.ico" /> -->
+</head>
+<body lang="en-us" dir="ltr">
+
+<div align="center">
+<table>
+<tr>
+<td align="center">
+<div class="node1" align="center">
+<div class="node2" align="left">
+<h1>Uncrustify</h1>
+<h2>Source Code Beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA</h2>
+<table>
+ <tr>
+ <td valign="top">
+ <script type='text/javascript' language='JavaScript' src='http://www.ohloh.net/projects/4765/badge_js'></script>
+ </td>
+ <td valign="top">
+ <a href="https://travis-ci.org/uncrustify/uncrustify/builds">
+ <img alt="Travis CI Build Status"
+ src="https://travis-ci.org/uncrustify/uncrustify.svg?branch=master"/>
+ </a>
+ </td>
+ <td valign="top">
+ <a href="https://scan.coverity.com/projects/uncrustify">
+ <img alt="Coverity Scan Build Status"
+ src="https://scan.coverity.com/projects/8264/badge.svg"/>
+ </a>
+ </td>
+ </tr>
+</table>
+
+<h2>Introduction</h2>
+<p>The goals of this project are simple:
+Create a highly configurable, easily modifiable source code beautifier.</p>
+
+<br />
+
+<h2>Features</h2>
+<ul>
+ <li>Indent code, aligning on parens, assignments, etc</li>
+ <li>Align on '=' and variable definitions</li>
+ <li>Align structure initializers</li>
+ <li>Align #define stuff</li>
+ <li>Align backslash-newline stuff</li>
+ <li>Reformat comments (a little bit)</li>
+ <li>Fix inter-character spacing</li>
+ <li>Add or remove parens on return statements</li>
+ <li>Add or remove braces on single-statement if/do/while/for statements</li>
+ <li>Supports embedded SQL 'EXEC SQL' stuff</li>
+ <li>Highly configurable - 850 configurable options as of version 0.78.0</li>
+</ul>
+
+<p>
+ See some example <a href="examples/example.c">output</a>.
+</p>
+
+<br />
+
+<h2>Where to get Uncrustify</h2>
+
+<h3>Project Websites</h3>
+<a href="http://sourceforge.net/projects/uncrustify/">Sourceforge project web site</a><BR>
+<a href="http://sourceforge.net/projects/uncrustify/files/">Release downloads</a><br>
+<a href="http://freshmeat.net/projects/uncrustify/">Freshmeat Project</a><BR>
+<a href="http://github.com/uncrustify/uncrustify">Git Hub</a><br>
+
+<h3>Source Code</h3>
+As of release 0.54, the source code is maintained in a <a href="http://git-scm.com/">Git</a> repository.<br>
+<br>
+The public Git URL for Sourceforge.net is <br>
+<code>git://uncrustify.git.sourceforge.net/gitroot/uncrustify/uncrustify</code><br>
+<br>
+The public Git URL for github.com is <br>
+<code>git://github.com/uncrustify/uncrustify.git</code><br>
+
+<h3>Prebuilt binaries</h3>
+Windows (i386) :
+<a href="http://sourceforge.net/project/showfiles.php?group_id=153164">Sourceforge</A><BR>
+
+<h3>Universal Indent GUI</h3>
+<a href="http://universalindent.sourceforge.net/">Universal Indent GUI</a> is a
+cross-platform graphical configuration file editor for many code beautifiers, including Uncrustify.
+
+<br />
+
+<h2>Want to help?</h2>
+<p>
+The most helpful way is to try it out and give feedback.
+Documentation and examples are available in the source tree, so check it out.
+</p>
+<p>
+You can find the output from 'uncrustify --show-config' <a href="config.txt">here</a>.<br />
+Here is the <a href="default.cfg">default config file</a>.
+And one I set up for <a href="linux.cfg.txt">Linux</a>.<br />
+And here is a <a href="examples/c-1.in.c">before</a> and <a href="examples/c-1.out.c">after</a> C source example.<br />
+That should give you a pretty good idea of what Uncrustify can do.<br />
+</p>
+
+<p>
+If you find a bug, please do the following:
+</p>
+<ul>
+<li>Reduce the input source file to the minimum that still has the problem</li>
+<li>Use the sourceforget.net bug tracker</li>
+<li>Attach the input source file, the configuration file, and a file that contains the expected output</li>
+</ul>
+
+<p>
+If you want to add a feature, fix a bug, or implement missing functionality, feel free to do so! Patches are welcome!<BR/>
+Here are some areas that need attention:
+</p>
+<ul>
+ <li>Test Java support and provide feedback (or patches!)</li>
+ <li>Test Objective C support and provide feedback (or patches!)</li>
+ <li>Test Embedded SQL to see what works</li>
+ <li>This web page need a (re)design</li>
+ <li>A logo of some sort</li>
+ <li>Examples that can be put on this website to show off what Uncrustify can do</li>
+ <li>Anything else that you want to do to make it better?</li>
+</ul>
+
+<h3>Project Mailing list</h3>
+We don't have a mailing list for Uncrustify.<BR/>
+We are using <a href="https://github.com/uncrustify/uncrustify/">github</a>.
+<br>
+You may use <a href="https://github.com/uncrustify/uncrustify/issues">Issues</a> to publish an error report.
+<br>
+Or <a href="https://github.com/uncrustify/uncrustify/pulls">PR</a> to make a bugfix proposal.
+
+<br />
+
+<h2>Portability</h2>
+<p>
+I'm pretty sure that I'm not using anything that is OS-specific.<br />
+The software has been tested on the following operating systems:
+</p>
+<ul>
+ <li>Linux</li>
+ <li>QNX</li>
+ <li>OS X</li>
+ <li>FreeBSD, NetBSD, OpenBSD</li>
+ <li>Sun Solaris 9</li>
+ <li>Windows XP (binary available)</li>
+</ul>
+
+<br />
+
+<h2>Links</h2>
+<ul>
+ <li><a href="http://universalindent.sourceforge.net/">Universal Indent GUI</a></li>
+ <li>Don't know what D is? Check out the <a href="http://dlang.org/index.html">D Programming Language website</a>.</li>
+ <li><a href="http://www.linuxlinks.com">Linux Links</a></li>
+</ul>
+<h2>Distributions that package Uncrustify</h2>
+<ul>
+ <li><A href="http://www.debian.org/">Debian</A>
+ <li><A href="http://fedora.redhat.com/">Fedora</A></li>
+ <li><A href="http://www.altlinux.com/">ALT Linux</A></li>
+ <li><A href="http://www.t2-project.org/">T2</A></li>
+ <li><A href="http://www.macports.org/">MacPorts</a></li>
+ <li><A href="http://www.freebsd.org/cgi/ports.cgi?query=uncrustify">FreeBSD Ports (textproc/uncrustify)</a></li>
+ <li><A href="http://openports.se/textproc/uncrustify">OpenBSD Ports (textproc/uncrustify)</a></li>
+ <li>Others?</li>
+</ul>
+</div>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<br />
+<a href="http://sourceforge.net/donate/index.php?group_id=153164">"Support This Project"</a>
+<br />
+
+</body>
+</html>
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/linux.cfg.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/linux.cfg.txt
new file mode 100644
index 00000000..b2072d21
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/linux.cfg.txt
@@ -0,0 +1,92 @@
+#
+# uncrustify config file for the linux kernel
+#
+
+indent_with_tabs = 2 # 1=indent to level only, 2=indent with tabs
+input_tab_size = 8 # original tab size
+output_tab_size = 8 # new tab size
+indent_columns = output_tab_size
+
+indent_label = 1 # pos: absolute col, neg: relative column
+
+
+#
+# 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_var_def_blk_end_func_top = 1
+nl_fcall_brace = remove # "list_for_each() {" vs "list_for_each()\n{"
+nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
+# nl_after_return = TRUE;
+# nl_before_case = 1
+
+
+#
+# Source code modifications
+#
+
+mod_paren_on_return = remove # "return 1;" vs "return (1);"
+mod_full_brace_if = remove # "if (a) a--;" vs "if (a) { a--; }"
+mod_full_brace_for = remove # "for () a--;" vs "for () { a--; }"
+mod_full_brace_do = remove # "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
+
+
+#
+# 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_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();"
+
+
+#
+# Aligning stuff
+#
+
+align_with_tabs = TRUE # use tabs to align
+align_on_tabstop = TRUE # align on tabstops
+# align_keep_tabs = true
+align_enum_equ_span = 4 # '=' in enum definition
+# align_nl_cont = 1
+# 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 = 3 # align stuff in a structure init '= { }'
+align_right_cmt_span = 3
+# align_pp_define_span = 8;
+# align_pp_define_gap = 4;
+
+# cmt_star_cont = FALSE
+
+# indent_brace = 0
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options.html
index 554836c3..554836c3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_ASM.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_ASM.html
index 4de0e7bb..4de0e7bb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_ASM.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_ASM.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Align.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Align.html
new file mode 100644
index 00000000..47b28230
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Align.html
@@ -0,0 +1,40 @@
+#define SUCCESS 0
+ █
+align_pp_define_gap
+The minimum space between label and value of a preprocessor define
+
+align_nl_cont = 1
+
+#define LOG_STR(sev, str, len) \
+ if (log_sev_on(sev)) { log_str(sev, str, len); }
+ █
+nl_after_brace_close
+
+
+extern struct cp_data cpd;
+
+extern bool QT_SIGNAL_SLOT_found;
+extern int QT_SIGNAL_SLOT_level;
+extern bool restoreValues;
+align_var_def_span █
+
+enum argval_t
+{
+ AV_IGNORE = 0,
+ AV_ADD = 1,
+ AV_REMOVE = 2,
+ AV_FORCE = 3, /**< remove + add */
+ AV_NOT_DEFINED = 4 /* to be used with QT, SIGNAL SLOT macros */
+};
+ █
+align_var_struct_span
+
+
+ UO_indent_var_def_blk, // indent a variable def block that appears at the top
+ UO_indent_var_def_cont,
+ UO_indent_shift, // if a shift expression spans multiple lines, indent
+
+ UO_indent_min_vbrace_open, // min. indent after virtual brace open and newline
+ UO_indent_vbrace_open_on_tabstop, // when identing after virtual brace open and newline add further spaces to reach next tabstop
+
+align_right_cmt_span
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_CLI_NET.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_CLI_NET.html
index 8838cdf0..8838cdf0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_CLI_NET.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_CLI_NET.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_C_sharp.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_C_sharp.html
index 74767b9d..74767b9d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_C_sharp.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_C_sharp.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_D.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_D.html
index 308b5c58..308b5c58 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_D.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_D.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Indenting.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Indenting.html
index 7887f759..7887f759 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Indenting.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Indenting.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Java.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Java.html
index 80083042..80083042 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Java.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Java.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_ModifyCode.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_ModifyCode.html
index e20e1098..e20e1098 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_ModifyCode.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_ModifyCode.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Namespace.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Namespace.html
index 74589df0..74589df0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Namespace.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Namespace.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_NewLines.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_NewLines.html
index e5150ed4..e5150ed4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_NewLines.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_NewLines.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Objectiv-C.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Objectiv-C.html
index 993a1b95..993a1b95 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Objectiv-C.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Objectiv-C.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Positioning.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Positioning.html
index 4e8a36cc..4e8a36cc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Positioning.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Positioning.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Preprocessor.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Preprocessor.html
index 1d99b69d..1d99b69d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Preprocessor.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Preprocessor.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Assign.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Assign.html
index 10c8b6b0..10c8b6b0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Assign.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Assign.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Byref.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Byref.html
index 7ad47f72..7ad47f72 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Byref.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Byref.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Case.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Case.html
index e40bfc5b..e40bfc5b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Case.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Case.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Cast.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Cast.html
index 9e0b6e2d..9e0b6e2d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Cast.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Cast.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Class.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Class.html
index 1bd1c4a5..1bd1c4a5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Class.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Class.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Comma.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Comma.html
index 3b3f0de1..3b3f0de1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Comma.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Comma.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Enum.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Enum.html
index f208c95f..f208c95f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Enum.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Enum.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_For.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_For.html
index 5107f89f..5107f89f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_For.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_For.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_New.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_New.html
index 587844ae..587844ae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_New.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_New.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Operator.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Operator.html
index d73c964d..d73c964d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Operator.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Operator.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Paren.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Paren.html
index caa4a5a5..caa4a5a5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Paren.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Paren.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Template.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Template.html
index d8792888..d8792888 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Space_Template.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Space_Template.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Spaces.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Spaces.html
index 35265fc6..35265fc6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/options_Spaces.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/options_Spaces.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/project-support.jpg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/project-support.jpg
index 5d15550f..5d15550f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/project-support.jpg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/project-support.jpg
Binary files differ
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/uncrustify.css b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/uncrustify.css
index 240171e9..240171e9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/uncrustify.css
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/uncrustify.css
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/uncrustify.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/uncrustify.html
index 0528eb63..0528eb63 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/htdocs/uncrustify.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/htdocs/uncrustify.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/not_a_compiler.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/not_a_compiler.txt
index 439d4309..439d4309 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/not_a_compiler.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/not_a_compiler.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/overview.odt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/overview.odt
index e14e3285..e14e3285 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/overview.odt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/overview.odt
Binary files differ
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/paren_stack.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/paren_stack.txt
new file mode 100644
index 00000000..5b66b471
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/paren_stack.txt
@@ -0,0 +1,221 @@
+
+=-----------------------------------------------------------------------------=
+* *
+* Paren Stack *
+* *
+=-----------------------------------------------------------------------------=
+
+At the heart of this algorithm are two stacks.
+There is the Paren Stack (PS) and the Frame stack.
+
+The PS (m_parenStack in the code) keeps track of braces, parens,
+if/else/switch/do/while/etc items -- anything that is nestable.
+
+Complex statements go through some of these BS_ stages:
+ BS_PAREN1 - paren on if/for/switch/while, etc
+ BS_PAREN2 - paren on do{}while()
+ BS_BRACE_DO - brace set on do{}
+ BS_BRACE2 - brace on if/else/for/switch/while
+ BS_ELSE - expecting 'else' after 'if'
+ BS_ELSEIF - expecting 'if' after 'else'
+ BS_WHILE - expecting 'while' after 'do'
+
+The file is processed one token at a time to support #if/#else/#endif
+preprocessors at any point.
+
+Take this simple if statement as an example:
+
+ if ( x )
+ {
+ x--;
+ }
+
+The stack would look like so:
+The format is first the token processed and then the PSE stack as it appears
+AFTER the token is processed.
+
+'if' [IF - PAREN1]
+'(' [IF - PAREN1] [SPAREN OPEN]
+'x' [IF - PAREN1] [SPAREN OPEN]
+')' [IF - BRACE2] <- note that the stage was changed on SPAREN_CLOSE
+'{' [IF - BRACE2] [BRACE OPEN]
+'x' [IF - BRACE2] [BRACE OPEN]
+'--' [IF - BRACE2] [BRACE OPEN]
+';' [IF - BRACE2] [BRACE OPEN]
+'}' [IF - ELSE]
+ <- lack of else kills the ELSE, closes statement
+
+Virtual brace example:
+ if ( x )
+ x--;
+ else if (y)
+ y--;
+ else
+ z++;
+
+'if' [IF - PAREN1]
+'(' [IF - PAREN1] [SPAREN OPEN]
+'x' [IF - PAREN1] [SPAREN OPEN]
+')' [IF - BRACE2]
+'x' [IF - BRACE2] [VBRACE OPEN] <- VBrace open inserted before because
+ the token was not '{'
+'--' [IF - BRACE2] [VBRACE OPEN]
+';' [IF - ELSE] <- Semicolon causes a VBrace close to be
+ inserted after the semicolon
+'else' [ELSE - ELSEIF] <- IF changed into ELSE, expect IF or BRACE
+'x' [ELSE - BRACE2] [VBRACE OPEN] <- lack of '{' -> VBrace
+'++' [ELSE - BRACE2] [VBRACE OPEN]
+';' <- VBrace close inserted after semicolon
+ ELSE removed after statement close
+
+Nested virtual brace example: (EOF represents the end of the file)
+ if ( x )
+ if (y)
+ y--;
+ else
+ z++;
+ EOF
+
+'if' [IF - PAREN1]
+'(' [IF - PAREN1] [PAREN OPEN]
+'x' [IF - PAREN1] [PAREN OPEN]
+')' [IF - BRACE2]
+'if' [IF - BRACE2] [VBRACE OPEN] [IF - PAREN1] <- VBrace on BRACE2, IF opened
+'(' [IF - BRACE2] [VBRACE OPEN] [IF - PAREN1] [SPAREN OPEN]
+'y' [IF - BRACE2] [VBRACE OPEN] [IF - PAREN1] [SPAREN OPEN]
+')' [IF - BRACE2] [VBRACE OPEN] [IF - BRACE2]
+'y' [IF - BRACE2] [VBRACE OPEN] [IF - BRACE2] [VBRACE OPEN]
+'--' [IF - BRACE2] [VBRACE OPEN] [IF - BRACE2] [VBRACE OPEN]
+';' [IF - BRACE2] [VBRACE OPEN] [IF - ELSE]
+'else' [IF - BRACE2] [VBRACE OPEN] [ELSE - ELSEIF]
+'z' [IF - BRACE2] [VBRACE OPEN] [ELSE - BRACE2] [VBRACE OPEN]
+'++' [IF - BRACE2] [VBRACE OPEN] [ELSE - BRACE2] [VBRACE OPEN]
+';' [IF - BRACE2] [VBRACE OPEN] [ELSE - BRACE2] - step1
+ [IF - BRACE2] [VBRACE OPEN] - step2
+ [IF - ELSE] - step3
+EOF
+
+-- this last semi is more complicated - first it terminates the VBRACE and then
+ the else, which then, since it is the end of a statement, terminates the
+ VBRACE. That bumps the IF stage to ELSE.
+ The EOF kills that off (since it is not an else)
+
+Order of operation:
+1) if TOS=VBRACE && PC=SEMI, insert VBRACE close, PC=>VBRACE close
+2) if PC=VBRACE close or PC=BRACE close, and TOS is complex (if/else/etc)
+ then advance complex stage. If statement ends, pop and advance
+
+
+Stages for each complex statement:
+if
+IF-PAREN1, IF-BRACE2, IF-ELSE
+
+if/else
+IF-PAREN1, IF-BRACE2, IF-ELSE, ELSE-ELSEIF, ELSE-BRACE2
+
+if/else if/else
+IF-PAREN1, IF-BRACE2, IF-ELSE, ELSE-ELSEIF, IF-PAREN1, IF-BRACE2, IF-ELSE, ELSE-ELSEIF, ELSE-BRACE2
+
+for
+FOR-PAREN1, FOR-BRACE2
+
+while
+WHILE-PAREN1, WHILE-BRACE2
+
+switch
+SWITCH-PAREN1, SWITCH-BRACE2
+
+synchronized
+SYNCHRONIZED-PAREN1
+
+do/while
+DO-BRACE_DO, DO-WHILE, WHILE-PAREN2
+
+
+Another less-interesting example:
+
+{
+ if (x)
+ volatile
+ {
+ y++;
+ }
+ return y;
+}
+
+'{' [BRACE OPEN]
+'if' [BRACE OPEN] [IF - PAREN1]
+'(' [BRACE OPEN] [IF - PAREN1] [PAREN OPEN]
+'x' [BRACE OPEN] [IF - PAREN1] [PAREN OPEN]
+')' [BRACE OPEN] [IF - BRACE2]
+'volatile' [BRACE OPEN] [IF - BRACE2] [VBRACE OPEN] [VOLATILE - BRACE2]
+'{' [BRACE OPEN] [IF - BRACE2] [VBRACE OPEN] [VOLATILE - BRACE2] [BRACE OPEN]
+'y' [BRACE OPEN] [IF - BRACE2] [VBRACE OPEN] [VOLATILE - BRACE2] [BRACE OPEN]
+'++' [BRACE OPEN] [IF - BRACE2] [VBRACE OPEN] [VOLATILE - BRACE2] [BRACE OPEN]
+';' [BRACE OPEN] [IF - BRACE2] [VBRACE OPEN] [VOLATILE - BRACE2] [BRACE OPEN]
+'}' [BRACE OPEN] [IF - ELSE] <- the brace close ends brace-open,
+ volatile-brace2 and vbrace-open
+'return' [BRACE OPEN] <- not else
+'y' [BRACE OPEN]
+';' [BRACE OPEN]
+'}' <- empties the stack
+
+
+=-----------------------------------------------------------------------------=
+* *
+* Parse Frames *
+* *
+=-----------------------------------------------------------------------------=
+
+The m_parenStack stack is kept on a frame stack.
+The frame stack is need for languages that support preprocessors (C, C++, C#)
+that can arbitrarily change code flow. It also isolates #define macros so
+that they are indented independently and do not affect the rest of the program.
+
+When an #if is hit, a copy of the current frame is push on the frame stack.
+When an #else/#elif is hit, a copy of the current stack is pushed under the
+#if frame and the original (pre-#if) frame is copied to the current frame.
+When #endif is hit, the top frame is popped.
+This has the following effects:
+ - a simple #if / #endif does not affect program flow
+ - #if / #else /#endif - continues from the #if clause
+
+When a #define is entered, the current frame is pushed and cleared.
+When a #define is exited, the frame is popped.
+
+
+Take this example, which isn't very exciting, as both the #if and #else parts
+end up with the same paren stack. This is the usual case.
+
+{
+ foo(param1,
+#ifdef DEBUG
+ "debug");
+#else
+ "release");
+#endif
+}
+
+Right before the #ifdef, we have this for the paren stack:
+ Top> [BRACE OPEN] [PAREN OPEN]
+
+The #ifdef pushes a copy of the current stack, so we have this:
+ Top> [BRACE OPEN] [PAREN OPEN]
+ [BRACE OPEN] [PAREN OPEN]
+
+The close paren after "debug" closes out the PAREN-OPEN on the top of the stack.
+ Top> [BRACE OPEN]
+ [BRACE OPEN] [PAREN OPEN]
+
+The #else swaps the top two frames.
+ Top> [BRACE OPEN] [PAREN OPEN]
+ [BRACE OPEN]
+
+Right after the #else, we hit another close paren after the "release".
+ Top> [BRACE OPEN]
+ [BRACE OPEN]
+
+At the #endif, the top of stack is thrown out, which restores us to the #if path.
+ Top> [BRACE OPEN]
+
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/preprocessor_indentation.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/preprocessor_indentation.txt
new file mode 100644
index 00000000..6db89502
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/preprocessor_indentation.txt
@@ -0,0 +1,414 @@
+
+Preprocessor blocks can arbitrarily alter the program flow and make indenting
+code a challenging task.
+
+This file covers the following topics:
+1) Uncrustify approach to indentation of preprocessor blocks
+2) Rationale for the chosen approach
+3) Recommendations for the user
+
+
+---------------------------------------------------------
+Uncrustify approach to indentation of preprocessor blocks
+---------------------------------------------------------
+
+Uncrustify handles different preprocessor blocks in different ways.
+There are just three simple rules to remember.
+
+A. #ifdef/#endif block
+----------------------
+The contents of the block are indented starting at the same brace level of the
+code preceding the block. Once #endif is reached, any indentation change caused
+by the block is discarded and the following code continues at the same brace
+level of the code preceding the block.
+
+B. #ifdef/#elif/#else/#endif block
+----------------------------------
+The contents of the #ifdef part of the block are indented starting at the same
+brace level of the code preceding the block.
+Once an #elif/#else is reached, the indentation restarts at the brace level of
+the code preceding the #ifdef part of the block. This is repeated for each
+#else and #elif part.
+Once #endif is reached, the following code continues at the same brace level
+reached at the end of the #ifdef part.
+
+C. #define block
+----------------
+The contents of the block are indented starting anew, therefore not following the
+indentation of the code preceding the block. Once the #define ends, any indentation
+change caused by the block is discarded and the following code continues at the same
+brace level of the code preceding the block.
+
+
+---------------------------------
+Rationale for the chosen approach
+---------------------------------
+
+Preprocessor blocks can be very hard to handle and there is no definitive
+correct way that works in all situations. Therefore a compromise approach is
+required, coupled with warning to the user when tricky code is encountered.
+
+A. #ifdef/#endif block
+----------------------
+Let's start with the simplest case, a balanced #ifdef/#endif block. This is a
+block that starts and ends at the same brace level. For example:
+
+ some code A
+ #ifdef TEST
+ some code B
+ #endif
+ some code C
+
+or
+
+ some code A
+ #ifdef TEST
+ {
+ some code B
+ }
+ #endif
+ some code C
+
+These cases are very easy to handle, since the indentation before, through and after
+the preprocessor block is consistent. There is no alteration of the brace level
+from 'some code A' to 'some code C'. Rule A applies nicely to the above code.
+
+Let's now look at a more complex example.
+
+ some code A
+ #ifdef TEST
+ {
+ some code B
+ #endif
+ some code C
+ #ifdef TEST
+ some code D
+ }
+ #endif
+ some code E
+
+This contains two unbalanced #ifdef blocks. Most likely the programmer intended to
+use them in pair, but that is not important when it comes to indentation. The code
+above could be indented as:
+
+ some code A
+ #ifdef TEST
+ {
+ some code B
+ #endif
+ some code C
+ #ifdef TEST
+ some code D
+ }
+ #endif
+ some code E
+
+or as:
+
+ some code A
+ #ifdef TEST
+ {
+ some code B
+ #endif
+ some code C
+ #ifdef TEST
+ some code D
+ }
+ #endif
+ some code E
+
+Note how 'some code C' is indented differently in the two cases: in the first, the
+indentation change caused by the first #ifdef block is discarded, while in the
+second it is taken into consideration.
+Depending on the options used at compile time, the code in the preprocessor blocks
+could be included or not included in the final code, therefore none of the two
+options is superior to the other. A better approach would be to avoid the use
+of unbalanced preprocessor blocks, so that indentation of the code could be uniquely
+defined.
+Uncrustify follows the first version, discarding indentation changes caused by
+the #ifdef block. Warning messages about unbalanced preprocessor blocks can optionally
+be printed by using the option 'pp_warn_unbalanced_if'.
+
+B. #ifdef/#elif/#else/#endif block
+----------------------------------
+Let's start with the simplest case, a balanced #ifdef/#else/#endif block. This is a
+block where each part starts and ends at the same brace level. For example:
+
+ some code A
+ #ifdef TEST
+ some code B
+ #else
+ some code C
+ #endif
+ some code D
+
+or
+
+ some code A
+ #ifdef TEST
+ {
+ some code B
+ }
+ #else
+ {
+ some code C
+ }
+ #endif
+ some code D
+
+or even:
+
+ some code A
+ #ifdef TEST
+ {
+ some code B
+ }
+ #else
+ some code C
+ #endif
+ some code D
+
+These cases are very easy to handle, since the indentation before, through and after
+the preprocessor blocks is consistent. There is no alteration of the brace level
+from 'some code A' to 'some code D'. Rule B applies nicely to the above code.
+
+Let's now look at a more complex example.
+
+ some code A
+ #ifdef TEST
+ {
+ some code B
+ #else
+ some code C
+ #endif
+ some code D
+ #ifdef TEST
+ some code E
+ }
+ #else
+ some code F
+ #endif
+ some code G
+
+This once again raises the question of where 'some code D' should be placed and
+there is no unique best choice.
+Uncrustify has chosen (for reasons explained further below) to:
+- indent each part of an #ifdef/#elif/#else/#endif block starting at the brace
+level of the code preceding #ifdef.
+- continue after #endif at the indentation level reached at the end of the #ifdef
+part.
+This would result in the following formatted code:
+
+ some code A
+ #ifdef TEST
+ {
+ some code B
+ #else
+ some code C
+ #endif
+ some code D
+ #ifdef TEST
+ some code E
+ }
+ #else
+ some code F
+ #endif
+ some code G
+
+And yes, the indentation of 'some code F' may surprise you a bit.
+Here is an even trickier example:
+
+ some code A
+ #ifdef TEST
+ some code B
+ #else
+ {
+ some code C
+ #endif
+ some code D
+ #ifndef TEST
+ some code E
+ }
+ #else
+ some code F
+ #endif
+ some code G
+
+which results in this bizarre output, where 'some code G' is no
+longer aligned with 'some code A':
+
+ some code A
+ #ifdef TEST
+ some code B
+ #else
+ {
+ some code C
+ #endif
+ some code D
+ #ifndef TEST
+ some code E
+ }
+ #else
+ some code F
+ #endif
+ some code G
+
+So why not simply discard all the indentation changes created by an
+#ifdef/#elif/#else/#endif block? The answer is simple: to make sure things
+still work fine after the #endif line! Without going into too much detail here
+(see the overview.odt and theory.txt files for more info) in addition to the
+visible braces, there is a thing called 'virtual braces' which also affects
+indentation. A common use of #ifdef/#elif/#else/#endif blocks is to do some
+different things on the same set of variables. In this case, there may not be
+any visible brace, but virtual braces may get modified between the code before
+and after the preprocessor block. Throwing away the whole thing would result
+in the code after #endif being formatted in a completely wrong manner.
+As an example, consider this piece of code:
+
+ some code A
+ if (cond1)
+ some var = value1;
+ else
+ some var =
+ #ifdef TEST
+ value2;
+ #else
+ value3;
+ #endif
+ some code B
+
+The formatted version looks exactly like the original. But if the complete
+#ifdef/#else/#endif block was thrown away, the result would be as if 'some code B'
+was being indented as part of the else (not #else) block, at a position just after
+the = symbol. By retaining the changes made in the #ifdef part, the 'else' block
+is correctly handled and 'some code B' is indented as per its original position.
+
+C. #define block
+----------------
+Here is an example showing how #define works. The following code:
+
+ {
+ {
+ some code A
+ #define TEST \
+ { \
+ some defs \
+ }
+ some code B
+ }
+ }
+
+would be formatted as:
+
+ {
+ {
+ some code A
+ #define TEST \
+ { \
+ some defs \
+ }
+ some code B
+ }
+ }
+
+Notice how 'some code B' and 'some code A' are indented in the same way, while the
+#define body starts from anew.
+
+
+----------------------------
+Recommendations for the user
+----------------------------
+The golden rule is to avoid unbalanced preprocessor blocks. This keeps things
+simple and indentation can be uniquely defined. Existing unbalanced blocks should
+be reworked so that all braces are properly balanced, either outside or inside the
+preprocessor blocks.
+If you have a huge code base, it may be difficult to quickly find offending blocks.
+If the option 'pp_warn_unbalanced_if' is set to true, Uncrustify will print warning
+messages at the end of each unbalanced preprocessor block part based on the following rules:
+
+1) unbalanced #ifdef part
+This works for either an #ifdef/#endif block or the first part of an #ifdef/#elif/#else/#endif
+block. If the #ifdef ends at a brace level different from where it starts, a message will
+be displayed, highlighting both the starting and ending indentation levels.
+
+2) unbalanced #elif or #else part
+If such part ends at a different brace level than the corresponding #ifdef part, a message
+will be displayed highlighting the ending indentation levels of both the part in question
+and the respective #ifdef part.
+
+3) unbalanced #define
+If a #define ends at a brace level different from where it starts, a message will
+be displayed, highlighting the ending indentation level.
+
+Here is an example with a mix of balanced and unbalanced blocks, with line numbers in front
+for easier reference:
+
+ 1 void Fun(int &data)
+ 2 {
+ 3 data = 1;
+ 4
+ 5 #ifdef MANUAL_LAYOUT
+ 6 {
+ 7 data = 2;
+ 8 }
+ 9 #endif
+ 10
+ 11 #ifdef MANUAL_LAYOUT
+ 12 {
+ 13 {
+ 14 data = 2;
+ 15 #elif TEST1
+ 16 data = 21;
+ 17 #elif TEST2
+ 18 {
+ 19 data = 22;
+ 20 #elif TEST3
+ 21 {
+ 22 {
+ 23 data = 22;
+ 24 #else
+ 25 {
+ 26 {
+ 27 data = 22;
+ 28 #endif
+ 29
+ 30 data = 3;
+ 31
+ 32 #ifdef MANUAL_LAYOUT
+ 33 {
+ 34 data = 4;
+ 35 #else
+ 36 data = 5;
+ 37 #endif
+ 38
+ 39 #ifdef MANUAL_LAYOUT
+ 40 data = 6;
+ 41 #else
+ 42 data = 7;
+ 43 #endif
+ 44
+ 45 #ifdef MANUAL_LAYOUT
+ 46 }
+ 47 }
+ 48 #endif
+ 49
+ 50 #ifdef MANUAL_LAYOUT
+ 51 }
+ 52 #endif
+ 53
+ 54 data = 8;
+ 55
+ 56 data = 9;
+ 57 }
+
+These are the warning messages related to unbalanced preprocessor blocks
+printed by Uncrustify when 'pp_warn_unbalanced_if' is true.
+
+check(236): orig line is 15, unbalanced #if block braces (1), in-level is 1, out-level is 3
+check(248): orig line is 17, unbalanced #if-#else block braces (1), #else out-level is 1, #if out-level is 3
+check(248): orig line is 20, unbalanced #if-#else block braces (1), #else out-level is 2, #if out-level is 3
+check(236): orig line is 35, unbalanced #if block braces (1), in-level is 3, out-level is 4
+check(291): orig line is 37, unbalanced #if-#else block braces (2), #else out-level is 3, #if out-level is 4
+check(321): orig line is 48, unbalanced #if block braces (2), in-level is 4, out-level is 2
+check(321): orig line is 52, unbalanced #if block braces (2), in-level is 4, out-level is 3
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/theory.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/theory.txt
index 37ba9da1..37ba9da1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/theory.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/theory.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/threads.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/threads.txt
index f6ed4edd..f6ed4edd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/threads.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/threads.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/track.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/track.html
index e49e4370..e49e4370 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/documentation/track.html
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/documentation/track.html
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/CMakeLists.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/CMakeLists.txt
index 72b6efa3..72b6efa3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/CMakeLists.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/CMakeLists.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/CMake_catFiles.cmake b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/CMake_catFiles.cmake
index c637ea24..c637ea24 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/CMake_catFiles.cmake
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/CMake_catFiles.cmake
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/CMake_emscripten_test.cmake b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/CMake_emscripten_test.cmake
index a37ee945..a37ee945 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/CMake_emscripten_test.cmake
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/CMake_emscripten_test.cmake
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/README.md b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/README.md
index 22012383..22012383 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/README.md
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/README.md
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/build.sh b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/build.sh
index df4b6fe3..df4b6fe3 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/build.sh
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/build.sh
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/libUncrustify.d.ts b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/libUncrustify.d.ts
index 1e7b7fb6..1e7b7fb6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/libUncrustify.d.ts
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/libUncrustify.d.ts
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/postfix_file b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/postfix_file
index 17315134..17315134 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/postfix_file
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/postfix_file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/postfix_module.js b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/postfix_module.js
index cbf8f57b..cbf8f57b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/postfix_module.js
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/postfix_module.js
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/prefix_file b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/prefix_file
index 6a6b5e98..6a6b5e98 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/prefix_file
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/prefix_file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/prefix_module.js b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/prefix_module.js
index 05d09cd7..05d09cd7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/prefix_module.js
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/prefix_module.js
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/test/run_tests.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/test/run_tests.py
index c7a4fcae..c7a4fcae 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/test/run_tests.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/test/run_tests.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/test/test_run.js b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/test/test_run.js
index 27627094..27627094 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/emscripten/test/test_run.js
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/emscripten/test/test_run.js
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/MS-calling_conventions.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/MS-calling_conventions.cfg
index 36e9e14f..36e9e14f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/MS-calling_conventions.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/MS-calling_conventions.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/align_assign.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/align_assign.txt
index ecc85081..ecc85081 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/align_assign.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/align_assign.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/amxmodx.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/amxmodx.cfg
new file mode 100644
index 00000000..7fe5d13f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/amxmodx.cfg
@@ -0,0 +1,208 @@
+#
+# AMX Mod X style for Pawn (or as close as possible)
+#
+
+#######################
+# Basic Indenting Stuff
+
+# (a/i/r) comment notation for add/ignore/remove which is the actual setting
+input_tab_size = 1 # tab size on input file: usually 8
+output_tab_size = 8 # tab size for output: usually 8
+indent_columns = 8 # ie 3 or 8
+indent_with_tabs = 2 # 1=only to the 'level' indent, 2=use tab indenting
+#indent_paren_nl = 1 # indent-align under paren for open followed by nl
+
+pp_indent = remove # indent preproc 1 space per level (a/i/r)
+pp_space_after = remove # spaces between # and word (add/ignore/remove)
+
+#indent_switch_case = 1 # spaces to indent case from switch
+#indent_case_brace = 0 # spaces to indent '{' from case
+ # (usually 0 or indent_columns)
+
+#indent_brace = 0 # spaces to indent '{' from level (usually 0)
+indent_braces = 0 # whether to indent the braces or not
+#indent_label = 0 # 0=left >0=col from left (absolute column),
+ # <0=sub from brace indent (relative column)
+
+indent_align_string = false # True/False - indent align broken strings
+indent_col1_comment = false # indent comments in column 1
+indent_func_call_param = false # indent continued function calls to indent_columns otherwise index_columns + spaces to align with open paren.
+
+indent_namespace = true # indent stuff inside namespace braces
+indent_class = true # indent stuff inside class braces
+
+
+############################
+# Misc Inter-element Spacing
+# Force,Ignore,Add,Remove
+
+# ignored by nl_*_brace = true
+sp_paren_brace = force # space between ')' and '{'
+sp_fparen_brace = force # space between ')' and '{' of function
+sp_sparen_brace = force # space between ')' and '{' of if, while, etc
+
+sp_after_cast = force # space after cast - "(int) a" vs "(int)a"
+
+sp_before_byref = force # space before '&' of 'fcn(int& idx)'
+
+sp_inside_fparen = force # space inside 'foo( xxx )' vs 'foo(xxx)'
+sp_inside_fparens = remove # space inside 'foo( )' vs 'foo()'
+sp_inside_paren = remove # space inside '+ ( xxx )' vs '+ (xxx)'
+sp_inside_square = remove # space inside 'byte[ 5 ]' vs 'byte[5]'
+sp_inside_sparen = force # space inside 'if( xxx )' vs 'if(xxx)'
+sp_inside_for = force # space inside 'for( xxx )' vs 'for(xxx)'
+sp_inside_angle = ignore # space inside '<>', as in '<class T>'
+
+sp_before_sparen = force # space before '(' of 'if/for/while/switch'
+sp_after_sparen = force # space after ')' of 'if/for/while/switch'
+ # the do-while does not get set here
+
+sp_before_angle = ignore # space before '<>', as in '<class T>'
+sp_after_angle = ignore # space after '<>', as in '<class T>'
+
+sp_before_square = ignore # space before single '['
+sp_before_squares = remove # space before '[]', as in 'byte []'
+
+sp_paren_paren = force # space between nested parens - '( (' vs '(('
+
+sp_return_paren = remove # space between 'return' and '('
+sp_sizeof_paren = remove # space between 'sizeof' and '('
+
+sp_after_comma = force # space after ','
+
+sp_arith = force # space around + - / * etc
+sp_bool = force # space around || &&
+sp_compare = force # space around < > ==, etc
+sp_assign = force # space around =, +=, etc
+
+sp_func_def_paren = remove # space between 'func' and '(' - "foo (" vs "foo("
+sp_func_call_paren = remove # space between 'func' and '(' - "foo (" vs "foo("
+sp_func_proto_paren = remove # space between 'func' and '(' - "foo (" vs "foo("
+sp_func_class_paren = remove # space between ctor/dtor and '('
+
+#sp_type_func = 1 # space between return type and 'func'
+ # a minimum of 1 is forced except for '*'
+
+
+sp_special_semi = remove # space empty stmt ';' on while, if, for
+ # example "while (*p++ = ' ') ;"
+sp_before_semi = remove # space before all ';'
+sp_inside_braces = force # space inside '{' and '}' - "{ 1, 2, 3 }"
+sp_inside_braces_enum = force # space inside enum '{' and '}' - "{ a, b, c }"
+sp_inside_braces_struct = force # space inside struct/union '{' and '}'
+
+sp_macro = force # space between macro and value, ie '#define a 6'
+sp_macro_func = force # space between macro and value, ie '#define a 6'
+
+sp_square_fparen = remove # weird pawn stuff: native yark[rect](a[rect])
+sp_after_tag = remove # pawn: space after a tag colon
+
+
+################################
+# Code Alignment
+# (not left column spaces/tabs)
+
+align_with_tabs = true # use tabs for aligning (0/1)
+align_keep_tabs = false # keep non-indenting tabs
+align_on_tabstop = true # always align on tabstops
+align_nl_cont = 0 # align the back-slash \n combo (macros)
+align_enum_equ_span = 1 # align the '=' in enums
+align_assign_span = 1 # align on '='. 0=don't align
+align_assign_thresh = 0 # threshold for aligning on '='. 0=no limit
+align_right_cmt_span = 8 # align comment that end lines. 0=don't align
+align_var_def_span = 1 # align variable defs on variable (span for regular stuff)
+align_var_def_thresh = 0 # align variable defs threshold
+align_var_def_inline = true # also align inline struct/enum/union var defs
+align_var_def_star_style = 1 # the star is part of the variable name
+align_var_def_colon = false # align the colon in struct bit fields
+align_var_struct_span = 1 # span for struct/union (0=don't align)
+align_pp_define_span = 1 # align bodies in #define statements
+align_pp_define_gap = 1 # min space between define label and value "#define a <---> 16"
+
+align_struct_init_span = 1 # align structure initializer values
+align_func_proto_span = 1 # align function prototypes
+align_number_right = false # right-align numbers (not fully supported, yet)
+align_typedef_span = 1 # align single-line typedefs
+align_typedef_gap = 1 # minimum spacing
+align_typedef_star_style = 1 # Start aligning style
+ # 0: '*' not part of type
+ # 1: '*' part of the type - no space
+ # 2: '*' part of type, dangling
+
+
+#####################################
+# Newline Adding and Removing Options
+# Add/Remove/Ignore
+
+nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
+nl_func_decl_start = ignore # newline after the '(' in a function decl
+nl_func_decl_args = ignore # newline after each ',' in a function decl
+nl_func_decl_end = ignore # newline before the ')' in a function decl
+nl_func_type_name = ignore # newline between return type and func name in def
+nl_var_def_blk_end_func_top = 0 # newline after a block of variable defs
+nl_before_case = false # newline before 'case' statement
+nl_after_return = false # newline after return statement
+nl_after_case = false # disallow nested "case 1: a=3;"
+nl_fcall_brace = add # newline between function call and open brace
+nl_squeeze_ifdef = false # no blanks after #ifxx, #elxx, or before #endif TRUE/F
+nl_enum_brace = ignore # nl between enum and brace
+nl_struct_brace = ignore # nl between struct and brace
+nl_union_brace = ignore # nl between union and brace
+nl_assign_brace = ignore # nl between '=' and brace
+nl_class_brace = ignore # nl between class name and brace
+nl_namespace_brace = ignore # nl between namespace name and brace
+
+nl_do_brace = add # nl between do and {
+nl_if_brace = add # nl between if and {
+nl_for_brace = add # nl between for and {
+nl_else_brace = remove # nl between else and {
+nl_while_brace = add # nl between while and {
+nl_switch_brace = add # nl between switch and {
+nl_brace_else = remove # nl between } and else
+nl_brace_while = add # nl between } and while of do stmt
+
+nl_elseif_brace = add # nl between close paren and open brace in 'else if () {'
+
+nl_define_macro = 0 # alter newlines in #define macros
+nl_start_of_file = ignore # alter newlines at the start of file
+nl_start_of_file_min = 0 # min number of newlines at the start of the file
+nl_end_of_file = ignore # alter newlines at the end of file
+nl_end_of_file_min = 0 # min number of newlines at the end of the file
+
+pos_bool = start # end=move &&/|| to EOL ignore=gnore, start=move to SOL
+
+#####################
+# Blank Line Options
+
+nl_before_block_comment = 3 # before a block comment (stand-alone
+ # comment-multi), except after brace open
+nl_after_func_body = 3 # after the closing brace of a function body
+nl_after_func_proto = 3 # after each prototype
+nl_after_func_proto_group = 3 # after a block of prototypes
+nl_max = 3 # maximum consecutive newlines (3=2 lines)
+
+eat_blanks_after_open_brace = true # remove blank lines after {
+eat_blanks_before_close_brace = true # remove blank lines before }
+
+########################
+# Code Modifying Options
+# (non-whitespace)
+
+mod_paren_on_return = force # add or remove paren on return
+mod_full_brace_nl = 1 # max number of newlines to span w/o braces
+mod_full_brace_if = ignore # add or remove braces on if
+mod_full_brace_for = ignore # add or remove braces on for
+mod_full_brace_do = ignore # add or remove braces on do
+mod_full_brace_while = ignore # add or remove braces on while
+mod_pawn_semicolon = True # add optional semicolons
+mod_full_brace_function = add # add optional braces on Pawn functions
+
+
+#######################
+# Comment Modifications
+
+cmt_star_cont = true # put a star on subsequent comment lines
+cmt_cpp_to_c = true # convert CPP comments to C comments
+cmt_cpp_group = true # if UO_cmt_cpp_to_c, try to group in one big C comment
+cmt_cpp_nl_start = true # put a blank /* at the start of a converted group
+cmt_cpp_nl_end = true # put a nl before the */ in a converted group
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/ben.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/ben.cfg
new file mode 100644
index 00000000..269b3cb1
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/ben.cfg
@@ -0,0 +1,1220 @@
+#
+# General options
+#
+
+# The type of line endings
+newlines = lf # auto/lf/crlf/cr
+
+# The original size of tabs in the input
+input_tab_size = 8 # number
+
+# The size of tabs in the output (only used if align_with_tabs=true)
+output_tab_size = 3 # 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
+
+# Replace tab characters found in string literals with the escape sequence \t instead.
+string_replace_tab_chars = false # false/true
+
+# Allow interpreting '>=' and '>>=' as part of a template in 'void f(list<list<B>>=val);'.
+# If true (default), 'assert(x<0 && y>=3)' will be broken.
+# Improvements to template detection may make this option obsolete.
+tok_split_gte = false # false/true
+
+# Override the default ' *INDENT-OFF*' in comments for disabling processing of part of the file.
+disable_processing_cmt = "" # string
+
+# Override the default ' *INDENT-ON*' in comments for enabling processing of part of the file.
+enable_processing_cmt = "" # string
+
+# Enable parsing of digraphs. Default=false
+enable_digraphs = false # false/true
+
+# If the file contains bytes with values between 128 and 255, but is not UTF-8, then output as UTF-8
+utf8_byte = false # false/true
+
+# Force the output encoding to UTF-8
+utf8_force = false # false/true
+
+#
+# Indenting
+#
+
+# The number of columns to indent per level.
+# Usually 2, 3, 4, or 8.
+indent_columns = 3 # number
+
+# The continuation indent. If non-zero, this overrides the indent of '(' and '=' continuation indents.
+# For FreeBSD, this is set to 4. Negative value is absolute and not increased for each ( level
+indent_continue = 0 # number
+
+# How to use tabs when indenting code
+# 0=spaces only
+# 1=indent with tabs to brace level, align with spaces
+# 2=indent and align with tabs, using spaces when not on a tabstop
+indent_with_tabs = 0 # number
+
+# Comments that are not a brace level are indented with tabs on a tabstop.
+# Requires indent_with_tabs=2. If false, will use spaces.
+indent_cmt_with_tabs = false # false/true
+
+# Whether to indent strings broken by '\' so that they line up
+indent_align_string = true # 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
+
+# Disabled indenting class braces if indent_braces is true
+indent_braces_no_class = false # false/true
+
+# Disabled indenting struct braces if indent_braces is true
+indent_braces_no_struct = false # false/true
+
+# Indent based on the size of the brace parent, i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
+indent_brace_parent = false # false/true
+
+# Indent based on the paren open instead of the brace open in '({\n', default is to indent by brace.
+indent_paren_open_brace = false # false/true
+
+# Whether the 'namespace' body is indented
+indent_namespace = false # false/true
+
+# Only indent one namespace and no sub-namespaces.
+# Requires indent_namespace=true.
+indent_namespace_single_indent = false # false/true
+
+# The number of spaces to indent a namespace block
+indent_namespace_level = 0 # number
+
+# If the body of the namespace is longer than this number, it won't be indented.
+# Requires indent_namespace=true. Default=0 (no limit)
+indent_namespace_limit = 0 # number
+
+# Whether the 'extern "C"' body is indented
+indent_extern = false # false/true
+
+# Whether the 'class' body is indented
+indent_class = true # false/true
+
+# Whether to indent the stuff after a leading base class colon
+indent_class_colon = true # false/true
+
+# Indent based on a class colon instead of the stuff after the colon.
+# Requires indent_class_colon=true. Default=false
+indent_class_on_colon = false # false/true
+
+# Whether to indent the stuff after a leading class initializer colon
+indent_constr_colon = false # false/true
+
+# Virtual indent from the ':' for member initializers. Default is 2
+indent_ctor_init_leading = 2 # number
+
+# Additional indenting for constructor initializer list
+indent_ctor_init = 0 # number
+
+# False=treat 'else\nif' as 'else if' for indenting purposes
+# True=indent the 'if' one level
+indent_else_if = false # false/true
+
+# Amount to indent variable declarations after a open brace. neg=relative, pos=absolute
+indent_var_def_blk = 0 # number
+
+# Indent continued variable declarations instead of aligning.
+indent_var_def_cont = false # false/true
+
+# How to indent continued shift expressions ('<<' and '>>').
+# Set align_left_shift=false when using this.
+# 0: Align shift operators instead of indenting them (default)
+# 1: Indent by one level
+# -1: Preserve original indentation
+indent_shift = 0 # number
+
+# True: force indentation of function definition to start in column 1
+# False: use the default behavior
+indent_func_def_force_col1 = 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
+
+# Same as indent_func_call_param, but for templates
+indent_template_param = false # false/true
+
+# Double the indent for indent_func_xxx_param options
+indent_func_param_double = false # false/true
+
+# Indentation column for standalone 'const' function decl/proto qualifier
+indent_func_const = 0 # number
+
+# Indentation column for standalone 'throw' function decl/proto qualifier
+indent_func_throw = 0 # number
+
+# The number of spaces to indent a continued '->' or '.'
+# Usually set to 0, 1, or indent_columns.
+indent_member = 3 # number
+
+# Spaces to indent single line ('//') comments on lines before code
+indent_single_line_comments_before = 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 = 0 # 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 = 3 # 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
+# -1: Preserve original indentation
+indent_paren_close = 0 # number
+
+# Controls the indent of a comma when inside a paren.If 1, aligns under the open paren
+indent_comma_paren = 0 # number
+
+# Controls the indent of a BOOL operator when inside a paren.If 1, aligns under the open paren
+indent_bool_paren = 0 # number
+
+# If 'indent_bool_paren' is 1, controls the indent of the first expression. If TRUE, aligns the first expression to the following ones
+indent_first_bool_expr = 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
+
+# Align continued statements at the '='. Default=True
+# If FALSE or the '=' is followed by a newline, the next line is indent one tab.
+indent_align_assign = true # false/true
+
+# Indent OC blocks at brace level instead of usual rules.
+indent_oc_block = false # false/true
+
+# Indent OC blocks in a message relative to the parameter name.
+# 0=use indent_oc_block rules, 1+=spaces to indent
+indent_oc_block_msg = 0 # number
+
+# Minimum indent for subsequent parameters
+indent_oc_msg_colon = 0 # number
+
+# If true, prioritize aligning with initial colon (and stripping spaces from lines, if necessary).
+# Default is true.
+indent_oc_msg_prioritize_first_colon = true # false/true
+
+# If indent_oc_block_msg and this option are on, blocks will be indented the way that Xcode does by default (from keyword if the parameter is on its own line; otherwise, from the previous indentation level).
+indent_oc_block_msg_xcode_style = false # false/true
+
+# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is relative to a msg keyword.
+indent_oc_block_msg_from_keyword = false # false/true
+
+# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is relative to a msg colon.
+indent_oc_block_msg_from_colon = false # false/true
+
+# If indent_oc_block_msg and this option are on, blocks will be indented from where the block caret is.
+indent_oc_block_msg_from_caret = false # false/true
+
+# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is.
+indent_oc_block_msg_from_brace = false # false/true
+
+# When identing after virtual brace open and newline add further spaces to reach this min. indent.
+indent_min_vbrace_open = 0 # number
+
+# TRUE: When identing after virtual brace open and newline add further spaces after regular indent to reach next tabstop.
+indent_vbrace_open_on_tabstop = false # false/true
+
+#
+# Spacing options
+#
+
+# Add or remove space around arithmetic operator '+', '-', '/', '*', etc
+# also '>>>' '<<' '>>' '%' '|'
+sp_arith = force # ignore/add/remove/force
+
+# Add or remove space around assignment operator '=', '+=', etc
+sp_assign = force # ignore/add/remove/force
+
+# Add or remove space around preprocessor '##' concatenation operator. Default=Add
+sp_pp_concat = add # ignore/add/remove/force
+
+# Add or remove space after preprocessor '#' stringify operator. Also affects the '#@' charizing operator.
+sp_pp_stringify = add # ignore/add/remove/force
+
+# Add or remove space around boolean operators '&&' and '||'
+sp_bool = force # ignore/add/remove/force
+
+# Add or remove space around compare operator '<', '>', '==', etc
+sp_compare = force # ignore/add/remove/force
+
+# Add or remove space inside '(' and ')'
+sp_inside_paren = remove # ignore/add/remove/force
+
+# Add or remove space between nested parens: '((' vs ') )'
+sp_paren_paren = remove # ignore/add/remove/force
+
+# Whether to balance spaces inside nested parens
+sp_balance_nested_parens = false # false/true
+
+# Add or remove space before pointer star '*'
+sp_before_ptr_star = force # ignore/add/remove/force
+
+# Add or remove space between pointer stars '*'
+sp_between_ptr_star = remove # ignore/add/remove/force
+
+# Add or remove space after pointer star '*', if followed by a word.
+sp_after_ptr_star = remove # ignore/add/remove/force
+
+# Add or remove space before a reference sign '&'
+sp_before_byref = remove # ignore/add/remove/force
+
+# Add or remove space after reference sign '&', if followed by a word.
+sp_after_byref = force # ignore/add/remove/force
+
+# Add or remove space between type and word. Default=Force
+sp_after_type = force # ignore/add/remove/force
+
+# Add or remove space before '<>'
+sp_before_angle = remove # ignore/add/remove/force
+
+# Add or remove space inside '<' and '>'
+sp_inside_angle = remove # ignore/add/remove/force
+
+# Add or remove space after '<>'
+sp_after_angle = force # ignore/add/remove/force
+
+# Add or remove space between '>' and '>' in '>>' (template stuff C++/C# only). Default=Add
+sp_angle_shift = add # ignore/add/remove/force
+
+# Permit removal of the space between '>>' in 'foo<bar<int> >' (C++11 only). Default=False
+# sp_angle_shift cannot remove the space without this option.
+sp_permit_cpp11_shift = false # false/true
+
+# Add or remove space before '(' of 'if', 'for', 'switch', 'while', etc.
+sp_before_sparen = force # ignore/add/remove/force
+
+# Add or remove space inside if-condition '(' and ')'
+sp_inside_sparen = remove # ignore/add/remove/force
+
+# Add or remove space inside for-loop '(' and ')'
+sp_inside_for = remove # ignore/add/remove/force
+
+# Add or remove space after ')' of 'if', 'for', 'switch', and 'while', etc.
+sp_after_sparen = force # ignore/add/remove/force
+
+# Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while', etc.
+sp_sparen_brace = add # ignore/add/remove/force
+
+# Add or remove space before ';'. Default=Remove
+sp_before_semi = remove # ignore/add/remove/force
+
+# Add or remove space before a semicolon of an empty left part of a for statement.
+sp_before_semi_for_empty = force # ignore/add/remove/force
+
+# Add or remove space between the semicolons of an empty middle part of a for statement.
+sp_between_semi_for_empty = force # ignore/add/remove/force
+
+# Add or remove space after ';', except when followed by a comment. Default=Add
+sp_after_semi = add # ignore/add/remove/force
+
+# Add or remove space after ';' in non-empty 'for' statements. Default=Force
+sp_after_semi_for = force # ignore/add/remove/force
+
+# Add or remove space inside a non-empty '[' and ']'
+sp_inside_square = remove # ignore/add/remove/force
+
+# Add or remove space after ','
+sp_after_comma = force # ignore/add/remove/force
+
+# Add or remove space before ','
+sp_before_comma = remove # ignore/add/remove/force
+
+# Add or remove space between an open paren and comma: '(,' vs '( ,'
+sp_paren_comma = force # ignore/add/remove/force
+
+# Add or remove space before case ':'. Default=Remove
+sp_before_case_colon = remove # ignore/add/remove/force
+
+# Add or remove space after C/D cast, i.e. 'cast(int)a' vs 'cast(int) a' or '(int)a' vs '(int) a'
+sp_after_cast = remove # ignore/add/remove/force
+
+# Add or remove space between 'sizeof' and '('
+sp_sizeof_paren = remove # ignore/add/remove/force
+
+# Add or remove space inside enum '{' and '}'
+sp_inside_braces_enum = force # ignore/add/remove/force
+
+# Add or remove space inside struct/union '{' and '}'
+sp_inside_braces_struct = force # ignore/add/remove/force
+
+# Add or remove space inside '{' and '}'
+sp_inside_braces = force # 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 = force # 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 function '(' and ')'
+sp_inside_fparen = remove # ignore/add/remove/force
+
+# Add or remove space between ')' and '{' of function
+sp_fparen_brace = add # 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 = remove # ignore/add/remove/force
+
+# Add or remove space between 'return' and '('
+sp_return_paren = remove # ignore/add/remove/force
+
+# Add or remove space between '}' and the name of a typedef on the same line
+sp_brace_typedef = force # ignore/add/remove/force
+
+# Add or remove space between type and open brace of an unnamed temporary
+# direct-list-initialization.
+sp_type_brace_init_lst = add # ignore/add/remove/force
+
+# Add or remove space between a variable and '{' for a namespace
+sp_word_brace_ns = add # ignore/add/remove/force
+
+# Add or remove space before the '::' operator
+sp_before_dc = remove # ignore/add/remove/force
+
+# Add or remove space after the '::' operator
+sp_after_dc = remove # ignore/add/remove/force
+
+# Add or remove space after the '!' (not) operator. Default=Remove
+sp_not = remove # ignore/add/remove/force
+
+# Add or remove space after the '~' (invert) operator. Default=Remove
+sp_inv = remove # ignore/add/remove/force
+
+# Add or remove space after the '&' (address-of) operator. Default=Remove
+# 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. Default=Remove
+sp_member = remove # ignore/add/remove/force
+
+# Add or remove space after the '*' (dereference) operator. Default=Remove
+# 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'. Default=Remove
+sp_sign = remove # ignore/add/remove/force
+
+# Add or remove space before or after '++' and '--', as in '(--x)' or 'y++;'. Default=Remove
+sp_incdec = remove # ignore/add/remove/force
+
+# Add or remove space before a backslash-newline at the end of a line. Default=Add
+sp_before_nl_cont = add # ignore/add/remove/force
+
+# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make sense here.
+sp_case_label = remove # ignore/add/remove/force
+
+# TRUE: If space is added with sp_cmt_cpp_start, do it after doxygen sequences like '///', '///<', '//!' and '//!<'.
+sp_cmt_cpp_doxygen = false # false/true
+
+# TRUE: If space is added with sp_cmt_cpp_start, do it after Qt translator or meta-data comments like '//:', '//=', and '//~'.
+sp_cmt_cpp_qttr = false # false/true
+
+# Number of spaces before a trailing comment
+sp_num_before_tr_cmt = 0 # number
+
+#
+# Code alignment (not left column spaces/tabs)
+#
+
+# Whether to keep non-indenting tabs
+align_keep_tabs = false # false/true
+
+# Whether to use tabs for aligning
+align_with_tabs = false # false/true
+
+# Whether to bump out to the next tab when aligning
+align_on_tabstop = false # false/true
+
+# Whether to right-align numbers
+align_number_right = true # false/true
+
+# Whether to keep whitespace not required for alignment.
+align_keep_extra_space = false # false/true
+
+# Align variable definitions in prototypes and functions
+align_func_params = true # false/true
+
+# Align parameters in single-line functions that have the same name.
+# The function names must already be aligned with each other.
+align_same_func_call_params = false # false/true
+
+# The span for aligning parameters in single line functions with the same name (0=don't align).
+align_same_func_call_params_span = 0 # unsigned number
+
+# The thresh for aligning function call parameters (0=no limit).
+align_same_func_call_params_thresh = 0 # unsigned number
+
+# The span for aligning variable definitions (0=don't align)
+align_var_def_span = 1 # number
+
+# How to align the star in variable definitions.
+# 0=Part of the type 'void * foo;'
+# 1=Part of the variable 'void *foo;'
+# 2=Dangling 'void *foo;'
+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 = 0 # number
+
+# The threshold for aligning variable definitions (0=no limit)
+align_var_def_thresh = 16 # 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 any attribute after the variable name
+align_var_def_attribute = false # false/true
+
+# Whether to align inline struct/enum/union variable definitions
+align_var_def_inline = true # false/true
+
+# The span for aligning on '=' in assignments (0=don't align)
+align_assign_span = 1 # number
+
+# The threshold for aligning on '=' in assignments (0=no limit)
+align_assign_thresh = 12 # number
+
+# The span for aligning on '=' in enums (0=don't align)
+align_enum_equ_span = 16 # 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 = 99 # 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 = 3 # number
+
+# The minimum space between the type and the synonym of a typedef
+align_typedef_gap = 3 # number
+
+# The span for aligning single-line typedefs (0=don't align)
+align_typedef_span = 5 # 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 typedef 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 typedef 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 = 3 # 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
+
+# If a trailing comment is more than this number of columns away from the text it follows,
+# it will qualify for being aligned. This has to be > 0 to do anything.
+align_right_cmt_gap = 0 # number
+
+# Align trailing comment at or beyond column N; 'pulls in' comments as a bonus side effect (0=ignore)
+align_right_cmt_at_col = 0 # number
+
+# 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
+
+# Align function protos on the 'operator' keyword instead of what follows
+align_on_operator = false # false/true
+
+# 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 and how to align backslashes that split a macro onto multiple lines.
+# This will not work right if the macro contains a multi-line comment.
+#
+# 0: Do nothing (default)
+# 1: Align the backslashes in the column at the end of the longest line
+# 2: Align with the backslash that is farthest to the left, or, if that
+# backslash is farther left than the end of the longest line, at the end of
+# the longest line
+# 3: Align with the backslash that is farthest to the right
+align_nl_cont = 0 # number
+
+# # Align macro functions and variables together
+align_pp_define_together = false # false/true
+
+# The minimum space between label and value of a preprocessor define
+align_pp_define_gap = 4 # number
+
+# The span for aligning on '#define' bodies (0=don't align, other=number of lines including comments between blocks)
+align_pp_define_span = 3 # number
+
+# Align lines that start with '<<' with previous '<<'. Default=true
+align_left_shift = true # false/true
+
+# Align text after asm volatile () colons.
+align_asm_colon = true # false/true
+
+# Span for aligning parameters in an Obj-C message call on the ':' (0=don't align)
+align_oc_msg_colon_span = 0 # number
+
+# If true, always align with the first parameter, even if it is too short.
+align_oc_msg_colon_first = false # false/true
+
+# Aligning parameters in an Obj-C '+' or '-' declaration on the ':'
+align_oc_decl_colon = false # false/true
+
+#
+# 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 = true # false/true
+
+# Don't split one-line braced statements inside a class xx { } body
+nl_class_leave_one_liners = true # 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 C++11 lambdas - '[]() { return 0; }'
+nl_cpp_lambda_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
+
+# Don't split one-line while statements - 'while(a) b++;'
+nl_while_leave_one_liners = false # false/true
+
+# Don't split one-line OC messages
+nl_oc_msg_leave_one_liner = false # false/true
+
+# Add or remove newlines at the start of the file
+nl_start_of_file = remove # 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 = force # 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
+
+# The number of blank lines after a block of variable definitions at the top of a function body
+# 0 = No change (default)
+nl_var_def_blk_end_func_top = 1 # number
+
+# The number of newlines before a block of typedefs
+# 0 = No change (default)
+nl_typedef_blk_start = 0 # number
+
+# The number of newlines after a block of typedefs
+# 0 = No change (default)
+nl_typedef_blk_end = 0 # number
+
+# The maximum consecutive newlines within a block of typedefs
+# 0 = No change (default)
+nl_typedef_blk_in = 0 # number
+
+# The number of newlines before a block of variable definitions not at the top of a function body
+# 0 = No change (default)
+nl_var_def_blk_start = 0 # number
+
+# The number of newlines after a block of variable definitions not at the top of a function body
+# 0 = No change (default)
+nl_var_def_blk_end = 0 # number
+
+# The maximum consecutive newlines within a block of variable definitions
+# 0 = No change (default)
+nl_var_def_blk_in = 0 # number
+
+# Add or remove newline between a function call's ')' and '{', as in:
+# list_for_each(item, &list) { }
+nl_fcall_brace = add # ignore/add/remove/force
+
+# Add or remove newline between 'enum' and '{'
+nl_enum_brace = force # ignore/add/remove/force
+
+# Add or remove newline between 'struct and '{'
+nl_struct_brace = force # ignore/add/remove/force
+
+# Add or remove newline between 'union' and '{'
+nl_union_brace = force # 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' and '{'
+nl_else_brace = add # ignore/add/remove/force
+
+# Add or remove newline between get/set and '{'
+nl_getset_brace = force # ignore/add/remove/force
+
+# Add or remove newline between 'for' and '{'
+nl_for_brace = add # 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 = remove # ignore/add/remove/force
+
+# Add or remove newline between 'switch' and '{'
+nl_switch_brace = add # ignore/add/remove/force
+
+# 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 = false # false/true
+
+# Force a newline in a define after the macro name for multi-line defines.
+nl_multi_line_define = true # 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
+
+# Add or remove newline between a function name and the opening '('
+nl_func_paren = remove # ignore/add/remove/force
+
+# Whether to put each OC message parameter on a separate line
+# See nl_oc_msg_leave_one_liner
+nl_oc_msg_args = false # false/true
+
+# Add or remove newline between function signature and '{'
+nl_fdef_brace = add # ignore/add/remove/force
+
+# 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.
+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 = false # false/true
+
+# Whether to put a newline after a virtual brace open with a non-empty body.
+# These occur in un-braced if/while/do/for statement bodies.
+nl_after_vbrace_open = false # false/true
+
+# Whether to put a newline after a virtual brace open with an empty body.
+# These occur in un-braced if/while/do/for statement bodies.
+nl_after_vbrace_open_empty = false # false/true
+
+# Whether to put a newline after a brace close.
+# Does not apply if followed by a necessary ';'.
+nl_after_brace_close = true # false/true
+
+# Whether to put a newline after a virtual brace close.
+# Would add a newline before return in: 'if (foo) a++; return;'
+nl_after_vbrace_close = 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'. Does not affect the whole-file #ifdef.
+nl_squeeze_ifdef = true # false/true
+
+# 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
+# (lower priority than 'eat_blanks_before_close_brace')
+nl_ds_struct_enum_close_brace = false # false/true
+
+# 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 = trail # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+#
+# 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
+
+# Whether to split lines as close to code_width as possible and ignore some groupings
+ls_code_width = false # false/true
+
+#
+# Blank line options
+#
+
+# The maximum consecutive newlines
+nl_max = 4 # 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 = 2 # number
+
+# The number of newlines after '}' of a multi-line function body
+nl_after_func_body = 3 # number
+
+# The number of newlines after '}' of a multi-line function body in a class declaration
+nl_after_func_body_class = 2 # number
+
+# The number of newlines after '}' of a single line function body
+nl_after_func_body_one_liner = 0 # 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 = 2 # 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 multi-line comment.
+nl_after_multiline_comment = false # false/true
+
+# Whether to force a newline after a label's colon.
+nl_after_label_colon = false # false/true
+
+# The number of newlines after '}' or ';' of a struct/enum/union definition
+nl_after_struct = 0 # number
+
+# The number of newlines after '}' or ';' of a class definition
+nl_after_class = 0 # number
+
+# The number of newlines after '}' of a namespace
+nl_after_namespace = 0 # number
+
+# 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
+
+# The number of newlines between a function def and the function comment.
+# 0 = No change.
+nl_comment_func_def = 1 # number
+
+# The number of newlines after a try-catch-finally block that isn't followed by a brace close.
+# 0 = No change.
+nl_after_try_catch_finally = 0 # number
+
+# The number of newlines before and after a property, indexer or event decl.
+# 0 = No change.
+nl_around_cs_property = 0 # number
+
+# The number of newlines between the get/set/add/remove handlers in C#.
+# 0 = No change.
+nl_between_get_set = 0 # number
+
+# Whether to remove blank lines after '{'
+eat_blanks_after_open_brace = true # false/true
+
+# Whether to remove blank lines before '}'
+eat_blanks_before_close_brace = true # false/true
+
+# How aggressively to remove extra newlines not in preproc.
+# 0: No change
+# 1: Remove most newlines not handled by other config
+# 2: Remove all newlines and reformat completely by config
+nl_remove_extra_newlines = 0 # number
+
+# Whether to put a blank line before 'return' statements, unless after an open brace.
+nl_before_return = false # false/true
+
+# Whether to put a blank line after 'return' statements, unless followed by a close brace.
+nl_after_return = true # 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 'if' statement. Will not remove the braces if they contain an 'else'.
+mod_full_brace_if = add # ignore/add/remove/force
+
+# Make all if/elseif/else statements in a chain be braced or not. Overrides mod_full_brace_if.
+# If any must be braced, they are all braced. If all can be unbraced, then the braces are removed.
+mod_full_brace_if_chain = 0 # unsigned number
+
+# 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
+
+# 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 = true # 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 = 0 # number
+
+# If a namespace 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_namespace_closebrace_comment = 0 # 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 = 0 # number
+
+# If an #ifdef body exceeds the specified number of newlines and doesn't have a comment after
+# the #endif, a comment will be added.
+mod_add_long_ifdef_endif_comment = 0 # number
+
+# If an #ifdef or #else body exceeds the specified number of newlines and doesn't have a comment after
+# the #else, a comment will be added.
+mod_add_long_ifdef_else_comment = 0 # 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
+
+# If TRUE, it will move a 'break' that appears after a fully braced 'case' before the close brace.
+mod_move_case_break = false # false/true
+
+# Will add or remove the braces around a fully braced case statement.
+# Will only remove the braces if there are no variable declarations in the block.
+mod_case_brace = remove # ignore/add/remove/force
+
+# If TRUE, it will remove a void 'return;' that appears as the last statement in a function.
+mod_remove_empty_return = true # false/true
+
+#
+# Comment modifications
+#
+
+# Try to wrap comments at cmt_width columns
+cmt_width = 0 # number
+
+# Set the comment reflow mode (default: 0)
+# 0: no reflowing (apart from the line wrapping due to cmt_width)
+# 1: no touching at all
+# 2: full reflow
+cmt_reflow_mode = 0 # number
+
+# Whether to convert all tabs to spaces in comments. Default is to leave tabs inside comments alone, unless used for indenting.
+cmt_convert_tab_to_spaces = false # false/true
+
+# If false, disable all multi-line comment changes, including cmt_width. keyword substitution, and leading chars.
+# Default is true.
+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 = true # false/true
+
+# The number of spaces to insert at the start of subsequent comment lines
+cmt_sp_before_star_cont = 0 # number
+
+# The number of spaces to insert after the star on subsequent comment lines
+cmt_sp_after_star_cont = 0 # number
+
+# For multi-line comments with a '*' lead, remove leading spaces if the first and last lines of
+# the comment are the same length. Default=True
+cmt_multi_check_last = true # false/true
+
+# 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 substitute $(filename) with the current file's name.
+cmt_insert_file_header = "" # string
+
+# The filename that contains text to insert at the end of a file if the file doesn't end with a C/C++ comment.
+# Will substitute $(filename) with the current file's name.
+cmt_insert_file_footer = "" # string
+
+# The filename that contains text to insert before a function implementation if the function isn't preceded with a C/C++ comment.
+# Will substitute $(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 = "" # string
+
+# The filename that contains text to insert before a class if the class isn't preceded with a C/C++ comment.
+# Will substitute $(class) with the class name.
+cmt_insert_class_header = "" # string
+
+# The filename that contains text to insert before a Obj-C message specification if the method isn't preceded with a C/C++ comment.
+# Will substitute $(message) with the function name and $(javaparam) with the javadoc @param and @return stuff.
+cmt_insert_oc_msg_header = "" # string
+
+# If a preprocessor is encountered when stepping backwards from a function name, then
+# this option decides whether the comment should be inserted.
+# Affects cmt_insert_oc_msg_header, cmt_insert_func_header and cmt_insert_class_header.
+cmt_insert_before_preproc = false # false/true
+
+#
+# Preprocessor options
+#
+
+# Control indent of preprocessors inside #if blocks at brace level 0 (file-level)
+pp_indent = remove # ignore/add/remove/force
+
+# Whether to indent #if/#else/#endif at the brace level (true) or from column 1 (false)
+pp_indent_at_level = false # false/true
+
+# Whether to indent #if/#else/#endif at the parenthesis level if the brace
+# level is 0. If false, these are indented from column 1.
+pp_indent_at_level0 = false # false/true
+
+# Specifies the number of columns to indent preprocessors per level at brace level 0 (file-level).
+# If pp_indent_at_level=false, specifies the number of columns to indent preprocessors per level at brace level > 0 (function-level).
+# Default=1.
+pp_indent_count = 1 # number
+
+# Sets the number of spaces added with pp_space_after
+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.
+# 0: indent preprocessors using output_tab_size.
+# >0: column at which all preprocessors will be indented.
+pp_indent_if = 0 # number
+
+# Control whether to indent the code between #if, #else and #endif.
+pp_if_indent_code = false # false/true
+
+# Whether to indent '#define' at the brace level (true) or from column 1 (false)
+pp_define_at_level = false # false/true
+
+#
+# Use or Do not Use options
+#
+
+# True: indent_func_call_param will be used
+# False: indent_func_call_param will NOT be used
+use_indent_func_call_param = true # false/true
+
+# True: indent_continue will be used only once
+# False: indent_continue will be used every time (default)
+use_indent_continue_only_once = false # 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
+#
+# You can assign any keyword to any type with the set option.
+# set func_call_user _ N_
+#
+# The full syntax description of all custom definition config entries
+# is shown below:
+#
+# define custom tokens as:
+# - embed whitespace in token using '' escape character, or
+# put token in quotes
+# - these: ' " and ` are recognized as quote delimiters
+#
+# type token1 token2 token3 ...
+# ^ optionally specify multiple tokens on a single line
+# define def_token output_token
+# ^ output_token is optional, then NULL is assumed
+# macro-open token
+# macro-close token
+# macro-else token
+# set id token1 token2 ...
+# ^ optionally specify multiple tokens on a single line
+# ^ id is one of the names in token_enum.h sans the CT_ prefix,
+# e.g. PP_PRAGMA
+#
+# all tokens are separated by any mix of ',' commas, '=' equal signs
+# and whitespace (space, tab)
+#
+# You can add support for other file extensions using the 'file_ext' command.
+# The first arg is the language name used with the '-l' option.
+# The remaining args are file extensions, matched with 'endswith'.
+# file_ext CPP .ch .cxx .cpp.in
+#
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/ben2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/ben2.cfg
new file mode 100644
index 00000000..23ce1774
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/ben2.cfg
@@ -0,0 +1,84 @@
+#
+# My favorite format
+#
+
+indent_with_tabs = 0 # 1=indent with tabs, 2=indent to level only
+input_tab_size = 8 # original tab size
+output_tab_size = 3 # new tab size
+indent_columns = output_tab_size
+indent_label = 2 # pos: absolute col, neg: relative column
+indent_align_string = False # align broken strings
+indent_brace = 0
+
+nl_enum_brace = add # "enum {" vs "enum \n {"
+nl_union_brace = add # "union {" vs "union \n {"
+nl_struct_brace = add # "struct {" vs "struct \n {"
+nl_do_brace = add # "do {" vs "do \n {"
+nl_if_brace = add # "if () {" vs "if () \n {"
+nl_for_brace = add # "for () {" vs "for () \n {"
+nl_else_brace = add # "else {" vs "else \n {"
+nl_while_brace = add # "while () {" vs "while () \n {"
+nl_switch_brace = add # "switch () {" vs "switch () \n {"
+nl_var_def_blk_end_func_top = 1
+nl_before_case = 1
+nl_fcall_brace = add # "foo() {" vs "foo()\n{"
+nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
+nl_after_return = TRUE
+nl_brace_while = remove
+nl_brace_else = add
+nl_squeeze_ifdef = 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_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_for = 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();"
+
+align_with_tabs = FALSE # use tabs to align
+align_on_tabstop = FALSE # align on tabstops
+align_enum_equ_span = 4
+align_nl_cont = 1
+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 = 3
+align_right_cmt_span = 3
+align_pp_define_span = 3
+align_pp_define_gap = 4
+align_number_right = 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
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/d.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/d.cfg
new file mode 100644
index 00000000..fd83bea9
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/d.cfg
@@ -0,0 +1,84 @@
+#
+# My favorite format
+#
+
+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 = 2 # pos: absolute col, neg: relative column
+indent_align_string = False # align broken strings
+indent_brace = 0
+
+nl_enum_brace = add # "enum {" vs "enum \n {"
+nl_union_brace = add # "union {" vs "union \n {"
+nl_struct_brace = add # "struct {" vs "struct \n {"
+nl_do_brace = add # "do {" vs "do \n {"
+nl_if_brace = add # "if () {" vs "if () \n {"
+nl_for_brace = add # "for () {" vs "for () \n {"
+nl_else_brace = add # "else {" vs "else \n {"
+nl_while_brace = add # "while () {" vs "while () \n {"
+nl_switch_brace = add # "switch () {" vs "switch () \n {"
+# nl_var_def_blk_end_func_top = 1
+# nl_before_case = 1
+nl_fcall_brace = add # "foo() {" vs "foo()\n{"
+nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
+# nl_after_return = TRUE
+nl_brace_while = remove
+nl_brace_else = add
+nl_squeeze_ifdef = 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_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 = add # "(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_for = 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();"
+
+align_with_tabs = FALSE # use tabs to align
+align_on_tabstop = FALSE # align on tabstops
+align_enum_equ_span = 4
+align_nl_cont = 1
+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 = 3
+align_right_cmt_span = 3
+align_pp_define_span = 3
+align_pp_define_gap = 4
+align_number_right = 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
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/defaults.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/defaults.cfg
new file mode 100644
index 00000000..9b3d568c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/defaults.cfg
@@ -0,0 +1,3708 @@
+# Uncrustify-0.78.0
+
+#
+# General options
+#
+
+# The type of line endings.
+#
+# Default: auto
+newlines = auto # lf/crlf/cr/auto
+
+# The original size of tabs in the input.
+#
+# Default: 8
+input_tab_size = 8 # unsigned number
+
+# The size of tabs in the output (only used if align_with_tabs=true).
+#
+# Default: 8
+output_tab_size = 8 # unsigned number
+
+# The ASCII value of the string escape char, usually 92 (\) or (Pawn) 94 (^).
+#
+# Default: 92
+string_escape_char = 92 # unsigned number
+
+# Alternate string escape char (usually only used for Pawn).
+# Only works right before the quote char.
+string_escape_char2 = 0 # unsigned number
+
+# Replace tab characters found in string literals with the escape sequence \t
+# instead.
+string_replace_tab_chars = false # true/false
+
+# Allow interpreting '>=' and '>>=' as part of a template in code like
+# 'void f(list<list<B>>=val);'. If true, 'assert(x<0 && y>=3)' will be broken.
+# Improvements to template detection may make this option obsolete.
+tok_split_gte = false # true/false
+
+# Disable formatting of NL_CONT ('\\n') ended lines (e.g. multi-line macros).
+disable_processing_nl_cont = false # true/false
+
+# Specify the marker used in comments to disable processing of part of the
+# file.
+#
+# Default: *INDENT-OFF*
+disable_processing_cmt = " *INDENT-OFF*" # string
+
+# Specify the marker used in comments to (re)enable processing in a file.
+#
+# Default: *INDENT-ON*
+enable_processing_cmt = " *INDENT-ON*" # string
+
+# Enable parsing of digraphs.
+enable_digraphs = false # true/false
+
+# Option to allow both disable_processing_cmt and enable_processing_cmt
+# strings, if specified, to be interpreted as ECMAScript regular expressions.
+# If true, a regex search will be performed within comments according to the
+# specified patterns in order to disable/enable processing.
+processing_cmt_as_regex = false # true/false
+
+# Add or remove the UTF-8 BOM (recommend 'remove').
+utf8_bom = ignore # ignore/add/remove/force/not_defined
+
+# If the file contains bytes with values between 128 and 255, but is not
+# UTF-8, then output as UTF-8.
+utf8_byte = false # true/false
+
+# Force the output encoding to UTF-8.
+utf8_force = false # true/false
+
+#
+# Spacing options
+#
+
+# Add or remove space around non-assignment symbolic operators ('+', '/', '%',
+# '<<', and so forth).
+sp_arith = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around arithmetic operators '+' and '-'.
+#
+# Overrides sp_arith.
+sp_arith_additive = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around assignment operator '=', '+=', etc.
+sp_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around '=' in C++11 lambda capture specifications.
+#
+# Overrides sp_assign.
+sp_cpp_lambda_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the capture specification of a C++11 lambda when
+# an argument list is present, as in '[] <here> (int x){ ... }'.
+sp_cpp_lambda_square_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the capture specification of a C++11 lambda with
+# no argument list is present, as in '[] <here> { ... }'.
+sp_cpp_lambda_square_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the opening parenthesis and before the closing
+# parenthesis of a argument list of a C++11 lambda, as in
+# '[]( <here> ){ ... }'
+# with an empty list.
+sp_cpp_lambda_argument_list_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the opening parenthesis and before the closing
+# parenthesis of a argument list of a C++11 lambda, as in
+# '[]( <here> int x <here> ){ ... }'.
+sp_cpp_lambda_argument_list = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the argument list of a C++11 lambda, as in
+# '[](int x) <here> { ... }'.
+sp_cpp_lambda_paren_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a lambda body and its call operator of an
+# immediately invoked lambda, as in '[]( ... ){ ... } <here> ( ... )'.
+sp_cpp_lambda_fparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around assignment operator '=' in a prototype.
+#
+# If set to ignore, use sp_assign.
+sp_assign_default = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before assignment operator '=', '+=', etc.
+#
+# Overrides sp_assign.
+sp_before_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after assignment operator '=', '+=', etc.
+#
+# Overrides sp_assign.
+sp_after_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space in 'enum {'.
+#
+# Default: add
+sp_enum_brace = add # ignore/add/remove/force/not_defined
+
+# Add or remove space in 'NS_ENUM ('.
+sp_enum_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around assignment '=' in enum.
+sp_enum_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before assignment '=' in enum.
+#
+# Overrides sp_enum_assign.
+sp_enum_before_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after assignment '=' in enum.
+#
+# Overrides sp_enum_assign.
+sp_enum_after_assign = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around assignment ':' in enum.
+sp_enum_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around preprocessor '##' concatenation operator.
+#
+# Default: add
+sp_pp_concat = add # ignore/add/remove/force/not_defined
+
+# Add or remove space after preprocessor '#' stringify operator.
+# Also affects the '#@' charizing operator.
+sp_pp_stringify = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before preprocessor '#' stringify operator
+# as in '#define x(y) L#y'.
+sp_before_pp_stringify = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around boolean operators '&&' and '||'.
+sp_bool = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around compare operator '<', '>', '==', etc.
+sp_compare = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '(' and ')'.
+sp_inside_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between nested parentheses, i.e. '((' vs. ') )'.
+sp_paren_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.
+sp_cparen_oparen = ignore # ignore/add/remove/force/not_defined
+
+# Whether to balance spaces inside nested parentheses.
+sp_balance_nested_parens = false # true/false
+
+# Add or remove space between ')' and '{'.
+sp_paren_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between nested braces, i.e. '{{' vs. '{ {'.
+sp_brace_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*'.
+sp_before_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*' that isn't followed by a
+# variable name. If set to ignore, sp_before_ptr_star is used instead.
+sp_before_unnamed_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*' that is followed by a qualifier.
+# If set to ignore, sp_before_unnamed_ptr_star is used instead.
+sp_before_qualifier_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*' that is followed by 'operator' keyword.
+# If set to ignore, sp_before_unnamed_ptr_star is used instead.
+sp_before_operator_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*' that is followed by
+# a class scope (as in 'int *MyClass::method()') or namespace scope
+# (as in 'int *my_ns::func()').
+# If set to ignore, sp_before_unnamed_ptr_star is used instead.
+sp_before_scope_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before pointer star '*' that is followed by '::',
+# as in 'int *::func()'.
+# If set to ignore, sp_before_unnamed_ptr_star is used instead.
+sp_before_global_scope_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a qualifier and a pointer star '*' that isn't
+# followed by a variable name, as in '(char const *)'. If set to ignore,
+# sp_before_ptr_star is used instead.
+sp_qualifier_unnamed_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between pointer stars '*', as in 'int ***a;'.
+sp_between_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between pointer star '*' and reference '&', as in 'int *& a;'.
+sp_between_ptr_ref = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after pointer star '*', if followed by a word.
+#
+# Overrides sp_type_func.
+sp_after_ptr_star = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after pointer caret '^', if followed by a word.
+sp_after_ptr_block_caret = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after pointer star '*', if followed by a qualifier.
+sp_after_ptr_star_qualifier = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a pointer star '*', if followed by a function
+# prototype or function definition.
+#
+# Overrides sp_after_ptr_star and sp_type_func.
+sp_after_ptr_star_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a pointer star '*' in the trailing return of a
+# function prototype or function definition.
+sp_after_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the pointer star '*' and the name of the variable
+# in a function pointer definition.
+sp_ptr_star_func_var = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the pointer star '*' and the name of the type
+# in a function pointer type definition.
+sp_ptr_star_func_type = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a pointer star '*', if followed by an open
+# parenthesis, as in 'void* (*)()'.
+sp_ptr_star_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a pointer star '*', if followed by a function
+# prototype or function definition. If set to ignore, sp_before_ptr_star is
+# used instead.
+sp_before_ptr_star_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a qualifier and a pointer star '*' followed by
+# the name of the function in a function prototype or definition, as in
+# 'char const *foo()`. If set to ignore, sp_before_ptr_star is used instead.
+sp_qualifier_ptr_star_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a pointer star '*' in the trailing return of a
+# function prototype or function definition.
+sp_before_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a qualifier and a pointer star '*' in the
+# trailing return of a function prototype or function definition, as in
+# 'auto foo() -> char const *'.
+sp_qualifier_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a reference sign '&'.
+sp_before_byref = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a reference sign '&' that isn't followed by a
+# variable name. If set to ignore, sp_before_byref is used instead.
+sp_before_unnamed_byref = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after reference sign '&', if followed by a word.
+#
+# Overrides sp_type_func.
+sp_after_byref = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a reference sign '&', if followed by a function
+# prototype or function definition.
+#
+# Overrides sp_after_byref and sp_type_func.
+sp_after_byref_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a reference sign '&', if followed by a function
+# prototype or function definition.
+sp_before_byref_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a reference sign '&', if followed by an open
+# parenthesis, as in 'char& (*)()'.
+sp_byref_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between type and word. In cases where total removal of
+# whitespace would be a syntax error, a value of 'remove' is treated the same
+# as 'force'.
+#
+# This also affects some other instances of space following a type that are
+# not covered by other options; for example, between the return type and
+# parenthesis of a function type template argument, between the type and
+# parenthesis of an array parameter, or between 'decltype(...)' and the
+# following word.
+#
+# Default: force
+sp_after_type = force # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'decltype(...)' and word,
+# brace or function call.
+sp_after_decltype = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space before the parenthesis in the D constructs
+# 'template Foo(' and 'class Foo('.
+sp_before_template_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'template' and '<'.
+# If set to ignore, sp_before_angle is used.
+sp_template_angle = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before '<'.
+sp_before_angle = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '<' and '>'.
+sp_inside_angle = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '<>'.
+# if empty.
+sp_inside_angle_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '>' and ':'.
+sp_angle_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after '>'.
+sp_after_angle = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '>' and '(' as found in 'new List<byte>(foo);'.
+sp_angle_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '>' and '()' as found in 'new List<byte>();'.
+sp_angle_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '>' and a word as in 'List<byte> m;' or
+# 'template <typename T> static ...'.
+sp_angle_word = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '>' and '>' in '>>' (template stuff).
+#
+# Default: add
+sp_angle_shift = add # ignore/add/remove/force/not_defined
+
+# (C++11) Permit removal of the space between '>>' in 'foo<bar<int> >'. Note
+# that sp_angle_shift cannot remove the space without this option.
+sp_permit_cpp11_shift = false # true/false
+
+# Add or remove space before '(' of control statements ('if', 'for', 'switch',
+# 'while', etc.).
+sp_before_sparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '(' and ')' of control statements other than
+# 'for'.
+sp_inside_sparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after '(' of control statements other than 'for'.
+#
+# Overrides sp_inside_sparen.
+sp_inside_sparen_open = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before ')' of control statements other than 'for'.
+#
+# Overrides sp_inside_sparen.
+sp_inside_sparen_close = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '(' and ')' of 'for' statements.
+sp_inside_for = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after '(' of 'for' statements.
+#
+# Overrides sp_inside_for.
+sp_inside_for_open = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before ')' of 'for' statements.
+#
+# Overrides sp_inside_for.
+sp_inside_for_close = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '((' or '))' of control statements.
+sp_sparen_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after ')' of control statements.
+sp_after_sparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and '{' of control statements.
+sp_sparen_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'do' and '{'.
+sp_do_brace_open = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '}' and 'while'.
+sp_brace_close_while = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'while' and '('. Overrides sp_before_sparen.
+sp_while_paren_open = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space between 'invariant' and '('.
+sp_invariant_paren = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space after the ')' in 'invariant (C) c'.
+sp_after_invariant_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before empty statement ';' on 'if', 'for' and 'while'.
+sp_special_semi = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before ';'.
+#
+# Default: remove
+sp_before_semi = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space before ';' in non-empty 'for' statements.
+sp_before_semi_for = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a semicolon of an empty left part of a for
+# statement, as in 'for ( <here> ; ; )'.
+sp_before_semi_for_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the semicolons of an empty middle part of a for
+# statement, as in 'for ( ; <here> ; )'.
+sp_between_semi_for_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after ';', except when followed by a comment.
+#
+# Default: add
+sp_after_semi = add # ignore/add/remove/force/not_defined
+
+# Add or remove space after ';' in non-empty 'for' statements.
+#
+# Default: force
+sp_after_semi_for = force # ignore/add/remove/force/not_defined
+
+# Add or remove space after the final semicolon of an empty part of a for
+# statement, as in 'for ( ; ; <here> )'.
+sp_after_semi_for_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before '[' (except '[]').
+sp_before_square = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before '[' for a variable definition.
+#
+# Default: remove
+sp_before_vardef_square = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space before '[' for asm block.
+sp_before_square_asm_block = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before '[]'.
+sp_before_squares = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before C++17 structured bindings.
+sp_cpp_before_struct_binding = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside a non-empty '[' and ']'.
+sp_inside_square = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '[]'.
+# if empty.
+sp_inside_square_empty = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and
+# ']'. If set to ignore, sp_inside_square is used.
+sp_inside_square_oc_array = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.
+sp_after_comma = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.
+#
+# Default: remove
+sp_before_comma = remove # ignore/add/remove/force/not_defined
+
+# (C#, Vala) Add or remove space between ',' and ']' in multidimensional array type
+# like 'int[,,]'.
+sp_after_mdatype_commas = ignore # ignore/add/remove/force/not_defined
+
+# (C#, Vala) Add or remove space between '[' and ',' in multidimensional array type
+# like 'int[,,]'.
+sp_before_mdatype_commas = ignore # ignore/add/remove/force/not_defined
+
+# (C#, Vala) Add or remove space between ',' in multidimensional array type
+# like 'int[,,]'.
+sp_between_mdatype_commas = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between an open parenthesis and comma,
+# i.e. '(,' vs. '( ,'.
+#
+# Default: force
+sp_paren_comma = force # ignore/add/remove/force/not_defined
+
+# Add or remove space between a type and ':'.
+sp_type_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the variadic '...' when preceded by a
+# non-punctuator.
+# The value REMOVE will be overridden with FORCE
+sp_after_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before the variadic '...' when preceded by a
+# non-punctuator.
+# The value REMOVE will be overridden with FORCE
+sp_before_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a type and '...'.
+sp_type_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a '*' and '...'.
+sp_ptr_type_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and '...'.
+sp_paren_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '&&' and '...'.
+sp_byref_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and a qualifier such as 'const'.
+sp_paren_qualifier = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and 'noexcept'.
+sp_paren_noexcept = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after class ':'.
+sp_after_class_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before class ':'.
+sp_before_class_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after class constructor ':'.
+#
+# Default: add
+sp_after_constr_colon = add # ignore/add/remove/force/not_defined
+
+# Add or remove space before class constructor ':'.
+#
+# Default: add
+sp_before_constr_colon = add # ignore/add/remove/force/not_defined
+
+# Add or remove space before case ':'.
+#
+# Default: remove
+sp_before_case_colon = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'operator' and operator sign.
+sp_after_operator = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the operator symbol and the open parenthesis, as
+# in 'operator ++('.
+sp_after_operator_sym = ignore # ignore/add/remove/force/not_defined
+
+# Overrides sp_after_operator_sym when the operator has no arguments, as in
+# 'operator *()'.
+sp_after_operator_sym_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or
+# '(int)a' vs. '(int) a'.
+sp_after_cast = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove spaces inside cast parentheses.
+sp_inside_paren_cast = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the type and open parenthesis in a C++ cast,
+# i.e. 'int(exp)' vs. 'int (exp)'.
+sp_cpp_cast_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'sizeof' and '('.
+sp_sizeof_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'sizeof' and '...'.
+sp_sizeof_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'sizeof...' and '('.
+sp_sizeof_ellipsis_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '...' and a parameter pack.
+sp_ellipsis_parameter_pack = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a parameter pack and '...'.
+sp_parameter_pack_ellipsis = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'decltype' and '('.
+sp_decltype_paren = ignore # ignore/add/remove/force/not_defined
+
+# (Pawn) Add or remove space after the tag keyword.
+sp_after_tag = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside enum '{' and '}'.
+sp_inside_braces_enum = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside struct/union '{' and '}'.
+sp_inside_braces_struct = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'
+sp_inside_braces_oc_dict = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after open brace in an unnamed temporary
+# direct-list-initialization
+# if statement is a brace_init_lst
+# works only if sp_brace_brace is set to ignore.
+sp_after_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before close brace in an unnamed temporary
+# direct-list-initialization
+# if statement is a brace_init_lst
+# works only if sp_brace_brace is set to ignore.
+sp_before_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside an unnamed temporary direct-list-initialization
+# if statement is a brace_init_lst
+# works only if sp_brace_brace is set to ignore
+# works only if sp_before_type_brace_init_lst_close is set to ignore.
+sp_inside_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '{' and '}'.
+sp_inside_braces = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside '{}'.
+# if empty.
+sp_inside_braces_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around trailing return operator '->'.
+sp_trailing_return = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between return type and function name. A minimum of 1
+# is forced except for pointer return types.
+sp_type_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between type and open brace of an unnamed temporary
+# direct-list-initialization.
+sp_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '(' on function declaration.
+sp_func_proto_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '()' on function declaration
+# if empty.
+sp_func_proto_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '(' with a typedef specifier.
+sp_func_type_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between alias name and '(' of a non-pointer function type typedef.
+sp_func_def_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '()' on function definition
+# if empty.
+sp_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside empty function '()'.
+# Overrides sp_after_angle unless use_sp_after_angle_always is set to true.
+sp_inside_fparens = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside function '(' and ')'.
+sp_inside_fparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside user functor '(' and ')'.
+sp_func_call_user_inside_rparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside empty functor '()'.
+# Overrides sp_after_angle unless use_sp_after_angle_always is set to true.
+sp_inside_rparens = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside functor '(' and ')'.
+sp_inside_rparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside the first parentheses in a function type, as in
+# 'void (*x)(...)'.
+sp_inside_tparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the ')' and '(' in a function type, as in
+# 'void (*x)(...)'.
+sp_after_tparen_close = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ']' and '(' when part of a function call.
+sp_square_fparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and '{' of function.
+sp_fparen_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and '{' of a function call in object
+# initialization.
+#
+# Overrides sp_fparen_brace.
+sp_fparen_brace_initializer = ignore # ignore/add/remove/force/not_defined
+
+# (Java) Add or remove space between ')' and '{{' of double brace initializer.
+sp_fparen_dbrace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '(' on function calls.
+sp_func_call_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between function name and '()' on function calls without
+# parameters. If set to ignore (the default), sp_func_call_paren is used.
+sp_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between the user function name and '(' on function
+# calls. You need to set a keyword to be a user function in the config file,
+# like:
+# set func_call_user tr _ i18n
+sp_func_call_user_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside user function '(' and ')'.
+sp_func_call_user_inside_fparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between nested parentheses with user functions,
+# i.e. '((' vs. '( ('.
+sp_func_call_user_paren_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a constructor/destructor and the open
+# parenthesis.
+sp_func_class_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a constructor without parameters or destructor
+# and '()'.
+sp_func_class_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after 'return'.
+#
+# Default: force
+sp_return = force # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'return' and '('.
+sp_return_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'return' and '{'.
+sp_return_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '__attribute__' and '('.
+sp_attribute_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'defined' and '(' in '#if defined (FOO)'.
+sp_defined_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'throw' and '(' in 'throw (something)'.
+sp_throw_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'throw' and anything other than '(' as in
+# '@throw [...];'.
+sp_after_throw = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'catch' and '(' in 'catch (something) { }'.
+# If set to ignore, sp_before_sparen is used.
+sp_catch_paren = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between '@catch' and '('
+# in '@catch (something) { }'. If set to ignore, sp_catch_paren is used.
+sp_oc_catch_paren = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before Objective-C protocol list
+# as in '@protocol Protocol<here><Protocol_A>' or '@interface MyClass : NSObject<here><MyProtocol>'.
+sp_before_oc_proto_list = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between class name and '('
+# in '@interface className(categoryName)<ProtocolName>:BaseClass'
+sp_oc_classname_paren = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space between 'version' and '('
+# in 'version (something) { }'. If set to ignore, sp_before_sparen is used.
+sp_version_paren = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space between 'scope' and '('
+# in 'scope (something) { }'. If set to ignore, sp_before_sparen is used.
+sp_scope_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'super' and '(' in 'super (something)'.
+#
+# Default: remove
+sp_super_paren = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'this' and '(' in 'this (something)'.
+#
+# Default: remove
+sp_this_paren = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space between a macro name and its definition.
+sp_macro = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a macro function ')' and its definition.
+sp_macro_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'else' and '{' if on the same line.
+sp_else_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '}' and 'else' if on the same line.
+sp_brace_else = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '}' and the name of a typedef on the same line.
+sp_brace_typedef = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before the '{' of a 'catch' statement, if the '{' and
+# 'catch' are on the same line, as in 'catch (decl) <here> {'.
+sp_catch_brace = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before the '{' of a '@catch' statement, if the '{'
+# and '@catch' are on the same line, as in '@catch (decl) <here> {'.
+# If set to ignore, sp_catch_brace is used.
+sp_oc_catch_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '}' and 'catch' if on the same line.
+sp_brace_catch = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between '}' and '@catch' if on the same line.
+# If set to ignore, sp_brace_catch is used.
+sp_oc_brace_catch = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'finally' and '{' if on the same line.
+sp_finally_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between '}' and 'finally' if on the same line.
+sp_brace_finally = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'try' and '{' if on the same line.
+sp_try_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between get/set and '{' if on the same line.
+sp_getset_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a variable and '{' for C++ uniform
+# initialization.
+sp_word_brace_init_lst = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between a variable and '{' for a namespace.
+#
+# Default: add
+sp_word_brace_ns = add # ignore/add/remove/force/not_defined
+
+# Add or remove space before the '::' operator.
+sp_before_dc = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '::' operator.
+sp_after_dc = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove around the D named array initializer ':' operator.
+sp_d_array_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '!' (not) unary operator.
+#
+# Default: remove
+sp_not = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space between two '!' (not) unary operators.
+# If set to ignore, sp_not will be used.
+sp_not_not = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '~' (invert) unary operator.
+#
+# Default: remove
+sp_inv = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '&' (address-of) unary operator. This does not
+# affect the spacing after a '&' that is part of a type.
+#
+# Default: remove
+sp_addr = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space around the '.' or '->' operators.
+#
+# Default: remove
+sp_member = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '*' (dereference) unary operator. This does
+# not affect the spacing after a '*' that is part of a type.
+#
+# Default: remove
+sp_deref = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.
+#
+# Default: remove
+sp_sign = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space between '++' and '--' the word to which it is being
+# applied, as in '(--x)' or 'y++;'.
+#
+# Default: remove
+sp_incdec = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space before a backslash-newline at the end of a line.
+#
+# Default: add
+sp_before_nl_cont = add # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;'
+# or '+(int) bar;'.
+sp_after_oc_scope = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the colon in message specs,
+# i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.
+sp_after_oc_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before the colon in message specs,
+# i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.
+sp_before_oc_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the colon in immutable dictionary expression
+# 'NSDictionary *test = @{@"foo" :@"bar"};'.
+sp_after_oc_dict_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before the colon in immutable dictionary expression
+# 'NSDictionary *test = @{@"foo" :@"bar"};'.
+sp_before_oc_dict_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the colon in message specs,
+# i.e. '[object setValue:1];' vs. '[object setValue: 1];'.
+sp_after_send_oc_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before the colon in message specs,
+# i.e. '[object setValue:1];' vs. '[object setValue :1];'.
+sp_before_send_oc_colon = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the (type) in message specs,
+# i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'.
+sp_after_oc_type = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after the first (type) in message specs,
+# i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'.
+sp_after_oc_return_type = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between '@selector' and '(',
+# i.e. '@selector(msgName)' vs. '@selector (msgName)'.
+# Also applies to '@protocol()' constructs.
+sp_after_oc_at_sel = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between '@selector(x)' and the following word,
+# i.e. '@selector(foo) a:' vs. '@selector(foo)a:'.
+sp_after_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space inside '@selector' parentheses,
+# i.e. '@selector(foo)' vs. '@selector( foo )'.
+# Also applies to '@protocol()' constructs.
+sp_inside_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space before a block pointer caret,
+# i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'.
+sp_before_oc_block_caret = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after a block pointer caret,
+# i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'.
+sp_after_oc_block_caret = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between the receiver and selector in a message,
+# as in '[receiver selector ...]'.
+sp_after_oc_msg_receiver = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space after '@property'.
+sp_after_oc_property = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove space between '@synchronized' and the open parenthesis,
+# i.e. '@synchronized(foo)' vs. '@synchronized (foo)'.
+sp_after_oc_synchronized = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around the ':' in 'b ? t : f'.
+sp_cond_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before the ':' in 'b ? t : f'.
+#
+# Overrides sp_cond_colon.
+sp_cond_colon_before = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the ':' in 'b ? t : f'.
+#
+# Overrides sp_cond_colon.
+sp_cond_colon_after = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space around the '?' in 'b ? t : f'.
+sp_cond_question = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before the '?' in 'b ? t : f'.
+#
+# Overrides sp_cond_question.
+sp_cond_question_before = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the '?' in 'b ? t : f'.
+#
+# Overrides sp_cond_question.
+sp_cond_question_after = ignore # ignore/add/remove/force/not_defined
+
+# In the abbreviated ternary form '(a ?: b)', add or remove space between '?'
+# and ':'.
+#
+# Overrides all other sp_cond_* options.
+sp_cond_ternary_short = ignore # ignore/add/remove/force/not_defined
+
+# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make
+# sense here.
+sp_case_label = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space around the D '..' operator.
+sp_range = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after ':' in a Java/C++11 range-based 'for',
+# as in 'for (Type var : <here> expr)'.
+sp_after_for_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before ':' in a Java/C++11 range-based 'for',
+# as in 'for (Type var <here> : expr)'.
+sp_before_for_colon = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove space between 'extern' and '(' as in 'extern <here> (C)'.
+sp_extern_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the opening of a C++ comment, as in '// <here> A'.
+sp_cmt_cpp_start = ignore # ignore/add/remove/force/not_defined
+
+# remove space after the '//' and the pvs command '-V1234',
+# only works with sp_cmt_cpp_start set to add or force.
+sp_cmt_cpp_pvs = false # true/false
+
+# remove space after the '//' and the command 'lint',
+# only works with sp_cmt_cpp_start set to add or force.
+sp_cmt_cpp_lint = false # true/false
+
+# Add or remove space in a C++ region marker comment, as in '// <here> BEGIN'.
+# A region marker is defined as a comment which is not preceded by other text
+# (i.e. the comment is the first non-whitespace on the line), and which starts
+# with either 'BEGIN' or 'END'.
+#
+# Overrides sp_cmt_cpp_start.
+sp_cmt_cpp_region = ignore # ignore/add/remove/force/not_defined
+
+# If true, space added with sp_cmt_cpp_start will be added after Doxygen
+# sequences like '///', '///<', '//!' and '//!<'.
+sp_cmt_cpp_doxygen = false # true/false
+
+# If true, space added with sp_cmt_cpp_start will be added after Qt translator
+# or meta-data comments like '//:', '//=', and '//~'.
+sp_cmt_cpp_qttr = false # true/false
+
+# Add or remove space between #else or #endif and a trailing comment.
+sp_endif_cmt = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after 'new', 'delete' and 'delete[]'.
+sp_after_new = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between 'new' and '(' in 'new()'.
+sp_between_new_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space between ')' and type in 'new(foo) BAR'.
+sp_after_newop_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space inside parentheses of the new operator
+# as in 'new(foo) BAR'.
+sp_inside_newop_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after the open parenthesis of the new operator,
+# as in 'new(foo) BAR'.
+#
+# Overrides sp_inside_newop_paren.
+sp_inside_newop_paren_open = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before the close parenthesis of the new operator,
+# as in 'new(foo) BAR'.
+#
+# Overrides sp_inside_newop_paren.
+sp_inside_newop_paren_close = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a trailing comment.
+sp_before_tr_cmt = ignore # ignore/add/remove/force/not_defined
+
+# Number of spaces before a trailing comment.
+sp_num_before_tr_cmt = 0 # unsigned number
+
+# Add or remove space before an embedded comment.
+#
+# Default: force
+sp_before_emb_cmt = force # ignore/add/remove/force/not_defined
+
+# Number of spaces before an embedded comment.
+#
+# Default: 1
+sp_num_before_emb_cmt = 1 # unsigned number
+
+# Add or remove space after an embedded comment.
+#
+# Default: force
+sp_after_emb_cmt = force # ignore/add/remove/force/not_defined
+
+# Number of spaces after an embedded comment.
+#
+# Default: 1
+sp_num_after_emb_cmt = 1 # unsigned number
+
+# (Java) Add or remove space between an annotation and the open parenthesis.
+sp_annotation_paren = ignore # ignore/add/remove/force/not_defined
+
+# If true, vbrace tokens are dropped to the previous token and skipped.
+sp_skip_vbrace_tokens = false # true/false
+
+# Add or remove space after 'noexcept'.
+sp_after_noexcept = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after '_'.
+sp_vala_after_translation = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space before a bit colon ':'.
+sp_before_bit_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove space after a bit colon ':'.
+sp_after_bit_colon = ignore # ignore/add/remove/force/not_defined
+
+# If true, a <TAB> is inserted after #define.
+force_tab_after_define = false # true/false
+
+#
+# Indenting options
+#
+
+# The number of columns to indent per level. Usually 2, 3, 4, or 8.
+#
+# Default: 8
+indent_columns = 8 # unsigned number
+
+# Whether to ignore indent for the first continuation line. Subsequent
+# continuation lines will still be indented to match the first.
+indent_ignore_first_continue = false # true/false
+
+# The continuation indent. If non-zero, this overrides the indent of '(', '['
+# and '=' continuation indents. Negative values are OK; negative value is
+# absolute and not increased for each '(' or '[' level.
+#
+# For FreeBSD, this is set to 4.
+# Requires indent_ignore_first_continue=false.
+indent_continue = 0 # number
+
+# The continuation indent, only for class header line(s). If non-zero, this
+# overrides the indent of 'class' continuation indents.
+# Requires indent_ignore_first_continue=false.
+indent_continue_class_head = 0 # unsigned number
+
+# Whether to indent empty lines (i.e. lines which contain only spaces before
+# the newline character).
+indent_single_newlines = false # true/false
+
+# The continuation indent for func_*_param if they are true. If non-zero, this
+# overrides the indent.
+indent_param = 0 # unsigned number
+
+# How to use tabs when indenting code.
+#
+# 0: Spaces only
+# 1: Indent with tabs to brace level, align with spaces (default)
+# 2: Indent and align with tabs, using spaces when not on a tabstop
+#
+# Default: 1
+indent_with_tabs = 1 # unsigned number
+
+# Whether to indent comments that are not at a brace level with tabs on a
+# tabstop. Requires indent_with_tabs=2. If false, will use spaces.
+indent_cmt_with_tabs = false # true/false
+
+# Whether to indent strings broken by '\' so that they line up.
+indent_align_string = false # true/false
+
+# The number of spaces to indent multi-line XML strings.
+# Requires indent_align_string=true.
+indent_xml_string = 0 # unsigned number
+
+# Spaces to indent '{' from level.
+indent_brace = 0 # unsigned number
+
+# Whether braces are indented to the body level.
+indent_braces = false # true/false
+
+# Whether to disable indenting function braces if indent_braces=true.
+indent_braces_no_func = false # true/false
+
+# Whether to disable indenting class braces if indent_braces=true.
+indent_braces_no_class = false # true/false
+
+# Whether to disable indenting struct braces if indent_braces=true.
+indent_braces_no_struct = false # true/false
+
+# Whether to indent based on the size of the brace parent,
+# i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
+indent_brace_parent = false # true/false
+
+# Whether to indent based on the open parenthesis instead of the open brace
+# in '({\n'.
+indent_paren_open_brace = false # true/false
+
+# (C#) Whether to indent the brace of a C# delegate by another level.
+indent_cs_delegate_brace = false # true/false
+
+# (C#) Whether to indent a C# delegate (to handle delegates with no brace) by
+# another level.
+indent_cs_delegate_body = false # true/false
+
+# Whether to indent the body of a 'namespace'.
+indent_namespace = false # true/false
+
+# Whether to indent only the first namespace, and not any nested namespaces.
+# Requires indent_namespace=true.
+indent_namespace_single_indent = false # true/false
+
+# The number of spaces to indent a namespace block.
+# If set to zero, use the value indent_columns
+indent_namespace_level = 0 # unsigned number
+
+# If the body of the namespace is longer than this number, it won't be
+# indented. Requires indent_namespace=true. 0 means no limit.
+indent_namespace_limit = 0 # unsigned number
+
+# Whether to indent only in inner namespaces (nested in other namespaces).
+# Requires indent_namespace=true.
+indent_namespace_inner_only = false # true/false
+
+# Whether the 'extern "C"' body is indented.
+indent_extern = false # true/false
+
+# Whether the 'class' body is indented.
+indent_class = false # true/false
+
+# Whether to ignore indent for the leading base class colon.
+indent_ignore_before_class_colon = false # true/false
+
+# Additional indent before the leading base class colon.
+# Negative values decrease indent down to the first column.
+# Requires indent_ignore_before_class_colon=false and a newline break before
+# the colon (see pos_class_colon and nl_class_colon)
+indent_before_class_colon = 0 # number
+
+# Whether to indent the stuff after a leading base class colon.
+indent_class_colon = false # true/false
+
+# Whether to indent based on a class colon instead of the stuff after the
+# colon. Requires indent_class_colon=true.
+indent_class_on_colon = false # true/false
+
+# Whether to ignore indent for a leading class initializer colon.
+indent_ignore_before_constr_colon = false # true/false
+
+# Whether to indent the stuff after a leading class initializer colon.
+indent_constr_colon = false # true/false
+
+# Virtual indent from the ':' for leading member initializers.
+#
+# Default: 2
+indent_ctor_init_leading = 2 # unsigned number
+
+# Virtual indent from the ':' for following member initializers.
+#
+# Default: 2
+indent_ctor_init_following = 2 # unsigned number
+
+# Additional indent for constructor initializer list.
+# Negative values decrease indent down to the first column.
+indent_ctor_init = 0 # number
+
+# Whether to indent 'if' following 'else' as a new block under the 'else'.
+# If false, 'else\nif' is treated as 'else if' for indenting purposes.
+indent_else_if = false # true/false
+
+# Amount to indent variable declarations after a open brace.
+#
+# <0: Relative
+# >=0: Absolute
+indent_var_def_blk = 0 # number
+
+# Whether to indent continued variable declarations instead of aligning.
+indent_var_def_cont = false # true/false
+
+# How to indent continued shift expressions ('<<' and '>>').
+# Set align_left_shift=false when using this.
+# 0: Align shift operators instead of indenting them (default)
+# 1: Indent by one level
+# -1: Preserve original indentation
+indent_shift = 0 # number
+
+# Whether to force indentation of function definitions to start in column 1.
+indent_func_def_force_col1 = false # true/false
+
+# Whether to indent continued function call parameters one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_func_call_param = false # true/false
+
+# Whether to indent continued function definition parameters one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_func_def_param = false # true/false
+
+# for function definitions, only if indent_func_def_param is false
+# Allows to align params when appropriate and indent them when not
+# behave as if it was true if paren position is more than this value
+# if paren position is more than the option value
+indent_func_def_param_paren_pos_threshold = 0 # unsigned number
+
+# Whether to indent continued function call prototype one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_func_proto_param = false # true/false
+
+# Whether to indent continued function call declaration one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_func_class_param = false # true/false
+
+# Whether to indent continued class variable constructors one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_func_ctor_var_param = false # true/false
+
+# Whether to indent continued template parameter list one indent level,
+# rather than aligning parameters under the open parenthesis.
+indent_template_param = false # true/false
+
+# Double the indent for indent_func_xxx_param options.
+# Use both values of the options indent_columns and indent_param.
+indent_func_param_double = false # true/false
+
+# Indentation column for standalone 'const' qualifier on a function
+# prototype.
+indent_func_const = 0 # unsigned number
+
+# Indentation column for standalone 'throw' qualifier on a function
+# prototype.
+indent_func_throw = 0 # unsigned number
+
+# How to indent within a macro followed by a brace on the same line
+# This allows reducing the indent in macros that have (for example)
+# `do { ... } while (0)` blocks bracketing them.
+#
+# true: add an indent for the brace on the same line as the macro
+# false: do not add an indent for the brace on the same line as the macro
+#
+# Default: true
+indent_macro_brace = true # true/false
+
+# The number of spaces to indent a continued '->' or '.'.
+# Usually set to 0, 1, or indent_columns.
+indent_member = 0 # unsigned number
+
+# Whether lines broken at '.' or '->' should be indented by a single indent.
+# The indent_member option will not be effective if this is set to true.
+indent_member_single = false # true/false
+
+# Spaces to indent single line ('//') comments on lines before code.
+indent_single_line_comments_before = 0 # unsigned number
+
+# Spaces to indent single line ('//') comments on lines after code.
+indent_single_line_comments_after = 0 # unsigned number
+
+# When opening a paren for a control statement (if, for, while, etc), increase
+# the indent level by this value. Negative values decrease the indent level.
+indent_sparen_extra = 0 # number
+
+# Whether to indent trailing single line ('//') comments relative to the code
+# instead of trying to keep the same absolute column.
+indent_relative_single_line_comments = false # true/false
+
+# Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.
+# It might be wise to choose the same value for the option indent_case_brace.
+indent_switch_case = 0 # unsigned number
+
+# Spaces to indent the body of a 'switch' before any 'case'.
+# Usually the same as indent_columns or indent_switch_case.
+indent_switch_body = 0 # unsigned number
+
+# Whether to ignore indent for '{' following 'case'.
+indent_ignore_case_brace = false # true/false
+
+# Spaces to indent '{' from 'case'. By default, the brace will appear under
+# the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.
+# It might be wise to choose the same value for the option indent_switch_case.
+indent_case_brace = 0 # number
+
+# indent 'break' with 'case' from 'switch'.
+indent_switch_break_with_case = false # true/false
+
+# Whether to indent preprocessor statements inside of switch statements.
+#
+# Default: true
+indent_switch_pp = true # true/false
+
+# Spaces to shift the 'case' line, without affecting any other lines.
+# Usually 0.
+indent_case_shift = 0 # unsigned number
+
+# Whether to align comments before 'case' with the 'case'.
+#
+# Default: true
+indent_case_comment = true # true/false
+
+# Whether to indent comments not found in first column.
+#
+# Default: true
+indent_comment = true # true/false
+
+# Whether to indent comments found in first column.
+indent_col1_comment = false # true/false
+
+# Whether to indent multi string literal in first column.
+indent_col1_multi_string_literal = false # true/false
+
+# Align comments on adjacent lines that are this many columns apart or less.
+#
+# Default: 3
+indent_comment_align_thresh = 3 # unsigned number
+
+# Whether to ignore indent for goto labels.
+indent_ignore_label = false # true/false
+
+# How to indent goto labels. Requires indent_ignore_label=false.
+#
+# >0: Absolute column where 1 is the leftmost column
+# <=0: Subtract from brace indent
+#
+# Default: 1
+indent_label = 1 # number
+
+# How to indent access specifiers that are followed by a
+# colon.
+#
+# >0: Absolute column where 1 is the leftmost column
+# <=0: Subtract from brace indent
+#
+# Default: 1
+indent_access_spec = 1 # number
+
+# Whether to indent the code after an access specifier by one level.
+# If true, this option forces 'indent_access_spec=0'.
+indent_access_spec_body = false # true/false
+
+# If an open parenthesis is followed by a newline, whether to indent the next
+# line so that it lines up after the open parenthesis (not recommended).
+indent_paren_nl = false # true/false
+
+# How to indent a close parenthesis after a newline.
+#
+# 0: Indent to body level (default)
+# 1: Align under the open parenthesis
+# 2: Indent to the brace level
+# -1: Preserve original indentation
+indent_paren_close = 0 # number
+
+# Whether to indent the open parenthesis of a function definition,
+# if the parenthesis is on its own line.
+indent_paren_after_func_def = false # true/false
+
+# Whether to indent the open parenthesis of a function declaration,
+# if the parenthesis is on its own line.
+indent_paren_after_func_decl = false # true/false
+
+# Whether to indent the open parenthesis of a function call,
+# if the parenthesis is on its own line.
+indent_paren_after_func_call = false # true/false
+
+# How to indent a comma when inside braces.
+# 0: Indent by one level (default)
+# 1: Align under the open brace
+# -1: Preserve original indentation
+indent_comma_brace = 0 # number
+
+# How to indent a comma when inside parentheses.
+# 0: Indent by one level (default)
+# 1: Align under the open parenthesis
+# -1: Preserve original indentation
+indent_comma_paren = 0 # number
+
+# How to indent a Boolean operator when inside parentheses.
+# 0: Indent by one level (default)
+# 1: Align under the open parenthesis
+# -1: Preserve original indentation
+indent_bool_paren = 0 # number
+
+# Whether to ignore the indentation of a Boolean operator when outside
+# parentheses.
+indent_ignore_bool = false # true/false
+
+# Whether to ignore the indentation of an arithmetic operator.
+indent_ignore_arith = false # true/false
+
+# Whether to indent a semicolon when inside a for parenthesis.
+# If true, aligns under the open for parenthesis.
+indent_semicolon_for_paren = false # true/false
+
+# Whether to ignore the indentation of a semicolon outside of a 'for'
+# statement.
+indent_ignore_semicolon = false # true/false
+
+# Whether to align the first expression to following ones
+# if indent_bool_paren=1.
+indent_first_bool_expr = false # true/false
+
+# Whether to align the first expression to following ones
+# if indent_semicolon_for_paren=true.
+indent_first_for_expr = false # true/false
+
+# If an open square is followed by a newline, whether to indent the next line
+# so that it lines up after the open square (not recommended).
+indent_square_nl = false # true/false
+
+# (ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies.
+indent_preserve_sql = false # true/false
+
+# Whether to ignore the indentation of an assignment operator.
+indent_ignore_assign = false # true/false
+
+# Whether to align continued statements at the '='. If false or if the '=' is
+# followed by a newline, the next line is indent one tab.
+#
+# Default: true
+indent_align_assign = true # true/false
+
+# If true, the indentation of the chunks after a '=' sequence will be set at
+# LHS token indentation column before '='.
+indent_off_after_assign = false # true/false
+
+# Whether to align continued statements at the '('. If false or the '(' is
+# followed by a newline, the next line indent is one tab.
+#
+# Default: true
+indent_align_paren = true # true/false
+
+# (OC) Whether to indent Objective-C code inside message selectors.
+indent_oc_inside_msg_sel = false # true/false
+
+# (OC) Whether to indent Objective-C blocks at brace level instead of usual
+# rules.
+indent_oc_block = false # true/false
+
+# (OC) Indent for Objective-C blocks in a message relative to the parameter
+# name.
+#
+# =0: Use indent_oc_block rules
+# >0: Use specified number of spaces to indent
+indent_oc_block_msg = 0 # unsigned number
+
+# (OC) Minimum indent for subsequent parameters
+indent_oc_msg_colon = 0 # unsigned number
+
+# (OC) Whether to prioritize aligning with initial colon (and stripping spaces
+# from lines, if necessary).
+#
+# Default: true
+indent_oc_msg_prioritize_first_colon = true # true/false
+
+# (OC) Whether to indent blocks the way that Xcode does by default
+# (from the keyword if the parameter is on its own line; otherwise, from the
+# previous indentation level). Requires indent_oc_block_msg=true.
+indent_oc_block_msg_xcode_style = false # true/false
+
+# (OC) Whether to indent blocks from where the brace is, relative to a
+# message keyword. Requires indent_oc_block_msg=true.
+indent_oc_block_msg_from_keyword = false # true/false
+
+# (OC) Whether to indent blocks from where the brace is, relative to a message
+# colon. Requires indent_oc_block_msg=true.
+indent_oc_block_msg_from_colon = false # true/false
+
+# (OC) Whether to indent blocks from where the block caret is.
+# Requires indent_oc_block_msg=true.
+indent_oc_block_msg_from_caret = false # true/false
+
+# (OC) Whether to indent blocks from where the brace caret is.
+# Requires indent_oc_block_msg=true.
+indent_oc_block_msg_from_brace = false # true/false
+
+# When indenting after virtual brace open and newline add further spaces to
+# reach this minimum indent.
+indent_min_vbrace_open = 0 # unsigned number
+
+# Whether to add further spaces after regular indent to reach next tabstop
+# when indenting after virtual brace open and newline.
+indent_vbrace_open_on_tabstop = false # true/false
+
+# How to indent after a brace followed by another token (not a newline).
+# true: indent all contained lines to match the token
+# false: indent all contained lines to match the brace
+#
+# Default: true
+indent_token_after_brace = true # true/false
+
+# Whether to indent the body of a C++11 lambda.
+indent_cpp_lambda_body = false # true/false
+
+# How to indent compound literals that are being returned.
+# true: add both the indent from return & the compound literal open brace
+# (i.e. 2 indent levels)
+# false: only indent 1 level, don't add the indent for the open brace, only
+# add the indent for the return.
+#
+# Default: true
+indent_compound_literal_return = true # true/false
+
+# (C#) Whether to indent a 'using' block if no braces are used.
+#
+# Default: true
+indent_using_block = true # true/false
+
+# How to indent the continuation of ternary operator.
+#
+# 0: Off (default)
+# 1: When the `if_false` is a continuation, indent it under the `if_true` branch
+# 2: When the `:` is a continuation, indent it under `?`
+indent_ternary_operator = 0 # unsigned number
+
+# Whether to indent the statements inside ternary operator.
+indent_inside_ternary_operator = false # true/false
+
+# If true, the indentation of the chunks after a `return` sequence will be set at return indentation column.
+indent_off_after_return = false # true/false
+
+# If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column.
+indent_off_after_return_new = false # true/false
+
+# If true, the tokens after return are indented with regular single indentation. By default (false) the indentation is after the return token.
+indent_single_after_return = false # true/false
+
+# Whether to ignore indent and alignment for 'asm' blocks (i.e. assume they
+# have their own indentation).
+indent_ignore_asm_block = false # true/false
+
+# Don't indent the close parenthesis of a function definition,
+# if the parenthesis is on its own line.
+donot_indent_func_def_close_paren = false # true/false
+
+#
+# Newline adding and removing options
+#
+
+# Whether to collapse empty blocks between '{' and '}' except for functions.
+# Use nl_collapse_empty_body_functions to specify how empty function braces
+# should be formatted.
+nl_collapse_empty_body = false # true/false
+
+# Whether to collapse empty blocks between '{' and '}' for functions only.
+# If true, overrides nl_inside_empty_func.
+nl_collapse_empty_body_functions = false # true/false
+
+# Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'.
+nl_assign_leave_one_liners = false # true/false
+
+# Don't split one-line braced statements inside a 'class xx { }' body.
+nl_class_leave_one_liners = false # true/false
+
+# Don't split one-line enums, as in 'enum foo { BAR = 15 };'
+nl_enum_leave_one_liners = false # true/false
+
+# Don't split one-line get or set functions.
+nl_getset_leave_one_liners = false # true/false
+
+# (C#) Don't split one-line property get or set functions.
+nl_cs_property_leave_one_liners = false # true/false
+
+# Don't split one-line function definitions, as in 'int foo() { return 0; }'.
+# might modify nl_func_type_name
+nl_func_leave_one_liners = false # true/false
+
+# Don't split one-line C++11 lambdas, as in '[]() { return 0; }'.
+nl_cpp_lambda_leave_one_liners = false # true/false
+
+# Don't split one-line if/else statements, as in 'if(...) b++;'.
+nl_if_leave_one_liners = false # true/false
+
+# Don't split one-line while statements, as in 'while(...) b++;'.
+nl_while_leave_one_liners = false # true/false
+
+# Don't split one-line do statements, as in 'do { b++; } while(...);'.
+nl_do_leave_one_liners = false # true/false
+
+# Don't split one-line for statements, as in 'for(...) b++;'.
+nl_for_leave_one_liners = false # true/false
+
+# (OC) Don't split one-line Objective-C messages.
+nl_oc_msg_leave_one_liner = false # true/false
+
+# (OC) Add or remove newline between method declaration and '{'.
+nl_oc_mdef_brace = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove newline between Objective-C block signature and '{'.
+nl_oc_block_brace = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove blank line before '@interface' statement.
+nl_oc_before_interface = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove blank line before '@implementation' statement.
+nl_oc_before_implementation = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove blank line before '@end' statement.
+nl_oc_before_end = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove newline between '@interface' and '{'.
+nl_oc_interface_brace = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove newline between '@implementation' and '{'.
+nl_oc_implementation_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newlines at the start of the file.
+nl_start_of_file = ignore # ignore/add/remove/force/not_defined
+
+# The minimum 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 # unsigned number
+
+# Add or remove newline at the end of the file.
+nl_end_of_file = ignore # ignore/add/remove/force/not_defined
+
+# The minimum 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 = 0 # unsigned number
+
+# Add or remove newline between '=' and '{'.
+nl_assign_brace = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove newline between '=' and '['.
+nl_assign_square = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '[]' and '{'.
+nl_tsquare_brace = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove newline after '= ['. Will also affect the newline before
+# the ']'.
+nl_after_square_assign = ignore # ignore/add/remove/force/not_defined
+
+# 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/not_defined
+
+# Add or remove newline between 'enum' and '{'.
+nl_enum_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'enum' and 'class'.
+nl_enum_class = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'enum class' and the identifier.
+nl_enum_class_identifier = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'enum class' type and ':'.
+nl_enum_identifier_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'enum class identifier :' and type.
+nl_enum_colon_type = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'struct and '{'.
+nl_struct_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'union' and '{'.
+nl_union_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'if' and '{'.
+nl_if_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and 'else'.
+nl_brace_else = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'else if' and '{'. If set to ignore,
+# nl_if_brace is used instead.
+nl_elseif_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'else' and '{'.
+nl_else_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'else' and 'if'.
+nl_else_if = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before '{' opening brace
+nl_before_opening_brace_func_class_def = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before 'if'/'else if' closing parenthesis.
+nl_before_if_closing_paren = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and 'finally'.
+nl_brace_finally = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'finally' and '{'.
+nl_finally_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'try' and '{'.
+nl_try_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between get/set and '{'.
+nl_getset_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'for' and '{'.
+nl_for_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before the '{' of a 'catch' statement, as in
+# 'catch (decl) <here> {'.
+nl_catch_brace = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove newline before the '{' of a '@catch' statement, as in
+# '@catch (decl) <here> {'. If set to ignore, nl_catch_brace is used.
+nl_oc_catch_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and 'catch'.
+nl_brace_catch = ignore # ignore/add/remove/force/not_defined
+
+# (OC) Add or remove newline between '}' and '@catch'. If set to ignore,
+# nl_brace_catch is used.
+nl_oc_brace_catch = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and ']'.
+nl_brace_square = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and ')' in a function invocation.
+nl_brace_fparen = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'while' and '{'.
+nl_while_brace = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove newline between 'scope (x)' and '{'.
+nl_scope_brace = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove newline between 'unittest' and '{'.
+nl_unittest_brace = ignore # ignore/add/remove/force/not_defined
+
+# (D) Add or remove newline between 'version (x)' and '{'.
+nl_version_brace = ignore # ignore/add/remove/force/not_defined
+
+# (C#) Add or remove newline between 'using' and '{'.
+nl_using_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between two open or close braces. Due to general
+# newline/brace handling, REMOVE may not work.
+nl_brace_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'do' and '{'.
+nl_do_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '}' and 'while' of 'do' statement.
+nl_brace_while = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'switch' and '{'.
+nl_switch_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'synchronized' and '{'.
+nl_synchronized_brace = ignore # ignore/add/remove/force/not_defined
+
+# 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 = false # true/false
+
+# Add a newline after '(' if an if/for/while/switch condition spans multiple
+# lines
+nl_multi_line_sparen_open = ignore # ignore/add/remove/force/not_defined
+
+# Add a newline before ')' if an if/for/while/switch condition spans multiple
+# lines. Overrides nl_before_if_closing_paren if both are specified.
+nl_multi_line_sparen_close = ignore # ignore/add/remove/force/not_defined
+
+# Force a newline in a define after the macro name for multi-line defines.
+nl_multi_line_define = false # true/false
+
+# Whether to add a newline before 'case', and a blank line before a 'case'
+# statement that follows a ';' or '}'.
+nl_before_case = false # true/false
+
+# Whether to add a newline after a 'case' statement.
+nl_after_case = false # true/false
+
+# Add or remove newline between a case ':' and '{'.
+#
+# Overrides nl_after_case.
+nl_case_colon_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between ')' and 'throw'.
+nl_before_throw = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'namespace' and '{'.
+nl_namespace_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template class.
+nl_template_class = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template class declaration.
+#
+# Overrides nl_template_class.
+nl_template_class_decl = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<>' of a specialized class declaration.
+#
+# Overrides nl_template_class_decl.
+nl_template_class_decl_special = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template class definition.
+#
+# Overrides nl_template_class.
+nl_template_class_def = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<>' of a specialized class definition.
+#
+# Overrides nl_template_class_def.
+nl_template_class_def_special = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template function.
+nl_template_func = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template function
+# declaration.
+#
+# Overrides nl_template_func.
+nl_template_func_decl = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<>' of a specialized function
+# declaration.
+#
+# Overrides nl_template_func_decl.
+nl_template_func_decl_special = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template function
+# definition.
+#
+# Overrides nl_template_func.
+nl_template_func_def = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<>' of a specialized function
+# definition.
+#
+# Overrides nl_template_func_def.
+nl_template_func_def_special = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after 'template<...>' of a template variable.
+nl_template_var = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'template<...>' and 'using' of a templated
+# type alias.
+nl_template_using = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'class' and '{'.
+nl_class_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before or after (depending on pos_class_comma,
+# may not be IGNORE) each',' in the base class list.
+nl_class_init_args = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after each ',' in the constructor member
+# initialization. Related to nl_constr_colon, pos_constr_colon and
+# pos_constr_comma.
+nl_constr_init_args = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before first element, after comma, and after last
+# element, in 'enum'.
+nl_enum_own_lines = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between return type and function name in a function
+# definition.
+# might be modified by nl_func_leave_one_liners
+nl_func_type_name = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between return type and function name inside a class
+# definition. If set to ignore, nl_func_type_name or nl_func_proto_type_name
+# is used instead.
+nl_func_type_name_class = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between class specification and '::'
+# in 'void A::f() { }'. Only appears in separate member implementation (does
+# not appear with in-line implementation).
+nl_func_class_scope = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between function scope and name, as in
+# 'void A :: <here> f() { }'.
+nl_func_scope_name = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between return type and function name in a prototype.
+nl_func_proto_type_name = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between a function name and the opening '(' in the
+# declaration.
+nl_func_paren = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_paren for functions with no parameters.
+nl_func_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between a function name and the opening '(' in the
+# definition.
+nl_func_def_paren = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_def_paren for functions with no parameters.
+nl_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between a function name and the opening '(' in the
+# call.
+nl_func_call_paren = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_call_paren for functions with no parameters.
+nl_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after '(' in a function declaration.
+nl_func_decl_start = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after '(' in a function definition.
+nl_func_def_start = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_decl_start when there is only one parameter.
+nl_func_decl_start_single = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_def_start when there is only one parameter.
+nl_func_def_start_single = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after '(' in a function declaration if '(' and ')'
+# are in different lines. If false, nl_func_decl_start is used instead.
+nl_func_decl_start_multi_line = false # true/false
+
+# Whether to add a newline after '(' in a function definition if '(' and ')'
+# are in different lines. If false, nl_func_def_start is used instead.
+nl_func_def_start_multi_line = false # true/false
+
+# Add or remove newline after each ',' in a function declaration.
+nl_func_decl_args = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after each ',' in a function definition.
+nl_func_def_args = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline after each ',' in a function call.
+nl_func_call_args = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after each ',' in a function declaration if '('
+# and ')' are in different lines. If false, nl_func_decl_args is used instead.
+nl_func_decl_args_multi_line = false # true/false
+
+# Whether to add a newline after each ',' in a function definition if '('
+# and ')' are in different lines. If false, nl_func_def_args is used instead.
+nl_func_def_args_multi_line = false # true/false
+
+# Add or remove newline before the ')' in a function declaration.
+nl_func_decl_end = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline before the ')' in a function definition.
+nl_func_def_end = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_decl_end when there is only one parameter.
+nl_func_decl_end_single = ignore # ignore/add/remove/force/not_defined
+
+# Overrides nl_func_def_end when there is only one parameter.
+nl_func_def_end_single = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline before ')' in a function declaration if '(' and ')'
+# are in different lines. If false, nl_func_decl_end is used instead.
+nl_func_decl_end_multi_line = false # true/false
+
+# Whether to add a newline before ')' in a function definition if '(' and ')'
+# are in different lines. If false, nl_func_def_end is used instead.
+nl_func_def_end_multi_line = false # true/false
+
+# Add or remove newline between '()' in a function declaration.
+nl_func_decl_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '()' in a function definition.
+nl_func_def_empty = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between '()' in a function call.
+nl_func_call_empty = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after '(' in a function call,
+# has preference over nl_func_call_start_multi_line.
+nl_func_call_start = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline before ')' in a function call.
+nl_func_call_end = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after '(' in a function call if '(' and ')' are in
+# different lines.
+nl_func_call_start_multi_line = false # true/false
+
+# Whether to add a newline after each ',' in a function call if '(' and ')'
+# are in different lines.
+nl_func_call_args_multi_line = false # true/false
+
+# Whether to add a newline before ')' in a function call if '(' and ')' are in
+# different lines.
+nl_func_call_end_multi_line = false # true/false
+
+# Whether to respect nl_func_call_XXX option in case of closure args.
+nl_func_call_args_multi_line_ignore_closures = false # true/false
+
+# Whether to add a newline after '<' of a template parameter list.
+nl_template_start = false # true/false
+
+# Whether to add a newline after each ',' in a template parameter list.
+nl_template_args = false # true/false
+
+# Whether to add a newline before '>' of a template parameter list.
+nl_template_end = false # true/false
+
+# (OC) Whether to put each Objective-C message parameter on a separate line.
+# See nl_oc_msg_leave_one_liner.
+nl_oc_msg_args = false # true/false
+
+# (OC) Minimum number of Objective-C message parameters before applying nl_oc_msg_args.
+nl_oc_msg_args_min_params = 0 # unsigned number
+
+# (OC) Max code width of Objective-C message before applying nl_oc_msg_args.
+nl_oc_msg_args_max_code_width = 0 # unsigned number
+
+# Add or remove newline between function signature and '{'.
+nl_fdef_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between function signature and '{',
+# if signature ends with ')'. Overrides nl_fdef_brace.
+nl_fdef_brace_cond = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between C++11 lambda signature and '{'.
+nl_cpp_ldef_brace = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'return' and the return expression.
+nl_return_expr = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline between 'throw' and the throw expression.
+nl_throw_expr = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after semicolons, except in 'for' statements.
+nl_after_semicolon = false # true/false
+
+# (Java) Add or remove newline between the ')' and '{{' of the double brace
+# initializer.
+nl_paren_dbrace_open = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after the type in an unnamed temporary
+# direct-list-initialization, better:
+# before a direct-list-initialization.
+nl_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline after the open brace in an unnamed temporary
+# direct-list-initialization.
+nl_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline before the close brace in an unnamed temporary
+# direct-list-initialization.
+nl_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined
+
+# Whether to add a newline before '{'.
+nl_before_brace_open = false # true/false
+
+# Whether to add a newline after '{'.
+nl_after_brace_open = false # true/false
+
+# Whether to add a newline between the open brace and a trailing single-line
+# comment. Requires nl_after_brace_open=true.
+nl_after_brace_open_cmt = false # true/false
+
+# Whether to add a newline after a virtual brace open with a non-empty body.
+# These occur in un-braced if/while/do/for statement bodies.
+nl_after_vbrace_open = false # true/false
+
+# Whether to add a newline after a virtual brace open with an empty body.
+# These occur in un-braced if/while/do/for statement bodies.
+nl_after_vbrace_open_empty = false # true/false
+
+# Whether to add a newline after '}'. Does not apply if followed by a
+# necessary ';'.
+nl_after_brace_close = false # true/false
+
+# Whether to add a newline after a virtual brace close,
+# as in 'if (foo) a++; <here> return;'.
+nl_after_vbrace_close = false # true/false
+
+# Add or remove newline between the close brace and identifier,
+# as in 'struct { int a; } <here> b;'. Affects enumerations, unions and
+# structures. If set to ignore, uses nl_after_brace_close.
+nl_brace_struct_var = ignore # ignore/add/remove/force/not_defined
+
+# Whether to alter newlines in '#define' macros.
+nl_define_macro = false # true/false
+
+# Whether to alter newlines between consecutive parenthesis closes. The number
+# of closing parentheses in a line will depend on respective open parenthesis
+# lines.
+nl_squeeze_paren_close = false # true/false
+
+# Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and
+# '#endif'. Does not affect top-level #ifdefs.
+nl_squeeze_ifdef = false # true/false
+
+# Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well.
+nl_squeeze_ifdef_top_level = false # true/false
+
+# Add or remove blank line before 'if'.
+nl_before_if = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'if' statement. Add/Force work only if the
+# next token is not a closing brace.
+nl_after_if = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line before 'for'.
+nl_before_for = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'for' statement.
+nl_after_for = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line before 'while'.
+nl_before_while = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'while' statement.
+nl_after_while = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line before 'switch'.
+nl_before_switch = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'switch' statement.
+nl_after_switch = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line before 'synchronized'.
+nl_before_synchronized = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'synchronized' statement.
+nl_after_synchronized = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line before 'do'.
+nl_before_do = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove blank line after 'do/while' statement.
+nl_after_do = ignore # ignore/add/remove/force/not_defined
+
+# Ignore nl_before_{if,for,switch,do,synchronized} if the control
+# statement is immediately after a case statement.
+# if nl_before_{if,for,switch,do} is set to remove, this option
+# does nothing.
+nl_before_ignore_after_case = false # true/false
+
+# Whether to put a blank line before 'return' statements, unless after an open
+# brace.
+nl_before_return = false # true/false
+
+# Whether to put a blank line after 'return' statements, unless followed by a
+# close brace.
+nl_after_return = false # true/false
+
+# Whether to put a blank line before a member '.' or '->' operators.
+nl_before_member = ignore # ignore/add/remove/force/not_defined
+
+# (Java) Whether to put a blank line after a member '.' or '->' operators.
+nl_after_member = ignore # ignore/add/remove/force/not_defined
+
+# Whether to double-space commented-entries in 'struct'/'union'/'enum'.
+nl_ds_struct_enum_cmt = false # true/false
+
+# Whether to force a newline before '}' of a 'struct'/'union'/'enum'.
+# (Lower priority than eat_blanks_before_close_brace.)
+nl_ds_struct_enum_close_brace = false # true/false
+
+# Add or remove newline before or after (depending on pos_class_colon) a class
+# colon, as in 'class Foo <here> : <or here> public Bar'.
+nl_class_colon = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove newline around a class constructor colon. The exact position
+# depends on nl_constr_init_args, pos_constr_colon and pos_constr_comma.
+nl_constr_colon = ignore # ignore/add/remove/force/not_defined
+
+# Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }'
+# into a single line. If true, prevents other brace newline rules from turning
+# such code into four lines. If true, it also preserves one-liner namespaces.
+nl_namespace_two_to_one_liner = false # true/false
+
+# Whether to remove a newline in simple unbraced if statements, turning them
+# into one-liners, as in 'if(b)\n i++;' => 'if(b) i++;'.
+nl_create_if_one_liner = false # true/false
+
+# Whether to remove a newline in simple unbraced for statements, turning them
+# into one-liners, as in 'for (...)\n stmt;' => 'for (...) stmt;'.
+nl_create_for_one_liner = false # true/false
+
+# Whether to remove a newline in simple unbraced while statements, turning
+# them into one-liners, as in 'while (expr)\n stmt;' => 'while (expr) stmt;'.
+nl_create_while_one_liner = false # true/false
+
+# Whether to collapse a function definition whose body (not counting braces)
+# is only one line so that the entire definition (prototype, braces, body) is
+# a single line.
+nl_create_func_def_one_liner = false # true/false
+
+# Whether to split one-line simple list definitions into three lines by
+# adding newlines, as in 'int a[12] = { <here> 0 <here> };'.
+nl_create_list_one_liner = false # true/false
+
+# Whether to split one-line simple unbraced if statements into two lines by
+# adding a newline, as in 'if(b) <here> i++;'.
+nl_split_if_one_liner = false # true/false
+
+# Whether to split one-line simple unbraced for statements into two lines by
+# adding a newline, as in 'for (...) <here> stmt;'.
+nl_split_for_one_liner = false # true/false
+
+# Whether to split one-line simple unbraced while statements into two lines by
+# adding a newline, as in 'while (expr) <here> stmt;'.
+nl_split_while_one_liner = false # true/false
+
+# Don't add a newline before a cpp-comment in a parameter list of a function
+# call.
+donot_add_nl_before_cpp_comment = false # true/false
+
+#
+# Blank line options
+#
+
+# The maximum number of consecutive newlines (3 = 2 blank lines).
+nl_max = 0 # unsigned number
+
+# The maximum number of consecutive newlines in a function.
+nl_max_blank_in_func = 0 # unsigned number
+
+# The number of newlines inside an empty function body.
+# This option overrides eat_blanks_after_open_brace and
+# eat_blanks_before_close_brace, but is ignored when
+# nl_collapse_empty_body_functions=true
+nl_inside_empty_func = 0 # unsigned number
+
+# The number of newlines before a function prototype.
+nl_before_func_body_proto = 0 # unsigned number
+
+# The number of newlines before a multi-line function definition. Where
+# applicable, this option is overridden with eat_blanks_after_open_brace=true
+nl_before_func_body_def = 0 # unsigned number
+
+# The number of newlines before a class constructor/destructor prototype.
+nl_before_func_class_proto = 0 # unsigned number
+
+# The number of newlines before a class constructor/destructor definition.
+nl_before_func_class_def = 0 # unsigned number
+
+# The number of newlines after a function prototype.
+nl_after_func_proto = 0 # unsigned number
+
+# The number of newlines after a function prototype, if not followed by
+# another function prototype.
+nl_after_func_proto_group = 0 # unsigned number
+
+# The number of newlines after a class constructor/destructor prototype.
+nl_after_func_class_proto = 0 # unsigned number
+
+# The number of newlines after a class constructor/destructor prototype,
+# if not followed by another constructor/destructor prototype.
+nl_after_func_class_proto_group = 0 # unsigned number
+
+# Whether one-line method definitions inside a class body should be treated
+# as if they were prototypes for the purposes of adding newlines.
+#
+# Requires nl_class_leave_one_liners=true. Overrides nl_before_func_body_def
+# and nl_before_func_class_def for one-liners.
+nl_class_leave_one_liner_groups = false # true/false
+
+# The number of newlines after '}' of a multi-line function body.
+#
+# Overrides nl_min_after_func_body and nl_max_after_func_body.
+nl_after_func_body = 0 # unsigned number
+
+# The minimum number of newlines after '}' of a multi-line function body.
+#
+# Only works when nl_after_func_body is 0.
+nl_min_after_func_body = 0 # unsigned number
+
+# The maximum number of newlines after '}' of a multi-line function body.
+#
+# Only works when nl_after_func_body is 0.
+# Takes precedence over nl_min_after_func_body.
+nl_max_after_func_body = 0 # unsigned number
+
+# The number of newlines after '}' of a multi-line function body in a class
+# declaration. Also affects class constructors/destructors.
+#
+# Overrides nl_after_func_body.
+nl_after_func_body_class = 0 # unsigned number
+
+# The number of newlines after '}' of a single line function body. Also
+# affects class constructors/destructors.
+#
+# Overrides nl_after_func_body and nl_after_func_body_class.
+nl_after_func_body_one_liner = 0 # unsigned number
+
+# The number of newlines before a block of typedefs. If nl_after_access_spec
+# is non-zero, that option takes precedence.
+#
+# 0: No change (default).
+nl_typedef_blk_start = 0 # unsigned number
+
+# The number of newlines after a block of typedefs.
+#
+# 0: No change (default).
+nl_typedef_blk_end = 0 # unsigned number
+
+# The maximum number of consecutive newlines within a block of typedefs.
+#
+# 0: No change (default).
+nl_typedef_blk_in = 0 # unsigned number
+
+# The minimum number of blank lines after a block of variable definitions
+# at the top of a function body. If any preprocessor directives appear
+# between the opening brace of the function and the variable block, then
+# it is considered as not at the top of the function.Newlines are added
+# before trailing preprocessor directives, if any exist.
+#
+# 0: No change (default).
+nl_var_def_blk_end_func_top = 0 # unsigned number
+
+# The minimum number of empty newlines before a block of variable definitions
+# not at the top of a function body. If nl_after_access_spec is non-zero,
+# that option takes precedence. Newlines are not added at the top of the
+# file or just after an opening brace. Newlines are added above any
+# preprocessor directives before the block.
+#
+# 0: No change (default).
+nl_var_def_blk_start = 0 # unsigned number
+
+# The minimum number of empty newlines after a block of variable definitions
+# not at the top of a function body. Newlines are not added if the block
+# is at the bottom of the file or just before a preprocessor directive.
+#
+# 0: No change (default).
+nl_var_def_blk_end = 0 # unsigned number
+
+# The maximum number of consecutive newlines within a block of variable
+# definitions.
+#
+# 0: No change (default).
+nl_var_def_blk_in = 0 # unsigned 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 # unsigned 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 # unsigned 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 # unsigned number
+
+# Whether to force a newline after a multi-line comment.
+nl_after_multiline_comment = false # true/false
+
+# Whether to force a newline after a label's colon.
+nl_after_label_colon = false # true/false
+
+# The number of newlines before a struct definition.
+nl_before_struct = 0 # unsigned number
+
+# The number of newlines after '}' or ';' of a struct/enum/union definition.
+nl_after_struct = 0 # unsigned number
+
+# The number of newlines before a class definition.
+nl_before_class = 0 # unsigned number
+
+# The number of newlines after '}' or ';' of a class definition.
+nl_after_class = 0 # unsigned number
+
+# The number of newlines before a namespace.
+nl_before_namespace = 0 # unsigned number
+
+# The number of newlines after '{' of a namespace. This also adds newlines
+# before the matching '}'.
+#
+# 0: Apply eat_blanks_after_open_brace or eat_blanks_before_close_brace if
+# applicable, otherwise no change.
+#
+# Overrides eat_blanks_after_open_brace and eat_blanks_before_close_brace.
+nl_inside_namespace = 0 # unsigned number
+
+# The number of newlines after '}' of a namespace.
+nl_after_namespace = 0 # unsigned number
+
+# The number of newlines before an access specifier label. This also includes
+# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
+# if after a brace open.
+#
+# 0: No change (default).
+nl_before_access_spec = 0 # unsigned number
+
+# The number of newlines after an access specifier label. This also includes
+# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
+# if after a brace open.
+#
+# 0: No change (default).
+#
+# Overrides nl_typedef_blk_start and nl_var_def_blk_start.
+nl_after_access_spec = 0 # unsigned number
+
+# The number of newlines between a function definition and the function
+# comment, as in '// comment\n <here> void foo() {...}'.
+#
+# 0: No change (default).
+nl_comment_func_def = 0 # unsigned number
+
+# The number of newlines after a try-catch-finally block that isn't followed
+# by a brace close.
+#
+# 0: No change (default).
+nl_after_try_catch_finally = 0 # unsigned number
+
+# (C#) The number of newlines before and after a property, indexer or event
+# declaration.
+#
+# 0: No change (default).
+nl_around_cs_property = 0 # unsigned number
+
+# (C#) The number of newlines between the get/set/add/remove handlers.
+#
+# 0: No change (default).
+nl_between_get_set = 0 # unsigned number
+
+# (C#) Add or remove newline between property and the '{'.
+nl_property_brace = ignore # ignore/add/remove/force/not_defined
+
+# Whether to remove blank lines after '{'.
+eat_blanks_after_open_brace = false # true/false
+
+# Whether to remove blank lines before '}'.
+eat_blanks_before_close_brace = false # true/false
+
+# How aggressively to remove extra newlines not in preprocessor.
+#
+# 0: No change (default)
+# 1: Remove most newlines not handled by other config
+# 2: Remove all newlines and reformat completely by config
+nl_remove_extra_newlines = 0 # unsigned number
+
+# (Java) Add or remove newline after an annotation statement. Only affects
+# annotations that are after a newline.
+nl_after_annotation = ignore # ignore/add/remove/force/not_defined
+
+# (Java) Add or remove newline between two annotations.
+nl_between_annotation = ignore # ignore/add/remove/force/not_defined
+
+# The number of newlines before a whole-file #ifdef.
+#
+# 0: No change (default).
+nl_before_whole_file_ifdef = 0 # unsigned number
+
+# The number of newlines after a whole-file #ifdef.
+#
+# 0: No change (default).
+nl_after_whole_file_ifdef = 0 # unsigned number
+
+# The number of newlines before a whole-file #endif.
+#
+# 0: No change (default).
+nl_before_whole_file_endif = 0 # unsigned number
+
+# The number of newlines after a whole-file #endif.
+#
+# 0: No change (default).
+nl_after_whole_file_endif = 0 # unsigned number
+
+#
+# Positioning options
+#
+
+# The position of arithmetic operators in wrapped expressions.
+pos_arith = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of assignment in wrapped expressions. Do not affect '='
+# followed by '{'.
+pos_assign = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of Boolean operators in wrapped expressions.
+pos_bool = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of comparison operators in wrapped expressions.
+pos_compare = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of conditional operators, as in the '?' and ':' of
+# 'expr ? stmt : stmt', in wrapped expressions.
+pos_conditional = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of the comma in wrapped expressions.
+pos_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of the comma in enum entries.
+pos_enum_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of the comma in the base class list if there is more than one
+# line. Affects nl_class_init_args.
+pos_class_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of the comma in the constructor initialization list.
+# Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon.
+pos_constr_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of trailing/leading class colon, between class and base class
+# list. Affects nl_class_colon.
+pos_class_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of colons between constructor and member initialization.
+# Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.
+pos_constr_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+# The position of shift operators in wrapped expressions.
+pos_shift = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
+#
+# Line splitting options
+#
+
+# Try to limit code width to N columns.
+code_width = 0 # unsigned number
+
+# Whether to fully split long 'for' statements at semi-colons.
+ls_for_split_full = false # true/false
+
+# Whether to fully split long function prototypes/calls at commas.
+# The option ls_code_width has priority over the option ls_func_split_full.
+ls_func_split_full = false # true/false
+
+# Whether to split lines as close to code_width as possible and ignore some
+# groupings.
+# The option ls_code_width has priority over the option ls_func_split_full.
+ls_code_width = false # true/false
+
+#
+# Code alignment options (not left column spaces/tabs)
+#
+
+# Whether to keep non-indenting tabs.
+align_keep_tabs = false # true/false
+
+# Whether to use tabs for aligning.
+align_with_tabs = false # true/false
+
+# Whether to bump out to the next tab when aligning.
+align_on_tabstop = false # true/false
+
+# Whether to right-align numbers.
+align_number_right = false # true/false
+
+# Whether to keep whitespace not required for alignment.
+align_keep_extra_space = false # true/false
+
+# Whether to align variable definitions in prototypes and functions.
+align_func_params = false # true/false
+
+# The span for aligning parameter definitions in function on parameter name.
+#
+# 0: Don't align (default).
+align_func_params_span = 0 # unsigned number
+
+# The threshold for aligning function parameter definitions.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_func_params_thresh = 0 # number
+
+# The gap for aligning function parameter definitions.
+align_func_params_gap = 0 # unsigned number
+
+# The span for aligning constructor value.
+#
+# 0: Don't align (default).
+align_constr_value_span = 0 # unsigned number
+
+# The threshold for aligning constructor value.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_constr_value_thresh = 0 # number
+
+# The gap for aligning constructor value.
+align_constr_value_gap = 0 # unsigned number
+
+# Whether to align parameters in single-line functions that have the same
+# name. The function names must already be aligned with each other.
+align_same_func_call_params = false # true/false
+
+# The span for aligning function-call parameters for single line functions.
+#
+# 0: Don't align (default).
+align_same_func_call_params_span = 0 # unsigned number
+
+# The threshold for aligning function-call parameters for single line
+# functions.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_same_func_call_params_thresh = 0 # number
+
+# The span for aligning variable definitions.
+#
+# 0: Don't align (default).
+align_var_def_span = 0 # unsigned number
+
+# How to consider (or treat) the '*' in the alignment of variable definitions.
+#
+# 0: Part of the type 'void * foo;' (default)
+# 1: Part of the variable 'void *foo;'
+# 2: Dangling 'void *foo;'
+# Dangling: the '*' will not be taken into account when aligning.
+align_var_def_star_style = 0 # unsigned number
+
+# How to consider (or treat) the '&' in the alignment of variable definitions.
+#
+# 0: Part of the type 'long & foo;' (default)
+# 1: Part of the variable 'long &foo;'
+# 2: Dangling 'long &foo;'
+# Dangling: the '&' will not be taken into account when aligning.
+align_var_def_amp_style = 0 # unsigned number
+
+# The threshold for aligning variable definitions.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_var_def_thresh = 0 # number
+
+# The gap for aligning variable definitions.
+align_var_def_gap = 0 # unsigned number
+
+# Whether to align the colon in struct bit fields.
+align_var_def_colon = false # true/false
+
+# The gap for aligning the colon in struct bit fields.
+align_var_def_colon_gap = 0 # unsigned number
+
+# Whether to align any attribute after the variable name.
+align_var_def_attribute = false # true/false
+
+# Whether to align inline struct/enum/union variable definitions.
+align_var_def_inline = false # true/false
+
+# The span for aligning on '=' in assignments.
+#
+# 0: Don't align (default).
+align_assign_span = 0 # unsigned number
+
+# The span for aligning on '=' in function prototype modifier.
+#
+# 0: Don't align (default).
+align_assign_func_proto_span = 0 # unsigned number
+
+# The threshold for aligning on '=' in assignments.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_assign_thresh = 0 # number
+
+# Whether to align on the left most assignment when multiple
+# definitions are found on the same line.
+# Depends on 'align_assign_span' and 'align_assign_thresh' settings.
+align_assign_on_multi_var_defs = false # true/false
+
+# The span for aligning on '{' in braced init list.
+#
+# 0: Don't align (default).
+align_braced_init_list_span = 0 # unsigned number
+
+# The threshold for aligning on '{' in braced init list.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_braced_init_list_thresh = 0 # number
+
+# How to apply align_assign_span to function declaration "assignments", i.e.
+# 'virtual void foo() = 0' or '~foo() = {default|delete}'.
+#
+# 0: Align with other assignments (default)
+# 1: Align with each other, ignoring regular assignments
+# 2: Don't align
+align_assign_decl_func = 0 # unsigned number
+
+# The span for aligning on '=' in enums.
+#
+# 0: Don't align (default).
+align_enum_equ_span = 0 # unsigned number
+
+# The threshold for aligning on '=' in enums.
+# Use a negative number for absolute thresholds.
+#
+# 0: no limit (default).
+align_enum_equ_thresh = 0 # number
+
+# The span for aligning class member definitions.
+#
+# 0: Don't align (default).
+align_var_class_span = 0 # unsigned number
+
+# The threshold for aligning class member definitions.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_var_class_thresh = 0 # number
+
+# The gap for aligning class member definitions.
+align_var_class_gap = 0 # unsigned number
+
+# The span for aligning struct/union member definitions.
+#
+# 0: Don't align (default).
+align_var_struct_span = 0 # unsigned number
+
+# The threshold for aligning struct/union member definitions.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_var_struct_thresh = 0 # number
+
+# The gap for aligning struct/union member definitions.
+align_var_struct_gap = 0 # unsigned number
+
+# The span for aligning struct initializer values.
+#
+# 0: Don't align (default).
+align_struct_init_span = 0 # unsigned number
+
+# The span for aligning single-line typedefs.
+#
+# 0: Don't align (default).
+align_typedef_span = 0 # unsigned number
+
+# The minimum space between the type and the synonym of a typedef.
+align_typedef_gap = 0 # unsigned number
+
+# How to align typedef'd functions with other typedefs.
+#
+# 0: Don't mix them at all (default)
+# 1: Align the open parenthesis with the types
+# 2: Align the function type name with the other type names
+align_typedef_func = 0 # unsigned number
+
+# How to consider (or treat) the '*' in the alignment of typedefs.
+#
+# 0: Part of the typedef type, 'typedef int * pint;' (default)
+# 1: Part of type name: 'typedef int *pint;'
+# 2: Dangling: 'typedef int *pint;'
+# Dangling: the '*' will not be taken into account when aligning.
+align_typedef_star_style = 0 # unsigned number
+
+# How to consider (or treat) the '&' in the alignment of typedefs.
+#
+# 0: Part of the typedef type, 'typedef int & intref;' (default)
+# 1: Part of type name: 'typedef int &intref;'
+# 2: Dangling: 'typedef int &intref;'
+# Dangling: the '&' will not be taken into account when aligning.
+align_typedef_amp_style = 0 # unsigned number
+
+# The span for aligning comments that end lines.
+#
+# 0: Don't align (default).
+align_right_cmt_span = 0 # unsigned number
+
+# Minimum number of columns between preceding text and a trailing comment in
+# order for the comment to qualify for being aligned. Must be non-zero to have
+# an effect.
+align_right_cmt_gap = 0 # unsigned number
+
+# If aligning comments, whether to mix with comments after '}' and #endif with
+# less than three spaces before the comment.
+align_right_cmt_mix = false # true/false
+
+# Whether to only align trailing comments that are at the same brace level.
+align_right_cmt_same_level = false # true/false
+
+# Minimum column at which to align trailing comments. Comments which are
+# aligned beyond this column, but which can be aligned in a lesser column,
+# may be "pulled in".
+#
+# 0: Ignore (default).
+align_right_cmt_at_col = 0 # unsigned number
+
+# The span for aligning function prototypes.
+#
+# 0: Don't align (default).
+align_func_proto_span = 0 # unsigned number
+
+# Whether to ignore continuation lines when evaluating the number of
+# new lines for the function prototype alignment's span.
+#
+# false: continuation lines are part of the newlines count
+# true: continuation lines are not counted
+align_func_proto_span_ignore_cont_lines = false # true/false
+
+# How to consider (or treat) the '*' in the alignment of function prototypes.
+#
+# 0: Part of the type 'void * foo();' (default)
+# 1: Part of the function 'void *foo();'
+# 2: Dangling 'void *foo();'
+# Dangling: the '*' will not be taken into account when aligning.
+align_func_proto_star_style = 0 # unsigned number
+
+# How to consider (or treat) the '&' in the alignment of function prototypes.
+#
+# 0: Part of the type 'long & foo();' (default)
+# 1: Part of the function 'long &foo();'
+# 2: Dangling 'long &foo();'
+# Dangling: the '&' will not be taken into account when aligning.
+align_func_proto_amp_style = 0 # unsigned number
+
+# The threshold for aligning function prototypes.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_func_proto_thresh = 0 # number
+
+# Minimum gap between the return type and the function name.
+align_func_proto_gap = 0 # unsigned number
+
+# Whether to align function prototypes on the 'operator' keyword instead of
+# what follows.
+align_on_operator = false # true/false
+
+# 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 # true/false
+
+# Whether to align single-line functions with function prototypes.
+# Uses align_func_proto_span.
+align_single_line_func = false # true/false
+
+# Whether to align the open brace of single-line functions.
+# Requires align_single_line_func=true. Uses align_func_proto_span.
+align_single_line_brace = false # true/false
+
+# Gap for align_single_line_brace.
+align_single_line_brace_gap = 0 # unsigned number
+
+# (OC) The span for aligning Objective-C message specifications.
+#
+# 0: Don't align (default).
+align_oc_msg_spec_span = 0 # unsigned number
+
+# Whether and how to align backslashes that split a macro onto multiple lines.
+# This will not work right if the macro contains a multi-line comment.
+#
+# 0: Do nothing (default)
+# 1: Align the backslashes in the column at the end of the longest line
+# 2: Align with the backslash that is farthest to the left, or, if that
+# backslash is farther left than the end of the longest line, at the end of
+# the longest line
+# 3: Align with the backslash that is farthest to the right
+align_nl_cont = 0 # unsigned number
+
+# The minimum number of spaces between the end of a line and its continuation
+# backslash. Requires align_nl_cont.
+#
+# Default: 1
+align_nl_cont_spaces = 1 # unsigned number
+
+# Whether to align macro functions and variables together.
+align_pp_define_together = false # true/false
+
+# The span for aligning on '#define' bodies.
+#
+# =0: Don't align (default)
+# >0: Number of lines (including comments) between blocks
+align_pp_define_span = 0 # unsigned number
+
+# The minimum space between label and value of a preprocessor define.
+align_pp_define_gap = 0 # unsigned number
+
+# Whether to align lines that start with '<<' with previous '<<'.
+#
+# Default: true
+align_left_shift = true # true/false
+
+# Whether to align comma-separated statements following '<<' (as used to
+# initialize Eigen matrices).
+align_eigen_comma_init = false # true/false
+
+# Whether to align text after 'asm volatile ()' colons.
+align_asm_colon = false # true/false
+
+# (OC) Span for aligning parameters in an Objective-C message call
+# on the ':'.
+#
+# 0: Don't align.
+align_oc_msg_colon_span = 0 # unsigned number
+
+# (OC) Whether to always align with the first parameter, even if it is too
+# short.
+align_oc_msg_colon_first = false # true/false
+
+# (OC) Whether to align parameters in an Objective-C '+' or '-' declaration
+# on the ':'.
+align_oc_decl_colon = false # true/false
+
+# (OC) Whether to not align parameters in an Objectve-C message call if first
+# colon is not on next line of the message call (the same way Xcode does
+# alignment)
+align_oc_msg_colon_xcode_like = false # true/false
+
+#
+# Comment modification options
+#
+
+# Try to wrap comments at N columns.
+cmt_width = 0 # unsigned number
+
+# How to reflow comments.
+#
+# 0: No reflowing (apart from the line wrapping due to cmt_width) (default)
+# 1: No touching at all
+# 2: Full reflow (enable cmt_indent_multi for indent with line wrapping due to cmt_width)
+cmt_reflow_mode = 0 # unsigned number
+
+# Path to a file that contains regular expressions describing patterns for
+# which the end of one line and the beginning of the next will be folded into
+# the same sentence or paragraph during full comment reflow. The regular
+# expressions are described using ECMAScript syntax. The syntax for this
+# specification is as follows, where "..." indicates the custom regular
+# expression and "n" indicates the nth end_of_prev_line_regex and
+# beg_of_next_line_regex regular expression pair:
+#
+# end_of_prev_line_regex[1] = "...$"
+# beg_of_next_line_regex[1] = "^..."
+# end_of_prev_line_regex[2] = "...$"
+# beg_of_next_line_regex[2] = "^..."
+# .
+# .
+# .
+# end_of_prev_line_regex[n] = "...$"
+# beg_of_next_line_regex[n] = "^..."
+#
+# Note that use of this option overrides the default reflow fold regular
+# expressions, which are internally defined as follows:
+#
+# end_of_prev_line_regex[1] = "[\w,\]\)]$"
+# beg_of_next_line_regex[1] = "^[\w,\[\(]"
+# end_of_prev_line_regex[2] = "\.$"
+# beg_of_next_line_regex[2] = "^[A-Z]"
+cmt_reflow_fold_regex_file = "" # string
+
+# Whether to indent wrapped lines to the start of the encompassing paragraph
+# during full comment reflow (cmt_reflow_mode = 2). Overrides the value
+# specified by cmt_sp_after_star_cont.
+#
+# Note that cmt_align_doxygen_javadoc_tags overrides this option for
+# paragraphs associated with javadoc tags
+cmt_reflow_indent_to_paragraph_start = false # true/false
+
+# Whether to convert all tabs to spaces in comments. If false, tabs in
+# comments are left alone, unless used for indenting.
+cmt_convert_tab_to_spaces = false # true/false
+
+# Whether to apply changes to multi-line comments, including cmt_width,
+# keyword substitution and leading chars.
+#
+# Default: true
+cmt_indent_multi = true # true/false
+
+# Whether to align doxygen javadoc-style tags ('@param', '@return', etc.)
+# and corresponding fields such that groups of consecutive block tags,
+# parameter names, and descriptions align with one another. Overrides that
+# which is specified by the cmt_sp_after_star_cont. If cmt_width > 0, it may
+# be necessary to enable cmt_indent_multi and set cmt_reflow_mode = 2
+# in order to achieve the desired alignment for line-wrapping.
+cmt_align_doxygen_javadoc_tags = false # true/false
+
+# The number of spaces to insert after the star and before doxygen
+# javadoc-style tags (@param, @return, etc). Requires enabling
+# cmt_align_doxygen_javadoc_tags. Overrides that which is specified by the
+# cmt_sp_after_star_cont.
+#
+# Default: 1
+cmt_sp_before_doxygen_javadoc_tags = 1 # unsigned number
+
+# Whether to change trailing, single-line c-comments into cpp-comments.
+cmt_trailing_single_line_c_to_cpp = false # true/false
+
+# Whether to group c-comments that look like they are in a block.
+cmt_c_group = false # true/false
+
+# Whether to put an empty '/*' on the first line of the combined c-comment.
+cmt_c_nl_start = false # true/false
+
+# Whether to add a newline before the closing '*/' of the combined c-comment.
+cmt_c_nl_end = false # true/false
+
+# Whether to change cpp-comments into c-comments.
+cmt_cpp_to_c = false # true/false
+
+# Whether to group cpp-comments that look like they are in a block. Only
+# meaningful if cmt_cpp_to_c=true.
+cmt_cpp_group = false # true/false
+
+# Whether to put an empty '/*' on the first line of the combined cpp-comment
+# when converting to a c-comment.
+#
+# Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
+cmt_cpp_nl_start = false # true/false
+
+# Whether to add a newline before the closing '*/' of the combined cpp-comment
+# when converting to a c-comment.
+#
+# Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
+cmt_cpp_nl_end = false # true/false
+
+# Whether to put a star on subsequent comment lines.
+cmt_star_cont = false # true/false
+
+# The number of spaces to insert at the start of subsequent comment lines.
+cmt_sp_before_star_cont = 0 # unsigned number
+
+# The number of spaces to insert after the star on subsequent comment lines.
+cmt_sp_after_star_cont = 0 # unsigned number
+
+# For multi-line comments with a '*' lead, remove leading spaces if the first
+# and last lines of the comment are the same length.
+#
+# Default: true
+cmt_multi_check_last = true # true/false
+
+# For multi-line comments with a '*' lead, remove leading spaces if the first
+# and last lines of the comment are the same length AND if the length is
+# bigger as the first_len minimum.
+#
+# Default: 4
+cmt_multi_first_len_minimum = 4 # unsigned number
+
+# Path to a file that contains text to insert at the beginning of a file if
+# the file doesn't start with a C/C++ comment. If the inserted text contains
+# '$(filename)', that will be replaced with the current file's name.
+cmt_insert_file_header = "" # string
+
+# Path to a file that contains text to insert at the end of a file if the
+# file doesn't end with a C/C++ comment. If the inserted text contains
+# '$(filename)', that will be replaced with the current file's name.
+cmt_insert_file_footer = "" # string
+
+# Path to a file that contains text to insert before a function definition if
+# the function isn't preceded by a C/C++ comment. If the inserted text
+# contains '$(function)', '$(javaparam)' or '$(fclass)', these will be
+# replaced with, respectively, the name of the function, the javadoc '@param'
+# and '@return' stuff, or the name of the class to which the member function
+# belongs.
+cmt_insert_func_header = "" # string
+
+# Path to a file that contains text to insert before a class if the class
+# isn't preceded by a C/C++ comment. If the inserted text contains '$(class)',
+# that will be replaced with the class name.
+cmt_insert_class_header = "" # string
+
+# Path to a file that contains text to insert before an Objective-C message
+# specification, if the method isn't preceded by a C/C++ comment. If the
+# inserted text contains '$(message)' or '$(javaparam)', these will be
+# replaced with, respectively, the name of the function, or the javadoc
+# '@param' and '@return' stuff.
+cmt_insert_oc_msg_header = "" # string
+
+# Whether a comment should be inserted if a preprocessor is encountered when
+# stepping backwards from a function name.
+#
+# Applies to cmt_insert_oc_msg_header, cmt_insert_func_header and
+# cmt_insert_class_header.
+cmt_insert_before_preproc = false # true/false
+
+# Whether a comment should be inserted if a function is declared inline to a
+# class definition.
+#
+# Applies to cmt_insert_func_header.
+#
+# Default: true
+cmt_insert_before_inlines = true # true/false
+
+# Whether a comment should be inserted if the function is a class constructor
+# or destructor.
+#
+# Applies to cmt_insert_func_header.
+cmt_insert_before_ctor_dtor = false # true/false
+
+#
+# Code modifying options (non-whitespace)
+#
+
+# Add or remove braces on a single-line 'do' statement.
+mod_full_brace_do = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove braces on a single-line 'for' statement.
+mod_full_brace_for = ignore # ignore/add/remove/force/not_defined
+
+# (Pawn) Add or remove braces on a single-line function definition.
+mod_full_brace_function = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove braces on a single-line 'if' statement. Braces will not be
+# removed if the braced statement contains an 'else'.
+mod_full_brace_if = ignore # ignore/add/remove/force/not_defined
+
+# Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either
+# have, or do not have, braces. Overrides mod_full_brace_if.
+#
+# 0: Don't override mod_full_brace_if
+# 1: Add braces to all blocks if any block needs braces and remove braces if
+# they can be removed from all blocks
+# 2: Add braces to all blocks if any block already has braces, regardless of
+# whether it needs them
+# 3: Add braces to all blocks if any block needs braces and remove braces if
+# they can be removed from all blocks, except if all blocks have braces
+# despite none needing them
+mod_full_brace_if_chain = 0 # unsigned number
+
+# Whether to add braces to all blocks of an 'if'/'else if'/'else' chain.
+# If true, mod_full_brace_if_chain will only remove braces from an 'if' that
+# does not have an 'else if' or 'else'.
+mod_full_brace_if_chain_only = false # true/false
+
+# Add or remove braces on single-line 'while' statement.
+mod_full_brace_while = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove braces on single-line 'using ()' statement.
+mod_full_brace_using = ignore # ignore/add/remove/force/not_defined
+
+# Don't remove braces around statements that span N newlines
+mod_full_brace_nl = 0 # unsigned number
+
+# Whether to prevent removal of braces from 'if'/'for'/'while'/etc. blocks
+# which span multiple lines.
+#
+# Affects:
+# mod_full_brace_for
+# mod_full_brace_if
+# mod_full_brace_if_chain
+# mod_full_brace_if_chain_only
+# mod_full_brace_while
+# mod_full_brace_using
+#
+# Does not affect:
+# mod_full_brace_do
+# mod_full_brace_function
+mod_full_brace_nl_block_rem_mlcond = false # true/false
+
+# Add or remove unnecessary parentheses on 'return' statement.
+mod_paren_on_return = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove unnecessary parentheses on 'throw' statement.
+mod_paren_on_throw = ignore # ignore/add/remove/force/not_defined
+
+# (Pawn) Whether to change optional semicolons to real semicolons.
+mod_pawn_semicolon = false # true/false
+
+# Whether to fully parenthesize Boolean expressions in 'while' and 'if'
+# statement, as in 'if (a && b > c)' => 'if (a && (b > c))'.
+mod_full_paren_if_bool = false # true/false
+
+# Whether to fully parenthesize Boolean expressions after '='
+# statement, as in 'x = a && b > c;' => 'x = (a && (b > c));'.
+mod_full_paren_assign_bool = false # true/false
+
+# Whether to fully parenthesize Boolean expressions after '='
+# statement, as in 'return a && b > c;' => 'return (a && (b > c));'.
+mod_full_paren_return_bool = false # true/false
+
+# Whether to remove superfluous semicolons.
+mod_remove_extra_semicolon = false # true/false
+
+# Whether to remove duplicate include.
+mod_remove_duplicate_include = false # true/false
+
+# the following options (mod_XX_closebrace_comment) use different comment,
+# depending of the setting of the next option.
+# false: Use the c comment (default)
+# true : Use the cpp comment
+mod_add_force_c_closebrace_comment = false # true/false
+
+# 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 = 0 # unsigned number
+
+# If a namespace 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_namespace_closebrace_comment = 0 # unsigned number
+
+# If a class 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_class_closebrace_comment = 0 # unsigned 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 = 0 # unsigned number
+
+# If an #ifdef body exceeds the specified number of newlines and doesn't have
+# a comment after the #endif, a comment will be added.
+mod_add_long_ifdef_endif_comment = 0 # unsigned number
+
+# If an #ifdef or #else body exceeds the specified number of newlines and
+# doesn't have a comment after the #else, a comment will be added.
+mod_add_long_ifdef_else_comment = 0 # unsigned number
+
+# Whether to take care of the case by the mod_sort_xx options.
+mod_sort_case_sensitive = false # true/false
+
+# Whether to sort consecutive single-line 'import' statements.
+mod_sort_import = false # true/false
+
+# (C#) Whether to sort consecutive single-line 'using' statements.
+mod_sort_using = false # true/false
+
+# Whether to sort consecutive single-line '#include' statements (C/C++) and
+# '#import' statements (Objective-C). Be aware that this has the potential to
+# break your code if your includes/imports have ordering dependencies.
+mod_sort_include = false # true/false
+
+# Whether to prioritize '#include' and '#import' statements that contain
+# filename without extension when sorting is enabled.
+mod_sort_incl_import_prioritize_filename = false # true/false
+
+# Whether to prioritize '#include' and '#import' statements that does not
+# contain extensions when sorting is enabled.
+mod_sort_incl_import_prioritize_extensionless = false # true/false
+
+# Whether to prioritize '#include' and '#import' statements that contain
+# angle over quotes when sorting is enabled.
+mod_sort_incl_import_prioritize_angle_over_quotes = false # true/false
+
+# Whether to ignore file extension in '#include' and '#import' statements
+# for sorting comparison.
+mod_sort_incl_import_ignore_extension = false # true/false
+
+# Whether to group '#include' and '#import' statements when sorting is enabled.
+mod_sort_incl_import_grouping_enabled = false # true/false
+
+# Whether to move a 'break' that appears after a fully braced 'case' before
+# the close brace, as in 'case X: { ... } break;' => 'case X: { ... break; }'.
+mod_move_case_break = false # true/false
+
+# Whether to move a 'return' that appears after a fully braced 'case' before
+# the close brace, as in 'case X: { ... } return;' => 'case X: { ... return; }'.
+mod_move_case_return = false # true/false
+
+# Add or remove braces around a fully braced case statement. Will only remove
+# braces if there are no variable declarations in the block.
+mod_case_brace = ignore # ignore/add/remove/force/not_defined
+
+# Whether to remove a void 'return;' that appears as the last statement in a
+# function.
+mod_remove_empty_return = false # true/false
+
+# Add or remove the comma after the last value of an enumeration.
+mod_enum_last_comma = ignore # ignore/add/remove/force/not_defined
+
+# Syntax to use for infinite loops.
+#
+# 0: Leave syntax alone (default)
+# 1: Rewrite as `for(;;)`
+# 2: Rewrite as `while(true)`
+# 3: Rewrite as `do`...`while(true);`
+# 4: Rewrite as `while(1)`
+# 5: Rewrite as `do`...`while(1);`
+#
+# Infinite loops that do not already match one of these syntaxes are ignored.
+# Other options that affect loop formatting will be applied after transforming
+# the syntax.
+mod_infinite_loop = 0 # unsigned number
+
+# Add or remove the 'int' keyword in 'int short'.
+mod_int_short = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'short int'.
+mod_short_int = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'int long'.
+mod_int_long = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'long int'.
+mod_long_int = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'int signed'.
+mod_int_signed = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'signed int'.
+mod_signed_int = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'int unsigned'.
+mod_int_unsigned = ignore # ignore/add/remove/force/not_defined
+
+# Add or remove the 'int' keyword in 'unsigned int'.
+mod_unsigned_int = ignore # ignore/add/remove/force/not_defined
+
+# If there is a situation where mod_int_* and mod_*_int would result in
+# multiple int keywords, whether to keep the rightmost int (the default) or the
+# leftmost int.
+mod_int_prefer_int_on_left = false # true/false
+
+# (OC) Whether to organize the properties. If true, properties will be
+# rearranged according to the mod_sort_oc_property_*_weight factors.
+mod_sort_oc_properties = false # true/false
+
+# (OC) Weight of a class property modifier.
+mod_sort_oc_property_class_weight = 0 # number
+
+# (OC) Weight of 'atomic' and 'nonatomic'.
+mod_sort_oc_property_thread_safe_weight = 0 # number
+
+# (OC) Weight of 'readwrite' when organizing properties.
+mod_sort_oc_property_readwrite_weight = 0 # number
+
+# (OC) Weight of a reference type specifier ('retain', 'copy', 'assign',
+# 'weak', 'strong') when organizing properties.
+mod_sort_oc_property_reference_weight = 0 # number
+
+# (OC) Weight of getter type ('getter=') when organizing properties.
+mod_sort_oc_property_getter_weight = 0 # number
+
+# (OC) Weight of setter type ('setter=') when organizing properties.
+mod_sort_oc_property_setter_weight = 0 # number
+
+# (OC) Weight of nullability type ('nullable', 'nonnull', 'null_unspecified',
+# 'null_resettable') when organizing properties.
+mod_sort_oc_property_nullability_weight = 0 # number
+
+#
+# Preprocessor options
+#
+
+# How to use tabs when indenting preprocessor code.
+#
+# -1: Use 'indent_with_tabs' setting (default)
+# 0: Spaces only
+# 1: Indent with tabs to brace level, align with spaces
+# 2: Indent and align with tabs, using spaces when not on a tabstop
+#
+# Default: -1
+pp_indent_with_tabs = -1 # number
+
+# Add or remove indentation of preprocessor directives inside #if blocks
+# at brace level 0 (file-level).
+pp_indent = ignore # ignore/add/remove/force/not_defined
+
+# Whether to indent #if/#else/#endif at the brace level. If false, these are
+# indented from column 1.
+pp_indent_at_level = false # true/false
+
+# Whether to indent #if/#else/#endif at the parenthesis level if the brace
+# level is 0. If false, these are indented from column 1.
+pp_indent_at_level0 = false # true/false
+
+# Specifies the number of columns to indent preprocessors per level
+# at brace level 0 (file-level). If pp_indent_at_level=false, also specifies
+# the number of columns to indent preprocessors per level
+# at brace level > 0 (function-level).
+#
+# Default: 1
+pp_indent_count = 1 # unsigned number
+
+# Add or remove space after # based on pp level of #if blocks.
+pp_space_after = ignore # ignore/add/remove/force/not_defined
+
+# Sets the number of spaces per level added with pp_space_after.
+pp_space_count = 0 # unsigned number
+
+# The indent for '#region' and '#endregion' in C# and '#pragma region' in
+# C/C++. Negative values decrease indent down to the first column.
+pp_indent_region = 0 # number
+
+# Whether to indent the code between #region and #endregion.
+pp_region_indent_code = false # true/false
+
+# If pp_indent_at_level=true, sets the indent for #if, #else and #endif when
+# not at file-level. Negative values decrease indent down to the first column.
+#
+# =0: Indent preprocessors using output_tab_size
+# >0: Column at which all preprocessors will be indented
+pp_indent_if = 0 # number
+
+# Whether to indent the code between #if, #else and #endif.
+pp_if_indent_code = false # true/false
+
+# Whether to indent the body of an #if that encompasses all the code in the file.
+pp_indent_in_guard = false # true/false
+
+# Whether to indent '#define' at the brace level. If false, these are
+# indented from column 1.
+pp_define_at_level = false # true/false
+
+# Whether to indent '#include' at the brace level.
+pp_include_at_level = false # true/false
+
+# Whether to ignore the '#define' body while formatting.
+pp_ignore_define_body = false # true/false
+
+# An offset value that controls the indentation of the body of a multiline #define.
+# 'body' refers to all the lines of a multiline #define except the first line.
+# Requires 'pp_ignore_define_body = false'.
+#
+# <0: Absolute column: the body indentation starts off at the specified column
+# (ex. -3 ==> the body is indented starting from column 3)
+# >=0: Relative to the column of the '#' of '#define'
+# (ex. 3 ==> the body is indented starting 3 columns at the right of '#')
+#
+# Default: 8
+pp_multiline_define_body_indent = 8 # number
+
+# Whether to indent case statements between #if, #else, and #endif.
+# Only applies to the indent of the preprocessor that the case statements
+# directly inside of.
+#
+# Default: true
+pp_indent_case = true # true/false
+
+# Whether to indent whole function definitions between #if, #else, and #endif.
+# Only applies to the indent of the preprocessor that the function definition
+# is directly inside of.
+#
+# Default: true
+pp_indent_func_def = true # true/false
+
+# Whether to indent extern C blocks between #if, #else, and #endif.
+# Only applies to the indent of the preprocessor that the extern block is
+# directly inside of.
+#
+# Default: true
+pp_indent_extern = true # true/false
+
+# How to indent braces directly inside #if, #else, and #endif.
+# Requires pp_if_indent_code=true and only applies to the indent of the
+# preprocessor that the braces are directly inside of.
+# 0: No extra indent
+# 1: Indent by one level
+# -1: Preserve original indentation
+#
+# Default: 1
+pp_indent_brace = 1 # number
+
+# Whether to print warning messages for unbalanced #if and #else blocks.
+# This will print a message in the following cases:
+# - if an #ifdef block ends on a different indent level than
+# where it started from. Example:
+#
+# #ifdef TEST
+# int i;
+# {
+# int j;
+# #endif
+#
+# - an #elif/#else block ends on a different indent level than
+# the corresponding #ifdef block. Example:
+#
+# #ifdef TEST
+# int i;
+# #else
+# }
+# int j;
+# #endif
+pp_warn_unbalanced_if = false # true/false
+
+#
+# Sort includes options
+#
+
+# The regex for include category with priority 0.
+include_category_0 = "" # string
+
+# The regex for include category with priority 1.
+include_category_1 = "" # string
+
+# The regex for include category with priority 2.
+include_category_2 = "" # string
+
+#
+# Use or Do not Use options
+#
+
+# true: indent_func_call_param will be used (default)
+# false: indent_func_call_param will NOT be used
+#
+# Default: true
+use_indent_func_call_param = true # true/false
+
+# The value of the indentation for a continuation line is calculated
+# differently if the statement is:
+# - a declaration: your case with QString fileName ...
+# - an assignment: your case with pSettings = new QSettings( ...
+#
+# At the second case the indentation value might be used twice:
+# - at the assignment
+# - at the function call (if present)
+#
+# To prevent the double use of the indentation value, use this option with the
+# value 'true'.
+#
+# true: indent_continue will be used only once
+# false: indent_continue will be used every time (default)
+#
+# Requires indent_ignore_first_continue=false.
+use_indent_continue_only_once = false # true/false
+
+# The indentation can be:
+# - after the assignment, at the '[' character
+# - at the beginning of the lambda body
+#
+# true: indentation will be at the beginning of the lambda body
+# false: indentation will be after the assignment (default)
+indent_cpp_lambda_only_once = false # true/false
+
+# Whether sp_after_angle takes precedence over sp_inside_fparen. This was the
+# historic behavior, but is probably not the desired behavior, so this is off
+# by default.
+use_sp_after_angle_always = false # true/false
+
+# Whether to apply special formatting for Qt SIGNAL/SLOT macros. Essentially,
+# this tries to format these so that they match Qt's normalized form (i.e. the
+# result of QMetaObject::normalizedSignature), which can slightly improve the
+# performance of the QObject::connect call, rather than how they would
+# otherwise be formatted.
+#
+# See options_for_QT.cpp for details.
+#
+# Default: true
+use_options_overriding_for_qt_macros = true # true/false
+
+# If true: the form feed character is removed from the list of whitespace
+# characters. See https://en.cppreference.com/w/cpp/string/byte/isspace.
+use_form_feed_no_more_as_whitespace_character = false # true/false
+
+#
+# Warn levels - 1: error, 2: warning (default), 3: note
+#
+
+# (C#) Warning is given if doing tab-to-\t replacement and we have found one
+# in a C# verbatim string literal.
+#
+# Default: 2
+warn_level_tabs_found_in_verbatim_string_literals = 2 # unsigned number
+
+# Limit the number of loops.
+# Used by uncrustify.cpp to exit from infinite loop.
+# 0: no limit.
+debug_max_number_of_loops = 0 # number
+
+# Set the number of the line to protocol;
+# Used in the function prot_the_line if the 2. parameter is zero.
+# 0: nothing protocol.
+debug_line_number_to_protocol = 0 # number
+
+# Set the number of second(s) before terminating formatting the current file,
+# 0: no timeout.
+# only for linux
+debug_timeout = 0 # number
+
+# Set the number of characters to be printed if the text is too long,
+# 0: do not truncate.
+debug_truncate = 0 # unsigned number
+
+# sort (or not) the tracking info.
+#
+# Default: true
+debug_sort_the_tracks = true # true/false
+
+# decode (or not) the flags as a new line.
+# only if the -p option is set.
+debug_decode_the_flags = false # true/false
+
+# use (or not) the exit(EX_SOFTWARE) function.
+#
+# Default: true
+debug_use_the_exit_function_pop = true # true/false
+
+# insert the number of the line at the beginning of each line
+set_numbering_for_html_output = false # true/false
+
+# Meaning of the settings:
+# Ignore - do not do any changes
+# Add - makes sure there is 1 or more space/brace/newline/etc
+# Force - makes sure there is exactly 1 space/brace/newline/etc,
+# behaves like Add in some contexts
+# Remove - removes space/brace/newline/etc
+#
+#
+# - Token(s) can be treated as specific type(s) with the 'set' option:
+# `set tokenType tokenString [tokenString...]`
+#
+# Example:
+# `set BOOL __AND__ __OR__`
+#
+# tokenTypes are defined in src/token_enum.h, use them without the
+# 'CT_' prefix: 'CT_BOOL' => 'BOOL'
+#
+#
+# - Token(s) can be treated as type(s) with the 'type' option.
+# `type tokenString [tokenString...]`
+#
+# Example:
+# `type int c_uint_8 Rectangle`
+#
+# This can also be achieved with `set TYPE int c_uint_8 Rectangle`
+#
+#
+# To embed whitespace in tokenStrings use the '\' escape character, or quote
+# the tokenStrings. These quotes are supported: "'`
+#
+#
+# - Support for the auto detection of languages through the file ending can be
+# added using the 'file_ext' command.
+# `file_ext langType langString [langString..]`
+#
+# Example:
+# `file_ext CPP .ch .cxx .cpp.in`
+#
+# langTypes are defined in uncrusify_types.h in the lang_flag_e enum, use
+# them without the 'LANG_' prefix: 'LANG_CPP' => 'CPP'
+#
+#
+# - Custom macro-based indentation can be set up using 'macro-open',
+# 'macro-else' and 'macro-close'.
+# `(macro-open | macro-else | macro-close) tokenString`
+#
+# Example:
+# `macro-open BEGIN_TEMPLATE_MESSAGE_MAP`
+# `macro-open BEGIN_MESSAGE_MAP`
+# `macro-close END_MESSAGE_MAP`
+#
+#
+# option(s) with 'not default' value: 0
+#
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/dofiles.sh b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/dofiles.sh
index e08fd6f7..e08fd6f7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/dofiles.sh
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/dofiles.sh
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/freebsd.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/freebsd.cfg
new file mode 100644
index 00000000..ac0ae4b7
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/freebsd.cfg
@@ -0,0 +1,386 @@
+# Uncrustify 0.55
+newlines = lf
+input_tab_size = 8
+output_tab_size = 8
+string_escape_char = 92
+string_escape_char2 = 0
+indent_columns = 8
+indent_continue = 4
+indent_with_tabs = 2
+indent_align_string = false
+indent_xml_string = 0
+indent_brace = 0
+indent_braces = false
+indent_braces_no_func = false
+indent_brace_parent = false
+indent_namespace = false
+indent_namespace_level = 0
+indent_namespace_limit = 0
+indent_extern = false
+indent_class = true
+indent_class_colon = true
+indent_else_if = false
+indent_var_def_blk = 0
+indent_func_call_param = false
+indent_func_def_param = false
+indent_func_proto_param = false
+indent_func_class_param = false
+indent_func_ctor_var_param = false
+indent_template_param = false
+indent_func_param_double = false
+indent_func_const = 0
+indent_func_throw = 0
+indent_member = 0
+indent_single_line_comments_before = 0
+indent_relative_single_line_comments = false
+indent_switch_case = 0
+indent_case_shift = 0
+indent_case_brace = 0
+indent_col1_comment = false
+indent_label = 1
+indent_access_spec = 1
+indent_access_spec_body = false
+indent_paren_nl = false
+indent_paren_close = 0
+indent_comma_paren = 0
+indent_bool_paren = 0
+indent_square_nl = false
+indent_preserve_sql = false
+indent_align_assign = true
+indent_off_after_assign = false
+sp_arith = ignore
+sp_assign = force
+sp_before_assign = ignore
+sp_after_assign = ignore
+sp_enum_assign = ignore
+sp_enum_before_assign = ignore
+sp_enum_after_assign = ignore
+sp_pp_concat = add
+sp_pp_stringify = add
+sp_bool = force
+sp_compare = force
+sp_inside_paren = remove
+sp_paren_paren = remove
+sp_balance_nested_parens = false
+sp_paren_brace = ignore
+sp_before_ptr_star = force
+sp_before_unnamed_ptr_star = ignore
+sp_between_ptr_star = remove
+sp_after_ptr_star = remove
+sp_after_ptr_star_func = ignore
+sp_before_ptr_star_func = ignore
+sp_before_byref = remove
+sp_before_unnamed_byref = ignore
+sp_after_byref = force
+sp_after_byref_func = ignore
+sp_before_byref_func = ignore
+sp_after_type = force
+sp_template_angle = ignore
+sp_before_angle = remove
+sp_inside_angle = remove
+sp_after_angle = force
+sp_angle_paren = ignore
+sp_angle_word = ignore
+sp_before_sparen = force
+sp_inside_sparen = remove
+sp_inside_sparen_close = ignore
+sp_inside_for = remove
+sp_inside_for_close = ignore
+sp_after_sparen = force
+sp_sparen_brace = add
+sp_invariant_paren = ignore
+sp_after_invariant_paren = ignore
+sp_special_semi = ignore
+sp_before_semi = remove
+sp_before_semi_for = ignore
+sp_before_semi_for_empty = force
+sp_between_semi_for_empty = force
+sp_after_semi = add
+sp_after_semi_for = force
+sp_after_semi_for_empty = ignore
+sp_before_square = ignore
+sp_before_squares = ignore
+sp_inside_square = remove
+sp_after_comma = force
+sp_before_comma = remove
+sp_before_ellipsis = ignore
+sp_after_class_colon = ignore
+sp_before_class_colon = ignore
+sp_before_case_colon = remove
+sp_after_operator = ignore
+sp_after_operator_sym = ignore
+sp_after_cast = remove
+sp_inside_paren_cast = ignore
+sp_cpp_cast_paren = ignore
+sp_sizeof_paren = remove
+sp_after_tag = ignore
+sp_inside_braces_enum = force
+sp_inside_braces_struct = force
+sp_inside_braces = force
+sp_inside_braces_empty = ignore
+sp_type_func = force
+sp_func_proto_paren = remove
+sp_func_def_paren = remove
+sp_inside_fparens = ignore
+sp_inside_fparen = remove
+sp_square_fparen = ignore
+sp_fparen_brace = add
+sp_func_call_paren = remove
+sp_func_call_user_paren = ignore
+sp_func_class_paren = remove
+sp_return_paren = force
+sp_attribute_paren = ignore
+sp_defined_paren = ignore
+sp_throw_paren = ignore
+sp_macro = ignore
+sp_macro_func = ignore
+sp_else_brace = ignore
+sp_brace_else = ignore
+sp_brace_typedef = force
+sp_catch_brace = ignore
+sp_brace_catch = ignore
+sp_finally_brace = ignore
+sp_brace_finally = ignore
+sp_try_brace = ignore
+sp_getset_brace = ignore
+sp_before_dc = remove
+sp_after_dc = remove
+sp_d_array_colon = ignore
+sp_not = remove
+sp_inv = remove
+sp_addr = remove
+sp_member = remove
+sp_deref = remove
+sp_sign = remove
+sp_incdec = remove
+sp_before_nl_cont = add
+sp_after_oc_scope = ignore
+sp_after_oc_colon = ignore
+sp_before_oc_colon = ignore
+sp_after_send_oc_colon = ignore
+sp_before_send_oc_colon = ignore
+sp_after_oc_type = ignore
+sp_after_oc_return_type = ignore
+sp_after_oc_at_sel = ignore
+sp_before_oc_block_caret = ignore
+sp_after_oc_block_caret = ignore
+sp_cond_colon = ignore
+sp_cond_question = ignore
+sp_case_label = remove
+sp_range = ignore
+sp_cmt_cpp_start = ignore
+sp_endif_cmt = ignore
+force_tab_after_define = true
+align_keep_tabs = false
+align_with_tabs = true
+align_on_tabstop = true
+align_number_right = true
+align_func_params = false
+align_same_func_call_params = false
+align_same_func_call_params_span = 0
+align_same_func_call_params_thresh = 0
+align_var_def_span = 0
+align_var_def_star_style = 0
+align_var_def_amp_style = 0
+align_var_def_thresh = 0
+align_var_def_gap = 0
+align_var_def_colon = false
+align_var_def_attribute = false
+align_var_def_inline = false
+align_assign_span = 0
+align_assign_thresh = 12
+align_enum_equ_span = 16
+align_enum_equ_thresh = 0
+align_var_struct_span = 99
+align_var_struct_thresh = 0
+align_var_struct_gap = 0
+align_struct_init_span = 3
+align_typedef_gap = 3
+align_typedef_span = 5
+align_typedef_func = 0
+align_typedef_star_style = 0
+align_typedef_amp_style = 0
+align_right_cmt_span = 3
+align_right_cmt_mix = false
+align_right_cmt_gap = 0
+align_right_cmt_at_col = 0
+align_func_proto_span = 0
+align_func_proto_gap = 0
+align_on_operator = false
+align_mix_var_proto = false
+align_single_line_func = false
+align_single_line_brace = false
+align_single_line_brace_gap = 0
+align_oc_msg_spec_span = 0
+align_nl_cont = 1
+align_pp_define_gap = 4
+align_pp_define_span = 3
+align_left_shift = true
+align_oc_msg_colon_span = 0
+nl_collapse_empty_body = false
+nl_assign_leave_one_liners = true
+nl_class_leave_one_liners = true
+nl_enum_leave_one_liners = false
+nl_getset_leave_one_liners = false
+nl_func_leave_one_liners = false
+nl_if_leave_one_liners = false
+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 = add
+nl_assign_square = ignore
+nl_after_square_assign = ignore
+nl_var_def_blk_end_func_top = 1
+nl_fcall_brace = add
+nl_enum_brace = remove
+nl_struct_brace = remove
+nl_union_brace = remove
+nl_if_brace = remove
+nl_brace_else = remove
+nl_elseif_brace = ignore
+nl_else_brace = remove
+nl_else_if = remove
+nl_brace_finally = ignore
+nl_finally_brace = ignore
+nl_try_brace = ignore
+nl_getset_brace = force
+nl_for_brace = add
+nl_catch_brace = ignore
+nl_brace_catch = ignore
+nl_while_brace = add
+nl_brace_brace = ignore
+nl_do_brace = add
+nl_brace_while = remove
+nl_switch_brace = add
+nl_multi_line_cond = false
+nl_multi_line_define = true
+nl_before_case = true
+nl_before_throw = ignore
+nl_after_case = true
+nl_namespace_brace = ignore
+nl_template_class = ignore
+nl_class_brace = ignore
+nl_class_init_args = ignore
+nl_func_type_name = ignore
+nl_func_type_name_class = ignore
+nl_func_scope_name = ignore
+nl_func_proto_type_name = ignore
+nl_func_paren = remove
+nl_func_decl_start = ignore
+nl_func_decl_start_single = ignore
+nl_func_decl_args = ignore
+nl_func_decl_end = ignore
+nl_func_decl_end_single = ignore
+nl_func_decl_empty = ignore
+nl_fdef_brace = add
+nl_after_return = true
+nl_return_expr = ignore
+nl_after_semicolon = true
+nl_after_brace_open = true
+nl_after_brace_open_cmt = false
+nl_after_vbrace_open = false
+nl_after_vbrace_open_empty = false
+nl_after_brace_close = true
+nl_define_macro = false
+nl_squeeze_ifdef = true
+nl_before_if = ignore
+nl_after_if = ignore
+nl_before_for = ignore
+nl_after_for = ignore
+nl_before_while = ignore
+nl_after_while = ignore
+nl_before_switch = ignore
+nl_after_switch = ignore
+nl_before_do = ignore
+nl_after_do = ignore
+nl_ds_struct_enum_cmt = false
+nl_ds_struct_enum_close_brace = false
+nl_class_colon = ignore
+nl_create_if_one_liner = false
+nl_create_for_one_liner = false
+nl_create_while_one_liner = false
+pos_arith = ignore
+pos_assign = ignore
+pos_bool = trail
+pos_compare = ignore
+pos_conditional = ignore
+pos_comma = ignore
+pos_class_comma = ignore
+pos_class_colon = ignore
+code_width = 80
+ls_for_split_full = false
+ls_func_split_full = false
+nl_max = 4
+nl_after_func_proto = 0
+nl_after_func_proto_group = 2
+nl_after_func_body = 3
+nl_after_func_body_one_liner = 0
+nl_before_block_comment = 2
+nl_before_c_comment = 0
+nl_before_cpp_comment = 0
+nl_after_multiline_comment = false
+nl_before_access_spec = 0
+nl_after_access_spec = 0
+nl_comment_func_def = 1
+nl_after_try_catch_finally = 0
+nl_around_cs_property = 0
+nl_between_get_set = 0
+eat_blanks_after_open_brace = true
+eat_blanks_before_close_brace = true
+mod_full_brace_do = add
+mod_full_brace_for = add
+mod_full_brace_function = ignore
+mod_full_brace_if = add
+mod_full_brace_if_chain = 0
+mod_full_brace_nl = 0
+mod_full_brace_while = add
+mod_paren_on_return = add
+mod_pawn_semicolon = false
+mod_full_paren_if_bool = true
+mod_remove_extra_semicolon = true
+mod_add_long_function_closebrace_comment = 0
+mod_add_long_switch_closebrace_comment = 0
+mod_add_long_ifdef_endif_comment = 0
+mod_add_long_ifdef_else_comment = 0
+mod_sort_import = false
+mod_sort_using = false
+mod_sort_include = false
+mod_sort_incl_import_prioritize_filename = false
+mod_sort_incl_import_prioritize_extensionless = false
+mod_sort_incl_import_prioritize_angle_over_quotes = false
+mod_sort_incl_import_ignore_extension = false
+mod_sort_incl_import_grouping_enabled = false
+mod_move_case_break = false
+mod_case_brace = remove
+mod_remove_empty_return = true
+cmt_width = 0
+cmt_reflow_mode = 0
+cmt_indent_multi = true
+cmt_c_group = false
+cmt_c_nl_start = false
+cmt_c_nl_end = false
+cmt_cpp_group = false
+cmt_cpp_nl_start = false
+cmt_cpp_nl_end = false
+cmt_cpp_to_c = false
+cmt_star_cont = true
+cmt_sp_before_star_cont = 0
+cmt_sp_after_star_cont = 0
+cmt_multi_check_last = true
+cmt_insert_file_header = ""
+cmt_insert_file_footer = ""
+cmt_insert_func_header = ""
+cmt_insert_class_header = ""
+cmt_insert_before_preproc = false
+pp_indent = remove
+pp_indent_at_level = false
+pp_indent_at_level0 = false
+pp_indent_count = 1
+pp_space_after = ignore
+pp_space_count = 0
+pp_indent_region = 0
+pp_region_indent_code = false
+pp_indent_if = 0
+pp_if_indent_code = false
+pp_define_at_level = false
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/gnu-indent.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/gnu-indent.cfg
new file mode 100644
index 00000000..fff72aef
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/gnu-indent.cfg
@@ -0,0 +1,83 @@
+#
+# GNU format (sorta)
+#
+
+indent_with_tabs = 0 # 1=indent to level only, 2=indent with tabs
+input_tab_size = 8 # original tab size
+output_tab_size = 8 # new tab size
+indent_columns = 2
+# indent_label = 2 # pos: absolute col, neg: relative column
+indent_align_string = False # align broken strings
+indent_brace = 2
+
+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 = add # "do {" vs "do \n {"
+nl_if_brace = add # "if () {" vs "if () \n {"
+nl_for_brace = add # "for () {" vs "for () \n {"
+nl_else_brace = add # "else {" vs "else \n {"
+nl_while_brace = add # "while () {" vs "while () \n {"
+nl_switch_brace = add # "switch () {" vs "switch () \n {"
+nl_var_def_blk_end_func_top = 1
+nl_before_case = 1
+nl_fcall_brace = add # "foo() {" vs "foo()\n{"
+nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
+# nl_after_return = TRUE
+nl_brace_while = remove
+nl_brace_else = add
+nl_squeeze_ifdef = TRUE
+
+# 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 = ignore # "for () a--;" vs "for () { a--; }"
+# mod_full_brace_do = ignore # "do a--; while ();" vs "do { a--; } while ();"
+# mod_full_brace_while = ignore # "while (a) a--;" vs "while (a) { a--; }"
+
+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_for = remove
+#sp_type_func = ignore
+sp_assign = force
+sp_arith = force
+sp_bool = force
+sp_compare = 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();"
+
+# align_with_tabs = FALSE # use tabs to align
+# align_on_tabstop = FALSE # align on tabstops
+# align_enum_equ_span = 4
+# align_nl_cont = 1
+# align_var_def_span = 2
+# align_var_def_inline = TRUE
+# align_var_def_star = TRUE
+# align_var_def_colon = TRUE
+# align_assign_span = 1
+# align_struct_init_span = 3
+# align_var_struct_span = 3
+# align_right_cmt_span = 3
+# align_pp_define_span = 3
+# align_pp_define_gap = 4
+# align_number_right = 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
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/klaus.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/klaus.cfg
new file mode 100644
index 00000000..22203118
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/klaus.cfg
@@ -0,0 +1,508 @@
+
+#
+# General options
+#
+
+# The type of line endings
+newlines = lf # auto/lf/crlf/cr
+
+# The original size of tabs in the input
+input_tab_size = 8 # number
+
+# The size of tabs in the output (only used if align_with_tabs=true)
+output_tab_size = 3 # number
+
+# The ascii value of the string escape char, usually 92 (\). (Pawn)
+string_escape_char = 92 # number
+
+#
+# Indenting
+#
+
+# The number of columns to indent per level (usually 2, 3, 4, or 8)
+indent_columns = 3 # 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
+
+# Spaces to indent '{' from level
+indent_brace = 0 # number
+
+# Whether braces are indented to the body level
+indent_braces = false # false/true
+
+# Indent based on the size of the brace parent, ie 'if' => 3 spaces, 'for' => 4 spaces, etc.
+indent_brace_parent = true # false/true
+
+# Whether the 'namespace' body is indented
+indent_namespace = false # false/true
+
+# Whether the 'class' body is indented
+indent_class = true # false/true
+
+# Whether to indent the stuff after a leading class colon
+indent_class_colon = false # false/true
+
+# Whether to indent continued function call parameters one indent level (true) or aligns instead of indent (false)
+indent_func_call_param = false # false/true
+
+# The number of spaces to indent a continued '->' or '.'
+# Usually set to indent_columns.
+indent_member = 3 # number
+
+# Spaces to indent 'case' from 'switch'
+indent_switch_case = 0 # number
+
+# Spaces to indent '{' from 'case'
+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
+
+# 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
+
+# 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
+
+#
+# Spacing options
+#
+
+# Add or remove space around arithmetic operator '+', '-', '/', '*', etc
+sp_arith = force # ignore/add/remove/force
+
+# Add or remove space around assignment operator '=', '+=', etc
+sp_assign = force # ignore/add/remove/force
+
+# Add or remove space around boolean operators '&&' and '||'
+sp_bool = force # ignore/add/remove/force
+
+# Add or remove space around compare operator '<', '>', '==', etc
+sp_compare = force # ignore/add/remove/force
+
+# Add or remove space inside '(' and ')'
+sp_inside_paren = remove # ignore/add/remove/force
+
+# Add or remove space between nested parens
+sp_paren_paren = remove # ignore/add/remove/force
+
+# 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 = force # ignore/add/remove/force
+
+# Add or remove space between pointer stars '*'
+sp_between_ptr_star = remove # ignore/add/remove/force
+
+# Add or remove space after pointer star '*'
+sp_after_ptr_star = remove # ignore/add/remove/force
+
+# Add or remove space between the pointer star '*' and the name of the variable
+# in a function pointer definition.
+sp_ptr_star_func_var = remove # ignore/add/remove/force
+
+# Add or remove space before reference sign '&'
+sp_before_byref = remove # ignore/add/remove/force
+
+# Add or remove space after reference sign '&'
+sp_after_byref = ignore # ignore/add/remove/force
+
+# Add or remove space before '<>'
+sp_before_angle = force # ignore/add/remove/force
+
+# Add or remove space after '<>'
+sp_after_angle = force # ignore/add/remove/force
+
+# Add or remove space before '(' of 'if', 'for', 'switch', and 'while'
+sp_before_sparen = remove # ignore/add/remove/force
+
+# Add or remove space inside if-condition '(' and ')'
+sp_inside_sparen = remove # ignore/add/remove/force
+
+# Add or remove space inside for-loop '(' and ')'
+sp_inside_for = remove # ignore/add/remove/force
+
+# Add or remove space after ')' of 'if', 'for', 'switch', and 'while'
+sp_after_sparen = remove # ignore/add/remove/force
+
+# Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while'
+sp_sparen_brace = remove # ignore/add/remove/force
+
+# Add or remove space before empty statement ';' on 'if', 'for' and 'while'
+sp_special_semi = ignore # ignore/add/remove/force
+
+# Add or remove space before ';'
+sp_before_semi = remove # 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 = remove # ignore/add/remove/force
+
+# Add or remove space after ','
+sp_after_comma = force # 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 = remove # 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 = force # ignore/add/remove/force
+
+# Add or remove space inside struct/union '{' and '}'
+sp_inside_braces_struct = force # ignore/add/remove/force
+
+# Add or remove space inside '{' and '}'
+sp_inside_braces = force # ignore/add/remove/force
+
+# Add or remove space inside '<' and '>'
+sp_inside_angle = remove # 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 = ignore # 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 = ignore # 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 = add # 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 = remove # ignore/add/remove/force
+
+# Add or remove space between 'return' and '('
+sp_return_paren = remove # 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 = remove # ignore/add/remove/force
+
+# Add or remove space between '}' and 'else' if on the same line
+sp_brace_else = remove # 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 right-align numbers
+align_number_right = true # false/true
+
+# The span for aligning variable definitions (0=don't align)
+align_var_def_span = 1 # number
+
+# Whether the pointer star is part of the variable name or not
+align_var_def_star_style = 1
+
+# The threshold for aligning variable definitions (0=no limit)
+align_var_def_thresh = 12 # 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 = true # false/true
+
+# The span for aligning on '=' in assignments (0=don't align)
+align_assign_span = 1 # number
+
+# The threshold for aligning on '=' in assignments (0=no limit)
+align_assign_thresh = 12 # number
+
+# The span for aligning on '=' in enums (0=don't align)
+align_enum_equ_span = 16 # 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 = 99 # number
+
+# The span for aligning struct initializer values (0=don't align)
+align_struct_init_span = 3 # number
+
+# The minimum space between the type and the synonym of a typedef
+align_typedef_gap = 3 # number
+
+# The span for aligning single-line typedefs (0=don't align)
+align_typedef_span = 5 # 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: typedef int * pint;
+align_typedef_star_style = 0 # number
+
+# The span for aligning comments that end lines (0=don't align)
+align_right_cmt_span = 3 # number
+
+# The span for aligning function prototypes (0=don't align)
+align_func_proto_span = 0 # number
+
+# Whether to align macros wrapped with a backslash and a newline
+align_nl_cont = 1 # number
+
+# The minimum space between label and value of a preprocessor define
+align_pp_define_gap = 4 # number
+
+# The span for aligning on '#define' bodies (0=don't align)
+align_pp_define_span = 3 # number
+
+#
+# Newline adding and removing options
+#
+
+# Try to limit code width to N number of columns
+code_width = 0 # number
+
+# Whether to collapse empty blocks between '{' and '}'
+nl_collapse_empty_body = false # false/true
+
+# Add or remove newlines at the start of the file
+nl_start_of_file = remove # 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 = force # 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
+
+# The number of newlines after a block of variable definitions
+nl_var_def_blk_end_func_top = 1 # number
+
+# Add or remove newline between function call and '('
+nl_fcall_brace = add # 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 = remove # ignore/add/remove/force
+
+# Add or remove newline between '}' and 'else'
+nl_brace_else = force # 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 = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'else' and '{'
+nl_else_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'for' and '{'
+nl_for_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'while' and '{'
+nl_while_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'do' and '{'
+nl_do_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between '}' and 'while' of 'do' statement
+nl_brace_while = remove # ignore/add/remove/force
+
+# Add or remove newline between 'switch' and '{'
+nl_switch_brace = remove # ignore/add/remove/force
+
+# 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 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
+nl_after_brace_open = true # 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 = true # false/true
+
+#
+# Positioning options
+#
+
+# The position of boolean operators in wrapped expressions
+pos_bool = trail # ignore/lead/trail
+
+# The position of colons between constructor and member initialization
+pos_class_colon = ignore # ignore/lead/trail
+
+#
+# Blank line options
+#
+
+# The maximum consecutive newlines
+nl_max = 4 # 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 = 2 # number
+
+# The number of newlines after '}' of the function body
+nl_after_func_body = 2 # number
+
+# The minimum number of newlines before a multi-line comment (doesn't apply if after a brace open)
+nl_before_block_comment = 2 # number
+
+# Whether to remove blank lines after '{'
+eat_blanks_after_open_brace = true # false/true
+
+# Whether to remove blank lines before '}'
+eat_blanks_before_close_brace = true # 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 = add # ignore/add/remove/force
+
+# Whether to change optional semicolons to real semicolons
+mod_pawn_semicolon = false # false/true
+
+#
+# Comment modifications
+#
+
+# 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 = true # false/true
+
+#
+# Preprocessor options
+#
+
+# Add or remove indent of preprocessor directives
+pp_indent = ignore # ignore/add/remove/force
+
+# Add or remove space between # and, say, define
+pp_space_after = ignore # ignore/add/remove/force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/kr-indent.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/kr-indent.cfg
new file mode 100644
index 00000000..2307d4e3
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/kr-indent.cfg
@@ -0,0 +1,83 @@
+#
+# K&R (sort-of)
+#
+
+indent_with_tabs = 2 # 1=indent to level only, 2=indent with tabs
+input_tab_size = 8 # original tab size
+output_tab_size = 8 # new tab size
+indent_columns = output_tab_size
+indent_label = 2 # pos: absolute col, neg: relative column
+# indent_align_string = False # align broken strings
+# indent_brace = 0
+
+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_var_def_blk_end_func_top = 1
+# nl_before_case = 1
+nl_fcall_brace = add # "foo() {" vs "foo()\n{"
+nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
+# nl_after_return = TRUE
+nl_brace_while = remove
+nl_brace_else = remove
+nl_squeeze_ifdef = 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_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 # "( 1 )" vs "(1)"
+sp_inside_fparen = remove # "( 1 )" vs "(1)" - functions
+sp_inside_sparen = remove # "( 1 )" vs "(1)" - if etc
+sp_inside_for = remove # "( 1 )" vs "(1)" - for
+# sp_type_func = ignore
+sp_assign = force
+sp_arith = force
+sp_bool = force
+sp_compare = 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();"
+
+# align_with_tabs = FALSE # use tabs to align
+# align_on_tabstop = FALSE # align on tabstops
+# align_enum_equ_span = 4
+# align_nl_cont = 1
+# align_var_def_span = 2
+# align_var_def_inline = TRUE
+# align_var_def_star = TRUE
+# align_var_def_colon = TRUE
+# align_assign_span = 1
+# align_struct_init_span = 3
+# align_var_struct_span = 3
+# align_right_cmt_span = 3
+# align_pp_define_span = 3
+# align_pp_define_gap = 4
+# align_number_right = 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
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/linux-indent.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/linux-indent.cfg
new file mode 100644
index 00000000..33de446d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/linux-indent.cfg
@@ -0,0 +1,90 @@
+#
+# uncrustify config file for the linux kernel
+#
+
+indent_with_tabs = 2 # 1=indent to level only, 2=indent with tabs
+align_with_tabs = TRUE # use tabs to align
+align_on_tabstop = TRUE # align on tabstops
+input_tab_size = 8 # original tab size
+output_tab_size = 8 # new tab size
+indent_columns = output_tab_size
+
+indent_label = 2 # pos: absolute col, neg: relative column
+
+
+#
+# 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_var_def_blk_end_func_top = 1
+nl_fcall_brace = remove # "list_for_each() {" vs "list_for_each()\n{"
+nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
+# nl_after_return = TRUE;
+# nl_before_case = 1
+
+
+#
+# Source code modifications
+#
+
+# mod_paren_on_return = remove # "return 1;" vs "return (1);"
+# mod_full_brace_if = remove # "if (a) a--;" vs "if (a) { a--; }"
+# mod_full_brace_for = remove # "for () a--;" vs "for () { a--; }"
+# mod_full_brace_do = remove # "do a--; while ();" vs "do { a--; } while ();"
+# mod_full_brace_while = remove # "while (a) a--;" vs "while (a) { a--; }"
+
+
+#
+# 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_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();"
+
+
+#
+# Aligning stuff
+#
+
+align_enum_equ_span = 4 # '=' in enum definition
+# align_nl_cont = 1
+# 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 = 3 # align stuff in a structure init '= { }'
+align_right_cmt_span = 3
+# align_pp_define_span = 8;
+# align_pp_define_gap = 4;
+
+# cmt_star_cont = FALSE
+
+# indent_brace = 0
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/linux.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/linux.cfg
new file mode 100644
index 00000000..12efb4f8
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/linux.cfg
@@ -0,0 +1,123 @@
+#
+# uncrustify config file for the linux kernel
+#
+
+indent_with_tabs = 2 # 1=indent to level only, 2=indent with tabs
+input_tab_size = 8 # original tab size
+output_tab_size = 8 # new tab size
+indent_columns = output_tab_size
+
+indent_label = 1 # pos: absolute col, neg: relative column
+
+
+#
+# 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
+sp_brace_else = force
+sp_else_brace = force
+nl_var_def_blk_end_func_top = 1
+nl_fcall_brace = remove # "list_for_each() {" vs "list_for_each()\n{"
+nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
+nl_after_label_colon = true # "fail:\nfree(foo);" vs "fail: free(foo);"
+# nl_after_return = TRUE;
+# nl_before_case = 1
+
+
+#
+# Source code modifications
+#
+
+mod_paren_on_return = remove # "return 1;" vs "return (1);"
+#mod_full_brace_if = remove # "if (a) a--;" vs "if (a) { a--; }"
+mod_full_brace_if_chain = 1
+mod_full_brace_for = remove # "for () a--;" vs "for () { a--; }"
+mod_full_brace_do = remove # "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
+
+
+#
+# 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 = force # "{ 1 }" vs "{1}"
+sp_inside_braces_struct = force # "{ 1 }" vs "{1}"
+sp_inside_braces_enum = force # "{ 1 }" vs "{1}"
+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();"
+
+
+#
+# Aligning stuff
+#
+
+align_with_tabs = TRUE # use tabs to align
+align_on_tabstop = TRUE # align on tabstops
+# align_keep_tabs = true
+align_enum_equ_span = 4 # '=' in enum definition
+# align_nl_cont = 1
+# 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 = 3 # align stuff in a structure init '= { }'
+align_right_cmt_span = 3
+# align_pp_define_span = 8;
+# align_pp_define_gap = 4;
+
+cmt_star_cont = true
+
+# indent_brace = 0
+
+nl_func_paren = remove
+nl_func_decl_start = remove
+nl_func_decl_empty = remove
+nl_func_decl_args = remove
+nl_func_decl_end = remove
+sp_inside_paren = remove
+sp_inside_square = remove
+sp_inside_paren_cast = remove
+sp_inside_fparen = remove
+sp_inside_sparen = remove
+sp_inside_for = remove
+sp_paren_paren = remove
+sp_before_ptr_star = force
+sp_after_ptr_star = remove
+sp_ptr_star_func_var = remove
+sp_between_ptr_star = remove
+align_func_params = true
+align_var_struct_span = 6
+
+eat_blanks_after_open_brace = true
+eat_blanks_before_close_brace = true
+pp_indent = remove
+
+nl_start_of_file = remove
+nl_end_of_file = force
+nl_end_of_file_min = 1
+nl_comment_func_def = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/mono.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/mono.cfg
new file mode 100644
index 00000000..54740471
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/mono.cfg
@@ -0,0 +1,87 @@
+#
+# Mono library format
+#
+
+indent_with_tabs = 0 # 1=indent to level only, 2=indent with tabs
+input_tab_size = 8 # original tab size
+output_tab_size = 8 # new tab size
+indent_columns = output_tab_size
+indent_label = 2 # pos: absolute col, neg: relative column
+# indent_align_string = False # align broken strings
+# indent_brace = 0
+indent_func_call_param = true # use indent tabstop
+
+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_var_def_blk_end_func_top = 1
+nl_before_case = 1
+nl_fcall_brace = remove # "foo() {" vs "foo()\n{"
+nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
+# nl_after_return = TRUE
+nl_brace_while = remove
+nl_brace_else = add
+nl_squeeze_ifdef = 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_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_for = remove
+sp_inside_square = remove
+sp_before_square = add
+#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 = force # "int foo (){" vs "int foo(){"
+sp_func_call_paren = force # "foo (" vs "foo("
+sp_func_proto_paren = force # "int foo ();" vs "int foo();"
+
+# align_with_tabs = FALSE # use tabs to align
+# align_on_tabstop = FALSE # align on tabstops
+# align_enum_equ_span = 4
+# align_nl_cont = 1
+# align_var_def_span = 2
+# align_var_def_inline = TRUE
+# align_var_def_star = TRUE
+# align_var_def_colon = TRUE
+# align_assign_span = 1
+# align_struct_init_span = 3
+# align_var_struct_span = 3
+# align_right_cmt_span = 3
+# align_pp_define_span = 3
+# align_pp_define_gap = 4
+# align_number_right = 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
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/msvc.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/msvc.cfg
index 36e9e14f..36e9e14f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/msvc.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/msvc.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/objc.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/objc.cfg
new file mode 100644
index 00000000..ebb303bd
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/objc.cfg
@@ -0,0 +1,138 @@
+#
+# uncrustify config file for objective-c and objective-c++
+#
+
+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_var_def_blk_end_func_top = 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_endif_comment
+mod_add_long_switch_closebrace_comment = mod_add_long_ifdef_endif_comment
+mod_add_long_function_closebrace_comment = mod_add_long_ifdef_endif_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_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
+sp_before_oc_block_caret = ignore
+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 = 1
+# 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
+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
+
+
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/sun.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/sun.cfg
new file mode 100644
index 00000000..1d471287
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/sun.cfg
@@ -0,0 +1,1810 @@
+#
+# Sun C/C++/Java
+# https://www.cis.upenn.edu/~lee/06cse480/data/cstyle.ms.pdf
+# http://www.oracle.com/technetwork/java/codeconventions-150003.pdf
+#
+
+# The type of line endings
+newlines = auto # auto/lf/crlf/cr
+
+# The original size of tabs in the input
+input_tab_size = 8 # number
+
+# The size of tabs in the output (only used if align_with_tabs=true)
+output_tab_size = 8 # 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
+
+# Replace tab characters found in string literals with the escape sequence \t instead.
+string_replace_tab_chars = true # false/true
+
+# Allow interpreting '>=' and '>>=' as part of a template in 'void f(list<list<B>>=val);'.
+# If true (default), 'assert(x<0 && y>=3)' will be broken.
+# Improvements to template detection may make this option obsolete.
+tok_split_gte = false # false/true
+
+# Override the default ' *INDENT-OFF*' in comments for disabling processing of part of the file.
+disable_processing_cmt = "" # string
+
+# Override the default ' *INDENT-ON*' in comments for enabling processing of part of the file.
+enable_processing_cmt = "" # string
+
+# Enable parsing of digraphs. Default=false
+enable_digraphs = false # false/true
+
+# If the file contains bytes with values between 128 and 255, but is not UTF-8, then output as UTF-8
+utf8_byte = false # false/true
+
+# Force the output encoding to UTF-8
+utf8_force = false # false/true
+
+#
+# Indenting
+#
+
+# The number of columns to indent per level.
+# Usually 2, 3, 4, or 8.
+indent_columns = 4 # number
+
+# The continuation indent. If non-zero, this overrides the indent of '(' and '=' continuation indents.
+# For FreeBSD, this is set to 4. Negative value is absolute and not increased for each ( level
+indent_continue = -4 # number
+
+# How to use tabs when indenting code
+# 0=spaces only
+# 1=indent with tabs to brace level, align with spaces
+# 2=indent and align with tabs, using spaces when not on a tabstop
+indent_with_tabs = 2 # number
+
+# Comments that are not a brace level are indented with tabs on a tabstop.
+# Requires indent_with_tabs=2. If false, will use spaces.
+indent_cmt_with_tabs = false # false/true
+
+# 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 = 2 # 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
+
+# Disabled indenting class braces if indent_braces is true
+indent_braces_no_class = false # false/true
+
+# Disabled indenting struct braces if indent_braces is true
+indent_braces_no_struct = false # false/true
+
+# Indent based on the size of the brace parent, i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
+indent_brace_parent = false # false/true
+
+# Indent based on the paren open instead of the brace open in '({\n', default is to indent by brace.
+indent_paren_open_brace = false # false/true
+
+# Whether the 'namespace' body is indented
+indent_namespace = false # false/true
+
+# Only indent one namespace and no sub-namespaces.
+# Requires indent_namespace=true.
+indent_namespace_single_indent = false # false/true
+
+# The number of spaces to indent a namespace block
+indent_namespace_level = 0 # number
+
+# If the body of the namespace is longer than this number, it won't be indented.
+# Requires indent_namespace=true. Default=0 (no limit)
+indent_namespace_limit = 0 # number
+
+# Whether the 'extern "C"' body is indented
+indent_extern = false # false/true
+
+# Whether the 'class' body is indented
+indent_class = true # false/true
+
+# Whether to indent the stuff after a leading base class colon
+indent_class_colon = false # false/true
+
+# Indent based on a class colon instead of the stuff after the colon.
+# Requires indent_class_colon=true. Default=false
+indent_class_on_colon = false # false/true
+
+# Whether to indent the stuff after a leading class initializer colon
+indent_constr_colon = false # false/true
+
+# Virtual indent from the ':' for member initializers. Default is 2
+indent_ctor_init_leading = 0 # number
+
+# Additional indenting for constructor initializer list
+indent_ctor_init = 0 # number
+
+# False=treat 'else\nif' as 'else if' for indenting purposes
+# True=indent the 'if' one level
+indent_else_if = false # false/true
+
+# Amount to indent variable declarations after a open brace. neg=relative, pos=absolute
+indent_var_def_blk = 0 # number
+
+# Indent continued variable declarations instead of aligning.
+indent_var_def_cont = true # false/true
+
+# How to indent continued shift expressions ('<<' and '>>').
+# Set align_left_shift=false when using this.
+# 0: Align shift operators instead of indenting them (default)
+# 1: Indent by one level
+# -1: Preserve original indentation
+indent_shift = 0 # number
+
+# True: force indentation of function definition to start in column 1
+# False: use the default behavior
+indent_func_def_force_col1 = false # false/true
+
+# True: indent continued function call parameters one indent level
+# False: align parameters under the open paren
+indent_func_call_param = true # false/true
+
+# Same as indent_func_call_param, but for function defs
+indent_func_def_param = true # false/true
+
+# Same as indent_func_call_param, but for function protos
+indent_func_proto_param = true # false/true
+
+# Same as indent_func_call_param, but for class declarations
+indent_func_class_param = true # false/true
+
+# Same as indent_func_call_param, but for class variable constructors
+indent_func_ctor_var_param = true # false/true
+
+# Same as indent_func_call_param, but for templates
+indent_template_param = true # false/true
+
+# Double the indent for indent_func_xxx_param options
+indent_func_param_double = false # false/true
+
+# Indentation column for standalone 'const' function decl/proto qualifier
+indent_func_const = 0 # number
+
+# Indentation column for standalone 'throw' function decl/proto qualifier
+indent_func_throw = 0 # number
+
+# The number of spaces to indent a continued '->' or '.'
+# Usually set to 0, 1, or indent_columns.
+indent_member = 4 # number
+
+# Spaces to indent single line ('//') comments on lines before code
+indent_single_line_comments_before = 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 = 0 # 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 = -4 # number
+
+# Same as indent_label, but for access specifiers that are followed by a colon
+indent_access_spec = -4 # 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 1, aligns under the open paren
+indent_comma_paren = 0 # number
+
+# Controls the indent of a BOOL operator when inside a paren.If 1, aligns under the open paren
+indent_bool_paren = 0 # number
+
+# If 'indent_bool_paren' is 1, controls the indent of the first expression. If TRUE, aligns the first expression to the following ones
+indent_first_bool_expr = 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
+
+# Align continued statements at the '='. Default=True
+# If FALSE or the '=' is followed by a newline, the next line is indent one tab.
+indent_align_assign = false # false/true
+
+# If true, the indentation of the chunks after a '=' sequence will be set at
+# LHS token indentation column before '='.
+indent_off_after_assign = false # true/false
+
+# Indent OC blocks at brace level instead of usual rules.
+indent_oc_block = false # false/true
+
+# Indent OC blocks in a message relative to the parameter name.
+# 0=use indent_oc_block rules, 1+=spaces to indent
+indent_oc_block_msg = 0 # number
+
+# Minimum indent for subsequent parameters
+indent_oc_msg_colon = 0 # number
+
+# If true, prioritize aligning with initial colon (and stripping spaces from lines, if necessary).
+# Default is true.
+indent_oc_msg_prioritize_first_colon = true # false/true
+
+# If indent_oc_block_msg and this option are on, blocks will be indented the way that Xcode does by default (from keyword if the parameter is on its own line; otherwise, from the previous indentation level).
+indent_oc_block_msg_xcode_style = false # false/true
+
+# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is relative to a msg keyword.
+indent_oc_block_msg_from_keyword = false # false/true
+
+# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is relative to a msg colon.
+indent_oc_block_msg_from_colon = false # false/true
+
+# If indent_oc_block_msg and this option are on, blocks will be indented from where the block caret is.
+indent_oc_block_msg_from_caret = false # false/true
+
+# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is.
+indent_oc_block_msg_from_brace = false # false/true
+
+# When identing after virtual brace open and newline add further spaces to reach this min. indent.
+indent_min_vbrace_open = 0 # number
+
+# TRUE: When identing after virtual brace open and newline add further spaces after regular indent to reach next tabstop.
+indent_vbrace_open_on_tabstop = false # false/true
+
+#
+# Spacing options
+#
+
+# Add or remove space around arithmetic operator '+', '-', '/', '*', etc
+# also '>>>' '<<' '>>' '%' '|'
+sp_arith = force # ignore/add/remove/force
+
+# Add or remove space around assignment operator '=', '+=', etc
+sp_assign = force # ignore/add/remove/force
+
+# Add or remove space around '=' in C++11 lambda capture specifications. Overrides sp_assign
+sp_cpp_lambda_assign = force # ignore/add/remove/force
+
+# Add or remove space around assignment operator '=' in a prototype
+sp_assign_default = force # ignore/add/remove/force
+
+# Add or remove space before assignment operator '=', '+=', etc. Overrides sp_assign.
+sp_before_assign = force # ignore/add/remove/force
+
+# Add or remove space after assignment operator '=', '+=', etc. Overrides sp_assign.
+sp_after_assign = force # ignore/add/remove/force
+
+# Add or remove space in 'NS_ENUM ('
+sp_enum_paren = force # ignore/add/remove/force
+
+# Add or remove space around assignment '=' in enum
+sp_enum_assign = force # ignore/add/remove/force
+
+# Add or remove space before assignment '=' in enum. Overrides sp_enum_assign.
+sp_enum_before_assign = force # ignore/add/remove/force
+
+# Add or remove space after assignment '=' in enum. Overrides sp_enum_assign.
+sp_enum_after_assign = force # ignore/add/remove/force
+
+# Add or remove space around preprocessor '##' concatenation operator. Default=Add
+sp_pp_concat = force # ignore/add/remove/force
+
+# Add or remove space after preprocessor '#' stringify operator. Also affects the '#@' charizing operator.
+sp_pp_stringify = force # ignore/add/remove/force
+
+# Add or remove space before preprocessor '#' stringify operator as in '#define x(y) L#y'.
+sp_before_pp_stringify = force # ignore/add/remove/force
+
+# Add or remove space around boolean operators '&&' and '||'
+sp_bool = force # ignore/add/remove/force
+
+# Add or remove space around compare operator '<', '>', '==', etc
+sp_compare = force # ignore/add/remove/force
+
+# Add or remove space inside '(' and ')'
+sp_inside_paren = remove # ignore/add/remove/force
+
+# Add or remove space between nested parens: '((' vs ') )'
+sp_paren_paren = remove # ignore/add/remove/force
+
+# Add or remove space between back-to-back parens: ')(' vs ') ('
+sp_cparen_oparen = remove # 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 = force # ignore/add/remove/force
+
+# Add or remove space before pointer star '*'
+sp_before_ptr_star = force # ignore/add/remove/force
+
+# Add or remove space before pointer star '*' that isn't followed by a variable name
+# If set to 'ignore', sp_before_ptr_star is used instead.
+sp_before_unnamed_ptr_star = force # ignore/add/remove/force
+
+# Add or remove space between pointer stars '*'
+sp_between_ptr_star = remove # ignore/add/remove/force
+
+# Add or remove space after pointer star '*', if followed by a word.
+sp_after_ptr_star = remove # ignore/add/remove/force
+
+# Add or remove space after pointer star '*', if followed by a qualifier.
+sp_after_ptr_star_qualifier = force # ignore/add/remove/force
+
+# Add or remove space after a pointer star '*', if followed by a func proto/def.
+sp_after_ptr_star_func = remove # ignore/add/remove/force
+
+# Add or remove space between the pointer star '*' and the name of the variable
+# in a function pointer definition.
+sp_ptr_star_func_var = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space after a pointer star '*', if followed by an open paren (function types).
+sp_ptr_star_paren = remove # ignore/add/remove/force
+
+# Add or remove space before a pointer star '*', if followed by a func proto/def.
+sp_before_ptr_star_func = force # ignore/add/remove/force
+
+# Add or remove space before a reference sign '&'
+sp_before_byref = force # ignore/add/remove/force
+
+# Add or remove space before a reference sign '&' that isn't followed by a variable name
+# If set to 'ignore', sp_before_byref is used instead.
+sp_before_unnamed_byref = force # ignore/add/remove/force
+
+# Add or remove space after reference sign '&', if followed by a word.
+sp_after_byref = remove # ignore/add/remove/force
+
+# Add or remove space after a reference sign '&', if followed by a func proto/def.
+sp_after_byref_func = remove # ignore/add/remove/force
+
+# Add or remove space before a reference sign '&', if followed by a func proto/def.
+sp_before_byref_func = force # ignore/add/remove/force
+
+# Add or remove space between type and word. Default=Force
+sp_after_type = force # ignore/add/remove/force
+
+# Add or remove space before the paren in the D constructs 'template Foo(' and 'class Foo('.
+sp_before_template_paren = remove # ignore/add/remove/force
+
+# Add or remove space in 'template <' vs 'template<'.
+# If set to ignore, sp_before_angle is used.
+sp_template_angle = remove # ignore/add/remove/force
+
+# Add or remove space before '<>'
+sp_before_angle = remove # ignore/add/remove/force
+
+# Add or remove space inside '<' and '>'
+sp_inside_angle = remove # ignore/add/remove/force
+
+# Add or remove space after '<>'
+sp_after_angle = force # ignore/add/remove/force
+
+# Add or remove space between '<>' and '(' as found in 'new List<byte>();'
+sp_angle_paren = remove # ignore/add/remove/force
+
+# Add or remove space between '<>' and a word as in 'List<byte> m;' or 'template <typename T> static ...'
+sp_angle_word = force # ignore/add/remove/force
+
+# Add or remove space between '>' and '>' in '>>' (template stuff C++/C# only). Default=Add
+sp_angle_shift = force # ignore/add/remove/force
+
+# Permit removal of the space between '>>' in 'foo<bar<int> >' (C++11 only). Default=False
+# sp_angle_shift cannot remove the space without this option.
+sp_permit_cpp11_shift = false # false/true
+
+# Add or remove space before '(' of 'if', 'for', 'switch', 'while', etc.
+sp_before_sparen = force # ignore/add/remove/force
+
+# Add or remove space inside if-condition '(' and ')'
+sp_inside_sparen = remove # ignore/add/remove/force
+
+# Add or remove space before if-condition ')'. Overrides sp_inside_sparen.
+sp_inside_sparen_close = remove # ignore/add/remove/force
+
+# Add or remove space after if-condition '('. Overrides sp_inside_sparen.
+sp_inside_sparen_open = remove # ignore/add/remove/force
+
+# Add or remove space inside for-loop '(' and ')'
+sp_inside_for = remove # ignore/add/remove/force
+
+# Add or remove space before for-loop ')'. Overrides sp_inside_for.
+sp_inside_for_close = remove # ignore/add/remove/force
+
+# Add or remove space after for-loop '('. Overrides sp_inside_for.
+sp_inside_for_open = remove # ignore/add/remove/force
+
+# Add or remove space after ')' of 'if', 'for', 'switch', and 'while', etc.
+sp_after_sparen = force # ignore/add/remove/force
+
+# Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while', etc.
+sp_sparen_brace = force # ignore/add/remove/force
+
+# Add or remove space between 'invariant' and '(' in the D language.
+sp_invariant_paren = remove # ignore/add/remove/force
+
+# Add or remove space after the ')' in 'invariant (C) c' in the D language.
+sp_after_invariant_paren = force # ignore/add/remove/force
+
+# Add or remove space before empty statement ';' on 'if', 'for' and 'while'
+sp_special_semi = remove # ignore/add/remove/force
+
+# Add or remove space before ';'. Default=Remove
+sp_before_semi = remove # ignore/add/remove/force
+
+# Add or remove space before ';' in non-empty 'for' statements
+sp_before_semi_for = remove # ignore/add/remove/force
+
+# Add or remove space before a semicolon of an empty left part of a for statement.
+sp_before_semi_for_empty = remove # ignore/add/remove/force
+
+# Add or remove space between the semicolons of an empty middle part of a for statement.
+sp_between_semi_for_empty = remove # ignore/add/remove/force/not_defined
+
+# Add or remove space after ';', except when followed by a comment. Default=Add
+sp_after_semi = force # ignore/add/remove/force
+
+# Add or remove space after ';' in non-empty 'for' statements. Default=Force
+sp_after_semi_for = force # ignore/add/remove/force
+
+# Add or remove space after the final semicolon of an empty part of a for statement: for ( ; ; <here> ).
+sp_after_semi_for_empty = remove # ignore/add/remove/force
+
+# Add or remove space before '[' (except '[]')
+sp_before_square = remove # ignore/add/remove/force
+
+# Add or remove space before '[]'
+sp_before_squares = remove # ignore/add/remove/force
+
+# Add or remove space inside a non-empty '[' and ']'
+sp_inside_square = remove # ignore/add/remove/force
+
+# Add or remove space after ','
+sp_after_comma = force # ignore/add/remove/force
+
+# Add or remove space before ','
+sp_before_comma = remove # ignore/add/remove/force
+
+# Add or remove space between ',' and ']' in multidimensional array type 'int[,,]'
+sp_after_mdatype_commas = remove # ignore/add/remove/force
+
+# Add or remove space between '[' and ',' in multidimensional array type 'int[,,]'
+sp_before_mdatype_commas = remove # ignore/add/remove/force
+
+# Add or remove space between ',' in multidimensional array type 'int[,,]'
+sp_between_mdatype_commas = remove # ignore/add/remove/force
+
+# Add or remove space between an open paren and comma: '(,' vs '( ,'
+sp_paren_comma = force # ignore/add/remove/force
+
+# Add or remove space before the variadic '...' when preceded by a non-punctuator
+sp_before_ellipsis = force # ignore/add/remove/force
+
+# Add or remove space after class ':'
+sp_after_class_colon = force # ignore/add/remove/force
+
+# Add or remove space before class ':'
+sp_before_class_colon = remove # ignore/add/remove/force
+
+# Add or remove space after class constructor ':'
+sp_after_constr_colon = force # ignore/add/remove/force
+
+# Add or remove space before class constructor ':'
+sp_before_constr_colon = remove # ignore/add/remove/force
+
+# Add or remove space before case ':'. Default=Remove
+sp_before_case_colon = remove # ignore/add/remove/force
+
+# Add or remove space between 'operator' and operator sign
+sp_after_operator = force # ignore/add/remove/force
+
+# Add or remove space between the operator symbol and the open paren, as in 'operator ++('
+sp_after_operator_sym = remove # ignore/add/remove/force
+
+# Add or remove space after C/D cast, i.e. 'cast(int)a' vs 'cast(int) a' or '(int)a' vs '(int) a'
+sp_after_cast = remove # ignore/add/remove/force
+
+# Add or remove spaces inside cast parens
+sp_inside_paren_cast = remove # ignore/add/remove/force
+
+# Add or remove space between the type and open paren in a C++ cast, i.e. 'int(exp)' vs 'int (exp)'
+sp_cpp_cast_paren = remove # ignore/add/remove/force
+
+# Add or remove space between 'sizeof' and '('
+sp_sizeof_paren = force # ignore/add/remove/force
+
+# Add or remove space after the tag keyword (Pawn)
+sp_after_tag = force # ignore/add/remove/force
+
+# Add or remove space inside enum '{' and '}'
+sp_inside_braces_enum = force # ignore/add/remove/force
+
+# Add or remove space inside struct/union '{' and '}'
+sp_inside_braces_struct = force # ignore/add/remove/force
+
+# Add or remove space inside '{' and '}'
+sp_inside_braces = force # ignore/add/remove/force
+
+# Add or remove space inside '{}'
+sp_inside_braces_empty = remove # 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 = remove # 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 inside the first parens in the function type: 'void (*x)(...)'
+sp_inside_tparen = remove # ignore/add/remove/force
+
+# Add or remove between the parens in the function type: 'void (*x)(...)'
+sp_after_tparen_close = remove # ignore/add/remove/force
+
+# Add or remove space between ']' and '(' when part of a function call.
+sp_square_fparen = remove # ignore/add/remove/force
+
+# Add or remove space between ')' and '{' of function
+sp_fparen_brace = force # ignore/add/remove/force
+
+# Java: Add or remove space between ')' and '{{' of double brace initializer.
+sp_fparen_dbrace = force # 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 function name and '()' on function calls without parameters.
+# If set to 'ignore' (the default), sp_func_call_paren is used.
+sp_func_call_paren_empty = remove # ignore/add/remove/force
+
+# Add or remove space between the user function name and '(' on function calls
+# You need to set a keyword to be a user function, like this: 'set func_call_user _' in the config file.
+sp_func_call_user_paren = remove # ignore/add/remove/force
+
+# Add or remove space between a constructor/destructor and the open paren
+sp_func_class_paren = remove # ignore/add/remove/force
+
+# Add or remove space between 'return' and '('
+sp_return_paren = force # ignore/add/remove/force
+
+# Add or remove space between '__attribute__' and '('
+sp_attribute_paren = force # ignore/add/remove/force
+
+# Add or remove space between 'defined' and '(' in '#if defined (FOO)'
+sp_defined_paren = remove # ignore/add/remove/force
+
+# Add or remove space between 'throw' and '(' in 'throw (something)'
+sp_throw_paren = force # ignore/add/remove/force
+
+# Add or remove space between 'throw' and anything other than '(' as in '@throw [...];'
+sp_after_throw = force # ignore/add/remove/force
+
+# Add or remove space between 'catch' and '(' in 'catch (something) { }'
+# If set to ignore, sp_before_sparen is used.
+sp_catch_paren = force # ignore/add/remove/force
+
+# Add or remove space between 'version' and '(' in 'version (something) { }' (D language)
+# If set to ignore, sp_before_sparen is used.
+sp_version_paren = force # ignore/add/remove/force
+
+# Add or remove space between 'scope' and '(' in 'scope (something) { }' (D language)
+# If set to ignore, sp_before_sparen is used.
+sp_scope_paren = force # ignore/add/remove/force
+
+# Add or remove space between macro and value
+sp_macro = force # ignore/add/remove/force
+
+# Add or remove space between macro function ')' and value
+sp_macro_func = force # ignore/add/remove/force
+
+# Add or remove space between 'else' and '{' if on the same line
+sp_else_brace = force # ignore/add/remove/force
+
+# Add or remove space between '}' and 'else' if on the same line
+sp_brace_else = force # ignore/add/remove/force
+
+# Add or remove space between '}' and the name of a typedef on the same line
+sp_brace_typedef = force # ignore/add/remove/force
+
+# Add or remove space between 'catch' and '{' if on the same line
+sp_catch_brace = force # ignore/add/remove/force
+
+# Add or remove space between '}' and 'catch' if on the same line
+sp_brace_catch = force # ignore/add/remove/force
+
+# Add or remove space between 'finally' and '{' if on the same line
+sp_finally_brace = force # ignore/add/remove/force
+
+# Add or remove space between '}' and 'finally' if on the same line
+sp_brace_finally = force # ignore/add/remove/force
+
+# Add or remove space between 'try' and '{' if on the same line
+sp_try_brace = force # ignore/add/remove/force
+
+# Add or remove space between get/set and '{' if on the same line
+sp_getset_brace = force # ignore/add/remove/force
+
+# Add or remove space between type and open brace of an unnamed temporary
+# direct-list-initialization.
+sp_type_brace_init_lst = add # ignore/add/remove/force
+
+# Add or remove space between a variable and '{' for a namespace
+sp_word_brace_ns = force # ignore/add/remove/force
+
+# Add or remove space before the '::' operator
+sp_before_dc = remove # ignore/add/remove/force
+
+# Add or remove space after the '::' operator
+sp_after_dc = remove # ignore/add/remove/force
+
+# Add or remove around the D named array initializer ':' operator
+sp_d_array_colon = force # ignore/add/remove/force
+
+# Add or remove space after the '!' (not) operator. Default=Remove
+sp_not = remove # ignore/add/remove/force
+
+# Add or remove space after the '~' (invert) operator. Default=Remove
+sp_inv = remove # ignore/add/remove/force
+
+# Add or remove space after the '&' (address-of) operator. Default=Remove
+# 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. Default=Remove
+sp_member = remove # ignore/add/remove/force
+
+# Add or remove space after the '*' (dereference) operator. Default=Remove
+# 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'. Default=Remove
+sp_sign = remove # ignore/add/remove/force
+
+# Add or remove space before or after '++' and '--', as in '(--x)' or 'y++;'. Default=Remove
+sp_incdec = remove # ignore/add/remove/force
+
+# Add or remove space before a backslash-newline at the end of a line. Default=Add
+sp_before_nl_cont = force # ignore/add/remove/force
+
+# Add or remove space after the scope '+' or '-', as in '-(void) foo;' or '+(int) bar;'
+sp_after_oc_scope = remove # ignore/add/remove/force
+
+# Add or remove space after the colon in message specs
+# '-(int) f:(int) x;' vs '-(int) f: (int) x;'
+sp_after_oc_colon = force # ignore/add/remove/force
+
+# Add or remove space before the colon in message specs
+# '-(int) f: (int) x;' vs '-(int) f : (int) x;'
+sp_before_oc_colon = force # ignore/add/remove/force
+
+# Add or remove space after the colon in immutable dictionary expression
+# 'NSDictionary *test = @{@"foo" :@"bar"};'
+sp_after_oc_dict_colon = force # ignore/add/remove/force
+
+# Add or remove space before the colon in immutable dictionary expression
+# 'NSDictionary *test = @{@"foo" :@"bar"};'
+sp_before_oc_dict_colon = force # ignore/add/remove/force
+
+# Add or remove space after the colon in message specs
+# '[object setValue:1];' vs '[object setValue: 1];'
+sp_after_send_oc_colon = force # ignore/add/remove/force
+
+# Add or remove space before the colon in message specs
+# '[object setValue:1];' vs '[object setValue :1];'
+sp_before_send_oc_colon = remove # 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 = remove # ignore/add/remove/force
+
+# Add or remove space after the first (type) in message specs
+# '-(int) f:(int)x;' vs '-(int)f:(int)x;'
+sp_after_oc_return_type = remove # ignore/add/remove/force
+
+# Add or remove space between '@selector' and '('
+# '@selector(msgName)' vs '@selector (msgName)'
+# Also applies to @protocol() constructs
+sp_after_oc_at_sel = remove # ignore/add/remove/force
+
+# Add or remove space between '@selector(x)' and the following word
+# '@selector(foo) a:' vs '@selector(foo)a:'
+sp_after_oc_at_sel_parens = force # ignore/add/remove/force
+
+# Add or remove space inside '@selector' parens
+# '@selector(foo)' vs '@selector( foo )'
+# Also applies to @protocol() constructs
+sp_inside_oc_at_sel_parens = remove # ignore/add/remove/force
+
+# Add or remove space before a block pointer caret
+# '^int (int arg){...}' vs. ' ^int (int arg){...}'
+sp_before_oc_block_caret = remove # ignore/add/remove/force
+
+# Add or remove space after a block pointer caret
+# '^int (int arg){...}' vs. '^ int (int arg){...}'
+sp_after_oc_block_caret = remove # ignore/add/remove/force
+
+# Add or remove space between the receiver and selector in a message.
+# '[receiver selector ...]'
+sp_after_oc_msg_receiver = remove # ignore/add/remove/force
+
+# Add or remove space after @property.
+sp_after_oc_property = force # ignore/add/remove/force
+
+# Add or remove space around the ':' in 'b ? t : f'
+sp_cond_colon = force # ignore/add/remove/force
+
+# Add or remove space before the ':' in 'b ? t : f'. Overrides sp_cond_colon.
+sp_cond_colon_before = force # ignore/add/remove/force
+
+# Add or remove space after the ':' in 'b ? t : f'. Overrides sp_cond_colon.
+sp_cond_colon_after = force # ignore/add/remove/force
+
+# Add or remove space around the '?' in 'b ? t : f'
+sp_cond_question = force # ignore/add/remove/force
+
+# Add or remove space before the '?' in 'b ? t : f'. Overrides sp_cond_question.
+sp_cond_question_before = force # ignore/add/remove/force
+
+# Add or remove space after the '?' in 'b ? t : f'. Overrides sp_cond_question.
+sp_cond_question_after = force # ignore/add/remove/force
+
+# In the abbreviated ternary form (a ?: b), add/remove space between ? and :.'. Overrides all other sp_cond_* options.
+sp_cond_ternary_short = force # ignore/add/remove/force
+
+# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make sense here.
+sp_case_label = force # ignore/add/remove/force
+
+# Control the space around the D '..' operator.
+sp_range = force # ignore/add/remove/force
+
+# Control the spacing after ':' in 'for (TYPE VAR : EXPR)'
+sp_after_for_colon = force # ignore/add/remove/force
+
+# Control the spacing before ':' in 'for (TYPE VAR : EXPR)'
+sp_before_for_colon = force # ignore/add/remove/force
+
+# Control the spacing in 'extern (C)' (D)
+sp_extern_paren = force # ignore/add/remove/force
+
+# Control the space after the opening of a C++ comment '// A' vs '//A'
+sp_cmt_cpp_start = force # ignore/add/remove/force
+
+# TRUE: If space is added with sp_cmt_cpp_start, do it after doxygen sequences like '///', '///<', '//!' and '//!<'.
+sp_cmt_cpp_doxygen = false # false/true
+
+# TRUE: If space is added with sp_cmt_cpp_start, do it after Qt translator or meta-data comments like '//:', '//=', and '//~'.
+sp_cmt_cpp_qttr = false # false/true
+
+# Controls the spaces between #else or #endif and a trailing comment
+sp_endif_cmt = force # ignore/add/remove/force
+
+# Controls the spaces after 'new', 'delete' and 'delete[]'
+sp_after_new = force # ignore/add/remove/force
+
+# Controls the spaces between new and '(' in 'new()'
+sp_between_new_paren = remove # ignore/add/remove/force
+
+# Controls the spaces before a trailing or embedded comment
+sp_before_tr_cmt = force # ignore/add/remove/force
+
+# Number of spaces before a trailing or embedded comment
+sp_num_before_tr_cmt = 0 # number
+
+# Control space between a Java annotation and the open paren.
+sp_annotation_paren = remove # 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 aligning
+align_with_tabs = true # false/true
+
+# Whether to bump out to the next tab when aligning
+align_on_tabstop = true # false/true
+
+# Whether to right-align numbers
+align_number_right = true # false/true
+
+# Whether to keep whitespace not required for alignment.
+align_keep_extra_space = false # false/true
+
+# Align variable definitions in prototypes and functions
+align_func_params = false # false/true
+
+# Align parameters in single-line functions that have the same name.
+# The function names must already be aligned with each other.
+align_same_func_call_params = false # false/true
+
+# The span for aligning parameters in single line functions with the same name (0=don't align).
+align_same_func_call_params_span = 0 # unsigned number
+
+# The thresh for aligning function call parameters (0=no limit).
+align_same_func_call_params_thresh = 0 # unsigned number
+
+# The span for aligning variable definitions (0=don't align)
+align_var_def_span = 0 # number
+
+# How to align the star in variable definitions.
+# 0=Part of the type 'void * foo;'
+# 1=Part of the variable 'void *foo;'
+# 2=Dangling 'void *foo;'
+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 = 10 # 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 = false # false/true
+
+# Whether to align any attribute after the variable name
+align_var_def_attribute = false # 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 = 0 # number
+
+# The threshold for aligning on '=' in assignments (0=no limit)
+align_assign_thresh = 0 # number
+
+# The span for aligning on '=' in enums (0=don't align)
+align_enum_equ_span = 0 # 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 = 1 # 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 typedef 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 = 1 # number
+
+# Controls the positioning of the '&' in typedefs. Just try it.
+# 0: Align on typedef 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 = 1 # number
+
+# The span for aligning comments that end lines (0=don't align)
+align_right_cmt_span = 4 # 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
+
+# If a trailing comment is more than this number of columns away from the text it follows,
+# it will qualify for being aligned. This has to be > 0 to do anything.
+align_right_cmt_gap = 1 # number
+
+# Align trailing comment at or beyond column N; 'pulls in' comments as a bonus side effect (0=ignore)
+align_right_cmt_at_col = 41 # number
+
+# 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
+
+# Align function protos on the 'operator' keyword instead of what follows
+align_on_operator = false # false/true
+
+# 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 = true # 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 = 1 # number
+
+# Whether and how to align backslashes that split a macro onto multiple lines.
+# This will not work right if the macro contains a multi-line comment.
+#
+# 0: Do nothing (default)
+# 1: Align the backslashes in the column at the end of the longest line
+# 2: Align with the backslash that is farthest to the left, or, if that
+# backslash is farther left than the end of the longest line, at the end of
+# the longest line
+# 3: Align with the backslash that is farthest to the right
+align_nl_cont = 0 # number
+
+# # Align macro functions and variables together
+align_pp_define_together = true # false/true
+
+# The minimum space between label and value of a preprocessor define
+align_pp_define_gap = 1 # number
+
+# The span for aligning on '#define' bodies (0=don't align, other=number of lines including comments between blocks)
+align_pp_define_span = 8 # number
+
+# Align lines that start with '<<' with previous '<<'. Default=true
+align_left_shift = false # false/true
+
+# Align text after asm volatile () colons.
+align_asm_colon = true # false/true
+
+# Span for aligning parameters in an Obj-C message call on the ':' (0=don't align)
+align_oc_msg_colon_span = 0 # number
+
+# If true, always align with the first parameter, even if it is too short.
+align_oc_msg_colon_first = false # false/true
+
+# Aligning parameters in an Obj-C '+' or '-' declaration on the ':'
+align_oc_decl_colon = false # false/true
+
+#
+# Newline adding and removing options
+#
+
+# Whether to collapse empty blocks between '{' and '}'
+nl_collapse_empty_body = true # false/true
+
+# Don't split one-line braced assignments - 'foo_t f = { 1, 2 };'
+nl_assign_leave_one_liners = true # false/true
+
+# Don't split one-line braced statements inside a class xx { } body
+nl_class_leave_one_liners = true # false/true
+
+# Don't split one-line enums: 'enum foo { BAR = 15 };'
+nl_enum_leave_one_liners = true # false/true
+
+# Don't split one-line get or set functions
+nl_getset_leave_one_liners = true # false/true
+
+# Don't split one-line function definitions - 'int foo() { return 0; }'
+nl_func_leave_one_liners = true # false/true
+
+# Don't split one-line C++11 lambdas - '[]() { return 0; }'
+nl_cpp_lambda_leave_one_liners = true # false/true
+
+# Don't split one-line if/else statements - 'if(a) b++;'
+nl_if_leave_one_liners = false # false/true
+
+# Don't split one-line while statements - 'while(a) b++;'
+nl_while_leave_one_liners = false # false/true
+
+# Don't split one-line OC messages
+nl_oc_msg_leave_one_liner = true # false/true
+
+# Add or remove newlines at the start of the file
+nl_start_of_file = remove # 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 = force # 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 = remove # ignore/add/remove/force
+
+# Add or remove newline between '=' and '[' (D only)
+nl_assign_square = remove # ignore/add/remove/force
+
+# Add or remove newline after '= [' (D only). Will also affect the newline before the ']'
+nl_after_square_assign = remove # ignore/add/remove/force
+
+# The number of blank lines after a block of variable definitions at the top of a function body
+# 0 = No change (default)
+nl_var_def_blk_end_func_top = 1 # number
+
+# The number of newlines before a block of typedefs
+# 0 = No change (default)
+# the option 'nl_after_access_spec' takes preference over 'nl_typedef_blk_start'
+nl_typedef_blk_start = 2 # number
+
+# The number of newlines after a block of typedefs
+# 0 = No change (default)
+nl_typedef_blk_end = 2 # number
+
+# The maximum consecutive newlines within a block of typedefs
+# 0 = No change (default)
+nl_typedef_blk_in = 1 # number
+
+# The number of newlines before a block of variable definitions not at the top of a function body
+# 0 = No change (default)
+# the option 'nl_after_access_spec' takes preference over 'nl_var_def_blk_start'
+nl_var_def_blk_start = 2 # number
+
+# The number of newlines after a block of variable definitions not at the top of a function body
+# 0 = No change (default)
+nl_var_def_blk_end = 2 # number
+
+# The maximum consecutive newlines within a block of variable definitions
+# 0 = No change (default)
+nl_var_def_blk_in = 1 # number
+
+# Add or remove newline between a function call's ')' and '{', as in:
+# list_for_each(item, &list) { }
+nl_fcall_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'enum' and '{'
+nl_enum_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'struct and '{'
+nl_struct_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'union' and '{'
+nl_union_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'if' and '{'
+nl_if_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between '}' and 'else'
+nl_brace_else = remove # 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 = remove # ignore/add/remove/force
+
+# Add or remove newline between 'else' and '{'
+nl_else_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'else' and 'if'
+nl_else_if = remove # ignore/add/remove/force
+
+# Add or remove newline between '}' and 'finally'
+nl_brace_finally = remove # ignore/add/remove/force
+
+# Add or remove newline between 'finally' and '{'
+nl_finally_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'try' and '{'
+nl_try_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between get/set and '{'
+nl_getset_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'for' and '{'
+nl_for_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'catch' and '{'
+nl_catch_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between '}' and 'catch'
+nl_brace_catch = remove # ignore/add/remove/force
+
+# Add or remove newline between '}' and ']'
+nl_brace_square = remove # ignore/add/remove/force
+
+# Add or remove newline between '}' and ')' in a function invocation
+nl_brace_fparen = remove # ignore/add/remove/force
+
+# Add or remove newline between 'while' and '{'
+nl_while_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'scope (x)' and '{' (D)
+nl_scope_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'unittest' and '{' (D)
+nl_unittest_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'version (x)' and '{' (D)
+nl_version_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'using' and '{'
+nl_using_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between two open or close braces.
+# Due to general newline/brace handling, REMOVE may not work.
+nl_brace_brace = force # ignore/add/remove/force
+
+# Add or remove newline between 'do' and '{'
+nl_do_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between '}' and 'while' of 'do' statement
+nl_brace_while = remove # ignore/add/remove/force
+
+# Add or remove newline between 'switch' and '{'
+nl_switch_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'synchronized' and '{'
+nl_synchronized_brace = remove # ignore/add/remove/force
+
+# 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 = 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, not after the first 'case'
+nl_before_case = false # false/true
+
+# Add or remove newline between ')' and 'throw'
+nl_before_throw = force # ignore/add/remove/force
+
+# Whether to put a newline after 'case' statement
+nl_after_case = true # false/true
+
+# Add or remove a newline between a case ':' and '{'. Overrides nl_after_case.
+nl_case_colon_brace = remove # ignore/add/remove/force
+
+# Newline between namespace and {
+nl_namespace_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between 'template<>' and whatever follows.
+nl_template_class = force # ignore/add/remove/force
+
+# Add or remove newline between 'class' and '{'
+nl_class_brace = remove # ignore/add/remove/force
+
+# Add or remove newline before/after each ',' in the base class list,
+# (tied to pos_class_comma).
+nl_class_init_args = remove # ignore/add/remove/force
+
+# Add or remove newline after each ',' in the constructor member initialization.
+# Related to nl_constr_colon, pos_constr_colon and pos_constr_comma.
+nl_constr_init_args = remove # ignore/add/remove/force
+
+# Add or remove newline between return type and function name in a function definition
+nl_func_type_name = remove # ignore/add/remove/force
+
+# Add or remove newline between return type and function name inside a class {}
+# Uses nl_func_type_name or nl_func_proto_type_name if set to ignore.
+nl_func_type_name_class = remove # ignore/add/remove/force
+
+# Add or remove newline between function scope and name
+# Controls the newline after '::' in 'void A::f() { }'
+nl_func_scope_name = remove # ignore/add/remove/force
+
+# Add or remove newline between return type and function name in a prototype
+nl_func_proto_type_name = remove # ignore/add/remove/force
+
+# Add or remove newline between a function name and the opening '(' in the declaration
+nl_func_paren = remove # ignore/add/remove/force
+
+# Add or remove newline between a function name and the opening '(' in the definition
+nl_func_def_paren = remove # ignore/add/remove/force
+
+# Add or remove newline after '(' in a function declaration
+nl_func_decl_start = remove # ignore/add/remove/force
+
+# Add or remove newline after '(' in a function definition
+nl_func_def_start = remove # ignore/add/remove/force
+
+# Overrides nl_func_decl_start when there is only one parameter.
+nl_func_decl_start_single = remove # ignore/add/remove/force
+
+# Overrides nl_func_def_start when there is only one parameter.
+nl_func_def_start_single = remove # ignore/add/remove/force
+
+# Add or remove newline after each ',' in a function declaration
+nl_func_decl_args = remove # ignore/add/remove/force
+
+# Add or remove newline after each ',' in a function definition
+nl_func_def_args = remove # ignore/add/remove/force
+
+# Add or remove newline before the ')' in a function declaration
+nl_func_decl_end = remove # ignore/add/remove/force
+
+# Add or remove newline before the ')' in a function definition
+nl_func_def_end = remove # ignore/add/remove/force
+
+# Overrides nl_func_decl_end when there is only one parameter.
+nl_func_decl_end_single = remove # ignore/add/remove/force
+
+# Overrides nl_func_def_end when there is only one parameter.
+nl_func_def_end_single = remove # ignore/add/remove/force
+
+# Add or remove newline between '()' in a function declaration.
+nl_func_decl_empty = remove # ignore/add/remove/force
+
+# Add or remove newline between '()' in a function definition.
+nl_func_def_empty = remove # ignore/add/remove/force
+
+# Whether to put each OC message parameter on a separate line
+# See nl_oc_msg_leave_one_liner
+nl_oc_msg_args = false # false/true
+
+# Add or remove newline between function signature and '{'
+nl_fdef_brace = remove # ignore/add/remove/force
+
+# Add or remove newline between C++11 lambda signature and '{'
+nl_cpp_ldef_brace = remove # ignore/add/remove/force
+
+# Add or remove a newline between the return keyword and return expression.
+nl_return_expr = remove # ignore/add/remove/force
+
+# Whether to put a newline after semicolons, except in 'for' statements
+nl_after_semicolon = true # false/true
+
+# Java: Control the newline between the ')' and '{{' of the double brace initializer.
+nl_paren_dbrace_open = remove # ignore/add/remove/force
+
+# Whether to put a newline after brace open.
+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 = false # false/true
+
+# Whether to put a newline after a virtual brace open with a non-empty body.
+# These occur in un-braced if/while/do/for statement bodies.
+nl_after_vbrace_open = true # false/true
+
+# Whether to put a newline after a virtual brace open with an empty body.
+# These occur in un-braced if/while/do/for statement bodies.
+nl_after_vbrace_open_empty = true # false/true
+
+# Whether to put a newline after a brace close.
+# Does not apply if followed by a necessary ';'.
+nl_after_brace_close = true # false/true
+
+# Whether to put a newline after a virtual brace close.
+# Would add a newline before return in: 'if (foo) a++; return;'
+nl_after_vbrace_close = true # false/true
+
+# Control the newline between the close brace and 'b' in: 'struct { int a; } b;'
+# Affects enums, unions and structures. If set to ignore, uses nl_after_brace_close
+nl_brace_struct_var = remove # ignore/add/remove/force
+
+# Whether to alter newlines in '#define' macros
+nl_define_macro = false # false/true
+
+# Whether to not put blanks after '#ifxx', '#elxx', or before '#endif'. Does not affect the whole-file #ifdef.
+nl_squeeze_ifdef = true # false/true
+
+# Add or remove blank line before 'if'
+nl_before_if = remove # ignore/add/remove/force
+
+# Add or remove blank line after 'if' statement
+nl_after_if = remove # ignore/add/remove/force
+
+# Add or remove blank line before 'for'
+nl_before_for = remove # ignore/add/remove/force
+
+# Add or remove blank line after 'for' statement
+nl_after_for = remove # ignore/add/remove/force
+
+# Add or remove blank line before 'while'
+nl_before_while = remove # ignore/add/remove/force
+
+# Add or remove blank line after 'while' statement
+nl_after_while = remove # ignore/add/remove/force
+
+# Add or remove blank line before 'switch'
+nl_before_switch = remove # ignore/add/remove/force
+
+# Add or remove blank line after 'switch' statement
+nl_after_switch = remove # ignore/add/remove/force
+
+# Add or remove blank line before 'synchronized'
+nl_before_synchronized = remove # ignore/add/remove/force
+
+# Add or remove blank line after 'synchronized' statement
+nl_after_synchronized = remove # ignore/add/remove/force
+
+# Add or remove blank line before 'do'
+nl_before_do = remove # ignore/add/remove/force
+
+# Add or remove blank line after 'do/while' statement
+nl_after_do = remove # ignore/add/remove/force
+
+# Whether to double-space commented-entries in struct/union/enum
+nl_ds_struct_enum_cmt = false # false/true
+
+# force nl before } of a struct/union/enum
+# (lower priority than 'eat_blanks_before_close_brace')
+nl_ds_struct_enum_close_brace = false # false/true
+
+# Add or remove a newline before/after a class colon,
+# (tied to pos_class_colon).
+nl_class_colon = remove # ignore/add/remove/force
+
+# Add or remove a newline around a class constructor colon.
+# Related to nl_constr_init_args, pos_constr_colon and pos_constr_comma.
+nl_constr_colon = remove # 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 arithmetic operators in wrapped expressions
+pos_arith = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of assignment in wrapped expressions.
+# Do not affect '=' followed by '{'
+pos_assign = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of boolean operators in wrapped expressions
+pos_bool = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of comparison operators in wrapped expressions
+pos_compare = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of conditional (b ? t : f) operators in wrapped expressions
+pos_conditional = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of the comma in wrapped expressions
+pos_comma = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of the comma in the base class list if there are more than one line,
+# (tied to nl_class_init_args).
+pos_class_comma = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of the comma in the constructor initialization list.
+# Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon.
+pos_constr_comma = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of trailing/leading class colon, between class and base class list
+# (tied to nl_class_colon).
+pos_class_colon = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of colons between constructor and member initialization,
+# (tied to UO_nl_constr_colon).
+# Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.
+pos_constr_colon = join # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+#
+# Line Splitting options
+#
+
+# Try to limit code width to N number of columns
+code_width = 80 # 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
+
+# Whether to split lines as close to code_width as possible and ignore some groupings
+ls_code_width = true # false/true
+
+#
+# Blank line options
+#
+
+# The maximum consecutive newlines (3 = 2 blank lines)
+nl_max = 2 # number
+
+# The number of newlines after a function prototype, if followed by another function prototype
+nl_after_func_proto = 1 # number
+
+# The number of newlines after a function prototype, if not followed by another function prototype
+nl_after_func_proto_group = 2 # number
+
+# The number of newlines after '}' of a multi-line function body
+nl_after_func_body = 2 # number
+
+# The number of newlines after '}' of a multi-line function body in a class declaration
+nl_after_func_body_class = 1 # number
+
+# The number of newlines after '}' of a single line function body
+nl_after_func_body_one_liner = 1 # 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 = 2 # 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 = 1 # 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 = 1 # number
+
+# Whether to force a newline after a multi-line comment.
+nl_after_multiline_comment = true # false/true
+
+# Whether to force a newline after a label's colon.
+nl_after_label_colon = false # false/true
+
+# The number of newlines after '}' or ';' of a struct/enum/union definition
+nl_after_struct = 2 # number
+
+# The number of newlines after '}' or ';' of a class definition
+nl_after_class = 2 # number
+
+# The number of newlines after '}' of a namespace
+nl_after_namespace = 2 # number
+
+# 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 = 2 # number
+
+# The number of newlines after a 'private:', 'public:', 'protected:', 'signals:' or 'slots:' label.
+# 0 = No change.
+# the option 'nl_after_access_spec' takes preference over 'nl_typedef_blk_start' and 'nl_var_def_blk_start'
+nl_after_access_spec = 1 # number
+
+# The number of newlines between a function def and the function comment.
+# 0 = No change.
+nl_comment_func_def = 1 # number
+
+# The number of newlines after a try-catch-finally block that isn't followed by a brace close.
+# 0 = No change.
+nl_after_try_catch_finally = 1 # number
+
+# The number of newlines before and after a property, indexer or event decl.
+# 0 = No change.
+nl_around_cs_property = 1 # number
+
+# The number of newlines between the get/set/add/remove handlers in C#.
+# 0 = No change.
+nl_between_get_set = 1 # number
+
+# Add or remove newline between C# property and the '{'
+nl_property_brace = remove # ignore/add/remove/force
+
+# Whether to remove blank lines after '{'
+eat_blanks_after_open_brace = true # false/true
+
+# Whether to remove blank lines before '}'
+eat_blanks_before_close_brace = true # false/true
+
+# How aggressively to remove extra newlines not in preproc.
+# 0: No change
+# 1: Remove most newlines not handled by other config
+# 2: Remove all newlines and reformat completely by config
+nl_remove_extra_newlines = 1 # number
+
+# Whether to put a blank line before 'return' statements, unless after an open brace.
+nl_before_return = false # false/true
+
+# Whether to put a blank line after 'return' statements, unless followed by a close brace.
+nl_after_return = false # false/true
+
+# Whether to put a newline after a Java annotation statement.
+# Only affects annotations that are after a newline.
+nl_after_annotation = force # ignore/add/remove/force
+
+#
+# Code modifying options (non-whitespace)
+#
+
+# Add or remove braces on single-line 'do' statement
+mod_full_brace_do = force # ignore/add/remove/force
+
+# Add or remove braces on single-line 'for' statement
+mod_full_brace_for = remove # ignore/add/remove/force
+
+# Add or remove braces on single-line 'if' statement. Will not remove the braces if they contain an 'else'.
+mod_full_brace_if = remove # ignore/add/remove/force
+
+# Make all if/elseif/else statements in a chain be braced or not. Overrides mod_full_brace_if.
+# If any must be braced, they are all braced. If all can be unbraced, then the braces are removed.
+mod_full_brace_if_chain = 1 # unsigned number
+
+# Don't remove braces around statements that span N newlines
+mod_full_brace_nl = 2 # number
+
+# Add or remove braces on single-line 'while' statement
+mod_full_brace_while = remove # ignore/add/remove/force
+
+# Add or remove braces on single-line 'using ()' statement
+mod_full_brace_using = remove # ignore/add/remove/force
+
+# Add or remove unnecessary paren on 'return' statement
+mod_paren_on_return = remove # 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 = 0 # number
+
+# If a namespace 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_namespace_closebrace_comment = 0 # 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 = 0 # number
+
+# If an #ifdef body exceeds the specified number of newlines and doesn't have a comment after
+# the #endif, a comment will be added.
+mod_add_long_ifdef_endif_comment = 0 # number
+
+# If an #ifdef or #else body exceeds the specified number of newlines and doesn't have a comment after
+# the #else, a comment will be added.
+mod_add_long_ifdef_else_comment = 0 # number
+
+# If TRUE, will sort consecutive single-line 'import' statements [Java, D]
+mod_sort_import = true # false/true
+
+# If TRUE, will sort consecutive single-line 'using' statements [C#]
+mod_sort_using = true # 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
+
+# If TRUE, it will move a 'break' that appears after a fully braced 'case' before the close brace.
+mod_move_case_break = false # false/true
+
+# If TRUE, it will remove a void 'return;' that appears as the last statement in a function.
+mod_remove_empty_return = true # false/true
+
+#
+# Comment modifications
+#
+
+# Try to wrap comments at cmt_width columns
+cmt_width = 80 # number
+
+# Set the comment reflow mode (default: 0)
+# 0: no reflowing (apart from the line wrapping due to cmt_width)
+# 1: no touching at all
+# 2: full reflow
+cmt_reflow_mode = 1 # number
+
+# Whether to convert all tabs to spaces in comments. Default is to leave tabs inside comments alone, unless used for indenting.
+cmt_convert_tab_to_spaces = false # false/true
+
+# If false, disable all multi-line comment changes, including cmt_width. keyword substitution and leading chars.
+# Default is true.
+cmt_indent_multi = true # false/true
+
+# Whether to group c-comments that look like they are in a block
+cmt_c_group = true # false/true
+
+# Whether to put an empty '/*' on the first line of the combined c-comment
+cmt_c_nl_start = true # false/true
+
+# Whether to put a newline before the closing '*/' of the combined c-comment
+cmt_c_nl_end = true # false/true
+
+# Whether to group cpp-comments that look like they are in a block
+cmt_cpp_group = true # false/true
+
+# Whether to put an empty '/*' on the first line of the combined cpp-comment
+cmt_cpp_nl_start = true # false/true
+
+# Whether to put a newline before the closing '*/' of the combined cpp-comment
+cmt_cpp_nl_end = true # 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 = true # false/true
+
+# The number of spaces to insert at the start of subsequent comment lines
+cmt_sp_before_star_cont = 0 # number
+
+# The number of spaces to insert after the star on subsequent comment lines
+cmt_sp_after_star_cont = 0 # number
+
+# For multi-line comments with a '*' lead, remove leading spaces if the first and last lines of
+# the comment are the same length. Default=True
+cmt_multi_check_last = false # false/true
+
+# 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 substitute $(filename) with the current file's name.
+cmt_insert_file_header = "" # string
+
+# The filename that contains text to insert at the end of a file if the file doesn't end with a C/C++ comment.
+# Will substitute $(filename) with the current file's name.
+cmt_insert_file_footer = "" # string
+
+# The filename that contains text to insert before a function implementation if the function isn't preceded with a C/C++ comment.
+# Will substitute $(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 = "" # string
+
+# The filename that contains text to insert before a class if the class isn't preceded with a C/C++ comment.
+# Will substitute $(class) with the class name.
+cmt_insert_class_header = "" # string
+
+# The filename that contains text to insert before a Obj-C message specification if the method isn't preceded with a C/C++ comment.
+# Will substitute $(message) with the function name and $(javaparam) with the javadoc @param and @return stuff.
+cmt_insert_oc_msg_header = "" # string
+
+# If a preprocessor is encountered when stepping backwards from a function name, then
+# this option decides whether the comment should be inserted.
+# Affects cmt_insert_oc_msg_header, cmt_insert_func_header and cmt_insert_class_header.
+cmt_insert_before_preproc = false # false/true
+
+#
+# Preprocessor options
+#
+
+# Whether to indent #if/#else/#endif at the brace level (true) or from column 1 (false)
+pp_indent_at_level = false # false/true
+
+# Whether to indent #if/#else/#endif at the parenthesis level if the brace
+# level is 0. If false, these are indented from column 1.
+pp_indent_at_level0 = false # false/true
+
+# Specifies the number of columns to indent preprocessors per level at brace level 0 (file-level).
+# If pp_indent_at_level=false, specifies the number of columns to indent preprocessors per level at brace level > 0 (function-level).
+# Default=1.
+pp_indent_count = 1 # number
+
+# Add or remove space after # based on pp level of #if blocks
+pp_space_after = remove # ignore/add/remove/force
+
+# Sets the number of spaces added with pp_space_after
+pp_space_count = 1 # 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.
+# 0: indent preprocessors using output_tab_size.
+# >0: column at which all preprocessors will be indented.
+pp_indent_if = 0 # number
+
+# Control whether to indent the code between #if, #else and #endif.
+pp_if_indent_code = false # false/true
+
+# Whether to indent '#define' at the brace level (true) or from column 1 (false)
+pp_define_at_level = false # false/true
+
+# Use or Do not Use options
+#
+
+# True: indent_func_call_param will be used
+# False: indent_func_call_param will NOT be used
+use_indent_func_call_param = true # false/true
+
+# True: indent_continue will be used only once
+# False: indent_continue will be used every time (default)
+use_indent_continue_only_once = false # 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
+#
+# You can assign any keyword to any type with the set option.
+# set func_call_user _ N_
+#
+# The full syntax description of all custom definition config entries
+# is shown below:
+#
+# define custom tokens as:
+# - embed whitespace in token using '' escape character, or
+# put token in quotes
+# - these: ' " and ` are recognized as quote delimiters
+#
+# type token1 token2 token3 ...
+# ^ optionally specify multiple tokens on a single line
+# define def_token output_token
+# ^ output_token is optional, then NULL is assumed
+# macro-open token
+# macro-close token
+# macro-else token
+# set id token1 token2 ...
+# ^ optionally specify multiple tokens on a single line
+# ^ id is one of the names in token_enum.h sans the CT_ prefix,
+# e.g. PP_PRAGMA
+#
+# all tokens are separated by any mix of ',' commas, '=' equal signs
+# and whitespace (space, tab)
+#
+# You can add support for other file extensions using the 'file_ext' command.
+# The first arg is the language name used with the '-l' option.
+# The remaining args are file extensions, matched with 'endswith'.
+# file_ext CPP .ch .cxx .cpp.in
+#
+type byte cchar uchar ushort word uint ulong llong ullong
+type int8 uint8 int16 uint16 int32 uint32 int64 uint64
+type FILE size_t ssize_t va_list wchar_t
+type BOOL BSTR BYTE CHAR DOUBLE DWORD DWORD64 DWORD_PTR FALSE FLOAT
+type HANDLE HKEY HRESULT HWND INT INT8 INT16 INT32 INT64 LONG LONG64 LONG_PTR
+type LPARAM LPSTR LPCSTR LPCWSTR LPTSTR LPVOID LPWSTR PSZ SHORT TRUE
+type UCHAR UINT UINT8 UINT16 UINT32 UINT64 UINT_PTR ULONG ULONG64 ULONG_PTR
+type USHORT WCHAR WORD WORD_PTR WPARAM
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/types.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/types.txt
index 0df27c78..0df27c78 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/types.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/types.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/uigui_uncrustify.ini b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/uigui_uncrustify.ini
new file mode 100644
index 00000000..86678454
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/uigui_uncrustify.ini
@@ -0,0 +1,7585 @@
+[header]
+categories=General options|Spacing options|Indenting options|Newline adding and removing options|Blank line options|Positioning options|Line splitting options|Code alignment options (not left column spaces/tabs)|Comment modification options|Code modifying options (non-whitespace)|Preprocessor options|Sort includes options|Use or Do not Use options|Warn levels - 1: error, 2: warning (default), 3: note
+cfgFileParameterEnding=cr
+configFilename=uncrustify.cfg
+fileTypes=*.c|*.c++|*.cc|*.cp|*.cpp|*.cs|*.cxx|*.d|*.di|*.es|*.h|*.h++|*.hh|*.hp|*.hpp|*.hxx|*.inc|*.inl|*.java|*.js|*.m|*.mm|*.p|*.pawn|*.sma|*.sqc|*.sql|*.vala|*.vapi
+indenterFileName=uncrustify
+indenterName=Uncrustify (C, C++, C#, ObjectiveC, D, Java, Pawn, VALA)
+inputFileName=indentinput
+inputFileParameter="-f "
+manual=http://uncrustify.sourceforge.net/config.txt
+outputFileName=indentoutput
+outputFileParameter="-o "
+stringparaminquotes=false
+parameterOrder=ipo
+showHelpParameter=-h
+stringparaminquotes=false
+useCfgFileParameter="-c "
+useRegex=true
+version=Uncrustify-0.78.0
+
+[Newlines]
+Category=0
+Description="<html>The type of line endings.<br/><br/>Default: auto</html>"
+Enabled=false
+EditorType=multiple
+Choices=newlines\s*=\s*lf|newlines\s*=\s*crlf|newlines\s*=\s*cr|newlines\s*=\s*auto
+ChoicesReadable="Newlines Unix|Newlines Win|Newlines Mac|Newlines Auto"
+ValueDefault=auto
+
+[Input Tab Size]
+Category=0
+Description="<html>The original size of tabs in the input.<br/><br/>Default: 8</html>"
+Enabled=false
+EditorType=numeric
+CallName="input_tab_size\s*=\s*"
+MinVal=1
+MaxVal=32
+ValueDefault=8
+
+[Output Tab Size]
+Category=0
+Description="<html>The size of tabs in the output (only used if align_with_tabs=true).<br/><br/>Default: 8</html>"
+Enabled=false
+EditorType=numeric
+CallName="output_tab_size\s*=\s*"
+MinVal=1
+MaxVal=32
+ValueDefault=8
+
+[String Escape Char]
+Category=0
+Description="<html>The ASCII value of the string escape char, usually 92 (\) or (Pawn) 94 (^).<br/><br/>Default: 92</html>"
+Enabled=false
+EditorType=numeric
+CallName="string_escape_char\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=92
+
+[String Escape Char2]
+Category=0
+Description="<html>Alternate string escape char (usually only used for Pawn).<br/>Only works right before the quote char.</html>"
+Enabled=false
+EditorType=numeric
+CallName="string_escape_char2\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[String Replace Tab Chars]
+Category=0
+Description="<html>Replace tab characters found in string literals with the escape sequence \t<br/>instead.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=string_replace_tab_chars\s*=\s*true|string_replace_tab_chars\s*=\s*false
+ValueDefault=false
+
+[Tok Split Gte]
+Category=0
+Description="<html>Allow interpreting '&gt;=' and '&gt;&gt;=' as part of a template in code like<br/>'void f(list&lt;list&lt;B&gt;&gt;=val);'. If true, 'assert(x&lt;0 &amp;&amp; y&gt;=3)' will be broken.<br/>Improvements to template detection may make this option obsolete.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=tok_split_gte\s*=\s*true|tok_split_gte\s*=\s*false
+ValueDefault=false
+
+[Disable Processing Nl Cont]
+Category=0
+Description="<html>Disable formatting of NL_CONT ('\\n') ended lines (e.g. multi-line macros).</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=disable_processing_nl_cont\s*=\s*true|disable_processing_nl_cont\s*=\s*false
+ValueDefault=false
+
+[Disable Processing Cmt]
+Category=0
+Description="<html>Specify the marker used in comments to disable processing of part of the<br/>file.<br/><br/>Default: *INDENT-OFF*</html>"
+Enabled=false
+CallName=disable_processing_cmt\s*=\s*
+EditorType=string
+ValueDefault= *INDENT-OFF*
+
+[Enable Processing Cmt]
+Category=0
+Description="<html>Specify the marker used in comments to (re)enable processing in a file.<br/><br/>Default: *INDENT-ON*</html>"
+Enabled=false
+CallName=enable_processing_cmt\s*=\s*
+EditorType=string
+ValueDefault= *INDENT-ON*
+
+[Enable Digraphs]
+Category=0
+Description="<html>Enable parsing of digraphs.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=enable_digraphs\s*=\s*true|enable_digraphs\s*=\s*false
+ValueDefault=false
+
+[Processing Cmt As Regex]
+Category=0
+Description="<html>Option to allow both disable_processing_cmt and enable_processing_cmt<br/>strings, if specified, to be interpreted as ECMAScript regular expressions.<br/>If true, a regex search will be performed within comments according to the<br/>specified patterns in order to disable/enable processing.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=processing_cmt_as_regex\s*=\s*true|processing_cmt_as_regex\s*=\s*false
+ValueDefault=false
+
+[Utf8 Bom]
+Category=0
+Description="<html>Add or remove the UTF-8 BOM (recommend 'remove').</html>"
+Enabled=false
+EditorType=multiple
+Choices=utf8_bom\s*=\s*ignore|utf8_bom\s*=\s*add|utf8_bom\s*=\s*remove|utf8_bom\s*=\s*force|utf8_bom\s*=\s*not_defined
+ChoicesReadable="Ignore Utf8 Bom|Add Utf8 Bom|Remove Utf8 Bom|Force Utf8 Bom"
+ValueDefault=ignore
+
+[Utf8 Byte]
+Category=0
+Description="<html>If the file contains bytes with values between 128 and 255, but is not<br/>UTF-8, then output as UTF-8.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=utf8_byte\s*=\s*true|utf8_byte\s*=\s*false
+ValueDefault=false
+
+[Utf8 Force]
+Category=0
+Description="<html>Force the output encoding to UTF-8.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=utf8_force\s*=\s*true|utf8_force\s*=\s*false
+ValueDefault=false
+
+[Sp Arith]
+Category=1
+Description="<html>Add or remove space around non-assignment symbolic operators ('+', '/', '%',<br/>'&lt;&lt;', and so forth).</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_arith\s*=\s*ignore|sp_arith\s*=\s*add|sp_arith\s*=\s*remove|sp_arith\s*=\s*force|sp_arith\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Arith|Add Sp Arith|Remove Sp Arith|Force Sp Arith"
+ValueDefault=ignore
+
+[Sp Arith Additive]
+Category=1
+Description="<html>Add or remove space around arithmetic operators '+' and '-'.<br/><br/>Overrides sp_arith.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_arith_additive\s*=\s*ignore|sp_arith_additive\s*=\s*add|sp_arith_additive\s*=\s*remove|sp_arith_additive\s*=\s*force|sp_arith_additive\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Arith Additive|Add Sp Arith Additive|Remove Sp Arith Additive|Force Sp Arith Additive"
+ValueDefault=ignore
+
+[Sp Assign]
+Category=1
+Description="<html>Add or remove space around assignment operator '=', '+=', etc.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_assign\s*=\s*ignore|sp_assign\s*=\s*add|sp_assign\s*=\s*remove|sp_assign\s*=\s*force|sp_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Assign|Add Sp Assign|Remove Sp Assign|Force Sp Assign"
+ValueDefault=ignore
+
+[Sp Cpp Lambda Assign]
+Category=1
+Description="<html>Add or remove space around '=' in C++11 lambda capture specifications.<br/><br/>Overrides sp_assign.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_lambda_assign\s*=\s*ignore|sp_cpp_lambda_assign\s*=\s*add|sp_cpp_lambda_assign\s*=\s*remove|sp_cpp_lambda_assign\s*=\s*force|sp_cpp_lambda_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Lambda Assign|Add Sp Cpp Lambda Assign|Remove Sp Cpp Lambda Assign|Force Sp Cpp Lambda Assign"
+ValueDefault=ignore
+
+[Sp Cpp Lambda Square Paren]
+Category=1
+Description="<html>Add or remove space after the capture specification of a C++11 lambda when<br/>an argument list is present, as in '[] &lt;here&gt; (int x){ ... }'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_lambda_square_paren\s*=\s*ignore|sp_cpp_lambda_square_paren\s*=\s*add|sp_cpp_lambda_square_paren\s*=\s*remove|sp_cpp_lambda_square_paren\s*=\s*force|sp_cpp_lambda_square_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Lambda Square Paren|Add Sp Cpp Lambda Square Paren|Remove Sp Cpp Lambda Square Paren|Force Sp Cpp Lambda Square Paren"
+ValueDefault=ignore
+
+[Sp Cpp Lambda Square Brace]
+Category=1
+Description="<html>Add or remove space after the capture specification of a C++11 lambda with<br/>no argument list is present, as in '[] &lt;here&gt; { ... }'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_lambda_square_brace\s*=\s*ignore|sp_cpp_lambda_square_brace\s*=\s*add|sp_cpp_lambda_square_brace\s*=\s*remove|sp_cpp_lambda_square_brace\s*=\s*force|sp_cpp_lambda_square_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Lambda Square Brace|Add Sp Cpp Lambda Square Brace|Remove Sp Cpp Lambda Square Brace|Force Sp Cpp Lambda Square Brace"
+ValueDefault=ignore
+
+[Sp Cpp Lambda Argument List Empty]
+Category=1
+Description="<html>Add or remove space after the opening parenthesis and before the closing<br/>parenthesis of a argument list of a C++11 lambda, as in<br/>'[]( &lt;here&gt; ){ ... }'<br/>with an empty list.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_lambda_argument_list_empty\s*=\s*ignore|sp_cpp_lambda_argument_list_empty\s*=\s*add|sp_cpp_lambda_argument_list_empty\s*=\s*remove|sp_cpp_lambda_argument_list_empty\s*=\s*force|sp_cpp_lambda_argument_list_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Lambda Argument List Empty|Add Sp Cpp Lambda Argument List Empty|Remove Sp Cpp Lambda Argument List Empty|Force Sp Cpp Lambda Argument List Empty"
+ValueDefault=ignore
+
+[Sp Cpp Lambda Argument List]
+Category=1
+Description="<html>Add or remove space after the opening parenthesis and before the closing<br/>parenthesis of a argument list of a C++11 lambda, as in<br/>'[]( &lt;here&gt; int x &lt;here&gt; ){ ... }'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_lambda_argument_list\s*=\s*ignore|sp_cpp_lambda_argument_list\s*=\s*add|sp_cpp_lambda_argument_list\s*=\s*remove|sp_cpp_lambda_argument_list\s*=\s*force|sp_cpp_lambda_argument_list\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Lambda Argument List|Add Sp Cpp Lambda Argument List|Remove Sp Cpp Lambda Argument List|Force Sp Cpp Lambda Argument List"
+ValueDefault=ignore
+
+[Sp Cpp Lambda Paren Brace]
+Category=1
+Description="<html>Add or remove space after the argument list of a C++11 lambda, as in<br/>'[](int x) &lt;here&gt; { ... }'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_lambda_paren_brace\s*=\s*ignore|sp_cpp_lambda_paren_brace\s*=\s*add|sp_cpp_lambda_paren_brace\s*=\s*remove|sp_cpp_lambda_paren_brace\s*=\s*force|sp_cpp_lambda_paren_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Lambda Paren Brace|Add Sp Cpp Lambda Paren Brace|Remove Sp Cpp Lambda Paren Brace|Force Sp Cpp Lambda Paren Brace"
+ValueDefault=ignore
+
+[Sp Cpp Lambda Fparen]
+Category=1
+Description="<html>Add or remove space between a lambda body and its call operator of an<br/>immediately invoked lambda, as in '[]( ... ){ ... } &lt;here&gt; ( ... )'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_lambda_fparen\s*=\s*ignore|sp_cpp_lambda_fparen\s*=\s*add|sp_cpp_lambda_fparen\s*=\s*remove|sp_cpp_lambda_fparen\s*=\s*force|sp_cpp_lambda_fparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Lambda Fparen|Add Sp Cpp Lambda Fparen|Remove Sp Cpp Lambda Fparen|Force Sp Cpp Lambda Fparen"
+ValueDefault=ignore
+
+[Sp Assign Default]
+Category=1
+Description="<html>Add or remove space around assignment operator '=' in a prototype.<br/><br/>If set to ignore, use sp_assign.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_assign_default\s*=\s*ignore|sp_assign_default\s*=\s*add|sp_assign_default\s*=\s*remove|sp_assign_default\s*=\s*force|sp_assign_default\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Assign Default|Add Sp Assign Default|Remove Sp Assign Default|Force Sp Assign Default"
+ValueDefault=ignore
+
+[Sp Before Assign]
+Category=1
+Description="<html>Add or remove space before assignment operator '=', '+=', etc.<br/><br/>Overrides sp_assign.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_assign\s*=\s*ignore|sp_before_assign\s*=\s*add|sp_before_assign\s*=\s*remove|sp_before_assign\s*=\s*force|sp_before_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Assign|Add Sp Before Assign|Remove Sp Before Assign|Force Sp Before Assign"
+ValueDefault=ignore
+
+[Sp After Assign]
+Category=1
+Description="<html>Add or remove space after assignment operator '=', '+=', etc.<br/><br/>Overrides sp_assign.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_assign\s*=\s*ignore|sp_after_assign\s*=\s*add|sp_after_assign\s*=\s*remove|sp_after_assign\s*=\s*force|sp_after_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Assign|Add Sp After Assign|Remove Sp After Assign|Force Sp After Assign"
+ValueDefault=ignore
+
+[Sp Enum Brace]
+Category=1
+Description="<html>Add or remove space in 'enum {'.<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_enum_brace\s*=\s*ignore|sp_enum_brace\s*=\s*add|sp_enum_brace\s*=\s*remove|sp_enum_brace\s*=\s*force|sp_enum_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Enum Brace|Add Sp Enum Brace|Remove Sp Enum Brace|Force Sp Enum Brace"
+ValueDefault=add
+
+[Sp Enum Paren]
+Category=1
+Description="<html>Add or remove space in 'NS_ENUM ('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_enum_paren\s*=\s*ignore|sp_enum_paren\s*=\s*add|sp_enum_paren\s*=\s*remove|sp_enum_paren\s*=\s*force|sp_enum_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Enum Paren|Add Sp Enum Paren|Remove Sp Enum Paren|Force Sp Enum Paren"
+ValueDefault=ignore
+
+[Sp Enum Assign]
+Category=1
+Description="<html>Add or remove space around assignment '=' in enum.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_enum_assign\s*=\s*ignore|sp_enum_assign\s*=\s*add|sp_enum_assign\s*=\s*remove|sp_enum_assign\s*=\s*force|sp_enum_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Enum Assign|Add Sp Enum Assign|Remove Sp Enum Assign|Force Sp Enum Assign"
+ValueDefault=ignore
+
+[Sp Enum Before Assign]
+Category=1
+Description="<html>Add or remove space before assignment '=' in enum.<br/><br/>Overrides sp_enum_assign.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_enum_before_assign\s*=\s*ignore|sp_enum_before_assign\s*=\s*add|sp_enum_before_assign\s*=\s*remove|sp_enum_before_assign\s*=\s*force|sp_enum_before_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Enum Before Assign|Add Sp Enum Before Assign|Remove Sp Enum Before Assign|Force Sp Enum Before Assign"
+ValueDefault=ignore
+
+[Sp Enum After Assign]
+Category=1
+Description="<html>Add or remove space after assignment '=' in enum.<br/><br/>Overrides sp_enum_assign.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_enum_after_assign\s*=\s*ignore|sp_enum_after_assign\s*=\s*add|sp_enum_after_assign\s*=\s*remove|sp_enum_after_assign\s*=\s*force|sp_enum_after_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Enum After Assign|Add Sp Enum After Assign|Remove Sp Enum After Assign|Force Sp Enum After Assign"
+ValueDefault=ignore
+
+[Sp Enum Colon]
+Category=1
+Description="<html>Add or remove space around assignment ':' in enum.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_enum_colon\s*=\s*ignore|sp_enum_colon\s*=\s*add|sp_enum_colon\s*=\s*remove|sp_enum_colon\s*=\s*force|sp_enum_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Enum Colon|Add Sp Enum Colon|Remove Sp Enum Colon|Force Sp Enum Colon"
+ValueDefault=ignore
+
+[Sp Pp Concat]
+Category=1
+Description="<html>Add or remove space around preprocessor '##' concatenation operator.<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_pp_concat\s*=\s*ignore|sp_pp_concat\s*=\s*add|sp_pp_concat\s*=\s*remove|sp_pp_concat\s*=\s*force|sp_pp_concat\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Pp Concat|Add Sp Pp Concat|Remove Sp Pp Concat|Force Sp Pp Concat"
+ValueDefault=add
+
+[Sp Pp Stringify]
+Category=1
+Description="<html>Add or remove space after preprocessor '#' stringify operator.<br/>Also affects the '#@' charizing operator.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_pp_stringify\s*=\s*ignore|sp_pp_stringify\s*=\s*add|sp_pp_stringify\s*=\s*remove|sp_pp_stringify\s*=\s*force|sp_pp_stringify\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Pp Stringify|Add Sp Pp Stringify|Remove Sp Pp Stringify|Force Sp Pp Stringify"
+ValueDefault=ignore
+
+[Sp Before Pp Stringify]
+Category=1
+Description="<html>Add or remove space before preprocessor '#' stringify operator<br/>as in '#define x(y) L#y'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_pp_stringify\s*=\s*ignore|sp_before_pp_stringify\s*=\s*add|sp_before_pp_stringify\s*=\s*remove|sp_before_pp_stringify\s*=\s*force|sp_before_pp_stringify\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Pp Stringify|Add Sp Before Pp Stringify|Remove Sp Before Pp Stringify|Force Sp Before Pp Stringify"
+ValueDefault=ignore
+
+[Sp Bool]
+Category=1
+Description="<html>Add or remove space around boolean operators '&amp;&amp;' and '||'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_bool\s*=\s*ignore|sp_bool\s*=\s*add|sp_bool\s*=\s*remove|sp_bool\s*=\s*force|sp_bool\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Bool|Add Sp Bool|Remove Sp Bool|Force Sp Bool"
+ValueDefault=ignore
+
+[Sp Compare]
+Category=1
+Description="<html>Add or remove space around compare operator '&lt;', '&gt;', '==', etc.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_compare\s*=\s*ignore|sp_compare\s*=\s*add|sp_compare\s*=\s*remove|sp_compare\s*=\s*force|sp_compare\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Compare|Add Sp Compare|Remove Sp Compare|Force Sp Compare"
+ValueDefault=ignore
+
+[Sp Inside Paren]
+Category=1
+Description="<html>Add or remove space inside '(' and ')'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_paren\s*=\s*ignore|sp_inside_paren\s*=\s*add|sp_inside_paren\s*=\s*remove|sp_inside_paren\s*=\s*force|sp_inside_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Paren|Add Sp Inside Paren|Remove Sp Inside Paren|Force Sp Inside Paren"
+ValueDefault=ignore
+
+[Sp Paren Paren]
+Category=1
+Description="<html>Add or remove space between nested parentheses, i.e. '((' vs. ') )'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_paren_paren\s*=\s*ignore|sp_paren_paren\s*=\s*add|sp_paren_paren\s*=\s*remove|sp_paren_paren\s*=\s*force|sp_paren_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Paren Paren|Add Sp Paren Paren|Remove Sp Paren Paren|Force Sp Paren Paren"
+ValueDefault=ignore
+
+[Sp Cparen Oparen]
+Category=1
+Description="<html>Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cparen_oparen\s*=\s*ignore|sp_cparen_oparen\s*=\s*add|sp_cparen_oparen\s*=\s*remove|sp_cparen_oparen\s*=\s*force|sp_cparen_oparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cparen Oparen|Add Sp Cparen Oparen|Remove Sp Cparen Oparen|Force Sp Cparen Oparen"
+ValueDefault=ignore
+
+[Sp Balance Nested Parens]
+Category=1
+Description="<html>Whether to balance spaces inside nested parentheses.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=sp_balance_nested_parens\s*=\s*true|sp_balance_nested_parens\s*=\s*false
+ValueDefault=false
+
+[Sp Paren Brace]
+Category=1
+Description="<html>Add or remove space between ')' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_paren_brace\s*=\s*ignore|sp_paren_brace\s*=\s*add|sp_paren_brace\s*=\s*remove|sp_paren_brace\s*=\s*force|sp_paren_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Paren Brace|Add Sp Paren Brace|Remove Sp Paren Brace|Force Sp Paren Brace"
+ValueDefault=ignore
+
+[Sp Brace Brace]
+Category=1
+Description="<html>Add or remove space between nested braces, i.e. '{{' vs. '{ {'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_brace_brace\s*=\s*ignore|sp_brace_brace\s*=\s*add|sp_brace_brace\s*=\s*remove|sp_brace_brace\s*=\s*force|sp_brace_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Brace Brace|Add Sp Brace Brace|Remove Sp Brace Brace|Force Sp Brace Brace"
+ValueDefault=ignore
+
+[Sp Before Ptr Star]
+Category=1
+Description="<html>Add or remove space before pointer star '*'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_ptr_star\s*=\s*ignore|sp_before_ptr_star\s*=\s*add|sp_before_ptr_star\s*=\s*remove|sp_before_ptr_star\s*=\s*force|sp_before_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Ptr Star|Add Sp Before Ptr Star|Remove Sp Before Ptr Star|Force Sp Before Ptr Star"
+ValueDefault=ignore
+
+[Sp Before Unnamed Ptr Star]
+Category=1
+Description="<html>Add or remove space before pointer star '*' that isn't followed by a<br/>variable name. If set to ignore, sp_before_ptr_star is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_unnamed_ptr_star\s*=\s*ignore|sp_before_unnamed_ptr_star\s*=\s*add|sp_before_unnamed_ptr_star\s*=\s*remove|sp_before_unnamed_ptr_star\s*=\s*force|sp_before_unnamed_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Unnamed Ptr Star|Add Sp Before Unnamed Ptr Star|Remove Sp Before Unnamed Ptr Star|Force Sp Before Unnamed Ptr Star"
+ValueDefault=ignore
+
+[Sp Before Qualifier Ptr Star]
+Category=1
+Description="<html>Add or remove space before pointer star '*' that is followed by a qualifier.<br/>If set to ignore, sp_before_unnamed_ptr_star is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_qualifier_ptr_star\s*=\s*ignore|sp_before_qualifier_ptr_star\s*=\s*add|sp_before_qualifier_ptr_star\s*=\s*remove|sp_before_qualifier_ptr_star\s*=\s*force|sp_before_qualifier_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Qualifier Ptr Star|Add Sp Before Qualifier Ptr Star|Remove Sp Before Qualifier Ptr Star|Force Sp Before Qualifier Ptr Star"
+ValueDefault=ignore
+
+[Sp Before Operator Ptr Star]
+Category=1
+Description="<html>Add or remove space before pointer star '*' that is followed by 'operator' keyword.<br/>If set to ignore, sp_before_unnamed_ptr_star is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_operator_ptr_star\s*=\s*ignore|sp_before_operator_ptr_star\s*=\s*add|sp_before_operator_ptr_star\s*=\s*remove|sp_before_operator_ptr_star\s*=\s*force|sp_before_operator_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Operator Ptr Star|Add Sp Before Operator Ptr Star|Remove Sp Before Operator Ptr Star|Force Sp Before Operator Ptr Star"
+ValueDefault=ignore
+
+[Sp Before Scope Ptr Star]
+Category=1
+Description="<html>Add or remove space before pointer star '*' that is followed by<br/>a class scope (as in 'int *MyClass::method()') or namespace scope<br/>(as in 'int *my_ns::func()').<br/>If set to ignore, sp_before_unnamed_ptr_star is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_scope_ptr_star\s*=\s*ignore|sp_before_scope_ptr_star\s*=\s*add|sp_before_scope_ptr_star\s*=\s*remove|sp_before_scope_ptr_star\s*=\s*force|sp_before_scope_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Scope Ptr Star|Add Sp Before Scope Ptr Star|Remove Sp Before Scope Ptr Star|Force Sp Before Scope Ptr Star"
+ValueDefault=ignore
+
+[Sp Before Global Scope Ptr Star]
+Category=1
+Description="<html>Add or remove space before pointer star '*' that is followed by '::',<br/>as in 'int *::func()'.<br/>If set to ignore, sp_before_unnamed_ptr_star is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_global_scope_ptr_star\s*=\s*ignore|sp_before_global_scope_ptr_star\s*=\s*add|sp_before_global_scope_ptr_star\s*=\s*remove|sp_before_global_scope_ptr_star\s*=\s*force|sp_before_global_scope_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Global Scope Ptr Star|Add Sp Before Global Scope Ptr Star|Remove Sp Before Global Scope Ptr Star|Force Sp Before Global Scope Ptr Star"
+ValueDefault=ignore
+
+[Sp Qualifier Unnamed Ptr Star]
+Category=1
+Description="<html>Add or remove space between a qualifier and a pointer star '*' that isn't<br/>followed by a variable name, as in '(char const *)'. If set to ignore,<br/>sp_before_ptr_star is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_qualifier_unnamed_ptr_star\s*=\s*ignore|sp_qualifier_unnamed_ptr_star\s*=\s*add|sp_qualifier_unnamed_ptr_star\s*=\s*remove|sp_qualifier_unnamed_ptr_star\s*=\s*force|sp_qualifier_unnamed_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Qualifier Unnamed Ptr Star|Add Sp Qualifier Unnamed Ptr Star|Remove Sp Qualifier Unnamed Ptr Star|Force Sp Qualifier Unnamed Ptr Star"
+ValueDefault=ignore
+
+[Sp Between Ptr Star]
+Category=1
+Description="<html>Add or remove space between pointer stars '*', as in 'int ***a;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_between_ptr_star\s*=\s*ignore|sp_between_ptr_star\s*=\s*add|sp_between_ptr_star\s*=\s*remove|sp_between_ptr_star\s*=\s*force|sp_between_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Between Ptr Star|Add Sp Between Ptr Star|Remove Sp Between Ptr Star|Force Sp Between Ptr Star"
+ValueDefault=ignore
+
+[Sp Between Ptr Ref]
+Category=1
+Description="<html>Add or remove space between pointer star '*' and reference '&amp;', as in 'int *&amp; a;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_between_ptr_ref\s*=\s*ignore|sp_between_ptr_ref\s*=\s*add|sp_between_ptr_ref\s*=\s*remove|sp_between_ptr_ref\s*=\s*force|sp_between_ptr_ref\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Between Ptr Ref|Add Sp Between Ptr Ref|Remove Sp Between Ptr Ref|Force Sp Between Ptr Ref"
+ValueDefault=ignore
+
+[Sp After Ptr Star]
+Category=1
+Description="<html>Add or remove space after pointer star '*', if followed by a word.<br/><br/>Overrides sp_type_func.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_ptr_star\s*=\s*ignore|sp_after_ptr_star\s*=\s*add|sp_after_ptr_star\s*=\s*remove|sp_after_ptr_star\s*=\s*force|sp_after_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Ptr Star|Add Sp After Ptr Star|Remove Sp After Ptr Star|Force Sp After Ptr Star"
+ValueDefault=ignore
+
+[Sp After Ptr Block Caret]
+Category=1
+Description="<html>Add or remove space after pointer caret '^', if followed by a word.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_ptr_block_caret\s*=\s*ignore|sp_after_ptr_block_caret\s*=\s*add|sp_after_ptr_block_caret\s*=\s*remove|sp_after_ptr_block_caret\s*=\s*force|sp_after_ptr_block_caret\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Ptr Block Caret|Add Sp After Ptr Block Caret|Remove Sp After Ptr Block Caret|Force Sp After Ptr Block Caret"
+ValueDefault=ignore
+
+[Sp After Ptr Star Qualifier]
+Category=1
+Description="<html>Add or remove space after pointer star '*', if followed by a qualifier.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_ptr_star_qualifier\s*=\s*ignore|sp_after_ptr_star_qualifier\s*=\s*add|sp_after_ptr_star_qualifier\s*=\s*remove|sp_after_ptr_star_qualifier\s*=\s*force|sp_after_ptr_star_qualifier\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Ptr Star Qualifier|Add Sp After Ptr Star Qualifier|Remove Sp After Ptr Star Qualifier|Force Sp After Ptr Star Qualifier"
+ValueDefault=ignore
+
+[Sp After Ptr Star Func]
+Category=1
+Description="<html>Add or remove space after a pointer star '*', if followed by a function<br/>prototype or function definition.<br/><br/>Overrides sp_after_ptr_star and sp_type_func.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_ptr_star_func\s*=\s*ignore|sp_after_ptr_star_func\s*=\s*add|sp_after_ptr_star_func\s*=\s*remove|sp_after_ptr_star_func\s*=\s*force|sp_after_ptr_star_func\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Ptr Star Func|Add Sp After Ptr Star Func|Remove Sp After Ptr Star Func|Force Sp After Ptr Star Func"
+ValueDefault=ignore
+
+[Sp After Ptr Star Trailing]
+Category=1
+Description="<html>Add or remove space after a pointer star '*' in the trailing return of a<br/>function prototype or function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_ptr_star_trailing\s*=\s*ignore|sp_after_ptr_star_trailing\s*=\s*add|sp_after_ptr_star_trailing\s*=\s*remove|sp_after_ptr_star_trailing\s*=\s*force|sp_after_ptr_star_trailing\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Ptr Star Trailing|Add Sp After Ptr Star Trailing|Remove Sp After Ptr Star Trailing|Force Sp After Ptr Star Trailing"
+ValueDefault=ignore
+
+[Sp Ptr Star Func Var]
+Category=1
+Description="<html>Add or remove space between the pointer star '*' and the name of the variable<br/>in a function pointer definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_ptr_star_func_var\s*=\s*ignore|sp_ptr_star_func_var\s*=\s*add|sp_ptr_star_func_var\s*=\s*remove|sp_ptr_star_func_var\s*=\s*force|sp_ptr_star_func_var\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Ptr Star Func Var|Add Sp Ptr Star Func Var|Remove Sp Ptr Star Func Var|Force Sp Ptr Star Func Var"
+ValueDefault=ignore
+
+[Sp Ptr Star Func Type]
+Category=1
+Description="<html>Add or remove space between the pointer star '*' and the name of the type<br/>in a function pointer type definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_ptr_star_func_type\s*=\s*ignore|sp_ptr_star_func_type\s*=\s*add|sp_ptr_star_func_type\s*=\s*remove|sp_ptr_star_func_type\s*=\s*force|sp_ptr_star_func_type\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Ptr Star Func Type|Add Sp Ptr Star Func Type|Remove Sp Ptr Star Func Type|Force Sp Ptr Star Func Type"
+ValueDefault=ignore
+
+[Sp Ptr Star Paren]
+Category=1
+Description="<html>Add or remove space after a pointer star '*', if followed by an open<br/>parenthesis, as in 'void* (*)()'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_ptr_star_paren\s*=\s*ignore|sp_ptr_star_paren\s*=\s*add|sp_ptr_star_paren\s*=\s*remove|sp_ptr_star_paren\s*=\s*force|sp_ptr_star_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Ptr Star Paren|Add Sp Ptr Star Paren|Remove Sp Ptr Star Paren|Force Sp Ptr Star Paren"
+ValueDefault=ignore
+
+[Sp Before Ptr Star Func]
+Category=1
+Description="<html>Add or remove space before a pointer star '*', if followed by a function<br/>prototype or function definition. If set to ignore, sp_before_ptr_star is<br/>used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_ptr_star_func\s*=\s*ignore|sp_before_ptr_star_func\s*=\s*add|sp_before_ptr_star_func\s*=\s*remove|sp_before_ptr_star_func\s*=\s*force|sp_before_ptr_star_func\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Ptr Star Func|Add Sp Before Ptr Star Func|Remove Sp Before Ptr Star Func|Force Sp Before Ptr Star Func"
+ValueDefault=ignore
+
+[Sp Qualifier Ptr Star Func]
+Category=1
+Description="<html>Add or remove space between a qualifier and a pointer star '*' followed by<br/>the name of the function in a function prototype or definition, as in<br/>'char const *foo()`. If set to ignore, sp_before_ptr_star is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_qualifier_ptr_star_func\s*=\s*ignore|sp_qualifier_ptr_star_func\s*=\s*add|sp_qualifier_ptr_star_func\s*=\s*remove|sp_qualifier_ptr_star_func\s*=\s*force|sp_qualifier_ptr_star_func\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Qualifier Ptr Star Func|Add Sp Qualifier Ptr Star Func|Remove Sp Qualifier Ptr Star Func|Force Sp Qualifier Ptr Star Func"
+ValueDefault=ignore
+
+[Sp Before Ptr Star Trailing]
+Category=1
+Description="<html>Add or remove space before a pointer star '*' in the trailing return of a<br/>function prototype or function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_ptr_star_trailing\s*=\s*ignore|sp_before_ptr_star_trailing\s*=\s*add|sp_before_ptr_star_trailing\s*=\s*remove|sp_before_ptr_star_trailing\s*=\s*force|sp_before_ptr_star_trailing\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Ptr Star Trailing|Add Sp Before Ptr Star Trailing|Remove Sp Before Ptr Star Trailing|Force Sp Before Ptr Star Trailing"
+ValueDefault=ignore
+
+[Sp Qualifier Ptr Star Trailing]
+Category=1
+Description="<html>Add or remove space between a qualifier and a pointer star '*' in the<br/>trailing return of a function prototype or function definition, as in<br/>'auto foo() -&gt; char const *'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_qualifier_ptr_star_trailing\s*=\s*ignore|sp_qualifier_ptr_star_trailing\s*=\s*add|sp_qualifier_ptr_star_trailing\s*=\s*remove|sp_qualifier_ptr_star_trailing\s*=\s*force|sp_qualifier_ptr_star_trailing\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Qualifier Ptr Star Trailing|Add Sp Qualifier Ptr Star Trailing|Remove Sp Qualifier Ptr Star Trailing|Force Sp Qualifier Ptr Star Trailing"
+ValueDefault=ignore
+
+[Sp Before Byref]
+Category=1
+Description="<html>Add or remove space before a reference sign '&amp;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_byref\s*=\s*ignore|sp_before_byref\s*=\s*add|sp_before_byref\s*=\s*remove|sp_before_byref\s*=\s*force|sp_before_byref\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Byref|Add Sp Before Byref|Remove Sp Before Byref|Force Sp Before Byref"
+ValueDefault=ignore
+
+[Sp Before Unnamed Byref]
+Category=1
+Description="<html>Add or remove space before a reference sign '&amp;' that isn't followed by a<br/>variable name. If set to ignore, sp_before_byref is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_unnamed_byref\s*=\s*ignore|sp_before_unnamed_byref\s*=\s*add|sp_before_unnamed_byref\s*=\s*remove|sp_before_unnamed_byref\s*=\s*force|sp_before_unnamed_byref\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Unnamed Byref|Add Sp Before Unnamed Byref|Remove Sp Before Unnamed Byref|Force Sp Before Unnamed Byref"
+ValueDefault=ignore
+
+[Sp After Byref]
+Category=1
+Description="<html>Add or remove space after reference sign '&amp;', if followed by a word.<br/><br/>Overrides sp_type_func.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_byref\s*=\s*ignore|sp_after_byref\s*=\s*add|sp_after_byref\s*=\s*remove|sp_after_byref\s*=\s*force|sp_after_byref\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Byref|Add Sp After Byref|Remove Sp After Byref|Force Sp After Byref"
+ValueDefault=ignore
+
+[Sp After Byref Func]
+Category=1
+Description="<html>Add or remove space after a reference sign '&amp;', if followed by a function<br/>prototype or function definition.<br/><br/>Overrides sp_after_byref and sp_type_func.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_byref_func\s*=\s*ignore|sp_after_byref_func\s*=\s*add|sp_after_byref_func\s*=\s*remove|sp_after_byref_func\s*=\s*force|sp_after_byref_func\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Byref Func|Add Sp After Byref Func|Remove Sp After Byref Func|Force Sp After Byref Func"
+ValueDefault=ignore
+
+[Sp Before Byref Func]
+Category=1
+Description="<html>Add or remove space before a reference sign '&amp;', if followed by a function<br/>prototype or function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_byref_func\s*=\s*ignore|sp_before_byref_func\s*=\s*add|sp_before_byref_func\s*=\s*remove|sp_before_byref_func\s*=\s*force|sp_before_byref_func\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Byref Func|Add Sp Before Byref Func|Remove Sp Before Byref Func|Force Sp Before Byref Func"
+ValueDefault=ignore
+
+[Sp Byref Paren]
+Category=1
+Description="<html>Add or remove space after a reference sign '&amp;', if followed by an open<br/>parenthesis, as in 'char&amp; (*)()'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_byref_paren\s*=\s*ignore|sp_byref_paren\s*=\s*add|sp_byref_paren\s*=\s*remove|sp_byref_paren\s*=\s*force|sp_byref_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Byref Paren|Add Sp Byref Paren|Remove Sp Byref Paren|Force Sp Byref Paren"
+ValueDefault=ignore
+
+[Sp After Type]
+Category=1
+Description="<html>Add or remove space between type and word. In cases where total removal of<br/>whitespace would be a syntax error, a value of 'remove' is treated the same<br/>as 'force'.<br/><br/>This also affects some other instances of space following a type that are<br/>not covered by other options; for example, between the return type and<br/>parenthesis of a function type template argument, between the type and<br/>parenthesis of an array parameter, or between 'decltype(...)' and the<br/>following word.<br/><br/>Default: force</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_type\s*=\s*ignore|sp_after_type\s*=\s*add|sp_after_type\s*=\s*remove|sp_after_type\s*=\s*force|sp_after_type\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Type|Add Sp After Type|Remove Sp After Type|Force Sp After Type"
+ValueDefault=force
+
+[Sp After Decltype]
+Category=1
+Description="<html>Add or remove space between 'decltype(...)' and word,<br/>brace or function call.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_decltype\s*=\s*ignore|sp_after_decltype\s*=\s*add|sp_after_decltype\s*=\s*remove|sp_after_decltype\s*=\s*force|sp_after_decltype\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Decltype|Add Sp After Decltype|Remove Sp After Decltype|Force Sp After Decltype"
+ValueDefault=ignore
+
+[Sp Before Template Paren]
+Category=1
+Description="<html>(D) Add or remove space before the parenthesis in the D constructs<br/>'template Foo(' and 'class Foo('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_template_paren\s*=\s*ignore|sp_before_template_paren\s*=\s*add|sp_before_template_paren\s*=\s*remove|sp_before_template_paren\s*=\s*force|sp_before_template_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Template Paren|Add Sp Before Template Paren|Remove Sp Before Template Paren|Force Sp Before Template Paren"
+ValueDefault=ignore
+
+[Sp Template Angle]
+Category=1
+Description="<html>Add or remove space between 'template' and '&lt;'.<br/>If set to ignore, sp_before_angle is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_template_angle\s*=\s*ignore|sp_template_angle\s*=\s*add|sp_template_angle\s*=\s*remove|sp_template_angle\s*=\s*force|sp_template_angle\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Template Angle|Add Sp Template Angle|Remove Sp Template Angle|Force Sp Template Angle"
+ValueDefault=ignore
+
+[Sp Before Angle]
+Category=1
+Description="<html>Add or remove space before '&lt;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_angle\s*=\s*ignore|sp_before_angle\s*=\s*add|sp_before_angle\s*=\s*remove|sp_before_angle\s*=\s*force|sp_before_angle\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Angle|Add Sp Before Angle|Remove Sp Before Angle|Force Sp Before Angle"
+ValueDefault=ignore
+
+[Sp Inside Angle]
+Category=1
+Description="<html>Add or remove space inside '&lt;' and '&gt;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_angle\s*=\s*ignore|sp_inside_angle\s*=\s*add|sp_inside_angle\s*=\s*remove|sp_inside_angle\s*=\s*force|sp_inside_angle\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Angle|Add Sp Inside Angle|Remove Sp Inside Angle|Force Sp Inside Angle"
+ValueDefault=ignore
+
+[Sp Inside Angle Empty]
+Category=1
+Description="<html>Add or remove space inside '&lt;&gt;'.<br/>if empty.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_angle_empty\s*=\s*ignore|sp_inside_angle_empty\s*=\s*add|sp_inside_angle_empty\s*=\s*remove|sp_inside_angle_empty\s*=\s*force|sp_inside_angle_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Angle Empty|Add Sp Inside Angle Empty|Remove Sp Inside Angle Empty|Force Sp Inside Angle Empty"
+ValueDefault=ignore
+
+[Sp Angle Colon]
+Category=1
+Description="<html>Add or remove space between '&gt;' and ':'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_angle_colon\s*=\s*ignore|sp_angle_colon\s*=\s*add|sp_angle_colon\s*=\s*remove|sp_angle_colon\s*=\s*force|sp_angle_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Angle Colon|Add Sp Angle Colon|Remove Sp Angle Colon|Force Sp Angle Colon"
+ValueDefault=ignore
+
+[Sp After Angle]
+Category=1
+Description="<html>Add or remove space after '&gt;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_angle\s*=\s*ignore|sp_after_angle\s*=\s*add|sp_after_angle\s*=\s*remove|sp_after_angle\s*=\s*force|sp_after_angle\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Angle|Add Sp After Angle|Remove Sp After Angle|Force Sp After Angle"
+ValueDefault=ignore
+
+[Sp Angle Paren]
+Category=1
+Description="<html>Add or remove space between '&gt;' and '(' as found in 'new List&lt;byte&gt;(foo);'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_angle_paren\s*=\s*ignore|sp_angle_paren\s*=\s*add|sp_angle_paren\s*=\s*remove|sp_angle_paren\s*=\s*force|sp_angle_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Angle Paren|Add Sp Angle Paren|Remove Sp Angle Paren|Force Sp Angle Paren"
+ValueDefault=ignore
+
+[Sp Angle Paren Empty]
+Category=1
+Description="<html>Add or remove space between '&gt;' and '()' as found in 'new List&lt;byte&gt;();'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_angle_paren_empty\s*=\s*ignore|sp_angle_paren_empty\s*=\s*add|sp_angle_paren_empty\s*=\s*remove|sp_angle_paren_empty\s*=\s*force|sp_angle_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Angle Paren Empty|Add Sp Angle Paren Empty|Remove Sp Angle Paren Empty|Force Sp Angle Paren Empty"
+ValueDefault=ignore
+
+[Sp Angle Word]
+Category=1
+Description="<html>Add or remove space between '&gt;' and a word as in 'List&lt;byte&gt; m;' or<br/>'template &lt;typename T&gt; static ...'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_angle_word\s*=\s*ignore|sp_angle_word\s*=\s*add|sp_angle_word\s*=\s*remove|sp_angle_word\s*=\s*force|sp_angle_word\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Angle Word|Add Sp Angle Word|Remove Sp Angle Word|Force Sp Angle Word"
+ValueDefault=ignore
+
+[Sp Angle Shift]
+Category=1
+Description="<html>Add or remove space between '&gt;' and '&gt;' in '&gt;&gt;' (template stuff).<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_angle_shift\s*=\s*ignore|sp_angle_shift\s*=\s*add|sp_angle_shift\s*=\s*remove|sp_angle_shift\s*=\s*force|sp_angle_shift\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Angle Shift|Add Sp Angle Shift|Remove Sp Angle Shift|Force Sp Angle Shift"
+ValueDefault=add
+
+[Sp Permit Cpp11 Shift]
+Category=1
+Description="<html>(C++11) Permit removal of the space between '&gt;&gt;' in 'foo&lt;bar&lt;int&gt; &gt;'. Note<br/>that sp_angle_shift cannot remove the space without this option.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=sp_permit_cpp11_shift\s*=\s*true|sp_permit_cpp11_shift\s*=\s*false
+ValueDefault=false
+
+[Sp Before Sparen]
+Category=1
+Description="<html>Add or remove space before '(' of control statements ('if', 'for', 'switch',<br/>'while', etc.).</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_sparen\s*=\s*ignore|sp_before_sparen\s*=\s*add|sp_before_sparen\s*=\s*remove|sp_before_sparen\s*=\s*force|sp_before_sparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Sparen|Add Sp Before Sparen|Remove Sp Before Sparen|Force Sp Before Sparen"
+ValueDefault=ignore
+
+[Sp Inside Sparen]
+Category=1
+Description="<html>Add or remove space inside '(' and ')' of control statements other than<br/>'for'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_sparen\s*=\s*ignore|sp_inside_sparen\s*=\s*add|sp_inside_sparen\s*=\s*remove|sp_inside_sparen\s*=\s*force|sp_inside_sparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Sparen|Add Sp Inside Sparen|Remove Sp Inside Sparen|Force Sp Inside Sparen"
+ValueDefault=ignore
+
+[Sp Inside Sparen Open]
+Category=1
+Description="<html>Add or remove space after '(' of control statements other than 'for'.<br/><br/>Overrides sp_inside_sparen.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_sparen_open\s*=\s*ignore|sp_inside_sparen_open\s*=\s*add|sp_inside_sparen_open\s*=\s*remove|sp_inside_sparen_open\s*=\s*force|sp_inside_sparen_open\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Sparen Open|Add Sp Inside Sparen Open|Remove Sp Inside Sparen Open|Force Sp Inside Sparen Open"
+ValueDefault=ignore
+
+[Sp Inside Sparen Close]
+Category=1
+Description="<html>Add or remove space before ')' of control statements other than 'for'.<br/><br/>Overrides sp_inside_sparen.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_sparen_close\s*=\s*ignore|sp_inside_sparen_close\s*=\s*add|sp_inside_sparen_close\s*=\s*remove|sp_inside_sparen_close\s*=\s*force|sp_inside_sparen_close\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Sparen Close|Add Sp Inside Sparen Close|Remove Sp Inside Sparen Close|Force Sp Inside Sparen Close"
+ValueDefault=ignore
+
+[Sp Inside For]
+Category=1
+Description="<html>Add or remove space inside '(' and ')' of 'for' statements.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_for\s*=\s*ignore|sp_inside_for\s*=\s*add|sp_inside_for\s*=\s*remove|sp_inside_for\s*=\s*force|sp_inside_for\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside For|Add Sp Inside For|Remove Sp Inside For|Force Sp Inside For"
+ValueDefault=ignore
+
+[Sp Inside For Open]
+Category=1
+Description="<html>Add or remove space after '(' of 'for' statements.<br/><br/>Overrides sp_inside_for.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_for_open\s*=\s*ignore|sp_inside_for_open\s*=\s*add|sp_inside_for_open\s*=\s*remove|sp_inside_for_open\s*=\s*force|sp_inside_for_open\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside For Open|Add Sp Inside For Open|Remove Sp Inside For Open|Force Sp Inside For Open"
+ValueDefault=ignore
+
+[Sp Inside For Close]
+Category=1
+Description="<html>Add or remove space before ')' of 'for' statements.<br/><br/>Overrides sp_inside_for.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_for_close\s*=\s*ignore|sp_inside_for_close\s*=\s*add|sp_inside_for_close\s*=\s*remove|sp_inside_for_close\s*=\s*force|sp_inside_for_close\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside For Close|Add Sp Inside For Close|Remove Sp Inside For Close|Force Sp Inside For Close"
+ValueDefault=ignore
+
+[Sp Sparen Paren]
+Category=1
+Description="<html>Add or remove space between '((' or '))' of control statements.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_sparen_paren\s*=\s*ignore|sp_sparen_paren\s*=\s*add|sp_sparen_paren\s*=\s*remove|sp_sparen_paren\s*=\s*force|sp_sparen_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Sparen Paren|Add Sp Sparen Paren|Remove Sp Sparen Paren|Force Sp Sparen Paren"
+ValueDefault=ignore
+
+[Sp After Sparen]
+Category=1
+Description="<html>Add or remove space after ')' of control statements.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_sparen\s*=\s*ignore|sp_after_sparen\s*=\s*add|sp_after_sparen\s*=\s*remove|sp_after_sparen\s*=\s*force|sp_after_sparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Sparen|Add Sp After Sparen|Remove Sp After Sparen|Force Sp After Sparen"
+ValueDefault=ignore
+
+[Sp Sparen Brace]
+Category=1
+Description="<html>Add or remove space between ')' and '{' of control statements.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_sparen_brace\s*=\s*ignore|sp_sparen_brace\s*=\s*add|sp_sparen_brace\s*=\s*remove|sp_sparen_brace\s*=\s*force|sp_sparen_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Sparen Brace|Add Sp Sparen Brace|Remove Sp Sparen Brace|Force Sp Sparen Brace"
+ValueDefault=ignore
+
+[Sp Do Brace Open]
+Category=1
+Description="<html>Add or remove space between 'do' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_do_brace_open\s*=\s*ignore|sp_do_brace_open\s*=\s*add|sp_do_brace_open\s*=\s*remove|sp_do_brace_open\s*=\s*force|sp_do_brace_open\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Do Brace Open|Add Sp Do Brace Open|Remove Sp Do Brace Open|Force Sp Do Brace Open"
+ValueDefault=ignore
+
+[Sp Brace Close While]
+Category=1
+Description="<html>Add or remove space between '}' and 'while'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_brace_close_while\s*=\s*ignore|sp_brace_close_while\s*=\s*add|sp_brace_close_while\s*=\s*remove|sp_brace_close_while\s*=\s*force|sp_brace_close_while\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Brace Close While|Add Sp Brace Close While|Remove Sp Brace Close While|Force Sp Brace Close While"
+ValueDefault=ignore
+
+[Sp While Paren Open]
+Category=1
+Description="<html>Add or remove space between 'while' and '('. Overrides sp_before_sparen.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_while_paren_open\s*=\s*ignore|sp_while_paren_open\s*=\s*add|sp_while_paren_open\s*=\s*remove|sp_while_paren_open\s*=\s*force|sp_while_paren_open\s*=\s*not_defined
+ChoicesReadable="Ignore Sp While Paren Open|Add Sp While Paren Open|Remove Sp While Paren Open|Force Sp While Paren Open"
+ValueDefault=ignore
+
+[Sp Invariant Paren]
+Category=1
+Description="<html>(D) Add or remove space between 'invariant' and '('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_invariant_paren\s*=\s*ignore|sp_invariant_paren\s*=\s*add|sp_invariant_paren\s*=\s*remove|sp_invariant_paren\s*=\s*force|sp_invariant_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Invariant Paren|Add Sp Invariant Paren|Remove Sp Invariant Paren|Force Sp Invariant Paren"
+ValueDefault=ignore
+
+[Sp After Invariant Paren]
+Category=1
+Description="<html>(D) Add or remove space after the ')' in 'invariant (C) c'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_invariant_paren\s*=\s*ignore|sp_after_invariant_paren\s*=\s*add|sp_after_invariant_paren\s*=\s*remove|sp_after_invariant_paren\s*=\s*force|sp_after_invariant_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Invariant Paren|Add Sp After Invariant Paren|Remove Sp After Invariant Paren|Force Sp After Invariant Paren"
+ValueDefault=ignore
+
+[Sp Special Semi]
+Category=1
+Description="<html>Add or remove space before empty statement ';' on 'if', 'for' and 'while'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_special_semi\s*=\s*ignore|sp_special_semi\s*=\s*add|sp_special_semi\s*=\s*remove|sp_special_semi\s*=\s*force|sp_special_semi\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Special Semi|Add Sp Special Semi|Remove Sp Special Semi|Force Sp Special Semi"
+ValueDefault=ignore
+
+[Sp Before Semi]
+Category=1
+Description="<html>Add or remove space before ';'.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_semi\s*=\s*ignore|sp_before_semi\s*=\s*add|sp_before_semi\s*=\s*remove|sp_before_semi\s*=\s*force|sp_before_semi\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Semi|Add Sp Before Semi|Remove Sp Before Semi|Force Sp Before Semi"
+ValueDefault=remove
+
+[Sp Before Semi For]
+Category=1
+Description="<html>Add or remove space before ';' in non-empty 'for' statements.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_semi_for\s*=\s*ignore|sp_before_semi_for\s*=\s*add|sp_before_semi_for\s*=\s*remove|sp_before_semi_for\s*=\s*force|sp_before_semi_for\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Semi For|Add Sp Before Semi For|Remove Sp Before Semi For|Force Sp Before Semi For"
+ValueDefault=ignore
+
+[Sp Before Semi For Empty]
+Category=1
+Description="<html>Add or remove space before a semicolon of an empty left part of a for<br/>statement, as in 'for ( &lt;here&gt; ; ; )'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_semi_for_empty\s*=\s*ignore|sp_before_semi_for_empty\s*=\s*add|sp_before_semi_for_empty\s*=\s*remove|sp_before_semi_for_empty\s*=\s*force|sp_before_semi_for_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Semi For Empty|Add Sp Before Semi For Empty|Remove Sp Before Semi For Empty|Force Sp Before Semi For Empty"
+ValueDefault=ignore
+
+[Sp Between Semi For Empty]
+Category=1
+Description="<html>Add or remove space between the semicolons of an empty middle part of a for<br/>statement, as in 'for ( ; &lt;here&gt; ; )'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_between_semi_for_empty\s*=\s*ignore|sp_between_semi_for_empty\s*=\s*add|sp_between_semi_for_empty\s*=\s*remove|sp_between_semi_for_empty\s*=\s*force|sp_between_semi_for_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Between Semi For Empty|Add Sp Between Semi For Empty|Remove Sp Between Semi For Empty|Force Sp Between Semi For Empty"
+ValueDefault=ignore
+
+[Sp After Semi]
+Category=1
+Description="<html>Add or remove space after ';', except when followed by a comment.<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_semi\s*=\s*ignore|sp_after_semi\s*=\s*add|sp_after_semi\s*=\s*remove|sp_after_semi\s*=\s*force|sp_after_semi\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Semi|Add Sp After Semi|Remove Sp After Semi|Force Sp After Semi"
+ValueDefault=add
+
+[Sp After Semi For]
+Category=1
+Description="<html>Add or remove space after ';' in non-empty 'for' statements.<br/><br/>Default: force</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_semi_for\s*=\s*ignore|sp_after_semi_for\s*=\s*add|sp_after_semi_for\s*=\s*remove|sp_after_semi_for\s*=\s*force|sp_after_semi_for\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Semi For|Add Sp After Semi For|Remove Sp After Semi For|Force Sp After Semi For"
+ValueDefault=force
+
+[Sp After Semi For Empty]
+Category=1
+Description="<html>Add or remove space after the final semicolon of an empty part of a for<br/>statement, as in 'for ( ; ; &lt;here&gt; )'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_semi_for_empty\s*=\s*ignore|sp_after_semi_for_empty\s*=\s*add|sp_after_semi_for_empty\s*=\s*remove|sp_after_semi_for_empty\s*=\s*force|sp_after_semi_for_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Semi For Empty|Add Sp After Semi For Empty|Remove Sp After Semi For Empty|Force Sp After Semi For Empty"
+ValueDefault=ignore
+
+[Sp Before Square]
+Category=1
+Description="<html>Add or remove space before '[' (except '[]').</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_square\s*=\s*ignore|sp_before_square\s*=\s*add|sp_before_square\s*=\s*remove|sp_before_square\s*=\s*force|sp_before_square\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Square|Add Sp Before Square|Remove Sp Before Square|Force Sp Before Square"
+ValueDefault=ignore
+
+[Sp Before Vardef Square]
+Category=1
+Description="<html>Add or remove space before '[' for a variable definition.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_vardef_square\s*=\s*ignore|sp_before_vardef_square\s*=\s*add|sp_before_vardef_square\s*=\s*remove|sp_before_vardef_square\s*=\s*force|sp_before_vardef_square\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Vardef Square|Add Sp Before Vardef Square|Remove Sp Before Vardef Square|Force Sp Before Vardef Square"
+ValueDefault=remove
+
+[Sp Before Square Asm Block]
+Category=1
+Description="<html>Add or remove space before '[' for asm block.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_square_asm_block\s*=\s*ignore|sp_before_square_asm_block\s*=\s*add|sp_before_square_asm_block\s*=\s*remove|sp_before_square_asm_block\s*=\s*force|sp_before_square_asm_block\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Square Asm Block|Add Sp Before Square Asm Block|Remove Sp Before Square Asm Block|Force Sp Before Square Asm Block"
+ValueDefault=ignore
+
+[Sp Before Squares]
+Category=1
+Description="<html>Add or remove space before '[]'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_squares\s*=\s*ignore|sp_before_squares\s*=\s*add|sp_before_squares\s*=\s*remove|sp_before_squares\s*=\s*force|sp_before_squares\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Squares|Add Sp Before Squares|Remove Sp Before Squares|Force Sp Before Squares"
+ValueDefault=ignore
+
+[Sp Cpp Before Struct Binding]
+Category=1
+Description="<html>Add or remove space before C++17 structured bindings.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_before_struct_binding\s*=\s*ignore|sp_cpp_before_struct_binding\s*=\s*add|sp_cpp_before_struct_binding\s*=\s*remove|sp_cpp_before_struct_binding\s*=\s*force|sp_cpp_before_struct_binding\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Before Struct Binding|Add Sp Cpp Before Struct Binding|Remove Sp Cpp Before Struct Binding|Force Sp Cpp Before Struct Binding"
+ValueDefault=ignore
+
+[Sp Inside Square]
+Category=1
+Description="<html>Add or remove space inside a non-empty '[' and ']'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_square\s*=\s*ignore|sp_inside_square\s*=\s*add|sp_inside_square\s*=\s*remove|sp_inside_square\s*=\s*force|sp_inside_square\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Square|Add Sp Inside Square|Remove Sp Inside Square|Force Sp Inside Square"
+ValueDefault=ignore
+
+[Sp Inside Square Empty]
+Category=1
+Description="<html>Add or remove space inside '[]'.<br/>if empty.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_square_empty\s*=\s*ignore|sp_inside_square_empty\s*=\s*add|sp_inside_square_empty\s*=\s*remove|sp_inside_square_empty\s*=\s*force|sp_inside_square_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Square Empty|Add Sp Inside Square Empty|Remove Sp Inside Square Empty|Force Sp Inside Square Empty"
+ValueDefault=ignore
+
+[Sp Inside Square Oc Array]
+Category=1
+Description="<html>(OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and<br/>']'. If set to ignore, sp_inside_square is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_square_oc_array\s*=\s*ignore|sp_inside_square_oc_array\s*=\s*add|sp_inside_square_oc_array\s*=\s*remove|sp_inside_square_oc_array\s*=\s*force|sp_inside_square_oc_array\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Square Oc Array|Add Sp Inside Square Oc Array|Remove Sp Inside Square Oc Array|Force Sp Inside Square Oc Array"
+ValueDefault=ignore
+
+[Sp After Comma]
+Category=1
+Description="<html>Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_comma\s*=\s*ignore|sp_after_comma\s*=\s*add|sp_after_comma\s*=\s*remove|sp_after_comma\s*=\s*force|sp_after_comma\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Comma|Add Sp After Comma|Remove Sp After Comma|Force Sp After Comma"
+ValueDefault=ignore
+
+[Sp Before Comma]
+Category=1
+Description="<html>Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_comma\s*=\s*ignore|sp_before_comma\s*=\s*add|sp_before_comma\s*=\s*remove|sp_before_comma\s*=\s*force|sp_before_comma\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Comma|Add Sp Before Comma|Remove Sp Before Comma|Force Sp Before Comma"
+ValueDefault=remove
+
+[Sp After Mdatype Commas]
+Category=1
+Description="<html>(C#, Vala) Add or remove space between ',' and ']' in multidimensional array type<br/>like 'int[,,]'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_mdatype_commas\s*=\s*ignore|sp_after_mdatype_commas\s*=\s*add|sp_after_mdatype_commas\s*=\s*remove|sp_after_mdatype_commas\s*=\s*force|sp_after_mdatype_commas\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Mdatype Commas|Add Sp After Mdatype Commas|Remove Sp After Mdatype Commas|Force Sp After Mdatype Commas"
+ValueDefault=ignore
+
+[Sp Before Mdatype Commas]
+Category=1
+Description="<html>(C#, Vala) Add or remove space between '[' and ',' in multidimensional array type<br/>like 'int[,,]'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_mdatype_commas\s*=\s*ignore|sp_before_mdatype_commas\s*=\s*add|sp_before_mdatype_commas\s*=\s*remove|sp_before_mdatype_commas\s*=\s*force|sp_before_mdatype_commas\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Mdatype Commas|Add Sp Before Mdatype Commas|Remove Sp Before Mdatype Commas|Force Sp Before Mdatype Commas"
+ValueDefault=ignore
+
+[Sp Between Mdatype Commas]
+Category=1
+Description="<html>(C#, Vala) Add or remove space between ',' in multidimensional array type<br/>like 'int[,,]'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_between_mdatype_commas\s*=\s*ignore|sp_between_mdatype_commas\s*=\s*add|sp_between_mdatype_commas\s*=\s*remove|sp_between_mdatype_commas\s*=\s*force|sp_between_mdatype_commas\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Between Mdatype Commas|Add Sp Between Mdatype Commas|Remove Sp Between Mdatype Commas|Force Sp Between Mdatype Commas"
+ValueDefault=ignore
+
+[Sp Paren Comma]
+Category=1
+Description="<html>Add or remove space between an open parenthesis and comma,<br/>i.e. '(,' vs. '( ,'.<br/><br/>Default: force</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_paren_comma\s*=\s*ignore|sp_paren_comma\s*=\s*add|sp_paren_comma\s*=\s*remove|sp_paren_comma\s*=\s*force|sp_paren_comma\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Paren Comma|Add Sp Paren Comma|Remove Sp Paren Comma|Force Sp Paren Comma"
+ValueDefault=force
+
+[Sp Type Colon]
+Category=1
+Description="<html>Add or remove space between a type and ':'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_type_colon\s*=\s*ignore|sp_type_colon\s*=\s*add|sp_type_colon\s*=\s*remove|sp_type_colon\s*=\s*force|sp_type_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Type Colon|Add Sp Type Colon|Remove Sp Type Colon|Force Sp Type Colon"
+ValueDefault=ignore
+
+[Sp After Ellipsis]
+Category=1
+Description="<html>Add or remove space after the variadic '...' when preceded by a<br/>non-punctuator.<br/>The value REMOVE will be overridden with FORCE</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_ellipsis\s*=\s*ignore|sp_after_ellipsis\s*=\s*add|sp_after_ellipsis\s*=\s*remove|sp_after_ellipsis\s*=\s*force|sp_after_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Ellipsis|Add Sp After Ellipsis|Remove Sp After Ellipsis|Force Sp After Ellipsis"
+ValueDefault=ignore
+
+[Sp Before Ellipsis]
+Category=1
+Description="<html>Add or remove space before the variadic '...' when preceded by a<br/>non-punctuator.<br/>The value REMOVE will be overridden with FORCE</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_ellipsis\s*=\s*ignore|sp_before_ellipsis\s*=\s*add|sp_before_ellipsis\s*=\s*remove|sp_before_ellipsis\s*=\s*force|sp_before_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Ellipsis|Add Sp Before Ellipsis|Remove Sp Before Ellipsis|Force Sp Before Ellipsis"
+ValueDefault=ignore
+
+[Sp Type Ellipsis]
+Category=1
+Description="<html>Add or remove space between a type and '...'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_type_ellipsis\s*=\s*ignore|sp_type_ellipsis\s*=\s*add|sp_type_ellipsis\s*=\s*remove|sp_type_ellipsis\s*=\s*force|sp_type_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Type Ellipsis|Add Sp Type Ellipsis|Remove Sp Type Ellipsis|Force Sp Type Ellipsis"
+ValueDefault=ignore
+
+[Sp Ptr Type Ellipsis]
+Category=1
+Description="<html>Add or remove space between a '*' and '...'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_ptr_type_ellipsis\s*=\s*ignore|sp_ptr_type_ellipsis\s*=\s*add|sp_ptr_type_ellipsis\s*=\s*remove|sp_ptr_type_ellipsis\s*=\s*force|sp_ptr_type_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Ptr Type Ellipsis|Add Sp Ptr Type Ellipsis|Remove Sp Ptr Type Ellipsis|Force Sp Ptr Type Ellipsis"
+ValueDefault=ignore
+
+[Sp Paren Ellipsis]
+Category=1
+Description="<html>Add or remove space between ')' and '...'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_paren_ellipsis\s*=\s*ignore|sp_paren_ellipsis\s*=\s*add|sp_paren_ellipsis\s*=\s*remove|sp_paren_ellipsis\s*=\s*force|sp_paren_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Paren Ellipsis|Add Sp Paren Ellipsis|Remove Sp Paren Ellipsis|Force Sp Paren Ellipsis"
+ValueDefault=ignore
+
+[Sp Byref Ellipsis]
+Category=1
+Description="<html>Add or remove space between '&amp;&amp;' and '...'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_byref_ellipsis\s*=\s*ignore|sp_byref_ellipsis\s*=\s*add|sp_byref_ellipsis\s*=\s*remove|sp_byref_ellipsis\s*=\s*force|sp_byref_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Byref Ellipsis|Add Sp Byref Ellipsis|Remove Sp Byref Ellipsis|Force Sp Byref Ellipsis"
+ValueDefault=ignore
+
+[Sp Paren Qualifier]
+Category=1
+Description="<html>Add or remove space between ')' and a qualifier such as 'const'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_paren_qualifier\s*=\s*ignore|sp_paren_qualifier\s*=\s*add|sp_paren_qualifier\s*=\s*remove|sp_paren_qualifier\s*=\s*force|sp_paren_qualifier\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Paren Qualifier|Add Sp Paren Qualifier|Remove Sp Paren Qualifier|Force Sp Paren Qualifier"
+ValueDefault=ignore
+
+[Sp Paren Noexcept]
+Category=1
+Description="<html>Add or remove space between ')' and 'noexcept'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_paren_noexcept\s*=\s*ignore|sp_paren_noexcept\s*=\s*add|sp_paren_noexcept\s*=\s*remove|sp_paren_noexcept\s*=\s*force|sp_paren_noexcept\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Paren Noexcept|Add Sp Paren Noexcept|Remove Sp Paren Noexcept|Force Sp Paren Noexcept"
+ValueDefault=ignore
+
+[Sp After Class Colon]
+Category=1
+Description="<html>Add or remove space after class ':'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_class_colon\s*=\s*ignore|sp_after_class_colon\s*=\s*add|sp_after_class_colon\s*=\s*remove|sp_after_class_colon\s*=\s*force|sp_after_class_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Class Colon|Add Sp After Class Colon|Remove Sp After Class Colon|Force Sp After Class Colon"
+ValueDefault=ignore
+
+[Sp Before Class Colon]
+Category=1
+Description="<html>Add or remove space before class ':'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_class_colon\s*=\s*ignore|sp_before_class_colon\s*=\s*add|sp_before_class_colon\s*=\s*remove|sp_before_class_colon\s*=\s*force|sp_before_class_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Class Colon|Add Sp Before Class Colon|Remove Sp Before Class Colon|Force Sp Before Class Colon"
+ValueDefault=ignore
+
+[Sp After Constr Colon]
+Category=1
+Description="<html>Add or remove space after class constructor ':'.<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_constr_colon\s*=\s*ignore|sp_after_constr_colon\s*=\s*add|sp_after_constr_colon\s*=\s*remove|sp_after_constr_colon\s*=\s*force|sp_after_constr_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Constr Colon|Add Sp After Constr Colon|Remove Sp After Constr Colon|Force Sp After Constr Colon"
+ValueDefault=add
+
+[Sp Before Constr Colon]
+Category=1
+Description="<html>Add or remove space before class constructor ':'.<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_constr_colon\s*=\s*ignore|sp_before_constr_colon\s*=\s*add|sp_before_constr_colon\s*=\s*remove|sp_before_constr_colon\s*=\s*force|sp_before_constr_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Constr Colon|Add Sp Before Constr Colon|Remove Sp Before Constr Colon|Force Sp Before Constr Colon"
+ValueDefault=add
+
+[Sp Before Case Colon]
+Category=1
+Description="<html>Add or remove space before case ':'.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_case_colon\s*=\s*ignore|sp_before_case_colon\s*=\s*add|sp_before_case_colon\s*=\s*remove|sp_before_case_colon\s*=\s*force|sp_before_case_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Case Colon|Add Sp Before Case Colon|Remove Sp Before Case Colon|Force Sp Before Case Colon"
+ValueDefault=remove
+
+[Sp After Operator]
+Category=1
+Description="<html>Add or remove space between 'operator' and operator sign.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_operator\s*=\s*ignore|sp_after_operator\s*=\s*add|sp_after_operator\s*=\s*remove|sp_after_operator\s*=\s*force|sp_after_operator\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Operator|Add Sp After Operator|Remove Sp After Operator|Force Sp After Operator"
+ValueDefault=ignore
+
+[Sp After Operator Sym]
+Category=1
+Description="<html>Add or remove space between the operator symbol and the open parenthesis, as<br/>in 'operator ++('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_operator_sym\s*=\s*ignore|sp_after_operator_sym\s*=\s*add|sp_after_operator_sym\s*=\s*remove|sp_after_operator_sym\s*=\s*force|sp_after_operator_sym\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Operator Sym|Add Sp After Operator Sym|Remove Sp After Operator Sym|Force Sp After Operator Sym"
+ValueDefault=ignore
+
+[Sp After Operator Sym Empty]
+Category=1
+Description="<html>Overrides sp_after_operator_sym when the operator has no arguments, as in<br/>'operator *()'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_operator_sym_empty\s*=\s*ignore|sp_after_operator_sym_empty\s*=\s*add|sp_after_operator_sym_empty\s*=\s*remove|sp_after_operator_sym_empty\s*=\s*force|sp_after_operator_sym_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Operator Sym Empty|Add Sp After Operator Sym Empty|Remove Sp After Operator Sym Empty|Force Sp After Operator Sym Empty"
+ValueDefault=ignore
+
+[Sp After Cast]
+Category=1
+Description="<html>Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or<br/>'(int)a' vs. '(int) a'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_cast\s*=\s*ignore|sp_after_cast\s*=\s*add|sp_after_cast\s*=\s*remove|sp_after_cast\s*=\s*force|sp_after_cast\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Cast|Add Sp After Cast|Remove Sp After Cast|Force Sp After Cast"
+ValueDefault=ignore
+
+[Sp Inside Paren Cast]
+Category=1
+Description="<html>Add or remove spaces inside cast parentheses.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_paren_cast\s*=\s*ignore|sp_inside_paren_cast\s*=\s*add|sp_inside_paren_cast\s*=\s*remove|sp_inside_paren_cast\s*=\s*force|sp_inside_paren_cast\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Paren Cast|Add Sp Inside Paren Cast|Remove Sp Inside Paren Cast|Force Sp Inside Paren Cast"
+ValueDefault=ignore
+
+[Sp Cpp Cast Paren]
+Category=1
+Description="<html>Add or remove space between the type and open parenthesis in a C++ cast,<br/>i.e. 'int(exp)' vs. 'int (exp)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_cast_paren\s*=\s*ignore|sp_cpp_cast_paren\s*=\s*add|sp_cpp_cast_paren\s*=\s*remove|sp_cpp_cast_paren\s*=\s*force|sp_cpp_cast_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Cast Paren|Add Sp Cpp Cast Paren|Remove Sp Cpp Cast Paren|Force Sp Cpp Cast Paren"
+ValueDefault=ignore
+
+[Sp Sizeof Paren]
+Category=1
+Description="<html>Add or remove space between 'sizeof' and '('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_sizeof_paren\s*=\s*ignore|sp_sizeof_paren\s*=\s*add|sp_sizeof_paren\s*=\s*remove|sp_sizeof_paren\s*=\s*force|sp_sizeof_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Sizeof Paren|Add Sp Sizeof Paren|Remove Sp Sizeof Paren|Force Sp Sizeof Paren"
+ValueDefault=ignore
+
+[Sp Sizeof Ellipsis]
+Category=1
+Description="<html>Add or remove space between 'sizeof' and '...'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_sizeof_ellipsis\s*=\s*ignore|sp_sizeof_ellipsis\s*=\s*add|sp_sizeof_ellipsis\s*=\s*remove|sp_sizeof_ellipsis\s*=\s*force|sp_sizeof_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Sizeof Ellipsis|Add Sp Sizeof Ellipsis|Remove Sp Sizeof Ellipsis|Force Sp Sizeof Ellipsis"
+ValueDefault=ignore
+
+[Sp Sizeof Ellipsis Paren]
+Category=1
+Description="<html>Add or remove space between 'sizeof...' and '('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_sizeof_ellipsis_paren\s*=\s*ignore|sp_sizeof_ellipsis_paren\s*=\s*add|sp_sizeof_ellipsis_paren\s*=\s*remove|sp_sizeof_ellipsis_paren\s*=\s*force|sp_sizeof_ellipsis_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Sizeof Ellipsis Paren|Add Sp Sizeof Ellipsis Paren|Remove Sp Sizeof Ellipsis Paren|Force Sp Sizeof Ellipsis Paren"
+ValueDefault=ignore
+
+[Sp Ellipsis Parameter Pack]
+Category=1
+Description="<html>Add or remove space between '...' and a parameter pack.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_ellipsis_parameter_pack\s*=\s*ignore|sp_ellipsis_parameter_pack\s*=\s*add|sp_ellipsis_parameter_pack\s*=\s*remove|sp_ellipsis_parameter_pack\s*=\s*force|sp_ellipsis_parameter_pack\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Ellipsis Parameter Pack|Add Sp Ellipsis Parameter Pack|Remove Sp Ellipsis Parameter Pack|Force Sp Ellipsis Parameter Pack"
+ValueDefault=ignore
+
+[Sp Parameter Pack Ellipsis]
+Category=1
+Description="<html>Add or remove space between a parameter pack and '...'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_parameter_pack_ellipsis\s*=\s*ignore|sp_parameter_pack_ellipsis\s*=\s*add|sp_parameter_pack_ellipsis\s*=\s*remove|sp_parameter_pack_ellipsis\s*=\s*force|sp_parameter_pack_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Parameter Pack Ellipsis|Add Sp Parameter Pack Ellipsis|Remove Sp Parameter Pack Ellipsis|Force Sp Parameter Pack Ellipsis"
+ValueDefault=ignore
+
+[Sp Decltype Paren]
+Category=1
+Description="<html>Add or remove space between 'decltype' and '('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_decltype_paren\s*=\s*ignore|sp_decltype_paren\s*=\s*add|sp_decltype_paren\s*=\s*remove|sp_decltype_paren\s*=\s*force|sp_decltype_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Decltype Paren|Add Sp Decltype Paren|Remove Sp Decltype Paren|Force Sp Decltype Paren"
+ValueDefault=ignore
+
+[Sp After Tag]
+Category=1
+Description="<html>(Pawn) Add or remove space after the tag keyword.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_tag\s*=\s*ignore|sp_after_tag\s*=\s*add|sp_after_tag\s*=\s*remove|sp_after_tag\s*=\s*force|sp_after_tag\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Tag|Add Sp After Tag|Remove Sp After Tag|Force Sp After Tag"
+ValueDefault=ignore
+
+[Sp Inside Braces Enum]
+Category=1
+Description="<html>Add or remove space inside enum '{' and '}'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_braces_enum\s*=\s*ignore|sp_inside_braces_enum\s*=\s*add|sp_inside_braces_enum\s*=\s*remove|sp_inside_braces_enum\s*=\s*force|sp_inside_braces_enum\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Braces Enum|Add Sp Inside Braces Enum|Remove Sp Inside Braces Enum|Force Sp Inside Braces Enum"
+ValueDefault=ignore
+
+[Sp Inside Braces Struct]
+Category=1
+Description="<html>Add or remove space inside struct/union '{' and '}'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_braces_struct\s*=\s*ignore|sp_inside_braces_struct\s*=\s*add|sp_inside_braces_struct\s*=\s*remove|sp_inside_braces_struct\s*=\s*force|sp_inside_braces_struct\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Braces Struct|Add Sp Inside Braces Struct|Remove Sp Inside Braces Struct|Force Sp Inside Braces Struct"
+ValueDefault=ignore
+
+[Sp Inside Braces Oc Dict]
+Category=1
+Description="<html>(OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_braces_oc_dict\s*=\s*ignore|sp_inside_braces_oc_dict\s*=\s*add|sp_inside_braces_oc_dict\s*=\s*remove|sp_inside_braces_oc_dict\s*=\s*force|sp_inside_braces_oc_dict\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Braces Oc Dict|Add Sp Inside Braces Oc Dict|Remove Sp Inside Braces Oc Dict|Force Sp Inside Braces Oc Dict"
+ValueDefault=ignore
+
+[Sp After Type Brace Init Lst Open]
+Category=1
+Description="<html>Add or remove space after open brace in an unnamed temporary<br/>direct-list-initialization<br/>if statement is a brace_init_lst<br/>works only if sp_brace_brace is set to ignore.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_type_brace_init_lst_open\s*=\s*ignore|sp_after_type_brace_init_lst_open\s*=\s*add|sp_after_type_brace_init_lst_open\s*=\s*remove|sp_after_type_brace_init_lst_open\s*=\s*force|sp_after_type_brace_init_lst_open\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Type Brace Init Lst Open|Add Sp After Type Brace Init Lst Open|Remove Sp After Type Brace Init Lst Open|Force Sp After Type Brace Init Lst Open"
+ValueDefault=ignore
+
+[Sp Before Type Brace Init Lst Close]
+Category=1
+Description="<html>Add or remove space before close brace in an unnamed temporary<br/>direct-list-initialization<br/>if statement is a brace_init_lst<br/>works only if sp_brace_brace is set to ignore.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_type_brace_init_lst_close\s*=\s*ignore|sp_before_type_brace_init_lst_close\s*=\s*add|sp_before_type_brace_init_lst_close\s*=\s*remove|sp_before_type_brace_init_lst_close\s*=\s*force|sp_before_type_brace_init_lst_close\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Type Brace Init Lst Close|Add Sp Before Type Brace Init Lst Close|Remove Sp Before Type Brace Init Lst Close|Force Sp Before Type Brace Init Lst Close"
+ValueDefault=ignore
+
+[Sp Inside Type Brace Init Lst]
+Category=1
+Description="<html>Add or remove space inside an unnamed temporary direct-list-initialization<br/>if statement is a brace_init_lst<br/>works only if sp_brace_brace is set to ignore<br/>works only if sp_before_type_brace_init_lst_close is set to ignore.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_type_brace_init_lst\s*=\s*ignore|sp_inside_type_brace_init_lst\s*=\s*add|sp_inside_type_brace_init_lst\s*=\s*remove|sp_inside_type_brace_init_lst\s*=\s*force|sp_inside_type_brace_init_lst\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Type Brace Init Lst|Add Sp Inside Type Brace Init Lst|Remove Sp Inside Type Brace Init Lst|Force Sp Inside Type Brace Init Lst"
+ValueDefault=ignore
+
+[Sp Inside Braces]
+Category=1
+Description="<html>Add or remove space inside '{' and '}'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_braces\s*=\s*ignore|sp_inside_braces\s*=\s*add|sp_inside_braces\s*=\s*remove|sp_inside_braces\s*=\s*force|sp_inside_braces\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Braces|Add Sp Inside Braces|Remove Sp Inside Braces|Force Sp Inside Braces"
+ValueDefault=ignore
+
+[Sp Inside Braces Empty]
+Category=1
+Description="<html>Add or remove space inside '{}'.<br/>if empty.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_braces_empty\s*=\s*ignore|sp_inside_braces_empty\s*=\s*add|sp_inside_braces_empty\s*=\s*remove|sp_inside_braces_empty\s*=\s*force|sp_inside_braces_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Braces Empty|Add Sp Inside Braces Empty|Remove Sp Inside Braces Empty|Force Sp Inside Braces Empty"
+ValueDefault=ignore
+
+[Sp Trailing Return]
+Category=1
+Description="<html>Add or remove space around trailing return operator '-&gt;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_trailing_return\s*=\s*ignore|sp_trailing_return\s*=\s*add|sp_trailing_return\s*=\s*remove|sp_trailing_return\s*=\s*force|sp_trailing_return\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Trailing Return|Add Sp Trailing Return|Remove Sp Trailing Return|Force Sp Trailing Return"
+ValueDefault=ignore
+
+[Sp Type Func]
+Category=1
+Description="<html>Add or remove space between return type and function name. A minimum of 1<br/>is forced except for pointer return types.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_type_func\s*=\s*ignore|sp_type_func\s*=\s*add|sp_type_func\s*=\s*remove|sp_type_func\s*=\s*force|sp_type_func\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Type Func|Add Sp Type Func|Remove Sp Type Func|Force Sp Type Func"
+ValueDefault=ignore
+
+[Sp Type Brace Init Lst]
+Category=1
+Description="<html>Add or remove space between type and open brace of an unnamed temporary<br/>direct-list-initialization.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_type_brace_init_lst\s*=\s*ignore|sp_type_brace_init_lst\s*=\s*add|sp_type_brace_init_lst\s*=\s*remove|sp_type_brace_init_lst\s*=\s*force|sp_type_brace_init_lst\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Type Brace Init Lst|Add Sp Type Brace Init Lst|Remove Sp Type Brace Init Lst|Force Sp Type Brace Init Lst"
+ValueDefault=ignore
+
+[Sp Func Proto Paren]
+Category=1
+Description="<html>Add or remove space between function name and '(' on function declaration.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_proto_paren\s*=\s*ignore|sp_func_proto_paren\s*=\s*add|sp_func_proto_paren\s*=\s*remove|sp_func_proto_paren\s*=\s*force|sp_func_proto_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Proto Paren|Add Sp Func Proto Paren|Remove Sp Func Proto Paren|Force Sp Func Proto Paren"
+ValueDefault=ignore
+
+[Sp Func Proto Paren Empty]
+Category=1
+Description="<html>Add or remove space between function name and '()' on function declaration<br/>if empty.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_proto_paren_empty\s*=\s*ignore|sp_func_proto_paren_empty\s*=\s*add|sp_func_proto_paren_empty\s*=\s*remove|sp_func_proto_paren_empty\s*=\s*force|sp_func_proto_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Proto Paren Empty|Add Sp Func Proto Paren Empty|Remove Sp Func Proto Paren Empty|Force Sp Func Proto Paren Empty"
+ValueDefault=ignore
+
+[Sp Func Type Paren]
+Category=1
+Description="<html>Add or remove space between function name and '(' with a typedef specifier.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_type_paren\s*=\s*ignore|sp_func_type_paren\s*=\s*add|sp_func_type_paren\s*=\s*remove|sp_func_type_paren\s*=\s*force|sp_func_type_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Type Paren|Add Sp Func Type Paren|Remove Sp Func Type Paren|Force Sp Func Type Paren"
+ValueDefault=ignore
+
+[Sp Func Def Paren]
+Category=1
+Description="<html>Add or remove space between alias name and '(' of a non-pointer function type typedef.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_def_paren\s*=\s*ignore|sp_func_def_paren\s*=\s*add|sp_func_def_paren\s*=\s*remove|sp_func_def_paren\s*=\s*force|sp_func_def_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Def Paren|Add Sp Func Def Paren|Remove Sp Func Def Paren|Force Sp Func Def Paren"
+ValueDefault=ignore
+
+[Sp Func Def Paren Empty]
+Category=1
+Description="<html>Add or remove space between function name and '()' on function definition<br/>if empty.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_def_paren_empty\s*=\s*ignore|sp_func_def_paren_empty\s*=\s*add|sp_func_def_paren_empty\s*=\s*remove|sp_func_def_paren_empty\s*=\s*force|sp_func_def_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Def Paren Empty|Add Sp Func Def Paren Empty|Remove Sp Func Def Paren Empty|Force Sp Func Def Paren Empty"
+ValueDefault=ignore
+
+[Sp Inside Fparens]
+Category=1
+Description="<html>Add or remove space inside empty function '()'.<br/>Overrides sp_after_angle unless use_sp_after_angle_always is set to true.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_fparens\s*=\s*ignore|sp_inside_fparens\s*=\s*add|sp_inside_fparens\s*=\s*remove|sp_inside_fparens\s*=\s*force|sp_inside_fparens\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Fparens|Add Sp Inside Fparens|Remove Sp Inside Fparens|Force Sp Inside Fparens"
+ValueDefault=ignore
+
+[Sp Inside Fparen]
+Category=1
+Description="<html>Add or remove space inside function '(' and ')'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_fparen\s*=\s*ignore|sp_inside_fparen\s*=\s*add|sp_inside_fparen\s*=\s*remove|sp_inside_fparen\s*=\s*force|sp_inside_fparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Fparen|Add Sp Inside Fparen|Remove Sp Inside Fparen|Force Sp Inside Fparen"
+ValueDefault=ignore
+
+[Sp Func Call User Inside Rparen]
+Category=1
+Description="<html>Add or remove space inside user functor '(' and ')'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_call_user_inside_rparen\s*=\s*ignore|sp_func_call_user_inside_rparen\s*=\s*add|sp_func_call_user_inside_rparen\s*=\s*remove|sp_func_call_user_inside_rparen\s*=\s*force|sp_func_call_user_inside_rparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Call User Inside Rparen|Add Sp Func Call User Inside Rparen|Remove Sp Func Call User Inside Rparen|Force Sp Func Call User Inside Rparen"
+ValueDefault=ignore
+
+[Sp Inside Rparens]
+Category=1
+Description="<html>Add or remove space inside empty functor '()'.<br/>Overrides sp_after_angle unless use_sp_after_angle_always is set to true.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_rparens\s*=\s*ignore|sp_inside_rparens\s*=\s*add|sp_inside_rparens\s*=\s*remove|sp_inside_rparens\s*=\s*force|sp_inside_rparens\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Rparens|Add Sp Inside Rparens|Remove Sp Inside Rparens|Force Sp Inside Rparens"
+ValueDefault=ignore
+
+[Sp Inside Rparen]
+Category=1
+Description="<html>Add or remove space inside functor '(' and ')'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_rparen\s*=\s*ignore|sp_inside_rparen\s*=\s*add|sp_inside_rparen\s*=\s*remove|sp_inside_rparen\s*=\s*force|sp_inside_rparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Rparen|Add Sp Inside Rparen|Remove Sp Inside Rparen|Force Sp Inside Rparen"
+ValueDefault=ignore
+
+[Sp Inside Tparen]
+Category=1
+Description="<html>Add or remove space inside the first parentheses in a function type, as in<br/>'void (*x)(...)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_tparen\s*=\s*ignore|sp_inside_tparen\s*=\s*add|sp_inside_tparen\s*=\s*remove|sp_inside_tparen\s*=\s*force|sp_inside_tparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Tparen|Add Sp Inside Tparen|Remove Sp Inside Tparen|Force Sp Inside Tparen"
+ValueDefault=ignore
+
+[Sp After Tparen Close]
+Category=1
+Description="<html>Add or remove space between the ')' and '(' in a function type, as in<br/>'void (*x)(...)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_tparen_close\s*=\s*ignore|sp_after_tparen_close\s*=\s*add|sp_after_tparen_close\s*=\s*remove|sp_after_tparen_close\s*=\s*force|sp_after_tparen_close\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Tparen Close|Add Sp After Tparen Close|Remove Sp After Tparen Close|Force Sp After Tparen Close"
+ValueDefault=ignore
+
+[Sp Square Fparen]
+Category=1
+Description="<html>Add or remove space between ']' and '(' when part of a function call.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_square_fparen\s*=\s*ignore|sp_square_fparen\s*=\s*add|sp_square_fparen\s*=\s*remove|sp_square_fparen\s*=\s*force|sp_square_fparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Square Fparen|Add Sp Square Fparen|Remove Sp Square Fparen|Force Sp Square Fparen"
+ValueDefault=ignore
+
+[Sp Fparen Brace]
+Category=1
+Description="<html>Add or remove space between ')' and '{' of function.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_fparen_brace\s*=\s*ignore|sp_fparen_brace\s*=\s*add|sp_fparen_brace\s*=\s*remove|sp_fparen_brace\s*=\s*force|sp_fparen_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Fparen Brace|Add Sp Fparen Brace|Remove Sp Fparen Brace|Force Sp Fparen Brace"
+ValueDefault=ignore
+
+[Sp Fparen Brace Initializer]
+Category=1
+Description="<html>Add or remove space between ')' and '{' of a function call in object<br/>initialization.<br/><br/>Overrides sp_fparen_brace.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_fparen_brace_initializer\s*=\s*ignore|sp_fparen_brace_initializer\s*=\s*add|sp_fparen_brace_initializer\s*=\s*remove|sp_fparen_brace_initializer\s*=\s*force|sp_fparen_brace_initializer\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Fparen Brace Initializer|Add Sp Fparen Brace Initializer|Remove Sp Fparen Brace Initializer|Force Sp Fparen Brace Initializer"
+ValueDefault=ignore
+
+[Sp Fparen Dbrace]
+Category=1
+Description="<html>(Java) Add or remove space between ')' and '{{' of double brace initializer.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_fparen_dbrace\s*=\s*ignore|sp_fparen_dbrace\s*=\s*add|sp_fparen_dbrace\s*=\s*remove|sp_fparen_dbrace\s*=\s*force|sp_fparen_dbrace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Fparen Dbrace|Add Sp Fparen Dbrace|Remove Sp Fparen Dbrace|Force Sp Fparen Dbrace"
+ValueDefault=ignore
+
+[Sp Func Call Paren]
+Category=1
+Description="<html>Add or remove space between function name and '(' on function calls.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_call_paren\s*=\s*ignore|sp_func_call_paren\s*=\s*add|sp_func_call_paren\s*=\s*remove|sp_func_call_paren\s*=\s*force|sp_func_call_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Call Paren|Add Sp Func Call Paren|Remove Sp Func Call Paren|Force Sp Func Call Paren"
+ValueDefault=ignore
+
+[Sp Func Call Paren Empty]
+Category=1
+Description="<html>Add or remove space between function name and '()' on function calls without<br/>parameters. If set to ignore (the default), sp_func_call_paren is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_call_paren_empty\s*=\s*ignore|sp_func_call_paren_empty\s*=\s*add|sp_func_call_paren_empty\s*=\s*remove|sp_func_call_paren_empty\s*=\s*force|sp_func_call_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Call Paren Empty|Add Sp Func Call Paren Empty|Remove Sp Func Call Paren Empty|Force Sp Func Call Paren Empty"
+ValueDefault=ignore
+
+[Sp Func Call User Paren]
+Category=1
+Description="<html>Add or remove space between the user function name and '(' on function<br/>calls. You need to set a keyword to be a user function in the config file,<br/>like:<br/> set func_call_user tr _ i18n</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_call_user_paren\s*=\s*ignore|sp_func_call_user_paren\s*=\s*add|sp_func_call_user_paren\s*=\s*remove|sp_func_call_user_paren\s*=\s*force|sp_func_call_user_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Call User Paren|Add Sp Func Call User Paren|Remove Sp Func Call User Paren|Force Sp Func Call User Paren"
+ValueDefault=ignore
+
+[Sp Func Call User Inside Fparen]
+Category=1
+Description="<html>Add or remove space inside user function '(' and ')'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_call_user_inside_fparen\s*=\s*ignore|sp_func_call_user_inside_fparen\s*=\s*add|sp_func_call_user_inside_fparen\s*=\s*remove|sp_func_call_user_inside_fparen\s*=\s*force|sp_func_call_user_inside_fparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Call User Inside Fparen|Add Sp Func Call User Inside Fparen|Remove Sp Func Call User Inside Fparen|Force Sp Func Call User Inside Fparen"
+ValueDefault=ignore
+
+[Sp Func Call User Paren Paren]
+Category=1
+Description="<html>Add or remove space between nested parentheses with user functions,<br/>i.e. '((' vs. '( ('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_call_user_paren_paren\s*=\s*ignore|sp_func_call_user_paren_paren\s*=\s*add|sp_func_call_user_paren_paren\s*=\s*remove|sp_func_call_user_paren_paren\s*=\s*force|sp_func_call_user_paren_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Call User Paren Paren|Add Sp Func Call User Paren Paren|Remove Sp Func Call User Paren Paren|Force Sp Func Call User Paren Paren"
+ValueDefault=ignore
+
+[Sp Func Class Paren]
+Category=1
+Description="<html>Add or remove space between a constructor/destructor and the open<br/>parenthesis.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_class_paren\s*=\s*ignore|sp_func_class_paren\s*=\s*add|sp_func_class_paren\s*=\s*remove|sp_func_class_paren\s*=\s*force|sp_func_class_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Class Paren|Add Sp Func Class Paren|Remove Sp Func Class Paren|Force Sp Func Class Paren"
+ValueDefault=ignore
+
+[Sp Func Class Paren Empty]
+Category=1
+Description="<html>Add or remove space between a constructor without parameters or destructor<br/>and '()'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_class_paren_empty\s*=\s*ignore|sp_func_class_paren_empty\s*=\s*add|sp_func_class_paren_empty\s*=\s*remove|sp_func_class_paren_empty\s*=\s*force|sp_func_class_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Class Paren Empty|Add Sp Func Class Paren Empty|Remove Sp Func Class Paren Empty|Force Sp Func Class Paren Empty"
+ValueDefault=ignore
+
+[Sp Return]
+Category=1
+Description="<html>Add or remove space after 'return'.<br/><br/>Default: force</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_return\s*=\s*ignore|sp_return\s*=\s*add|sp_return\s*=\s*remove|sp_return\s*=\s*force|sp_return\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Return|Add Sp Return|Remove Sp Return|Force Sp Return"
+ValueDefault=force
+
+[Sp Return Paren]
+Category=1
+Description="<html>Add or remove space between 'return' and '('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_return_paren\s*=\s*ignore|sp_return_paren\s*=\s*add|sp_return_paren\s*=\s*remove|sp_return_paren\s*=\s*force|sp_return_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Return Paren|Add Sp Return Paren|Remove Sp Return Paren|Force Sp Return Paren"
+ValueDefault=ignore
+
+[Sp Return Brace]
+Category=1
+Description="<html>Add or remove space between 'return' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_return_brace\s*=\s*ignore|sp_return_brace\s*=\s*add|sp_return_brace\s*=\s*remove|sp_return_brace\s*=\s*force|sp_return_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Return Brace|Add Sp Return Brace|Remove Sp Return Brace|Force Sp Return Brace"
+ValueDefault=ignore
+
+[Sp Attribute Paren]
+Category=1
+Description="<html>Add or remove space between '__attribute__' and '('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_attribute_paren\s*=\s*ignore|sp_attribute_paren\s*=\s*add|sp_attribute_paren\s*=\s*remove|sp_attribute_paren\s*=\s*force|sp_attribute_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Attribute Paren|Add Sp Attribute Paren|Remove Sp Attribute Paren|Force Sp Attribute Paren"
+ValueDefault=ignore
+
+[Sp Defined Paren]
+Category=1
+Description="<html>Add or remove space between 'defined' and '(' in '#if defined (FOO)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_defined_paren\s*=\s*ignore|sp_defined_paren\s*=\s*add|sp_defined_paren\s*=\s*remove|sp_defined_paren\s*=\s*force|sp_defined_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Defined Paren|Add Sp Defined Paren|Remove Sp Defined Paren|Force Sp Defined Paren"
+ValueDefault=ignore
+
+[Sp Throw Paren]
+Category=1
+Description="<html>Add or remove space between 'throw' and '(' in 'throw (something)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_throw_paren\s*=\s*ignore|sp_throw_paren\s*=\s*add|sp_throw_paren\s*=\s*remove|sp_throw_paren\s*=\s*force|sp_throw_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Throw Paren|Add Sp Throw Paren|Remove Sp Throw Paren|Force Sp Throw Paren"
+ValueDefault=ignore
+
+[Sp After Throw]
+Category=1
+Description="<html>Add or remove space between 'throw' and anything other than '(' as in<br/>'@throw [...];'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_throw\s*=\s*ignore|sp_after_throw\s*=\s*add|sp_after_throw\s*=\s*remove|sp_after_throw\s*=\s*force|sp_after_throw\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Throw|Add Sp After Throw|Remove Sp After Throw|Force Sp After Throw"
+ValueDefault=ignore
+
+[Sp Catch Paren]
+Category=1
+Description="<html>Add or remove space between 'catch' and '(' in 'catch (something) { }'.<br/>If set to ignore, sp_before_sparen is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_catch_paren\s*=\s*ignore|sp_catch_paren\s*=\s*add|sp_catch_paren\s*=\s*remove|sp_catch_paren\s*=\s*force|sp_catch_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Catch Paren|Add Sp Catch Paren|Remove Sp Catch Paren|Force Sp Catch Paren"
+ValueDefault=ignore
+
+[Sp Oc Catch Paren]
+Category=1
+Description="<html>(OC) Add or remove space between '@catch' and '('<br/>in '@catch (something) { }'. If set to ignore, sp_catch_paren is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_oc_catch_paren\s*=\s*ignore|sp_oc_catch_paren\s*=\s*add|sp_oc_catch_paren\s*=\s*remove|sp_oc_catch_paren\s*=\s*force|sp_oc_catch_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Oc Catch Paren|Add Sp Oc Catch Paren|Remove Sp Oc Catch Paren|Force Sp Oc Catch Paren"
+ValueDefault=ignore
+
+[Sp Before Oc Proto List]
+Category=1
+Description="<html>(OC) Add or remove space before Objective-C protocol list<br/>as in '@protocol Protocol&lt;here&gt;&lt;Protocol_A&gt;' or '@interface MyClass : NSObject&lt;here&gt;&lt;MyProtocol&gt;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_oc_proto_list\s*=\s*ignore|sp_before_oc_proto_list\s*=\s*add|sp_before_oc_proto_list\s*=\s*remove|sp_before_oc_proto_list\s*=\s*force|sp_before_oc_proto_list\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Oc Proto List|Add Sp Before Oc Proto List|Remove Sp Before Oc Proto List|Force Sp Before Oc Proto List"
+ValueDefault=ignore
+
+[Sp Oc Classname Paren]
+Category=1
+Description="<html>(OC) Add or remove space between class name and '('<br/>in '@interface className(categoryName)&lt;ProtocolName&gt;:BaseClass'</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_oc_classname_paren\s*=\s*ignore|sp_oc_classname_paren\s*=\s*add|sp_oc_classname_paren\s*=\s*remove|sp_oc_classname_paren\s*=\s*force|sp_oc_classname_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Oc Classname Paren|Add Sp Oc Classname Paren|Remove Sp Oc Classname Paren|Force Sp Oc Classname Paren"
+ValueDefault=ignore
+
+[Sp Version Paren]
+Category=1
+Description="<html>(D) Add or remove space between 'version' and '('<br/>in 'version (something) { }'. If set to ignore, sp_before_sparen is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_version_paren\s*=\s*ignore|sp_version_paren\s*=\s*add|sp_version_paren\s*=\s*remove|sp_version_paren\s*=\s*force|sp_version_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Version Paren|Add Sp Version Paren|Remove Sp Version Paren|Force Sp Version Paren"
+ValueDefault=ignore
+
+[Sp Scope Paren]
+Category=1
+Description="<html>(D) Add or remove space between 'scope' and '('<br/>in 'scope (something) { }'. If set to ignore, sp_before_sparen is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_scope_paren\s*=\s*ignore|sp_scope_paren\s*=\s*add|sp_scope_paren\s*=\s*remove|sp_scope_paren\s*=\s*force|sp_scope_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Scope Paren|Add Sp Scope Paren|Remove Sp Scope Paren|Force Sp Scope Paren"
+ValueDefault=ignore
+
+[Sp Super Paren]
+Category=1
+Description="<html>Add or remove space between 'super' and '(' in 'super (something)'.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_super_paren\s*=\s*ignore|sp_super_paren\s*=\s*add|sp_super_paren\s*=\s*remove|sp_super_paren\s*=\s*force|sp_super_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Super Paren|Add Sp Super Paren|Remove Sp Super Paren|Force Sp Super Paren"
+ValueDefault=remove
+
+[Sp This Paren]
+Category=1
+Description="<html>Add or remove space between 'this' and '(' in 'this (something)'.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_this_paren\s*=\s*ignore|sp_this_paren\s*=\s*add|sp_this_paren\s*=\s*remove|sp_this_paren\s*=\s*force|sp_this_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp This Paren|Add Sp This Paren|Remove Sp This Paren|Force Sp This Paren"
+ValueDefault=remove
+
+[Sp Macro]
+Category=1
+Description="<html>Add or remove space between a macro name and its definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_macro\s*=\s*ignore|sp_macro\s*=\s*add|sp_macro\s*=\s*remove|sp_macro\s*=\s*force|sp_macro\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Macro|Add Sp Macro|Remove Sp Macro|Force Sp Macro"
+ValueDefault=ignore
+
+[Sp Macro Func]
+Category=1
+Description="<html>Add or remove space between a macro function ')' and its definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_macro_func\s*=\s*ignore|sp_macro_func\s*=\s*add|sp_macro_func\s*=\s*remove|sp_macro_func\s*=\s*force|sp_macro_func\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Macro Func|Add Sp Macro Func|Remove Sp Macro Func|Force Sp Macro Func"
+ValueDefault=ignore
+
+[Sp Else Brace]
+Category=1
+Description="<html>Add or remove space between 'else' and '{' if on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_else_brace\s*=\s*ignore|sp_else_brace\s*=\s*add|sp_else_brace\s*=\s*remove|sp_else_brace\s*=\s*force|sp_else_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Else Brace|Add Sp Else Brace|Remove Sp Else Brace|Force Sp Else Brace"
+ValueDefault=ignore
+
+[Sp Brace Else]
+Category=1
+Description="<html>Add or remove space between '}' and 'else' if on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_brace_else\s*=\s*ignore|sp_brace_else\s*=\s*add|sp_brace_else\s*=\s*remove|sp_brace_else\s*=\s*force|sp_brace_else\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Brace Else|Add Sp Brace Else|Remove Sp Brace Else|Force Sp Brace Else"
+ValueDefault=ignore
+
+[Sp Brace Typedef]
+Category=1
+Description="<html>Add or remove space between '}' and the name of a typedef on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_brace_typedef\s*=\s*ignore|sp_brace_typedef\s*=\s*add|sp_brace_typedef\s*=\s*remove|sp_brace_typedef\s*=\s*force|sp_brace_typedef\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Brace Typedef|Add Sp Brace Typedef|Remove Sp Brace Typedef|Force Sp Brace Typedef"
+ValueDefault=ignore
+
+[Sp Catch Brace]
+Category=1
+Description="<html>Add or remove space before the '{' of a 'catch' statement, if the '{' and<br/>'catch' are on the same line, as in 'catch (decl) &lt;here&gt; {'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_catch_brace\s*=\s*ignore|sp_catch_brace\s*=\s*add|sp_catch_brace\s*=\s*remove|sp_catch_brace\s*=\s*force|sp_catch_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Catch Brace|Add Sp Catch Brace|Remove Sp Catch Brace|Force Sp Catch Brace"
+ValueDefault=ignore
+
+[Sp Oc Catch Brace]
+Category=1
+Description="<html>(OC) Add or remove space before the '{' of a '@catch' statement, if the '{'<br/>and '@catch' are on the same line, as in '@catch (decl) &lt;here&gt; {'.<br/>If set to ignore, sp_catch_brace is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_oc_catch_brace\s*=\s*ignore|sp_oc_catch_brace\s*=\s*add|sp_oc_catch_brace\s*=\s*remove|sp_oc_catch_brace\s*=\s*force|sp_oc_catch_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Oc Catch Brace|Add Sp Oc Catch Brace|Remove Sp Oc Catch Brace|Force Sp Oc Catch Brace"
+ValueDefault=ignore
+
+[Sp Brace Catch]
+Category=1
+Description="<html>Add or remove space between '}' and 'catch' if on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_brace_catch\s*=\s*ignore|sp_brace_catch\s*=\s*add|sp_brace_catch\s*=\s*remove|sp_brace_catch\s*=\s*force|sp_brace_catch\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Brace Catch|Add Sp Brace Catch|Remove Sp Brace Catch|Force Sp Brace Catch"
+ValueDefault=ignore
+
+[Sp Oc Brace Catch]
+Category=1
+Description="<html>(OC) Add or remove space between '}' and '@catch' if on the same line.<br/>If set to ignore, sp_brace_catch is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_oc_brace_catch\s*=\s*ignore|sp_oc_brace_catch\s*=\s*add|sp_oc_brace_catch\s*=\s*remove|sp_oc_brace_catch\s*=\s*force|sp_oc_brace_catch\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Oc Brace Catch|Add Sp Oc Brace Catch|Remove Sp Oc Brace Catch|Force Sp Oc Brace Catch"
+ValueDefault=ignore
+
+[Sp Finally Brace]
+Category=1
+Description="<html>Add or remove space between 'finally' and '{' if on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_finally_brace\s*=\s*ignore|sp_finally_brace\s*=\s*add|sp_finally_brace\s*=\s*remove|sp_finally_brace\s*=\s*force|sp_finally_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Finally Brace|Add Sp Finally Brace|Remove Sp Finally Brace|Force Sp Finally Brace"
+ValueDefault=ignore
+
+[Sp Brace Finally]
+Category=1
+Description="<html>Add or remove space between '}' and 'finally' if on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_brace_finally\s*=\s*ignore|sp_brace_finally\s*=\s*add|sp_brace_finally\s*=\s*remove|sp_brace_finally\s*=\s*force|sp_brace_finally\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Brace Finally|Add Sp Brace Finally|Remove Sp Brace Finally|Force Sp Brace Finally"
+ValueDefault=ignore
+
+[Sp Try Brace]
+Category=1
+Description="<html>Add or remove space between 'try' and '{' if on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_try_brace\s*=\s*ignore|sp_try_brace\s*=\s*add|sp_try_brace\s*=\s*remove|sp_try_brace\s*=\s*force|sp_try_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Try Brace|Add Sp Try Brace|Remove Sp Try Brace|Force Sp Try Brace"
+ValueDefault=ignore
+
+[Sp Getset Brace]
+Category=1
+Description="<html>Add or remove space between get/set and '{' if on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_getset_brace\s*=\s*ignore|sp_getset_brace\s*=\s*add|sp_getset_brace\s*=\s*remove|sp_getset_brace\s*=\s*force|sp_getset_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Getset Brace|Add Sp Getset Brace|Remove Sp Getset Brace|Force Sp Getset Brace"
+ValueDefault=ignore
+
+[Sp Word Brace Init Lst]
+Category=1
+Description="<html>Add or remove space between a variable and '{' for C++ uniform<br/>initialization.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_word_brace_init_lst\s*=\s*ignore|sp_word_brace_init_lst\s*=\s*add|sp_word_brace_init_lst\s*=\s*remove|sp_word_brace_init_lst\s*=\s*force|sp_word_brace_init_lst\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Word Brace Init Lst|Add Sp Word Brace Init Lst|Remove Sp Word Brace Init Lst|Force Sp Word Brace Init Lst"
+ValueDefault=ignore
+
+[Sp Word Brace Ns]
+Category=1
+Description="<html>Add or remove space between a variable and '{' for a namespace.<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_word_brace_ns\s*=\s*ignore|sp_word_brace_ns\s*=\s*add|sp_word_brace_ns\s*=\s*remove|sp_word_brace_ns\s*=\s*force|sp_word_brace_ns\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Word Brace Ns|Add Sp Word Brace Ns|Remove Sp Word Brace Ns|Force Sp Word Brace Ns"
+ValueDefault=add
+
+[Sp Before Dc]
+Category=1
+Description="<html>Add or remove space before the '::' operator.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_dc\s*=\s*ignore|sp_before_dc\s*=\s*add|sp_before_dc\s*=\s*remove|sp_before_dc\s*=\s*force|sp_before_dc\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Dc|Add Sp Before Dc|Remove Sp Before Dc|Force Sp Before Dc"
+ValueDefault=ignore
+
+[Sp After Dc]
+Category=1
+Description="<html>Add or remove space after the '::' operator.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_dc\s*=\s*ignore|sp_after_dc\s*=\s*add|sp_after_dc\s*=\s*remove|sp_after_dc\s*=\s*force|sp_after_dc\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Dc|Add Sp After Dc|Remove Sp After Dc|Force Sp After Dc"
+ValueDefault=ignore
+
+[Sp D Array Colon]
+Category=1
+Description="<html>(D) Add or remove around the D named array initializer ':' operator.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_d_array_colon\s*=\s*ignore|sp_d_array_colon\s*=\s*add|sp_d_array_colon\s*=\s*remove|sp_d_array_colon\s*=\s*force|sp_d_array_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp D Array Colon|Add Sp D Array Colon|Remove Sp D Array Colon|Force Sp D Array Colon"
+ValueDefault=ignore
+
+[Sp Not]
+Category=1
+Description="<html>Add or remove space after the '!' (not) unary operator.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_not\s*=\s*ignore|sp_not\s*=\s*add|sp_not\s*=\s*remove|sp_not\s*=\s*force|sp_not\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Not|Add Sp Not|Remove Sp Not|Force Sp Not"
+ValueDefault=remove
+
+[Sp Not Not]
+Category=1
+Description="<html>Add or remove space between two '!' (not) unary operators.<br/>If set to ignore, sp_not will be used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_not_not\s*=\s*ignore|sp_not_not\s*=\s*add|sp_not_not\s*=\s*remove|sp_not_not\s*=\s*force|sp_not_not\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Not Not|Add Sp Not Not|Remove Sp Not Not|Force Sp Not Not"
+ValueDefault=ignore
+
+[Sp Inv]
+Category=1
+Description="<html>Add or remove space after the '~' (invert) unary operator.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inv\s*=\s*ignore|sp_inv\s*=\s*add|sp_inv\s*=\s*remove|sp_inv\s*=\s*force|sp_inv\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inv|Add Sp Inv|Remove Sp Inv|Force Sp Inv"
+ValueDefault=remove
+
+[Sp Addr]
+Category=1
+Description="<html>Add or remove space after the '&amp;' (address-of) unary operator. This does not<br/>affect the spacing after a '&amp;' that is part of a type.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_addr\s*=\s*ignore|sp_addr\s*=\s*add|sp_addr\s*=\s*remove|sp_addr\s*=\s*force|sp_addr\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Addr|Add Sp Addr|Remove Sp Addr|Force Sp Addr"
+ValueDefault=remove
+
+[Sp Member]
+Category=1
+Description="<html>Add or remove space around the '.' or '-&gt;' operators.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_member\s*=\s*ignore|sp_member\s*=\s*add|sp_member\s*=\s*remove|sp_member\s*=\s*force|sp_member\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Member|Add Sp Member|Remove Sp Member|Force Sp Member"
+ValueDefault=remove
+
+[Sp Deref]
+Category=1
+Description="<html>Add or remove space after the '*' (dereference) unary operator. This does<br/>not affect the spacing after a '*' that is part of a type.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_deref\s*=\s*ignore|sp_deref\s*=\s*add|sp_deref\s*=\s*remove|sp_deref\s*=\s*force|sp_deref\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Deref|Add Sp Deref|Remove Sp Deref|Force Sp Deref"
+ValueDefault=remove
+
+[Sp Sign]
+Category=1
+Description="<html>Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_sign\s*=\s*ignore|sp_sign\s*=\s*add|sp_sign\s*=\s*remove|sp_sign\s*=\s*force|sp_sign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Sign|Add Sp Sign|Remove Sp Sign|Force Sp Sign"
+ValueDefault=remove
+
+[Sp Incdec]
+Category=1
+Description="<html>Add or remove space between '++' and '--' the word to which it is being<br/>applied, as in '(--x)' or 'y++;'.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_incdec\s*=\s*ignore|sp_incdec\s*=\s*add|sp_incdec\s*=\s*remove|sp_incdec\s*=\s*force|sp_incdec\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Incdec|Add Sp Incdec|Remove Sp Incdec|Force Sp Incdec"
+ValueDefault=remove
+
+[Sp Before Nl Cont]
+Category=1
+Description="<html>Add or remove space before a backslash-newline at the end of a line.<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_nl_cont\s*=\s*ignore|sp_before_nl_cont\s*=\s*add|sp_before_nl_cont\s*=\s*remove|sp_before_nl_cont\s*=\s*force|sp_before_nl_cont\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Nl Cont|Add Sp Before Nl Cont|Remove Sp Before Nl Cont|Force Sp Before Nl Cont"
+ValueDefault=add
+
+[Sp After Oc Scope]
+Category=1
+Description="<html>(OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;'<br/>or '+(int) bar;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_scope\s*=\s*ignore|sp_after_oc_scope\s*=\s*add|sp_after_oc_scope\s*=\s*remove|sp_after_oc_scope\s*=\s*force|sp_after_oc_scope\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Scope|Add Sp After Oc Scope|Remove Sp After Oc Scope|Force Sp After Oc Scope"
+ValueDefault=ignore
+
+[Sp After Oc Colon]
+Category=1
+Description="<html>(OC) Add or remove space after the colon in message specs,<br/>i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_colon\s*=\s*ignore|sp_after_oc_colon\s*=\s*add|sp_after_oc_colon\s*=\s*remove|sp_after_oc_colon\s*=\s*force|sp_after_oc_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Colon|Add Sp After Oc Colon|Remove Sp After Oc Colon|Force Sp After Oc Colon"
+ValueDefault=ignore
+
+[Sp Before Oc Colon]
+Category=1
+Description="<html>(OC) Add or remove space before the colon in message specs,<br/>i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_oc_colon\s*=\s*ignore|sp_before_oc_colon\s*=\s*add|sp_before_oc_colon\s*=\s*remove|sp_before_oc_colon\s*=\s*force|sp_before_oc_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Oc Colon|Add Sp Before Oc Colon|Remove Sp Before Oc Colon|Force Sp Before Oc Colon"
+ValueDefault=ignore
+
+[Sp After Oc Dict Colon]
+Category=1
+Description="<html>(OC) Add or remove space after the colon in immutable dictionary expression<br/>'NSDictionary *test = @{@"foo" :@"bar"};'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_dict_colon\s*=\s*ignore|sp_after_oc_dict_colon\s*=\s*add|sp_after_oc_dict_colon\s*=\s*remove|sp_after_oc_dict_colon\s*=\s*force|sp_after_oc_dict_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Dict Colon|Add Sp After Oc Dict Colon|Remove Sp After Oc Dict Colon|Force Sp After Oc Dict Colon"
+ValueDefault=ignore
+
+[Sp Before Oc Dict Colon]
+Category=1
+Description="<html>(OC) Add or remove space before the colon in immutable dictionary expression<br/>'NSDictionary *test = @{@"foo" :@"bar"};'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_oc_dict_colon\s*=\s*ignore|sp_before_oc_dict_colon\s*=\s*add|sp_before_oc_dict_colon\s*=\s*remove|sp_before_oc_dict_colon\s*=\s*force|sp_before_oc_dict_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Oc Dict Colon|Add Sp Before Oc Dict Colon|Remove Sp Before Oc Dict Colon|Force Sp Before Oc Dict Colon"
+ValueDefault=ignore
+
+[Sp After Send Oc Colon]
+Category=1
+Description="<html>(OC) Add or remove space after the colon in message specs,<br/>i.e. '[object setValue:1];' vs. '[object setValue: 1];'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_send_oc_colon\s*=\s*ignore|sp_after_send_oc_colon\s*=\s*add|sp_after_send_oc_colon\s*=\s*remove|sp_after_send_oc_colon\s*=\s*force|sp_after_send_oc_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Send Oc Colon|Add Sp After Send Oc Colon|Remove Sp After Send Oc Colon|Force Sp After Send Oc Colon"
+ValueDefault=ignore
+
+[Sp Before Send Oc Colon]
+Category=1
+Description="<html>(OC) Add or remove space before the colon in message specs,<br/>i.e. '[object setValue:1];' vs. '[object setValue :1];'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_send_oc_colon\s*=\s*ignore|sp_before_send_oc_colon\s*=\s*add|sp_before_send_oc_colon\s*=\s*remove|sp_before_send_oc_colon\s*=\s*force|sp_before_send_oc_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Send Oc Colon|Add Sp Before Send Oc Colon|Remove Sp Before Send Oc Colon|Force Sp Before Send Oc Colon"
+ValueDefault=ignore
+
+[Sp After Oc Type]
+Category=1
+Description="<html>(OC) Add or remove space after the (type) in message specs,<br/>i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_type\s*=\s*ignore|sp_after_oc_type\s*=\s*add|sp_after_oc_type\s*=\s*remove|sp_after_oc_type\s*=\s*force|sp_after_oc_type\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Type|Add Sp After Oc Type|Remove Sp After Oc Type|Force Sp After Oc Type"
+ValueDefault=ignore
+
+[Sp After Oc Return Type]
+Category=1
+Description="<html>(OC) Add or remove space after the first (type) in message specs,<br/>i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_return_type\s*=\s*ignore|sp_after_oc_return_type\s*=\s*add|sp_after_oc_return_type\s*=\s*remove|sp_after_oc_return_type\s*=\s*force|sp_after_oc_return_type\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Return Type|Add Sp After Oc Return Type|Remove Sp After Oc Return Type|Force Sp After Oc Return Type"
+ValueDefault=ignore
+
+[Sp After Oc At Sel]
+Category=1
+Description="<html>(OC) Add or remove space between '@selector' and '(',<br/>i.e. '@selector(msgName)' vs. '@selector (msgName)'.<br/>Also applies to '@protocol()' constructs.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_at_sel\s*=\s*ignore|sp_after_oc_at_sel\s*=\s*add|sp_after_oc_at_sel\s*=\s*remove|sp_after_oc_at_sel\s*=\s*force|sp_after_oc_at_sel\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc At Sel|Add Sp After Oc At Sel|Remove Sp After Oc At Sel|Force Sp After Oc At Sel"
+ValueDefault=ignore
+
+[Sp After Oc At Sel Parens]
+Category=1
+Description="<html>(OC) Add or remove space between '@selector(x)' and the following word,<br/>i.e. '@selector(foo) a:' vs. '@selector(foo)a:'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_at_sel_parens\s*=\s*ignore|sp_after_oc_at_sel_parens\s*=\s*add|sp_after_oc_at_sel_parens\s*=\s*remove|sp_after_oc_at_sel_parens\s*=\s*force|sp_after_oc_at_sel_parens\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc At Sel Parens|Add Sp After Oc At Sel Parens|Remove Sp After Oc At Sel Parens|Force Sp After Oc At Sel Parens"
+ValueDefault=ignore
+
+[Sp Inside Oc At Sel Parens]
+Category=1
+Description="<html>(OC) Add or remove space inside '@selector' parentheses,<br/>i.e. '@selector(foo)' vs. '@selector( foo )'.<br/>Also applies to '@protocol()' constructs.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_oc_at_sel_parens\s*=\s*ignore|sp_inside_oc_at_sel_parens\s*=\s*add|sp_inside_oc_at_sel_parens\s*=\s*remove|sp_inside_oc_at_sel_parens\s*=\s*force|sp_inside_oc_at_sel_parens\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Oc At Sel Parens|Add Sp Inside Oc At Sel Parens|Remove Sp Inside Oc At Sel Parens|Force Sp Inside Oc At Sel Parens"
+ValueDefault=ignore
+
+[Sp Before Oc Block Caret]
+Category=1
+Description="<html>(OC) Add or remove space before a block pointer caret,<br/>i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_oc_block_caret\s*=\s*ignore|sp_before_oc_block_caret\s*=\s*add|sp_before_oc_block_caret\s*=\s*remove|sp_before_oc_block_caret\s*=\s*force|sp_before_oc_block_caret\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Oc Block Caret|Add Sp Before Oc Block Caret|Remove Sp Before Oc Block Caret|Force Sp Before Oc Block Caret"
+ValueDefault=ignore
+
+[Sp After Oc Block Caret]
+Category=1
+Description="<html>(OC) Add or remove space after a block pointer caret,<br/>i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_block_caret\s*=\s*ignore|sp_after_oc_block_caret\s*=\s*add|sp_after_oc_block_caret\s*=\s*remove|sp_after_oc_block_caret\s*=\s*force|sp_after_oc_block_caret\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Block Caret|Add Sp After Oc Block Caret|Remove Sp After Oc Block Caret|Force Sp After Oc Block Caret"
+ValueDefault=ignore
+
+[Sp After Oc Msg Receiver]
+Category=1
+Description="<html>(OC) Add or remove space between the receiver and selector in a message,<br/>as in '[receiver selector ...]'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_msg_receiver\s*=\s*ignore|sp_after_oc_msg_receiver\s*=\s*add|sp_after_oc_msg_receiver\s*=\s*remove|sp_after_oc_msg_receiver\s*=\s*force|sp_after_oc_msg_receiver\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Msg Receiver|Add Sp After Oc Msg Receiver|Remove Sp After Oc Msg Receiver|Force Sp After Oc Msg Receiver"
+ValueDefault=ignore
+
+[Sp After Oc Property]
+Category=1
+Description="<html>(OC) Add or remove space after '@property'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_property\s*=\s*ignore|sp_after_oc_property\s*=\s*add|sp_after_oc_property\s*=\s*remove|sp_after_oc_property\s*=\s*force|sp_after_oc_property\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Property|Add Sp After Oc Property|Remove Sp After Oc Property|Force Sp After Oc Property"
+ValueDefault=ignore
+
+[Sp After Oc Synchronized]
+Category=1
+Description="<html>(OC) Add or remove space between '@synchronized' and the open parenthesis,<br/>i.e. '@synchronized(foo)' vs. '@synchronized (foo)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_synchronized\s*=\s*ignore|sp_after_oc_synchronized\s*=\s*add|sp_after_oc_synchronized\s*=\s*remove|sp_after_oc_synchronized\s*=\s*force|sp_after_oc_synchronized\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Synchronized|Add Sp After Oc Synchronized|Remove Sp After Oc Synchronized|Force Sp After Oc Synchronized"
+ValueDefault=ignore
+
+[Sp Cond Colon]
+Category=1
+Description="<html>Add or remove space around the ':' in 'b ? t : f'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cond_colon\s*=\s*ignore|sp_cond_colon\s*=\s*add|sp_cond_colon\s*=\s*remove|sp_cond_colon\s*=\s*force|sp_cond_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cond Colon|Add Sp Cond Colon|Remove Sp Cond Colon|Force Sp Cond Colon"
+ValueDefault=ignore
+
+[Sp Cond Colon Before]
+Category=1
+Description="<html>Add or remove space before the ':' in 'b ? t : f'.<br/><br/>Overrides sp_cond_colon.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cond_colon_before\s*=\s*ignore|sp_cond_colon_before\s*=\s*add|sp_cond_colon_before\s*=\s*remove|sp_cond_colon_before\s*=\s*force|sp_cond_colon_before\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cond Colon Before|Add Sp Cond Colon Before|Remove Sp Cond Colon Before|Force Sp Cond Colon Before"
+ValueDefault=ignore
+
+[Sp Cond Colon After]
+Category=1
+Description="<html>Add or remove space after the ':' in 'b ? t : f'.<br/><br/>Overrides sp_cond_colon.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cond_colon_after\s*=\s*ignore|sp_cond_colon_after\s*=\s*add|sp_cond_colon_after\s*=\s*remove|sp_cond_colon_after\s*=\s*force|sp_cond_colon_after\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cond Colon After|Add Sp Cond Colon After|Remove Sp Cond Colon After|Force Sp Cond Colon After"
+ValueDefault=ignore
+
+[Sp Cond Question]
+Category=1
+Description="<html>Add or remove space around the '?' in 'b ? t : f'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cond_question\s*=\s*ignore|sp_cond_question\s*=\s*add|sp_cond_question\s*=\s*remove|sp_cond_question\s*=\s*force|sp_cond_question\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cond Question|Add Sp Cond Question|Remove Sp Cond Question|Force Sp Cond Question"
+ValueDefault=ignore
+
+[Sp Cond Question Before]
+Category=1
+Description="<html>Add or remove space before the '?' in 'b ? t : f'.<br/><br/>Overrides sp_cond_question.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cond_question_before\s*=\s*ignore|sp_cond_question_before\s*=\s*add|sp_cond_question_before\s*=\s*remove|sp_cond_question_before\s*=\s*force|sp_cond_question_before\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cond Question Before|Add Sp Cond Question Before|Remove Sp Cond Question Before|Force Sp Cond Question Before"
+ValueDefault=ignore
+
+[Sp Cond Question After]
+Category=1
+Description="<html>Add or remove space after the '?' in 'b ? t : f'.<br/><br/>Overrides sp_cond_question.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cond_question_after\s*=\s*ignore|sp_cond_question_after\s*=\s*add|sp_cond_question_after\s*=\s*remove|sp_cond_question_after\s*=\s*force|sp_cond_question_after\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cond Question After|Add Sp Cond Question After|Remove Sp Cond Question After|Force Sp Cond Question After"
+ValueDefault=ignore
+
+[Sp Cond Ternary Short]
+Category=1
+Description="<html>In the abbreviated ternary form '(a ?: b)', add or remove space between '?'<br/>and ':'.<br/><br/>Overrides all other sp_cond_* options.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cond_ternary_short\s*=\s*ignore|sp_cond_ternary_short\s*=\s*add|sp_cond_ternary_short\s*=\s*remove|sp_cond_ternary_short\s*=\s*force|sp_cond_ternary_short\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cond Ternary Short|Add Sp Cond Ternary Short|Remove Sp Cond Ternary Short|Force Sp Cond Ternary Short"
+ValueDefault=ignore
+
+[Sp Case Label]
+Category=1
+Description="<html>Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make<br/>sense here.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_case_label\s*=\s*ignore|sp_case_label\s*=\s*add|sp_case_label\s*=\s*remove|sp_case_label\s*=\s*force|sp_case_label\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Case Label|Add Sp Case Label|Remove Sp Case Label|Force Sp Case Label"
+ValueDefault=ignore
+
+[Sp Range]
+Category=1
+Description="<html>(D) Add or remove space around the D '..' operator.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_range\s*=\s*ignore|sp_range\s*=\s*add|sp_range\s*=\s*remove|sp_range\s*=\s*force|sp_range\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Range|Add Sp Range|Remove Sp Range|Force Sp Range"
+ValueDefault=ignore
+
+[Sp After For Colon]
+Category=1
+Description="<html>Add or remove space after ':' in a Java/C++11 range-based 'for',<br/>as in 'for (Type var : &lt;here&gt; expr)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_for_colon\s*=\s*ignore|sp_after_for_colon\s*=\s*add|sp_after_for_colon\s*=\s*remove|sp_after_for_colon\s*=\s*force|sp_after_for_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After For Colon|Add Sp After For Colon|Remove Sp After For Colon|Force Sp After For Colon"
+ValueDefault=ignore
+
+[Sp Before For Colon]
+Category=1
+Description="<html>Add or remove space before ':' in a Java/C++11 range-based 'for',<br/>as in 'for (Type var &lt;here&gt; : expr)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_for_colon\s*=\s*ignore|sp_before_for_colon\s*=\s*add|sp_before_for_colon\s*=\s*remove|sp_before_for_colon\s*=\s*force|sp_before_for_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before For Colon|Add Sp Before For Colon|Remove Sp Before For Colon|Force Sp Before For Colon"
+ValueDefault=ignore
+
+[Sp Extern Paren]
+Category=1
+Description="<html>(D) Add or remove space between 'extern' and '(' as in 'extern &lt;here&gt; (C)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_extern_paren\s*=\s*ignore|sp_extern_paren\s*=\s*add|sp_extern_paren\s*=\s*remove|sp_extern_paren\s*=\s*force|sp_extern_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Extern Paren|Add Sp Extern Paren|Remove Sp Extern Paren|Force Sp Extern Paren"
+ValueDefault=ignore
+
+[Sp Cmt Cpp Start]
+Category=1
+Description="<html>Add or remove space after the opening of a C++ comment, as in '// &lt;here&gt; A'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cmt_cpp_start\s*=\s*ignore|sp_cmt_cpp_start\s*=\s*add|sp_cmt_cpp_start\s*=\s*remove|sp_cmt_cpp_start\s*=\s*force|sp_cmt_cpp_start\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cmt Cpp Start|Add Sp Cmt Cpp Start|Remove Sp Cmt Cpp Start|Force Sp Cmt Cpp Start"
+ValueDefault=ignore
+
+[Sp Cmt Cpp Pvs]
+Category=1
+Description="<html>remove space after the '//' and the pvs command '-V1234',<br/>only works with sp_cmt_cpp_start set to add or force.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=sp_cmt_cpp_pvs\s*=\s*true|sp_cmt_cpp_pvs\s*=\s*false
+ValueDefault=false
+
+[Sp Cmt Cpp Lint]
+Category=1
+Description="<html>remove space after the '//' and the command 'lint',<br/>only works with sp_cmt_cpp_start set to add or force.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=sp_cmt_cpp_lint\s*=\s*true|sp_cmt_cpp_lint\s*=\s*false
+ValueDefault=false
+
+[Sp Cmt Cpp Region]
+Category=1
+Description="<html>Add or remove space in a C++ region marker comment, as in '// &lt;here&gt; BEGIN'.<br/>A region marker is defined as a comment which is not preceded by other text<br/>(i.e. the comment is the first non-whitespace on the line), and which starts<br/>with either 'BEGIN' or 'END'.<br/><br/>Overrides sp_cmt_cpp_start.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cmt_cpp_region\s*=\s*ignore|sp_cmt_cpp_region\s*=\s*add|sp_cmt_cpp_region\s*=\s*remove|sp_cmt_cpp_region\s*=\s*force|sp_cmt_cpp_region\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cmt Cpp Region|Add Sp Cmt Cpp Region|Remove Sp Cmt Cpp Region|Force Sp Cmt Cpp Region"
+ValueDefault=ignore
+
+[Sp Cmt Cpp Doxygen]
+Category=1
+Description="<html>If true, space added with sp_cmt_cpp_start will be added after Doxygen<br/>sequences like '///', '///&lt;', '//!' and '//!&lt;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=sp_cmt_cpp_doxygen\s*=\s*true|sp_cmt_cpp_doxygen\s*=\s*false
+ValueDefault=false
+
+[Sp Cmt Cpp Qttr]
+Category=1
+Description="<html>If true, space added with sp_cmt_cpp_start will be added after Qt translator<br/>or meta-data comments like '//:', '//=', and '//~'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=sp_cmt_cpp_qttr\s*=\s*true|sp_cmt_cpp_qttr\s*=\s*false
+ValueDefault=false
+
+[Sp Endif Cmt]
+Category=1
+Description="<html>Add or remove space between #else or #endif and a trailing comment.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_endif_cmt\s*=\s*ignore|sp_endif_cmt\s*=\s*add|sp_endif_cmt\s*=\s*remove|sp_endif_cmt\s*=\s*force|sp_endif_cmt\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Endif Cmt|Add Sp Endif Cmt|Remove Sp Endif Cmt|Force Sp Endif Cmt"
+ValueDefault=ignore
+
+[Sp After New]
+Category=1
+Description="<html>Add or remove space after 'new', 'delete' and 'delete[]'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_new\s*=\s*ignore|sp_after_new\s*=\s*add|sp_after_new\s*=\s*remove|sp_after_new\s*=\s*force|sp_after_new\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After New|Add Sp After New|Remove Sp After New|Force Sp After New"
+ValueDefault=ignore
+
+[Sp Between New Paren]
+Category=1
+Description="<html>Add or remove space between 'new' and '(' in 'new()'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_between_new_paren\s*=\s*ignore|sp_between_new_paren\s*=\s*add|sp_between_new_paren\s*=\s*remove|sp_between_new_paren\s*=\s*force|sp_between_new_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Between New Paren|Add Sp Between New Paren|Remove Sp Between New Paren|Force Sp Between New Paren"
+ValueDefault=ignore
+
+[Sp After Newop Paren]
+Category=1
+Description="<html>Add or remove space between ')' and type in 'new(foo) BAR'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_newop_paren\s*=\s*ignore|sp_after_newop_paren\s*=\s*add|sp_after_newop_paren\s*=\s*remove|sp_after_newop_paren\s*=\s*force|sp_after_newop_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Newop Paren|Add Sp After Newop Paren|Remove Sp After Newop Paren|Force Sp After Newop Paren"
+ValueDefault=ignore
+
+[Sp Inside Newop Paren]
+Category=1
+Description="<html>Add or remove space inside parentheses of the new operator<br/>as in 'new(foo) BAR'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_newop_paren\s*=\s*ignore|sp_inside_newop_paren\s*=\s*add|sp_inside_newop_paren\s*=\s*remove|sp_inside_newop_paren\s*=\s*force|sp_inside_newop_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Newop Paren|Add Sp Inside Newop Paren|Remove Sp Inside Newop Paren|Force Sp Inside Newop Paren"
+ValueDefault=ignore
+
+[Sp Inside Newop Paren Open]
+Category=1
+Description="<html>Add or remove space after the open parenthesis of the new operator,<br/>as in 'new(foo) BAR'.<br/><br/>Overrides sp_inside_newop_paren.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_newop_paren_open\s*=\s*ignore|sp_inside_newop_paren_open\s*=\s*add|sp_inside_newop_paren_open\s*=\s*remove|sp_inside_newop_paren_open\s*=\s*force|sp_inside_newop_paren_open\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Newop Paren Open|Add Sp Inside Newop Paren Open|Remove Sp Inside Newop Paren Open|Force Sp Inside Newop Paren Open"
+ValueDefault=ignore
+
+[Sp Inside Newop Paren Close]
+Category=1
+Description="<html>Add or remove space before the close parenthesis of the new operator,<br/>as in 'new(foo) BAR'.<br/><br/>Overrides sp_inside_newop_paren.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_newop_paren_close\s*=\s*ignore|sp_inside_newop_paren_close\s*=\s*add|sp_inside_newop_paren_close\s*=\s*remove|sp_inside_newop_paren_close\s*=\s*force|sp_inside_newop_paren_close\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Newop Paren Close|Add Sp Inside Newop Paren Close|Remove Sp Inside Newop Paren Close|Force Sp Inside Newop Paren Close"
+ValueDefault=ignore
+
+[Sp Before Tr Cmt]
+Category=1
+Description="<html>Add or remove space before a trailing comment.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_tr_cmt\s*=\s*ignore|sp_before_tr_cmt\s*=\s*add|sp_before_tr_cmt\s*=\s*remove|sp_before_tr_cmt\s*=\s*force|sp_before_tr_cmt\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Tr Cmt|Add Sp Before Tr Cmt|Remove Sp Before Tr Cmt|Force Sp Before Tr Cmt"
+ValueDefault=ignore
+
+[Sp Num Before Tr Cmt]
+Category=1
+Description="<html>Number of spaces before a trailing comment.</html>"
+Enabled=false
+EditorType=numeric
+CallName="sp_num_before_tr_cmt\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Sp Before Emb Cmt]
+Category=1
+Description="<html>Add or remove space before an embedded comment.<br/><br/>Default: force</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_emb_cmt\s*=\s*ignore|sp_before_emb_cmt\s*=\s*add|sp_before_emb_cmt\s*=\s*remove|sp_before_emb_cmt\s*=\s*force|sp_before_emb_cmt\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Emb Cmt|Add Sp Before Emb Cmt|Remove Sp Before Emb Cmt|Force Sp Before Emb Cmt"
+ValueDefault=force
+
+[Sp Num Before Emb Cmt]
+Category=1
+Description="<html>Number of spaces before an embedded comment.<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="sp_num_before_emb_cmt\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=1
+
+[Sp After Emb Cmt]
+Category=1
+Description="<html>Add or remove space after an embedded comment.<br/><br/>Default: force</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_emb_cmt\s*=\s*ignore|sp_after_emb_cmt\s*=\s*add|sp_after_emb_cmt\s*=\s*remove|sp_after_emb_cmt\s*=\s*force|sp_after_emb_cmt\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Emb Cmt|Add Sp After Emb Cmt|Remove Sp After Emb Cmt|Force Sp After Emb Cmt"
+ValueDefault=force
+
+[Sp Num After Emb Cmt]
+Category=1
+Description="<html>Number of spaces after an embedded comment.<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="sp_num_after_emb_cmt\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=1
+
+[Sp Annotation Paren]
+Category=1
+Description="<html>(Java) Add or remove space between an annotation and the open parenthesis.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_annotation_paren\s*=\s*ignore|sp_annotation_paren\s*=\s*add|sp_annotation_paren\s*=\s*remove|sp_annotation_paren\s*=\s*force|sp_annotation_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Annotation Paren|Add Sp Annotation Paren|Remove Sp Annotation Paren|Force Sp Annotation Paren"
+ValueDefault=ignore
+
+[Sp Skip Vbrace Tokens]
+Category=1
+Description="<html>If true, vbrace tokens are dropped to the previous token and skipped.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=sp_skip_vbrace_tokens\s*=\s*true|sp_skip_vbrace_tokens\s*=\s*false
+ValueDefault=false
+
+[Sp After Noexcept]
+Category=1
+Description="<html>Add or remove space after 'noexcept'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_noexcept\s*=\s*ignore|sp_after_noexcept\s*=\s*add|sp_after_noexcept\s*=\s*remove|sp_after_noexcept\s*=\s*force|sp_after_noexcept\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Noexcept|Add Sp After Noexcept|Remove Sp After Noexcept|Force Sp After Noexcept"
+ValueDefault=ignore
+
+[Sp Vala After Translation]
+Category=1
+Description="<html>Add or remove space after '_'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_vala_after_translation\s*=\s*ignore|sp_vala_after_translation\s*=\s*add|sp_vala_after_translation\s*=\s*remove|sp_vala_after_translation\s*=\s*force|sp_vala_after_translation\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Vala After Translation|Add Sp Vala After Translation|Remove Sp Vala After Translation|Force Sp Vala After Translation"
+ValueDefault=ignore
+
+[Sp Before Bit Colon]
+Category=1
+Description="<html>Add or remove space before a bit colon ':'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_bit_colon\s*=\s*ignore|sp_before_bit_colon\s*=\s*add|sp_before_bit_colon\s*=\s*remove|sp_before_bit_colon\s*=\s*force|sp_before_bit_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Bit Colon|Add Sp Before Bit Colon|Remove Sp Before Bit Colon|Force Sp Before Bit Colon"
+ValueDefault=ignore
+
+[Sp After Bit Colon]
+Category=1
+Description="<html>Add or remove space after a bit colon ':'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_bit_colon\s*=\s*ignore|sp_after_bit_colon\s*=\s*add|sp_after_bit_colon\s*=\s*remove|sp_after_bit_colon\s*=\s*force|sp_after_bit_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Bit Colon|Add Sp After Bit Colon|Remove Sp After Bit Colon|Force Sp After Bit Colon"
+ValueDefault=ignore
+
+[Force Tab After Define]
+Category=1
+Description="<html>If true, a &lt;TAB&gt; is inserted after #define.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=force_tab_after_define\s*=\s*true|force_tab_after_define\s*=\s*false
+ValueDefault=false
+
+[Indent Columns]
+Category=2
+Description="<html>The number of columns to indent per level. Usually 2, 3, 4, or 8.<br/><br/>Default: 8</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_columns\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=8
+
+[Indent Ignore First Continue]
+Category=2
+Description="<html>Whether to ignore indent for the first continuation line. Subsequent<br/>continuation lines will still be indented to match the first.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_first_continue\s*=\s*true|indent_ignore_first_continue\s*=\s*false
+ValueDefault=false
+
+[Indent Continue]
+Category=2
+Description="<html>The continuation indent. If non-zero, this overrides the indent of '(', '['<br/>and '=' continuation indents. Negative values are OK; negative value is<br/>absolute and not increased for each '(' or '[' level.<br/><br/>For FreeBSD, this is set to 4.<br/>Requires indent_ignore_first_continue=false.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_continue\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Indent Continue Class Head]
+Category=2
+Description="<html>The continuation indent, only for class header line(s). If non-zero, this<br/>overrides the indent of 'class' continuation indents.<br/>Requires indent_ignore_first_continue=false.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_continue_class_head\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Single Newlines]
+Category=2
+Description="<html>Whether to indent empty lines (i.e. lines which contain only spaces before<br/>the newline character).</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_single_newlines\s*=\s*true|indent_single_newlines\s*=\s*false
+ValueDefault=false
+
+[Indent Param]
+Category=2
+Description="<html>The continuation indent for func_*_param if they are true. If non-zero, this<br/>overrides the indent.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_param\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent With Tabs]
+Category=2
+Description="<html>How to use tabs when indenting code.<br/><br/>0: Spaces only<br/>1: Indent with tabs to brace level, align with spaces (default)<br/>2: Indent and align with tabs, using spaces when not on a tabstop<br/><br/>Default: 1</html>"
+Enabled=true
+EditorType=multiple
+Choices="indent_with_tabs\s*=\s*0|indent_with_tabs\s*=\s*1|indent_with_tabs\s*=\s*2"
+ChoicesReadable="Spaces only|Indent with tabs, align with spaces|Indent and align with tabs"
+ValueDefault=1
+
+[Indent Cmt With Tabs]
+Category=2
+Description="<html>Whether to indent comments that are not at a brace level with tabs on a<br/>tabstop. Requires indent_with_tabs=2. If false, will use spaces.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_cmt_with_tabs\s*=\s*true|indent_cmt_with_tabs\s*=\s*false
+ValueDefault=false
+
+[Indent Align String]
+Category=2
+Description="<html>Whether to indent strings broken by '\' so that they line up.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_align_string\s*=\s*true|indent_align_string\s*=\s*false
+ValueDefault=false
+
+[Indent Xml String]
+Category=2
+Description="<html>The number of spaces to indent multi-line XML strings.<br/>Requires indent_align_string=true.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_xml_string\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Brace]
+Category=2
+Description="<html>Spaces to indent '{' from level.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_brace\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Braces]
+Category=2
+Description="<html>Whether braces are indented to the body level.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_braces\s*=\s*true|indent_braces\s*=\s*false
+ValueDefault=false
+
+[Indent Braces No Func]
+Category=2
+Description="<html>Whether to disable indenting function braces if indent_braces=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_braces_no_func\s*=\s*true|indent_braces_no_func\s*=\s*false
+ValueDefault=false
+
+[Indent Braces No Class]
+Category=2
+Description="<html>Whether to disable indenting class braces if indent_braces=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_braces_no_class\s*=\s*true|indent_braces_no_class\s*=\s*false
+ValueDefault=false
+
+[Indent Braces No Struct]
+Category=2
+Description="<html>Whether to disable indenting struct braces if indent_braces=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_braces_no_struct\s*=\s*true|indent_braces_no_struct\s*=\s*false
+ValueDefault=false
+
+[Indent Brace Parent]
+Category=2
+Description="<html>Whether to indent based on the size of the brace parent,<br/>i.e. 'if' =&gt; 3 spaces, 'for' =&gt; 4 spaces, etc.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_brace_parent\s*=\s*true|indent_brace_parent\s*=\s*false
+ValueDefault=false
+
+[Indent Paren Open Brace]
+Category=2
+Description="<html>Whether to indent based on the open parenthesis instead of the open brace<br/>in '({\n'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_paren_open_brace\s*=\s*true|indent_paren_open_brace\s*=\s*false
+ValueDefault=false
+
+[Indent Cs Delegate Brace]
+Category=2
+Description="<html>(C#) Whether to indent the brace of a C# delegate by another level.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_cs_delegate_brace\s*=\s*true|indent_cs_delegate_brace\s*=\s*false
+ValueDefault=false
+
+[Indent Cs Delegate Body]
+Category=2
+Description="<html>(C#) Whether to indent a C# delegate (to handle delegates with no brace) by<br/>another level.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_cs_delegate_body\s*=\s*true|indent_cs_delegate_body\s*=\s*false
+ValueDefault=false
+
+[Indent Namespace]
+Category=2
+Description="<html>Whether to indent the body of a 'namespace'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_namespace\s*=\s*true|indent_namespace\s*=\s*false
+ValueDefault=false
+
+[Indent Namespace Single Indent]
+Category=2
+Description="<html>Whether to indent only the first namespace, and not any nested namespaces.<br/>Requires indent_namespace=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_namespace_single_indent\s*=\s*true|indent_namespace_single_indent\s*=\s*false
+ValueDefault=false
+
+[Indent Namespace Level]
+Category=2
+Description="<html>The number of spaces to indent a namespace block.<br/>If set to zero, use the value indent_columns</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_namespace_level\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Namespace Limit]
+Category=2
+Description="<html>If the body of the namespace is longer than this number, it won't be<br/>indented. Requires indent_namespace=true. 0 means no limit.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_namespace_limit\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[Indent Namespace Inner Only]
+Category=2
+Description="<html>Whether to indent only in inner namespaces (nested in other namespaces).<br/>Requires indent_namespace=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_namespace_inner_only\s*=\s*true|indent_namespace_inner_only\s*=\s*false
+ValueDefault=false
+
+[Indent Extern]
+Category=2
+Description="<html>Whether the 'extern "C"' body is indented.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_extern\s*=\s*true|indent_extern\s*=\s*false
+ValueDefault=false
+
+[Indent Class]
+Category=2
+Description="<html>Whether the 'class' body is indented.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_class\s*=\s*true|indent_class\s*=\s*false
+ValueDefault=false
+
+[Indent Ignore Before Class Colon]
+Category=2
+Description="<html>Whether to ignore indent for the leading base class colon.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_before_class_colon\s*=\s*true|indent_ignore_before_class_colon\s*=\s*false
+ValueDefault=false
+
+[Indent Before Class Colon]
+Category=2
+Description="<html>Additional indent before the leading base class colon.<br/>Negative values decrease indent down to the first column.<br/>Requires indent_ignore_before_class_colon=false and a newline break before<br/>the colon (see pos_class_colon and nl_class_colon)</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_before_class_colon\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Indent Class Colon]
+Category=2
+Description="<html>Whether to indent the stuff after a leading base class colon.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_class_colon\s*=\s*true|indent_class_colon\s*=\s*false
+ValueDefault=false
+
+[Indent Class On Colon]
+Category=2
+Description="<html>Whether to indent based on a class colon instead of the stuff after the<br/>colon. Requires indent_class_colon=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_class_on_colon\s*=\s*true|indent_class_on_colon\s*=\s*false
+ValueDefault=false
+
+[Indent Ignore Before Constr Colon]
+Category=2
+Description="<html>Whether to ignore indent for a leading class initializer colon.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_before_constr_colon\s*=\s*true|indent_ignore_before_constr_colon\s*=\s*false
+ValueDefault=false
+
+[Indent Constr Colon]
+Category=2
+Description="<html>Whether to indent the stuff after a leading class initializer colon.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_constr_colon\s*=\s*true|indent_constr_colon\s*=\s*false
+ValueDefault=false
+
+[Indent Ctor Init Leading]
+Category=2
+Description="<html>Virtual indent from the ':' for leading member initializers.<br/><br/>Default: 2</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_ctor_init_leading\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=2
+
+[Indent Ctor Init Following]
+Category=2
+Description="<html>Virtual indent from the ':' for following member initializers.<br/><br/>Default: 2</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_ctor_init_following\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=2
+
+[Indent Ctor Init]
+Category=2
+Description="<html>Additional indent for constructor initializer list.<br/>Negative values decrease indent down to the first column.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_ctor_init\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Indent Else If]
+Category=2
+Description="<html>Whether to indent 'if' following 'else' as a new block under the 'else'.<br/>If false, 'else\nif' is treated as 'else if' for indenting purposes.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_else_if\s*=\s*true|indent_else_if\s*=\s*false
+ValueDefault=false
+
+[Indent Var Def Blk]
+Category=2
+Description="<html>Amount to indent variable declarations after a open brace.<br/><br/> &lt;0: Relative<br/>&gt;=0: Absolute</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_var_def_blk\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Indent Var Def Cont]
+Category=2
+Description="<html>Whether to indent continued variable declarations instead of aligning.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_var_def_cont\s*=\s*true|indent_var_def_cont\s*=\s*false
+ValueDefault=false
+
+[Indent Shift]
+Category=2
+Description="<html>How to indent continued shift expressions ('&lt;&lt;' and '&gt;&gt;').<br/>Set align_left_shift=false when using this.<br/> 0: Align shift operators instead of indenting them (default)<br/> 1: Indent by one level<br/>-1: Preserve original indentation</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_shift\s*=\s*"
+MinVal=-1
+MaxVal=1
+ValueDefault=0
+
+[Indent Func Def Force Col1]
+Category=2
+Description="<html>Whether to force indentation of function definitions to start in column 1.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_func_def_force_col1\s*=\s*true|indent_func_def_force_col1\s*=\s*false
+ValueDefault=false
+
+[Indent Func Call Param]
+Category=2
+Description="<html>Whether to indent continued function call parameters one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_func_call_param\s*=\s*true|indent_func_call_param\s*=\s*false
+ValueDefault=false
+
+[Indent Func Def Param]
+Category=2
+Description="<html>Whether to indent continued function definition parameters one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_func_def_param\s*=\s*true|indent_func_def_param\s*=\s*false
+ValueDefault=false
+
+[Indent Func Def Param Paren Pos Threshold]
+Category=2
+Description="<html>for function definitions, only if indent_func_def_param is false<br/>Allows to align params when appropriate and indent them when not<br/>behave as if it was true if paren position is more than this value<br/>if paren position is more than the option value</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_func_def_param_paren_pos_threshold\s*=\s*"
+MinVal=0
+MaxVal=160
+ValueDefault=0
+
+[Indent Func Proto Param]
+Category=2
+Description="<html>Whether to indent continued function call prototype one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_func_proto_param\s*=\s*true|indent_func_proto_param\s*=\s*false
+ValueDefault=false
+
+[Indent Func Class Param]
+Category=2
+Description="<html>Whether to indent continued function call declaration one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_func_class_param\s*=\s*true|indent_func_class_param\s*=\s*false
+ValueDefault=false
+
+[Indent Func Ctor Var Param]
+Category=2
+Description="<html>Whether to indent continued class variable constructors one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_func_ctor_var_param\s*=\s*true|indent_func_ctor_var_param\s*=\s*false
+ValueDefault=false
+
+[Indent Template Param]
+Category=2
+Description="<html>Whether to indent continued template parameter list one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_template_param\s*=\s*true|indent_template_param\s*=\s*false
+ValueDefault=false
+
+[Indent Func Param Double]
+Category=2
+Description="<html>Double the indent for indent_func_xxx_param options.<br/>Use both values of the options indent_columns and indent_param.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_func_param_double\s*=\s*true|indent_func_param_double\s*=\s*false
+ValueDefault=false
+
+[Indent Func Const]
+Category=2
+Description="<html>Indentation column for standalone 'const' qualifier on a function<br/>prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_func_const\s*=\s*"
+MinVal=0
+MaxVal=69
+ValueDefault=0
+
+[Indent Func Throw]
+Category=2
+Description="<html>Indentation column for standalone 'throw' qualifier on a function<br/>prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_func_throw\s*=\s*"
+MinVal=0
+MaxVal=41
+ValueDefault=0
+
+[Indent Macro Brace]
+Category=2
+Description="<html>How to indent within a macro followed by a brace on the same line<br/>This allows reducing the indent in macros that have (for example)<br/>`do { ... } while (0)` blocks bracketing them.<br/><br/>true: add an indent for the brace on the same line as the macro<br/>false: do not add an indent for the brace on the same line as the macro<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_macro_brace\s*=\s*true|indent_macro_brace\s*=\s*false
+ValueDefault=true
+
+[Indent Member]
+Category=2
+Description="<html>The number of spaces to indent a continued '-&gt;' or '.'.<br/>Usually set to 0, 1, or indent_columns.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_member\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Member Single]
+Category=2
+Description="<html>Whether lines broken at '.' or '-&gt;' should be indented by a single indent.<br/>The indent_member option will not be effective if this is set to true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_member_single\s*=\s*true|indent_member_single\s*=\s*false
+ValueDefault=false
+
+[Indent Single Line Comments Before]
+Category=2
+Description="<html>Spaces to indent single line ('//') comments on lines before code.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_single_line_comments_before\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Single Line Comments After]
+Category=2
+Description="<html>Spaces to indent single line ('//') comments on lines after code.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_single_line_comments_after\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Sparen Extra]
+Category=2
+Description="<html>When opening a paren for a control statement (if, for, while, etc), increase<br/>the indent level by this value. Negative values decrease the indent level.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_sparen_extra\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Indent Relative Single Line Comments]
+Category=2
+Description="<html>Whether to indent trailing single line ('//') comments relative to the code<br/>instead of trying to keep the same absolute column.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_relative_single_line_comments\s*=\s*true|indent_relative_single_line_comments\s*=\s*false
+ValueDefault=false
+
+[Indent Switch Case]
+Category=2
+Description="<html>Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.<br/>It might be wise to choose the same value for the option indent_case_brace.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_switch_case\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Switch Body]
+Category=2
+Description="<html>Spaces to indent the body of a 'switch' before any 'case'.<br/>Usually the same as indent_columns or indent_switch_case.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_switch_body\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Ignore Case Brace]
+Category=2
+Description="<html>Whether to ignore indent for '{' following 'case'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_case_brace\s*=\s*true|indent_ignore_case_brace\s*=\s*false
+ValueDefault=false
+
+[Indent Case Brace]
+Category=2
+Description="<html>Spaces to indent '{' from 'case'. By default, the brace will appear under<br/>the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.<br/>It might be wise to choose the same value for the option indent_switch_case.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_case_brace\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Indent Switch Break With Case]
+Category=2
+Description="<html>indent 'break' with 'case' from 'switch'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_switch_break_with_case\s*=\s*true|indent_switch_break_with_case\s*=\s*false
+ValueDefault=false
+
+[Indent Switch Pp]
+Category=2
+Description="<html>Whether to indent preprocessor statements inside of switch statements.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_switch_pp\s*=\s*true|indent_switch_pp\s*=\s*false
+ValueDefault=true
+
+[Indent Case Shift]
+Category=2
+Description="<html>Spaces to shift the 'case' line, without affecting any other lines.<br/>Usually 0.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_case_shift\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Case Comment]
+Category=2
+Description="<html>Whether to align comments before 'case' with the 'case'.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_case_comment\s*=\s*true|indent_case_comment\s*=\s*false
+ValueDefault=true
+
+[Indent Comment]
+Category=2
+Description="<html>Whether to indent comments not found in first column.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_comment\s*=\s*true|indent_comment\s*=\s*false
+ValueDefault=true
+
+[Indent Col1 Comment]
+Category=2
+Description="<html>Whether to indent comments found in first column.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_col1_comment\s*=\s*true|indent_col1_comment\s*=\s*false
+ValueDefault=false
+
+[Indent Col1 Multi String Literal]
+Category=2
+Description="<html>Whether to indent multi string literal in first column.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_col1_multi_string_literal\s*=\s*true|indent_col1_multi_string_literal\s*=\s*false
+ValueDefault=false
+
+[Indent Comment Align Thresh]
+Category=2
+Description="<html>Align comments on adjacent lines that are this many columns apart or less.<br/><br/>Default: 3</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_comment_align_thresh\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=3
+
+[Indent Ignore Label]
+Category=2
+Description="<html>Whether to ignore indent for goto labels.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_label\s*=\s*true|indent_ignore_label\s*=\s*false
+ValueDefault=false
+
+[Indent Label]
+Category=2
+Description="<html>How to indent goto labels. Requires indent_ignore_label=false.<br/><br/> &gt;0: Absolute column where 1 is the leftmost column<br/>&lt;=0: Subtract from brace indent<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_label\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=1
+
+[Indent Access Spec]
+Category=2
+Description="<html>How to indent access specifiers that are followed by a<br/>colon.<br/><br/> &gt;0: Absolute column where 1 is the leftmost column<br/>&lt;=0: Subtract from brace indent<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_access_spec\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=1
+
+[Indent Access Spec Body]
+Category=2
+Description="<html>Whether to indent the code after an access specifier by one level.<br/>If true, this option forces 'indent_access_spec=0'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_access_spec_body\s*=\s*true|indent_access_spec_body\s*=\s*false
+ValueDefault=false
+
+[Indent Paren Nl]
+Category=2
+Description="<html>If an open parenthesis is followed by a newline, whether to indent the next<br/>line so that it lines up after the open parenthesis (not recommended).</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_paren_nl\s*=\s*true|indent_paren_nl\s*=\s*false
+ValueDefault=false
+
+[Indent Paren Close]
+Category=2
+Description="<html>How to indent a close parenthesis after a newline.<br/><br/> 0: Indent to body level (default)<br/> 1: Align under the open parenthesis<br/> 2: Indent to the brace level<br/>-1: Preserve original indentation</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_paren_close\s*=\s*"
+MinVal=-1
+MaxVal=2
+ValueDefault=0
+
+[Indent Paren After Func Def]
+Category=2
+Description="<html>Whether to indent the open parenthesis of a function definition,<br/>if the parenthesis is on its own line.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_paren_after_func_def\s*=\s*true|indent_paren_after_func_def\s*=\s*false
+ValueDefault=false
+
+[Indent Paren After Func Decl]
+Category=2
+Description="<html>Whether to indent the open parenthesis of a function declaration,<br/>if the parenthesis is on its own line.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_paren_after_func_decl\s*=\s*true|indent_paren_after_func_decl\s*=\s*false
+ValueDefault=false
+
+[Indent Paren After Func Call]
+Category=2
+Description="<html>Whether to indent the open parenthesis of a function call,<br/>if the parenthesis is on its own line.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_paren_after_func_call\s*=\s*true|indent_paren_after_func_call\s*=\s*false
+ValueDefault=false
+
+[Indent Comma Brace]
+Category=2
+Description="<html>How to indent a comma when inside braces.<br/> 0: Indent by one level (default)<br/> 1: Align under the open brace<br/>-1: Preserve original indentation</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_comma_brace\s*=\s*"
+MinVal=-1
+MaxVal=1
+ValueDefault=0
+
+[Indent Comma Paren]
+Category=2
+Description="<html>How to indent a comma when inside parentheses.<br/> 0: Indent by one level (default)<br/> 1: Align under the open parenthesis<br/>-1: Preserve original indentation</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_comma_paren\s*=\s*"
+MinVal=-1
+MaxVal=1
+ValueDefault=0
+
+[Indent Bool Paren]
+Category=2
+Description="<html>How to indent a Boolean operator when inside parentheses.<br/> 0: Indent by one level (default)<br/> 1: Align under the open parenthesis<br/>-1: Preserve original indentation</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_bool_paren\s*=\s*"
+MinVal=-1
+MaxVal=1
+ValueDefault=0
+
+[Indent Ignore Bool]
+Category=2
+Description="<html>Whether to ignore the indentation of a Boolean operator when outside<br/>parentheses.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_bool\s*=\s*true|indent_ignore_bool\s*=\s*false
+ValueDefault=false
+
+[Indent Ignore Arith]
+Category=2
+Description="<html>Whether to ignore the indentation of an arithmetic operator.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_arith\s*=\s*true|indent_ignore_arith\s*=\s*false
+ValueDefault=false
+
+[Indent Semicolon For Paren]
+Category=2
+Description="<html>Whether to indent a semicolon when inside a for parenthesis.<br/>If true, aligns under the open for parenthesis.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_semicolon_for_paren\s*=\s*true|indent_semicolon_for_paren\s*=\s*false
+ValueDefault=false
+
+[Indent Ignore Semicolon]
+Category=2
+Description="<html>Whether to ignore the indentation of a semicolon outside of a 'for'<br/>statement.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_semicolon\s*=\s*true|indent_ignore_semicolon\s*=\s*false
+ValueDefault=false
+
+[Indent First Bool Expr]
+Category=2
+Description="<html>Whether to align the first expression to following ones<br/>if indent_bool_paren=1.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_first_bool_expr\s*=\s*true|indent_first_bool_expr\s*=\s*false
+ValueDefault=false
+
+[Indent First For Expr]
+Category=2
+Description="<html>Whether to align the first expression to following ones<br/>if indent_semicolon_for_paren=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_first_for_expr\s*=\s*true|indent_first_for_expr\s*=\s*false
+ValueDefault=false
+
+[Indent Square Nl]
+Category=2
+Description="<html>If an open square is followed by a newline, whether to indent the next line<br/>so that it lines up after the open square (not recommended).</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_square_nl\s*=\s*true|indent_square_nl\s*=\s*false
+ValueDefault=false
+
+[Indent Preserve Sql]
+Category=2
+Description="<html>(ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_preserve_sql\s*=\s*true|indent_preserve_sql\s*=\s*false
+ValueDefault=false
+
+[Indent Ignore Assign]
+Category=2
+Description="<html>Whether to ignore the indentation of an assignment operator.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_assign\s*=\s*true|indent_ignore_assign\s*=\s*false
+ValueDefault=false
+
+[Indent Align Assign]
+Category=2
+Description="<html>Whether to align continued statements at the '='. If false or if the '=' is<br/>followed by a newline, the next line is indent one tab.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_align_assign\s*=\s*true|indent_align_assign\s*=\s*false
+ValueDefault=true
+
+[Indent Off After Assign]
+Category=2
+Description="<html>If true, the indentation of the chunks after a '=' sequence will be set at<br/>LHS token indentation column before '='.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_off_after_assign\s*=\s*true|indent_off_after_assign\s*=\s*false
+ValueDefault=false
+
+[Indent Align Paren]
+Category=2
+Description="<html>Whether to align continued statements at the '('. If false or the '(' is<br/>followed by a newline, the next line indent is one tab.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_align_paren\s*=\s*true|indent_align_paren\s*=\s*false
+ValueDefault=true
+
+[Indent Oc Inside Msg Sel]
+Category=2
+Description="<html>(OC) Whether to indent Objective-C code inside message selectors.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_inside_msg_sel\s*=\s*true|indent_oc_inside_msg_sel\s*=\s*false
+ValueDefault=false
+
+[Indent Oc Block]
+Category=2
+Description="<html>(OC) Whether to indent Objective-C blocks at brace level instead of usual<br/>rules.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_block\s*=\s*true|indent_oc_block\s*=\s*false
+ValueDefault=false
+
+[Indent Oc Block Msg]
+Category=2
+Description="<html>(OC) Indent for Objective-C blocks in a message relative to the parameter<br/>name.<br/><br/>=0: Use indent_oc_block rules<br/>&gt;0: Use specified number of spaces to indent</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_oc_block_msg\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Oc Msg Colon]
+Category=2
+Description="<html>(OC) Minimum indent for subsequent parameters</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_oc_msg_colon\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Indent Oc Msg Prioritize First Colon]
+Category=2
+Description="<html>(OC) Whether to prioritize aligning with initial colon (and stripping spaces<br/>from lines, if necessary).<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_msg_prioritize_first_colon\s*=\s*true|indent_oc_msg_prioritize_first_colon\s*=\s*false
+ValueDefault=true
+
+[Indent Oc Block Msg Xcode Style]
+Category=2
+Description="<html>(OC) Whether to indent blocks the way that Xcode does by default<br/>(from the keyword if the parameter is on its own line; otherwise, from the<br/>previous indentation level). Requires indent_oc_block_msg=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_block_msg_xcode_style\s*=\s*true|indent_oc_block_msg_xcode_style\s*=\s*false
+ValueDefault=false
+
+[Indent Oc Block Msg From Keyword]
+Category=2
+Description="<html>(OC) Whether to indent blocks from where the brace is, relative to a<br/>message keyword. Requires indent_oc_block_msg=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_block_msg_from_keyword\s*=\s*true|indent_oc_block_msg_from_keyword\s*=\s*false
+ValueDefault=false
+
+[Indent Oc Block Msg From Colon]
+Category=2
+Description="<html>(OC) Whether to indent blocks from where the brace is, relative to a message<br/>colon. Requires indent_oc_block_msg=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_block_msg_from_colon\s*=\s*true|indent_oc_block_msg_from_colon\s*=\s*false
+ValueDefault=false
+
+[Indent Oc Block Msg From Caret]
+Category=2
+Description="<html>(OC) Whether to indent blocks from where the block caret is.<br/>Requires indent_oc_block_msg=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_block_msg_from_caret\s*=\s*true|indent_oc_block_msg_from_caret\s*=\s*false
+ValueDefault=false
+
+[Indent Oc Block Msg From Brace]
+Category=2
+Description="<html>(OC) Whether to indent blocks from where the brace caret is.<br/>Requires indent_oc_block_msg=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_block_msg_from_brace\s*=\s*true|indent_oc_block_msg_from_brace\s*=\s*false
+ValueDefault=false
+
+[Indent Min Vbrace Open]
+Category=2
+Description="<html>When indenting after virtual brace open and newline add further spaces to<br/>reach this minimum indent.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_min_vbrace_open\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Vbrace Open On Tabstop]
+Category=2
+Description="<html>Whether to add further spaces after regular indent to reach next tabstop<br/>when indenting after virtual brace open and newline.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_vbrace_open_on_tabstop\s*=\s*true|indent_vbrace_open_on_tabstop\s*=\s*false
+ValueDefault=false
+
+[Indent Token After Brace]
+Category=2
+Description="<html>How to indent after a brace followed by another token (not a newline).<br/>true: indent all contained lines to match the token<br/>false: indent all contained lines to match the brace<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_token_after_brace\s*=\s*true|indent_token_after_brace\s*=\s*false
+ValueDefault=true
+
+[Indent Cpp Lambda Body]
+Category=2
+Description="<html>Whether to indent the body of a C++11 lambda.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_cpp_lambda_body\s*=\s*true|indent_cpp_lambda_body\s*=\s*false
+ValueDefault=false
+
+[Indent Compound Literal Return]
+Category=2
+Description="<html>How to indent compound literals that are being returned.<br/>true: add both the indent from return &amp; the compound literal open brace<br/> (i.e. 2 indent levels)<br/>false: only indent 1 level, don't add the indent for the open brace, only<br/> add the indent for the return.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_compound_literal_return\s*=\s*true|indent_compound_literal_return\s*=\s*false
+ValueDefault=true
+
+[Indent Using Block]
+Category=2
+Description="<html>(C#) Whether to indent a 'using' block if no braces are used.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_using_block\s*=\s*true|indent_using_block\s*=\s*false
+ValueDefault=true
+
+[Indent Ternary Operator]
+Category=2
+Description="<html>How to indent the continuation of ternary operator.<br/><br/>0: Off (default)<br/>1: When the `if_false` is a continuation, indent it under the `if_true` branch<br/>2: When the `:` is a continuation, indent it under `?`</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_ternary_operator\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Indent Inside Ternary Operator]
+Category=2
+Description="<html>Whether to indent the statements inside ternary operator.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_inside_ternary_operator\s*=\s*true|indent_inside_ternary_operator\s*=\s*false
+ValueDefault=false
+
+[Indent Off After Return]
+Category=2
+Description="<html>If true, the indentation of the chunks after a `return` sequence will be set at return indentation column.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_off_after_return\s*=\s*true|indent_off_after_return\s*=\s*false
+ValueDefault=false
+
+[Indent Off After Return New]
+Category=2
+Description="<html>If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_off_after_return_new\s*=\s*true|indent_off_after_return_new\s*=\s*false
+ValueDefault=false
+
+[Indent Single After Return]
+Category=2
+Description="<html>If true, the tokens after return are indented with regular single indentation. By default (false) the indentation is after the return token.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_single_after_return\s*=\s*true|indent_single_after_return\s*=\s*false
+ValueDefault=false
+
+[Indent Ignore Asm Block]
+Category=2
+Description="<html>Whether to ignore indent and alignment for 'asm' blocks (i.e. assume they<br/>have their own indentation).</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_asm_block\s*=\s*true|indent_ignore_asm_block\s*=\s*false
+ValueDefault=false
+
+[Donot Indent Func Def Close Paren]
+Category=2
+Description="<html>Don't indent the close parenthesis of a function definition,<br/>if the parenthesis is on its own line.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=donot_indent_func_def_close_paren\s*=\s*true|donot_indent_func_def_close_paren\s*=\s*false
+ValueDefault=false
+
+[Nl Collapse Empty Body]
+Category=3
+Description="<html>Whether to collapse empty blocks between '{' and '}' except for functions.<br/>Use nl_collapse_empty_body_functions to specify how empty function braces<br/>should be formatted.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_collapse_empty_body\s*=\s*true|nl_collapse_empty_body\s*=\s*false
+ValueDefault=false
+
+[Nl Collapse Empty Body Functions]
+Category=3
+Description="<html>Whether to collapse empty blocks between '{' and '}' for functions only.<br/>If true, overrides nl_inside_empty_func.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_collapse_empty_body_functions\s*=\s*true|nl_collapse_empty_body_functions\s*=\s*false
+ValueDefault=false
+
+[Nl Assign Leave One Liners]
+Category=3
+Description="<html>Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_assign_leave_one_liners\s*=\s*true|nl_assign_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Class Leave One Liners]
+Category=3
+Description="<html>Don't split one-line braced statements inside a 'class xx { }' body.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_class_leave_one_liners\s*=\s*true|nl_class_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Enum Leave One Liners]
+Category=3
+Description="<html>Don't split one-line enums, as in 'enum foo { BAR = 15 };'</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_enum_leave_one_liners\s*=\s*true|nl_enum_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Getset Leave One Liners]
+Category=3
+Description="<html>Don't split one-line get or set functions.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_getset_leave_one_liners\s*=\s*true|nl_getset_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Cs Property Leave One Liners]
+Category=3
+Description="<html>(C#) Don't split one-line property get or set functions.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_cs_property_leave_one_liners\s*=\s*true|nl_cs_property_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Func Leave One Liners]
+Category=3
+Description="<html>Don't split one-line function definitions, as in 'int foo() { return 0; }'.<br/>might modify nl_func_type_name</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_leave_one_liners\s*=\s*true|nl_func_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Cpp Lambda Leave One Liners]
+Category=3
+Description="<html>Don't split one-line C++11 lambdas, as in '[]() { return 0; }'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_cpp_lambda_leave_one_liners\s*=\s*true|nl_cpp_lambda_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl If Leave One Liners]
+Category=3
+Description="<html>Don't split one-line if/else statements, as in 'if(...) b++;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_if_leave_one_liners\s*=\s*true|nl_if_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl While Leave One Liners]
+Category=3
+Description="<html>Don't split one-line while statements, as in 'while(...) b++;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_while_leave_one_liners\s*=\s*true|nl_while_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Do Leave One Liners]
+Category=3
+Description="<html>Don't split one-line do statements, as in 'do { b++; } while(...);'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_do_leave_one_liners\s*=\s*true|nl_do_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl For Leave One Liners]
+Category=3
+Description="<html>Don't split one-line for statements, as in 'for(...) b++;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_for_leave_one_liners\s*=\s*true|nl_for_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Oc Msg Leave One Liner]
+Category=3
+Description="<html>(OC) Don't split one-line Objective-C messages.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_oc_msg_leave_one_liner\s*=\s*true|nl_oc_msg_leave_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Oc Mdef Brace]
+Category=3
+Description="<html>(OC) Add or remove newline between method declaration and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_mdef_brace\s*=\s*ignore|nl_oc_mdef_brace\s*=\s*add|nl_oc_mdef_brace\s*=\s*remove|nl_oc_mdef_brace\s*=\s*force|nl_oc_mdef_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Mdef Brace|Add Nl Oc Mdef Brace|Remove Nl Oc Mdef Brace|Force Nl Oc Mdef Brace"
+ValueDefault=ignore
+
+[Nl Oc Block Brace]
+Category=3
+Description="<html>(OC) Add or remove newline between Objective-C block signature and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_block_brace\s*=\s*ignore|nl_oc_block_brace\s*=\s*add|nl_oc_block_brace\s*=\s*remove|nl_oc_block_brace\s*=\s*force|nl_oc_block_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Block Brace|Add Nl Oc Block Brace|Remove Nl Oc Block Brace|Force Nl Oc Block Brace"
+ValueDefault=ignore
+
+[Nl Oc Before Interface]
+Category=3
+Description="<html>(OC) Add or remove blank line before '@interface' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_before_interface\s*=\s*ignore|nl_oc_before_interface\s*=\s*add|nl_oc_before_interface\s*=\s*remove|nl_oc_before_interface\s*=\s*force|nl_oc_before_interface\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Before Interface|Add Nl Oc Before Interface|Remove Nl Oc Before Interface|Force Nl Oc Before Interface"
+ValueDefault=ignore
+
+[Nl Oc Before Implementation]
+Category=3
+Description="<html>(OC) Add or remove blank line before '@implementation' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_before_implementation\s*=\s*ignore|nl_oc_before_implementation\s*=\s*add|nl_oc_before_implementation\s*=\s*remove|nl_oc_before_implementation\s*=\s*force|nl_oc_before_implementation\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Before Implementation|Add Nl Oc Before Implementation|Remove Nl Oc Before Implementation|Force Nl Oc Before Implementation"
+ValueDefault=ignore
+
+[Nl Oc Before End]
+Category=3
+Description="<html>(OC) Add or remove blank line before '@end' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_before_end\s*=\s*ignore|nl_oc_before_end\s*=\s*add|nl_oc_before_end\s*=\s*remove|nl_oc_before_end\s*=\s*force|nl_oc_before_end\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Before End|Add Nl Oc Before End|Remove Nl Oc Before End|Force Nl Oc Before End"
+ValueDefault=ignore
+
+[Nl Oc Interface Brace]
+Category=3
+Description="<html>(OC) Add or remove newline between '@interface' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_interface_brace\s*=\s*ignore|nl_oc_interface_brace\s*=\s*add|nl_oc_interface_brace\s*=\s*remove|nl_oc_interface_brace\s*=\s*force|nl_oc_interface_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Interface Brace|Add Nl Oc Interface Brace|Remove Nl Oc Interface Brace|Force Nl Oc Interface Brace"
+ValueDefault=ignore
+
+[Nl Oc Implementation Brace]
+Category=3
+Description="<html>(OC) Add or remove newline between '@implementation' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_implementation_brace\s*=\s*ignore|nl_oc_implementation_brace\s*=\s*add|nl_oc_implementation_brace\s*=\s*remove|nl_oc_implementation_brace\s*=\s*force|nl_oc_implementation_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Implementation Brace|Add Nl Oc Implementation Brace|Remove Nl Oc Implementation Brace|Force Nl Oc Implementation Brace"
+ValueDefault=ignore
+
+[Nl Start Of File]
+Category=3
+Description="<html>Add or remove newlines at the start of the file.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_start_of_file\s*=\s*ignore|nl_start_of_file\s*=\s*add|nl_start_of_file\s*=\s*remove|nl_start_of_file\s*=\s*force|nl_start_of_file\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Start Of File|Add Nl Start Of File|Remove Nl Start Of File|Force Nl Start Of File"
+ValueDefault=ignore
+
+[Nl Start Of File Min]
+Category=3
+Description="<html>The minimum number of newlines at the start of the file (only used if<br/>nl_start_of_file is 'add' or 'force').</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_start_of_file_min\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl End Of File]
+Category=3
+Description="<html>Add or remove newline at the end of the file.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_end_of_file\s*=\s*ignore|nl_end_of_file\s*=\s*add|nl_end_of_file\s*=\s*remove|nl_end_of_file\s*=\s*force|nl_end_of_file\s*=\s*not_defined
+ChoicesReadable="Ignore Nl End Of File|Add Nl End Of File|Remove Nl End Of File|Force Nl End Of File"
+ValueDefault=ignore
+
+[Nl End Of File Min]
+Category=3
+Description="<html>The minimum number of newlines at the end of the file (only used if<br/>nl_end_of_file is 'add' or 'force').</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_end_of_file_min\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Assign Brace]
+Category=3
+Description="<html>Add or remove newline between '=' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_assign_brace\s*=\s*ignore|nl_assign_brace\s*=\s*add|nl_assign_brace\s*=\s*remove|nl_assign_brace\s*=\s*force|nl_assign_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Assign Brace|Add Nl Assign Brace|Remove Nl Assign Brace|Force Nl Assign Brace"
+ValueDefault=ignore
+
+[Nl Assign Square]
+Category=3
+Description="<html>(D) Add or remove newline between '=' and '['.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_assign_square\s*=\s*ignore|nl_assign_square\s*=\s*add|nl_assign_square\s*=\s*remove|nl_assign_square\s*=\s*force|nl_assign_square\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Assign Square|Add Nl Assign Square|Remove Nl Assign Square|Force Nl Assign Square"
+ValueDefault=ignore
+
+[Nl Tsquare Brace]
+Category=3
+Description="<html>Add or remove newline between '[]' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_tsquare_brace\s*=\s*ignore|nl_tsquare_brace\s*=\s*add|nl_tsquare_brace\s*=\s*remove|nl_tsquare_brace\s*=\s*force|nl_tsquare_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Tsquare Brace|Add Nl Tsquare Brace|Remove Nl Tsquare Brace|Force Nl Tsquare Brace"
+ValueDefault=ignore
+
+[Nl After Square Assign]
+Category=3
+Description="<html>(D) Add or remove newline after '= ['. Will also affect the newline before<br/>the ']'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_square_assign\s*=\s*ignore|nl_after_square_assign\s*=\s*add|nl_after_square_assign\s*=\s*remove|nl_after_square_assign\s*=\s*force|nl_after_square_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After Square Assign|Add Nl After Square Assign|Remove Nl After Square Assign|Force Nl After Square Assign"
+ValueDefault=ignore
+
+[Nl Fcall Brace]
+Category=3
+Description="<html>Add or remove newline between a function call's ')' and '{', as in<br/>'list_for_each(item, &amp;list) { }'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_fcall_brace\s*=\s*ignore|nl_fcall_brace\s*=\s*add|nl_fcall_brace\s*=\s*remove|nl_fcall_brace\s*=\s*force|nl_fcall_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Fcall Brace|Add Nl Fcall Brace|Remove Nl Fcall Brace|Force Nl Fcall Brace"
+ValueDefault=ignore
+
+[Nl Enum Brace]
+Category=3
+Description="<html>Add or remove newline between 'enum' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_enum_brace\s*=\s*ignore|nl_enum_brace\s*=\s*add|nl_enum_brace\s*=\s*remove|nl_enum_brace\s*=\s*force|nl_enum_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Enum Brace|Add Nl Enum Brace|Remove Nl Enum Brace|Force Nl Enum Brace"
+ValueDefault=ignore
+
+[Nl Enum Class]
+Category=3
+Description="<html>Add or remove newline between 'enum' and 'class'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_enum_class\s*=\s*ignore|nl_enum_class\s*=\s*add|nl_enum_class\s*=\s*remove|nl_enum_class\s*=\s*force|nl_enum_class\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Enum Class|Add Nl Enum Class|Remove Nl Enum Class|Force Nl Enum Class"
+ValueDefault=ignore
+
+[Nl Enum Class Identifier]
+Category=3
+Description="<html>Add or remove newline between 'enum class' and the identifier.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_enum_class_identifier\s*=\s*ignore|nl_enum_class_identifier\s*=\s*add|nl_enum_class_identifier\s*=\s*remove|nl_enum_class_identifier\s*=\s*force|nl_enum_class_identifier\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Enum Class Identifier|Add Nl Enum Class Identifier|Remove Nl Enum Class Identifier|Force Nl Enum Class Identifier"
+ValueDefault=ignore
+
+[Nl Enum Identifier Colon]
+Category=3
+Description="<html>Add or remove newline between 'enum class' type and ':'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_enum_identifier_colon\s*=\s*ignore|nl_enum_identifier_colon\s*=\s*add|nl_enum_identifier_colon\s*=\s*remove|nl_enum_identifier_colon\s*=\s*force|nl_enum_identifier_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Enum Identifier Colon|Add Nl Enum Identifier Colon|Remove Nl Enum Identifier Colon|Force Nl Enum Identifier Colon"
+ValueDefault=ignore
+
+[Nl Enum Colon Type]
+Category=3
+Description="<html>Add or remove newline between 'enum class identifier :' and type.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_enum_colon_type\s*=\s*ignore|nl_enum_colon_type\s*=\s*add|nl_enum_colon_type\s*=\s*remove|nl_enum_colon_type\s*=\s*force|nl_enum_colon_type\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Enum Colon Type|Add Nl Enum Colon Type|Remove Nl Enum Colon Type|Force Nl Enum Colon Type"
+ValueDefault=ignore
+
+[Nl Struct Brace]
+Category=3
+Description="<html>Add or remove newline between 'struct and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_struct_brace\s*=\s*ignore|nl_struct_brace\s*=\s*add|nl_struct_brace\s*=\s*remove|nl_struct_brace\s*=\s*force|nl_struct_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Struct Brace|Add Nl Struct Brace|Remove Nl Struct Brace|Force Nl Struct Brace"
+ValueDefault=ignore
+
+[Nl Union Brace]
+Category=3
+Description="<html>Add or remove newline between 'union' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_union_brace\s*=\s*ignore|nl_union_brace\s*=\s*add|nl_union_brace\s*=\s*remove|nl_union_brace\s*=\s*force|nl_union_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Union Brace|Add Nl Union Brace|Remove Nl Union Brace|Force Nl Union Brace"
+ValueDefault=ignore
+
+[Nl If Brace]
+Category=3
+Description="<html>Add or remove newline between 'if' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_if_brace\s*=\s*ignore|nl_if_brace\s*=\s*add|nl_if_brace\s*=\s*remove|nl_if_brace\s*=\s*force|nl_if_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl If Brace|Add Nl If Brace|Remove Nl If Brace|Force Nl If Brace"
+ValueDefault=ignore
+
+[Nl Brace Else]
+Category=3
+Description="<html>Add or remove newline between '}' and 'else'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_else\s*=\s*ignore|nl_brace_else\s*=\s*add|nl_brace_else\s*=\s*remove|nl_brace_else\s*=\s*force|nl_brace_else\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace Else|Add Nl Brace Else|Remove Nl Brace Else|Force Nl Brace Else"
+ValueDefault=ignore
+
+[Nl Elseif Brace]
+Category=3
+Description="<html>Add or remove newline between 'else if' and '{'. If set to ignore,<br/>nl_if_brace is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_elseif_brace\s*=\s*ignore|nl_elseif_brace\s*=\s*add|nl_elseif_brace\s*=\s*remove|nl_elseif_brace\s*=\s*force|nl_elseif_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Elseif Brace|Add Nl Elseif Brace|Remove Nl Elseif Brace|Force Nl Elseif Brace"
+ValueDefault=ignore
+
+[Nl Else Brace]
+Category=3
+Description="<html>Add or remove newline between 'else' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_else_brace\s*=\s*ignore|nl_else_brace\s*=\s*add|nl_else_brace\s*=\s*remove|nl_else_brace\s*=\s*force|nl_else_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Else Brace|Add Nl Else Brace|Remove Nl Else Brace|Force Nl Else Brace"
+ValueDefault=ignore
+
+[Nl Else If]
+Category=3
+Description="<html>Add or remove newline between 'else' and 'if'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_else_if\s*=\s*ignore|nl_else_if\s*=\s*add|nl_else_if\s*=\s*remove|nl_else_if\s*=\s*force|nl_else_if\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Else If|Add Nl Else If|Remove Nl Else If|Force Nl Else If"
+ValueDefault=ignore
+
+[Nl Before Opening Brace Func Class Def]
+Category=3
+Description="<html>Add or remove newline before '{' opening brace</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_opening_brace_func_class_def\s*=\s*ignore|nl_before_opening_brace_func_class_def\s*=\s*add|nl_before_opening_brace_func_class_def\s*=\s*remove|nl_before_opening_brace_func_class_def\s*=\s*force|nl_before_opening_brace_func_class_def\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before Opening Brace Func Class Def|Add Nl Before Opening Brace Func Class Def|Remove Nl Before Opening Brace Func Class Def|Force Nl Before Opening Brace Func Class Def"
+ValueDefault=ignore
+
+[Nl Before If Closing Paren]
+Category=3
+Description="<html>Add or remove newline before 'if'/'else if' closing parenthesis.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_if_closing_paren\s*=\s*ignore|nl_before_if_closing_paren\s*=\s*add|nl_before_if_closing_paren\s*=\s*remove|nl_before_if_closing_paren\s*=\s*force|nl_before_if_closing_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before If Closing Paren|Add Nl Before If Closing Paren|Remove Nl Before If Closing Paren|Force Nl Before If Closing Paren"
+ValueDefault=ignore
+
+[Nl Brace Finally]
+Category=3
+Description="<html>Add or remove newline between '}' and 'finally'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_finally\s*=\s*ignore|nl_brace_finally\s*=\s*add|nl_brace_finally\s*=\s*remove|nl_brace_finally\s*=\s*force|nl_brace_finally\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace Finally|Add Nl Brace Finally|Remove Nl Brace Finally|Force Nl Brace Finally"
+ValueDefault=ignore
+
+[Nl Finally Brace]
+Category=3
+Description="<html>Add or remove newline between 'finally' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_finally_brace\s*=\s*ignore|nl_finally_brace\s*=\s*add|nl_finally_brace\s*=\s*remove|nl_finally_brace\s*=\s*force|nl_finally_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Finally Brace|Add Nl Finally Brace|Remove Nl Finally Brace|Force Nl Finally Brace"
+ValueDefault=ignore
+
+[Nl Try Brace]
+Category=3
+Description="<html>Add or remove newline between 'try' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_try_brace\s*=\s*ignore|nl_try_brace\s*=\s*add|nl_try_brace\s*=\s*remove|nl_try_brace\s*=\s*force|nl_try_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Try Brace|Add Nl Try Brace|Remove Nl Try Brace|Force Nl Try Brace"
+ValueDefault=ignore
+
+[Nl Getset Brace]
+Category=3
+Description="<html>Add or remove newline between get/set and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_getset_brace\s*=\s*ignore|nl_getset_brace\s*=\s*add|nl_getset_brace\s*=\s*remove|nl_getset_brace\s*=\s*force|nl_getset_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Getset Brace|Add Nl Getset Brace|Remove Nl Getset Brace|Force Nl Getset Brace"
+ValueDefault=ignore
+
+[Nl For Brace]
+Category=3
+Description="<html>Add or remove newline between 'for' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_for_brace\s*=\s*ignore|nl_for_brace\s*=\s*add|nl_for_brace\s*=\s*remove|nl_for_brace\s*=\s*force|nl_for_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl For Brace|Add Nl For Brace|Remove Nl For Brace|Force Nl For Brace"
+ValueDefault=ignore
+
+[Nl Catch Brace]
+Category=3
+Description="<html>Add or remove newline before the '{' of a 'catch' statement, as in<br/>'catch (decl) &lt;here&gt; {'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_catch_brace\s*=\s*ignore|nl_catch_brace\s*=\s*add|nl_catch_brace\s*=\s*remove|nl_catch_brace\s*=\s*force|nl_catch_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Catch Brace|Add Nl Catch Brace|Remove Nl Catch Brace|Force Nl Catch Brace"
+ValueDefault=ignore
+
+[Nl Oc Catch Brace]
+Category=3
+Description="<html>(OC) Add or remove newline before the '{' of a '@catch' statement, as in<br/>'@catch (decl) &lt;here&gt; {'. If set to ignore, nl_catch_brace is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_catch_brace\s*=\s*ignore|nl_oc_catch_brace\s*=\s*add|nl_oc_catch_brace\s*=\s*remove|nl_oc_catch_brace\s*=\s*force|nl_oc_catch_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Catch Brace|Add Nl Oc Catch Brace|Remove Nl Oc Catch Brace|Force Nl Oc Catch Brace"
+ValueDefault=ignore
+
+[Nl Brace Catch]
+Category=3
+Description="<html>Add or remove newline between '}' and 'catch'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_catch\s*=\s*ignore|nl_brace_catch\s*=\s*add|nl_brace_catch\s*=\s*remove|nl_brace_catch\s*=\s*force|nl_brace_catch\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace Catch|Add Nl Brace Catch|Remove Nl Brace Catch|Force Nl Brace Catch"
+ValueDefault=ignore
+
+[Nl Oc Brace Catch]
+Category=3
+Description="<html>(OC) Add or remove newline between '}' and '@catch'. If set to ignore,<br/>nl_brace_catch is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_brace_catch\s*=\s*ignore|nl_oc_brace_catch\s*=\s*add|nl_oc_brace_catch\s*=\s*remove|nl_oc_brace_catch\s*=\s*force|nl_oc_brace_catch\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Brace Catch|Add Nl Oc Brace Catch|Remove Nl Oc Brace Catch|Force Nl Oc Brace Catch"
+ValueDefault=ignore
+
+[Nl Brace Square]
+Category=3
+Description="<html>Add or remove newline between '}' and ']'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_square\s*=\s*ignore|nl_brace_square\s*=\s*add|nl_brace_square\s*=\s*remove|nl_brace_square\s*=\s*force|nl_brace_square\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace Square|Add Nl Brace Square|Remove Nl Brace Square|Force Nl Brace Square"
+ValueDefault=ignore
+
+[Nl Brace Fparen]
+Category=3
+Description="<html>Add or remove newline between '}' and ')' in a function invocation.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_fparen\s*=\s*ignore|nl_brace_fparen\s*=\s*add|nl_brace_fparen\s*=\s*remove|nl_brace_fparen\s*=\s*force|nl_brace_fparen\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace Fparen|Add Nl Brace Fparen|Remove Nl Brace Fparen|Force Nl Brace Fparen"
+ValueDefault=ignore
+
+[Nl While Brace]
+Category=3
+Description="<html>Add or remove newline between 'while' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_while_brace\s*=\s*ignore|nl_while_brace\s*=\s*add|nl_while_brace\s*=\s*remove|nl_while_brace\s*=\s*force|nl_while_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl While Brace|Add Nl While Brace|Remove Nl While Brace|Force Nl While Brace"
+ValueDefault=ignore
+
+[Nl Scope Brace]
+Category=3
+Description="<html>(D) Add or remove newline between 'scope (x)' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_scope_brace\s*=\s*ignore|nl_scope_brace\s*=\s*add|nl_scope_brace\s*=\s*remove|nl_scope_brace\s*=\s*force|nl_scope_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Scope Brace|Add Nl Scope Brace|Remove Nl Scope Brace|Force Nl Scope Brace"
+ValueDefault=ignore
+
+[Nl Unittest Brace]
+Category=3
+Description="<html>(D) Add or remove newline between 'unittest' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_unittest_brace\s*=\s*ignore|nl_unittest_brace\s*=\s*add|nl_unittest_brace\s*=\s*remove|nl_unittest_brace\s*=\s*force|nl_unittest_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Unittest Brace|Add Nl Unittest Brace|Remove Nl Unittest Brace|Force Nl Unittest Brace"
+ValueDefault=ignore
+
+[Nl Version Brace]
+Category=3
+Description="<html>(D) Add or remove newline between 'version (x)' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_version_brace\s*=\s*ignore|nl_version_brace\s*=\s*add|nl_version_brace\s*=\s*remove|nl_version_brace\s*=\s*force|nl_version_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Version Brace|Add Nl Version Brace|Remove Nl Version Brace|Force Nl Version Brace"
+ValueDefault=ignore
+
+[Nl Using Brace]
+Category=3
+Description="<html>(C#) Add or remove newline between 'using' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_using_brace\s*=\s*ignore|nl_using_brace\s*=\s*add|nl_using_brace\s*=\s*remove|nl_using_brace\s*=\s*force|nl_using_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Using Brace|Add Nl Using Brace|Remove Nl Using Brace|Force Nl Using Brace"
+ValueDefault=ignore
+
+[Nl Brace Brace]
+Category=3
+Description="<html>Add or remove newline between two open or close braces. Due to general<br/>newline/brace handling, REMOVE may not work.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_brace\s*=\s*ignore|nl_brace_brace\s*=\s*add|nl_brace_brace\s*=\s*remove|nl_brace_brace\s*=\s*force|nl_brace_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace Brace|Add Nl Brace Brace|Remove Nl Brace Brace|Force Nl Brace Brace"
+ValueDefault=ignore
+
+[Nl Do Brace]
+Category=3
+Description="<html>Add or remove newline between 'do' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_do_brace\s*=\s*ignore|nl_do_brace\s*=\s*add|nl_do_brace\s*=\s*remove|nl_do_brace\s*=\s*force|nl_do_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Do Brace|Add Nl Do Brace|Remove Nl Do Brace|Force Nl Do Brace"
+ValueDefault=ignore
+
+[Nl Brace While]
+Category=3
+Description="<html>Add or remove newline between '}' and 'while' of 'do' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_while\s*=\s*ignore|nl_brace_while\s*=\s*add|nl_brace_while\s*=\s*remove|nl_brace_while\s*=\s*force|nl_brace_while\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace While|Add Nl Brace While|Remove Nl Brace While|Force Nl Brace While"
+ValueDefault=ignore
+
+[Nl Switch Brace]
+Category=3
+Description="<html>Add or remove newline between 'switch' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_switch_brace\s*=\s*ignore|nl_switch_brace\s*=\s*add|nl_switch_brace\s*=\s*remove|nl_switch_brace\s*=\s*force|nl_switch_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Switch Brace|Add Nl Switch Brace|Remove Nl Switch Brace|Force Nl Switch Brace"
+ValueDefault=ignore
+
+[Nl Synchronized Brace]
+Category=3
+Description="<html>Add or remove newline between 'synchronized' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_synchronized_brace\s*=\s*ignore|nl_synchronized_brace\s*=\s*add|nl_synchronized_brace\s*=\s*remove|nl_synchronized_brace\s*=\s*force|nl_synchronized_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Synchronized Brace|Add Nl Synchronized Brace|Remove Nl Synchronized Brace|Force Nl Synchronized Brace"
+ValueDefault=ignore
+
+[Nl Multi Line Cond]
+Category=3
+Description="<html>Add a newline between ')' and '{' if the ')' is on a different line than the<br/>if/for/etc.<br/><br/>Overrides nl_for_brace, nl_if_brace, nl_switch_brace, nl_while_switch and<br/>nl_catch_brace.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_multi_line_cond\s*=\s*true|nl_multi_line_cond\s*=\s*false
+ValueDefault=false
+
+[Nl Multi Line Sparen Open]
+Category=3
+Description="<html>Add a newline after '(' if an if/for/while/switch condition spans multiple<br/>lines</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_multi_line_sparen_open\s*=\s*ignore|nl_multi_line_sparen_open\s*=\s*add|nl_multi_line_sparen_open\s*=\s*remove|nl_multi_line_sparen_open\s*=\s*force|nl_multi_line_sparen_open\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Multi Line Sparen Open|Add Nl Multi Line Sparen Open|Remove Nl Multi Line Sparen Open|Force Nl Multi Line Sparen Open"
+ValueDefault=ignore
+
+[Nl Multi Line Sparen Close]
+Category=3
+Description="<html>Add a newline before ')' if an if/for/while/switch condition spans multiple<br/>lines. Overrides nl_before_if_closing_paren if both are specified.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_multi_line_sparen_close\s*=\s*ignore|nl_multi_line_sparen_close\s*=\s*add|nl_multi_line_sparen_close\s*=\s*remove|nl_multi_line_sparen_close\s*=\s*force|nl_multi_line_sparen_close\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Multi Line Sparen Close|Add Nl Multi Line Sparen Close|Remove Nl Multi Line Sparen Close|Force Nl Multi Line Sparen Close"
+ValueDefault=ignore
+
+[Nl Multi Line Define]
+Category=3
+Description="<html>Force a newline in a define after the macro name for multi-line defines.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_multi_line_define\s*=\s*true|nl_multi_line_define\s*=\s*false
+ValueDefault=false
+
+[Nl Before Case]
+Category=3
+Description="<html>Whether to add a newline before 'case', and a blank line before a 'case'<br/>statement that follows a ';' or '}'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_before_case\s*=\s*true|nl_before_case\s*=\s*false
+ValueDefault=false
+
+[Nl After Case]
+Category=3
+Description="<html>Whether to add a newline after a 'case' statement.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_case\s*=\s*true|nl_after_case\s*=\s*false
+ValueDefault=false
+
+[Nl Case Colon Brace]
+Category=3
+Description="<html>Add or remove newline between a case ':' and '{'.<br/><br/>Overrides nl_after_case.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_case_colon_brace\s*=\s*ignore|nl_case_colon_brace\s*=\s*add|nl_case_colon_brace\s*=\s*remove|nl_case_colon_brace\s*=\s*force|nl_case_colon_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Case Colon Brace|Add Nl Case Colon Brace|Remove Nl Case Colon Brace|Force Nl Case Colon Brace"
+ValueDefault=ignore
+
+[Nl Before Throw]
+Category=3
+Description="<html>Add or remove newline between ')' and 'throw'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_throw\s*=\s*ignore|nl_before_throw\s*=\s*add|nl_before_throw\s*=\s*remove|nl_before_throw\s*=\s*force|nl_before_throw\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before Throw|Add Nl Before Throw|Remove Nl Before Throw|Force Nl Before Throw"
+ValueDefault=ignore
+
+[Nl Namespace Brace]
+Category=3
+Description="<html>Add or remove newline between 'namespace' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_namespace_brace\s*=\s*ignore|nl_namespace_brace\s*=\s*add|nl_namespace_brace\s*=\s*remove|nl_namespace_brace\s*=\s*force|nl_namespace_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Namespace Brace|Add Nl Namespace Brace|Remove Nl Namespace Brace|Force Nl Namespace Brace"
+ValueDefault=ignore
+
+[Nl Template Class]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template class.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_class\s*=\s*ignore|nl_template_class\s*=\s*add|nl_template_class\s*=\s*remove|nl_template_class\s*=\s*force|nl_template_class\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Class|Add Nl Template Class|Remove Nl Template Class|Force Nl Template Class"
+ValueDefault=ignore
+
+[Nl Template Class Decl]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template class declaration.<br/><br/>Overrides nl_template_class.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_class_decl\s*=\s*ignore|nl_template_class_decl\s*=\s*add|nl_template_class_decl\s*=\s*remove|nl_template_class_decl\s*=\s*force|nl_template_class_decl\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Class Decl|Add Nl Template Class Decl|Remove Nl Template Class Decl|Force Nl Template Class Decl"
+ValueDefault=ignore
+
+[Nl Template Class Decl Special]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized class declaration.<br/><br/>Overrides nl_template_class_decl.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_class_decl_special\s*=\s*ignore|nl_template_class_decl_special\s*=\s*add|nl_template_class_decl_special\s*=\s*remove|nl_template_class_decl_special\s*=\s*force|nl_template_class_decl_special\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Class Decl Special|Add Nl Template Class Decl Special|Remove Nl Template Class Decl Special|Force Nl Template Class Decl Special"
+ValueDefault=ignore
+
+[Nl Template Class Def]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template class definition.<br/><br/>Overrides nl_template_class.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_class_def\s*=\s*ignore|nl_template_class_def\s*=\s*add|nl_template_class_def\s*=\s*remove|nl_template_class_def\s*=\s*force|nl_template_class_def\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Class Def|Add Nl Template Class Def|Remove Nl Template Class Def|Force Nl Template Class Def"
+ValueDefault=ignore
+
+[Nl Template Class Def Special]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized class definition.<br/><br/>Overrides nl_template_class_def.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_class_def_special\s*=\s*ignore|nl_template_class_def_special\s*=\s*add|nl_template_class_def_special\s*=\s*remove|nl_template_class_def_special\s*=\s*force|nl_template_class_def_special\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Class Def Special|Add Nl Template Class Def Special|Remove Nl Template Class Def Special|Force Nl Template Class Def Special"
+ValueDefault=ignore
+
+[Nl Template Func]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template function.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_func\s*=\s*ignore|nl_template_func\s*=\s*add|nl_template_func\s*=\s*remove|nl_template_func\s*=\s*force|nl_template_func\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Func|Add Nl Template Func|Remove Nl Template Func|Force Nl Template Func"
+ValueDefault=ignore
+
+[Nl Template Func Decl]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template function<br/>declaration.<br/><br/>Overrides nl_template_func.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_func_decl\s*=\s*ignore|nl_template_func_decl\s*=\s*add|nl_template_func_decl\s*=\s*remove|nl_template_func_decl\s*=\s*force|nl_template_func_decl\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Func Decl|Add Nl Template Func Decl|Remove Nl Template Func Decl|Force Nl Template Func Decl"
+ValueDefault=ignore
+
+[Nl Template Func Decl Special]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized function<br/>declaration.<br/><br/>Overrides nl_template_func_decl.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_func_decl_special\s*=\s*ignore|nl_template_func_decl_special\s*=\s*add|nl_template_func_decl_special\s*=\s*remove|nl_template_func_decl_special\s*=\s*force|nl_template_func_decl_special\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Func Decl Special|Add Nl Template Func Decl Special|Remove Nl Template Func Decl Special|Force Nl Template Func Decl Special"
+ValueDefault=ignore
+
+[Nl Template Func Def]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template function<br/>definition.<br/><br/>Overrides nl_template_func.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_func_def\s*=\s*ignore|nl_template_func_def\s*=\s*add|nl_template_func_def\s*=\s*remove|nl_template_func_def\s*=\s*force|nl_template_func_def\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Func Def|Add Nl Template Func Def|Remove Nl Template Func Def|Force Nl Template Func Def"
+ValueDefault=ignore
+
+[Nl Template Func Def Special]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized function<br/>definition.<br/><br/>Overrides nl_template_func_def.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_func_def_special\s*=\s*ignore|nl_template_func_def_special\s*=\s*add|nl_template_func_def_special\s*=\s*remove|nl_template_func_def_special\s*=\s*force|nl_template_func_def_special\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Func Def Special|Add Nl Template Func Def Special|Remove Nl Template Func Def Special|Force Nl Template Func Def Special"
+ValueDefault=ignore
+
+[Nl Template Var]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template variable.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_var\s*=\s*ignore|nl_template_var\s*=\s*add|nl_template_var\s*=\s*remove|nl_template_var\s*=\s*force|nl_template_var\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Var|Add Nl Template Var|Remove Nl Template Var|Force Nl Template Var"
+ValueDefault=ignore
+
+[Nl Template Using]
+Category=3
+Description="<html>Add or remove newline between 'template&lt;...&gt;' and 'using' of a templated<br/>type alias.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_using\s*=\s*ignore|nl_template_using\s*=\s*add|nl_template_using\s*=\s*remove|nl_template_using\s*=\s*force|nl_template_using\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Using|Add Nl Template Using|Remove Nl Template Using|Force Nl Template Using"
+ValueDefault=ignore
+
+[Nl Class Brace]
+Category=3
+Description="<html>Add or remove newline between 'class' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_class_brace\s*=\s*ignore|nl_class_brace\s*=\s*add|nl_class_brace\s*=\s*remove|nl_class_brace\s*=\s*force|nl_class_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Class Brace|Add Nl Class Brace|Remove Nl Class Brace|Force Nl Class Brace"
+ValueDefault=ignore
+
+[Nl Class Init Args]
+Category=3
+Description="<html>Add or remove newline before or after (depending on pos_class_comma,<br/>may not be IGNORE) each',' in the base class list.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_class_init_args\s*=\s*ignore|nl_class_init_args\s*=\s*add|nl_class_init_args\s*=\s*remove|nl_class_init_args\s*=\s*force|nl_class_init_args\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Class Init Args|Add Nl Class Init Args|Remove Nl Class Init Args|Force Nl Class Init Args"
+ValueDefault=ignore
+
+[Nl Constr Init Args]
+Category=3
+Description="<html>Add or remove newline after each ',' in the constructor member<br/>initialization. Related to nl_constr_colon, pos_constr_colon and<br/>pos_constr_comma.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_constr_init_args\s*=\s*ignore|nl_constr_init_args\s*=\s*add|nl_constr_init_args\s*=\s*remove|nl_constr_init_args\s*=\s*force|nl_constr_init_args\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Constr Init Args|Add Nl Constr Init Args|Remove Nl Constr Init Args|Force Nl Constr Init Args"
+ValueDefault=ignore
+
+[Nl Enum Own Lines]
+Category=3
+Description="<html>Add or remove newline before first element, after comma, and after last<br/>element, in 'enum'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_enum_own_lines\s*=\s*ignore|nl_enum_own_lines\s*=\s*add|nl_enum_own_lines\s*=\s*remove|nl_enum_own_lines\s*=\s*force|nl_enum_own_lines\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Enum Own Lines|Add Nl Enum Own Lines|Remove Nl Enum Own Lines|Force Nl Enum Own Lines"
+ValueDefault=ignore
+
+[Nl Func Type Name]
+Category=3
+Description="<html>Add or remove newline between return type and function name in a function<br/>definition.<br/>might be modified by nl_func_leave_one_liners</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_type_name\s*=\s*ignore|nl_func_type_name\s*=\s*add|nl_func_type_name\s*=\s*remove|nl_func_type_name\s*=\s*force|nl_func_type_name\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Type Name|Add Nl Func Type Name|Remove Nl Func Type Name|Force Nl Func Type Name"
+ValueDefault=ignore
+
+[Nl Func Type Name Class]
+Category=3
+Description="<html>Add or remove newline between return type and function name inside a class<br/>definition. If set to ignore, nl_func_type_name or nl_func_proto_type_name<br/>is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_type_name_class\s*=\s*ignore|nl_func_type_name_class\s*=\s*add|nl_func_type_name_class\s*=\s*remove|nl_func_type_name_class\s*=\s*force|nl_func_type_name_class\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Type Name Class|Add Nl Func Type Name Class|Remove Nl Func Type Name Class|Force Nl Func Type Name Class"
+ValueDefault=ignore
+
+[Nl Func Class Scope]
+Category=3
+Description="<html>Add or remove newline between class specification and '::'<br/>in 'void A::f() { }'. Only appears in separate member implementation (does<br/>not appear with in-line implementation).</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_class_scope\s*=\s*ignore|nl_func_class_scope\s*=\s*add|nl_func_class_scope\s*=\s*remove|nl_func_class_scope\s*=\s*force|nl_func_class_scope\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Class Scope|Add Nl Func Class Scope|Remove Nl Func Class Scope|Force Nl Func Class Scope"
+ValueDefault=ignore
+
+[Nl Func Scope Name]
+Category=3
+Description="<html>Add or remove newline between function scope and name, as in<br/>'void A :: &lt;here&gt; f() { }'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_scope_name\s*=\s*ignore|nl_func_scope_name\s*=\s*add|nl_func_scope_name\s*=\s*remove|nl_func_scope_name\s*=\s*force|nl_func_scope_name\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Scope Name|Add Nl Func Scope Name|Remove Nl Func Scope Name|Force Nl Func Scope Name"
+ValueDefault=ignore
+
+[Nl Func Proto Type Name]
+Category=3
+Description="<html>Add or remove newline between return type and function name in a prototype.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_proto_type_name\s*=\s*ignore|nl_func_proto_type_name\s*=\s*add|nl_func_proto_type_name\s*=\s*remove|nl_func_proto_type_name\s*=\s*force|nl_func_proto_type_name\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Proto Type Name|Add Nl Func Proto Type Name|Remove Nl Func Proto Type Name|Force Nl Func Proto Type Name"
+ValueDefault=ignore
+
+[Nl Func Paren]
+Category=3
+Description="<html>Add or remove newline between a function name and the opening '(' in the<br/>declaration.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_paren\s*=\s*ignore|nl_func_paren\s*=\s*add|nl_func_paren\s*=\s*remove|nl_func_paren\s*=\s*force|nl_func_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Paren|Add Nl Func Paren|Remove Nl Func Paren|Force Nl Func Paren"
+ValueDefault=ignore
+
+[Nl Func Paren Empty]
+Category=3
+Description="<html>Overrides nl_func_paren for functions with no parameters.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_paren_empty\s*=\s*ignore|nl_func_paren_empty\s*=\s*add|nl_func_paren_empty\s*=\s*remove|nl_func_paren_empty\s*=\s*force|nl_func_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Paren Empty|Add Nl Func Paren Empty|Remove Nl Func Paren Empty|Force Nl Func Paren Empty"
+ValueDefault=ignore
+
+[Nl Func Def Paren]
+Category=3
+Description="<html>Add or remove newline between a function name and the opening '(' in the<br/>definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_paren\s*=\s*ignore|nl_func_def_paren\s*=\s*add|nl_func_def_paren\s*=\s*remove|nl_func_def_paren\s*=\s*force|nl_func_def_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def Paren|Add Nl Func Def Paren|Remove Nl Func Def Paren|Force Nl Func Def Paren"
+ValueDefault=ignore
+
+[Nl Func Def Paren Empty]
+Category=3
+Description="<html>Overrides nl_func_def_paren for functions with no parameters.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_paren_empty\s*=\s*ignore|nl_func_def_paren_empty\s*=\s*add|nl_func_def_paren_empty\s*=\s*remove|nl_func_def_paren_empty\s*=\s*force|nl_func_def_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def Paren Empty|Add Nl Func Def Paren Empty|Remove Nl Func Def Paren Empty|Force Nl Func Def Paren Empty"
+ValueDefault=ignore
+
+[Nl Func Call Paren]
+Category=3
+Description="<html>Add or remove newline between a function name and the opening '(' in the<br/>call.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_call_paren\s*=\s*ignore|nl_func_call_paren\s*=\s*add|nl_func_call_paren\s*=\s*remove|nl_func_call_paren\s*=\s*force|nl_func_call_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Call Paren|Add Nl Func Call Paren|Remove Nl Func Call Paren|Force Nl Func Call Paren"
+ValueDefault=ignore
+
+[Nl Func Call Paren Empty]
+Category=3
+Description="<html>Overrides nl_func_call_paren for functions with no parameters.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_call_paren_empty\s*=\s*ignore|nl_func_call_paren_empty\s*=\s*add|nl_func_call_paren_empty\s*=\s*remove|nl_func_call_paren_empty\s*=\s*force|nl_func_call_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Call Paren Empty|Add Nl Func Call Paren Empty|Remove Nl Func Call Paren Empty|Force Nl Func Call Paren Empty"
+ValueDefault=ignore
+
+[Nl Func Decl Start]
+Category=3
+Description="<html>Add or remove newline after '(' in a function declaration.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_decl_start\s*=\s*ignore|nl_func_decl_start\s*=\s*add|nl_func_decl_start\s*=\s*remove|nl_func_decl_start\s*=\s*force|nl_func_decl_start\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Decl Start|Add Nl Func Decl Start|Remove Nl Func Decl Start|Force Nl Func Decl Start"
+ValueDefault=ignore
+
+[Nl Func Def Start]
+Category=3
+Description="<html>Add or remove newline after '(' in a function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_start\s*=\s*ignore|nl_func_def_start\s*=\s*add|nl_func_def_start\s*=\s*remove|nl_func_def_start\s*=\s*force|nl_func_def_start\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def Start|Add Nl Func Def Start|Remove Nl Func Def Start|Force Nl Func Def Start"
+ValueDefault=ignore
+
+[Nl Func Decl Start Single]
+Category=3
+Description="<html>Overrides nl_func_decl_start when there is only one parameter.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_decl_start_single\s*=\s*ignore|nl_func_decl_start_single\s*=\s*add|nl_func_decl_start_single\s*=\s*remove|nl_func_decl_start_single\s*=\s*force|nl_func_decl_start_single\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Decl Start Single|Add Nl Func Decl Start Single|Remove Nl Func Decl Start Single|Force Nl Func Decl Start Single"
+ValueDefault=ignore
+
+[Nl Func Def Start Single]
+Category=3
+Description="<html>Overrides nl_func_def_start when there is only one parameter.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_start_single\s*=\s*ignore|nl_func_def_start_single\s*=\s*add|nl_func_def_start_single\s*=\s*remove|nl_func_def_start_single\s*=\s*force|nl_func_def_start_single\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def Start Single|Add Nl Func Def Start Single|Remove Nl Func Def Start Single|Force Nl Func Def Start Single"
+ValueDefault=ignore
+
+[Nl Func Decl Start Multi Line]
+Category=3
+Description="<html>Whether to add a newline after '(' in a function declaration if '(' and ')'<br/>are in different lines. If false, nl_func_decl_start is used instead.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_decl_start_multi_line\s*=\s*true|nl_func_decl_start_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Def Start Multi Line]
+Category=3
+Description="<html>Whether to add a newline after '(' in a function definition if '(' and ')'<br/>are in different lines. If false, nl_func_def_start is used instead.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_def_start_multi_line\s*=\s*true|nl_func_def_start_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Decl Args]
+Category=3
+Description="<html>Add or remove newline after each ',' in a function declaration.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_decl_args\s*=\s*ignore|nl_func_decl_args\s*=\s*add|nl_func_decl_args\s*=\s*remove|nl_func_decl_args\s*=\s*force|nl_func_decl_args\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Decl Args|Add Nl Func Decl Args|Remove Nl Func Decl Args|Force Nl Func Decl Args"
+ValueDefault=ignore
+
+[Nl Func Def Args]
+Category=3
+Description="<html>Add or remove newline after each ',' in a function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_args\s*=\s*ignore|nl_func_def_args\s*=\s*add|nl_func_def_args\s*=\s*remove|nl_func_def_args\s*=\s*force|nl_func_def_args\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def Args|Add Nl Func Def Args|Remove Nl Func Def Args|Force Nl Func Def Args"
+ValueDefault=ignore
+
+[Nl Func Call Args]
+Category=3
+Description="<html>Add or remove newline after each ',' in a function call.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_call_args\s*=\s*ignore|nl_func_call_args\s*=\s*add|nl_func_call_args\s*=\s*remove|nl_func_call_args\s*=\s*force|nl_func_call_args\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Call Args|Add Nl Func Call Args|Remove Nl Func Call Args|Force Nl Func Call Args"
+ValueDefault=ignore
+
+[Nl Func Decl Args Multi Line]
+Category=3
+Description="<html>Whether to add a newline after each ',' in a function declaration if '('<br/>and ')' are in different lines. If false, nl_func_decl_args is used instead.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_decl_args_multi_line\s*=\s*true|nl_func_decl_args_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Def Args Multi Line]
+Category=3
+Description="<html>Whether to add a newline after each ',' in a function definition if '('<br/>and ')' are in different lines. If false, nl_func_def_args is used instead.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_def_args_multi_line\s*=\s*true|nl_func_def_args_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Decl End]
+Category=3
+Description="<html>Add or remove newline before the ')' in a function declaration.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_decl_end\s*=\s*ignore|nl_func_decl_end\s*=\s*add|nl_func_decl_end\s*=\s*remove|nl_func_decl_end\s*=\s*force|nl_func_decl_end\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Decl End|Add Nl Func Decl End|Remove Nl Func Decl End|Force Nl Func Decl End"
+ValueDefault=ignore
+
+[Nl Func Def End]
+Category=3
+Description="<html>Add or remove newline before the ')' in a function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_end\s*=\s*ignore|nl_func_def_end\s*=\s*add|nl_func_def_end\s*=\s*remove|nl_func_def_end\s*=\s*force|nl_func_def_end\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def End|Add Nl Func Def End|Remove Nl Func Def End|Force Nl Func Def End"
+ValueDefault=ignore
+
+[Nl Func Decl End Single]
+Category=3
+Description="<html>Overrides nl_func_decl_end when there is only one parameter.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_decl_end_single\s*=\s*ignore|nl_func_decl_end_single\s*=\s*add|nl_func_decl_end_single\s*=\s*remove|nl_func_decl_end_single\s*=\s*force|nl_func_decl_end_single\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Decl End Single|Add Nl Func Decl End Single|Remove Nl Func Decl End Single|Force Nl Func Decl End Single"
+ValueDefault=ignore
+
+[Nl Func Def End Single]
+Category=3
+Description="<html>Overrides nl_func_def_end when there is only one parameter.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_end_single\s*=\s*ignore|nl_func_def_end_single\s*=\s*add|nl_func_def_end_single\s*=\s*remove|nl_func_def_end_single\s*=\s*force|nl_func_def_end_single\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def End Single|Add Nl Func Def End Single|Remove Nl Func Def End Single|Force Nl Func Def End Single"
+ValueDefault=ignore
+
+[Nl Func Decl End Multi Line]
+Category=3
+Description="<html>Whether to add a newline before ')' in a function declaration if '(' and ')'<br/>are in different lines. If false, nl_func_decl_end is used instead.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_decl_end_multi_line\s*=\s*true|nl_func_decl_end_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Def End Multi Line]
+Category=3
+Description="<html>Whether to add a newline before ')' in a function definition if '(' and ')'<br/>are in different lines. If false, nl_func_def_end is used instead.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_def_end_multi_line\s*=\s*true|nl_func_def_end_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Decl Empty]
+Category=3
+Description="<html>Add or remove newline between '()' in a function declaration.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_decl_empty\s*=\s*ignore|nl_func_decl_empty\s*=\s*add|nl_func_decl_empty\s*=\s*remove|nl_func_decl_empty\s*=\s*force|nl_func_decl_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Decl Empty|Add Nl Func Decl Empty|Remove Nl Func Decl Empty|Force Nl Func Decl Empty"
+ValueDefault=ignore
+
+[Nl Func Def Empty]
+Category=3
+Description="<html>Add or remove newline between '()' in a function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_empty\s*=\s*ignore|nl_func_def_empty\s*=\s*add|nl_func_def_empty\s*=\s*remove|nl_func_def_empty\s*=\s*force|nl_func_def_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def Empty|Add Nl Func Def Empty|Remove Nl Func Def Empty|Force Nl Func Def Empty"
+ValueDefault=ignore
+
+[Nl Func Call Empty]
+Category=3
+Description="<html>Add or remove newline between '()' in a function call.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_call_empty\s*=\s*ignore|nl_func_call_empty\s*=\s*add|nl_func_call_empty\s*=\s*remove|nl_func_call_empty\s*=\s*force|nl_func_call_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Call Empty|Add Nl Func Call Empty|Remove Nl Func Call Empty|Force Nl Func Call Empty"
+ValueDefault=ignore
+
+[Nl Func Call Start]
+Category=3
+Description="<html>Whether to add a newline after '(' in a function call,<br/>has preference over nl_func_call_start_multi_line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_call_start\s*=\s*ignore|nl_func_call_start\s*=\s*add|nl_func_call_start\s*=\s*remove|nl_func_call_start\s*=\s*force|nl_func_call_start\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Call Start|Add Nl Func Call Start|Remove Nl Func Call Start|Force Nl Func Call Start"
+ValueDefault=ignore
+
+[Nl Func Call End]
+Category=3
+Description="<html>Whether to add a newline before ')' in a function call.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_call_end\s*=\s*ignore|nl_func_call_end\s*=\s*add|nl_func_call_end\s*=\s*remove|nl_func_call_end\s*=\s*force|nl_func_call_end\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Call End|Add Nl Func Call End|Remove Nl Func Call End|Force Nl Func Call End"
+ValueDefault=ignore
+
+[Nl Func Call Start Multi Line]
+Category=3
+Description="<html>Whether to add a newline after '(' in a function call if '(' and ')' are in<br/>different lines.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_call_start_multi_line\s*=\s*true|nl_func_call_start_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Call Args Multi Line]
+Category=3
+Description="<html>Whether to add a newline after each ',' in a function call if '(' and ')'<br/>are in different lines.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_call_args_multi_line\s*=\s*true|nl_func_call_args_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Call End Multi Line]
+Category=3
+Description="<html>Whether to add a newline before ')' in a function call if '(' and ')' are in<br/>different lines.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_call_end_multi_line\s*=\s*true|nl_func_call_end_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Call Args Multi Line Ignore Closures]
+Category=3
+Description="<html>Whether to respect nl_func_call_XXX option in case of closure args.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_call_args_multi_line_ignore_closures\s*=\s*true|nl_func_call_args_multi_line_ignore_closures\s*=\s*false
+ValueDefault=false
+
+[Nl Template Start]
+Category=3
+Description="<html>Whether to add a newline after '&lt;' of a template parameter list.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_template_start\s*=\s*true|nl_template_start\s*=\s*false
+ValueDefault=false
+
+[Nl Template Args]
+Category=3
+Description="<html>Whether to add a newline after each ',' in a template parameter list.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_template_args\s*=\s*true|nl_template_args\s*=\s*false
+ValueDefault=false
+
+[Nl Template End]
+Category=3
+Description="<html>Whether to add a newline before '&gt;' of a template parameter list.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_template_end\s*=\s*true|nl_template_end\s*=\s*false
+ValueDefault=false
+
+[Nl Oc Msg Args]
+Category=3
+Description="<html>(OC) Whether to put each Objective-C message parameter on a separate line.<br/>See nl_oc_msg_leave_one_liner.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_oc_msg_args\s*=\s*true|nl_oc_msg_args\s*=\s*false
+ValueDefault=false
+
+[Nl Oc Msg Args Min Params]
+Category=3
+Description="<html>(OC) Minimum number of Objective-C message parameters before applying nl_oc_msg_args.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_oc_msg_args_min_params\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Oc Msg Args Max Code Width]
+Category=3
+Description="<html>(OC) Max code width of Objective-C message before applying nl_oc_msg_args.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_oc_msg_args_max_code_width\s*=\s*"
+MinVal=0
+MaxVal=10000
+ValueDefault=0
+
+[Nl Fdef Brace]
+Category=3
+Description="<html>Add or remove newline between function signature and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_fdef_brace\s*=\s*ignore|nl_fdef_brace\s*=\s*add|nl_fdef_brace\s*=\s*remove|nl_fdef_brace\s*=\s*force|nl_fdef_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Fdef Brace|Add Nl Fdef Brace|Remove Nl Fdef Brace|Force Nl Fdef Brace"
+ValueDefault=ignore
+
+[Nl Fdef Brace Cond]
+Category=3
+Description="<html>Add or remove newline between function signature and '{',<br/>if signature ends with ')'. Overrides nl_fdef_brace.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_fdef_brace_cond\s*=\s*ignore|nl_fdef_brace_cond\s*=\s*add|nl_fdef_brace_cond\s*=\s*remove|nl_fdef_brace_cond\s*=\s*force|nl_fdef_brace_cond\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Fdef Brace Cond|Add Nl Fdef Brace Cond|Remove Nl Fdef Brace Cond|Force Nl Fdef Brace Cond"
+ValueDefault=ignore
+
+[Nl Cpp Ldef Brace]
+Category=3
+Description="<html>Add or remove newline between C++11 lambda signature and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_cpp_ldef_brace\s*=\s*ignore|nl_cpp_ldef_brace\s*=\s*add|nl_cpp_ldef_brace\s*=\s*remove|nl_cpp_ldef_brace\s*=\s*force|nl_cpp_ldef_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Cpp Ldef Brace|Add Nl Cpp Ldef Brace|Remove Nl Cpp Ldef Brace|Force Nl Cpp Ldef Brace"
+ValueDefault=ignore
+
+[Nl Return Expr]
+Category=3
+Description="<html>Add or remove newline between 'return' and the return expression.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_return_expr\s*=\s*ignore|nl_return_expr\s*=\s*add|nl_return_expr\s*=\s*remove|nl_return_expr\s*=\s*force|nl_return_expr\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Return Expr|Add Nl Return Expr|Remove Nl Return Expr|Force Nl Return Expr"
+ValueDefault=ignore
+
+[Nl Throw Expr]
+Category=3
+Description="<html>Add or remove newline between 'throw' and the throw expression.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_throw_expr\s*=\s*ignore|nl_throw_expr\s*=\s*add|nl_throw_expr\s*=\s*remove|nl_throw_expr\s*=\s*force|nl_throw_expr\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Throw Expr|Add Nl Throw Expr|Remove Nl Throw Expr|Force Nl Throw Expr"
+ValueDefault=ignore
+
+[Nl After Semicolon]
+Category=3
+Description="<html>Whether to add a newline after semicolons, except in 'for' statements.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_semicolon\s*=\s*true|nl_after_semicolon\s*=\s*false
+ValueDefault=false
+
+[Nl Paren Dbrace Open]
+Category=3
+Description="<html>(Java) Add or remove newline between the ')' and '{{' of the double brace<br/>initializer.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_paren_dbrace_open\s*=\s*ignore|nl_paren_dbrace_open\s*=\s*add|nl_paren_dbrace_open\s*=\s*remove|nl_paren_dbrace_open\s*=\s*force|nl_paren_dbrace_open\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Paren Dbrace Open|Add Nl Paren Dbrace Open|Remove Nl Paren Dbrace Open|Force Nl Paren Dbrace Open"
+ValueDefault=ignore
+
+[Nl Type Brace Init Lst]
+Category=3
+Description="<html>Whether to add a newline after the type in an unnamed temporary<br/>direct-list-initialization, better:<br/>before a direct-list-initialization.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_type_brace_init_lst\s*=\s*ignore|nl_type_brace_init_lst\s*=\s*add|nl_type_brace_init_lst\s*=\s*remove|nl_type_brace_init_lst\s*=\s*force|nl_type_brace_init_lst\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Type Brace Init Lst|Add Nl Type Brace Init Lst|Remove Nl Type Brace Init Lst|Force Nl Type Brace Init Lst"
+ValueDefault=ignore
+
+[Nl Type Brace Init Lst Open]
+Category=3
+Description="<html>Whether to add a newline after the open brace in an unnamed temporary<br/>direct-list-initialization.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_type_brace_init_lst_open\s*=\s*ignore|nl_type_brace_init_lst_open\s*=\s*add|nl_type_brace_init_lst_open\s*=\s*remove|nl_type_brace_init_lst_open\s*=\s*force|nl_type_brace_init_lst_open\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Type Brace Init Lst Open|Add Nl Type Brace Init Lst Open|Remove Nl Type Brace Init Lst Open|Force Nl Type Brace Init Lst Open"
+ValueDefault=ignore
+
+[Nl Type Brace Init Lst Close]
+Category=3
+Description="<html>Whether to add a newline before the close brace in an unnamed temporary<br/>direct-list-initialization.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_type_brace_init_lst_close\s*=\s*ignore|nl_type_brace_init_lst_close\s*=\s*add|nl_type_brace_init_lst_close\s*=\s*remove|nl_type_brace_init_lst_close\s*=\s*force|nl_type_brace_init_lst_close\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Type Brace Init Lst Close|Add Nl Type Brace Init Lst Close|Remove Nl Type Brace Init Lst Close|Force Nl Type Brace Init Lst Close"
+ValueDefault=ignore
+
+[Nl Before Brace Open]
+Category=3
+Description="<html>Whether to add a newline before '{'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_before_brace_open\s*=\s*true|nl_before_brace_open\s*=\s*false
+ValueDefault=false
+
+[Nl After Brace Open]
+Category=3
+Description="<html>Whether to add a newline after '{'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_brace_open\s*=\s*true|nl_after_brace_open\s*=\s*false
+ValueDefault=false
+
+[Nl After Brace Open Cmt]
+Category=3
+Description="<html>Whether to add a newline between the open brace and a trailing single-line<br/>comment. Requires nl_after_brace_open=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_brace_open_cmt\s*=\s*true|nl_after_brace_open_cmt\s*=\s*false
+ValueDefault=false
+
+[Nl After Vbrace Open]
+Category=3
+Description="<html>Whether to add a newline after a virtual brace open with a non-empty body.<br/>These occur in un-braced if/while/do/for statement bodies.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_vbrace_open\s*=\s*true|nl_after_vbrace_open\s*=\s*false
+ValueDefault=false
+
+[Nl After Vbrace Open Empty]
+Category=3
+Description="<html>Whether to add a newline after a virtual brace open with an empty body.<br/>These occur in un-braced if/while/do/for statement bodies.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_vbrace_open_empty\s*=\s*true|nl_after_vbrace_open_empty\s*=\s*false
+ValueDefault=false
+
+[Nl After Brace Close]
+Category=3
+Description="<html>Whether to add a newline after '}'. Does not apply if followed by a<br/>necessary ';'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_brace_close\s*=\s*true|nl_after_brace_close\s*=\s*false
+ValueDefault=false
+
+[Nl After Vbrace Close]
+Category=3
+Description="<html>Whether to add a newline after a virtual brace close,<br/>as in 'if (foo) a++; &lt;here&gt; return;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_vbrace_close\s*=\s*true|nl_after_vbrace_close\s*=\s*false
+ValueDefault=false
+
+[Nl Brace Struct Var]
+Category=3
+Description="<html>Add or remove newline between the close brace and identifier,<br/>as in 'struct { int a; } &lt;here&gt; b;'. Affects enumerations, unions and<br/>structures. If set to ignore, uses nl_after_brace_close.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_struct_var\s*=\s*ignore|nl_brace_struct_var\s*=\s*add|nl_brace_struct_var\s*=\s*remove|nl_brace_struct_var\s*=\s*force|nl_brace_struct_var\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace Struct Var|Add Nl Brace Struct Var|Remove Nl Brace Struct Var|Force Nl Brace Struct Var"
+ValueDefault=ignore
+
+[Nl Define Macro]
+Category=3
+Description="<html>Whether to alter newlines in '#define' macros.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_define_macro\s*=\s*true|nl_define_macro\s*=\s*false
+ValueDefault=false
+
+[Nl Squeeze Paren Close]
+Category=3
+Description="<html>Whether to alter newlines between consecutive parenthesis closes. The number<br/>of closing parentheses in a line will depend on respective open parenthesis<br/>lines.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_squeeze_paren_close\s*=\s*true|nl_squeeze_paren_close\s*=\s*false
+ValueDefault=false
+
+[Nl Squeeze Ifdef]
+Category=3
+Description="<html>Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and<br/>'#endif'. Does not affect top-level #ifdefs.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_squeeze_ifdef\s*=\s*true|nl_squeeze_ifdef\s*=\s*false
+ValueDefault=false
+
+[Nl Squeeze Ifdef Top Level]
+Category=3
+Description="<html>Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_squeeze_ifdef_top_level\s*=\s*true|nl_squeeze_ifdef_top_level\s*=\s*false
+ValueDefault=false
+
+[Nl Before If]
+Category=3
+Description="<html>Add or remove blank line before 'if'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_if\s*=\s*ignore|nl_before_if\s*=\s*add|nl_before_if\s*=\s*remove|nl_before_if\s*=\s*force|nl_before_if\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before If|Add Nl Before If|Remove Nl Before If|Force Nl Before If"
+ValueDefault=ignore
+
+[Nl After If]
+Category=3
+Description="<html>Add or remove blank line after 'if' statement. Add/Force work only if the<br/>next token is not a closing brace.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_if\s*=\s*ignore|nl_after_if\s*=\s*add|nl_after_if\s*=\s*remove|nl_after_if\s*=\s*force|nl_after_if\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After If|Add Nl After If|Remove Nl After If|Force Nl After If"
+ValueDefault=ignore
+
+[Nl Before For]
+Category=3
+Description="<html>Add or remove blank line before 'for'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_for\s*=\s*ignore|nl_before_for\s*=\s*add|nl_before_for\s*=\s*remove|nl_before_for\s*=\s*force|nl_before_for\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before For|Add Nl Before For|Remove Nl Before For|Force Nl Before For"
+ValueDefault=ignore
+
+[Nl After For]
+Category=3
+Description="<html>Add or remove blank line after 'for' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_for\s*=\s*ignore|nl_after_for\s*=\s*add|nl_after_for\s*=\s*remove|nl_after_for\s*=\s*force|nl_after_for\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After For|Add Nl After For|Remove Nl After For|Force Nl After For"
+ValueDefault=ignore
+
+[Nl Before While]
+Category=3
+Description="<html>Add or remove blank line before 'while'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_while\s*=\s*ignore|nl_before_while\s*=\s*add|nl_before_while\s*=\s*remove|nl_before_while\s*=\s*force|nl_before_while\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before While|Add Nl Before While|Remove Nl Before While|Force Nl Before While"
+ValueDefault=ignore
+
+[Nl After While]
+Category=3
+Description="<html>Add or remove blank line after 'while' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_while\s*=\s*ignore|nl_after_while\s*=\s*add|nl_after_while\s*=\s*remove|nl_after_while\s*=\s*force|nl_after_while\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After While|Add Nl After While|Remove Nl After While|Force Nl After While"
+ValueDefault=ignore
+
+[Nl Before Switch]
+Category=3
+Description="<html>Add or remove blank line before 'switch'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_switch\s*=\s*ignore|nl_before_switch\s*=\s*add|nl_before_switch\s*=\s*remove|nl_before_switch\s*=\s*force|nl_before_switch\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before Switch|Add Nl Before Switch|Remove Nl Before Switch|Force Nl Before Switch"
+ValueDefault=ignore
+
+[Nl After Switch]
+Category=3
+Description="<html>Add or remove blank line after 'switch' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_switch\s*=\s*ignore|nl_after_switch\s*=\s*add|nl_after_switch\s*=\s*remove|nl_after_switch\s*=\s*force|nl_after_switch\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After Switch|Add Nl After Switch|Remove Nl After Switch|Force Nl After Switch"
+ValueDefault=ignore
+
+[Nl Before Synchronized]
+Category=3
+Description="<html>Add or remove blank line before 'synchronized'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_synchronized\s*=\s*ignore|nl_before_synchronized\s*=\s*add|nl_before_synchronized\s*=\s*remove|nl_before_synchronized\s*=\s*force|nl_before_synchronized\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before Synchronized|Add Nl Before Synchronized|Remove Nl Before Synchronized|Force Nl Before Synchronized"
+ValueDefault=ignore
+
+[Nl After Synchronized]
+Category=3
+Description="<html>Add or remove blank line after 'synchronized' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_synchronized\s*=\s*ignore|nl_after_synchronized\s*=\s*add|nl_after_synchronized\s*=\s*remove|nl_after_synchronized\s*=\s*force|nl_after_synchronized\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After Synchronized|Add Nl After Synchronized|Remove Nl After Synchronized|Force Nl After Synchronized"
+ValueDefault=ignore
+
+[Nl Before Do]
+Category=3
+Description="<html>Add or remove blank line before 'do'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_do\s*=\s*ignore|nl_before_do\s*=\s*add|nl_before_do\s*=\s*remove|nl_before_do\s*=\s*force|nl_before_do\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before Do|Add Nl Before Do|Remove Nl Before Do|Force Nl Before Do"
+ValueDefault=ignore
+
+[Nl After Do]
+Category=3
+Description="<html>Add or remove blank line after 'do/while' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_do\s*=\s*ignore|nl_after_do\s*=\s*add|nl_after_do\s*=\s*remove|nl_after_do\s*=\s*force|nl_after_do\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After Do|Add Nl After Do|Remove Nl After Do|Force Nl After Do"
+ValueDefault=ignore
+
+[Nl Before Ignore After Case]
+Category=3
+Description="<html>Ignore nl_before_{if,for,switch,do,synchronized} if the control<br/>statement is immediately after a case statement.<br/>if nl_before_{if,for,switch,do} is set to remove, this option<br/>does nothing.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_before_ignore_after_case\s*=\s*true|nl_before_ignore_after_case\s*=\s*false
+ValueDefault=false
+
+[Nl Before Return]
+Category=3
+Description="<html>Whether to put a blank line before 'return' statements, unless after an open<br/>brace.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_before_return\s*=\s*true|nl_before_return\s*=\s*false
+ValueDefault=false
+
+[Nl After Return]
+Category=3
+Description="<html>Whether to put a blank line after 'return' statements, unless followed by a<br/>close brace.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_return\s*=\s*true|nl_after_return\s*=\s*false
+ValueDefault=false
+
+[Nl Before Member]
+Category=3
+Description="<html>Whether to put a blank line before a member '.' or '-&gt;' operators.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_member\s*=\s*ignore|nl_before_member\s*=\s*add|nl_before_member\s*=\s*remove|nl_before_member\s*=\s*force|nl_before_member\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before Member|Add Nl Before Member|Remove Nl Before Member|Force Nl Before Member"
+ValueDefault=ignore
+
+[Nl After Member]
+Category=3
+Description="<html>(Java) Whether to put a blank line after a member '.' or '-&gt;' operators.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_member\s*=\s*ignore|nl_after_member\s*=\s*add|nl_after_member\s*=\s*remove|nl_after_member\s*=\s*force|nl_after_member\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After Member|Add Nl After Member|Remove Nl After Member|Force Nl After Member"
+ValueDefault=ignore
+
+[Nl Ds Struct Enum Cmt]
+Category=3
+Description="<html>Whether to double-space commented-entries in 'struct'/'union'/'enum'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_ds_struct_enum_cmt\s*=\s*true|nl_ds_struct_enum_cmt\s*=\s*false
+ValueDefault=false
+
+[Nl Ds Struct Enum Close Brace]
+Category=3
+Description="<html>Whether to force a newline before '}' of a 'struct'/'union'/'enum'.<br/>(Lower priority than eat_blanks_before_close_brace.)</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_ds_struct_enum_close_brace\s*=\s*true|nl_ds_struct_enum_close_brace\s*=\s*false
+ValueDefault=false
+
+[Nl Class Colon]
+Category=3
+Description="<html>Add or remove newline before or after (depending on pos_class_colon) a class<br/>colon, as in 'class Foo &lt;here&gt; : &lt;or here&gt; public Bar'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_class_colon\s*=\s*ignore|nl_class_colon\s*=\s*add|nl_class_colon\s*=\s*remove|nl_class_colon\s*=\s*force|nl_class_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Class Colon|Add Nl Class Colon|Remove Nl Class Colon|Force Nl Class Colon"
+ValueDefault=ignore
+
+[Nl Constr Colon]
+Category=3
+Description="<html>Add or remove newline around a class constructor colon. The exact position<br/>depends on nl_constr_init_args, pos_constr_colon and pos_constr_comma.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_constr_colon\s*=\s*ignore|nl_constr_colon\s*=\s*add|nl_constr_colon\s*=\s*remove|nl_constr_colon\s*=\s*force|nl_constr_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Constr Colon|Add Nl Constr Colon|Remove Nl Constr Colon|Force Nl Constr Colon"
+ValueDefault=ignore
+
+[Nl Namespace Two To One Liner]
+Category=3
+Description="<html>Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }'<br/>into a single line. If true, prevents other brace newline rules from turning<br/>such code into four lines. If true, it also preserves one-liner namespaces.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_namespace_two_to_one_liner\s*=\s*true|nl_namespace_two_to_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Create If One Liner]
+Category=3
+Description="<html>Whether to remove a newline in simple unbraced if statements, turning them<br/>into one-liners, as in 'if(b)\n i++;' =&gt; 'if(b) i++;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_create_if_one_liner\s*=\s*true|nl_create_if_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Create For One Liner]
+Category=3
+Description="<html>Whether to remove a newline in simple unbraced for statements, turning them<br/>into one-liners, as in 'for (...)\n stmt;' =&gt; 'for (...) stmt;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_create_for_one_liner\s*=\s*true|nl_create_for_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Create While One Liner]
+Category=3
+Description="<html>Whether to remove a newline in simple unbraced while statements, turning<br/>them into one-liners, as in 'while (expr)\n stmt;' =&gt; 'while (expr) stmt;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_create_while_one_liner\s*=\s*true|nl_create_while_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Create Func Def One Liner]
+Category=3
+Description="<html>Whether to collapse a function definition whose body (not counting braces)<br/>is only one line so that the entire definition (prototype, braces, body) is<br/>a single line.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_create_func_def_one_liner\s*=\s*true|nl_create_func_def_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Create List One Liner]
+Category=3
+Description="<html>Whether to split one-line simple list definitions into three lines by<br/>adding newlines, as in 'int a[12] = { &lt;here&gt; 0 &lt;here&gt; };'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_create_list_one_liner\s*=\s*true|nl_create_list_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Split If One Liner]
+Category=3
+Description="<html>Whether to split one-line simple unbraced if statements into two lines by<br/>adding a newline, as in 'if(b) &lt;here&gt; i++;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_split_if_one_liner\s*=\s*true|nl_split_if_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Split For One Liner]
+Category=3
+Description="<html>Whether to split one-line simple unbraced for statements into two lines by<br/>adding a newline, as in 'for (...) &lt;here&gt; stmt;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_split_for_one_liner\s*=\s*true|nl_split_for_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Split While One Liner]
+Category=3
+Description="<html>Whether to split one-line simple unbraced while statements into two lines by<br/>adding a newline, as in 'while (expr) &lt;here&gt; stmt;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_split_while_one_liner\s*=\s*true|nl_split_while_one_liner\s*=\s*false
+ValueDefault=false
+
+[Donot Add Nl Before Cpp Comment]
+Category=3
+Description="<html>Don't add a newline before a cpp-comment in a parameter list of a function<br/>call.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=donot_add_nl_before_cpp_comment\s*=\s*true|donot_add_nl_before_cpp_comment\s*=\s*false
+ValueDefault=false
+
+[Nl Max]
+Category=4
+Description="<html>The maximum number of consecutive newlines (3 = 2 blank lines).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_max\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Max Blank In Func]
+Category=4
+Description="<html>The maximum number of consecutive newlines in a function.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_max_blank_in_func\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Inside Empty Func]
+Category=4
+Description="<html>The number of newlines inside an empty function body.<br/>This option overrides eat_blanks_after_open_brace and<br/>eat_blanks_before_close_brace, but is ignored when<br/>nl_collapse_empty_body_functions=true</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_inside_empty_func\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Func Body Proto]
+Category=4
+Description="<html>The number of newlines before a function prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_func_body_proto\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Func Body Def]
+Category=4
+Description="<html>The number of newlines before a multi-line function definition. Where<br/>applicable, this option is overridden with eat_blanks_after_open_brace=true</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_func_body_def\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Func Class Proto]
+Category=4
+Description="<html>The number of newlines before a class constructor/destructor prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_func_class_proto\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Func Class Def]
+Category=4
+Description="<html>The number of newlines before a class constructor/destructor definition.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_func_class_def\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Func Proto]
+Category=4
+Description="<html>The number of newlines after a function prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_func_proto\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Func Proto Group]
+Category=4
+Description="<html>The number of newlines after a function prototype, if not followed by<br/>another function prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_func_proto_group\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Func Class Proto]
+Category=4
+Description="<html>The number of newlines after a class constructor/destructor prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_func_class_proto\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Func Class Proto Group]
+Category=4
+Description="<html>The number of newlines after a class constructor/destructor prototype,<br/>if not followed by another constructor/destructor prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_func_class_proto_group\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Class Leave One Liner Groups]
+Category=4
+Description="<html>Whether one-line method definitions inside a class body should be treated<br/>as if they were prototypes for the purposes of adding newlines.<br/><br/>Requires nl_class_leave_one_liners=true. Overrides nl_before_func_body_def<br/>and nl_before_func_class_def for one-liners.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_class_leave_one_liner_groups\s*=\s*true|nl_class_leave_one_liner_groups\s*=\s*false
+ValueDefault=false
+
+[Nl After Func Body]
+Category=4
+Description="<html>The number of newlines after '}' of a multi-line function body.<br/><br/>Overrides nl_min_after_func_body and nl_max_after_func_body.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_func_body\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Min After Func Body]
+Category=4
+Description="<html>The minimum number of newlines after '}' of a multi-line function body.<br/><br/>Only works when nl_after_func_body is 0.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_min_after_func_body\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Max After Func Body]
+Category=4
+Description="<html>The maximum number of newlines after '}' of a multi-line function body.<br/><br/>Only works when nl_after_func_body is 0.<br/>Takes precedence over nl_min_after_func_body.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_max_after_func_body\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Func Body Class]
+Category=4
+Description="<html>The number of newlines after '}' of a multi-line function body in a class<br/>declaration. Also affects class constructors/destructors.<br/><br/>Overrides nl_after_func_body.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_func_body_class\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Func Body One Liner]
+Category=4
+Description="<html>The number of newlines after '}' of a single line function body. Also<br/>affects class constructors/destructors.<br/><br/>Overrides nl_after_func_body and nl_after_func_body_class.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_func_body_one_liner\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Typedef Blk Start]
+Category=4
+Description="<html>The number of newlines before a block of typedefs. If nl_after_access_spec<br/>is non-zero, that option takes precedence.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_typedef_blk_start\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Typedef Blk End]
+Category=4
+Description="<html>The number of newlines after a block of typedefs.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_typedef_blk_end\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Typedef Blk In]
+Category=4
+Description="<html>The maximum number of consecutive newlines within a block of typedefs.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_typedef_blk_in\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Var Def Blk End Func Top]
+Category=4
+Description="<html>The minimum number of blank lines after a block of variable definitions<br/>at the top of a function body. If any preprocessor directives appear<br/>between the opening brace of the function and the variable block, then<br/>it is considered as not at the top of the function.Newlines are added<br/>before trailing preprocessor directives, if any exist.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_var_def_blk_end_func_top\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Var Def Blk Start]
+Category=4
+Description="<html>The minimum number of empty newlines before a block of variable definitions<br/>not at the top of a function body. If nl_after_access_spec is non-zero,<br/>that option takes precedence. Newlines are not added at the top of the<br/>file or just after an opening brace. Newlines are added above any<br/>preprocessor directives before the block.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_var_def_blk_start\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Var Def Blk End]
+Category=4
+Description="<html>The minimum number of empty newlines after a block of variable definitions<br/>not at the top of a function body. Newlines are not added if the block<br/>is at the bottom of the file or just before a preprocessor directive.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_var_def_blk_end\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Var Def Blk In]
+Category=4
+Description="<html>The maximum number of consecutive newlines within a block of variable<br/>definitions.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_var_def_blk_in\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Block Comment]
+Category=4
+Description="<html>The minimum number of newlines before a multi-line comment.<br/>Doesn't apply if after a brace open or another multi-line comment.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_block_comment\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before C Comment]
+Category=4
+Description="<html>The minimum number of newlines before a single-line C comment.<br/>Doesn't apply if after a brace open or other single-line C comments.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_c_comment\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Cpp Comment]
+Category=4
+Description="<html>The minimum number of newlines before a CPP comment.<br/>Doesn't apply if after a brace open or other CPP comments.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_cpp_comment\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Multiline Comment]
+Category=4
+Description="<html>Whether to force a newline after a multi-line comment.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_multiline_comment\s*=\s*true|nl_after_multiline_comment\s*=\s*false
+ValueDefault=false
+
+[Nl After Label Colon]
+Category=4
+Description="<html>Whether to force a newline after a label's colon.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_label_colon\s*=\s*true|nl_after_label_colon\s*=\s*false
+ValueDefault=false
+
+[Nl Before Struct]
+Category=4
+Description="<html>The number of newlines before a struct definition.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_struct\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Struct]
+Category=4
+Description="<html>The number of newlines after '}' or ';' of a struct/enum/union definition.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_struct\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Class]
+Category=4
+Description="<html>The number of newlines before a class definition.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_class\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Class]
+Category=4
+Description="<html>The number of newlines after '}' or ';' of a class definition.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_class\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Namespace]
+Category=4
+Description="<html>The number of newlines before a namespace.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_namespace\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Inside Namespace]
+Category=4
+Description="<html>The number of newlines after '{' of a namespace. This also adds newlines<br/>before the matching '}'.<br/><br/>0: Apply eat_blanks_after_open_brace or eat_blanks_before_close_brace if<br/> applicable, otherwise no change.<br/><br/>Overrides eat_blanks_after_open_brace and eat_blanks_before_close_brace.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_inside_namespace\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Namespace]
+Category=4
+Description="<html>The number of newlines after '}' of a namespace.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_namespace\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Access Spec]
+Category=4
+Description="<html>The number of newlines before an access specifier label. This also includes<br/>the Qt-specific 'signals:' and 'slots:'. Will not change the newline count<br/>if after a brace open.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_access_spec\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Access Spec]
+Category=4
+Description="<html>The number of newlines after an access specifier label. This also includes<br/>the Qt-specific 'signals:' and 'slots:'. Will not change the newline count<br/>if after a brace open.<br/><br/>0: No change (default).<br/><br/>Overrides nl_typedef_blk_start and nl_var_def_blk_start.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_access_spec\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Comment Func Def]
+Category=4
+Description="<html>The number of newlines between a function definition and the function<br/>comment, as in '// comment\n &lt;here&gt; void foo() {...}'.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_comment_func_def\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Try Catch Finally]
+Category=4
+Description="<html>The number of newlines after a try-catch-finally block that isn't followed<br/>by a brace close.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_try_catch_finally\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Around Cs Property]
+Category=4
+Description="<html>(C#) The number of newlines before and after a property, indexer or event<br/>declaration.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_around_cs_property\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Between Get Set]
+Category=4
+Description="<html>(C#) The number of newlines between the get/set/add/remove handlers.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_between_get_set\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Property Brace]
+Category=4
+Description="<html>(C#) Add or remove newline between property and the '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_property_brace\s*=\s*ignore|nl_property_brace\s*=\s*add|nl_property_brace\s*=\s*remove|nl_property_brace\s*=\s*force|nl_property_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Property Brace|Add Nl Property Brace|Remove Nl Property Brace|Force Nl Property Brace"
+ValueDefault=ignore
+
+[Eat Blanks After Open Brace]
+Category=4
+Description="<html>Whether to remove blank lines after '{'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=eat_blanks_after_open_brace\s*=\s*true|eat_blanks_after_open_brace\s*=\s*false
+ValueDefault=false
+
+[Eat Blanks Before Close Brace]
+Category=4
+Description="<html>Whether to remove blank lines before '}'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=eat_blanks_before_close_brace\s*=\s*true|eat_blanks_before_close_brace\s*=\s*false
+ValueDefault=false
+
+[Nl Remove Extra Newlines]
+Category=4
+Description="<html>How aggressively to remove extra newlines not in preprocessor.<br/><br/>0: No change (default)<br/>1: Remove most newlines not handled by other config<br/>2: Remove all newlines and reformat completely by config</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_remove_extra_newlines\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Nl After Annotation]
+Category=4
+Description="<html>(Java) Add or remove newline after an annotation statement. Only affects<br/>annotations that are after a newline.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_annotation\s*=\s*ignore|nl_after_annotation\s*=\s*add|nl_after_annotation\s*=\s*remove|nl_after_annotation\s*=\s*force|nl_after_annotation\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After Annotation|Add Nl After Annotation|Remove Nl After Annotation|Force Nl After Annotation"
+ValueDefault=ignore
+
+[Nl Between Annotation]
+Category=4
+Description="<html>(Java) Add or remove newline between two annotations.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_between_annotation\s*=\s*ignore|nl_between_annotation\s*=\s*add|nl_between_annotation\s*=\s*remove|nl_between_annotation\s*=\s*force|nl_between_annotation\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Between Annotation|Add Nl Between Annotation|Remove Nl Between Annotation|Force Nl Between Annotation"
+ValueDefault=ignore
+
+[Nl Before Whole File Ifdef]
+Category=4
+Description="<html>The number of newlines before a whole-file #ifdef.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_whole_file_ifdef\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Whole File Ifdef]
+Category=4
+Description="<html>The number of newlines after a whole-file #ifdef.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_whole_file_ifdef\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Whole File Endif]
+Category=4
+Description="<html>The number of newlines before a whole-file #endif.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_whole_file_endif\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Whole File Endif]
+Category=4
+Description="<html>The number of newlines after a whole-file #endif.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_whole_file_endif\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Pos Arith]
+Category=5
+Description="<html>The position of arithmetic operators in wrapped expressions.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_arith\s*=\s*ignore|pos_arith\s*=\s*break|pos_arith\s*=\s*force|pos_arith\s*=\s*lead|pos_arith\s*=\s*trail|pos_arith\s*=\s*join|pos_arith\s*=\s*lead_break|pos_arith\s*=\s*lead_force|pos_arith\s*=\s*trail_break|pos_arith\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Arith|Break Pos Arith|Force Pos Arith|Lead Pos Arith|Trail Pos Arith|Join Pos Arith|Lead Break Pos Arith|Lead Force Pos Arith|Trail Break Pos Arith|Trail Force Pos Arith"
+ValueDefault=ignore
+
+[Pos Assign]
+Category=5
+Description="<html>The position of assignment in wrapped expressions. Do not affect '='<br/>followed by '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_assign\s*=\s*ignore|pos_assign\s*=\s*break|pos_assign\s*=\s*force|pos_assign\s*=\s*lead|pos_assign\s*=\s*trail|pos_assign\s*=\s*join|pos_assign\s*=\s*lead_break|pos_assign\s*=\s*lead_force|pos_assign\s*=\s*trail_break|pos_assign\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Assign|Break Pos Assign|Force Pos Assign|Lead Pos Assign|Trail Pos Assign|Join Pos Assign|Lead Break Pos Assign|Lead Force Pos Assign|Trail Break Pos Assign|Trail Force Pos Assign"
+ValueDefault=ignore
+
+[Pos Bool]
+Category=5
+Description="<html>The position of Boolean operators in wrapped expressions.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_bool\s*=\s*ignore|pos_bool\s*=\s*break|pos_bool\s*=\s*force|pos_bool\s*=\s*lead|pos_bool\s*=\s*trail|pos_bool\s*=\s*join|pos_bool\s*=\s*lead_break|pos_bool\s*=\s*lead_force|pos_bool\s*=\s*trail_break|pos_bool\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Bool|Break Pos Bool|Force Pos Bool|Lead Pos Bool|Trail Pos Bool|Join Pos Bool|Lead Break Pos Bool|Lead Force Pos Bool|Trail Break Pos Bool|Trail Force Pos Bool"
+ValueDefault=ignore
+
+[Pos Compare]
+Category=5
+Description="<html>The position of comparison operators in wrapped expressions.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_compare\s*=\s*ignore|pos_compare\s*=\s*break|pos_compare\s*=\s*force|pos_compare\s*=\s*lead|pos_compare\s*=\s*trail|pos_compare\s*=\s*join|pos_compare\s*=\s*lead_break|pos_compare\s*=\s*lead_force|pos_compare\s*=\s*trail_break|pos_compare\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Compare|Break Pos Compare|Force Pos Compare|Lead Pos Compare|Trail Pos Compare|Join Pos Compare|Lead Break Pos Compare|Lead Force Pos Compare|Trail Break Pos Compare|Trail Force Pos Compare"
+ValueDefault=ignore
+
+[Pos Conditional]
+Category=5
+Description="<html>The position of conditional operators, as in the '?' and ':' of<br/>'expr ? stmt : stmt', in wrapped expressions.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_conditional\s*=\s*ignore|pos_conditional\s*=\s*break|pos_conditional\s*=\s*force|pos_conditional\s*=\s*lead|pos_conditional\s*=\s*trail|pos_conditional\s*=\s*join|pos_conditional\s*=\s*lead_break|pos_conditional\s*=\s*lead_force|pos_conditional\s*=\s*trail_break|pos_conditional\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Conditional|Break Pos Conditional|Force Pos Conditional|Lead Pos Conditional|Trail Pos Conditional|Join Pos Conditional|Lead Break Pos Conditional|Lead Force Pos Conditional|Trail Break Pos Conditional|Trail Force Pos Conditional"
+ValueDefault=ignore
+
+[Pos Comma]
+Category=5
+Description="<html>The position of the comma in wrapped expressions.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_comma\s*=\s*ignore|pos_comma\s*=\s*break|pos_comma\s*=\s*force|pos_comma\s*=\s*lead|pos_comma\s*=\s*trail|pos_comma\s*=\s*join|pos_comma\s*=\s*lead_break|pos_comma\s*=\s*lead_force|pos_comma\s*=\s*trail_break|pos_comma\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Comma|Break Pos Comma|Force Pos Comma|Lead Pos Comma|Trail Pos Comma|Join Pos Comma|Lead Break Pos Comma|Lead Force Pos Comma|Trail Break Pos Comma|Trail Force Pos Comma"
+ValueDefault=ignore
+
+[Pos Enum Comma]
+Category=5
+Description="<html>The position of the comma in enum entries.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_enum_comma\s*=\s*ignore|pos_enum_comma\s*=\s*break|pos_enum_comma\s*=\s*force|pos_enum_comma\s*=\s*lead|pos_enum_comma\s*=\s*trail|pos_enum_comma\s*=\s*join|pos_enum_comma\s*=\s*lead_break|pos_enum_comma\s*=\s*lead_force|pos_enum_comma\s*=\s*trail_break|pos_enum_comma\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Enum Comma|Break Pos Enum Comma|Force Pos Enum Comma|Lead Pos Enum Comma|Trail Pos Enum Comma|Join Pos Enum Comma|Lead Break Pos Enum Comma|Lead Force Pos Enum Comma|Trail Break Pos Enum Comma|Trail Force Pos Enum Comma"
+ValueDefault=ignore
+
+[Pos Class Comma]
+Category=5
+Description="<html>The position of the comma in the base class list if there is more than one<br/>line. Affects nl_class_init_args.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_class_comma\s*=\s*ignore|pos_class_comma\s*=\s*break|pos_class_comma\s*=\s*force|pos_class_comma\s*=\s*lead|pos_class_comma\s*=\s*trail|pos_class_comma\s*=\s*join|pos_class_comma\s*=\s*lead_break|pos_class_comma\s*=\s*lead_force|pos_class_comma\s*=\s*trail_break|pos_class_comma\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Class Comma|Break Pos Class Comma|Force Pos Class Comma|Lead Pos Class Comma|Trail Pos Class Comma|Join Pos Class Comma|Lead Break Pos Class Comma|Lead Force Pos Class Comma|Trail Break Pos Class Comma|Trail Force Pos Class Comma"
+ValueDefault=ignore
+
+[Pos Constr Comma]
+Category=5
+Description="<html>The position of the comma in the constructor initialization list.<br/>Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_constr_comma\s*=\s*ignore|pos_constr_comma\s*=\s*break|pos_constr_comma\s*=\s*force|pos_constr_comma\s*=\s*lead|pos_constr_comma\s*=\s*trail|pos_constr_comma\s*=\s*join|pos_constr_comma\s*=\s*lead_break|pos_constr_comma\s*=\s*lead_force|pos_constr_comma\s*=\s*trail_break|pos_constr_comma\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Constr Comma|Break Pos Constr Comma|Force Pos Constr Comma|Lead Pos Constr Comma|Trail Pos Constr Comma|Join Pos Constr Comma|Lead Break Pos Constr Comma|Lead Force Pos Constr Comma|Trail Break Pos Constr Comma|Trail Force Pos Constr Comma"
+ValueDefault=ignore
+
+[Pos Class Colon]
+Category=5
+Description="<html>The position of trailing/leading class colon, between class and base class<br/>list. Affects nl_class_colon.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_class_colon\s*=\s*ignore|pos_class_colon\s*=\s*break|pos_class_colon\s*=\s*force|pos_class_colon\s*=\s*lead|pos_class_colon\s*=\s*trail|pos_class_colon\s*=\s*join|pos_class_colon\s*=\s*lead_break|pos_class_colon\s*=\s*lead_force|pos_class_colon\s*=\s*trail_break|pos_class_colon\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Class Colon|Break Pos Class Colon|Force Pos Class Colon|Lead Pos Class Colon|Trail Pos Class Colon|Join Pos Class Colon|Lead Break Pos Class Colon|Lead Force Pos Class Colon|Trail Break Pos Class Colon|Trail Force Pos Class Colon"
+ValueDefault=ignore
+
+[Pos Constr Colon]
+Category=5
+Description="<html>The position of colons between constructor and member initialization.<br/>Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_constr_colon\s*=\s*ignore|pos_constr_colon\s*=\s*break|pos_constr_colon\s*=\s*force|pos_constr_colon\s*=\s*lead|pos_constr_colon\s*=\s*trail|pos_constr_colon\s*=\s*join|pos_constr_colon\s*=\s*lead_break|pos_constr_colon\s*=\s*lead_force|pos_constr_colon\s*=\s*trail_break|pos_constr_colon\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Constr Colon|Break Pos Constr Colon|Force Pos Constr Colon|Lead Pos Constr Colon|Trail Pos Constr Colon|Join Pos Constr Colon|Lead Break Pos Constr Colon|Lead Force Pos Constr Colon|Trail Break Pos Constr Colon|Trail Force Pos Constr Colon"
+ValueDefault=ignore
+
+[Pos Shift]
+Category=5
+Description="<html>The position of shift operators in wrapped expressions.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_shift\s*=\s*ignore|pos_shift\s*=\s*break|pos_shift\s*=\s*force|pos_shift\s*=\s*lead|pos_shift\s*=\s*trail|pos_shift\s*=\s*join|pos_shift\s*=\s*lead_break|pos_shift\s*=\s*lead_force|pos_shift\s*=\s*trail_break|pos_shift\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Shift|Break Pos Shift|Force Pos Shift|Lead Pos Shift|Trail Pos Shift|Join Pos Shift|Lead Break Pos Shift|Lead Force Pos Shift|Trail Break Pos Shift|Trail Force Pos Shift"
+ValueDefault=ignore
+
+[Code Width]
+Category=6
+Description="<html>Try to limit code width to N columns.</html>"
+Enabled=false
+EditorType=numeric
+CallName="code_width\s*=\s*"
+MinVal=0
+MaxVal=10000
+ValueDefault=0
+
+[Ls For Split Full]
+Category=6
+Description="<html>Whether to fully split long 'for' statements at semi-colons.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=ls_for_split_full\s*=\s*true|ls_for_split_full\s*=\s*false
+ValueDefault=false
+
+[Ls Func Split Full]
+Category=6
+Description="<html>Whether to fully split long function prototypes/calls at commas.<br/>The option ls_code_width has priority over the option ls_func_split_full.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=ls_func_split_full\s*=\s*true|ls_func_split_full\s*=\s*false
+ValueDefault=false
+
+[Ls Code Width]
+Category=6
+Description="<html>Whether to split lines as close to code_width as possible and ignore some<br/>groupings.<br/>The option ls_code_width has priority over the option ls_func_split_full.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=ls_code_width\s*=\s*true|ls_code_width\s*=\s*false
+ValueDefault=false
+
+[Align Keep Tabs]
+Category=7
+Description="<html>Whether to keep non-indenting tabs.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_keep_tabs\s*=\s*true|align_keep_tabs\s*=\s*false
+ValueDefault=false
+
+[Align With Tabs]
+Category=7
+Description="<html>Whether to use tabs for aligning.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_with_tabs\s*=\s*true|align_with_tabs\s*=\s*false
+ValueDefault=false
+
+[Align On Tabstop]
+Category=7
+Description="<html>Whether to bump out to the next tab when aligning.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_on_tabstop\s*=\s*true|align_on_tabstop\s*=\s*false
+ValueDefault=false
+
+[Align Number Right]
+Category=7
+Description="<html>Whether to right-align numbers.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_number_right\s*=\s*true|align_number_right\s*=\s*false
+ValueDefault=false
+
+[Align Keep Extra Space]
+Category=7
+Description="<html>Whether to keep whitespace not required for alignment.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_keep_extra_space\s*=\s*true|align_keep_extra_space\s*=\s*false
+ValueDefault=false
+
+[Align Func Params]
+Category=7
+Description="<html>Whether to align variable definitions in prototypes and functions.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_func_params\s*=\s*true|align_func_params\s*=\s*false
+ValueDefault=false
+
+[Align Func Params Span]
+Category=7
+Description="<html>The span for aligning parameter definitions in function on parameter name.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_params_span\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Func Params Thresh]
+Category=7
+Description="<html>The threshold for aligning function parameter definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_params_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Func Params Gap]
+Category=7
+Description="<html>The gap for aligning function parameter definitions.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_params_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Constr Value Span]
+Category=7
+Description="<html>The span for aligning constructor value.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_constr_value_span\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Constr Value Thresh]
+Category=7
+Description="<html>The threshold for aligning constructor value.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_constr_value_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Constr Value Gap]
+Category=7
+Description="<html>The gap for aligning constructor value.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_constr_value_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Same Func Call Params]
+Category=7
+Description="<html>Whether to align parameters in single-line functions that have the same<br/>name. The function names must already be aligned with each other.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_same_func_call_params\s*=\s*true|align_same_func_call_params\s*=\s*false
+ValueDefault=false
+
+[Align Same Func Call Params Span]
+Category=7
+Description="<html>The span for aligning function-call parameters for single line functions.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_same_func_call_params_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Same Func Call Params Thresh]
+Category=7
+Description="<html>The threshold for aligning function-call parameters for single line<br/>functions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_same_func_call_params_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Def Span]
+Category=7
+Description="<html>The span for aligning variable definitions.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_def_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Def Star Style]
+Category=7
+Description="<html>How to consider (or treat) the '*' in the alignment of variable definitions.<br/><br/>0: Part of the type 'void * foo;' (default)<br/>1: Part of the variable 'void *foo;'<br/>2: Dangling 'void *foo;'<br/>Dangling: the '*' will not be taken into account when aligning.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_def_star_style\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Var Def Amp Style]
+Category=7
+Description="<html>How to consider (or treat) the '&amp;' in the alignment of variable definitions.<br/><br/>0: Part of the type 'long &amp; foo;' (default)<br/>1: Part of the variable 'long &amp;foo;'<br/>2: Dangling 'long &amp;foo;'<br/>Dangling: the '&amp;' will not be taken into account when aligning.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_def_amp_style\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Var Def Thresh]
+Category=7
+Description="<html>The threshold for aligning variable definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_def_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Def Gap]
+Category=7
+Description="<html>The gap for aligning variable definitions.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_def_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Var Def Colon]
+Category=7
+Description="<html>Whether to align the colon in struct bit fields.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_var_def_colon\s*=\s*true|align_var_def_colon\s*=\s*false
+ValueDefault=false
+
+[Align Var Def Colon Gap]
+Category=7
+Description="<html>The gap for aligning the colon in struct bit fields.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_def_colon_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Var Def Attribute]
+Category=7
+Description="<html>Whether to align any attribute after the variable name.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_var_def_attribute\s*=\s*true|align_var_def_attribute\s*=\s*false
+ValueDefault=false
+
+[Align Var Def Inline]
+Category=7
+Description="<html>Whether to align inline struct/enum/union variable definitions.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_var_def_inline\s*=\s*true|align_var_def_inline\s*=\s*false
+ValueDefault=false
+
+[Align Assign Span]
+Category=7
+Description="<html>The span for aligning on '=' in assignments.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_assign_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Assign Func Proto Span]
+Category=7
+Description="<html>The span for aligning on '=' in function prototype modifier.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_assign_func_proto_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Assign Thresh]
+Category=7
+Description="<html>The threshold for aligning on '=' in assignments.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_assign_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Assign On Multi Var Defs]
+Category=7
+Description="<html>Whether to align on the left most assignment when multiple<br/>definitions are found on the same line.<br/>Depends on 'align_assign_span' and 'align_assign_thresh' settings.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_assign_on_multi_var_defs\s*=\s*true|align_assign_on_multi_var_defs\s*=\s*false
+ValueDefault=false
+
+[Align Braced Init List Span]
+Category=7
+Description="<html>The span for aligning on '{' in braced init list.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_braced_init_list_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Braced Init List Thresh]
+Category=7
+Description="<html>The threshold for aligning on '{' in braced init list.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_braced_init_list_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Assign Decl Func]
+Category=7
+Description="<html>How to apply align_assign_span to function declaration "assignments", i.e.<br/>'virtual void foo() = 0' or '~foo() = {default|delete}'.<br/><br/>0: Align with other assignments (default)<br/>1: Align with each other, ignoring regular assignments<br/>2: Don't align</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_assign_decl_func\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Enum Equ Span]
+Category=7
+Description="<html>The span for aligning on '=' in enums.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_enum_equ_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Enum Equ Thresh]
+Category=7
+Description="<html>The threshold for aligning on '=' in enums.<br/>Use a negative number for absolute thresholds.<br/><br/>0: no limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_enum_equ_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Class Span]
+Category=7
+Description="<html>The span for aligning class member definitions.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_class_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Class Thresh]
+Category=7
+Description="<html>The threshold for aligning class member definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_class_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Class Gap]
+Category=7
+Description="<html>The gap for aligning class member definitions.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_class_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Var Struct Span]
+Category=7
+Description="<html>The span for aligning struct/union member definitions.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_struct_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Struct Thresh]
+Category=7
+Description="<html>The threshold for aligning struct/union member definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_struct_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Struct Gap]
+Category=7
+Description="<html>The gap for aligning struct/union member definitions.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_struct_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Struct Init Span]
+Category=7
+Description="<html>The span for aligning struct initializer values.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_struct_init_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Typedef Span]
+Category=7
+Description="<html>The span for aligning single-line typedefs.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_typedef_span\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Typedef Gap]
+Category=7
+Description="<html>The minimum space between the type and the synonym of a typedef.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_typedef_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Typedef Func]
+Category=7
+Description="<html>How to align typedef'd functions with other typedefs.<br/><br/>0: Don't mix them at all (default)<br/>1: Align the open parenthesis with the types<br/>2: Align the function type name with the other type names</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_typedef_func\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Typedef Star Style]
+Category=7
+Description="<html>How to consider (or treat) the '*' in the alignment of typedefs.<br/><br/>0: Part of the typedef type, 'typedef int * pint;' (default)<br/>1: Part of type name: 'typedef int *pint;'<br/>2: Dangling: 'typedef int *pint;'<br/>Dangling: the '*' will not be taken into account when aligning.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_typedef_star_style\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Typedef Amp Style]
+Category=7
+Description="<html>How to consider (or treat) the '&amp;' in the alignment of typedefs.<br/><br/>0: Part of the typedef type, 'typedef int &amp; intref;' (default)<br/>1: Part of type name: 'typedef int &amp;intref;'<br/>2: Dangling: 'typedef int &amp;intref;'<br/>Dangling: the '&amp;' will not be taken into account when aligning.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_typedef_amp_style\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Right Cmt Span]
+Category=7
+Description="<html>The span for aligning comments that end lines.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_right_cmt_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Right Cmt Gap]
+Category=7
+Description="<html>Minimum number of columns between preceding text and a trailing comment in<br/>order for the comment to qualify for being aligned. Must be non-zero to have<br/>an effect.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_right_cmt_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Right Cmt Mix]
+Category=7
+Description="<html>If aligning comments, whether to mix with comments after '}' and #endif with<br/>less than three spaces before the comment.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_right_cmt_mix\s*=\s*true|align_right_cmt_mix\s*=\s*false
+ValueDefault=false
+
+[Align Right Cmt Same Level]
+Category=7
+Description="<html>Whether to only align trailing comments that are at the same brace level.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_right_cmt_same_level\s*=\s*true|align_right_cmt_same_level\s*=\s*false
+ValueDefault=false
+
+[Align Right Cmt At Col]
+Category=7
+Description="<html>Minimum column at which to align trailing comments. Comments which are<br/>aligned beyond this column, but which can be aligned in a lesser column,<br/>may be "pulled in".<br/><br/>0: Ignore (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_right_cmt_at_col\s*=\s*"
+MinVal=0
+MaxVal=200
+ValueDefault=0
+
+[Align Func Proto Span]
+Category=7
+Description="<html>The span for aligning function prototypes.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_proto_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Func Proto Span Ignore Cont Lines]
+Category=7
+Description="<html>Whether to ignore continuation lines when evaluating the number of<br/>new lines for the function prototype alignment's span.<br/><br/>false: continuation lines are part of the newlines count<br/>true: continuation lines are not counted</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_func_proto_span_ignore_cont_lines\s*=\s*true|align_func_proto_span_ignore_cont_lines\s*=\s*false
+ValueDefault=false
+
+[Align Func Proto Star Style]
+Category=7
+Description="<html>How to consider (or treat) the '*' in the alignment of function prototypes.<br/><br/>0: Part of the type 'void * foo();' (default)<br/>1: Part of the function 'void *foo();'<br/>2: Dangling 'void *foo();'<br/>Dangling: the '*' will not be taken into account when aligning.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_proto_star_style\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Func Proto Amp Style]
+Category=7
+Description="<html>How to consider (or treat) the '&amp;' in the alignment of function prototypes.<br/><br/>0: Part of the type 'long &amp; foo();' (default)<br/>1: Part of the function 'long &amp;foo();'<br/>2: Dangling 'long &amp;foo();'<br/>Dangling: the '&amp;' will not be taken into account when aligning.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_proto_amp_style\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Func Proto Thresh]
+Category=7
+Description="<html>The threshold for aligning function prototypes.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_proto_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Func Proto Gap]
+Category=7
+Description="<html>Minimum gap between the return type and the function name.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_proto_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align On Operator]
+Category=7
+Description="<html>Whether to align function prototypes on the 'operator' keyword instead of<br/>what follows.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_on_operator\s*=\s*true|align_on_operator\s*=\s*false
+ValueDefault=false
+
+[Align Mix Var Proto]
+Category=7
+Description="<html>Whether to mix aligning prototype and variable declarations. If true,<br/>align_var_def_XXX options are used instead of align_func_proto_XXX options.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_mix_var_proto\s*=\s*true|align_mix_var_proto\s*=\s*false
+ValueDefault=false
+
+[Align Single Line Func]
+Category=7
+Description="<html>Whether to align single-line functions with function prototypes.<br/>Uses align_func_proto_span.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_single_line_func\s*=\s*true|align_single_line_func\s*=\s*false
+ValueDefault=false
+
+[Align Single Line Brace]
+Category=7
+Description="<html>Whether to align the open brace of single-line functions.<br/>Requires align_single_line_func=true. Uses align_func_proto_span.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_single_line_brace\s*=\s*true|align_single_line_brace\s*=\s*false
+ValueDefault=false
+
+[Align Single Line Brace Gap]
+Category=7
+Description="<html>Gap for align_single_line_brace.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_single_line_brace_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Oc Msg Spec Span]
+Category=7
+Description="<html>(OC) The span for aligning Objective-C message specifications.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_oc_msg_spec_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Nl Cont]
+Category=7
+Description="<html>Whether and how to align backslashes that split a macro onto multiple lines.<br/>This will not work right if the macro contains a multi-line comment.<br/><br/>0: Do nothing (default)<br/>1: Align the backslashes in the column at the end of the longest line<br/>2: Align with the backslash that is farthest to the left, or, if that<br/> backslash is farther left than the end of the longest line, at the end of<br/> the longest line<br/>3: Align with the backslash that is farthest to the right</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_nl_cont\s*=\s*"
+MinVal=0
+MaxVal=3
+ValueDefault=0
+
+[Align Nl Cont Spaces]
+Category=7
+Description="<html>The minimum number of spaces between the end of a line and its continuation<br/>backslash. Requires align_nl_cont.<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_nl_cont_spaces\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=1
+
+[Align Pp Define Together]
+Category=7
+Description="<html>Whether to align macro functions and variables together.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_pp_define_together\s*=\s*true|align_pp_define_together\s*=\s*false
+ValueDefault=false
+
+[Align Pp Define Span]
+Category=7
+Description="<html>The span for aligning on '#define' bodies.<br/><br/>=0: Don't align (default)<br/>&gt;0: Number of lines (including comments) between blocks</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_pp_define_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Pp Define Gap]
+Category=7
+Description="<html>The minimum space between label and value of a preprocessor define.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_pp_define_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Left Shift]
+Category=7
+Description="<html>Whether to align lines that start with '&lt;&lt;' with previous '&lt;&lt;'.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_left_shift\s*=\s*true|align_left_shift\s*=\s*false
+ValueDefault=true
+
+[Align Eigen Comma Init]
+Category=7
+Description="<html>Whether to align comma-separated statements following '&lt;&lt;' (as used to<br/>initialize Eigen matrices).</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_eigen_comma_init\s*=\s*true|align_eigen_comma_init\s*=\s*false
+ValueDefault=false
+
+[Align Asm Colon]
+Category=7
+Description="<html>Whether to align text after 'asm volatile ()' colons.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_asm_colon\s*=\s*true|align_asm_colon\s*=\s*false
+ValueDefault=false
+
+[Align Oc Msg Colon Span]
+Category=7
+Description="<html>(OC) Span for aligning parameters in an Objective-C message call<br/>on the ':'.<br/><br/>0: Don't align.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_oc_msg_colon_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Oc Msg Colon First]
+Category=7
+Description="<html>(OC) Whether to always align with the first parameter, even if it is too<br/>short.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_oc_msg_colon_first\s*=\s*true|align_oc_msg_colon_first\s*=\s*false
+ValueDefault=false
+
+[Align Oc Decl Colon]
+Category=7
+Description="<html>(OC) Whether to align parameters in an Objective-C '+' or '-' declaration<br/>on the ':'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_oc_decl_colon\s*=\s*true|align_oc_decl_colon\s*=\s*false
+ValueDefault=false
+
+[Align Oc Msg Colon Xcode Like]
+Category=7
+Description="<html>(OC) Whether to not align parameters in an Objectve-C message call if first<br/>colon is not on next line of the message call (the same way Xcode does<br/>alignment)</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_oc_msg_colon_xcode_like\s*=\s*true|align_oc_msg_colon_xcode_like\s*=\s*false
+ValueDefault=false
+
+[Cmt Width]
+Category=8
+Description="<html>Try to wrap comments at N columns.</html>"
+Enabled=false
+EditorType=numeric
+CallName="cmt_width\s*=\s*"
+MinVal=0
+MaxVal=256
+ValueDefault=0
+
+[Cmt Reflow Mode]
+Category=8
+Description="<html>How to reflow comments.<br/><br/>0: No reflowing (apart from the line wrapping due to cmt_width) (default)<br/>1: No touching at all<br/>2: Full reflow (enable cmt_indent_multi for indent with line wrapping due to cmt_width)</html>"
+Enabled=false
+EditorType=numeric
+CallName="cmt_reflow_mode\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Cmt Reflow Fold Regex File]
+Category=8
+Description="<html>Path to a file that contains regular expressions describing patterns for<br/>which the end of one line and the beginning of the next will be folded into<br/>the same sentence or paragraph during full comment reflow. The regular<br/>expressions are described using ECMAScript syntax. The syntax for this<br/>specification is as follows, where "..." indicates the custom regular<br/>expression and "n" indicates the nth end_of_prev_line_regex and<br/>beg_of_next_line_regex regular expression pair:<br/><br/>end_of_prev_line_regex[1] = "...$"<br/>beg_of_next_line_regex[1] = "^..."<br/>end_of_prev_line_regex[2] = "...$"<br/>beg_of_next_line_regex[2] = "^..."<br/> .<br/> .<br/> .<br/>end_of_prev_line_regex[n] = "...$"<br/>beg_of_next_line_regex[n] = "^..."<br/><br/>Note that use of this option overrides the default reflow fold regular<br/>expressions, which are internally defined as follows:<br/><br/>end_of_prev_line_regex[1] = "[\w,\]\)]$"<br/>beg_of_next_line_regex[1] = "^[\w,\[\(]"<br/>end_of_prev_line_regex[2] = "\.$"<br/>beg_of_next_line_regex[2] = "^[A-Z]"</html>"
+Enabled=false
+CallName=cmt_reflow_fold_regex_file\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Cmt Reflow Indent To Paragraph Start]
+Category=8
+Description="<html>Whether to indent wrapped lines to the start of the encompassing paragraph<br/>during full comment reflow (cmt_reflow_mode = 2). Overrides the value<br/>specified by cmt_sp_after_star_cont.<br/><br/>Note that cmt_align_doxygen_javadoc_tags overrides this option for<br/>paragraphs associated with javadoc tags</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_reflow_indent_to_paragraph_start\s*=\s*true|cmt_reflow_indent_to_paragraph_start\s*=\s*false
+ValueDefault=false
+
+[Cmt Convert Tab To Spaces]
+Category=8
+Description="<html>Whether to convert all tabs to spaces in comments. If false, tabs in<br/>comments are left alone, unless used for indenting.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_convert_tab_to_spaces\s*=\s*true|cmt_convert_tab_to_spaces\s*=\s*false
+ValueDefault=false
+
+[Cmt Indent Multi]
+Category=8
+Description="<html>Whether to apply changes to multi-line comments, including cmt_width,<br/>keyword substitution and leading chars.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_indent_multi\s*=\s*true|cmt_indent_multi\s*=\s*false
+ValueDefault=true
+
+[Cmt Align Doxygen Javadoc Tags]
+Category=8
+Description="<html>Whether to align doxygen javadoc-style tags ('@param', '@return', etc.)<br/>and corresponding fields such that groups of consecutive block tags,<br/>parameter names, and descriptions align with one another. Overrides that<br/>which is specified by the cmt_sp_after_star_cont. If cmt_width &gt; 0, it may<br/>be necessary to enable cmt_indent_multi and set cmt_reflow_mode = 2<br/>in order to achieve the desired alignment for line-wrapping.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_align_doxygen_javadoc_tags\s*=\s*true|cmt_align_doxygen_javadoc_tags\s*=\s*false
+ValueDefault=false
+
+[Cmt Sp Before Doxygen Javadoc Tags]
+Category=8
+Description="<html>The number of spaces to insert after the star and before doxygen<br/>javadoc-style tags (@param, @return, etc). Requires enabling<br/>cmt_align_doxygen_javadoc_tags. Overrides that which is specified by the<br/>cmt_sp_after_star_cont.<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="cmt_sp_before_doxygen_javadoc_tags\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=1
+
+[Cmt Trailing Single Line C To Cpp]
+Category=8
+Description="<html>Whether to change trailing, single-line c-comments into cpp-comments.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_trailing_single_line_c_to_cpp\s*=\s*true|cmt_trailing_single_line_c_to_cpp\s*=\s*false
+ValueDefault=false
+
+[Cmt C Group]
+Category=8
+Description="<html>Whether to group c-comments that look like they are in a block.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_c_group\s*=\s*true|cmt_c_group\s*=\s*false
+ValueDefault=false
+
+[Cmt C Nl Start]
+Category=8
+Description="<html>Whether to put an empty '/*' on the first line of the combined c-comment.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_c_nl_start\s*=\s*true|cmt_c_nl_start\s*=\s*false
+ValueDefault=false
+
+[Cmt C Nl End]
+Category=8
+Description="<html>Whether to add a newline before the closing '*/' of the combined c-comment.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_c_nl_end\s*=\s*true|cmt_c_nl_end\s*=\s*false
+ValueDefault=false
+
+[Cmt Cpp To C]
+Category=8
+Description="<html>Whether to change cpp-comments into c-comments.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_cpp_to_c\s*=\s*true|cmt_cpp_to_c\s*=\s*false
+ValueDefault=false
+
+[Cmt Cpp Group]
+Category=8
+Description="<html>Whether to group cpp-comments that look like they are in a block. Only<br/>meaningful if cmt_cpp_to_c=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_cpp_group\s*=\s*true|cmt_cpp_group\s*=\s*false
+ValueDefault=false
+
+[Cmt Cpp Nl Start]
+Category=8
+Description="<html>Whether to put an empty '/*' on the first line of the combined cpp-comment<br/>when converting to a c-comment.<br/><br/>Requires cmt_cpp_to_c=true and cmt_cpp_group=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_cpp_nl_start\s*=\s*true|cmt_cpp_nl_start\s*=\s*false
+ValueDefault=false
+
+[Cmt Cpp Nl End]
+Category=8
+Description="<html>Whether to add a newline before the closing '*/' of the combined cpp-comment<br/>when converting to a c-comment.<br/><br/>Requires cmt_cpp_to_c=true and cmt_cpp_group=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_cpp_nl_end\s*=\s*true|cmt_cpp_nl_end\s*=\s*false
+ValueDefault=false
+
+[Cmt Star Cont]
+Category=8
+Description="<html>Whether to put a star on subsequent comment lines.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_star_cont\s*=\s*true|cmt_star_cont\s*=\s*false
+ValueDefault=false
+
+[Cmt Sp Before Star Cont]
+Category=8
+Description="<html>The number of spaces to insert at the start of subsequent comment lines.</html>"
+Enabled=false
+EditorType=numeric
+CallName="cmt_sp_before_star_cont\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Cmt Sp After Star Cont]
+Category=8
+Description="<html>The number of spaces to insert after the star on subsequent comment lines.</html>"
+Enabled=false
+EditorType=numeric
+CallName="cmt_sp_after_star_cont\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Cmt Multi Check Last]
+Category=8
+Description="<html>For multi-line comments with a '*' lead, remove leading spaces if the first<br/>and last lines of the comment are the same length.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_multi_check_last\s*=\s*true|cmt_multi_check_last\s*=\s*false
+ValueDefault=true
+
+[Cmt Multi First Len Minimum]
+Category=8
+Description="<html>For multi-line comments with a '*' lead, remove leading spaces if the first<br/>and last lines of the comment are the same length AND if the length is<br/>bigger as the first_len minimum.<br/><br/>Default: 4</html>"
+Enabled=false
+EditorType=numeric
+CallName="cmt_multi_first_len_minimum\s*=\s*"
+MinVal=1
+MaxVal=20
+ValueDefault=4
+
+[Cmt Insert File Header]
+Category=8
+Description="<html>Path to a file that contains text to insert at the beginning of a file if<br/>the file doesn't start with a C/C++ comment. If the inserted text contains<br/>'$(filename)', that will be replaced with the current file's name.</html>"
+Enabled=false
+CallName=cmt_insert_file_header\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Cmt Insert File Footer]
+Category=8
+Description="<html>Path to a file that contains text to insert at the end of a file if the<br/>file doesn't end with a C/C++ comment. If the inserted text contains<br/>'$(filename)', that will be replaced with the current file's name.</html>"
+Enabled=false
+CallName=cmt_insert_file_footer\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Cmt Insert Func Header]
+Category=8
+Description="<html>Path to a file that contains text to insert before a function definition if<br/>the function isn't preceded by a C/C++ comment. If the inserted text<br/>contains '$(function)', '$(javaparam)' or '$(fclass)', these will be<br/>replaced with, respectively, the name of the function, the javadoc '@param'<br/>and '@return' stuff, or the name of the class to which the member function<br/>belongs.</html>"
+Enabled=false
+CallName=cmt_insert_func_header\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Cmt Insert Class Header]
+Category=8
+Description="<html>Path to a file that contains text to insert before a class if the class<br/>isn't preceded by a C/C++ comment. If the inserted text contains '$(class)',<br/>that will be replaced with the class name.</html>"
+Enabled=false
+CallName=cmt_insert_class_header\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Cmt Insert Oc Msg Header]
+Category=8
+Description="<html>Path to a file that contains text to insert before an Objective-C message<br/>specification, if the method isn't preceded by a C/C++ comment. If the<br/>inserted text contains '$(message)' or '$(javaparam)', these will be<br/>replaced with, respectively, the name of the function, or the javadoc<br/>'@param' and '@return' stuff.</html>"
+Enabled=false
+CallName=cmt_insert_oc_msg_header\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Cmt Insert Before Preproc]
+Category=8
+Description="<html>Whether a comment should be inserted if a preprocessor is encountered when<br/>stepping backwards from a function name.<br/><br/>Applies to cmt_insert_oc_msg_header, cmt_insert_func_header and<br/>cmt_insert_class_header.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_insert_before_preproc\s*=\s*true|cmt_insert_before_preproc\s*=\s*false
+ValueDefault=false
+
+[Cmt Insert Before Inlines]
+Category=8
+Description="<html>Whether a comment should be inserted if a function is declared inline to a<br/>class definition.<br/><br/>Applies to cmt_insert_func_header.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_insert_before_inlines\s*=\s*true|cmt_insert_before_inlines\s*=\s*false
+ValueDefault=true
+
+[Cmt Insert Before Ctor Dtor]
+Category=8
+Description="<html>Whether a comment should be inserted if the function is a class constructor<br/>or destructor.<br/><br/>Applies to cmt_insert_func_header.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_insert_before_ctor_dtor\s*=\s*true|cmt_insert_before_ctor_dtor\s*=\s*false
+ValueDefault=false
+
+[Mod Full Brace Do]
+Category=9
+Description="<html>Add or remove braces on a single-line 'do' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_full_brace_do\s*=\s*ignore|mod_full_brace_do\s*=\s*add|mod_full_brace_do\s*=\s*remove|mod_full_brace_do\s*=\s*force|mod_full_brace_do\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Full Brace Do|Add Mod Full Brace Do|Remove Mod Full Brace Do|Force Mod Full Brace Do"
+ValueDefault=ignore
+
+[Mod Full Brace For]
+Category=9
+Description="<html>Add or remove braces on a single-line 'for' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_full_brace_for\s*=\s*ignore|mod_full_brace_for\s*=\s*add|mod_full_brace_for\s*=\s*remove|mod_full_brace_for\s*=\s*force|mod_full_brace_for\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Full Brace For|Add Mod Full Brace For|Remove Mod Full Brace For|Force Mod Full Brace For"
+ValueDefault=ignore
+
+[Mod Full Brace Function]
+Category=9
+Description="<html>(Pawn) Add or remove braces on a single-line function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_full_brace_function\s*=\s*ignore|mod_full_brace_function\s*=\s*add|mod_full_brace_function\s*=\s*remove|mod_full_brace_function\s*=\s*force|mod_full_brace_function\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Full Brace Function|Add Mod Full Brace Function|Remove Mod Full Brace Function|Force Mod Full Brace Function"
+ValueDefault=ignore
+
+[Mod Full Brace If]
+Category=9
+Description="<html>Add or remove braces on a single-line 'if' statement. Braces will not be<br/>removed if the braced statement contains an 'else'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_full_brace_if\s*=\s*ignore|mod_full_brace_if\s*=\s*add|mod_full_brace_if\s*=\s*remove|mod_full_brace_if\s*=\s*force|mod_full_brace_if\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Full Brace If|Add Mod Full Brace If|Remove Mod Full Brace If|Force Mod Full Brace If"
+ValueDefault=ignore
+
+[Mod Full Brace If Chain]
+Category=9
+Description="<html>Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either<br/>have, or do not have, braces. Overrides mod_full_brace_if.<br/><br/>0: Don't override mod_full_brace_if<br/>1: Add braces to all blocks if any block needs braces and remove braces if<br/> they can be removed from all blocks<br/>2: Add braces to all blocks if any block already has braces, regardless of<br/> whether it needs them<br/>3: Add braces to all blocks if any block needs braces and remove braces if<br/> they can be removed from all blocks, except if all blocks have braces<br/> despite none needing them</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_full_brace_if_chain\s*=\s*"
+MinVal=0
+MaxVal=3
+ValueDefault=0
+
+[Mod Full Brace If Chain Only]
+Category=9
+Description="<html>Whether to add braces to all blocks of an 'if'/'else if'/'else' chain.<br/>If true, mod_full_brace_if_chain will only remove braces from an 'if' that<br/>does not have an 'else if' or 'else'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_full_brace_if_chain_only\s*=\s*true|mod_full_brace_if_chain_only\s*=\s*false
+ValueDefault=false
+
+[Mod Full Brace While]
+Category=9
+Description="<html>Add or remove braces on single-line 'while' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_full_brace_while\s*=\s*ignore|mod_full_brace_while\s*=\s*add|mod_full_brace_while\s*=\s*remove|mod_full_brace_while\s*=\s*force|mod_full_brace_while\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Full Brace While|Add Mod Full Brace While|Remove Mod Full Brace While|Force Mod Full Brace While"
+ValueDefault=ignore
+
+[Mod Full Brace Using]
+Category=9
+Description="<html>Add or remove braces on single-line 'using ()' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_full_brace_using\s*=\s*ignore|mod_full_brace_using\s*=\s*add|mod_full_brace_using\s*=\s*remove|mod_full_brace_using\s*=\s*force|mod_full_brace_using\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Full Brace Using|Add Mod Full Brace Using|Remove Mod Full Brace Using|Force Mod Full Brace Using"
+ValueDefault=ignore
+
+[Mod Full Brace Nl]
+Category=9
+Description="<html>Don't remove braces around statements that span N newlines</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_full_brace_nl\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Mod Full Brace Nl Block Rem Mlcond]
+Category=9
+Description="<html>Whether to prevent removal of braces from 'if'/'for'/'while'/etc. blocks<br/>which span multiple lines.<br/><br/>Affects:<br/> mod_full_brace_for<br/> mod_full_brace_if<br/> mod_full_brace_if_chain<br/> mod_full_brace_if_chain_only<br/> mod_full_brace_while<br/> mod_full_brace_using<br/><br/>Does not affect:<br/> mod_full_brace_do<br/> mod_full_brace_function</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_full_brace_nl_block_rem_mlcond\s*=\s*true|mod_full_brace_nl_block_rem_mlcond\s*=\s*false
+ValueDefault=false
+
+[Mod Paren On Return]
+Category=9
+Description="<html>Add or remove unnecessary parentheses on 'return' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_paren_on_return\s*=\s*ignore|mod_paren_on_return\s*=\s*add|mod_paren_on_return\s*=\s*remove|mod_paren_on_return\s*=\s*force|mod_paren_on_return\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Paren On Return|Add Mod Paren On Return|Remove Mod Paren On Return|Force Mod Paren On Return"
+ValueDefault=ignore
+
+[Mod Paren On Throw]
+Category=9
+Description="<html>Add or remove unnecessary parentheses on 'throw' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_paren_on_throw\s*=\s*ignore|mod_paren_on_throw\s*=\s*add|mod_paren_on_throw\s*=\s*remove|mod_paren_on_throw\s*=\s*force|mod_paren_on_throw\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Paren On Throw|Add Mod Paren On Throw|Remove Mod Paren On Throw|Force Mod Paren On Throw"
+ValueDefault=ignore
+
+[Mod Pawn Semicolon]
+Category=9
+Description="<html>(Pawn) Whether to change optional semicolons to real semicolons.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_pawn_semicolon\s*=\s*true|mod_pawn_semicolon\s*=\s*false
+ValueDefault=false
+
+[Mod Full Paren If Bool]
+Category=9
+Description="<html>Whether to fully parenthesize Boolean expressions in 'while' and 'if'<br/>statement, as in 'if (a &amp;&amp; b &gt; c)' =&gt; 'if (a &amp;&amp; (b &gt; c))'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_full_paren_if_bool\s*=\s*true|mod_full_paren_if_bool\s*=\s*false
+ValueDefault=false
+
+[Mod Full Paren Assign Bool]
+Category=9
+Description="<html>Whether to fully parenthesize Boolean expressions after '='<br/>statement, as in 'x = a &amp;&amp; b &gt; c;' =&gt; 'x = (a &amp;&amp; (b &gt; c));'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_full_paren_assign_bool\s*=\s*true|mod_full_paren_assign_bool\s*=\s*false
+ValueDefault=false
+
+[Mod Full Paren Return Bool]
+Category=9
+Description="<html>Whether to fully parenthesize Boolean expressions after '='<br/>statement, as in 'return a &amp;&amp; b &gt; c;' =&gt; 'return (a &amp;&amp; (b &gt; c));'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_full_paren_return_bool\s*=\s*true|mod_full_paren_return_bool\s*=\s*false
+ValueDefault=false
+
+[Mod Remove Extra Semicolon]
+Category=9
+Description="<html>Whether to remove superfluous semicolons.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_remove_extra_semicolon\s*=\s*true|mod_remove_extra_semicolon\s*=\s*false
+ValueDefault=false
+
+[Mod Remove Duplicate Include]
+Category=9
+Description="<html>Whether to remove duplicate include.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_remove_duplicate_include\s*=\s*true|mod_remove_duplicate_include\s*=\s*false
+ValueDefault=false
+
+[Mod Add Force C Closebrace Comment]
+Category=9
+Description="<html>the following options (mod_XX_closebrace_comment) use different comment,<br/>depending of the setting of the next option.<br/>false: Use the c comment (default)<br/>true : Use the cpp comment</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_add_force_c_closebrace_comment\s*=\s*true|mod_add_force_c_closebrace_comment\s*=\s*false
+ValueDefault=false
+
+[Mod Add Long Function Closebrace Comment]
+Category=9
+Description="<html>If a function body exceeds the specified number of newlines and doesn't have<br/>a comment after the close brace, a comment will be added.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_add_long_function_closebrace_comment\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[Mod Add Long Namespace Closebrace Comment]
+Category=9
+Description="<html>If a namespace body exceeds the specified number of newlines and doesn't<br/>have a comment after the close brace, a comment will be added.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_add_long_namespace_closebrace_comment\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[Mod Add Long Class Closebrace Comment]
+Category=9
+Description="<html>If a class body exceeds the specified number of newlines and doesn't have a<br/>comment after the close brace, a comment will be added.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_add_long_class_closebrace_comment\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[Mod Add Long Switch Closebrace Comment]
+Category=9
+Description="<html>If a switch body exceeds the specified number of newlines and doesn't have a<br/>comment after the close brace, a comment will be added.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_add_long_switch_closebrace_comment\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[Mod Add Long Ifdef Endif Comment]
+Category=9
+Description="<html>If an #ifdef body exceeds the specified number of newlines and doesn't have<br/>a comment after the #endif, a comment will be added.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_add_long_ifdef_endif_comment\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[Mod Add Long Ifdef Else Comment]
+Category=9
+Description="<html>If an #ifdef or #else body exceeds the specified number of newlines and<br/>doesn't have a comment after the #else, a comment will be added.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_add_long_ifdef_else_comment\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[Mod Sort Case Sensitive]
+Category=9
+Description="<html>Whether to take care of the case by the mod_sort_xx options.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_case_sensitive\s*=\s*true|mod_sort_case_sensitive\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Import]
+Category=9
+Description="<html>Whether to sort consecutive single-line 'import' statements.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_import\s*=\s*true|mod_sort_import\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Using]
+Category=9
+Description="<html>(C#) Whether to sort consecutive single-line 'using' statements.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_using\s*=\s*true|mod_sort_using\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Include]
+Category=9
+Description="<html>Whether to sort consecutive single-line '#include' statements (C/C++) and<br/>'#import' statements (Objective-C). Be aware that this has the potential to<br/>break your code if your includes/imports have ordering dependencies.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_include\s*=\s*true|mod_sort_include\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Incl Import Prioritize Filename]
+Category=9
+Description="<html>Whether to prioritize '#include' and '#import' statements that contain<br/>filename without extension when sorting is enabled.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_incl_import_prioritize_filename\s*=\s*true|mod_sort_incl_import_prioritize_filename\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Incl Import Prioritize Extensionless]
+Category=9
+Description="<html>Whether to prioritize '#include' and '#import' statements that does not<br/>contain extensions when sorting is enabled.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_incl_import_prioritize_extensionless\s*=\s*true|mod_sort_incl_import_prioritize_extensionless\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Incl Import Prioritize Angle Over Quotes]
+Category=9
+Description="<html>Whether to prioritize '#include' and '#import' statements that contain<br/>angle over quotes when sorting is enabled.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_incl_import_prioritize_angle_over_quotes\s*=\s*true|mod_sort_incl_import_prioritize_angle_over_quotes\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Incl Import Ignore Extension]
+Category=9
+Description="<html>Whether to ignore file extension in '#include' and '#import' statements<br/>for sorting comparison.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_incl_import_ignore_extension\s*=\s*true|mod_sort_incl_import_ignore_extension\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Incl Import Grouping Enabled]
+Category=9
+Description="<html>Whether to group '#include' and '#import' statements when sorting is enabled.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_incl_import_grouping_enabled\s*=\s*true|mod_sort_incl_import_grouping_enabled\s*=\s*false
+ValueDefault=false
+
+[Mod Move Case Break]
+Category=9
+Description="<html>Whether to move a 'break' that appears after a fully braced 'case' before<br/>the close brace, as in 'case X: { ... } break;' =&gt; 'case X: { ... break; }'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_move_case_break\s*=\s*true|mod_move_case_break\s*=\s*false
+ValueDefault=false
+
+[Mod Move Case Return]
+Category=9
+Description="<html>Whether to move a 'return' that appears after a fully braced 'case' before<br/>the close brace, as in 'case X: { ... } return;' =&gt; 'case X: { ... return; }'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_move_case_return\s*=\s*true|mod_move_case_return\s*=\s*false
+ValueDefault=false
+
+[Mod Case Brace]
+Category=9
+Description="<html>Add or remove braces around a fully braced case statement. Will only remove<br/>braces if there are no variable declarations in the block.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_case_brace\s*=\s*ignore|mod_case_brace\s*=\s*add|mod_case_brace\s*=\s*remove|mod_case_brace\s*=\s*force|mod_case_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Case Brace|Add Mod Case Brace|Remove Mod Case Brace|Force Mod Case Brace"
+ValueDefault=ignore
+
+[Mod Remove Empty Return]
+Category=9
+Description="<html>Whether to remove a void 'return;' that appears as the last statement in a<br/>function.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_remove_empty_return\s*=\s*true|mod_remove_empty_return\s*=\s*false
+ValueDefault=false
+
+[Mod Enum Last Comma]
+Category=9
+Description="<html>Add or remove the comma after the last value of an enumeration.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_enum_last_comma\s*=\s*ignore|mod_enum_last_comma\s*=\s*add|mod_enum_last_comma\s*=\s*remove|mod_enum_last_comma\s*=\s*force|mod_enum_last_comma\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Enum Last Comma|Add Mod Enum Last Comma|Remove Mod Enum Last Comma|Force Mod Enum Last Comma"
+ValueDefault=ignore
+
+[Mod Infinite Loop]
+Category=9
+Description="<html>Syntax to use for infinite loops.<br/><br/>0: Leave syntax alone (default)<br/>1: Rewrite as `for(;;)`<br/>2: Rewrite as `while(true)`<br/>3: Rewrite as `do`...`while(true);`<br/>4: Rewrite as `while(1)`<br/>5: Rewrite as `do`...`while(1);`<br/><br/>Infinite loops that do not already match one of these syntaxes are ignored.<br/>Other options that affect loop formatting will be applied after transforming<br/>the syntax.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_infinite_loop\s*=\s*"
+MinVal=0
+MaxVal=5
+ValueDefault=0
+
+[Mod Int Short]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'int short'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_int_short\s*=\s*ignore|mod_int_short\s*=\s*add|mod_int_short\s*=\s*remove|mod_int_short\s*=\s*force|mod_int_short\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Int Short|Add Mod Int Short|Remove Mod Int Short|Force Mod Int Short"
+ValueDefault=ignore
+
+[Mod Short Int]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'short int'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_short_int\s*=\s*ignore|mod_short_int\s*=\s*add|mod_short_int\s*=\s*remove|mod_short_int\s*=\s*force|mod_short_int\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Short Int|Add Mod Short Int|Remove Mod Short Int|Force Mod Short Int"
+ValueDefault=ignore
+
+[Mod Int Long]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'int long'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_int_long\s*=\s*ignore|mod_int_long\s*=\s*add|mod_int_long\s*=\s*remove|mod_int_long\s*=\s*force|mod_int_long\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Int Long|Add Mod Int Long|Remove Mod Int Long|Force Mod Int Long"
+ValueDefault=ignore
+
+[Mod Long Int]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'long int'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_long_int\s*=\s*ignore|mod_long_int\s*=\s*add|mod_long_int\s*=\s*remove|mod_long_int\s*=\s*force|mod_long_int\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Long Int|Add Mod Long Int|Remove Mod Long Int|Force Mod Long Int"
+ValueDefault=ignore
+
+[Mod Int Signed]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'int signed'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_int_signed\s*=\s*ignore|mod_int_signed\s*=\s*add|mod_int_signed\s*=\s*remove|mod_int_signed\s*=\s*force|mod_int_signed\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Int Signed|Add Mod Int Signed|Remove Mod Int Signed|Force Mod Int Signed"
+ValueDefault=ignore
+
+[Mod Signed Int]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'signed int'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_signed_int\s*=\s*ignore|mod_signed_int\s*=\s*add|mod_signed_int\s*=\s*remove|mod_signed_int\s*=\s*force|mod_signed_int\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Signed Int|Add Mod Signed Int|Remove Mod Signed Int|Force Mod Signed Int"
+ValueDefault=ignore
+
+[Mod Int Unsigned]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'int unsigned'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_int_unsigned\s*=\s*ignore|mod_int_unsigned\s*=\s*add|mod_int_unsigned\s*=\s*remove|mod_int_unsigned\s*=\s*force|mod_int_unsigned\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Int Unsigned|Add Mod Int Unsigned|Remove Mod Int Unsigned|Force Mod Int Unsigned"
+ValueDefault=ignore
+
+[Mod Unsigned Int]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'unsigned int'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_unsigned_int\s*=\s*ignore|mod_unsigned_int\s*=\s*add|mod_unsigned_int\s*=\s*remove|mod_unsigned_int\s*=\s*force|mod_unsigned_int\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Unsigned Int|Add Mod Unsigned Int|Remove Mod Unsigned Int|Force Mod Unsigned Int"
+ValueDefault=ignore
+
+[Mod Int Prefer Int On Left]
+Category=9
+Description="<html>If there is a situation where mod_int_* and mod_*_int would result in<br/>multiple int keywords, whether to keep the rightmost int (the default) or the<br/>leftmost int.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_int_prefer_int_on_left\s*=\s*true|mod_int_prefer_int_on_left\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Oc Properties]
+Category=9
+Description="<html>(OC) Whether to organize the properties. If true, properties will be<br/>rearranged according to the mod_sort_oc_property_*_weight factors.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_oc_properties\s*=\s*true|mod_sort_oc_properties\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Oc Property Class Weight]
+Category=9
+Description="<html>(OC) Weight of a class property modifier.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_sort_oc_property_class_weight\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Mod Sort Oc Property Thread Safe Weight]
+Category=9
+Description="<html>(OC) Weight of 'atomic' and 'nonatomic'.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_sort_oc_property_thread_safe_weight\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Mod Sort Oc Property Readwrite Weight]
+Category=9
+Description="<html>(OC) Weight of 'readwrite' when organizing properties.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_sort_oc_property_readwrite_weight\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Mod Sort Oc Property Reference Weight]
+Category=9
+Description="<html>(OC) Weight of a reference type specifier ('retain', 'copy', 'assign',<br/>'weak', 'strong') when organizing properties.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_sort_oc_property_reference_weight\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Mod Sort Oc Property Getter Weight]
+Category=9
+Description="<html>(OC) Weight of getter type ('getter=') when organizing properties.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_sort_oc_property_getter_weight\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Mod Sort Oc Property Setter Weight]
+Category=9
+Description="<html>(OC) Weight of setter type ('setter=') when organizing properties.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_sort_oc_property_setter_weight\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Mod Sort Oc Property Nullability Weight]
+Category=9
+Description="<html>(OC) Weight of nullability type ('nullable', 'nonnull', 'null_unspecified',<br/>'null_resettable') when organizing properties.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_sort_oc_property_nullability_weight\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Pp Indent With Tabs]
+Category=10
+Description="<html>How to use tabs when indenting preprocessor code.<br/><br/>-1: Use 'indent_with_tabs' setting (default)<br/> 0: Spaces only<br/> 1: Indent with tabs to brace level, align with spaces<br/> 2: Indent and align with tabs, using spaces when not on a tabstop<br/><br/>Default: -1</html>"
+Enabled=false
+EditorType=numeric
+CallName="pp_indent_with_tabs\s*=\s*"
+MinVal=-1
+MaxVal=2
+ValueDefault=-1
+
+[Pp Indent]
+Category=10
+Description="<html>Add or remove indentation of preprocessor directives inside #if blocks<br/>at brace level 0 (file-level).</html>"
+Enabled=false
+EditorType=multiple
+Choices=pp_indent\s*=\s*ignore|pp_indent\s*=\s*add|pp_indent\s*=\s*remove|pp_indent\s*=\s*force|pp_indent\s*=\s*not_defined
+ChoicesReadable="Ignore Pp Indent|Add Pp Indent|Remove Pp Indent|Force Pp Indent"
+ValueDefault=ignore
+
+[Pp Indent At Level]
+Category=10
+Description="<html>Whether to indent #if/#else/#endif at the brace level. If false, these are<br/>indented from column 1.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_indent_at_level\s*=\s*true|pp_indent_at_level\s*=\s*false
+ValueDefault=false
+
+[Pp Indent At Level0]
+Category=10
+Description="<html>Whether to indent #if/#else/#endif at the parenthesis level if the brace<br/>level is 0. If false, these are indented from column 1.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_indent_at_level0\s*=\s*true|pp_indent_at_level0\s*=\s*false
+ValueDefault=false
+
+[Pp Indent Count]
+Category=10
+Description="<html>Specifies the number of columns to indent preprocessors per level<br/>at brace level 0 (file-level). If pp_indent_at_level=false, also specifies<br/>the number of columns to indent preprocessors per level<br/>at brace level &gt; 0 (function-level).<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="pp_indent_count\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=1
+
+[Pp Space After]
+Category=10
+Description="<html>Add or remove space after # based on pp level of #if blocks.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pp_space_after\s*=\s*ignore|pp_space_after\s*=\s*add|pp_space_after\s*=\s*remove|pp_space_after\s*=\s*force|pp_space_after\s*=\s*not_defined
+ChoicesReadable="Ignore Pp Space After|Add Pp Space After|Remove Pp Space After|Force Pp Space After"
+ValueDefault=ignore
+
+[Pp Space Count]
+Category=10
+Description="<html>Sets the number of spaces per level added with pp_space_after.</html>"
+Enabled=false
+EditorType=numeric
+CallName="pp_space_count\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Pp Indent Region]
+Category=10
+Description="<html>The indent for '#region' and '#endregion' in C# and '#pragma region' in<br/>C/C++. Negative values decrease indent down to the first column.</html>"
+Enabled=false
+EditorType=numeric
+CallName="pp_indent_region\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Pp Region Indent Code]
+Category=10
+Description="<html>Whether to indent the code between #region and #endregion.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_region_indent_code\s*=\s*true|pp_region_indent_code\s*=\s*false
+ValueDefault=false
+
+[Pp Indent If]
+Category=10
+Description="<html>If pp_indent_at_level=true, sets the indent for #if, #else and #endif when<br/>not at file-level. Negative values decrease indent down to the first column.<br/><br/>=0: Indent preprocessors using output_tab_size<br/>&gt;0: Column at which all preprocessors will be indented</html>"
+Enabled=false
+EditorType=numeric
+CallName="pp_indent_if\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Pp If Indent Code]
+Category=10
+Description="<html>Whether to indent the code between #if, #else and #endif.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_if_indent_code\s*=\s*true|pp_if_indent_code\s*=\s*false
+ValueDefault=false
+
+[Pp Indent In Guard]
+Category=10
+Description="<html>Whether to indent the body of an #if that encompasses all the code in the file.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_indent_in_guard\s*=\s*true|pp_indent_in_guard\s*=\s*false
+ValueDefault=false
+
+[Pp Define At Level]
+Category=10
+Description="<html>Whether to indent '#define' at the brace level. If false, these are<br/>indented from column 1.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_define_at_level\s*=\s*true|pp_define_at_level\s*=\s*false
+ValueDefault=false
+
+[Pp Include At Level]
+Category=10
+Description="<html>Whether to indent '#include' at the brace level.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_include_at_level\s*=\s*true|pp_include_at_level\s*=\s*false
+ValueDefault=false
+
+[Pp Ignore Define Body]
+Category=10
+Description="<html>Whether to ignore the '#define' body while formatting.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_ignore_define_body\s*=\s*true|pp_ignore_define_body\s*=\s*false
+ValueDefault=false
+
+[Pp Multiline Define Body Indent]
+Category=10
+Description="<html>An offset value that controls the indentation of the body of a multiline #define.<br/>'body' refers to all the lines of a multiline #define except the first line.<br/>Requires 'pp_ignore_define_body = false'.<br/><br/> &lt;0: Absolute column: the body indentation starts off at the specified column<br/> (ex. -3 ==&gt; the body is indented starting from column 3)<br/>&gt;=0: Relative to the column of the '#' of '#define'<br/> (ex. 3 ==&gt; the body is indented starting 3 columns at the right of '#')<br/><br/>Default: 8</html>"
+Enabled=false
+EditorType=numeric
+CallName="pp_multiline_define_body_indent\s*=\s*"
+MinVal=-32
+MaxVal=32
+ValueDefault=8
+
+[Pp Indent Case]
+Category=10
+Description="<html>Whether to indent case statements between #if, #else, and #endif.<br/>Only applies to the indent of the preprocessor that the case statements<br/>directly inside of.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_indent_case\s*=\s*true|pp_indent_case\s*=\s*false
+ValueDefault=true
+
+[Pp Indent Func Def]
+Category=10
+Description="<html>Whether to indent whole function definitions between #if, #else, and #endif.<br/>Only applies to the indent of the preprocessor that the function definition<br/>is directly inside of.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_indent_func_def\s*=\s*true|pp_indent_func_def\s*=\s*false
+ValueDefault=true
+
+[Pp Indent Extern]
+Category=10
+Description="<html>Whether to indent extern C blocks between #if, #else, and #endif.<br/>Only applies to the indent of the preprocessor that the extern block is<br/>directly inside of.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_indent_extern\s*=\s*true|pp_indent_extern\s*=\s*false
+ValueDefault=true
+
+[Pp Indent Brace]
+Category=10
+Description="<html>How to indent braces directly inside #if, #else, and #endif.<br/>Requires pp_if_indent_code=true and only applies to the indent of the<br/>preprocessor that the braces are directly inside of.<br/> 0: No extra indent<br/> 1: Indent by one level<br/>-1: Preserve original indentation<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="pp_indent_brace\s*=\s*"
+MinVal=-1
+MaxVal=1
+ValueDefault=1
+
+[Pp Warn Unbalanced If]
+Category=10
+Description="<html>Whether to print warning messages for unbalanced #if and #else blocks.<br/>This will print a message in the following cases:<br/>- if an #ifdef block ends on a different indent level than<br/> where it started from. Example:<br/><br/> #ifdef TEST<br/> int i;<br/> {<br/> int j;<br/> #endif<br/><br/>- an #elif/#else block ends on a different indent level than<br/> the corresponding #ifdef block. Example:<br/><br/> #ifdef TEST<br/> int i;<br/> #else<br/> }<br/> int j;<br/> #endif</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_warn_unbalanced_if\s*=\s*true|pp_warn_unbalanced_if\s*=\s*false
+ValueDefault=false
+
+[Include Category 0]
+Category=11
+Description="<html>The regex for include category with priority 0.</html>"
+Enabled=false
+CallName=include_category_0\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Include Category 1]
+Category=11
+Description="<html>The regex for include category with priority 1.</html>"
+Enabled=false
+CallName=include_category_1\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Include Category 2]
+Category=11
+Description="<html>The regex for include category with priority 2.</html>"
+Enabled=false
+CallName=include_category_2\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Use Indent Func Call Param]
+Category=12
+Description="<html>true: indent_func_call_param will be used (default)<br/>false: indent_func_call_param will NOT be used<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=use_indent_func_call_param\s*=\s*true|use_indent_func_call_param\s*=\s*false
+ValueDefault=true
+
+[Use Indent Continue Only Once]
+Category=12
+Description="<html>The value of the indentation for a continuation line is calculated<br/>differently if the statement is:<br/>- a declaration: your case with QString fileName ...<br/>- an assignment: your case with pSettings = new QSettings( ...<br/><br/>At the second case the indentation value might be used twice:<br/>- at the assignment<br/>- at the function call (if present)<br/><br/>To prevent the double use of the indentation value, use this option with the<br/>value 'true'.<br/><br/>true: indent_continue will be used only once<br/>false: indent_continue will be used every time (default)<br/><br/>Requires indent_ignore_first_continue=false.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=use_indent_continue_only_once\s*=\s*true|use_indent_continue_only_once\s*=\s*false
+ValueDefault=false
+
+[Indent Cpp Lambda Only Once]
+Category=12
+Description="<html>The indentation can be:<br/>- after the assignment, at the '[' character<br/>- at the beginning of the lambda body<br/><br/>true: indentation will be at the beginning of the lambda body<br/>false: indentation will be after the assignment (default)</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_cpp_lambda_only_once\s*=\s*true|indent_cpp_lambda_only_once\s*=\s*false
+ValueDefault=false
+
+[Use Sp After Angle Always]
+Category=12
+Description="<html>Whether sp_after_angle takes precedence over sp_inside_fparen. This was the<br/>historic behavior, but is probably not the desired behavior, so this is off<br/>by default.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=use_sp_after_angle_always\s*=\s*true|use_sp_after_angle_always\s*=\s*false
+ValueDefault=false
+
+[Use Options Overriding For Qt Macros]
+Category=12
+Description="<html>Whether to apply special formatting for Qt SIGNAL/SLOT macros. Essentially,<br/>this tries to format these so that they match Qt's normalized form (i.e. the<br/>result of QMetaObject::normalizedSignature), which can slightly improve the<br/>performance of the QObject::connect call, rather than how they would<br/>otherwise be formatted.<br/><br/>See options_for_QT.cpp for details.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=use_options_overriding_for_qt_macros\s*=\s*true|use_options_overriding_for_qt_macros\s*=\s*false
+ValueDefault=true
+
+[Use Form Feed No More As Whitespace Character]
+Category=12
+Description="<html>If true: the form feed character is removed from the list of whitespace<br/>characters. See https://en.cppreference.com/w/cpp/string/byte/isspace.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=use_form_feed_no_more_as_whitespace_character\s*=\s*true|use_form_feed_no_more_as_whitespace_character\s*=\s*false
+ValueDefault=false
+
+[Warn Level Tabs Found In Verbatim String Literals]
+Category=13
+Description="<html>(C#) Warning is given if doing tab-to-\t replacement and we have found one<br/>in a C# verbatim string literal.<br/><br/>Default: 2</html>"
+Enabled=false
+EditorType=numeric
+CallName="warn_level_tabs_found_in_verbatim_string_literals\s*=\s*"
+MinVal=1
+MaxVal=3
+ValueDefault=2
+
+[Debug Max Number Of Loops]
+Category=13
+Description="<html>Limit the number of loops.<br/>Used by uncrustify.cpp to exit from infinite loop.<br/>0: no limit.</html>"
+Enabled=false
+EditorType=numeric
+CallName="debug_max_number_of_loops\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Debug Line Number To Protocol]
+Category=13
+Description="<html>Set the number of the line to protocol;<br/>Used in the function prot_the_line if the 2. parameter is zero.<br/>0: nothing protocol.</html>"
+Enabled=false
+EditorType=numeric
+CallName="debug_line_number_to_protocol\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Debug Timeout]
+Category=13
+Description="<html>Set the number of second(s) before terminating formatting the current file,<br/>0: no timeout.<br/>only for linux</html>"
+Enabled=false
+EditorType=numeric
+CallName="debug_timeout\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Debug Truncate]
+Category=13
+Description="<html>Set the number of characters to be printed if the text is too long,<br/>0: do not truncate.</html>"
+Enabled=false
+EditorType=numeric
+CallName="debug_truncate\s*=\s*"
+MinVal=0
+MaxVal=960
+ValueDefault=0
+
+[Debug Sort The Tracks]
+Category=13
+Description="<html>sort (or not) the tracking info.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=debug_sort_the_tracks\s*=\s*true|debug_sort_the_tracks\s*=\s*false
+ValueDefault=true
+
+[Debug Decode The Flags]
+Category=13
+Description="<html>decode (or not) the flags as a new line.<br/>only if the -p option is set.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=debug_decode_the_flags\s*=\s*true|debug_decode_the_flags\s*=\s*false
+ValueDefault=false
+
+[Debug Use The Exit Function Pop]
+Category=13
+Description="<html>use (or not) the exit(EX_SOFTWARE) function.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=debug_use_the_exit_function_pop\s*=\s*true|debug_use_the_exit_function_pop\s*=\s*false
+ValueDefault=true
+
+[Set Numbering For Html Output]
+Category=13
+Description="<html>insert the number of the line at the beginning of each line</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=set_numbering_for_html_output\s*=\s*true|set_numbering_for_html_output\s*=\s*false
+ValueDefault=false
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/uncrust-files.sh b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/uncrust-files.sh
index 3e1d09b3..3e1d09b3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/uncrust-files.sh
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/uncrust-files.sh
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/uncrustify.xml.in b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/uncrustify.xml.in
index 33f6c6a5..33f6c6a5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/etc/uncrustify.xml.in
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/uncrustify.xml.in
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/xsupplicant.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/xsupplicant.cfg
new file mode 100644
index 00000000..4cb583bf
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/etc/xsupplicant.cfg
@@ -0,0 +1,82 @@
+#
+# GNU-like format
+#
+
+indent_with_tabs = 0 # 1=indent to level only, 2=indent with tabs
+input_tab_size = 8 # original tab size
+output_tab_size = 2 # new tab size
+indent_columns = 2 # should usually match output_tab_size
+indent_label = 2 # pos: absolute col, neg: relative column
+indent_align_string = False # align broken strings
+indent_brace = 2
+
+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 = add # "do {" vs "do \n {"
+nl_if_brace = add # "if () {" vs "if () \n {"
+nl_for_brace = add # "for () {" vs "for () \n {"
+nl_else_brace = add # "else {" vs "else \n {"
+nl_while_brace = add # "while () {" vs "while () \n {"
+nl_switch_brace = add # "switch () {" vs "switch () \n {"
+nl_var_def_blk_end_func_top = 1
+nl_before_case = 1
+nl_fcall_brace = add # "foo() {" vs "foo()\n{"
+nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
+# nl_after_return = TRUE
+nl_brace_while = remove
+nl_brace_else = add
+nl_squeeze_ifdef = TRUE
+
+# 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 = ignore # "for () a--;" vs "for () { a--; }"
+# mod_full_brace_do = ignore # "do a--; while ();" vs "do { a--; } while ();"
+# mod_full_brace_while = ignore # "while (a) a--;" vs "while (a) { a--; }"
+
+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_type_func = ignore
+sp_assign = force
+sp_arith = force
+sp_bool = force
+sp_compare = 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();"
+
+# align_with_tabs = FALSE # use tabs to align
+# align_on_tabstop = FALSE # align on tabstops
+# align_enum_equ_span = 4
+# align_nl_cont = 1
+# align_var_def_span = 2
+# align_var_def_inline = TRUE
+# align_var_def_star = TRUE
+# align_var_def_colon = TRUE
+# align_assign_span = 1
+# align_struct_init_span = 3
+# align_var_struct_span = 3
+# align_right_cmt_span = 3
+# align_pp_define_span = 3
+# align_pp_define_gap = 4
+# align_number_right = 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
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/extras.vpj b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/extras.vpj
index 4b57772a..4b57772a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/extras.vpj
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/extras.vpj
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/forUncrustifySources.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/forUncrustifySources.cfg
new file mode 100644
index 00000000..2e9fa1fb
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/forUncrustifySources.cfg
@@ -0,0 +1,473 @@
+# The uncrustify sources are uncrustified with this config file.
+using 0.70.0
+
+# General options
+output_tab_size = 3
+tok_split_gte = true
+
+# Code alignment options
+align_asm_colon = true
+align_assign_decl_func = 2
+align_assign_func_proto_span = 4
+align_assign_span = 1
+align_enum_equ_span = 4
+align_enum_equ_thresh = 8
+align_func_params = true
+align_func_proto_star_style = 1
+align_nl_cont = 1
+align_number_right = true
+align_pp_define_gap = 4
+align_pp_define_span = 3
+align_right_cmt_same_level = true
+align_right_cmt_span = 3
+align_struct_init_span = 3
+align_typedef_gap = 3
+align_typedef_span = 5
+align_typedef_star_style = 1
+align_var_class_span = 2
+align_var_def_amp_style = 1
+align_var_def_colon = true
+align_var_def_inline = true
+align_var_def_span = 2
+align_var_def_star_style = 1
+align_var_struct_span = 3
+
+# Indenting options
+indent_bool_paren = 1
+indent_class = true
+indent_columns = 3
+indent_compound_literal_return = false
+indent_cpp_lambda_only_once = true
+indent_first_bool_expr = true
+indent_macro_brace = true
+indent_member = 3
+indent_sparen_extra = 0
+indent_with_tabs = 0
+indent_oc_inside_msg_sel = false
+indent_off_after_assign = false
+indent_inside_ternary_operator = false
+
+# Newline adding and removing options
+nl_after_access_spec = 1
+nl_after_brace_close = true
+nl_after_brace_open = true
+nl_after_case = true
+nl_after_do = force
+nl_after_for = force
+nl_after_func_proto = 1
+nl_after_func_proto_group = 2
+nl_after_if = remove
+nl_after_member = remove
+nl_after_namespace = 2
+nl_after_return = true
+nl_after_semicolon = true
+nl_after_switch = remove
+nl_after_vbrace_open = true
+nl_after_while = remove
+nl_assign_brace = add
+nl_assign_leave_one_liners = true
+nl_before_brace_open = false
+nl_before_case = true
+nl_before_do = force
+nl_before_for = force
+nl_before_func_body_def = 3
+nl_before_if = force
+nl_before_if_closing_paren = remove
+nl_before_namespace = 2
+nl_before_opening_brace_func_class_def = force
+nl_before_switch = force
+nl_before_while = force
+nl_brace_catch = force
+nl_brace_else = add
+nl_brace_fparen = remove
+nl_brace_while = remove
+nl_case_colon_brace = force
+nl_catch_brace = add
+nl_class_brace = force
+nl_class_colon = remove
+nl_class_leave_one_liner_groups = true
+nl_class_leave_one_liners = true
+nl_template_args = false
+nl_template_class_decl = remove
+nl_template_class_def = force
+nl_template_end = false
+nl_template_func_decl = remove
+nl_template_func_def = force
+nl_template_start = false
+nl_template_var = remove
+nl_template_using = remove
+nl_comment_func_def = 1
+nl_constr_colon = force
+nl_constr_init_args = force
+nl_do_brace = add
+nl_else_brace = add
+nl_else_if = remove
+nl_elseif_brace = add
+nl_end_of_file = force
+nl_end_of_file_min = 1
+nl_enum_brace = force
+nl_enum_class_identifier = remove
+nl_enum_class = remove
+nl_enum_colon_type = remove
+nl_enum_identifier_colon = remove
+nl_enum_leave_one_liners = true
+nl_fcall_brace = add
+nl_fdef_brace = force
+nl_fdef_brace_cond = force
+nl_finally_brace = add
+nl_for_brace = add
+nl_func_call_empty = remove
+nl_func_call_paren = remove
+nl_func_call_paren_empty = remove
+nl_func_class_scope = remove
+nl_func_decl_args = remove
+nl_func_decl_empty = remove
+nl_func_decl_end = remove
+nl_func_decl_end_single = remove
+nl_func_decl_start = remove
+nl_func_decl_start_single = remove
+nl_func_def_empty = remove
+nl_func_def_end = remove
+nl_func_def_end_single = remove
+nl_func_def_paren = remove
+nl_func_def_paren_empty = remove
+nl_func_def_start = remove
+nl_func_def_start_single = remove
+nl_func_paren = remove
+nl_func_paren_empty = remove
+nl_func_proto_type_name = remove
+nl_func_scope_name = remove
+nl_func_type_name = remove
+nl_func_type_name_class = remove
+nl_getset_leave_one_liners = true
+nl_if_brace = add
+nl_inside_empty_func = 1
+nl_inside_namespace = 2
+nl_max = 3
+nl_namespace_brace = force
+nl_return_expr = remove
+nl_squeeze_ifdef = true
+nl_start_of_file = remove
+nl_struct_brace = add
+nl_switch_brace = add
+nl_try_brace = add
+nl_type_brace_init_lst = force
+nl_type_brace_init_lst_close = force
+nl_type_brace_init_lst_open = force
+nl_union_brace = add
+nl_var_def_blk_end_func_top = 1
+nl_while_brace = add
+
+# Positioning options
+pos_bool = lead
+pos_constr_colon = lead_break
+pos_constr_comma = lead_force
+pos_enum_comma = trail_force
+
+# Preprocessor options
+pp_indent = remove
+pp_space_after = remove
+pp_multiline_define_body_indent = 3
+
+# Spacing options
+sp_addr = remove
+sp_after_angle = force
+sp_after_byref_func = remove
+sp_after_byref = remove
+sp_after_cast = remove
+sp_after_class_colon = force
+sp_after_comma = force
+sp_after_constr_colon = force
+sp_after_dc = remove
+sp_after_for_colon = force
+sp_after_new = force
+sp_after_operator = remove
+sp_after_operator_sym = remove
+sp_after_ptr_star_func = remove
+sp_after_ptr_star_qualifier = remove
+sp_after_ptr_star = remove
+sp_after_semi = force
+sp_after_semi_for = force
+sp_after_semi_for_empty = remove
+sp_after_sparen = force
+sp_after_tparen_close = remove
+sp_after_type = force
+sp_after_type_brace_init_lst_open = force
+sp_angle_paren_empty = remove
+sp_angle_paren = remove
+sp_angle_word = force
+sp_arith_additive = force
+sp_arith = force
+sp_assign_default = force
+sp_assign = force
+sp_attribute_paren = remove
+sp_balance_nested_parens = false
+sp_before_angle = remove
+sp_before_byref = force
+sp_before_byref_func = force
+sp_before_case_colon = remove
+sp_before_class_colon = force
+sp_before_comma = remove
+sp_before_dc = remove
+sp_before_ellipsis = remove
+sp_before_for_colon = force
+sp_before_ptr_star = force
+sp_before_ptr_star_func = force
+sp_before_semi = remove
+sp_before_semi_for_empty = force
+sp_before_semi_for = remove
+sp_before_sparen = force
+sp_before_square = remove
+sp_before_squares = remove
+sp_before_type_brace_init_lst_close = force
+sp_before_unnamed_byref = force
+sp_before_unnamed_ptr_star = force
+sp_before_vardef_square = remove
+sp_between_ptr_star = remove
+sp_between_semi_for_empty = force
+sp_bool = force
+sp_brace_brace = force
+sp_brace_close_while = force
+sp_brace_typedef = force
+sp_catch_paren = force
+sp_compare = force
+sp_cond_colon_after = force
+sp_cond_colon_before = force
+sp_cond_question_after = force
+sp_cond_question_before = force
+sp_cpp_before_struct_binding = remove
+sp_cpp_cast_paren = remove
+sp_cpp_lambda_fparen = remove
+sp_cpp_lambda_paren_brace = force
+sp_cpp_lambda_square_brace = force
+sp_cpp_lambda_square_paren = remove
+sp_decltype_paren = remove
+sp_defined_paren = force
+sp_deref = remove
+sp_do_brace_open = force
+sp_endif_cmt = force
+sp_enum_after_assign = force
+sp_enum_assign = force
+sp_enum_before_assign = force
+sp_enum_colon = force
+sp_fparen_brace = force
+sp_fparen_brace_initializer = force
+sp_func_call_paren_empty = remove
+sp_func_call_paren = remove
+sp_func_class_paren = remove
+sp_func_class_paren_empty = remove
+sp_func_def_paren_empty = remove
+sp_func_def_paren = remove
+sp_func_proto_paren_empty = remove
+sp_func_proto_paren = remove
+sp_func_type_paren = remove
+sp_incdec = remove
+sp_inside_angle_empty = remove
+sp_inside_angle = remove
+sp_inside_braces_empty = remove
+sp_inside_braces_enum = force
+sp_inside_braces = force
+sp_inside_braces_struct = force
+sp_inside_fparen = remove
+sp_inside_fparens = remove
+sp_inside_paren = remove
+sp_inside_paren_cast = remove
+sp_inside_sparen = remove
+sp_inside_sparen_close = remove
+sp_inside_sparen_open = remove
+sp_inside_square = remove
+sp_inside_square_empty = remove
+sp_inside_tparen = remove
+sp_inv = remove
+sp_member = remove
+sp_not = remove
+sp_paren_paren = remove
+sp_paren_qualifier = force
+sp_pp_concat = force
+sp_pp_stringify = force
+sp_ptr_star_func_var = remove
+sp_ptr_star_func_type = remove
+sp_ptr_star_paren = force
+sp_return_brace = remove
+sp_return_paren = remove
+sp_sign = remove
+sp_sizeof_paren = remove
+sp_sparen_brace = force
+sp_template_angle = remove
+sp_trailing_return = force
+sp_type_brace_init_lst = remove
+sp_type_func = force
+sp_while_paren_open = force
+sp_word_brace_init_lst = remove
+
+# Comment modification options
+cmt_star_cont = true
+
+# eat
+eat_blanks_after_open_brace = true
+eat_blanks_before_close_brace = true
+
+# Code modifying options
+mod_add_long_function_closebrace_comment = 40
+mod_add_long_namespace_closebrace_comment = 5
+mod_add_long_switch_closebrace_comment = 40
+mod_full_brace_do = add
+mod_full_brace_for = add
+mod_full_brace_if = add
+mod_full_brace_while = add
+mod_paren_on_return = add
+#mod_remove_empty_return = true
+mod_remove_empty_return = false
+mod_remove_extra_semicolon = true
+mod_sort_include = true
+mod_sort_incl_import_prioritize_filename = false
+mod_sort_incl_import_prioritize_extensionless = false
+mod_sort_incl_import_prioritize_angle_over_quotes = false
+mod_sort_incl_import_ignore_extension = false
+mod_sort_incl_import_grouping_enabled = false
+debug_timeout = 0
+
+# the build of uncrustify needs the options to be set to ignore
+sp_after_assign = ignore
+sp_before_assign = ignore
+sp_before_tr_cmt = ignore
+sp_cmt_cpp_start = ignore
+nl_before_member = ignore
+nl_brace_brace = ignore
+nl_cpp_ldef_brace = ignore // TODO
+nl_enum_own_lines = ignore
+nl_func_call_args = ignore
+nl_func_call_start = ignore // remove
+nl_func_call_end = ignore // remove
+nl_func_def_args = ignore
+
+use_form_feed_no_more_as_whitespace_character = false
+
+# NOT yet used sp_xx options
+# sp_after_decltype
+# sp_after_invariant_paren
+# sp_after_mdatype_commas
+# sp_after_newop_paren
+# sp_after_noexcept
+# sp_after_oc_at_sel
+# sp_after_oc_at_sel_parens
+# sp_after_oc_block_caret
+# sp_after_oc_colon
+# sp_after_oc_dict_colon
+# sp_after_oc_msg_receiver
+# sp_after_oc_property
+# sp_after_oc_return_type
+# sp_after_oc_scope
+# sp_after_oc_synchronized
+# sp_after_oc_type
+# sp_after_operator_sym_empty
+# sp_after_ptr_block_caret
+# sp_after_send_oc_colon
+# sp_after_tag
+# sp_after_throw
+# sp_angle_colon
+# sp_angle_shift
+# sp_annotation_paren
+# sp_before_constr_colon
+# sp_before_mdatype_commas
+# sp_before_nl_cont
+# sp_before_oc_block_caret
+# sp_before_oc_colon
+# sp_before_oc_dict_colon
+# sp_before_oc_proto_list
+# sp_before_pp_stringify
+# sp_before_send_oc_colon
+# sp_before_square_asm_block
+# sp_before_template_paren
+# sp_between_mdatype_commas
+# sp_between_new_paren
+# sp_brace_catch
+# sp_brace_else
+# sp_brace_finally
+# sp_case_label
+# sp_catch_brace
+# sp_cond_question
+# sp_cond_ternary_short
+# sp_cparen_oparen
+# sp_cpp_lambda_assign
+# sp_d_array_colon
+# sp_else_brace
+# sp_enum_brace
+# sp_enum_paren
+# sp_extern_paren
+# sp_finally_brace
+# sp_fparen_dbrace
+# sp_func_call_user_inside_fparen
+# sp_func_call_user_paren
+# sp_func_call_user_paren_paren
+# sp_getset_brace
+# sp_inside_braces_oc_dict
+# sp_inside_newop_paren
+# sp_inside_newop_paren_close
+# sp_inside_newop_paren_open
+# sp_inside_oc_at_sel_parens
+# sp_inside_square_oc_array
+# sp_inside_type_brace_init_lst
+# sp_invariant_paren
+# sp_macro
+# sp_macro_func
+# sp_oc_brace_catch
+# sp_oc_catch_brace
+# sp_oc_catch_paren
+# sp_oc_classname_paren
+# sp_paren_brace
+# sp_paren_comma
+# sp_paren_ellipsis
+# sp_paren_noexcept
+# sp_range
+# sp_scope_paren
+# sp_sizeof_ellipsis
+# sp_sizeof_ellipsis_paren
+# sp_special_semi
+# sp_square_fparen
+# sp_super_paren
+# sp_this_paren
+# sp_throw_paren
+# sp_trailing_ret_t
+# sp_try_brace
+# sp_type_ellipsis
+# sp_vala_after_translation
+# sp_version_paren
+# sp_word_brace
+# sp_word_brace_ns
+
+# NOT yet used nl_xx options
+# nl_after_annotation
+# nl_after_square_assign
+# nl_after_synchronized
+# nl_assign_square
+# nl_before_synchronized
+# nl_before_throw
+# nl_between_annotation
+# nl_brace_finally
+# nl_brace_square
+# nl_brace_struct_var
+# nl_class_init_args
+# nl_getset_brace
+# nl_oc_before_end
+# nl_oc_before_implementation
+# nl_oc_before_interface
+# nl_oc_block_brace
+# nl_oc_brace_catch
+# nl_oc_catch_brace
+# nl_oc_implementation_brace
+# nl_oc_interface_brace
+# nl_oc_mdef_brace
+# nl_paren_dbrace_open
+# nl_property_brace
+# nl_scope_brace
+# nl_synchronized_brace
+# nl_template_class
+# nl_tsquare_brace
+# nl_unittest_brace
+# nl_using_brace
+# nl_version_brace
+# nl_func_call_args_multi_line_ignore_closures
+
+# NOT yet used indent_xx options
+# indent_off_after_return
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/forUncrustifySources.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/forUncrustifySources.txt
index 6385ab7d..6385ab7d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/forUncrustifySources.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/forUncrustifySources.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/ChunkStack.lnt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/ChunkStack.lnt
index cea5860f..cea5860f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/ChunkStack.lnt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/ChunkStack.lnt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/align.lnt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/align.lnt
index 32e388c3..32e388c3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/align.lnt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/align.lnt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/chunk_list.lnt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/chunk_list.lnt
index e69de29b..e69de29b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/chunk_list.lnt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/chunk_list.lnt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/logger.lnt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/logger.lnt
index e41a1282..e41a1282 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/logger.lnt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/logger.lnt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/readme.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/readme.txt
index f2534349..f2534349 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/readme.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/readme.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/unc_text.lnt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/unc_text.lnt
index 89cb4fdb..89cb4fdb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/unc_text.lnt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/unc_text.lnt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/uncrustify_types.lnt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/uncrustify_types.lnt
index e69de29b..e69de29b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/lnt/uncrustify_types.lnt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/lnt/uncrustify_types.lnt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/man/uncrustify.1.in b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/man/uncrustify.1.in
index 41267296..41267296 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/man/uncrustify.1.in
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/man/uncrustify.1.in
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/osx/Xcode Organizer Actions.xccommands b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/osx/Xcode Organizer Actions.xccommands
index be727021..be727021 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/osx/Xcode Organizer Actions.xccommands
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/osx/Xcode Organizer Actions.xccommands
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/package.json b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/package.json
new file mode 100644
index 00000000..fc10438c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "uncrustify",
+ "version": "0.78.0",
+ "description": "A highly configurable, easily modifiable source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA",
+ "main": "uncrustify",
+ "scripts": {
+ "preinstall": "mkdir -p build && cd build && cmake .. && make"
+ },
+ "bin": "src/uncrustify",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/uncrustify/uncrustify"
+ },
+ "keywords": [
+ "uncrustify",
+ "source code beautifier"
+ ],
+ "author": "Ben Gardner",
+ "author": "Guy Maurel",
+ "license": "GPL-2.0-or-later"
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/release-process.rst b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/release-process.rst
new file mode 100644
index 00000000..30217840
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/release-process.rst
@@ -0,0 +1,348 @@
+============================
+ Uncrustify Release Process
+============================
+
+.. Update the date in the next line when editing this document!
+
+*This document was last updated on 2023-11-13, for Uncrustify 0.78.0.*
+
+This document uses "0.1.2" throughout as an example version number.
+Whenever you see this, you should substitute the version number
+of the new release being prepared.
+
+Paths are specified in git syntax, i.e. ``:/`` is the repository root.
+
+Requirements
+============
+
+This document assumes you are using a Linux-based OS.
+While it should be possible to cut a release on Windows,
+using e.g. the `Git for Windows SDK <https://gitforwindows.org/>`_
+or a MinGW_ environment, the names and/or arguments to some commands
+may be different.
+
+
+In addition to the build and test requirements for Uncrustify itself
+(CMake, a C++ compiler, Python, git), you will also need:
+
+- tar
+- python3-git
+- Binutils-mingw-w64
+- Gcc-mingw-w64
+- G++-mingw-w64
+- zip
+- wget (optional)
+- scp (to update documentation on the SourceForge page)
+
+Using packages provided by your OS distribution is *strongly* recommended.
+(Exact package names may vary depending on your distribution.)
+Examples use ``wget`` to download files via command line,
+but any mechanism of obtaining files over HTTPS may be employed.
+
+Preparing a Candidate
+=====================
+
+The first step, obviously, is deciding to make a release.
+Prior to making a release, verify that the repository is in a stable state
+and that all CI (continuous integration - AppVeyor) has passed.
+This should ensure all tests pass and building
+(including cross-compiling) for Windows is working.
+
+Once the release process is started,
+only pull requests needed to fix critical bugs,
+or related to the release process, should be accepted.
+(This will minimize the need to redo or repeat work
+such as updating the documentation, especially the change log.)
+
+To start the release process, first check that:
+
+- You are on the ``master`` branch
+- Your local clone is up to date
+- ``CMAKE_BUILD_TYPE`` is set to ``Release`` (or ``RelWithDebInfo``)
+- Your build is up to date
+- check the list of authors with scripts/prepare_list_of_authors.sh
+
+You might need a new PAT for your account, for your admin-account.
+See:
+https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/
+https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
+ loggin with a admin account at https://github.com/uncrustify/uncrustify
+ on the right, click on the photo
+ scroll down to "Settings"
+ on the left, scroll down to "Developer settings", and click
+ on the left, click on "Personal access tokens"
+ choose "Tokens (classic), click
+ if necessary "Delete" expired token(s)
+ click on "Generate new token"
+ choose "Generate new token (classic)", click
+ choose a "what's this token for"
+ click on "repo"
+ scroll down to bottom and click on "Generate token"
+Make sure to copy your personal access token now. You won’t be able to see it again!
+ copy the token "ghp_otx****"
+ and substitute in the file .git/config for [remote "origin"]
+ "url = https://gmaurel:ghp_otxZ****"
+
+Then, run::
+
+ $ scripts/release_tool.py init
+ $ scripts/release_tool.py update path/to/uncrustify
+
+(Replace ``path/to/uncrustify`` with the path to the Uncrustify executable
+you just built, e.g. ``build/uncrustify``.)
+
+This will create a branch for the release candidate
+and perform some automated updates to various files.
+With no arguments, ``init`` will prompt you for the new version number,
+defaulting to ``x.(y+1).0``, where ``x.y.z`` is the previous release.
+The ``--version`` argument may also be used to specify the version
+(e.g. if the script will not be able to prompt for input).
+
+After, you should check that the following files
+show the correct version number and option count:
+
+- ``:/CMakeLists.txt`` (version number only; look for ``UNCRUSTIFY_VERSION``)
+- ``:/package.json`` (version number only; you'll see it, the file is tiny)
+- ``:/README.md`` (look for "options as of version")
+- ``:/documentation/htdocs/index.html`` (look for "options as of version")
+
+(Note that ``uncrustify`` itself will not show the new version number
+until the final release has been tagged.)
+
+Update Documentation
+====================
+
+Update ``:/ChangeLog``.
+There is a helper script, ``:/scripts/gen_changelog.py``,
+that can help extract new options since the previous release:
+
+.. code::
+
+ $ scripts/gen_changelog.py uncrustify-0.0.0
+
+Replace ``0.0.0`` with the version of the *previous* release.
+This will generate a bunch of output like::
+
+ 0123456789abcdef0123456789abcdef01234567
+ Added : better_name Jan 13 1970
+ Removed : poor_name Jan 13 1970
+ fedcba9876543210fedcba9876543210fedcba98
+ Added : new_option_1 Jan 18 1970
+ Added : new_option_2 Jan 18 1970
+
+Your goal is to turn the "raw" output into something like this::
+
+ Deprecated options:
+ - poor_name Jan 13 1970
+ Renamed to better_name
+
+ New options:
+ - new_option_1 Jan 18 1970
+ - new_option_1 Jan 18 1970
+
+To accomplish this, you will need to inspect any removed options,
+possibly consulting the commits in which they were removed,
+to determine the reason for deprecation and what replacement is recommended.
+(Note that it may not be as simple as "use X instead".)
+Also watch for options that were added and subsequently renamed
+since the last release. (This has happened a few times.
+In such cases, the new name should show up as an ordinary "new" option,
+and the old name should be entirely omitted from the change log.)
+
+It helps to copy the output to a scratch file for editing.
+Move deprecated options to the top and add a "Deprecated options:" header,
+then add a "New options:" header in front of what's left,
+and remove the commit SHAs (``sed -r '/^[[:xdigit:]]{40}/d``
+if you don't want to do it by hand).
+Then, check that the options are in order by date;
+date of authorship vs. date of merge may cause discrepancies.
+Finally, replace occurrences of ``\w+ +:`` with ``-``
+(if your editor supports regular expressions;
+otherwise you can individually replace ``Added :`` and ``Removed :``).
+
+Add a new release header (don't forget to add the date!) to the change log
+and insert the list of option changes as created above.
+Also fill in the list of resolved issues, new keywords (if any),
+as well as any other changes that need to be mentioned.
+
+If any command line arguments have been added or changed,
+including descriptions for the same, check to see if
+``:/man/uncrustify.1.in`` needs to be updated.
+(Hopefully this happened when the source was changed!)
+
+Finalize the Code Changes
+=========================
+
+Inspect your working tree.
+Use ``git add -p`` to stage the changes made to the documentation
+and other artifacts that contain version-dependent information.
+Verify that only desired changes are staged,
+and that your working tree is otherwise clean.
+
+Now is a good time to recheck
+that everything builds, and that all the tests pass.
+This is also a good time to manually test 32- and 64-bit builds.
+
+When you are ready, commit the changes using:
+
+.. code::
+
+ $ scripts/release_tool.py commit
+
+(If you prefer, you can also commit the changes manually;
+the script just fills in the commit message for you.)
+
+Submit and Tag the Release
+==========================
+
+Push the release candidate branch to GitHub, and create a pull request.
+Once the pull request is merged, tag the release using:
+Make sure, the file .git/config has the right 'admin' value:
+[remote "origin"]
+ url = https://<admin account>:<PAT>@github.com/uncrustify/uncrustify.git
+Check it with:
+$ git config --local --get remote.origin.url
+
+.. code::
+
+ $ scripts/release_tool.py tag
+
+Note that this will only work if the merge of the release candidate
+is the most recent commit upstream.
+Otherwise, the merge commit must be specified by using the ``-c`` option.
+
+(Tagging the release does not need to be done on any particular branch.
+The command will not affect or look at your work tree at all.)
+
+Create Binaries
+===============
+
+Now that the release is published, grab a copy of the sources from GitHub:
+
+.. code::
+
+ $ wget https://github.com/uncrustify/uncrustify/archive/uncrustify-0.1.2.zip
+ $ unzip -e uncrustify-0.1.2.zip
+
+Next, build the 32- and 64-bit Windows binaries:
+
+.. code::
+
+ $ cd /path/to/uncrustify-uncrustify-0.1.2
+ $ mkdir buildwin-32
+ $ cd buildwin-32
+ $ cmake -G Ninja \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw32.cmake \
+ -DCMAKE_EXE_LINKER_FLAGS="-static -s" \
+ ..
+ $ ninja
+ $ cpack
+
+.. code::
+
+ $ cd /path/to/uncrustify-uncrustify-0.1.2
+ $ mkdir buildwin-64
+ $ cd buildwin-64
+ $ cmake -G Ninja \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw64.cmake \
+ -DCMAKE_EXE_LINKER_FLAGS="-static -s" \
+ ..
+ $ ninja
+ $ cpack
+
+Create a tarball:
+
+.. code::
+
+ $ cd /path/to/uncrustify
+ $ git archive -o uncrustify-0.1.2.tar.gz --prefix=uncrustify-0.1.2/ uncrustify-0.1.2
+TODO: find the best strategie...
+
+(If you don't have Ninja_, or just don't want to use it for whatever reason,
+omit ``-G Ninja`` and run ``make`` instead of ``ninja``.)
+
+This is also a good time to test the tagged build on Linux:
+
+.. code::
+
+ $ wget https://github.com/uncrustify/uncrustify/archive/uncrustify-0.1.2.tar.gz
+ $ tar xzf uncrustify-0.1.2.tar.gz
+ $ cd uncrustify-uncrustify-0.1.2
+ $ mkdir build
+ $ cd build
+ $ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
+ $ ninja
+ $ ctest
+ $ ./uncrustify --version
+
+Upload to SourceForge
+=====================
+
+- Login as admin under https://sourceforge.net/projects/uncrustify/
+- Change to https://sourceforge.net/projects/uncrustify/files/
+- "Add Folder"; the name should be e.g. "uncrustify-0.1.2"
+- Navigate to the new folder
+ (e.g. https://sourceforge.net/projects/uncrustify/files/uncrustify-0.1.2/)
+- "Add File"; upload the following files
+ (adjusting for the actual version number):
+
+ - README.md
+ - uncrustify-0.1.2.tar.gz
+ - buildwin-32/uncrustify-0.1.2_f-win32.zip
+ - buildwin-64/uncrustify-0.1.2_f-win64.zip
+
+- "Done"
+- Upload the documentation:
+
+ .. code::
+
+ $ scp -r documentation/htdocs/* ChangeLog \
+ USER,uncrustify@web.sourceforge.net:htdocs/
+
+- Use the web interface (file manager) to create the release folder
+ and upload the files to SourceForge.
+
+Announce the Release (Optional)
+===============================
+
+The new release is live! Spread the word! Consider these ideas:
+
+- Create a news item.
+- Update freshmeat.net project.
+
+Release Checklist
+=================
+
+The following list serves as a quick reference for making a release.
+These items are explained in greater detail above.
+
+#. Verify that CI passes
+
+#. Use ``release_tool.py`` to initialize the release
+ and perform automated updates. Check:
+
+ #. ``:/CMakeLists.txt``
+ #. ``:/package.json``
+ #. ``:/README.md``
+ #. ``:/documentation/htdocs/index.html``
+
+#. Update documentation as needed:
+
+ #. ``:/ChangeLog``
+ #. ``:/man/uncrustify.1.in``
+
+#. Stage changes.
+#. Test everything again.
+#. Finalize the code changes.
+#. Push to GitHub and create a merge request.
+#. Tag the merged release branch.
+#. Create Windows (32- and 64-bit) binaries.
+#. Run a test build on Linux.
+#. Upload the release and documentation to SourceForge.
+#. Announce the release!
+
+.. _MinGW: http://www.mingw.org/
+.. _GitPython: https://github.com/gitpython-developers/GitPython
+.. _Ninja: https://ninja-build.org/
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/Gcov_test.sh b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/Gcov_test.sh
index a3853773..a3853773 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/Gcov_test.sh
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/Gcov_test.sh
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/Run_clang-tidy.sh b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/Run_clang-tidy.sh
index c2f1c150..c2f1c150 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/Run_clang-tidy.sh
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/Run_clang-tidy.sh
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/add_test_list.awk b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/add_test_list.awk
index 1fbe2840..1fbe2840 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/add_test_list.awk
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/add_test_list.awk
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/check_options.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/check_options.py
index 1d32224b..1d32224b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/check_options.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/check_options.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/cmpcfg.pl b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/cmpcfg.pl
index df119dc1..df119dc1 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/cmpcfg.pl
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/cmpcfg.pl
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/compare_the_gcov.awk b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/compare_the_gcov.awk
index 30dba1ad..30dba1ad 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/compare_the_gcov.awk
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/compare_the_gcov.awk
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/gen_changelog.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/gen_changelog.py
new file mode 100755
index 00000000..52428c58
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/gen_changelog.py
@@ -0,0 +1,111 @@
+#!/usr/bin/env python
+
+'''
+This script attempts to extract what options have been added since the
+specified revision (usually a tag, but any revision that git recognizes may be
+provided). It accepts an optional second revision to use as the cut-off. The
+default is your LOCAL "master". Thus, you should ensure that this is up to date
+before running this script.
+
+This script works by extracting the set of options before and after every
+commit that affected ':src/options.h' and computing the differences. It should,
+therefore, be fairly robust (for example, options that moved around won't show
+up). However, if an option is removed and subsequently re-added, or if an
+option was added and subsequently removed, the resulting records will need to
+be reconciled manually.
+'''
+
+import argparse
+import git
+import os
+import re
+import sys
+import time
+
+re_option = re.compile(r'extern (Bounded)?Option<[^>]+>')
+
+
+# -----------------------------------------------------------------------------
+def extract_options(repo, blob_id):
+ from git.util import hex_to_bin
+
+ blob = git.Blob(repo, hex_to_bin(blob_id))
+ content = blob.data_stream.stream
+ options = set()
+
+ for line in iter(content.readline, b''):
+ line = line.decode('utf-8').strip()
+
+ if re_option.match(line):
+ line = content.readline().decode('utf-8').strip()
+ options.add(line.split(';')[0])
+
+ return options
+
+
+# =============================================================================
+class Changeset(object):
+ # -------------------------------------------------------------------------
+ def __init__(self, repo, sha):
+ self.sha = sha
+ self.added_options = set()
+ self.removed_options = set()
+
+ commit = repo.commit(sha)
+ ad = time.gmtime(commit.authored_date)
+ self.date = time.strftime('%b %d %Y', ad).replace(' 0', ' ')
+
+ info = repo.git.log('-1', '--raw', '--abbrev=40', '--pretty=',
+ sha, '--', ':src/options.h').split(' ')
+ if len(info) < 5:
+ return
+
+ old_options = extract_options(repo, info[2])
+ new_options = extract_options(repo, info[3])
+ self.added_options = new_options.difference(old_options)
+ self.removed_options = old_options.difference(new_options)
+
+
+# -----------------------------------------------------------------------------
+def main():
+ parser = argparse.ArgumentParser(
+ description='Generate changelog for new options')
+
+ root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
+ parser.add_argument('--repo', type=str, default=root,
+ help='Path to uncrustify git repository')
+ parser.add_argument('since', type=str,
+ help='Revision (tag) of previous uncrustify version')
+ parser.add_argument('until', type=str, default='master', nargs='?',
+ help='Revision (tag) of next uncrustify version')
+
+ args = parser.parse_args()
+ repo = git.Repo(args.repo)
+ revs = repo.git.log('--pretty=%H', '--reverse',
+ '{}..{}'.format(args.since, args.until),
+ '--', ':src/options.h').split('\n')
+
+ if revs == ['']:
+ print('No changes were found')
+ return 1
+
+ changes = []
+ for r in revs:
+ c = Changeset(repo, r)
+ if len(c.added_options) or len(c.removed_options):
+ changes.append(c)
+
+ for c in changes:
+ print(' ', c.sha)
+ for o in c.added_options:
+ print(' Added : {:36} {}'.format(o, c.date))
+ for o in c.removed_options:
+ print(' Removed : {:36} {}'.format(o, c.date))
+
+ return 0
+
+
+# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/gen_config_combinations_uniq_output.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/gen_config_combinations_uniq_output.py
index 2fa4fb0c..2fa4fb0c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/gen_config_combinations_uniq_output.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/gen_config_combinations_uniq_output.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/gen_config_combinations_uniq_output_example.json b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/gen_config_combinations_uniq_output_example.json
index 315fdfef..315fdfef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/gen_config_combinations_uniq_output_example.json
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/gen_config_combinations_uniq_output_example.json
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/grammar_permutator.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/grammar_permutator.py
index cd42bd9f..cd42bd9f 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/grammar_permutator.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/grammar_permutator.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/make_katehl.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/make_katehl.py
index e241986a..e241986a 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/make_katehl.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/make_katehl.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/make_option_enum.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/make_option_enum.py
index c141bb04..c141bb04 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/make_option_enum.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/make_option_enum.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/make_options.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/make_options.py
index 71e97115..71e97115 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/make_options.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/make_options.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/make_punctuator_table.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/make_punctuator_table.py
index f3d90081..f3d90081 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/make_punctuator_table.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/make_punctuator_table.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/make_version.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/make_version.py
index 14e20018..14e20018 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/make_version.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/make_version.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/option_reducer.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/option_reducer.py
index 403ff92b..403ff92b 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/option_reducer.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/option_reducer.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/au-sm123.lnt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/au-sm123.lnt
index 6eaf9a6b..6eaf9a6b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/au-sm123.lnt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/au-sm123.lnt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/co-gcc.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/co-gcc.h
index e948a20f..e948a20f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/co-gcc.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/co-gcc.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/co-gcc.lnt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/co-gcc.lnt
index f7bd38dd..f7bd38dd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/co-gcc.lnt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/co-gcc.lnt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/lint_cfg.lnt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/lint_cfg.lnt
index 72530d53..72530d53 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/lint_cfg.lnt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/lint_cfg.lnt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/pclint_cfg_eclipse.lnt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/pclint_cfg_eclipse.lnt
index d1945c5b..d1945c5b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/pclint_cfg_eclipse.lnt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/pclint_cfg_eclipse.lnt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/policy.lnt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/policy.lnt
index 911e74b7..911e74b7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/policy.lnt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/policy.lnt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/run-pclint-eclipse.bat b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/run-pclint-eclipse.bat
index 051813d6..051813d6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/run-pclint-eclipse.bat
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/run-pclint-eclipse.bat
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/usage.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/usage.txt
index fff1c305..fff1c305 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/pclint/usage.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/pclint/usage.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/prepare_list_of_authors.sh b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/prepare_list_of_authors.sh
index 4151ef8a..4151ef8a 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/prepare_list_of_authors.sh
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/prepare_list_of_authors.sh
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/release_tool.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/release_tool.py
new file mode 100755
index 00000000..32a6f89e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/release_tool.py
@@ -0,0 +1,313 @@
+#!/usr/bin/env python
+
+import argparse
+import git # /usr/lib/python3/dist-packages/git/__init__.py
+import os
+import re # Support for regular expressions (RE).
+import sys
+
+# use the variable DEBUG to get more output
+DEBUG = 1
+
+if sys.version_info[0] < 3:
+ input = raw_input
+
+re_desc = re.compile(r'^uncrustify-([0-9]+[.][0-9]+[.][0-9]+)')
+re_branch = re.compile(r'^uncrustify-RC-([0-9]+[.][0-9]+[.][0-9]+)')
+re_merge = re.compile(r'^Merge pull request #[0-9]+ from [^/]+/(.*)')
+re_version = re.compile(r'^[0-9]+[.][0-9]+[.][0-9]+$')
+re_option_count = re.compile(r'There are currently ([0-9]+) options')
+
+
+# -----------------------------------------------------------------------------
+def fatal(msg):
+ raise Exception(msg)
+
+
+# -----------------------------------------------------------------------------
+def get_version_str(repo, candidate=True, required=True):
+ if candidate:
+ if DEBUG:
+ print('git.symbolic-ref("-q", "--short", "HEAD")')
+ b = repo.git.symbolic_ref('-q', '--short', 'HEAD')
+ m = re_branch.match(b)
+ if m:
+ return m.group(1)
+
+ if DEBUG:
+ print('git.describe("HEAD")')
+
+ d = repo.git.describe('HEAD')
+ m = re_desc.match(d)
+ if m:
+ return m.group(1)
+
+ if required:
+ fatal('Unable to determine current version')
+
+ return None
+
+
+# -----------------------------------------------------------------------------
+def get_version_info(repo, candidate=True, required=True):
+ s = get_version_str(repo, candidate, required)
+ return tuple(map(int, s.split('.')))
+
+
+# -----------------------------------------------------------------------------
+def get_option_count(executable):
+ import subprocess
+
+ out = subprocess.check_output([executable, '--count-options'])
+ m = re_option_count.match(out.decode('utf-8'))
+ if m is None:
+ fatal('Failed to get option count from \'{}\''.format(executable))
+
+ return int(m.group(1))
+
+
+# -----------------------------------------------------------------------------
+def alter(repo, path, old, new):
+ p = os.path.join(repo.working_tree_dir, path)
+ with open(p, 'r') as f:
+ content = f.read()
+ content = re.sub(old, new, content)
+ with open(p, 'w') as f:
+ f.write(content)
+ print('Updated: {}'.format(path))
+
+
+# -----------------------------------------------------------------------------
+def generate(repo, version, path, *args):
+ import subprocess
+
+ p = os.path.join(repo.working_tree_dir, path)
+
+ if version is None:
+ with open(p, 'r') as f:
+ content = f.read()
+ version = re.search(r'Uncrustify([a-z_]*)?-([0-9]+(\.[0-9]+)+(-[0-9]+)?)?(-?[0-9a-f]{6,})?', content)
+ if version:
+ version = version.group()
+ else:
+ version = 'Uncrustify'
+ version += "-dev"
+ else:
+ version = 'Uncrustify-{}'.format(version)
+
+ with open(p, 'w') as f:
+ c = subprocess.check_call(args, stdout=f)
+ print('Created: {}'.format(path))
+
+ alter(repo, path,
+ r'Uncrustify([a-z_]*)?-([0-9]+(\.[0-9]+)+(-[0-9]+)?)?(-?[0-9a-f]{6,})?(-?dirty)?(-dev)?',
+ r'{}'.format(version))
+
+
+# -----------------------------------------------------------------------------
+def cmd_init(repo, args):
+ v = args.version
+ if v is None:
+ c = get_version_info(repo, candidate=False, required=False)
+ if c:
+ n = '.'.join(map(str, (c[0], c[1] + 1, 0)))
+ v = input('Version to be created? [{}] '.format(n))
+ if len(v) == 0:
+ v = n
+
+ else:
+ v = input('Version to be created? ')
+
+ if DEBUG:
+ print('The value for version is', v)
+
+ if not re_version.match(v):
+ fatal('Bad version number, \'{}\''.format(v))
+ if DEBUG:
+ s = 'git.checkout(-b, "uncrustify-RC-{}")'.format(v)
+ print(s)
+
+ repo.git.checkout('-b', 'uncrustify-RC-{}'.format(v))
+
+
+# -----------------------------------------------------------------------------
+def cmd_update(repo, args):
+ if args.keepversion:
+ print('Not updating version info in docs')
+ v = None
+ else:
+ v = get_version_str(repo)
+ c = get_option_count(args.executable)
+
+ if not args.keepversion:
+ alter(repo, 'CMakeLists.txt',
+ r'(set *[(] *UNCRUSTIFY_VERSION +")[0-9.]+',
+ r'\g<1>{}'.format(v))
+ alter(repo, 'package.json',
+ r'("version" *): *"[0-9.]+"',
+ r'\g<1>: "{}"'.format(v))
+ alter(repo, 'README.md',
+ r'[0-9]+ configurable options as of version [0-9.]+',
+ r'{} configurable options as of version {}'.format(c, v))
+ alter(repo, 'documentation/htdocs/index.html',
+ r'[0-9]+ configurable options as of version [0-9.]+',
+ r'{} configurable options as of version {}'.format(c, v))
+ else:
+ alter(repo, 'README.md',
+ r'[0-9]+ configurable options as of version ',
+ r'{} configurable options as of version '.format(c))
+ alter(repo, 'documentation/htdocs/index.html',
+ r'[0-9]+ configurable options as of version ',
+ r'{} configurable options as of version '.format(c))
+
+ generate(repo, v, 'etc/defaults.cfg',
+ args.executable, '--show-config')
+ generate(repo, v, 'documentation/htdocs/default.cfg',
+ args.executable, '--show-config')
+ generate(repo, v, 'documentation/htdocs/config.txt',
+ args.executable, '--show-config')
+ generate(repo, v, 'etc/uigui_uncrustify.ini',
+ args.executable, '--universalindent')
+
+ # For 'optiondocs' command, update universalindent.cfg also, since
+ # unit tests verify it.
+ if args.keepversion:
+ # Needs to be kept in sync with test_cli_options.py
+ generate(repo, v, 'tests/cli/output/universalindent.cfg',
+ args.executable, '--universalindent')
+ alter(repo, 'tests/cli/output/universalindent.cfg',
+ r'(version=U.+)|(\(\d+\))|(\r)',
+ r'');
+
+# -----------------------------------------------------------------------------
+def cmd_commit(repo, args):
+ v = get_version_str(repo)
+ message = 'Prepare Uncrustify v{} release'.format(v)
+
+ extra_args = []
+ if args.amend:
+ extra_args += ['--amend', '--date=now']
+
+ repo.git.commit('-m', message, *extra_args)
+
+
+# -----------------------------------------------------------------------------
+def cmd_tag(repo, args):
+ import uuid
+
+ # user_name = repo.config_reader().get_value('user', 'name')
+ url = repo.config_reader().get_value('remote "origin"', 'url')
+ print('The user account is', url)
+ print('you need an "admin" account')
+ v = input('Do you really want to use this account? (yes/no) ')
+ if len(v) == 0:
+ fatal("0 End")
+ else:
+ print(v)
+ if v != "yes":
+ fatal("2 End")
+
+ # Determine location of remote repository
+ if args.ssh:
+ s = 'git@{}:'.format(args.server)
+ else:
+ s = 'https://{}/'.format(args.server)
+ r = '{}{}/{}.git'.format(s, args.organization, args.project)
+
+ # Fetch upstream
+ u = repo.create_remote(str(uuid.uuid4()), r)
+ try:
+ u.fetch(refspec='master')
+
+ # Get log
+ if hasattr(args, 'commit'):
+ c = repo.commit(args.commit)
+ else:
+ c = repo.commit('{}/master'.format(u.name))
+ m = re_merge.match(c.message.split('\n')[0])
+ if m is None:
+ fatal('Last commit is not a merge of a release candidate?')
+
+ m = re_branch.match(m.group(1))
+ if m is None:
+ fatal('Failed to extract version from release candidate merge')
+ v = m.group(1)
+
+ # Create and push tag
+ extra_args = {}
+ if args.force:
+ extra_args['force_with_lease'] = True
+
+ tag = 'uncrustify-{}'.format(v)
+ message = 'Create Uncrustify v{} release'.format(v)
+ repo.git.tag('-a', tag, c, '-m', message, '--force')
+ u.push(refspec=tag, **extra_args)
+
+ finally:
+ repo.delete_remote(u)
+
+
+# -----------------------------------------------------------------------------
+def main():
+ parser = argparse.ArgumentParser(
+ description='Perform release-related actions')
+
+ root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
+ parser.add_argument('--repo', type=str, default=root,
+ help='path to uncrustify git repository')
+
+ subparsers = parser.add_subparsers(title='subcommands',
+ help='action to perform')
+
+ parser_init = subparsers.add_parser(
+ 'init', help='initialize new version')
+ parser_init.set_defaults(func=cmd_init)
+ parser_init.add_argument('-v', '--version',
+ help='version number for release')
+
+ parser_update = subparsers.add_parser(
+ 'optiondocs', help='update documentation from options')
+ parser_update.set_defaults(func=cmd_update, keepversion=True)
+ parser_update.add_argument('executable',
+ help='path to uncrustify executable')
+
+ parser_update = subparsers.add_parser(
+ 'update', help='update version information')
+ parser_update.set_defaults(func=cmd_update, keepversion=False)
+ parser_update.add_argument('executable',
+ help='path to uncrustify executable')
+
+ parser_commit = subparsers.add_parser(
+ 'commit', help='commit changes for new version')
+ parser_commit.set_defaults(func=cmd_commit)
+ parser_commit.add_argument('-a', '--amend', action='store_true',
+ help='amend a previous release commit')
+
+ parser_tag = subparsers.add_parser(
+ 'tag', help='tag release and push tag to github')
+ parser_tag.set_defaults(func=cmd_tag)
+ parser_tag.add_argument('--ssh', action='store_true',
+ help='use ssh (instead of HTTPS) to push')
+ parser_tag.add_argument('-s', '--server', default='github.com',
+ help='push to specified server')
+ parser_tag.add_argument('-o', '--organization', default='uncrustify',
+ help='push to specified user or organization')
+ parser_tag.add_argument('-p', '--project', default='uncrustify',
+ help='push to specified project')
+ parser_tag.add_argument('-c', '--commit',
+ help='tag specified commit '
+ '(instead of latest \'master\')')
+ parser_tag.add_argument('-f', '--force', action='store_true',
+ help='force push the tag')
+
+ args = parser.parse_args()
+ repo = git.Repo(args.repo)
+ args.func(repo, args)
+
+ return 0
+
+
+# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/run_ctest.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/run_ctest.py
new file mode 100755
index 00000000..65a04774
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/run_ctest.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python3
+
+import argparse
+import math
+import os
+import subprocess
+import sys
+
+from multiprocessing import cpu_count
+
+default_jobs = min(cpu_count() + 2, cpu_count() * 2)
+
+# -----------------------------------------------------------------------------
+def main():
+ parser = argparse.ArgumentParser(description='Run CTest')
+ parser.add_argument('-q', '--quiet', action='store_true',
+ help='suppress output of failing tests')
+ parser.add_argument('-j', '--parallel', type=int, default=default_jobs,
+ help='number of jobs to use for parallel execution')
+ parser.add_argument('args', metavar='ARGS', nargs='*', default=[],
+ help='additional arguments to pass to CTest')
+ args = parser.parse_args()
+
+ if not os.path.exists('CTestTestfile.cmake'):
+ print('No test configuration file found!')
+ print('(Note: This script must be run from your build directory.)')
+ sys.exit(-1)
+
+ cmd = ['ctest', '-j{}'.format(args.parallel)]
+ #cmd = ['ctest', '--verbose', '-j{}'.format(args.parallel)] Issue #4066
+ if not args.quiet:
+ cmd.append('--output-on-failure')
+ cmd += args.args
+
+ try:
+ subprocess.check_call(cmd)
+ except subprocess.CalledProcessError as exc:
+ sys.exit(exc.returncode)
+
+
+# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+if __name__ == '__main__':
+ main()
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/tokenizer.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/tokenizer.py
index 0bc33bac..0bc33bac 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/tokenizer.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/tokenizer.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/update_emscripten_bindings.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/update_emscripten_bindings.py
index 781311e2..781311e2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/scripts/update_emscripten_bindings.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/scripts/update_emscripten_bindings.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/.kateconfig b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/.kateconfig
index 4d9024f0..4d9024f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/.kateconfig
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/.kateconfig
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/ChunkStack.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/ChunkStack.cpp
new file mode 100644
index 00000000..fbf8a737
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/ChunkStack.cpp
@@ -0,0 +1,120 @@
+/**
+ * @file ChunkStack.cpp
+ * Manages a chunk stack
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "ChunkStack.h"
+
+
+void ChunkStack::Set(const ChunkStack &cs)
+{
+ m_cse.resize(cs.m_cse.size());
+
+ for (size_t idx = 0; idx < m_cse.size(); idx++)
+ {
+ m_cse[idx].m_pc = cs.m_cse[idx].m_pc;
+ m_cse[idx].m_seqnum = cs.m_cse[idx].m_seqnum;
+ }
+
+ m_seqnum = cs.m_seqnum;
+}
+
+
+const ChunkStack::Entry *ChunkStack::Top() const
+{
+ if (!m_cse.empty())
+ {
+ return(&m_cse[m_cse.size() - 1]);
+ }
+ return(nullptr);
+}
+
+
+const ChunkStack::Entry *ChunkStack::Get(size_t idx) const
+{
+ if (idx < m_cse.size())
+ {
+ return(&m_cse[idx]);
+ }
+ return(nullptr);
+}
+
+
+Chunk *ChunkStack::GetChunk(size_t idx) const
+{
+ if (idx < m_cse.size())
+ {
+ return(m_cse[idx].m_pc);
+ }
+ return(Chunk::NullChunkPtr);
+}
+
+
+Chunk *ChunkStack::Pop_Front()
+{
+ Chunk *pc = Chunk::NullChunkPtr;
+
+ if (!m_cse.empty())
+ {
+ pc = m_cse[0].m_pc;
+ m_cse.pop_front();
+ }
+ return(pc);
+}
+
+
+Chunk *ChunkStack::Pop_Back()
+{
+ Chunk *pc = Chunk::NullChunkPtr;
+
+ if (!m_cse.empty())
+ {
+ pc = m_cse[m_cse.size() - 1].m_pc;
+ m_cse.pop_back();
+ }
+ return(pc);
+}
+
+
+void ChunkStack::Push_Back(Chunk *pc, size_t seqnum)
+{
+ m_cse.push_back(Entry(seqnum, pc));
+
+ if (m_seqnum < seqnum)
+ {
+ m_seqnum = seqnum;
+ }
+}
+
+
+void ChunkStack::Zap(size_t idx)
+{
+ if (idx < m_cse.size())
+ {
+ m_cse[idx].m_pc = Chunk::NullChunkPtr;
+ }
+}
+
+
+void ChunkStack::Collapse()
+{
+ size_t wr_idx = 0;
+
+ for (size_t rd_idx = 0; rd_idx < m_cse.size(); rd_idx++)
+ {
+ if (m_cse[rd_idx].m_pc->IsNotNullChunk())
+ {
+ if (rd_idx != wr_idx)
+ {
+ m_cse[wr_idx].m_pc = m_cse[rd_idx].m_pc;
+ m_cse[wr_idx].m_seqnum = m_cse[rd_idx].m_seqnum;
+ }
+ wr_idx++;
+ }
+ }
+
+ m_cse.resize(wr_idx);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/ChunkStack.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/ChunkStack.h
new file mode 100644
index 00000000..6ab1c867
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/ChunkStack.h
@@ -0,0 +1,124 @@
+/**
+ * @file ChunkStack.h
+ * Manages a simple stack of chunks
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+#ifndef CHUNKSTACK_H_INCLUDED
+#define CHUNKSTACK_H_INCLUDED
+
+#include "chunk.h"
+#include "uncrustify_types.h"
+
+class ChunkStack
+{
+public:
+ struct Entry
+ {
+ Entry()
+ : m_seqnum(0)
+ , m_pc(Chunk::NullChunkPtr)
+ {
+ }
+
+
+ Entry(const Entry &ref)
+ : m_seqnum(ref.m_seqnum)
+ , m_pc(ref.m_pc)
+ {
+ }
+
+
+ Entry(size_t sn, Chunk *pc)
+ : m_seqnum(sn)
+ , m_pc(pc)
+ {
+ }
+
+
+ size_t m_seqnum;
+ Chunk *m_pc;
+ };
+
+protected:
+ std::deque<Entry> m_cse;
+ size_t m_seqnum; //! current sequence number
+
+public:
+ ChunkStack()
+ : m_seqnum(0)
+ {
+ }
+
+
+ ChunkStack(const ChunkStack &cs)
+ {
+ Set(cs);
+ }
+
+
+ virtual ~ChunkStack()
+ {
+ }
+
+
+ void Set(const ChunkStack &cs);
+
+
+ void Push_Back(Chunk *pc)
+ {
+ Push_Back(pc, ++m_seqnum);
+ }
+
+
+ bool Empty() const
+ {
+ return(m_cse.empty());
+ }
+
+
+ size_t Len() const
+ {
+ return(m_cse.size());
+ }
+
+
+ const Entry *Top() const;
+
+
+ const Entry *Get(size_t idx) const;
+
+
+ Chunk *GetChunk(size_t idx) const;
+
+
+ Chunk *Pop_Back();
+
+
+ void Push_Back(Chunk *pc, size_t seqnum);
+
+
+ Chunk *Pop_Front();
+
+
+ void Reset()
+ {
+ m_cse.clear();
+ }
+
+
+ /**
+ * Mark an entry to be removed by Collapse()
+ *
+ * @param idx The item to remove
+ */
+ void Zap(size_t idx);
+
+
+ //! Compresses down the stack by removing dead entries
+ void Collapse();
+};
+
+
+#endif /* CHUNKSTACK_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/EnumStructUnionParser.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/EnumStructUnionParser.cpp
new file mode 100644
index 00000000..93c76995
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/EnumStructUnionParser.cpp
@@ -0,0 +1,2948 @@
+/**
+ * @file EnumStructUnionParser.cpp
+ *
+ * @author
+ * @license GPL v2+
+ */
+
+#include "EnumStructUnionParser.h"
+
+#include "combine_fix_mark.h"
+#include "combine_skip.h"
+#include "combine_tools.h"
+#include "flag_parens.h"
+#include "lang_pawn.h"
+
+
+/**
+ * Extern declarations
+ */
+extern const char *get_token_name(E_Token);
+
+
+/**
+ * Forward declarations
+ */
+static std::pair<Chunk *, Chunk *> match_variable_end(Chunk *, std::size_t);
+static std::pair<Chunk *, Chunk *> match_variable_start(Chunk *, std::size_t);
+static Chunk *skip_scope_resolution_and_nested_name_specifiers(Chunk *);
+static Chunk *skip_scope_resolution_and_nested_name_specifiers_rev(Chunk *);
+
+
+/**
+ * Returns true if two adjacent chunks potentially match a pattern consistent
+ * with that of a qualified identifier
+ */
+static bool adj_tokens_match_qualified_identifier_pattern(Chunk *prev, Chunk *next)
+{
+ LOG_FUNC_ENTRY();
+
+ if ( prev->IsNotNullChunk()
+ && next->IsNotNullChunk())
+ {
+ auto prev_token_type = prev->GetType();
+ auto next_token_type = next->GetType();
+
+ switch (prev_token_type)
+ {
+ case CT_ANGLE_CLOSE:
+ /**
+ * assuming the previous token is possibly the closing angle of a
+ * templated type, the next token may be a scope resolution operator ("::")
+ */
+ return(next_token_type == CT_DC_MEMBER);
+
+ case CT_ANGLE_OPEN:
+ /**
+ * assuming the previous token is possibly the opening angle of a
+ * templated type, just check to see if there's a matching closing
+ * angle
+ */
+ return(prev->GetClosingParen(E_Scope::PREPROC)->IsNotNullChunk());
+
+ case CT_DC_MEMBER:
+ /**
+ * if the previous token is a double colon ("::"), it is likely part
+ * of a chain of scope-resolution qualifications preceding a word or
+ * type
+ */
+ return( next_token_type == CT_TYPE
+ || next_token_type == CT_WORD);
+
+ case CT_TYPE:
+ case CT_WORD:
+ /**
+ * if the previous token is an identifier, the next token may be
+ * one of the following:
+ * - an opening angle, which may indicate a templated type as part of a
+ * scope resolution preceding the actual variable identifier
+ * - a double colon ("::")
+ */
+ return( next_token_type == CT_ANGLE_OPEN
+ || next_token_type == CT_DC_MEMBER);
+
+ default:
+ // do nothing
+ break;
+ } // switch
+ }
+ return(false);
+} // adj_tokens_match_qualified_identifier_pattern
+
+
+/**
+ * Returns true if two adjacent chunks potentially match a pattern consistent
+ * with that of a variable definition
+ */
+static bool adj_tokens_match_var_def_pattern(Chunk *prev, Chunk *next)
+{
+ LOG_FUNC_ENTRY();
+
+ if ( prev->IsNotNullChunk()
+ && next->IsNotNullChunk())
+ {
+ auto prev_token_type = prev->GetType();
+ auto next_token_type = next->GetType();
+
+ switch (prev_token_type)
+ {
+ case CT_ANGLE_CLOSE:
+ /**
+ * assuming the previous token is possibly the closing angle of a
+ * templated type, the next token may be one of the following:
+ * - a pointer symbol ('*', '^')
+ * - a double colon ("::")
+ * - a reference symbol ('&')
+ * - a qualifier (const, etc.)
+ * - an identifier
+ */
+ return( next->IsPointerOrReference()
+ || next_token_type == CT_DC_MEMBER
+ || next_token_type == CT_QUALIFIER
+ || next_token_type == CT_WORD);
+
+
+ case CT_ANGLE_OPEN:
+ /**
+ * assuming the previous token is possibly the opening angle of a
+ * templated type, just check to see if there's a matching closing
+ * angle
+ */
+ return(prev->GetClosingParen(E_Scope::PREPROC)->IsNotNullChunk());
+
+ case CT_BRACE_CLOSE:
+ /**
+ * assuming the previous token is possibly the closing brace of a
+ * class/enum/struct/union definition, one or more inline variable
+ * definitions may follow; in that case, the next token may be one of
+ * the following:
+ * - a pointer symbol ('*', '^')
+ * - a reference symbol ('&')
+ * - a qualifier (const, etc.)
+ * - an identifier
+ */
+ return( next->IsPointerOrReference()
+ || next_token_type == CT_QUALIFIER
+ || next_token_type == CT_WORD);
+
+ case CT_BRACE_OPEN:
+ /**
+ * if the previous token is an opening brace, it may indicate the
+ * start of a braced initializer list - skip ahead to find a matching
+ * closing brace
+ */
+ return(prev->GetClosingParen(E_Scope::PREPROC)->IsNotNullChunk());
+
+ case CT_BYREF:
+ /**
+ * if the previous token is a reference symbol ('&'), the next token
+ * may be an identifier
+ */
+ return(next_token_type == CT_WORD);
+
+ case CT_CARET:
+ /**
+ * if the previous token is a managed C++/CLI pointer symbol ('^'),
+ * the next token may be one of the following:
+ * - a pointer symbol ('*', '^')
+ * - a reference symbol ('&')
+ * - a qualifier (const, etc.)
+ * - an identifier
+ */
+ return( language_is_set(LANG_CPP)
+ && ( next->IsPointerOrReference()
+ || next_token_type == CT_QUALIFIER
+ || next_token_type == CT_WORD));
+
+ case CT_COMMA:
+ /**
+ * if the previous token is a comma, this may indicate a variable
+ * declaration trailing a prior declaration; in that case, the next
+ * token may be one of the following:
+ * - a pointer symbol ('*', '^')
+ * - a reference symbol ('&')
+ * - an identifier
+ */
+ return( next->IsPointerOrReference()
+ || next_token_type == CT_WORD);
+
+ case CT_DC_MEMBER:
+ /**
+ * if the previous token is a double colon ("::"), it is likely part
+ * of a chain of scope-resolution qualifications preceding a word or
+ * type
+ */
+ return( next_token_type == CT_TYPE
+ || next_token_type == CT_WORD);
+
+ case CT_PAREN_OPEN:
+ /**
+ * if the previous token is an opening paren, it may indicate the
+ * start of a constructor call parameter list - skip ahead to find a
+ * matching closing paren
+ */
+ next = prev->GetClosingParen(E_Scope::PREPROC);
+
+ if (next->IsNotNullChunk())
+ {
+ next_token_type = next->GetType();
+ }
+ return(next_token_type == CT_PAREN_CLOSE);
+
+ case CT_PTR_TYPE:
+ /**
+ * if the previous token is a pointer type, ('*', '^'), the next token
+ * may be one of the following:
+ * - another pointer symbol ('*', '^')
+ * - a reference symbol ('&')
+ * - a qualifier (const, etc.)
+ * - an identifier
+ */
+ return( next->IsPointerOrReference()
+ || next_token_type == CT_QUALIFIER
+ || next_token_type == CT_WORD);
+
+ case CT_QUALIFIER:
+ /**
+ * if the previous token is a qualifier (const, etc.), the next token
+ * may be one of the following:
+ * - a pointer symbol ('*', '^')
+ * - a reference symbol ('&')
+ * - another qualifier
+ * - an identifier
+ */
+ return( next->IsPointerOrReference()
+ || next_token_type == CT_QUALIFIER
+ || next_token_type == CT_WORD);
+
+ case CT_SQUARE_CLOSE:
+ /**
+ * if the previous token is a closing bracket, the next token may be
+ * an assignment following an array variable declaration
+ */
+ return(next_token_type == CT_ASSIGN);
+
+ case CT_SQUARE_OPEN:
+ /**
+ * if the previous token is an opening bracket, it may indicate an
+ * array declaration - skip ahead to find a matching closing bracket
+ */
+ return(prev->GetClosingParen(E_Scope::PREPROC)->IsNotNullChunk());
+
+ case CT_STAR:
+ /**
+ * if the previous token is a pointer symbol, ('*'), the next token
+ * may be one of the following:
+ * - another pointer symbol ('*', '^')
+ * - a reference symbol ('&')
+ * - a qualifier (const, etc.)
+ * - an identifier
+ */
+ return( next->IsPointerOrReference()
+ || next_token_type == CT_QUALIFIER
+ || next_token_type == CT_WORD);
+
+ case CT_TSQUARE:
+ /**
+ * if the previous token is a set of brackets, the next token may be
+ * an assignment following an array variable declaration
+ */
+ return(next_token_type == CT_ASSIGN);
+
+ case CT_TYPE:
+ /**
+ * if the previous token is marked as a type, the next token may be
+ * one of the following:
+ * - a pointer symbol ('*', '^')
+ * - a reference symbol ('&')
+ * - an opening angle, which may indicate a templated type as part of a
+ * scope resolution preceding the actual variable identifier
+ * - a double colon ("::")
+ * - a qualifier (const, etc.)
+ * - an identifier
+ */
+ return( next->IsPointerOrReference()
+ || next_token_type == CT_ANGLE_OPEN
+ || next_token_type == CT_DC_MEMBER
+ || next_token_type == CT_QUALIFIER
+ || next_token_type == CT_WORD);
+
+ case CT_WORD:
+ /**
+ * if the previous token is an identifier, the next token may be one
+ * of the following:
+ * - an assignment symbol ('=')
+ * - an opening angle, which may indicate a templated type as part of a
+ * scope resolution preceding the actual variable identifier
+ * - an opening brace, which may indicate a braced-initializer list
+ * - a double colon ("::")
+ * - an opening paren, which may indicate a constructor call parameter
+ * list
+ * - an opening square bracket, which may indicate an array variable
+ * - an set of empty square brackets, which also may indicate an array
+ * variable
+ */
+ return( next_token_type == CT_ANGLE_OPEN
+ || next_token_type == CT_ASSIGN
+ || next_token_type == CT_BRACE_OPEN
+ || next_token_type == CT_DC_MEMBER
+ || next_token_type == CT_PAREN_OPEN
+ || next_token_type == CT_SQUARE_OPEN
+ || next_token_type == CT_TSQUARE);
+
+ default:
+ // do nothing
+ break;
+ } // switch
+ }
+ return(false);
+} // adj_tokens_match_var_def_pattern
+
+
+/**
+ * Returns true if the first chunk occurs AFTER the second chunk in the argument
+ * list
+ * @param pc points to the first chunk
+ * @param after points to the second chunk
+ * @param test_equal if true, returns true when both chunks refer to the same chunk
+ */
+static bool chunk_is_after(Chunk *pc, Chunk *after, bool test_equal = true)
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc->IsNotNullChunk())
+ {
+ if ( test_equal
+ && pc == after)
+ {
+ return(true);
+ }
+ else if (after->IsNotNullChunk())
+ {
+ auto pc_column = pc->GetOrigCol();
+ auto pc_line = pc->GetOrigLine();
+ auto after_column = after->GetOrigCol();
+ auto after_line = after->GetOrigLine();
+
+ return( pc_line > after_line
+ || ( pc_line == after_line
+ && pc_column > after_column));
+ }
+ }
+ return(false);
+} // chunk_is_after
+
+
+/**
+ * Returns true if the first chunk occurs BEFORE the second chunk in the argument
+ * list
+ * @param pc points to the first chunk
+ * @param before points to the second chunk
+ * @param test_equal if true, returns true when both chunks refer to the same chunk
+ */
+static bool chunk_is_before(Chunk *pc, Chunk *before, bool test_equal = true)
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc->IsNotNullChunk())
+ {
+ if ( test_equal
+ && pc == before)
+ {
+ return(true);
+ }
+ else if (before->IsNotNullChunk())
+ {
+ auto pc_column = pc->GetOrigCol();
+ auto pc_line = pc->GetOrigLine();
+ auto before_column = before->GetOrigCol();
+ auto before_line = before->GetOrigLine();
+
+ return( pc_line < before_line
+ || ( pc_line == before_line
+ && pc_column < before_column));
+ }
+ }
+ return(false);
+} // chunk_is_before
+
+
+/**
+ * Returns true if the first chunk occurs both AFTER and BEFORE
+ * the second and third chunks, respectively, in the argument list
+ * @param pc points to the first chunk
+ * @param after points to the second chunk
+ * @param before points to the third chunk
+ * @param test_equal if true, returns true when the first chunk tests equal to
+ * either the second or third chunk
+ */
+static bool chunk_is_between(Chunk *pc, Chunk *after, Chunk *before, bool test_equal = true)
+{
+ LOG_FUNC_ENTRY();
+
+ return( chunk_is_before(pc, before, test_equal)
+ && chunk_is_after(pc, after, test_equal));
+} // chunk_is_between
+
+
+/**
+ * Returns true if the chunk under test is a reference to a macro defined elsewhere in
+ * the source file currently being processed. Note that a macro may be defined in
+ * another source or header file, for which this function does not currently account
+ */
+static bool chunk_is_macro_reference(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *next = Chunk::GetHead();
+
+ if ( ( language_is_set(LANG_CPP)
+ || language_is_set(LANG_C))
+ && pc->Is(CT_WORD)
+ && !pc->TestFlags(PCF_IN_PREPROC))
+ {
+ while (next->IsNotNullChunk())
+ {
+ if ( next->TestFlags(PCF_IN_PREPROC)
+ && std::strcmp(pc->GetStr().c_str(), next->GetStr().c_str()) == 0)
+ {
+ return(true);
+ }
+ next = next->GetNextType(CT_MACRO);
+ }
+ }
+ return(false);
+} // chunk_is_macro_reference
+
+
+bool Chunk::IsPointerReferenceOrQualifier() const
+{
+ LOG_FUNC_ENTRY();
+
+ return( IsPointerOrReference()
+ || ( Is(CT_QUALIFIER)
+ && !IsCppInheritanceAccessSpecifier()));
+}
+
+
+/**
+ * This function attempts to match the starting and ending chunks of a qualified
+ * identifier, which consists of one or more scope resolution operator(s) and
+ * zero or more nested name specifiers
+ * specifiers
+ * @param pc the starting chunk
+ * @return an std::pair, where the first chunk indicates the starting chunk of the
+ * match and second indicates the ending chunk. Upon finding a successful
+ * match, the starting chunk may consist of an identifier or a scope
+ * resolution operator, while the ending chunk may consist of identifier
+ * or the closing angle bracket of a template. If no match is found, a
+ * pair of null chunks is returned
+ */
+static std::pair<Chunk *, Chunk *> match_qualified_identifier(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ auto *end = skip_scope_resolution_and_nested_name_specifiers(pc);
+ auto *start = skip_scope_resolution_and_nested_name_specifiers_rev(pc);
+
+ if ( end->IsNotNullChunk()
+ && start->IsNotNullChunk())
+ {
+ auto *double_colon = start->GetNextType(CT_DC_MEMBER);
+
+ if ( double_colon->IsNotNullChunk()
+ && chunk_is_between(double_colon, start, end))
+ {
+ return(std::make_pair(start, end));
+ }
+ }
+ return(std::make_pair(Chunk::NullChunkPtr, Chunk::NullChunkPtr));
+} // match_qualified_identifier
+
+
+/**
+ * Starting from the input chunk, this function attempts to match a variable
+ * declaration/definition in both the forward and reverse directions; each pair of
+ * consecutive chunks is tested to determine if a potential match is satisfied.
+ * @param pc the starting chunk
+ * @param level the brace level
+ * @return upon successful match, function returns an std::tuple, where the
+ * first chunk indicates the starting chunk, the second chunk indicates
+ * the identifier name, and the third chunk indicates the end associated
+ * with the variable declaration/definition
+ */
+static std::tuple<Chunk *, Chunk *, Chunk *> match_variable(Chunk *pc, std::size_t level)
+{
+ LOG_FUNC_ENTRY();
+
+ auto identifier_end_pair = match_variable_end(pc, level);
+ auto start_identifier_pair = match_variable_start(pc, level);
+ auto *end = identifier_end_pair.second;
+ auto *identifier = identifier_end_pair.first->IsNotNullChunk() ? identifier_end_pair.first : start_identifier_pair.second;
+ auto *start = start_identifier_pair.first;
+
+ /**
+ * a forward search starting at the chunk under test will fail if two consecutive chunks marked as CT_WORD
+ * are encountered; in that case, it's likely that the preceding chunk indicates a type and the subsequent
+ * chunk indicates a variable declaration/definition
+ */
+
+ if ( identifier->IsNotNullChunk()
+ && start->IsNotNullChunk()
+ && ( end->IsNotNullChunk()
+ || identifier->GetPrevNcNnlNi()->Is(CT_WORD)))
+ {
+ return(std::make_tuple(start, identifier, end));
+ }
+ return(std::make_tuple(Chunk::NullChunkPtr, Chunk::NullChunkPtr, Chunk::NullChunkPtr));
+} // match_variable
+
+
+/**
+ * Starting from the input chunk, this function attempts to match a variable in the
+ * forward direction, and tests each pair of consecutive chunks to determine if a
+ * potential variable declaration/definition match is satisfied. Secondly, the
+ * function attempts to identify the end chunk associated with the candidate variable
+ * match. For scalar variables (simply declared and not defined), both the end chunk
+ * and identifier chunk should be one in the same
+ * @param pc the starting chunk
+ * @param level the brace level
+ * @return an std::pair, where the first chunk indicates the identifier
+ * (if non-null) and the second chunk indicates the end associated with
+ * the variable declaration/definition; assuming a valid match, the first
+ * chunk may be null if the function is called with a starting chunk
+ * that occurs after the identifier
+ */
+static std::pair<Chunk *, Chunk *> match_variable_end(Chunk *pc, std::size_t level)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *identifier = Chunk::NullChunkPtr;
+
+ while (pc->IsNotNullChunk())
+ {
+ /**
+ * skip any right-hand side assignments
+ */
+ Chunk *rhs_exp_end = Chunk::NullChunkPtr;
+
+ if (pc->Is(CT_ASSIGN))
+ {
+ /**
+ * store a pointer to the end chunk of the rhs expression;
+ * use it later to test against setting the identifier
+ */
+ rhs_exp_end = skip_to_expression_end(pc);
+ pc = rhs_exp_end;
+ }
+
+ /**
+ * skip current and preceding chunks if at a higher brace level
+ */
+ while ( pc->IsNotNullChunk()
+ && pc->GetLevel() > level)
+ {
+ pc = pc->GetNextNcNnl();
+ }
+
+ /**
+ * skip to any following match for angle brackets, braces, parens,
+ * or square brackets
+ */
+ if ( pc->Is(CT_ANGLE_OPEN)
+ || pc->Is(CT_BRACE_OPEN)
+ || pc->IsParenOpen()
+ || pc->Is(CT_SQUARE_OPEN))
+ {
+ pc = pc->GetClosingParen(E_Scope::PREPROC);
+ }
+ /**
+ * call a separate function to validate adjacent tokens as potentially
+ * matching a variable declaration/definition
+ */
+
+ Chunk *next = pc->GetNextNcNnl();
+
+ if ( next->IsNot(CT_COMMA)
+ && next->IsNot(CT_FPAREN_CLOSE)
+ && !next->IsSemicolon()
+ && !adj_tokens_match_var_def_pattern(pc, next))
+ {
+ /**
+ * error, pattern is not consistent with a variable declaration/definition
+ */
+ break;
+ }
+
+ if ( pc->Is(CT_WORD)
+ && pc != rhs_exp_end)
+ {
+ /**
+ * we've encountered a candidate for the variable name
+ */
+
+ identifier = pc;
+ }
+
+ /**
+ * we're done searching if we've previously identified a variable name
+ * and then encounter a comma or semicolon
+ */
+ if ( next->Is(CT_COMMA)
+ || next->Is(CT_FPAREN_CLOSE)
+ || next->IsSemicolon())
+ {
+ return(std::make_pair(identifier, pc));
+ }
+ pc = next;
+ }
+ return(std::make_pair(Chunk::NullChunkPtr, Chunk::NullChunkPtr));
+} // match_variable_end
+
+
+/**
+ * Starting from the input chunk, this function attempts to match a variable in the
+ * reverse direction, and tests each pair of consecutive chunks to determine if a
+ * potential variable declaration/definition match is satisfied. Secondly, the
+ * function attempts to identify the starting chunk associated with the candidate
+ * variable match. The start and identifier chunks may refer to each other in cases
+ * where the identifier is not preceded by pointer or reference operators or qualifiers,
+ * etc.
+ * @param pc the starting chunk
+ * @param level the brace level
+ * @return an std::pair, where the first chunk indicates the starting chunk and
+ * the second chunk indicates the identifier associated with the variable
+ * match; assuming a valid match, the second chunk may be null if the
+ * function is called with a starting chunk that occurs before the
+ * identifier
+ */
+static std::pair<Chunk *, Chunk *> match_variable_start(Chunk *pc, std::size_t level)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *identifier = Chunk::NullChunkPtr;
+
+ while (pc->IsNotNullChunk())
+ {
+ /**
+ * skip any right-hand side assignments
+ */
+ Chunk *before_rhs_exp_start = skip_expression_rev(pc);
+ Chunk *prev = Chunk::NullChunkPtr;
+ Chunk *next = pc;
+
+ while ( chunk_is_after(next, before_rhs_exp_start)
+ && pc != prev)
+ {
+ next = prev;
+ prev = next->GetPrevNcNnlNi();
+
+ if (next->Is(CT_ASSIGN))
+ {
+ pc = prev;
+ }
+ }
+ /**
+ * skip current and preceding chunks if at a higher brace level
+ */
+
+ while ( pc->IsNotNullChunk()
+ && pc->GetLevel() > level)
+ {
+ pc = pc->GetPrevNcNnlNi();
+ }
+
+ /**
+ * skip to any preceding match for angle brackets, braces, parens,
+ * or square brackets
+ */
+ if ( pc->Is(CT_ANGLE_CLOSE)
+ || pc->Is(CT_BRACE_CLOSE)
+ || pc->IsParenClose()
+ || pc->Is(CT_SQUARE_CLOSE))
+ {
+ pc = pc->GetOpeningParen(E_Scope::PREPROC);
+ }
+ /**
+ * call a separate function to validate adjacent tokens as potentially
+ * matching a variable declaration/definition
+ */
+
+ prev = pc->GetPrevNcNnlNi();
+
+ if (!adj_tokens_match_var_def_pattern(prev, pc))
+ {
+ /**
+ * perhaps the previous chunk possibly indicates a type that yet to be
+ * marked? if not, then break
+ */
+ if ( prev->IsNot(CT_WORD)
+ || ( !pc->IsPointerOrReference()
+ && pc->IsNot(CT_WORD)))
+ {
+ /**
+ * error, pattern is not consistent with a variable declaration/definition
+ */
+
+ break;
+ }
+ }
+
+ if ( identifier->IsNullChunk()
+ && pc->Is(CT_WORD))
+ {
+ /**
+ * we've encountered a candidate for the variable name
+ */
+
+ identifier = pc;
+ }
+
+ /**
+ * we're done searching if we've previously identified a variable name
+ * and then encounter another identifier, or we encounter a closing
+ * brace (which would likely indicate an inline variable definition)
+ */
+ if ( prev->Is(CT_ANGLE_CLOSE)
+ || prev->Is(CT_BRACE_CLOSE)
+ || prev->Is(CT_COMMA)
+ || prev->Is(CT_TYPE)
+ || prev->Is(CT_WORD))
+ {
+ return(std::make_pair(pc, identifier));
+ }
+ pc = prev;
+ }
+ return(std::make_pair(Chunk::NullChunkPtr, Chunk::NullChunkPtr));
+} // match_variable_start
+
+
+/**
+ * Skip forward past any scope resolution operators and nested name specifiers and return
+ * just the qualified identifier name; while similar to the existing skip_dc_member()
+ * function, this function also takes into account templates that may comprise any
+ * nested name specifiers
+ */
+static Chunk *skip_scope_resolution_and_nested_name_specifiers(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ if ( pc->TestFlags(PCF_IN_TEMPLATE)
+ || pc->Is(CT_DC_MEMBER)
+ || pc->Is(CT_TYPE)
+ || pc->Is(CT_WORD))
+ {
+ while (pc->IsNotNullChunk())
+ {
+ /**
+ * skip to any following match for angle brackets
+ */
+ if (pc->Is(CT_ANGLE_OPEN))
+ {
+ pc = pc->GetClosingParen(E_Scope::PREPROC);
+ }
+ Chunk *next = pc->GetNextNcNnl();
+
+ /**
+ * call a separate function to validate adjacent tokens as potentially
+ * matching a qualified identifier
+ */
+ if (!adj_tokens_match_qualified_identifier_pattern(pc, next))
+ {
+ break;
+ }
+ pc = next;
+ }
+ }
+ return(pc);
+} // skip_scope_resolution_and_nested_name_specifiers
+
+
+/**
+ * Skip in reverse to the beginning chunk of a qualified identifier; while similar to
+ * the existing skip_dc_member_rev() function, this function also takes into account
+ * templates that may comprise any nested name specifiers
+ */
+static Chunk *skip_scope_resolution_and_nested_name_specifiers_rev(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ if ( pc->TestFlags(PCF_IN_TEMPLATE)
+ || pc->Is(CT_DC_MEMBER)
+ || pc->Is(CT_TYPE)
+ || pc->Is(CT_WORD))
+ {
+ while (pc->IsNotNullChunk())
+ {
+ /**
+ * skip to any preceding match for angle brackets
+ */
+ if (pc->Is(CT_ANGLE_CLOSE))
+ {
+ pc = pc->GetOpeningParen(E_Scope::PREPROC);
+ }
+ Chunk *prev = pc->GetPrevNcNnlNi();
+
+ /**
+ * call a separate function to validate adjacent tokens as potentially
+ * matching a qualified identifier
+ */
+ if (!adj_tokens_match_qualified_identifier_pattern(prev, pc))
+ {
+ break;
+ }
+ pc = prev;
+ }
+ }
+ return(pc);
+} // skip_scope_resolution_and_nested_name_specifiers_rev
+
+
+EnumStructUnionParser::EnumStructUnionParser()
+ : m_end(Chunk::NullChunkPtr)
+ , m_parse_error(false)
+ , m_start(Chunk::NullChunkPtr)
+ , m_type(Chunk::NullChunkPtr)
+{
+} // EnumStructUnionParser::EnumStructUnionParser
+
+
+EnumStructUnionParser::~EnumStructUnionParser()
+{
+} // EnumStructUnionParser::~EnumStructUnionParser
+
+
+void EnumStructUnionParser::analyze_identifiers()
+{
+ LOG_FUNC_ENTRY();
+
+ /**
+ * the enum (and variable declarations thereof) could be of
+ * the following forms:
+ *
+ * "enum type [: integral_type] { ... } [x, ...]"
+ * "enum type : integral_type"
+ * "enum type x, ..."
+ * "enum class type [: integral_type] { ... } [x, ...]"
+ * "enum class type [: integral_type]"
+ * "enum [: integral_type] { ... } x, ..."
+ */
+
+ /**
+ * the class/struct (and variable declarations thereof) could be of
+ * the following forms:
+ *
+ * "template<...> class/struct[<...>] [macros/attributes ...] type [: bases ...] { }"
+ * "template<...> class/struct[<...>] [macros/attributes ...] type"
+ * "class/struct [macros/attributes ...] type [: bases ...] { } [x, ...]"
+ * "class/struct [macros/attributes ...] type [x, ...]"
+ * "class/struct [macros/attributes ...] [: bases] { } x, ..."
+ */
+
+ Chunk *template_end = get_template_end();
+ auto *body_end = get_body_end();
+ auto *body_start = get_body_start();
+ PcfFlags flags = PCF_VAR_1ST_DEF;
+ auto *inheritance_start = get_inheritance_start();
+ Chunk *pc = body_end->IsNotNullChunk() ? body_end : m_start;
+
+ /**
+ * first, try a simple approach to identify any associated type
+ */
+ if (try_pre_identify_type())
+ {
+ /**
+ * a type was identified, meaning a pair of braces, angle brackets, or
+ * a colon was found; if a colon was found, then there should be a
+ * balanced set of braces that follow; therefore, start the search for
+ * variable identifiers after the closing brace or close angle bracket
+ */
+
+ if (body_end->IsNotNullChunk())
+ {
+ pc = body_end;
+ }
+ else if (template_end->IsNotNullChunk())
+ {
+ pc = template_end;
+ }
+ }
+
+ if (pc->GetNextNcNnl() == m_end)
+ {
+ /**
+ * we're likely at the end of a class/enum/struct/union body which lacks
+ * any trailing inline definitions
+ */
+
+ pc = m_end->GetNextNcNnl();
+ }
+
+ if ( type_identified()
+ || pc->IsClassEnumStructOrUnion()
+ || pc == m_end)
+ {
+ /**
+ * in case we're pointing at the end chunk, advance the chunk pointer
+ * by one more so that we don't perform a variable identifier search
+ * below
+ */
+ pc = pc->GetNextNcNnl();
+ }
+
+ if (body_end->IsNotNullChunk())
+ {
+ /**
+ * a closing brace was found, so any identifiers trailing the closing
+ * brace are probably inline variable declarations following a
+ * class/enum/struct/union definition
+ */
+ flags |= PCF_VAR_INLINE;
+ }
+ else if (!type_identified())
+ {
+ /**
+ * skip any chain of one or more function-like macro calls,
+ * declspecs, and attributes
+ */
+
+ Chunk *tmp = pc;
+
+ do
+ {
+ pc = tmp;
+ tmp = skip_attribute_next(tmp);
+ tmp = skip_declspec_next(tmp);
+ } while (tmp != pc);
+ }
+ /**
+ * try to match some variable identifiers in the loop below
+ */
+
+ while (chunk_is_between(pc, m_start, m_end, false))
+ {
+ auto match = match_variable(pc, m_start->GetLevel());
+ auto *start = std::get<0>(match);
+ auto *identifier = std::get<1>(match);
+ auto *end = std::get<2>(match);
+
+ if ( start->IsNotNullChunk()
+ && identifier->IsNotNullChunk())
+ {
+ if (end->IsNotNullChunk())
+ {
+ mark_variable(identifier, flags);
+
+ if (flags & PCF_VAR_1ST)
+ {
+ flags &= ~PCF_VAR_1ST; // clear the first flag for the next items
+ }
+ }
+ }
+
+ if (end->IsNotNullChunk())
+ {
+ pc = end;
+ }
+ pc = pc->GetNextNcNnl();
+
+ /**
+ * skip any right-hand side assignments
+ */
+ if (pc->Is(CT_ASSIGN))
+ {
+ pc = skip_to_expression_end(pc);
+ }
+
+ /**
+ * if we're sitting at a comma or semicolon, skip it
+ */
+ if ( pc->IsSemicolon()
+ || ( pc->Is(CT_COMMA)
+ && !pc->GetFlags().test_any(PCF_IN_FCN_DEF | PCF_IN_FCN_CALL | PCF_IN_TEMPLATE)
+ && !chunk_is_between(pc, inheritance_start, body_start)))
+ {
+ pc = pc->GetNextNcNnl();
+ }
+ }
+ /**
+ * if we still haven't identified a type, try doing so now that the
+ * variables, if any, have been marked
+ */
+ try_post_identify_type();
+
+ /**
+ * identify possible macros preceding the type name
+ */
+ try_post_identify_macro_calls();
+
+ if ( m_start->IsClassOrStruct()
+ && ( m_start->IsNot(CT_STRUCT)
+ || !language_is_set(LANG_C)))
+ {
+ /**
+ * if a type has been identified, mark any constructor matching constructor
+ * declarations/definitions
+ */
+ mark_constructors();
+ }
+
+ if (type_identified())
+ {
+ if (~flags & PCF_VAR_1ST)
+ {
+ /**
+ * PCF_VAR_1ST was cleared and a type was identified; therefore, set
+ * PCF_VAR_TYPE for the identified type
+ */
+ m_type->SetFlagBits(PCF_VAR_TYPE);
+ }
+ else if (~flags & PCF_VAR_INLINE)
+ {
+ /**
+ * if a type was identified but no braced-enclosed body was found and no
+ * identifiers were marked as variables, then we're likely we're likely
+ * dealing with a forward declaration
+ */
+ flag_series(m_start, m_type, PCF_INCOMPLETE);
+ }
+ }
+} // EnumStructUnionParser::analyze_identifiers
+
+
+bool EnumStructUnionParser::body_detected() const
+{
+ LOG_FUNC_ENTRY();
+
+ auto *body_end = get_body_end();
+ auto *body_start = get_body_start();
+
+ return( body_end->IsNotNullChunk()
+ && body_start->IsNotNullChunk());
+} // EnumStructUnionParser::body_detected
+
+
+bool EnumStructUnionParser::comma_separated_values_detected() const
+{
+ LOG_FUNC_ENTRY();
+
+ return(!get_top_level_commas().empty());
+} // EnumStructUnionParser::comma_separated_values_detected
+
+
+bool EnumStructUnionParser::enum_base_detected() const
+{
+ LOG_FUNC_ENTRY();
+
+ return(m_chunk_map.find(CT_BIT_COLON) != m_chunk_map.cend());
+} // EnumStructUnionParser::enum_base_detected
+
+
+Chunk *EnumStructUnionParser::get_body_end() const
+{
+ LOG_FUNC_ENTRY();
+
+ auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_BRACE_CLOSE);
+
+ if (it_token_chunk_map_pair != m_chunk_map.cend())
+ {
+ return(it_token_chunk_map_pair->second.at(0));
+ }
+ return(Chunk::NullChunkPtr);
+} // EnumStructUnionParser::get_body_end
+
+
+Chunk *EnumStructUnionParser::get_body_start() const
+{
+ LOG_FUNC_ENTRY();
+
+ auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_BRACE_OPEN);
+
+ if (it_token_chunk_map_pair != m_chunk_map.cend())
+ {
+ return(it_token_chunk_map_pair->second.at(0));
+ }
+ return(Chunk::NullChunkPtr);
+} // EnumStructUnionParser::get_body_start
+
+
+Chunk *EnumStructUnionParser::get_enum_base_start() const
+{
+ LOG_FUNC_ENTRY();
+
+ auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_BIT_COLON);
+
+ if (it_token_chunk_map_pair != m_chunk_map.cend())
+ {
+ return(it_token_chunk_map_pair->second.at(0));
+ }
+ return(Chunk::NullChunkPtr);
+} // EnumStructUnionParser::get_enum_base_start
+
+
+Chunk *EnumStructUnionParser::get_first_top_level_comma() const
+{
+ LOG_FUNC_ENTRY();
+
+ auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_COMMA);
+
+ if (it_token_chunk_map_pair != m_chunk_map.cend())
+ {
+ return(it_token_chunk_map_pair->second.at(0));
+ }
+ return(Chunk::NullChunkPtr);
+} // EnumStructUnionParser::get_first_top_level_comma
+
+
+Chunk *EnumStructUnionParser::get_inheritance_end() const
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *brace_open = Chunk::NullChunkPtr;
+ auto *inheritance_start = get_inheritance_start();
+
+ if (inheritance_start->IsNotNullChunk())
+ {
+ brace_open = get_body_start();
+
+ if (brace_open->IsNullChunk())
+ {
+ brace_open = inheritance_start->GetNextType(CT_BRACE_OPEN, m_start->GetLevel(), E_Scope::ALL);
+ }
+ }
+ return(brace_open);
+} // EnumStructUnionParser::get_inheritance_end
+
+
+Chunk *EnumStructUnionParser::get_inheritance_start() const
+{
+ LOG_FUNC_ENTRY();
+
+ auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_COLON);
+
+ if (it_token_chunk_map_pair != m_chunk_map.cend())
+ {
+ return(it_token_chunk_map_pair->second.at(0));
+ }
+ return(Chunk::NullChunkPtr);
+} // EnumStructUnionParser::get_inheritance_start
+
+
+std::map<std::size_t, Chunk *> EnumStructUnionParser::get_question_operators() const
+{
+ LOG_FUNC_ENTRY();
+
+ auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_QUESTION);
+
+ if (it_token_chunk_map_pair != m_chunk_map.cend())
+ {
+ return(it_token_chunk_map_pair->second);
+ }
+ return(std::map<std::size_t, Chunk *>());
+} // EnumStructUnionParser::get_question_operators
+
+
+Chunk *EnumStructUnionParser::get_template_end() const
+{
+ LOG_FUNC_ENTRY();
+
+ auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_ANGLE_CLOSE);
+
+ if (it_token_chunk_map_pair != m_chunk_map.cend())
+ {
+ return(it_token_chunk_map_pair->second.at(0));
+ }
+ return(Chunk::NullChunkPtr);
+} // EnumStructUnionParser::get_template_end
+
+
+Chunk *EnumStructUnionParser::get_template_start() const
+{
+ LOG_FUNC_ENTRY();
+
+ auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_ANGLE_OPEN);
+
+ if (it_token_chunk_map_pair != m_chunk_map.cend())
+ {
+ return(it_token_chunk_map_pair->second.at(0));
+ }
+ return(Chunk::NullChunkPtr);
+} // EnumStructUnionParser::get_template_start
+
+
+std::map<std::size_t, Chunk *> EnumStructUnionParser::get_top_level_commas() const
+{
+ LOG_FUNC_ENTRY();
+
+ auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_COMMA);
+
+ if (it_token_chunk_map_pair != m_chunk_map.cend())
+ {
+ return(it_token_chunk_map_pair->second);
+ }
+ return(std::map<std::size_t, Chunk *>());
+} // EnumStructUnionParser::get_top_level_commas
+
+
+Chunk *EnumStructUnionParser::get_where_end() const
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *brace_open = Chunk::NullChunkPtr;
+ auto *where_start = get_where_start();
+
+ if (where_start->IsNotNullChunk())
+ {
+ brace_open = get_body_start();
+
+ if (brace_open->IsNullChunk())
+ {
+ brace_open = where_start->GetNextType(CT_BRACE_OPEN, m_start->GetLevel(), E_Scope::ALL);
+ }
+ }
+ return(brace_open);
+} // EnumStructUnionParser::get_where_end
+
+
+Chunk *EnumStructUnionParser::get_where_start() const
+{
+ LOG_FUNC_ENTRY();
+
+ auto &&it_token_chunk_map_pair = m_chunk_map.find(CT_WHERE);
+
+ if (it_token_chunk_map_pair != m_chunk_map.cend())
+ {
+ return(it_token_chunk_map_pair->second.at(0));
+ }
+ return(Chunk::NullChunkPtr);
+} // EnumStructUnionParser::get_where_start
+
+
+bool EnumStructUnionParser::inheritance_detected() const
+{
+ LOG_FUNC_ENTRY();
+
+ return(m_chunk_map.find(CT_COLON) != m_chunk_map.cend());
+} // EnumStructUnionParser::inheritance_detected
+
+
+void EnumStructUnionParser::initialize(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ parse_error_detected(false);
+ m_chunk_map.clear();
+
+ m_start = pc;
+ m_type = Chunk::NullChunkPtr;
+ pc = try_find_end_chunk(pc);
+
+ if (parse_error_detected())
+ {
+ return;
+ }
+ m_end = refine_end_chunk(pc);
+} // EnumStructUnionParser::initialize
+
+
+bool EnumStructUnionParser::is_potential_end_chunk(Chunk *pc) const
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
+ __unqualified_func__, __LINE__,
+ pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+
+ /**
+ * test for a semicolon or closing brace at the level of the starting chunk
+ */
+ if ( pc->IsNullChunk()
+ || parse_error_detected()
+ || ( ( pc->IsSemicolon()
+ || pc->Is(CT_BRACE_CLOSE))
+ && pc->GetLevel() == m_start->GetLevel()))
+ {
+ LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
+ __unqualified_func__, __LINE__,
+ pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+ return(true);
+ }
+ /**
+ * check for the following:
+ * 1) did we encounter a closing paren, which may indicate the end of cast?
+ * 2) did we cross a preprocessor boundary?
+ * 3) did we cross the closing paren of a function signature?
+ */
+
+ auto const pc_in_funcdef = pc->GetFlags() & PCF_IN_FCN_DEF;
+ auto const pc_in_preproc = pc->GetFlags() & PCF_IN_PREPROC;
+ auto const start_in_funcdef = m_start->GetFlags() & PCF_IN_FCN_DEF;
+ auto const start_in_preproc = m_start->GetFlags() & PCF_IN_PREPROC;
+
+ /**
+ * the following may identify cases where we've reached the
+ * end of a cast terminated by a closing paren
+ */
+ if ( ( pc->IsParenClose() // Issue #3538
+ && pc->GetLevel() < m_start->GetLevel())
+ || (start_in_funcdef ^ pc_in_funcdef).test_any()
+ || (start_in_preproc ^ pc_in_preproc).test_any())
+ {
+ LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
+ __unqualified_func__, __LINE__,
+ pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+ return(true);
+ }
+ /**
+ * check whether the current chunk's nest level is less than that
+ * of the starting chunk
+ */
+
+ std::size_t pc_template_nest = get_cpp_template_angle_nest_level(pc);
+ std::size_t start_template_nest = get_cpp_template_angle_nest_level(m_start);
+
+ if (start_template_nest > pc_template_nest)
+ {
+ LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
+ __unqualified_func__, __LINE__,
+ pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+ return(true);
+ }
+ /**
+ * assuming the chunk is within a function call/definition, check the following:
+ * 1) chunk is a closing function paren at a lower level than the starting chunk
+ * 2) chunk is an assignment ('=') or comma at the level of the starting chunk
+ */
+
+ auto const pc_in_funccall = pc->GetFlags() & PCF_IN_FCN_CALL;
+ auto const start_in_funccall = m_start->GetFlags() & PCF_IN_FCN_CALL;
+
+ if ( ( pc_in_funccall.test_any()
+ && start_in_funccall.test_any()
+ && pc->Is(CT_COMMA)
+ && pc->GetLevel() == m_start->GetLevel())
+ || ( pc_in_funcdef.test_any()
+ && ( ( pc->Is(CT_FPAREN_CLOSE)
+ && pc->GetLevel() < m_start->GetLevel())
+ || ( ( pc->Is(CT_ASSIGN)
+ || pc->Is(CT_COMMA))
+ && pc->GetLevel() == m_start->GetLevel()))))
+ {
+ LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
+ __unqualified_func__, __LINE__,
+ pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+ return(true);
+ }
+ LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
+ __unqualified_func__, __LINE__,
+ pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+ return(false);
+} // EnumStructUnionParser::is_potential_end_chunk
+
+
+bool EnumStructUnionParser::is_within_conditional(Chunk *pc) const
+{
+ LOG_FUNC_ENTRY();
+
+ auto question_operators = get_question_operators();
+
+ if (!question_operators.empty())
+ {
+ auto &&it_token_chunk_pair = question_operators.cbegin();
+
+ while (it_token_chunk_pair != question_operators.cend())
+ {
+ auto *question = it_token_chunk_pair->second;
+ auto *end = skip_to_expression_end(question);
+ auto *start = skip_to_expression_start(question);
+
+ if (chunk_is_between(pc, start, end))
+ {
+ return(true);
+ }
+ ++it_token_chunk_pair;
+ }
+ }
+ return(false);
+} // EnumStructUnionParser::is_within_conditional
+
+
+bool EnumStructUnionParser::is_within_inheritance_list(Chunk *pc) const
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc->TestFlags(PCF_IN_CLASS_BASE))
+ {
+ return(true);
+ }
+ auto *inheritance_end = get_inheritance_end();
+ auto *inheritance_start = get_inheritance_start();
+
+ if ( inheritance_end->IsNotNullChunk()
+ && inheritance_start->IsNotNullChunk())
+ {
+ return(chunk_is_between(pc, inheritance_start, inheritance_end));
+ }
+ return(false);
+} // EnumStructUnionParser::is_within_inheritance_list
+
+
+bool EnumStructUnionParser::is_within_where_clause(Chunk *pc) const
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc->TestFlags(PCF_IN_WHERE_SPEC))
+ {
+ return(true);
+ }
+ auto *where_end = get_where_end();
+ auto *where_start = get_where_start();
+
+ if ( where_end->IsNotNullChunk()
+ && where_start->IsNotNullChunk())
+ {
+ return(chunk_is_between(pc, where_start, where_end));
+ }
+ return(false);
+} // EnumStructUnionParser::is_within_where_clause
+
+
+void EnumStructUnionParser::mark_base_classes(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ PcfFlags flags = PCF_VAR_1ST_DEF;
+
+ while (pc->IsNotNullChunk())
+ {
+ pc->SetFlagBits(PCF_IN_CLASS_BASE);
+ /**
+ * clear the PCF_VAR_TYPE flag for all chunks within the inheritance list
+ * TODO: this may not be necessary in the future once code outside this
+ * class is improved such that PCF_VAR_TYPE is not set for these chunks
+ */
+ pc->ResetFlagBits(PCF_VAR_TYPE);
+
+ Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (next->Is(CT_DC_MEMBER))
+ {
+ /**
+ * just in case it's a templated type
+ */
+ pc = skip_template_prev(pc);
+
+ if (pc->Is(CT_WORD))
+ {
+ /**
+ * TODO:
+ * To comply with conventions used elsewhere in the code, we're going
+ * to change chunks marked CT_WORD to CT_TYPE if followed by a scope-
+ * resolution operator; if a chunk marked CT_WORD is followed by a set
+ * of angle brackets, then it's obviously a templated type. However,
+ * in the absence of a pair trailing angle brackets, the chunk may be
+ * a namespace rather than a type. Need to revisit this!
+ */
+ pc->SetType(CT_TYPE);
+ }
+ }
+ else if ( ( next->Is(CT_BRACE_OPEN)
+ || ( next->Is(CT_COMMA)
+ && !is_within_where_clause(next)))
+ && next->GetLevel() == m_start->GetLevel())
+ {
+ /**
+ * just in case it's a templated type
+ */
+ pc = skip_template_prev(pc);
+
+ if (pc->Is(CT_WORD))
+ {
+ pc->SetFlagBits(flags);
+
+ if (flags & PCF_VAR_1ST)
+ {
+ flags &= ~PCF_VAR_1ST; // clear the first flag for the next items
+ }
+ }
+
+ if (next->Is(CT_BRACE_OPEN))
+ {
+ break;
+ }
+ }
+ pc = next;
+ }
+ pc->SetFlagBits(PCF_IN_CLASS_BASE);
+} // EnumStructUnionParser::mark_base_classes
+
+
+void EnumStructUnionParser::mark_braces(Chunk *brace_open)
+{
+ LOG_FUNC_ENTRY();
+
+ PcfFlags flags = PCF_NONE;
+
+ if (m_start->Is(CT_CLASS))
+ {
+ flags = PCF_IN_CLASS;
+ }
+ else if (m_start->IsEnum())
+ {
+ flags = PCF_IN_ENUM;
+ }
+ else if (m_start->Is(CT_STRUCT))
+ {
+ flags = PCF_IN_STRUCT;
+ }
+ /**
+ * TODO: why does flag_parens() flag the closing paren,
+ * but it doesn't flag the opening paren?
+ */
+
+ flag_parens(brace_open,
+ flags,
+ CT_NONE,
+ CT_NONE,
+ false);
+
+ if (m_start->IsClassStructOrUnion())
+ {
+ mark_struct_union_body(brace_open);
+
+ auto *inheritance_start = get_inheritance_start();
+
+ if (inheritance_start->IsNotNullChunk())
+ {
+ /**
+ * the class/struct/union is a derived class; mark the base
+ * classes between the colon/java "implements" keyword and the
+ * opening brace
+ */
+
+ mark_base_classes(inheritance_start);
+ }
+ }
+ brace_open->SetParentType(m_start->GetType());
+
+ auto *brace_close = brace_open->GetClosingParen(E_Scope::PREPROC);
+
+ if (brace_close->IsNotNullChunk())
+ {
+ brace_close->SetParentType(m_start->GetType());
+ }
+} // EnumStructUnionParser::mark_braces
+
+
+void EnumStructUnionParser::mark_class_colon(Chunk *colon)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LFTOR,
+ "%s(%d): Class colon detected: orig line is %zu, orig col is %zu\n",
+ __unqualified_func__,
+ __LINE__,
+ colon->GetOrigLine(),
+ colon->GetOrigCol());
+
+ colon->SetType(CT_CLASS_COLON);
+ colon->SetParentType(m_start->GetType());
+} // EnumStructUnionParser::mark_class_colon
+
+
+void EnumStructUnionParser::mark_conditional_colon(Chunk *colon)
+{
+ colon->SetType(CT_COND_COLON);
+} // EnumStructUnionParser::mark_conditional_colon
+
+
+void EnumStructUnionParser::mark_constructors()
+{
+ LOG_FUNC_ENTRY();
+
+ /**
+ * if a type was previously identified, then look for
+ * class/struct constructors in the body
+ */
+ if ( body_detected()
+ && type_identified()
+ && m_start->IsClassOrStruct())
+ {
+ LOG_FMT(LFTOR,
+ "%s(%d): orig line is %zu, orig col is %zu, start is '%s', parent type is %s\n",
+ __unqualified_func__,
+ __LINE__,
+ m_start->GetOrigLine(),
+ m_start->GetOrigCol(),
+ m_start->Text(),
+ get_token_name(m_start->GetParentType()));
+
+ log_pcf_flags(LFTOR, m_start->GetFlags());
+
+ /**
+ * get the name of the type
+ */
+ auto *body_end = get_body_end();
+ auto *body_start = get_body_start();
+ auto *name = m_type->Text();
+
+ LOG_FMT(LFTOR,
+ "%s(%d): Name of type is '%s'\n",
+ __unqualified_func__,
+ __LINE__,
+ name);
+ log_pcf_flags(LFTOR, m_type->GetFlags());
+
+ Chunk *next = Chunk::NullChunkPtr;
+ std::size_t level = m_type->GetBraceLevel() + 1;
+
+ for (auto *prev = body_start; next != body_end; prev = next)
+ {
+ prev->SetFlagBits(PCF_IN_CLASS);
+
+ next = skip_template_next(prev->GetNextNcNnl(E_Scope::PREPROC)); // Issue #3368
+
+ /**
+ * find a chunk within the class/struct body that
+ */
+ if ( prev->IsNotNullChunk()
+ && std::strcmp(prev->Text(), name) == 0
+ && prev->GetLevel() == level
+ && next->IsParenOpen())
+ {
+ prev->SetType(CT_FUNC_CLASS_DEF);
+
+ LOG_FMT(LFTOR,
+ "%s(%d): Constructor/destructor detected: '%s' at orig line is %zu, orig col is %zu, type is %s\n",
+ __unqualified_func__,
+ __LINE__,
+ name,
+ prev->GetOrigLine(),
+ prev->GetOrigCol(),
+ get_token_name(prev->GetType()));
+
+ mark_cpp_constructor(prev);
+ }
+ }
+
+ next->SetFlagBits(PCF_IN_CLASS);
+ }
+} // EnumStructUnionParser::mark_constructor
+
+
+void EnumStructUnionParser::mark_enum_integral_type(Chunk *colon)
+{
+ LOG_FUNC_ENTRY();
+
+ // Issue #4040
+ LOG_FMT(LFTOR,
+ "%s(%d): orig line is %zu, orig col is %zu\n",
+ __unqualified_func__, __LINE__,
+ colon->GetOrigLine(), colon->GetOrigCol());
+ colon->SetType(CT_ENUM_COLON);
+ colon->SetParentType(m_start->GetType());
+
+ auto *body_start = get_body_start();
+ auto *pc = colon->GetNextNcNnl();
+
+ /**
+ * the chunk(s) between the colon and opening
+ * brace (if present) should specify the enum's
+ * integral type
+ */
+
+ while ( chunk_is_between(pc, m_start, m_end)
+ && pc != body_start
+ && pc->IsNot(CT_BRACE_OPEN)
+ && !pc->IsSemicolon())
+ {
+ /**
+ * clear the PCF_VAR_TYPE flag for all chunks within the enum integral base
+ * TODO: this may not be necessary in the future once code outside this
+ * class is improved such that PCF_VAR_TYPE is not set for these chunks
+ */
+ if (pc->IsNot(CT_DC_MEMBER)) // Issue #3198
+ {
+ pc->ResetFlagBits(PCF_VAR_TYPE);
+ pc->SetType(CT_TYPE);
+ pc->SetParentType(colon->GetType());
+ }
+ pc = pc->GetNextNcNnl();
+ }
+} // EnumStructUnionParser::mark_enum_integral_type
+
+
+void EnumStructUnionParser::mark_extracorporeal_lvalues()
+{
+ /**
+ * clear the PCF_LVALUE flag for all chunks outside the body definition,
+ * as this flag may have been set elsewhere by code outside this class
+ * TODO: the mark_lvalue() function needs some improvement so that the
+ * following isn't necessary
+ */
+ Chunk *next = m_start;
+ Chunk *prev = Chunk::NullChunkPtr;
+
+ /**
+ * if the class is a template, go the extra step and correct the
+ * erroneously marked chunks - as previously mentioned, this likely
+ * won't be necessary with improvements to the mark_lvalue() function
+ */
+ if (next->GetParentType() == CT_TEMPLATE)
+ {
+ while (true)
+ {
+ prev = next->GetPrevNcNnlNi();
+
+ if ( prev->IsNullChunk()
+ || ( !prev->TestFlags(PCF_IN_TEMPLATE)
+ && prev->IsNot(CT_TEMPLATE)))
+ {
+ break;
+ }
+ next = prev;
+ }
+ }
+ Chunk *body_end = get_body_end();
+ Chunk *body_start = get_body_start();
+
+ while (next != m_end)
+ {
+ if ( !chunk_is_between(next, body_start, body_end)
+ && next->TestFlags(PCF_LVALUE))
+ {
+ next->ResetFlagBits(PCF_LVALUE);
+ }
+ else if ( ( next->Is(CT_ASSIGN)
+ || next->Is(CT_BRACE_OPEN))
+ && prev->Is(CT_WORD)
+ && prev->GetFlags().test_any(PCF_VAR_DEF | PCF_VAR_1ST | PCF_VAR_INLINE))
+ {
+ prev->SetFlagBits(PCF_LVALUE);
+ }
+ prev = next;
+ next = next->GetNextNcNnl();
+ }
+} // EnumStructUnionParser::mark_extracorporeal_lavlues
+
+
+void EnumStructUnionParser::mark_nested_name_specifiers(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ auto start_end_pair = match_qualified_identifier(pc);
+ auto start = start_end_pair.first;
+ auto end = start_end_pair.second;
+
+ for (pc = start; chunk_is_between(pc, start, end); pc = pc->GetNextNcNnl())
+ {
+ if (pc->Is(CT_WORD))
+ {
+ /**
+ * if the next token is an opening angle, then we can safely
+ * mark the current identifier as a type
+ */
+ auto *next = pc->GetNextNcNnl();
+
+ if (next->Is(CT_ANGLE_OPEN))
+ {
+ /**
+ * the template may have already been previously marked elsewhere...
+ */
+ auto *angle_open = next;
+ auto *angle_close = angle_open->GetClosingParen(E_Scope::PREPROC);
+
+ if (angle_close->IsNullChunk())
+ {
+ // parse error
+ parse_error_detected(true);
+
+ // TODO: should this be just a warning or an error (with exit condition?)
+ LOG_FMT(LWARN,
+ "%s(%d): Unmatched '<' at orig line is %zu, orig col is %zu\n",
+ __unqualified_func__,
+ __LINE__,
+ angle_open->GetOrigLine(),
+ angle_open->GetOrigCol());
+
+ break;
+ }
+ pc->SetType(CT_TYPE);
+ mark_template(next);
+ pc = angle_close;
+ }
+ else if ( is_within_inheritance_list(pc)
+ && ( next->Is(CT_COMMA)
+ || next->Is(CT_BRACE_OPEN)))
+ {
+ pc->SetType(CT_TYPE);
+ }
+ }
+ }
+} // EnumStructUnionParser::mark_nested_name_specifiers
+
+
+void EnumStructUnionParser::mark_pointer_types(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc->Is(CT_WORD))
+ {
+ do
+ {
+ // TODO: should there be a CT_BYREF_TYPE?
+ pc = pc->GetPrevNcNnlNi();
+
+ if (pc->IsPointerOperator())
+ {
+ pc->SetParentType(m_start->GetType());
+ pc->SetType(CT_PTR_TYPE);
+ }
+ } while (pc->IsPointerReferenceOrQualifier());
+ }
+} // EnumStructUnionParser::mark_pointer_types
+
+
+void EnumStructUnionParser::mark_template(Chunk *start) const
+{
+ LOG_FUNC_ENTRY();
+
+ if (start->IsNotNullChunk())
+ {
+ LOG_FMT(LTEMPL,
+ "%s(%d): Template detected: '%s' at orig line %zu, orig col %zu\n",
+ __unqualified_func__,
+ __LINE__,
+ start->Text(),
+ start->GetOrigLine(),
+ start->GetOrigCol());
+ }
+ start->SetParentType(CT_TEMPLATE);
+
+ auto *end = start->GetClosingParen(E_Scope::PREPROC);
+
+ if (end->IsNotNullChunk())
+ {
+ end->SetParentType(CT_TEMPLATE);
+
+ mark_template_args(start, end);
+ }
+} // EnumStructUnionParser::mark_template
+
+
+void EnumStructUnionParser::mark_template_args(Chunk *start, Chunk *end) const
+{
+ LOG_FUNC_ENTRY();
+
+ if ( end->IsNotNullChunk()
+ && start->IsNotNullChunk())
+ {
+ LOG_FMT(LTEMPL,
+ "%s(%d): Start of template detected: '%s' at orig line %zu, orig col %zu\n",
+ __unqualified_func__,
+ __LINE__,
+ start->Text(),
+ start->GetOrigLine(),
+ start->GetOrigCol());
+
+ PcfFlags flags = PCF_IN_TEMPLATE;
+ Chunk *next = start;
+
+ /**
+ * TODO: for now, just mark the chunks within the template as PCF_IN_TEMPLATE;
+ * we probably need to create a TemplateParser class to handle all
+ * things template-related
+ */
+
+ while (true)
+ {
+ next = next->GetNextNcNnl();
+
+ if (next == end)
+ {
+ break;
+ }
+ next->SetFlagBits(flags);
+ }
+ LOG_FMT(LTEMPL,
+ "%s(%d): End of template detected: '%s' at orig line %zu, orig col %zu\n",
+ __unqualified_func__,
+ __LINE__,
+ end->Text(),
+ end->GetOrigLine(),
+ end->GetOrigCol());
+ }
+} // EnumStructUnionParser::mark_template_args
+
+
+void EnumStructUnionParser::mark_type(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc->IsNotNullChunk())
+ {
+ m_type = pc;
+
+ do
+ {
+ make_type(pc);
+ pc->SetParentType(m_start->GetType());
+ pc = pc->GetNextNcNnl(E_Scope::PREPROC);
+ } while (pc->IsPointerOrReference());
+ }
+} // EnumStructUnionParser::mark_type
+
+
+void EnumStructUnionParser::mark_variable(Chunk *variable, PcfFlags flags)
+{
+ LOG_FUNC_ENTRY();
+
+ if (variable->IsNotNullChunk())
+ {
+ LOG_FMT(LVARDEF,
+ "%s(%d): Variable definition detected: '%s' at orig line is %zu, orig col is %zu, set %s\n",
+ __unqualified_func__,
+ __LINE__,
+ variable->Text(),
+ variable->GetOrigLine(),
+ variable->GetOrigCol(),
+ flags & PCF_VAR_1ST_DEF ? "PCF_VAR_1ST_DEF" : "PCF_VAR_1ST");
+
+ variable->SetFlagBits(flags);
+ variable->SetType(CT_WORD);
+ mark_pointer_types(variable);
+ }
+} // EnumStructUnionParser::mark_variable
+
+
+void EnumStructUnionParser::mark_where_clause(Chunk *where)
+{
+ LOG_FUNC_ENTRY();
+
+ if (where->IsNotNullChunk())
+ {
+ LOG_FMT(LFTOR,
+ "%s(%d): Where clause detected: orig line is %zu, orig col is %zu\n",
+ __unqualified_func__,
+ __LINE__,
+ where->GetOrigLine(),
+ where->GetOrigCol());
+ }
+ set_where_start(where);
+
+ auto *where_end = get_where_end();
+ auto *where_start = get_where_start();
+
+ set_where_end(where_end);
+
+ PcfFlags flags;
+
+ for (auto *pc = where_start; pc != where_end; pc = pc->GetNextNcNnl())
+ {
+ flags = mark_where_chunk(pc, m_start->GetType(), flags);
+ }
+} // EnumStructUnionParser::mark_where_clause
+
+
+void EnumStructUnionParser::mark_where_colon(Chunk *colon)
+{
+ LOG_FUNC_ENTRY();
+
+ if (colon->IsNotNullChunk())
+ {
+ LOG_FMT(LFTOR,
+ "%s(%d): Where colon detected: orig line is %zu, orig col is %zu\n",
+ __unqualified_func__,
+ __LINE__,
+ colon->GetOrigLine(),
+ colon->GetOrigCol());
+ }
+ colon->SetType(CT_WHERE_COLON);
+ colon->SetParentType(m_start->GetType());
+} // EnumStructUnionParser::mark_where_colon
+
+
+void EnumStructUnionParser::parse(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ initialize(pc);
+
+ if (parse_error_detected())
+ {
+ return;
+ }
+
+ /**
+ * make sure this wasn't a cast, and also make sure we're
+ * actually dealing with a class/enum/struct/union type
+ */
+ if ( m_start->GetParentType() == CT_C_CAST
+ || !m_start->IsClassEnumStructOrUnion())
+ {
+ return;
+ }
+ Chunk *prev = m_start;
+ Chunk *next = prev->GetNextNcNnl();
+
+ /**
+ * the enum-key might be enum, enum class or enum struct
+ */
+ if (next->IsEnum())
+ {
+ prev = next;
+ next = prev->GetNextNcNnl();
+ }
+ else if (prev->IsEnum())
+ {
+ Chunk *prev_prev = prev->GetPrevNcNnlNi();
+
+ if ( prev_prev->IsEnum()
+ && prev->IsEnum())
+ {
+ m_start = prev_prev;
+ }
+ }
+ /**
+ * pre-process all chunks between the starting and ending chunks identified
+ * in the initial pass
+ */
+
+ while (chunk_is_between(next, m_start, m_end))
+ {
+ /**
+ * skip attributes
+ */
+ next = skip_attribute(next);
+
+ /**
+ * skip declspec
+ */
+ next = skip_declspec(next);
+
+ /**
+ * skip any right-hand side assignments
+ */
+ if (next->Is(CT_ASSIGN))
+ {
+ next = skip_to_expression_end(next);
+ }
+
+ if ( next->Is(CT_ANGLE_OPEN)
+ && !template_detected())
+ {
+ next = parse_angles(next);
+ }
+ else if ( next->Is(CT_BRACE_OPEN)
+ && !body_detected())
+ {
+ next = parse_braces(next);
+ }
+ else if (next->IsColon())
+ {
+ parse_colon(next);
+ }
+ else if (next->Is(CT_COMMA))
+ {
+ record_top_level_comma(next);
+ }
+ else if (next->Is(CT_DC_MEMBER))
+ {
+ next = parse_double_colon(next);
+ }
+ else if ( next->IsParenOpen()
+ && ( language_is_set(LANG_D)
+ || ( language_is_set(LANG_PAWN)
+ && m_start->IsEnum())))
+ {
+ set_paren_parent(next, m_start->GetType());
+
+ if ( prev->Is(CT_WORD)
+ && language_is_set(LANG_D))
+ {
+ mark_template(next);
+ }
+ next = next->GetClosingParen(E_Scope::PREPROC);
+ }
+ else if ( next->Is(CT_QUALIFIER)
+ && language_is_set(LANG_JAVA)
+ && std::strncmp(next->GetStr().c_str(), "implements", 10) == 0)
+ {
+ mark_base_classes(next);
+ }
+ else if (next->Is(CT_QUESTION))
+ {
+ record_question_operator(next);
+ }
+ else if ( next->Is(CT_WHERE)
+ && !where_clause_detected())
+ {
+ mark_where_clause(next);
+ }
+ prev = next;
+
+ do
+ {
+ next = next->GetNextNcNnl();
+ } while ( next->IsNotNullChunk()
+ && next->GetLevel() > m_start->GetLevel());
+ }
+ /**
+ * identify the type and/or variable(s)
+ */
+ analyze_identifiers();
+
+ /**
+ * identify and mark lvalues occurring outside the body definition
+ */
+ mark_extracorporeal_lvalues();
+
+ if ( prev->IsNotNullChunk()
+ && prev->IsSemicolon()
+ && prev->GetLevel() == m_start->GetLevel()
+ && !prev->TestFlags(PCF_IN_FOR))
+ {
+ prev->SetParentType(m_start->GetType());
+ }
+} // EnumStructUnionParser::parse
+
+
+Chunk *EnumStructUnionParser::parse_angles(Chunk *angle_open)
+{
+ LOG_FUNC_ENTRY();
+
+ /**
+ * first check to see if the open angle occurs within an inheritance list
+ */
+ auto *pc = angle_open;
+
+ if (!is_within_inheritance_list(pc))
+ {
+ /**
+ * check to see if there's a matching closing angle bracket
+ */
+ auto *angle_close = angle_open->GetClosingParen(E_Scope::PREPROC);
+
+ if (angle_close->IsNullChunk())
+ {
+ // parse error
+ parse_error_detected(true);
+
+ // TODO: should this be just a warning or an error (with exit condition?)
+ LOG_FMT(LWARN,
+ "%s(%d): Unmatched '<' at orig line is %zu, orig col is %zu\n",
+ __unqualified_func__,
+ __LINE__,
+ angle_open->GetOrigLine(),
+ angle_open->GetOrigCol());
+ }
+ else
+ {
+ /**
+ * check to make sure that the template is the final chunk in a list
+ * of scope-resolution qualifications
+ */
+ auto *next = angle_close->GetNextNcNnl();
+
+ if (next->IsNot(CT_DC_MEMBER))
+ {
+ set_template_start(angle_open);
+
+ /**
+ * we could be dealing with a template type; if so, the opening angle
+ * bracket should be preceded by a CT_WORD token and we should have
+ * found a closing angle bracket
+ */
+ auto *prev = angle_open->GetPrevNcNnlNi();
+
+ if (prev->IsNot(CT_WORD))
+ {
+ // parse error
+ parse_error_detected(true);
+
+ // TODO: should this be just a warning or an error (with exit condition?)
+ LOG_FMT(LWARN,
+ "%s(%d): Identifier missing before '<' at orig line is %zu, orig col is %zu\n",
+ __unqualified_func__,
+ __LINE__,
+ angle_open->GetOrigLine(),
+ angle_open->GetOrigCol());
+ }
+ else
+ {
+ set_template_end(angle_close);
+ mark_template(angle_open);
+ }
+ }
+ /**
+ * update input argument to point to the closing angle bracket
+ */
+ pc = angle_close;
+ }
+ }
+ return(pc);
+} // EnumStructUnionParser::parse_angles
+
+
+Chunk *EnumStructUnionParser::parse_braces(Chunk *brace_open)
+{
+ LOG_FUNC_ENTRY();
+
+ /**
+ * check to see if there's a matching closing brace
+ */
+
+ auto *pc = brace_open;
+ auto *brace_close = pc->GetClosingParen(E_Scope::PREPROC);
+
+ if (brace_close->IsNotNullChunk())
+ {
+ /**
+ * we could be dealing with a variable definition preceded by
+ * the class/struct keyword. It's possible that the variable is
+ * assigned via direct-list initialization, hence the open brace
+ * is NOT part of a class/struct type definition.
+ */
+ auto *first_comma = get_first_top_level_comma();
+
+ if (chunk_is_after(pc, first_comma))
+ {
+ /**
+ * the open brace occurs after a top-level comma was encountered, which
+ * likely implies a direct-initialization or braced initializer list in
+ * the midst of a list of variable definitions
+ */
+
+ return(pc);
+ }
+ set_body_end(brace_close);
+ set_body_start(brace_open);
+
+ auto *enum_base_start = get_enum_base_start();
+ auto *inheritance_start = get_inheritance_start();
+ auto *prev = pc->GetPrevNcNnlNi();
+
+ /**
+ * check to see if the open brace was preceded by a closing paren;
+ * it could possibly be a function-like macro call preceding the
+ * open brace, but it's more likely that we're dealing with a
+ * signature associated with a function definition
+ */
+ bool is_potential_function_definition = false;
+
+ if ( ( language_is_set(LANG_C)
+ || language_is_set(LANG_CPP))
+ && prev->IsParenClose())
+ {
+ /**
+ * we may be dealing with a c/cpp function definition, where the 'struct'
+ * or 'class' keywords appear as the return type preceding a pair of braces
+ * and therefore may be associated with a function definition body
+ */
+ auto *paren_close = prev;
+
+ // skip in reverse to the matching open paren
+ auto *paren_open = paren_close->GetOpeningParen();
+
+ if (paren_open->IsNotNullChunk())
+ {
+ /**
+ * determine if there's an identifier preceding the open paren;
+ * if so, the identifier is very likely to be associated with
+ * a function definition
+ */
+ auto *type = m_start->GetNextNcNnl();
+ auto *identifier = paren_open->GetPrevNcNnlNi(E_Scope::PREPROC);
+ is_potential_function_definition = ( ( identifier->Is(CT_FUNCTION)
+ || identifier->Is(CT_FUNC_DEF)
+ || identifier->Is(CT_WORD))
+ && type != identifier);
+ }
+ }
+
+ if ( language_is_set(LANG_D)
+ || language_is_set(LANG_PAWN)
+ || !prev->IsParenClose()
+ || is_potential_function_definition
+ || chunk_is_between(prev, enum_base_start, brace_open)
+ || chunk_is_between(prev, inheritance_start, brace_open))
+ {
+ mark_braces(brace_open);
+
+ /**
+ * D does not require a semicolon after an enum, but we add one to make
+ * other code happy.
+ */
+ if ( language_is_set(LANG_D)
+ && m_start->IsEnum())
+ {
+ pawn_add_vsemi_after(brace_close); // Issue #2279
+ }
+ pc = brace_close;
+ }
+ else
+ {
+ // TODO: should this be just a warning or an error (with exit condition?)
+ LOG_FMT(LWARN,
+ "%s(%d): Parsing error precedes start of body '{' at orig line is %zu, orig col is %zu\n",
+ __unqualified_func__,
+ __LINE__,
+ brace_open->GetOrigLine(),
+ brace_open->GetOrigCol());
+
+ // parse error
+ parse_error_detected(true);
+ }
+ }
+ return(pc);
+} // EnumStructUnionParser::parse_braces
+
+
+void EnumStructUnionParser::parse_colon(Chunk *colon)
+{
+ LOG_FUNC_ENTRY();
+
+ if (m_start->Is(CT_UNION))
+ {
+ /**
+ * unions do not implement inheritance
+ */
+
+ // TODO: should this be just a warning or an error (with exit condition?)
+ LOG_FMT(LWARN,
+ "%s(%d): Colon follows union declaration at orig line is %zu, orig col is %zu\n",
+ __unqualified_func__,
+ __LINE__,
+ colon->GetOrigLine(),
+ colon->GetOrigCol());
+
+ // parse error
+ parse_error_detected(true);
+ }
+ else if (is_within_conditional(colon))
+ {
+ mark_conditional_colon(colon);
+ }
+ else if (is_within_where_clause(colon))
+ {
+ mark_where_colon(colon);
+ }
+ else if (!inheritance_detected())
+ {
+ if (m_start->IsClassOrStruct())
+ {
+ /**
+ * the colon likely specifies an inheritance list for a struct
+ * or class type
+ */
+
+ set_inheritance_start(colon);
+ mark_class_colon(colon);
+ }
+ else if (m_start->IsEnum())
+ {
+ set_enum_base_start(colon);
+ mark_enum_integral_type(colon);
+ }
+ }
+} // EnumStructUnionParser::parse_colon
+
+
+Chunk *EnumStructUnionParser::parse_double_colon(Chunk *double_colon)
+{
+ LOG_FUNC_ENTRY();
+
+ auto *pc = double_colon;
+
+ if ( language_is_set(LANG_CPP)
+ && pc->Is(CT_DC_MEMBER))
+ {
+ mark_nested_name_specifiers(pc);
+ pc = skip_scope_resolution_and_nested_name_specifiers(pc);
+ }
+ return(pc);
+} // EnumStructUnionParser::parse_double_colon
+
+
+bool EnumStructUnionParser::parse_error_detected() const
+{
+ LOG_FUNC_ENTRY();
+
+ return(m_parse_error);
+} // EnumStructUnionParser::parse_error_detected
+
+
+void EnumStructUnionParser::parse_error_detected(bool status)
+{
+ LOG_FUNC_ENTRY();
+
+ m_parse_error = status;
+} // EnumStructUnionParser::parse_error_detected
+
+
+void EnumStructUnionParser::record_question_operator(Chunk *question)
+{
+ LOG_FUNC_ENTRY();
+
+ if (question->Is(CT_QUESTION))
+ {
+ std::size_t index = m_chunk_map[CT_QUESTION].size();
+
+ m_chunk_map[CT_QUESTION][index] = question;
+ }
+} // EnumStructUnionParser::record_question_operator
+
+
+void EnumStructUnionParser::record_top_level_comma(Chunk *comma)
+{
+ if ( comma->IsNotNullChunk()
+ && comma->GetLevel() == m_start->GetLevel()
+ && !is_within_conditional(comma)
+ && !is_within_inheritance_list(comma))
+ {
+ std::size_t index = m_chunk_map[CT_COMMA].size();
+
+ m_chunk_map[CT_COMMA][index] = comma;
+ }
+} // EnumStructUnionParser::record_top_level_comma
+
+
+Chunk *EnumStructUnionParser::refine_end_chunk(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ if ( ( language_is_set(LANG_C)
+ || language_is_set(LANG_CPP))
+ && pc->Is(CT_BRACE_CLOSE))
+ {
+ /**
+ * if dealing with C/C++, one or more trailing variable definitions may
+ * follow the closing brace; a semi-colon should've been good enough to
+ * indicate the terminating condition, however some of the classes defined
+ * in the input tests cases for Continuous Integration DO NOT correctly
+ * terminate classes/struct with a semicolon (which is compilation error).
+ * As a consequence, more checks must be performed to determine where
+ * the terminating chunk is located. For instance, see operator.cpp and
+ * enum_comma.h for examples of offenders
+ */
+ auto *next = pc->GetNextNcNnl();
+
+ while (true)
+ {
+ if (next->IsSemicolon())
+ {
+ pc = next;
+
+ break;
+ }
+ else
+ {
+ /**
+ * if we're sitting at a comma, skip it
+ */
+ if (next->Is(CT_COMMA))
+ {
+ next = next->GetNextNcNnl();
+ }
+ auto match = match_variable(next, m_start->GetLevel());
+ auto *start = std::get<0>(match);
+ auto *identifier = std::get<1>(match);
+ auto *end = std::get<2>(match);
+
+ if ( end->IsNullChunk()
+ || identifier->IsNullChunk()
+ || start->IsNullChunk())
+ {
+ break;
+ }
+ else
+ {
+ pc = end->GetNextNcNnl();
+
+ /**
+ * skip any right-hand side assignments
+ */
+ if (pc->Is(CT_ASSIGN))
+ {
+ pc = skip_to_expression_end(pc);
+ }
+ next = pc;
+ }
+ }
+ }
+ }
+ return(pc);
+} // EnumStructUnionParser::refine_end_chunk
+
+
+void EnumStructUnionParser::set_body_end(Chunk *body_end)
+{
+ LOG_FUNC_ENTRY();
+
+ if (body_end->Is(CT_BRACE_CLOSE))
+ {
+ m_chunk_map[CT_BRACE_CLOSE][0] = body_end;
+ }
+} // EnumStructUnionParser::set_body_end
+
+
+void EnumStructUnionParser::set_body_start(Chunk *body_start)
+{
+ LOG_FUNC_ENTRY();
+
+ if (body_start->Is(CT_BRACE_OPEN))
+ {
+ m_chunk_map[CT_BRACE_OPEN][0] = body_start;
+ }
+} // EnumStructUnionParser::set_body_start
+
+
+void EnumStructUnionParser::set_enum_base_start(Chunk *enum_base_start)
+{
+ LOG_FUNC_ENTRY();
+
+ if (enum_base_start->IsColon())
+ {
+ m_chunk_map[CT_BIT_COLON][0] = enum_base_start;
+ }
+} // EnumStructUnionParser::set_enum_base_start
+
+
+void EnumStructUnionParser::set_inheritance_start(Chunk *inheritance_start)
+{
+ LOG_FUNC_ENTRY();
+
+ if (inheritance_start->IsColon())
+ {
+ m_chunk_map[CT_COLON][0] = inheritance_start;
+ }
+} // EnumStructUnionParser::set_inheritance_start
+
+
+void EnumStructUnionParser::set_template_end(Chunk *template_end)
+{
+ LOG_FUNC_ENTRY();
+
+ if (template_end->Is(CT_ANGLE_CLOSE))
+ {
+ m_chunk_map[CT_ANGLE_CLOSE][0] = template_end;
+ }
+} // EnumStructUnionParser::set_template_end
+
+
+void EnumStructUnionParser::set_template_start(Chunk *template_start)
+{
+ LOG_FUNC_ENTRY();
+
+ if (template_start->Is(CT_ANGLE_OPEN))
+ {
+ m_chunk_map[CT_ANGLE_OPEN][0] = template_start;
+ }
+} // EnumStructUnionParser::set_template_start
+
+
+void EnumStructUnionParser::set_where_end(Chunk *where_end)
+{
+ LOG_FUNC_ENTRY();
+
+ if (where_end->Is(CT_BRACE_OPEN))
+ {
+ m_chunk_map[CT_WHERE][0] = where_end;
+ }
+} // EnumStructUnionParser::set_where_end
+
+
+void EnumStructUnionParser::set_where_start(Chunk *where_start)
+{
+ LOG_FUNC_ENTRY();
+
+ if (where_start->Is(CT_WHERE))
+ {
+ m_chunk_map[CT_WHERE][0] = where_start;
+ }
+} // EnumStructUnionParser::set_where_start
+
+
+bool EnumStructUnionParser::template_detected() const
+{
+ LOG_FUNC_ENTRY();
+
+ auto *template_end = get_template_end();
+ auto *template_start = get_template_start();
+
+ return( template_end->IsNotNullChunk()
+ && template_start->IsNotNullChunk());
+} // EnumStructUnionParser::template_detected
+
+
+Chunk *EnumStructUnionParser::try_find_end_chunk(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
+ __unqualified_func__, __LINE__,
+ pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+
+ do
+ {
+ LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
+ __unqualified_func__, __LINE__,
+ pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+
+ /**
+ * clear some previously marked token types, some of which have likely
+ * been erroneously marked up to this point; a good example of this
+ * arises when macro variables and/or macro function calls follow the
+ * class/enum/struct/union keyword and precede the actual type name
+ */
+ if ( pc->Is(CT_TYPE)
+ || pc->Is(CT_WORD))
+ {
+ pc->SetType(CT_WORD);
+ pc->SetParentType(CT_NONE);
+ }
+ LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
+ __unqualified_func__, __LINE__,
+ pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+
+ do
+ {
+ pc = pc->GetNextNcNnl(E_Scope::PREPROC);
+ LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
+ __unqualified_func__, __LINE__,
+ pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+ } while ( pc->IsNotNullChunk()
+ && pc->GetLevel() > m_start->GetLevel());
+
+ if (pc->IsNullChunk())
+ {
+ LOG_FMT(LFTOR, "%s(%d): IsNullChunk\n",
+ __unqualified_func__, __LINE__);
+ // parse error
+ parse_error_detected(true);
+ return(Chunk::NullChunkPtr);
+ }
+ else
+ {
+ LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, type is %s\n",
+ __unqualified_func__, __LINE__,
+ pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+ }
+ } while (!is_potential_end_chunk(pc));
+
+ /**
+ * perform a second pass for c++ that
+ */
+ pc = refine_end_chunk(pc);
+
+ return(pc);
+} // EnumStructUnionParser::try_find_end_chunk
+
+
+void EnumStructUnionParser::try_post_identify_macro_calls()
+{
+ LOG_FUNC_ENTRY();
+
+ if ( language_is_set(LANG_CPP)
+ && type_identified())
+ {
+ /**
+ * for all chunks at class/enum/struct/union level, identify function-like
+ * macro calls and mark them as CT_MACRO_FUNC_CALL. The reason for doing
+ * so is to avoid mis-interpretation by code executed at a later time
+ */
+
+ auto *body_start = get_body_start();
+ auto *inheritance_start = get_inheritance_start();
+ Chunk *pc = m_start;
+ Chunk *prev = Chunk::NullChunkPtr;
+
+ do
+ {
+ if ( !chunk_is_between(prev, inheritance_start, body_start)
+ && ( prev->Is(CT_WORD)
+ || prev->Is(CT_FUNCTION)
+ || prev->Is(CT_FUNC_DEF))
+ && !prev->GetFlags().test_any(PCF_VAR_DEF | PCF_VAR_1ST | PCF_VAR_INLINE)
+ && prev->GetLevel() == m_start->GetLevel())
+ {
+ if (pc->IsParenOpen())
+ {
+ auto *paren_open = pc;
+ auto *paren_close = paren_open->GetClosingParen(E_Scope::PREPROC);
+
+ if (paren_close->IsNotNullChunk())
+ {
+ paren_open->SetType(CT_FPAREN_OPEN);
+ paren_open->SetParentType(CT_MACRO_FUNC_CALL);
+ paren_close->SetType(CT_FPAREN_CLOSE);
+ paren_close->SetParentType(CT_MACRO_FUNC_CALL);
+ prev->SetType(CT_MACRO_FUNC_CALL);
+ }
+ }
+ }
+ prev = pc;
+ pc = prev->GetNextNcNnl();
+ } while (chunk_is_between(pc, m_start, m_end));
+ }
+} // EnumStructUnionParser::try_post_identify_macro_calls
+
+
+void EnumStructUnionParser::try_post_identify_type()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *body_end = get_body_end();
+
+ if ( !type_identified()
+ && body_end->IsNullChunk())
+ {
+ /**
+ * a type wasn't identified and no closing brace is present; we're
+ * likely not dealing with an anonymous enum/class/struct
+ */
+
+ /**
+ * a type has yet to be identified, so search for the last word
+ * that hasn't been marked as a variable
+ */
+ Chunk *type = Chunk::NullChunkPtr;
+ Chunk *pc = m_start;
+
+ do
+ {
+ /**
+ * in case it's a qualified identifier, skip scope-resolution and
+ * nested name specifiers and return just the qualified identifier name
+ */
+ pc = skip_scope_resolution_and_nested_name_specifiers(pc);
+
+ if (pc->GetFlags().test_any(PCF_VAR_DEF | PCF_VAR_1ST | PCF_VAR_INLINE))
+ {
+ break;
+ }
+ else if ( pc->Is(CT_WORD)
+ || pc->Is(CT_ANGLE_CLOSE))
+ {
+ type = skip_template_prev(pc);
+ }
+ pc = pc->GetNextNcNnl();
+ } while (chunk_is_between(pc, m_start, m_end));
+
+ if (type->IsNotNullChunk())
+ {
+ mark_type(type);
+ }
+ }
+} // EnumStructUnionParser::try_post_identify_type
+
+
+bool EnumStructUnionParser::try_pre_identify_type()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc = get_body_start();
+
+ if ( language_is_set(LANG_PAWN)
+ && m_start->IsEnum())
+ {
+ set_paren_parent(pc, m_start->GetType());
+ }
+ else if (template_detected())
+ {
+ pc = get_template_start();
+ }
+ else if (enum_base_detected())
+ {
+ pc = get_enum_base_start();
+ }
+ else if (inheritance_detected())
+ {
+ pc = get_inheritance_start();
+
+ if (m_start->Is(CT_UNION))
+ {
+ /**
+ * unions do not implement inheritance
+ */
+
+ // TODO: should this be just a warning or an error (with exit condition?)
+ LOG_FMT(LWARN,
+ "%s(%d): Bad union declaration detected at orig line is %zu, orig col is %zu\n",
+ __unqualified_func__,
+ __LINE__,
+ m_start->GetOrigLine(),
+ m_start->GetOrigCol());
+
+ parse_error_detected(true);
+
+ return(false);
+ }
+ }
+
+ if (pc->IsNullChunk())
+ {
+ Chunk *next = m_start->GetNextNcNnl();
+
+ /**
+ * in case it's a qualified identifier, skip scope-resolution and
+ * nested name specifiers and return just the qualified identifier name
+ */
+ next = skip_scope_resolution_and_nested_name_specifiers(next);
+
+ Chunk *next_next = next->GetNextNcNnl();
+
+ /**
+ * in case it's a qualified identifier, skip scope-resolution and
+ * nested name specifiers and return just the qualified identifier name
+ */
+ next_next = skip_scope_resolution_and_nested_name_specifiers(next_next);
+
+ /**
+ * if there is one word between the start and end chunks, then we've likely
+ * identified the type; if there are two words, then the first is likely a
+ * type and the second is an instantiation thereof; however, it is possible
+ * that the first word is actually a reference to a macro definition, in which
+ * the second word would be the type
+ */
+ if (next_next == m_end)
+ {
+ pc = next_next;
+ }
+ else if ( next->IsNotNullChunk()
+ && next->Is(CT_WORD)
+ && next_next->Is(CT_WORD)
+ && m_end->GetPrevNcNnlNi() == next_next)
+ {
+ /**
+ * check to see if we've got a macro reference preceding the last word chunk;
+ * this won't work in all cases, because a macro may be defined in another header
+ * file, but this is an attempt to increase the chances of identifying the correct
+ * chunk as the type
+ */
+ if ( chunk_is_macro_reference(next)
+ || m_start->GetParentType() == CT_TEMPLATE)
+ {
+ pc = m_end;
+ }
+ else
+ {
+ pc = next_next;
+ }
+ }
+ else
+ {
+ /**
+ * search for some common patterns that may indicate a type
+ */
+ Chunk *prev = m_start;
+
+ while ( chunk_is_between(next, m_start, m_end)
+ && ( ( next->IsNot(CT_ASSIGN)
+ && next->IsNot(CT_COMMA))
+ || next->GetLevel() != m_start->GetLevel())
+ && !next->IsSemicolon())
+ {
+ prev = next;
+ next = next->GetNextNcNnl();
+
+ /**
+ * in case it's a qualified identifier, skip scope-resolution and
+ * nested name specifiers and return just the qualified identifier name
+ */
+ next = skip_scope_resolution_and_nested_name_specifiers(next);
+
+ /**
+ * skip array brackets, as the type cannot be located within;
+ * also skip a set of parens - there may be a type embedded within,
+ * but it's not the type with which we're concerned
+ */
+ if ( next->IsSquareBracket() // Issue #3601
+ || next->IsParenOpen())
+ {
+ prev = next->GetClosingParen(E_Scope::PREPROC);
+ next = prev->GetNextNcNnl(E_Scope::PREPROC);
+ }
+
+ if ( prev->Is(CT_WORD)
+ && next->IsPointerOrReference())
+ {
+ pc = next;
+
+ break;
+ }
+ }
+ }
+ }
+
+ if (pc->IsNotNullChunk())
+ {
+ /**
+ * the chunk preceding the previously selected chunk should indicate the type
+ */
+
+ pc = pc->GetPrevNcNnlNi(E_Scope::PREPROC);
+
+ if ( pc->Is(CT_QUALIFIER)
+ && std::strncmp(pc->GetStr().c_str(), "final", 5) == 0)
+ {
+ pc = pc->GetPrevNcNnlNi(E_Scope::PREPROC);
+ }
+
+ if ( language_is_set(LANG_D)
+ && pc->IsParenClose())
+ {
+ pc = pc->GetOpeningParen();
+ pc = pc->GetPrevNcNnlNi();
+ }
+
+ if (pc->Is(CT_WORD))
+ {
+ mark_type(pc);
+
+ return(true);
+ }
+ }
+ return(false);
+} // EnumStructUnionParser::try_pre_identify_type
+
+
+bool EnumStructUnionParser::type_identified() const
+{
+ LOG_FUNC_ENTRY();
+
+ return(m_type->IsNotNullChunk());
+} // EnumStructUnionParser::type_identified
+
+
+/**
+ * Returns true if a where clause was detected during parsing
+ */
+bool EnumStructUnionParser::where_clause_detected() const
+{
+ LOG_FUNC_ENTRY();
+
+ auto *where_end = get_where_end();
+ auto *where_start = get_where_start();
+
+ return( where_end->IsNotNullChunk()
+ && where_start->IsNotNullChunk());
+} // EnumStructUnionParser::where_clause_detected
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/EnumStructUnionParser.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/EnumStructUnionParser.h
new file mode 100644
index 00000000..136a0eb7
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/EnumStructUnionParser.h
@@ -0,0 +1,497 @@
+/**
+ * @file combine_fix_mark_enum_struct_union.h
+ *
+ * @author Joshua Parker
+ * @license GPL v2+
+ * extract from combine_fix_mark.h
+ */
+
+#ifndef ENUM_STRUCT_UNION_PARSER_H_INCLUDED
+#define ENUM_STRUCT_UNION_PARSER_H_INCLUDED
+
+#include "pcf_flags.h"
+#include "token_enum.h"
+#include "uncrustify_types.h"
+#include <map>
+
+
+/**
+ * Class EnumStructUnionParser : This class facilitates the parsing and interpretation
+ * of ALL instances of the class, enum, union, and
+ * struct keywords, including user-defined types with
+ * a body {} and any trailing inline variable declarations
+ * that may follow the definition (as permitted by
+ * the coding language in question). The class also
+ * interprets variable declarations preceded by one
+ * of those keywords, as well as any C/C++ forward
+ * declarations
+ */
+class EnumStructUnionParser
+{
+public:
+ /**
+ * Constructor
+ */
+ EnumStructUnionParser();
+
+
+ /**
+ * Destructor
+ */
+ ~EnumStructUnionParser();
+
+
+private:
+ /**
+ * Analyzes all identifiers (marked as CT_WORD) between the starting and
+ * ending chunks and changes CT_WORD to one of CT_TYPE, CT_MACRO_FUNC_CALL,
+ * etc. and sets flags (PCF_VAR_1ST, PCF_VAR_1ST_DEF, PCF_VAR_INLINE, etc.)
+ * for variable identifiers accordingly. Flags C++ forward declarations as
+ * PCF_INCOMPLETE
+ */
+ void analyze_identifiers();
+
+
+ /**
+ * Returns true if a pair of braces were both detected AND determined to be
+ * part of a class/enum/struct/union body
+ */
+ bool body_detected() const;
+
+
+ /**
+ * Returns true if comma-separated values were detected during parsing
+ */
+ bool comma_separated_values_detected() const;
+
+
+ /**
+ * Returns true if an enumerated integral type was detected during parsing
+ */
+ bool enum_base_detected() const;
+
+
+ /**
+ * Returns the end chunk of a class/enum/struct/union body, if detected
+ * during parsing
+ */
+ Chunk *get_body_end() const;
+
+
+ /**
+ * Returns the starting chunk of a class/enum/struct/union body, if detected
+ * during parsing
+ */
+ Chunk *get_body_start() const;
+
+
+ /**
+ * Returns the starting chunk associated with an enumerated type's base
+ * specifier statement, if detected during parsing
+ */
+ Chunk *get_enum_base_start() const;
+
+
+ /**
+ * Returns the first comma encountered at the level of the starting chunk,
+ * if detected during parsing
+ */
+ Chunk *get_first_top_level_comma() const;
+
+
+ /**
+ * Returns the ending chunk associated with an class/struct inheritance
+ * list, if detected during parsing
+ */
+ Chunk *get_inheritance_end() const;
+
+
+ /**
+ * Returns the starting chunk associated with an class/struct inheritance
+ * list, if detected during parsing
+ */
+ Chunk *get_inheritance_start() const;
+
+
+ /**
+ * Returns a numerically-indexed map of all question operators encountered
+ * during parsing
+ */
+ std::map<std::size_t, Chunk *> get_question_operators() const;
+
+
+ /**
+ * Returns the end chunk associated with a template parameter list, if
+ * detected during parsing
+ */
+ Chunk *get_template_end() const;
+
+
+ /**
+ * Return the starting chunk associated with a template parameter list, if
+ * detected during parsing
+ */
+ Chunk *get_template_start() const;
+
+
+ /**
+ * Returns a numerically-indexed map of all top-level commas encountered
+ * during parsing
+ */
+ std::map<std::size_t, Chunk *> get_top_level_commas() const;
+
+
+ /**
+ * Return the starting chunk associated with a where clause, if
+ * detected during parsing
+ */
+ Chunk *get_where_end() const;
+
+
+ /**
+ * Return the starting chunk associated with a where clause, if
+ * detected during parsing
+ */
+ Chunk *get_where_start() const;
+
+
+ /**
+ * Returns true if an inheritance list associated with a class or struct was
+ * discovered during parsing
+ */
+ bool inheritance_detected() const;
+
+
+public:
+ /**
+ * Performs object initialization prior to parsing
+ */
+ void initialize(Chunk *pc);
+
+
+private:
+ /**
+ * Returns true if the chunk under test represents a potential end chunk past
+ * which further parsing is not likely warranted
+ */
+ bool is_potential_end_chunk(Chunk *pc) const;
+
+
+ /**
+ * Returns true if the chunk under test is deemed to be located within a
+ * conditional/ternary statement
+ */
+ bool is_within_conditional(Chunk *pc) const;
+
+
+ /**
+ * Returns true if the chunk under test is deemed to be located within an
+ * inheritance list
+ */
+ bool is_within_inheritance_list(Chunk *pc) const;
+
+
+ /**
+ * Returns true if the chunk under test is deemed to be located within a
+ * where clause
+ */
+ bool is_within_where_clause(Chunk *pc) const;
+
+
+ /**
+ * Marks all base classes that appear as part of an inheritance list
+ */
+ void mark_base_classes(Chunk *pc);
+
+
+ /**
+ * Marks pairs of braces associated with the body of a class/enum/struct/union,
+ * and additionally calls a separate routine to mark any base classes for that
+ * may precede the opening brace
+ */
+ void mark_braces(Chunk *start);
+
+
+ /**
+ * Marks the beginning chunk of an inheritance list
+ */
+ void mark_class_colon(Chunk *colon);
+
+
+ /**
+ * Mark a colon as a conditional
+ */
+ void mark_conditional_colon(Chunk *colon);
+
+
+ /**
+ * Mark any struct/class constructor declarations/definitions
+ */
+ void mark_constructors();
+
+
+ /**
+ * Marks the beginning chunk of an enumerated integral type specification
+ */
+ void mark_enum_integral_type(Chunk *colon);
+
+
+ /**
+ * Scan chunks outside the definition body and mark lvalues accordingly
+ */
+ void mark_extracorporeal_lvalues();
+
+
+ /**
+ * Mark nested name specifiers preceding qualified identifiers
+ */
+ void mark_nested_name_specifiers(Chunk *pc);
+
+
+ /**
+ * Marks pointer operators preceding a variable identifier
+ */
+ void mark_pointer_types(Chunk *pc);
+
+
+ /**
+ * Marks the beginning and ending chunks associated with a template
+ * (templates may appear after the identifier type name as part of a class
+ * specialization)
+ */
+ void mark_template(Chunk *start) const;
+
+
+ /**
+ * Marks the arguments within a template argument list bounded by the
+ * starting and ending chunks
+ */
+ void mark_template_args(Chunk *start, Chunk *end) const;
+
+
+ /**
+ * Marks the type identifier associated with the class/enum/struct/union,
+ * if not anonymously defined
+ */
+ void mark_type(Chunk *pc);
+
+
+ /**
+ * Marks all variable identifiers associated with the class/enum/struct/union
+ */
+ void mark_variable(Chunk *variable, PcfFlags flags);
+
+
+ /**
+ * Marks all chunks belonging to a c# where clause
+ */
+ void mark_where_clause(Chunk *where);
+
+
+ /**
+ * Marks the beginning of a where clause
+ */
+ void mark_where_colon(Chunk *colon);
+
+
+public:
+ /**
+ * Parses the class/enum/struct/union and all associated chunks
+ */
+ void parse(Chunk *pc);
+
+
+private:
+ /**
+ * Parses closing and opening angle brackets
+ */
+ Chunk *parse_angles(Chunk *angle_open);
+
+
+ /**
+ * Parses closing and opening braces
+ */
+ Chunk *parse_braces(Chunk *brace_open);
+
+
+ /**
+ * Parses a single colon, which may precede an inheritance list or
+ * enumerated integral type specification
+ */
+ void parse_colon(Chunk *colon);
+
+
+ /**
+ * Parses a double colon, which may indicate a scope resolution chain
+ */
+ Chunk *parse_double_colon(Chunk *double_colon);
+
+
+ /**
+ * Returns the parsing error status
+ */
+ bool parse_error_detected() const;
+
+
+ /**
+ * Sets the parsing error status
+ */
+ void parse_error_detected(bool status);
+
+
+ /**
+ * Records all question operators encountered during parsing
+ */
+ void record_question_operator(Chunk *question);
+
+
+ /**
+ * Records a comma chunk given one the following conditions are satisfied:
+ * 1) it is encountered at the level of the starting chunk
+ * 2) it is not part of a right-hand side assignment
+ * 3) it is not part of an inheritance list
+ * 4) it is not part of a conditional/ternary expression
+ */
+ void record_top_level_comma(Chunk *comma);
+
+
+ /**
+ * Adjusts the end chunk returned by the try_find_end_chunk() function
+ * for any potential trailing inline variable declarations that may follow
+ * the body of a class/enum/struct/union definition
+ */
+ Chunk *refine_end_chunk(Chunk *pc);
+
+
+ /**
+ * Sets the chunk associated with the end of a class/enum/struct/union
+ * body
+ */
+ void set_body_end(Chunk *body_end);
+
+
+ /**
+ * Sets the chunk associated with the start of a class/enum/struct/union
+ * body
+ */
+ void set_body_start(Chunk *body_start);
+
+
+ /**
+ * Sets the chunk associated with the start of an enumerated integral
+ * base type specification
+ */
+ void set_enum_base_start(Chunk *enum_base_start);
+
+
+ /**
+ * Sets the chunk associated with the start of an inheritance list
+ */
+ void set_inheritance_start(Chunk *inheritance_start);
+
+
+ /**
+ * Sets the chunk associated with the end of a template
+ */
+ void set_template_end(Chunk *template_end);
+
+
+ /**
+ * Sets the chunk associated with the start of a template
+ */
+ void set_template_start(Chunk *template_start);
+
+
+ /**
+ * Return the ending chunk associated with a where clause, if
+ * detected during parsing
+ */
+ void set_where_end(Chunk *where_end);
+
+
+ /**
+ * Return the starting chunk associated with a where clause, if
+ * detected during parsing
+ */
+ void set_where_start(Chunk *where_start);
+
+
+ /**
+ * Returns true if a template was detected during parsing
+ */
+ bool template_detected() const;
+
+
+ /**
+ * Attempts to find the last chunk associated with the class/enum/struct/union
+ */
+ Chunk *try_find_end_chunk(Chunk *pc);
+
+
+ /**
+ * Attempts to identify any function-like macro calls which may precede the
+ * actual type identifier
+ */
+ void try_post_identify_macro_calls();
+
+
+ /**
+ * Attempts to find the identifier type name (if not anonymously-defined) post
+ * variable identifier interpretation
+ */
+ void try_post_identify_type();
+
+
+ /**
+ * Attempts to find the identifier type name prior to variable identifier
+ * interpretation
+ */
+ bool try_pre_identify_type();
+
+
+ /**
+ * Returns true if a corresponding type was identified for the class/enum/struct/union
+ */
+ bool type_identified() const;
+
+
+ /**
+ * Returns true if a where clause was detected during parsing
+ */
+ bool where_clause_detected() const;
+
+
+ /**
+ * Map of token-type, chunk pairs
+ */
+ std::map<E_Token, std::map<std::size_t, Chunk *> > m_chunk_map;
+
+
+ /**
+ * Indicates the last chunk associated with the class/enum/struct/union keyword
+ */
+ Chunk *m_end;
+
+
+ /**
+ * Indicates whether or not a parse error has occurred
+ */
+ bool m_parse_error;
+
+
+ /**
+ * Stores a pointer to the class/enum/struct/union keyword chunk with which the
+ * parse() routine was invoked
+ */
+ Chunk *m_start;
+
+
+ /**
+ * Stores a pointer to the type identifier associated with the class/enum/struct/union,
+ * if not anonymously defined
+ */
+ Chunk *m_type;
+};
+
+
+#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ListManager.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/ListManager.h
index 64bc5fd8..64bc5fd8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/ListManager.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/ListManager.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/add_space_table.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/add_space_table.h
new file mode 100644
index 00000000..47b54148
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/add_space_table.h
@@ -0,0 +1,375 @@
+// *INDENT-OFF*
+
+#include "token_enum.h"
+
+//! type that stores two chunks between those no space shall occur
+struct no_space_table_t
+{
+ E_Token first; //! first chunk
+ E_Token second; //! second chunk
+};
+
+/**
+ * this table lists out all combos where a space MUST be present
+ * CT_UNKNOWN is a wildcard.
+ *
+ * TODO: some of these are no longer needed.
+ */
+const no_space_table_t add_space_table[] =
+{
+ { CT_ACCESS, CT_TYPE },
+ { CT_ACCESS, CT_WORD },
+ { CT_ALIGN, CT_PAREN_OPEN },
+ { CT_AMP, CT_WORD },
+ { CT_ANGLE_CLOSE, CT_BRACE_OPEN },
+ { CT_ANNOTATION, CT_ANNOTATION },
+ { CT_ANNOTATION, CT_TYPE },
+ { CT_ASM_COLON, CT_ASM_COLON },
+ { CT_ASM_COLON, CT_STRING },
+ { CT_ASM, CT_FUNC_CALL },
+ { CT_ASM, CT_PAREN_OPEN },
+ { CT_ASM, CT_QUALIFIER },
+ { CT_ASSERT, CT_PAREN_OPEN },
+ { CT_ASSIGN_FUNC_PROTO, CT_DEFAULT },
+ { CT_ASSIGN_FUNC_PROTO, CT_DELETE },
+ { CT_ASSIGN_FUNC_PROTO, CT_NUMBER },
+ { CT_ATTRIBUTE, CT_ATTRIBUTE },
+ { CT_ATTRIBUTE, CT_BRACE_OPEN },
+ { CT_ATTRIBUTE, CT_CASE },
+ { CT_ATTRIBUTE, CT_QUALIFIER },
+ { CT_ATTRIBUTE, CT_TYPE },
+ { CT_ATTRIBUTE, CT_WORD },
+ { CT_AUTORELEASEPOOL, CT_BRACE_OPEN },
+ { CT_BODY, CT_BRACE_OPEN },
+ { CT_BRACE_CLOSE, CT_BRACE_OPEN },
+ { CT_BRACE_CLOSE, CT_CLASS },
+ { CT_BRACE_CLOSE, CT_FUNC_CALL },
+ { CT_BRACE_CLOSE, CT_GETSET },
+ { CT_BRACE_CLOSE, CT_IF },
+ { CT_BRACE_CLOSE, CT_OC_MSG_NAME },
+ { CT_BRACE_CLOSE, CT_PAREN_OPEN },
+ { CT_BRACE_CLOSE, CT_QUALIFIER },
+ { CT_BRACE_CLOSE, CT_RETURN },
+ { CT_BRACE_CLOSE, CT_TYPE },
+ { CT_BRACE_CLOSE, CT_WORD },
+ { CT_BREAK, CT_WORD },
+ { CT_BYREF, CT_INV },
+ { CT_CASE_COLON, CT_ATTRIBUTE },
+ { CT_CASE_COLON, CT_BRACE_OPEN },
+ { CT_CASE_COLON, CT_BREAK },
+ { CT_CASE_COLON, CT_RETURN },
+ { CT_CASE_COLON, CT_WORD },
+ { CT_CASE, CT_NEG },
+ { CT_CASE, CT_PAREN_OPEN },
+ { CT_CASE, CT_STRING },
+ { CT_CATCH, CT_FUNC_CALL },
+ { CT_CLASS_COLON, CT_FUNC_CALL },
+ { CT_CLASS_COLON, CT_QUALIFIER },
+ { CT_CLASS_COLON, CT_TYPE },
+ { CT_CLASS_COLON, CT_WORD },
+ { CT_COLON, CT_COLON },
+ { CT_COLON, CT_NUMBER },
+ { CT_COLON, CT_QUALIFIER },
+ { CT_COLON, CT_STRING },
+ { CT_COLON, CT_TYPE },
+ { CT_COLON, CT_WORD },
+ { CT_COMMENT_EMBED, CT_FUNC_CLASS_PROTO },
+ { CT_COMMENT_MULTI, CT_ELSE },
+ { CT_CONCAT, CT_STRING },
+ { CT_CONCAT, CT_WORD },
+ { CT_COND_COLON, CT_FUNC_CALL },
+ { CT_COND_COLON, CT_STRING },
+ { CT_COND_COLON, CT_WORD },
+ { CT_CONSTRUCT, CT_TYPE },
+ { CT_CONTINUE, CT_WORD },
+ { CT_CS_PROPERTY, CT_BRACE_OPEN },
+ { CT_DEFAULT, CT_STRING },
+ { CT_DEFAULT, CT_WORD },
+ { CT_DELEGATE, CT_BRACE_OPEN },
+ { CT_D_MODULE, CT_WORD },
+ { CT_ELLIPSIS, CT_NUMBER },
+ { CT_ELSE, CT_FOR },
+ { CT_ELSE, CT_IF },
+ { CT_ELSE, CT_PAREN_OPEN },
+ { CT_ELSE, CT_WORD },
+ { CT_ELSEIF, CT_CONSTEXPR },
+ { CT_ENUM_CLASS, CT_ATTRIBUTE },
+ { CT_ENUM_CLASS, CT_TYPE },
+ { CT_ENUM, CT_ATTRIBUTE },
+ { CT_ENUM, CT_BRACE_OPEN },
+ { CT_ENUM, CT_ENUM_CLASS },
+ { CT_ENUM, CT_FPAREN_OPEN },
+ { CT_ENUM, CT_FUNCTION },
+ { CT_ENUM, CT_TYPE },
+ { CT_ENUM, CT_WORD },
+ { CT_EXECUTION_CONTEXT, CT_EXECUTION_CONTEXT },
+ { CT_EXECUTION_CONTEXT, CT_FPAREN_OPEN },
+ { CT_EXTERN, CT_STRING },
+ { CT_FPAREN_CLOSE, CT_ASSIGN_FUNC_PROTO },
+ { CT_FPAREN_CLOSE, CT_ATTRIBUTE },
+ { CT_FPAREN_CLOSE, CT_CLASS_COLON },
+ { CT_FPAREN_CLOSE, CT_COND_COLON },
+ { CT_FPAREN_CLOSE, CT_DEFAULT },
+ { CT_FPAREN_CLOSE, CT_FUNC_CALL },
+ { CT_FPAREN_CLOSE, CT_NEG },
+ { CT_FPAREN_CLOSE, CT_NOT },
+ { CT_FPAREN_CLOSE, CT_OC_MSG_NAME },
+ { CT_FPAREN_CLOSE, CT_QUESTION },
+ { CT_FPAREN_CLOSE, CT_STRING },
+ { CT_FPAREN_CLOSE, CT_THROW },
+ { CT_FPAREN_CLOSE, CT_TYPE },
+ { CT_FPAREN_CLOSE, CT_WHERE_SPEC },
+ { CT_FPAREN_CLOSE, CT_WORD },
+ { CT_FRIEND, CT_CLASS },
+ { CT_FRIEND, CT_STRUCT },
+ { CT_FRIEND, CT_TYPE },
+ { CT_FUNCTION, CT_PAREN_OPEN },
+ { CT_FUNC_VAR, CT_PPAREN_CLOSE },
+ { CT_GOTO, CT_WORD },
+ { CT_IF, CT_CONSTEXPR },
+ { CT_IGNORED, CT_IGNORED },
+ { CT_IMPORT, CT_WORD },
+ { CT_INCDEC_AFTER, CT_DEREF },
+ { CT_IN, CT_TYPE },
+ { CT_IN, CT_WORD },
+ { CT_LABEL_COLON, CT_CS_PROPERTY },
+ { CT_LABEL_COLON, CT_FUNC_CALL },
+ { CT_LABEL_COLON, CT_NEW },
+ { CT_LABEL_COLON, CT_PAREN_OPEN },
+ { CT_LABEL_COLON, CT_RETURN },
+ { CT_LABEL_COLON, CT_STRING },
+ { CT_LABEL_COLON, CT_TYPE },
+ { CT_LABEL_COLON, CT_WORD },
+ { CT_LOCK, CT_PAREN_OPEN },
+ { CT_NAMESPACE, CT_BRACE_OPEN },
+ { CT_NAMESPACE, CT_TYPE },
+ { CT_NAMESPACE, CT_WORD },
+ { CT_NATIVE, CT_TAG },
+ { CT_NUMBER, CT_CHAR },
+ { CT_NUMBER, CT_COLON },
+ { CT_NUMBER, CT_ELLIPSIS },
+ { CT_NUMBER, CT_OC_MSG_NAME },
+ { CT_NUMBER, CT_PAREN_OPEN },
+ { CT_NUMBER, CT_WORD },
+ { CT_NUMBER_FP, CT_NUMBER },
+ { CT_NUMBER_FP, CT_OC_MSG_NAME },
+ { CT_NUMBER_FP, CT_WORD },
+ { CT_OC_CLASS, CT_CLASS_COLON },
+ { CT_OC_CLASS, CT_PAREN_OPEN },
+ { CT_OC_DYNAMIC, CT_WORD },
+ { CT_OC_IMPL, CT_OC_CLASS },
+ { CT_OC_INTF, CT_OC_CLASS },
+ { CT_OC_MSG_DECL, CT_BRACE_OPEN },
+ { CT_OC_PROTOCOL, CT_OC_CLASS },
+ { CT_PACKAGE, CT_WORD },
+ { CT_PAREN_CLOSE, CT_ASM_COLON },
+ { CT_PAREN_CLOSE, CT_COLON },
+ { CT_PAREN_CLOSE, CT_COND_COLON },
+ { CT_PAREN_CLOSE, CT_CS_PROPERTY },
+ { CT_PAREN_CLOSE, CT_DEREF },
+ { CT_PAREN_CLOSE, CT_NOT },
+ { CT_PAREN_CLOSE, CT_NUMBER },
+ { CT_PAREN_CLOSE, CT_OC_MSG_NAME },
+ { CT_PAREN_CLOSE, CT_POS },
+ { CT_PAREN_CLOSE, CT_QUALIFIER },
+ { CT_PAREN_CLOSE, CT_TYPE },
+ { CT_PP_DEFINE, CT_MACRO },
+ { CT_PP_DEFINE, CT_MACRO_FUNC },
+ { CT_PP_DEFINE, CT_NUMBER },
+ { CT_PP_DEFINE, CT_PP_IGNORE },
+ { CT_PP_DEFINED, CT_TYPE },
+ { CT_PP_DEFINED, CT_WORD },
+ { CT_PP_ELSE, CT_FUNC_CALL },
+ { CT_PP_ELSE, CT_NOT },
+ { CT_PP_ELSE, CT_NUMBER },
+ { CT_PP_ELSE, CT_PAREN_OPEN },
+ { CT_PP_ELSE, CT_PP_DEFINED },
+ { CT_PP_ELSE, CT_WORD },
+ { CT_PP_EMIT, CT_MACRO },
+ { CT_PP_ENDIF, CT_WORD },
+ { CT_PP_ENDREGION, CT_PREPROC_BODY },
+ { CT_PP_IF, CT_CNG_HASINC },
+ { CT_PP_IF, CT_FUNC_CALL },
+ { CT_PP_IF, CT_NOT },
+ { CT_PP_IF, CT_NUMBER },
+ { CT_PP_IF, CT_PAREN_OPEN },
+ { CT_PP_IF, CT_PP_ASM },
+ { CT_PP_IF, CT_PP_DEFINE },
+ { CT_PP_IF, CT_PP_DEFINED },
+ { CT_PP_IF, CT_TYPE },
+ { CT_PP_IF, CT_WORD },
+ { CT_PP_INCLUDE, CT_STRING },
+ { CT_PP_INCLUDE, CT_WORD },
+ { CT_PP_OTHER, CT_PREPROC_BODY },
+ { CT_PP_PRAGMA, CT_PP_ENDASM },
+ { CT_PP_PRAGMA, CT_PP_ENDREGION },
+ { CT_PP_PRAGMA, CT_PP_REGION },
+ { CT_PP_PROPERTY, CT_WORD },
+ { CT_PP_REGION, CT_IGNORED },
+ { CT_PP_REGION, CT_PREPROC_BODY },
+ { CT_PP_UNDEF, CT_TYPE },
+ { CT_PP_UNDEF, CT_WORD },
+ { CT_Q_EMIT, CT_FUNC_CALL },
+ { CT_Q_FOREVER, CT_BRACE_OPEN },
+ { CT_QUESTION, CT_FUNC_CALL },
+ { CT_QUESTION, CT_PAREN_OPEN },
+ { CT_QUESTION, CT_STRING },
+ { CT_QUESTION, CT_WORD },
+ { CT_SBOOL, CT_TYPE },
+ { CT_SCOMPARE, CT_WORD },
+ { CT_SPAREN_CLOSE, CT_ATTRIBUTE },
+ { CT_SPAREN_CLOSE, CT_AUTORELEASEPOOL },
+ { CT_SPAREN_CLOSE, CT_BRACE_OPEN },
+ { CT_SPAREN_CLOSE, CT_FUNC_CALL },
+ { CT_SPAREN_CLOSE, CT_WORD },
+ { CT_SQL_ASSIGN, CT_FUNC_CALL },
+ { CT_SQL_ASSIGN, CT_WORD },
+ { CT_SQL_BEGIN, CT_SQL_WORD },
+ { CT_SQL_END, CT_SQL_WORD },
+ { CT_SQL_EXEC, CT_SQL_WORD },
+ { CT_SQL_WORD, CT_COLON },
+ { CT_SQL_WORD, CT_PAREN_OPEN },
+ { CT_SQL_WORD, CT_SQL_WORD },
+ { CT_SQUARE_CLOSE, CT_ATTRIBUTE },
+ { CT_SQUARE_CLOSE, CT_BRACE_OPEN },
+ { CT_SQUARE_CLOSE, CT_COLON },
+ { CT_SQUARE_CLOSE, CT_EXECUTION_CONTEXT },
+ { CT_SQUARE_CLOSE, CT_OC_MSG_NAME },
+ { CT_SQUARE_CLOSE, CT_STRING },
+ { CT_SQUARE_CLOSE, CT_WORD },
+ { CT_STATE, CT_TYPE },
+ { CT_STOCK, CT_QUALIFIER },
+ { CT_STOCK, CT_TAG },
+ { CT_STRING, CT_ATTRIBUTE },
+ { CT_STRING, CT_BRACE_OPEN },
+ { CT_STRING, CT_COLON },
+ { CT_STRING, CT_CONCAT },
+ { CT_STRING, CT_OC_MSG_NAME },
+ { CT_STRING, CT_PAREN_OPEN },
+ { CT_STRING, CT_STRING },
+ { CT_STRING, CT_STRUCT },
+ { CT_STRING, CT_TYPE },
+ { CT_STRING, CT_WORD },
+ { CT_STRUCT, CT_BRACE_OPEN },
+ { CT_STRUCT, CT_CLASS_COLON },
+ { CT_STRUCT, CT_MACRO_FUNC_CALL },
+ { CT_STRUCT, CT_TYPE },
+ { CT_STRUCT, CT_WORD },
+ { CT_TEMPLATE, CT_CLASS },
+ { CT_TEMPLATE, CT_TYPE },
+ { CT_THIS, CT_OC_MSG_NAME },
+ { CT_THIS, CT_TYPE },
+ { CT_TSQUARE, CT_BRACE_OPEN },
+ { CT_TSQUARE, CT_PAREN_OPEN },
+ { CT_TSQUARE, CT_WORD },
+ { CT_TYPEDEF, CT_ENUM },
+ { CT_TYPEDEF, CT_FUNC_TYPE },
+ { CT_TYPEDEF, CT_PAREN_OPEN },
+ { CT_TYPEDEF, CT_QUALIFIER },
+ { CT_TYPEDEF, CT_STRUCT },
+ { CT_TYPEDEF, CT_TYPE },
+ { CT_TYPEDEF, CT_TYPENAME },
+ { CT_TYPEDEF, CT_UNION },
+ { CT_TYPENAME, CT_ELLIPSIS },
+ { CT_TYPENAME, CT_WORD },
+ { CT_UNION, CT_BRACE_OPEN },
+ { CT_UNION, CT_TYPE },
+ { CT_UNION, CT_WORD },
+ { CT_USING, CT_NAMESPACE },
+ { CT_USING, CT_TYPE },
+ { CT_USING, CT_WORD },
+ { CT_USING_STMT, CT_PAREN_OPEN },
+ { CT_VOLATILE, CT_BRACE_OPEN },
+ { CT_WHERE_COLON, CT_CS_PROPERTY },
+ { CT_WHERE_COLON, CT_NEW },
+ { CT_WHERE_COLON, CT_TYPE },
+ { CT_WHERE_COLON, CT_WORD },
+ { CT_WHERE_SPEC, CT_WORD },
+ { CT_WORD, CT_ATTRIBUTE },
+ { CT_WORD, CT_BRACE_OPEN },
+ { CT_WORD, CT_CLASS_COLON },
+ { CT_WORD, CT_COLON },
+ { CT_WORD, CT_COMMENT_CPP },
+ { CT_WORD, CT_CONCAT },
+ { CT_WORD, CT_ELLIPSIS },
+ { CT_WORD, CT_IN },
+ { CT_WORD, CT_NEW },
+ { CT_WORD, CT_NOT },
+ { CT_WORD, CT_NUMBER },
+ { CT_WORD, CT_NUMBER_FP },
+ { CT_WORD, CT_OPERATOR },
+ { CT_WORD, CT_QUALIFIER },
+ { CT_WORD, CT_QUESTION },
+ { CT_WORD, CT_SCOMPARE },
+ { CT_WORD, CT_SQL_ASSIGN },
+ { CT_WORD, CT_STRING },
+ { CT_WORD, CT_STRUCT },
+ { CT_WORD, CT_TYPE },
+ { CT_WORD, CT_TYPE_CAST },
+ { CT_WORD, CT_TYPEDEF },
+ { CT_WORD, CT_WHERE_COLON },
+ { CT_WORD, CT_WHERE_SPEC },
+ { CT_WORD, CT_WORD },
+};
+
+/**
+ * this table lists out all combos where a space should NOT be present
+ * CT_UNKNOWN is a wildcard.
+ *
+ * TODO: some of these are no longer needed.
+ */
+const no_space_table_t no_space_table[] =
+{
+ { CT_OC_AT, CT_UNKNOWN },
+ { CT_INCDEC_BEFORE, CT_WORD },
+ { CT_UNKNOWN, CT_INCDEC_AFTER },
+ { CT_UNKNOWN, CT_LABEL_COLON },
+ { CT_UNKNOWN, CT_ACCESS_COLON },
+ { CT_UNKNOWN, CT_SEMICOLON },
+ { CT_UNKNOWN, CT_D_TEMPLATE },
+ { CT_D_TEMPLATE, CT_UNKNOWN },
+ { CT_MACRO_FUNC, CT_FPAREN_OPEN },
+ { CT_PAREN_OPEN, CT_UNKNOWN },
+ { CT_UNKNOWN, CT_PAREN_CLOSE },
+ { CT_FPAREN_OPEN, CT_UNKNOWN },
+ { CT_UNKNOWN, CT_SPAREN_CLOSE },
+ { CT_SPAREN_OPEN, CT_UNKNOWN },
+ { CT_UNKNOWN, CT_FPAREN_CLOSE },
+ { CT_UNKNOWN, CT_COMMA },
+ { CT_POS, CT_UNKNOWN },
+ { CT_STAR, CT_UNKNOWN },
+ { CT_VBRACE_CLOSE, CT_UNKNOWN },
+ { CT_VBRACE_OPEN, CT_UNKNOWN },
+ { CT_UNKNOWN, CT_VBRACE_CLOSE },
+ { CT_UNKNOWN, CT_VBRACE_OPEN },
+ { CT_PREPROC, CT_UNKNOWN },
+ { CT_PREPROC_INDENT, CT_UNKNOWN },
+ { CT_NEG, CT_UNKNOWN },
+ { CT_UNKNOWN, CT_SQUARE_OPEN },
+ { CT_UNKNOWN, CT_SQUARE_CLOSE },
+ { CT_SQUARE_OPEN, CT_UNKNOWN },
+ { CT_PAREN_CLOSE, CT_WORD },
+ { CT_PAREN_CLOSE, CT_FUNC_DEF },
+ { CT_PAREN_CLOSE, CT_FUNC_CALL },
+ { CT_PAREN_CLOSE, CT_ADDR },
+ { CT_PAREN_CLOSE, CT_FPAREN_OPEN },
+ { CT_OC_SEL_NAME, CT_OC_SEL_NAME },
+ { CT_TYPENAME, CT_TYPE },
+};
+
+/**
+ * this table lists out all combos where nothing is to do
+ * CT_UNKNOWN is a wildcard.
+ *
+ * TODO: some of these are no longer needed.
+ */
+const no_space_table_t IGNORE_space_table[] =
+{
+ //{ CT_RPAREN_OPEN, CT_RPAREN_CLOSE},
+ //{ CT_RPAREN_OPEN, CT_UNKNOWN },
+ //{ CT_UNKNOWN, CT_RPAREN_CLOSE},
+ { CT_PAREN_CLOSE, CT_SIZEOF},
+};
+
+
+// *INDENT-ON*
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align.cpp
new file mode 100644
index 00000000..830c41b8
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align.cpp
@@ -0,0 +1,232 @@
+/**
+ * @file align.cpp
+ * Does all the aligning stuff.
+ *
+ * @author Ben Gardner
+ * @author Guy Maurel since version 0.62 for uncrustify4Qt
+ * October 2015, 2016
+ * @license GPL v2+
+ */
+
+#include "align.h"
+
+#include "align_asm_colon.h"
+#include "align_assign.h"
+#include "align_braced_init_list.h"
+#include "align_eigen_comma_init.h"
+#include "align_func_params.h"
+#include "align_func_proto.h"
+#include "align_init_brace.h"
+#include "align_left_shift.h"
+#include "align_oc_decl_colon.h"
+#include "align_oc_msg_colons.h"
+#include "align_oc_msg_spec.h"
+#include "align_preprocessor.h"
+#include "align_same_func_call_params.h"
+#include "align_stack.h"
+#include "align_struct_initializers.h"
+#include "align_trailing_comments.h"
+#include "align_typedefs.h"
+#include "align_var_def_brace.h"
+#include "log_rules.h"
+#include "quick_align_again.h"
+
+constexpr static auto LCURRENT = LALIGN;
+
+using namespace uncrustify;
+
+
+/*
+ * Here are the items aligned:
+ *
+ * - enum value assignments
+ * enum {
+ * cat = 1,
+ * fred = 2,
+ * };
+ *
+ * - struct/union variable & bit definitions
+ * struct foo {
+ * char cat;
+ * int id : 5;
+ * int name_len : 6;
+ * int height : 12;
+ * };
+ *
+ * - variable definitions & assignments in normal code
+ * const char *cat = "feline";
+ * int id = 4;
+ * a = 5;
+ * bat = 14;
+ *
+ * - simple array initializers
+ * int a[] = {
+ * 1, 2, 3, 4, 5,
+ * 6, 7, 8, 9, 10
+ * };
+ *
+ * - c99 array initializers
+ * const char *name[] = {
+ * [FRED] = "fred",
+ * [JOE] = "joe",
+ * [PETER] = "peter",
+ * };
+ * struct foo b[] = {
+ * { .id = 1, .name = "text 1" },
+ * { .id = 567, .name = "text 2" },
+ * };
+ * struct foo_t bars[] =
+ * {
+ * [0] = { .name = "bar",
+ * .age = 21 },
+ * [1] = { .name = "barley",
+ * .age = 55 },
+ * };
+ *
+ * - compact array initializers
+ * struct foo b[] = {
+ * { 3, "dog" }, { 6, "spider" },
+ * { 8, "elephant" }, { 3, "cat" },
+ * };
+ *
+ * - multiline array initializers (2nd line indented, not aligned)
+ * struct foo b[] = {
+ * { AD_NOT_ALLOWED, "Sorry, you failed to guess the password.",
+ * "Try again?", "Yes", "No" },
+ * { AD_SW_ERROR, "A software error has occurred.", "Bye!", NULL, NULL },
+ * };
+ *
+ * - Trailing comments
+ *
+ * - Back-slash newline groups
+ *
+ * - Function prototypes
+ * int foo();
+ * void bar();
+ *
+ * - Preprocessors
+ * #define FOO_VAL 15
+ * #define MAX_TIMEOUT 60
+ * #define FOO(x) ((x) * 65)
+ *
+ * - typedefs
+ * typedef uint8_t BYTE;
+ * typedef int32_t INT32;
+ * typedef uint32_t UINT32;
+ */
+void align_all()
+{
+ LOG_FUNC_ENTRY();
+
+ if (options::align_typedef_span() > 0)
+ {
+ log_rule_B("align_typedef_span");
+ align_typedefs(options::align_typedef_span());
+ }
+
+ if (options::align_left_shift())
+ {
+ log_rule_B("align_left_shift");
+ align_left_shift();
+ }
+
+ if (options::align_eigen_comma_init())
+ {
+ log_rule_B("align_eigen_comma_init");
+ align_eigen_comma_init();
+ }
+
+ if (options::align_oc_msg_colon_span() > 0)
+ {
+ log_rule_B("align_oc_msg_colon_span");
+ align_oc_msg_colons();
+ }
+
+ if ( (options::align_var_def_span() > 0)
+ || (options::align_var_struct_span() > 0)
+ || (options::align_var_class_span() > 0))
+ {
+ // Align variable definitions
+ log_rule_B("align_var_def_span");
+ log_rule_B("align_var_struct_span");
+ log_rule_B("align_var_class_span");
+ align_var_def_brace(Chunk::GetHead(), options::align_var_def_span(), nullptr);
+ }
+
+ if ( (options::align_enum_equ_span() > 0)
+ || (options::align_assign_span() > 0))
+ {
+ // Align assignments
+ log_rule_B("align_enum_equ_span");
+ log_rule_B("align_assign_span");
+ align_assign(Chunk::GetHead(),
+ options::align_assign_span(),
+ options::align_assign_thresh(),
+ nullptr);
+ }
+
+ if ( (options::align_braced_init_list_span() > 0) // Issue #750
+ || (options::align_braced_init_list_thresh() > 0))
+ {
+ // Align braced initializers lists
+ align_braced_init_list(Chunk::GetHead(),
+ options::align_braced_init_list_span(),
+ options::align_braced_init_list_thresh(),
+ nullptr);
+ }
+
+ if (options::align_struct_init_span() > 0)
+ {
+ // Align structure initializers
+ log_rule_B("align_struct_init_span");
+ align_struct_initializers();
+ }
+
+ if ( (options::align_func_proto_span() > 0)
+ && !options::align_mix_var_proto())
+ {
+ // Align function prototypes
+ log_rule_B("align_func_proto_span");
+ log_rule_B("align_mix_var_proto");
+ align_func_proto(options::align_func_proto_span());
+ }
+
+ if (options::align_oc_msg_spec_span() > 0)
+ {
+ // Align OC message spec
+ log_rule_B("align_oc_msg_spec_span");
+ align_oc_msg_spec(options::align_oc_msg_spec_span());
+ }
+
+ if (options::align_oc_decl_colon())
+ {
+ // Align OC colons
+ log_rule_B("align_oc_decl_colon");
+ align_oc_decl_colon();
+ }
+
+ if (options::align_asm_colon())
+ {
+ // Align ASM colons
+ log_rule_B("align_asm_colon");
+ align_asm_colon();
+ }
+
+ if ( options::align_func_params()
+ || options::align_func_params_span() > 0)
+ {
+ // Align variable definitions in function prototypes
+ log_rule_B("align_func_params");
+ log_rule_B("align_func_params_span");
+ align_func_params();
+ }
+
+ if (options::align_same_func_call_params())
+ {
+ // Align parameters in function call
+ log_rule_B("align_same_func_call_params");
+ align_same_func_call_params();
+ }
+ // Just in case something was aligned out of order... do it again
+ quick_align_again();
+} // align_all
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align.h
new file mode 100644
index 00000000..000fc935
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align.h
@@ -0,0 +1,16 @@
+/**
+ * @file align.h
+ * prototypes for align.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+#ifndef ALIGN_H_INCLUDED
+#define ALIGN_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+
+void align_all();
+
+#endif /* ALIGN_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_add.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_add.cpp
new file mode 100644
index 00000000..ae8460d2
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_add.cpp
@@ -0,0 +1,58 @@
+/**
+ * @file align_add.cpp
+ *
+ * @author Guy Maurel
+ * split from align.cpp
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "align_add.h"
+#include "uncrustify.h"
+
+
+void align_add(ChunkStack &cs, Chunk *pc, size_t &max_col)
+{
+ LOG_FUNC_ENTRY();
+
+ size_t min_col;
+ Chunk *prev = Chunk::NullChunkPtr;
+
+ if (pc->IsNotNullChunk())
+ {
+ prev = pc->GetPrev();
+ }
+
+ if ( prev->IsNullChunk()
+ || prev->IsNewline())
+ {
+ min_col = 1;
+ LOG_FMT(LALADD, "%s(%d): pc orig line=%zu, pc->col=%zu max_col=%zu min_col=%zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetColumn(), max_col, min_col);
+ }
+ else
+ {
+ if (prev->Is(CT_COMMENT_MULTI))
+ {
+ min_col = prev->GetOrigColEnd() + 1;
+ }
+ else
+ {
+ min_col = prev->GetColumn() + prev->Len() + 1;
+ }
+ LOG_FMT(LALADD, "%s(%d): pc orig line=%zu, pc->col=%zu max_col=%zu min_col=%zu multi:%s prev->col=%zu prev->Len()=%zu %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetColumn(), max_col, min_col, (prev->Is(CT_COMMENT_MULTI)) ? "Y" : "N",
+ (prev->Is(CT_COMMENT_MULTI)) ? prev->GetOrigColEnd() : (UINT32)prev->GetColumn(), prev->Len(), get_token_name(prev->GetType()));
+ }
+
+ if (cs.Empty())
+ {
+ max_col = 0;
+ }
+ cs.Push_Back(pc);
+
+ if (min_col > max_col)
+ {
+ max_col = min_col;
+ }
+} // align_add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_add.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_add.h
index e178b5bd..e178b5bd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_add.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_add.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_asm_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_asm_colon.cpp
index 4eaca4f3..4eaca4f3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_asm_colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_asm_colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_asm_colon.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_asm_colon.h
index 2b0d3738..2b0d3738 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_asm_colon.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_asm_colon.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_assign.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_assign.cpp
new file mode 100644
index 00000000..b9012a2b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_assign.cpp
@@ -0,0 +1,289 @@
+/**
+ * @file align_assign.cpp
+ *
+ * @author Guy Maurel
+ * split from align.cpp
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "align_assign.h"
+
+#include "align_stack.h"
+#include "log_rules.h"
+
+constexpr static auto LCURRENT = LALASS;
+
+using namespace uncrustify;
+
+
+Chunk *align_assign(Chunk *first, size_t span, size_t thresh, size_t *p_nl_count)
+{
+ LOG_FUNC_ENTRY();
+
+ if (first->IsNullChunk())
+ {
+ // coveralls will complain here. There are no example for that.
+ // see https://en.wikipedia.org/wiki/Robustness_principle
+ return(Chunk::NullChunkPtr);
+ }
+ size_t my_level = first->GetLevel();
+
+ char copy[1000];
+
+ LOG_FMT(LALASS, "%s(%d): [my_level is %zu]: start checking with '%s', on orig line %zu, span is %zu, thresh is %zu\n",
+ __func__, __LINE__, my_level, first->ElidedText(copy), first->GetOrigLine(), span, thresh);
+
+ // If we are aligning on a tabstop, we shouldn't right-align
+ AlignStack as; // regular assigns
+
+ as.Start(span, thresh);
+ log_rule_B("align_on_tabstop");
+ as.m_right_align = !options::align_on_tabstop();
+
+ AlignStack vdas; // variable def assigns
+
+ vdas.Start(span, thresh);
+ vdas.m_right_align = as.m_right_align;
+
+ std::deque<AlignStack> fcnDefault(1);
+
+ fcnDefault.back().Start(span, thresh);
+ fcnDefault.back().m_right_align = as.m_right_align;
+
+ AlignStack fcnProto;
+
+ fcnProto.Start(span, thresh);
+ fcnProto.m_right_align = as.m_right_align;
+
+ size_t var_def_cnt = 0;
+ size_t equ_count = 0;
+ size_t nl_count = 0;
+ size_t fcn_idx = 0;
+ size_t tmp;
+ Chunk *pc = first;
+ Chunk *vdas_pc = Chunk::NullChunkPtr;
+
+ while (pc->IsNotNullChunk())
+ {
+ LOG_FMT(LALASS, "%s(%d): orig line is %zu, check pc->Text() is '%s', type is %s, m_parentType is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->ElidedText(copy), get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
+
+ if (nl_count != 0)
+ {
+ if (vdas_pc->IsNotNullChunk())
+ {
+ LOG_FMT(LALASS, "%s(%d): vdas.Add on '%s' on orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, vdas_pc->Text(), vdas_pc->GetOrigLine(), vdas_pc->GetOrigCol());
+ vdas.Add(vdas_pc);
+ vdas_pc = Chunk::NullChunkPtr;
+ }
+
+ if (p_nl_count != nullptr)
+ {
+ *p_nl_count += nl_count;
+ }
+ as.NewLines(nl_count);
+ vdas.NewLines(nl_count);
+ fcnProto.NewLines(nl_count);
+
+ for (auto &fcn : fcnDefault)
+ {
+ fcn.NewLines(nl_count);
+ }
+
+ fcn_idx = 0;
+ nl_count = 0;
+ var_def_cnt = 0;
+ equ_count = 0;
+ }
+
+ // Don't check inside SPAREN, PAREN or SQUARE groups
+ if ( pc->Is(CT_SPAREN_OPEN)
+ // || pc->Is(CT_FPAREN_OPEN) Issue #1340
+ || pc->Is(CT_SQUARE_OPEN)
+ || pc->Is(CT_PAREN_OPEN))
+ {
+ LOG_FMT(LALASS, "%s(%d): Don't check inside SPAREN, PAREN or SQUARE groups, type is %s\n",
+ __func__, __LINE__, get_token_name(pc->GetType()));
+ tmp = pc->GetOrigLine();
+ pc = pc->GetClosingParen();
+
+ if (pc->IsNotNullChunk())
+ {
+ nl_count = pc->GetOrigLine() - tmp;
+ }
+ continue;
+ }
+
+ // Recurse if a brace set is found
+ if ( ( pc->Is(CT_BRACE_OPEN)
+ || pc->Is(CT_VBRACE_OPEN))
+ && !(pc->GetParentType() == CT_BRACED_INIT_LIST))
+ {
+ size_t myspan;
+ size_t mythresh;
+
+ if (pc->GetParentType() == CT_ENUM)
+ {
+ log_rule_B("align_enum_equ_span");
+ myspan = options::align_enum_equ_span();
+ log_rule_B("align_enum_equ_thresh");
+ mythresh = options::align_enum_equ_thresh();
+ }
+ else
+ {
+ log_rule_B("align_assign_span");
+ myspan = options::align_assign_span();
+ log_rule_B("align_assign_thresh");
+ mythresh = options::align_assign_thresh();
+ }
+ pc = align_assign(pc->GetNext(), myspan, mythresh, &nl_count);
+ continue;
+ }
+
+ // Done with this brace set?
+ if ( ( pc->Is(CT_BRACE_CLOSE)
+ || pc->Is(CT_VBRACE_CLOSE))
+ && !(pc->GetParentType() == CT_BRACED_INIT_LIST))
+ {
+ pc = pc->GetNext();
+ break;
+ }
+
+ if (pc->IsNewline())
+ {
+ nl_count = pc->GetNlCount();
+ }
+ else if ( pc->TestFlags(PCF_VAR_DEF)
+ && !pc->TestFlags(PCF_IN_CONST_ARGS) // Issue #1717
+ && !pc->TestFlags(PCF_IN_FCN_DEF) // Issue #1717
+ && !pc->TestFlags(PCF_IN_FCN_CALL)) // Issue #1717
+ {
+ // produces much more log output. Use it only debugging purpose
+ //LOG_FMT(LALASS, "%s(%d): log_pcf_flags pc->GetFlags():\n ", __func__, __LINE__);
+ //log_pcf_flags(LALASS, pc->GetFlags());
+ var_def_cnt++;
+ }
+ else if ( var_def_cnt > 1
+ && !options::align_assign_on_multi_var_defs())
+ {
+ // we hit the second variable def and align was not requested - don't look for assigns, don't align
+ LOG_FMT(LALASS, "%s(%d): multiple var defs found and alignment was not requested\n",
+ __func__, __LINE__);
+ vdas_pc = Chunk::NullChunkPtr;
+ }
+ else if ( equ_count == 0 // indent only if first '=' in line
+ && !pc->TestFlags(PCF_IN_TEMPLATE) // and it is not inside a template #999
+ && ( pc->Is(CT_ASSIGN)
+ || pc->Is(CT_ASSIGN_DEFAULT_ARG)
+ || pc->Is(CT_ASSIGN_FUNC_PROTO)))
+ {
+ if (pc->Is(CT_ASSIGN)) // Issue #2236
+ {
+ equ_count++;
+ }
+ LOG_FMT(LALASS, "%s(%d): align_assign_decl_func() is %d\n",
+ __func__, __LINE__, options::align_assign_decl_func());
+ // produces much more log output. Use it only debugging purpose
+ //LOG_FMT(LALASS, "%s(%d): log_pcf_flags pc->GetFlags(): ", __func__, __LINE__);
+ //log_pcf_flags(LALASS, pc->GetFlags());
+
+ log_rule_B("align_assign_decl_func");
+
+ if ( options::align_assign_decl_func() == 0 // Align with other assignments (default)
+ && ( pc->Is(CT_ASSIGN_DEFAULT_ARG) // Foo( int bar = 777 );
+ || pc->Is(CT_ASSIGN_FUNC_PROTO))) // Foo( const Foo & ) = delete;
+ {
+ LOG_FMT(LALASS, "%s(%d): fcnDefault[%zu].Add on '%s' on orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, fcn_idx, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+
+ if (++fcn_idx == fcnDefault.size())
+ {
+ fcnDefault.emplace_back();
+ fcnDefault.back().Start(span, thresh);
+ fcnDefault.back().m_right_align = as.m_right_align;
+ }
+ fcnDefault[fcn_idx].Add(pc);
+ }
+ else if (options::align_assign_decl_func() == 1) // Align with each other
+ {
+ log_rule_B("align_assign_decl_func");
+
+ if (pc->Is(CT_ASSIGN_DEFAULT_ARG)) // Foo( int bar = 777 );
+ {
+ LOG_FMT(LALASS, "%s(%d): default: fcnDefault[%zu].Add on '%s' on orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, fcn_idx, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+
+ if (++fcn_idx == fcnDefault.size())
+ {
+ fcnDefault.emplace_back();
+ fcnDefault.back().Start(span, thresh);
+ fcnDefault.back().m_right_align = as.m_right_align;
+ }
+ fcnDefault[fcn_idx].Add(pc);
+ }
+ else if (pc->Is(CT_ASSIGN_FUNC_PROTO)) // Foo( const Foo & ) = delete;
+ {
+ LOG_FMT(LALASS, "%s(%d): proto: fcnProto.Add on '%s' on orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ fcnProto.Add(pc);
+ }
+ else if (pc->Is(CT_ASSIGN)) // Issue #2197
+ {
+ vdas_pc = pc;
+ }
+ }
+ else if ( options::align_assign_decl_func() == 2 // Don't align
+ && ( pc->Is(CT_ASSIGN_DEFAULT_ARG) // Foo( int bar = 777 );
+ || pc->Is(CT_ASSIGN_FUNC_PROTO))) // Foo( const Foo & ) = delete;
+ {
+ log_rule_B("align_assign_decl_func");
+ LOG_FMT(LALASS, "%s(%d): Don't align\n", // Issue #2236
+ __func__, __LINE__);
+ }
+ else if (var_def_cnt != 0)
+ {
+ vdas_pc = pc;
+ }
+ else
+ {
+ if (pc->Is(CT_ASSIGN))
+ {
+ LOG_FMT(LALASS, "%s(%d): as.Add on '%s' on orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ as.Add(pc);
+ }
+ }
+ }
+ pc = pc->GetNext();
+ }
+
+ if (vdas_pc->IsNotNullChunk())
+ {
+ LOG_FMT(LALASS, "%s(%d): vdas.Add on '%s' on orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, vdas_pc->Text(), vdas_pc->GetOrigLine(), vdas_pc->GetOrigCol());
+ vdas.Add(vdas_pc);
+ vdas_pc = Chunk::NullChunkPtr;
+ }
+ as.End();
+ vdas.End();
+
+ for (auto &fcn : fcnDefault)
+ {
+ fcn.End();
+ }
+
+ fcnProto.End();
+
+ if (pc->IsNotNullChunk())
+ {
+ LOG_FMT(LALASS, "%s(%d): done on '%s' on orig line %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine());
+ }
+ else
+ {
+ LOG_FMT(LALASS, "%s(%d): done on NULL\n", __func__, __LINE__);
+ }
+ return(pc);
+} // align_assign
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_assign.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_assign.h
index 8a23d0d5..8a23d0d5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_assign.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_assign.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_braced_init_list.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_braced_init_list.cpp
new file mode 100644
index 00000000..8071a3ce
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_braced_init_list.cpp
@@ -0,0 +1,165 @@
+/**
+ * @file align_braced_init_list.cpp
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#include "align_braced_init_list.h"
+
+#include "align_stack.h"
+#include "log_rules.h"
+
+constexpr static auto LCURRENT = LALASS;
+
+using namespace uncrustify;
+
+
+Chunk *align_braced_init_list(Chunk *first, size_t span, size_t thresh, size_t *p_nl_count)
+{
+ LOG_FUNC_ENTRY();
+
+ if (first->IsNullChunk())
+ {
+ // coveralls will complain here. There are no example for that.
+ // see https://en.wikipedia.org/wiki/Robustness_principle
+ return(Chunk::NullChunkPtr);
+ }
+ size_t my_level = first->GetLevel();
+
+ char copy[1000];
+
+ LOG_FMT(LALASS, "%s(%d): [my_level is %zu]: start checking with '%s', on orig line %zu, span is %zu, thresh is %zu\n",
+ __func__, __LINE__, my_level, first->ElidedText(copy), first->GetOrigLine(), span, thresh);
+
+ // If we are aligning on a tabstop, we shouldn't right-align
+
+ AlignStack vdas; // variable def assigns
+
+ vdas.Start(span, thresh);
+ vdas.m_right_align = !options::align_on_tabstop();
+
+ size_t var_def_cnt = 0;
+ size_t equ_count = 0;
+ size_t tmp;
+ Chunk *pc = first;
+
+ while (pc->IsNotNullChunk())
+ {
+ LOG_FMT(LALASS, "%s(%d): orig line is %zu, check pc->Text() is '%s', type is %s, parent type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->ElidedText(copy), get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
+
+ // Don't check inside SPAREN, PAREN or SQUARE groups
+ if ( pc->Is(CT_SPAREN_OPEN)
+ || pc->Is(CT_SQUARE_OPEN)
+ || pc->Is(CT_PAREN_OPEN))
+ {
+ LOG_FMT(LALASS, "%s(%d)OK: Don't check inside SPAREN, PAREN or SQUARE groups, type is %s\n",
+ __func__, __LINE__, get_token_name(pc->GetType()));
+ tmp = pc->GetOrigLine();
+ pc = pc->GetClosingParen();
+
+ if (pc->IsNotNullChunk())
+ {
+ vdas.NewLines(pc->GetOrigLine() - tmp);
+ }
+ continue;
+ }
+
+ // Recurse if a brace set is found
+ if ( pc->Is(CT_BRACE_OPEN)
+ && !(pc->GetParentType() == CT_BRACED_INIT_LIST))
+ {
+ size_t myspan;
+ size_t mythresh;
+
+ size_t sub_nl_count = 0;
+
+ log_rule_B("align_braced_init_list_span");
+ myspan = options::align_braced_init_list_span();
+ log_rule_B("align_braced_init_list_thresh");
+ mythresh = options::align_braced_init_list_thresh();
+ pc = align_braced_init_list(pc->GetNextNcNnl(), myspan, mythresh, &sub_nl_count);
+
+ if (sub_nl_count > 0)
+ {
+ vdas.NewLines(sub_nl_count);
+
+ if (p_nl_count != nullptr)
+ {
+ *p_nl_count += sub_nl_count;
+ }
+ }
+ continue;
+ }
+
+ // Done with this brace set?
+ if ( ( pc->Is(CT_BRACE_CLOSE)
+ || pc->Is(CT_VBRACE_CLOSE))
+ && !(pc->GetParentType() == CT_BRACED_INIT_LIST))
+ {
+ pc = pc->GetNext();
+ break;
+ }
+
+ if (pc->IsNewline())
+ {
+ vdas.NewLines(pc->GetNlCount());
+
+ if (p_nl_count != nullptr)
+ {
+ *p_nl_count += pc->GetNlCount();
+ }
+ var_def_cnt = 0;
+ equ_count = 0;
+ }
+ else if ( pc->TestFlags(PCF_VAR_DEF)
+ && !pc->TestFlags(PCF_IN_CONST_ARGS) // Issue #1717
+ && !pc->TestFlags(PCF_IN_FCN_DEF) // Issue #1717
+ && !pc->TestFlags(PCF_IN_FCN_CALL)) // Issue #1717
+ {
+ // produces much more log output. Use it only debugging purpose
+ //LOG_FMT(LALASS, "%s(%d): log_pcf_flags pc->GetFlags():\n ", __func__, __LINE__);
+ //log_pcf_flags(LALASS, pc->GetFlags());
+ var_def_cnt++;
+ }
+ else if (var_def_cnt > 1)
+ {
+ // we hit the second variable def - don't look, don't align
+ vdas.Reset();
+ }
+ else if ( equ_count == 0
+ && !pc->TestFlags(PCF_IN_TEMPLATE)
+ && pc->Is(CT_BRACE_OPEN)
+ && (pc->GetParentType() == CT_BRACED_INIT_LIST))
+
+ {
+ equ_count++;
+ LOG_FMT(LALASS, "%s(%d)OK: align_braced_init_list_span() is %d\n",
+ __func__, __LINE__, options::align_braced_init_list_span());
+ // produces much more log output. Use it only debugging purpose
+ //LOG_FMT(LALASS, "%s(%d): log_pcf_flags pc->GetFlags(): ", __func__, __LINE__);
+ //log_pcf_flags(LALASS, pc->GetFlags());
+
+ if (var_def_cnt != 0)
+ {
+ LOG_FMT(LALASS, "%s(%d)OK: vdas.Add on '%s' on orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ vdas.Add(pc);
+ }
+ }
+ pc = pc->GetNext();
+ }
+ vdas.End();
+
+ if (pc->IsNotNullChunk())
+ {
+ LOG_FMT(LALASS, "%s(%d): done on '%s' on orig line %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine());
+ }
+ else
+ {
+ LOG_FMT(LALASS, "%s(%d): done on NULL\n", __func__, __LINE__);
+ }
+ return(pc);
+} // align_braced_init_list
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_braced_init_list.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_braced_init_list.h
index e29868e0..e29868e0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_braced_init_list.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_braced_init_list.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_eigen_comma_init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_eigen_comma_init.cpp
index d096a9a7..d096a9a7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_eigen_comma_init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_eigen_comma_init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_eigen_comma_init.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_eigen_comma_init.h
index 6647f030..6647f030 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_eigen_comma_init.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_eigen_comma_init.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_func_params.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_func_params.cpp
index 50e04d78..50e04d78 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_func_params.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_func_params.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_func_params.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_func_params.h
index 4beb8cbf..4beb8cbf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_func_params.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_func_params.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_func_proto.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_func_proto.cpp
new file mode 100644
index 00000000..ede4c70d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_func_proto.cpp
@@ -0,0 +1,230 @@
+/**
+ * @file align_func_proto.cpp
+ *
+ * @author Guy Maurel
+ * split from align.cpp
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "align_func_proto.h"
+
+#include "align_stack.h"
+#include "align_tools.h"
+#include "log_rules.h"
+
+#include <algorithm> // to get max
+
+constexpr static auto LCURRENT = LALPROTO;
+
+using namespace uncrustify;
+
+
+void align_func_proto(size_t span)
+{
+ LOG_FUNC_ENTRY();
+
+ size_t myspan = span;
+ size_t mythresh = 0;
+
+ log_rule_B("align_func_proto_gap");
+ size_t mygap = options::align_func_proto_gap();
+
+ log_rule_B("align_func_proto_thresh");
+ mythresh = options::align_func_proto_thresh();
+
+ // Issue #2771
+ // we align token-1 and token-2 if:
+ // token-1->GetLevel() == token-2->GetLevel()
+ // and
+ // token-1->GetBraceLevel() == token-2->GetBraceLevel()
+ // we don't check if token-1 and token-2 are in the same block
+
+ log_rule_B("align_func_proto_star_style");
+ size_t mystar_style = options::align_func_proto_star_style();
+
+ log_rule_B("align_func_proto_amp_style");
+ size_t myamp_style = options::align_func_proto_amp_style();
+
+
+ size_t num_of_column = 1;
+ size_t num_of_row = 1;
+ AlignStack *stack_init_value = nullptr;
+
+
+ // Issue #2984
+ vector<vector<AlignStack *> > many_as;
+ // Issue #2771
+ vector<vector<AlignStack *> > many_as_brace;
+
+ // init the vector ...
+ many_as.resize(num_of_column, vector<AlignStack *>(num_of_row, stack_init_value));
+ many_as_brace.resize(num_of_column, vector<AlignStack *>(num_of_row, stack_init_value));
+
+ log_rule_B("align_single_line_brace_gap");
+ size_t mybr_gap = options::align_single_line_brace_gap();
+
+
+ bool look_bro = false;
+ Chunk *toadd;
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ char copy[1000];
+ LOG_FMT(LAS, "%s(%d): orig line %zu, orig col %zu, text '%s', type %s, level %zu, brace level %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy),
+ get_token_name(pc->GetType()), pc->GetLevel(), pc->GetBraceLevel());
+
+ // make the vector larger if necessary
+ if ( pc->GetLevel() >= num_of_column // Issue #2960
+ || pc->GetBraceLevel() >= num_of_row)
+ {
+ num_of_column = pc->GetLevel() + 1;
+ num_of_row = pc->GetBraceLevel() + 1;
+
+ many_as.resize(num_of_column);
+ many_as_brace.resize(num_of_column);
+
+ for (size_t i = 0; i < num_of_column; ++i)
+ {
+ many_as[i].resize(num_of_row);
+ many_as_brace[i].resize(num_of_row);
+ }
+ }
+
+ if ( pc->IsNewline()
+ && ( !options::align_func_proto_span_ignore_cont_lines()
+ || !pc->GetNextNnl()->TestFlags(PCF_CONT_LINE)) // Issue #4131
+ && !pc->TestFlags(PCF_IN_FCN_CALL)) // Issue #2831
+ {
+ look_bro = false;
+ AlignStack *stack_at_l_bl = many_as.at(pc->GetLevel()).at(pc->GetBraceLevel());
+
+ if (stack_at_l_bl == nullptr)
+ {
+ // get a Stack
+ stack_at_l_bl = new AlignStack();
+ // start it
+ stack_at_l_bl->Start(myspan, mythresh);
+ stack_at_l_bl->m_gap = mygap;
+ stack_at_l_bl->m_star_style = static_cast<AlignStack::StarStyle>(mystar_style);
+ stack_at_l_bl->m_amp_style = static_cast<AlignStack::StarStyle>(myamp_style);
+ // store
+ many_as.at(pc->GetLevel()).at(pc->GetBraceLevel()) = stack_at_l_bl;
+ }
+ stack_at_l_bl->Debug();
+
+ for (size_t idx = 0; idx < num_of_column; idx++)
+ {
+ for (size_t idx_brace = 0; idx_brace < num_of_row; idx_brace++)
+ {
+ stack_at_l_bl = many_as.at(idx).at(idx_brace);
+
+ if (stack_at_l_bl != nullptr)
+ {
+ stack_at_l_bl->NewLines(pc->GetNlCount());
+ }
+ }
+ }
+
+ AlignStack *stack_at_l_bl_brace = many_as_brace.at(pc->GetLevel()).at(pc->GetBraceLevel());
+
+ if (stack_at_l_bl_brace == nullptr)
+ {
+ // get a Stack
+ stack_at_l_bl_brace = new AlignStack();
+ // start it
+ stack_at_l_bl_brace->Start(myspan, mythresh);
+ stack_at_l_bl_brace->m_gap = mybr_gap;
+ // store
+ many_as_brace.at(pc->GetLevel()).at(pc->GetBraceLevel()) = stack_at_l_bl_brace;
+ }
+ stack_at_l_bl_brace->Debug();
+ stack_at_l_bl_brace->NewLines(pc->GetNlCount());
+ }
+ else if ( pc->Is(CT_FUNC_PROTO)
+ || ( pc->Is(CT_FUNC_DEF)
+ && options::align_single_line_func()))
+ {
+ log_rule_B("align_single_line_func");
+ log_rule_B("align_on_operator");
+
+ if ( pc->GetParentType() == CT_OPERATOR
+ && options::align_on_operator())
+ {
+ toadd = pc->GetPrevNcNnl();
+ }
+ else
+ {
+ toadd = pc;
+ }
+ Chunk *tmp = step_back_over_member(toadd);
+ LOG_FMT(LAS, "%s(%d): 'tmp' text is '%s', orig line is %zu, orig col is %zu, level is %zu, brace level is %zu\n",
+ __func__, __LINE__, tmp->Text(), tmp->GetOrigLine(), tmp->GetOrigCol(),
+ tmp->GetLevel(), tmp->GetBraceLevel());
+ // test the Stack
+ AlignStack *stack_at_l_bl = many_as.at(pc->GetLevel()).at(pc->GetBraceLevel());
+
+ if (stack_at_l_bl == nullptr)
+ {
+ // get a Stack
+ stack_at_l_bl = new AlignStack();
+ // start it
+ stack_at_l_bl->Start(myspan, mythresh);
+ stack_at_l_bl->m_gap = mygap;
+ stack_at_l_bl->m_star_style = static_cast<AlignStack::StarStyle>(mystar_style);
+ stack_at_l_bl->m_amp_style = static_cast<AlignStack::StarStyle>(myamp_style);
+ // store
+ many_as.at(pc->GetLevel()).at(pc->GetBraceLevel()) = stack_at_l_bl;
+ }
+ stack_at_l_bl->Add(tmp);
+ stack_at_l_bl->Debug();
+ log_rule_B("align_single_line_brace");
+ look_bro = (pc->Is(CT_FUNC_DEF))
+ && options::align_single_line_brace();
+ }
+ else if ( look_bro
+ && pc->Is(CT_BRACE_OPEN)
+ && pc->TestFlags(PCF_ONE_LINER))
+ {
+ AlignStack *stack_at_l_bl_brace = many_as_brace.at(pc->GetLevel()).at(pc->GetBraceLevel());
+
+ if (stack_at_l_bl_brace == nullptr)
+ {
+ stack_at_l_bl_brace = new AlignStack();
+ stack_at_l_bl_brace->Start(myspan, mythresh);
+ stack_at_l_bl_brace->m_gap = mybr_gap;
+ many_as_brace.at(pc->GetLevel()).at(pc->GetBraceLevel()) = stack_at_l_bl_brace;
+ }
+ stack_at_l_bl_brace->Add(pc);
+ stack_at_l_bl_brace->Debug();
+ look_bro = false;
+ }
+ }
+
+ LOG_FMT(LAS, "%s(%d): as\n", __func__, __LINE__);
+
+ // purge
+ for (size_t idx = 0; idx < num_of_column; idx++)
+ {
+ for (size_t idx_brace = 0; idx_brace < num_of_row; idx_brace++)
+ {
+ AlignStack *stack_at_l_bl = many_as.at(idx).at(idx_brace);
+
+ if (stack_at_l_bl != nullptr)
+ {
+ stack_at_l_bl->End();
+ delete stack_at_l_bl;
+ stack_at_l_bl = nullptr;
+ }
+ AlignStack *stack_at_l_bl_brace = many_as_brace.at(idx).at(idx_brace);
+
+ if (stack_at_l_bl_brace != nullptr)
+ {
+ stack_at_l_bl_brace->End();
+ delete stack_at_l_bl_brace;
+ stack_at_l_bl_brace = nullptr;
+ }
+ }
+ }
+} // align_func_proto
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_func_proto.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_func_proto.h
index 811020e0..811020e0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_func_proto.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_func_proto.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_init_brace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_init_brace.cpp
new file mode 100644
index 00000000..3d72af5f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_init_brace.cpp
@@ -0,0 +1,205 @@
+/**
+ * @file align_init_brace.cpp
+ *
+ * @author Guy Maurel
+ * split from align.cpp
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "align_init_brace.h"
+
+#include "align_log_al.h"
+#include "align_tab_column.h"
+#include "align_tools.h"
+#include "indent.h"
+#include "log_rules.h"
+
+constexpr static auto LCURRENT = LALBR;
+
+using namespace uncrustify;
+
+
+void align_init_brace(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *num_token = Chunk::NullChunkPtr;
+
+ cpd.al_cnt = 0;
+ cpd.al_c99_array = false;
+
+ LOG_FMT(LALBR, "%s(%d): start @ orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol());
+
+ Chunk *pc = start->GetNextNcNnl();
+ Chunk *pcSingle = scan_ib_line(pc);
+
+ if ( pcSingle->IsNullChunk()
+ || ( pcSingle->Is(CT_BRACE_CLOSE)
+ && pcSingle->GetParentType() == CT_ASSIGN))
+ {
+ // single line - nothing to do
+ LOG_FMT(LALBR, "%s(%d): single line - nothing to do\n", __func__, __LINE__);
+ return;
+ }
+ LOG_FMT(LALBR, "%s(%d): is not a single line\n", __func__, __LINE__);
+
+ do
+ {
+ pc = scan_ib_line(pc);
+
+ // debug dump the current frame
+ LOG_FMT(LALBR, "%s(%d): debug dump after, orig line is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine());
+ align_log_al(LALBR, pc->GetOrigLine());
+
+ while (pc->IsNewline())
+ {
+ pc = pc->GetNext();
+ }
+ } while ( pc->IsNotNullChunk()
+ && pc->GetLevel() > start->GetLevel());
+
+ // debug dump the current frame
+ align_log_al(LALBR, start->GetOrigLine());
+
+ log_rule_B("align_on_tabstop");
+
+ if ( options::align_on_tabstop()
+ && cpd.al_cnt >= 1
+ && (cpd.al[0].type == CT_ASSIGN))
+ {
+ cpd.al[0].col = align_tab_column(cpd.al[0].col);
+ }
+ pc = start->GetNext();
+ size_t idx = 0;
+
+ do
+ {
+ Chunk *tmp;
+
+ if ( idx == 0
+ && ((tmp = skip_c99_array(pc))->IsNotNullChunk()))
+ {
+ pc = tmp;
+
+ LOG_FMT(LALBR, " -%zu- skipped '[] =' to %s\n",
+ pc->GetOrigLine(), get_token_name(pc->GetType()));
+ continue;
+ }
+ Chunk *next = pc;
+
+ if (idx < cpd.al_cnt)
+ {
+ LOG_FMT(LALBR, "%s(%d): (%zu) check %s vs %s -- ??\n",
+ __func__, __LINE__, idx, get_token_name(pc->GetType()), get_token_name(cpd.al[idx].type));
+
+ if (pc->Is(cpd.al[idx].type))
+ {
+ if ( idx == 0
+ && cpd.al_c99_array)
+ {
+ Chunk *prev = pc->GetPrev();
+
+ if (prev->IsNewline())
+ {
+ pc->SetFlagBits(PCF_DONT_INDENT);
+ }
+ }
+ LOG_FMT(LALBR, "%s(%d): cpd.al[%zu].col is %zu\n",
+ __func__, __LINE__, idx, cpd.al[idx].col);
+ LOG_FMT(LALBR, "%s(%d): (idx is %zu) check %s vs %s -- [%s] to col %zu\n",
+ __func__, __LINE__,
+ idx, get_token_name(pc->GetType()), get_token_name(cpd.al[idx].type), pc->Text(), cpd.al[idx].col);
+
+ if (num_token->IsNotNullChunk())
+ {
+ int col_diff = pc->GetColumn() - num_token->GetColumn();
+
+ reindent_line(num_token, cpd.al[idx].col - col_diff);
+ //LOG_FMT(LSYS, "-= %zu =- NUM indent [%s] col=%d diff=%d\n",
+ // num_token->GetOrigLine(),
+ // num_token->Text(), cpd.al[idx - 1].col, col_diff);
+
+ num_token->SetFlagBits(PCF_WAS_ALIGNED);
+ num_token = Chunk::NullChunkPtr;
+ }
+
+ // Comma's need to 'fall back' to the previous token
+ if (pc->Is(CT_COMMA))
+ {
+ next = pc->GetNext();
+
+ if (!next->IsNewline())
+ {
+ //LOG_FMT(LSYS, "-= %zu =- indent [%s] col=%d len=%d\n",
+ // next->GetOrigLine(),
+ // next->Text(), cpd.al[idx].col, cpd.al[idx].len);
+
+ log_rule_B("align_number_right");
+
+ if ( (idx < (cpd.al_cnt - 1))
+ && options::align_number_right()
+ && ( next->Is(CT_NUMBER_FP)
+ || next->Is(CT_NUMBER)
+ || next->Is(CT_POS)
+ || next->Is(CT_NEG)))
+ {
+ // Need to wait until the next match to indent numbers
+ num_token = next;
+ }
+ else if (idx < (cpd.al_cnt - 1))
+ {
+ LOG_FMT(LALBR, "%s(%d): idx is %zu, al_cnt is %zu, cpd.al[%zu].col is %zu, cpd.al[%zu].len is %zu\n",
+ __func__, __LINE__, idx, cpd.al_cnt, idx, cpd.al[idx].col, idx, cpd.al[idx].len);
+ reindent_line(next, cpd.al[idx].col + cpd.al[idx].len);
+ next->SetFlagBits(PCF_WAS_ALIGNED);
+ }
+ }
+ }
+ else
+ {
+ // first item on the line
+ LOG_FMT(LALBR, "%s(%d): idx is %zu, cpd.al[%zu].col is %zu\n",
+ __func__, __LINE__, idx, idx, cpd.al[idx].col);
+ reindent_line(pc, cpd.al[idx].col);
+ pc->SetFlagBits(PCF_WAS_ALIGNED);
+
+ // see if we need to right-align a number
+ log_rule_B("align_number_right");
+
+ if ( (idx < (cpd.al_cnt - 1))
+ && options::align_number_right())
+ {
+ next = pc->GetNext();
+
+ if ( !next->IsNewline()
+ && ( next->Is(CT_NUMBER_FP)
+ || next->Is(CT_NUMBER)
+ || next->Is(CT_POS)
+ || next->Is(CT_NEG)))
+ {
+ // Need to wait until the next match to indent numbers
+ num_token = next;
+ }
+ }
+ }
+ idx++;
+ }
+ else
+ {
+ LOG_FMT(LALBR, "%s(%d): (%zu) check %s vs %s -- no match\n",
+ __func__, __LINE__, idx, get_token_name(pc->GetType()), get_token_name(cpd.al[idx].type));
+ }
+ }
+
+ if ( pc->IsNewline()
+ || next->IsNewline())
+ {
+ idx = 0;
+ }
+ pc = pc->GetNext();
+ } while ( pc->IsNotNullChunk()
+ && pc->GetLevel() > start->GetLevel());
+} // align_init_brace
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_init_brace.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_init_brace.h
index c749eb54..c749eb54 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_init_brace.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_init_brace.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_left_shift.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_left_shift.cpp
index 6ac2175c..6ac2175c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_left_shift.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_left_shift.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_left_shift.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_left_shift.h
index d02155b0..d02155b0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_left_shift.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_left_shift.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_log_al.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_log_al.cpp
index 802b0280..802b0280 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_log_al.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_log_al.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_log_al.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_log_al.h
index 8cb2ece8..8cb2ece8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_log_al.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_log_al.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_nl_cont.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_nl_cont.cpp
new file mode 100644
index 00000000..8019fddf
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_nl_cont.cpp
@@ -0,0 +1,85 @@
+/**
+ * @file align_nl_cont.cpp
+ *
+ * @author Guy Maurel
+ * split from align.cpp
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "align_nl_cont.h"
+
+#include "align_add.h"
+#include "uncrustify.h"
+
+#include <algorithm> // to get max
+#include <limits>
+
+
+using namespace std;
+using namespace uncrustify;
+
+
+Chunk *align_nl_cont(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LALNLC, "%s(%d): start on [%s] on line %zu\n",
+ __func__, __LINE__, get_token_name(start->GetType()), start->GetOrigLine());
+
+ // Decide which column to align to
+ ChunkStack cs;
+ size_t align_col = 0;
+ size_t min_col = numeric_limits<size_t>::max();
+ size_t max_col = 0;
+ Chunk *pc = start;
+
+ while ( pc->IsNotNullChunk()
+ && pc->IsNot(CT_NEWLINE)
+ && pc->IsNot(CT_COMMENT_MULTI))
+ {
+ if (pc->Is(CT_NL_CONT))
+ {
+ align_add(cs, pc, align_col);
+ min_col = min(min_col, pc->GetColumn());
+ max_col = max(max_col, pc->GetColumn());
+ }
+ pc = pc->GetNext();
+ }
+ align_col = align_col - 1 + options::align_nl_cont_spaces();
+
+ if (options::align_nl_cont() == 2) // align with leftmost backslash
+ {
+ align_col = max(align_col, min_col);
+ }
+ else if (options::align_nl_cont() == 3) // align with rightmost backslash
+ {
+ align_col = max(align_col, max_col);
+ }
+ // NL_CONT is always the last thing on a line
+ Chunk *tmp;
+
+ while ((tmp = cs.Pop_Back())->IsNotNullChunk())
+ {
+ tmp->SetFlagBits(PCF_WAS_ALIGNED);
+ tmp->SetColumn(align_col);
+ }
+ return(pc);
+} // align_nl_cont
+
+
+void align_backslash_newline()
+{
+ LOG_FUNC_ENTRY();
+ Chunk *pc = Chunk::GetHead();
+
+ while (pc->IsNotNullChunk())
+ {
+ if (pc->IsNot(CT_NL_CONT))
+ {
+ pc = pc->GetNextType(CT_NL_CONT);
+ continue;
+ }
+ pc = align_nl_cont(pc);
+ }
+} // align_backslash_newline
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_nl_cont.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_nl_cont.h
new file mode 100644
index 00000000..fb2db581
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_nl_cont.h
@@ -0,0 +1,33 @@
+/**
+ * @file align_nl_cont.h
+ *
+ * @author Guy Maurel
+ * split from align.cpp
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef ALIGN_NL_COUNT_H_INCLUDED
+#define ALIGN_NL_COUNT_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+#include "chunk.h"
+
+/**
+ * For a series of lines ending in backslash-newline, align them.
+ * The series ends when a newline or multi-line C comment is encountered.
+ *
+ * @param start Start point
+ *
+ * @return pointer the last item looked at (null chunk/newline/comment)
+ */
+Chunk *align_nl_cont(Chunk *start);
+
+/**
+ * Aligns all backslash-newline combos in the file.
+ * This should be done LAST.
+ */
+void align_backslash_newline();
+
+#endif /* ALIGN_NL_COUNT_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_decl_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_decl_colon.cpp
index 35b4b58e..35b4b58e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_decl_colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_decl_colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_decl_colon.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_decl_colon.h
index b44b11ee..b44b11ee 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_decl_colon.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_decl_colon.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_msg_colons.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_msg_colons.cpp
new file mode 100644
index 00000000..85b509d5
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_msg_colons.cpp
@@ -0,0 +1,182 @@
+/**
+ * @file align_oc_msg_colons.cpp
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#include "align_oc_msg_colons.h"
+
+#include "align_stack.h"
+#include "log_rules.h"
+
+constexpr static auto LCURRENT = LOCMSG;
+
+using namespace uncrustify;
+
+
+void align_oc_msg_colon(Chunk *so)
+{
+ LOG_FUNC_ENTRY();
+
+ AlignStack nas; // for the parameter tag
+
+ nas.Start(1);
+ nas.Reset();
+ log_rule_B("align_on_tabstop");
+ nas.m_right_align = !options::align_on_tabstop();
+
+ AlignStack cas; // for the colons
+
+ log_rule_B("align_oc_msg_colon_span");
+ size_t span = options::align_oc_msg_colon_span();
+
+ cas.Start(span);
+
+ size_t level = so->GetLevel();
+ Chunk *pc = so->GetNextNcNnl(E_Scope::PREPROC);
+
+ bool did_line = false;
+ bool has_colon = false;
+ size_t lcnt = 0; // line count with no colon for span
+ bool first_line = true;
+
+ while ( pc->IsNotNullChunk()
+ && pc->GetLevel() > level)
+ {
+ if (pc->GetLevel() > (level + 1))
+ {
+ // do nothing
+ }
+ else if (pc->IsNewline())
+ {
+ if (!has_colon)
+ {
+ ++lcnt;
+ }
+ did_line = false;
+
+ log_rule_B("align_oc_msg_colon_xcode_like");
+
+ if ( options::align_oc_msg_colon_xcode_like()
+ && first_line
+ && !has_colon)
+ {
+ span = 0;
+ }
+ has_colon = !has_colon;
+ first_line = false;
+ }
+ else if ( !did_line
+ && (lcnt < span + 1)
+ && pc->Is(CT_OC_COLON))
+ {
+ has_colon = true;
+ cas.Add(pc);
+ Chunk *tmp = pc->GetPrev();
+
+ if ( tmp->IsNotNullChunk()
+ && ( tmp->Is(CT_OC_MSG_FUNC)
+ || tmp->Is(CT_OC_MSG_NAME)))
+ {
+ nas.Add(tmp);
+ tmp->SetFlagBits(PCF_DONT_INDENT);
+ }
+ did_line = true;
+ }
+ pc = pc->GetNext(E_Scope::PREPROC);
+ }
+ log_rule_B("align_oc_msg_colon_first");
+ nas.m_skip_first = !options::align_oc_msg_colon_first();
+ cas.m_skip_first = !options::align_oc_msg_colon_first();
+
+ // find the longest args that isn't the first one
+ size_t first_len = 0;
+ size_t mlen = 0;
+ Chunk *longest = Chunk::NullChunkPtr;
+
+ size_t len = nas.m_aligned.Len();
+
+ for (size_t idx = 0; idx < len; idx++)
+ {
+ Chunk *tmp = nas.m_aligned.GetChunk(idx);
+
+ if (tmp->IsNotNullChunk())
+ {
+ size_t tlen = tmp->GetStr().size();
+
+ if (tlen > mlen)
+ {
+ mlen = tlen;
+
+ if (idx != 0)
+ {
+ longest = tmp;
+ }
+ }
+
+ if (idx == 0)
+ {
+ first_len = tlen + 1;
+ }
+ }
+ }
+
+ // add spaces before the longest arg
+ log_rule_B("indent_oc_msg_colon");
+ len = options::indent_oc_msg_colon();
+ size_t len_diff = mlen - first_len;
+
+ log_rule_B("indent_columns");
+ size_t indent_size = options::indent_columns();
+
+ // Align with first colon if possible by removing spaces
+ log_rule_B("indent_oc_msg_prioritize_first_colon");
+
+ if ( longest->IsNotNullChunk()
+ && options::indent_oc_msg_prioritize_first_colon()
+ && len_diff > 0
+ && ( (longest->GetColumn() >= len_diff)
+ && (longest->GetColumn() - len_diff) > (longest->GetBraceLevel() * indent_size)))
+ {
+ longest->SetColumn(longest->GetColumn() - len_diff);
+ }
+ else if ( longest->IsNotNullChunk()
+ && len > 0)
+ {
+ Chunk chunk;
+
+ chunk.SetType(CT_SPACE);
+ chunk.SetParentType(CT_NONE);
+ chunk.SetOrigLine(longest->GetOrigLine());
+ chunk.SetOrigCol(longest->GetOrigCol());
+ chunk.SetLevel(longest->GetLevel());
+ chunk.SetBraceLevel(longest->GetBraceLevel());
+ chunk.SetFlags(longest->GetFlags() & PCF_COPY_FLAGS);
+
+ // start at one since we already indent for the '['
+ for (size_t idx = 1; idx < len; idx++)
+ {
+ chunk.Str().append(' ');
+ }
+
+ chunk.CopyAndAddBefore(longest);
+ }
+ nas.End();
+ cas.End();
+} // align_oc_msg_colon
+
+
+void align_oc_msg_colons()
+{
+ LOG_FUNC_ENTRY();
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if ( pc->Is(CT_SQUARE_OPEN)
+ && pc->GetParentType() == CT_OC_MSG)
+ {
+ align_oc_msg_colon(pc);
+ }
+ }
+} // align_oc_msg_colons
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_msg_colons.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_msg_colons.h
index 0bbb7b6b..0bbb7b6b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_msg_colons.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_msg_colons.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_msg_spec.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_msg_spec.cpp
index 88671254..88671254 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_msg_spec.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_msg_spec.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_msg_spec.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_msg_spec.h
index b6500a6e..b6500a6e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_oc_msg_spec.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_oc_msg_spec.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_preprocessor.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_preprocessor.cpp
index 18a853ea..18a853ea 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_preprocessor.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_preprocessor.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_preprocessor.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_preprocessor.h
index 1095c94e..1095c94e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_preprocessor.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_preprocessor.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_same_func_call_params.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_same_func_call_params.cpp
new file mode 100644
index 00000000..d0750ae4
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_same_func_call_params.cpp
@@ -0,0 +1,286 @@
+/**
+ * @file align_same_func_call_params.cpp
+ *
+ * @author Guy Maurel
+ * split from align.cpp
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "align_same_func_call_params.h"
+
+#include "align_stack.h"
+#include "log_rules.h"
+
+constexpr static auto LCURRENT = LASFCP;
+
+using namespace uncrustify;
+
+
+void align_same_func_call_params()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc;
+ Chunk *align_root = Chunk::NullChunkPtr;
+ Chunk *align_cur = Chunk::NullChunkPtr;
+ size_t align_len = 0;
+ size_t span = 3;
+ size_t thresh;
+ Chunk *align_fcn;
+ UncText align_fcn_name;
+ UncText align_root_name;
+ deque<Chunk *> chunks;
+ deque<AlignStack> array_of_AlignStack;
+ AlignStack fcn_as;
+ const char *add_str;
+
+ // Default span is 3 if align_same_func_call_params is true
+ log_rule_B("align_same_func_call_params_span");
+
+ if (options::align_same_func_call_params_span() > 0)
+ {
+ span = options::align_same_func_call_params_span();
+ }
+ log_rule_B("align_same_func_call_params_thresh");
+ thresh = options::align_same_func_call_params_thresh();
+
+ fcn_as.Start(span, thresh);
+ LOG_FMT(LAS, "%s(%d): (3): span is %zu, thresh is %zu\n",
+ __func__, __LINE__, span, thresh);
+
+ for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if (pc->IsNewline()) // for debugging
+ {
+ LOG_FMT(LAS, "%s(%3d): orig line is %zu, <Newline>\n", __func__, __LINE__, pc->GetOrigLine());
+ }
+ else
+ {
+ LOG_FMT(LAS, "%s(%3d): orig line is %zu, orig col is %zu, pc->Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ }
+
+ if (pc->IsNot(CT_FUNC_CALL))
+ {
+ if (pc->IsNewline())
+ {
+ for (auto &as_v : array_of_AlignStack)
+ {
+ as_v.NewLines(pc->GetNlCount());
+ }
+
+ fcn_as.NewLines(pc->GetNlCount());
+ }
+ else if (pc->Is(CT_FUNC_CTOR_VAR)) // Issue #3916
+ {
+ Chunk *open_paren = pc->GetNextType(CT_FPAREN_OPEN, pc->GetLevel());
+ Chunk *close_paren = open_paren->GetClosingParen();
+ LOG_FMT(LAS, "%s(%3d): orig line is %zu, orig col is %zu, pc->Text() '%s', type is %s\n",
+ __func__, __LINE__, open_paren->GetOrigLine(), open_paren->GetOrigCol(), open_paren->Text(), get_token_name(open_paren->GetType()));
+ LOG_FMT(LAS, "%s(%3d): orig line is %zu, orig col is %zu, pc->Text() '%s', type is %s\n",
+ __func__, __LINE__, close_paren->GetOrigLine(), close_paren->GetOrigCol(), close_paren->Text(), get_token_name(close_paren->GetType()));
+ pc = close_paren;
+ }
+ else
+ {
+ // if we drop below the brace level that started it, we are done
+ if ( align_root->IsNotNullChunk()
+ && align_root->GetBraceLevel() > pc->GetBraceLevel())
+ {
+ LOG_FMT(LASFCP, " ++ (drop) Ended with %zu fcns\n", align_len);
+
+ // Flush it all!
+ fcn_as.Flush();
+
+ for (auto &as_v : array_of_AlignStack)
+ {
+ as_v.Flush();
+ }
+
+ align_root = Chunk::NullChunkPtr;
+ }
+ }
+ continue;
+ }
+ // only if (pc->Is(CT_FUNC_CALL))
+ // Only align function calls that are right after a newline
+ Chunk *prev = pc->GetPrev();
+
+ while ( prev->Is(CT_MEMBER)
+ || prev->Is(CT_DC_MEMBER))
+ {
+ Chunk *tprev = prev->GetPrev();
+
+ if (tprev->IsNot(CT_TYPE))
+ {
+ prev = tprev;
+ break;
+ }
+ prev = tprev->GetPrev();
+ }
+
+ if (!prev->IsNewline())
+ {
+ continue;
+ }
+ prev = prev->GetNext();
+ align_fcn = prev;
+ align_fcn_name.clear();
+ LOG_FMT(LASFCP, "%s(%d):\n", __func__, __LINE__);
+
+ while (prev != pc)
+ {
+ align_fcn_name += prev->GetStr();
+ prev = prev->GetNext();
+ }
+ align_fcn_name += pc->GetStr();
+ LOG_FMT(LASFCP, "%s(%3d): Func Call found at orig line is %zu, orig col is %zu, c_str() '%s'\n",
+ __func__, __LINE__, align_fcn->GetOrigLine(),
+ align_fcn->GetOrigCol(),
+ align_fcn_name.c_str());
+
+ add_str = nullptr;
+
+ if (align_root->IsNotNullChunk())
+ {
+ // Issue # 1395
+ // can only align functions on the same brace level
+ // and on the same level
+ LOG_FMT(LASFCP, "%s(%d): align_root is not NullChunk\n", __func__, __LINE__);
+
+ if ( align_root->GetBraceLevel() == pc->GetBraceLevel()
+ && align_root->GetLevel() == pc->GetLevel()
+ && align_fcn_name.equals(align_root_name))
+ {
+ //WITH_STACKID_DEBUG;
+ fcn_as.Add(pc);
+ align_cur->AlignData().next = pc;
+ align_cur = pc;
+ align_len++;
+ add_str = " Add";
+ }
+ else
+ {
+ LOG_FMT(LASFCP, " ++ Ended with %zu fcns\n", align_len);
+
+ // Flush it all!
+ fcn_as.Flush();
+
+ for (auto &as_v : array_of_AlignStack)
+ {
+ as_v.Flush();
+ }
+
+ align_root = Chunk::NullChunkPtr;
+ }
+ }
+ LOG_FMT(LASFCP, "%s(%d):\n", __func__, __LINE__);
+
+ if (align_root->IsNullChunk())
+ {
+ LOG_FMT(LASFCP, "%s(%d): align_root is null chunk, Add pc '%s'\n",
+ __func__, __LINE__, pc->Text());
+ fcn_as.Add(pc);
+ align_root = align_fcn;
+ align_root_name = align_fcn_name;
+ align_cur = pc;
+ align_len = 1;
+ add_str = "Start";
+ }
+
+ if (add_str != nullptr)
+ {
+ LOG_FMT(LASFCP, "%s(%3d): %s with function '%s', on orig line %zu\n",
+ __func__, __LINE__, add_str, align_fcn_name.c_str(), pc->GetOrigLine());
+ align_params(pc, chunks);
+
+ for (size_t idx = 0; idx < chunks.size(); idx++)
+ {
+ LOG_FMT(LASFCP, "%s(%d): chunks[%zu] is [%s]\n", __func__, __LINE__, idx, chunks[idx]->Text());
+ // Issue #2368
+
+ if (array_of_AlignStack.size() > idx)
+ {
+ // Issue #2368
+ array_of_AlignStack[idx].m_right_align = false;
+ }
+
+ if (idx >= array_of_AlignStack.size())
+ {
+ LOG_FMT(LASFCP, "%s(%d): resize with %zu\n", __func__, __LINE__, idx + 1);
+ array_of_AlignStack.resize(idx + 1);
+ LOG_FMT(LASFCP, "%s(%d): Start for the new\n", __func__, __LINE__);
+ array_of_AlignStack[idx].Start(span, thresh);
+
+ log_rule_B("align_number_right");
+
+ if (!options::align_number_right())
+ {
+ if ( chunks[idx]->Is(CT_NUMBER_FP)
+ || chunks[idx]->Is(CT_NUMBER)
+ || chunks[idx]->Is(CT_POS)
+ || chunks[idx]->Is(CT_NEG))
+ {
+ log_rule_B("align_on_tabstop");
+ array_of_AlignStack[idx].m_right_align = !options::align_on_tabstop();
+ }
+ }
+ }
+ LOG_FMT(LASFCP, "%s(%d): save the chunk %s\n", __func__, __LINE__, chunks[idx]->Text());
+ array_of_AlignStack[idx].Add(chunks[idx]);
+ }
+ }
+ }
+
+ if (align_len > 1)
+ {
+ LOG_FMT(LASFCP, " ++ Ended with %zu fcns\n", align_len);
+ fcn_as.End();
+
+ for (auto &as_v : array_of_AlignStack)
+ {
+ as_v.End();
+ }
+ }
+} // align_same_func_call_params
+
+
+void align_params(Chunk *start, deque<Chunk *> &chunks)
+{
+ LOG_FUNC_ENTRY();
+
+ chunks.clear();
+
+ bool hit_comma = true;
+ Chunk *pc = start->GetNextType(CT_FPAREN_OPEN, start->GetLevel());
+
+ while ((pc = pc->GetNext())->IsNotNullChunk())
+ {
+ LOG_FMT(LAS, "%s(%3d): orig line is %zu, orig col is %zu, pc->Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+
+ if ( pc->IsNewline()
+ || pc->Is(CT_SEMICOLON)
+ || ( pc->Is(CT_FPAREN_CLOSE)
+ && pc->GetLevel() == start->GetLevel()))
+ {
+ break;
+ }
+
+ if (pc->GetLevel() == (start->GetLevel() + 1))
+ {
+ if (hit_comma)
+ {
+ LOG_FMT(LAS, "%s(%3d): hit_comma, orig line is %zu, orig col is %zu, pc->Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ chunks.push_back(pc);
+ hit_comma = false;
+ }
+ else if (pc->Is(CT_COMMA))
+ {
+ hit_comma = true;
+ }
+ }
+ }
+} // void align_params
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_same_func_call_params.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_same_func_call_params.h
new file mode 100644
index 00000000..d308b0b5
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_same_func_call_params.h
@@ -0,0 +1,23 @@
+/**
+ * @file align_same_func_call_params.h
+ *
+ * @author Guy Maurel
+ * split from align.cpp
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef ALIGN_SAME_FUNC_CALL_PARAMS_H_INCLUDED
+#define ALIGN_SAME_FUNC_CALL_PARAMS_H_INCLUDED
+
+#include "ChunkStack.h"
+
+#include <deque>
+
+using namespace std;
+
+void align_params(Chunk *start, deque<Chunk *> &chunks);
+
+void align_same_func_call_params();
+
+#endif /* ALIGN_SAME_FUNC_CALL_PARAMS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_stack.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_stack.cpp
new file mode 100644
index 00000000..72cbc29d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_stack.cpp
@@ -0,0 +1,659 @@
+/**
+ * @file align_stack.cpp
+ * Manages an align stack, which is just a pair of chunk stacks.
+ * There can be at most 1 item per line in the stack.
+ * The seqnum is actually a line counter.
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "align_stack.h"
+
+#include "align_tab_column.h"
+#include "indent.h"
+#include "space.h"
+#include "unc_tools.h" // to get stackID and get_A_Number()
+
+
+constexpr static auto LCURRENT = LAS;
+
+using namespace uncrustify;
+
+using std::numeric_limits;
+
+
+void AlignStack::Start(size_t span, int thresh)
+{
+ stackID = get_A_Number(); // for debugging purpose only
+
+ // produces much more log output. Use it only debugging purpose
+ // WITH_STACKID_DEBUG;
+
+ //LOG_FMT(LAS, "AlignStack::Start(%d):m_aligned.Reset()\n", __LINE__);
+ m_aligned.Reset();
+ //LOG_FMT(LAS, "AlignStack::Start(%d):m_skipped.Reset()\n", __LINE__);
+ m_skipped.Reset();
+
+ if (thresh >= 0)
+ {
+ m_absolute_thresh = false;
+ m_thresh = thresh;
+ }
+ else
+ {
+ m_absolute_thresh = true;
+ m_thresh = -thresh;
+ }
+ m_span = span;
+ m_min_col = numeric_limits<size_t>::max();
+ m_max_col = 0;
+ m_nl_seqnum = 0;
+ m_seqnum = 0;
+ m_gap = 0;
+ m_right_align = false;
+ m_star_style = SS_IGNORE;
+ m_amp_style = SS_IGNORE;
+} // AlignStack::Start
+
+
+void AlignStack::ReAddSkipped()
+{
+ // produces much more log output. Use it only debugging purpose
+ // WITH_STACKID_DEBUG;
+
+ if (m_skipped.Empty())
+ {
+ return;
+ }
+ // Make a copy of the ChunkStack and clear m_skipped
+ m_scratch.Set(m_skipped);
+ //LOG_FMT(LAS, "AlignStack::ReAddSkipped(%d):m_skipped.Reset()\n", __LINE__);
+ m_skipped.Reset();
+
+ // Need to add them in order so that m_nl_seqnum is correct
+ for (size_t idx = 0; idx < m_scratch.Len(); idx++)
+ {
+ const ChunkStack::Entry *ce = m_scratch.Get(idx);
+ LOG_FMT(LAS, "AlignStack::ReAddSkipped [%zu] - ", ce->m_seqnum);
+ Add(ce->m_pc, ce->m_seqnum);
+ }
+
+ NewLines(0); // Check to see if we need to flush right away
+} // AlignStack::ReAddSkipped
+
+
+void AlignStack::Add(Chunk *start, size_t seqnum)
+{
+ // produces much more log output. Use it only debugging purpose
+ // WITH_STACKID_DEBUG;
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LAS, "AlignStack::%s(%d): Candidate '%s': orig line %zu, column %zu, type %s, level %zu\n",
+ __func__, __LINE__, start->Text(), start->GetOrigLine(), start->GetColumn(), get_token_name(start->GetType()), start->GetLevel());
+ LOG_FMT(LAS, "AlignStack::%s(%d): seqnum %zu m_seqnum %zu\n", __func__, __LINE__, seqnum, m_seqnum);
+
+ // Assign a seqnum if needed
+ if (seqnum == 0)
+ {
+ seqnum = m_seqnum;
+ }
+ m_last_added = 0;
+
+ // Threshold check should begin after
+ // tighten down the spacing between ref and start
+
+ /*
+ * SS_IGNORE: no special handling of '*' or '&', only 'foo' is aligned
+ * void foo; // gap=5, 'foo' is aligned
+ * char * foo; // gap=3, 'foo' is aligned
+ * foomatic foo; // gap=1, 'foo' is aligned
+ * The gap is the columns between 'foo' and the previous token.
+ * [void - foo], ['*' - foo], etc
+ *
+ * SS_INCLUDE: - space between variable and '*' or '&' is eaten
+ * void foo; // gap=5, 'foo' is aligned
+ * char *foo; // gap=5, '*' is aligned
+ * foomatic foo; // gap=1, 'foo' is aligned
+ * The gap is the columns between the first '*' or '&' before foo
+ * and the previous token. [void - foo], [char - '*'], etc
+ *
+ * SS_DANGLE: - space between variable and '*' or '&' is eaten
+ * void foo; // gap=5
+ * char *bar; // gap=5, as the '*' doesn't count
+ * foomatic foo; // gap=1
+ * The gap is the columns between 'foo' and the chunk before the first
+ * '*' or '&'. [void - foo], [char - bar], etc
+ *
+ * If the gap < m_gap, then the column is bumped out by the difference.
+ * So, if m_gap is 2, then the above would be:
+ * SS_IGNORE:
+ * void foo; // gap=6
+ * char * foo; // gap=4
+ * foomatic foo; // gap=2
+ * SS_INCLUDE:
+ * void foo; // gap=6
+ * char *foo; // gap=6
+ * foomatic foo; // gap=2
+ * SS_DANGLE:
+ * void foo; // gap=6
+ * char *bar; // gap=6, as the '*' doesn't count
+ * foomatic foo; // gap=2
+ * Right aligned numbers:
+ * #define A -1
+ * #define B 631
+ * #define C 3
+ * Left aligned numbers:
+ * #define A -1
+ * #define B 631
+ * #define C 3
+ *
+ * In the code below, pc is set to the item that is aligned.
+ * In the above examples, that is 'foo', '*', '-', or 63.
+ *
+ * Ref is set to the last part of the type.
+ * In the above examples, that is 'void', 'char', 'foomatic', 'A', or 'B'.
+ *
+ * The '*' and '&' can float between the two.
+ *
+ * If align_on_tabstop=true, then SS_DANGLE is changed to SS_INCLUDE.
+ */
+
+ if ( options::align_on_tabstop()
+ && m_star_style == SS_DANGLE)
+ {
+ m_star_style = SS_INCLUDE;
+ }
+ LOG_FMT(LAS, "AlignStack::%s(%d): m_star_style is %s\n",
+ __func__, __LINE__, get_StarStyle_name(m_star_style));
+ // Find ref. Back up to the real item that is aligned.
+ Chunk *prev = start->GetPrev();
+
+ while ( prev->IsPointerOperator()
+ || prev->Is(CT_TPAREN_OPEN))
+ {
+ prev = prev->GetPrev();
+ }
+
+ if (prev->IsNullChunk())
+ {
+ LOG_FMT(LAS, "AlignStack::%s(%d): 'ref' chunk not found. Do not add.\n",
+ __func__, __LINE__);
+ return;
+ }
+ Chunk *ref = prev;
+
+ if (ref->IsNewline())
+ {
+ ref = ref->GetNext();
+ }
+ // Find the item that we are going to align.
+ Chunk *ali = start;
+
+ if (m_star_style != SS_IGNORE)
+ {
+ // back up to the first '*' or '^' preceding the token
+ Chunk *tmp_prev = ali->GetPrev();
+
+ while ( tmp_prev->IsStar()
+ || tmp_prev->IsMsRef())
+ {
+ ali = tmp_prev;
+ tmp_prev = ali->GetPrev();
+ }
+
+ if (tmp_prev->Is(CT_TPAREN_OPEN))
+ {
+ ali = tmp_prev;
+ tmp_prev = ali->GetPrev();
+ // this is correct, even Coverity says:
+ // CID 76021 (#1 of 1): Unused value (UNUSED_VALUE)returned_pointer: Assigning value from
+ // ali->GetPrev(nav_e::ALL) to prev here, but that stored value is overwritten before it can be used.
+ }
+ }
+
+ if (m_amp_style != SS_IGNORE)
+ {
+ // back up to the first '&' preceding the token
+ Chunk *tmp_prev = ali->GetPrev();
+
+ while (tmp_prev->IsAddress())
+ {
+ ali = tmp_prev;
+ tmp_prev = ali->GetPrev();
+ }
+ }
+ LOG_FMT(LAS, "AlignStack::%s(%3d): 'ref' orig line %zu, orig col %zu, text '%s', level %zu, type %s\n",
+ __func__, __LINE__, ref->GetOrigLine(), ref->GetOrigCol(), ref->Text(), ref->GetLevel(), get_token_name(ref->GetType()));
+ LOG_FMT(LAS, "AlignStack::%s(%3d): 'ali' orig line %zu, orig col %zu, text '%s', level %zu, type %s\n",
+ __func__, __LINE__, ali->GetOrigLine(), ali->GetOrigCol(), ali->Text(), ali->GetLevel(), get_token_name(ali->GetType()));
+ log_rule_B("align_keep_extra_space");
+
+ // Tighten down the spacing between ref and start
+ if (!options::align_keep_extra_space())
+ {
+ size_t tmp_col = ref->GetColumn();
+ Chunk *tmp = ref;
+ LOG_FMT(LAS, "AlignStack::%s(%3d): tmp_col is %zu\n",
+ __func__, __LINE__, tmp_col);
+
+ while ( tmp->IsNotNullChunk()
+ && tmp != start)
+ {
+ Chunk *next = tmp->GetNext();
+
+ if (next->IsNotNullChunk())
+ {
+ LOG_FMT(LAS, "AlignStack::%s(%3d): 'next' orig line %zu, orig col %zu, text '%s', level %zu, type %s\n",
+ __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->Text(), next->GetLevel(), get_token_name(next->GetType()));
+ tmp_col += space_col_align(tmp, next);
+ LOG_FMT(LAS, "AlignStack::%s(%3d): 'next' column %zu, level %zu, tmp_col %zu\n",
+ __func__, __LINE__, next->GetColumn(), next->GetLevel(), tmp_col);
+
+ if (next->GetColumn() != tmp_col)
+ {
+ LOG_FMT(LAS, "AlignStack::%s(%3d): call align_to_column\n", __func__, __LINE__);
+ align_to_column(next, tmp_col);
+ }
+ }
+ tmp = next;
+ }
+ }
+ LOG_FMT(LAS, "AlignStack::%s(%3d): m_min_col %zu, m_max_col %zu, start_col %zu, m_thresh %zu, m_gap %zu\n",
+ __func__, __LINE__, m_min_col, m_max_col, start->GetColumn(), m_thresh, m_gap);
+
+ // Check threshold limits
+ if ( m_max_col == 0
+ || m_thresh == 0
+ || ( ((start->GetColumn() + m_gap) <= (m_thresh + (m_absolute_thresh ? m_min_col : m_max_col))) // don't use subtraction here to prevent underflow
+ && ( (start->GetColumn() + m_gap + m_thresh) >= m_max_col // change the expression to mind negative expression
+ || start->GetColumn() >= m_min_col)))
+ {
+ // we are adding it, so update the newline seqnum
+ if (seqnum > m_nl_seqnum)
+ {
+ m_nl_seqnum = seqnum;
+ }
+ // Set the column adjust and gap
+ size_t col_adj = 0; // Amount the column is shifted for 'dangle' mode
+ size_t gap = 0;
+
+ if (ref != ali)
+ {
+ gap = ali->GetColumn() - (ref->GetColumn() + ref->Len());
+ }
+ Chunk *tmp = ali;
+
+ if (tmp->Is(CT_TPAREN_OPEN))
+ {
+ tmp = tmp->GetNext();
+ }
+
+ if ( ( tmp->IsStar()
+ && m_star_style == SS_DANGLE)
+ || ( tmp->IsAddress()
+ && m_amp_style == SS_DANGLE)
+ || ( tmp->IsNullable()
+ && (m_star_style == SS_DANGLE))
+ || ( tmp->IsMsRef()
+ && m_star_style == SS_DANGLE)) // TODO: add m_msref_style
+ {
+ col_adj = start->GetColumn() - ali->GetColumn();
+ gap = start->GetColumn() - (ref->GetColumn() + ref->Len());
+ }
+ // See if this pushes out the max_col
+ const size_t endcol = ali->GetColumn() + col_adj
+ + (gap < m_gap ? m_gap - gap : 0);
+
+ ali->AlignData().col_adj = col_adj;
+ ali->AlignData().ref = ref;
+ ali->AlignData().start = start;
+ m_aligned.Push_Back(ali, seqnum);
+ m_last_added = 1;
+
+ // Issue #2278
+ if (ali->Is(CT_PTR_TYPE))
+ {
+ LOG_FMT(LAS, "AlignStack::%s(%d): add [%s][%s]: 'ali' orig line %zu, column %zu, type %s, level %zu\n",
+ __func__, __LINE__, ali->Text(), start->Text(), ali->GetOrigLine(), ali->GetColumn(), get_token_name(ali->GetType()), ali->GetLevel());
+ }
+ else
+ {
+ LOG_FMT(LAS, "AlignStack::%s(%3d): add [%s]: 'ali' orig line %zu, column %zu, type %s, level %zu\n",
+ __func__, __LINE__, ali->Text(), ali->GetOrigLine(), ali->GetColumn(), get_token_name(ali->GetType()), ali->GetLevel());
+ }
+ LOG_FMT(LAS, "AlignStack::%s(%3d): 'ali' alignment col_adj %d, ref '%s', endcol %zu\n",
+ __func__, __LINE__, ali->GetAlignData().col_adj, ref->Text(), endcol);
+
+ if (m_min_col > endcol)
+ {
+ m_min_col = endcol;
+ }
+ LOG_FMT(LAS, "AlignStack::%s(%3d): add aligned: seqnum %zu, m_nl_seqnum %zu, m_seqnum %zu\n",
+ __func__, __LINE__, seqnum, m_nl_seqnum, m_seqnum);
+ LOG_FMT(LAS, "AlignStack::%s(%3d): 'ali' orig line %zu, column %zu, m_min_col %zu, max_col old/new %zu/%zu\n",
+ __func__, __LINE__, ali->GetOrigLine(), ali->GetColumn(), m_min_col, m_max_col, endcol);
+
+ if (endcol > m_max_col)
+ {
+ m_max_col = endcol;
+
+ /*
+ * If there were any entries that were skipped, re-add them as they
+ * may now be within the threshold
+ */
+ if (!m_skipped.Empty())
+ {
+ LOG_FMT(LAS, "AlignStack::%s(%3d): ReAddSkipped()\n", __func__, __LINE__);
+ ReAddSkipped();
+ }
+ }
+ }
+ else
+ {
+ // The threshold check failed, so add it to the skipped l
+ m_skipped.Push_Back(start, seqnum);
+ m_last_added = 2;
+
+ LOG_FMT(LAS, "AlignStack::add skipped [%zu/%zu/%zu]: line %zu, col %zu <= %zu + %zu\n",
+ seqnum, m_nl_seqnum, m_seqnum,
+ start->GetOrigLine(), start->GetColumn(), m_max_col, m_thresh);
+ }
+ LOG_FMT(LAS, "AlignStack::%s(%3d): end of add\n", __func__, __LINE__);
+ // produces much more log output. Use it only debugging purpose
+} // AlignStack::Add
+
+
+void AlignStack::NewLines(size_t cnt)
+{
+ // produces much more log output. Use it only debugging purpose
+ // WITH_STACKID_DEBUG;
+
+ if (m_aligned.Empty())
+ {
+ //LOG_FMT(LAS, "AlignStack::Newlines(%d): nothing to do, empty\n", __LINE__);
+ return;
+ }
+ LOG_FMT(LAS, "AlignStack::Newlines(%d): cnt %zu\n", __LINE__, cnt);
+ m_seqnum += cnt;
+ LOG_FMT(LAS, "AlignStack::Newlines(%d): m_seqnum %zu, m_nl_seqnum %zu, m_span %zu\n",
+ __LINE__, m_seqnum, m_nl_seqnum, m_span);
+
+ if (m_seqnum > (m_nl_seqnum + m_span))
+ {
+ LOG_FMT(LAS, "AlignStack::Newlines(%d): cnt %zu\n", __LINE__, cnt);
+ Flush();
+ }
+} // AlignStack::NewLines
+
+
+void AlignStack::Flush()
+{
+ // produces much more log output. Use it only debugging purpose
+ // WITH_STACKID_DEBUG;
+
+ LOG_FMT(LAS, "AlignStack::%s(%d): Len() is %zu\n",
+ __func__, __LINE__, Len());
+
+ if (Len() > 0)
+ {
+ LOG_FMT(LAS, "AlignStack::%s(%d): min is %zu, max is %zu\n",
+ __func__, __LINE__, m_min_col, m_max_col);
+ }
+ else
+ {
+ return;
+ }
+
+ if (Len() == 1)
+ {
+ // check if we have *one* typedef in the line
+ Chunk *pc = m_aligned.Get(0)->m_pc;
+ Chunk *temp = pc->GetPrevType(CT_TYPEDEF, pc->GetLevel());
+
+ if (temp->IsNotNullChunk())
+ {
+ if (pc->GetOrigLine() == temp->GetOrigLine())
+ {
+ // reset the gap only for *this* stack
+ m_gap = 1;
+ }
+ }
+ }
+ m_last_added = 0;
+ m_max_col = 0;
+
+ // produces much more log output. Use it only debugging purpose
+ LOG_FMT(LAS, "AlignStack::%s(%d): Debug the stack, Len() is %zu\n",
+ __func__, __LINE__, Len());
+
+ for (size_t idx = 0; idx < Len(); idx++)
+ {
+ Chunk *pc = m_aligned.Get(idx)->m_pc;
+ LOG_FMT(LAS, "AlignStack::%s(%d): idx is %zu, pc->Text() is '%s', orig line is %zu, orig col is %zu, alignment col_adj is %d\n",
+ __func__, __LINE__, idx, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetAlignData().col_adj);
+ }
+
+ // Recalculate the max_col - it may have shifted since the last Add()
+ for (size_t idx = 0; idx < Len(); idx++)
+ {
+ Chunk *pc = m_aligned.Get(idx)->m_pc;
+
+ // Set the column adjust and gap
+ size_t col_adj = 0;
+ size_t gap = 0;
+
+ if (pc != pc->GetAlignData().ref)
+ {
+ gap = pc->GetColumn() - (pc->GetAlignData().ref->GetColumn() + pc->GetAlignData().ref->Len());
+ }
+
+ if (m_star_style == SS_DANGLE)
+ {
+ Chunk *tmp = (pc->Is(CT_TPAREN_OPEN)) ? pc->GetNext() : pc;
+
+ if (tmp->IsPointerOperator())
+ {
+ col_adj = pc->GetAlignData().start->GetColumn() - pc->GetColumn();
+ gap = pc->GetAlignData().start->GetColumn() - (pc->GetAlignData().ref->GetColumn() + pc->GetAlignData().ref->Len());
+ }
+ }
+
+ if (m_right_align)
+ {
+ // Adjust the width for signed numbers
+ if (pc->GetAlignData().start->IsNotNullChunk())
+ {
+ size_t start_len = pc->GetAlignData().start->Len();
+
+ if (pc->GetAlignData().start->GetType() == CT_NEG)
+ {
+ Chunk *next = pc->GetAlignData().start->GetNext();
+
+ if (next->Is(CT_NUMBER))
+ {
+ start_len += next->Len();
+ }
+ }
+ col_adj += start_len;
+ }
+ }
+ pc->AlignData().col_adj = col_adj;
+
+ // See if this pushes out the max_col
+ const size_t endcol = pc->GetColumn() + col_adj
+ + (gap < m_gap ? m_gap - gap : 0);
+
+ if (endcol > m_max_col)
+ {
+ m_max_col = endcol;
+ }
+ }
+
+ log_rule_B("align_on_tabstop");
+
+ if ( options::align_on_tabstop()
+ && Len() > 1)
+ {
+ m_max_col = align_tab_column(m_max_col);
+ }
+ LOG_FMT(LAS, "AlignStack::%s(%d): Debug the stack, Len() is %zu\n",
+ __func__, __LINE__, Len());
+
+ for (size_t idx = 0; idx < Len(); idx++)
+ {
+ Chunk *pc = m_aligned.Get(idx)->m_pc;
+ LOG_FMT(LAS, "AlignStack::%s(%d): idx is %zu, pc->Text() is '%s', orig line is %zu, orig col is %zu, alignment col_adj is %d\n",
+ __func__, __LINE__, idx, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetAlignData().col_adj);
+ }
+
+ const ChunkStack::Entry *ce = nullptr;
+
+ for (size_t idx = 0; idx < Len(); idx++)
+ {
+ ce = m_aligned.Get(idx);
+ Chunk *pc = ce->m_pc;
+
+ const size_t tmp_col = m_max_col - pc->GetAlignData().col_adj;
+
+ if (idx == 0)
+ {
+ if ( m_skip_first
+ && pc->GetColumn() != tmp_col)
+ {
+ LOG_FMT(LAS, "AlignStack::%s(%d): orig line is %zu, orig col is %zu, dropping first item due to skip_first\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ m_skip_first = false;
+ m_aligned.Pop_Front();
+ Flush();
+ m_skip_first = true;
+ return;
+ }
+ pc->SetFlagBits(PCF_ALIGN_START);
+
+ pc->AlignData().right_align = m_right_align;
+ pc->AlignData().amp_style = m_amp_style;
+ pc->AlignData().star_style = m_star_style;
+ }
+ pc->AlignData().gap = m_gap;
+ pc->AlignData().next = m_aligned.GetChunk(idx + 1);
+
+ // Indent the token, taking col_adj into account
+ LOG_FMT(LAS, "AlignStack::%s(%d): orig line is %zu, orig col is %zu, Text() '%s', set to col %zu (adj is %d)\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), tmp_col, pc->GetAlignData().col_adj);
+ align_to_column(pc, tmp_col);
+ }
+
+ size_t last_seqnum = 0;
+
+ if (ce != nullptr)
+ {
+ last_seqnum = ce->m_seqnum;
+ //LOG_FMT(LAS, "AlignStack::Flush(%d):m_aligned.Reset()\n", __LINE__);
+ m_aligned.Reset();
+ }
+ m_min_col = numeric_limits<size_t>::max(); // use unrealistic high numbers
+ m_max_col = 0; // as start value
+
+ if (m_skipped.Empty())
+ {
+ // Nothing was skipped, sync the sequence numbers
+ m_nl_seqnum = m_seqnum;
+ }
+ else
+ {
+ // Remove all items with seqnum < last_seqnum
+ for (size_t idx = 0; idx < m_skipped.Len(); idx++)
+ {
+ if (m_skipped.Get(idx)->m_seqnum < last_seqnum)
+ {
+ m_skipped.Zap(idx);
+ }
+ }
+
+ m_skipped.Collapse();
+
+ ReAddSkipped(); // Add all items from the skipped list
+ }
+} // AlignStack::Flush
+
+
+void AlignStack::Reset()
+{
+ // WITH_STACKID_DEBUG;
+ //LOG_FMT(LAS, "AlignStack::Reset(%d):m_aligned.Reset()\n", __LINE__);
+ m_aligned.Reset();
+ //LOG_FMT(LAS, "AlignStack::Reset(%d):m_skipped.Reset()\n", __LINE__);
+ m_skipped.Reset();
+} // AlignStack::Reset
+
+
+void AlignStack::End()
+{
+ // WITH_STACKID_DEBUG;
+
+ if (!m_aligned.Empty())
+ {
+ //LOG_FMT(LAS, "AlignStack::End(%d):\n", __LINE__);
+ Flush();
+ }
+ //LOG_FMT(LAS, "AlignStack::End(%d):m_aligned.Reset()\n", __LINE__);
+ m_aligned.Reset();
+ //LOG_FMT(LAS, "AlignStack::End(%d):m_skipped.Reset()\n", __LINE__);
+ m_skipped.Reset();
+} // AlignStack::End
+
+
+size_t AlignStack::Len()
+{
+ // WITH_STACKID_DEBUG;
+ return(m_aligned.Len());
+} // AlignStack::Len
+
+
+void AlignStack::Debug()
+{
+ // WITH_STACKID_DEBUG;
+
+ size_t length = Len();
+
+ if (length > 0)
+ {
+ LOG_FMT(LAS, "AlignStack::%s(%d): Debug the stack, Len is %zu\n",
+ __func__, __LINE__, Len());
+
+ for (size_t idx = 0; idx < length; idx++)
+ {
+ Chunk *pc = m_aligned.Get(idx)->m_pc;
+
+ if (pc->Is(CT_PTR_TYPE))
+ {
+ LOG_FMT(LAS, "AlignStack::%s(%d): idx is %zu, [%s][%s]: orig line is %zu, orig col is %zu, type is %s, level is %zu, brace level is %zu\n",
+ __func__, __LINE__, idx, pc->Text(), pc->GetNext()->Text(), pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()), pc->GetLevel(), pc->GetBraceLevel());
+ }
+ else
+ {
+ LOG_FMT(LAS, "AlignStack::%s(%d): idx is %zu, [%s]: orig line is %zu, orig col is %zu, type is %s, level is %zu, brace level is %zu\n",
+ __func__, __LINE__, idx, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()), pc->GetLevel(), pc->GetBraceLevel());
+ }
+ }
+ }
+} // AlignStack::Debug
+
+
+const char *AlignStack::get_StarStyle_name(StarStyle star_style)
+{
+ // WITH_STACKID_DEBUG;
+ switch (star_style)
+ {
+ case StarStyle::SS_IGNORE:
+ return("SS_IGNORE");
+
+ case StarStyle::SS_INCLUDE:
+ return("SS_INCLUDE");
+
+ case StarStyle::SS_DANGLE:
+ return("SS_DANGLE");
+ }
+ return("?????");
+} // AlignStack::get_StarStyle_name
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_stack.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_stack.h
index 6d079fe5..6d079fe5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_stack.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_stack.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_struct_initializers.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_struct_initializers.cpp
index ca032bc3..ca032bc3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_struct_initializers.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_struct_initializers.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_struct_initializers.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_struct_initializers.h
index 7310d072..7310d072 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_struct_initializers.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_struct_initializers.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_tab_column.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_tab_column.cpp
index 8d91b0ff..8d91b0ff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_tab_column.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_tab_column.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_tab_column.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_tab_column.h
index 9e57baa0..9e57baa0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_tab_column.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_tab_column.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_tools.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_tools.cpp
new file mode 100644
index 00000000..e90afd2f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_tools.cpp
@@ -0,0 +1,192 @@
+/**
+ * @file align_tools.cpp
+ *
+ * @author Guy Maurel
+ * split from align.cpp
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "align_tools.h"
+
+#include "space.h"
+#include "uncrustify.h"
+
+
+Chunk *skip_c99_array(Chunk *sq_open)
+{
+ if (sq_open->Is(CT_SQUARE_OPEN))
+ {
+ Chunk *tmp = sq_open->GetClosingParen()->GetNextNc();
+
+ if (tmp->Is(CT_ASSIGN))
+ {
+ return(tmp->GetNextNc());
+ }
+ }
+ return(Chunk::NullChunkPtr);
+} // skip_c99_array
+
+
+Chunk *scan_ib_line(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *prev_match = Chunk::NullChunkPtr;
+ size_t idx = 0;
+
+ // Skip past C99 "[xx] =" stuff
+ Chunk *tmp = skip_c99_array(start);
+
+ if (tmp->IsNotNullChunk())
+ {
+ start->SetParentType(CT_TSQUARE);
+ start = tmp;
+ cpd.al_c99_array = true;
+ }
+ Chunk *pc = start;
+
+ if (pc->IsNotNullChunk())
+ {
+ LOG_FMT(LSIB, "%s(%d): start: orig line is %zu, orig col is %zu, column is %zu, type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetColumn(), get_token_name(pc->GetType()));
+ }
+ else
+ {
+ pc = Chunk::NullChunkPtr;
+ }
+
+ while ( pc->IsNotNullChunk()
+ && !pc->IsNewline()
+ && pc->GetLevel() >= start->GetLevel())
+ {
+ //LOG_FMT(LSIB, "%s: '%s' col %d/%d line %zu\n", __func__,
+ // pc->Text(), pc->GetColumn(), pc->GetOrigCol(), pc->GetOrigLine());
+
+ Chunk *next = pc->GetNext();
+
+ if ( next->IsNullChunk()
+ || next->IsComment())
+ {
+ // do nothing
+ }
+ else if ( pc->Is(CT_ASSIGN)
+ || pc->Is(CT_BRACE_OPEN)
+ || pc->Is(CT_BRACE_CLOSE)
+ || pc->Is(CT_COMMA))
+ {
+ size_t token_width = space_col_align(pc, next);
+
+ // TODO: need to handle missing structure defs? ie NULL vs { ... } ??
+
+ // Is this a new entry?
+ if (idx >= cpd.al_cnt)
+ {
+ if (idx == 0)
+ {
+ LOG_FMT(LSIB, "%s(%d): Prepare the 'idx's\n", __func__, __LINE__);
+ }
+ LOG_FMT(LSIB, "%s(%d): New idx is %2.1zu, pc->GetColumn() is %2.1zu, Text() '%s', token_width is %zu, type is %s\n",
+ __func__, __LINE__, idx, pc->GetColumn(), pc->Text(), token_width, get_token_name(pc->GetType()));
+ cpd.al[cpd.al_cnt].type = pc->GetType();
+ cpd.al[cpd.al_cnt].col = pc->GetColumn();
+ cpd.al[cpd.al_cnt].len = token_width;
+ cpd.al[cpd.al_cnt].ref = pc; // Issue #3786
+ cpd.al_cnt++;
+
+ if (cpd.al_cnt == uncrustify::limits::AL_SIZE)
+ {
+ fprintf(stderr, "Number of 'entry' to be aligned is too big for the current value %d,\n",
+ uncrustify::limits::AL_SIZE);
+ fprintf(stderr, "at line %zu, column %zu.\n",
+ pc->GetOrigLine(), pc->GetOrigCol());
+ fprintf(stderr, "Please make a report.\n");
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ idx++;
+ }
+ else
+ {
+ // expect to match stuff
+ if (cpd.al[idx].type == pc->GetType())
+ {
+ LOG_FMT(LSIB, "%s(%d): Match? idx is %2.1zu, orig line is %2.1zu, column is %2.1zu, token_width is %zu, type is %s\n",
+ __func__, __LINE__, idx, pc->GetOrigLine(), pc->GetColumn(), token_width, get_token_name(pc->GetType()));
+
+ // Shift out based on column
+ if (prev_match->IsNullChunk())
+ {
+ if (pc->GetColumn() > cpd.al[idx].col)
+ {
+ LOG_FMT(LSIB, "%s(%d): [ pc column (%zu) > cpd.al[%zu].col(%zu) ] \n",
+ __func__, __LINE__, pc->GetColumn(), idx, cpd.al[idx].col);
+
+ ib_shift_out(idx, pc->GetColumn() - cpd.al[idx].col);
+ cpd.al[idx].col = pc->GetColumn();
+ }
+ }
+ else if (idx > 0)
+ {
+ LOG_FMT(LSIB, "%s(%d): prev_match '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, prev_match->Text(), prev_match->GetOrigLine(), prev_match->GetOrigCol());
+ int min_col_diff = pc->GetColumn() - prev_match->GetColumn();
+ int cur_col_diff = cpd.al[idx].col - cpd.al[idx - 1].col;
+
+ if (cur_col_diff < min_col_diff)
+ {
+ LOG_FMT(LSIB, "%s(%d): pc orig line is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine());
+ ib_shift_out(idx, min_col_diff - cur_col_diff);
+ }
+ }
+ LOG_FMT(LSIB, "%s(%d): at ende of the loop: now is col %zu, len is %zu\n",
+ __func__, __LINE__, cpd.al[idx].col, cpd.al[idx].len);
+ idx++;
+ }
+ }
+ prev_match = pc;
+ }
+ pc = pc->GetNextNc();
+ }
+ return(pc);
+} // scan_ib_line
+
+
+void ib_shift_out(size_t idx, size_t num)
+{
+ while (idx < cpd.al_cnt)
+ {
+ bool is_empty = false; // Issue #3786
+ Chunk *tmp = cpd.al[idx].ref;
+
+ if (tmp->Is(CT_BRACE_CLOSE))
+ {
+ Chunk *pre = tmp->GetPrev();
+
+ if (pre->Is(CT_COMMA))
+ {
+ is_empty = true;
+ }
+ }
+
+ if (!is_empty)
+ {
+ cpd.al[idx].col += num;
+ }
+ idx++;
+ }
+} // ib_shift_out
+
+
+Chunk *step_back_over_member(Chunk *pc)
+{
+ Chunk *tmp = pc->GetPrevNcNnl();
+
+ // Skip over any class stuff: bool CFoo::bar()
+ while (tmp->Is(CT_DC_MEMBER))
+ {
+ pc = tmp->GetPrevNcNnl();
+ tmp = pc->GetPrevNcNnl();
+ }
+ return(pc);
+} // step_back_over_member
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_tools.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_tools.h
new file mode 100644
index 00000000..897e2da2
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_tools.h
@@ -0,0 +1,48 @@
+/**
+ * @file align_tools.h
+ *
+ * @author Guy Maurel
+ * split from align.cpp
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef ALIGN_TOOLS_H_INCLUDED
+#define ALIGN_TOOLS_H_INCLUDED
+
+#include "chunk.h"
+#include "uncrustify_types.h"
+
+
+/**
+ * @brief return the chunk the follows after a C array
+ *
+ * The provided chunk is considered an array if it is an opening square
+ * (CT_SQUARE_OPEN) and the matching close is followed by an equal sign '='
+ *
+ * Example: array[25] = 12;
+ * /|\ /|\
+ * | |
+ * provided chunk has to point to [ |
+ * returned chunk points to 12
+ *
+ * @param chunk chunk to operate on
+ *
+ * @return the chunk after the '=' if the check succeeds
+ * @return Chunk::NullChunkPtr in all other cases
+ */
+Chunk *skip_c99_array(Chunk *sq_open);
+
+/**
+ * Scans a line for stuff to align on.
+ *
+ * We trigger on BRACE_OPEN, FPAREN_OPEN, ASSIGN, and COMMA.
+ * We want to align the NEXT item.
+ */
+Chunk *scan_ib_line(Chunk *start);
+
+void ib_shift_out(size_t idx, size_t num);
+
+Chunk *step_back_over_member(Chunk *pc);
+
+#endif /* ALIGN_TOOLS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_trailing_comments.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_trailing_comments.cpp
new file mode 100644
index 00000000..86b875eb
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_trailing_comments.cpp
@@ -0,0 +1,235 @@
+/**
+ * @file align_trailing_comments.cpp
+ *
+ * @author Guy Maurel
+ * split from align.cpp
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "align_trailing_comments.h"
+
+#include "align_add.h"
+#include "align_tab_column.h"
+#include "indent.h"
+#include "log_rules.h"
+
+constexpr static auto LCURRENT = LALTC;
+
+using namespace uncrustify;
+
+
+void align_stack(ChunkStack &cs, size_t col, bool align_single, log_sev_t sev)
+{
+ LOG_FUNC_ENTRY();
+
+ log_rule_B("align_on_tabstop");
+
+ if (options::align_on_tabstop())
+ {
+ col = align_tab_column(col);
+ }
+
+ if ( (cs.Len() > 1)
+ || ( align_single
+ && (cs.Len() == 1)))
+ {
+ LOG_FMT(sev, "%s(%d): max_col=%zu\n", __func__, __LINE__, col);
+ Chunk *pc;
+
+ while ((pc = cs.Pop_Back())->IsNotNullChunk())
+ {
+ align_to_column(pc, col);
+ pc->SetFlagBits(PCF_WAS_ALIGNED);
+
+ LOG_FMT(sev, "%s(%d): indented [%s] on line %zu to %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetColumn());
+ }
+ }
+ cs.Reset();
+} // align_stack
+
+
+Chunk *align_trailing_comments(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+ size_t min_col = 0;
+ size_t min_orig = 0;
+ Chunk *pc = start;
+ const size_t lvl = start->GetBraceLevel();
+ size_t nl_count = 0;
+ ChunkStack cs;
+ size_t col;
+
+ log_rule_B("align_right_cmt_at_col");
+ size_t intended_col = options::align_right_cmt_at_col();
+
+ log_rule_B("align_right_cmt_same_level");
+ const bool same_level = options::align_right_cmt_same_level();
+ comment_align_e cmt_type_cur;
+ comment_align_e cmt_type_start = get_comment_align_type(pc);
+
+ LOG_FMT(LALADD, "%s(%d): start on line=%zu\n",
+ __func__, __LINE__, pc->GetOrigLine());
+
+ // Find the max column
+ log_rule_B("align_right_cmt_span");
+
+ while ( pc->IsNotNullChunk()
+ && (nl_count < options::align_right_cmt_span()))
+ {
+ if ( pc->TestFlags(PCF_RIGHT_COMMENT)
+ && pc->GetColumn() > 1)
+ {
+ if ( same_level
+ && pc->GetBraceLevel() != lvl)
+ {
+ pc = pc->GetPrev();
+ break;
+ }
+ cmt_type_cur = get_comment_align_type(pc);
+
+ if (cmt_type_cur == cmt_type_start)
+ {
+ LOG_FMT(LALADD, "%s(%d): line=%zu min_col=%zu pc->col=%zu pc->len=%zu %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), min_col, pc->GetColumn(), pc->Len(),
+ get_token_name(pc->GetType()));
+
+ if ( min_orig == 0
+ || min_orig > pc->GetColumn())
+ {
+ min_orig = pc->GetColumn();
+ }
+ align_add(cs, pc, min_col); // (intended_col < col));
+ nl_count = 0;
+ }
+ }
+
+ if (pc->IsNewline())
+ {
+ nl_count += pc->GetNlCount();
+ }
+ pc = pc->GetNext();
+ }
+ // Start with the minimum original column
+ col = min_orig;
+
+ // fall back to the intended column
+ if ( intended_col > 0
+ && col > intended_col)
+ {
+ col = intended_col;
+ }
+
+ // if less than allowed, bump it out
+ if (col < min_col)
+ {
+ col = min_col;
+ }
+
+ // bump out to the intended column
+ if (col < intended_col)
+ {
+ col = intended_col;
+ }
+ LOG_FMT(LALADD, "%s(%d): -- min_orig=%zu intended_col=%zu min_allowed=%zu ==> col=%zu\n",
+ __func__, __LINE__, min_orig, intended_col, min_col, col);
+
+ if ( cpd.frag_cols > 0
+ && cpd.frag_cols <= col)
+ {
+ col -= cpd.frag_cols;
+ }
+ align_stack(cs, col, (intended_col != 0), LALTC);
+
+ return(pc->GetNext());
+} // align_trailing_comments
+
+
+comment_align_e get_comment_align_type(Chunk *cmt)
+{
+ Chunk *prev;
+ comment_align_e cmt_type = comment_align_e::REGULAR;
+
+ log_rule_B("align_right_cmt_mix");
+
+ if ( !options::align_right_cmt_mix()
+ && cmt->IsNotNullChunk()
+ && ((prev = cmt->GetPrev())->IsNotNullChunk()))
+ {
+ if ( prev->Is(CT_PP_ENDIF)
+ || prev->Is(CT_PP_ELSE)
+ || prev->Is(CT_ELSE)
+ || prev->Is(CT_BRACE_CLOSE))
+ {
+ // TODO: make the magic 3 configurable
+ if ((cmt->GetColumn() - (prev->GetColumn() + prev->Len())) < 3)
+ {
+ cmt_type = (prev->Is(CT_PP_ENDIF)) ? comment_align_e::ENDIF : comment_align_e::BRACE;
+ }
+ }
+ }
+ return(cmt_type);
+} // get_comment_align_type
+
+
+void align_right_comments()
+{
+ LOG_FUNC_ENTRY();
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if ( pc->Is(CT_COMMENT)
+ || pc->Is(CT_COMMENT_CPP)
+ || pc->Is(CT_COMMENT_MULTI))
+ {
+ if (pc->GetParentType() == CT_COMMENT_END)
+ {
+ log_rule_B("align_right_cmt_gap");
+
+ if (pc->GetOrigPrevSp() < options::align_right_cmt_gap())
+ {
+ LOG_FMT(LALTC, "NOT changing END comment on line %zu (%zu < %u)\n",
+ pc->GetOrigLine(), pc->GetOrigPrevSp(),
+ options::align_right_cmt_gap());
+ }
+ else
+ {
+ LOG_FMT(LALTC, "Changing END comment on line %zu into a RIGHT-comment\n",
+ pc->GetOrigLine());
+ pc->SetFlagBits(PCF_RIGHT_COMMENT);
+ }
+ }
+
+ // Change certain WHOLE comments into RIGHT-alignable comments
+ if (pc->GetParentType() == CT_COMMENT_WHOLE)
+ {
+ log_rule_B("input_tab_size");
+ size_t max_col = pc->GetColumnIndent() + options::input_tab_size();
+
+ // If the comment is further right than the brace level...
+ if (pc->GetColumn() >= max_col)
+ {
+ LOG_FMT(LALTC, "Changing WHOLE comment on line %zu into a RIGHT-comment (col=%zu col_ind=%zu max_col=%zu)\n",
+ pc->GetOrigLine(), pc->GetColumn(), pc->GetColumnIndent(), max_col);
+
+ pc->SetFlagBits(PCF_RIGHT_COMMENT);
+ }
+ }
+ }
+ }
+
+ Chunk *pc = Chunk::GetHead();
+
+ while (pc->IsNotNullChunk())
+ {
+ if (pc->TestFlags(PCF_RIGHT_COMMENT))
+ {
+ pc = align_trailing_comments(pc);
+ }
+ else
+ {
+ pc = pc->GetNext();
+ }
+ }
+} // align_right_comments
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_trailing_comments.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_trailing_comments.h
index 4fec7b8b..4fec7b8b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_trailing_comments.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_trailing_comments.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_typedefs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_typedefs.cpp
index b97d9ddf..b97d9ddf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_typedefs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_typedefs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_typedefs.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_typedefs.h
index 2902d0d2..2902d0d2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_typedefs.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_typedefs.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_var_def_brace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_var_def_brace.cpp
new file mode 100644
index 00000000..93eb34b2
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_var_def_brace.cpp
@@ -0,0 +1,362 @@
+/**
+ * @file align_var_def_brace.cpp
+ *
+ * @author Guy Maurel
+ * split from align.cpp
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "align_var_def_brace.h"
+
+#include "align_stack.h"
+#include "align_tools.h"
+#include "log_rules.h"
+
+constexpr static auto LCURRENT = LAVDB;
+
+using namespace uncrustify;
+
+
+Chunk *align_var_def_brace(Chunk *start, size_t span, size_t *p_nl_count)
+{
+ LOG_FUNC_ENTRY();
+
+ if (start->IsNullChunk())
+ {
+ return(Chunk::NullChunkPtr);
+ }
+ Chunk *next;
+ size_t myspan = span;
+ size_t mythresh = 0;
+ size_t mygap = 0;
+
+ // Override the span, if this is a struct/union
+ if ( start->GetParentType() == CT_STRUCT
+ || start->GetParentType() == CT_UNION)
+ {
+ log_rule_B("align_var_struct_span");
+ myspan = options::align_var_struct_span();
+ log_rule_B("align_var_struct_thresh");
+ mythresh = options::align_var_struct_thresh();
+ log_rule_B("align_var_struct_gap");
+ mygap = options::align_var_struct_gap();
+ }
+ else if (start->GetParentType() == CT_CLASS)
+ {
+ log_rule_B("align_var_class_span");
+ myspan = options::align_var_class_span();
+ log_rule_B("align_var_class_thresh");
+ mythresh = options::align_var_class_thresh();
+ log_rule_B("align_var_class_gap");
+ mygap = options::align_var_class_gap();
+ }
+ else
+ {
+ log_rule_B("align_var_def_thresh");
+ mythresh = options::align_var_def_thresh();
+ log_rule_B("align_var_def_gap");
+ mygap = options::align_var_def_gap();
+ }
+ // can't be any variable definitions in a "= {" block
+ Chunk *prev = start->GetPrevNcNnl();
+
+ if (prev->Is(CT_ASSIGN))
+ {
+ LOG_FMT(LAVDB, "%s(%d): start->Text() '%s', type is %s, on orig line %zu (abort due to assign)\n",
+ __func__, __LINE__, start->Text(), get_token_name(start->GetType()), start->GetOrigLine());
+
+ Chunk *pc = start->GetNextType(CT_BRACE_CLOSE, start->GetLevel());
+ return(pc->GetNextNcNnl());
+ }
+ char copy[1000];
+
+ LOG_FMT(LAVDB, "%s(%d): start->Text() '%s', type is %s, on orig line %zu\n",
+ __func__, __LINE__, start->ElidedText(copy), get_token_name(start->GetType()), start->GetOrigLine());
+
+ log_rule_B("align_var_def_inline");
+ auto const align_mask =
+ PCF_IN_FCN_DEF | PCF_VAR_1ST |
+ (options::align_var_def_inline() ? PCF_NONE : PCF_VAR_INLINE);
+
+ // Set up the variable/prototype/definition aligner
+ AlignStack as;
+
+ as.Start(myspan, mythresh);
+ as.m_gap = mygap;
+ log_rule_B("align_var_def_star_style");
+ as.m_star_style = static_cast<AlignStack::StarStyle>(options::align_var_def_star_style());
+ log_rule_B("align_var_def_amp_style");
+ as.m_amp_style = static_cast<AlignStack::StarStyle>(options::align_var_def_amp_style());
+
+ // Set up the bit colon aligner
+ AlignStack as_bc;
+
+ as_bc.Start(myspan, 0);
+ log_rule_B("align_var_def_colon_gap");
+ as_bc.m_gap = options::align_var_def_colon_gap();
+
+ AlignStack as_at; // attribute
+
+ as_at.Start(myspan, 0);
+
+ // Set up the brace open aligner
+ AlignStack as_br;
+
+ as_br.Start(myspan, mythresh);
+ log_rule_B("align_single_line_brace_gap");
+ as_br.m_gap = options::align_single_line_brace_gap();
+
+ bool fp_look_bro = false;
+ bool did_this_line = false;
+
+ log_rule_B("align_mix_var_proto");
+ bool fp_active = options::align_mix_var_proto();
+ Chunk *pc = start->GetNext();
+ LOG_FMT(LAVDB, "%s(%d): start->Text() is '%s', level is %zu, brace level is %zu\n",
+ __func__, __LINE__, start->IsNewline() ? "Newline" : start->Text(), start->GetLevel(), start->GetBraceLevel());
+
+ while (pc->IsNotNullChunk())
+ {
+ LOG_CHUNK(LAVDB, pc);
+
+ if ( pc->GetLevel() < start->GetLevel()
+ && pc->GetLevel() != 0
+ && !pc->IsPreproc())
+ {
+ LOG_FMT(LAVDB, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s, PRE is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()), pc->IsPreproc() ? "true" : "false");
+ break;
+ }
+
+ if (pc->IsComment())
+ {
+ if (pc->GetNlCount() > 0)
+ {
+ as.NewLines(pc->GetNlCount());
+ as_bc.NewLines(pc->GetNlCount());
+ as_at.NewLines(pc->GetNlCount());
+ as_br.NewLines(pc->GetNlCount());
+ }
+ pc = pc->GetNext();
+ LOG_FMT(LAVDB, "%s(%d): pc->Text() is '%s', level is %zu, brace level is %zu\n",
+ __func__, __LINE__, pc->IsNewline() ? "Newline" : pc->Text(), pc->GetLevel(), pc->GetBraceLevel());
+ continue;
+ }
+
+ if ( fp_active
+ && !pc->TestFlags(PCF_IN_CLASS_BASE))
+ {
+ // WARNING: Duplicate from the align_func_proto()
+ log_rule_B("align_single_line_func");
+
+ if ( pc->Is(CT_FUNC_PROTO)
+ || ( pc->Is(CT_FUNC_DEF)
+ && options::align_single_line_func()))
+ {
+ LOG_FMT(LAVDB, "%s(%d): add = '%s', orig line is %zu, orig col is %zu, level is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
+
+ Chunk *toadd;
+
+ log_rule_B("align_on_operator");
+
+ if ( pc->GetParentType() == CT_OPERATOR
+ && options::align_on_operator())
+ {
+ toadd = pc->GetPrevNcNnl();
+ }
+ else
+ {
+ toadd = pc;
+ }
+ as.Add(step_back_over_member(toadd));
+ log_rule_B("align_single_line_brace");
+ fp_look_bro = (pc->Is(CT_FUNC_DEF))
+ && options::align_single_line_brace();
+ }
+ else if ( fp_look_bro
+ && pc->Is(CT_BRACE_OPEN)
+ && pc->TestFlags(PCF_ONE_LINER))
+ {
+ as_br.Add(pc);
+ fp_look_bro = false;
+ }
+ }
+
+ // process nested braces
+ if (pc->Is(CT_BRACE_OPEN))
+ {
+ size_t sub_nl_count = 0;
+
+ pc = align_var_def_brace(pc, span, &sub_nl_count);
+
+ if (sub_nl_count > 0)
+ {
+ fp_look_bro = false;
+ did_this_line = false;
+ as.NewLines(sub_nl_count);
+ as_bc.NewLines(sub_nl_count);
+ as_at.NewLines(sub_nl_count);
+ as_br.NewLines(sub_nl_count);
+
+ if (p_nl_count != nullptr)
+ {
+ *p_nl_count += sub_nl_count;
+ }
+ }
+ continue;
+ }
+
+ // Done with this brace set?
+ if (pc->Is(CT_BRACE_CLOSE))
+ {
+ pc = pc->GetNext();
+ LOG_FMT(LAVDB, "%s(%d): pc->Text() is '%s', level is %zu, brace level is %zu\n",
+ __func__, __LINE__, pc->IsNewline() ? "Newline" : pc->Text(), pc->GetLevel(), pc->GetBraceLevel());
+ break;
+ }
+
+ if (pc->IsNewline())
+ {
+ fp_look_bro = false;
+ did_this_line = false;
+ as.NewLines(pc->GetNlCount());
+ as_bc.NewLines(pc->GetNlCount());
+ as_at.NewLines(pc->GetNlCount());
+ as_br.NewLines(pc->GetNlCount());
+
+ if (p_nl_count != nullptr)
+ {
+ *p_nl_count += pc->GetNlCount();
+ }
+ }
+ LOG_FMT(LAVDB, "%s(%d): pc->Text() is '%s', level is %zu, brace level is %zu\n",
+ __func__, __LINE__, pc->IsNewline() ? "Newline" : pc->Text(), pc->GetLevel(), pc->GetBraceLevel());
+
+ if (!pc->IsNewline())
+ {
+ LOG_FMT(LAVDB, "%s(%d): pc orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+
+ if (pc->IsNot(CT_IGNORED))
+ {
+ LOG_FMT(LAVDB, " ");
+ log_pcf_flags(LAVDB, pc->GetFlags());
+ }
+ }
+
+ // don't align stuff inside parenthesis/squares/angles
+ if (pc->GetLevel() > pc->GetBraceLevel())
+ {
+ pc = pc->GetNext();
+ LOG_FMT(LAVDB, "%s(%d): pc->Text() is '%s', level is %zu, brace level is %zu\n",
+ __func__, __LINE__, pc->IsNewline() ? "Newline" : pc->Text(), pc->GetLevel(), pc->GetBraceLevel());
+ continue;
+ }
+
+ // If this is a variable def, update the max_col
+ if ( !pc->TestFlags(PCF_IN_CLASS_BASE)
+ && pc->IsNot(CT_FUNC_CLASS_DEF)
+ && pc->IsNot(CT_FUNC_CLASS_PROTO)
+ && ((pc->GetFlags() & align_mask) == PCF_VAR_1ST)
+ && pc->IsNot(CT_FUNC_DEF) // Issue 1452
+ && ( (pc->GetLevel() == (start->GetLevel() + 1))
+ || pc->GetLevel() == 0)
+ && pc->GetPrev()->IsNot(CT_MEMBER))
+ {
+ LOG_FMT(LAVDB, "%s(%d): a-did_this_line is %s\n",
+ __func__, __LINE__, did_this_line ? "TRUE" : "FALSE");
+ LOG_FMT(LAVDB, "%s(%d): Text() is '%s', orig line is %zu, orig col is %zu, level is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
+
+ if (!did_this_line)
+ {
+ if ( start->GetParentType() == CT_STRUCT
+ && (as.m_star_style == AlignStack::SS_INCLUDE))
+ {
+ // we must look after the previous token
+ Chunk *prev_local = pc->GetPrev();
+
+ while ( prev_local->Is(CT_PTR_TYPE)
+ || prev_local->Is(CT_ADDR))
+ {
+ LOG_FMT(LAVDB, "%s(%d): prev_local '%s', prev_local->GetType() %s\n",
+ __func__, __LINE__, prev_local->Text(), get_token_name(prev_local->GetType()));
+ prev_local = prev_local->GetPrev();
+ }
+ pc = prev_local->GetNext();
+ LOG_FMT(LAVDB, "%s(%d): pc->Text() is '%s', level is %zu, brace level is %zu\n",
+ __func__, __LINE__, pc->IsNewline() ? "Newline" : pc->Text(), pc->GetLevel(), pc->GetBraceLevel());
+ }
+ // we must look after the previous token
+ Chunk *prev_local = pc->GetPrev();
+
+ if (prev_local->IsNot(CT_DEREF)) // Issue #2971
+ {
+ LOG_FMT(LAVDB, "%s(%d): add = '%s', orig line is %zu, orig col is %zu, level is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
+
+ as.Add(step_back_over_member(pc));
+ }
+ log_rule_B("align_var_def_colon");
+
+ if (options::align_var_def_colon())
+ {
+ next = pc->GetNextNc();
+ LOG_FMT(LAVDB, "%s(%d): pc->Text() is '%s', level is %zu, brace level is %zu\n",
+ __func__, __LINE__, pc->IsNewline() ? "Newline" : pc->Text(), pc->GetLevel(), pc->GetBraceLevel());
+
+ if (next->Is(CT_BIT_COLON))
+ {
+ as_bc.Add(next);
+ }
+ }
+ log_rule_B("align_var_def_attribute");
+
+ if (options::align_var_def_attribute())
+ {
+ next = pc;
+
+ while ((next = next->GetNextNc())->IsNotNullChunk())
+ {
+ if (next->Is(CT_ATTRIBUTE))
+ {
+ as_at.Add(next);
+ break;
+ }
+
+ if ( next->Is(CT_SEMICOLON)
+ || next->IsNewline())
+ {
+ break;
+ }
+ }
+ }
+ }
+ did_this_line = true;
+ }
+ else if (pc->Is(CT_BIT_COLON))
+ {
+ if (!did_this_line)
+ {
+ as_bc.Add(pc);
+ did_this_line = true;
+ }
+ }
+ else
+ {
+ LOG_FMT(LAVDB, "%s(%d): b-did_this_line is %s\n",
+ __func__, __LINE__, did_this_line ? "TRUE" : "FALSE");
+ }
+ pc = pc->GetNext();
+ LOG_FMT(LAVDB, "%s(%d): pc->Text() is '%s', level is %zu, brace level is %zu\n",
+ __func__, __LINE__, pc->IsNewline() ? "Newline" : pc->Text(), pc->GetLevel(), pc->GetBraceLevel());
+ }
+ as.End();
+ as_bc.End();
+ as_at.End();
+ as_br.End();
+
+ return(pc);
+} // align_var_def_brace
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_var_def_brace.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_var_def_brace.h
index 6d06adf9..6d06adf9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/align_var_def_brace.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/align_var_def_brace.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/args.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/args.cpp
index a03bbe00..a03bbe00 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/args.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/args.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/args.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/args.h
index 712fbd59..712fbd59 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/args.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/args.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/backup.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/backup.cpp
index 93a19c6a..93a19c6a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/backup.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/backup.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/backup.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/backup.h
index 0d385649..0d385649 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/backup.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/backup.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/base_types.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/base_types.h
index 1e98b0ac..1e98b0ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/base_types.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/base_types.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/brace_cleanup.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/brace_cleanup.cpp
new file mode 100644
index 00000000..565dae46
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/brace_cleanup.cpp
@@ -0,0 +1,1440 @@
+/**
+ * @file brace_cleanup.cpp
+ * Determines the brace level and paren level.
+ * Inserts virtual braces as needed.
+ * Handles all that preprocessor stuff.
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "brace_cleanup.h"
+
+#include "flag_parens.h"
+#include "keywords.h"
+#include "lang_pawn.h"
+#include "parsing_frame_stack.h"
+#include "prototypes.h"
+
+#include <stdexcept> // to get std::invalid_argument
+
+constexpr static auto LCURRENT = LBC;
+
+using namespace uncrustify;
+
+using std::invalid_argument;
+using std::string;
+using std::to_string;
+using std::stringstream;
+
+
+struct BraceState
+{
+ ParsingFrameStack frames;
+ E_Token in_preproc = CT_NONE;
+ int pp_level = 0;
+ bool consumed = false;
+};
+
+/**
+ * Called when a statement was just closed and the pse_tos was just
+ * decremented.
+ *
+ * - if the TOS is now VBRACE, insert a CT_VBRACE_CLOSE and recurse.
+ * - if the TOS is a complex statement, call handle_complex_close()
+ *
+ * @retval true done with this chunk
+ * @retval false keep processing
+ */
+static bool close_statement(ParsingFrame &frm, Chunk *pc, const BraceState &braceState);
+
+
+static size_t preproc_start(BraceState &braceState, ParsingFrame &frm, Chunk *pc);
+
+
+static void print_stack(log_sev_t logsev, const char *str, const ParsingFrame &frm);
+
+
+/**
+ * pc is a CT_WHILE.
+ * Scan backwards to see if we find a brace/vbrace with the parent set to CT_DO
+ */
+static bool maybe_while_of_do(Chunk *pc);
+
+
+/**
+ * @param after determines: true - insert_vbrace_close_after(pc, frm)
+ * false - insert_vbrace_open_before(pc, frm)
+ */
+static Chunk *insert_vbrace(Chunk *pc, bool after, const ParsingFrame &frm);
+
+#define insert_vbrace_close_after(pc, frm) insert_vbrace(pc, true, frm)
+#define insert_vbrace_open_before(pc, frm) insert_vbrace(pc, false, frm)
+
+static void parse_cleanup(BraceState &braceState, ParsingFrame &frm, Chunk *pc);
+
+
+/**
+ * Checks the progression of complex statements.
+ * - checks for else after if
+ * - checks for if after else
+ * - checks for while after do
+ * - checks for open brace in BRACE2 and BRACE_DO stages, inserts open VBRACE
+ * - checks for open paren in PAREN1 and BRACE2 stages, complains
+ *
+ * @param frm The parse frame
+ * @param pc The current chunk
+ *
+ * @return true - done with this chunk, false - keep processing
+ */
+static bool check_complex_statements(ParsingFrame &frm, Chunk *pc, const BraceState &braceState);
+
+
+/**
+ * Handles a close paren or brace - just progress the stage, if the end
+ * of the statement is hit, call close_statement()
+ *
+ * @param frm The parse frame
+ * @param pc The current chunk
+ *
+ * @return true - done with this chunk, false - keep processing
+ */
+static bool handle_complex_close(ParsingFrame &frm, Chunk *pc, const BraceState &braceState);
+
+
+//! We're on a 'namespace' skip the word and then set the parent of the braces.
+static void mark_namespace(Chunk *pns);
+
+
+static size_t preproc_start(BraceState &braceState, ParsingFrame &frm, Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+ const size_t pp_level = braceState.pp_level;
+
+ Chunk *next = pc->GetNextNcNnl();
+
+ if (next->IsNullChunk())
+ {
+ return(pp_level);
+ }
+ // Get the type of preprocessor and handle it
+ braceState.in_preproc = next->GetType();
+
+ // If we are not in a define, check for #if, #else, #endif, etc
+ if (braceState.in_preproc != CT_PP_DEFINE)
+ {
+ int pp_indent = braceState.frames.check(frm, braceState.pp_level, pc);
+ return(pp_indent);
+ }
+ // else push the frame stack
+ braceState.frames.push(frm);
+
+ // a preproc body starts a new, blank frame
+ frm = ParsingFrame();
+ frm.SetParenLevel(1);
+ frm.SetBraceLevel(1);
+
+ // TODO: not sure about the next 3 lines
+ frm.push(Chunk::NullChunkPtr, __func__, __LINE__);
+ frm.top().SetOpenToken(CT_PP_DEFINE);
+
+ return(pp_level);
+}
+
+
+static void print_stack(log_sev_t logsev, const char *str,
+ const ParsingFrame &frm)
+{
+ LOG_FUNC_ENTRY();
+
+ if (!log_sev_on(logsev))
+ {
+ return;
+ }
+ log_fmt(logsev, "%s(%d): str is '%s'", __func__, __LINE__, str);
+
+ for (size_t idx = 1; idx < frm.size(); idx++)
+ {
+ if (frm.at(idx).GetStage() != E_BraceStage::NONE)
+ {
+ LOG_FMT(logsev, " [%s - %u]", get_token_name(frm.at(idx).GetOpenToken()),
+ (unsigned int)frm.at(idx).GetStage());
+ }
+ else
+ {
+ LOG_FMT(logsev, " [%s]", get_token_name(frm.at(idx).GetOpenToken()));
+ }
+ }
+
+ log_fmt(logsev, "\n");
+}
+
+
+//TODO: This can be cleaned up and simplified - we can look both forward and backward!
+void brace_cleanup()
+{
+ LOG_FUNC_ENTRY();
+
+ BraceState braceState;
+ ParsingFrame frm;
+ Chunk *pc = Chunk::GetHead();
+
+ while (pc->IsNotNullChunk())
+ {
+ LOG_CHUNK(LTOK, pc);
+
+ // Check for leaving a #define body
+ if ( braceState.in_preproc != CT_NONE
+ && !pc->TestFlags(PCF_IN_PREPROC))
+ {
+ if (braceState.in_preproc == CT_PP_DEFINE)
+ {
+ // out of the #define body, restore the frame
+ size_t brace_level = frm.GetBraceLevel();
+
+ if ( options::pp_warn_unbalanced_if()
+ && brace_level != 1)
+ {
+ LOG_FMT(LWARN, "%s(%d): orig line is %zu, unbalanced #define block braces, out-level is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), brace_level);
+ }
+ braceState.frames.pop(frm);
+ }
+ braceState.in_preproc = CT_NONE;
+ }
+ // Check for a preprocessor start
+ size_t pp_level;
+
+ if (pc->Is(CT_PREPROC))
+ {
+ pp_level = preproc_start(braceState, frm, pc);
+ }
+ else
+ {
+ pp_level = braceState.pp_level;
+ }
+ LOG_FMT(LTOK, "%s(%d): pp level is %zu\n",
+ __func__, __LINE__, pp_level);
+
+ // Do before assigning stuff from the frame
+ if ( language_is_set(LANG_PAWN)
+ && frm.top().GetOpenToken() == CT_VBRACE_OPEN
+ && pc->Is(CT_NEWLINE))
+ {
+ pc = pawn_check_vsemicolon(pc);
+
+ if (pc->IsNullChunk())
+ {
+ return;
+ }
+ }
+
+ // Issue #1813
+ if (pc->Is(CT_NAMESPACE))
+ {
+ mark_namespace(pc);
+ }
+ // Assume the level won't change
+ pc->SetLevel(frm.GetParenLevel());
+ pc->SetBraceLevel(frm.GetBraceLevel());
+ pc->SetPpLevel(pp_level);
+
+ /*
+ * #define bodies get the full formatting treatment
+ * Also need to pass in the initial '#' to close out any virtual braces.
+ */
+ if ( !pc->IsCommentOrNewline()
+ && !pc->Is(CT_ATTRIBUTE)
+ && !pc->Is(CT_IGNORED) // Issue #2279
+ && ( braceState.in_preproc == CT_PP_DEFINE
+ || braceState.in_preproc == CT_NONE))
+ {
+ braceState.consumed = false;
+ parse_cleanup(braceState, frm, pc);
+ print_stack(LBCSAFTER, (pc->Is(CT_VBRACE_CLOSE)) ? "Virt-}\n" : pc->GetStr().c_str(), frm);
+ }
+ pc = pc->GetNext();
+ }
+} // brace_cleanup
+
+
+static bool maybe_while_of_do(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *prev = pc->GetPrevNcNnl();
+
+ if ( prev->IsNullChunk()
+ || !prev->TestFlags(PCF_IN_PREPROC))
+ {
+ return(false);
+ }
+
+ // Find the chunk before the preprocessor
+ while ( prev->IsNullChunk()
+ && prev->TestFlags(PCF_IN_PREPROC))
+ {
+ prev = prev->GetPrevNcNnl();
+ }
+
+ if ( ( prev->Is(CT_VBRACE_CLOSE)
+ || prev->Is(CT_BRACE_CLOSE))
+ && prev->GetParentType() == CT_DO)
+ {
+ return(true);
+ }
+ return(false);
+}
+
+
+/**
+ * At the heart of this algorithm are two stacks.
+ * There is the Paren Stack (PS) and the Frame stack.
+ *
+ * The PS (m_parenStack in the code) keeps track of braces, parens,
+ * if/else/switch/do/while/etc items -- anything that is nestable.
+ * Complex statements go through stages.
+ * Take this simple if statement as an example:
+ * if ( x ) { x--; }
+ *
+ * The stack would change like so: 'token' stack afterwards
+ * 'if' [IF - 1]
+ * '(' [IF - 1] [PAREN OPEN]
+ * 'x' [IF - 1] [PAREN OPEN]
+ * ')' [IF - 2] <- note that the state was incremented
+ * '{' [IF - 2] [BRACE OPEN]
+ * 'x' [IF - 2] [BRACE OPEN]
+ * '--' [IF - 2] [BRACE OPEN]
+ * ';' [IF - 2] [BRACE OPEN]
+ * '}' [IF - 3]
+ * <- lack of else kills the IF, closes statement
+ *
+ * Virtual braces example:
+ * if ( x ) x--; else x++;
+ *
+ * 'if' [IF - 1]
+ * '(' [IF - 1] [PAREN OPEN]
+ * 'x' [IF - 1] [PAREN OPEN]
+ * ')' [IF - 2]
+ * 'x' [IF - 2] [VBRACE OPEN] <- VBrace open inserted before because '{' was not next
+ * '--' [IF - 2] [VBRACE OPEN]
+ * ';' [IF - 3] <- VBrace close inserted after semicolon
+ * 'else' [ELSE - 0] <- IF changed into ELSE
+ * 'x' [ELSE - 0] [VBRACE OPEN] <- lack of '{' -> VBrace
+ * '++' [ELSE - 0] [VBRACE OPEN]
+ * ';' [ELSE - 0] <- VBrace close inserted after semicolon
+ * <- ELSE removed after statement close
+ *
+ * The m_parenStack stack is kept on a frame stack.
+ * The frame stack is need for languages that support preprocessors (C, C++, C#)
+ * that can arbitrarily change code flow. It also isolates #define macros so
+ * that they are indented independently and do not affect the rest of the program.
+ *
+ * When an #if is hit, a copy of the current frame is push on the frame stack.
+ * When an #else/#elif is hit, a copy of the current stack is pushed under the
+ * #if frame and the original (pre-#if) frame is copied to the current frame.
+ * When #endif is hit, the top frame is popped.
+ * This has the following effects:
+ * - a simple #if / #endif does not affect program flow
+ * - #if / #else /#endif - continues from the #if clause
+ *
+ * When a #define is entered, the current frame is pushed and cleared.
+ * When a #define is exited, the frame is popped.
+ */
+static void parse_cleanup(BraceState &braceState, ParsingFrame &frm, Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LTOK, "%s(%d): orig line is %zu, orig col is %zu, type is %s, tos is %zu, TOS.type is %s, TOS.stage is %s, ",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()),
+ frm.size() - 1, get_token_name(frm.top().GetOpenToken()),
+ get_brace_stage_name(frm.top().GetStage()));
+ log_pcf_flags(LTOK, pc->GetFlags());
+
+ // Mark statement starts
+ LOG_FMT(LTOK, "%s(%d): orig line is %zu, type is %s, Text() is '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), get_token_name(pc->GetType()), pc->Text());
+ LOG_FMT(LTOK, "%s(%d): frame statement count is %zu, expression count is %zu\n",
+ __func__, __LINE__, frm.GetStmtCount(), frm.GetExprCount());
+
+ if ( ( frm.GetStmtCount() == 0
+ || frm.GetExprCount() == 0)
+ && !pc->IsSemicolon()
+ && pc->IsNot(CT_BRACE_CLOSE)
+ && pc->IsNot(CT_VBRACE_CLOSE)
+ && !pc->IsString(")")
+ && !pc->IsString("]"))
+ {
+ pc->SetFlagBits(PCF_EXPR_START | ((frm.GetStmtCount() == 0) ? PCF_STMT_START : PCF_NONE));
+ LOG_FMT(LSTMT, "%s(%d): orig line is %zu, 1.marked '%s' as %s, start statement count is %zu, expression count is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->Text(),
+ pc->TestFlags(PCF_STMT_START) ? "statement" : "expression", frm.GetStmtCount(),
+ frm.GetExprCount());
+ pc->TestFlags(PCF_STMT_START) ? log_ruleStart("start statement", pc) : log_ruleStart("start expression", pc);
+ }
+ frm.SetStmtCount(frm.GetStmtCount() + 1);
+ frm.SetExprCount(frm.GetExprCount() + 1);
+ LOG_FMT(LTOK, "%s(%d): frame statement count is %zu, expression count is %zu\n",
+ __func__, __LINE__, frm.GetStmtCount(), frm.GetExprCount());
+
+ if (frm.GetSParenCount() > 0)
+ {
+ pc->SetFlagBits(PCF_IN_SPAREN);
+
+ // Mark everything in the for statement
+ for (int tmp = static_cast<int>(frm.size()) - 2; tmp >= 0; tmp--)
+ {
+ if (frm.at(tmp).GetOpenToken() == CT_FOR)
+ {
+ pc->SetFlagBits(PCF_IN_FOR);
+ break;
+ }
+ }
+
+ // Mark the parent on semicolons in for() statements
+ if ( pc->Is(CT_SEMICOLON)
+ && frm.size() > 2
+ && frm.prev().GetOpenToken() == CT_FOR)
+ {
+ pc->SetParentType(CT_FOR);
+ }
+ }
+
+ // Check the progression of complex statements
+ if ( frm.top().GetStage() != E_BraceStage::NONE
+ && !pc->Is(CT_AUTORELEASEPOOL)
+ && check_complex_statements(frm, pc, braceState))
+ {
+ return;
+ }
+
+ /*
+ * Check for a virtual brace statement close due to a semicolon.
+ * The virtual brace will get handled the next time through.
+ * The semicolon isn't handled at all.
+ * TODO: may need to float VBRACE past comments until newline?
+ */
+ if (frm.top().GetOpenToken() == CT_VBRACE_OPEN)
+ {
+ if (pc->IsSemicolon())
+ {
+ braceState.consumed = true;
+ close_statement(frm, pc, braceState);
+ }
+ else if ( language_is_set(LANG_PAWN)
+ && pc->Is(CT_BRACE_CLOSE))
+ {
+ close_statement(frm, pc, braceState);
+ }
+ else if ( language_is_set(LANG_D)
+ && pc->Is(CT_BRACE_CLOSE))
+ {
+ close_statement(frm, pc, braceState);
+ }
+ }
+
+ // Handle close parenthesis, vbrace, brace, and square
+ if ( pc->Is(CT_PAREN_CLOSE)
+ || pc->Is(CT_BRACE_CLOSE)
+ || pc->Is(CT_VBRACE_CLOSE)
+ || pc->Is(CT_ANGLE_CLOSE)
+ || pc->Is(CT_MACRO_CLOSE)
+ || pc->Is(CT_SQUARE_CLOSE))
+ {
+ // Change CT_PAREN_CLOSE into CT_SPAREN_CLOSE or CT_FPAREN_CLOSE
+ if ( pc->Is(CT_PAREN_CLOSE)
+ && ( (frm.top().GetOpenToken() == CT_FPAREN_OPEN)
+ || (frm.top().GetOpenToken() == CT_SPAREN_OPEN)))
+ {
+ // TODO: fix enum hack
+ pc->SetType(static_cast<E_Token>(frm.top().GetOpenToken() + 1));
+
+ if (pc->Is(CT_SPAREN_CLOSE))
+ {
+ frm.SetSParenCount(frm.GetSParenCount() - 1);
+ pc->ResetFlagBits(PCF_IN_SPAREN);
+ }
+ }
+
+ // Make sure the open / close match
+ if (pc->IsNot((E_Token)(frm.top().GetOpenToken() + 1)))
+ {
+ if (pc->TestFlags(PCF_IN_PREPROC)) // Issue #3113, #3283
+ {
+ // do nothing
+ }
+ else
+ {
+ LOG_FMT(LWARN, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ const ParenStackEntry &AA = frm.top(); // Issue #3055
+
+ if (AA.GetOpenToken() != CT_EOF)
+ {
+ LOG_FMT(LWARN, "%s(%d): (frm.top().type + 1) is %s\n",
+ __func__, __LINE__, get_token_name((E_Token)(frm.top().GetOpenToken() + 1)));
+ }
+
+ if ( frm.top().GetOpenToken() != CT_EOF
+ && frm.top().GetOpenToken() != CT_PP_DEFINE)
+ {
+ LOG_FMT(LWARN, "%s(%d): File: %s, orig line is %zu, orig col is %zu, Error: Unexpected '%s' for '%s', which was on line %zu\n",
+ __func__, __LINE__, cpd.filename.c_str(), pc->GetOrigLine(), pc->GetOrigCol(),
+ pc->Text(), get_token_name(frm.top().GetOpenChunk()->GetType()),
+ frm.top().GetOpenChunk()->GetOrigLine());
+ print_stack(LBCSPOP, "=Error ", frm);
+ exit(EXIT_FAILURE);
+ }
+ }
+ }
+ else
+ {
+ braceState.consumed = true;
+
+ // Copy the parent, update the parenthesis/brace levels
+ pc->SetParentType(frm.top().GetParent());
+ frm.SetParenLevel(frm.GetParenLevel() - 1);
+
+ if ( pc->Is(CT_BRACE_CLOSE)
+ || pc->Is(CT_VBRACE_CLOSE)
+ || pc->Is(CT_MACRO_CLOSE))
+ {
+ frm.SetBraceLevel(frm.GetBraceLevel() - 1);
+ LOG_FMT(LBCSPOP, "%s(%d): frame brace level decreased to %zu",
+ __func__, __LINE__, frm.GetBraceLevel());
+ log_pcf_flags(LBCSPOP, pc->GetFlags());
+ }
+ pc->SetLevel(frm.GetParenLevel());
+ pc->SetBraceLevel(frm.GetBraceLevel());
+
+ // Pop the entry
+ LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ print_stack(LBCSPOP, "-Close ", frm);
+
+ if ( frm.top().GetStage() == E_BraceStage::NONE
+ && ( pc->Is(CT_VBRACE_CLOSE)
+ || pc->Is(CT_BRACE_CLOSE)
+ || pc->Is(CT_SEMICOLON))
+ && frm.top().GetOpenChunk()->Is(CT_VBRACE_OPEN))
+ {
+ // frames for functions are not created as they are for an if
+ // this here is a hackish solution to close a vbrace of a block that
+ // contains the function
+ frm.push(Chunk::NullChunkPtr, __func__, __LINE__); // <- dummy frame for the function
+ frm.top().SetStage(E_BraceStage::BRACE2);
+ }
+
+ // See if we are in a complex statement
+ if (frm.top().GetStage() != E_BraceStage::NONE)
+ {
+ handle_complex_close(frm, pc, braceState);
+ }
+ }
+ }
+
+ /*
+ * In this state, we expect a semicolon, but we'll also hit the closing
+ * sparen, so we need to check braceState.consumed to see if the close sparen
+ * was already handled.
+ */
+ if (frm.top().GetStage() == E_BraceStage::WOD_SEMI)
+ {
+ if (braceState.consumed)
+ {
+ /*
+ * If consumed, then we are on the close sparen.
+ * PAWN: Check the next chunk for a semicolon. If it isn't, then
+ * add a virtual semicolon, which will get handled on the next pass.
+ */
+ if (language_is_set(LANG_PAWN))
+ {
+ Chunk *tmp = pc->GetNextNcNnl();
+
+ if (!tmp->IsSemicolon())
+ {
+ pawn_add_vsemi_after(pc);
+ }
+ }
+ }
+ else
+ {
+ // Complain if this ISN'T a semicolon, but close out WHILE_OF_DO anyway
+ if (pc->IsSemicolon())
+ {
+ braceState.consumed = true;
+ pc->SetParentType(CT_WHILE_OF_DO);
+ }
+ else
+ {
+ LOG_FMT(LWARN, "%s: %s(%d): %zu: Error: Expected a semicolon for WHILE_OF_DO, but got '%s'\n",
+ cpd.filename.c_str(), __func__, __LINE__, pc->GetOrigLine(),
+ get_token_name(pc->GetType()));
+ exit(EX_SOFTWARE);
+ }
+ handle_complex_close(frm, pc, braceState);
+ }
+ }
+ // Get the parent type for brace and parenthesis open
+ E_Token parentType = pc->GetParentType();
+
+ if ( pc->Is(CT_PAREN_OPEN)
+ || pc->Is(CT_FPAREN_OPEN)
+ || pc->Is(CT_SPAREN_OPEN)
+ || pc->Is(CT_BRACE_OPEN))
+ {
+ Chunk *prev = pc->GetPrevNcNnl();
+
+ if (prev->IsNotNullChunk())
+ {
+ if ( pc->Is(CT_PAREN_OPEN)
+ || pc->Is(CT_FPAREN_OPEN)
+ || pc->Is(CT_SPAREN_OPEN))
+ {
+ // Set the parent for parenthesis and change parenthesis type
+ if ( prev->Is(CT_IF)
+ || prev->Is(CT_CONSTEXPR)
+ || prev->Is(CT_ELSEIF)
+ || prev->Is(CT_WHILE)
+ || prev->Is(CT_WHILE_OF_DO)
+ || prev->Is(CT_DO)
+ || prev->Is(CT_FOR)
+ || prev->Is(CT_SWITCH)
+ || prev->Is(CT_CATCH)
+ || prev->Is(CT_SYNCHRONIZED)
+ || prev->Is(CT_D_VERSION)
+ || prev->Is(CT_D_VERSION_IF)
+ || prev->Is(CT_D_SCOPE)
+ || prev->Is(CT_D_SCOPE_IF))
+ {
+ pc->SetType(CT_SPAREN_OPEN);
+ parentType = frm.top().GetOpenToken();
+ frm.SetSParenCount(frm.GetSParenCount() + 1);
+ }
+ else if (prev->Is(CT_FUNCTION))
+ {
+ pc->SetType(CT_FPAREN_OPEN);
+ parentType = CT_FUNCTION;
+ }
+ // NS_ENUM and NS_OPTIONS are followed by a (type, name) pair
+ else if ( prev->Is(CT_ENUM)
+ && language_is_set(LANG_OC))
+ {
+ // Treat both as CT_ENUM since the syntax is identical
+ pc->SetType(CT_FPAREN_OPEN);
+ parentType = CT_ENUM;
+ }
+ else if (prev->Is(CT_DECLSPEC)) // Issue 1289
+ {
+ parentType = CT_DECLSPEC;
+ }
+ // else: no need to set parent
+ }
+ else // must be CT_BRACE_OPEN
+ {
+ // Set the parent for open braces
+ if (frm.top().GetStage() != E_BraceStage::NONE)
+ {
+ parentType = frm.top().GetOpenToken();
+ }
+ else if ( prev->Is(CT_ASSIGN)
+ && (prev->GetStr()[0] == '='))
+ {
+ parentType = CT_ASSIGN;
+ }
+ else if ( prev->Is(CT_RETURN)
+ && language_is_set(LANG_CPP))
+ {
+ parentType = CT_RETURN;
+ }
+ // Carry through CT_ENUM parent in NS_ENUM (type, name) {
+ // only to help the vim command }
+ else if ( prev->Is(CT_FPAREN_CLOSE)
+ && language_is_set(LANG_OC)
+ && prev->GetParentType() == CT_ENUM)
+ {
+ parentType = CT_ENUM;
+ }
+ else if (prev->Is(CT_FPAREN_CLOSE))
+ {
+ parentType = CT_FUNCTION;
+ }
+ // else: no need to set parent
+ }
+ }
+ }
+
+ /*
+ * Adjust the level for opens & create a stack entry
+ * Note that CT_VBRACE_OPEN has already been handled.
+ */
+ if ( pc->Is(CT_BRACE_OPEN)
+ || pc->Is(CT_PAREN_OPEN)
+ || pc->Is(CT_FPAREN_OPEN)
+ || pc->Is(CT_SPAREN_OPEN)
+ || pc->Is(CT_ANGLE_OPEN)
+ || pc->Is(CT_MACRO_OPEN)
+ || pc->Is(CT_SQUARE_OPEN))
+ {
+ frm.SetParenLevel(frm.GetParenLevel() + 1);
+
+ if ( pc->Is(CT_BRACE_OPEN)
+ || pc->Is(CT_MACRO_OPEN))
+ {
+ // Issue #1813
+ bool single = false;
+
+ if (pc->GetParentType() == CT_NAMESPACE)
+ {
+ LOG_FMT(LBCSPOP, "%s(%d): parent type is NAMESPACE\n",
+ __func__, __LINE__);
+ Chunk *tmp = frm.top().GetOpenChunk();
+
+ if (tmp->GetParentType() == CT_NAMESPACE)
+ {
+ LOG_FMT(LBCSPOP, "%s(%d): tmp->GetParentType() is NAMESPACE\n",
+ __func__, __LINE__);
+
+ log_rule_B("indent_namespace");
+ log_rule_B("indent_namespace_single_indent");
+
+ if ( options::indent_namespace()
+ && options::indent_namespace_single_indent())
+ {
+ LOG_FMT(LBCSPOP, "%s(%d): Options are SINGLE\n",
+ __func__, __LINE__);
+ single = true;
+ }
+ }
+ }
+ LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s, parent type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
+
+ if (!single)
+ {
+ frm.SetBraceLevel(frm.GetBraceLevel() + 1);
+ LOG_FMT(LBCSPOP, "%s(%d): frame brace level increased to %zu\n",
+ __func__, __LINE__, frm.GetBraceLevel());
+ }
+ }
+ frm.push(pc, __func__, __LINE__);
+ frm.top().SetParent(parentType);
+ pc->SetParentType(parentType);
+ }
+ // Issue #2281
+
+ if ( pc->Is(CT_BRACE_OPEN)
+ && pc->GetParentType() == CT_SWITCH)
+ {
+ size_t idx = frm.size();
+ LOG_FMT(LBCSPOP, "%s(%d): idx is %zu\n",
+ __func__, __LINE__, idx);
+ Chunk *saved = frm.at(idx - 2).GetOpenChunk();
+
+ if (saved->IsNotNullChunk())
+ {
+ // set parent member
+ pc->SetParent(saved);
+ }
+ }
+
+ if ( pc->Is(CT_CASE)
+ || pc->Is(CT_DEFAULT))
+ {
+ Chunk *prev = pc->GetPrevNcNnl(); // Issue #3176
+
+ if ( pc->Is(CT_CASE)
+ || ( pc->Is(CT_DEFAULT)
+ && prev->IsNot(CT_ASSIGN)))
+ {
+ // it is a CT_DEFAULT from a switch
+ LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ pc->SetParentType(CT_SWITCH);
+ size_t idx = frm.size();
+ LOG_FMT(LBCSPOP, "%s(%d): idx is %zu\n",
+ __func__, __LINE__, idx);
+ Chunk *saved = frm.at(idx - 2).GetOpenChunk();
+
+ if (saved->IsNotNullChunk())
+ {
+ // set parent member
+ pc->SetParent(saved);
+ }
+ }
+ }
+
+ if (pc->Is(CT_BREAK))
+ {
+ LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ size_t idx = frm.size();
+ LOG_FMT(LBCSPOP, "%s(%d): idx is %zu\n",
+ __func__, __LINE__, idx);
+ Chunk *saved = frm.at(idx - 2).GetOpenChunk();
+
+ if (saved->IsNotNullChunk())
+ {
+ // set parent member
+ pc->SetParent(saved);
+ }
+ }
+ const pattern_class_e patcls = get_token_pattern_class(pc->GetType());
+
+ /*
+ * Create a stack entry for complex statements:
+ * if, elseif, switch, for, while, synchronized, using, lock, with,
+ * version, CT_D_SCOPE_IF
+ */
+ if (patcls == pattern_class_e::BRACED)
+ {
+ frm.push(pc, __func__, __LINE__, (pc->Is(CT_DO) ? E_BraceStage::BRACE_DO
+ : E_BraceStage::BRACE2));
+ // "+ComplexBraced"
+ }
+ else if (patcls == pattern_class_e::PBRACED)
+ {
+ E_BraceStage bs = E_BraceStage::PAREN1;
+
+ if ( pc->Is(CT_WHILE)
+ && maybe_while_of_do(pc))
+ {
+ pc->SetType(CT_WHILE_OF_DO);
+ bs = E_BraceStage::WOD_PAREN;
+ }
+ frm.push(pc, __func__, __LINE__, bs);
+ // "+ComplexParenBraced"
+ }
+ else if (patcls == pattern_class_e::OPBRACED)
+ {
+ frm.push(pc, __func__, __LINE__, E_BraceStage::OP_PAREN1);
+ // "+ComplexOpParenBraced");
+ }
+ else if (patcls == pattern_class_e::ELSE)
+ {
+ frm.push(pc, __func__, __LINE__, E_BraceStage::ELSEIF);
+ // "+ComplexElse");
+ }
+
+ /*
+ * Mark simple statement/expression starts
+ * - after { or }
+ * - after ';', but not if the paren stack top is a paren
+ * - after '(' that has a parent type of CT_FOR
+ */
+ if ( pc->Is(CT_SQUARE_OPEN)
+ || ( pc->Is(CT_BRACE_OPEN)
+ && pc->GetParentType() != CT_ASSIGN)
+ || pc->Is(CT_BRACE_CLOSE)
+ || pc->Is(CT_VBRACE_CLOSE)
+ || ( pc->Is(CT_SPAREN_OPEN)
+ && pc->GetParentType() == CT_FOR)
+ || pc->Is(CT_COLON)
+ || pc->Is(CT_OC_END)
+ || ( pc->IsSemicolon()
+ && frm.top().GetOpenToken() != CT_PAREN_OPEN
+ && frm.top().GetOpenToken() != CT_FPAREN_OPEN
+ && frm.top().GetOpenToken() != CT_SPAREN_OPEN)
+ || pc->Is(CT_MACRO)) // Issue #2742
+ {
+ LOG_FMT(LSTMT, "%s(%d): orig line is %zu, reset1 stmt on '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->Text());
+ frm.SetStmtCount(0);
+ frm.SetExprCount(0);
+ LOG_FMT(LTOK, "%s(%d): frame statement count is %zu, expression count is %zu\n",
+ __func__, __LINE__, frm.GetStmtCount(), frm.GetExprCount());
+ }
+ // Mark expression starts
+ LOG_FMT(LSTMT, "%s(%d): Mark expression starts: orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ Chunk *tmp = pc->GetNextNcNnl();
+
+ if ( pc->Is(CT_ARITH)
+ || pc->Is(CT_SHIFT)
+ || pc->Is(CT_ASSIGN)
+ || pc->Is(CT_CASE)
+ || pc->Is(CT_COMPARE)
+ || ( pc->Is(CT_STAR)
+ && tmp->IsNot(CT_STAR))
+ || pc->Is(CT_BOOL)
+ || pc->Is(CT_MINUS)
+ || pc->Is(CT_PLUS)
+ || pc->Is(CT_CARET)
+ || pc->Is(CT_ANGLE_OPEN)
+ || pc->Is(CT_ANGLE_CLOSE)
+ || pc->Is(CT_RETURN)
+ || pc->Is(CT_THROW)
+ || pc->Is(CT_GOTO)
+ || pc->Is(CT_CONTINUE)
+ || pc->Is(CT_PAREN_OPEN)
+ || pc->Is(CT_FPAREN_OPEN)
+ || pc->Is(CT_SPAREN_OPEN)
+ || pc->Is(CT_BRACE_OPEN)
+ || pc->IsSemicolon()
+ || pc->Is(CT_COMMA)
+ || pc->Is(CT_NOT)
+ || pc->Is(CT_INV)
+ || pc->Is(CT_COLON)
+ || pc->Is(CT_QUESTION))
+ {
+ frm.SetExprCount(0);
+ LOG_FMT(LSTMT, "%s(%d): orig line is %zu, orig col is %zu, reset expr on '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ }
+} // parse_cleanup
+
+
+static bool check_complex_statements(ParsingFrame &frm, Chunk *pc, const BraceState &braceState)
+{
+ LOG_FUNC_ENTRY();
+
+ E_BraceStage atest = frm.top().GetStage();
+
+ LOG_FMT(LBCSPOP, "%s(%d): atest is %s\n",
+ __func__, __LINE__, get_brace_stage_name(atest));
+
+ // Turn an optional parenthesis into either a real parenthesis or a brace
+ if (frm.top().GetStage() == E_BraceStage::OP_PAREN1)
+ {
+ frm.top().SetStage(pc->IsNot(CT_PAREN_OPEN)
+ ? E_BraceStage::BRACE2
+ : E_BraceStage::PAREN1);
+ LOG_FMT(LBCSPOP, "%s(%d): frm.top().stage is now %s\n",
+ __func__, __LINE__, get_brace_stage_name(frm.top().GetStage()));
+ }
+
+ // Check for CT_ELSE after CT_IF
+ while (frm.top().GetStage() == E_BraceStage::ELSE)
+ {
+ if (pc->Is(CT_ELSE))
+ {
+ // Replace CT_IF with CT_ELSE on the stack & we are done
+ frm.top().SetOpenToken(CT_ELSE);
+ frm.top().SetStage(E_BraceStage::ELSEIF);
+ print_stack(LBCSSWAP, "=Swap ", frm);
+
+ return(true);
+ }
+ // Remove the CT_IF and close the statement
+ LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ print_stack(LBCSPOP, "-IF-CCS ", frm);
+
+ if (close_statement(frm, pc, braceState))
+ {
+ return(true);
+ }
+ }
+
+ // Check for CT_IF after CT_ELSE
+ if (frm.top().GetStage() == E_BraceStage::ELSEIF)
+ {
+ log_rule_B("indent_else_if");
+
+ if ( pc->Is(CT_IF)
+ && ( !options::indent_else_if()
+ || !pc->GetPrevNc()->IsNewline()))
+ {
+ // Replace CT_ELSE with CT_IF
+ pc->SetType(CT_ELSEIF);
+ frm.top().SetOpenToken(CT_ELSEIF);
+ frm.top().SetStage(E_BraceStage::PAREN1);
+ return(true);
+ }
+ // Jump to the 'expecting brace' stage
+ frm.top().SetStage(E_BraceStage::BRACE2);
+ }
+
+ // Check for CT_CATCH or CT_FINALLY after CT_TRY or CT_CATCH
+ while (frm.top().GetStage() == E_BraceStage::CATCH)
+ {
+ if ( pc->Is(CT_CATCH)
+ || pc->Is(CT_FINALLY))
+ {
+ // Replace CT_TRY with CT_CATCH or CT_FINALLY on the stack & we are done
+ frm.top().SetOpenToken(pc->GetType());
+
+ if (language_is_set(LANG_CS))
+ {
+ frm.top().SetStage((pc->Is(CT_CATCH)) ? E_BraceStage::CATCH_WHEN : E_BraceStage::BRACE2);
+ }
+ else
+ {
+ // historically this used OP_PAREN1; however, to my knowledge the expression after a catch clause
+ // is only optional for C# which has been handled above; therefore, this should now always expect
+ // a parenthetical expression after the catch keyword and brace after the finally keyword
+ frm.top().SetStage((pc->Is(CT_CATCH)) ? E_BraceStage::PAREN1 : E_BraceStage::BRACE2);
+ }
+ print_stack(LBCSSWAP, "=Swap ", frm);
+
+ return(true);
+ }
+ // Remove the CT_TRY and close the statement
+ LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ print_stack(LBCSPOP, "-TRY-CCS ", frm);
+
+ if (close_statement(frm, pc, braceState))
+ {
+ return(true);
+ }
+ }
+
+ // Check for optional parenthesis and optional CT_WHEN after CT_CATCH
+ if (frm.top().GetStage() == E_BraceStage::CATCH_WHEN)
+ {
+ if (pc->Is(CT_PAREN_OPEN)) // this is for the paren after "catch"
+ {
+ // Replace CT_PAREN_OPEN with CT_SPAREN_OPEN
+ pc->SetType(CT_SPAREN_OPEN);
+ frm.top().SetOpenToken(pc->GetType());
+ frm.top().SetStage(E_BraceStage::PAREN1);
+
+ return(false);
+ }
+
+ if (pc->Is(CT_WHEN))
+ {
+ frm.top().SetOpenToken(pc->GetType());
+ frm.top().SetStage(E_BraceStage::OP_PAREN1);
+
+ return(true);
+ }
+
+ if (pc->Is(CT_BRACE_OPEN))
+ {
+ frm.top().SetStage(E_BraceStage::BRACE2);
+
+ return(false);
+ }
+ }
+
+ // Check for CT_WHILE after the CT_DO
+ if (frm.top().GetStage() == E_BraceStage::WHILE)
+ {
+ if (pc->Is(CT_WHILE))
+ {
+ pc->SetType(CT_WHILE_OF_DO);
+ frm.top().SetOpenToken(CT_WHILE_OF_DO);
+ frm.top().SetStage(E_BraceStage::WOD_PAREN);
+
+ return(true);
+ }
+ LOG_FMT(LWARN, "%s(%d): %s, orig line is %zu, Error: Expected 'while', got '%s'\n",
+ __func__, __LINE__, cpd.filename.c_str(), pc->GetOrigLine(),
+ pc->Text());
+ LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ print_stack(LBCSPOP, "-Error ", frm);
+ exit(EX_SOFTWARE);
+ }
+ // Insert a CT_VBRACE_OPEN, if needed
+ // but not in a preprocessor
+ atest = frm.top().GetStage();
+
+ if ( pc->IsNot(CT_BRACE_OPEN)
+ && !pc->TestFlags(PCF_IN_PREPROC)
+ && ( (frm.top().GetStage() == E_BraceStage::BRACE2)
+ || (frm.top().GetStage() == E_BraceStage::BRACE_DO)))
+ {
+ log_rule_B("indent_using_block");
+
+ if ( language_is_set(LANG_CS)
+ && pc->Is(CT_USING_STMT)
+ && (!options::indent_using_block()))
+ {
+ // don't indent the using block
+ }
+ else
+ {
+ const E_Token parentType = frm.top().GetOpenToken();
+
+ Chunk *vbrace = insert_vbrace_open_before(pc, frm);
+ vbrace->SetParentType(parentType);
+
+ frm.SetParenLevel(frm.GetParenLevel() + 1);
+ frm.SetBraceLevel(frm.GetBraceLevel() + 1);
+ LOG_FMT(LBCSPOP, "%s(%d): frame brace level increased to %zu\n",
+ __func__, __LINE__, frm.GetBraceLevel());
+ log_pcf_flags(LBCSPOP, pc->GetFlags());
+
+ frm.push(vbrace, __func__, __LINE__, E_BraceStage::NONE);
+ // "+VBrace");
+
+ frm.top().SetParent(parentType);
+
+ // update the level of pc
+ pc->SetLevel(frm.GetParenLevel());
+ pc->SetBraceLevel(frm.GetBraceLevel());
+
+ // Mark as a start of a statement
+ frm.SetStmtCount(0);
+ frm.SetExprCount(0);
+ LOG_FMT(LTOK, "%s(%d): frame statement count is %zu, expression count is %zu\n",
+ __func__, __LINE__, frm.GetStmtCount(), frm.GetExprCount());
+ pc->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
+ frm.SetStmtCount(1);
+ frm.SetExprCount(1);
+ LOG_FMT(LSTMT, "%s(%d): orig line is %zu, 2.marked '%s' as stmt start\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->Text());
+ }
+ }
+
+ // Check for "constexpr" after CT_IF or CT_ELSEIF
+ if ( frm.top().GetStage() == E_BraceStage::PAREN1
+ && ( frm.top().GetOpenToken() == CT_IF
+ || frm.top().GetOpenToken() == CT_ELSEIF)
+ && pc->Is(CT_CONSTEXPR))
+ {
+ return(false);
+ }
+
+ // Verify open parenthesis in complex statement
+ if ( pc->IsNot(CT_PAREN_OPEN)
+ && ( (frm.top().GetStage() == E_BraceStage::PAREN1)
+ || (frm.top().GetStage() == E_BraceStage::WOD_PAREN)))
+ {
+ LOG_FMT(LWARN, "%s(%d): %s, orig line is %zu, Error: Expected '(', got '%s' for '%s'\n",
+ __func__, __LINE__, cpd.filename.c_str(), pc->GetOrigLine(), pc->Text(),
+ get_token_name(frm.top().GetOpenToken()));
+
+ // Throw out the complex statement
+ LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ print_stack(LBCSPOP, "-Error ", frm);
+ exit(EX_SOFTWARE);
+ }
+ return(false);
+} // check_complex_statements
+
+
+static bool handle_complex_close(ParsingFrame &frm, Chunk *pc, const BraceState &braceState)
+{
+ LOG_FUNC_ENTRY();
+
+ if (frm.top().GetStage() == E_BraceStage::PAREN1)
+ {
+ if (pc->GetNext()->GetType() == CT_WHEN)
+ {
+ frm.top().SetOpenToken(pc->GetType());
+ frm.top().SetStage(E_BraceStage::CATCH_WHEN);
+
+ return(true);
+ }
+ // PAREN1 always => BRACE2
+ frm.top().SetStage(E_BraceStage::BRACE2);
+ }
+ else if (frm.top().GetStage() == E_BraceStage::BRACE2)
+ {
+ // BRACE2: IF => ELSE, anything else => close
+ if ( (frm.top().GetOpenToken() == CT_IF)
+ || (frm.top().GetOpenToken() == CT_ELSEIF))
+ {
+ frm.top().SetStage(E_BraceStage::ELSE);
+
+ // If the next chunk isn't CT_ELSE, close the statement
+ Chunk *next = pc->GetNextNcNnl();
+
+ if ( next->IsNullChunk()
+ || next->IsNot(CT_ELSE))
+ {
+ LOG_FMT(LBCSPOP, "%s(%d): no CT_ELSE, pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ print_stack(LBCSPOP, "-IF-HCS ", frm);
+
+ return(close_statement(frm, pc, braceState));
+ }
+ }
+ else if ( (frm.top().GetOpenToken() == CT_TRY)
+ || (frm.top().GetOpenToken() == CT_CATCH))
+ {
+ frm.top().SetStage(E_BraceStage::CATCH);
+
+ // If the next chunk isn't CT_CATCH or CT_FINALLY, close the statement
+ Chunk *next = pc->GetNextNcNnl();
+
+ if ( next->IsNot(CT_CATCH)
+ && next->IsNot(CT_FINALLY))
+ {
+ LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ print_stack(LBCSPOP, "-TRY-HCS ", frm);
+
+ return(close_statement(frm, pc, braceState));
+ }
+ }
+ else
+ {
+ LOG_FMT(LNOTE, "%s(%d): close_statement on %s E_BraceStage::BRACE2\n",
+ __func__, __LINE__, get_token_name(frm.top().GetOpenToken()));
+ LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ print_stack(LBCSPOP, "-HCC B2 ", frm);
+
+ return(close_statement(frm, pc, braceState));
+ }
+ }
+ else if (frm.top().GetStage() == E_BraceStage::BRACE_DO)
+ {
+ frm.top().SetStage(E_BraceStage::WHILE);
+ }
+ else if (frm.top().GetStage() == E_BraceStage::WOD_PAREN)
+ {
+ LOG_FMT(LNOTE, "%s(%d): close_statement on %s E_BraceStage::WOD_PAREN\n",
+ __func__, __LINE__, get_token_name(frm.top().GetOpenToken()));
+ frm.top().SetStage(E_BraceStage::WOD_SEMI);
+ print_stack(LBCSPOP, "-HCC WoDP ", frm);
+ }
+ else if (frm.top().GetStage() == E_BraceStage::WOD_SEMI)
+ {
+ LOG_FMT(LNOTE, "%s(%d): close_statement on %s E_BraceStage::WOD_SEMI\n",
+ __func__, __LINE__, get_token_name(frm.top().GetOpenToken()));
+ LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ print_stack(LBCSPOP, "-HCC WoDS ", frm);
+
+ return(close_statement(frm, pc, braceState));
+ }
+ else
+ {
+ // PROBLEM
+ LOG_FMT(LWARN, "%s(%d): %s:%zu Error: TOS.type='%s' TOS.stage=%u\n",
+ __func__, __LINE__, cpd.filename.c_str(), pc->GetOrigLine(),
+ get_token_name(frm.top().GetOpenToken()),
+ (unsigned int)frm.top().GetStage());
+ exit(EX_SOFTWARE);
+ }
+ return(false);
+} // handle_complex_close
+
+
+static void mark_namespace(Chunk *pns)
+{
+ LOG_FUNC_ENTRY();
+ // Issue #1813
+ Chunk *br_close;
+ bool is_using = false;
+
+ Chunk *pc = pns->GetPrevNcNnl();
+
+ if (pc->Is(CT_USING))
+ {
+ is_using = true;
+ pns->SetParentType(CT_USING);
+ }
+ pc = pns->GetNextNcNnl();
+
+ while (pc->IsNotNullChunk())
+ {
+ pc->SetParentType(CT_NAMESPACE);
+
+ if (pc->IsNot(CT_BRACE_OPEN))
+ {
+ if (pc->Is(CT_SEMICOLON))
+ {
+ if (is_using)
+ {
+ pc->SetParentType(CT_USING);
+ }
+ return;
+ }
+ pc = pc->GetNextNcNnl();
+ continue;
+ }
+ log_rule_B("indent_namespace_limit");
+
+ if ( (options::indent_namespace_limit() > 0)
+ && ((br_close = pc->GetClosingParen())->IsNotNullChunk()))
+ {
+ // br_close->GetOrigLine() is always >= pc->GetOrigLine();
+ size_t numberOfLines = br_close->GetOrigLine() - pc->GetOrigLine() - 1; // Issue #2345
+ LOG_FMT(LTOK, "%s(%d): br_close orig line is %zu, pc orig line is %zu\n",
+ __func__, __LINE__, br_close->GetOrigLine(), pc->GetOrigLine());
+ LOG_FMT(LTOK, "%s(%d): numberOfLines is %zu, indent_namespace_limit() is %d\n",
+ __func__, __LINE__, numberOfLines, options::indent_namespace_limit());
+
+ log_rule_B("indent_namespace_limit");
+
+ if (numberOfLines > options::indent_namespace_limit())
+ {
+ LOG_FMT(LTOK, "%s(%d): PCF_LONG_BLOCK is set\n", __func__, __LINE__);
+ pc->SetFlagBits(PCF_LONG_BLOCK);
+ br_close->SetFlagBits(PCF_LONG_BLOCK);
+ }
+ }
+ flag_parens(pc, PCF_IN_NAMESPACE, CT_NONE, CT_NAMESPACE, false);
+ return;
+ }
+} // mark_namespace
+
+
+static Chunk *insert_vbrace(Chunk *pc, bool after, const ParsingFrame &frm)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk chunk;
+
+ chunk.SetParentType(frm.top().GetOpenToken());
+ chunk.SetOrigLine(pc->GetOrigLine());
+ chunk.SetLevel(frm.GetParenLevel());
+ chunk.SetPpLevel(frm.GetPpLevel());
+ chunk.SetBraceLevel(frm.GetBraceLevel());
+ chunk.SetFlags(pc->GetFlags() & PCF_COPY_FLAGS);
+ chunk.Str() = "";
+
+ if (after)
+ {
+ chunk.SetOrigCol(pc->GetOrigCol());
+ chunk.SetType(CT_VBRACE_CLOSE);
+ return(chunk.CopyAndAddAfter(pc));
+ }
+ Chunk *ref = pc->GetPrev();
+
+ if (ref->IsNullChunk())
+ {
+ return(Chunk::NullChunkPtr);
+ }
+
+ if (!ref->TestFlags(PCF_IN_PREPROC))
+ {
+ chunk.ResetFlagBits(PCF_IN_PREPROC);
+ }
+ bool ref_is_comment = ref->IsComment(); // Issue #3351
+
+ while (ref->IsCommentOrNewline())
+ {
+ ref->SetLevel(ref->GetLevel() + 1);
+ ref->SetBraceLevel(ref->GetBraceLevel() + 1);
+ ref = ref->GetPrev();
+ }
+
+ if (ref->IsNullChunk())
+ {
+ return(Chunk::NullChunkPtr);
+ }
+
+ // Don't back into a preprocessor
+ if ( !pc->TestFlags(PCF_IN_PREPROC)
+ && ref->TestFlags(PCF_IN_PREPROC))
+ {
+ if (ref->Is(CT_PREPROC_BODY))
+ {
+ while ( ref->IsNotNullChunk()
+ && ref->TestFlags(PCF_IN_PREPROC))
+ {
+ ref = ref->GetPrev();
+ }
+ }
+ else
+ {
+ ref = ref->GetNext();
+
+ if (ref->Is(CT_COMMENT)) // Issue #3034
+ {
+ ref = ref->GetNextNc();
+ }
+ }
+ }
+
+ if (ref_is_comment) // Issue #3351
+ {
+ ref = ref->GetNext();
+ }
+
+ if (ref->IsNullChunk())
+ {
+ return(Chunk::NullChunkPtr);
+ }
+ chunk.SetOrigLine(ref->GetOrigLine());
+ chunk.SetOrigCol(ref->GetOrigCol());
+ chunk.SetColumn(ref->GetColumn() + ref->Len() + 1);
+ chunk.SetPpLevel(ref->GetPpLevel()); // Issue #3055
+ chunk.SetType(CT_VBRACE_OPEN);
+
+ return(chunk.CopyAndAddAfter(ref));
+} // insert_vbrace
+
+
+bool close_statement(ParsingFrame &frm, Chunk *pc, const BraceState &braceState)
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc->IsNullChunk())
+ {
+ throw invalid_argument(string(__func__) + ":" + to_string(__LINE__)
+ + "args cannot be null chunk");
+ }
+ LOG_FMT(LTOK, "%s(%d): orig line is %zu, type is %s, '%s' type is %s, stage is %u\n",
+ __func__, __LINE__, pc->GetOrigLine(),
+ get_token_name(pc->GetType()), pc->Text(),
+ get_token_name(frm.top().GetOpenToken()),
+ (unsigned int)frm.top().GetStage());
+
+ if (braceState.consumed)
+ {
+ frm.SetStmtCount(0);
+ frm.SetExprCount(0);
+ LOG_FMT(LSTMT, "%s(%d): orig line is %zu> reset2 stmt on '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->Text());
+ }
+ /*
+ * Insert a CT_VBRACE_CLOSE, if needed:
+ * If we are in a virtual brace and we are not ON a CT_VBRACE_CLOSE add one
+ */
+ Chunk *vbc = pc;
+
+ if (frm.top().GetOpenToken() == CT_VBRACE_OPEN)
+ {
+ // If the current token has already been consumed, then add after it
+ if (braceState.consumed)
+ {
+ insert_vbrace_close_after(pc, frm);
+ }
+ else
+ {
+ // otherwise, add before it and consume the vbrace
+ vbc = pc->GetPrevNcNnl();
+
+ frm.SetParenLevel(frm.GetParenLevel() - 1);
+ frm.SetBraceLevel(frm.GetBraceLevel() - 1);
+ vbc = insert_vbrace_close_after(vbc, frm);
+ vbc->SetParentType(frm.top().GetParent());
+
+ LOG_FMT(LBCSPOP, "%s(%d): frame brace level decreased to %zu\n",
+ __func__, __LINE__, frm.GetBraceLevel());
+ log_pcf_flags(LBCSPOP, pc->GetFlags());
+ LOG_FMT(LBCSPOP, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+
+ // Update the token level
+ pc->SetLevel(frm.GetParenLevel());
+ pc->SetBraceLevel(frm.GetBraceLevel());
+
+ print_stack(LBCSPOP, "-CS VB ", frm);
+
+ // And repeat the close
+ close_statement(frm, pc, braceState);
+ return(true);
+ }
+ }
+
+ // See if we are done with a complex statement
+ if (frm.top().GetStage() != E_BraceStage::NONE)
+ {
+ if (handle_complex_close(frm, vbc, braceState))
+ {
+ return(true);
+ }
+ }
+ return(false);
+} // close_statement
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/brace_cleanup.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/brace_cleanup.h
new file mode 100644
index 00000000..10bc482a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/brace_cleanup.h
@@ -0,0 +1,23 @@
+/**
+ * @file brace_cleanup.h
+ * prototypes for brace_cleanup.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef BRACE_CLEANUP_H_INCLUDED
+#define BRACE_CLEANUP_H_INCLUDED
+
+#include "uncrustify_types.h"
+// necessary to not sort
+#include "parsing_frame.h"
+
+/**
+ * Scans through the whole list and does stuff.
+ * It has to do some tricks to parse preprocessors.
+ */
+void brace_cleanup();
+
+
+#endif /* BRACE_CLEANUP_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/braces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/braces.cpp
new file mode 100644
index 00000000..c4b4b666
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/braces.cpp
@@ -0,0 +1,1696 @@
+/**
+ * @file braces.cpp
+ * Adds or removes braces.
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "braces.h"
+
+#include "calculate_closing_brace_position.h"
+#include "combine_tools.h"
+#include "newlines.h"
+#include "prototypes.h"
+
+constexpr static auto LCURRENT = LBR;
+
+using namespace uncrustify;
+
+using std::vector;
+
+
+//! Converts a single brace into a virtual brace
+static void convert_brace(Chunk *br);
+
+
+//! Converts a single virtual brace into a real brace
+static void convert_vbrace(Chunk *br);
+
+
+static void convert_vbrace_to_brace();
+
+
+//! Go backwards to honor brace newline removal limits
+static void examine_braces();
+
+
+/**
+ * Step forward and count the number of semi colons at the current level.
+ * Abort if more than 1 or if we enter a preprocessor
+ */
+static void examine_brace(Chunk *bopen);
+
+
+static void move_case_break();
+
+
+static void move_case_return();
+
+
+static void mod_case_brace();
+
+
+static void mod_full_brace_if_chain();
+
+
+/**
+ * Checks to see if the braces can be removed.
+ * - less than a certain length
+ * - doesn't mess up if/else stuff
+ */
+static bool can_remove_braces(Chunk *bopen);
+
+
+/**
+ * Checks to see if the virtual braces should be converted to real braces.
+ * - over a certain length
+ *
+ * @param vbopen Virtual Brace Open chunk
+ *
+ * @return true (convert to real braces) or false (leave alone)
+ */
+static bool should_add_braces(Chunk *vbopen);
+
+
+/**
+ * Collect the text into txt that contains the full tag name.
+ * Mainly for collecting namespace 'a.b.c' or function 'foo::bar()' names.
+ */
+static void append_tag_name(UncText &txt, Chunk *pc);
+
+
+//! Remove the case brace, if allowable.
+static Chunk *mod_case_brace_remove(Chunk *br_open);
+
+
+//! Add the case brace, if allowable.
+static Chunk *mod_case_brace_add(Chunk *cl_colon);
+
+
+/**
+ * Traverse the if chain and see if all can be removed
+ *
+ * @param br_start chunk pointing to opening brace of if clause
+ */
+static void process_if_chain(Chunk *br_start);
+
+
+/**
+ * Check if parenthesis pair that comes before a brace spans multiple lines
+ *
+ *
+ * @param brace the brace chunk whose predecessing parenthesis will be checked
+ *
+ * @pre it needs to be of type CT_BRACE_OPEN or CT_BRACE_CLOSE,
+ * its parent type needs to be one of this types:
+ * CT_IF, CT_ELSEIF, CT_FOR, CT_USING_STMT, CT_WHILE,
+ * CT_FUNC_CLASS_DEF, CT_FUNC_DEF
+ *
+ * @return false: if preconditions are not met,
+ * if an error occurs while counting the newline between the
+ * parenthesis or
+ * when no newlines are found between the parenthesis
+ */
+static bool paren_multiline_before_brace(Chunk *brace)
+{
+ if ( ( brace->IsNot(CT_BRACE_OPEN)
+ && brace->IsNot(CT_BRACE_CLOSE))
+ || ( brace->GetParentType() != CT_IF
+ && brace->GetParentType() != CT_ELSEIF
+ && brace->GetParentType() != CT_FOR
+ && brace->GetParentType() != CT_USING_STMT
+ && brace->GetParentType() != CT_WHILE
+ && brace->GetParentType() != CT_FUNC_CLASS_DEF
+ && brace->GetParentType() != CT_FUNC_DEF))
+ {
+ return(false);
+ }
+ const auto paren_t = CT_SPAREN_CLOSE;
+
+ // find parenthesis pair of the if/for/while/...
+ auto paren_close = brace->GetPrevType(paren_t, brace->GetLevel(), E_Scope::ALL);
+ auto paren_open = paren_close->GetOpeningParen();
+
+ if ( paren_close->IsNullChunk()
+ || paren_open->IsNullChunk()
+ || paren_close == brace
+ || paren_open == paren_close)
+ {
+ return(false);
+ }
+ // determine number of lines in the parenthesis pair spans
+ auto nl_count = size_t{};
+ const auto ret_flag = newlines_between(paren_open, paren_close, nl_count);
+
+ if (!ret_flag)
+ {
+ LOG_FMT(LERR, "%s(%d): newlines_between error\n", __func__, __LINE__);
+ return(false);
+ }
+ // nl_count = 0 -> 1 line
+ return(nl_count > 0);
+}
+
+
+void do_braces()
+{
+ LOG_FUNC_ENTRY();
+ // Mark one-liners
+ // Issue #2232 put this at the beginning
+ Chunk *pc = Chunk::GetHead()->GetNextNcNnl();
+
+ while (pc->IsNotNullChunk())
+ {
+ if ( pc->IsNot(CT_BRACE_OPEN)
+ && pc->IsNot(CT_VBRACE_OPEN))
+ {
+ pc = pc->GetNextNcNnl();
+ continue;
+ }
+ Chunk *br_open = pc;
+ const E_Token brc_type = E_Token(pc->GetType() + 1); // corresponds to closing type
+ // Detect empty bodies
+ Chunk *tmp = pc->GetNextNcNnl();
+
+ if (tmp->Is(brc_type))
+ {
+ br_open->SetFlagBits(PCF_EMPTY_BODY);
+ tmp->SetFlagBits(PCF_EMPTY_BODY);
+ }
+ // Scan for the brace close or a newline
+ tmp = br_open->GetNextNc();
+
+ while (tmp->IsNotNullChunk())
+ {
+ if (tmp->IsNewline())
+ {
+ break;
+ }
+
+ if ( tmp->Is(brc_type)
+ && br_open->GetLevel() == tmp->GetLevel())
+ {
+ flag_series(br_open, tmp, PCF_ONE_LINER);
+ break;
+ }
+ tmp = tmp->GetNextNc();
+ }
+ pc = pc->GetNextNcNnl();
+ }
+ log_rule_B("mod_full_brace_if_chain");
+ log_rule_B("mod_full_brace_if_chain_only");
+
+ if ( options::mod_full_brace_if_chain()
+ || options::mod_full_brace_if_chain_only())
+ {
+ mod_full_brace_if_chain();
+ }
+ log_rule_B("mod_full_brace_if");
+ log_rule_B("mod_full_brace_do");
+ log_rule_B("mod_full_brace_for");
+ log_rule_B("mod_full_brace_using");
+ log_rule_B("mod_full_brace_while");
+
+ if ((options::mod_full_brace_if() |
+ options::mod_full_brace_do() |
+ options::mod_full_brace_for() |
+ options::mod_full_brace_using() |
+ options::mod_full_brace_while()) & IARF_REMOVE)
+ {
+ examine_braces();
+ }
+ // convert vbraces if needed
+ log_rule_B("mod_full_brace_if");
+ log_rule_B("mod_full_brace_do");
+ log_rule_B("mod_full_brace_for");
+ log_rule_B("mod_full_brace_function");
+ log_rule_B("mod_full_brace_using");
+ log_rule_B("mod_full_brace_while");
+
+ if ((options::mod_full_brace_if() |
+ options::mod_full_brace_do() |
+ options::mod_full_brace_for() |
+ options::mod_full_brace_function() |
+ options::mod_full_brace_using() |
+ options::mod_full_brace_while()) & IARF_ADD)
+ {
+ convert_vbrace_to_brace();
+ }
+ log_rule_B("mod_case_brace");
+
+ if (options::mod_case_brace() != IARF_IGNORE)
+ {
+ mod_case_brace();
+ }
+ log_rule_B("mod_move_case_break");
+
+ if (options::mod_move_case_break())
+ {
+ move_case_break();
+ }
+ log_rule_B("mod_move_case_return");
+
+ if (options::mod_move_case_return())
+ {
+ move_case_return();
+ }
+} // do_braces
+
+
+static void examine_braces()
+{
+ LOG_FUNC_ENTRY();
+
+ log_rule_B("mod_full_brace_nl_block_rem_mlcond");
+ const auto multiline_block = options::mod_full_brace_nl_block_rem_mlcond();
+
+ log_rule_B("mod_full_brace_if");
+ log_rule_B("mod_full_brace_do");
+ log_rule_B("mod_full_brace_for");
+ log_rule_B("mod_full_brace_using");
+ log_rule_B("mod_full_brace_while");
+
+ for (Chunk *pc = Chunk::GetTail(); pc->IsNotNullChunk();)
+ {
+ Chunk *prev = pc->GetPrevType(CT_BRACE_OPEN);
+
+ if ( pc->Is(CT_BRACE_OPEN)
+ && !pc->TestFlags(PCF_IN_PREPROC)
+ && ( ( ( pc->GetParentType() == CT_IF
+ || pc->GetParentType() == CT_ELSE
+ || pc->GetParentType() == CT_ELSEIF)
+ && options::mod_full_brace_if() == IARF_REMOVE)
+ || ( pc->GetParentType() == CT_DO
+ && options::mod_full_brace_do() == IARF_REMOVE)
+ || ( pc->GetParentType() == CT_FOR
+ && options::mod_full_brace_for() == IARF_REMOVE)
+ || ( pc->GetParentType() == CT_USING_STMT
+ && options::mod_full_brace_using() == IARF_REMOVE)
+ || ( pc->GetParentType() == CT_WHILE
+ && options::mod_full_brace_while() == IARF_REMOVE)))
+ {
+ if ( multiline_block
+ && paren_multiline_before_brace(pc))
+ {
+ pc = prev;
+ continue;
+ }
+ examine_brace(pc);
+ }
+ pc = prev;
+ }
+} // examine_braces
+
+
+static bool should_add_braces(Chunk *vbopen)
+{
+ LOG_FUNC_ENTRY();
+ log_rule_B("mod_full_brace_nl");
+ const size_t nl_max = options::mod_full_brace_nl();
+
+ if (nl_max == 0)
+ {
+ return(false);
+ }
+ LOG_FMT(LBRDEL, "%s(%d): start on %zu:\n",
+ __func__, __LINE__, vbopen->GetOrigLine());
+
+ size_t nl_count = 0;
+
+ Chunk *pc = Chunk::NullChunkPtr;
+
+ for (pc = vbopen->GetNextNc(E_Scope::PREPROC);
+ (pc->IsNotNullChunk() && pc->GetLevel() > vbopen->GetLevel());
+ pc = pc->GetNextNc(E_Scope::PREPROC))
+ {
+ if (pc->IsNewline())
+ {
+ nl_count += pc->GetNlCount();
+ }
+ }
+
+ if ( pc->IsNotNullChunk()
+ && nl_count > nl_max
+ && vbopen->GetPpLevel() == pc->GetPpLevel())
+ {
+ LOG_FMT(LBRDEL, "%s(%d): exceeded %zu newlines\n",
+ __func__, __LINE__, nl_max);
+ return(true);
+ }
+ return(false);
+}
+
+
+static bool can_remove_braces(Chunk *bopen)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LBRDEL, "%s(%d): start on line %zu:\n",
+ __func__, __LINE__, bopen->GetOrigLine());
+
+ // Cannot remove braces inside a preprocessor
+ if (bopen->TestFlags(PCF_IN_PREPROC))
+ {
+ return(false);
+ }
+ Chunk *pc = bopen->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (pc->Is(CT_BRACE_CLOSE))
+ {
+ // Can't remove empty statement
+ return(false);
+ }
+ const size_t level = bopen->GetLevel() + 1;
+
+ log_rule_B("mod_full_brace_nl");
+ const size_t nl_max = options::mod_full_brace_nl();
+ Chunk *prev = Chunk::NullChunkPtr;
+
+ size_t semi_count = 0;
+ bool hit_semi = false;
+ size_t nl_count = 0;
+ size_t if_count = 0;
+ int br_count = 0;
+
+ pc = bopen->GetNextNc(E_Scope::ALL);
+ LOG_FMT(LBRDEL, "%s(%d): - begin with token '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+
+ while ( pc->IsNotNullChunk()
+ && pc->GetLevel() >= level)
+ {
+ LOG_FMT(LBRDEL, "%s(%d): test token '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+
+ if (pc->TestFlags(PCF_IN_PREPROC))
+ {
+ // Cannot remove braces that contain a preprocessor
+ return(false);
+ }
+
+ if (pc->IsNewline())
+ {
+ nl_count += pc->GetNlCount();
+
+ if ( nl_max > 0
+ && nl_count > nl_max)
+ {
+ LOG_FMT(LBRDEL, "%s(%d): exceeded %zu newlines\n",
+ __func__, __LINE__, nl_max);
+ return(false);
+ }
+ }
+ else
+ {
+ if (pc->Is(CT_BRACE_OPEN))
+ {
+ br_count++;
+ }
+ else if (pc->Is(CT_BRACE_CLOSE))
+ {
+ if (br_count == 0)
+ {
+ fprintf(stderr, "%s(%d): br_count is ZERO, cannot be decremented, at line %zu, column %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ br_count--;
+
+ if (pc->GetLevel() == level)
+ {
+ // mean a statement in a braces { stmt; }
+ // as a statement with a semicolon { stmt; };
+ ++semi_count;
+ hit_semi = true;
+ }
+ }
+ else if ( ( pc->Is(CT_IF)
+ || pc->Is(CT_ELSEIF))
+ && br_count == 0)
+ {
+ if_count++;
+ }
+
+ if (pc->GetLevel() == level)
+ {
+ if ( semi_count > 0
+ && hit_semi)
+ {
+ // should have bailed due to close brace level drop
+ LOG_FMT(LBRDEL, "%s(%d): no close brace\n", __func__, __LINE__);
+ return(false);
+ }
+ LOG_FMT(LBRDEL, "%s(%d): Text() '%s', orig line is %zu, semi_count is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), semi_count);
+
+ if (pc->Is(CT_ELSE))
+ {
+ LOG_FMT(LBRDEL, "%s(%d): bailed on '%s' on line %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine());
+ return(false);
+ }
+
+ if ( pc->IsSemicolon()
+ || pc->Is(CT_IF)
+ || pc->Is(CT_ELSEIF)
+ || pc->Is(CT_FOR)
+ || pc->Is(CT_DO)
+ || pc->Is(CT_WHILE)
+ || pc->Is(CT_USING_STMT)
+ || ( pc->Is(CT_BRACE_OPEN)
+ && prev->Is(CT_FPAREN_CLOSE)))
+ {
+ hit_semi |= pc->IsSemicolon();
+
+ if (++semi_count > 1)
+ {
+ LOG_FMT(LBRDEL, "%s(%d): bailed on %zu because of '%s' on line %zu\n",
+ __func__, __LINE__, bopen->GetOrigLine(), pc->Text(), pc->GetOrigLine());
+ return(false);
+ }
+ }
+ }
+ }
+ prev = pc;
+ pc = pc->GetNextNc();
+ }
+
+ if (pc->IsNullChunk())
+ {
+ LOG_FMT(LBRDEL, "%s(%d): pc is null chunk\n", __func__, __LINE__);
+ return(false);
+ }
+
+ if ( pc->Is(CT_BRACE_CLOSE)
+ && pc->GetParentType() == CT_IF)
+ {
+ Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
+ Chunk *tmp_prev = pc->GetPrevNcNnl(E_Scope::PREPROC);
+
+ if ( next->Is(CT_ELSE)
+ && tmp_prev->IsBraceClose()
+ && tmp_prev->GetParentType() == CT_IF)
+ {
+ LOG_FMT(LBRDEL, "%s(%d): - bailed on '%s'[%s] on line %zu due to 'if' and 'else' sequence\n",
+ __func__, __LINE__, get_token_name(pc->GetType()), get_token_name(pc->GetParentType()),
+ pc->GetOrigLine());
+ return(false);
+ }
+ }
+ LOG_FMT(LBRDEL, "%s(%d): - end on '%s' on line %zu. if_count is %zu semi_count is %zu\n",
+ __func__, __LINE__, get_token_name(pc->GetType()), pc->GetOrigLine(), if_count, semi_count);
+
+ return( pc->Is(CT_BRACE_CLOSE)
+ && pc->GetPpLevel() == bopen->GetPpLevel());
+} // can_remove_braces
+
+
+static void examine_brace(Chunk *bopen)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LBRDEL, "%s(%d): start on orig line %zu, bopen->GetLevel() is %zu\n",
+ __func__, __LINE__, bopen->GetOrigLine(), bopen->GetLevel());
+
+ const size_t level = bopen->GetLevel() + 1;
+
+ log_rule_B("mod_full_brace_nl");
+ const size_t nl_max = options::mod_full_brace_nl();
+
+ Chunk *prev = Chunk::NullChunkPtr;
+ size_t semi_count = 0;
+ bool hit_semi = false;
+ size_t nl_count = 0;
+ size_t if_count = 0;
+ int br_count = 0;
+
+ Chunk *pc = bopen->GetNextNc();
+
+ while ( pc->IsNotNullChunk()
+ && pc->GetLevel() >= level)
+ {
+ if (pc->Is(CT_NEWLINE))
+ {
+ LOG_FMT(LBRDEL, "%s(%d): orig line is %zu, orig col is %zu, <Newline>\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ }
+ else
+ {
+ LOG_FMT(LBRDEL, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ }
+
+ if (pc->TestFlags(PCF_IN_PREPROC))
+ {
+ // Cannot remove braces that contain a preprocessor
+ LOG_FMT(LBRDEL, "%s(%d): PREPROC\n", __func__, __LINE__);
+ return;
+ }
+
+ if (pc->IsNewline())
+ {
+ nl_count += pc->GetNlCount();
+
+ if ( nl_max > 0
+ && nl_count > nl_max)
+ {
+ LOG_FMT(LBRDEL, "%s(%d): exceeded %zu newlines\n",
+ __func__, __LINE__, nl_max);
+ return;
+ }
+ }
+ else
+ {
+ LOG_FMT(LBRDEL, "%s(%d): for pc->Text() '%s', pc->GetLevel() is %zu, bopen->GetLevel() is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetLevel(), bopen->GetLevel());
+
+ if ( pc->Is(CT_BRACE_OPEN)
+ && pc->GetLevel() == bopen->GetLevel())
+ {
+ br_count++;
+ LOG_FMT(LBRDEL, "%s(%d): br_count is now %d, pc->GetLevel() is %zu, bopen->GetLevel() is %zu\n",
+ __func__, __LINE__, br_count, pc->GetLevel(), bopen->GetLevel());
+ }
+ else if ( pc->Is(CT_BRACE_CLOSE)
+ && pc->GetLevel() == bopen->GetLevel())
+ {
+ if (br_count == 0)
+ {
+ fprintf(stderr, "%s(%d): br_count is ZERO, cannot be decremented, at line %zu, column %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ br_count--;
+ LOG_FMT(LBRDEL, "%s(%d): br_count is now %d, pc->GetLevel() is %zu, bopen->GetLevel() is %zu\n",
+ __func__, __LINE__, br_count, pc->GetLevel(), bopen->GetLevel());
+
+ if (br_count == 0)
+ {
+ Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
+
+ if ( next->IsNullChunk()
+ || next->IsNot(CT_BRACE_CLOSE))
+ {
+ LOG_FMT(LBRDEL, "%s(%d): junk after close brace\n", __func__, __LINE__);
+ return;
+ }
+ }
+ }
+ else if ( ( pc->Is(CT_IF)
+ || pc->Is(CT_ELSEIF))
+ && br_count == 0)
+ {
+ if_count++;
+ }
+ LOG_FMT(LBRDEL, "%s(%d): pc->GetLevel() is %zu, level is %zu\n",
+ __func__, __LINE__, pc->GetLevel(), level);
+
+ if (pc->GetLevel() == level)
+ {
+ if ( semi_count > 0
+ && hit_semi)
+ {
+ // should have bailed due to close brace level drop
+ LOG_FMT(LBRDEL, "%s(%d): no close brace\n", __func__, __LINE__);
+ return;
+ }
+ LOG_FMT(LBRDEL, "%s(%d): Text() '%s', orig line is %zu, semi_count is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), semi_count);
+
+ if (pc->Is(CT_ELSE))
+ {
+ LOG_FMT(LBRDEL, "%s(%d): bailed on '%s' on line %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine());
+ return;
+ }
+
+ if (prev->IsNotNullChunk())
+ {
+ LOG_FMT(LBRDEL, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', prev->Text '%s', prev->GetType() %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), prev->Text(), get_token_name(prev->GetType()));
+ }
+ else
+ {
+ LOG_FMT(LBRDEL, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', prev is a null chunk\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ }
+ LOG_FMT(LBRDEL, "%s(%d): for pc->Text() '%s', pc->GetLevel() is %zu, bopen->GetLevel() is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetLevel(), bopen->GetLevel());
+
+ if ( pc->IsSemicolon()
+ || pc->Is(CT_IF)
+ || pc->Is(CT_ELSEIF)
+ || pc->Is(CT_FOR)
+ || pc->Is(CT_DO)
+ || pc->Is(CT_WHILE)
+ || pc->Is(CT_SWITCH)
+ || pc->Is(CT_USING_STMT)
+ || ( pc->Is(CT_BRACE_OPEN)
+ && pc->GetLevel() == bopen->GetLevel())) // Issue #1758
+ {
+ LOG_FMT(LBRDEL, "%s(%d): pc->Text() '%s', orig line is %zu, orig col is %zu, level is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
+ hit_semi |= pc->IsSemicolon();
+ semi_count++;
+ LOG_FMT(LBRDEL, "%s(%d): semi_count is %zu\n",
+ __func__, __LINE__, semi_count);
+
+ if (semi_count > 1)
+ {
+ LOG_FMT(LBRDEL, "%s(%d): bailed on %zu because of '%s' on line %zu\n",
+ __func__, __LINE__, bopen->GetOrigLine(), pc->Text(), pc->GetOrigLine());
+ return;
+ }
+ }
+ }
+ }
+ prev = pc;
+ pc = pc->GetNext(); // Issue #1907
+ }
+
+ if (pc->IsNullChunk())
+ {
+ LOG_FMT(LBRDEL, "%s(%d): pc is a null chunk\n", __func__, __LINE__);
+ return;
+ }
+ LOG_FMT(LBRDEL, "%s(%d): - end on '%s' on line %zu. if_count is %zu, semi_count is %zu\n",
+ __func__, __LINE__, get_token_name(pc->GetType()), pc->GetOrigLine(), if_count, semi_count);
+
+ if (pc->Is(CT_BRACE_CLOSE))
+ {
+ Chunk *next = pc->GetNextNcNnl();
+
+ if (next->IsNotNullChunk())
+ {
+ while (next->Is(CT_VBRACE_CLOSE))
+ {
+ next = next->GetNextNcNnl();
+ }
+
+ if (next->IsNotNullChunk())
+ {
+ LOG_FMT(LBRDEL, "%s(%d): orig line is %zu, orig col is %zu, next is '%s'\n",
+ __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), get_token_name(next->GetType()));
+ }
+
+ if ( if_count > 0
+ && ( next->Is(CT_ELSE)
+ || next->Is(CT_ELSEIF)))
+ {
+ LOG_FMT(LBRDEL, "%s(%d): bailed on because 'else' is next and %zu ifs\n",
+ __func__, __LINE__, if_count);
+ return;
+ }
+ }
+ LOG_FMT(LBRDEL, "%s(%d): semi_count is %zu\n",
+ __func__, __LINE__, semi_count);
+
+ if (semi_count > 0)
+ {
+ LOG_FMT(LBRDEL, "%s(%d): bopen->GetParentType() is %s\n",
+ __func__, __LINE__, get_token_name(bopen->GetParentType()));
+
+ if (bopen->GetParentType() == CT_ELSE)
+ {
+ Chunk *tmp_next = bopen->GetNextNcNnl();
+
+ if (tmp_next->Is(CT_IF))
+ {
+ Chunk *tmp_prev = bopen->GetPrevNcNnl();
+ LOG_FMT(LBRDEL, "%s(%d): else-if removing braces on line %zu and %zu\n",
+ __func__, __LINE__, bopen->GetOrigLine(), pc->GetOrigLine());
+
+ Chunk::Delete(bopen);
+ Chunk::Delete(pc);
+ newline_del_between(tmp_prev, tmp_next);
+
+ log_rule_B("nl_else_if");
+
+ if (options::nl_else_if() & IARF_ADD)
+ {
+ newline_add_between(tmp_prev, tmp_next);
+ }
+ return;
+ }
+ }
+ // we have a pair of braces with only 1 statement inside
+ LOG_FMT(LBRDEL, "%s(%d): we have a pair of braces with only 1 statement inside\n",
+ __func__, __LINE__);
+ LOG_FMT(LBRDEL, "%s(%d): removing braces on line %zu and %zu\n",
+ __func__, __LINE__, bopen->GetOrigLine(), pc->GetOrigLine());
+ convert_brace(bopen);
+ convert_brace(pc);
+ }
+ else
+ {
+ LOG_FMT(LBRDEL, "%s(%d): empty statement\n", __func__, __LINE__);
+ }
+ }
+ else
+ {
+ LOG_FMT(LBRDEL, "%s(%d): not a close brace? - '%s'\n",
+ __func__, __LINE__, pc->Text());
+ }
+} // examine_brace
+
+
+static void convert_brace(Chunk *br)
+{
+ LOG_FUNC_ENTRY();
+
+ if (br->TestFlags(PCF_KEEP_BRACE))
+ {
+ return;
+ }
+ Chunk *tmp;
+
+ if (br->Is(CT_BRACE_OPEN))
+ {
+ br->SetType(CT_VBRACE_OPEN);
+ br->Str().clear();
+ tmp = br->GetPrev();
+
+ if (tmp->IsNullChunk())
+ {
+ return;
+ }
+ }
+ else if (br->Is(CT_BRACE_CLOSE))
+ {
+ br->SetType(CT_VBRACE_CLOSE);
+ br->Str().clear();
+ tmp = br->GetNext();
+
+ if (tmp->IsNullChunk())
+ {
+ return;
+ }
+ }
+ else
+ {
+ return;
+ }
+
+ if (tmp->IsNewline())
+ {
+ if (tmp->GetNlCount() > 1)
+ {
+ if (!br->TestFlags(PCF_ONE_LINER)) // Issue #2232
+ {
+ tmp->SetNlCount(tmp->GetNlCount() - 1);
+ LOG_FMT(LBRDEL, "%s(%d): tmp new line count is %zu\n",
+ __func__, __LINE__, tmp->GetNlCount());
+ }
+ }
+ else
+ {
+ // Issue #2219
+ // look for opening brace
+ Chunk *brace = Chunk::NullChunkPtr;
+
+ if (br->Is(CT_VBRACE_OPEN))
+ {
+ brace = tmp;
+ }
+ else if (br->Is(CT_VBRACE_CLOSE))
+ {
+ brace = br->GetOpeningParen();
+
+ if (brace->IsNullChunk())
+ {
+ brace = br->GetPrevType(CT_BRACE_OPEN, br->GetLevel());
+ }
+ }
+
+ if ( br->Is(CT_VBRACE_OPEN)
+ || ( br->Is(CT_VBRACE_CLOSE)
+ && brace->GetOrigLine() < tmp->GetOrigLine()))
+ {
+ if (tmp->SafeToDeleteNl())
+ {
+ Chunk::Delete(tmp);
+ }
+ }
+ }
+ }
+} // convert_brace
+
+
+static void convert_vbrace(Chunk *vbr)
+{
+ LOG_FUNC_ENTRY();
+
+ if (vbr->Is(CT_VBRACE_OPEN))
+ {
+ vbr->SetType(CT_BRACE_OPEN);
+ vbr->Str() = "{";
+
+ /*
+ * If the next chunk is a preprocessor, then move the open brace after the
+ * preprocessor.
+ */
+ Chunk *tmp = vbr->GetNext();
+
+ if (tmp->Is(CT_PREPROC))
+ {
+ tmp = vbr->GetNext(E_Scope::PREPROC);
+ vbr->MoveAfter(tmp);
+ newline_add_after(vbr);
+ }
+ }
+ else if (vbr->Is(CT_VBRACE_CLOSE))
+ {
+ vbr->SetType(CT_BRACE_CLOSE);
+ vbr->Str() = "}";
+
+ /*
+ * If the next chunk is a comment, followed by a newline, then
+ * move the brace after the newline and add another newline after
+ * the close brace, unless we're keeping a one-liner.
+ */
+ Chunk *tmp = vbr->GetNext();
+
+ if ( tmp->IsComment()
+ && ( !vbr->TestFlags(PCF_ONE_LINER)
+ || !options::nl_if_leave_one_liners()))
+ {
+ tmp = tmp->GetNext();
+
+ if (tmp->IsNewline())
+ {
+ vbr->MoveAfter(tmp);
+ newline_add_after(vbr);
+ }
+ }
+ }
+} // convert_vbrace
+
+
+static void convert_vbrace_to_brace()
+{
+ LOG_FUNC_ENTRY();
+
+ // Find every vbrace open
+ log_rule_B("mod_full_brace_if");
+ log_rule_B("mod_full_brace_if_chain");
+ log_rule_B("mod_full_brace_for");
+ log_rule_B("mod_full_brace_do");
+ log_rule_B("mod_full_brace_while");
+ log_rule_B("mod_full_brace_using");
+ log_rule_B("mod_full_brace_function");
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ if (pc->IsNot(CT_VBRACE_OPEN))
+ {
+ continue;
+ }
+ auto const in_preproc = pc->TestFlags(PCF_IN_PREPROC);
+
+ if ( ( ( pc->GetParentType() == CT_IF
+ || pc->GetParentType() == CT_ELSE
+ || pc->GetParentType() == CT_ELSEIF)
+ && (options::mod_full_brace_if() & IARF_ADD)
+ && !options::mod_full_brace_if_chain())
+ || ( pc->GetParentType() == CT_FOR
+ && (options::mod_full_brace_for() & IARF_ADD))
+ || ( pc->GetParentType() == CT_DO
+ && (options::mod_full_brace_do() & IARF_ADD))
+ || ( pc->GetParentType() == CT_WHILE
+ && (options::mod_full_brace_while() & IARF_ADD))
+ || ( pc->GetParentType() == CT_USING_STMT
+ && (options::mod_full_brace_using() & IARF_ADD))
+ || ( pc->GetParentType() == CT_FUNC_DEF
+ && (options::mod_full_brace_function() & IARF_ADD)))
+ {
+ // Find the matching vbrace close
+ Chunk *vbc = Chunk::NullChunkPtr;
+ Chunk *tmp = pc->GetNext();
+
+ while (tmp->IsNotNullChunk())
+ {
+ if ( in_preproc
+ && !tmp->TestFlags(PCF_IN_PREPROC))
+ {
+ // Can't leave a preprocessor
+ break;
+ }
+
+ if ( pc->GetBraceLevel() == tmp->GetBraceLevel()
+ && tmp->Is(CT_VBRACE_CLOSE)
+ && pc->GetParentType() == tmp->GetParentType()
+ && ((tmp->GetFlags() & PCF_IN_PREPROC) == (pc->GetFlags() & PCF_IN_PREPROC)))
+ {
+ vbc = tmp;
+ break;
+ }
+ tmp = tmp->GetNext();
+ }
+
+ if (vbc->IsNullChunk())
+ {
+ continue;
+ }
+ // if we found a corresponding virtual closing brace
+ convert_vbrace(pc); // convert both the opening
+ convert_vbrace(vbc); // and closing brace
+ }
+ }
+} // convert_vbrace_to_brace
+
+
+Chunk *insert_comment_after(Chunk *ref, E_Token cmt_type,
+ const UncText &cmt_text)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk new_cmt = *ref;
+
+ new_cmt.SetFlags(ref->GetFlags() & PCF_COPY_FLAGS);
+ new_cmt.SetType(cmt_type);
+ new_cmt.Str().clear();
+
+ if (cmt_type == CT_COMMENT_CPP)
+ {
+ new_cmt.Str().append("// ");
+ new_cmt.Str().append(cmt_text);
+ }
+ else
+ {
+ if (ref->Is(CT_PP_ELSE))
+ { // make test c/ 02501 stable
+ new_cmt.Str().append(" ");
+ }
+ new_cmt.Str().append("/* ");
+ new_cmt.Str().append(cmt_text);
+ new_cmt.Str().append(" */");
+ }
+ // TODO: expand comment type to cover other comment styles?
+
+ new_cmt.SetColumn(ref->GetColumn() + ref->Len() + 1);
+ new_cmt.SetOrigCol(new_cmt.GetColumn());
+
+ return(new_cmt.CopyAndAddAfter(ref));
+}
+
+
+static void append_tag_name(UncText &txt, Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *tmp = pc->GetPrevNcNnl();
+
+ LOG_FMT(LMCB, "%s(%d): txt is '%s'\n",
+ __func__, __LINE__, txt.c_str());
+
+ // step backwards over all a::b stuff
+ while (tmp->IsNotNullChunk())
+ {
+ if ( tmp->IsNot(CT_DC_MEMBER)
+ && tmp->IsNot(CT_MEMBER))
+ {
+ break;
+ }
+ tmp = tmp->GetPrevNcNnl();
+ pc = tmp;
+
+ if (!tmp->IsWord())
+ {
+ break;
+ }
+ }
+ txt += pc->GetStr();
+ LOG_FMT(LMCB, "%s(%d): txt is '%s'\n",
+ __func__, __LINE__, txt.c_str());
+
+ pc = pc->GetNextNcNnl();
+
+ while (pc->IsNotNullChunk())
+ {
+ if ( pc->IsNot(CT_DC_MEMBER)
+ && pc->IsNot(CT_MEMBER))
+ {
+ break;
+ }
+ txt += pc->GetStr();
+ LOG_FMT(LMCB, "%s(%d): txt is '%s'\n",
+ __func__, __LINE__, txt.c_str());
+ pc = pc->GetNextNcNnl();
+
+ if (pc->IsNotNullChunk())
+ {
+ txt += pc->GetStr();
+ LOG_FMT(LMCB, "%s(%d): txt is '%s'\n",
+ __func__, __LINE__, txt.c_str());
+ }
+ pc = pc->GetNextNcNnl();
+ }
+} // append_tag_name
+
+
+void add_long_closebrace_comment()
+{
+ LOG_FUNC_ENTRY();
+ Chunk *fcn_pc = Chunk::NullChunkPtr;
+ Chunk *sw_pc = Chunk::NullChunkPtr;
+ Chunk *ns_pc = Chunk::NullChunkPtr;
+ Chunk *cl_pc = Chunk::NullChunkPtr;
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ if ( pc->Is(CT_FUNC_DEF)
+ || pc->Is(CT_OC_MSG_DECL))
+ {
+ fcn_pc = pc;
+ }
+ else if (pc->Is(CT_SWITCH))
+ {
+ // pointless, since it always has the text "switch"
+ sw_pc = pc;
+ }
+ else if (pc->Is(CT_NAMESPACE))
+ {
+ ns_pc = pc;
+ }
+ else if (pc->Is(CT_CLASS))
+ {
+ cl_pc = pc;
+ }
+
+ if ( pc->IsNot(CT_BRACE_OPEN)
+ || pc->TestFlags(PCF_IN_PREPROC))
+ {
+ continue;
+ }
+ Chunk *br_open = pc;
+ size_t nl_count = 0;
+
+ Chunk *tmp = pc;
+
+ while ((tmp = tmp->GetNext(E_Scope::PREPROC))->IsNotNullChunk())
+ {
+ if (tmp->IsNewline())
+ {
+ nl_count += tmp->GetNlCount();
+ continue;
+ }
+
+ // handle only matching closing braces, skip other chunks
+ if ( tmp->GetLevel() != br_open->GetLevel()
+ || tmp->IsNot(CT_BRACE_CLOSE))
+ {
+ continue;
+ }
+ Chunk *br_close = tmp;
+
+ tmp = tmp->GetNext();
+
+ // check for a possible end semicolon
+ if (tmp->Is(CT_SEMICOLON))
+ {
+ // set br_close to the semi token,
+ // as br_close is used to add the comment after it
+ br_close = tmp;
+ tmp = tmp->GetNext();
+ }
+
+ // make sure a newline follows in order to not overwrite an already
+ // existring comment
+ if ( tmp->IsNotNullChunk()
+ && !tmp->IsNewline())
+ {
+ break;
+ }
+ size_t nl_min = 0;
+ Chunk *tag_pc = Chunk::NullChunkPtr;
+ UncText xstr;
+
+ if ( br_open->GetParentType() == CT_FUNC_DEF
+ || br_open->GetParentType() == CT_OC_MSG_DECL)
+ {
+ log_rule_B("mod_add_long_function_closebrace_comment");
+ nl_min = options::mod_add_long_function_closebrace_comment();
+ tag_pc = fcn_pc;
+
+ if (tag_pc->IsNotNullChunk())
+ {
+ append_tag_name(xstr, tag_pc);
+ LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
+ __func__, __LINE__, xstr.c_str());
+ }
+ }
+ else if ( br_open->GetParentType() == CT_SWITCH
+ && sw_pc->IsNotNullChunk())
+ {
+ log_rule_B("mod_add_long_switch_closebrace_comment");
+ nl_min = options::mod_add_long_switch_closebrace_comment();
+ tag_pc = sw_pc;
+ xstr = sw_pc->GetStr();
+ LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
+ __func__, __LINE__, xstr.c_str());
+ }
+ else if ( br_open->GetParentType() == CT_NAMESPACE
+ && ns_pc->IsNotNullChunk())
+ {
+ log_rule_B("mod_add_long_namespace_closebrace_comment");
+ nl_min = options::mod_add_long_namespace_closebrace_comment();
+ tag_pc = ns_pc;
+ xstr = tag_pc->GetStr(); // add 'namespace' to the string
+ LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
+ __func__, __LINE__, xstr.c_str());
+
+ // next chunk, normally is going to be the namespace name
+ // append it with a space to generate "namespace xyz"
+ Chunk *tmp_next = tag_pc->GetNextNcNnl();
+
+ if (tmp_next->IsNot(CT_BRACE_OPEN)) // anonymous namespace -> ignore
+ {
+ xstr.append(" ");
+ LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
+ __func__, __LINE__, xstr.c_str());
+ append_tag_name(xstr, tmp_next);
+ LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
+ __func__, __LINE__, xstr.c_str());
+ }
+ }
+ else if ( br_open->GetParentType() == CT_CLASS
+ && cl_pc->IsNotNullChunk()
+ && ( !language_is_set(LANG_CPP) // proceed if not C++
+ || br_close->Is(CT_SEMICOLON))) // else a C++ class needs to end with a semicolon
+ {
+ log_rule_B("mod_add_long_class_closebrace_comment");
+ nl_min = options::mod_add_long_class_closebrace_comment();
+ tag_pc = cl_pc;
+ xstr = tag_pc->GetStr();
+ LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
+ __func__, __LINE__, xstr.c_str());
+
+ Chunk *tmp_next = cl_pc->GetNext();
+
+ if (tag_pc->IsNotNullChunk())
+ {
+ xstr.append(" ");
+ LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
+ __func__, __LINE__, xstr.c_str());
+ append_tag_name(xstr, tmp_next);
+ LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
+ __func__, __LINE__, xstr.c_str());
+ }
+ }
+
+ if ( nl_min > 0
+ && nl_count >= nl_min
+ && tag_pc->IsNotNullChunk())
+ {
+ E_Token style;
+
+ if (options::mod_add_force_c_closebrace_comment())
+ {
+ // force the C comment style
+ style = CT_COMMENT;
+ }
+ else
+ {
+ // use the comment style that fits to the selected language
+ style = language_is_set(LANG_CPP | LANG_CS)
+ ? CT_COMMENT_CPP : CT_COMMENT;
+ }
+ // Add a comment after the close brace
+ LOG_FMT(LMCB, "%s(%d): xstr is '%s'\n",
+ __func__, __LINE__, xstr.c_str());
+ insert_comment_after(br_close, style, xstr);
+ }
+ break;
+ }
+ }
+} // add_long_closebrace_comment
+
+
+static void move_case_break()
+{
+ LOG_FUNC_ENTRY();
+ Chunk *prev = Chunk::NullChunkPtr;
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ if ( pc->Is(CT_BREAK)
+ && prev->Is(CT_BRACE_CLOSE)
+ && prev->GetParentType() == CT_CASE
+ && pc->GetPrev()->IsNewline()
+ && prev->GetPrev()->IsNewline())
+ {
+ prev->SwapLines(pc);
+ }
+ prev = pc;
+ }
+}
+
+
+static void move_case_return()
+{
+ LOG_FUNC_ENTRY();
+ Chunk *prev = Chunk::NullChunkPtr;
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ if ( pc->Is(CT_RETURN)
+ && prev->Is(CT_BRACE_CLOSE)
+ && prev->GetParentType() == CT_CASE
+ && pc->GetPrev()->IsNewline()
+ && prev->GetPrev()->IsNewline())
+ {
+ // Find the end of the return statement
+ while (pc->IsNot(CT_SEMICOLON))
+ {
+ if ( pc->Is(CT_CASE)
+ || pc->Is(CT_BRACE_CLOSE))
+ {
+ // This may indicate a semicolon was missing in the code to format.
+ // Avoid moving the return statement to prevent potential unwanted errors.
+ pc = Chunk::NullChunkPtr;
+ break;
+ }
+ pc = pc->GetNext();
+ }
+ pc = pc->GetNextNl();
+ pc = pc->GetNextNcNnl();
+
+ if (pc->IsNotNullChunk())
+ {
+ // Swap all lines between brace close and current token
+ LOG_FMT(LMCB, "%s(%d): move line %zu before line %zu\n",
+ __func__, __LINE__, prev->GetOrigLine(), pc->GetOrigLine());
+ Chunk *curr = prev->GetNextNcNnl();
+
+ while (curr != pc)
+ {
+ prev->SwapLines(curr);
+ curr = prev->GetNextNcNnl();
+ }
+ }
+ }
+ prev = pc;
+ }
+} // move_case_return
+
+
+static Chunk *mod_case_brace_remove(Chunk *br_open)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LMCB, "%s(%d): line %zu",
+ __func__, __LINE__, br_open->GetOrigLine());
+
+ // Find the matching brace close
+ Chunk *next = br_open->GetNextNcNnl(E_Scope::PREPROC);
+ Chunk *br_close = br_open->GetNextType(CT_BRACE_CLOSE, br_open->GetLevel(), E_Scope::PREPROC);
+
+ if (br_close->IsNullChunk())
+ {
+ LOG_FMT(LMCB, "%s(%d): - no close\n", __func__, __LINE__);
+ return(next);
+ }
+ // Make sure 'break', 'return', 'goto', 'case' or '}' is after the close brace
+ Chunk *pc = br_close->GetNextNcNnl(E_Scope::PREPROC);
+
+ if ( pc->IsNullChunk()
+ || ( pc->IsNot(CT_BREAK)
+ && pc->IsNot(CT_RETURN)
+ && pc->IsNot(CT_CASE)
+ && pc->IsNot(CT_GOTO)
+ && pc->IsNot(CT_BRACE_CLOSE)))
+ {
+ LOG_FMT(LMCB, "%s(%d): - after '%s'\n",
+ __func__, __LINE__, (pc->IsNullChunk()) ? "null chuck" : get_token_name(pc->GetType()));
+ return(next);
+ }
+
+ // scan to make sure there are no definitions at brace level between braces
+ for (Chunk *tmp_pc = br_open;
+ tmp_pc != br_close;
+ tmp_pc = tmp_pc->GetNextNcNnl(E_Scope::PREPROC))
+ {
+ if ( tmp_pc->GetLevel() == (br_open->GetLevel() + 1)
+ && tmp_pc->TestFlags(PCF_VAR_DEF))
+ {
+ LOG_FMT(LMCB, "%s(%d): - vardef on line %zu: '%s'\n",
+ __func__, __LINE__, tmp_pc->GetOrigLine(), pc->Text());
+ return(next);
+ }
+ }
+
+ LOG_FMT(LMCB, "%s(%d): - removing braces on lines %zu and %zu\n",
+ __func__, __LINE__, br_open->GetOrigLine(), br_close->GetOrigLine());
+
+ for (Chunk *tmp_pc = br_open;
+ tmp_pc != br_close;
+ tmp_pc = tmp_pc->GetNextNcNnl(E_Scope::PREPROC))
+ {
+ if (tmp_pc->GetBraceLevel() == 0)
+ {
+ fprintf(stderr, "%s(%d): brace level is ZERO, cannot be decremented, at line %zu, column %zu\n",
+ __func__, __LINE__, tmp_pc->GetOrigLine(), tmp_pc->GetOrigCol());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ tmp_pc->SetBraceLevel(tmp_pc->GetBraceLevel() - 1);
+
+ if (tmp_pc->GetLevel() == 0)
+ {
+ fprintf(stderr, "%s(%d): tmp_pc->GetLevel() is ZERO, cannot be decremented, at line %zu, column %zu\n",
+ __func__, __LINE__, tmp_pc->GetOrigLine(), tmp_pc->GetOrigCol());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ tmp_pc->SetLevel(tmp_pc->GetLevel() - 1);
+ }
+
+ next = br_open->GetPrev(E_Scope::PREPROC);
+
+ Chunk::Delete(br_open);
+ Chunk::Delete(br_close);
+
+ return(next->GetNext(E_Scope::PREPROC));
+} // mod_case_brace_remove
+
+
+static Chunk *mod_case_brace_add(Chunk *cl_colon)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LMCB, "%s(%d): orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, cl_colon->GetOrigLine(), cl_colon->GetOrigCol());
+
+ Chunk *pc = cl_colon;
+ Chunk *last = Chunk::NullChunkPtr;
+ // look for the case token to the colon
+ Chunk *cas_ = cl_colon->GetPrevType(CT_CASE, cl_colon->GetLevel());
+ // look for the parent
+ Chunk *swit = cas_->GetParent();
+ // look for the opening brace of the switch
+ Chunk *open = swit->GetNextType(CT_BRACE_OPEN, swit->GetLevel());
+ // look for the closing brace of the switch
+ Chunk *clos = open->GetClosingParen();
+
+ // find the end of the case-block
+ pc = pc->GetNextNcNnl(E_Scope::PREPROC);
+
+ while (pc->IsNotNullChunk())
+ {
+ LOG_FMT(LMCB, "%s(%d): Text() is '%s', orig line %zu, orig col is %zu, pp level is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetPpLevel());
+
+ if (pc->GetLevel() == cl_colon->GetLevel())
+ {
+ if (pc->Is(CT_CASE))
+ {
+ LOG_FMT(LMCB, "%s(%d): Text() is '%s', orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ last = calculate_closing_brace_position(cl_colon, pc);
+ break;
+ }
+ }
+ else if (pc->GetLevel() == cl_colon->GetLevel() - 1)
+ {
+ if (pc == clos)
+ {
+ LOG_FMT(LMCB, "%s(%d): Text() is '%s', orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ // end of switch is reached
+ last = calculate_closing_brace_position(cl_colon, pc);
+ LOG_FMT(LMCB, "%s(%d): last->Text() is '%s', orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, last->Text(), last->GetOrigLine(), last->GetOrigCol());
+ break;
+ }
+ }
+ pc = pc->GetNextNcNnl(E_Scope::PREPROC);
+ }
+
+ if (last->IsNullChunk())
+ {
+ LOG_FMT(LMCB, "%s(%d): - last is null chunk\n", __func__, __LINE__);
+ Chunk *next = cl_colon->GetNextNcNnl(E_Scope::PREPROC);
+ return(next);
+ }
+ LOG_FMT(LMCB, "%s(%d): last->Text() is '%s', orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, last->Text(), last->GetOrigLine(), last->GetOrigCol());
+ LOG_FMT(LMCB, "%s(%d): adding braces after '%s' on line %zu\n",
+ __func__, __LINE__, cl_colon->Text(), cl_colon->GetOrigLine());
+
+ Chunk chunk;
+
+ chunk.SetType(CT_BRACE_OPEN);
+ chunk.SetParentType(CT_CASE);
+ chunk.SetOrigLine(cl_colon->GetOrigLine());
+ chunk.SetOrigCol(cl_colon->GetOrigCol());
+ chunk.SetLevel(cl_colon->GetLevel());
+ chunk.SetPpLevel(cl_colon->GetPpLevel());
+ chunk.SetBraceLevel(cl_colon->GetBraceLevel());
+ chunk.SetFlags(pc->GetFlags() & PCF_COPY_FLAGS);
+ chunk.Str() = "{";
+ Chunk *br_open = chunk.CopyAndAddAfter(cl_colon);
+
+ chunk.SetType(CT_BRACE_CLOSE);
+ chunk.SetOrigLine(last->GetOrigLine());
+ chunk.SetOrigCol(last->GetOrigCol());
+ chunk.Str() = "}";
+ Chunk *br_close = chunk.CopyAndAddAfter(last);
+
+ for (pc = br_open->GetNext(E_Scope::PREPROC);
+ pc != br_close;
+ pc = pc->GetNext(E_Scope::PREPROC))
+ {
+ pc->SetLevel(pc->GetLevel() + 1);
+ pc->SetBraceLevel(pc->GetBraceLevel() + 1);
+ }
+
+ return(br_open);
+} // mod_case_brace_add
+
+
+static void mod_case_brace()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc = Chunk::GetHead();
+
+ // Make sure to start outside of a preprocessor line (see issue #3366)
+ if (pc->IsPreproc())
+ {
+ pc = pc->GetNextNcNnlNpp();
+ }
+
+ while (pc->IsNotNullChunk())
+ {
+ Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (next->IsNullChunk())
+ {
+ return;
+ }
+ log_rule_B("mod_case_brace");
+
+ if ( options::mod_case_brace() == IARF_REMOVE
+ && pc->Is(CT_BRACE_OPEN)
+ && pc->GetParentType() == CT_CASE)
+ {
+ log_rule_B("mod_case_brace - add");
+ pc = mod_case_brace_remove(pc);
+ }
+ else if ( (options::mod_case_brace() & IARF_ADD)
+ && pc->Is(CT_CASE_COLON)
+ && next->IsNot(CT_BRACE_OPEN)
+ && next->IsNot(CT_BRACE_CLOSE)
+ && next->IsNot(CT_CASE))
+ {
+ log_rule_B("mod_case_brace - remove");
+ pc = mod_case_brace_add(pc);
+ }
+ else
+ {
+ pc = pc->GetNextNcNnl(E_Scope::PREPROC);
+ }
+ }
+} // mod_case_brace
+
+
+static void process_if_chain(Chunk *br_start)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LBRCH, "%s(%d): if starts on line %zu, orig col is %zu.\n",
+ __func__, __LINE__, br_start->GetOrigLine(), br_start->GetOrigCol());
+
+ vector<Chunk *> braces;
+
+ braces.reserve(16);
+
+ bool must_have_braces = false;
+ bool has_unbraced_block = false;
+
+ Chunk *pc = br_start;
+
+ while (pc->IsNotNullChunk())
+ {
+ LOG_CHUNK(LTOK, pc);
+
+ if (pc->Is(CT_BRACE_OPEN))
+ {
+ const bool tmp = can_remove_braces(pc);
+ LOG_FMT(LBRCH, "%s(%d): braces.size() is %zu, line is %zu, - can%s remove %s\n",
+ __func__, __LINE__, braces.size(), pc->GetOrigLine(), tmp ? "" : "not",
+ get_token_name(pc->GetType()));
+
+ if ( !tmp
+ || options::mod_full_brace_if_chain() == 2)
+ {
+ must_have_braces = true;
+ }
+ }
+ else
+ {
+ const bool tmp = should_add_braces(pc);
+
+ if (tmp)
+ {
+ must_have_braces = true;
+ }
+ LOG_FMT(LBRCH, "%s(%d): braces.size() is %zu, line is %zu, - %s %s\n",
+ __func__, __LINE__, braces.size(), pc->GetOrigLine(), tmp ? "should add" : "ignore",
+ get_token_name(pc->GetType()));
+
+ has_unbraced_block = true;
+ }
+
+ if ( options::mod_full_brace_if_chain() == 3
+ && !has_unbraced_block)
+ {
+ must_have_braces = true;
+ }
+ braces.push_back(pc);
+ Chunk *br_close = pc->GetClosingParen(E_Scope::PREPROC);
+
+ if (br_close->IsNullChunk())
+ {
+ break;
+ }
+ braces.push_back(br_close);
+
+ pc = br_close->GetNextNcNnl(E_Scope::PREPROC);
+
+ if ( pc->IsNullChunk()
+ || pc->IsNot(CT_ELSE))
+ {
+ break;
+ }
+ log_rule_B("mod_full_brace_if_chain_only");
+
+ if (options::mod_full_brace_if_chain_only())
+ {
+ // There is an 'else' - we want full braces.
+ must_have_braces = true;
+ }
+ pc = pc->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (pc->Is(CT_ELSEIF))
+ {
+ while ( pc->IsNot(CT_VBRACE_OPEN)
+ && pc->IsNot(CT_BRACE_OPEN))
+ {
+ pc = pc->GetNextNcNnl(E_Scope::PREPROC);
+ }
+ }
+
+ if (pc->IsNullChunk())
+ {
+ break;
+ }
+
+ if ( pc->IsNot(CT_BRACE_OPEN)
+ && pc->IsNot(CT_VBRACE_OPEN))
+ {
+ break;
+ }
+ }
+
+ if (must_have_braces)
+ {
+ LOG_FMT(LBRCH, "%s(%d): add braces on lines[%zu]:",
+ __func__, __LINE__, braces.size());
+
+ const auto ite = braces.rend();
+
+ for (auto itc = braces.rbegin(); itc != ite; ++itc)
+ {
+ const auto brace = *itc;
+
+ brace->SetFlagBits(PCF_KEEP_BRACE);
+
+ if (brace->IsVBrace())
+ {
+ LOG_FMT(LBRCH, "%s(%d): %zu",
+ __func__, __LINE__, brace->GetOrigLine());
+ convert_vbrace(brace);
+ }
+ else
+ {
+ LOG_FMT(LBRCH, "%s(%d): {%zu}",
+ __func__, __LINE__, brace->GetOrigLine());
+ }
+ }
+
+ LOG_FMT(LBRCH, "\n");
+ }
+ else if (options::mod_full_brace_if_chain())
+ {
+ log_rule_B("mod_full_brace_if_chain");
+ LOG_FMT(LBRCH, "%s(%d): remove braces on lines[%zu]:\n",
+ __func__, __LINE__, braces.size());
+
+ /*
+ * This might run because either
+ * mod_full_brace_if_chain or mod_full_brace_if_chain_only
+ * is used.
+ * We only want to remove braces if the first one is active.
+ */
+ log_rule_B("mod_full_brace_nl_block_rem_mlcond");
+ const auto multiline_block = options::mod_full_brace_nl_block_rem_mlcond();
+
+ LOG_FMT(LBRCH, "%s(%d): remove braces on lines:\n", __func__, __LINE__);
+
+ // Issue #2229
+ const auto ite = braces.end();
+
+ for (auto itc = braces.begin(); itc != ite; ++itc)
+ {
+ const auto brace = *itc;
+
+ if ( ( brace->Is(CT_BRACE_OPEN)
+ || brace->Is(CT_BRACE_CLOSE))
+ && (brace->GetParentType() != CT_BRACED_INIT_LIST)
+ && (multiline_block ? !paren_multiline_before_brace(brace) : true))
+ {
+ LOG_FMT(LBRCH, "%s(%d): brace orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, brace->GetOrigLine(), brace->GetOrigCol());
+ convert_brace(brace);
+ }
+ else
+ {
+ LOG_FMT(LBRCH, "%s(%d): brace orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, brace->GetOrigLine(), brace->GetOrigCol());
+ }
+ }
+ }
+} // process_if_chain
+
+
+static void mod_full_brace_if_chain()
+{
+ LOG_FUNC_ENTRY();
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if ( pc->IsBraceOpen()
+ && pc->GetParentType() == CT_IF)
+ {
+ process_if_chain(pc);
+ }
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/braces.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/braces.h
new file mode 100644
index 00000000..2536aabf
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/braces.h
@@ -0,0 +1,33 @@
+/**
+ * @file braces.h
+ * prototypes for braces.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef BRACES_H_INCLUDED
+#define BRACES_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+
+//! Change virtual braces into real braces
+void do_braces();
+
+/**
+ * See the preprocessor counterpart:
+ * add_long_preprocessor_conditional_block_comment
+ * in output.cpp
+ */
+void add_long_closebrace_comment();
+
+
+/**
+ * Adds a comment after the ref chunk
+ * Returns the added chunk or Chunk::NullChunkPtr
+ */
+Chunk *insert_comment_after(Chunk *ref, E_Token cmt_type, const UncText &cmt_text);
+
+
+#endif /* BRACES_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/calculate_closing_brace_position.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/calculate_closing_brace_position.cpp
new file mode 100644
index 00000000..eda1c8e2
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/calculate_closing_brace_position.cpp
@@ -0,0 +1,197 @@
+/**
+ * @file calculate_closing_brace_position.cpp
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#include "calculate_closing_brace_position.h"
+
+#include "chunk.h"
+
+using namespace uncrustify;
+
+
+Chunk *calculate_closing_brace_position(const Chunk *cl_colon, Chunk *pc)
+{
+ LOG_FMT(LMCB, "%s(%d): cl_colon->Text() is '%s', orig line %zu, orig col is %zu, level is %zu\n",
+ __func__, __LINE__, cl_colon->Text(), cl_colon->GetOrigLine(), cl_colon->GetOrigCol(), cl_colon->GetLevel());
+ LOG_FMT(LMCB, "%s(%d): pc->Text() is '%s', orig line %zu, orig col is %zu, level is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
+ // end of block is reached
+ // look back over newline, preprocessor BUT NOT #endif
+
+ // Issue #3058
+
+ // examine going back the tokens: look for a "brace closing" or a "semi colon" until the colon
+ // look back over comment, newline, preprocessor BUT NOT #endif
+
+ size_t check_level = 0;
+
+ if (pc->Is(CT_BRACE_CLOSE))
+ {
+ check_level = pc->GetLevel() + 1;
+ }
+ else
+ {
+ check_level = pc->GetLevel();
+ }
+ size_t erst_found = 0;
+ Chunk *is_brace_close = Chunk::NullChunkPtr;
+ Chunk *is_semicolon = Chunk::NullChunkPtr;
+ Chunk *is_comment = Chunk::NullChunkPtr;
+ Chunk *back = pc->GetPrevNnl();
+
+ while (back->IsNotNullChunk())
+ {
+ if (back == cl_colon)
+ {
+ break;
+ }
+
+ if (erst_found != 0)
+ {
+ break;
+ }
+
+ if (back->GetLevel() == check_level)
+ {
+ if (back->IsBraceClose())
+ {
+ // brace_close found
+ is_brace_close = back;
+ LOG_FMT(LMCB, "%s(%d): BRACE_CLOSE: line is %zu, col is %zu, level is %zu\n",
+ __func__, __LINE__, is_brace_close->GetOrigLine(), is_brace_close->GetOrigCol(), is_brace_close->GetLevel());
+ erst_found = 3;
+ }
+
+ if (back->Is(CT_SEMICOLON))
+ {
+ // semicolon found
+ is_semicolon = back;
+ LOG_FMT(LMCB, "%s(%d): SEMICOLON: line is %zu, col is %zu, level is %zu\n",
+ __func__, __LINE__, is_semicolon->GetOrigLine(), is_semicolon->GetOrigCol(), is_semicolon->GetLevel());
+ erst_found = 4;
+ }
+
+ if (back->IsComment())
+ {
+ // comment found
+ is_comment = back;
+ LOG_FMT(LMCB, "%s(%d): COMMENT: line is %zu, col is %zu, level is %zu\n",
+ __func__, __LINE__, back->GetOrigLine(), back->GetOrigCol(), back->GetLevel());
+ }
+ }
+ back = back->GetPrev();
+ }
+ LOG_FMT(LMCB, "%s(%d): erst_found is %zu\n",
+ __func__, __LINE__, erst_found);
+ Chunk *last = Chunk::NullChunkPtr;
+
+ if ( erst_found == 3
+ || erst_found == 4)
+ {
+ if (is_comment->IsNotNullChunk())
+ {
+ Chunk *second = Chunk::NullChunkPtr;
+
+ if (erst_found == 3)
+ {
+ second = is_brace_close;
+ }
+ else
+ {
+ // erst_found == 4
+ second = is_semicolon;
+ }
+
+ if (second->IsNotNullChunk())
+ {
+ if (is_comment->GetOrigLine() == second->GetOrigLine())
+ {
+ last = is_comment;
+
+ if (cl_colon->GetOrigLine() == is_comment->GetOrigLine())
+ {
+ last = is_comment->GetNext();
+ }
+ }
+ else
+ {
+ last = pc->GetPrevNcNnl();
+ }
+ }
+ else
+ {
+ LOG_FMT(LMCB, "\n\n%s(%d): FATAL: second is null chunk\n", __func__, __LINE__);
+ fprintf(stderr, "FATAL: second is null chunk\n");
+ fprintf(stderr, "Please make a report.\n");
+ exit(EX_SOFTWARE);
+ }
+ }
+ else
+ {
+ last = pc->GetPrevNcNnl();
+ }
+ }
+ else
+ {
+ LOG_FMT(LMCB, "\n\n%s(%d): FATAL: erst_found is not 3 or 4\n", __func__, __LINE__);
+ fprintf(stderr, "FATAL: erst_found is not 3 or 4\n");
+ fprintf(stderr, "Please make a report.\n");
+ exit(EX_SOFTWARE);
+ }
+
+ if (last->Is(CT_COMMENT_CPP)) // Issue #3058
+ {
+ last = last->GetNext();
+ }
+ LOG_FMT(LMCB, "%s(%d): last->Text() is '%s', orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, last->Text(), last->GetOrigLine(), last->GetOrigCol());
+
+ if (last->IsPreproc())
+ {
+ // we have a preprocessor token
+ while (last->IsNotNullChunk())
+ {
+ LOG_FMT(LMCB, "%s(%d): Text() is '%s', orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, last->Text(), last->GetOrigLine(), last->GetOrigCol());
+
+ if (last->Is(CT_PP_ENDIF))
+ {
+ // look for the parent and compare the positions
+ Chunk *parent_last = last->GetParent();
+ int comp = parent_last->ComparePosition(cl_colon);
+ LOG_FMT(LMCB, "%s(%d): comp is %d\n",
+ __func__, __LINE__, comp);
+
+ if (comp == -1)
+ {
+ // cl_colon is after parent_last ==>
+ // the closing brace will be set before #endif
+ Chunk *pp_start = last->GetPpStart();
+ last = pp_start->GetPrevNnl();
+ LOG_FMT(LMCB, "%s(%d): Text() is '%s', orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, last->Text(), last->GetOrigLine(), last->GetOrigCol());
+ }
+ else if (comp == 1)
+ {
+ // cl_colon is before parent_last ==>
+ // the closing brace will be set after #endif
+ LOG_FMT(LMCB, "%s(%d): Text() is '%s', orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, last->Text(), last->GetOrigLine(), last->GetOrigCol());
+ }
+ break;
+ }
+ last = last->GetPrevNcNnl();
+ LOG_FMT(LMCB, "%s(%d): Text() is '%s', orig line %zu, orig col is %zu\n",
+ __func__, __LINE__, last->Text(), last->GetOrigLine(), last->GetOrigCol());
+
+ if (!last->IsPreproc())
+ {
+ break;
+ }
+ }
+ }
+ return(last);
+} // calculate_closing_brace_position
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/calculate_closing_brace_position.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/calculate_closing_brace_position.h
index 6d2b0f06..6d2b0f06 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/calculate_closing_brace_position.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/calculate_closing_brace_position.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/change_int_types.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/change_int_types.cpp
new file mode 100644
index 00000000..e87f598b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/change_int_types.cpp
@@ -0,0 +1,186 @@
+/**
+ * @file change_int_types.cpp
+ *
+ * @author Alex Henrie
+ * @license GPL v2+
+ */
+
+#include "change_int_types.h"
+
+#include "chunk.h"
+#include "uncrustify.h"
+
+
+using namespace uncrustify;
+
+
+static bool is_storage_keyword(const Chunk *pc)
+{
+ return( strcmp(pc->Text(), "auto") == 0
+ || strcmp(pc->Text(), "const") == 0
+ || strcmp(pc->Text(), "extern") == 0
+ || strcmp(pc->Text(), "mutable") == 0
+ || strcmp(pc->Text(), "register") == 0
+ || strcmp(pc->Text(), "static") == 0
+ || strcmp(pc->Text(), "thread_local") == 0
+ || strcmp(pc->Text(), "typedef") == 0
+ || strcmp(pc->Text(), "volatile") == 0
+ || strcmp(pc->Text(), "_Atomic") == 0
+ || strcmp(pc->Text(), "_Thread_local") == 0);
+}
+
+
+static bool is_non_integer(const Chunk *pc)
+{
+ return( strcmp(pc->Text(), "char") == 0
+ || strcmp(pc->Text(), "double") == 0);
+}
+
+
+static bool find_non_storage_siblings(const Chunk *pc, Chunk * &prev, Chunk * &next)
+{
+ prev = pc->GetPrevNcNnl();
+ next = pc->GetNextNcNnl();
+
+ // Find the last token that was not a storage keyword
+ while (is_storage_keyword(prev))
+ {
+ prev = prev->GetPrevNcNnl();
+ }
+
+ // Return false if the last token indicates that this is not an integer type
+ if (is_non_integer(prev))
+ {
+ return(false);
+ }
+
+ // Find the next token that is not a storage keyword
+ while (is_storage_keyword(next))
+ {
+ next = next->GetNextNcNnl();
+ }
+
+ // Return false if the next token indicates that this is not an integer type
+ if (is_non_integer(next))
+ {
+ return(false);
+ }
+ // Return true if this is indeed an integer type
+ return(true);
+}
+
+
+static void add_or_remove_int_keyword(Chunk *pc, Chunk *sibling, iarf_e action, E_Direction dir, Chunk * &int_keyword)
+{
+ if (strcmp(sibling->Text(), "int") == 0)
+ {
+ if (action == IARF_REMOVE)
+ {
+ if (sibling == int_keyword)
+ {
+ int_keyword = Chunk::NullChunkPtr;
+ }
+ Chunk::Delete(sibling);
+ }
+ else if ( int_keyword->IsNotNullChunk()
+ && int_keyword != sibling)
+ {
+ // We added an int keyword, but now we see that there already was one.
+ // Keep one or the other but not both.
+ if (options::mod_int_prefer_int_on_left())
+ {
+ Chunk::Delete(sibling);
+ }
+ else
+ {
+ Chunk::Delete(int_keyword);
+ int_keyword = sibling;
+ }
+ }
+ else
+ {
+ int_keyword = sibling;
+ }
+ }
+ else
+ {
+ if ( action == IARF_ADD
+ || action == IARF_FORCE)
+ {
+ if (int_keyword->IsNotNullChunk())
+ {
+ // There was already an int keyword. Either keep it and don't add a
+ // new one or delete it to make way for the new one.
+ if (options::mod_int_prefer_int_on_left())
+ {
+ return;
+ }
+ else
+ {
+ Chunk::Delete(int_keyword);
+ }
+ }
+
+ if (dir == E_Direction::BACKWARD)
+ {
+ int_keyword = pc->CopyAndAddBefore(pc);
+ }
+ else
+ {
+ int_keyword = pc->CopyAndAddAfter(pc);
+ }
+ int_keyword->Str() = "int";
+ }
+ }
+} // add_or_remove_int_keyword
+
+
+void change_int_types()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *prev;
+ Chunk *next;
+ Chunk *int_keyword = Chunk::NullChunkPtr;
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ if (strcmp(pc->Text(), "short") == 0)
+ {
+ if (find_non_storage_siblings(pc, prev, next))
+ {
+ add_or_remove_int_keyword(pc, prev, options::mod_int_short(), E_Direction::BACKWARD, int_keyword);
+ add_or_remove_int_keyword(pc, next, options::mod_short_int(), E_Direction::FORWARD, int_keyword);
+ }
+ }
+ else if (strcmp(pc->Text(), "long") == 0)
+ {
+ if (find_non_storage_siblings(pc, prev, next))
+ {
+ add_or_remove_int_keyword(pc, prev, options::mod_int_long(), E_Direction::BACKWARD, int_keyword);
+ add_or_remove_int_keyword(pc, next, options::mod_long_int(), E_Direction::FORWARD, int_keyword);
+ }
+ }
+ else if (strcmp(pc->Text(), "signed") == 0)
+ {
+ if (find_non_storage_siblings(pc, prev, next))
+ {
+ add_or_remove_int_keyword(pc, prev, options::mod_int_signed(), E_Direction::BACKWARD, int_keyword);
+ add_or_remove_int_keyword(pc, next, options::mod_signed_int(), E_Direction::FORWARD, int_keyword);
+ }
+ }
+ else if (strcmp(pc->Text(), "unsigned") == 0)
+ {
+ if (find_non_storage_siblings(pc, prev, next))
+ {
+ add_or_remove_int_keyword(pc, prev, options::mod_int_unsigned(), E_Direction::BACKWARD, int_keyword);
+ add_or_remove_int_keyword(pc, next, options::mod_unsigned_int(), E_Direction::FORWARD, int_keyword);
+ }
+ }
+ else if ( strcmp(pc->Text(), "int") != 0
+ && !is_storage_keyword(pc))
+ {
+ int_keyword = Chunk::NullChunkPtr; // We are no longer in a variable declaration
+ }
+ }
+} // change_int_types
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/change_int_types.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/change_int_types.h
index b392a5d7..b392a5d7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/change_int_types.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/change_int_types.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/char_table.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/char_table.h
index bcc30404..bcc30404 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/char_table.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/char_table.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/check_template.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/check_template.cpp
new file mode 100644
index 00000000..870b3316
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/check_template.cpp
@@ -0,0 +1,536 @@
+/**
+ * @file check_template.cpp
+ *
+ * splitted from tokenize_cleanup.cpp
+ *
+ * @author Guy Maurel 2022
+ * @license GPL v2+
+ */
+
+#include "tokenize_cleanup.h"
+
+#include "check_template.h"
+#include "chunk.h"
+#include "combine.h"
+#include "flag_braced_init_list.h"
+#include "flag_decltype.h"
+#include "prototypes.h"
+
+
+using namespace uncrustify;
+
+
+bool invalid_open_angle_template(Chunk *prev)
+{
+ if (prev->IsNullChunk())
+ {
+ return(false);
+ }
+ // A template requires a word/type right before the open angle
+ return( prev->IsNot(CT_WORD)
+ && prev->IsNot(CT_TYPE)
+ && prev->IsNot(CT_COMMA)
+ && prev->IsNot(CT_QUALIFIER)
+ && prev->IsNot(CT_OPERATOR_VAL)
+ && prev->GetParentType() != CT_OPERATOR);
+}
+
+
+Chunk *handle_double_angle_close(Chunk *pc)
+{
+ Chunk *next = pc->GetNext();
+
+ if (next->IsNotNullChunk())
+ {
+ if ( pc->Is(CT_ANGLE_CLOSE)
+ && next->Is(CT_ANGLE_CLOSE)
+ && pc->GetParentType() == CT_NONE
+ && (pc->GetOrigColEnd() + 1) == next->GetOrigCol()
+ && next->GetParentType() == CT_NONE)
+ {
+ pc->Str().append('>');
+ pc->SetType(CT_SHIFT);
+ pc->SetOrigColEnd(next->GetOrigColEnd());
+
+ Chunk *tmp = next->GetNextNcNnl();
+ Chunk::Delete(next);
+ next = tmp;
+ }
+ else
+ {
+ // bug #663
+ pc->SetType(CT_COMPARE);
+ }
+ }
+ return(next);
+}
+
+
+void check_template(Chunk *start, bool in_type_cast)
+{
+ LOG_FMT(LTEMPL, "%s(%d): orig line %zu, orig col %zu:\n",
+ __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol());
+
+ Chunk *prev = start->GetPrevNcNnl(E_Scope::PREPROC);
+
+ if (prev->IsNullChunk())
+ {
+ return;
+ }
+ Chunk *end;
+ Chunk *pc;
+
+ if (prev->Is(CT_TEMPLATE))
+ {
+ LOG_FMT(LTEMPL, "%s(%d): CT_TEMPLATE:\n", __func__, __LINE__);
+
+ // We have: "template< ... >", which is a template declaration
+ size_t level = 1;
+ size_t parens = 0;
+
+ for (pc = start->GetNextNcNnl(E_Scope::PREPROC);
+ pc->IsNotNullChunk();
+ pc = pc->GetNextNcNnl(E_Scope::PREPROC))
+ {
+ LOG_FMT(LTEMPL, "%s(%d): type is %s, level is %zu\n",
+ __func__, __LINE__, get_token_name(pc->GetType()), level);
+
+ if ( (pc->GetStr()[0] == '>')
+ && (pc->Len() > 1))
+ {
+ if (pc->GetStr()[1] == '=') // Issue #1462 and #2565
+ {
+ LOG_FMT(LTEMPL, "%s(%d): do not split '%s' at orig line %zu, orig col %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ }
+ else
+ {
+ LOG_FMT(LTEMPL, "%s(%d): {split '%s' at orig line %zu, orig col %zu}\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ split_off_angle_close(pc);
+ }
+ }
+
+ if (pc->Is(CT_DECLTYPE))
+ {
+ flag_cpp_decltype(pc);
+ }
+ else if (pc->Is(CT_PAREN_OPEN))
+ {
+ ++parens;
+ }
+ else if (pc->Is(CT_PAREN_CLOSE))
+ {
+ --parens;
+ }
+
+ if (parens == 0)
+ {
+ if (pc->IsString("<"))
+ {
+ level++;
+ }
+ else if (pc->IsString(">"))
+ {
+ if (level == 0)
+ {
+ fprintf(stderr, "%s(%d): level is ZERO, cannot be decremented, at line %zu, column %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ level--;
+
+ if (level == 0)
+ {
+ break;
+ }
+ }
+ }
+ }
+
+ end = pc;
+ }
+ else
+ {
+ /*
+ * We may have something like "a< ... >", which is a template where
+ * '...' may consist of anything except a semicolon, unbalanced
+ * parens, or braces (with one exception being braced initializers
+ * embedded within decltypes).
+ *
+ * For example, braces may be encountered as such in the following
+ * snippet of valid C++ code:
+ *
+ * template<typename T,
+ * typename = enable_if_t<is_same<typename decay<T>::type,
+ * decltype (make_index_sequence<5> { })>::value>>
+ * void foo(T &&arg)
+ * {
+ *
+ * }
+ *
+ * Finally, if we are inside an 'if' statement and hit a CT_BOOL,
+ * then it isn't a template.
+ */
+
+ if (invalid_open_angle_template(prev))
+ {
+ LOG_FMT(LTEMPL, "%s(%d): - after type %s + ( - Not a template\n",
+ __func__, __LINE__, get_token_name(prev->GetType()));
+ start->SetType(CT_COMPARE);
+ return;
+ }
+ LOG_FMT(LTEMPL, "%s(%d): - prev->GetType() is %s -\n",
+ __func__, __LINE__, get_token_name(prev->GetType()));
+
+ // Scan back and make sure we aren't inside square parenthesis
+ bool in_if = false;
+ bool hit_semicolon = false;
+ pc = start->GetPrevNcNnl(E_Scope::PREPROC);
+
+ while (pc->IsNotNullChunk())
+ {
+ if ( ( pc->Is(CT_SEMICOLON)
+ && hit_semicolon)
+ || pc->Is(CT_SQUARE_CLOSE))
+ {
+ break;
+ }
+
+ if (pc->Is(CT_DECLTYPE))
+ {
+ flag_cpp_decltype(pc);
+ }
+
+ if (pc->Is(CT_BRACE_OPEN))
+ {
+ if ( !pc->TestFlags(PCF_IN_DECLTYPE)
+ || !detect_cpp_braced_init_list(pc->GetPrev(), pc))
+ {
+ break;
+ }
+ flag_cpp_braced_init_list(pc->GetPrev(), pc);
+ }
+
+ if ( pc->Is(CT_BRACE_CLOSE)
+ && pc->GetParentType() != CT_BRACED_INIT_LIST
+ && !pc->TestFlags(PCF_IN_DECLTYPE))
+ {
+ break;
+ }
+
+ if ( pc->Is(CT_SEMICOLON)
+ && !hit_semicolon)
+ {
+ hit_semicolon = true;
+ }
+
+ if ( ( ( pc->Is(CT_IF)
+ || pc->Is(CT_RETURN)
+ || pc->Is(CT_WHILE)
+ || pc->Is(CT_WHILE_OF_DO))
+ && !hit_semicolon)
+ || ( pc->Is(CT_FOR)
+ && hit_semicolon))
+ {
+ in_if = true;
+ break;
+ }
+ pc = pc->GetPrevNcNnl(E_Scope::PREPROC);
+ }
+ /*
+ * Scan forward to the angle close
+ * If we have a comparison in there, then it can't be a template.
+ */
+ const int max_token_count = 1024;
+ E_Token tokens[max_token_count];
+ size_t num_tokens = 1;
+
+ tokens[0] = CT_ANGLE_OPEN;
+
+ for (pc = start->GetNextNcNnl(E_Scope::PREPROC);
+ pc->IsNotNullChunk();
+ pc = pc->GetNextNcNnl(E_Scope::PREPROC))
+ {
+ constexpr static auto LCURRENT = LTEMPL;
+
+ LOG_FMT(LTEMPL, "%s(%d): pc orig line is %zu, orig col is %zu, type is %s, num_tokens is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()), num_tokens);
+
+ log_rule_B("tok_split_gte");
+
+ if (pc->Is(CT_BRACE_OPEN)) // Issue #2886
+ {
+ // look for the closing brace
+ Chunk *A = pc->GetClosingParen();
+ LOG_FMT(LTEMPL, "%s(%d): A orig line is %zu, orig col is %zu, type is %s\n",
+ __func__, __LINE__, A->GetOrigLine(), A->GetOrigCol(), get_token_name(A->GetType()));
+ pc = A->GetNext();
+ }
+
+ if ( (tokens[num_tokens - 1] == CT_ANGLE_OPEN)
+ && (pc->GetStr()[0] == '>')
+ && (pc->Len() > 1)
+ && ( options::tok_split_gte()
+ || ( ( pc->IsString(">>")
+ || pc->IsString(">>>"))
+ && ( num_tokens >= 2
+ || ( num_tokens >= 1
+ && in_type_cast)))))
+ {
+ LOG_FMT(LTEMPL, "%s(%d): {split '%s' at orig line %zu, orig col %zu}\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+
+ split_off_angle_close(pc);
+ }
+
+ if (pc->IsString("<"))
+ {
+ if ( num_tokens > 0 && (tokens[num_tokens - 1] == CT_PAREN_OPEN)
+ && invalid_open_angle_template(pc->GetPrev()))
+ {
+ pc->SetType(CT_COMPARE); // Issue #3127
+ }
+ else
+ {
+ tokens[num_tokens] = CT_ANGLE_OPEN;
+ num_tokens++;
+ }
+ }
+ else if (pc->IsString(">"))
+ {
+ if (num_tokens > 0 && (tokens[num_tokens - 1] == CT_PAREN_OPEN))
+ {
+ handle_double_angle_close(pc);
+ }
+ else if (--num_tokens <= 0)
+ {
+ break;
+ }
+ else if (tokens[num_tokens] != CT_ANGLE_OPEN)
+ {
+ break; // unbalanced parentheses
+ }
+ }
+ else if ( in_if
+ && ( pc->Is(CT_BOOL)
+ || pc->Is(CT_COMPARE)))
+ {
+ break;
+ }
+ else if (pc->Is(CT_BRACE_OPEN))
+ {
+ if ( !pc->TestFlags(PCF_IN_DECLTYPE)
+ || !detect_cpp_braced_init_list(pc->GetPrev(), pc))
+ {
+ break;
+ }
+ auto brace_open = pc->GetNextNcNnl();
+ auto brace_close = brace_open->GetClosingParen();
+
+ brace_open->SetParentType(CT_BRACED_INIT_LIST);
+ brace_close->SetParentType(CT_BRACED_INIT_LIST);
+ }
+ else if ( pc->Is(CT_BRACE_CLOSE)
+ && pc->GetParentType() != CT_BRACED_INIT_LIST
+ && !pc->TestFlags(PCF_IN_DECLTYPE))
+ {
+ break;
+ }
+ else if (pc->Is(CT_SEMICOLON))
+ {
+ break;
+ }
+ else if (pc->Is(CT_PAREN_OPEN))
+ {
+ if (num_tokens >= max_token_count - 1)
+ {
+ break;
+ }
+ tokens[num_tokens] = CT_PAREN_OPEN;
+ num_tokens++;
+ }
+ else if ( pc->Is(CT_QUESTION) // Issue #2949
+ && language_is_set(LANG_CPP))
+ {
+ break;
+ }
+ else if (pc->Is(CT_PAREN_CLOSE))
+ {
+ if (num_tokens == 0)
+ {
+ fprintf(stderr, "%s(%d): num_tokens is ZERO, cannot be decremented, at line %zu, column %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ num_tokens--;
+
+ if (tokens[num_tokens] != CT_PAREN_OPEN)
+ {
+ break; // unbalanced parentheses
+ }
+ }
+ }
+
+ end = pc;
+ }
+
+ if (end->Is(CT_ANGLE_CLOSE))
+ {
+ pc = end->GetNextNcNnl(E_Scope::PREPROC);
+
+ if ( pc->IsNullChunk()
+ || pc->IsNot(CT_NUMBER))
+ {
+ LOG_FMT(LTEMPL, "%s(%d): Template detected\n", __func__, __LINE__);
+ LOG_FMT(LTEMPL, "%s(%d): from orig line %zu, orig col %zu\n",
+ __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol());
+ LOG_FMT(LTEMPL, "%s(%d): to orig line %zu, orig col %zu\n",
+ __func__, __LINE__, end->GetOrigLine(), end->GetOrigCol());
+ start->SetParentType(CT_TEMPLATE);
+
+ check_template_args(start, end);
+
+ end->SetParentType(CT_TEMPLATE);
+ end->SetFlagBits(PCF_IN_TEMPLATE);
+ return;
+ }
+ }
+ LOG_FMT(LTEMPL, "%s(%d): - Not a template: end = %s\n",
+ __func__, __LINE__, (end->IsNotNullChunk() ? get_token_name(end->GetType()) : "<null>"));
+ start->SetType(CT_COMPARE);
+} // check_template
+
+
+void check_template_arg(Chunk *start, Chunk *end)
+{
+ LOG_FMT(LTEMPL, "%s(%d): Template argument detected\n", __func__, __LINE__);
+ LOG_FMT(LTEMPL, "%s(%d): from orig line %zu, orig col %zu\n",
+ __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol());
+ LOG_FMT(LTEMPL, "%s(%d): to orig line %zu, orig col %zu\n",
+ __func__, __LINE__, end->GetOrigLine(), end->GetOrigCol());
+
+ // Issue #1127
+ // MyFoo<mySize * 2> foo1;
+ // MyFoo<2*mySize * 2> foo1;
+ // Issue #1346
+ // use it as ONE line:
+ // typename std::enable_if<!std::is_void<T>::value,
+ // QVector<T> >::type dummy(const std::function<T*(const S&)>&
+ // pFunc, const QVector<S>& pItems)
+ // we need two runs
+ // 1. run to test if expression is numeric
+ bool expressionIsNumeric = false;
+ Chunk *pc = start;
+
+ while (pc != end)
+ {
+ Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
+ pc->SetFlagBits(PCF_IN_TEMPLATE);
+
+ if ( pc->Is(CT_DECLTYPE)
+ || pc->Is(CT_SIZEOF))
+ {
+ expressionIsNumeric = true;
+ break;
+ }
+
+ if (next->IsNot(CT_PAREN_OPEN))
+ {
+ if ( pc->Is(CT_NUMBER)
+ || pc->Is(CT_ARITH)
+ || pc->Is(CT_SHIFT))
+ {
+ expressionIsNumeric = true;
+ break;
+ }
+ }
+ pc = next;
+ }
+ LOG_FMT(LTEMPL, "%s(%d): expressionIsNumeric is %s\n",
+ __func__, __LINE__, expressionIsNumeric ? "TRUE" : "FALSE");
+
+ // 2. run to do the work
+ if (!expressionIsNumeric)
+ {
+ pc = start;
+
+ while (pc != end)
+ {
+ Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
+ pc->SetFlagBits(PCF_IN_TEMPLATE);
+
+ Chunk *prev = pc->GetPrevNcNnl(E_Scope::PREPROC);
+ Chunk *prev2 = prev->GetPrevNcNnl(E_Scope::PREPROC);
+
+ if ( prev->Is(CT_ELLIPSIS) // Issue #3309
+ && prev2->Is(CT_TYPENAME))
+ {
+ pc->SetType(CT_PARAMETER_PACK);
+ }
+ else
+ {
+ make_type(pc);
+ }
+ pc = next;
+ }
+ }
+} // check_template_arg
+
+
+void check_template_args(Chunk *start, Chunk *end)
+{
+ std::vector<E_Token> tokens;
+
+ // Scan for commas
+ Chunk *pc;
+
+ for (pc = start->GetNextNcNnl(E_Scope::PREPROC);
+ pc->IsNotNullChunk() && pc != end;
+ pc = pc->GetNextNcNnl(E_Scope::PREPROC))
+ {
+ switch (pc->GetType())
+ {
+ case CT_COMMA:
+
+ if (tokens.empty())
+ {
+ // Check current argument
+ check_template_args(start, pc);
+ start = pc;
+ }
+ break;
+
+ case CT_ANGLE_OPEN:
+ case CT_PAREN_OPEN:
+ tokens.push_back(pc->GetType());
+ break;
+
+ case CT_ANGLE_CLOSE:
+
+ if ( !tokens.empty()
+ && tokens.back() == CT_ANGLE_OPEN)
+ {
+ tokens.pop_back();
+ }
+ break;
+
+ case CT_PAREN_CLOSE:
+
+ if ( !tokens.empty()
+ && tokens.back() == CT_PAREN_OPEN)
+ {
+ tokens.pop_back();
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ // Check whatever is left
+ check_template_arg(start, end);
+} // check_template_args
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/check_template.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/check_template.h
new file mode 100644
index 00000000..d65f2504
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/check_template.h
@@ -0,0 +1,55 @@
+/**
+ * @file check_template.h
+ * prototypes for check_template.cpp
+ *
+ * splitted from tokenize_cleanup.cpp
+ *
+ * @author Guy Maurel 2022
+ * @license GPL v2+
+ */
+#ifndef CHECK_TEMPLATE_H_INCLUDED
+#define CHECK_TEMPLATE_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+
+/**
+ * Mark types in a single template argument.
+ *
+ * @param start chunk to start check at
+ * @param end chunk to end check at
+ */
+void check_template_arg(Chunk *start, Chunk *end);
+
+
+/**
+ * Mark types in template argument(s).
+ *
+ * @param start chunk to start check at
+ * @param end chunk to end check at
+ */
+void check_template_args(Chunk *start, Chunk *end);
+
+
+/**
+ * If there is nothing but CT_WORD and CT_MEMBER, then it's probably a
+ * template thingy. Otherwise, it's likely a comparison.
+ *
+ * @param start chunk to start check at
+ */
+void check_template(Chunk *start, bool in_type_cast);
+
+
+/**
+ * Convert '>' + '>' into '>>'
+ * If we only have a single '>', then change it to CT_COMPARE.
+ *
+ * @param pc chunk to start at
+ */
+Chunk *handle_double_angle_close(Chunk *pc);
+
+
+bool invalid_open_angle_template(Chunk *prev);
+
+
+#endif /* CHECK_TEMPLATE_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/chunk.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/chunk.cpp
new file mode 100644
index 00000000..35d9281c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/chunk.cpp
@@ -0,0 +1,915 @@
+/**
+ * @file chunk.cpp
+ * Manages and navigates the list of chunks.
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "chunk.h"
+
+#include "ListManager.h"
+#include "prototypes.h"
+#include "space.h"
+
+static ChunkListManager gChunkList; // global chunk list
+
+
+/*
+ * Chunk class methods
+ */
+
+// Null Chunk
+Chunk Chunk::NullChunk(true);
+Chunk *const Chunk::NullChunkPtr(&Chunk::NullChunk);
+
+
+void Chunk::CopyFrom(const Chunk &o)
+{
+ m_type = o.m_type;
+ m_parentType = o.m_parentType;
+ m_origLine = o.m_origLine;
+ m_origCol = o.m_origCol;
+ m_origColEnd = o.m_origColEnd;
+ m_origPrevSp = o.m_origPrevSp;
+ m_column = o.m_column;
+ m_columnIndent = o.m_columnIndent;
+ m_nlCount = o.m_nlCount;
+ m_nlColumn = o.m_nlColumn;
+ m_level = o.m_level;
+ m_braceLevel = o.m_braceLevel;
+ m_ppLevel = o.m_ppLevel;
+ m_afterTab = o.m_afterTab;
+
+ m_flags = o.m_flags;
+ m_alignmentData = o.m_alignmentData;
+ m_indentationData = o.m_indentationData;
+
+ m_next = Chunk::NullChunkPtr;
+ m_prev = Chunk::NullChunkPtr;
+ m_parent = Chunk::NullChunkPtr;
+
+ m_str = o.m_str;
+ m_trackingList = o.m_trackingList;
+}
+
+
+void Chunk::Reset()
+{
+ m_type = CT_NONE;
+ m_parentType = CT_NONE;
+ m_origLine = 0;
+ m_origCol = 0;
+ m_origColEnd = 0;
+ m_origPrevSp = 0;
+ m_column = 0;
+ m_columnIndent = 0;
+ m_nlCount = 0;
+ m_nlColumn = 0;
+ m_level = 0;
+ m_braceLevel = 0;
+ m_ppLevel = 999; // use a big value to find some errors
+ m_afterTab = false;
+
+ m_flags = PCF_NONE;
+ memset(&m_alignmentData, 0, sizeof(m_alignmentData));
+ m_alignmentData.next = NullChunkPtr;
+ m_alignmentData.start = NullChunkPtr;
+ m_alignmentData.ref = NullChunkPtr;
+ memset(&m_indentationData, 0, sizeof(m_indentationData));
+
+ m_next = Chunk::NullChunkPtr;
+ m_prev = Chunk::NullChunkPtr;
+ m_parent = Chunk::NullChunkPtr;
+
+ // for debugging purpose only
+ m_str.clear();
+ m_trackingList = nullptr;
+}
+
+
+const char *Chunk::ElidedText(char *for_the_copy) const
+{
+ const char *test_it = Text();
+ size_t test_it_length = strlen(test_it);
+
+ size_t truncate_value = uncrustify::options::debug_truncate();
+
+ if (truncate_value != 0)
+ {
+ if (test_it_length > truncate_value)
+ {
+ memset(for_the_copy, 0, 1000);
+
+ if (test_it_length < truncate_value + 30)
+ {
+ strncpy(for_the_copy, test_it, truncate_value - 30);
+ for_the_copy[truncate_value - 30] = 0;
+ }
+ else
+ {
+ strncpy(for_the_copy, test_it, truncate_value);
+ for_the_copy[truncate_value] = 0;
+ }
+ char *message = strcat(for_the_copy, " ... <The string is truncated>");
+
+ return(message);
+ }
+ else
+ {
+ return(test_it);
+ }
+ }
+ return(test_it);
+}
+
+
+Chunk *Chunk::GetNext(const E_Scope scope) const
+{
+ if (scope == E_Scope::ALL)
+ {
+ return(m_next);
+ }
+ Chunk *pc = m_next;
+
+ if (TestFlags(PCF_IN_PREPROC))
+ {
+ // If in a preproc, return a null chunk if trying to leave
+ if (!pc->TestFlags(PCF_IN_PREPROC))
+ {
+ return(NullChunkPtr);
+ }
+ return(pc);
+ }
+
+ // Not in a preproc, skip any preproc
+ while ( pc->IsNotNullChunk()
+ && pc->TestFlags(PCF_IN_PREPROC))
+ {
+ pc = pc->m_next;
+ }
+ return(pc);
+} // Chunk::GetNext
+
+
+Chunk *Chunk::GetPrev(const E_Scope scope) const
+{
+ if (scope == E_Scope::ALL)
+ {
+ return(m_prev);
+ }
+ Chunk *pc = m_prev;
+
+ if (TestFlags(PCF_IN_PREPROC))
+ {
+ // If in a preproc, return a null chunk if trying to leave
+ if (!pc->TestFlags(PCF_IN_PREPROC))
+ {
+ return(NullChunkPtr);
+ }
+ return(pc);
+ }
+
+ // Not in a preproc, skip any preproc
+ while ( pc->IsNotNullChunk()
+ && pc->TestFlags(PCF_IN_PREPROC))
+ {
+ pc = pc->m_prev;
+ }
+ return(pc);
+} // Chunk::GetPrev
+
+
+static void chunk_log(Chunk *pc, const char *text);
+
+
+Chunk *Chunk::GetHead()
+{
+ return(gChunkList.GetHead());
+}
+
+
+Chunk *Chunk::GetTail()
+{
+ return(gChunkList.GetTail());
+}
+
+
+Chunk::T_SearchFnPtr Chunk::GetSearchFn(const E_Direction dir)
+{
+ return((dir == E_Direction::FORWARD) ? &Chunk::GetNext : &Chunk::GetPrev);
+}
+
+
+Chunk *Chunk::Search(const T_CheckFnPtr checkFn, const E_Scope scope,
+ const E_Direction dir, const bool cond) const
+{
+ T_SearchFnPtr searchFnPtr = GetSearchFn(dir);
+ Chunk *pc = const_cast<Chunk *>(this);
+
+ do // loop over the chunk list
+ {
+ pc = (pc->*searchFnPtr)(scope); // in either direction while
+ } while ( pc->IsNotNullChunk() // the end of the list was not reached yet
+ && ((pc->*checkFn)() != cond)); // and the demanded chunk was not found either
+
+ return(pc); // the latest chunk is the searched one
+}
+
+
+bool Chunk::IsOnSameLine(const Chunk *end) const
+{
+ if (IsNullChunk())
+ {
+ return(false);
+ }
+ Chunk *tmp = GetNext();
+
+ while ( tmp->IsNotNullChunk()
+ && tmp != end)
+ {
+ if (tmp->Is(CT_NEWLINE))
+ {
+ return(false);
+ }
+ tmp = tmp->GetNext();
+ }
+ return(true);
+}
+
+
+Chunk *Chunk::SearchTypeLevel(const E_Token type, const E_Scope scope,
+ const E_Direction dir, const int level) const
+{
+ T_SearchFnPtr searchFnPtr = GetSearchFn(dir);
+ Chunk *pc = const_cast<Chunk *>(this);
+
+ do // loop over the chunk list
+ {
+ pc = (pc->*searchFnPtr)(scope); // in either direction while
+ } while ( pc->IsNotNullChunk() // the end of the list was not reached yet
+ && (!pc->IsTypeAndLevel(type, level))); // and the chunk was not found either
+
+ return(pc); // the latest chunk is the searched one
+}
+
+
+Chunk *Chunk::SearchStringLevel(const char *str, const size_t len, int level,
+ const E_Scope scope, const E_Direction dir) const
+{
+ T_SearchFnPtr searchFnPtr = GetSearchFn(dir);
+ Chunk *pc = const_cast<Chunk *>(this);
+
+ do // loop over the chunk list
+ {
+ pc = (pc->*searchFnPtr)(scope); // in either direction while
+ } while ( pc->IsNotNullChunk() // the end of the list was not reached yet
+ && !pc->IsStringAndLevel(str, len, true, level)); // and the demanded chunk was not found either
+
+ return(pc); // the latest chunk is the searched one
+}
+
+
+Chunk *Chunk::SearchPpa(const T_CheckFnPtr checkFn, const bool cond) const
+{
+ if (!TestFlags(PCF_IN_PREPROC))
+ {
+ // if not in preprocessor, do a regular search
+ return(Search(checkFn, E_Scope::ALL, E_Direction::FORWARD, cond));
+ }
+ Chunk *pc = GetNext();
+
+ while (pc->IsNotNullChunk())
+ {
+ if (!pc->TestFlags(PCF_IN_PREPROC))
+ {
+ // Bail if we run off the end of the preprocessor directive, but return
+ // the token because the caller may need to know where the search ended
+ assert(pc->Is(CT_NEWLINE));
+ return(pc);
+ }
+
+ if (pc->Is(CT_NL_CONT))
+ {
+ // Skip line continuation
+ pc = pc->GetNext();
+ continue;
+ }
+
+ if ((pc->*checkFn)() == cond)
+ {
+ // Requested token was found
+ return(pc);
+ }
+ pc = pc->GetNext();
+ }
+ // Ran out of tokens
+ return(Chunk::NullChunkPtr);
+}
+
+
+static void chunk_log_msg(Chunk *chunk, const log_sev_t log, const char *str)
+{
+ LOG_FMT(log, "%s orig line is %zu, orig col is %zu, ",
+ str, chunk->GetOrigLine(), chunk->GetOrigCol());
+
+ if (chunk->Is(CT_NEWLINE))
+ {
+ LOG_FMT(log, "<Newline>,\n");
+ }
+ else if (chunk->Is(CT_VBRACE_OPEN))
+ {
+ LOG_FMT(log, "<VBRACE_OPEN>,\n");
+ }
+ else if (chunk->Is(CT_VBRACE_CLOSE))
+ {
+ LOG_FMT(log, "<VBRACE_CLOSE>,\n");
+ }
+ else
+ {
+ LOG_FMT(log, "Text() is '%s', type is %s,\n", chunk->Text(), get_token_name(chunk->GetType()));
+ }
+}
+
+
+static void chunk_log(Chunk *pc, const char *text)
+{
+ if ( pc->IsNotNullChunk()
+ && (cpd.unc_stage != unc_stage_e::TOKENIZE)
+ && (cpd.unc_stage != unc_stage_e::CLEANUP))
+ {
+ const log_sev_t log = LCHUNK;
+ Chunk *prev = pc->GetPrev();
+ Chunk *next = pc->GetNext();
+
+ chunk_log_msg(pc, log, text);
+
+ if ( prev->IsNotNullChunk()
+ && next->IsNotNullChunk())
+ {
+ chunk_log_msg(prev, log, " @ between");
+ chunk_log_msg(next, log, " and");
+ }
+ else if (next->IsNotNullChunk())
+ {
+ chunk_log_msg(next, log, " @ before");
+ }
+ else if (prev->IsNotNullChunk())
+ {
+ chunk_log_msg(prev, log, " @ after");
+ }
+ LOG_FMT(log, " stage is %s", // Issue #3034
+ get_unc_stage_name(cpd.unc_stage));
+ log_func_stack_inline(log);
+ }
+}
+
+
+void Chunk::Delete(Chunk * &pc)
+{
+ gChunkList.Remove(pc);
+ delete pc;
+ pc = Chunk::NullChunkPtr;
+}
+
+
+void Chunk::MoveAfter(Chunk *ref)
+{
+ LOG_FUNC_ENTRY();
+
+ if (ref == this)
+ {
+ return;
+ }
+ gChunkList.Remove(this);
+ gChunkList.AddAfter(this, ref);
+
+ // Adjust the original column
+ m_column = ref->m_column + space_col_align(ref, this);
+ m_origCol = m_column;
+ m_origColEnd = m_origCol + Len();
+}
+
+
+void Chunk::Swap(Chunk *other)
+{
+ gChunkList.Swap(this, other);
+}
+
+
+bool Chunk::IsAddress() const
+{
+ if ( IsNotNullChunk()
+ && ( Is(CT_BYREF)
+ || ( Len() == 1
+ && m_str[0] == '&'
+ && IsNot(CT_OPERATOR_VAL))))
+ {
+ Chunk *prevc = GetPrev();
+
+ if ( TestFlags(PCF_IN_TEMPLATE)
+ && ( prevc->Is(CT_COMMA)
+ || prevc->Is(CT_ANGLE_OPEN)))
+ {
+ return(false);
+ }
+ return(true);
+ }
+ return(false);
+}
+
+
+Chunk *Chunk::GetFirstChunkOnLine() const
+{
+ Chunk *pc = const_cast<Chunk *>(this);
+ Chunk *first = pc;
+
+ pc = pc->GetPrev();
+
+ while ( pc->IsNotNullChunk()
+ && !pc->IsNewline())
+ {
+ first = pc;
+ pc = pc->GetPrev();
+ }
+ return(first);
+}
+
+
+bool Chunk::IsLastChunkOnLine() const
+{
+ if (this == Chunk::GetTail())
+ {
+ return(true);
+ }
+
+ // if the next chunk is a newline then pc is the last chunk on its line
+ if (GetNext()->Is(CT_NEWLINE))
+ {
+ return(true);
+ }
+ return(false);
+}
+
+
+void Chunk::SwapLines(Chunk *other)
+{
+ // to swap lines we need to find the first chunk of the lines
+ Chunk *pc1 = GetFirstChunkOnLine();
+ Chunk *pc2 = other->GetFirstChunkOnLine();
+
+ if ( pc1->IsNullChunk()
+ || pc2->IsNullChunk()
+ || pc1 == pc2)
+ {
+ return;
+ }
+ /*
+ * Example start:
+ * ? - start1 - a1 - b1 - nl1 - ? - ref2 - start2 - a2 - b2 - nl2 - ?
+ * ^- pc1 ^- pc2
+ */
+ Chunk *ref2 = pc2->GetPrev();
+
+ // Move the line started at pc2 before pc1
+ while ( pc2->IsNotNullChunk()
+ && !pc2->IsNewline())
+ {
+ Chunk *tmp = pc2->GetNext();
+ gChunkList.Remove(pc2);
+ gChunkList.AddBefore(pc2, pc1);
+ pc2 = tmp;
+ }
+ /*
+ * Should now be:
+ * ? - start2 - a2 - b2 - start1 - a1 - b1 - nl1 - ? - ref2 - nl2 - ?
+ * ^- pc1 ^- pc2
+ */
+
+ // Now move the line started at pc1 after ref2
+ while ( pc1->IsNotNullChunk()
+ && !pc1->IsNewline())
+ {
+ Chunk *tmp = pc1->GetNext();
+ gChunkList.Remove(pc1);
+
+ if (ref2->IsNotNullChunk())
+ {
+ gChunkList.AddAfter(pc1, ref2);
+ }
+ else
+ {
+ gChunkList.AddHead(pc1);
+ }
+ ref2 = pc1;
+ pc1 = tmp;
+ }
+ /*
+ * Should now be:
+ * ? - start2 - a2 - b2 - nl1 - ? - ref2 - start1 - a1 - b1 - nl2 - ?
+ * ^- pc1 ^- pc2
+ */
+
+ /*
+ * pc1 and pc2 should be the newlines for their lines.
+ * swap the chunks and the new line count so that the spacing remains the same.
+ */
+ if ( pc1->IsNotNullChunk()
+ && pc2->IsNotNullChunk())
+ {
+ size_t nlCount = pc1->GetNlCount();
+
+ pc1->SetNlCount(pc2->GetNlCount());
+ pc2->SetNlCount(nlCount);
+
+ pc1->Swap(pc2);
+ }
+} // Chunk::SwapLines
+
+
+void Chunk::SetResetFlags(PcfFlags resetBits, PcfFlags setBits)
+{
+ if (IsNotNullChunk())
+ {
+ LOG_FUNC_ENTRY();
+ const PcfFlags newFlags = (m_flags & ~resetBits) | setBits;
+
+ if (m_flags != newFlags)
+ {
+ LOG_FMT(LSETFLG,
+ "%s(%d): %016llx^%016llx=%016llx\n"
+ "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s', type is %s,",
+ __func__, __LINE__,
+ static_cast<PcfFlags::int_t>(m_flags),
+ static_cast<PcfFlags::int_t>(m_flags ^ newFlags),
+ static_cast<PcfFlags::int_t>(newFlags),
+ __func__, __LINE__, m_origLine, m_origCol, Text(), get_token_name(m_type));
+ LOG_FMT(LSETFLG, " parent type is %s,\n",
+ get_token_name(m_parentType));
+ log_func_stack_inline(LSETFLG);
+
+ LOG_FMT(LSETFLG, " before: ");
+ log_pcf_flags(LSETFLG, m_flags);
+ LOG_FMT(LSETFLG, " after: ");
+ log_pcf_flags(LSETFLG, newFlags);
+ m_flags = newFlags;
+ }
+ }
+}
+
+
+void Chunk::SetType(const E_Token token)
+{
+ LOG_FUNC_ENTRY();
+
+ if ( IsNullChunk()
+ || m_type == token)
+ {
+ return;
+ }
+ LOG_FMT(LSETTYP, "%s(%d): orig line is %zu, orig col is %zu, Text() is ",
+ __func__, __LINE__, m_origLine, m_origCol);
+
+ if (token == CT_NEWLINE)
+ {
+ LOG_FMT(LSETTYP, "<Newline>\n");
+ }
+ else
+ {
+ LOG_FMT(LSETTYP, "'%s'\n", Text());
+ }
+ LOG_FMT(LSETTYP, " type is %s, parent type is %s => new type is %s\n",
+ get_token_name(m_type), get_token_name(m_parentType), get_token_name(token));
+ m_type = token;
+}
+
+
+void Chunk::SetParentType(const E_Token token)
+{
+ LOG_FUNC_ENTRY();
+
+ if ( IsNullChunk()
+ || m_parentType == token)
+ {
+ return;
+ }
+ LOG_FMT(LSETPAR, "%s(%d): orig line is %zu, orig col is %zu, Text() is ",
+ __func__, __LINE__, m_origLine, m_origCol);
+
+ if (token == CT_NEWLINE)
+ {
+ LOG_FMT(LSETPAR, "<Newline>\n");
+ }
+ else
+ {
+ LOG_FMT(LSETPAR, "'%s'\n", Text());
+ }
+ LOG_FMT(LSETPAR, " type is %s, parent type is %s => new parent type is %s\n",
+ get_token_name(m_type), get_token_name(m_parentType), get_token_name(token));
+ m_parentType = token;
+}
+
+
+Chunk *Chunk::CopyAndAdd(Chunk *pos, const E_Direction dir) const
+{
+#ifdef DEBUG
+ // test if this chunk is properly set
+ if (m_ppLevel == 999)
+ {
+ fprintf(stderr, "%s(%d): pp level is not set\n", __func__, __LINE__);
+ log_func_stack_inline(LSETFLG);
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+
+ if (m_origLine == 0)
+ {
+ fprintf(stderr, "%s(%d): no line number\n", __func__, __LINE__);
+ log_func_stack_inline(LSETFLG);
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+
+ if (m_origCol == 0)
+ {
+ fprintf(stderr, "%s(%d): no column number\n", __func__, __LINE__);
+ log_func_stack_inline(LSETFLG);
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+#endif /* DEBUG */
+
+ Chunk *pc = new Chunk(*this);
+
+ if (pos->IsNotNullChunk())
+ {
+ (dir == E_Direction::FORWARD) ? gChunkList.AddAfter(pc, pos) : gChunkList.AddBefore(pc, pos);
+ }
+ else
+ {
+ (dir == E_Direction::FORWARD) ? gChunkList.AddHead(pc) : gChunkList.AddTail(pc);
+ }
+ chunk_log(pc, "CopyAndAdd(A):");
+ return(pc);
+} // Chunk::CopyAndAdd
+
+
+Chunk *Chunk::GetNextNbsb() const
+{
+ Chunk *pc = const_cast<Chunk *>(this);
+
+ while ( pc->Is(CT_TSQUARE)
+ || pc->Is(CT_SQUARE_OPEN))
+ {
+ if (pc->Is(CT_SQUARE_OPEN))
+ {
+ pc = pc->GetClosingParen();
+ }
+ pc = pc->GetNextNcNnl();
+ }
+ return(pc);
+}
+
+
+Chunk *Chunk::GetPrevNbsb() const
+{
+ Chunk *pc = const_cast<Chunk *>(this);
+
+ while ( pc->Is(CT_TSQUARE)
+ || pc->Is(CT_SQUARE_CLOSE))
+ {
+ if (pc->Is(CT_SQUARE_CLOSE))
+ {
+ pc = pc->GetOpeningParen();
+ }
+ pc = pc->GetPrevNcNnl();
+ }
+ return(pc);
+}
+
+
+Chunk *Chunk::GetPpStart() const
+{
+ if (!IsPreproc())
+ {
+ return(Chunk::NullChunkPtr);
+ }
+ Chunk *pc = const_cast<Chunk *>(this);
+
+ while (pc->IsNot(CT_PREPROC))
+ {
+ pc = pc->GetPrev(E_Scope::PREPROC);
+ }
+ return(pc);
+}
+
+
+Chunk *Chunk::SkipDcMember() const
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc = const_cast<Chunk *>(this);
+ Chunk *nxt = pc->Is(CT_DC_MEMBER) ? pc : pc->GetNextNcNnl(E_Scope::ALL);
+
+ while (nxt->Is(CT_DC_MEMBER))
+ {
+ pc = nxt->GetNextNcNnl(E_Scope::ALL);
+
+ if (pc->IsNullChunk())
+ {
+ return(Chunk::NullChunkPtr);
+ }
+ nxt = pc->GetNextNcNnl(E_Scope::ALL);
+ }
+ return(pc);
+}
+
+
+int Chunk::ComparePosition(const Chunk *other) const
+{
+ if (m_origLine < other->m_origLine)
+ {
+ return(-1);
+ }
+ else if (m_origLine == other->m_origLine)
+ {
+ if (m_origCol < other->m_origCol)
+ {
+ return(-1);
+ }
+ else if (m_origCol == other->m_origCol)
+ {
+ return(0);
+ }
+ }
+ return(1);
+}
+
+
+bool Chunk::IsOCForinOpenParen() const
+{
+ if ( language_is_set(LANG_OC)
+ && Is(CT_SPAREN_OPEN)
+ && GetPrevNcNnl()->Is(CT_FOR))
+ {
+ Chunk *nxt = const_cast<Chunk *>(this);
+
+ while ( nxt->IsNotNullChunk()
+ && nxt->IsNot(CT_SPAREN_CLOSE)
+ && nxt->IsNot(CT_IN))
+ {
+ nxt = nxt->GetNextNcNnl();
+ }
+
+ if (nxt->Is(CT_IN))
+ {
+ return(true);
+ }
+ }
+ return(false);
+}
+
+
+bool Chunk::IsStringAndLevel(const char *str, const size_t len,
+ bool caseSensitive, const int level) const
+{
+ return( ( level < 0
+ || m_level == static_cast<size_t>(level))
+ && Len() == len // the length is as expected
+ && ( ( caseSensitive
+ && memcmp(Text(), str, len) == 0)
+ || ( !caseSensitive
+ && strncasecmp(Text(), str, len) == 0))); // the strings are equal
+}
+
+
+Chunk *Chunk::GetClosingParen(E_Scope scope) const
+{
+ if ( Is(CT_PAREN_OPEN)
+ || Is(CT_SPAREN_OPEN)
+ || Is(CT_FPAREN_OPEN)
+ || Is(CT_TPAREN_OPEN)
+ || Is(CT_BRACE_OPEN)
+ || Is(CT_VBRACE_OPEN)
+ || Is(CT_ANGLE_OPEN)
+ || Is(CT_SQUARE_OPEN))
+ {
+ return(GetNextType((E_Token)(m_type + 1), m_level, scope));
+ }
+ return(const_cast<Chunk *>(this));
+}
+
+
+Chunk *Chunk::GetOpeningParen(E_Scope scope) const
+{
+ if ( Is(CT_PAREN_CLOSE)
+ || Is(CT_SPAREN_CLOSE)
+ || Is(CT_FPAREN_CLOSE)
+ || Is(CT_TPAREN_CLOSE)
+ || Is(CT_BRACE_CLOSE)
+ || Is(CT_VBRACE_CLOSE)
+ || Is(CT_ANGLE_CLOSE)
+ || Is(CT_SQUARE_CLOSE))
+ {
+ return(GetPrevType((E_Token)(m_type - 1), m_level, scope));
+ }
+ return(const_cast<Chunk *>(this));
+}
+
+
+bool Chunk::IsCppInheritanceAccessSpecifier() const
+{
+ return( language_is_set(LANG_CPP)
+ && ( Is(CT_ACCESS)
+ || Is(CT_QUALIFIER))
+ && ( IsString("private")
+ || IsString("protected")
+ || IsString("public")));
+}
+
+
+bool Chunk::IsColon() const
+{
+ return( Is(CT_ACCESS_COLON)
+ || Is(CT_ASM_COLON)
+ || Is(CT_BIT_COLON)
+ || Is(CT_CASE_COLON)
+ || Is(CT_CLASS_COLON)
+ || Is(CT_COLON)
+ || Is(CT_COND_COLON)
+ || Is(CT_CONSTR_COLON)
+ || Is(CT_CS_SQ_COLON)
+ || Is(CT_D_ARRAY_COLON)
+ || Is(CT_ENUM_COLON)
+ || Is(CT_FOR_COLON)
+ || Is(CT_LABEL_COLON)
+ || Is(CT_OC_COLON)
+ || Is(CT_OC_DICT_COLON)
+ || Is(CT_TAG_COLON)
+ || Is(CT_WHERE_COLON));
+}
+
+
+bool Chunk::IsDoxygenComment() const
+{
+ if (!IsComment())
+ {
+ return(false);
+ }
+
+ if (Len() < 3)
+ {
+ return(false);
+ }
+ // check the third character
+ const char *sComment = Text();
+ return( (sComment[2] == '/')
+ || (sComment[2] == '!')
+ || (sComment[2] == '@'));
+}
+
+
+bool Chunk::IsTypeDefinition() const
+{
+ return( Is(CT_TYPE)
+ || Is(CT_PTR_TYPE)
+ || Is(CT_BYREF)
+ || Is(CT_DC_MEMBER)
+ || Is(CT_QUALIFIER)
+ || Is(CT_STRUCT)
+ || Is(CT_ENUM)
+ || Is(CT_UNION));
+}
+
+
+bool Chunk::IsNewlineBetween(const Chunk *other) const
+{
+ Chunk *pc = const_cast<Chunk *>(this);
+
+ while (pc != other)
+ {
+ if (pc->IsNewline())
+ {
+ return(true);
+ }
+ pc = pc->GetNext();
+ }
+ return(false);
+}
+
+
+void shift_the_rest_of_the_line(Chunk *first)
+{
+ // shift all the tokens in this line to the right Issue #3236
+ for (Chunk *temp = first; ; temp = temp->GetNext())
+ {
+ temp->SetColumn(temp->GetColumn() + 1); // Issue #3236
+ temp->SetOrigCol(temp->GetOrigCol() + 1); // Issue #3236
+ temp->SetOrigColEnd(temp->GetOrigColEnd() + 1); // Issue #3236
+
+ if (temp->Is(CT_NEWLINE))
+ {
+ break;
+ }
+ }
+} //shift_the_rest_of_the_line
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/chunk.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/chunk.h
new file mode 100644
index 00000000..7d7e0167
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/chunk.h
@@ -0,0 +1,1797 @@
+/**
+ * @file chunk.h
+ * Manages and navigates the list of chunks.
+ *
+ * @author Ben Gardner
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#ifndef CHUNK_LIST_H_INCLUDED
+#define CHUNK_LIST_H_INCLUDED
+
+#include "uncrustify_types.h"
+// necessary to not sort it
+#include "char_table.h"
+#include "language_names.h"
+#include "language_tools.h"
+
+
+static constexpr int ANY_LEVEL = -1;
+
+
+/**
+ * Specifies which chunks should/should not be found.
+ * ALL (default)
+ * - return the true next/prev
+ *
+ * PREPROC
+ * - If not in a preprocessor, skip over any encountered preprocessor stuff
+ * - If in a preprocessor, fail to leave (return Chunk::NullChunkPtr)
+ */
+enum class E_Scope : unsigned int
+{
+ ALL, //! search in all kind of chunks
+ PREPROC, //! search only in preprocessor chunks
+};
+
+
+/**
+ * Specifies which direction or location an operation shall be performed.
+ */
+enum class E_Direction : unsigned int
+{
+ FORWARD,
+ BACKWARD
+};
+
+
+class ChunkListManager;
+
+// This is the main type of this program
+class Chunk
+{
+ friend ChunkListManager;
+
+public:
+ //! constructors
+ Chunk(bool null_c = false); // default
+ Chunk(const Chunk &o); // !!! partial copy: chunk is not linked to others
+
+ Chunk &operator=(const Chunk &o); // !!! partial copy: chunk is not linked to others
+
+ //! whether this is a null Chunk or not
+ bool IsNullChunk() const { return(m_nullChunk); }
+ bool IsNotNullChunk() const { return(!m_nullChunk); }
+
+ //! sets all elements of the struct to their default value
+ void Reset();
+
+
+ // --------- Access methods
+
+ /**
+ * @brief returns the type of the chunk
+ */
+ E_Token GetType() const;
+
+ /**
+ * @brief Sets the chunk type
+ * @param token the type to set
+ */
+ void SetType(const E_Token token);
+
+ /**
+ * @brief Returns the parent type of the chunk
+ */
+ E_Token GetParentType() const;
+
+ /**
+ * @brief Sets the type of the parent chunk
+ * @param token the type to set
+ */
+ void SetParentType(const E_Token token);
+
+ /**
+ * @brief Returns the parent of the chunk
+ */
+ Chunk *GetParent() const;
+
+ /**
+ * @brief Sets the parent of the chunk
+ * @param parent the parent chunk to set
+ */
+ void SetParent(Chunk *parent);
+
+ /**
+ * @brief Returns the alignment data of the chunk as a const reference
+ */
+ const AlignmentData &GetAlignData() const;
+
+ /**
+ * @brief Returns the alignment data of the chunk as a modifiable reference
+ */
+ AlignmentData &AlignData();
+
+ /**
+ * @brief Returns the indentation data of the chunk as a const reference
+ */
+ const IndentationData &GetIndentData() const;
+
+ /**
+ * @brief Returns the indentation data of the chunk as a modifiable reference
+ */
+ IndentationData &IndentData();
+
+ /**
+ * @brief Returns the text data of the chunk as a const reference
+ */
+ const UncText &GetStr() const;
+
+ /**
+ * @brief Returns the text data of the chunk as a modifiable reference
+ */
+ UncText &Str();
+
+ /**
+ * @brief returns the number of characters in the chunk text string
+ */
+ size_t Len() const;
+
+ /**
+ * @brief returns the content of the chunk text as C string
+ */
+ const char *Text() const;
+
+ /**
+ * Returns a filled up (if necessary) copy of the first chars of the Text() string
+ */
+ const char *ElidedText(char *for_the_copy) const;
+
+ /**
+ * @brief Returns the tracking data of the chunk as a const reference
+ */
+ const TrackList *GetTrackingData() const;
+
+ /**
+ * @brief Returns the tracking data of the chunk as a modifiable reference
+ */
+ TrackList * &TrackingData();
+
+ /**
+ * @brief Returns the type of the parent chunk
+ */
+ E_Token GetTypeOfParent() const;
+
+ /**
+ * @brief Returns the chunk flags
+ */
+ PcfFlags GetFlags() const;
+
+ /**
+ * @brief Sets the chunk flags
+ * @param flags the new chunk flags
+ */
+ void SetFlags(PcfFlags flags);
+
+ /**
+ * @brief Tests if some chunk flags are set
+ * @param flags the flag bits to test
+ * @return true if the specified bits are set, false otherwise
+ */
+ bool TestFlags(PcfFlags flags) const;
+
+ /**
+ * @brief Resets some of the chunk flag bits
+ * @param resetBits the flag bits to reset
+ */
+ void ResetFlagBits(PcfFlags resetBits);
+
+ /**
+ * @brief Sets some of the chunk flag bits
+ * @param setBits the flag bits to set
+ */
+ void SetFlagBits(PcfFlags setBits);
+
+ /**
+ * @brief Sets and reset some of the chunk flag bits
+ * @param resetBits the flag bits to reset
+ * @param setBits the flag bits to set
+ */
+ void UpdateFlagBits(PcfFlags resetBits, PcfFlags setBits);
+
+ /**
+ * @brief Returns the line number of the chunk in the input file
+ */
+ size_t GetOrigLine() const;
+
+ /**
+ * @brief Sets the line number of the chunk in the input file
+ * @param line the line number of the chunk
+ */
+ void SetOrigLine(size_t line);
+
+ /**
+ * @brief Returns the column number of the chunk in the input file
+ */
+ size_t GetOrigCol() const;
+
+ /**
+ * @brief Sets the column number of the chunk in the input file
+ * @param col the column number of the chunk
+ */
+ void SetOrigCol(size_t col);
+
+ /**
+ * @brief Returns the end column number of the chunk in the input file
+ */
+ size_t GetOrigColEnd() const;
+
+ /**
+ * @brief Sets the end column number of the chunk in the input file
+ * @param col the end column number of the chunk
+ */
+ void SetOrigColEnd(size_t col);
+
+ /**
+ * @brief Returns the position of the whitespace before this chunk
+ */
+ size_t GetOrigPrevSp() const;
+
+ /**
+ * @brief Sets the position of the whitespace before this chunk
+ * @param col the end column number of the chunk in the input file
+ */
+ void SetOrigPrevSp(size_t col);
+
+ /**
+ * @brief Returns the column of the chunk
+ */
+ size_t GetColumn() const;
+
+ /**
+ * @brief Sets the column of the chunk
+ * @param col the column of the chunk
+ */
+ void SetColumn(size_t col);
+
+ /**
+ * @brief Returns the column indentation of the chunk
+ */
+ size_t GetColumnIndent() const;
+
+ /**
+ * @brief Sets the column indentation of the chunk
+ * @param col the column indentation of the chunk
+ */
+ void SetColumnIndent(size_t col);
+
+ /**
+ * @brief Returns the number of newlines in a CT_NEWLINE chunk
+ */
+ size_t GetNlCount() const;
+
+ /**
+ * @brief Sets the number of newlines in a CT_NEWLINE chunk
+ * @param cnt the number of newlines
+ */
+ void SetNlCount(size_t cnt);
+
+ /**
+ * @brief Returns the column of the newline entries
+ */
+ size_t GetNlColumn() const;
+
+ /**
+ * @brief Sets the column of the newline entries
+ * @param col the number of the column
+ */
+ void SetNlColumn(size_t col);
+
+ /**
+ * @brief Returns the level of the chunk
+ */
+ size_t GetLevel() const;
+
+ /**
+ * @brief Sets the level of the chunk
+ * @param col the level of the chunk
+ */
+ void SetLevel(size_t level);
+
+ /**
+ * @brief Returns the brace level of the chunk
+ */
+ size_t GetBraceLevel() const;
+
+ /**
+ * @brief Sets the brace level of the chunk
+ * @param level the brace level of the chunk
+ */
+ void SetBraceLevel(size_t lvl);
+
+ /**
+ * @brief Returns the preprocessor level of the chunk
+ */
+ size_t GetPpLevel() const;
+
+ /**
+ * @brief Sets the preprocessor level of the chunk
+ * @param level the preprocessor level of the chunk
+ */
+ void SetPpLevel(size_t lvl);
+
+ /**
+ * @brief Returns the after tab property of the chunk
+ */
+ bool GetAfterTab() const;
+
+ /**
+ * @brief Sets the after tab property of the chunk
+ * @param afterTab the after tab property of the chunk
+ */
+ void SetAfterTab(bool afterTab);
+
+
+ // --------- Get* chunk functions
+
+ /**
+ * @brief returns the head of the chunk list
+ * @return pointer to the first chunk
+ */
+ static Chunk *GetHead();
+
+ /**
+ * @brief returns the tail of the chunk list
+ * @return pointer to the last chunk
+ */
+ static Chunk *GetTail();
+
+ /**
+ * @brief returns the next chunk in a list of chunks
+ * @param scope code region to search in
+ * @return pointer to next chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetNext(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the previous chunk in a list of chunks
+ * @param scope code region to search in
+ * @return pointer to previous chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetPrev(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the next newline chunk
+ * @param scope code region to search in
+ * @return pointer to next newline chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetNextNl(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the prev newline chunk
+ * @param scope code region to search in
+ * @return pointer to prev newline chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetPrevNl(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the next non-newline chunk
+ * @param scope code region to search in
+ * @return pointer to next non-newline chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetNextNnl(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the prev non-newline chunk
+ * @param scope code region to search in
+ * @return pointer to prev non-newline chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetPrevNnl(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the next non-comment chunk
+ * @param scope code region to search in
+ * @return pointer to next non-comment chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetNextNc(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the prev non-comment chunk
+ * @param scope code region to search in
+ * @return pointer to prev non-comment chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetPrevNc(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the next non-comment and non-newline chunk
+ * @param scope code region to search in
+ * @return pointer to next non-comment and non-newline chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetNextNcNnl(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the prev non-comment and non-newline chunk
+ * @param scope code region to search in
+ * @return pointer to prev non-comment and non-newline chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetPrevNcNnl(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the next non-comment, non-newline, non-preprocessor chunk
+ * @param scope code region to search in
+ * @return pointer to next non-comment, non-newline, non-preprocessor chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetNextNcNnlNpp(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the prev non-comment, non-newline, non-preprocessor chunk
+ * @param scope code region to search in
+ * @return pointer to prev non-comment, non-newline, non-preprocessor chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetPrevNcNnlNpp(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the next non-preprocessor or non-comment, non-newline chunk
+ * @param scope code region to search in
+ * @return pointer to next non-preprocessor or non-comment, non-newline chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetNextNppOrNcNnl(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the prev non-preprocessor or non-comment, non-newline chunk
+ * @param scope code region to search in
+ * @return pointer to prev non-preprocessor or non-comment, non-newline chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetPrevNppOrNcNnl(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the next preprocessor aware non-comment and non-newline chunk
+ * Unlike Chunk::GetNextNcNnl, this will also ignore a line continuation if
+ * the starting chunk is in a preprocessor directive, and may return a newline
+ * if the search reaches the end of a preprocessor directive.
+ * @return pointer to next preprocessor aware non-comment and non-newline chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *PpaGetNextNcNnl() const;
+
+ /**
+ * @brief returns the next non-comment, non-newline, non-empty text chunk
+ * @param scope code region to search in
+ * @return pointer to next non-comment, non-newline, non-empty text chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetNextNcNnlNet(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the prev non-comment, non-newline, non-empty text chunk
+ * @param scope code region to search in
+ * @return pointer to prev non-comment, non-newline, non-empty text chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetPrevNcNnlNet(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the prev non-comment, non-newline, non-ignored chunk
+ * @param scope code region to search in
+ * @return pointer to prev non-comment, non-newline, non-ignored chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetPrevNcNnlNi(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the next chunk not in or part of balanced square
+ * brackets. This handles stacked [] instances to accommodate
+ * multi-dimensional array declarations
+ * @param scope code region to search in
+ * @return Chunk::NullChunkPtr or the next chunk not in or part of square brackets
+ */
+ Chunk *GetNextNisq(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the next non-virtual brace chunk
+ * @param scope code region to search in
+ * @return pointer to next non-virtual brace chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetNextNvb(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the prev non-virtual brace chunk
+ * @param scope code region to search in
+ * @return pointer to prev non-virtual brace chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetPrevNvb(const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the next chunk of the given type at the level.
+ * @param type the type to look for
+ * @param level the level to match or ANY_LEVEL
+ * @param scope code region to search in
+ * @return pointer to the next matching chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetNextType(const E_Token type, const int level = ANY_LEVEL, const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the prev chunk of the given type at the level.
+ * @param type the type to look for
+ * @param level the level to match or ANY_LEVEL
+ * @param scope code region to search in
+ * @return pointer to the prev matching chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetPrevType(const E_Token type, int level = ANY_LEVEL, E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the next chunk that holds a given string at a given level.
+ * @param str string to search for
+ * @param len length of string
+ * @param level the level to match or ANY_LEVEL
+ * @param scope code region to search in
+ * @return pointer to the next matching chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetNextString(const char *str, const size_t len, const int level, const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the prev chunk that holds a given string at a given level.
+ * @param str string to search for
+ * @param len length of string
+ * @param level the level to match or ANY_LEVEL
+ * @param scope code region to search in
+ * @return pointer to the prev matching chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetPrevString(const char *str, const size_t len, const int level, const E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the next chunk that is not part of balanced square brackets.
+ * This handles stacked[] instances to accommodate multidimensional arrays.
+ * @return pointer to the next matching chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetNextNbsb() const;
+
+ /**
+ * @brief returns the prev chunk that is not part of balanced square brackets.
+ * This handles stacked[] instances to accommodate multidimensional arrays.
+ * @return pointer to the prev matching chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetPrevNbsb() const;
+
+ /**
+ * @brief returns the corresponding start chunk if the given chunk is within a
+ * preprocessor directive, or Chunk::NullChunkPtr otherwise.
+ * @return start chunk of the preprocessor directive or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetPpStart() const;
+
+ /**
+ * @brief Finds the first chunk on the line the current chunk is on.
+ * This just backs up until a newline or null chuck is hit.
+ *
+ * given: [ a - b - c - n1 - d - e - n2 ]
+ * input: [ a | b | c | n1 ] => a
+ * input: [ d | e | n2 ] => d
+ *
+ * @return pointer to the first chunk on the line the current chunk is on.
+ */
+ Chunk *GetFirstChunkOnLine() const;
+
+
+ // --------- Search functions
+
+ /**
+ * @brief defines a member function pointer for a function of type
+ * Chunk *Chunk::function(const E_Scope scope)
+ * that will search for a new chunk
+ */
+ typedef Chunk *(Chunk::*T_SearchFnPtr)(const E_Scope scope) const;
+
+ /**
+ * @brief defines a member function pointer for a function of type
+ * bool Chunk::function() const;
+ * that checks whether a chunk satisty a specific condition
+ */
+ typedef bool (Chunk::*T_CheckFnPtr)() const;
+
+ /**
+ * @brief determines the search direction to use and returns a pointer
+ * to the corresponding search function.
+ * @param dir search direction
+ * @return pointer to search function
+ */
+ static T_SearchFnPtr GetSearchFn(const E_Direction dir = E_Direction::FORWARD);
+
+ /**
+ * @brief search for a chunk that satisfies a condition in a chunk list
+ *
+ * A generic function that traverses a chunks list either
+ * in forward or reverse direction. The traversal continues until a
+ * chunk satisfies the condition defined by the compare function.
+ * Depending on the parameter cond the condition will either be
+ * checked to be true or false.
+ *
+ * @param checkFn compare function
+ * @param scope code parts to consider for search
+ * @param dir search direction (forward or backward)
+ * @param cond success condition
+ * @return pointer to the found chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *Search(const T_CheckFnPtr checkFn, const E_Scope scope = E_Scope::ALL, const E_Direction dir = E_Direction::FORWARD, const bool cond = true) const;
+
+ /**
+ * @brief search for a chunk that satisfies a condition in a chunk list,
+ * but being aware of preprocessor chucks.
+ *
+ * This function is similar to Search, except that it is tweaked to
+ * handle searches inside of preprocessor directives. Specifically, if the
+ * starting token is inside a preprocessor directive, it will ignore a line
+ * continuation, and will abort the search if it reaches the end of the
+ * directive. This function only searches forward.
+ *
+ * @param checkFn compare function
+ * @param cond success condition
+ * @return pointer to the found chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *SearchPpa(const T_CheckFnPtr checkFn, const bool cond = true) const;
+
+ /**
+ * @brief search a chunk of a given type and level. Traverses a chunk list in the
+ * specified direction until a chunk of a given type and level is found.
+ *
+ * This function is a specialization of Chunk::Search.
+ *
+ * @param type category to search for
+ * @param scope code parts to consider for search
+ * @param dir search direction
+ * @param level nesting level to match or ANY_LEVEL
+ * @return pointer to the found chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *SearchTypeLevel(const E_Token type, const E_Scope scope = E_Scope::ALL, const E_Direction dir = E_Direction::FORWARD, const int level = ANY_LEVEL) const;
+
+ /**
+ * @brief searches a chunk that holds a specific string
+ *
+ * Traverses a chunk list either in forward or backward direction until a chunk
+ * with the provided string was found. Additionally a nesting level can be
+ * provided to narrow down the search.
+ *
+ * @param str string that searched chunk needs to have
+ * @param len length of the string
+ * @param level nesting level of the searched chunk, ignored when negative
+ * @param scope code parts to consider for search
+ * @param dir search direction
+ * @return pointer to the found chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *SearchStringLevel(const char *str, const size_t len, const int level, const E_Scope scope = E_Scope::ALL, const E_Direction dir = E_Direction::FORWARD) const;
+
+ /**
+ * @brief returns the closing match for the current paren/brace/square.
+ * @param scope chunk section to consider
+ * @return pointer to the next matching chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetClosingParen(E_Scope scope = E_Scope::ALL) const;
+
+ /**
+ * @brief returns the opening match for the current paren/brace/square.
+ * @param scope chunk section to consider
+ * @return pointer to the prev matching chunk or Chunk::NullChunkPtr if no chunk was found
+ */
+ Chunk *GetOpeningParen(E_Scope scope = E_Scope::ALL) const;
+
+
+ // --------- Is* functions
+
+ /**
+ * @brief checks whether the chunk is a specific token
+ * @token the token to check for
+ * @return true if the chunk type matches the specified token, false otherwise
+ */
+ bool Is(E_Token token) const;
+
+ /**
+ * @brief checks whether the chunk token name is a specific string
+ * @param str string to compare token name with
+ * @param caseSensitive whether to do a case sensitive or insensitive comparison
+ * @return true if the chunk token name matches the specified string, false otherwise
+ */
+ bool IsString(const char *str, bool caseSensitive = true) const;
+
+ /**
+ * @brief checks whether the chunk is not a specific token
+ * @token the token to check for
+ * @return true if the chunk type does not matches the specified token, false otherwise
+ */
+ bool IsNot(E_Token token) const;
+
+ /**
+ * @brief checks whether the chunk is a newline
+ * @return true if the chunk is a newline, false otherwise
+ */
+ bool IsNewline() const;
+
+ /**
+ * @brief checks whether the chunk is a comment
+ * This means any kind of:
+ * - single line comment
+ * - multiline comment
+ * - C comment
+ * - C++ comment
+ */
+ bool IsComment() const;
+
+ /**
+ * @brief checks whether the chunk is valid and has an empty text
+ * @return true if the chunk is valid and has an empty text
+ */
+ bool IsEmptyText() const;
+
+ /**
+ * @brief checks whether the chunk is a preprocessor
+ * @return true if the chunk is a preprocessor, false otherwise
+ */
+ bool IsPreproc() const;
+
+ /**
+ * @brief checks whether the other chunk has the same preproc flags
+ * @return true if the other chunk has the same preproc flags
+ */
+ bool IsSamePreproc(const Chunk *other) const;
+
+ /**
+ * @brief checks whether the chunk is either a comment or a newline
+ * @return true if the chunk is either a comment or a newline, false otherwise
+ */
+ bool IsCommentOrNewline() const;
+
+ /**
+ * @brief checks whether the chunk is either a comment, a newline or ignored
+ * @return true if the chunk is either a comment, a newline or ignored, false otherwise
+ */
+ bool IsCommentNewlineOrIgnored() const;
+
+ /**
+ * @brief checks whether the chunk is a comment, a newline or a preprocessor
+ * @return true if the chunk is a comment, a newline or a preprocessor, false otherwise
+ */
+ bool IsCommentNewlineOrPreproc() const;
+
+ /**
+ * @brief checks whether the chunk is a preprocessor and either a comment or a newline
+ * @return true if the chunk is a preprocessor and either a comment or a newline, false otherwise
+ */
+ bool IsCommentOrNewlineInPreproc() const;
+
+ /**
+ * @brief checks whether the chunk is a comment, a newline or has an empty text
+ * @return true if the chunk is a comment, a newline or has an empty text
+ */
+ bool IsCommentNewlineOrEmptyText() const;
+
+ /**
+ * @brief checks whether the chunk is a single line comment
+ * @return true if the chunk is a single line comment
+ */
+ bool IsSingleLineComment() const;
+
+ /**
+ * @brief checks whether the chunk is a Doxygen comment
+ * @return true if the chunk is a Doxygen comment
+ */
+ bool IsDoxygenComment() const;
+
+ /**
+ * @brief checks whether the chunk is a square bracket
+ * @return true if the chunk is a square bracket
+ */
+ bool IsSquareBracket() const;
+
+ /**
+ * @brief checks whether the chunk is a virtual brace
+ * @return true if the chunk is a virtual brace
+ */
+ bool IsVBrace() const;
+
+ /**
+ * @brief checks whether the chunk matches a given type and level
+ * @param type category to search for
+ * @param level nesting level to match
+ * @return true if the chunk matches a given type and level
+ */
+ bool IsTypeAndLevel(const E_Token type, const int level) const;
+
+ /**
+ * @brief checks whether the chunk matches a given string and level
+ * @param str the expected string
+ * @param len length of the string
+ * @param caseSensitive whether to do a case sensitive or insensitive comparison
+ * @param level nesting level of the searched chunk, ignored when negative
+ * @return true if the chunk matches a given string and level
+ */
+ bool IsStringAndLevel(const char *str, const size_t len, bool caseSensitive, const int level) const;
+
+ /**
+ * @brief checks whether the chunk is a star/asterisk
+ * @return true if the chunk is a star/asterisk
+ */
+ bool IsStar() const;
+
+ /**
+ * @brief checks whether the chunk is a colon
+ * @return true if the chunk is a colon
+ */
+ bool IsColon() const;
+
+ /**
+ * @brief checks whether the chunk is a semicolon
+ * @return true if the chunk is a semicolon
+ */
+ bool IsSemicolon() const;
+
+ /**
+ * @brief checks whether the chunk is a pointer operator
+ * @return true if the chunk is a pointer operator
+ */
+ bool IsPointerOperator() const;
+
+ /**
+ * @brief checks whether the chunk is a pointer or a reference
+ * @return true if the chunk is a pointer or a reference
+ */
+ bool IsPointerOrReference() const;
+
+ /**
+ * @brief checks whether the chunk is an inheritance access specifier
+ * @return true if the chunk is an inheritance access specifier
+ */
+ bool IsCppInheritanceAccessSpecifier() const;
+
+ /**
+ * @brief checks whether the chunk is a pointer, reference or a qualifier
+ * @return true if the chunk is a pointer, reference or a qualifier
+ */
+ bool IsPointerReferenceOrQualifier() const;
+
+ /**
+ * @brief checks whether the chunk is an address
+ * @return true if the chunk is an address
+ */
+ bool IsAddress() const;
+
+ /**
+ * @brief checks whether the chunk is a MS reference
+ * @return true if the chunk is a MS reference
+ * NOTE: MS compilers for C++/CLI and WinRT use '^' instead of '*'
+ * for marking up reference types vs pointer types
+ */
+ bool IsMsRef() const;
+
+ /**
+ * @brief checks whether the chunk is nullable
+ * @return true if the chunk is nullable
+ */
+ bool IsNullable() const;
+
+ /**
+ * @brief Checks if a given chunk is the last on its line
+ * @return true or false depending on whether a given chunk is the last on its line
+ */
+ bool IsLastChunkOnLine() const;
+
+ /**
+ * @brief checks whether the current chunk is on same line of the given 'end' chunk.
+ * The current chunk must be before the 'end' chunk
+ * @param end the end chunk
+ * @return true if there is no newline between the current chunk and end chunk
+ */
+ bool IsOnSameLine(const Chunk *end) const;
+
+ /**
+ * @brief checks whether the chunk is an opening brace
+ * @return true if the chunk is an opening brace
+ */
+ bool IsBraceOpen() const;
+
+ /**
+ * @brief checks whether the chunk is a closing brace
+ * @return true if the chunk is a closing brace
+ */
+ bool IsBraceClose() const;
+
+ /**
+ * @brief checks whether the chunk is an opening parenthesis
+ * @return true if the chunk is an opening parenthesis
+ */
+ bool IsParenOpen() const;
+
+ /**
+ * @brief checks whether the chunk is a closing parenthesis
+ * @return true if the chunk is a closing parenthesis
+ */
+ bool IsParenClose() const;
+
+ /**
+ * @brief checks if a chunk points to the opening parentheses of a
+ * for (...in...) loop in Objective-C.
+ * @return true if the chunk is the opening parentheses of a for-in loop
+ */
+ bool IsOCForinOpenParen() const;
+
+ /**
+ * @brief checks whether the chunk is a type defining token
+ * @return true if the chunk is a type defining token
+ */
+ bool IsTypeDefinition() const;
+
+ /**
+ * @brief checks whether the chunk is a word
+ * @return true if the chunk is a word
+ */
+ bool IsWord() const;
+
+ /**
+ * @brief checks whether the chunk is an enum or an enum class
+ * @return true if the chunk is an enum or an enum class
+ */
+ bool IsEnum() const;
+
+ /**
+ * @brief checks whether the chunk is a class or a struct
+ * @return true if the chunk is a class or a struct
+ */
+ bool IsClassOrStruct() const;
+
+ /**
+ * @brief checks whether the chunk is a class, struct or union
+ * @return true if the chunk is a class, struct or union
+ */
+ bool IsClassStructOrUnion() const;
+
+ /**
+ * @brief checks whether the chunk is a class, enum, struct or union
+ * @return true if the chunk is a class, enum, struct or union
+ */
+ bool IsClassEnumStructOrUnion() const;
+
+ /**
+ * @brief checks whether there is a newline between this chunk and the other
+ * @return true if there is a newline between this chunk and the other
+ */
+ bool IsNewlineBetween(const Chunk *other) const;
+
+
+ // --------- Util functions
+
+ /**
+ * @brief delete the chunk from the chunk list
+ * @param pc the chunk to remove from the list
+ */
+ static void Delete(Chunk * &pc);
+
+ /**
+ * @brief add a copy of this chunk after the given position in a chunk list.
+ * @note If pos is NullChunk, add at the tail of the chunk list
+ * @param pos insert position in list
+ * @return pointer to the newly added chunk
+ */
+ Chunk *CopyAndAddAfter(Chunk *pos) const;
+
+ /**
+ * @brief add a copy of this chunk before the given position in a chunk list.
+ * @note If pos is NullChunk, add at the head of the chunk list
+ * @param pos insert position in list
+ * @return pointer to the newly added chunk
+ */
+ Chunk *CopyAndAddBefore(Chunk *pos) const;
+
+ /**
+ * @brief move the chunk after the reference position in the chunk list
+ * @param ref chunk after which to move the current chunk
+ */
+ void MoveAfter(Chunk *ref);
+
+ /**
+ * @brief swaps the place of this chunk with the given one
+ * @param other the other chunk
+ */
+ void Swap(Chunk *other);
+
+ /**
+ * @brief swaps the two lines that are started by the current chunk and the other chunk
+ * @param other the other chunk
+ */
+ void SwapLines(Chunk *other);
+
+ //!
+ /**
+ * @brief skips to the final word/type in a :: chain
+ * @return pointer to the chunk after the final word/type in a :: chain
+ */
+ Chunk *SkipDcMember() const;
+
+ /**
+ * @brief compare the positions of the chunk with another one
+ * @param other the other chunk
+ * @return returns -1 if this chunk comes first, +1 if it comes after, or 0.
+ */
+ int ComparePosition(const Chunk *other) const;
+
+ /**
+ * Returns true if it is safe to delete the newline token.
+ * The prev and next chunks must have the same PCF_IN_PREPROC flag AND
+ * the newline can't be after a C++ comment.
+ */
+ bool SafeToDeleteNl() const;
+
+
+protected:
+ // --------- Protected util functions
+
+ /**
+ * @brief copy the values from another chunk.
+ * @NOTE: this is a partial copy only: the chunk is not linked to others
+ * @param o the chunk to copy from
+ */
+ void CopyFrom(const Chunk &o);
+
+ /**
+ * @brief add a copy of this chunk before/after the given position in a chunk list.
+ * @note If pos is NullChunk, add the new chuck either at the head or tail of the
+ * list based on the specified direction.
+ * @param pos insert position in list
+ * @param dir insert before or after the given position chunk
+ * @return pointer to the newly added chunk
+ */
+ Chunk *CopyAndAdd(Chunk *pos, const E_Direction dir = E_Direction::FORWARD) const;
+
+ /**
+ * @brief set and/or clear the chunk flags
+ * @param setBits the flag bits to set
+ * @param resetBits the flag bits to reset
+ */
+ void SetResetFlags(PcfFlags resetBits, PcfFlags setBits);
+
+
+ // --------- Data members
+ E_Token m_type; //! type of the chunk itself
+ E_Token m_parentType; //! type of the parent chunk usually CT_NONE
+ size_t m_origLine; //! line number of chunk in input file
+ size_t m_origCol; //! column where chunk started in the input file, is always > 0
+ size_t m_origColEnd; //! column where chunk ended in the input file, is always > 1
+ size_t m_origPrevSp; //! whitespace before this token
+ size_t m_column; //! column of the chunk
+ size_t m_columnIndent; //! if 1st chunk on a line, set to the 'indent' column, which may
+ //! be less than the real column used to indent with tabs
+ size_t m_nlCount; //! number of newlines in CT_NEWLINE
+ size_t m_nlColumn; //! column of the subsequent newline entries(all of them should have the same column)
+ size_t m_level; //! nest level in {, (, or [. Only to help vim command }
+ size_t m_braceLevel; //! nest level in braces only
+ size_t m_ppLevel; //! nest level in preprocessor
+ bool m_afterTab; //! whether this token was after a tab
+
+ PcfFlags m_flags; //! see PCF_xxx
+ AlignmentData m_alignmentData; //! alignment data of the chunk
+ IndentationData m_indentationData; //! indentation data of the chunk
+
+ Chunk *m_next; //! pointer to next chunk in list
+ Chunk *m_prev; //! pointer to previous chunk in list
+ Chunk *m_parent; //! pointer to parent chunk (not always set)
+
+ UncText m_str; //! the token text
+ TrackList *m_trackingList; //! for debugging purpose only
+
+
+private:
+ const bool m_nullChunk; //! true for null chunks
+
+
+public:
+ static Chunk NullChunk; //! Null Chunk
+ static Chunk *const NullChunkPtr; //! Pointer to the Null Chunk
+};
+
+
+inline Chunk::Chunk(bool null_c)
+ : m_nullChunk(null_c)
+{
+ Reset();
+}
+
+
+inline Chunk::Chunk(const Chunk &o)
+ : m_nullChunk(o.m_nullChunk)
+{
+ CopyFrom(o);
+}
+
+
+inline Chunk &Chunk::operator=(const Chunk &o)
+{
+ if (this != &o)
+ {
+ CopyFrom(o);
+ }
+ return(*this);
+}
+
+
+inline size_t Chunk::Len() const
+{
+ return(m_str.size());
+}
+
+
+inline const char *Chunk::Text() const
+{
+ return(m_str.c_str());
+}
+
+
+inline Chunk *Chunk::GetParent() const
+{
+ return(m_parent);
+}
+
+
+inline void Chunk::SetParent(Chunk *parent)
+{
+ if (this != parent)
+ {
+ m_parent = parent;
+ }
+}
+
+
+inline const AlignmentData &Chunk::GetAlignData() const
+{
+ return(m_alignmentData);
+}
+
+
+inline AlignmentData &Chunk::AlignData()
+{
+ return(m_alignmentData);
+}
+
+
+inline const IndentationData &Chunk::GetIndentData() const
+{
+ return(m_indentationData);
+}
+
+
+inline IndentationData &Chunk::IndentData()
+{
+ return(m_indentationData);
+}
+
+
+inline const UncText &Chunk::GetStr() const
+{
+ return(m_str);
+}
+
+
+inline UncText &Chunk::Str()
+{
+ return(m_str);
+}
+
+
+inline const TrackList *Chunk::GetTrackingData() const
+{
+ return(m_trackingList);
+}
+
+
+inline TrackList * &Chunk::TrackingData()
+{
+ return(m_trackingList);
+}
+
+
+inline E_Token Chunk::GetType() const
+{
+ return(m_type);
+}
+
+
+inline E_Token Chunk::GetParentType() const
+{
+ return(m_parentType);
+}
+
+
+inline E_Token Chunk::GetTypeOfParent() const
+{
+ if (GetParent()->IsNullChunk())
+ {
+ return(CT_PARENT_NOT_SET);
+ }
+ return(GetParent()->GetType());
+}
+
+
+inline PcfFlags Chunk::GetFlags() const
+{
+ return(m_flags);
+}
+
+
+inline void Chunk::SetFlags(PcfFlags flags)
+{
+ m_flags = flags;
+}
+
+
+inline bool Chunk::TestFlags(PcfFlags flags) const
+{
+ return(m_flags.test(flags));
+}
+
+
+inline void Chunk::ResetFlagBits(PcfFlags resetBits)
+{
+ SetResetFlags(resetBits, PCF_NONE);
+}
+
+
+inline void Chunk::SetFlagBits(PcfFlags setBits)
+{
+ SetResetFlags(PCF_NONE, setBits);
+}
+
+
+inline void Chunk::UpdateFlagBits(PcfFlags resetBits, PcfFlags setBits)
+{
+ SetResetFlags(resetBits, setBits);
+}
+
+
+inline size_t Chunk::GetOrigLine() const
+{
+ return(m_origLine);
+}
+
+
+inline void Chunk::SetOrigLine(size_t line)
+{
+ m_origLine = line;
+}
+
+
+inline size_t Chunk::GetOrigCol() const
+{
+ return(m_origCol);
+}
+
+
+inline void Chunk::SetOrigCol(size_t col)
+{
+ m_origCol = col;
+}
+
+
+inline size_t Chunk::GetOrigColEnd() const
+{
+ return(m_origColEnd);
+}
+
+
+inline void Chunk::SetOrigColEnd(size_t col)
+{
+ m_origColEnd = col;
+}
+
+
+inline size_t Chunk::GetOrigPrevSp() const
+{
+ return(m_origPrevSp);
+}
+
+
+inline void Chunk::SetOrigPrevSp(size_t col)
+{
+ m_origPrevSp = col;
+}
+
+
+inline size_t Chunk::GetColumn() const
+{
+ return(m_column);
+}
+
+
+inline void Chunk::SetColumn(size_t col)
+{
+ m_column = col;
+}
+
+
+inline size_t Chunk::GetColumnIndent() const
+{
+ return(m_columnIndent);
+}
+
+
+inline void Chunk::SetColumnIndent(size_t col)
+{
+ m_columnIndent = col;
+}
+
+
+inline size_t Chunk::GetNlCount() const
+{
+ return(m_nlCount);
+}
+
+
+inline void Chunk::SetNlCount(size_t cnt)
+{
+ m_nlCount = cnt;
+}
+
+
+inline size_t Chunk::GetNlColumn() const
+{
+ return(m_nlColumn);
+}
+
+
+inline void Chunk::SetNlColumn(size_t col)
+{
+ m_nlColumn = col;
+}
+
+
+inline size_t Chunk::GetLevel() const
+{
+ return(m_level);
+}
+
+
+inline void Chunk::SetLevel(size_t level)
+{
+ m_level = level;
+}
+
+
+inline size_t Chunk::GetBraceLevel() const
+{
+ return(m_braceLevel);
+}
+
+
+inline void Chunk::SetBraceLevel(size_t lvl)
+{
+ m_braceLevel = lvl;
+}
+
+
+inline size_t Chunk::GetPpLevel() const
+{
+ return(m_ppLevel);
+}
+
+
+inline void Chunk::SetPpLevel(size_t lvl)
+{
+ m_ppLevel = lvl;
+}
+
+
+inline bool Chunk::GetAfterTab() const
+{
+ return(m_afterTab);
+}
+
+
+inline void Chunk::SetAfterTab(bool afterTab)
+{
+ m_afterTab = afterTab;
+}
+
+
+inline Chunk *Chunk::GetNextNl(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsNewline, scope, E_Direction::FORWARD, true));
+}
+
+
+inline Chunk *Chunk::GetPrevNl(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsNewline, scope, E_Direction::BACKWARD, true));
+}
+
+
+inline Chunk *Chunk::GetNextNnl(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsNewline, scope, E_Direction::FORWARD, false));
+}
+
+
+inline Chunk *Chunk::GetPrevNnl(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsNewline, scope, E_Direction::BACKWARD, false));
+}
+
+
+inline Chunk *Chunk::GetNextNc(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsComment, scope, E_Direction::FORWARD, false));
+}
+
+
+inline Chunk *Chunk::GetPrevNc(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsComment, scope, E_Direction::BACKWARD, false));
+}
+
+
+inline Chunk *Chunk::GetNextNcNnl(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsCommentOrNewline, scope, E_Direction::FORWARD, false));
+}
+
+
+inline Chunk *Chunk::GetPrevNcNnl(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsCommentOrNewline, scope, E_Direction::BACKWARD, false));
+}
+
+
+inline Chunk *Chunk::GetNextNcNnlNpp(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsCommentNewlineOrPreproc, scope, E_Direction::FORWARD, false));
+}
+
+
+inline Chunk *Chunk::GetPrevNcNnlNpp(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsCommentNewlineOrPreproc, scope, E_Direction::BACKWARD, false));
+}
+
+
+inline Chunk *Chunk::GetNextNppOrNcNnl(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsCommentOrNewlineInPreproc, scope, E_Direction::FORWARD, false));
+}
+
+
+inline Chunk *Chunk::GetPrevNppOrNcNnl(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsCommentOrNewlineInPreproc, scope, E_Direction::BACKWARD, false));
+}
+
+
+inline Chunk *Chunk::PpaGetNextNcNnl() const
+{
+ return(SearchPpa(&Chunk::IsCommentOrNewline, false));
+}
+
+
+inline Chunk *Chunk::GetNextNcNnlNet(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsCommentNewlineOrEmptyText, scope, E_Direction::FORWARD, false));
+}
+
+
+inline Chunk *Chunk::GetPrevNcNnlNet(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsCommentNewlineOrEmptyText, scope, E_Direction::BACKWARD, false));
+}
+
+
+inline Chunk *Chunk::GetPrevNcNnlNi(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsCommentNewlineOrIgnored, scope, E_Direction::BACKWARD, false));
+}
+
+
+inline Chunk *Chunk::GetNextNisq(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsSquareBracket, scope, E_Direction::FORWARD, false));
+}
+
+
+inline Chunk *Chunk::GetNextType(const E_Token type, const int level, const E_Scope scope) const
+{
+ return(SearchTypeLevel(type, scope, E_Direction::FORWARD, level));
+}
+
+
+inline Chunk *Chunk::GetPrevType(const E_Token type, const int level, const E_Scope scope) const
+{
+ return(SearchTypeLevel(type, scope, E_Direction::BACKWARD, level));
+}
+
+
+inline Chunk *Chunk::GetNextString(const char *str, const size_t len, const int level, const E_Scope scope) const
+{
+ return(SearchStringLevel(str, len, level, scope, E_Direction::FORWARD));
+}
+
+
+inline Chunk *Chunk::GetPrevString(const char *str, const size_t len, const int level, const E_Scope scope) const
+{
+ return(SearchStringLevel(str, len, level, scope, E_Direction::BACKWARD));
+}
+
+
+inline Chunk *Chunk::GetNextNvb(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsVBrace, scope, E_Direction::FORWARD, false));
+}
+
+
+inline Chunk *Chunk::GetPrevNvb(const E_Scope scope) const
+{
+ return(Search(&Chunk::IsVBrace, scope, E_Direction::BACKWARD, false));
+}
+
+
+inline bool Chunk::IsTypeAndLevel(const E_Token type, const int level) const
+{
+ return( ( level < 0
+ || m_level == static_cast<size_t>(level))
+ && m_type == type);
+}
+
+
+inline bool Chunk::Is(E_Token token) const
+{
+ return( IsNotNullChunk()
+ && m_type == token);
+}
+
+
+inline bool Chunk::IsString(const char *str, bool caseSensitive) const
+{
+ return(IsStringAndLevel(str, strlen(str), caseSensitive, ANY_LEVEL));
+}
+
+
+inline bool Chunk::IsNot(E_Token token) const
+{
+ return(!Is(token));
+}
+
+
+inline bool Chunk::IsNewline() const
+{
+ return( Is(CT_NEWLINE)
+ || Is(CT_NL_CONT));
+}
+
+
+inline bool Chunk::IsComment() const
+{
+ return( Is(CT_COMMENT)
+ || Is(CT_COMMENT_MULTI)
+ || Is(CT_COMMENT_CPP));
+}
+
+
+inline bool Chunk::IsEmptyText() const
+{
+ return( IsNotNullChunk()
+ && Len() == 0);
+}
+
+
+inline bool Chunk::IsPreproc() const
+{
+ return( IsNotNullChunk()
+ && TestFlags(PCF_IN_PREPROC));
+}
+
+
+inline bool Chunk::IsCommentOrNewline() const
+{
+ return( IsComment()
+ || IsNewline());
+}
+
+
+inline bool Chunk::IsCommentNewlineOrPreproc() const
+{
+ return( IsComment()
+ || IsNewline()
+ || IsPreproc());
+}
+
+
+inline bool Chunk::IsCommentOrNewlineInPreproc() const
+{
+ return( IsPreproc()
+ && ( IsComment()
+ || IsNewline()));
+}
+
+
+inline bool Chunk::IsCommentNewlineOrEmptyText() const
+{
+ return( IsComment()
+ || IsNewline()
+ || IsEmptyText());
+}
+
+
+inline bool Chunk::IsCommentNewlineOrIgnored() const
+{
+ return( IsComment()
+ || IsNewline()
+ || Is(CT_IGNORED));
+}
+
+
+inline bool Chunk::IsSingleLineComment() const
+{
+ return( Is(CT_COMMENT)
+ || Is(CT_COMMENT_CPP));
+}
+
+
+inline bool Chunk::IsSquareBracket() const
+{
+ return( Is(CT_SQUARE_OPEN)
+ || Is(CT_TSQUARE)
+ || Is(CT_SQUARE_CLOSE));
+}
+
+
+inline bool Chunk::IsVBrace() const
+{
+ return( Is(CT_VBRACE_OPEN)
+ || Is(CT_VBRACE_CLOSE));
+}
+
+
+inline bool Chunk::IsStar() const
+{
+ return( Len() == 1
+ && m_str[0] == '*'
+ && IsNot(CT_OPERATOR_VAL));
+}
+
+
+inline bool Chunk::IsSemicolon() const
+{
+ return( Is(CT_SEMICOLON)
+ || Is(CT_VSEMICOLON));
+}
+
+
+inline bool Chunk::IsWord() const
+{
+ return( Len() >= 1
+ && CharTable::IsKw1(m_str[0]));
+}
+
+
+inline bool Chunk::IsNullable() const
+{
+ return( language_is_set(LANG_CS | LANG_VALA)
+ && Len() == 1
+ && m_str[0] == '?');
+}
+
+
+inline bool Chunk::IsMsRef() const
+{
+ return( language_is_set(LANG_CPP)
+ && Len() == 1
+ && m_str[0] == '^'
+ && IsNot(CT_OPERATOR_VAL));
+}
+
+
+inline bool Chunk::IsPointerOperator() const
+{
+ return( IsStar()
+ || IsAddress()
+ || IsMsRef()
+ || IsNullable());
+}
+
+
+inline bool Chunk::IsPointerOrReference() const
+{
+ return( IsPointerOperator()
+ || Is(CT_BYREF));
+}
+
+
+inline bool Chunk::IsBraceOpen() const
+{
+ return( Is(CT_BRACE_OPEN)
+ || Is(CT_VBRACE_OPEN));
+}
+
+
+inline bool Chunk::IsBraceClose() const
+{
+ return( Is(CT_BRACE_CLOSE)
+ || Is(CT_VBRACE_CLOSE));
+}
+
+
+inline bool Chunk::IsParenOpen() const
+{
+ return( Is(CT_PAREN_OPEN)
+ || Is(CT_SPAREN_OPEN)
+ || Is(CT_PPAREN_OPEN)
+ || Is(CT_TPAREN_OPEN)
+ || Is(CT_FPAREN_OPEN)
+ || Is(CT_LPAREN_OPEN));
+}
+
+
+inline bool Chunk::IsParenClose() const
+{
+ return( Is(CT_PAREN_CLOSE)
+ || Is(CT_SPAREN_CLOSE)
+ || Is(CT_PPAREN_CLOSE)
+ || Is(CT_TPAREN_CLOSE)
+ || Is(CT_FPAREN_CLOSE)
+ || Is(CT_LPAREN_CLOSE));
+}
+
+
+inline bool Chunk::IsSamePreproc(const Chunk *other) const
+{
+ return( IsNotNullChunk()
+ && other->IsNotNullChunk()
+ && (TestFlags(PCF_IN_PREPROC) == other->TestFlags(PCF_IN_PREPROC)));
+}
+
+
+inline bool Chunk::SafeToDeleteNl() const
+{
+ Chunk *tmp = GetPrev();
+
+ if (tmp->Is(CT_COMMENT_CPP))
+ {
+ return(false);
+ }
+ return(tmp->IsSamePreproc(GetNext()));
+}
+
+
+inline bool Chunk::IsEnum() const
+{
+ return( Is(CT_ENUM)
+ || Is(CT_ENUM_CLASS));
+}
+
+
+inline bool Chunk::IsClassOrStruct() const
+{
+ return( Is(CT_CLASS)
+ || Is(CT_STRUCT));
+}
+
+
+inline bool Chunk::IsClassStructOrUnion() const
+{
+ return( IsClassOrStruct()
+ || Is(CT_UNION));
+}
+
+
+inline bool Chunk::IsClassEnumStructOrUnion() const
+{
+ return( IsClassStructOrUnion()
+ || IsEnum());
+}
+
+
+inline Chunk *Chunk::CopyAndAddAfter(Chunk *ref) const
+{
+ return(CopyAndAdd(ref, E_Direction::FORWARD));
+}
+
+
+inline Chunk *Chunk::CopyAndAddBefore(Chunk *ref) const
+{
+ return(CopyAndAdd(ref, E_Direction::BACKWARD));
+}
+
+
+// shift all the tokens in this line to the right Issue #3236
+void shift_the_rest_of_the_line(Chunk *first);
+
+
+#endif /* CHUNK_LIST_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine.cpp
new file mode 100644
index 00000000..a033be49
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine.cpp
@@ -0,0 +1,4044 @@
+/**
+ * @file combine.cpp
+ * Labels the chunks as needed.
+ *
+ * @author Ben Gardner
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#include "combine.h"
+
+#include "combine_fix_mark.h"
+#include "combine_skip.h"
+#include "combine_tools.h"
+#include "EnumStructUnionParser.h"
+#include "flag_braced_init_list.h"
+#include "flag_parens.h"
+#include "lang_pawn.h"
+#include "mark_question_colon.h"
+#include "newlines.h"
+#include "prototypes.h"
+#include "tokenize_cleanup.h"
+#include "unc_tools.h"
+
+#include <limits>
+
+constexpr static auto LCURRENT = LCOMBINE;
+
+using namespace std;
+using namespace uncrustify;
+
+
+/**
+ * Mark the parens and colons in:
+ * asm volatile ( "xx" : "xx" (l), "yy"(h) : ... );
+ *
+ * @param pc the CT_ASM item
+ */
+static void flag_asm(Chunk *pc);
+
+
+/**
+ * Combines two tokens into {{ and }} if inside parens and nothing is between
+ * either pair.
+ */
+static void check_double_brace_init(Chunk *bo1);
+
+
+static void process_returns_and_throws();
+
+
+/**
+ * Processes a 'return' or 'throw' statement, labeling the parens and marking
+ * the parent. May remove or add parens around the return/throw statement.
+ *
+ * @param pc Pointer to the return or throw chunk
+ */
+static Chunk *process_return_or_throw(Chunk *pc);
+
+
+/**
+ * Process an ObjC 'class'
+ * pc is the chunk after '@implementation' or '@interface' or '@protocol'.
+ * Change colons, etc. Processes stuff until '@end'.
+ * Skips anything in braces.
+ */
+static void handle_oc_class(Chunk *pc);
+
+
+/**
+ * Mark Objective-C blocks (aka lambdas or closures)
+ * The syntax and usage is exactly like C function pointers
+ * but instead of an asterisk they have a caret as pointer symbol.
+ * Although it may look expensive this functions is only triggered
+ * on appearance of an OC_BLOCK_CARET for LANG_OC.
+ * repeat(10, ^{ putc('0'+d); });
+ * typedef void (^workBlk_t)(void);
+ *
+ * @param pc points to the '^'
+ */
+static void handle_oc_block_literal(Chunk *pc);
+
+
+/**
+ * Mark Objective-C block types.
+ * The syntax and usage is exactly like C function pointers
+ * but instead of an asterisk they have a caret as pointer symbol.
+ * typedef void (^workBlk_t)(void);
+ * const char * (^workVar)(void);
+ * -(void)Foo:(void(^)())blk { }
+ *
+ * This is triggered when the sequence '(' '^' is found.
+ *
+ * @param pc points to the '^'
+ */
+static void handle_oc_block_type(Chunk *pc);
+
+
+/**
+ * Process an ObjC message spec/dec
+ *
+ * Specs:
+ * -(void) foo ARGS;
+ *
+ * Declaration:
+ * -(void) foo ARGS { }
+ *
+ * LABEL : (ARGTYPE) ARGNAME
+ *
+ * ARGS is ': (ARGTYPE) ARGNAME [MOREARGS...]'
+ * MOREARGS is ' [ LABEL] : (ARGTYPE) ARGNAME '
+ * -(void) foo: (int) arg: { }
+ * -(void) foo: (int) arg: { }
+ * -(void) insertObject:(id)anObject atIndex:(int)index
+ */
+static void handle_oc_message_decl(Chunk *pc);
+
+
+/**
+ * Process an ObjC message send statement:
+ * [ class func: val1 name2: val2 name3: val3] ; // named params
+ * [ class func: val1 : val2 : val3] ; // unnamed params
+ * [ class <proto> self method ] ; // with protocol
+ * [[NSMutableString alloc] initWithString: @"" ] // class from msg
+ * [func(a,b,c) lastObject ] // class from func
+ *
+ * Mainly find the matching ']' and ';' and mark the colons.
+ *
+ * @param pc points to the open square '['
+ */
+static void handle_oc_message_send(Chunk *pc);
+
+
+//! Process @Property values and re-arrange them if necessary
+static void handle_oc_property_decl(Chunk *pc);
+
+//! Process @available annotation
+static void handle_oc_available(Chunk *pc);
+
+/**
+ * Process a type that is enclosed in parens in message declarations.
+ * TODO: handle block types, which get special formatting
+ *
+ * @param pc points to the open paren
+ *
+ * @return the chunk after the type
+ */
+static Chunk *handle_oc_md_type(Chunk *paren_open, E_Token ptype, PcfFlags flags, bool &did_it);
+
+/**
+ * Process an C# [] thingy:
+ * [assembly: xxx]
+ * [AttributeUsage()]
+ * [@X]
+ *
+ * Set the next chunk to a statement start after the close ']'
+ *
+ * @param pc points to the open square '['
+ */
+static void handle_cs_square_stmt(Chunk *pc);
+
+
+/**
+ * We are on a brace open that is preceded by a word or square close.
+ * Set the brace parent to CT_CS_PROPERTY and find the first item in the
+ * property and set its parent, too.
+ */
+static void handle_cs_property(Chunk *pc);
+
+
+/**
+ * We hit a ']' followed by a WORD. This may be a multidimensional array type.
+ * Example: int[,,] x;
+ * If there is nothing but commas between the open and close, then mark it.
+ */
+static void handle_cs_array_type(Chunk *pc);
+
+
+/**
+ * We are on the C++ 'template' keyword.
+ * What follows should be the following:
+ *
+ * template <class identifier> function_declaration;
+ * template <typename identifier> function_declaration;
+ * template <class identifier> class class_declaration;
+ * template <typename identifier> class class_declaration;
+ *
+ * Change the 'class' inside the <> to CT_TYPE.
+ * Set the parent to the class after the <> to CT_TEMPLATE.
+ * Set the parent of the semicolon to CT_TEMPLATE.
+ */
+static void handle_cpp_template(Chunk *pc);
+
+
+/**
+ * Verify and then mark C++ lambda expressions.
+ * The expected format is '[...](...){...}' or '[...](...) -> type {...}'
+ * sq_o is '[' CT_SQUARE_OPEN or '[]' CT_TSQUARE
+ * Split the '[]' so we can control the space
+ */
+static void handle_cpp_lambda(Chunk *pc);
+
+
+/**
+ * We are on the D 'template' keyword.
+ * What follows should be the following:
+ *
+ * template NAME ( TYPELIST ) { BODY }
+ *
+ * Set the parent of NAME to template, change NAME to CT_TYPE.
+ * Set the parent of the parens and braces to CT_TEMPLATE.
+ * Scan the body for each type in TYPELIST and change the type to CT_TYPE.
+ */
+static void handle_d_template(Chunk *pc);
+
+
+/**
+ * A func wrap chunk and what follows should be treated as a function name.
+ * Create new text for the chunk and call it a CT_FUNCTION.
+ *
+ * A type wrap chunk and what follows should be treated as a simple type.
+ * Create new text for the chunk and call it a CT_TYPE.
+ */
+static void handle_wrap(Chunk *pc);
+
+
+/**
+ * A proto wrap chunk and what follows should be treated as a function proto.
+ *
+ * RETTYPE PROTO_WRAP( NAME, PARAMS ); or RETTYPE PROTO_WRAP( NAME, (PARAMS) );
+ * RETTYPE gets changed with make_type().
+ * PROTO_WRAP is marked as CT_FUNC_PROTO or CT_FUNC_DEF.
+ * NAME is marked as CT_WORD.
+ * PARAMS is all marked as prototype parameters.
+ */
+static void handle_proto_wrap(Chunk *pc);
+
+
+static bool is_oc_block(Chunk *pc);
+
+
+/**
+ * Java assert statements are: "assert EXP1 [: EXP2] ;"
+ * Mark the parent of the colon and semicolon
+ */
+static void handle_java_assert(Chunk *pc);
+
+
+static void flag_asm(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *tmp = pc->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (tmp->IsNot(CT_QUALIFIER))
+ {
+ return;
+ }
+ Chunk *po = tmp->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (!po->IsParenOpen())
+ {
+ return;
+ }
+ Chunk *end = po->GetClosingParen(E_Scope::PREPROC);
+
+ if (end->IsNullChunk())
+ {
+ return;
+ }
+ po->SetParentType(CT_ASM);
+ end->SetParentType(CT_ASM);
+
+ for ( tmp = po->GetNextNcNnl(E_Scope::PREPROC);
+ tmp->IsNotNullChunk()
+ && tmp != end;
+ tmp = tmp->GetNextNcNnl(E_Scope::PREPROC))
+ {
+ if (tmp->Is(CT_COLON))
+ {
+ tmp->SetType(CT_ASM_COLON);
+ }
+ else if (tmp->Is(CT_DC_MEMBER))
+ {
+ // if there is a string on both sides, then this is two ASM_COLONs
+ if ( tmp->GetNextNcNnl(E_Scope::PREPROC)->Is(CT_STRING)
+ && tmp->GetPrevNcNnlNi(E_Scope::PREPROC)->Is(CT_STRING)) // Issue #2279
+ {
+ Chunk nc;
+
+ nc = *tmp;
+
+ tmp->Str().resize(1);
+ tmp->SetOrigColEnd(tmp->GetOrigCol() + 1);
+ tmp->SetType(CT_ASM_COLON);
+
+ nc.SetType(tmp->GetType());
+ nc.Str().pop_front();
+ nc.SetOrigCol(nc.GetOrigCol() + 1);
+ nc.SetColumn(nc.GetColumn() + 1);
+ nc.CopyAndAddAfter(tmp);
+ }
+ }
+ }
+
+ tmp = end->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (tmp->IsNullChunk())
+ {
+ return;
+ }
+
+ if (tmp->Is(CT_SEMICOLON))
+ {
+ tmp->SetParentType(CT_ASM);
+ }
+} // flag_asm
+
+
+void do_symbol_check(Chunk *prev, Chunk *pc, Chunk *next)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LFCNR, "%s(%d): prev is '%s' %s\n",
+ __func__, __LINE__,
+ prev->Text(), get_token_name(prev->GetType()));
+ log_pcf_flags(LFCNR, prev->GetFlags());
+ LOG_FMT(LFCNR, "%s(%d): pc is '%s' %s\n",
+ __func__, __LINE__,
+ pc->Text(), get_token_name(pc->GetType()));
+ log_pcf_flags(LFCNR, pc->GetFlags());
+ LOG_FMT(LFCNR, "%s(%d): next is '%s' %s\n",
+ __func__, __LINE__,
+ next->Text(), get_token_name(next->GetType()));
+ log_pcf_flags(LFCNR, next->GetFlags());
+
+ if ( pc->Is(CT_NOEXCEPT) // Issue #3284
+ && next->Is(CT_ASSIGN)) // skip over noexcept
+ {
+ LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc = next;
+ next = pc->GetNext();
+ }
+
+ // separate the uses of CT_ASSIGN sign '='
+ // into CT_ASSIGN_DEFAULT_ARG, CT_ASSIGN_FUNC_PROTO
+ if ( pc->Is(CT_ASSIGN)
+ && pc->GetParentType() == CT_FUNC_PROTO
+ && ( pc->TestFlags(PCF_IN_FCN_DEF) // Issue #2236
+ || pc->TestFlags(PCF_IN_CONST_ARGS)))
+ {
+ LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ log_pcf_flags(LFCNR, pc->GetFlags());
+ pc->SetType(CT_ASSIGN_DEFAULT_ARG);
+ return;
+ }
+
+ if ( ( prev->Is(CT_FPAREN_CLOSE)
+ || ( ( prev->IsString("const")
+ || prev->IsString("override"))
+ && prev->GetPrev()->Is(CT_FPAREN_CLOSE)))
+ && pc->Is(CT_ASSIGN)
+ && ( next->Is(CT_DEFAULT)
+ || next->Is(CT_DELETE)
+ || next->IsString("0")))
+ {
+ pc->SetType(CT_ASSIGN_FUNC_PROTO);
+ return; // cpp 30031
+ }
+
+ if (pc->Is(CT_OC_AT))
+ {
+ if ( next->Is(CT_PAREN_OPEN)
+ || next->Is(CT_BRACE_OPEN)
+ || next->Is(CT_SQUARE_OPEN))
+ {
+ flag_parens(next, PCF_OC_BOXED, next->GetType(), CT_OC_AT, false);
+ }
+ else
+ {
+ next->SetParentType(CT_OC_AT);
+ return; // objective-c_50095
+ }
+ }
+
+ // D stuff
+ if ( language_is_set(LANG_D)
+ && pc->Is(CT_QUALIFIER)
+ && pc->IsString("const")
+ && next->Is(CT_PAREN_OPEN))
+ {
+ pc->SetType(CT_D_CAST);
+ set_paren_parent(next, pc->GetType());
+ return; // d_40061
+ }
+
+ if ( next->Is(CT_PAREN_OPEN)
+ && ( pc->Is(CT_D_CAST)
+ || pc->Is(CT_DELEGATE)
+ || pc->Is(CT_ALIGN)))
+ {
+ // mark the parenthesis parent
+ Chunk *tmp = set_paren_parent(next, pc->GetType());
+
+ // For a D cast - convert the next item
+ if ( pc->Is(CT_D_CAST)
+ && tmp->IsNotNullChunk())
+ {
+ if (tmp->Is(CT_STAR))
+ {
+ tmp->SetType(CT_DEREF);
+ return; // d_40006
+ }
+ else if (tmp->Is(CT_AMP))
+ {
+ tmp->SetType(CT_ADDR);
+ return; // d_40060
+ }
+ else if (tmp->Is(CT_MINUS))
+ {
+ tmp->SetType(CT_NEG);
+ return; // d_40060
+ }
+ else if (tmp->Is(CT_PLUS))
+ {
+ tmp->SetType(CT_POS);
+ return; // d_40060
+ }
+ }
+
+ /*
+ * For a delegate, mark previous words as types and the item after the
+ * close paren as a variable def
+ */
+ if (pc->Is(CT_DELEGATE))
+ {
+ if (tmp->IsNotNullChunk())
+ {
+ tmp->SetParentType(CT_DELEGATE);
+
+ if (tmp->GetLevel() == tmp->GetBraceLevel())
+ {
+ tmp->SetFlagBits(PCF_VAR_1ST_DEF);
+ }
+ }
+
+ for (tmp = pc->GetPrevNcNnlNi(); tmp->IsNotNullChunk(); tmp = tmp->GetPrevNcNnlNi()) // Issue #2279
+ {
+ if ( tmp->IsSemicolon()
+ || tmp->Is(CT_BRACE_OPEN)
+ || tmp->Is(CT_VBRACE_OPEN))
+ {
+ break;
+ }
+ make_type(tmp);
+ }
+
+ return; // c-sharp_10160
+ }
+
+ if ( pc->Is(CT_ALIGN)
+ && tmp->IsNotNullChunk())
+ {
+ if (tmp->Is(CT_BRACE_OPEN))
+ {
+ set_paren_parent(tmp, pc->GetType());
+ return; // d_40024
+ }
+ else if (tmp->Is(CT_COLON))
+ {
+ tmp->SetParentType(pc->GetType());
+ return; // d_40024
+ }
+ }
+ } // paren open + cast/align/delegate
+
+ if (pc->Is(CT_INVARIANT))
+ {
+ if (next->Is(CT_PAREN_OPEN))
+ {
+ next->SetParentType(pc->GetType());
+ Chunk *tmp = next->GetNext();
+
+ while (tmp->IsNotNullChunk())
+ {
+ if (tmp->Is(CT_PAREN_CLOSE))
+ {
+ tmp->SetParentType(pc->GetType());
+ break;
+ }
+ make_type(tmp);
+ tmp = tmp->GetNext();
+ }
+ return; // d_40100
+ }
+ else
+ {
+ pc->SetType(CT_QUALIFIER);
+ return;
+ }
+ }
+
+ if ( prev->Is(CT_BRACE_OPEN)
+ && prev->GetParentType() != CT_CS_PROPERTY
+ && ( pc->Is(CT_GETSET)
+ || pc->Is(CT_GETSET_EMPTY)))
+ {
+ flag_parens(prev, PCF_NONE, CT_NONE, CT_GETSET, false);
+ return;
+ }
+
+ if (pc->Is(CT_ASM))
+ {
+ flag_asm(pc);
+ return;
+ }
+
+ // clang stuff - A new derived type is introduced to C and, by extension, Objective-C, C++, and Objective-C++
+ if (language_is_set(LANG_C | LANG_CPP | LANG_OC))
+ {
+ if (pc->Is(CT_CARET))
+ {
+ if ( pc->TestFlags(PCF_EXPR_START)
+ || pc->TestFlags(PCF_IN_PREPROC))
+ {
+ handle_oc_block_literal(pc);
+ return;
+ }
+ }
+ }
+
+ // Objective C stuff
+ if (language_is_set(LANG_OC))
+ {
+ // Check for message declarations
+ if (pc->TestFlags(PCF_STMT_START))
+ {
+ if ( ( pc->IsString("-")
+ || pc->IsString("+"))
+ && next->IsString("("))
+ {
+ handle_oc_message_decl(pc);
+ return;
+ }
+ }
+
+ if ( pc->TestFlags(PCF_EXPR_START)
+ || pc->TestFlags(PCF_IN_PREPROC))
+ {
+ if (pc->Is(CT_SQUARE_OPEN))
+ {
+ handle_oc_message_send(pc);
+
+ // Only return early if the '[' was determined to be an OC MSG
+ // Otherwise, it could have been a lambda capture list (ie '[&]')
+ if (pc->GetParentType() == CT_OC_MSG)
+ {
+ return; // objective-c_50003
+ }
+ }
+ }
+
+ if (pc->Is(CT_OC_PROPERTY))
+ {
+ handle_oc_property_decl(pc);
+ return;
+ }
+
+ if (pc->Is(CT_OC_AVAILABLE))
+ {
+ handle_oc_available(pc);
+ return;
+ }
+ }
+
+ // C# and Vala stuff
+ if (language_is_set(LANG_CS | LANG_VALA))
+ {
+ // '[assembly: xxx]' stuff
+ if ( language_is_set(LANG_CS)
+ && pc->TestFlags(PCF_EXPR_START)
+ && pc->Is(CT_SQUARE_OPEN))
+ {
+ handle_cs_square_stmt(pc);
+ return;
+ }
+
+ if ( language_is_set(LANG_CS)
+ && next->Is(CT_BRACE_OPEN)
+ && next->GetParentType() == CT_NONE
+ && ( pc->Is(CT_SQUARE_CLOSE)
+ || pc->Is(CT_ANGLE_CLOSE)
+ || pc->Is(CT_WORD)))
+ {
+ handle_cs_property(next);
+ return;
+ }
+
+ if ( pc->Is(CT_SQUARE_CLOSE)
+ && next->Is(CT_WORD))
+ {
+ handle_cs_array_type(pc);
+ return;
+ }
+
+ if ( ( pc->Is(CT_LAMBDA)
+ || pc->Is(CT_DELEGATE))
+ && next->Is(CT_BRACE_OPEN))
+ {
+ set_paren_parent(next, pc->GetType());
+ return;
+ }
+
+ if ( language_is_set(LANG_CS)
+ && pc->Is(CT_WHEN)
+ && pc->GetNext()->IsNotNullChunk()
+ && pc->GetNext()->IsNot(CT_SPAREN_OPEN))
+ {
+ pc->SetType(CT_WORD);
+ return;
+ }
+ }
+
+ if ( language_is_set(LANG_JAVA)
+ && pc->Is(CT_LAMBDA)
+ && next->Is(CT_BRACE_OPEN))
+ {
+ set_paren_parent(next, pc->GetType());
+ return;
+ }
+
+ if (pc->Is(CT_NEW))
+ {
+ Chunk *ts = Chunk::NullChunkPtr;
+ Chunk *tmp = next;
+
+ if (tmp->Is(CT_TSQUARE))
+ {
+ ts = tmp;
+ tmp = tmp->GetNextNcNnl();
+ }
+
+ if ( tmp->Is(CT_BRACE_OPEN)
+ || tmp->Is(CT_PAREN_OPEN))
+ {
+ set_paren_parent(tmp, pc->GetType());
+
+ if (ts->IsNotNullChunk())
+ {
+ ts->SetParentType(pc->GetType());
+ }
+ }
+ return;
+ }
+
+ // C++11 Lambda stuff
+ if ( language_is_set(LANG_CPP)
+ && ( pc->Is(CT_SQUARE_OPEN)
+ || pc->Is(CT_TSQUARE)))
+ {
+ handle_cpp_lambda(pc);
+ }
+
+ // FIXME: which language does this apply to?
+ // Issue #2432
+ if (!language_is_set(LANG_OC))
+ {
+ if ( pc->Is(CT_ASSIGN)
+ && next->Is(CT_SQUARE_OPEN))
+ {
+ set_paren_parent(next, CT_ASSIGN);
+
+ // Mark one-liner assignment
+ Chunk *tmp = next;
+
+ while ((tmp = tmp->GetNextNc())->IsNotNullChunk())
+ {
+ if (tmp->IsNewline())
+ {
+ break;
+ }
+
+ if ( tmp->Is(CT_SQUARE_CLOSE)
+ && next->GetLevel() == tmp->GetLevel())
+ {
+ tmp->SetFlagBits(PCF_ONE_LINER);
+ next->SetFlagBits(PCF_ONE_LINER);
+ break;
+ }
+ }
+ return;
+ }
+ }
+
+ if (pc->Is(CT_ASSERT))
+ {
+ handle_java_assert(pc);
+ return;
+ }
+
+ if (pc->Is(CT_ANNOTATION))
+ {
+ Chunk *tmp = pc->GetNextNcNnl();
+
+ if (tmp->IsParenOpen())
+ {
+ set_paren_parent(tmp, CT_ANNOTATION);
+ }
+ return;
+ }
+
+ if ( pc->Is(CT_SIZEOF)
+ && language_is_set(LANG_ALLC))
+ {
+ Chunk *tmp = pc->GetNextNcNnl();
+
+ if (tmp->Is(CT_ELLIPSIS))
+ {
+ tmp->SetParentType(CT_SIZEOF);
+ }
+ return;
+ }
+
+ if ( pc->Is(CT_DECLTYPE)
+ && pc->GetParentType() != CT_FUNC_DEF)
+ {
+ Chunk *tmp = pc->GetNextNcNnl();
+
+ if (tmp->IsParenOpen())
+ {
+ // decltype may be followed by a braced-init-list
+ tmp = set_paren_parent(tmp, CT_DECLTYPE);
+
+ if (tmp->IsBraceOpen() && !pc->TestFlags(PCF_IN_LAMBDA))
+ {
+ tmp = set_paren_parent(tmp, CT_BRACED_INIT_LIST);
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp->ResetFlagBits(PCF_EXPR_START | PCF_STMT_START);
+ }
+ }
+ else
+ {
+ if (tmp->Is(CT_WORD))
+ {
+ tmp->SetFlagBits(PCF_VAR_1ST_DEF);
+ }
+ }
+ }
+ return;
+ }
+
+ // A [] in C#, D and Vala only follows a type
+ if ( pc->Is(CT_TSQUARE)
+ && language_is_set(LANG_D | LANG_CS | LANG_VALA))
+ {
+ if (prev->Is(CT_WORD))
+ {
+ prev->SetType(CT_TYPE);
+ }
+
+ if (next->Is(CT_WORD))
+ {
+ next->SetFlagBits(PCF_VAR_1ST_DEF);
+ }
+ return;
+ }
+
+ if ( pc->Is(CT_SQL_EXEC)
+ || pc->Is(CT_SQL_BEGIN)
+ || pc->Is(CT_SQL_END))
+ {
+ mark_exec_sql(pc);
+ return;
+ }
+
+ if (pc->Is(CT_PROTO_WRAP))
+ {
+ handle_proto_wrap(pc);
+ return;
+ }
+
+ // Handle the typedef
+ if (pc->Is(CT_TYPEDEF))
+ {
+ fix_typedef(pc);
+ return;
+ }
+
+ if ( pc->IsClassEnumStructOrUnion()
+ && prev->IsNot(CT_TYPEDEF))
+ {
+ // Issue #3811
+ // Sometimes the enum chunk can exist in a parameter (ie. `void foo(enum EnumType param)`)
+ // In this case we don't need to run the parser since we are not declaring an enum.
+ if (pc->IsEnum())
+ {
+ const size_t level = pc->GetLevel();
+ Chunk *tmp = pc;
+
+ while (tmp->GetLevel() == level && tmp->IsNotNullChunk())
+ {
+ tmp = tmp->GetNextNcNnl();
+ }
+
+ if (tmp->GetLevel() < level)
+ {
+ return;
+ }
+ }
+ EnumStructUnionParser parser;
+ parser.parse(pc);
+ return;
+ }
+
+ if (pc->Is(CT_EXTERN))
+ {
+ if (next->IsParenOpen())
+ {
+ Chunk *tmp = flag_parens(next, PCF_NONE, CT_NONE, CT_EXTERN, true);
+
+ if (tmp->Is(CT_BRACE_OPEN))
+ {
+ set_paren_parent(tmp, CT_EXTERN);
+ }
+ }
+ else
+ {
+ // next likely is a string (see tokenize_cleanup.cpp)
+ next->SetParentType(CT_EXTERN);
+ Chunk *tmp = next->GetNextNcNnl();
+
+ if (tmp->Is(CT_BRACE_OPEN))
+ {
+ set_paren_parent(tmp, CT_EXTERN);
+ }
+ }
+ return;
+ }
+
+ if (pc->Is(CT_TEMPLATE))
+ {
+ if (language_is_set(LANG_D))
+ {
+ handle_d_template(pc);
+ }
+ else
+ {
+ handle_cpp_template(pc);
+ }
+ return;
+ }
+
+ if ( pc->Is(CT_WORD)
+ && next->Is(CT_ANGLE_OPEN)
+ && next->GetParentType() == CT_TEMPLATE)
+ {
+ mark_template_func(pc, next);
+ return;
+ }
+
+ if ( pc->Is(CT_SQUARE_CLOSE)
+ && next->Is(CT_PAREN_OPEN))
+ {
+ flag_parens(next, PCF_NONE, CT_FPAREN_OPEN, CT_NONE, false);
+ return;
+ }
+
+ if (pc->Is(CT_TYPE_CAST))
+ {
+ fix_type_cast(pc);
+ return;
+ }
+
+ if ( pc->GetParentType() == CT_ASSIGN
+ && ( pc->Is(CT_BRACE_OPEN)
+ || pc->Is(CT_SQUARE_OPEN)))
+ {
+ // Mark everything in here as in assign
+ flag_parens(pc, PCF_IN_ARRAY_ASSIGN, pc->GetType(), CT_NONE, false);
+ return;
+ }
+
+ if (pc->Is(CT_D_TEMPLATE))
+ {
+ set_paren_parent(next, pc->GetType());
+ return;
+ }
+
+ /*
+ * A word before an open paren is a function call or definition.
+ * CT_WORD => CT_FUNC_CALL or CT_FUNC_DEF
+ */
+ if (next->Is(CT_PAREN_OPEN))
+ {
+ Chunk *tmp = next->GetNextNcNnl();
+
+ if ( language_is_set(LANG_C | LANG_CPP | LANG_OC)
+ && tmp->Is(CT_CARET))
+ {
+ handle_oc_block_type(tmp);
+
+ // This is the case where a block literal is passed as the first argument of a C-style method invocation.
+ if ( ( tmp->Is(CT_OC_BLOCK_CARET)
+ || tmp->Is(CT_CARET))
+ && pc->Is(CT_WORD))
+ {
+ LOG_FMT(LFCN, "%s(%d): (1) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc->SetType(CT_FUNC_CALL);
+ }
+ }
+ else if ( pc->Is(CT_WORD)
+ || pc->Is(CT_OPERATOR_VAL))
+ {
+ pc->SetType(CT_FUNCTION);
+ }
+ else if (pc->Is(CT_FIXED))
+ {
+ pc->SetType(CT_FUNCTION);
+ pc->SetParentType(CT_FIXED);
+ }
+ else if (pc->Is(CT_TYPE))
+ {
+ /*
+ * If we are on a type, then we are either on a C++ style cast, an
+ * array reference, a function or we are on a function type.
+ * The only way to tell for sure is to find the close paren and see
+ * if it is followed by an open paren.
+ * "int(5.6)"
+ * "int()"
+ * "int(foo)(void)"
+ *
+ * FIXME: this check can be done better...
+ */
+ LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+
+ bool is_byref_array = false;
+
+ if (language_is_set(LANG_CPP))
+ {
+ // If the open paren is followed by an ampersand, an optional word,
+ // a close parenthesis, and an open square bracket, then it is an
+ // array being passed by reference, not a cast
+ tmp = next->GetNextNcNnl();
+
+ if (tmp->Is(CT_AMP))
+ {
+ auto tmp2 = tmp->GetNextNcNnl();
+
+ if (tmp2->Is(CT_WORD))
+ {
+ tmp2 = tmp2->GetNextNcNnl();
+ }
+
+ if (tmp2->Is(CT_PAREN_CLOSE))
+ {
+ tmp2 = tmp2->GetNextNcNnl();
+
+ if (tmp2->Is(CT_SQUARE_OPEN))
+ {
+ is_byref_array = true;
+ tmp->SetType(CT_BYREF);
+ }
+ }
+ }
+ }
+
+ if (!is_byref_array)
+ {
+ tmp = next->GetNextType(CT_PAREN_CLOSE, next->GetLevel());
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp = tmp->GetNext();
+
+ if (tmp->Is(CT_PAREN_OPEN))
+ {
+ pc->SetType(CT_FUNCTION);
+ }
+ else
+ {
+ if ( pc->GetParentType() == CT_NONE
+ && !pc->TestFlags(PCF_IN_TYPEDEF))
+ {
+ tmp = next->GetNextNcNnl();
+
+ if (tmp->Is(CT_PAREN_CLOSE))
+ {
+ // we have TYPE()
+ pc->SetType(CT_FUNCTION);
+ }
+ else
+ {
+ // we have TYPE(...)
+ pc->SetType(CT_CPP_CAST);
+ set_paren_parent(next, CT_CPP_CAST);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (language_is_set(LANG_PAWN))
+ {
+ if ( pc->Is(CT_FUNCTION)
+ && pc->GetBraceLevel() > 0)
+ {
+ LOG_FMT(LFCN, "%s(%d): (2) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc->SetType(CT_FUNC_CALL);
+ }
+
+ if ( pc->Is(CT_STATE)
+ && next->Is(CT_PAREN_OPEN))
+ {
+ set_paren_parent(next, pc->GetType());
+ }
+ }
+ else
+ {
+ if ( ( pc->Is(CT_FUNCTION)
+ || pc->Is(CT_FUNC_DEF))
+ && ( (pc->GetParentType() == CT_OC_BLOCK_EXPR)
+ || !is_oc_block(pc)))
+ {
+ mark_function(pc);
+ }
+ }
+
+ // Detect C99 member stuff
+ if ( pc->Is(CT_MEMBER)
+ && ( prev->Is(CT_COMMA)
+ || prev->Is(CT_BRACE_OPEN)))
+ {
+ pc->SetType(CT_C99_MEMBER);
+ next->SetParentType(CT_C99_MEMBER);
+ return;
+ }
+
+ // Mark function parens and braces
+ if ( pc->Is(CT_FUNC_DEF)
+ || pc->Is(CT_FUNC_CALL)
+ || pc->Is(CT_FUNC_CALL_USER)
+ || pc->Is(CT_FUNC_PROTO))
+ {
+ Chunk *tmp = next;
+
+ if (tmp->Is(CT_SQUARE_OPEN))
+ {
+ tmp = set_paren_parent(tmp, pc->GetType());
+ }
+ else if ( tmp->Is(CT_TSQUARE)
+ || tmp->GetParentType() == CT_OPERATOR)
+ {
+ tmp = tmp->GetNextNcNnl();
+ }
+
+ if (tmp->IsNotNullChunk())
+ {
+ if (tmp->IsParenOpen())
+ {
+ tmp = flag_parens(tmp, PCF_NONE, CT_FPAREN_OPEN, pc->GetType(), false);
+
+ if (tmp->IsNotNullChunk())
+ {
+ if (tmp->Is(CT_BRACE_OPEN))
+ {
+ if ( tmp->GetParentType() != CT_DOUBLE_BRACE
+ && !pc->TestFlags(PCF_IN_CONST_ARGS))
+ {
+ set_paren_parent(tmp, pc->GetType());
+ }
+ }
+ else if ( tmp->IsSemicolon()
+ && pc->Is(CT_FUNC_PROTO))
+ {
+ tmp->SetParentType(pc->GetType());
+ }
+ }
+ }
+ }
+ return;
+ }
+
+ // Mark the parameters in catch()
+ if ( pc->Is(CT_CATCH)
+ && next->Is(CT_SPAREN_OPEN))
+ {
+ fix_fcn_def_params(next);
+ return;
+ }
+
+ if ( pc->Is(CT_THROW)
+ && prev->Is(CT_FPAREN_CLOSE))
+ {
+ pc->SetParentType(prev->GetParentType());
+
+ if (next->Is(CT_PAREN_OPEN))
+ {
+ set_paren_parent(next, CT_THROW);
+ }
+ return;
+ }
+
+ // Mark the braces in: "for_each_entry(xxx) { }"
+ if ( pc->Is(CT_BRACE_OPEN)
+ && pc->GetParentType() != CT_DOUBLE_BRACE
+ && prev->Is(CT_FPAREN_CLOSE)
+ && ( prev->GetParentType() == CT_FUNC_CALL
+ || prev->GetParentType() == CT_FUNC_CALL_USER)
+ && !pc->TestFlags(PCF_IN_CONST_ARGS))
+ {
+ LOG_FMT(LFCN, "%s(%d): (3) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ set_paren_parent(pc, CT_FUNC_CALL);
+ return;
+ }
+
+ /*
+ * Check for a close parenthesis followed by an open parenthesis,
+ * which means that we are on a function type declaration (C/C++ only?).
+ * Note that typedefs are already taken care of.
+ */
+ if ( !pc->TestFlags(PCF_IN_TEMPLATE) // Issue #3252
+ && pc->GetParentType() != CT_CPP_CAST
+ && pc->GetParentType() != CT_C_CAST
+ && !pc->TestFlags(PCF_IN_PREPROC)
+ && !is_oc_block(pc)
+ && pc->GetParentType() != CT_OC_MSG_DECL
+ && pc->GetParentType() != CT_OC_MSG_SPEC
+ && ( pc->IsString(")")
+ || pc->Is(CT_FUNC_TYPE))
+ && next->IsString("("))
+ {
+ if (language_is_set(LANG_D))
+ {
+ flag_parens(next, PCF_NONE, CT_FPAREN_OPEN, CT_FUNC_CALL, false);
+ }
+ else
+ {
+ mark_function_type(pc);
+ }
+ return;
+ }
+
+ if (pc->Is(CT_OC_CLASS))
+ {
+ handle_oc_class(pc);
+ return;
+ }
+ // TODO: Check for stuff that can only occur at the start of an statement
+
+ if (!language_is_set(LANG_D))
+ {
+ /*
+ * Check a parenthesis pair to see if it is a cast.
+ * Note that SPAREN and FPAREN have already been marked.
+ */
+ if ( pc->Is(CT_PAREN_OPEN)
+ && ( pc->GetParentType() == CT_NONE
+ || pc->GetParentType() == CT_OC_MSG
+ || pc->GetParentType() == CT_OC_BLOCK_EXPR
+ || pc->GetParentType() == CT_CS_SQ_STMT) // Issue # 1256
+ && ( next->Is(CT_WORD)
+ || next->Is(CT_TYPE)
+ || next->Is(CT_STRUCT)
+ || next->Is(CT_QUALIFIER)
+ || next->Is(CT_MEMBER)
+ || next->Is(CT_DC_MEMBER)
+ || next->Is(CT_ENUM)
+ || next->Is(CT_UNION))
+ && prev->IsNot(CT_DECLTYPE)
+ && prev->IsNot(CT_SIZEOF)
+ && prev->GetParentType() != CT_SIZEOF
+ && prev->GetParentType() != CT_OPERATOR
+ && !pc->TestFlags(PCF_IN_TYPEDEF))
+ {
+ fix_casts(pc);
+ return;
+ }
+ }
+
+ if (language_is_set(LANG_CPP))
+ {
+ Chunk *nnext = next->GetNextNcNnl();
+
+ // handle parent_type of assigns in special functions (ro5 + pure virtual)
+ if ( pc->GetFlags().test_any(PCF_IN_STRUCT | PCF_IN_CLASS)
+ && pc->Is(CT_ASSIGN)
+ && nnext->Is(CT_SEMICOLON)
+ && ( next->Is(CT_DEFAULT)
+ || next->Is(CT_DELETE)
+ || ( next->Is(CT_NUMBER)
+ && next->IsString("0"))))
+ {
+ const size_t level = pc->GetLevel();
+ bool found_status = false;
+ Chunk *pprev = pc->GetPrev();
+
+ for ( ; ( pprev->IsNotNullChunk()
+ && pprev->GetLevel() >= level
+ && pprev->IsNot(CT_SEMICOLON)
+ && pprev->IsNot(CT_ACCESS_COLON))
+ ; pprev = pprev->GetPrev())
+ {
+ if (pprev->GetLevel() != level)
+ {
+ continue;
+ }
+
+ if (next->Is(CT_NUMBER))
+ {
+ if ( pprev->Is(CT_QUALIFIER)
+ && pprev->IsString("virtual"))
+ {
+ found_status = true;
+ break;
+ }
+ }
+ else
+ {
+ if ( pprev->Is(CT_FUNC_CLASS_PROTO) // ctor/dtor
+ || pprev->Is(CT_FUNC_PROTO)) // normal function
+ {
+ found_status = true;
+ break;
+ }
+ }
+ }
+
+ if (found_status)
+ {
+ pc->SetParentType(pprev->GetType());
+ }
+ }
+
+ if (detect_cpp_braced_init_list(pc, next))
+ {
+ flag_cpp_braced_init_list(pc, next);
+ }
+ }
+
+ // Check for stuff that can only occur at the start of an expression
+ if ( pc->TestFlags(PCF_EXPR_START)
+ || ( prev->TestFlags(PCF_EXPR_START)
+ && pc->GetParentType() == CT_OC_AT))
+ {
+ // Change STAR, MINUS, and PLUS in the easy cases
+ if (pc->Is(CT_STAR))
+ {
+ // issue #596
+ // [0x100062020:IN_SPAREN,IN_FOR,STMT_START,EXPR_START,PUNCTUATOR]
+ // prev->GetType() is CT_COLON ==> CT_DEREF
+ if (prev->Is(CT_ANGLE_CLOSE))
+ {
+ pc->SetType(CT_PTR_TYPE);
+ }
+ else if (prev->Is(CT_COLON))
+ {
+ pc->SetType(CT_DEREF);
+ }
+ else
+ {
+ pc->SetType(CT_DEREF);
+ }
+ }
+
+ if ( language_is_set(LANG_CPP)
+ && pc->Is(CT_CARET)
+ && prev->Is(CT_ANGLE_CLOSE))
+ {
+ pc->SetType(CT_PTR_TYPE);
+ }
+
+ if ( language_is_set(LANG_CS | LANG_VALA)
+ && pc->Is(CT_QUESTION)
+ && prev->Is(CT_ANGLE_CLOSE))
+ {
+ pc->SetType(CT_PTR_TYPE);
+ }
+
+ else if (pc->Is(CT_MINUS))
+ {
+ pc->SetType(CT_NEG);
+ }
+
+ else if (pc->Is(CT_PLUS))
+ {
+ pc->SetType(CT_POS);
+ }
+
+ else if (pc->Is(CT_INCDEC_AFTER))
+ {
+ pc->SetType(CT_INCDEC_BEFORE);
+ }
+
+ else if (pc->Is(CT_AMP))
+ {
+ if (prev->Is(CT_ANGLE_CLOSE)) // Issue #2324
+ {
+ pc->SetType(CT_BYREF);
+ }
+ else
+ {
+ pc->SetType(CT_ADDR);
+ }
+ }
+
+ else if (pc->Is(CT_CARET))
+ {
+ if (language_is_set(LANG_C | LANG_CPP | LANG_OC))
+ {
+ // This is likely the start of a block literal
+ handle_oc_block_literal(pc);
+ }
+ }
+ }
+
+ /*
+ * Change the parenthesis pair after a function/macro-function
+ * CT_PAREN_OPEN => CT_FPAREN_OPEN
+ */
+ if (pc->Is(CT_MACRO_FUNC))
+ {
+ flag_parens(next, PCF_IN_FCN_CALL, CT_FPAREN_OPEN, CT_MACRO_FUNC, false);
+ }
+
+ if ( pc->Is(CT_MACRO_OPEN)
+ || pc->Is(CT_MACRO_ELSE)
+ || pc->Is(CT_MACRO_CLOSE))
+ {
+ if (next->Is(CT_PAREN_OPEN))
+ {
+ flag_parens(next, PCF_NONE, CT_FPAREN_OPEN, pc->GetType(), false);
+ }
+ }
+
+ if ( pc->Is(CT_DELETE)
+ && next->Is(CT_TSQUARE))
+ {
+ next->SetParentType(CT_DELETE);
+ }
+
+ // Change CT_STAR to CT_PTR_TYPE or CT_ARITH or CT_DEREF
+ if ( pc->Is(CT_STAR)
+ || ( language_is_set(LANG_CPP)
+ && pc->Is(CT_CARET)))
+ {
+ if ( next->IsParenClose()
+ || next->Is(CT_COMMA))
+ {
+ pc->SetType(CT_PTR_TYPE);
+ }
+ else if ( language_is_set(LANG_OC)
+ && next->Is(CT_STAR))
+ {
+ /*
+ * Change pointer-to-pointer types in OC_MSG_DECLs
+ * from ARITH <===> DEREF to PTR_TYPE <===> PTR_TYPE
+ */
+ pc->SetType(CT_PTR_TYPE);
+ pc->SetParentType(prev->GetParentType());
+
+ next->SetType(CT_PTR_TYPE);
+ next->SetParentType(pc->GetParentType());
+ }
+ else if ( pc->Is(CT_STAR)
+ && ( prev->Is(CT_DECLTYPE)
+ || prev->Is(CT_SIZEOF)
+ || prev->Is(CT_DELETE)
+ || pc->GetParentType() == CT_SIZEOF))
+ {
+ pc->SetType(CT_DEREF);
+ }
+ else if ( ( prev->Is(CT_WORD)
+ && chunk_ends_type(prev)
+ && !prev->TestFlags(PCF_IN_FCN_CTOR)
+ && !prev->TestFlags(PCF_IN_ARRAY_ASSIGN)) // Issue #3345
+ || prev->Is(CT_DC_MEMBER)
+ || prev->Is(CT_PTR_TYPE))
+ {
+ LOG_FMT(LFCNR, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n ",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ log_pcf_flags(LFCNR, pc->GetFlags());
+ pc->SetType(CT_PTR_TYPE);
+ }
+ else if ( next->Is(CT_SQUARE_OPEN)
+ && !language_is_set(LANG_OC)) // Issue #408
+ {
+ pc->SetType(CT_PTR_TYPE);
+ }
+ else if (pc->Is(CT_STAR))
+ {
+ // Add check for CT_DC_MEMBER CT_WORD CT_STAR sequence
+ // to convert CT_WORD into CT_TYPE
+ // and CT_STAR into CT_PTR_TYPE
+ // look for an assign backward, function call, return to distinguish between
+ // double result = Constants::PI * factor;
+ // and
+ // ::some::name * foo;
+ if ( prev->Is(CT_WORD)
+ && prev->GetPrev()->Is(CT_DC_MEMBER)
+ && language_is_set(LANG_CPP))
+ {
+ // Issue 1402
+ bool is_multiplication = false;
+ Chunk *tmp = pc;
+
+ while (tmp->IsNotNullChunk())
+ {
+ if ( tmp->Is(CT_SEMICOLON)
+ || tmp->GetParentType() == CT_CLASS)
+ {
+ break;
+ }
+ else if ( tmp->Is(CT_ASSIGN)
+ || tmp->Is(CT_FUNC_CALL)
+ || tmp->Is(CT_RETURN))
+ {
+ is_multiplication = true;
+ break;
+ }
+ tmp = tmp->GetPrevNcNnlNi(); // Issue #2279
+ }
+
+ if (is_multiplication)
+ {
+ // double result = Constants::PI * factor;
+ pc->SetType(CT_ARITH);
+ }
+ else
+ {
+ // ::some::name * foo;
+ prev->SetType(CT_TYPE);
+ pc->SetType(CT_PTR_TYPE);
+ }
+ }
+
+ /*
+ * A star can have three meanings
+ * 1. CT_DEREF = pointer dereferencing
+ * 2. CT_PTR_TYPE = pointer definition
+ * 3. CT_ARITH = arithmetic multiplication
+ *
+ * most PCF_PUNCTUATOR chunks except a paren close would make this
+ * a deref. A paren close may end a cast or may be part of a macro fcn.
+ */
+ if (prev->Is(CT_TYPE))
+ {
+ pc->SetType(CT_PTR_TYPE);
+ }
+ else if ( pc->GetNext()->Is(CT_SEMICOLON) // Issue #2319
+ || ( pc->GetNext()->Is(CT_STAR)
+ && pc->GetNext()->GetNext()->Is(CT_SEMICOLON)))
+ {
+ // example:
+ // using AbstractLinkPtr = AbstractLink*;
+ // using AbstractLinkPtrPtr = AbstractLink**;
+ pc->SetType(CT_PTR_TYPE);
+ }
+ else if ( ( pc->GetParentType() == CT_FUNC_DEF
+ && ( next->IsBraceOpen()
+ || pc->GetNext()->IsStar()))
+ || next->Is(CT_QUALIFIER)) // Issue #2648
+ {
+ // example:
+ // auto getComponent(Color *color) -> Component * {
+ // auto getComponent(Color *color) -> Component ** {
+ // auto getComponent(Color *color) -> Component * _Nonnull
+ // only to help the vim command }}
+ pc->SetType(CT_PTR_TYPE);
+ }
+ else if ( pc->GetNext()->Is(CT_SEMICOLON) // Issue #2319
+ || ( pc->GetNext()->Is(CT_STAR)
+ && pc->GetNext()->GetNext()->Is(CT_STAR)))
+ {
+ // more pointers are NOT yet possible
+ fprintf(stderr, "Too many pointers: the maximum level of pointer indirection is 3 (i.e., ***p)\n");
+ fprintf(stderr, "at line %zu, column %zu.\n", pc->GetOrigLine(), pc->GetOrigCol());
+ fprintf(stderr, "Please make a report.\n");
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ else if ( !prev->TestFlags(PCF_PUNCTUATOR)
+ || prev->Is(CT_INCDEC_AFTER)
+ || prev->Is(CT_SQUARE_CLOSE)
+ || prev->Is(CT_DC_MEMBER)) // Issue 1402
+ {
+ pc->SetType(CT_ARITH);
+ }
+ else if ( !prev->IsParenClose()
+ || prev->Is(CT_SPAREN_CLOSE)
+ || prev->GetParentType() == CT_MACRO_FUNC)
+ {
+ pc->SetType(CT_DEREF);
+ }
+ else
+ {
+ pc->SetType(CT_ARITH);
+ }
+
+ if (pc->TestFlags(PCF_IN_TYPEDEF)) // Issue #1255/#633
+ {
+ Chunk *tmp = pc;
+
+ while (tmp->IsNotNullChunk())
+ {
+ if ( tmp->Is(CT_SEMICOLON)
+ || tmp->Is(CT_BRACE_OPEN)
+ || tmp->Is(CT_SQUARE_OPEN)) // Issue #3342
+ {
+ break;
+ }
+ else if (tmp->Is(CT_TYPEDEF))
+ {
+ pc->SetType(CT_PTR_TYPE);
+ }
+ tmp = tmp->GetPrevNcNnlNi(); // Issue #2279
+ }
+ }
+ }
+ }
+
+ if (pc->Is(CT_AMP))
+ {
+ Chunk *prevNext = prev->GetNext();
+
+ if (prev->Is(CT_DELETE))
+ {
+ pc->SetType(CT_ADDR);
+ }
+ else if ( prev->Is(CT_TYPE)
+ || prev->Is(CT_QUALIFIER)
+ || prevNext->Is(CT_QUALIFIER))
+ {
+ pc->SetType(CT_BYREF);
+ }
+ else if ( prev->Is(CT_WORD) // Issue #3204
+ && next->Is(CT_OPERATOR))
+ {
+ pc->SetType(CT_BYREF);
+ }
+ else if ( next->Is(CT_FPAREN_CLOSE)
+ || next->Is(CT_COMMA))
+ {
+ // fix the bug #654
+ // connect(&mapper, SIGNAL(mapped(QString &)), this, SLOT(onSomeEvent(QString &)));
+ pc->SetType(CT_BYREF);
+ }
+ else if (pc->GetParentType() == CT_USING_ALIAS)
+ {
+ // fix the Issue # 1689
+ // using reference = value_type &;
+ pc->GetPrev()->SetType(CT_TYPE);
+ pc->SetType(CT_BYREF);
+ }
+ else
+ {
+ // Issue # 1398
+ if ( pc->TestFlags(PCF_IN_FCN_DEF)
+ && prev->Is(CT_WORD)
+ && pc->Is(CT_AMP)
+ && next->Is(CT_WORD))
+ {
+ /*
+ * Change CT_WORD before CT_AMP before CT_WORD to CT_TYPE
+ */
+ prev->SetType(CT_TYPE);
+ }
+ else if ( pc->TestFlags(PCF_IN_PREPROC) // Issue #3559
+ && prev->IsNot(CT_WORD) // Issue #2205
+ && pc->Is(CT_AMP)
+ && next->Is(CT_WORD)
+ && !pc->TestFlags(PCF_IN_SPAREN))
+ {
+ pc->SetType(CT_ADDR);
+ }
+ else
+ {
+ pc->SetType(CT_ARITH);
+
+ if ( prev->Is(CT_WORD)
+ && next->IsNot(CT_NUMBER)) // Issue #3407
+ {
+ Chunk *tmp = prev->GetPrevNcNnlNi(); // Issue #2279
+
+ if (tmp->IsNotNullChunk())
+ {
+ if ( tmp->IsSemicolon()
+ || tmp->Is(CT_BRACE_OPEN)
+ || tmp->Is(CT_QUALIFIER))
+ {
+ pc->SetType(CT_BYREF);
+ prev->SetType(CT_TYPE);
+
+ if (!( next->Is(CT_OPERATOR)
+ || next->Is(CT_TYPE)
+ || next->Is(CT_DC_MEMBER)))
+ {
+ LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', set PCF_VAR_1ST\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ next->SetFlagBits(PCF_VAR_1ST);
+ }
+ }
+ else if (tmp->Is(CT_DC_MEMBER))
+ {
+ // see also Issue #3967
+ // Issue #2103 & Issue #3865: partial fix
+ // No easy way to tell between an enum and a type with
+ // a namespace qualifier. Compromise: if we're in a
+ // function def or call, assume it's a ref.
+ Chunk *nextNext = next->GetNext();
+
+ if ( nextNext->IsNot(CT_DC_MEMBER)
+ && ( pc->TestFlags(PCF_IN_FCN_CALL)
+ || pc->TestFlags(PCF_IN_FCN_CTOR)
+ || pc->TestFlags(PCF_IN_FCN_DEF)))
+ {
+ pc->SetType(CT_BYREF);
+ }
+ else
+ {
+ prev->SetType(CT_TYPE);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if ( pc->Is(CT_MINUS)
+ || pc->Is(CT_PLUS))
+ {
+ if ( prev->Is(CT_POS)
+ || prev->Is(CT_NEG)
+ || prev->Is(CT_ARITH)
+ || prev->Is(CT_SHIFT))
+ {
+ pc->SetType(pc->Is(CT_MINUS) ? CT_NEG : CT_POS);
+ }
+ else if (prev->Is(CT_OC_CLASS))
+ {
+ pc->SetType((pc->Is(CT_MINUS)) ? CT_NEG : CT_POS);
+ }
+ else
+ {
+ pc->SetType(CT_ARITH);
+ }
+ }
+
+ /*
+ * Bug # 634
+ * Check for extern "C" NSString* i;
+ * NSString is a type
+ * change CT_WORD => CT_TYPE for pc
+ * change CT_STAR => CT_PTR_TYPE for pc-next
+ */
+ if (pc->Is(CT_WORD)) // here NSString
+ {
+ Chunk *pcNext = pc->GetNext();
+ Chunk *pcPrev = pc->GetPrev();
+
+ if (pcNext->Is(CT_STAR)) // here *
+ {
+ // compare text with "C" to find extern "C" instructions
+ if (pcPrev->Is(CT_STRING))
+ {
+ if (UncText::compare(pcPrev->Text(), "\"C\"") == 0)
+ {
+ if (pcPrev->GetPrev()->Is(CT_EXTERN))
+ {
+ pc->SetType(CT_TYPE); // change CT_WORD => CT_TYPE
+ pcNext->SetType(CT_PTR_TYPE); // change CT_STAR => CT_PTR_TYPE
+ }
+ }
+ }
+ // Issue #322 STDMETHOD(GetValues)(BSTR bsName, REFDATA** pData);
+ Chunk *nnext = pcNext->GetNext();
+
+ if ( nnext->Is(CT_STAR)
+ && pc->TestFlags(PCF_IN_CONST_ARGS))
+ {
+ // change CT_STAR => CT_PTR_TYPE
+ pcNext->SetType(CT_PTR_TYPE);
+ nnext->SetType(CT_PTR_TYPE);
+ }
+
+ // Issue #222 whatever3 *(func_ptr)( whatever4 *foo2, ...
+ if ( nnext->Is(CT_WORD)
+ && pc->TestFlags(PCF_IN_FCN_DEF))
+ {
+ // look for the opening parenthesis
+ // Issue 1403
+ Chunk *tmp = pc->GetPrevType(CT_FPAREN_OPEN, pc->GetLevel() - 1);
+
+ if ( tmp->IsNotNullChunk()
+ && tmp->GetParentType() != CT_FUNC_CTOR_VAR)
+ {
+ pcNext->SetType(CT_PTR_TYPE);
+ }
+ }
+ }
+ }
+
+ /*
+ * Bug # 634
+ * Check for __attribute__((visibility ("default"))) NSString* i;
+ * NSString is a type
+ * change CT_WORD => CT_TYPE for pc
+ * change CT_STAR => CT_PTR_TYPE for pc-next
+ */
+ if (pc->Is(CT_WORD)) // here NSString
+ {
+ Chunk *pcNext = pc->GetNext();
+
+ if (pcNext->Is(CT_STAR)) // here *
+ {
+ Chunk *tmp = pc;
+
+ while (tmp->IsNotNullChunk())
+ {
+ if (tmp->Is(CT_ATTRIBUTE))
+ {
+ LOG_FMT(LFCNR, "%s(%d): ATTRIBUTE found, type is %s, Text() '%s'\n",
+ __func__, __LINE__, get_token_name(tmp->GetType()), tmp->Text());
+ LOG_FMT(LFCNR, "for token, type is %s, Text() '%s'\n", get_token_name(pc->GetType()), pc->Text());
+ // change CT_WORD => CT_TYPE
+ pc->SetType(CT_TYPE);
+ // change CT_STAR => CT_PTR_TYPE
+ pcNext->SetType(CT_PTR_TYPE);
+ }
+
+ if (tmp->TestFlags(PCF_STMT_START))
+ {
+ // we are at beginning of the line
+ break;
+ }
+ tmp = tmp->GetPrev();
+ }
+ }
+ }
+
+ /*
+ * Issue # 1689
+ * Check for using reference = value_type&;
+ * is it a Type alias, alias template?
+ */
+ if (pc->Is(CT_USING))
+ {
+ // look for CT_ASSIGN before CT_SEMICOLON at the end of the statement
+
+ bool is_preproc = pc->TestFlags(PCF_IN_PREPROC);
+ auto const search_assign = [&pc, &is_preproc]()
+ {
+ for (Chunk *temp = pc; temp->IsNotNullChunk(); temp = temp->GetNextNcNnl())
+ {
+ LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, temp->GetOrigLine(), temp->GetOrigCol(),
+ temp->Text(), get_token_name(temp->GetType()));
+
+ if (temp->Is(CT_ASSIGN))
+ {
+ return(true);
+ }
+
+ if ( temp->Is(CT_SEMICOLON)
+ || ( is_preproc
+ && ( !temp->TestFlags(PCF_IN_PREPROC)
+ || temp->Is(CT_PREPROC))))
+ {
+ return(false);
+ }
+ }
+
+ return(false);
+ };
+
+ const bool assign_found = language_is_set(LANG_D) || search_assign();
+
+ if (assign_found)
+ {
+ // it is a Type alias, alias template
+ for (Chunk *temp = pc; temp->IsNotNullChunk(); temp = temp->GetNextNcNnl())
+ {
+ if (temp->GetParentType() == CT_NONE)
+ {
+ temp->SetParentType(CT_USING_ALIAS);
+ }
+
+ if ( temp->Is(CT_SEMICOLON)
+ || ( is_preproc
+ && ( !temp->TestFlags(PCF_IN_PREPROC)
+ || temp->Is(CT_PREPROC))))
+ {
+ break;
+ }
+ }
+ }
+ }
+
+ // Issue #548: inline T && someFunc(foo * *p, bar && q) { }
+ if ( pc->Is(CT_BOOL)
+ && !pc->TestFlags(PCF_IN_PREPROC)
+ && pc->IsString("&&")
+ && chunk_ends_type(pc->GetPrev()))
+ {
+ Chunk *tmp = pc->GetPrev(); // Issue #2688
+ LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(),
+ tmp->Text(), get_token_name(tmp->GetType()));
+ log_pcf_flags(LFCNR, tmp->GetFlags());
+ // look for a type
+
+ if (tmp->Is(CT_TYPE))
+ {
+ LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(),
+ pc->Text(), get_token_name(pc->GetType()));
+ log_pcf_flags(LFCNR, pc->GetFlags());
+ pc->SetType(CT_BYREF);
+ }
+ // look next, is there a "assign" before the ";"
+ Chunk *semi = pc->GetNextType(CT_SEMICOLON, pc->GetLevel()); // Issue #2688
+
+ if (semi->IsNotNullChunk())
+ {
+ LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, semi->GetOrigLine(), semi->GetOrigCol(),
+ semi->Text(), get_token_name(semi->GetType()));
+
+ for (Chunk *test_it = pc; test_it != semi; test_it = test_it->GetNext())
+ {
+ LOG_FMT(LFCNR, "%s(%d): test_it orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, test_it->GetOrigLine(), test_it->GetOrigCol(),
+ test_it->Text(), get_token_name(test_it->GetType()));
+
+ if (test_it->Is(CT_ASSIGN))
+ {
+ // the statement is an assignment
+ // && is before assign
+ pc->SetType(CT_BYREF);
+ break;
+ }
+ }
+ }
+ }
+
+ // Issue #1704
+ if ( pc->Is(CT_INCDEC_AFTER)
+ && pc->TestFlags(PCF_IN_PREPROC))
+ {
+ Chunk *tmp_2 = pc->GetNext();
+ LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(),
+ pc->Text(), get_token_name(pc->GetType()));
+ log_pcf_flags(LFTYPE, pc->GetFlags());
+
+ if (tmp_2->Is(CT_WORD))
+ {
+ pc->SetType(CT_INCDEC_BEFORE);
+ }
+ }
+} // do_symbol_check
+
+
+static void check_double_brace_init(Chunk *bo1)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LJDBI, "%s(%d): orig line is %zu, orig col is %zu", __func__, __LINE__, bo1->GetOrigLine(), bo1->GetOrigCol());
+ Chunk *pc = bo1->GetPrevNcNnlNi(); // Issue #2279
+
+ if (pc->IsNullChunk())
+ {
+ return;
+ }
+
+ if (pc->IsParenClose())
+ {
+ Chunk *bo2 = bo1->GetNext();
+
+ if (bo2->IsNullChunk())
+ {
+ return;
+ }
+
+ if (bo2->Is(CT_BRACE_OPEN))
+ {
+ // found a potential double brace
+ Chunk *bc2 = bo2->GetClosingParen();
+
+ if (bc2->IsNullChunk())
+ {
+ return;
+ }
+ Chunk *bc1 = bc2->GetNext();
+
+ if (bc1->IsNullChunk())
+ {
+ return;
+ }
+
+ if (bc1->Is(CT_BRACE_CLOSE))
+ {
+ LOG_FMT(LJDBI, " - end, orig line is %zu, orig col is %zu\n", bc2->GetOrigLine(), bc2->GetOrigCol());
+ // delete bo2 and bc1
+ bo1->Str() += bo2->GetStr();
+ bo1->SetOrigColEnd(bo2->GetOrigColEnd());
+ Chunk::Delete(bo2);
+ bo1->SetParentType(CT_DOUBLE_BRACE);
+
+ bc2->Str() += bc1->GetStr();
+ bc2->SetOrigColEnd(bc1->GetOrigColEnd());
+ Chunk::Delete(bc1);
+ bc2->SetParentType(CT_DOUBLE_BRACE);
+ return;
+ }
+ }
+ }
+ LOG_FMT(LJDBI, " - no\n");
+} // check_double_brace_init
+
+
+void fix_symbols()
+{
+ LOG_FUNC_ENTRY();
+ Chunk *pc;
+
+ cpd.unc_stage = unc_stage_e::FIX_SYMBOLS;
+
+ mark_define_expressions();
+
+ bool is_cpp = language_is_set(LANG_CPP);
+ bool is_java = language_is_set(LANG_JAVA);
+
+ for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ LOG_FMT(LFCNR, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+
+ if ( pc->Is(CT_FUNC_WRAP)
+ || pc->Is(CT_TYPE_WRAP))
+ {
+ handle_wrap(pc);
+ }
+
+ if (pc->Is(CT_ASSIGN))
+ {
+ mark_lvalue(pc);
+ }
+ // a brace immediately preceded by word in C++11 is an initializer list though it may also
+ // by a type casting initializer list if the word is really a type; sadly uncrustify knows
+ // only built-in types and knows nothing of user-defined types
+ Chunk *prev = pc->GetPrevNcNnlNi(); // Issue #2279
+
+ if ( is_cpp
+ && pc->Is(CT_BRACE_OPEN)
+ && ( prev->Is(CT_WORD)
+ || prev->Is(CT_TYPE)))
+ {
+ mark_lvalue(pc);
+ }
+
+ if ( is_java
+ && pc->Is(CT_BRACE_OPEN))
+ {
+ check_double_brace_init(pc);
+ }
+
+ if (pc->Is(CT_ATTRIBUTE))
+ {
+ Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
+
+ if ( next->IsNotNullChunk()
+ && next->Is(CT_PAREN_OPEN))
+ {
+ flag_parens(next, PCF_NONE, CT_FPAREN_OPEN, CT_ATTRIBUTE, false);
+ }
+ }
+ }
+
+ pc = Chunk::GetHead();
+
+ if (pc->IsCommentOrNewline())
+ {
+ pc = pc->GetNextNcNnl();
+ }
+
+ while (pc->IsNotNullChunk())
+ {
+ if (pc->Is(CT_IGNORED))
+ {
+ pc = pc->GetNextNcNnl();
+ continue;
+ }
+ LOG_FMT(LFCNR, "%s(%d): pc orig line %zu, orig col %zu, text '%s', type %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ Chunk *prev = pc->GetPrevNcNnlNi(E_Scope::PREPROC); // Issue #2279
+
+ if (prev->Is(CT_QUALIFIER))
+ {
+ prev = prev->GetPrevNcNnlNi(E_Scope::PREPROC); // Issue #3513
+ }
+
+ if (prev->IsNullChunk())
+ {
+ LOG_FMT(LFCNR, "%s(%d): prev is NOT defined\n", __func__, __LINE__);
+ }
+ else
+ {
+ // Issue #2279
+ LOG_FMT(LFCNR, "%s(%d): prev(ni) orig line %zu, orig col %zu, text '%s', type %s\n",
+ __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text(), get_token_name(prev->GetType()));
+ }
+ Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (next->IsNullChunk())
+ {
+ LOG_FMT(LFCNR, "%s(%d): next is NOT defined\n", __func__, __LINE__);
+ }
+ else
+ {
+ // Issue #2279
+ LOG_FMT(LFCNR, "%s(%d): next orig line %zu, orig col %zu, text '%s', type %s\n",
+ __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->Text(), get_token_name(next->GetType()));
+ }
+ LOG_FMT(LFCNR, "%s(%d): do_symbol_check for '%s, %s, %s'\n",
+ __func__, __LINE__, prev->Text(), pc->Text(), next->Text());
+ do_symbol_check(prev, pc, next);
+ pc = pc->GetNextNcNnl();
+ }
+ pawn_add_virtual_semicolons();
+ process_returns_and_throws();
+
+ /*
+ * 2nd pass - handle variable definitions
+ * REVISIT: We need function params marked to do this (?)
+ */
+ pc = Chunk::GetHead();
+ int square_level = -1;
+
+ while (pc->IsNotNullChunk())
+ {
+ char copy[1000];
+ LOG_FMT(LFCNR, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s, parent type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy), get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
+
+ // Can't have a variable definition inside [ ]
+ if (square_level < 0)
+ {
+ if (pc->Is(CT_SQUARE_OPEN))
+ {
+ square_level = pc->GetLevel();
+ }
+ }
+ else
+ {
+ if (pc->GetLevel() <= static_cast<size_t>(square_level))
+ {
+ square_level = -1;
+ }
+ }
+
+ if ( pc->Is(CT_EXTERN)
+ && language_is_set(LANG_ALLC))
+ {
+ Chunk *next = pc->GetNextNcNnl();
+
+ if (next->Is(CT_STRING))
+ {
+ Chunk *tmp = next->GetNextNcNnl();
+
+ while (tmp->IsNotNullChunk())
+ {
+ if ( tmp->Is(CT_TYPE)
+ || tmp->Is(CT_BRACE_OPEN)
+ || tmp->Is(CT_ATTRIBUTE))
+ {
+ break;
+ }
+
+ if (tmp->Is(CT_WORD))
+ {
+ tmp->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
+ log_ruleStart("start statement/ expression", tmp);
+ break;
+ }
+ tmp = tmp->GetNextNcNnl();
+ }
+ }
+ }
+
+ if ( pc->Is(CT_ATTRIBUTE)
+ && language_is_set(LANG_ALLC))
+ {
+ Chunk *tmp = skip_attribute_next(pc);
+
+ if (tmp->Is(CT_WORD))
+ {
+ tmp->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
+ log_ruleStart("start statement/ expression", tmp);
+ }
+ }
+
+ if ( pc->Is(CT_BRACE_OPEN) // Issue #2332
+ && pc->GetParentType() == CT_BRACED_INIT_LIST)
+ {
+ LOG_FMT(LFCNR, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', look for CT_BRACE_OPEN\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc = pc->GetNextType(CT_BRACE_CLOSE, pc->GetLevel());
+ }
+ /*
+ * A variable definition is possible after at the start of a statement
+ * that starts with: DC_MEMBER, QUALIFIER, TYPE, or WORD
+ */
+ // Issue #2279
+ // Issue #2478
+ LOG_FMT(LFCNR, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s, parent type is %s\n ",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy), get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
+ log_pcf_flags(LFCNR, pc->GetFlags());
+
+ if ( (square_level < 0)
+ && pc->TestFlags(PCF_STMT_START)
+ && ( pc->Is(CT_QUALIFIER)
+ || pc->Is(CT_TYPE)
+ || pc->Is(CT_TYPENAME)
+ || pc->Is(CT_DC_MEMBER) // Issue #2478
+ || ( pc->Is(CT_WORD)
+ && !pc->TestFlags(PCF_IN_CONDITIONAL) // Issue #3558
+// && language_is_set(LANG_CPP)
+ )
+ )
+ && pc->GetParentType() != CT_BIT_COLON
+ && pc->GetParentType() != CT_ENUM_COLON // Issue #4040
+ && pc->GetParentType() != CT_ENUM
+ && !pc->TestFlags(PCF_IN_CLASS_BASE)
+ && !pc->TestFlags(PCF_IN_ENUM))
+ {
+ pc = fix_variable_definition(pc);
+ }
+ else
+ {
+ pc = pc->GetNextNcNnl();
+ }
+ }
+} // fix_symbols
+
+
+static void process_returns_and_throws()
+{
+ LOG_FUNC_ENTRY();
+ Chunk *pc;
+
+ pc = Chunk::GetHead();
+
+ while (pc->IsNotNullChunk())
+ {
+ if ( pc->Is(CT_RETURN)
+ || pc->Is(CT_THROW))
+ {
+ pc = process_return_or_throw(pc);
+ }
+ else
+ {
+ pc = pc->GetNext();
+ }
+ }
+}
+
+
+static Chunk *process_return_or_throw(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ const char *nl_expr_name;
+ iarf_e nl_expr_value;
+ const char *mod_paren_name;
+ iarf_e mod_paren_value;
+
+ if (pc->Is(CT_RETURN))
+ {
+ nl_expr_name = "nl_return_expr";
+ nl_expr_value = options::nl_return_expr();
+ mod_paren_name = "mod_paren_on_return";
+ mod_paren_value = options::mod_paren_on_return();
+ }
+ else if (pc->Is(CT_THROW))
+ {
+ nl_expr_name = "nl_throw_expr";
+ nl_expr_value = options::nl_throw_expr();
+ mod_paren_name = "mod_paren_on_throw";
+ mod_paren_value = options::mod_paren_on_throw();
+ }
+ else // should never happen
+ {
+ return(pc->GetNext());
+ }
+ Chunk *next;
+ Chunk *temp;
+ Chunk *semi;
+ Chunk *cpar;
+ Chunk chunk;
+
+ // grab next and bail if it is a semicolon
+ next = pc->PpaGetNextNcNnl();
+
+ if ( next->IsNullChunk()
+ || next->IsSemicolon()
+ || next->Is(CT_NEWLINE))
+ {
+ return(next);
+ }
+ log_rule_B(nl_expr_name);
+
+ if ( nl_expr_value != IARF_IGNORE
+ && !pc->TestFlags(PCF_IN_PREPROC))
+ {
+ newline_iarf(pc, nl_expr_value);
+ }
+
+ if (next->Is(CT_PAREN_OPEN))
+ {
+ // See if the return/throw is fully paren'd
+ cpar = next->GetNextType(CT_PAREN_CLOSE, next->GetLevel());
+
+ if (cpar->IsNullChunk())
+ {
+ return(Chunk::NullChunkPtr);
+ }
+ semi = cpar->PpaGetNextNcNnl();
+
+ if (semi->IsNullChunk())
+ {
+ return(Chunk::NullChunkPtr);
+ }
+
+ if ( semi->Is(CT_NEWLINE)
+ || semi->IsSemicolon())
+ {
+ log_rule_B(mod_paren_name);
+
+ if (mod_paren_value == IARF_REMOVE)
+ {
+ LOG_FMT(LRETURN, "%s(%d): removing parens on orig line %zu\n",
+ __func__, __LINE__, pc->GetOrigLine());
+
+ // lower the level of everything
+ for (temp = next; temp != cpar; temp = temp->GetNext())
+ {
+ if (temp->GetLevel() == 0)
+ {
+ fprintf(stderr, "%s(%d): temp->GetLevel() is ZERO, cannot be decremented, at line %zu, column %zu\n",
+ __func__, __LINE__, temp->GetOrigLine(), temp->GetOrigCol());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ temp->SetLevel(temp->GetLevel() - 1);
+ }
+
+ // delete the parenthesis
+ Chunk::Delete(next);
+ Chunk::Delete(cpar);
+
+ // back up following chunks
+ temp = semi;
+
+ while ( temp->IsNotNullChunk()
+ && temp->IsNot(CT_NEWLINE))
+ {
+ temp->SetColumn(temp->GetColumn() - 2);
+ temp->SetOrigCol(temp->GetOrigCol() - 2);
+ temp->SetOrigColEnd(temp->GetOrigColEnd() - 2);
+ temp = temp->GetNext();
+ }
+ }
+ else
+ {
+ LOG_FMT(LRETURN, "%s(%d): keeping parens on orig line %zu\n",
+ __func__, __LINE__, pc->GetOrigLine());
+
+ // mark & keep them
+ next->SetParentType(pc->GetType());
+ cpar->SetParentType(pc->GetType());
+ }
+ return(semi);
+ }
+ }
+ // We don't have a fully paren'd return/throw. Should we add some?
+ log_rule_B(mod_paren_name);
+
+ if (!(mod_paren_value & IARF_ADD))
+ {
+ return(next);
+ }
+
+ // Issue #1917
+ // Never add parens to a braced init list; that breaks the code
+ // return {args...}; // C++11 type elision; okay
+ // return ({args...}); // ill-formed
+ if ( language_is_set(LANG_CPP)
+ && next->Is(CT_BRACE_OPEN)
+ && next->GetParentType() == CT_BRACED_INIT_LIST)
+ {
+ LOG_FMT(LRETURN, "%s(%d): not adding parens around braced initializer"
+ " on orig line %zd\n",
+ __func__, __LINE__, pc->GetOrigLine());
+ return(next);
+ }
+ // find the next semicolon on the same level
+ semi = next;
+
+ if (pc->TestFlags(PCF_IN_PREPROC))
+ {
+ while ((semi = semi->GetNext())->IsNotNullChunk())
+ {
+ if (!semi->TestFlags(PCF_IN_PREPROC))
+ {
+ break;
+ }
+
+ if (semi->GetLevel() < pc->GetLevel())
+ {
+ return(semi);
+ }
+
+ if ( semi->IsSemicolon()
+ && pc->GetLevel() == semi->GetLevel())
+ {
+ break;
+ }
+ }
+ }
+ else
+ {
+ while ((semi = semi->GetNext())->IsNotNullChunk())
+ {
+ if (semi->GetLevel() < pc->GetLevel())
+ {
+ return(semi);
+ }
+
+ if ( semi->IsSemicolon()
+ && pc->GetLevel() == semi->GetLevel())
+ {
+ break;
+ }
+ }
+ }
+
+ if (semi->IsNotNullChunk())
+ {
+ // add the parenthesis
+ chunk.SetType(CT_PAREN_OPEN);
+ chunk.SetParentType(pc->GetType());
+ chunk.Str() = "(";
+ chunk.SetLevel(pc->GetLevel());
+ chunk.SetPpLevel(pc->GetPpLevel());
+ chunk.SetBraceLevel(pc->GetBraceLevel());
+ chunk.SetOrigLine(pc->GetOrigLine());
+ chunk.SetOrigCol(next->GetOrigCol() - 1);
+ chunk.SetFlags(pc->GetFlags() & PCF_COPY_FLAGS);
+ chunk.CopyAndAddBefore(next);
+
+ chunk.SetType(CT_PAREN_CLOSE);
+ chunk.Str() = ")";
+ chunk.SetOrigLine(semi->GetOrigLine());
+ chunk.SetOrigCol(semi->GetOrigCol() - 1);
+ cpar = chunk.CopyAndAddBefore(semi);
+
+ LOG_FMT(LRETURN, "%s(%d): added parens on orig line %zu\n",
+ __func__, __LINE__, pc->GetOrigLine());
+
+ for (temp = next; temp != cpar; temp = temp->GetNext())
+ {
+ temp->SetLevel(temp->GetLevel() + 1);
+ }
+ }
+ return(semi);
+} // process_return_or_throw
+
+
+static bool is_oc_block(Chunk *pc)
+{
+ return( pc->GetParentType() == CT_OC_BLOCK_TYPE
+ || pc->GetParentType() == CT_OC_BLOCK_EXPR
+ || pc->GetParentType() == CT_OC_BLOCK_ARG
+ || pc->GetParentType() == CT_OC_BLOCK
+ || pc->Is(CT_OC_BLOCK_CARET)
+ || pc->GetNext()->Is(CT_OC_BLOCK_CARET)
+ || pc->GetPrev()->Is(CT_OC_BLOCK_CARET));
+}
+
+
+void mark_comments()
+{
+ LOG_FUNC_ENTRY();
+
+ cpd.unc_stage = unc_stage_e::MARK_COMMENTS;
+
+ bool prev_nl = true;
+ Chunk *cur = Chunk::GetHead();
+
+ while (cur->IsNotNullChunk())
+ {
+ Chunk *next = cur->GetNextNvb();
+ bool next_nl = next->IsNullChunk() || next->IsNewline();
+
+ if (cur->IsComment())
+ {
+ if ( next_nl
+ && prev_nl)
+ {
+ cur->SetParentType(CT_COMMENT_WHOLE);
+ }
+ else if (next_nl)
+ {
+ cur->SetParentType(CT_COMMENT_END);
+ }
+ else if (prev_nl)
+ {
+ cur->SetParentType(CT_COMMENT_START);
+ }
+ else
+ {
+ cur->SetParentType(CT_COMMENT_EMBED);
+ }
+ }
+ prev_nl = cur->IsNewline();
+ cur = next;
+ }
+}
+
+
+static void handle_cpp_template(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *tmp = pc->GetNextNcNnl();
+
+ if (tmp->IsNot(CT_ANGLE_OPEN))
+ {
+ return;
+ }
+ tmp->SetParentType(CT_TEMPLATE);
+
+ size_t level = tmp->GetLevel();
+
+ tmp = tmp->GetNext();
+
+ while (tmp->IsNotNullChunk())
+ {
+ if ( tmp->Is(CT_CLASS)
+ || tmp->Is(CT_STRUCT))
+ {
+ tmp->SetType(CT_TYPE);
+ }
+ else if ( tmp->Is(CT_ANGLE_CLOSE)
+ && tmp->GetLevel() == level)
+ {
+ tmp->SetParentType(CT_TEMPLATE);
+ break;
+ }
+ tmp = tmp->GetNext();
+ }
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp = tmp->GetNextNcNnl();
+
+ if (tmp->Is(CT_FRIEND))
+ {
+ // Account for a template friend declaration
+ tmp->SetParentType(CT_TEMPLATE);
+
+ tmp = tmp->GetNextNcNnl();
+ }
+
+ if (tmp->IsClassOrStruct())
+ {
+ tmp->SetParentType(CT_TEMPLATE);
+
+ // REVISIT: This may be a bit risky - might need to track the { };
+ tmp = tmp->GetNextType(CT_SEMICOLON, tmp->GetLevel());
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp->SetParentType(CT_TEMPLATE);
+ }
+ }
+ }
+} // handle_cpp_template
+
+
+static void handle_cpp_lambda(Chunk *sq_o)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *ret = Chunk::NullChunkPtr;
+
+ // abort if type of the previous token is not contained in this whitelist
+ Chunk *prev = sq_o->GetPrevNcNnlNi(); // Issue #2279
+
+ if (prev->IsNullChunk())
+ {
+ LOG_FMT(LFCNR, "%s(%d): prev is null chunk\n", __func__, __LINE__);
+ }
+
+ if ( prev->IsNullChunk()
+ || ( prev->IsNot(CT_ASSIGN)
+ && prev->IsNot(CT_COMMA)
+ && prev->IsNot(CT_PAREN_OPEN) // allow Js like self invoking lambda syntax: ([](){})();
+ && prev->IsNot(CT_FPAREN_OPEN)
+ && prev->IsNot(CT_SQUARE_OPEN)
+ && prev->IsNot(CT_BRACE_OPEN)
+ && prev->IsNot(CT_SEMICOLON)
+ && prev->IsNot(CT_RETURN)))
+ {
+ LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
+ return;
+ }
+ Chunk *sq_c = sq_o; // assuming '[]'
+
+ if (sq_o->Is(CT_SQUARE_OPEN))
+ {
+ // make sure there is a ']'
+ sq_c = sq_o->GetClosingParen();
+
+ if (sq_c->IsNullChunk())
+ {
+ LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
+ return;
+ }
+ }
+ Chunk *pa_o = sq_c->GetNextNcNnl();
+
+ // check to see if there is a lambda-specifier in the pa_o chunk;
+ // assuming chunk is CT_EXECUTION_CONTEXT, ignore lambda-specifier
+ while (pa_o->Is(CT_EXECUTION_CONTEXT))
+ {
+ // set pa_o to next chunk after this specifier
+ pa_o = pa_o->GetNextNcNnl();
+ }
+
+ if (pa_o->IsNullChunk())
+ {
+ LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
+ return;
+ }
+ Chunk *pa_c = Chunk::NullChunkPtr;
+
+ // lambda-declarator '( params )' is optional
+ if (pa_o->Is(CT_PAREN_OPEN))
+ {
+ // and now find the ')'
+ pa_c = pa_o->GetClosingParen();
+
+ if (pa_c->IsNullChunk())
+ {
+ LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
+ return;
+ }
+ }
+ // Check for 'mutable' keyword: '[]() mutable {}' or []() mutable -> ret {}
+ Chunk *br_o = pa_c->IsNotNullChunk() ? pa_c->GetNextNcNnl() : pa_o;
+
+ if (br_o->IsString("mutable"))
+ {
+ br_o = br_o->GetNextNcNnl();
+ }
+ //TODO: also check for exception and attribute between [] ... {}
+
+ // skip possible arrow syntax: '-> ret'
+ if (br_o->IsString("->"))
+ {
+ ret = br_o;
+ // REVISIT: really should check the stuff we are skipping
+ br_o = br_o->GetNextType(CT_BRACE_OPEN, br_o->GetLevel());
+ }
+
+ // skip possible CT_NOEXCEPT
+ if (br_o->Is(CT_NOEXCEPT)) // Issue #3321
+ {
+ ret = br_o;
+ // REVISIT: really should check the stuff we are skipping
+ br_o = br_o->GetNextType(CT_BRACE_OPEN, br_o->GetLevel());
+ }
+
+ if (br_o->IsNullChunk())
+ {
+ LOG_FMT(LFCNR, "%s(%d): br_o is null. Return\n", __func__, __LINE__);
+ return;
+ }
+
+ if (br_o->IsNot(CT_BRACE_OPEN))
+ {
+ LOG_FMT(LFCNR, "%s(%d): br_o is '%s'/%s\n",
+ __func__, __LINE__,
+ br_o->Text(), get_token_name(br_o->GetType()));
+ LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
+ return;
+ }
+ // and now find the '}'
+ Chunk *br_c = br_o->GetClosingParen();
+
+ if (br_c->IsNullChunk())
+ {
+ LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
+ return;
+ }
+
+ // This looks like a lambda expression
+ if (sq_o->Is(CT_TSQUARE))
+ {
+ // split into two chunks
+ Chunk nc;
+
+ nc = *sq_o;
+ sq_o->SetType(CT_SQUARE_OPEN);
+ sq_o->Str().resize(1);
+ /*
+ * bug # 664
+ *
+ * The original m_origCol of CT_SQUARE_CLOSE is stored at m_origColEnd
+ * of CT_TSQUARE. CT_SQUARE_CLOSE m_origCol and m_origColEnd values
+ * are calculate from m_origColEnd of CT_TSQUARE.
+ */
+ nc.SetOrigCol(sq_o->GetOrigColEnd() - 1);
+ nc.SetColumn(nc.GetOrigCol());
+ nc.SetOrigColEnd(sq_o->GetOrigColEnd());
+ sq_o->SetOrigColEnd(sq_o->GetOrigCol() + 1);
+
+ nc.SetType(CT_SQUARE_CLOSE);
+ nc.Str().pop_front();
+ sq_c = nc.CopyAndAddAfter(sq_o);
+ }
+ sq_o->SetParentType(CT_CPP_LAMBDA);
+ sq_c->SetParentType(CT_CPP_LAMBDA);
+
+ if (pa_c->IsNotNullChunk())
+ {
+ pa_o->SetType(CT_LPAREN_OPEN); // Issue #3054
+ pa_o->SetParentType(CT_CPP_LAMBDA);
+ pa_o->SetParent(sq_o);
+ br_o->SetParent(sq_o);
+ pa_c->SetType(CT_LPAREN_CLOSE);
+ pa_c->SetParentType(CT_CPP_LAMBDA);
+ pa_c->SetParent(sq_o);
+ br_c->SetParent(sq_o);
+ }
+ br_o->SetParentType(CT_CPP_LAMBDA);
+ br_c->SetParentType(CT_CPP_LAMBDA);
+
+ if (ret->IsNotNullChunk())
+ {
+ ret->SetType(CT_CPP_LAMBDA_RET);
+ ret = ret->GetNextNcNnl();
+
+ while (ret != br_o)
+ {
+ make_type(ret);
+ ret = ret->GetNextNcNnl();
+ }
+ }
+
+ if (pa_c->IsNotNullChunk())
+ {
+ fix_fcn_def_params(pa_o);
+ }
+ //handle self calling lambda paren
+ Chunk *call_pa_o = br_c->GetNextNcNnl();
+
+ if (call_pa_o->Is(CT_PAREN_OPEN))
+ {
+ Chunk *call_pa_c = call_pa_o->GetClosingParen();
+
+ if (call_pa_c->IsNotNullChunk())
+ {
+ call_pa_o->SetType(CT_FPAREN_OPEN);
+ call_pa_o->SetParentType(CT_FUNC_CALL);
+ call_pa_c->SetType(CT_FPAREN_CLOSE);
+ call_pa_c->SetParentType(CT_FUNC_CALL);
+ }
+ }
+ mark_cpp_lambda(sq_o);
+} // handle_cpp_lambda
+
+
+static void handle_d_template(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *name = pc->GetNextNcNnl();
+ Chunk *po = name->GetNextNcNnl();
+
+ if ( name->IsNullChunk()
+ || name->IsNot(CT_WORD))
+ {
+ // TODO: log an error, expected NAME
+ return;
+ }
+
+ if ( po->IsNullChunk()
+ || po->IsNot(CT_PAREN_OPEN))
+ {
+ // TODO: log an error, expected '('
+ return;
+ }
+ name->SetType(CT_TYPE);
+ name->SetParentType(CT_TEMPLATE);
+ po->SetParentType(CT_TEMPLATE);
+
+ ChunkStack cs;
+ Chunk *tmp = get_d_template_types(cs, po);
+
+ if ( tmp->IsNullChunk()
+ || tmp->IsNot(CT_PAREN_CLOSE))
+ {
+ // TODO: log an error, expected ')'
+ return;
+ }
+ tmp->SetParentType(CT_TEMPLATE);
+
+ tmp = tmp->GetNextNcNnl();
+
+ if (tmp->IsNot(CT_BRACE_OPEN))
+ {
+ // TODO: log an error, expected '{'
+ return;
+ }
+ tmp->SetParentType(CT_TEMPLATE);
+ po = tmp;
+ tmp = tmp->GetNextNcNnl();
+
+ while ( tmp->IsNotNullChunk()
+ && tmp->GetLevel() > po->GetLevel())
+ {
+ if ( tmp->Is(CT_WORD)
+ && chunkstack_match(cs, tmp))
+ {
+ tmp->SetType(CT_TYPE);
+ }
+ tmp = tmp->GetNextNcNnl();
+ }
+// if (!tmp->Is(CT_BRACE_CLOSE))
+// {
+// // TODO: log an error, expected '}'
+// }
+ tmp->SetParentType(CT_TEMPLATE);
+} // handle_d_template
+
+
+Chunk *skip_template_next(Chunk *ang_open)
+{
+ if (ang_open->Is(CT_ANGLE_OPEN))
+ {
+ Chunk *pc = ang_open->GetNextType(CT_ANGLE_CLOSE, ang_open->GetLevel());
+
+ if (pc->IsNullChunk())
+ {
+ return(Chunk::NullChunkPtr);
+ }
+ return(pc->GetNextNcNnl());
+ }
+ return(ang_open);
+}
+
+
+static void handle_oc_class(Chunk *pc)
+{
+ enum class angle_state_e : unsigned int
+ {
+ NONE = 0,
+ OPEN = 1, // '<' found
+ CLOSE = 2, // '>' found
+ };
+
+ LOG_FUNC_ENTRY();
+ Chunk *tmp;
+ bool hit_scope = false;
+ bool passed_name = false; // Did we pass the name of the class and now there can be only protocols, not generics
+ int generic_level = 0; // level of depth of generic
+ angle_state_e as = angle_state_e::NONE;
+
+ LOG_FMT(LOCCLASS, "%s(%d): start [%s] [%s] line %zu\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetParentType()), pc->GetOrigLine());
+
+ if (pc->GetParentType() == CT_OC_PROTOCOL)
+ {
+ tmp = pc->GetNextNcNnl();
+
+ if (tmp->IsSemicolon())
+ {
+ tmp->SetParentType(pc->GetParentType());
+ LOG_FMT(LOCCLASS, "%s(%d): bail on semicolon\n", __func__, __LINE__);
+ return;
+ }
+ }
+ tmp = pc;
+
+ while ((tmp = tmp->GetNextNnl())->IsNotNullChunk())
+ {
+ LOG_FMT(LOCCLASS, "%s(%d): orig line is %zu, [%s]\n",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->Text());
+
+ if (tmp->Is(CT_OC_END))
+ {
+ break;
+ }
+
+ if (tmp->Is(CT_PAREN_OPEN))
+ {
+ passed_name = true;
+ }
+
+ if (tmp->IsString("<"))
+ {
+ tmp->SetType(CT_ANGLE_OPEN);
+
+ if (passed_name)
+ {
+ tmp->SetParentType(CT_OC_PROTO_LIST);
+ }
+ else
+ {
+ tmp->SetParentType(CT_OC_GENERIC_SPEC);
+ generic_level++;
+ }
+ as = angle_state_e::OPEN;
+ }
+
+ if (tmp->IsString(">"))
+ {
+ tmp->SetType(CT_ANGLE_CLOSE);
+
+ if (passed_name)
+ {
+ tmp->SetParentType(CT_OC_PROTO_LIST);
+ as = angle_state_e::CLOSE;
+ }
+ else
+ {
+ tmp->SetParentType(CT_OC_GENERIC_SPEC);
+
+ if (generic_level == 0)
+ {
+ fprintf(stderr, "%s(%d): generic_level is ZERO, cannot be decremented, at line %zu, column %zu\n",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ generic_level--;
+
+ if (generic_level == 0)
+ {
+ as = angle_state_e::CLOSE;
+ }
+ }
+ }
+
+ if (tmp->IsString(">>"))
+ {
+ tmp->SetType(CT_ANGLE_CLOSE);
+ tmp->SetParentType(CT_OC_GENERIC_SPEC);
+ split_off_angle_close(tmp);
+ generic_level -= 1;
+
+ if (generic_level == 0)
+ {
+ as = angle_state_e::CLOSE;
+ }
+ }
+
+ if ( tmp->Is(CT_BRACE_OPEN)
+ && tmp->GetParentType() != CT_ASSIGN)
+ {
+ as = angle_state_e::CLOSE;
+ tmp->SetParentType(CT_OC_CLASS);
+ tmp = tmp->GetNextType(CT_BRACE_CLOSE, tmp->GetLevel());
+
+ if ( tmp->IsNotNullChunk()
+ && tmp->GetParentType() != CT_ASSIGN)
+ {
+ tmp->SetParentType(CT_OC_CLASS);
+ }
+ }
+ else if (tmp->Is(CT_COLON))
+ {
+ if (as != angle_state_e::OPEN)
+ {
+ passed_name = true;
+ }
+ tmp->SetType(hit_scope ? CT_OC_COLON : CT_CLASS_COLON);
+
+ if (tmp->Is(CT_CLASS_COLON))
+ {
+ tmp->SetParentType(CT_OC_CLASS);
+ }
+ }
+ else if ( tmp->IsString("-")
+ || tmp->IsString("+"))
+ {
+ as = angle_state_e::CLOSE;
+
+ if (tmp->GetPrev()->IsNewline())
+ {
+ tmp->SetType(CT_OC_SCOPE);
+ tmp->SetFlagBits(PCF_STMT_START);
+ log_ruleStart("start statement", tmp);
+ hit_scope = true;
+ }
+ }
+
+ if (as == angle_state_e::OPEN)
+ {
+ if (passed_name)
+ {
+ tmp->SetParentType(CT_OC_PROTO_LIST);
+ }
+ else
+ {
+ tmp->SetParentType(CT_OC_GENERIC_SPEC);
+ }
+ }
+ }
+
+ if (tmp->Is(CT_BRACE_OPEN))
+ {
+ tmp = tmp->GetNextType(CT_BRACE_CLOSE, tmp->GetLevel());
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp->SetParentType(CT_OC_CLASS);
+ }
+ }
+} // handle_oc_class
+
+
+static void handle_oc_block_literal(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *prev = pc->GetPrevNcNnlNi(); // Issue #2279
+ Chunk *next = pc->GetNextNcNnl();
+
+ if ( prev->IsNullChunk()
+ || next->IsNullChunk())
+ {
+ return; // let's be paranoid
+ }
+ /*
+ * block literal: '^ RTYPE ( ARGS ) { }'
+ * RTYPE and ARGS are optional
+ */
+ LOG_FMT(LOCBLK, "%s(%d): block literal @ orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+
+ Chunk *apo = Chunk::NullChunkPtr; // arg paren open
+ Chunk *bbo = Chunk::NullChunkPtr; // block brace open
+ Chunk *bbc; // block brace close
+
+ LOG_FMT(LOCBLK, "%s(%d): + scan", __func__, __LINE__);
+ Chunk *tmp;
+
+ for (tmp = next; tmp->IsNotNullChunk(); tmp = tmp->GetNextNcNnl())
+ {
+ /* handle '< protocol >' */
+ if (tmp->IsString("<"))
+ {
+ Chunk *ao = tmp;
+ Chunk *ac = ao->GetNextString(">", 1, ao->GetLevel());
+
+ if (ac->IsNotNullChunk())
+ {
+ ao->SetType(CT_ANGLE_OPEN);
+ ao->SetParentType(CT_OC_PROTO_LIST);
+ ac->SetType(CT_ANGLE_CLOSE);
+ ac->SetParentType(CT_OC_PROTO_LIST);
+
+ for (tmp = ao->GetNext(); tmp != ac; tmp = tmp->GetNext())
+ {
+ tmp->SetLevel(tmp->GetLevel() + 1);
+ tmp->SetParentType(CT_OC_PROTO_LIST);
+ }
+
+ tmp = ac->GetNextNcNnl();
+ }
+ else
+ {
+ tmp = Chunk::NullChunkPtr;
+ }
+ }
+ LOG_FMT(LOCBLK, " '%s'", tmp->Text());
+
+ if ( tmp->GetLevel() < pc->GetLevel()
+ || tmp->Is(CT_SEMICOLON))
+ {
+ LOG_FMT(LOCBLK, "[DONE]");
+ break;
+ }
+
+ if (tmp->GetLevel() == pc->GetLevel())
+ {
+ if (tmp->IsParenOpen())
+ {
+ apo = tmp;
+ LOG_FMT(LOCBLK, "[PAREN]");
+ }
+
+ if (tmp->Is(CT_BRACE_OPEN))
+ {
+ LOG_FMT(LOCBLK, "[BRACE]");
+ bbo = tmp;
+ break;
+ }
+ }
+ }
+
+ // make sure we have braces
+ bbc = bbo->GetClosingParen();
+
+ if ( bbo->IsNullChunk()
+ || bbc->IsNullChunk())
+ {
+ LOG_FMT(LOCBLK, " -- no braces found\n");
+ return;
+ }
+ LOG_FMT(LOCBLK, "\n");
+
+ // we are on a block literal for sure
+ pc->SetType(CT_OC_BLOCK_CARET);
+ pc->SetParentType(CT_OC_BLOCK_EXPR);
+
+ // handle the optional args
+ Chunk *lbp; // last before paren - end of return type, if any
+
+ if (apo->IsNotNullChunk())
+ {
+ Chunk *apc = apo->GetClosingParen(); // arg parenthesis close
+
+ if (apc->IsParenClose())
+ {
+ LOG_FMT(LOCBLK, " -- marking parens @ apo orig line is %zu, orig col is %zu and apc orig line is %zu, orig col is %zu\n",
+ apo->GetOrigLine(), apo->GetOrigCol(), apc->GetOrigLine(), apc->GetOrigCol());
+ flag_parens(apo, PCF_OC_ATYPE, CT_FPAREN_OPEN, CT_OC_BLOCK_EXPR, true);
+ fix_fcn_def_params(apo);
+ }
+ lbp = apo->GetPrevNcNnlNi(); // Issue #2279
+ }
+ else
+ {
+ lbp = bbo->GetPrevNcNnlNi(); // Issue #2279
+ }
+
+ // mark the return type, if any
+ while (lbp != pc)
+ {
+ LOG_FMT(LOCBLK, " -- lbp %s[%s]\n", lbp->Text(), get_token_name(lbp->GetType()));
+ make_type(lbp);
+ lbp->SetFlagBits(PCF_OC_RTYPE);
+ lbp->SetParentType(CT_OC_BLOCK_EXPR);
+ lbp = lbp->GetPrevNcNnlNi(); // Issue #2279
+ }
+ // mark the braces
+ bbo->SetParentType(CT_OC_BLOCK_EXPR);
+ bbc->SetParentType(CT_OC_BLOCK_EXPR);
+
+ // mark the OC_BLOCK
+ for (Chunk *tmp1 = bbo; tmp1 != bbc; tmp1 = tmp1->GetNextNcNnl())
+ {
+ tmp1->SetFlagBits(PCF_OC_IN_BLOCK);
+ }
+} // handle_oc_block_literal
+
+
+static void handle_oc_block_type(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc->IsNullChunk())
+ {
+ return;
+ }
+
+ if (pc->TestFlags(PCF_IN_TYPEDEF))
+ {
+ LOG_FMT(LOCBLK, "%s(%d): skip block type @ orig line is %zu, orig col is %zu, -- in typedef\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ return;
+ }
+ // make sure we have '( ^'
+ Chunk *tpo = pc->GetPrevNcNnlNi(); // type paren open Issue #2279
+
+ if (tpo->IsParenOpen())
+ {
+ /*
+ * block type: 'RTYPE (^LABEL)(ARGS)'
+ * LABEL is optional.
+ */
+ Chunk *tpc = tpo->GetClosingParen(); // type close paren (after '^')
+ Chunk *nam = tpc->GetPrevNcNnlNi(); // name (if any) or '^' Issue #2279
+ Chunk *apo = tpc->GetNextNcNnl(); // arg open paren
+ Chunk *apc = apo->GetClosingParen(); // arg close paren
+
+ /*
+ * If this is a block literal instead of a block type, 'nam'
+ * will actually be the closing bracket of the block. We run into
+ * this situation if a block literal is enclosed in parentheses.
+ */
+ if (nam->IsBraceClose())
+ {
+ return(handle_oc_block_literal(pc));
+ }
+
+ // Check apo is '(' or else this might be a block literal. Issue 2643.
+ if (!apo->IsParenOpen())
+ {
+ return(handle_oc_block_literal(pc));
+ }
+
+ if (apc->IsParenClose())
+ {
+ Chunk *aft = apc->GetNextNcNnl();
+ E_Token pt;
+
+ if (nam->IsString("^"))
+ {
+ nam->SetType(CT_PTR_TYPE);
+ pt = CT_FUNC_TYPE;
+ }
+ else if ( aft->Is(CT_ASSIGN)
+ || aft->Is(CT_SEMICOLON))
+ {
+ nam->SetType(CT_FUNC_VAR);
+ pt = CT_FUNC_VAR;
+ }
+ else
+ {
+ nam->SetType(CT_FUNC_TYPE);
+ pt = CT_FUNC_TYPE;
+ }
+ LOG_FMT(LOCBLK, "%s(%d): block type @ orig line is %zu, orig col is %zu, Text() '%s'[%s]\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), nam->Text(), get_token_name(nam->GetType()));
+ pc->SetType(CT_PTR_TYPE);
+ pc->SetParentType(pt); //CT_OC_BLOCK_TYPE;
+ tpo->SetType(CT_TPAREN_OPEN);
+ tpo->SetParentType(pt); //CT_OC_BLOCK_TYPE;
+ tpc->SetType(CT_TPAREN_CLOSE);
+ tpc->SetParentType(pt); //CT_OC_BLOCK_TYPE;
+ apo->SetType(CT_FPAREN_OPEN);
+ apo->SetParentType(CT_FUNC_PROTO);
+ apc->SetType(CT_FPAREN_CLOSE);
+ apc->SetParentType(CT_FUNC_PROTO);
+ fix_fcn_def_params(apo);
+ mark_function_return_type(nam, tpo->GetPrevNcNnlNi(), pt); // Issue #2279
+ }
+ }
+} // handle_oc_block_type
+
+
+static Chunk *handle_oc_md_type(Chunk *paren_open, E_Token ptype, PcfFlags flags, bool &did_it)
+{
+ Chunk *paren_close;
+
+ if ( !paren_open->IsParenOpen()
+ || ((paren_close = paren_open->GetClosingParen())->IsNullChunk()))
+ {
+ did_it = false;
+ return(paren_open);
+ }
+ did_it = true;
+
+ paren_open->SetParentType(ptype);
+ paren_open->SetFlagBits(flags);
+ paren_close->SetParentType(ptype);
+ paren_close->SetFlagBits(flags);
+
+ for (Chunk *cur = paren_open->GetNextNcNnl();
+ cur != paren_close;
+ cur = cur->GetNextNcNnl())
+ {
+ LOG_FMT(LOCMSGD, " <%s|%s>", cur->Text(), get_token_name(cur->GetType()));
+ cur->SetFlagBits(flags);
+ make_type(cur);
+ }
+
+ // returning the chunk after the paren close
+ return(paren_close->GetNextNcNnl());
+}
+
+
+static void handle_oc_message_decl(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ bool did_it;
+ //bool in_paren = false;
+ //int paren_cnt = 0;
+ //int arg_cnt = 0;
+
+ // Figure out if this is a spec or decl
+ Chunk *tmp = pc;
+
+ while ((tmp = tmp->GetNext())->IsNotNullChunk())
+ {
+ if (tmp->GetLevel() < pc->GetLevel())
+ {
+ // should not happen
+ return;
+ }
+
+ if ( tmp->Is(CT_SEMICOLON)
+ || tmp->Is(CT_BRACE_OPEN))
+ {
+ break;
+ }
+ }
+
+ if (tmp->IsNullChunk())
+ {
+ return;
+ }
+ E_Token pt = tmp->Is(CT_SEMICOLON) ? CT_OC_MSG_SPEC : CT_OC_MSG_DECL;
+
+ pc->SetType(CT_OC_SCOPE);
+ pc->SetParentType(pt);
+
+ LOG_FMT(LOCMSGD, "%s(%d): %s @ orig line is %zu, orig col is %zu -",
+ __func__, __LINE__, get_token_name(pt), pc->GetOrigLine(), pc->GetOrigCol());
+
+ // format: -(TYPE) NAME [: (TYPE)NAME
+
+ // handle the return type
+ tmp = handle_oc_md_type(pc->GetNextNcNnl(), pt, PCF_OC_RTYPE, did_it);
+
+ if (!did_it)
+ {
+ LOG_FMT(LOCMSGD, " -- missing type parens\n");
+ return;
+ }
+
+ // expect the method name/label
+ if (tmp->IsNot(CT_WORD))
+ {
+ LOG_FMT(LOCMSGD, " -- missing method name\n");
+ return;
+ } // expect the method name/label
+
+ Chunk *label = tmp;
+
+ tmp->SetType(pt);
+ tmp->SetParentType(pt);
+ pc = tmp->GetNextNcNnl();
+
+ LOG_FMT(LOCMSGD, " [%s]%s", pc->Text(), get_token_name(pc->GetType()));
+
+ // if we have a colon next, we have args
+ if ( pc->Is(CT_COLON)
+ || pc->Is(CT_OC_COLON))
+ {
+ pc = label;
+
+ while (true)
+ {
+ // skip optional label
+ if ( pc->Is(CT_WORD)
+ || pc->Is(pt))
+ {
+ pc->SetParentType(pt);
+ pc = pc->GetNextNcNnl();
+ }
+
+ // a colon must be next
+ if (!pc->IsString(":"))
+ {
+ break;
+ }
+ pc->SetType(CT_OC_COLON);
+ pc->SetParentType(pt);
+ pc = pc->GetNextNcNnl();
+
+ // next is the type in parens
+ LOG_FMT(LOCMSGD, " (%s)", pc->Text());
+ tmp = handle_oc_md_type(pc, pt, PCF_OC_ATYPE, did_it);
+
+ if (!did_it)
+ {
+ LOG_FMT(LWARN, "%s(%d): orig line is %zu, orig col is %zu expected type\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ break;
+ }
+ // attributes for a method parameter sit between the parameter type and the parameter name
+ pc = skip_attribute_next(tmp);
+ // we should now be on the arg name
+ pc->SetFlagBits(PCF_VAR_DEF);
+ LOG_FMT(LOCMSGD, " arg[%s]", pc->Text());
+ pc = pc->GetNextNcNnl();
+ }
+ }
+ LOG_FMT(LOCMSGD, " end[%s]", pc->Text());
+
+ if (pc->Is(CT_BRACE_OPEN))
+ {
+ pc->SetParentType(pt);
+ pc = pc->GetClosingParen();
+
+ if (pc->IsNotNullChunk())
+ {
+ pc->SetParentType(pt);
+ }
+ }
+ else if (pc->Is(CT_SEMICOLON))
+ {
+ pc->SetParentType(pt);
+ }
+ LOG_FMT(LOCMSGD, "\n");
+} // handle_oc_message_decl
+
+
+static void handle_oc_message_send(Chunk *os)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *cs = os->GetNext();
+
+ while ( cs->IsNotNullChunk()
+ && cs->GetLevel() > os->GetLevel())
+ {
+ cs = cs->GetNext();
+ }
+
+ if ( cs->IsNullChunk()
+ || cs->IsNot(CT_SQUARE_CLOSE))
+ {
+ return;
+ }
+ LOG_FMT(LOCMSG, "%s(%d): orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, os->GetOrigLine(), os->GetOrigCol());
+
+ Chunk *tmp = cs->GetNextNcNnl();
+
+ if (tmp->IsSemicolon())
+ {
+ tmp->SetParentType(CT_OC_MSG);
+ }
+ // expect a word first thing or [...]
+ tmp = os->GetNextNcNnl();
+
+ if ( tmp->Is(CT_SQUARE_OPEN)
+ || tmp->Is(CT_PAREN_OPEN)
+ || tmp->Is(CT_OC_AT))
+ {
+ Chunk *tt = tmp->GetNextNcNnl();
+
+ if ( tmp->Is(CT_OC_AT)
+ && tt->IsNotNullChunk())
+ {
+ if ( tt->Is(CT_PAREN_OPEN)
+ || tt->Is(CT_BRACE_OPEN)
+ || tt->Is(CT_SQUARE_OPEN))
+ {
+ tmp = tt;
+ }
+ else
+ {
+ LOG_FMT(LOCMSG, "%s(%d): tmp orig line is %zu, orig col is %zu, expected identifier, not '%s' [%s]\n",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(),
+ tmp->Text(), get_token_name(tmp->GetType()));
+ return;
+ }
+ }
+ tmp = tmp->GetClosingParen();
+ }
+ else if ( tmp->IsNot(CT_WORD)
+ && tmp->IsNot(CT_TYPE)
+ && tmp->IsNot(CT_THIS)
+ && tmp->IsNot(CT_STAR)
+ && tmp->IsNot(CT_STRING))
+ {
+ LOG_FMT(LOCMSG, "%s(%d): orig line is %zu, orig col is %zu, expected identifier, not '%s' [%s]\n",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(),
+ tmp->Text(), get_token_name(tmp->GetType()));
+ return;
+ }
+ else
+ {
+ if (tmp->IsStar()) // Issue #2722
+ {
+ tmp->SetType(CT_PTR_TYPE);
+ tmp = tmp->GetNextNcNnl();
+ }
+ Chunk *tt = tmp->GetNextNcNnl();
+
+ if (tt->IsParenOpen())
+ {
+ LOG_FMT(LFCN, "%s(%d): (18) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
+ tmp->SetType(CT_FUNC_CALL);
+ tmp = set_paren_parent(tt, CT_FUNC_CALL)->GetPrevNcNnlNi(); // Issue #2279
+ }
+ else
+ {
+ tmp->SetType(CT_OC_MSG_CLASS);
+ }
+ }
+ os->SetParentType(CT_OC_MSG);
+ os->SetFlagBits(PCF_IN_OC_MSG);
+ cs->SetParentType(CT_OC_MSG);
+ cs->SetFlagBits(PCF_IN_OC_MSG);
+
+ // handle '< protocol >'
+ tmp = tmp->GetNextNcNnl();
+
+ if (tmp->IsString("<"))
+ {
+ Chunk *ao = tmp;
+ Chunk *ac = ao->GetNextString(">", 1, ao->GetLevel());
+
+ if (ac->IsNotNullChunk())
+ {
+ ao->SetType(CT_ANGLE_OPEN);
+ ao->SetParentType(CT_OC_PROTO_LIST);
+ ac->SetType(CT_ANGLE_CLOSE);
+ ac->SetParentType(CT_OC_PROTO_LIST);
+
+ for (tmp = ao->GetNext(); tmp != ac; tmp = tmp->GetNext())
+ {
+ tmp->SetLevel(tmp->GetLevel() + 1);
+ tmp->SetParentType(CT_OC_PROTO_LIST);
+ }
+
+ tmp = ac->GetNextNcNnl();
+ }
+ else
+ {
+ tmp = Chunk::NullChunkPtr;
+ }
+ }
+ // handle 'object.property' and 'collection[index]'
+ else
+ {
+ while (tmp->IsNotNullChunk())
+ {
+ if (tmp->Is(CT_MEMBER)) // move past [object.prop1.prop2
+ {
+ Chunk *typ = tmp->GetNextNcNnl();
+
+ if ( typ->Is(CT_WORD)
+ || typ->Is(CT_TYPE))
+ {
+ tmp = typ->GetNextNcNnl();
+ }
+ else
+ {
+ break;
+ }
+ }
+ else if (tmp->Is(CT_SQUARE_OPEN)) // move past [collection[index]
+ {
+ Chunk *tcs = tmp->GetNextNcNnl();
+
+ while ( tcs->IsNotNullChunk()
+ && tcs->GetLevel() > tmp->GetLevel())
+ {
+ tcs = tcs->GetNextNcNnl();
+ }
+
+ if (tcs->Is(CT_SQUARE_CLOSE))
+ {
+ tmp = tcs->GetNextNcNnl();
+ }
+ else
+ {
+ break;
+ }
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+
+ // [(self.foo.bar) method]
+ if (tmp->IsParenOpen())
+ {
+ tmp = tmp->GetClosingParen()->GetNextNcNnl();
+ }
+
+ if ( tmp->Is(CT_WORD)
+ || tmp->Is(CT_ACCESS)
+ || tmp->Is(CT_TYPE))
+ {
+ tmp->SetType(CT_OC_MSG_FUNC);
+ }
+ Chunk *prev = Chunk::NullChunkPtr;
+
+ for (tmp = os->GetNext(); tmp != cs; tmp = tmp->GetNext())
+ {
+ tmp->SetFlagBits(PCF_IN_OC_MSG);
+
+ if (tmp->GetLevel() == cs->GetLevel() + 1)
+ {
+ if ( tmp->Is(CT_COLON)
+ || tmp->Is(CT_ACCESS_COLON))
+ {
+ tmp->SetType(CT_OC_COLON);
+
+ if ( prev->Is(CT_WORD)
+ || prev->Is(CT_ACCESS)
+ || prev->Is(CT_TYPE))
+ {
+ // Might be a named param, check previous block
+ Chunk *pp = prev->GetPrev();
+
+ if ( pp->IsNotNullChunk()
+ && pp->IsNot(CT_OC_COLON)
+ && pp->IsNot(CT_ARITH)
+ && pp->IsNot(CT_SHIFT)
+ && pp->IsNot(CT_CARET))
+ {
+ prev->SetType(CT_OC_MSG_NAME);
+ tmp->SetParentType(CT_OC_MSG_NAME);
+ }
+ }
+ }
+ }
+ prev = tmp;
+ }
+} // handle_oc_message_send
+
+
+static void handle_oc_available(Chunk *os)
+{
+ os = os->GetNext();
+
+ while (os->IsNotNullChunk())
+ {
+ E_Token origType = os->GetType();
+ os->SetType(CT_OC_AVAILABLE_VALUE);
+
+ if (origType == CT_PAREN_CLOSE)
+ {
+ break;
+ }
+ os = os->GetNext();
+ }
+}
+
+
+static void handle_oc_property_decl(Chunk *os)
+{
+ log_rule_B("mod_sort_oc_properties");
+
+ if (options::mod_sort_oc_properties())
+ {
+ typedef std::vector<Chunk *> ChunkGroup;
+
+ Chunk *next = os->GetNext();
+ Chunk *open_paren = Chunk::NullChunkPtr;
+
+ std::vector<ChunkGroup> class_chunks; // class
+ std::vector<ChunkGroup> thread_chunks; // atomic, nonatomic
+ std::vector<ChunkGroup> readwrite_chunks; // readwrite, readonly
+ std::vector<ChunkGroup> ref_chunks; // retain, copy, assign, weak, strong, unsafe_unretained
+ std::vector<ChunkGroup> getter_chunks; // getter
+ std::vector<ChunkGroup> setter_chunks; // setter
+ std::vector<ChunkGroup> nullability_chunks; // nonnull, nullable, null_unspecified, null_resettable
+ std::vector<ChunkGroup> other_chunks; // any words other than above
+
+ if (next->Is(CT_PAREN_OPEN))
+ {
+ open_paren = next;
+ next = next->GetNext();
+
+ /*
+ * Determine location of the property attributes
+ * NOTE: Did not do this in the combine.cpp do_symbol_check as
+ * I was not sure what the ramifications of adding a new type
+ * for each of the below types would be. It did break some items
+ * when I attempted to add them so this is my hack for now.
+ */
+ while ( next->IsNotNullChunk()
+ && next->IsNot(CT_PAREN_CLOSE))
+ {
+ if (next->Is(CT_OC_PROPERTY_ATTR))
+ {
+ if ( next->IsString("atomic")
+ || next->IsString("nonatomic"))
+ {
+ ChunkGroup chunkGroup;
+ chunkGroup.push_back(next);
+ thread_chunks.push_back(chunkGroup);
+ }
+ else if ( next->IsString("readonly")
+ || next->IsString("readwrite"))
+ {
+ ChunkGroup chunkGroup;
+ chunkGroup.push_back(next);
+ readwrite_chunks.push_back(chunkGroup);
+ }
+ else if ( next->IsString("assign")
+ || next->IsString("retain")
+ || next->IsString("copy")
+ || next->IsString("strong")
+ || next->IsString("weak")
+ || next->IsString("unsafe_unretained"))
+ {
+ ChunkGroup chunkGroup;
+ chunkGroup.push_back(next);
+ ref_chunks.push_back(chunkGroup);
+ }
+ else if (next->IsString("getter"))
+ {
+ ChunkGroup chunkGroup;
+
+ do
+ {
+ chunkGroup.push_back(next);
+ next = next->GetNext();
+ } while ( next->IsNotNullChunk()
+ && next->IsNot(CT_COMMA)
+ && next->IsNot(CT_PAREN_CLOSE));
+
+ next = next->GetPrev();
+
+ // coverity CID 160946
+ if (next->IsNullChunk())
+ {
+ break;
+ }
+ getter_chunks.push_back(chunkGroup);
+ }
+ else if (next->IsString("setter"))
+ {
+ ChunkGroup chunkGroup;
+
+ do
+ {
+ chunkGroup.push_back(next);
+ next = next->GetNext();
+ } while ( next->IsNotNullChunk()
+ && next->IsNot(CT_COMMA)
+ && next->IsNot(CT_PAREN_CLOSE));
+
+ if (next->IsNotNullChunk())
+ {
+ next = next->GetPrev();
+ }
+
+ if (next->IsNullChunk())
+ {
+ break;
+ }
+ setter_chunks.push_back(chunkGroup);
+ }
+ else if ( next->IsString("nullable")
+ || next->IsString("nonnull")
+ || next->IsString("null_resettable")
+ || next->IsString("null_unspecified"))
+ {
+ ChunkGroup chunkGroup;
+ chunkGroup.push_back(next);
+ nullability_chunks.push_back(chunkGroup);
+ }
+ else if (next->IsString("class"))
+ {
+ ChunkGroup chunkGroup;
+ chunkGroup.push_back(next);
+ class_chunks.push_back(chunkGroup);
+ }
+ else
+ {
+ ChunkGroup chunkGroup;
+ chunkGroup.push_back(next);
+ other_chunks.push_back(chunkGroup);
+ }
+ }
+ else if (next->IsWord())
+ {
+ if (next->IsString("class"))
+ {
+ ChunkGroup chunkGroup;
+ chunkGroup.push_back(next);
+ class_chunks.push_back(chunkGroup);
+ }
+ else
+ {
+ ChunkGroup chunkGroup;
+ chunkGroup.push_back(next);
+ other_chunks.push_back(chunkGroup);
+ }
+ }
+ next = next->GetNext();
+ }
+ log_rule_B("mod_sort_oc_property_class_weight");
+ int class_w = options::mod_sort_oc_property_class_weight();
+ log_rule_B("mod_sort_oc_property_thread_safe_weight");
+ int thread_w = options::mod_sort_oc_property_thread_safe_weight();
+ log_rule_B("mod_sort_oc_property_readwrite_weight");
+ int readwrite_w = options::mod_sort_oc_property_readwrite_weight();
+ log_rule_B("mod_sort_oc_property_reference_weight");
+ int ref_w = options::mod_sort_oc_property_reference_weight();
+ log_rule_B("mod_sort_oc_property_getter_weight");
+ int getter_w = options::mod_sort_oc_property_getter_weight();
+ log_rule_B("mod_sort_oc_property_setter_weight");
+ int setter_w = options::mod_sort_oc_property_setter_weight();
+ log_rule_B("mod_sort_oc_property_nullability_weight");
+ int nullability_w = options::mod_sort_oc_property_nullability_weight();
+
+ //
+ std::multimap<int, std::vector<ChunkGroup> > sorted_chunk_map;
+ sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(class_w, class_chunks));
+ sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(thread_w, thread_chunks));
+ sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(readwrite_w, readwrite_chunks));
+ sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(ref_w, ref_chunks));
+ sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(getter_w, getter_chunks));
+ sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(setter_w, setter_chunks));
+ sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(nullability_w, nullability_chunks));
+ sorted_chunk_map.insert(pair<int, std::vector<ChunkGroup> >(std::numeric_limits<int>::min(), other_chunks));
+
+ Chunk *curr_chunk = open_paren;
+
+ for (multimap<int, std::vector<ChunkGroup> >::reverse_iterator it = sorted_chunk_map.rbegin(); it != sorted_chunk_map.rend(); ++it)
+ {
+ std::vector<ChunkGroup> chunk_groups = (*it).second;
+
+ for (auto chunk_group : chunk_groups)
+ {
+ for (auto chunk : chunk_group)
+ {
+ chunk->SetOrigPrevSp(0);
+
+ if (chunk != curr_chunk)
+ {
+ chunk->MoveAfter(curr_chunk);
+ curr_chunk = chunk;
+ }
+ else
+ {
+ curr_chunk = curr_chunk->GetNext();
+ }
+ }
+
+ // add the parenthesis
+ Chunk endchunk;
+ endchunk.SetType(CT_COMMA);
+ endchunk.SetParentType(curr_chunk->GetParentType());
+ endchunk.Str() = ",";
+ endchunk.SetLevel(curr_chunk->GetLevel());
+ endchunk.SetPpLevel(curr_chunk->GetPpLevel());
+ endchunk.SetBraceLevel(curr_chunk->GetBraceLevel());
+ endchunk.SetOrigLine(curr_chunk->GetOrigLine());
+ endchunk.SetOrigCol(curr_chunk->GetOrigCol());
+ endchunk.SetColumn(curr_chunk->GetOrigColEnd() + 1);
+ endchunk.SetFlags(curr_chunk->GetFlags() & PCF_COPY_FLAGS);
+ endchunk.CopyAndAddAfter(curr_chunk);
+ curr_chunk = curr_chunk->GetNext();
+ }
+ }
+
+ // Remove the extra comma's that we did not move
+ while ( curr_chunk->IsNotNullChunk()
+ && curr_chunk->IsNot(CT_PAREN_CLOSE))
+ {
+ Chunk *rm_chunk = curr_chunk;
+ curr_chunk = curr_chunk->GetNext();
+ Chunk::Delete(rm_chunk);
+ }
+ }
+ }
+ Chunk *tmp = os->GetNextNcNnl();
+
+ if (tmp->IsParenOpen())
+ {
+ tmp = tmp->GetClosingParen()->GetNextNcNnl();
+ }
+ fix_variable_definition(tmp);
+} // handle_oc_property_decl
+
+
+static void handle_cs_square_stmt(Chunk *os)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *cs = os->GetNext();
+
+ while ( cs->IsNotNullChunk()
+ && cs->GetLevel() > os->GetLevel())
+ {
+ cs = cs->GetNext();
+ }
+
+ if ( cs->IsNullChunk()
+ || cs->IsNot(CT_SQUARE_CLOSE))
+ {
+ return;
+ }
+ os->SetParentType(CT_CS_SQ_STMT);
+ cs->SetParentType(CT_CS_SQ_STMT);
+
+ Chunk *tmp;
+
+ for (tmp = os->GetNext(); tmp != cs; tmp = tmp->GetNext())
+ {
+ tmp->SetParentType(CT_CS_SQ_STMT);
+
+ if (tmp->Is(CT_COLON))
+ {
+ tmp->SetType(CT_CS_SQ_COLON);
+ }
+ }
+
+ tmp = cs->GetNextNcNnl();
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
+ log_ruleStart("start statement/ expression", tmp);
+ }
+} // handle_cs_square_stmt
+
+
+static void handle_cs_property(Chunk *bro)
+{
+ LOG_FUNC_ENTRY();
+
+ set_paren_parent(bro, CT_CS_PROPERTY);
+
+ bool did_prop = false;
+ Chunk *pc = bro;
+
+ while ((pc = pc->GetPrevNcNnlNi())->IsNotNullChunk()) // Issue #2279
+ {
+ if (pc->GetLevel() == bro->GetLevel())
+ {
+ //prevent scanning back past 'new' in expressions like new List<int> {1,2,3}
+ // Issue # 1620, UNI-24090.cs
+ if (pc->Is(CT_NEW))
+ {
+ break;
+ }
+
+ if ( !did_prop
+ && ( pc->Is(CT_WORD)
+ || pc->Is(CT_THIS)))
+ {
+ pc->SetType(CT_CS_PROPERTY);
+ did_prop = true;
+ }
+ else
+ {
+ pc->SetParentType(CT_CS_PROPERTY);
+ make_type(pc);
+ }
+
+ if (pc->TestFlags(PCF_STMT_START))
+ {
+ break;
+ }
+ }
+ }
+}
+
+
+static void handle_cs_array_type(Chunk *pc)
+{
+ if (pc->IsNullChunk())
+ {
+ return;
+ }
+ Chunk *prev = pc->GetPrev();
+
+ for ( ;
+ prev->Is(CT_COMMA);
+ prev = prev->GetPrev())
+ {
+ // empty
+ }
+
+ if (prev->Is(CT_SQUARE_OPEN))
+ {
+ while (pc != prev)
+ {
+ pc->SetParentType(CT_TYPE);
+ pc = pc->GetPrev();
+ }
+ prev->SetParentType(CT_TYPE);
+ }
+}
+
+
+static void handle_wrap(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *opp = pc->GetNext();
+ Chunk *name = opp->GetNext();
+ Chunk *clp = name->GetNext();
+
+ log_rule_B("sp_func_call_paren");
+ log_rule_B("sp_cpp_cast_paren");
+ iarf_e pav = pc->Is(CT_FUNC_WRAP) ?
+ options::sp_func_call_paren() :
+ options::sp_cpp_cast_paren();
+
+ log_rule_B("sp_inside_fparen");
+ log_rule_B("sp_inside_paren_cast");
+ iarf_e av = pc->Is(CT_FUNC_WRAP) ?
+ options::sp_inside_fparen() :
+ options::sp_inside_paren_cast();
+
+ if ( clp->Is(CT_PAREN_CLOSE)
+ && opp->Is(CT_PAREN_OPEN)
+ && ( name->Is(CT_WORD)
+ || name->Is(CT_TYPE)))
+ {
+ const char *psp = (pav & IARF_ADD) ? " " : "";
+ const char *fsp = (av & IARF_ADD) ? " " : "";
+
+ pc->Str().append(psp);
+ pc->Str().append("(");
+ pc->Str().append(fsp);
+ pc->Str().append(name->GetStr());
+ pc->Str().append(fsp);
+ pc->Str().append(")");
+
+ pc->SetType(pc->Is(CT_FUNC_WRAP) ? CT_FUNCTION : CT_TYPE);
+
+ pc->SetOrigColEnd(pc->GetOrigCol() + pc->Len());
+
+ Chunk::Delete(opp);
+ Chunk::Delete(name);
+ Chunk::Delete(clp);
+ }
+} // handle_wrap
+
+
+static void handle_proto_wrap(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *opp = pc->GetNextNcNnl();
+ Chunk *name = opp->GetNextNcNnl();
+ Chunk *tmp = name->GetNextNcNnl()->GetNextNcNnl();
+ Chunk *clp = opp->GetClosingParen();
+ Chunk *cma = clp->GetNextNcNnl();
+
+ if ( opp->IsNullChunk()
+ || name->IsNullChunk()
+ || tmp->IsNullChunk()
+ || clp->IsNullChunk()
+ || cma->IsNullChunk()
+ || ( name->IsNot(CT_WORD)
+ && name->IsNot(CT_TYPE))
+ || opp->IsNot(CT_PAREN_OPEN))
+ {
+ return;
+ }
+
+ if (cma->Is(CT_SEMICOLON))
+ {
+ pc->SetType(CT_FUNC_PROTO);
+ }
+ else if (cma->Is(CT_BRACE_OPEN))
+ {
+ LOG_FMT(LFCN, "%s(%d): (19) SET TO CT_FUNC_DEF: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc->SetType(CT_FUNC_DEF);
+ }
+ else
+ {
+ return;
+ }
+ opp->SetParentType(pc->GetType());
+ clp->SetParentType(pc->GetType());
+
+ tmp->SetParentType(CT_PROTO_WRAP);
+
+ if (tmp->Is(CT_PAREN_OPEN))
+ {
+ fix_fcn_def_params(tmp);
+ }
+ else
+ {
+ fix_fcn_def_params(opp);
+ name->SetType(CT_WORD);
+ }
+ tmp = tmp->GetClosingParen();
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp->SetParentType(CT_PROTO_WRAP);
+ }
+ // Mark return type (TODO: move to own function)
+ tmp = pc;
+
+ while ((tmp = tmp->GetPrevNcNnlNi())->IsNotNullChunk()) // Issue #2279
+ {
+ if ( !tmp->IsTypeDefinition()
+ && tmp->IsNot(CT_OPERATOR)
+ && tmp->IsNot(CT_WORD)
+ && tmp->IsNot(CT_ADDR))
+ {
+ break;
+ }
+ tmp->SetParentType(pc->GetType());
+ make_type(tmp);
+ }
+} // handle_proto_wrap
+
+
+/**
+ * Java assert statements are: "assert EXP1 [: EXP2] ;"
+ * Mark the parent of the colon and semicolon
+ */
+static void handle_java_assert(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+ bool did_colon = false;
+ Chunk *tmp = pc;
+
+ while ((tmp = tmp->GetNext())->IsNotNullChunk())
+ {
+ if (tmp->GetLevel() == pc->GetLevel())
+ {
+ if ( !did_colon
+ && tmp->Is(CT_COLON))
+ {
+ did_colon = true;
+ tmp->SetParentType(pc->GetType());
+ }
+
+ if (tmp->Is(CT_SEMICOLON))
+ {
+ tmp->SetParentType(pc->GetType());
+ break;
+ }
+ }
+ }
+} // handle_java_assert
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine.h
new file mode 100644
index 00000000..a121449b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine.h
@@ -0,0 +1,75 @@
+/**
+ * @file combine.h
+ * prototypes for combine.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef COMBINE_H_INCLUDED
+#define COMBINE_H_INCLUDED
+
+#include "chunk.h"
+#include "uncrustify_types.h"
+
+
+/**
+ * Change CT_INCDEC_AFTER + WORD to CT_INCDEC_BEFORE
+ * Change number/word + CT_ADDR to CT_ARITH
+ * Change number/word + CT_STAR to CT_ARITH
+ * Change number/word + CT_NEG to CT_ARITH
+ * Change word + ( to a CT_FUNCTION
+ * Change struct/union/enum + CT_WORD => CT_TYPE
+ * Force parens on return.
+ *
+ * TODO: This could be done earlier.
+ *
+ * Patterns detected:
+ * STRUCT/ENUM/UNION + WORD :: WORD => TYPE
+ * WORD + '(' :: WORD => FUNCTION
+ */
+void fix_symbols();
+
+
+/**
+ * Examines the whole file and changes CT_COLON to
+ * CT_Q_COLON, CT_LABEL_COLON, or CT_CASE_COLON.
+ * It also changes the CT_WORD before CT_LABEL_COLON into CT_LABEL.
+ */
+void combine_labels();
+
+
+//! help function for mark_variable_definition...
+bool go_on(Chunk *pc, Chunk *start);
+
+
+//! Sets the parent for comments.
+void mark_comments();
+
+
+void make_type(Chunk *pc);
+
+
+/**
+ * Sets the parent of the open paren/brace/square/angle and the closing.
+ * Note - it is assumed that pc really does point to an open item and the
+ * close must be open + 1.
+ *
+ * @param start The open paren
+ * @param parent The type to assign as the parent
+ *
+ * @return The chunk after the close paren
+ */
+Chunk *set_paren_parent(Chunk *start, E_Token parent);
+
+
+/**
+ * This is called on every chunk.
+ * First on all non-preprocessor chunks and then on each preprocessor chunk.
+ * It does all the detection and classifying.
+ * This is only called by fix_symbols.
+ */
+void do_symbol_check(Chunk *prev, Chunk *pc, Chunk *next);
+
+
+#endif /* COMBINE_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_fix_mark.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_fix_mark.cpp
new file mode 100644
index 00000000..ff487e92
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_fix_mark.cpp
@@ -0,0 +1,2651 @@
+/**
+ * @file combine_fix_mark.cpp
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ * extract fom combine.cpp
+ */
+
+#include "combine_fix_mark.h"
+
+#include "combine_skip.h"
+#include "combine_tools.h"
+#include "flag_parens.h"
+#include "log_rules.h"
+
+constexpr static auto LCURRENT = LCOMBINE;
+
+
+void fix_casts(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *pc;
+ Chunk *prev;
+ Chunk *first;
+ Chunk *after;
+ Chunk *last = Chunk::NullChunkPtr;
+ Chunk *paren_close;
+ const char *verb = "likely";
+ const char *detail = "";
+ size_t count = 0;
+ int word_count = 0;
+ bool nope;
+ bool doubtful_cast = false;
+
+
+ LOG_FMT(LCASTS, "%s(%d): start->Text() is '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, start->Text(), start->GetOrigLine(), start->GetOrigCol());
+
+ prev = start->GetPrevNcNnlNi(); // Issue #2279
+
+ if (prev->IsNullChunk())
+ {
+ return;
+ }
+
+ if (prev->Is(CT_PP_DEFINED))
+ {
+ LOG_FMT(LCASTS, "%s(%d): -- not a cast - after defined\n",
+ __func__, __LINE__);
+ return;
+ }
+
+ if (prev->Is(CT_ANGLE_CLOSE))
+ {
+ LOG_FMT(LCASTS, "%s(%d): -- not a cast - after > (template)\n",
+ __func__, __LINE__);
+ return;
+ }
+ // Make sure there is only WORD, TYPE, and '*' or '^' before the close paren
+ pc = start->GetNextNcNnl();
+ first = pc;
+
+ while ( pc->IsNotNullChunk()
+ && ( pc->IsTypeDefinition()
+ || pc->Is(CT_WORD)
+ || pc->Is(CT_QUALIFIER)
+ || pc->Is(CT_DC_MEMBER)
+ || pc->Is(CT_PP)
+ || pc->Is(CT_STAR)
+ || pc->Is(CT_QUESTION)
+ || pc->Is(CT_CARET)
+ || pc->Is(CT_TSQUARE)
+ || ( ( pc->Is(CT_ANGLE_OPEN)
+ || pc->Is(CT_ANGLE_CLOSE))
+ && language_is_set(LANG_OC | LANG_JAVA | LANG_CS | LANG_VALA | LANG_CPP))
+ || ( ( pc->Is(CT_QUESTION)
+ || pc->Is(CT_COMMA)
+ || pc->Is(CT_MEMBER))
+ && language_is_set(LANG_JAVA | LANG_CS | LANG_VALA))
+ || ( pc->Is(CT_COMMA)
+ && language_is_set(LANG_CPP))
+ || pc->Is(CT_AMP)))
+ {
+ LOG_FMT(LCASTS, "%s(%d): pc->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+
+ if ( pc->Is(CT_WORD)
+ || ( last->Is(CT_ANGLE_CLOSE)
+ && pc->Is(CT_DC_MEMBER)))
+ {
+ word_count++;
+ }
+ else if ( pc->Is(CT_DC_MEMBER)
+ || pc->Is(CT_MEMBER)
+ || pc->Is(CT_PP))
+ {
+ // might be negative, such as with:
+ // a = val + (CFoo::bar_t)7;
+ word_count--;
+ }
+ last = pc;
+ pc = pc->GetNextNcNnl();
+ count++;
+ }
+
+ if ( pc->IsNullChunk()
+ || pc->IsNot(CT_PAREN_CLOSE)
+ || prev->Is(CT_OC_CLASS))
+ {
+ LOG_FMT(LCASTS, "%s(%d): -- not a cast, hit type is %s\n",
+ __func__, __LINE__, pc->IsNullChunk() ? "Null chunk" : get_token_name(pc->GetType()));
+ return;
+ }
+
+ if (word_count > 1)
+ {
+ LOG_FMT(LCASTS, "%s(%d): -- too many words: %d\n",
+ __func__, __LINE__, word_count);
+ return;
+ }
+ paren_close = pc;
+
+ // If last is a type or star/caret, we have a cast for sure
+ if ( last->Is(CT_STAR)
+ || last->Is(CT_CARET)
+ || last->Is(CT_PTR_TYPE)
+ || last->Is(CT_TYPE)
+ || ( last->Is(CT_ANGLE_CLOSE)
+ && language_is_set(LANG_OC | LANG_JAVA | LANG_CS | LANG_VALA | LANG_CPP)))
+ {
+ verb = "for sure";
+ }
+ else if (count == 1)
+ {
+ /*
+ * We are on a potential cast of the form "(word)".
+ * We don't know if the word is a type. So lets guess based on some
+ * simple rules:
+ * - if all caps, likely a type
+ * - if it ends in _t, likely a type
+ * - if it's objective-c and the type is id, likely valid
+ */
+ verb = "guessed";
+
+ if ( (last->Len() > 3)
+ && (last->GetStr()[last->Len() - 2] == '_')
+ && (last->GetStr()[last->Len() - 1] == 't'))
+ {
+ detail = " -- '_t'";
+ }
+ else if (is_ucase_str(last->Text(), last->Len()))
+ {
+ detail = " -- upper case";
+ }
+ else if ( language_is_set(LANG_OC)
+ && last->IsString("id"))
+ {
+ detail = " -- Objective-C id";
+ }
+ else
+ {
+ // If we can't tell for sure whether this is a cast, decide against it
+ detail = " -- mixed case";
+ doubtful_cast = true;
+ }
+ /*
+ * If the next item is a * or &, the next item after that can't be a
+ * number or string.
+ *
+ * If the next item is a +, the next item has to be a number.
+ *
+ * If the next item is a -, the next item can't be a string.
+ *
+ * For this to be a cast, the close paren must be followed by:
+ * - constant (number or string)
+ * - paren open
+ * - word
+ *
+ * Find the next non-open paren item.
+ */
+ pc = paren_close->GetNextNcNnl();
+ after = pc;
+
+ do
+ {
+ after = after->GetNextNcNnl();
+ } while (after->Is(CT_PAREN_OPEN));
+
+ if (after->IsNullChunk())
+ {
+ LOG_FMT(LCASTS, "%s(%d): -- not a cast - hit null chunk\n",
+ __func__, __LINE__);
+ return;
+ }
+ nope = false;
+
+ if (pc->IsPointerOperator())
+ {
+ // star (*) and address (&) are ambiguous
+ if ( after->Is(CT_NUMBER_FP)
+ || after->Is(CT_NUMBER)
+ || after->Is(CT_STRING)
+ || doubtful_cast)
+ {
+ nope = true;
+ }
+ }
+ else if (pc->Is(CT_MINUS))
+ {
+ // (UINT8)-1 or (foo)-1 or (FOO)-'a'
+ if ( after->Is(CT_STRING)
+ || doubtful_cast)
+ {
+ nope = true;
+ }
+ }
+ else if (pc->Is(CT_PLUS))
+ {
+ // (UINT8)+1 or (foo)+1
+ if ( ( after->IsNot(CT_NUMBER)
+ && after->IsNot(CT_NUMBER_FP))
+ || doubtful_cast)
+ {
+ nope = true;
+ }
+ }
+ else if ( pc->IsNot(CT_NUMBER_FP)
+ && pc->IsNot(CT_NUMBER)
+ && pc->IsNot(CT_WORD)
+ && pc->IsNot(CT_THIS)
+ && pc->IsNot(CT_TYPE)
+ && pc->IsNot(CT_PAREN_OPEN)
+ && pc->IsNot(CT_STRING)
+ && pc->IsNot(CT_DECLTYPE)
+ && pc->IsNot(CT_SIZEOF)
+ && pc->GetParentType() != CT_SIZEOF
+ && pc->IsNot(CT_FUNC_CALL)
+ && pc->IsNot(CT_FUNC_CALL_USER)
+ && pc->IsNot(CT_FUNCTION)
+ && pc->IsNot(CT_BRACE_OPEN)
+ && (!( pc->Is(CT_SQUARE_OPEN)
+ && language_is_set(LANG_OC))))
+ {
+ LOG_FMT(LCASTS, "%s(%d): -- not a cast - followed by Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
+ return;
+ }
+
+ if (nope)
+ {
+ LOG_FMT(LCASTS, "%s(%d): -- not a cast - Text() '%s' followed by type %s\n",
+ __func__, __LINE__, pc->Text(), get_token_name(after->GetType()));
+ return;
+ }
+ }
+ // if the 'cast' is followed by a semicolon, comma, bool or close parenthesis, it isn't
+ pc = paren_close->GetNextNcNnl();
+
+ if (pc->IsNullChunk())
+ {
+ return;
+ }
+
+ if ( pc->IsSemicolon()
+ || pc->Is(CT_COMMA)
+ || pc->Is(CT_BOOL) // Issue #2151
+ || pc->IsParenClose())
+ {
+ LOG_FMT(LCASTS, "%s(%d): -- not a cast - followed by type %s\n",
+ __func__, __LINE__, get_token_name(pc->GetType()));
+ return;
+ }
+ start->SetParentType(CT_C_CAST);
+ paren_close->SetParentType(CT_C_CAST);
+
+ LOG_FMT(LCASTS, "%s(%d): -- %s c-cast: (",
+ __func__, __LINE__, verb);
+
+ for (pc = first;
+ pc->IsNotNullChunk() && pc != paren_close;
+ pc = pc->GetNextNcNnl())
+ {
+ pc->SetParentType(CT_C_CAST);
+ make_type(pc);
+ LOG_FMT(LCASTS, " %s", pc->Text());
+ }
+
+ LOG_FMT(LCASTS, " )%s\n", detail);
+
+ // Mark the next item as an expression start
+ pc = paren_close->GetNextNcNnl();
+
+ if (pc->IsNotNullChunk())
+ {
+ pc->SetFlagBits(PCF_EXPR_START);
+
+ if (pc->IsBraceOpen())
+ {
+ set_paren_parent(pc, start->GetParentType());
+ }
+ }
+} // fix_casts
+
+
+void fix_fcn_def_params(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ if (start->IsNullChunk())
+ {
+ return;
+ }
+ LOG_FMT(LFCNP, "%s(%d): Text() '%s', type is %s, on orig line %zu, level is %zu\n",
+ __func__, __LINE__, start->Text(), get_token_name(start->GetType()), start->GetOrigLine(), start->GetLevel());
+
+ while ( start->IsNotNullChunk()
+ && !start->IsParenOpen())
+ {
+ start = start->GetNextNcNnl();
+ }
+
+ if (start->IsNullChunk()) // Coverity CID 76003, 1100782
+ {
+ return;
+ }
+ // ensure start chunk holds a single '(' character
+ assert( (start->Len() == 1)
+ && (start->GetStr()[0] == '('));
+
+ ChunkStack cs;
+ size_t level = start->GetLevel() + 1;
+ Chunk *pc = start->GetNextNcNnl();
+
+ while (pc->IsNotNullChunk())
+ {
+ if ( ( (start->Len() == 1)
+ && (start->GetStr()[0] == ')'))
+ || pc->GetLevel() < level)
+ {
+ LOG_FMT(LFCNP, "%s(%d): bailed on Text() '%s', on orig line %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine());
+ break;
+ }
+ LOG_FMT(LFCNP, "%s(%d): %s, Text() '%s' on orig line %zu, level %zu\n",
+ __func__, __LINE__, (pc->GetLevel() > level) ? "skipping" : "looking at",
+ pc->Text(), pc->GetOrigLine(), pc->GetLevel());
+
+ if (pc->GetLevel() > level)
+ {
+ pc = pc->GetNextNcNnl();
+ continue;
+ }
+
+ if ( pc->IsStar()
+ || pc->IsMsRef()
+ || pc->IsNullable())
+ {
+ pc->SetType(CT_PTR_TYPE);
+ cs.Push_Back(pc);
+ }
+ else if ( language_is_set(LANG_CPP) // Issue #3662
+ && ( pc->Is(CT_AMP)
+ || pc->IsString("&&")))
+ {
+ pc->SetType(CT_BYREF);
+ cs.Push_Back(pc);
+ }
+ else if (pc->Is(CT_TYPE_WRAP))
+ {
+ cs.Push_Back(pc);
+ }
+ else if ( pc->Is(CT_WORD)
+ || pc->Is(CT_TYPE))
+ {
+ cs.Push_Back(pc);
+ }
+ else if ( pc->Is(CT_COMMA)
+ || pc->Is(CT_ASSIGN))
+ {
+ mark_variable_stack(cs, LFCNP);
+
+ if (pc->Is(CT_ASSIGN))
+ {
+ // Mark assignment for default param spacing
+ pc->SetParentType(CT_FUNC_PROTO);
+ }
+ }
+ pc = pc->GetNextNcNnl();
+ }
+ mark_variable_stack(cs, LFCNP);
+} // fix_fcn_def_params
+
+
+void fix_type_cast(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ if (start->IsNullChunk())
+ {
+ return;
+ }
+ Chunk *pc = start->GetNextNcNnl();
+
+ if ( pc->IsNullChunk()
+ || pc->IsNot(CT_ANGLE_OPEN))
+ {
+ return;
+ }
+ pc = pc->GetNextNcNnl();
+
+ while ( pc->IsNotNullChunk()
+ && pc->GetLevel() >= start->GetLevel())
+ {
+ if ( pc->GetLevel() == start->GetLevel()
+ && pc->Is(CT_ANGLE_CLOSE))
+ {
+ pc = pc->GetNextNcNnl();
+
+ if (pc->IsNullChunk())
+ {
+ return;
+ }
+
+ if (pc->IsString("("))
+ {
+ set_paren_parent(pc, CT_TYPE_CAST);
+ }
+ return;
+ }
+ make_type(pc);
+ pc = pc->GetNextNcNnl();
+ }
+} // fix_type_cast
+
+
+void fix_typedef(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ if (start->IsNullChunk())
+ {
+ return;
+ }
+ LOG_FMT(LTYPEDEF, "%s(%d): typedef @ orig line %zu, orig col %zu\n",
+ __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol());
+
+ Chunk *the_type = Chunk::NullChunkPtr;
+ Chunk *last_op = Chunk::NullChunkPtr;
+
+ /*
+ * Mark everything in the typedef and scan for ")(", which makes it a
+ * function type
+ */
+ for (Chunk *next = start->GetNextNcNnl(E_Scope::PREPROC)
+ ; next->IsNotNullChunk() && next->GetLevel() >= start->GetLevel()
+ ; next = next->GetNextNcNnl(E_Scope::PREPROC))
+ {
+ next->SetFlagBits(PCF_IN_TYPEDEF);
+
+ if (start->GetLevel() == next->GetLevel())
+ {
+ if (next->IsSemicolon())
+ {
+ next->SetParentType(CT_TYPEDEF);
+ break;
+ }
+
+ if (next->Is(CT_ATTRIBUTE))
+ {
+ break;
+ }
+
+ if ( language_is_set(LANG_D)
+ && next->Is(CT_ASSIGN))
+ {
+ next->SetParentType(CT_TYPEDEF);
+ break;
+ }
+ make_type(next);
+
+ if (next->Is(CT_TYPE))
+ {
+ the_type = next;
+ }
+ next->ResetFlagBits(PCF_VAR_1ST_DEF);
+
+ if (*next->GetStr().c_str() == '(')
+ {
+ last_op = next;
+ }
+ }
+ }
+
+ // avoid interpreting typedef NS_ENUM (NSInteger, MyEnum) as a function def
+ if ( last_op->IsNotNullChunk()
+ && !( language_is_set(LANG_OC)
+ && last_op->GetParentType() == CT_ENUM))
+ {
+ flag_parens(last_op, PCF_NONE, CT_FPAREN_OPEN, CT_TYPEDEF, false);
+ fix_fcn_def_params(last_op);
+
+ the_type = last_op->GetPrevNcNnlNi(E_Scope::PREPROC); // Issue #2279
+
+ if (the_type->IsNullChunk())
+ {
+ return;
+ }
+ Chunk *open_paren = Chunk::NullChunkPtr;
+
+ if (the_type->IsParenClose())
+ {
+ open_paren = the_type->GetOpeningParen();
+ mark_function_type(the_type);
+ the_type = the_type->GetPrevNcNnlNi(E_Scope::PREPROC); // Issue #2279
+
+ if (the_type->IsNullChunk())
+ {
+ return;
+ }
+ }
+ else
+ {
+ // must be: "typedef <return type>func(params);"
+ the_type->SetType(CT_FUNC_TYPE);
+ }
+ the_type->SetParentType(CT_TYPEDEF);
+
+ LOG_FMT(LTYPEDEF, "%s(%d): fcn typedef Text() '%s', on orig line %zu\n",
+ __func__, __LINE__, the_type->Text(), the_type->GetOrigLine());
+
+ // If we are aligning on the open parenthesis, grab that instead
+ log_rule_B("align_typedef_func");
+
+ if ( open_paren->IsNotNullChunk()
+ && options::align_typedef_func() == 1)
+ {
+ the_type = open_paren;
+ }
+ log_rule_B("align_typedef_func");
+
+ if (options::align_typedef_func() != 0)
+ {
+ LOG_FMT(LTYPEDEF, "%s(%d): -- align anchor on Text() %s, @ orig line %zu, orig col %zu\n",
+ __func__, __LINE__, the_type->Text(), the_type->GetOrigLine(), the_type->GetOrigCol());
+ the_type->SetFlagBits(PCF_ANCHOR);
+ }
+ // already did everything we need to do
+ return;
+ }
+ /*
+ * Skip over enum/struct/union stuff, as we know it isn't a return type
+ * for a function type
+ */
+ Chunk *after = start->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (after->IsNullChunk())
+ {
+ return;
+ }
+
+ if ( after->IsNot(CT_ENUM)
+ && after->IsNot(CT_STRUCT)
+ && after->IsNot(CT_UNION))
+ {
+ if (the_type->IsNotNullChunk())
+ {
+ // We have just a regular typedef
+ LOG_FMT(LTYPEDEF, "%s(%d): regular typedef Text() %s, on orig line %zu\n",
+ __func__, __LINE__, the_type->Text(), the_type->GetOrigLine());
+ the_type->SetFlagBits(PCF_ANCHOR);
+ }
+ return;
+ }
+ // We have a struct/union/enum, next should be either a type or {
+ Chunk *next = after->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (next->IsNullChunk())
+ {
+ return;
+ }
+
+ if (next->Is(CT_TYPE))
+ {
+ next = next->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (next->IsNullChunk())
+ {
+ return;
+ }
+ }
+
+ if (next->Is(CT_BRACE_OPEN))
+ {
+ // Skip to the closing brace
+ Chunk *br_c = next->GetNextType(CT_BRACE_CLOSE, next->GetLevel(), E_Scope::PREPROC);
+
+ if (br_c->IsNotNullChunk())
+ {
+ const E_Token tag = after->GetType();
+ next->SetParentType(tag);
+ br_c->SetParentType(tag);
+
+ if (tag == CT_ENUM)
+ {
+ flag_series(after, br_c, PCF_IN_ENUM);
+ }
+ else if (tag == CT_STRUCT)
+ {
+ flag_series(after, br_c, PCF_IN_STRUCT);
+ }
+ }
+ }
+
+ if (the_type->IsNotNullChunk())
+ {
+ LOG_FMT(LTYPEDEF, "%s(%d): %s typedef Text() %s, on orig line %zu\n",
+ __func__, __LINE__, get_token_name(after->GetType()), the_type->Text(),
+ the_type->GetOrigLine());
+ the_type->SetFlagBits(PCF_ANCHOR);
+ }
+} // fix_typedef
+
+
+Chunk *fix_variable_definition(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *pc = start;
+ Chunk *end;
+ Chunk *tmp_pc;
+ ChunkStack cs;
+ int idx;
+ int ref_idx;
+
+ LOG_FMT(LFVD, "%s(%d): start at pc orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ log_pcf_flags(LFCNR, pc->GetFlags());
+
+ // Scan for words and types and stars oh my!
+ while ( pc->Is(CT_TYPE)
+ || pc->Is(CT_WORD)
+ || pc->Is(CT_QUALIFIER)
+ || pc->Is(CT_TYPENAME)
+ || pc->Is(CT_DC_MEMBER)
+ || pc->Is(CT_MEMBER)
+ || pc->Is(CT_PP) // Issue #3169
+ || pc->IsPointerOperator())
+ {
+ LOG_FMT(LFVD, "%s(%d): 1:pc->Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
+ cs.Push_Back(pc);
+ pc = pc->GetNextNcNnl();
+
+ if (pc->IsNullChunk())
+ {
+ LOG_FMT(LFVD, "%s(%d): pc is null chunk\n", __func__, __LINE__);
+ return(Chunk::NullChunkPtr);
+ }
+ LOG_FMT(LFVD, "%s(%d): 2:pc->Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
+
+ // Skip templates and attributes
+ pc = skip_template_next(pc);
+
+ if (pc->IsNullChunk())
+ {
+ LOG_FMT(LFVD, "%s(%d): pc is null chunk\n", __func__, __LINE__);
+ return(Chunk::NullChunkPtr);
+ }
+ LOG_FMT(LFVD, "%s(%d): 3:pc->Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
+
+ pc = skip_attribute_next(pc);
+
+ if (pc->IsNullChunk())
+ {
+ LOG_FMT(LFVD, "%s(%d): pc is null chunk\n", __func__, __LINE__);
+ return(Chunk::NullChunkPtr);
+ }
+ LOG_FMT(LFVD, "%s(%d): 4:pc->Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
+
+ if (language_is_set(LANG_JAVA))
+ {
+ pc = skip_tsquare_next(pc);
+
+ if (pc->IsNotNullChunk())
+ {
+ LOG_FMT(LFVD, "%s(%d): 5:pc->Text() '%s', type is %s\n", __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
+ }
+ else
+ {
+ pc = Chunk::NullChunkPtr;
+ }
+ }
+ }
+ end = pc;
+
+ if (end->IsNullChunk())
+ {
+ LOG_FMT(LFVD, "%s(%d): end is null chunk\n", __func__, __LINE__);
+ return(Chunk::NullChunkPtr);
+ }
+ LOG_FMT(LFVD, "%s(%d): end->GetType() is %s\n", __func__, __LINE__, get_token_name(end->GetType()));
+
+ if (end->Is(CT_FUNC_CTOR_VAR)) // Issue #3010
+ {
+ return(end);
+ }
+
+ if ( cs.Len() == 1
+ && end->Is(CT_BRACE_OPEN)
+ && end->GetParentType() == CT_BRACED_INIT_LIST)
+ {
+ cs.Get(0)->m_pc->SetType(CT_TYPE);
+ }
+
+ // Function defs are handled elsewhere
+ if ( (cs.Len() <= 1)
+ || end->Is(CT_FUNC_DEF)
+ || end->Is(CT_FUNC_PROTO)
+ || end->Is(CT_FUNC_CLASS_DEF)
+ || end->Is(CT_FUNC_CLASS_PROTO)
+ || end->Is(CT_OPERATOR))
+ {
+ return(skip_to_next_statement(end));
+ }
+ // ref_idx points to the alignable part of the variable definition
+ ref_idx = cs.Len() - 1;
+
+ // Check for the '::' stuff: "char *Engine::name"
+ if ( (cs.Len() >= 3)
+ && ( (cs.Get(cs.Len() - 2)->m_pc->GetType() == CT_MEMBER)
+ || (cs.Get(cs.Len() - 2)->m_pc->GetType() == CT_DC_MEMBER)))
+ {
+ idx = cs.Len() - 2;
+
+ while (idx > 0)
+ {
+ tmp_pc = cs.Get(idx)->m_pc;
+
+ if ( tmp_pc->IsNot(CT_DC_MEMBER)
+ && tmp_pc->IsNot(CT_MEMBER))
+ {
+ break;
+ }
+ idx--;
+ tmp_pc = cs.Get(idx)->m_pc;
+
+ if ( tmp_pc->IsNot(CT_WORD)
+ && tmp_pc->IsNot(CT_TYPE))
+ {
+ break;
+ }
+ make_type(tmp_pc);
+ idx--;
+ }
+ ref_idx = idx + 1;
+ }
+ tmp_pc = cs.Get(ref_idx)->m_pc;
+ LOG_FMT(LFVD, "%s(%d): ref_idx(%d) is '%s'\n", __func__, __LINE__, ref_idx, tmp_pc->Text());
+
+ // No type part found!
+ if (ref_idx <= 0)
+ {
+ return(skip_to_next_statement(end));
+ }
+ LOG_FMT(LFVD2, "%s(%d): orig line is %zu, TYPE : ", __func__, __LINE__, start->GetOrigLine());
+
+ for (size_t idxForCs = 0; idxForCs < cs.Len() - 1; idxForCs++)
+ {
+ tmp_pc = cs.Get(idxForCs)->m_pc;
+ make_type(tmp_pc);
+ tmp_pc->SetFlagBits(PCF_VAR_TYPE);
+ LOG_FMT(LFVD2, " Text() is '%s', type is %s", tmp_pc->Text(), get_token_name(tmp_pc->GetType()));
+ }
+
+ LOG_FMT(LFVD2, "\n");
+
+ // OK we have two or more items, mark types up to the end.
+ LOG_FMT(LFVD, "%s(%d): pc orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ mark_variable_definition(cs.Get(cs.Len() - 1)->m_pc);
+
+ if (end->Is(CT_COMMA))
+ {
+ return(end->GetNextNcNnl());
+ }
+ return(skip_to_next_statement(end));
+} // fix_variable_definition
+
+
+void mark_cpp_constructor(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *paren_open;
+ Chunk *tmp;
+ Chunk *after;
+ Chunk *var;
+ bool is_destr = false;
+
+ tmp = pc->GetPrevNcNnlNi(); // Issue #2279
+
+ if ( tmp->Is(CT_INV)
+ || tmp->Is(CT_DESTRUCTOR))
+ {
+ tmp->SetType(CT_DESTRUCTOR);
+ pc->SetParentType(CT_DESTRUCTOR);
+ is_destr = true;
+ }
+ LOG_FMT(LFTOR, "%s(%d): orig line is %zu, orig col is %zu, FOUND %sSTRUCTOR for '%s'[%s] prev '%s'[%s]\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(),
+ is_destr ? "DE" : "CON",
+ pc->Text(), get_token_name(pc->GetType()),
+ tmp->Text(), get_token_name(tmp->GetType()));
+
+ paren_open = skip_template_next(pc->GetNextNcNnl());
+
+ if (!paren_open->IsString("("))
+ {
+ LOG_FMT(LWARN, "%s:%zu Expected '(', got: [%s]\n",
+ cpd.filename.c_str(), paren_open->GetOrigLine(),
+ paren_open->Text());
+ return;
+ }
+ // Mark parameters
+ fix_fcn_def_params(paren_open);
+ after = flag_parens(paren_open, PCF_IN_FCN_CALL, CT_FPAREN_OPEN, CT_FUNC_CLASS_PROTO, false);
+
+ LOG_FMT(LFTOR, "%s(%d): Text() '%s'\n", __func__, __LINE__, after->Text());
+
+ // Scan until the brace open, mark everything
+ tmp = paren_open;
+ bool hit_colon = false;
+
+ while ( tmp->IsNotNullChunk()
+ && ( tmp->IsNot(CT_BRACE_OPEN)
+ || tmp->GetLevel() != paren_open->GetLevel())
+ && !tmp->IsSemicolon())
+ {
+ LOG_FMT(LFTOR, "%s(%d): tmp is '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, tmp->Text(), tmp->GetOrigLine(), tmp->GetOrigCol());
+ tmp->SetFlagBits(PCF_IN_CONST_ARGS);
+ tmp = tmp->GetNextNcNnl();
+
+ if ( tmp->IsString(":")
+ && tmp->GetLevel() == paren_open->GetLevel())
+ {
+ tmp->SetType(CT_CONSTR_COLON);
+ hit_colon = true;
+ }
+
+ if ( hit_colon
+ && ( tmp->IsParenOpen()
+ || tmp->IsBraceOpen())
+ && tmp->GetLevel() == paren_open->GetLevel())
+ {
+ var = skip_template_prev(tmp->GetPrevNcNnlNi()); // Issue #2279
+
+ if ( var->Is(CT_TYPE)
+ || var->Is(CT_WORD))
+ {
+ var->SetType(CT_FUNC_CTOR_VAR);
+ flag_parens(tmp, PCF_IN_FCN_CALL, CT_FPAREN_OPEN, CT_FUNC_CTOR_VAR, false);
+ }
+ }
+ }
+
+ if (tmp->Is(CT_BRACE_OPEN))
+ {
+ set_paren_parent(paren_open, CT_FUNC_CLASS_DEF);
+ set_paren_parent(tmp, CT_FUNC_CLASS_DEF);
+ LOG_FMT(LFCN, "%s(%d): Marked '%s' as FUNC_CLASS_DEF on orig line %zu, orig col %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ }
+ else
+ {
+ tmp->SetParentType(CT_FUNC_CLASS_PROTO);
+ pc->SetType(CT_FUNC_CLASS_PROTO);
+ LOG_FMT(LFCN, "%s(%d): Marked '%s' as FUNC_CLASS_PROTO on orig line %zu, orig col %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ }
+ tmp = pc->GetPrevNcNnlNi(); // Issue #2907
+
+ if (tmp->Is(CT_DESTRUCTOR))
+ {
+ tmp->SetParentType(pc->GetType());
+ tmp = tmp->GetPrevNcNnlNi();
+ }
+
+ while (tmp->Is(CT_QUALIFIER))
+ {
+ tmp->SetParentType(pc->GetType());
+ tmp = tmp->GetPrevNcNnlNi();
+ }
+} // mark_cpp_constructor
+
+
+void mark_cpp_lambda(Chunk *square_open)
+{
+ if ( square_open->Is(CT_SQUARE_OPEN)
+ && square_open->GetParentType() == CT_CPP_LAMBDA)
+ {
+ auto *brace_close = square_open->GetNextType(CT_BRACE_CLOSE, square_open->GetLevel());
+
+ if (brace_close->GetParentType() == CT_CPP_LAMBDA)
+ {
+ for (auto *pc = square_open; pc != brace_close; pc = pc->GetNextNcNnl())
+ {
+ pc->SetFlagBits(PCF_IN_LAMBDA);
+ }
+ }
+ }
+} // mark_cpp_lambda
+
+
+void mark_define_expressions()
+{
+ LOG_FUNC_ENTRY();
+
+ bool in_define = false;
+ bool first = true;
+ Chunk *pc = Chunk::GetHead();
+ Chunk *prev = pc;
+
+ while (pc->IsNotNullChunk())
+ {
+ if (!in_define)
+ {
+ if ( pc->Is(CT_PP_DEFINE)
+ || pc->Is(CT_PP_IF)
+ || pc->Is(CT_PP_ELSE))
+ {
+ in_define = true;
+ first = true;
+ }
+ }
+ else
+ {
+ if ( !pc->TestFlags(PCF_IN_PREPROC)
+ || pc->Is(CT_PREPROC))
+ {
+ in_define = false;
+ }
+ else
+ {
+ if ( pc->IsNot(CT_MACRO)
+ && ( first
+ || prev->Is(CT_PAREN_OPEN)
+ || prev->Is(CT_ARITH)
+ || prev->Is(CT_SHIFT)
+ || prev->Is(CT_CARET)
+ || prev->Is(CT_ASSIGN)
+ || prev->Is(CT_COMPARE)
+ || prev->Is(CT_RETURN)
+ || prev->Is(CT_GOTO)
+ || prev->Is(CT_CONTINUE)
+ || prev->Is(CT_FPAREN_OPEN)
+ || prev->Is(CT_SPAREN_OPEN)
+ || prev->Is(CT_BRACE_OPEN)
+ || prev->IsSemicolon()
+ || prev->Is(CT_COMMA)
+ || prev->Is(CT_COLON)
+ || prev->Is(CT_QUESTION)))
+ {
+ pc->SetFlagBits(PCF_EXPR_START);
+ first = false;
+ }
+ }
+ }
+ prev = pc;
+ pc = pc->GetNext();
+ }
+} // mark_define_expressions
+
+
+void mark_exec_sql(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *tmp;
+
+ // Change CT_WORD to CT_SQL_WORD
+ for (tmp = pc->GetNext(); tmp->IsNotNullChunk(); tmp = tmp->GetNext())
+ {
+ tmp->SetParentType(pc->GetType());
+
+ if (tmp->Is(CT_WORD))
+ {
+ tmp->SetType(CT_SQL_WORD);
+ }
+
+ if (tmp->Is(CT_SEMICOLON))
+ {
+ break;
+ }
+ }
+
+ if ( pc->IsNot(CT_SQL_BEGIN)
+ || tmp->IsNullChunk()
+ || tmp->IsNot(CT_SEMICOLON))
+ {
+ return;
+ }
+
+ for (tmp = tmp->GetNext();
+ tmp->IsNotNullChunk() && tmp->IsNot(CT_SQL_END);
+ tmp = tmp->GetNext())
+ {
+ tmp->SetLevel(tmp->GetLevel() + 1);
+ }
+} // mark_exec_sql
+
+
+void mark_function_return_type(Chunk *fname, Chunk *start, E_Token parent_type)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *pc = start;
+
+ if (pc->IsNotNullChunk())
+ {
+ // Step backwards from pc and mark the parent of the return type
+ LOG_FMT(LFCNR, "%s(%d): (backwards) return type for '%s' @ orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, fname->Text(), fname->GetOrigLine(), fname->GetOrigCol());
+
+ Chunk *first = pc;
+
+ while (pc->IsNotNullChunk())
+ {
+ LOG_FMT(LFCNR, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s, ",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ log_pcf_flags(LFCNR, pc->GetFlags());
+
+ if (pc->Is(CT_ANGLE_CLOSE))
+ {
+ pc = skip_template_prev(pc);
+
+ if ( pc->IsNullChunk()
+ || pc->Is(CT_TEMPLATE))
+ {
+ //either expression is not complete or this is smth like 'template<T> void func()'
+ // - we are not interested in 'template<T>' part
+ break;
+ }
+ else
+ {
+ //this is smth like 'vector<int> func()' and 'pc' is currently on 'vector' - just proceed
+ }
+ }
+
+ if ( ( !pc->IsTypeDefinition()
+ && pc->IsNot(CT_OPERATOR)
+ && pc->IsNot(CT_WORD)
+ && pc->IsNot(CT_ADDR))
+ || pc->TestFlags(PCF_IN_PREPROC))
+ {
+ break;
+ }
+
+ if (!pc->IsPointerOperator())
+ {
+ first = pc;
+ }
+ pc = pc->GetPrevNcNnlNi(); // Issue #2279
+ }
+ LOG_FMT(LFCNR, "%s(%d): marking returns...", __func__, __LINE__);
+
+ // Changing words to types into tuple return types in CS.
+ bool is_return_tuple = false;
+
+ if ( pc->Is(CT_PAREN_CLOSE)
+ && !pc->TestFlags(PCF_IN_PREPROC))
+ {
+ first = pc->GetOpeningParen();
+ is_return_tuple = true;
+ }
+ pc = first;
+
+ while (pc->IsNotNullChunk())
+ {
+ LOG_CHUNK(LTOK, pc);
+
+ if (parent_type != CT_NONE)
+ {
+ pc->SetParentType(parent_type);
+ }
+ Chunk *prev = pc->GetPrevNcNnlNi(); // Issue #2279
+
+ if ( !is_return_tuple
+ || pc->IsNot(CT_WORD)
+ || ( prev->IsNullChunk()
+ && prev->IsNot(CT_TYPE)))
+ {
+ make_type(pc);
+ }
+
+ if (pc == start)
+ {
+ break;
+ }
+ pc = pc->GetNextNcNnl();
+
+ //template angles should keep parent type CT_TEMPLATE
+ if (pc->Is(CT_ANGLE_OPEN))
+ {
+ pc = pc->GetNextType(CT_ANGLE_CLOSE, pc->GetLevel());
+
+ if (pc == start)
+ {
+ break;
+ }
+ pc = pc->GetNextNcNnl();
+ }
+ }
+ LOG_FMT(LFCNR, "\n");
+
+ // Back up and mark parent type on friend declarations
+ if ( parent_type != CT_NONE
+ && first
+ && first->TestFlags(PCF_IN_CLASS))
+ {
+ pc = first->GetPrevNcNnlNi(); // Issue #2279
+
+ if (pc->Is(CT_FRIEND))
+ {
+ LOG_FMT(LFCNR, "%s(%d): marking friend\n", __func__, __LINE__);
+ pc->SetParentType(parent_type);
+ // A friend might be preceded by a template specification, as in:
+ // template <...> friend type func(...);
+ // If so, we need to mark that also
+ pc = pc->GetPrevNcNnlNi(); // Issue #2279
+
+ if (pc->Is(CT_ANGLE_CLOSE))
+ {
+ pc = skip_template_prev(pc);
+
+ if (pc->Is(CT_TEMPLATE))
+ {
+ LOG_FMT(LFCNR, "%s(%d): marking friend template\n",
+ __func__, __LINE__);
+ pc->SetParentType(parent_type);
+ }
+ }
+ }
+ }
+ }
+} // mark_function_return_type
+
+
+void mark_function(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc->IsNullChunk())
+ {
+ return;
+ }
+ LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu, text '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ Chunk *prev = pc->GetPrevNcNnlNi(); // Issue #2279
+ Chunk *next = pc->GetNextNppOrNcNnl();
+
+ if (next->IsNullChunk())
+ {
+ return;
+ }
+ Chunk *tmp;
+ Chunk *semi = Chunk::NullChunkPtr;
+ Chunk *paren_open;
+ Chunk *paren_close;
+
+ // Find out what is before the operator
+ if (pc->GetParentType() == CT_OPERATOR)
+ {
+ LOG_FMT(LFCN, "%s(%d): orig line %zu, orig col %zu, text '%s",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ log_pcf_flags(LFCN, pc->GetFlags());
+ Chunk *pc_op = pc->GetPrevType(CT_OPERATOR, pc->GetLevel());
+
+ if ( pc_op->IsNotNullChunk()
+ && pc_op->TestFlags(PCF_EXPR_START))
+ {
+ LOG_FMT(LFCN, "%s(%d): (4) SET TO CT_FUNC_CALL: orig line %zu, orig col %zu, text '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc->SetType(CT_FUNC_CALL);
+ }
+
+ if (language_is_set(LANG_CPP))
+ {
+ tmp = pc;
+
+ while ((tmp = tmp->GetPrevNcNnlNi())->IsNotNullChunk()) // Issue #2279
+ {
+ if ( tmp->Is(CT_BRACE_CLOSE)
+ || tmp->Is(CT_BRACE_OPEN) // Issue 575
+ || tmp->Is(CT_SEMICOLON))
+ {
+ break;
+ }
+
+ if ( tmp->IsParenOpen()
+ && !pc->TestFlags(PCF_IN_PREPROC)) // Issue #2703
+ {
+ LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
+ LOG_FMT(LFCN, "%s(%d): (5) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc->SetType(CT_FUNC_CALL);
+ break;
+ }
+
+ if (tmp->Is(CT_ASSIGN))
+ {
+ LOG_FMT(LFCN, "%s(%d): (6) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc->SetType(CT_FUNC_CALL);
+ break;
+ }
+
+ if (tmp->Is(CT_TEMPLATE))
+ {
+ LOG_FMT(LFCN, "%s(%d): (7) SET TO CT_FUNC_DEF: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc->SetType(CT_FUNC_DEF);
+ break;
+ }
+
+ if (tmp->Is(CT_BRACE_OPEN))
+ {
+ if (tmp->GetParentType() == CT_FUNC_DEF)
+ {
+ LOG_FMT(LFCN, "%s(%d): (8) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc->SetType(CT_FUNC_CALL);
+ }
+
+ if ( tmp->GetParentType() == CT_CLASS
+ || tmp->GetParentType() == CT_STRUCT)
+ {
+ LOG_FMT(LFCN, "%s(%d): (9) SET TO CT_FUNC_DEF: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc->SetType(CT_FUNC_DEF);
+ }
+ break;
+ }
+ }
+
+ if ( tmp->IsNotNullChunk()
+ && pc->IsNot(CT_FUNC_CALL))
+ {
+ // Mark the return type
+ tmp = tmp->GetNextNcNnl();
+
+ while ( tmp != pc
+ && tmp->IsNotNullChunk())
+ {
+ make_type(tmp); // Mark the return type
+ tmp = tmp->GetNextNcNnl();
+ }
+ }
+ }
+ }
+
+ if ( next->IsPointerOperator()
+ || next->IsNewline())
+ {
+ next = next->GetNextNppOrNcNnl();
+
+ if (next->IsNullChunk())
+ {
+ return;
+ }
+ }
+ LOG_FMT(LFCN, "%s(%d): orig line %zu, orig col %zu, text '%s', type %s, parent type %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(),
+ get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
+ LOG_FMT(LFCN, " level %zu, brace level %zu, next->text '%s', next->type %s, next->level is %zu\n",
+ pc->GetLevel(), pc->GetBraceLevel(),
+ next->Text(), get_token_name(next->GetType()), next->GetLevel());
+
+ if (pc->TestFlags(PCF_IN_CONST_ARGS))
+ {
+ pc->SetType(CT_FUNC_CTOR_VAR);
+ LOG_FMT(LFCN, "%s(%d): 1) Marked [%s] as FUNC_CTOR_VAR on line %zu col %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ next = skip_template_next(next);
+
+ if (next->IsNullChunk())
+ {
+ return;
+ }
+ flag_parens(next, PCF_NONE, CT_FPAREN_OPEN, pc->GetType(), true);
+ return;
+ }
+ // Skip over any template and attribute madness
+ next = skip_template_next(next);
+
+ if (next->IsNullChunk())
+ {
+ return;
+ }
+ next = skip_attribute_next(next);
+
+ if (next->IsNullChunk())
+ {
+ return;
+ }
+ // Find the open and close parenthesis
+ paren_open = pc->GetNextString("(", 1, pc->GetLevel());
+ paren_close = paren_open->GetNextString(")", 1, pc->GetLevel());
+
+ if ( paren_open->IsNullChunk()
+ || paren_close->IsNullChunk())
+ {
+ LOG_FMT(LFCN, "%s(%d): No parens found for [%s] on orig line %zu, orig col %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ return;
+ }
+ /*
+ * This part detects either chained function calls or a function ptr definition.
+ * MYTYPE (*func)(void);
+ * MYTYPE (*func(param))(void);
+ * MYTYPE (*func(param_call1)(param_call2))(void);
+ * mWriter( "class Clst_"c )( somestr.getText() )( " : Cluster {"c ).newline;
+ *
+ * For it to be a function variable def, there must be a '*' followed by a
+ * single word or by a sequence of one or more expressions each within brackets.
+ *
+ * Otherwise, it must be chained function calls.
+ */
+ tmp = paren_close->GetNextNcNnl();
+
+ if ( tmp->IsNotNullChunk()
+ && tmp->IsString("("))
+ {
+ Chunk *tmp1;
+ Chunk *tmp2;
+ Chunk *tmp3;
+
+ // skip over any leading class/namespace in: "T(F::*A)();"
+ tmp1 = next->GetNextNcNnl();
+
+ while (tmp1->IsNotNullChunk())
+ {
+ tmp2 = tmp1->GetNextNcNnl();
+
+ if ( !tmp1->IsWord()
+ || tmp2->IsNot(CT_DC_MEMBER))
+ {
+ break;
+ }
+ tmp1 = tmp2->GetNextNcNnl();
+ }
+ tmp2 = tmp1->GetNextNcNnl();
+
+ if (tmp2->IsString(")"))
+ {
+ tmp3 = tmp2;
+ tmp2 = Chunk::NullChunkPtr;
+ }
+ else
+ {
+ tmp3 = tmp2->GetNextNcNnl();
+ }
+ tmp3 = tmp3->GetNextNbsb();
+
+ // Issue #3852
+ while (tmp3->IsString("("))
+ {
+ tmp3 = tmp3->GetClosingParen();
+ tmp3 = tmp3->GetNextNcNnl();
+ }
+
+ if ( tmp3->IsString(")")
+ && ( tmp1->IsStar()
+ || tmp1->IsMsRef()
+ || ( language_is_set(LANG_OC)
+ && tmp1->Is(CT_CARET)))
+ && ( tmp2->IsNullChunk()
+ || tmp2->Is(CT_WORD)))
+ {
+ if (tmp2->IsNotNullChunk())
+ {
+ LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu, function variable '%s', changing '%s' into a type\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), tmp2->Text(), pc->Text());
+ tmp2->SetType(CT_FUNC_VAR);
+ flag_parens(paren_open, PCF_NONE, CT_PAREN_OPEN, CT_FUNC_VAR, false);
+
+ LOG_FMT(LFCN, "%s(%d): paren open @ orig line %zu, orig col %zu\n",
+ __func__, __LINE__, paren_open->GetOrigLine(), paren_open->GetOrigCol());
+ }
+ else
+ {
+ LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu, function type, changing '%s' into a type\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+
+ if (tmp2->IsNotNullChunk())
+ {
+ tmp2->SetType(CT_FUNC_TYPE);
+ }
+ flag_parens(paren_open, PCF_NONE, CT_PAREN_OPEN, CT_FUNC_TYPE, false);
+ }
+ pc->SetType(CT_TYPE);
+ tmp1->SetType(CT_PTR_TYPE);
+ pc->ResetFlagBits(PCF_VAR_1ST_DEF);
+
+ if (tmp2->IsNotNullChunk())
+ {
+ tmp2->SetFlagBits(PCF_VAR_1ST_DEF);
+ }
+ flag_parens(tmp, PCF_NONE, CT_FPAREN_OPEN, CT_FUNC_PROTO, false);
+ fix_fcn_def_params(tmp);
+ return;
+ }
+ LOG_FMT(LFCN, "%s(%d): chained function calls? Text() is '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ }
+
+ // Assume it is a function call if not already labeled
+ if (pc->Is(CT_FUNCTION))
+ {
+ LOG_FMT(LFCN, "%s(%d): examine: Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+ // look for an assignment. Issue #575
+ Chunk *temp = pc->GetNextType(CT_ASSIGN, pc->GetLevel());
+
+ if (temp->IsNotNullChunk())
+ {
+ LOG_FMT(LFCN, "%s(%d): assignment found, orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, temp->GetOrigLine(), temp->GetOrigCol(), temp->Text());
+ LOG_FMT(LFCN, "%s(%d): (10) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc->SetType(CT_FUNC_CALL);
+ }
+ else
+ {
+ LOG_FMT(LFCN, "%s(%d): (11) SET TO %s: orig line is %zu, orig col is %zu, Text() '%s'",
+ __func__, __LINE__, (pc->GetParentType() == CT_OPERATOR) ? "CT_FUNC_DEF" : "CT_FUNC_CALL",
+ pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc->SetType((pc->GetParentType() == CT_OPERATOR) ? CT_FUNC_DEF : CT_FUNC_CALL);
+ }
+ }
+ LOG_FMT(LFCN, "%s(%d): Check for C++ function def, Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+
+ if (prev->IsNotNullChunk())
+ {
+ LOG_FMT(LFCN, "%s(%d): prev->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
+ __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(), get_token_name(prev->GetType()));
+ }
+
+ // Check for C++ function def
+ if ( pc->Is(CT_FUNC_CLASS_DEF)
+ || ( prev->IsNotNullChunk()
+ && ( prev->Is(CT_INV)
+ || prev->Is(CT_DC_MEMBER))))
+ {
+ Chunk *destr = Chunk::NullChunkPtr;
+
+ if (prev->Is(CT_INV))
+ {
+ // TODO: do we care that this is the destructor?
+ prev->SetType(CT_DESTRUCTOR);
+ pc->SetType(CT_FUNC_CLASS_DEF);
+
+ pc->SetParentType(CT_DESTRUCTOR);
+
+ destr = prev;
+ // Point to the item previous to the class name
+ prev = prev->GetPrevNcNnlNpp();
+ }
+
+ if (prev->Is(CT_DC_MEMBER))
+ {
+ prev = prev->GetPrevNcNnlNpp();
+
+ if (prev->IsNotNullChunk())
+ {
+ LOG_FMT(LFCN, "%s(%d): prev->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
+ __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(),
+ get_token_name(prev->GetType()));
+ prev = skip_template_prev(prev);
+ LOG_FMT(LFCN, "%s(%d): prev->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
+ __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(),
+ get_token_name(prev->GetType()));
+ prev = skip_attribute_prev(prev);
+ LOG_FMT(LFCN, "%s(%d): prev->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
+ __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(),
+ get_token_name(prev->GetType()));
+ }
+
+ if ( prev->Is(CT_WORD)
+ || prev->Is(CT_TYPE))
+ {
+ if (pc->GetStr().equals(prev->GetStr()))
+ {
+ LOG_FMT(LFCN, "%s(%d): pc->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(),
+ get_token_name(prev->GetType()));
+ pc->SetType(CT_FUNC_CLASS_DEF);
+ LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu - FOUND %sSTRUCTOR for '%s', type is %s\n",
+ __func__, __LINE__,
+ prev->GetOrigLine(), prev->GetOrigCol(),
+ (destr->IsNotNullChunk()) ? "DE" : "CON",
+ prev->Text(), get_token_name(prev->GetType()));
+
+ mark_cpp_constructor(pc);
+ return;
+ }
+ // Point to the item previous to the class name
+ prev = prev->GetPrevNcNnlNpp();
+ }
+ }
+ }
+
+ /*
+ * Determine if this is a function call or a function def/proto
+ * We check for level==1 to allow the case that a function prototype is
+ * wrapped in a macro: "MACRO(void foo(void));"
+ */
+ if ( pc->Is(CT_FUNC_CALL)
+ && ( pc->GetLevel() == pc->GetBraceLevel()
+ || pc->GetLevel() == 1)
+ && !pc->TestFlags(PCF_IN_ARRAY_ASSIGN))
+ {
+ bool isa_def = false;
+ bool hit_star = false;
+ LOG_FMT(LFCN, "%s(%d): pc->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(),
+ get_token_name(pc->GetType()));
+
+ if (prev->IsNullChunk())
+ {
+ LOG_FMT(LFCN, "%s(%d): Checking func call: prev is null chunk\n",
+ __func__, __LINE__);
+ }
+ else
+ {
+ LOG_FMT(LFCN, "%s(%d): Checking func call: prev->Text() '%s', prev->GetType() is %s\n",
+ __func__, __LINE__, prev->Text(), get_token_name(prev->GetType()));
+ }
+ // if (!chunk_ends_type(prev))
+ // {
+ // goto bad_ret_type;
+ // }
+
+ /*
+ * REVISIT:
+ * a function def can only occur at brace level, but not inside an
+ * assignment, structure, enum, or union.
+ * The close paren must be followed by an open brace, with an optional
+ * qualifier (const) in between.
+ * There can be all sorts of template stuff and/or '[]' in the type.
+ * This hack mostly checks that.
+ *
+ * Examples:
+ * foo->bar(maid); -- fcn call
+ * FOO * bar(); -- fcn proto or class variable
+ * FOO foo(); -- fcn proto or class variable
+ * FOO foo(1); -- class variable
+ * a = FOO * bar(); -- fcn call
+ * a.y = foo() * bar(); -- fcn call
+ * static const char * const fizz(); -- fcn def
+ */
+ while (prev->IsNotNullChunk())
+ {
+ LOG_FMT(LFCN, "%s(%d): next step with: prev orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text());
+
+ if (pc->GetParentType() == CT_FIXED)
+ {
+ isa_def = true;
+ }
+
+ if (prev->TestFlags(PCF_IN_PREPROC))
+ {
+ prev = prev->GetPrevNcNnlNpp();
+ continue;
+ }
+
+ // Some code slips an attribute between the type and function
+ if ( prev->Is(CT_FPAREN_CLOSE)
+ && prev->GetParentType() == CT_ATTRIBUTE)
+ {
+ prev = skip_attribute_prev(prev);
+ continue;
+ }
+
+ // skip const(TYPE)
+ if ( prev->Is(CT_PAREN_CLOSE)
+ && prev->GetParentType() == CT_D_CAST)
+ {
+ LOG_FMT(LFCN, "%s(%d): --> For sure a prototype or definition\n",
+ __func__, __LINE__);
+ isa_def = true;
+ break;
+ }
+
+ if (prev->GetParentType() == CT_DECLSPEC) // Issue 1289
+ {
+ prev = prev->GetOpeningParen();
+
+ if (prev->IsNotNullChunk())
+ {
+ prev = prev->GetPrev();
+ }
+
+ if (prev->Is(CT_DECLSPEC))
+ {
+ if (prev->IsNotNullChunk())
+ {
+ prev = prev->GetPrev();
+ }
+ }
+ }
+
+ // if it was determined that this could be a function definition
+ // but one of the preceding tokens is a CT_MEMBER than this is not a
+ // fcn def, issue #1466
+ if ( isa_def
+ && prev->Is(CT_MEMBER))
+ {
+ isa_def = false;
+ }
+
+ // get first chunk before: A::B::pc | this.B.pc | this->B->pc
+ if ( prev->Is(CT_DC_MEMBER)
+ || prev->Is(CT_MEMBER))
+ {
+ while ( prev->Is(CT_DC_MEMBER)
+ || prev->Is(CT_MEMBER))
+ {
+ prev = prev->GetPrevNcNnlNpp();
+
+ if ( prev->IsNullChunk()
+ || ( prev->IsNot(CT_WORD)
+ && prev->IsNot(CT_TYPE)
+ && prev->IsNot(CT_THIS)))
+ {
+ LOG_FMT(LFCN, "%s(%d): --? skipped MEMBER and landed on %s\n",
+ __func__, __LINE__, (prev->IsNullChunk()) ? "<null chunk>" : get_token_name(prev->GetType()));
+ break;
+ }
+ LOG_FMT(LFCN, "%s(%d): <skip> '%s'\n",
+ __func__, __LINE__, prev->Text());
+
+ // Issue #1112
+ // clarification: this will skip the CT_WORD, CT_TYPE or CT_THIS landing on either
+ // another CT_DC_MEMBER or CT_MEMBER or a token that indicates the context of the
+ // token in question; therefore, exit loop when not a CT_DC_MEMBER or CT_MEMBER
+ prev = prev->GetPrevNcNnlNpp();
+
+ if (prev->IsNullChunk())
+ {
+ LOG_FMT(LFCN, "%s(%d): prev is null chunk\n",
+ __func__, __LINE__);
+ }
+ else
+ {
+ LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text());
+ }
+ }
+
+ if (prev->IsNullChunk())
+ {
+ break;
+ }
+ }
+
+ // If we are on a TYPE or WORD, then this could be a proto or def
+ if ( prev->Is(CT_TYPE)
+ || prev->Is(CT_WORD))
+ {
+ if (!hit_star)
+ {
+ LOG_FMT(LFCN, "%s(%d): --> For sure a prototype or definition\n",
+ __func__, __LINE__);
+ isa_def = true;
+ break;
+ }
+ Chunk *prev_prev = prev->GetPrevNcNnlNpp();
+
+ if (!prev_prev->Is(CT_QUESTION)) // Issue #1753
+ {
+ LOG_FMT(LFCN, "%s(%d): --> maybe a proto/def\n",
+ __func__, __LINE__);
+
+ LOG_FMT(LFCN, "%s(%d): prev is '%s', orig line is %zu, orig col is %zu, type is %s, parent type is %s\n",
+ __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(),
+ get_token_name(prev->GetType()), get_token_name(prev->GetParentType()));
+ log_pcf_flags(LFCN, pc->GetFlags());
+ isa_def = true;
+ }
+ }
+
+ if (prev->IsPointerOperator())
+ {
+ hit_star = true;
+ }
+
+ if ( prev->IsNot(CT_OPERATOR)
+ && prev->IsNot(CT_TSQUARE)
+ && prev->IsNot(CT_ANGLE_CLOSE)
+ && prev->IsNot(CT_QUALIFIER)
+ && prev->IsNot(CT_TYPE)
+ && prev->IsNot(CT_WORD)
+ && !prev->IsPointerOperator())
+ {
+ LOG_FMT(LFCN, "%s(%d): --> Stopping on prev is '%s', orig line is %zu, orig col is %zu, type is %s\n",
+ __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(), get_token_name(prev->GetType()));
+
+ // certain tokens are unlikely to precede a prototype or definition
+ if ( prev->Is(CT_ARITH)
+ || prev->Is(CT_SHIFT)
+ || prev->Is(CT_ASSIGN)
+ || prev->Is(CT_COMMA)
+ || ( prev->Is(CT_STRING)
+ && prev->GetParentType() != CT_EXTERN) // fixes issue 1259
+ || prev->Is(CT_STRING_MULTI)
+ || prev->Is(CT_NUMBER)
+ || prev->Is(CT_NUMBER_FP)
+ || prev->Is(CT_FPAREN_OPEN)) // issue #1464
+ {
+ isa_def = false;
+ }
+ break;
+ }
+
+ // Skip over template and attribute stuff
+ if (prev->Is(CT_ANGLE_CLOSE))
+ {
+ prev = skip_template_prev(prev);
+ }
+ else
+ {
+ prev = prev->GetPrevNcNnlNpp();
+ }
+ }
+ //LOG_FMT(LFCN, " -- stopped on %s [%s]\n",
+ // prev->Text(), get_token_name(prev->GetType()));
+
+ // Fixes issue #1634
+ if (prev->IsParenClose())
+ {
+ Chunk *preproc = prev->GetNextNcNnl();
+
+ if (preproc->Is(CT_PREPROC))
+ {
+ size_t pp_level = preproc->GetPpLevel();
+
+ if (preproc->GetNextNcNnl()->Is(CT_PP_ELSE))
+ {
+ do
+ {
+ preproc = preproc->GetPrevNcNnlNi(); // Issue #2279
+
+ if (preproc->Is(CT_PP_IF))
+ {
+ preproc = preproc->GetPrevNcNnlNi(); // Issue #2279
+
+ if (preproc->GetPpLevel() == pp_level)
+ {
+ prev = preproc->GetPrevNcNnlNpp();
+ break;
+ }
+ }
+ } while (preproc->IsNotNullChunk());
+ }
+ }
+ }
+
+ if ( isa_def
+ && prev->IsNotNullChunk()
+ && ( ( prev->IsParenClose()
+ && prev->GetParentType() != CT_D_CAST
+ && prev->GetParentType() != CT_MACRO_OPEN // Issue #2726
+ && prev->GetParentType() != CT_MACRO_CLOSE)
+ || prev->Is(CT_ASSIGN)
+ || prev->Is(CT_RETURN)))
+ {
+ LOG_FMT(LFCN, "%s(%d): -- overriding DEF due to prev is '%s', type is %s\n",
+ __func__, __LINE__, prev->Text(), get_token_name(prev->GetType()));
+ isa_def = false;
+ }
+
+ // Fixes issue #1266, identification of a tuple return type in CS.
+ if ( !isa_def
+ && prev->Is(CT_PAREN_CLOSE)
+ && prev->GetNextNcNnl() == pc)
+ {
+ tmp = prev->GetOpeningParen();
+
+ while ( tmp->IsNotNullChunk() // Issue #2315
+ && tmp != prev)
+ {
+ if ( tmp->Is(CT_COMMA)
+ && tmp->GetLevel() == prev->GetLevel() + 1)
+ {
+ LOG_FMT(LFCN, "%s(%d): -- overriding call due to tuple return type -- prev is '%s', type is %s\n",
+ __func__, __LINE__, prev->Text(), get_token_name(prev->GetType()));
+ isa_def = true;
+ break;
+ }
+ tmp = tmp->GetNextNcNnl();
+ }
+ }
+
+ if (isa_def)
+ {
+ LOG_FMT(LFCN, "%s(%d): pc is '%s', orig line is %zu, orig col is %zu, type is %s\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+ LOG_FMT(LFCN, "%s(%d): (12) SET TO CT_FUNC_DEF: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc->SetType(CT_FUNC_DEF);
+
+ if (prev->IsNullChunk())
+ {
+ prev = Chunk::GetHead();
+ }
+
+ for (tmp = prev; tmp->IsNotNullChunk() && tmp != pc; tmp = tmp->GetNextNcNnlNpp())
+ {
+ LOG_FMT(LFCN, "%s(%d): Text() is '%s', type is %s\n",
+ __func__, __LINE__, tmp->Text(), get_token_name(tmp->GetType()));
+ make_type(tmp);
+ }
+ }
+ }
+
+ if (pc->IsNot(CT_FUNC_DEF))
+ {
+ LOG_FMT(LFCN, "%s(%d): Detected type %s, Text() is '%s', on orig line %zu, orig col %zu\n",
+ __func__, __LINE__, get_token_name(pc->GetType()),
+ pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+
+ tmp = flag_parens(next, PCF_IN_FCN_CALL, CT_FPAREN_OPEN, CT_FUNC_CALL, false);
+
+ if ( tmp->IsNotNullChunk()
+ && tmp->Is(CT_BRACE_OPEN)
+ && tmp->GetParentType() != CT_DOUBLE_BRACE)
+ {
+ set_paren_parent(tmp, pc->GetType());
+ }
+ return;
+ }
+ /*
+ * We have a function definition or prototype
+ * Look for a semicolon or a brace open after the close parenthesis to figure
+ * out whether this is a prototype or definition
+ */
+
+ // See if this is a prototype or implementation
+
+ // FIXME: this doesn't take the old K&R parameter definitions into account
+
+ // Scan tokens until we hit a brace open (def) or semicolon (proto)
+ tmp = paren_close->GetNextNcNnl();
+
+ while (tmp->IsNotNullChunk())
+ {
+ // Only care about brace or semicolon on the same level
+ if (tmp->GetLevel() < pc->GetLevel())
+ {
+ // No semicolon - guess that it is a prototype
+ pc->ResetFlagBits(PCF_VAR_1ST_DEF);
+ pc->SetType(CT_FUNC_PROTO);
+ break;
+ }
+ else if (tmp->GetLevel() == pc->GetLevel())
+ {
+ if (tmp->Is(CT_BRACE_OPEN))
+ {
+ // its a function def for sure
+ break;
+ }
+ else if (tmp->IsSemicolon())
+ {
+ // Set the parent for the semicolon for later
+ semi = tmp;
+ pc->ResetFlagBits(PCF_VAR_1ST_DEF);
+ pc->SetType(CT_FUNC_PROTO);
+ LOG_FMT(LFCN, "%s(%d): 2) Marked Text() is '%s', as FUNC_PROTO on orig line %zu, orig col %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ break;
+ }
+ else if (pc->Is(CT_COMMA))
+ {
+ pc->SetType(CT_FUNC_CTOR_VAR);
+ LOG_FMT(LFCN, "%s(%d): 2) Marked Text() is '%s', as FUNC_CTOR_VAR on orig line %zu, orig col %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ break;
+ }
+ }
+ tmp = tmp->GetNextNcNnl();
+ }
+
+ /*
+ * C++ syntax is wacky. We need to check to see if a prototype is really a
+ * variable definition with parameters passed into the constructor.
+ * Unfortunately, without being able to accurately determine if an
+ * identifier is a type (which would require us to more or less be a full
+ * compiler), the only mostly reliable way to do so is to guess that it is
+ * a constructor variable if inside a function body and scan the 'parameter
+ * list' for items that are not allowed in a prototype. We search backwards
+ * and checking the parent of the containing open braces. If the parent is a
+ * class or namespace, then it probably is a prototype.
+ */
+ if ( language_is_set(LANG_CPP)
+ && pc->Is(CT_FUNC_PROTO)
+ && pc->GetParentType() != CT_OPERATOR)
+ {
+ LOG_FMT(LFPARAM, "%s(%d):", __func__, __LINE__);
+ LOG_FMT(LFPARAM, " checking '%s' for constructor variable %s %s\n",
+ pc->Text(),
+ get_token_name(paren_open->GetType()),
+ get_token_name(paren_close->GetType()));
+
+ /*
+ * Check the token at the start of the statement. If it's 'extern', we
+ * definitely have a function prototype.
+ */
+ tmp = pc;
+
+ while ( tmp->IsNotNullChunk()
+ && !tmp->TestFlags(PCF_STMT_START))
+ {
+ tmp = tmp->GetPrevNcNnlNi(); // Issue #2279
+ }
+ const bool is_extern = ( tmp->IsNotNullChunk()
+ && tmp->GetStr().equals("extern"));
+
+ /*
+ * Scan the parameters looking for:
+ * - constant strings
+ * - numbers
+ * - non-type fields
+ * - function calls
+ */
+ Chunk *ref = paren_open->GetNextNcNnl();
+ Chunk *tmp2;
+ bool is_param = true;
+ tmp = ref;
+
+ while (tmp != paren_close)
+ {
+ tmp2 = tmp->GetNextNcNnl();
+
+ if ( tmp->Is(CT_COMMA)
+ && (tmp->GetLevel() == (paren_open->GetLevel() + 1)))
+ {
+ if (!can_be_full_param(ref, tmp))
+ {
+ is_param = false;
+ break;
+ }
+ ref = tmp2;
+ }
+ tmp = tmp2;
+ }
+
+ if ( !is_extern
+ && is_param
+ && ref != tmp)
+ {
+ if (!can_be_full_param(ref, tmp))
+ {
+ is_param = false;
+ }
+ }
+
+ if ( !is_extern
+ && !is_param)
+ {
+ pc->SetType(CT_FUNC_CTOR_VAR);
+ LOG_FMT(LFCN, "%s(%d): 3) Marked Text() '%s' as FUNC_CTOR_VAR on orig line %zu, orig col %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ }
+ else if (pc->GetBraceLevel() > 0)
+ {
+ Chunk *br_open = pc->GetPrevType(CT_BRACE_OPEN, pc->GetBraceLevel() - 1);
+
+ if ( br_open->IsNotNullChunk()
+ && br_open->GetParentType() != CT_EXTERN
+ && br_open->GetParentType() != CT_NAMESPACE)
+ {
+ // Do a check to see if the level is right
+ prev = pc->GetPrevNcNnlNi(); // Issue #2279
+
+ if ( !prev->IsString("*")
+ && !prev->IsString("&"))
+ {
+ Chunk *p_op = pc->GetPrevType(CT_BRACE_OPEN, pc->GetBraceLevel() - 1);
+
+ if ( p_op->IsNotNullChunk()
+ && p_op->GetParentType() != CT_CLASS
+ && p_op->GetParentType() != CT_STRUCT
+ && p_op->GetParentType() != CT_NAMESPACE)
+ {
+ pc->SetType(CT_FUNC_CTOR_VAR);
+ LOG_FMT(LFCN, "%s(%d): 4) Marked Text() is'%s', as FUNC_CTOR_VAR on orig line %zu, orig col %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ }
+ }
+ }
+ }
+ }
+
+ if (semi->IsNotNullChunk())
+ {
+ semi->SetParentType(pc->GetType());
+ }
+
+ // Issue # 1403, 2152
+ if (paren_open->GetPrev()->Is(CT_FUNC_CTOR_VAR))
+ {
+ flag_parens(paren_open, PCF_IN_FCN_CTOR, CT_FPAREN_OPEN, pc->GetType(), false);
+ }
+ else
+ {
+ // see also Issue #2103
+ Chunk *funtionName = paren_open->GetPrevNcNnl(); // Issue #3967
+ Chunk *a = funtionName->GetPrevNcNnl();
+
+ while (a->IsNotNullChunk())
+ {
+ LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s', type is %s, parent type is %s\n",
+ __func__, __LINE__, a->GetOrigLine(), a->GetOrigCol(), a->Text(),
+ get_token_name(a->GetType()), get_token_name(a->GetParentType()));
+ log_pcf_flags(LFCN, a->GetFlags());
+
+ if ( a->Is(CT_ARITH)
+ && (strcmp(a->Text(), "&") == 0))
+ {
+ a->SetType(CT_BYREF);
+ }
+
+ if (a->GetParentType() == CT_NONE)
+ {
+ a->SetParentType(CT_FUNC_DEF);
+ }
+ // if token has PCF_STMT_START set, exit the loop
+ PcfFlags f = a->GetFlags();
+ PcfFlags u = f & PCF_STMT_START;
+ bool b = u != E_PcfFlag::PCF_NONE;
+
+ if (b)
+ {
+ break;
+ }
+ a = a->GetPrevNcNnl();
+ }
+ flag_parens(paren_open, PCF_IN_FCN_DEF, CT_FPAREN_OPEN, pc->GetType(), false);
+ }
+
+ if (pc->Is(CT_FUNC_CTOR_VAR))
+ {
+ pc->SetFlagBits(PCF_VAR_1ST_DEF);
+ return;
+ }
+
+ if (next->Is(CT_TSQUARE))
+ {
+ next = next->GetNextNcNnl();
+
+ if (next->IsNullChunk())
+ {
+ return;
+ }
+ }
+ // Mark parameters and return type
+ fix_fcn_def_params(next);
+ mark_function_return_type(pc, pc->GetPrevNcNnlNi(), pc->GetType()); // Issue #2279
+
+ /* mark C# where chunk */
+ if ( language_is_set(LANG_CS)
+ && ( (pc->Is(CT_FUNC_DEF))
+ || (pc->Is(CT_FUNC_PROTO))))
+ {
+ tmp = paren_close->GetNextNcNnl();
+ PcfFlags in_where_spec_flags = PCF_NONE;
+
+ while ( tmp->IsNotNullChunk()
+ && tmp->IsNot(CT_BRACE_OPEN)
+ && tmp->IsNot(CT_SEMICOLON))
+ {
+ mark_where_chunk(tmp, pc->GetType(), tmp->GetFlags() | in_where_spec_flags);
+ in_where_spec_flags = tmp->GetFlags() & PCF_IN_WHERE_SPEC;
+
+ tmp = tmp->GetNextNcNnl();
+ }
+ }
+
+ // Find the brace pair and set the parent
+ if (pc->Is(CT_FUNC_DEF))
+ {
+ tmp = paren_close->GetNextNcNnl();
+
+ while ( tmp->IsNotNullChunk()
+ && tmp->IsNot(CT_BRACE_OPEN))
+ {
+ LOG_FMT(LFCN, "%s(%d): (13) SET TO CT_FUNC_DEF: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
+ tmp->SetParentType(CT_FUNC_DEF);
+
+ if (!tmp->IsSemicolon())
+ {
+ tmp->SetFlagBits(PCF_OLD_FCN_PARAMS);
+ }
+ tmp = tmp->GetNextNcNnl();
+ }
+
+ if (tmp->Is(CT_BRACE_OPEN))
+ {
+ LOG_FMT(LFCN, "%s(%d): (14) SET TO CT_FUNC_DEF: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
+ tmp->SetParentType(CT_FUNC_DEF);
+ tmp = tmp->GetClosingParen();
+
+ if (tmp->IsNotNullChunk())
+ {
+ LOG_FMT(LFCN, "%s(%d): (15) SET TO CT_FUNC_DEF: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
+ tmp->SetParentType(CT_FUNC_DEF);
+ }
+ }
+ }
+} // mark_function
+
+
+bool mark_function_type(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LFTYPE, "%s(%d): type %s, text '%s' @ orig line %zu, orig col %zu\n",
+ __func__, __LINE__, get_token_name(pc->GetType()), pc->Text(),
+ pc->GetOrigLine(), pc->GetOrigCol());
+
+ size_t star_count = 0;
+ size_t word_count = 0;
+ Chunk *ptrcnk = Chunk::NullChunkPtr;
+ Chunk *tmp;
+ Chunk *apo;
+ Chunk *apc;
+ Chunk *aft;
+ bool anon = false;
+ E_Token pt, ptp;
+
+ // Scan backwards across the name, which can only be a word and single star
+ Chunk *varcnk = pc->GetPrevNcNnlNi(); // Issue #2279
+
+ varcnk = varcnk->GetPrevNbsb();
+
+ if ( varcnk->IsNotNullChunk()
+ && !varcnk->IsWord())
+ {
+ if ( language_is_set(LANG_OC)
+ && varcnk->IsString("^")
+ && varcnk->GetPrevNcNnlNi()->IsParenOpen()) // Issue #2279
+ {
+ // anonymous ObjC block type -- RTYPE (^)(ARGS)
+ anon = true;
+ }
+ else
+ {
+ LOG_FMT(LFTYPE, "%s(%d): not a word: text '%s', type %s, @ orig line %zu:, orig col %zu\n",
+ __func__, __LINE__, varcnk->Text(), get_token_name(varcnk->GetType()),
+ varcnk->GetOrigLine(), varcnk->GetOrigCol());
+ goto nogo_exit;
+ }
+ }
+ apo = pc->GetNextNcNnl();
+
+ if (apo->IsNullChunk())
+ {
+ return(false);
+ }
+ apc = apo->GetClosingParen();
+
+ if ( apc->IsNotNullChunk()
+ && ( !apo->IsParenOpen()
+ || ((apc = apo->GetClosingParen())->IsNullChunk())))
+ {
+ LOG_FMT(LFTYPE, "%s(%d): not followed by parens\n", __func__, __LINE__);
+ goto nogo_exit;
+ }
+ aft = apc->GetNextNcNnl();
+
+ if (aft->Is(CT_BRACE_OPEN))
+ {
+ pt = CT_FUNC_DEF;
+ }
+ else if ( aft->Is(CT_SEMICOLON)
+ || aft->Is(CT_ASSIGN))
+ {
+ pt = CT_FUNC_PROTO;
+ }
+ else
+ {
+ LOG_FMT(LFTYPE, "%s(%d): not followed by '{' or ';'\n", __func__, __LINE__);
+ goto nogo_exit;
+ }
+ ptp = pc->TestFlags(PCF_IN_TYPEDEF) ? CT_FUNC_TYPE : CT_FUNC_VAR;
+
+ tmp = pc;
+
+ while ((tmp = tmp->GetPrevNcNnlNi())->IsNotNullChunk()) // Issue #2279
+ {
+ tmp = tmp->GetPrevNbsb();
+ LOG_FMT(LFTYPE, " -- type is %s, %s on orig line %zu, orig col is %zu",
+ get_token_name(tmp->GetType()), tmp->Text(),
+ tmp->GetOrigLine(), tmp->GetOrigCol());
+
+ if (tmp->IsSemicolon())
+ {
+ // Stop if we found previous statement. Make 'tmp' null to make sure
+ // chunk_ends_type() does not start from the previous statement
+ LOG_FMT(LFTYPE, " -- found semicolon (break)\n");
+ tmp = Chunk::NullChunkPtr;
+ break;
+ }
+ else if ( tmp->IsStar()
+ || tmp->Is(CT_PTR_TYPE)
+ || tmp->Is(CT_CARET))
+ {
+ star_count++;
+ ptrcnk = tmp;
+ LOG_FMT(LFTYPE, " -- PTR_TYPE\n");
+ }
+ else if ( tmp->IsWord()
+ || tmp->Is(CT_WORD)
+ || tmp->Is(CT_TYPE))
+ {
+ word_count++;
+ LOG_FMT(LFTYPE, " -- TYPE(%s)\n", tmp->Text());
+ }
+ else if (tmp->Is(CT_DC_MEMBER))
+ {
+ word_count = 0;
+ LOG_FMT(LFTYPE, " -- :: reset word_count\n");
+ }
+ else if (tmp->IsString("("))
+ {
+ LOG_FMT(LFTYPE, " -- open paren (break)\n");
+ break;
+ }
+ else
+ {
+ LOG_FMT(LFTYPE, " -- unexpected token: type is %s, Text() '%s', on orig line %zu, orig col %zu\n",
+ get_token_name(tmp->GetType()), tmp->Text(),
+ tmp->GetOrigLine(), tmp->GetOrigCol());
+ goto nogo_exit;
+ }
+ }
+
+ // Fixes #issue 1577
+ // Allow word count 2 in case of function pointer declaration.
+ // Ex: bool (__stdcall* funcptr)(int, int);
+ if ( star_count > 1
+ || ( word_count > 1
+ && !( word_count == 2
+ && ptp == CT_FUNC_VAR))
+ || ((star_count + word_count) == 0))
+ {
+ LOG_FMT(LFTYPE, "%s(%d): bad counts word: %zu, star: %zu\n",
+ __func__, __LINE__, word_count, star_count);
+ goto nogo_exit;
+ }
+
+ // make sure what appears before the first open paren can be a return type
+ if (!chunk_ends_type(tmp->GetPrevNcNnlNi())) // Issue #2279
+ {
+ goto nogo_exit;
+ }
+
+ if (ptrcnk->IsNotNullChunk())
+ {
+ ptrcnk->SetType(CT_PTR_TYPE);
+ }
+
+ if (!anon)
+ {
+ if (pc->TestFlags(PCF_IN_TYPEDEF))
+ {
+ varcnk->SetType(CT_FUNC_TYPE); // Issue #3402
+ }
+ else
+ {
+ varcnk->SetType(CT_FUNC_VAR);
+ varcnk->SetFlagBits(PCF_VAR_1ST_DEF);
+ }
+ }
+ pc->SetType(CT_TPAREN_CLOSE);
+ pc->SetParentType(ptp);
+
+ apo->SetType(CT_FPAREN_OPEN);
+ apo->SetParentType(pt);
+ apc->SetType(CT_FPAREN_CLOSE);
+ apc->SetParentType(pt);
+ fix_fcn_def_params(apo);
+ flag_parens(apo, PCF_IN_FCN_DEF, CT_NONE, pt, false);
+
+ if (aft->IsSemicolon())
+ {
+ aft->SetParentType(aft->TestFlags(PCF_IN_TYPEDEF) ? CT_TYPEDEF : CT_FUNC_VAR);
+ }
+ else if (aft->Is(CT_BRACE_OPEN))
+ {
+ flag_parens(aft, PCF_NONE, CT_NONE, pt, false);
+ }
+ // Step backwards to the previous open paren and mark everything a
+ tmp = pc;
+
+ while ((tmp = tmp->GetPrevNcNnlNi())->IsNotNullChunk()) // Issue #2279
+ {
+ LOG_FMT(LFTYPE, " ++ type is %s, Text() '%s', on orig line %zu, orig col %zu\n",
+ get_token_name(tmp->GetType()), tmp->Text(),
+ tmp->GetOrigLine(), tmp->GetOrigCol());
+
+ if (*tmp->GetStr().c_str() == '(')
+ {
+ if (!pc->TestFlags(PCF_IN_TYPEDEF))
+ {
+ tmp->SetFlagBits(PCF_VAR_1ST_DEF);
+ }
+ tmp->SetType(CT_TPAREN_OPEN);
+ tmp->SetParentType(ptp);
+
+ tmp = tmp->GetPrevNcNnlNi(); // Issue #2279
+
+ if ( tmp->Is(CT_FUNCTION)
+ || tmp->Is(CT_FUNC_CALL)
+ || tmp->Is(CT_FUNC_CALL_USER)
+ || tmp->Is(CT_FUNC_DEF)
+ || tmp->Is(CT_FUNC_PROTO))
+ {
+ tmp->SetType(CT_TYPE);
+ tmp->ResetFlagBits(PCF_VAR_1ST_DEF);
+ }
+ mark_function_return_type(varcnk, tmp, ptp);
+ break;
+ }
+ }
+ return(true);
+
+nogo_exit:
+ tmp = pc->GetNextNcNnl();
+
+ if (tmp->IsParenOpen())
+ {
+ LOG_FMT(LFTYPE, "%s(%d): setting FUNC_CALL on orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol());
+ flag_parens(tmp, PCF_IN_FCN_DEF, CT_FPAREN_OPEN, CT_FUNC_CALL, false);
+ }
+ return(false);
+} // mark_function_type
+
+
+void mark_lvalue(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc->TestFlags(PCF_IN_PREPROC))
+ {
+ return;
+ }
+
+ for (Chunk *prev = pc->GetPrevNcNnlNi(); // Issue #2279
+ prev->IsNotNullChunk();
+ prev = prev->GetPrevNcNnlNi()) // Issue #2279
+ {
+ if ( prev->GetLevel() < pc->GetLevel()
+ || prev->Is(CT_ACCESS_COLON)
+ || prev->Is(CT_ASSIGN)
+ || prev->Is(CT_BOOL)
+ || prev->Is(CT_COMMA)
+ || prev->IsCppInheritanceAccessSpecifier()
+ || prev->IsSemicolon()
+ || prev->IsString("(")
+ || prev->IsString("{")
+ || prev->IsString("[")
+ || prev->TestFlags(PCF_IN_PREPROC)
+ || prev->GetParentType() == CT_NAMESPACE
+ || prev->GetParentType() == CT_TEMPLATE)
+ {
+ break;
+ }
+ prev->SetFlagBits(PCF_LVALUE);
+
+ if ( prev->GetLevel() == pc->GetLevel()
+ && prev->IsString("&"))
+ {
+ make_type(prev);
+ }
+ }
+} // mark_lvalue
+
+
+void mark_struct_union_body(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *pc = start;
+
+ while ( pc->IsNotNullChunk()
+ && pc->GetLevel() >= start->GetLevel()
+ && !( pc->GetLevel() == start->GetLevel()
+ && pc->Is(CT_BRACE_CLOSE)))
+ {
+ if ( pc->Is(CT_BRACE_OPEN)
+ || pc->Is(CT_BRACE_CLOSE)
+ || pc->Is(CT_SEMICOLON))
+ {
+ pc = pc->GetNextNcNnl();
+
+ if (pc->IsNullChunk())
+ {
+ break;
+ }
+ }
+
+ if (pc->Is(CT_ALIGN))
+ {
+ pc = skip_align(pc); // "align(x)" or "align(x):"
+
+ if (pc->IsNullChunk())
+ {
+ break;
+ }
+ }
+ else if (pc->Is(CT_AMP))
+ {
+ pc = skip_expression(pc);
+ }
+ else
+ {
+ pc = fix_variable_definition(pc);
+
+ if (pc->IsNullChunk())
+ {
+ break;
+ }
+ }
+ }
+} // mark_struct_union_body
+
+
+void mark_template_func(Chunk *pc, Chunk *pc_next)
+{
+ LOG_FUNC_ENTRY();
+
+ // We know angle_close must be there...
+ Chunk *angle_close = pc_next->GetNextType(CT_ANGLE_CLOSE, pc->GetLevel());
+ Chunk *after = angle_close->GetNextNcNnl();
+
+ if (after->IsNotNullChunk())
+ {
+ if (after->IsString("("))
+ {
+ if (angle_close->TestFlags(PCF_IN_FCN_CALL))
+ {
+ LOG_FMT(LTEMPFUNC, "%s(%d): marking '%s' in line %zu as a FUNC_CALL\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine());
+ LOG_FMT(LFCN, "%s(%d): (16) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc->SetType(CT_FUNC_CALL);
+ flag_parens(after, PCF_IN_FCN_CALL, CT_FPAREN_OPEN, CT_FUNC_CALL, false);
+ }
+ else
+ {
+ /*
+ * Might be a function def. Must check what is before the template:
+ * Func call:
+ * BTree.Insert(std::pair<int, double>(*it, double(*it) + 1.0));
+ * a = Test<int>(j);
+ * std::pair<int, double>(*it, double(*it) + 1.0));
+ */
+
+ LOG_FMT(LTEMPFUNC, "%s(%d): marking '%s' in line %zu as a FUNC_CALL 2\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine());
+ // its a function!!!
+ LOG_FMT(LFCN, "%s(%d): (17) SET TO CT_FUNC_CALL: orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ pc->SetType(CT_FUNC_CALL);
+ mark_function(pc);
+ }
+ }
+ else if (after->Is(CT_WORD))
+ {
+ // its a type!
+ pc->SetType(CT_TYPE);
+ pc->SetFlagBits(PCF_VAR_TYPE);
+ after->SetFlagBits(PCF_VAR_DEF);
+ }
+ }
+} // mark_template_func
+
+
+Chunk *mark_variable_definition(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ if (start->IsNullChunk())
+ {
+ return(Chunk::NullChunkPtr);
+ }
+ Chunk *pc = start;
+ PcfFlags flags = PCF_VAR_1ST_DEF;
+
+ LOG_FMT(LVARDEF, "%s(%d): orig line %zu, orig col %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(),
+ get_token_name(pc->GetType()));
+
+ // Issue #596
+ bool bit_field_colon_is_present = false;
+
+ while (go_on(pc, start))
+ {
+ if ( pc->Is(CT_WORD)
+ || pc->Is(CT_FUNC_CTOR_VAR))
+ {
+ auto const orig_flags = pc->GetFlags();
+
+ if (!pc->TestFlags(PCF_IN_ENUM))
+ {
+ pc->SetFlagBits(flags);
+ }
+ flags &= ~PCF_VAR_1ST;
+ LOG_FMT(LVARDEF, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', set PCF_VAR_1ST\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+
+ LOG_FMT(LVARDEF,
+ "%s(%d): orig line is %zu, marked Text() '%s'[%s]\n"
+ " in orig col %zu, flags: %s -> %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->Text(),
+ get_token_name(pc->GetType()), pc->GetOrigCol(),
+ pcf_flags_str(orig_flags).c_str(),
+ pcf_flags_str(pc->GetFlags()).c_str());
+ }
+ else if ( !bit_field_colon_is_present // Issue #2689
+ && ( pc->IsStar()
+ || pc->IsMsRef()))
+ {
+ pc->SetType(CT_PTR_TYPE);
+ }
+ else if (pc->IsAddress())
+ {
+ pc->SetType(CT_BYREF);
+ }
+ else if ( pc->Is(CT_SQUARE_OPEN)
+ || pc->Is(CT_ASSIGN))
+ {
+ pc = skip_expression(pc);
+ continue;
+ }
+ else if (pc->Is(CT_COLON))
+ {
+ bit_field_colon_is_present = true; // Issue #2689
+ }
+ pc = pc->GetNextNcNnl();
+ }
+ return(pc);
+} // mark_variable_definition
+
+
+void mark_variable_stack(ChunkStack &cs, log_sev_t sev)
+{
+ UNUSED(sev);
+ LOG_FUNC_ENTRY();
+
+ // throw out the last word and mark the rest
+ Chunk *var_name = cs.Pop_Back();
+
+ if ( var_name->IsNotNullChunk()
+ && var_name->GetPrev()->IsNotNullChunk()
+ && var_name->GetPrev()->GetType() == CT_DC_MEMBER)
+ {
+ cs.Push_Back(var_name);
+ }
+
+ if (var_name->IsNotNullChunk())
+ {
+ LOG_FMT(LFCNP, "%s(%d): parameter on orig line %zu, orig col %zu:\n",
+ __func__, __LINE__, var_name->GetOrigLine(), var_name->GetOrigCol());
+
+ size_t word_cnt = 0;
+ Chunk *word_type;
+
+ while ((word_type = cs.Pop_Back())->IsNotNullChunk())
+ {
+ if ( word_type->Is(CT_WORD)
+ || word_type->Is(CT_TYPE))
+ {
+ LOG_FMT(LFCNP, "%s(%d): parameter on orig line %zu, orig col %zu: <%s> as TYPE\n",
+ __func__, __LINE__, var_name->GetOrigLine(), var_name->GetOrigCol(), word_type->Text());
+ word_type->SetType(CT_TYPE);
+ word_type->SetFlagBits(PCF_VAR_TYPE);
+ }
+ word_cnt++;
+ }
+
+ if (var_name->Is(CT_WORD))
+ {
+ if (word_cnt > 0)
+ {
+ LOG_FMT(LFCNP, "%s(%d): parameter on orig line %zu, orig col %zu: <%s> as VAR\n",
+ __func__, __LINE__, var_name->GetOrigLine(), var_name->GetOrigCol(), var_name->Text());
+ var_name->SetFlagBits(PCF_VAR_DEF);
+ }
+ else
+ {
+ LOG_FMT(LFCNP, "%s(%d): parameter on orig line %zu, orig col %zu: <%s> as TYPE\n",
+ __func__, __LINE__, var_name->GetOrigLine(), var_name->GetOrigCol(), var_name->Text());
+ var_name->SetType(CT_TYPE);
+ var_name->SetFlagBits(PCF_VAR_TYPE);
+ }
+ }
+ }
+} // mark_variable_stack
+
+
+PcfFlags mark_where_chunk(Chunk *pc, E_Token parent_type, PcfFlags flags)
+{
+ /* TODO: should have options to control spacing around the ':' as well as newline ability for the
+ * constraint clauses (should it break up a 'where A : B where C : D' on the same line? wrap? etc.) */
+
+ if (pc->Is(CT_WHERE))
+ {
+ pc->SetType(CT_WHERE_SPEC);
+ pc->SetParentType(parent_type);
+ flags |= PCF_IN_WHERE_SPEC;
+ LOG_FMT(LFTOR, "%s: where-spec on line %zu\n",
+ __func__, pc->GetOrigLine());
+ }
+ else if (flags.test(PCF_IN_WHERE_SPEC))
+ {
+ if (pc->IsString(":"))
+ {
+ pc->SetType(CT_WHERE_COLON);
+ LOG_FMT(LFTOR, "%s: where-spec colon on line %zu\n",
+ __func__, pc->GetOrigLine());
+ }
+ else if (pc->IsClassOrStruct())
+ {
+ /* class/struct inside of a where-clause confuses parser for indentation; set it as a word so it looks like the rest */
+ pc->SetType(CT_WORD);
+ }
+ }
+
+ if (flags.test(PCF_IN_WHERE_SPEC))
+ {
+ pc->SetFlagBits(PCF_IN_WHERE_SPEC);
+ }
+ return(flags);
+} // mark_where_chunk
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_fix_mark.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_fix_mark.h
new file mode 100644
index 00000000..f61aa7fb
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_fix_mark.h
@@ -0,0 +1,196 @@
+/**
+ * @file combine_fix_mark.h
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ * extract from combine.cpp
+ */
+
+#ifndef COMBINE_FIX_MARK_H_INCLUDED
+#define COMBINE_FIX_MARK_H_INCLUDED
+
+#include "ChunkStack.h"
+
+
+/**
+ * Checks to see if the current paren is part of a cast.
+ * We already verified that this doesn't follow function, TYPE, IF, FOR,
+ * SWITCH, or WHILE and is followed by WORD, TYPE, STRUCT, ENUM, or UNION.
+ *
+ * @param start Pointer to the open paren
+ */
+void fix_casts(Chunk *start);
+
+
+/**
+ * Simply change any STAR to PTR_TYPE and WORD to TYPE
+ *
+ * @param start points to the open paren
+ */
+void fix_fcn_def_params(Chunk *start);
+
+
+/**
+ * CT_TYPE_CAST follows this pattern:
+ * dynamic_cast<...>(...)
+ *
+ * Mark everything between the <> as a type and set the paren parent
+ */
+void fix_type_cast(Chunk *start);
+
+
+/**
+ * We are on a typedef.
+ * If the next word is not enum/union/struct, then the last word before the
+ * next ',' or ';' or '__attribute__' is a type.
+ *
+ * typedef [type...] [*] type [, [*]type] ;
+ * typedef <return type>([*]func)();
+ * typedef <return type>([*]func)(params);
+ * typedef <return type>(__stdcall *func)(); Bug # 633 MS-specific extension
+ * include the config-file "test/config/MS-calling_conventions.cfg"
+ * typedef <return type>func(params);
+ * typedef <enum/struct/union> [type] [*] type [, [*]type] ;
+ * typedef <enum/struct/union> [type] { ... } [*] type [, [*]type] ;
+ */
+void fix_typedef(Chunk *start);
+
+
+/**
+ * We are on the start of a sequence that could be a variable definition
+ * - FPAREN_OPEN (parent == CT_FOR)
+ * - BRACE_OPEN
+ * - SEMICOLON
+ */
+Chunk *fix_variable_definition(Chunk *start);
+
+
+void mark_cpp_constructor(Chunk *pc);
+
+
+/**
+ * Mark all chunks belonging to a C++ lambda expression
+ *
+ * @param square_open points to a chunk of type CT_SQUARE_OPEN, and the parent type is
+ * assumed to have already been assigned the value CT_CPP_LAMBDA;
+ * under this assumption, the function marks all chunks as PCF_IN_LAMBDA
+ * until the corresponding closing CT_BRACE_CLOSE (with parent type
+ * CT_CPP_LAMBDA) is encountered
+ */
+void mark_cpp_lambda(Chunk *square_open);
+
+
+/**
+ * Marks statement starts in a macro body.
+ * REVISIT: this may already be done
+ */
+void mark_define_expressions();
+
+
+/**
+ * Just mark every CT_WORD until a semicolon as CT_SQL_WORD.
+ * Adjust the levels if pc is CT_SQL_BEGIN
+ */
+void mark_exec_sql(Chunk *pc);
+
+
+/**
+ * Changes the return type to type and set the parent.
+ *
+ * @param pc the last chunk of the return type
+ * @param parent_type CT_NONE (no change) or the new parent type
+ */
+void mark_function_return_type(Chunk *fname, Chunk *start, E_Token parent_type);
+
+
+/**
+ * We are on a function word. we need to:
+ * - find out if this is a call or prototype or implementation
+ * - mark return type
+ * - mark parameter types
+ * - mark brace pair
+ *
+ * REVISIT:
+ * This whole function is a mess.
+ * It needs to be reworked to eliminate duplicate logic and determine the
+ * function type more directly.
+ * 1. Skip to the close paren and see what is after.
+ * a. semicolon - function call or function proto
+ * b. open brace - function call (ie, list_for_each) or function def
+ * c. open paren - function type or chained function call
+ * d. qualifier - function def or proto, continue to semicolon or open brace
+ * 2. Examine the 'parameters' to see if it can be a proto/def
+ * 3. Examine what is before the function name to see if it is a proto or call
+ * Constructor/destructor detection should have already been done when the
+ * 'class' token was encountered (see mark_class_ctor).
+ */
+void mark_function(Chunk *pc);
+
+
+/**
+ * Process a function type that is not in a typedef.
+ * pc points to the first close paren.
+ *
+ * void (*func)(params);
+ * const char * (*func)(params);
+ * const char * (^func)(params); -- Objective C
+ *
+ * @param pc Points to the first closing paren
+ *
+ * @return whether a function type was processed
+ */
+bool mark_function_type(Chunk *pc);
+
+
+/**
+ * Just hit an assign. Go backwards until we hit an open brace/paren/square or
+ * semicolon (TODO: other limiter?) and mark as a LValue.
+ */
+void mark_lvalue(Chunk *pc);
+
+
+/**
+ * Examines the stuff between braces { }.
+ * There should only be variable definitions and methods.
+ * Skip the methods, as they will get handled elsewhere.
+ */
+void mark_struct_union_body(Chunk *start);
+
+
+/**
+ * We are on a word followed by a angle open which is part of a template.
+ * If the angle close is followed by a open paren, then we are on a template
+ * function def or a template function call:
+ * Vector2<float>(...) [: ...[, ...]] { ... }
+ * Or we could be on a variable def if it's followed by a word:
+ * Renderer<rgb32> rend;
+ */
+void mark_template_func(Chunk *pc, Chunk *pc_next);
+
+
+/**
+ * We are on the first word of a variable definition.
+ * Mark all the variable names with PCF_VAR_1ST and PCF_VAR_DEF as appropriate.
+ * Also mark any '*' encountered as a CT_PTR_TYPE.
+ * Skip over []. Go until a ';' is hit.
+ *
+ * Example input:
+ * int a = 3, b, c = 2; ## called with 'a'
+ * foo_t f = {1, 2, 3}, g = {5, 6, 7}; ## called with 'f'
+ * struct {...} *a, *b; ## called with 'a' or '*'
+ * myclass a(4);
+ */
+Chunk *mark_variable_definition(Chunk *start);
+
+
+void mark_variable_stack(ChunkStack &cs, log_sev_t sev);
+
+
+/**
+ * TODO: add doc cmt
+ *
+ */
+PcfFlags mark_where_chunk(Chunk *pc, E_Token parent_type, PcfFlags flags);
+
+
+#endif /* COMBINE_FIX_MARK_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_labels.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_labels.cpp
new file mode 100644
index 00000000..3a26839b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_labels.cpp
@@ -0,0 +1,452 @@
+/**
+ * @file combine_labels.cpp
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ * extract from combine.h
+ */
+
+#include "combine_labels.h"
+
+#include "chunk.h"
+#include "cs_top_is_question.h"
+#include "unc_tools.h"
+#include "uncrustify.h"
+
+
+Chunk *chunk_get_next_local(Chunk *pc, E_Scope scope = E_Scope::ALL)
+{
+ Chunk *tmp = pc;
+
+ do
+ {
+ tmp = tmp->GetNext(scope);
+ } while ( tmp->IsNotNullChunk()
+ && ( tmp->IsComment()
+ || tmp->Is(CT_NOEXCEPT)));
+
+ return(tmp);
+}
+
+
+Chunk *chunk_get_prev_local(Chunk *pc, E_Scope scope = E_Scope::ALL)
+{
+ Chunk *tmp = pc;
+
+ do
+ {
+ tmp = tmp->GetPrev(scope);
+ } while ( tmp->IsNotNullChunk()
+ && ( tmp->IsCommentOrNewline()
+ || tmp->Is(CT_NOEXCEPT)));
+
+ return(tmp);
+}
+
+
+void combine_labels()
+{
+ LOG_FUNC_ENTRY();
+ bool hit_case = false;
+ bool hit_class = false;
+
+ cpd.unc_stage = unc_stage_e::COMBINE_LABELS;
+
+ // stack to handle nesting inside of OC messages, which reset the scope
+ ChunkStack cs;
+
+ Chunk *prev = Chunk::GetHead();
+
+ if (prev->IsNullChunk())
+ {
+ return;
+ }
+ Chunk *cur = prev->GetNextNc();
+
+ if (cur->IsNullChunk())
+ {
+ return;
+ }
+ Chunk *next = cur->GetNextNc();
+
+ // unlikely that the file will start with a label...
+ // prev cur next
+ while (next->IsNotNullChunk())
+ {
+ if (next->Is(CT_NEWLINE))
+ {
+ LOG_FMT(LFCN, "%s(%d): next orig line is %zu, orig col is %zu, <Newline>, nl is %zu\n",
+ __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->GetNlCount());
+ }
+ else if (next->Is(CT_VBRACE_OPEN))
+ {
+ LOG_FMT(LFCN, "%s(%d): next orig line is %zu, orig col is %zu, VBRACE_OPEN\n",
+ __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol());
+ }
+ else if (next->Is(CT_VBRACE_CLOSE))
+ {
+ LOG_FMT(LFCN, "%s(%d): next orig line is %zu, orig col is %zu, VBRACE_CLOSE\n",
+ __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol());
+ }
+ else
+ {
+ LOG_FMT(LFCN, "%s(%d): next orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->Text(), get_token_name(next->GetType()));
+ }
+ E_Token pt = next->GetParentType(); // Issue #4042
+
+ if ( pt == CT_UNION
+ && next->Is(CT_BRACE_OPEN))
+ {
+ Chunk *close_brace = next->GetClosingParen();
+ next = close_brace->GetNextNc();
+ continue;
+ }
+
+ if ( !next->TestFlags(PCF_IN_OC_MSG) // filter OC case of [self class] msg send
+ && ( next->Is(CT_CLASS)
+ || next->Is(CT_OC_CLASS)
+ || next->Is(CT_TEMPLATE)))
+ {
+ hit_class = true;
+ }
+
+ if ( next->IsSemicolon()
+ || next->Is(CT_BRACE_OPEN))
+ {
+ hit_class = false;
+ }
+
+ if ( prev->Is(CT_SQUARE_OPEN)
+ && prev->GetParentType() == CT_OC_MSG)
+ {
+ cs.Push_Back(prev);
+ }
+ else if ( next->Is(CT_SQUARE_CLOSE)
+ && next->GetParentType() == CT_OC_MSG)
+ {
+ // pop until we hit '['
+ while (!cs.Empty())
+ {
+ Chunk *t2 = cs.Top()->m_pc;
+ cs.Pop_Back();
+
+ if (t2->Is(CT_SQUARE_OPEN))
+ {
+ break;
+ }
+ }
+ }
+
+ if ( next->Is(CT_QUESTION)
+ && !next->TestFlags(PCF_IN_TEMPLATE))
+ {
+ cs.Push_Back(next);
+ }
+ else if (next->Is(CT_CASE))
+ {
+ if (cur->Is(CT_GOTO))
+ {
+ // handle "goto case x;"
+ next->SetType(CT_QUALIFIER);
+ }
+ else
+ {
+ hit_case = true;
+ }
+ }
+ else if ( next->Is(CT_COLON)
+ || ( next->Is(CT_OC_COLON)
+ && cs_top_is_question(cs, next->GetLevel())))
+ {
+ if (cur->Is(CT_DEFAULT))
+ {
+ cur->SetType(CT_CASE);
+ hit_case = true;
+ }
+
+ if ( cs_top_is_question(cs, next->GetLevel())
+ && !cur->Is(CT_OC_MSG_NAME)
+ && next->TestFlags(PCF_IN_CONDITIONAL)) // Issue #3558
+ {
+ //log_pcf_flags(LFCN, next->GetFlags());
+ next->SetType(CT_COND_COLON);
+ cs.Pop_Back();
+ }
+ else if (hit_case)
+ {
+ hit_case = false;
+ next->SetType(CT_CASE_COLON);
+ Chunk *tmp = next->GetNextNcNnlNpp(); // Issue #2150
+
+ if (tmp->Is(CT_BRACE_OPEN))
+ {
+ tmp->SetParentType(CT_CASE);
+ tmp = tmp->GetNextType(CT_BRACE_CLOSE, tmp->GetLevel());
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp->SetParentType(CT_CASE);
+ }
+ }
+
+ if ( cur->Is(CT_NUMBER)
+ && prev->Is(CT_ELLIPSIS))
+ {
+ Chunk *pre_elipsis = prev->GetPrevNcNnlNpp();
+
+ if (pre_elipsis->Is(CT_NUMBER))
+ {
+ prev->SetType(CT_CASE_ELLIPSIS);
+ }
+ }
+ }
+ else if (cur->TestFlags(PCF_IN_WHERE_SPEC))
+ {
+ /* leave colons in where-constraint clauses alone */
+ }
+ else
+ {
+ LOG_FMT(LFCN, "%s(%d): prev->Text() is '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol());
+ LOG_FMT(LFCN, "%s(%d): cur->Text() is '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, cur->Text(), cur->GetOrigLine(), cur->GetOrigCol());
+ LOG_FMT(LFCN, "%s(%d): next->Text() is '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, next->Text(), next->GetOrigLine(), next->GetOrigCol());
+ Chunk *nextprev = chunk_get_prev_local(next); // Issue #2279
+
+ if (nextprev->IsNullChunk())
+ {
+ return;
+ }
+
+ if (language_is_set(LANG_PAWN))
+ {
+ if ( cur->Is(CT_WORD)
+ || cur->Is(CT_BRACE_CLOSE))
+ {
+ E_Token new_type = CT_TAG;
+
+ Chunk *tmp = next->GetNextNc();
+
+ if (tmp->IsNullChunk())
+ {
+ return;
+ }
+
+ if ( prev->IsNewline()
+ && tmp->IsNewline())
+ {
+ new_type = CT_LABEL;
+ next->SetType(CT_LABEL_COLON);
+ }
+ else
+ {
+ next->SetType(CT_TAG_COLON);
+ }
+
+ if (cur->Is(CT_WORD))
+ {
+ cur->SetType(new_type);
+ }
+ }
+ }
+ else if (next->TestFlags(PCF_IN_ARRAY_ASSIGN))
+ {
+ next->SetType(CT_D_ARRAY_COLON);
+ }
+ else if (next->TestFlags(PCF_IN_FOR))
+ {
+ next->SetType(CT_FOR_COLON);
+ }
+ else if (next->TestFlags(PCF_OC_BOXED))
+ {
+ next->SetType(CT_OC_DICT_COLON);
+ }
+ else if (cur->Is(CT_WORD))
+ {
+ Chunk *tmp = next->GetNextNc(E_Scope::PREPROC);
+
+ // Issue #1187
+ if (tmp->IsNullChunk())
+ {
+ return;
+ }
+ LOG_FMT(LFCN, "%s(%d): orig line is %zu, orig col is %zu, tmp '%s': ",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(),
+ (tmp->Is(CT_NEWLINE)) ? "<Newline>" : tmp->Text());
+ log_pcf_flags(LFCN, tmp->GetFlags());
+
+ if (next->TestFlags(PCF_IN_FCN_CALL))
+ {
+ // Must be a macro thingy, assume some sort of label
+ next->SetType(CT_LABEL_COLON);
+ }
+ else if ( tmp->IsNullChunk()
+ || ( tmp->IsNot(CT_NUMBER)
+ && tmp->IsNot(CT_DECLTYPE)
+ && tmp->IsNot(CT_SIZEOF)
+ && tmp->GetParentType() != CT_SIZEOF
+ && !tmp->GetFlags().test_any(PCF_IN_STRUCT | PCF_IN_CLASS))
+ || tmp->Is(CT_NEWLINE))
+ {
+ /*
+ * the CT_SIZEOF isn't great - test 31720 happens to use a sizeof expr,
+ * but this really should be able to handle any constant expr
+ */
+ // Fix for #1242
+ // For MIDL_INTERFACE classes class name is tokenized as Label.
+ // Corrected the identification of Label in c style languages.
+ if ( language_is_set(LANG_C | LANG_CPP | LANG_CS)
+ && (!language_is_set(LANG_OC)))
+ {
+ Chunk *labelPrev = prev;
+
+ if (labelPrev->Is(CT_NEWLINE))
+ {
+ labelPrev = prev->GetPrevNcNnlNi(); // Issue #2279
+ }
+
+ if ( labelPrev->IsNotNullChunk()
+ && labelPrev->IsNot(CT_FPAREN_CLOSE))
+ {
+ cur->SetType(CT_LABEL);
+ next->SetType(CT_LABEL_COLON);
+ }
+ }
+ else
+ {
+ cur->SetType(CT_LABEL);
+ next->SetType(CT_LABEL_COLON);
+ }
+ }
+ else if (next->GetFlags().test_any(PCF_IN_STRUCT | PCF_IN_CLASS | PCF_IN_TYPEDEF))
+ {
+ next->SetType(CT_BIT_COLON);
+
+ Chunk *nnext = next->GetNext();
+
+ if (nnext->IsNullChunk())
+ {
+ return;
+ }
+
+ while ((nnext = nnext->GetNext())->IsNotNullChunk())
+ {
+ if (nnext->Is(CT_SEMICOLON))
+ {
+ break;
+ }
+
+ if (nnext->Is(CT_COLON))
+ {
+ nnext->SetType(CT_BIT_COLON);
+ }
+ }
+ }
+ }
+ else if (nextprev->Is(CT_FPAREN_CLOSE))
+ {
+ LOG_FMT(LFCN, "%s(%d): nextprev->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
+ __func__, __LINE__, nextprev->Text(), nextprev->GetOrigLine(), nextprev->GetOrigCol(),
+ get_token_name(nextprev->GetType()));
+ LOG_FMT(LFCN, "%s(%d): next->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
+ __func__, __LINE__, next->Text(), next->GetOrigLine(), next->GetOrigCol(),
+ get_token_name(next->GetType()));
+
+ // Issue #2172
+ if (next->GetParentType() == CT_FUNC_DEF)
+ {
+ LOG_FMT(LFCN, "%s(%d): it's a construct colon\n", __func__, __LINE__);
+ // it's a construct colon
+ next->SetType(CT_CONSTR_COLON);
+ }
+ else
+ {
+ LOG_FMT(LFCN, "%s(%d): it's a class colon\n", __func__, __LINE__);
+ // it's a class colon
+ next->SetType(CT_CLASS_COLON);
+ }
+ }
+ else if (next->GetLevel() > next->GetBraceLevel())
+ {
+ // ignore it, as it is inside a paren
+ }
+ else if ( cur->Is(CT_TYPE)
+ || cur->Is(CT_ENUM) // Issue #2584
+ || nextprev->Is(CT_TYPE)
+ || nextprev->Is(CT_ENUM)) // Issue #2584
+ {
+ next->SetType(CT_BIT_COLON);
+ }
+ else if ( cur->Is(CT_ENUM)
+ || cur->Is(CT_ACCESS)
+ || cur->Is(CT_QUALIFIER)
+ || cur->GetParentType() == CT_ALIGN)
+ {
+ // ignore it - bit field, align or public/private, etc
+ }
+ else if ( cur->Is(CT_ANGLE_CLOSE)
+ || hit_class)
+ {
+ // ignore it - template thingy
+ }
+ else if (cur->GetParentType() == CT_SQL_EXEC)
+ {
+ // ignore it - SQL variable name
+ }
+ else if (next->GetParentType() == CT_ASSERT)
+ {
+ // ignore it - Java assert thing
+ }
+ else if (next->GetParentType() == CT_STRUCT)
+ {
+ // ignore it
+ }
+ else
+ {
+ Chunk *tmp = next->GetNextNcNnl();
+
+ //tmp = chunk_get_next_local(next);
+ if (tmp->IsNotNullChunk())
+ {
+ LOG_FMT(LFCN, "%s(%d): tmp->Text() is '%s', orig line is %zu, orig col is %zu, type is %s\n",
+ __func__, __LINE__, tmp->Text(), tmp->GetOrigLine(), tmp->GetOrigCol(),
+ get_token_name(tmp->GetType()));
+
+ if ( tmp->Is(CT_BASE)
+ || tmp->Is(CT_THIS))
+ {
+ // ignore it, as it is a C# base thingy
+ }
+ else if (language_is_set(LANG_CS | LANG_D))
+ {
+ // there should be a better solution for that
+ }
+ else
+ {
+ LOG_FMT(LWARN, "%s(%d): %s:%zu unexpected colon in col %zu n-parent=%s c-parent=%s l=%zu bl=%zu\n",
+ __func__, __LINE__,
+ cpd.filename.c_str(), next->GetOrigLine(), next->GetOrigCol(),
+ get_token_name(next->GetParentType()),
+ get_token_name(cur->GetParentType()),
+ next->GetLevel(), next->GetBraceLevel());
+
+ if (language_is_set(LANG_OC))
+ {
+ // TO DO: what is to do? any expert?
+ }
+ else
+ {
+ exit(EX_SOFTWARE);
+ }
+ }
+ }
+ }
+ }
+ }
+ prev = cur;
+ cur = next;
+ next = chunk_get_next_local(next);
+ }
+} // combine_labels
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_labels.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_labels.h
index 5d5954b2..5d5954b2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_labels.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_labels.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_skip.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_skip.cpp
new file mode 100644
index 00000000..3360547c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_skip.cpp
@@ -0,0 +1,222 @@
+/**
+ * @file combine_skip.cpp
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ * extract from combine.cpp
+ */
+
+#include "combine_skip.h"
+
+#include "combine_tools.h"
+
+
+Chunk *skip_align(Chunk *start)
+{
+ Chunk *pc = start;
+
+ if (pc->Is(CT_ALIGN))
+ {
+ pc = pc->GetNextNcNnl();
+
+ if (pc->Is(CT_PAREN_OPEN))
+ {
+ pc = pc->GetNextType(CT_PAREN_CLOSE, pc->GetLevel());
+
+ if (pc->IsNotNullChunk())
+ {
+ pc = pc->GetNextNcNnl();
+ }
+
+ if (pc->Is(CT_COLON))
+ {
+ pc = pc->GetNextNcNnl();
+ }
+ }
+ }
+ return(pc);
+}
+
+
+Chunk *skip_expression(Chunk *pc)
+{
+ return(skip_to_expression_end(pc)->GetNextNcNnl());
+}
+
+
+Chunk *skip_expression_rev(Chunk *pc)
+{
+ return(skip_to_expression_start(pc)->GetPrevNcNnlNi());
+}
+
+
+static Chunk *skip_to_expression_edge(Chunk *pc, Chunk *(Chunk::*GetNextFn)(E_Scope scope)const)
+{
+ Chunk *prev = pc;
+
+ if (prev->IsNotNullChunk())
+ {
+ std::size_t level = prev->GetLevel();
+ Chunk *next = prev;
+ std::size_t template_nest = get_cpp_template_angle_nest_level(prev);
+
+ while ( next->IsNotNullChunk()
+ && next->GetLevel() >= level)
+ {
+ /**
+ * if we encounter a comma or semicolon at the level of the starting chunk,
+ * return the current chunk
+ */
+ if ( next->GetLevel() == level
+ && ( next->Is(CT_COMMA)
+ || next->IsSemicolon()))
+ {
+ break;
+ }
+ /**
+ * check the template nest level; if the current chunk's nest level
+ * is less than that of the starting chunk, return the current chunk
+ */
+ auto next_template_nest = get_cpp_template_angle_nest_level(next);
+
+ if (template_nest > next_template_nest)
+ {
+ break;
+ }
+ prev = next;
+ next = (next->*GetNextFn)(E_Scope::PREPROC);
+ }
+ }
+ return(prev);
+}
+
+
+Chunk *skip_to_expression_end(Chunk *pc)
+{
+ return(skip_to_expression_edge(pc, &Chunk::GetNextNcNnl));
+}
+
+
+Chunk *skip_to_expression_start(Chunk *pc)
+{
+ return(skip_to_expression_edge(pc, &Chunk::GetPrevNcNnlNi));
+}
+
+
+Chunk *skip_to_next_statement(Chunk *pc)
+{
+ while ( pc->IsNotNullChunk()
+ && !pc->IsSemicolon()
+ && pc->IsNot(CT_BRACE_OPEN)
+ && pc->IsNot(CT_BRACE_CLOSE))
+ {
+ pc = pc->GetNextNcNnl();
+ }
+ return(pc);
+}
+
+
+Chunk *skip_template_prev(Chunk *ang_close)
+{
+ if (ang_close->Is(CT_ANGLE_CLOSE))
+ {
+ Chunk *pc = ang_close->GetPrevType(CT_ANGLE_OPEN, ang_close->GetLevel());
+ return(pc->GetPrevNcNnlNi()); // Issue #2279
+ }
+ return(ang_close);
+}
+
+
+Chunk *skip_tsquare_next(Chunk *ary_def)
+{
+ if ( ary_def->Is(CT_SQUARE_OPEN)
+ || ary_def->Is(CT_TSQUARE))
+ {
+ return(ary_def->GetNextNisq());
+ }
+ return(ary_def);
+}
+
+
+Chunk *skip_attribute(Chunk *attr)
+{
+ Chunk *pc = attr;
+
+ while (pc->Is(CT_ATTRIBUTE))
+ {
+ pc = pc->GetNextNcNnl();
+
+ if (pc->Is(CT_FPAREN_OPEN))
+ {
+ pc = pc->GetNextType(CT_FPAREN_CLOSE, pc->GetLevel());
+ }
+ }
+ return(pc);
+}
+
+
+Chunk *skip_attribute_next(Chunk *attr)
+{
+ Chunk *next = skip_attribute(attr);
+
+ if ( next != attr
+ && next->Is(CT_FPAREN_CLOSE))
+ {
+ attr = next->GetNextNcNnl();
+ }
+ return(attr);
+}
+
+
+Chunk *skip_attribute_prev(Chunk *fp_close)
+{
+ Chunk *pc = fp_close;
+
+ while (true)
+ {
+ if ( pc->Is(CT_FPAREN_CLOSE)
+ && pc->GetParentType() == CT_ATTRIBUTE)
+ {
+ pc = pc->GetPrevType(CT_ATTRIBUTE, pc->GetLevel());
+ }
+ else if (pc->IsNot(CT_ATTRIBUTE))
+ {
+ break;
+ }
+ pc = pc->GetPrevNcNnlNi(); // Issue #2279
+
+ if (pc->IsNullChunk()) // Issue #3356
+ {
+ break;
+ }
+ }
+ return(pc);
+}
+
+
+Chunk *skip_declspec(Chunk *pc)
+{
+ if (pc->Is(CT_DECLSPEC))
+ {
+ pc = pc->GetNextNcNnl();
+
+ if (pc->Is(CT_PAREN_OPEN))
+ {
+ pc = pc->GetClosingParen();
+ }
+ }
+ return(pc);
+}
+
+
+Chunk *skip_declspec_next(Chunk *pc)
+{
+ Chunk *next = skip_declspec(pc);
+
+ if ( next != pc
+ && next->Is(CT_PAREN_CLOSE))
+ {
+ pc = next->GetNextNcNnl();
+ }
+ return(pc);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_skip.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_skip.h
index 8bd9134e..8bd9134e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/combine_skip.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_skip.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_tools.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_tools.cpp
new file mode 100644
index 00000000..53818133
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_tools.cpp
@@ -0,0 +1,569 @@
+/**
+ * @file combine_tools.cpp
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ * extract from combine.cpp
+ */
+
+#include "combine_tools.h"
+
+#include "unc_ctype.h"
+#include "uncrustify.h"
+
+
+bool can_be_full_param(Chunk *start, Chunk *end)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LFPARAM, "%s(%d): start->Text() is '%s', type is %s\n",
+ __func__, __LINE__, start->Text(), get_token_name(start->GetType()));
+ LOG_FMT(LFPARAM, "%s(%d): end->Text() is '%s', type is %s\n",
+ __func__, __LINE__, end->Text(), get_token_name(end->GetType()));
+
+ int word_count = 0;
+ int type_count = 0;
+ Chunk *pc = Chunk::NullChunkPtr;
+ Chunk *first_word = Chunk::NullChunkPtr;
+ bool first_word_set = false;
+
+ for (pc = start;
+ pc->IsNotNullChunk() && pc != end;
+ pc = pc->GetNextNcNnl(E_Scope::PREPROC))
+ {
+ LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
+
+ if ( pc->Is(CT_QUALIFIER)
+ || pc->Is(CT_STRUCT)
+ || pc->Is(CT_ENUM)
+ || pc->Is(CT_UNION)
+ || pc->Is(CT_TYPENAME))
+ {
+ LOG_FMT(LFPARAM, "%s(%d): <== %s! (yes)\n",
+ __func__, __LINE__, get_token_name(pc->GetType()));
+ return(true);
+ }
+
+ if ( pc->Is(CT_WORD)
+ || pc->Is(CT_TYPE))
+ {
+ ++word_count;
+
+ if (!first_word_set)
+ {
+ first_word = pc;
+ first_word_set = true;
+ }
+
+ if (pc->Is(CT_TYPE))
+ {
+ ++type_count;
+ }
+ }
+ else if ( pc->Is(CT_MEMBER)
+ || pc->Is(CT_DC_MEMBER))
+ {
+ if (word_count > 0)
+ {
+ --word_count;
+ }
+ }
+ else if ( pc != start
+ && pc->IsPointerOperator())
+ {
+ // chunk is OK
+ }
+ else if (pc->Is(CT_ASSIGN))
+ {
+ // chunk is OK (default values)
+ break;
+ }
+ else if (pc->Is(CT_ANGLE_OPEN))
+ {
+ LOG_FMT(LFPARAM, "%s(%d): <== template\n",
+ __func__, __LINE__);
+
+ return(true);
+ }
+ else if (pc->Is(CT_ELLIPSIS))
+ {
+ LOG_FMT(LFPARAM, "%s(%d): <== ellipsis\n",
+ __func__, __LINE__);
+
+ return(true);
+ }
+ else if ( word_count == 0
+ && pc->Is(CT_PAREN_OPEN))
+ {
+ // Check for old-school func proto param '(type)'
+ Chunk *tmp1 = pc->GetClosingParen(E_Scope::PREPROC);
+
+ if (tmp1->IsNullChunk())
+ {
+ return(false);
+ }
+ Chunk *tmp2 = tmp1->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (tmp2->IsNullChunk())
+ {
+ return(false);
+ }
+
+ if ( tmp2->Is(CT_COMMA)
+ || tmp2->IsParenClose())
+ {
+ do
+ {
+ pc = pc->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (pc->IsNullChunk())
+ {
+ return(false);
+ }
+ LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
+ } while (pc != tmp1);
+
+ // reset some vars to allow [] after parens
+ word_count = 1;
+ type_count = 1;
+ }
+ else
+ {
+ LOG_FMT(LFPARAM, "%s(%d): <== '%s' not fcn type!\n",
+ __func__, __LINE__, get_token_name(pc->GetType()));
+ return(false);
+ }
+ }
+ else if ( ( word_count == 1
+ || (word_count == type_count))
+ && pc->Is(CT_PAREN_OPEN))
+ {
+ // Check for func proto param 'void (*name)' or 'void (*name)(params)' or 'void (^name)(params)'
+ // <name> can be optional
+ Chunk *tmp1 = pc->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (tmp1->IsNullChunk())
+ {
+ return(false);
+ }
+ Chunk *tmp2 = tmp1->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (tmp2->Is(CT_QUALIFIER))
+ {
+ // tmp2 is the "nullable" qualifier in this case:
+ // void (^nullable name)(params)
+ // skip the qualifier
+ tmp2 = tmp2->GetNextNcNnl(E_Scope::PREPROC);
+ }
+
+ if (tmp2->IsNullChunk())
+ {
+ return(false);
+ }
+ Chunk *tmp3 = (tmp2->IsString(")")) ? tmp2 : tmp2->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (tmp3->IsNullChunk())
+ {
+ return(false);
+ }
+
+ if ( !tmp3->IsString(")")
+ || !( tmp1->IsString("*")
+ || tmp1->IsString("^")) // Issue #2656
+ || !( tmp2->GetType() == CT_WORD
+ || tmp2->IsString(")")))
+ {
+ LOG_FMT(LFPARAM, "%s(%d): <== '%s' not fcn type!\n",
+ __func__, __LINE__, get_token_name(pc->GetType()));
+ return(false);
+ }
+ LOG_FMT(LFPARAM, "%s(%d): <skip fcn type>\n",
+ __func__, __LINE__);
+
+ tmp1 = tmp3->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (tmp1->IsNullChunk())
+ {
+ return(false);
+ }
+
+ if (tmp1->IsString("("))
+ {
+ tmp3 = tmp1->GetClosingParen(E_Scope::PREPROC);
+ }
+ pc = tmp3;
+ LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
+
+ // reset some vars to allow [] after parens
+ word_count = 1;
+ type_count = 1;
+ }
+ else if (pc->Is(CT_TSQUARE))
+ {
+ // ignore it
+ }
+ else if ( word_count == 1
+ && pc->Is(CT_SQUARE_OPEN))
+ {
+ // skip over any array stuff
+ pc = pc->GetClosingParen(E_Scope::PREPROC);
+ LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
+ }
+ else if ( word_count == 2
+ && pc->Is(CT_SQUARE_OPEN))
+ {
+ // Bug #671: is it such as: bool foo[FOO_MAX]
+ pc = pc->GetClosingParen(E_Scope::PREPROC);
+ LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
+ }
+ else if ( word_count == 1
+ && language_is_set(LANG_CPP)
+ && pc->IsString("&&"))
+ {
+ // ignore possible 'move' operator
+ }
+ else
+ {
+ LOG_FMT(LFPARAM, "%s(%d): <== type is %s, no way!, type count is %d, word count is %d\n",
+ __func__, __LINE__, get_token_name(pc->GetType()), type_count, word_count);
+ return(false);
+ }
+ LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()));
+ }
+
+ Chunk *last = pc->GetPrevNcNnlNi(); // Issue #2279
+
+ LOG_FMT(LFPARAM, "%s(%d): last->Text() is '%s', type is %s\n",
+ __func__, __LINE__, last->Text(), get_token_name(last->GetType()));
+
+ if (last->IsPointerOperator())
+ {
+ LOG_FMT(LFPARAM, "%s(%d): <== type is %s, sure!\n",
+ __func__, __LINE__, get_token_name(last->GetType()));
+ return(true);
+ }
+
+ if ( word_count < 2
+ && type_count < 1
+ && start->GetBraceLevel() > 0)
+ {
+ LOG_FMT(LFPARAM, "%s(%d): !MVP!\n",
+ __func__, __LINE__);
+ // Oh, joy, we are in Most Vexing Parse territory
+ Chunk *brace =
+ start->GetPrevType(CT_BRACE_OPEN, start->GetBraceLevel() - 1);
+
+ if (brace->IsNotNullChunk())
+ {
+ LOG_FMT(LFPARAM, "%s(%d): (matching %s brace at orig line %zu, orig col is %zu)",
+ __func__, __LINE__,
+ get_token_name(brace->GetParentType()), brace->GetOrigLine(), brace->GetOrigCol());
+ }
+
+ if ( brace->IsNotNullChunk()
+ && ( brace->GetParentType() == CT_CLASS
+ || brace->GetParentType() == CT_STRUCT))
+ {
+ // A Most Vexing Parse variable declaration cannot occur in the body
+ // of a struct/class, so we probably have a function prototype
+ LOG_FMT(LFPARAM, "%s(%d): <== type is %s, Likely!\n",
+ __func__, __LINE__, (pc->IsNullChunk() ? "null chunk" : get_token_name(pc->GetType())));
+ return(true);
+ }
+ }
+ LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', word_count is %d, type_count is %d\n",
+ __func__, __LINE__, pc->Text(), word_count, type_count);
+
+ if (first_word->IsNotNullChunk())
+ {
+ LOG_FMT(LFPARAM, "%s(%d): first_word->Text() is '%s'\n",
+ __func__, __LINE__, first_word->Text());
+ }
+ bool ret = ( word_count >= 2
+ || ( word_count == 1
+ && type_count == 1));
+
+ LOG_FMT(LFPARAM, "%s(%d): ret is %s\n",
+ __func__, __LINE__, ret ? "TRUE" : "FALSE");
+
+ LOG_FMT(LFPARAM, "%s(%d): pc->Text() is '%s', ",
+ __func__, __LINE__, pc->Text());
+ LOG_FMT(LFPARAM, "<== type is %s, ",
+ (pc->IsNullChunk() ? "null chunk" : get_token_name(pc->GetType())));
+
+ if (ret)
+ {
+ LOG_FMT(LFPARAM, "Yup!\n");
+ }
+ else
+ {
+ LOG_FMT(LFPARAM, "Unlikely!\n");
+ }
+ return(ret);
+} // can_be_full_param
+
+
+bool chunk_ends_type(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ if (start->TestFlags(PCF_IN_FCN_CTOR))
+ {
+ return(false);
+ }
+ Chunk *pc = start;
+ bool ret = false;
+ size_t cnt = 0;
+ bool last_expr = false;
+ bool last_lval = false;
+
+ for ( ; pc->IsNotNullChunk(); pc = pc->GetPrevNcNnlNi()) // Issue #2279
+ {
+ LOG_FMT(LFTYPE, "%s(%d): type is %s, Text() '%s', orig line %zu, orig col %zu\n ",
+ __func__, __LINE__, get_token_name(pc->GetType()), pc->Text(),
+ pc->GetOrigLine(), pc->GetOrigCol());
+ log_pcf_flags(LFTYPE, pc->GetFlags());
+
+ if ( pc->Is(CT_WORD)
+ || pc->Is(CT_TYPE)
+ || pc->Is(CT_PTR_TYPE)
+ || pc->Is(CT_STAR)
+ || pc->Is(CT_STRUCT)
+ || pc->Is(CT_DC_MEMBER)
+ || pc->Is(CT_PP)
+ || pc->Is(CT_QUALIFIER)
+ || ( language_is_set(LANG_CPP | LANG_OC) // Issue #2727
+ && pc->GetParentType() == CT_TEMPLATE
+ && ( pc->Is(CT_ANGLE_OPEN)
+ || pc->Is(CT_ANGLE_CLOSE)))
+ || ( language_is_set(LANG_CS | LANG_VALA)
+ && (pc->Is(CT_MEMBER))))
+ {
+ cnt++;
+ last_expr = pc->TestFlags(PCF_EXPR_START)
+ && !pc->TestFlags(PCF_IN_FCN_CALL);
+ last_lval = pc->TestFlags(PCF_LVALUE);
+ continue;
+ }
+ /* If a comma is encountered within a template, it must be
+ * considered within the context of its immediate parent
+ * template (i.e. argument list nest level)
+ */
+
+ if ( ( pc->IsSemicolon()
+ && !pc->TestFlags(PCF_IN_FOR))
+ || pc->Is(CT_TYPEDEF)
+ || pc->Is(CT_BRACE_OPEN)
+ || pc->IsBraceClose()
+ || pc->Is(CT_FPAREN_CLOSE)
+ || pc->IsOCForinOpenParen()
+ || pc->Is(CT_MACRO)
+ || pc->Is(CT_PP_IF)
+ || pc->Is(CT_PP_ELSE)
+ || pc->Is(CT_PP_ENDIF)
+ || pc->GetParentType() == CT_PP_INCLUDE // Issue #3233
+ || ( ( pc->Is(CT_COMMA)
+ && !pc->TestFlags(PCF_IN_FCN_CALL)
+ && get_cpp_template_angle_nest_level(start) ==
+ get_cpp_template_angle_nest_level(pc))
+ && last_expr)
+ || ( pc->Is(CT_SPAREN_OPEN)
+ && last_lval))
+ {
+ ret = cnt > 0;
+ }
+ break;
+ }
+
+ if (pc->IsNullChunk())
+ {
+ // first token
+ ret = true;
+ }
+ LOG_FMT(LFTYPE, "%s(%d): first token verdict: %s\n",
+ __func__, __LINE__, ret ? "yes" : "no");
+
+ return(ret);
+} // chunk_ends_type
+
+
+bool chunkstack_match(ChunkStack &cs, Chunk *pc)
+{
+ for (size_t idx = 0; idx < cs.Len(); idx++)
+ {
+ Chunk *tmp = cs.GetChunk(idx);
+
+ if (pc->GetStr().equals(tmp->GetStr()))
+ {
+ return(true);
+ }
+ }
+
+ return(false);
+} // chunkstack_match
+
+
+void flag_series(Chunk *start, Chunk *end, PcfFlags set_flags, PcfFlags clr_flags, E_Scope nav)
+{
+ LOG_FUNC_ENTRY();
+
+ while ( start->IsNotNullChunk()
+ && start != end)
+ {
+ start->UpdateFlagBits(clr_flags, set_flags);
+ log_pcf_flags(LFTYPE, start->GetFlags());
+
+ start = start->GetNext(nav);
+
+ if (start->IsNullChunk())
+ {
+ return;
+ }
+ }
+
+ if (end->IsNotNullChunk())
+ {
+ end->UpdateFlagBits(clr_flags, set_flags);
+ log_pcf_flags(LFTYPE, end->GetFlags());
+ }
+} // flag_series
+
+
+size_t get_cpp_template_angle_nest_level(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+ int nestLevel = 0;
+
+ while ( pc->IsNotNullChunk()
+ && pc->TestFlags(PCF_IN_TEMPLATE))
+ {
+ if ( pc->Is(CT_ANGLE_CLOSE)
+ && pc->GetParentType() == CT_TEMPLATE)
+ {
+ --nestLevel;
+ }
+ else if ( pc->Is(CT_ANGLE_OPEN)
+ && pc->GetParentType() == CT_TEMPLATE)
+ {
+ ++nestLevel;
+ }
+ pc = pc->GetPrevNcNnlNi();
+ }
+ return(nestLevel <= 0 ? 0 : size_t(nestLevel));
+}
+
+
+Chunk *get_d_template_types(ChunkStack &cs, Chunk *open_paren)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *tmp = open_paren->GetNextNcNnl();
+ bool maybe_type = true;
+
+ while ( tmp->IsNullChunk()
+ && tmp->GetLevel() > open_paren->GetLevel())
+ {
+ if ( tmp->Is(CT_TYPE)
+ || tmp->Is(CT_WORD))
+ {
+ if (maybe_type)
+ {
+ make_type(tmp);
+ cs.Push_Back(tmp);
+ }
+ maybe_type = false;
+ }
+ else if (tmp->Is(CT_COMMA))
+ {
+ maybe_type = true;
+ }
+ tmp = tmp->GetNextNcNnl();
+ }
+ return(tmp);
+} // get_d_template_types
+
+
+bool go_on(Chunk *pc, Chunk *start)
+{
+ if ( pc->IsNullChunk()
+ || pc->GetLevel() != start->GetLevel())
+ {
+ return(false);
+ }
+
+ if (pc->TestFlags(PCF_IN_FOR))
+ {
+ return( (!pc->IsSemicolon())
+ && (!(pc->Is(CT_COLON))));
+ }
+ return(!pc->IsSemicolon());
+} // go_on
+
+
+bool is_ucase_str(const char *str, size_t len)
+{
+ while (len-- > 0)
+ {
+ if (unc_toupper(*str) != *str)
+ {
+ return(false);
+ }
+ str++;
+ }
+ return(true);
+} // is_ucase_str
+
+
+void make_type(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc->IsNotNullChunk())
+ {
+ if (pc->Is(CT_WORD))
+ {
+ pc->SetType(CT_TYPE);
+ }
+ else if ( ( pc->IsStar()
+ || pc->IsMsRef()
+ || pc->IsNullable())
+ && pc->GetPrev()->IsTypeDefinition()) // Issue # 2640
+ {
+ pc->SetType(CT_PTR_TYPE);
+ }
+ else if ( pc->IsAddress()
+ && pc->GetPrev()->IsNot(CT_SQUARE_OPEN)) // Issue # 2166
+ {
+ pc->SetType(CT_BYREF);
+ }
+ }
+} // make_type
+
+
+Chunk *set_paren_parent(Chunk *start, E_Token parent_type)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *end;
+
+ end = start->GetClosingParen(E_Scope::PREPROC);
+
+ if (end->IsNotNullChunk())
+ {
+ LOG_FMT(LFLPAREN, "%s(%d): %zu:%zu '%s' and %zu:%zu '%s' type is %s, parent type is %s",
+ __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol(), start->Text(),
+ end->GetOrigLine(), end->GetOrigCol(), end->Text(),
+ get_token_name(start->GetType()), get_token_name(parent_type));
+ log_func_stack_inline(LFLPAREN);
+ start->SetParentType(parent_type);
+ end->SetParentType(parent_type);
+ LOG_FMT(LFLPAREN, "%s(%d):\n", __func__, __LINE__);
+ return(end->GetNextNcNnl(E_Scope::PREPROC));
+ }
+ LOG_FMT(LFLPAREN, "%s(%d):\n", __func__, __LINE__);
+ return(Chunk::NullChunkPtr);
+} // set_paren_parent
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_tools.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_tools.h
new file mode 100644
index 00000000..a2575bfc
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/combine_tools.h
@@ -0,0 +1,85 @@
+/**
+ * @file combine_tools.h
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ * extract from combine.cpp
+ */
+
+#ifndef COMBINE_TOOLS_H_INCLUDED
+#define COMBINE_TOOLS_H_INCLUDED
+
+#include "chunk.h"
+#include "ChunkStack.h"
+
+/**
+ * Checks to see if a series of chunks could be a C++ parameter
+ * FOO foo(5, &val);
+ *
+ * WORD means CT_WORD or CT_TYPE
+ *
+ * "WORD WORD" ==> true
+ * "QUALIFIER ??" ==> true
+ * "TYPE" ==> true
+ * "WORD" ==> true
+ * "WORD.WORD" ==> true
+ * "WORD::WORD" ==> true
+ * "WORD * WORD" ==> true
+ * "WORD & WORD" ==> true
+ * "NUMBER" ==> false
+ * "STRING" ==> false
+ * "OPEN PAREN" ==> false
+ *
+ * @param start the first chunk to look at
+ * @param end the chunk after the last one to look at
+ */
+bool can_be_full_param(Chunk *start, Chunk *end);
+
+
+//! Scan backwards to see if we might be on a type declaration
+bool chunk_ends_type(Chunk *start);
+
+
+bool chunkstack_match(ChunkStack &cs, Chunk *pc);
+
+
+///**
+// * Simply change any STAR to PTR_TYPE and WORD to TYPE
+// *
+// * @param start points to the open paren
+// */
+void fix_fcn_def_params(Chunk *pc);
+
+
+void flag_series(Chunk *start, Chunk *end, PcfFlags set_flags, PcfFlags clr_flags = {}, E_Scope nav = E_Scope::ALL);
+
+
+/*
+ * Checks whether or not a given chunk has a parent cpp template,
+ * and if so returns the associated angle bracket nest level
+ * with respect to the root parent template; returns 0 if
+ * the chunk is not part of a template parameter list
+ */
+size_t get_cpp_template_angle_nest_level(Chunk *pc);
+
+
+/**
+ * Parse off the types in the D template args, adds to cs
+ * returns the close_paren
+ */
+Chunk *get_d_template_types(ChunkStack &cs, Chunk *open_paren);
+
+
+//! help function for mark_variable_definition...
+bool go_on(Chunk *pc, Chunk *start);
+
+
+bool is_ucase_str(const char *str, size_t len);
+
+
+void make_type(Chunk *pc);
+
+Chunk *set_paren_parent(Chunk *start, E_Token parent);
+
+
+#endif /* COMBINE_TOOLS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/compat.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/compat.h
new file mode 100644
index 00000000..66d60a06
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/compat.h
@@ -0,0 +1,26 @@
+/**
+ * @file compat.h
+ * prototypes for compat_xxx.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+#ifndef COMPAT_H_INCLUDED
+#define COMPAT_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+
+bool unc_getenv(const char *name, std::string &str);
+
+
+bool unc_homedir(std::string &home);
+
+
+/*
+ * even if we prefer the format %zu, we have to change to %lu
+ * to be runable under Windows
+ */
+void convert_log_zu2lu(char *buf);
+
+#endif /* COMPAT_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/compat_posix.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/compat_posix.cpp
index c77c7a89..c77c7a89 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/compat_posix.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/compat_posix.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/compat_win32.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/compat_win32.cpp
new file mode 100644
index 00000000..ff79199d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/compat_win32.cpp
@@ -0,0 +1,82 @@
+/**
+ * @file compat_win32.cpp
+ * Compatibility functions for win32
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#if defined (_WIN32) \
+ && !defined (__CYGWIN__)
+
+#include "windows_compat.h"
+
+#include <cstdio>
+#include <string>
+
+
+bool unc_getenv(const char *name, std::string &str)
+{
+ DWORD len = GetEnvironmentVariableA(name, NULL, 0);
+ char *buf;
+
+ if (len == 0)
+ {
+ if (GetLastError() == ERROR_ENVVAR_NOT_FOUND)
+ {
+ return(false);
+ }
+ }
+ buf = (char *)malloc(len);
+
+ if (buf != nullptr)
+ {
+ len = GetEnvironmentVariableA(name, buf, len);
+ }
+ buf[len] = 0;
+
+ str = buf;
+ //printf("%s: name=%s len=%zu value=%s\n", __func__, name, len, str.c_str());
+ free(buf);
+
+ return(true);
+}
+
+
+bool unc_homedir(std::string &home)
+{
+ if (unc_getenv("HOME", home))
+ {
+ return(true);
+ }
+
+ if (unc_getenv("USERPROFILE", home))
+ {
+ return(true);
+ }
+ std::string hd, hp;
+
+ if ( unc_getenv("HOMEDRIVE", hd)
+ && unc_getenv("HOMEPATH", hp))
+ {
+ home = hd + hp;
+ return(true);
+ }
+ return(false);
+}
+
+
+void convert_log_zu2lu(char *fmt)
+{
+ for (size_t i = 0; i < strlen(fmt); i++)
+ {
+ if ( (fmt[i] == '%')
+ && (fmt[i + 1] == 'z')
+ && (fmt[i + 2] == 'u'))
+ {
+ fmt[i + 1] = 'l';
+ }
+ }
+}
+
+#endif /* if defined(_WIN32) && !defined(__CYGWIN__) */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/config.h.in b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/config.h.in
index 420de635..420de635 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/config.h.in
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/config.h.in
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/cs_top_is_question.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/cs_top_is_question.cpp
index b9b5b958..b9b5b958 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/cs_top_is_question.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/cs_top_is_question.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/cs_top_is_question.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/cs_top_is_question.h
index de6ace3e..de6ace3e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/cs_top_is_question.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/cs_top_is_question.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/detect.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/detect.cpp
new file mode 100644
index 00000000..2f0be40a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/detect.cpp
@@ -0,0 +1,445 @@
+/**
+ * @file detect.cpp
+ * Scans the parsed file and tries to determine options.
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "detect.h"
+
+#include "prototypes.h"
+
+
+using namespace uncrustify;
+
+
+//! Detect spacing options
+static void detect_space_options();
+
+
+class sp_votes
+{
+protected:
+ size_t m_add = 0;
+ size_t m_remove = 0;
+ size_t m_force = 0;
+ Option<iarf_e> &m_option;
+
+public:
+ sp_votes(Option<iarf_e> &opt)
+ : m_option(opt)
+ {}
+
+ //! Figure out the result of the vote and maybe update *m_av
+ ~sp_votes();
+
+ void vote(Chunk *first, Chunk *second);
+};
+
+
+void sp_votes::vote(Chunk *first, Chunk *second)
+{
+ if ( first->IsNullChunk()
+ || first->IsNewline()
+ || second->IsNullChunk()
+ || second->IsNewline())
+ {
+ return;
+ }
+ int col_dif = second->GetColumn() - (first->GetColumn() + first->Len());
+
+ if (col_dif == 0)
+ {
+ m_remove++;
+ }
+ else if (col_dif == 1)
+ {
+ m_force++;
+ }
+ else
+ {
+ m_add++;
+ }
+}
+
+
+//! Figure out the result of the vote and maybe update *m_av
+sp_votes::~sp_votes()
+{
+ // no change if no items were added
+ if ( m_remove == 0
+ && m_add == 0
+ && m_force == 0)
+ {
+ return;
+ }
+
+ if (m_remove == 0)
+ {
+ m_option = (m_force > m_add) ? IARF_FORCE : IARF_ADD;
+ }
+ else if ( m_force == 0
+ && m_add == 0)
+ {
+ m_option = IARF_REMOVE;
+ }
+ else
+ {
+ // nothing conclusive. do not alter.
+ }
+}
+
+
+// generates "vote_sp_xxx" variable name from uncrustify option name "options::xxx()"
+#define SP_VOTE_VAR(x) sp_votes vote_ ## x(options::x)
+
+
+static void detect_space_options()
+{
+ SP_VOTE_VAR(sp_arith);
+ SP_VOTE_VAR(sp_before_assign);
+ SP_VOTE_VAR(sp_after_assign);
+ SP_VOTE_VAR(sp_enum_before_assign);
+ SP_VOTE_VAR(sp_enum_after_assign);
+ SP_VOTE_VAR(sp_bool);
+ SP_VOTE_VAR(sp_compare);
+ SP_VOTE_VAR(sp_inside_paren);
+ SP_VOTE_VAR(sp_paren_paren);
+ SP_VOTE_VAR(sp_paren_brace);
+ SP_VOTE_VAR(sp_before_ptr_star);
+ SP_VOTE_VAR(sp_before_unnamed_ptr_star);
+ SP_VOTE_VAR(sp_between_ptr_star);
+ SP_VOTE_VAR(sp_between_ptr_ref);
+ SP_VOTE_VAR(sp_after_ptr_star);
+ SP_VOTE_VAR(sp_after_byref);
+ SP_VOTE_VAR(sp_before_byref);
+ SP_VOTE_VAR(sp_before_unnamed_byref);
+ SP_VOTE_VAR(sp_after_type);
+ SP_VOTE_VAR(sp_template_angle);
+ SP_VOTE_VAR(sp_before_angle);
+ SP_VOTE_VAR(sp_inside_angle);
+ SP_VOTE_VAR(sp_after_angle);
+ SP_VOTE_VAR(sp_angle_paren);
+ SP_VOTE_VAR(sp_angle_word);
+ SP_VOTE_VAR(sp_before_square);
+ SP_VOTE_VAR(sp_before_squares);
+ SP_VOTE_VAR(sp_inside_square);
+ SP_VOTE_VAR(sp_before_sparen);
+ SP_VOTE_VAR(sp_inside_sparen);
+ SP_VOTE_VAR(sp_after_sparen);
+ SP_VOTE_VAR(sp_sparen_brace);
+ SP_VOTE_VAR(sp_special_semi);
+ SP_VOTE_VAR(sp_before_semi);
+ SP_VOTE_VAR(sp_before_semi_for);
+ SP_VOTE_VAR(sp_before_semi_for_empty);
+ SP_VOTE_VAR(sp_after_semi_for_empty);
+ SP_VOTE_VAR(sp_after_comma);
+ SP_VOTE_VAR(sp_before_comma);
+ SP_VOTE_VAR(sp_after_class_colon);
+ SP_VOTE_VAR(sp_before_class_colon);
+ SP_VOTE_VAR(sp_inside_braces);
+ SP_VOTE_VAR(sp_inside_braces_empty);
+ SP_VOTE_VAR(sp_else_brace);
+ SP_VOTE_VAR(sp_brace_else);
+ SP_VOTE_VAR(sp_catch_brace);
+ SP_VOTE_VAR(sp_brace_catch);
+ SP_VOTE_VAR(sp_finally_brace);
+ SP_VOTE_VAR(sp_brace_finally);
+ SP_VOTE_VAR(sp_try_brace);
+ SP_VOTE_VAR(sp_getset_brace);
+
+ Chunk *prev = Chunk::GetHead();
+ Chunk *pc = prev->GetNext();
+ Chunk *next;
+
+ while (pc->IsNotNullChunk())
+ {
+ next = pc->GetNext();
+
+ if (next->IsNullChunk())
+ {
+ break;
+ }
+
+ if ( pc->Is(CT_ARITH)
+ || pc->Is(CT_SHIFT))
+ {
+ vote_sp_arith.vote(pc, next);
+ vote_sp_arith.vote(prev, pc);
+ }
+
+ if (pc->Is(CT_ASSIGN))
+ {
+ if (!pc->TestFlags(PCF_IN_ENUM))
+ {
+ vote_sp_before_assign.vote(prev, pc);
+ vote_sp_after_assign.vote(pc, next);
+ }
+ else
+ {
+ vote_sp_enum_before_assign.vote(prev, pc);
+ vote_sp_enum_after_assign.vote(pc, next);
+ }
+ }
+
+ if (pc->Is(CT_SQUARE_OPEN))
+ {
+ vote_sp_before_square.vote(prev, pc);
+ vote_sp_inside_square.vote(pc, next);
+ }
+
+ if (pc->Is(CT_SQUARE_CLOSE))
+ {
+ vote_sp_inside_square.vote(prev, pc);
+ }
+
+ if (pc->Is(CT_TSQUARE))
+ {
+ vote_sp_before_squares.vote(prev, pc);
+ }
+
+ if (pc->Is(CT_BOOL))
+ {
+ vote_sp_bool.vote(prev, pc);
+ vote_sp_bool.vote(pc, next);
+ }
+
+ if (pc->Is(CT_COMPARE))
+ {
+ vote_sp_compare.vote(prev, pc);
+ vote_sp_compare.vote(pc, next);
+ }
+
+ if (pc->Is(CT_PAREN_CLOSE))
+ {
+ vote_sp_inside_paren.vote(prev, pc);
+ }
+
+ if (pc->Is(CT_PAREN_OPEN))
+ {
+ vote_sp_inside_paren.vote(pc, next);
+ }
+
+ if ( ( pc->IsParenOpen()
+ && next->IsParenOpen())
+ || ( pc->IsParenClose()
+ && next->IsParenClose()))
+ {
+ vote_sp_paren_paren.vote(pc, next);
+ }
+
+ if ( pc->IsParenClose()
+ && next->Is(CT_BRACE_OPEN))
+ {
+ vote_sp_paren_brace.vote(pc, next);
+ }
+
+ if (pc->Is(CT_PTR_TYPE))
+ {
+ if (prev->Is(CT_PTR_TYPE))
+ {
+ vote_sp_between_ptr_star.vote(prev, pc);
+ }
+ else if (next->IsNot(CT_WORD))
+ {
+ vote_sp_before_unnamed_ptr_star.vote(prev, pc);
+ }
+ else
+ {
+ vote_sp_before_ptr_star.vote(prev, pc);
+ }
+
+ if (CharTable::IsKw1(next->GetStr()[0]))
+ {
+ vote_sp_after_ptr_star.vote(pc, next);
+ }
+ }
+
+ if (pc->Is(CT_BYREF))
+ {
+ if (next->IsNot(CT_WORD))
+ {
+ vote_sp_before_unnamed_byref.vote(prev, pc);
+ }
+
+ if (prev->Is(CT_PTR_TYPE))
+ {
+ vote_sp_between_ptr_ref.vote(prev, pc);
+ }
+ else
+ {
+ vote_sp_before_byref.vote(prev, pc);
+ }
+ vote_sp_after_byref.vote(pc, next);
+ }
+
+ if ( pc->IsNot(CT_PTR_TYPE)
+ && ( prev->Is(CT_QUALIFIER)
+ || prev->Is(CT_TYPE)))
+ {
+ vote_sp_after_type.vote(prev, pc);
+ }
+
+ if (pc->Is(CT_ANGLE_OPEN))
+ {
+ vote_sp_inside_angle.vote(pc, next);
+
+ if (prev->Is(CT_TEMPLATE))
+ {
+ vote_sp_template_angle.vote(prev, pc);
+ }
+ else
+ {
+ vote_sp_before_angle.vote(prev, pc);
+ }
+ }
+
+ if (pc->Is(CT_ANGLE_CLOSE))
+ {
+ vote_sp_inside_angle.vote(prev, pc);
+
+ if (next->IsParenOpen())
+ {
+ vote_sp_angle_paren.vote(prev, pc);
+ }
+ else if ( next->Is(CT_WORD)
+ || CharTable::IsKw1(next->GetStr()[0]))
+ {
+ vote_sp_angle_word.vote(prev, pc);
+ }
+ else
+ {
+ vote_sp_after_angle.vote(pc, next);
+ }
+ }
+
+ if (pc->Is(CT_SPAREN_OPEN))
+ {
+ vote_sp_before_sparen.vote(prev, pc);
+ vote_sp_inside_sparen.vote(pc, next);
+ }
+
+ if (pc->Is(CT_SPAREN_CLOSE))
+ {
+ vote_sp_inside_sparen.vote(prev, pc);
+
+ if (next->Is(CT_BRACE_OPEN))
+ {
+ vote_sp_sparen_brace.vote(pc, next);
+ }
+ else
+ {
+ vote_sp_after_sparen.vote(pc, next);
+ }
+ }
+
+ if (pc->Is(CT_SEMICOLON))
+ {
+ if (pc->GetParentType() == CT_FOR)
+ {
+ if (prev->Is(CT_SPAREN_OPEN))
+ {
+ // empty, ie for (;;)
+ // ^ is prev
+ // ^ is pc
+ vote_sp_before_semi_for_empty.vote(prev, pc);
+ }
+ else if (next->Is(CT_SPAREN_CLOSE))
+ {
+ // empty, ie for (;;)
+ // ^ is pc
+ // ^ is next
+ vote_sp_after_semi_for_empty.vote(pc, next);
+ }
+ else if (prev->IsNot(CT_SEMICOLON))
+ {
+ // empty, ie for (; i < 8;)
+ // ^ is pc
+ // or
+ // ^ is prev
+ vote_sp_before_semi_for.vote(prev, pc);
+ }
+ }
+ else if (prev->Is(CT_VBRACE_OPEN))
+ {
+ vote_sp_special_semi.vote(prev->GetPrev(), pc);
+ }
+ else
+ {
+ vote_sp_before_semi.vote(prev, pc);
+ }
+ }
+
+ if (pc->Is(CT_COMMA))
+ {
+ vote_sp_before_comma.vote(prev, pc);
+ vote_sp_after_comma.vote(pc, next);
+ }
+
+ if (pc->Is(CT_CLASS_COLON))
+ {
+ vote_sp_before_class_colon.vote(prev, pc);
+ vote_sp_after_class_colon.vote(pc, next);
+ }
+
+ if (pc->Is(CT_BRACE_OPEN))
+ {
+ if (prev->Is(CT_ELSE))
+ {
+ vote_sp_else_brace.vote(prev, pc);
+ }
+ else if (prev->Is(CT_CATCH))
+ {
+ vote_sp_catch_brace.vote(prev, pc);
+ }
+ else if (prev->Is(CT_FINALLY))
+ {
+ vote_sp_catch_brace.vote(prev, pc);
+ }
+ else if (prev->Is(CT_TRY))
+ {
+ vote_sp_catch_brace.vote(prev, pc);
+ }
+ else if (prev->Is(CT_GETSET))
+ {
+ vote_sp_catch_brace.vote(prev, pc);
+ }
+
+ if (next->Is(CT_BRACE_CLOSE))
+ {
+ vote_sp_inside_braces_empty.vote(pc, next);
+ }
+ else
+ {
+ vote_sp_inside_braces.vote(pc, next);
+ }
+ }
+
+ if (pc->Is(CT_BRACE_CLOSE))
+ {
+ vote_sp_inside_braces.vote(prev, pc);
+
+ if (next->Is(CT_ELSE))
+ {
+ vote_sp_brace_else.vote(pc, next);
+ }
+ else if (next->Is(CT_CATCH))
+ {
+ vote_sp_brace_catch.vote(pc, next);
+ }
+ else if (next->Is(CT_FINALLY))
+ {
+ vote_sp_brace_finally.vote(pc, next);
+ }
+ }
+ prev = pc;
+ pc = next;
+ }
+} // detect_space_options
+
+
+void detect_options()
+{
+ detect_space_options();
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/detect.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/detect.h
new file mode 100644
index 00000000..203aad16
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/detect.h
@@ -0,0 +1,16 @@
+/**
+ * @file detect.h
+ * prototypes for detect.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+#ifndef DETECT_H_INCLUDED
+#define DETECT_H_INCLUDED
+
+
+//! Call all the detect_xxxx() functions
+void detect_options();
+
+
+#endif /* DETECT_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/enum_cleanup.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/enum_cleanup.cpp
new file mode 100644
index 00000000..f89f61c4
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/enum_cleanup.cpp
@@ -0,0 +1,95 @@
+/**
+ * @file enum_cleanup.cpp
+ * works on the last comma within enum
+ *
+ * @author Guy Maurel Juli 2018
+ * @license GPL v2+
+ */
+
+#include "enum_cleanup.h"
+
+#include "log_rules.h"
+
+constexpr static auto LCURRENT = LTOK;
+
+using namespace uncrustify;
+
+
+void enum_cleanup()
+{
+ LOG_FUNC_ENTRY();
+
+ log_rule_B("mod_enum_last_comma");
+
+ if (options::mod_enum_last_comma() == IARF_IGNORE)
+ {
+ // nothing to do
+ return;
+ }
+ Chunk *pc = Chunk::GetHead(); // Issue #858
+
+ while (pc->IsNotNullChunk())
+ {
+ if ( pc->GetParentType() == CT_ENUM
+ && pc->Is(CT_BRACE_CLOSE))
+ {
+ LOG_FMT(LTOK, "%s(%d): orig line is %zu, type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), get_token_name(pc->GetType()));
+ Chunk *prev = pc->GetPrevNcNnl(); // Issue #3604
+
+ if (prev->IsNotNullChunk())
+ {
+ if (prev->Is(CT_COMMA))
+ {
+ log_rule_B("mod_enum_last_comma");
+
+ if (options::mod_enum_last_comma() == IARF_REMOVE)
+ {
+ Chunk::Delete(prev);
+ }
+ }
+ else
+ {
+ if (prev->Is(CT_BRACE_OPEN)) // Issue #2902
+ {
+ // nothing between CT_BRACE_OPEN and CT_BRACE_CLOSE
+ }
+ else
+ {
+ log_rule_B("mod_enum_last_comma");
+
+ if ( options::mod_enum_last_comma() == IARF_ADD
+ || options::mod_enum_last_comma() == IARF_FORCE)
+ {
+ // create a comma
+ Chunk comma;
+ comma.SetType(CT_COMMA);
+ comma.SetOrigLine(prev->GetOrigLine());
+ comma.SetOrigCol(prev->GetOrigCol() + 1);
+ comma.SetNlCount(0);
+ comma.SetPpLevel(0);
+ comma.SetFlags(PCF_NONE);
+ comma.Str() = ",";
+
+ if (prev->Is(CT_PP_ENDIF)) // Issue #3604
+ {
+ prev = prev->GetPrevNcNnlNpp();
+ }
+
+ if (prev->Is(CT_COMMA)) // Issue #3604
+ {
+ // nothing to do
+ }
+ else
+ {
+ comma.CopyAndAddAfter(prev);
+ }
+ pc = pc->GetNext();
+ }
+ }
+ }
+ }
+ }
+ pc = pc->GetNext();
+ }
+} // enum_cleanup
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_cleanup.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/enum_cleanup.h
index f9c46dc2..f9c46dc2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_cleanup.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/enum_cleanup.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_flags.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/enum_flags.h
index 4f4e33c5..4f4e33c5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_flags.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/enum_flags.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/error_types.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/error_types.h
index 4b162768..4b162768 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/error_types.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/error_types.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_braced_init_list.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_braced_init_list.cpp
index 66c128fa..66c128fa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_braced_init_list.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_braced_init_list.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_braced_init_list.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_braced_init_list.h
index 75d19a79..75d19a79 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_braced_init_list.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_braced_init_list.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_decltype.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_decltype.cpp
index 6950bc10..6950bc10 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_decltype.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_decltype.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_decltype.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_decltype.h
index 293fcd02..293fcd02 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/flag_decltype.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_decltype.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_parens.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_parens.cpp
new file mode 100644
index 00000000..44de133b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_parens.cpp
@@ -0,0 +1,72 @@
+/**
+ * @file flag_parens.cpp
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#include "flag_parens.h"
+
+#include "uncrustify.h"
+
+
+Chunk *flag_parens(Chunk *po, PcfFlags flags, E_Token opentype, E_Token parent_type, bool parent_all)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *paren_close;
+
+ paren_close = po->GetClosingParen(E_Scope::PREPROC);
+
+ if (paren_close->IsNullChunk())
+ {
+ LOG_FMT(LERR, "%s(%d): no match for '%s' at [%zu:%zu]",
+ __func__, __LINE__, po->Text(), po->GetOrigLine(), po->GetOrigCol());
+ log_func_stack_inline(LERR);
+ exit(EX_SOFTWARE);
+ }
+ LOG_FMT(LFLPAREN, "%s(%d): between po is '%s', orig line is %zu, orig col is %zu, and\n",
+ __func__, __LINE__, po->Text(), po->GetOrigLine(), po->GetOrigCol());
+ LOG_FMT(LFLPAREN, "%s(%d): paren_close is '%s', orig line is %zu, orig col is %zu, type is %s, parent type is %s\n",
+ __func__, __LINE__, paren_close->Text(), paren_close->GetOrigLine(), paren_close->GetOrigCol(),
+ get_token_name(opentype), get_token_name(parent_type));
+ log_func_stack_inline(LFLPAREN);
+
+ // the last chunk must be also modified. Issue #2149
+ Chunk *after_paren_close = paren_close->GetNext();
+
+ if (po != paren_close)
+ {
+ if ( flags != PCF_NONE
+ || ( parent_all
+ && parent_type != CT_NONE))
+ {
+ Chunk *pc;
+
+ //for (pc = po;
+ for (pc = po->GetNext(E_Scope::PREPROC);
+ pc->IsNotNullChunk() && pc != after_paren_close;
+ pc = pc->GetNext(E_Scope::PREPROC))
+ {
+ pc->SetFlagBits(flags);
+
+ if (parent_all)
+ {
+ pc->SetParentType(parent_type);
+ }
+ }
+ }
+
+ if (opentype != CT_NONE)
+ {
+ po->SetType(opentype);
+ paren_close->SetType((E_Token)(opentype + 1));
+ }
+
+ if (parent_type != CT_NONE)
+ {
+ po->SetParentType(parent_type);
+ paren_close->SetParentType(parent_type);
+ }
+ }
+ return(paren_close->GetNextNcNnl(E_Scope::PREPROC));
+} // flag_parens
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_parens.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_parens.h
new file mode 100644
index 00000000..b789a810
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/flag_parens.h
@@ -0,0 +1,28 @@
+/**
+ * @file flag_parens.h
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#ifndef FLAG_PARENS_H_INCLUDED
+#define FLAG_PARENS_H_INCLUDED
+
+#include "chunk.h"
+
+
+/**
+ * Flags everything from the open paren to the close paren.
+ *
+ * @param po Pointer to the open parenthesis
+ * @param flags flags to add
+ * @param opentype
+ * @param parenttype
+ * @param parent_all
+ *
+ * @return The token after the close paren
+ */
+Chunk *flag_parens(Chunk *po, PcfFlags flags, E_Token opentype, E_Token parenttype, bool parent_all);
+
+
+#endif /* FLAG_PARENS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/indent.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/indent.cpp
new file mode 100644
index 00000000..364a899e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/indent.cpp
@@ -0,0 +1,4792 @@
+/**
+ * @file indent.cpp
+ * Does all the indenting stuff.
+ *
+ * @author Ben Gardner
+ * @author Guy Maurel October 2015- 2021
+ * @license GPL v2+
+ */
+
+#include "indent.h"
+
+#include "align.h"
+#include "options.h"
+#include "options_for_QT.h"
+#include "parsing_frame_stack.h"
+#include "prototypes.h"
+#include "quick_align_again.h"
+#include "space.h"
+#include <cstdint>
+
+#ifdef WIN32
+#include <algorithm> // to get max
+#endif // ifdef WIN32
+
+#ifdef IGNORE // WinBase.h
+#undef IGNORE
+#endif
+
+
+constexpr static auto LCURRENT = LINDENT;
+
+using namespace std;
+using namespace uncrustify;
+
+
+/**
+ * General indenting approach:
+ * Indenting levels are put into a stack.
+ *
+ * The stack entries contain:
+ * - opening type
+ * - brace column
+ * - continuation column
+ *
+ * Items that start a new stack item:
+ * - preprocessor (new parse frame)
+ * - Brace Open (Virtual brace also)
+ * - Paren, Square, Angle open
+ * - Assignments
+ * - C++ '<<' operator (ie, cout << "blah")
+ * - case
+ * - class colon
+ * - return
+ * - types
+ * - any other continued statement
+ *
+ * Note that the column of items marked 'PCF_WAS_ALIGNED' is not changed.
+ *
+ * For an open brace:
+ * - indent increases by indent_columns
+ * - if part of if/else/do/while/switch/etc, an extra indent may be applied
+ * - if in a paren, then cont-col is set to column + 1, ie "({ some code })"
+ *
+ * Open paren/square/angle:
+ * cont-col is set to the column of the item after the open paren, unless
+ * followed by a newline, then it is set to (brace-col + indent_columns).
+ * Examples:
+ * a_really_long_function_name(
+ * param1, param2);
+ * a_really_long_function_name(param1,
+ * param2);
+ *
+ * Assignments:
+ * Assignments are continued aligned with the first item after the assignment,
+ * unless the assign is followed by a newline.
+ * Examples:
+ * some.variable = asdf + asdf +
+ * asdf;
+ * some.variable =
+ * asdf + asdf + asdf;
+ *
+ * C++ << operator:
+ * Handled the same as assignment.
+ * Examples:
+ * cout << "this is test number: "
+ * << test_number;
+ *
+ * case:
+ * Started with case or default.
+ * Terminated with close brace at level or another case or default.
+ * Special indenting according to various rules.
+ * - indent of case label
+ * - indent of case body
+ * - how to handle optional braces
+ * Examples:
+ * {
+ * case x: {
+ * a++;
+ * break;
+ * }
+ * case y:
+ * b--;
+ * break;
+ * default:
+ * c++;
+ * break;
+ * }
+ *
+ * Class colon:
+ * Indent continuation by indent_columns:
+ * class my_class :
+ * baseclass1,
+ * baseclass2
+ * {
+ *
+ * Return: same as assignments
+ * If the return statement is not fully paren'd, then the indent continues at
+ * the column of the item after the return. If it is paren'd, then the paren
+ * rules apply.
+ * return somevalue +
+ * othervalue;
+ *
+ * Type: pretty much the same as assignments
+ * Examples:
+ * int foo,
+ * bar,
+ * baz;
+ *
+ * Any other continued item:
+ * There shouldn't be anything not covered by the above cases, but any other
+ * continued item is indented by indent_columns:
+ * Example:
+ * somereallycrazylongname.with[lotsoflongstuff].
+ * thatreallyannoysme.whenIhavetomaintain[thecode] = 3;
+ */
+
+/**
+ * REVISIT: This needs to be re-checked, maybe cleaned up
+ *
+ * Indents comments in a (hopefully) smart manner.
+ *
+ * There are two type of comments that get indented:
+ * - stand alone (ie, no tokens on the line before the comment)
+ * - trailing comments (last token on the line apart from a linefeed)
+ * + note that a stand-alone comment is a special case of a trailing
+ *
+ * The stand alone comments will get indented in one of three ways:
+ * - column 1:
+ * + There is an empty line before the comment AND the indent level is 0
+ * + The comment was originally in column 1
+ *
+ * - Same column as trailing comment on previous line (ie, aligned)
+ * + if originally within TBD (3) columns of the previous comment
+ *
+ * - syntax indent level
+ * + doesn't fit in the previous categories
+ *
+ * Options modify this behavior:
+ * - keep original column (don't move the comment, if possible)
+ * - keep relative column (move out the same amount as first item on line)
+ * - fix trailing comment in column TBD
+ *
+ * @param pc The comment, which is the first item on a line
+ * @param col The column if this is to be put at indent level
+ */
+static void indent_comment(Chunk *pc, size_t col);
+
+
+static size_t token_indent(E_Token type);
+
+
+static size_t calc_indent_continue(const ParsingFrame &frm, size_t pse_tos);
+
+/**
+ * Get candidate chunk first on line to which OC blocks can be indented against.
+ */
+static Chunk *candidate_chunk_first_on_line(Chunk *pc);
+
+/**
+ * We are on a '{' that has parent = OC_BLOCK_EXPR
+ * find the column of the param tag
+ */
+static Chunk *oc_msg_block_indent(Chunk *pc, bool from_brace, bool from_caret, bool from_colon, bool from_keyword);
+
+
+/**
+ * returns true if forward or reverse scan reveals only single newlines or comments
+ * stops when hits code
+ * false if next thing hit is a closing brace, also if 2 newlines in a row
+ */
+static bool single_line_comment_indent_rule_applies(Chunk *start, bool forward);
+
+/**
+ * returns true if semicolon on the same level ends any assign operations
+ * false if next thing hit is not the end of an assign operation
+ */
+static bool is_end_of_assignment(Chunk *pc, const ParsingFrame &frm);
+
+
+void indent_to_column(Chunk *pc, size_t column)
+{
+ LOG_FUNC_ENTRY();
+
+ if (column < pc->GetColumn())
+ {
+ column = pc->GetColumn();
+ }
+ reindent_line(pc, column);
+}
+
+
+enum class align_mode_e : unsigned int
+{
+ SHIFT, //! shift relative to the current column
+ KEEP_ABS, //! try to keep the original absolute column
+ KEEP_REL, //! try to keep the original gap
+};
+
+
+enum class indent_mode_e : int
+{
+ INDENT = 0, //! indent by one level
+ ALIGN = 1, //! align under the open brace/parenthesis
+ IGNORE = -1, //! preserve original indentation
+};
+
+
+void align_to_column(Chunk *pc, size_t column)
+{
+ LOG_FUNC_ENTRY();
+
+ if ( pc->IsNullChunk()
+ || column == pc->GetColumn())
+ {
+ return;
+ }
+ LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s => column is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetColumn(), pc->Text(),
+ get_token_name(pc->GetType()), column);
+
+ const int col_delta = column - pc->GetColumn();
+ size_t min_col = column;
+
+ pc->SetColumn(column);
+
+ do
+ {
+ auto *next = pc->GetNext();
+
+ if (next->IsNullChunk())
+ {
+ break;
+ }
+ const size_t min_delta = space_col_align(pc, next);
+ min_col += min_delta;
+
+ const auto *prev = pc;
+ pc = next;
+
+ auto almod = align_mode_e::SHIFT;
+
+ if ( pc->IsComment()
+ && pc->GetParentType() != CT_COMMENT_EMBED)
+ {
+ log_rule_B("indent_relative_single_line_comments");
+ almod = ( pc->IsSingleLineComment()
+ && options::indent_relative_single_line_comments())
+ ? align_mode_e::KEEP_REL : align_mode_e::KEEP_ABS;
+ }
+
+ if (almod == align_mode_e::KEEP_ABS)
+ {
+ // Keep same absolute column
+ pc->SetColumn(max(pc->GetOrigCol(), min_col));
+ }
+ else if (almod == align_mode_e::KEEP_REL)
+ {
+ // Keep same relative column
+ size_t orig_delta = pc->GetOrigPrevSp() + prev->Len();
+ orig_delta = max<size_t>(orig_delta, min_delta); // keeps orig_delta positive
+
+ pc->SetColumn(prev->GetColumn() + orig_delta);
+ }
+ else // SHIFT
+ {
+ // Shift by the same amount, keep above negative values
+ pc->SetColumn(( col_delta >= 0
+ || (size_t)(abs(col_delta)) < pc->GetColumn())
+ ? pc->GetColumn() + col_delta : 0);
+ pc->SetColumn(max(pc->GetColumn(), min_col));
+ }
+ LOG_FMT(LINDLINED, "%s(%d): %s set column of '%s', type is %s, orig line is %zu, to col %zu (orig col was %zu)\n",
+ __func__, __LINE__,
+ (almod == align_mode_e::KEEP_ABS) ? "abs" :
+ (almod == align_mode_e::KEEP_REL) ? "rel" : "sft",
+ pc->Text(), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetColumn(), pc->GetOrigCol());
+ } while ( pc->IsNotNullChunk()
+ && pc->GetNlCount() == 0);
+} // align_to_column
+
+
+void reindent_line(Chunk *pc, size_t column)
+{
+ LOG_FUNC_ENTRY();
+ char copy[1000];
+
+ LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, orig col is %zu, on '%s' [%s/%s] => %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy),
+ get_token_name(pc->GetType()), get_token_name(pc->GetParentType()),
+ column);
+ log_func_stack_inline(LINDLINE);
+
+ if (column == pc->GetColumn())
+ {
+ return;
+ }
+ int col_delta = column - pc->GetColumn();
+ size_t min_col = column;
+
+ pc->SetColumn(column);
+
+ do
+ {
+ if (QT_SIGNAL_SLOT_found)
+ {
+ // fix the bug #654
+ // connect(&mapper, SIGNAL(mapped(QString &)), this, SLOT(onSomeEvent(QString &)));
+ // look for end of SIGNAL/SLOT block
+ if (!pc->TestFlags(PCF_IN_QT_MACRO))
+ {
+ LOG_FMT(LINDLINE, "FLAGS is NOT set: PCF_IN_QT_MACRO\n");
+ restore_options_for_QT();
+ }
+ }
+ else
+ {
+ // look for begin of SIGNAL/SLOT block
+ if (pc->TestFlags(PCF_IN_QT_MACRO))
+ {
+ LOG_FMT(LINDLINE, "FLAGS is set: PCF_IN_QT_MACRO\n");
+ save_set_options_for_QT(pc->GetLevel());
+ }
+ }
+ Chunk *next = pc->GetNext();
+
+ if (next->IsNullChunk())
+ {
+ break;
+ }
+
+ if (pc->GetNlCount())
+ {
+ min_col = 0;
+ col_delta = 0;
+ }
+ min_col += space_col_align(pc, next);
+ pc = next;
+
+ const bool is_comment = pc->IsComment();
+ log_rule_B("indent_relative_single_line_comments");
+ const bool keep = ( is_comment
+ && pc->IsSingleLineComment()
+ && options::indent_relative_single_line_comments());
+
+ if ( is_comment
+ && pc->GetParentType() != CT_COMMENT_EMBED
+ && !keep)
+ {
+ pc->SetColumn(max(pc->GetOrigCol(), min_col));
+ LOG_FMT(LINDLINE, "%s(%d): set comment on line %zu to col %zu (orig %zu)\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetColumn(), pc->GetOrigCol());
+ }
+ else
+ {
+ pc->SetColumn(max(pc->GetColumn() + col_delta, min_col));
+
+ LOG_FMT(LINDLINED, "%s(%d): set column of ", __func__, __LINE__);
+
+ if (pc->Is(CT_NEWLINE))
+ {
+ LOG_FMT(LINDLINED, "<Newline>");
+ }
+ else
+ {
+ LOG_FMT(LINDLINED, "'%s'", pc->Text());
+ }
+ LOG_FMT(LINDLINED, " to %zu (orig %zu/%zu)\n", pc->GetColumn(), pc->GetOrigLine(), pc->GetOrigCol());
+ }
+ } while ( pc->IsNotNullChunk()
+ && pc->GetNlCount() == 0);
+} // reindent_line
+
+
+static size_t token_indent(E_Token type)
+{
+ switch (type)
+ {
+ case CT_IF:
+ case CT_DO:
+ return(3);
+
+ case CT_FOR:
+ case CT_ELSE: // wacky, but that's what is wanted
+ return(4);
+
+ case CT_WHILE:
+ case CT_USING_STMT:
+ return(6);
+
+ case CT_SWITCH:
+ return(7);
+
+ case CT_ELSEIF:
+ return(8);
+
+ case CT_SYNCHRONIZED:
+ return(13);
+
+ default:
+ return(0);
+ }
+}
+
+
+#define indent_column_set(X) \
+ do { \
+ LOG_FMT(LINDENT2, "%s(%d): orig line is %zu, indent_column changed from %zu to %zu\n", \
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, (size_t)X); \
+ indent_column = (X); \
+ } while (false)
+
+
+static size_t get_indent_first_continue(Chunk *pc)
+{
+ log_rule_B("indent_ignore_first_continue");
+ Chunk *continuation = pc->GetNextType(CT_NEWLINE, pc->GetLevel());
+
+ if (continuation->IsNotNullChunk())
+ {
+ continuation = continuation->GetNext();
+
+ if (continuation->IsNotNullChunk())
+ {
+ return(continuation->GetOrigCol());
+ }
+ }
+ return(0);
+}
+
+
+static size_t calc_indent_continue(const ParsingFrame &frm, size_t pse_tos)
+{
+ log_rule_B("indent_continue");
+ const int ic = options::indent_continue();
+
+ if ( ic < 0
+ && frm.at(pse_tos).GetIndentContinue())
+ {
+ return(frm.at(pse_tos).GetIndent());
+ }
+ return(frm.at(pse_tos).GetIndent() + abs(ic));
+}
+
+
+static size_t calc_indent_continue(const ParsingFrame &frm)
+{
+ return(calc_indent_continue(frm, frm.size() - 1));
+}
+
+
+static Chunk *candidate_chunk_first_on_line(Chunk *pc)
+{
+ Chunk *first = pc->GetFirstChunkOnLine();
+
+ log_rule_B("indent_inside_ternary_operator");
+
+ if ( options::indent_inside_ternary_operator()
+ && ( first->Is(CT_QUESTION)
+ || first->Is(CT_COND_COLON)))
+ {
+ return(first->GetNextNcNnl());
+ }
+ else
+ {
+ return(first);
+ }
+}
+
+
+static Chunk *oc_msg_block_indent(Chunk *pc, bool from_brace,
+ bool from_caret, bool from_colon,
+ bool from_keyword)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *tmp = pc->GetPrevNc();
+
+ if (from_brace)
+ {
+ return(pc);
+ }
+
+ // Skip to open paren in ':^TYPE *(ARGS) {'
+ if (tmp->IsParenClose())
+ {
+ tmp = tmp->GetOpeningParen()->GetPrevNc();
+ }
+
+ // // Check for star in ':^TYPE *(ARGS) {'. Issue 2477
+ if (tmp->Is(CT_PTR_TYPE))
+ {
+ tmp = tmp->GetPrevNc();
+ }
+
+ // Check for type in ':^TYPE *(ARGS) {'. Issue 2482
+ if (tmp->Is(CT_TYPE))
+ {
+ tmp = tmp->GetPrevNc();
+ }
+ // Check for caret in ':^TYPE *(ARGS) {'
+ // Store the caret position
+ Chunk *caret_tmp = Chunk::NullChunkPtr;
+
+ if ( tmp->IsNotNullChunk()
+ && tmp->GetType() == CT_OC_BLOCK_CARET)
+ {
+ caret_tmp = tmp;
+ }
+ else
+ {
+ caret_tmp = tmp->GetPrevType(CT_OC_BLOCK_CARET);
+ tmp = caret_tmp;
+ }
+
+ // If we still cannot find caret then return first chunk on the line
+ if ( tmp->IsNullChunk()
+ || tmp->IsNot(CT_OC_BLOCK_CARET))
+ {
+ return(candidate_chunk_first_on_line(pc));
+ }
+
+ if (from_caret)
+ {
+ return(tmp);
+ }
+ tmp = tmp->GetPrevNc();
+
+ // Check for colon in ':^TYPE *(ARGS) {'
+ if (from_colon)
+ {
+ if ( tmp->IsNullChunk()
+ || tmp->IsNot(CT_OC_COLON))
+ {
+ return(candidate_chunk_first_on_line(pc));
+ }
+ else
+ {
+ return(tmp);
+ }
+ }
+ tmp = tmp->GetPrevNc();
+
+ if (from_keyword)
+ {
+ if ( tmp->IsNullChunk()
+ || ( tmp->IsNot(CT_OC_MSG_NAME)
+ && tmp->IsNot(CT_OC_MSG_FUNC)))
+ {
+ return(candidate_chunk_first_on_line(pc));
+ }
+ else
+ {
+ return(tmp);
+ }
+ }
+ // In almost all the cases, its better to return the first chunk on the line than not indenting at all.
+ tmp = candidate_chunk_first_on_line(pc);
+ return(tmp);
+} // oc_msg_block_indent
+
+
+#define log_indent() \
+ do { _log_indent(__func__, __LINE__, frm); \
+ } while (false)
+
+
+static void _log_indent(const char *func, const uint32_t line, const ParsingFrame &frm)
+{
+ LOG_FMT(LINDLINE, "%s(%d): frm.pse_tos is %zu, ...indent is %zu\n",
+ func, line, frm.size() - 1, frm.top().GetIndent());
+}
+
+
+#define log_prev_indent() \
+ do { _log_prev_indent(__func__, __LINE__, frm); \
+ } while (false)
+
+
+static void _log_prev_indent(const char *func, const uint32_t line, const ParsingFrame &frm)
+{
+ LOG_FMT(LINDLINE, "%s(%d): frm.pse_tos is %zu, prev....indent is %zu\n",
+ func, line, frm.size() - 1, frm.prev().GetIndent());
+}
+
+
+#define log_indent_tmp() \
+ do { _log_indent_tmp(__func__, __LINE__, frm); \
+ } while (false)
+
+
+static void _log_indent_tmp(const char *func, const uint32_t line, const ParsingFrame &frm)
+{
+ LOG_FMT(LINDLINE, "%s(%d): frm.pse_tos is %zu, ...indent_tmp is %zu\n",
+ func, line, frm.size() - 1, frm.top().GetIndentTmp());
+}
+
+
+static void quick_indent_again()
+{
+ LOG_FUNC_ENTRY();
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if (pc->GetIndentData().ref == nullptr)
+ {
+ continue;
+ }
+ Chunk *tmp = pc->GetPrev();
+
+ if (!tmp->IsNewline())
+ {
+ continue;
+ }
+ const size_t col = pc->GetIndentData().ref->GetColumn() + pc->GetIndentData().delta;
+ indent_to_column(pc, col);
+
+ LOG_FMT(LINDENTAG, "%s(%d): [%zu] indent [%s] to %zu based on [%s] @ %zu:%zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->Text(), col,
+ pc->GetIndentData().ref->Text(), pc->GetIndentData().ref->GetOrigLine(),
+ pc->GetIndentData().ref->GetColumn());
+ }
+}
+
+
+void indent_text()
+{
+ LOG_FUNC_ENTRY();
+ bool did_newline = true;
+ size_t vardefcol = 0;
+
+ log_rule_B("indent_columns");
+ const size_t indent_size = options::indent_columns();
+ size_t indent_column = 0;
+ int xml_indent = 0;
+ size_t sql_col = 0;
+ size_t sql_orig_col = 0;
+ bool in_func_def = false;
+
+
+ ParsingFrameStack frames;
+ ParsingFrame frm;
+
+
+ Chunk *pc = Chunk::GetHead();
+ bool classFound = false; // Issue #672
+
+ while (pc->IsNotNullChunk())
+ {
+ LOG_CHUNK(LINDLINE, pc);
+
+ // Mark continuation lines if absolute indentation is requested
+ if ( options::indent_continue() < 0
+ && ( pc->Is(CT_PAREN_OPEN)
+ || pc->Is(CT_LPAREN_OPEN)
+ || pc->Is(CT_SPAREN_OPEN)
+ || pc->Is(CT_FPAREN_OPEN)
+ || pc->Is(CT_RPAREN_OPEN)
+ || pc->Is(CT_SQUARE_OPEN)
+ || pc->Is(CT_ANGLE_OPEN)))
+ {
+ Chunk *next = pc->GetNext();
+
+ if (next->IsNewline())
+ {
+ while (next->IsNewline())
+ {
+ next = next->GetNext();
+ }
+
+ if ( next->IsNotNullChunk()
+ && !next->IsPreproc())
+ {
+ // Mark chunk as continuation line, so indentation can be
+ // correctly set over multiple passes
+ next->SetFlagBits(PCF_CONT_LINE);
+
+ // Mark open and close parens as continuation line chunks.
+ // This will prevent an additional level and frame to be
+ // added to the current frame stack (issue 3105).
+ LOG_FMT(LSPLIT, "%s(%d): set PCF_LINE_CONT for pc text '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+
+ pc->SetFlagBits(PCF_CONT_LINE);
+ Chunk *closing_paren = pc->GetClosingParen();
+
+ if (closing_paren->IsNotNullChunk())
+ {
+ closing_paren->SetFlagBits(PCF_CONT_LINE);
+ }
+ }
+ }
+ }
+ // forces string literal to column-1 [Fix for 1246]
+ log_rule_B("indent_col1_multi_string_literal");
+
+ if ( (pc->GetType() == CT_STRING_MULTI)
+ && !(cpd.lang_flags & LANG_OC) // Issue #1795
+ && options::indent_col1_multi_string_literal())
+ {
+ string str = pc->Text();
+
+ if ( (str[0] == '@')
+ && (pc->GetPrev()->GetType() == CT_NEWLINE))
+ {
+ indent_column_set(1);
+ reindent_line(pc, indent_column);
+ pc = pc->GetNext();
+ did_newline = false;
+ }
+ }
+
+ if (pc->Is(CT_NEWLINE))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, <Newline>\n",
+ __func__, __LINE__, pc->GetOrigLine());
+ }
+ else if (pc->Is(CT_NL_CONT))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, CT_NL_CONT\n",
+ __func__, __LINE__, pc->GetOrigLine());
+ }
+ else
+ {
+ char copy[1000];
+ LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, orig col is %zu, column is %zu, for '%s'\n ",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetColumn(), pc->ElidedText(copy));
+ log_pcf_flags(LINDLINE, pc->GetFlags());
+ }
+ log_rule_B("use_options_overriding_for_qt_macros");
+
+ if ( options::use_options_overriding_for_qt_macros()
+ && ( strcmp(pc->Text(), "SIGNAL") == 0
+ || strcmp(pc->Text(), "SLOT") == 0))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): orig line=%zu: type %s SIGNAL/SLOT found\n",
+ __func__, __LINE__, pc->GetOrigLine(), get_token_name(pc->GetType()));
+ }
+ // Handle preprocessor transitions
+ log_rule_B("indent_brace_parent");
+ const size_t parent_token_indent = (options::indent_brace_parent())
+ ? token_indent(pc->GetParentType()) : 0;
+
+ // Handle "force indentation of function definition to start in column 1"
+ log_rule_B("indent_func_def_force_col1");
+
+ if (options::indent_func_def_force_col1())
+ {
+ if (!in_func_def)
+ {
+ Chunk *next = pc->GetNextNcNnl();
+
+ if ( pc->GetParentType() == CT_FUNC_DEF
+ || ( pc->Is(CT_COMMENT)
+ && next->IsNotNullChunk()
+ && next->GetParentType() == CT_FUNC_DEF))
+ {
+ in_func_def = true;
+ frm.push(pc, __func__, __LINE__);
+ frm.top().SetIndentTmp(1);
+ frm.top().SetIndent(1);
+ frm.top().SetIndentTab(1);
+ }
+ }
+ else
+ {
+ Chunk *prev = pc->GetPrev();
+
+ if ( prev->Is(CT_BRACE_CLOSE)
+ && prev->GetParentType() == CT_FUNC_DEF)
+ {
+ in_func_def = false;
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+ }
+ }
+ // Clean up after a #define, etc
+ const bool in_preproc = pc->TestFlags(PCF_IN_PREPROC);
+
+ if (!in_preproc)
+ {
+ while ( !frm.empty()
+ && frm.top().GetInPreproc())
+ {
+ const E_Token type = frm.top().GetOpenToken();
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+
+ /*
+ * If we just removed an #endregion, then check to see if a
+ * PP_REGION_INDENT entry is right below it
+ */
+ if ( type == CT_PP_ENDREGION
+ && frm.top().GetOpenToken() == CT_PP_REGION_INDENT)
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+ }
+ }
+ else if (pc->Is(CT_PREPROC)) // #
+ {
+ // Close out PP_IF_INDENT before playing with the parse frames
+ if ( frm.top().GetOpenToken() == CT_PP_IF_INDENT
+ && ( pc->GetParentType() == CT_PP_ENDIF
+ || pc->GetParentType() == CT_PP_ELSE))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+ ParsingFrame frmbkup = frm;
+ frames.check(frm, cpd.pp_level, pc);
+
+ // Indent the body of a #region here
+ log_rule_B("pp_region_indent_code");
+
+ if ( options::pp_region_indent_code()
+ && pc->GetParentType() == CT_PP_REGION)
+ {
+ Chunk *next = pc->GetNext();
+
+ if (next->IsNullChunk())
+ {
+ break;
+ }
+ // Hack to get the logs to look right
+ next->SetType(CT_PP_REGION_INDENT);
+ frm.push(next, __func__, __LINE__);
+ next->SetType(CT_PP_REGION);
+
+ // Indent one level
+ frm.top().SetIndent(frm.prev().GetIndent() + indent_size);
+ log_indent();
+
+ frm.top().SetIndentTab(frm.prev().GetIndentTab() + indent_size);
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ frm.top().SetInPreproc(false);
+ log_indent_tmp();
+ }
+ // If option set, remove indent inside switch statement
+ log_rule_B("indent_switch_pp");
+
+ if ( frm.top().GetOpenToken() == CT_CASE
+ && !options::indent_switch_pp())
+ {
+ frm.push(pc, __func__, __LINE__);
+ LOG_FMT(LINDPC, "%s(%d): frm.top().indent is %zu, indent_size is %zu\n",
+ __func__, __LINE__, frm.top().GetIndent(), indent_size);
+
+ if (frm.top().GetIndent() >= indent_size)
+ {
+ frm.prev().SetIndent(frm.top().GetIndent() - indent_size);
+ }
+ log_prev_indent();
+ }
+ // Indent the body of a #if here
+ log_rule_B("pp_if_indent_code");
+
+ if ( options::pp_if_indent_code()
+ && ( pc->GetParentType() == CT_PP_IF
+ || pc->GetParentType() == CT_PP_ELSE))
+ {
+ Chunk *next = pc->GetNext();
+
+ if (next->IsNullChunk())
+ {
+ break;
+ }
+ int should_indent_preproc = true;
+ int should_ignore_preproc = false;
+ Chunk *preproc_next = pc->GetNextNl();
+ preproc_next = preproc_next->GetNextNcNnlNet();
+
+ /* Look ahead at what's on the line after the #if */
+ log_rule_B("pp_indent_brace");
+ log_rule_B("pp_indent_func_def");
+ log_rule_B("pp_indent_case");
+ log_rule_B("pp_indent_extern");
+
+ while ( preproc_next->IsNotNullChunk()
+ && preproc_next->IsNot(CT_NEWLINE))
+ {
+ if ( (preproc_next->Is(CT_BRACE_OPEN))
+ || (preproc_next->Is(CT_BRACE_CLOSE)))
+ {
+ if (options::pp_indent_brace() == 0)
+ {
+ should_indent_preproc = false;
+ break;
+ }
+ else if (options::pp_indent_brace() == -1)
+ {
+ should_ignore_preproc = true;
+ break;
+ }
+ }
+ else if ( ( preproc_next->Is(CT_FUNC_DEF)
+ && !options::pp_indent_func_def())
+ || ( preproc_next->Is(CT_CASE)
+ && !options::pp_indent_case())
+ || ( preproc_next->Is(CT_EXTERN)
+ && !options::pp_indent_extern()))
+ {
+ should_indent_preproc = false;
+ break;
+ }
+ preproc_next = preproc_next->GetNext();
+ }
+
+ if (should_indent_preproc)
+ {
+ // Hack to get the logs to look right
+
+ const E_Token memtype = next->GetType();
+ next->SetType(CT_PP_IF_INDENT);
+ frm.push(next, __func__, __LINE__);
+ next->SetType(memtype);
+
+ if (should_ignore_preproc)
+ {
+ // Preserve original indentation
+ frm.top().SetIndent(pc->GetNextNl()->GetNext()->GetOrigCol());
+ log_indent();
+ }
+ else
+ {
+ // Indent one level except if the #if is a #include guard
+ size_t extra = ( pc->GetPpLevel() == 0
+ && ifdef_over_whole_file())
+ ? 0 : indent_size;
+
+ frm.top().SetIndent(frm.prev().GetIndent() + extra);
+ log_indent();
+
+ frm.top().SetIndentTab(frm.prev().GetIndentTab() + extra);
+ }
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ frm.top().SetInPreproc(false);
+ log_indent_tmp();
+ }
+ }
+ log_rule_B("indent_member_single");
+
+ if (options::indent_member_single())
+ {
+ if (pc->GetParentType() == CT_PP_IF)
+ {
+ // do nothing
+ }
+ else if (pc->GetParentType() == CT_PP_ELSE)
+ {
+ if ( frm.top().GetOpenToken() == CT_MEMBER
+ && frm.top().GetPopChunk()->IsNotNullChunk()
+ && frm.top().GetOpenChunk() != frmbkup.top().GetOpenChunk())
+ {
+ Chunk *tmp = pc->GetNextNcNnlNpp();
+
+ if (tmp->IsNotNullChunk())
+ {
+ if ( tmp->Is(CT_WORD)
+ || tmp->Is(CT_TYPE))
+ {
+ tmp = pc->GetNextNcNnlNpp();
+ }
+ else if ( tmp->Is(CT_FUNC_CALL)
+ || tmp->Is(CT_FPAREN_OPEN))
+ {
+ tmp = tmp->GetNextType(CT_FPAREN_CLOSE, tmp->GetLevel());
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp = pc->GetNextNcNnlNpp();
+ }
+ }
+
+ if (tmp->IsNotNullChunk())
+ {
+ frm.top().SetPopChunk(tmp);
+ }
+ }
+ }
+ }
+ else if (pc->GetParentType() == CT_PP_ENDIF)
+ {
+ if ( frmbkup.top().GetOpenToken() == CT_MEMBER
+ && frm.top().GetOpenToken() == CT_MEMBER)
+ {
+ frm.top().SetPopChunk(frmbkup.top().GetPopChunk());
+ }
+ }
+ }
+ // Transition into a preproc by creating a dummy indent
+ Chunk *pp_next = pc->GetNext();
+
+ if (pp_next->IsNullChunk())
+ {
+ return;
+ }
+ frm.push(pp_next, __func__, __LINE__);
+
+ if ( pc->GetParentType() == CT_PP_DEFINE
+ || pc->GetParentType() == CT_PP_UNDEF)
+ {
+ log_rule_B("pp_define_at_level");
+ frm.top().SetIndentTmp(options::pp_define_at_level()
+ ? frm.prev().GetIndentTmp() : 1);
+
+ log_rule_B("pp_multiline_define_body_indent");
+
+ if (options::pp_multiline_define_body_indent() < 0)
+ {
+ frm.top().SetIndent(-options::pp_multiline_define_body_indent());
+ }
+ else
+ {
+ frm.top().SetIndent(pc->GetColumn() + options::pp_multiline_define_body_indent());
+ }
+ log_indent();
+
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ log_indent_tmp();
+ }
+ else if ( ( pc->GetParentType() == CT_PP_PRAGMA
+ || pc->GetParentType() == CT_PP_OTHER)
+ && options::pp_define_at_level())
+ {
+ log_rule_B("pp_define_at_level");
+ frm.top().SetIndentTmp(frm.prev().GetIndentTmp());
+ frm.top().SetIndent(frm.top().GetIndentTmp() + indent_size);
+ log_indent();
+
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ log_indent_tmp();
+ }
+ else if ( pc->GetParentType() == CT_PP_INCLUDE
+ && options::pp_include_at_level())
+ {
+ log_rule_B("pp_include_at_level");
+ frm.top().SetIndentTmp(frm.prev().GetIndentTmp());
+ frm.top().SetIndent(frm.top().GetIndentTmp() + indent_size);
+ log_indent();
+
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ log_indent_tmp();
+ }
+ else
+ {
+ if ( (frm.prev().GetOpenToken() == CT_PP_REGION_INDENT)
+ || ( (frm.prev().GetOpenToken() == CT_PP_IF_INDENT)
+ && (frm.top().GetOpenToken() != CT_PP_ENDIF)))
+ {
+ frm.top().SetIndent(frm.prev(2).GetIndent());
+ log_indent();
+ }
+ else
+ {
+ frm.top().SetIndent(frm.prev().GetIndent());
+ log_indent();
+ }
+ log_indent();
+
+
+ int val = 0;
+
+ if ( pc->GetParentType() == CT_PP_REGION
+ || pc->GetParentType() == CT_PP_ENDREGION)
+ {
+ log_rule_B("pp_indent_region");
+ val = options::pp_indent_region();
+ log_indent();
+ }
+ else if ( pc->GetParentType() == CT_PP_IF
+ || pc->GetParentType() == CT_PP_ELSE
+ || pc->GetParentType() == CT_PP_ENDIF)
+ {
+ log_rule_B("pp_indent_if");
+ val = options::pp_indent_if();
+ log_indent();
+ }
+
+ if (val != 0)
+ {
+ size_t indent = frm.top().GetIndent();
+ indent = (val > 0) ? val // reassign if positive val,
+ : ((size_t)(abs(val)) < indent) // else if no underflow
+ ? (indent + val) : 0; // reduce, else 0
+ frm.top().SetIndent(indent);
+ }
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+ }
+ }
+ // Check for close XML tags "</..."
+ log_rule_B("indent_xml_string");
+
+ if (options::indent_xml_string() > 0)
+ {
+ if (pc->Is(CT_STRING))
+ {
+ if ( pc->Len() > 4
+ && xml_indent > 0
+ && pc->GetStr()[1] == '<'
+ && pc->GetStr()[2] == '/')
+ {
+ log_rule_B("indent_xml_string");
+ xml_indent -= options::indent_xml_string();
+ }
+ }
+ else if (!pc->IsCommentOrNewline())
+ {
+ xml_indent = 0;
+ }
+ }
+ // Handle non-brace closures
+ log_indent_tmp();
+
+ bool token_used = false;
+ size_t old_frm_size;
+
+ do
+ {
+ old_frm_size = frm.size();
+
+ // End anything that drops a level
+ if ( !pc->IsCommentOrNewline()
+ && frm.top().GetOpenLevel() > pc->GetLevel())
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ if (frm.top().GetOpenLevel() >= pc->GetLevel())
+ {
+ // process virtual braces closes (no text output)
+ if ( pc->Is(CT_VBRACE_CLOSE)
+ && frm.top().GetOpenToken() == CT_VBRACE_OPEN)
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ pc = pc->GetNext();
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+
+ if (pc->IsNullChunk())
+ {
+ // need to break out of both the do and while loops
+ goto null_pc;
+ }
+ }
+
+ if ( pc->Is(CT_BRACE_CLOSE)
+ && pc->GetParentType() == CT_ENUM)
+ {
+ Chunk *prev_ncnl = pc->GetPrevNcNnl();
+ LOG_FMT(LINDLINE, "%s(%d): prev_ncnl is '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, prev_ncnl->Text(), prev_ncnl->GetOrigLine(), prev_ncnl->GetOrigCol());
+
+ if (prev_ncnl->Is(CT_COMMA))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): prev_ncnl is comma\n", __func__, __LINE__);
+ }
+ else
+ {
+ LOG_FMT(LINDLINE, "%s(%d): prev_ncnl is NOT comma\n", __func__, __LINE__);
+ }
+ }
+
+ // End any assign operations with a semicolon on the same level
+ if (is_end_of_assignment(pc, frm))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+ // Pop Colon from stack in ternary operator
+ // a
+ // ? b
+ // : e/*top*/;/*pc*/
+ log_rule_B("indent_inside_ternary_operator");
+
+ if ( options::indent_inside_ternary_operator()
+ && (frm.top().GetOpenToken() == CT_COND_COLON)
+ && ( pc->IsSemicolon()
+ || pc->Is(CT_COMMA)
+ || pc->Is(CT_OC_MSG_NAME)
+ || pc->Is(CT_SPAREN_CLOSE))) // Issue #1130, #1715
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ // End any assign operations with a semicolon on the same level
+ if ( pc->IsSemicolon()
+ && ( (frm.top().GetOpenToken() == CT_IMPORT)
+ || (frm.top().GetOpenToken() == CT_USING)))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ // End any custom macro-based open/closes
+ if ( !token_used
+ && (frm.top().GetOpenToken() == CT_MACRO_OPEN)
+ && pc->Is(CT_MACRO_CLOSE))
+ {
+ token_used = true;
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ // End any CPP/ObjC class colon stuff
+ if ( ( (frm.top().GetOpenToken() == CT_CLASS_COLON)
+ || (frm.top().GetOpenToken() == CT_CONSTR_COLON))
+ && ( pc->Is(CT_BRACE_OPEN)
+ || pc->Is(CT_OC_END)
+ || pc->Is(CT_OC_SCOPE)
+ || pc->Is(CT_OC_PROPERTY)
+ || pc->Is(CT_TYPEDEF) // Issue #2675
+ || pc->Is(CT_MACRO_OPEN)
+ || pc->Is(CT_MACRO_CLOSE)
+ || ( language_is_set(LANG_OC)
+ && pc->IsComment()
+ && pc->GetParentType() == CT_COMMENT_WHOLE) // Issue #2675
+ || pc->IsSemicolon()))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ // End ObjC class colon stuff inside of generic definition (like Test<T1: id<T3>>)
+ if ( (frm.top().GetOpenToken() == CT_CLASS_COLON)
+ && pc->Is(CT_ANGLE_CLOSE)
+ && pc->GetParentType() == CT_OC_GENERIC_SPEC)
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ // End Objc nested message and boxed array
+ // TODO: ideally formatting would know which opens occurred on a line and group closes in the same manor
+ if ( language_is_set(LANG_OC)
+ && pc->Is(CT_SQUARE_CLOSE)
+ && pc->GetParentType() == CT_OC_AT
+ && frm.top().GetOpenLevel() >= pc->GetLevel())
+ {
+ size_t count = 1;
+ Chunk *next = pc->GetNextNc();
+
+ while ( next->IsNotNullChunk()
+ && ( ( next->Is(CT_BRACE_CLOSE)
+ && next->GetParentType() == CT_OC_AT)
+ || ( next->Is(CT_SQUARE_CLOSE)
+ && next->GetParentType() == CT_OC_AT)
+ || ( next->Is(CT_SQUARE_CLOSE)
+ && next->GetParentType() == CT_OC_MSG)))
+ {
+ count++;
+ next = next->GetNextNc();
+ }
+ count = std::min(count, frm.size());
+
+ if (count > 0)
+ {
+ while (count-- > 0)
+ {
+ if (frm.top().GetOpenToken() == CT_SQUARE_OPEN)
+ {
+ if (frm.GetParenCount() == 0)
+ {
+ fprintf(stderr, "%s(%d): frame parenthesis count is ZERO, cannot be decremented, at line %zu, column %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ frm.SetParenCount(frm.GetParenCount() - 1);
+ }
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ if (next->IsNotNullChunk())
+ {
+ // End any assign operations with a semicolon on the same level
+ if (is_end_of_assignment(next, frm))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+ }
+ // Indent the brace to match outer most brace/square
+ indent_column_set(frm.top().GetIndentTmp());
+ continue;
+ }
+ }
+
+ // a case is ended with another case or a close brace
+ if ( (frm.top().GetOpenToken() == CT_CASE)
+ && ( pc->Is(CT_BRACE_CLOSE)
+ || pc->Is(CT_CASE)))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ if (frm.top().GetPopChunk()->IsNotNullChunk())
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pop_pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, frm.top().GetPopChunk()->GetOrigLine(), frm.top().GetPopChunk()->GetOrigCol(),
+ frm.top().GetPopChunk()->Text(), get_token_name(frm.top().GetPopChunk()->GetType()));
+ }
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+
+ if ( (frm.top().GetOpenToken() == CT_MEMBER)
+ && frm.top().GetPopChunk() == pc)
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ if ( (frm.top().GetOpenToken() == CT_LAMBDA)
+ && ( pc->Is(CT_SEMICOLON)
+ || pc->Is(CT_COMMA)
+ || pc->Is(CT_BRACE_OPEN)))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+ // a class scope is ended with another class scope or a close brace
+ log_rule_B("indent_access_spec_body");
+
+ if ( options::indent_access_spec_body()
+ && (frm.top().GetOpenToken() == CT_ACCESS)
+ && ( pc->Is(CT_BRACE_CLOSE)
+ || pc->Is(CT_ACCESS)))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ // return & throw are ended with a semicolon
+ if ( pc->IsSemicolon()
+ && ( (frm.top().GetOpenToken() == CT_RETURN)
+ || (frm.top().GetOpenToken() == CT_THROW)))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ // an OC SCOPE ('-' or '+') ends with a semicolon or brace open
+ if ( (frm.top().GetOpenToken() == CT_OC_SCOPE)
+ && ( pc->IsSemicolon()
+ || pc->Is(CT_BRACE_OPEN)))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ /*
+ * a typedef and an OC SCOPE ('-' or '+') ends with a semicolon or
+ * brace open
+ */
+ if ( (frm.top().GetOpenToken() == CT_TYPEDEF)
+ && ( pc->IsSemicolon()
+ || pc->IsParenOpen()
+ || pc->Is(CT_BRACE_OPEN)))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ // an SQL EXEC is ended with a semicolon
+ if ( (frm.top().GetOpenToken() == CT_SQL_EXEC)
+ && pc->IsSemicolon())
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ // an CLASS is ended with a semicolon or brace open
+ if ( (frm.top().GetOpenToken() == CT_CLASS)
+ && ( pc->Is(CT_CLASS_COLON)
+ || pc->Is(CT_BRACE_OPEN)
+ || pc->IsSemicolon()))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+ log_rule_B("indent_oc_inside_msg_sel");
+
+ // Pop OC msg selector stack
+ if ( options::indent_oc_inside_msg_sel()
+ && (frm.top().GetOpenToken() != CT_SQUARE_OPEN)
+ && frm.top().GetOpenLevel() >= pc->GetLevel()
+ && ( pc->Is(CT_OC_MSG_FUNC)
+ || pc->Is(CT_OC_MSG_NAME))) // Issue #2658
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ // Close out parenthesis and squares
+ if ( (frm.top().GetOpenToken() == (pc->GetType() - 1))
+ && ( pc->Is(CT_PAREN_CLOSE)
+ || pc->Is(CT_LPAREN_CLOSE) // Issue #3054
+ || pc->Is(CT_SPAREN_CLOSE)
+ || pc->Is(CT_FPAREN_CLOSE)
+ || pc->Is(CT_RPAREN_CLOSE) // Issue #3914
+ || pc->Is(CT_SQUARE_CLOSE)
+ || pc->Is(CT_ANGLE_CLOSE))
+ && ( !pc->TestFlags(PCF_CONT_LINE)
+ || options::indent_continue() >= 0))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+
+ if (frm.GetParenCount() == 0)
+ {
+ fprintf(stderr, "%s(%d): frame parenthesis count is ZERO, cannot be decremented, at line %zu, column %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ frm.SetParenCount(frm.GetParenCount() - 1);
+ }
+ }
+ } while (old_frm_size > frm.size());
+
+ // Grab a copy of the current indent
+ indent_column_set(frm.top().GetIndentTmp()); // Issue #3294
+ log_indent_tmp();
+
+ log_rule_B("indent_single_newlines");
+
+ if ( pc->Is(CT_NEWLINE)
+ && options::indent_single_newlines())
+ {
+ pc->SetNlColumn(indent_column);
+ }
+
+ if ( !pc->IsCommentOrNewline()
+ && log_sev_on(LINDPC))
+ {
+ LOG_FMT(LINDPC, "%s(%d):\n", __func__, __LINE__);
+ LOG_FMT(LINDPC, " -=[ pc orig line is %zu, orig col is %zu, Text() is '%s' ]=-, frm.size() is %zu\n",
+ pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), frm.size());
+
+ for (size_t ttidx = frm.size() - 1; ttidx > 0; ttidx--)
+ {
+ LOG_FMT(LINDPC, " [%zu %zu:%zu '%s' %s/%s tmp=%zu indent=%zu brace indent=%zu indent tab=%zu indent continue=%d level=%zu pc brace level=%zu]\n",
+ ttidx,
+ frm.at(ttidx).GetOpenChunk()->GetOrigLine(),
+ frm.at(ttidx).GetOpenChunk()->GetOrigCol(),
+ frm.at(ttidx).GetOpenChunk()->Text(),
+ get_token_name(frm.at(ttidx).GetOpenToken()),
+ get_token_name(frm.at(ttidx).GetOpenChunk()->GetParentType()),
+ frm.at(ttidx).GetIndentTmp(),
+ frm.at(ttidx).GetIndent(),
+ frm.at(ttidx).GetBraceIndent(),
+ frm.at(ttidx).GetIndentTab(),
+ frm.at(ttidx).GetIndentContinue(),
+ frm.at(ttidx).GetOpenLevel(),
+ frm.at(ttidx).GetOpenChunk()->GetBraceLevel());
+ }
+ }
+ char copy[1000];
+ LOG_FMT(LINDENT2, "%s(%d): orig line is %zu, orig col is %zu, column is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetColumn(), pc->ElidedText(copy));
+
+ // Issue #672
+ if ( pc->Is(CT_BRACE_OPEN)
+ && classFound)
+ {
+ LOG_FMT(LINDENT, "%s(%d): CT_BRACE_OPEN found, CLOSE IT\n",
+ __func__, __LINE__);
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ classFound = false;
+ }
+ /*
+ * Handle stuff that can affect the current indent:
+ * - brace close
+ * - vbrace open
+ * - brace open
+ * - case (immediate)
+ * - labels (immediate)
+ * - class colons (immediate)
+ *
+ * And some stuff that can't
+ * - open paren
+ * - open square
+ * - assignment
+ * - return
+ */
+ log_rule_B("indent_braces");
+ log_rule_B("indent_braces_no_func");
+ log_rule_B("indent_braces_no_class");
+ log_rule_B("indent_braces_no_struct");
+ const bool brace_indent = ( ( pc->Is(CT_BRACE_CLOSE)
+ || pc->Is(CT_BRACE_OPEN))
+ && options::indent_braces()
+ && ( !options::indent_braces_no_func()
+ || pc->GetParentType() != CT_FUNC_DEF)
+ && ( !options::indent_braces_no_func()
+ || pc->GetParentType() != CT_FUNC_CLASS_DEF)
+ && ( !options::indent_braces_no_class()
+ || pc->GetParentType() != CT_CLASS)
+ && ( !options::indent_braces_no_struct()
+ || pc->GetParentType() != CT_STRUCT));
+ LOG_FMT(LINDENT, "%s(%d): brace_indent is %s\n",
+ __func__, __LINE__, brace_indent ? "true" : "false");
+
+ if (pc->Is(CT_BRACE_CLOSE))
+ {
+ if (language_is_set(LANG_OC))
+ {
+ if ( frm.top().GetOpenToken() == CT_BRACE_OPEN
+ && frm.top().GetOpenLevel() >= pc->GetLevel())
+ {
+ size_t count = 1;
+ Chunk *next = pc->GetNextNc();
+
+ while ( next->IsNotNullChunk()
+ && ( ( next->Is(CT_BRACE_CLOSE)
+ && next->GetParentType() == CT_OC_AT)
+ || ( next->Is(CT_SQUARE_CLOSE)
+ && next->GetParentType() == CT_OC_AT)))
+ {
+ count++;
+ next = next->GetNextNc();
+ }
+ count = std::min(count, frm.size());
+
+ // End Objc nested boxed dictionary
+ // TODO: ideally formatting would know which opens occurred on a line and group closes in the same manor
+ if ( count > 0
+ && pc->Is(CT_BRACE_CLOSE)
+ && pc->GetParentType() == CT_OC_AT)
+ {
+ if (frm.top().GetIndentData().ref)
+ {
+ pc->IndentData().ref = frm.top().GetIndentData().ref;
+ pc->IndentData().delta = 0;
+ }
+
+ while (count-- > 0)
+ {
+ LOG_CHUNK(LINDLINE, pc);
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ if (next->IsNotNullChunk())
+ {
+ // End any assign operations with a semicolon on the same level
+ if (is_end_of_assignment(next, frm))
+ {
+ LOG_CHUNK(LINDLINE, pc);
+ frm.pop(__func__, __LINE__, pc);
+ }
+ }
+
+ // Indent the brace to match outer most brace/square
+ if (frm.top().GetIndentContinue())
+ {
+ indent_column_set(frm.top().GetIndentTmp() - indent_size);
+ }
+ else
+ {
+ indent_column_set(frm.top().GetIndentTmp());
+ }
+ }
+ else
+ {
+ // Indent the brace to match the open brace
+ indent_column_set(frm.top().GetBraceIndent());
+
+ if (frm.top().GetIndentData().ref)
+ {
+ pc->IndentData().ref = frm.top().GetIndentData().ref;
+ pc->IndentData().delta = 0;
+ }
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+ }
+ }
+ else if (frm.top().GetBraceIndent()) // Issue #3421
+ {
+ // Indent the brace to match the open brace
+ indent_column_set(frm.top().GetBraceIndent());
+
+ if (frm.top().GetIndentData().ref)
+ {
+ pc->IndentData().ref = frm.top().GetIndentData().ref;
+ pc->IndentData().delta = 0;
+ }
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+ }
+ else if (pc->Is(CT_VBRACE_OPEN))
+ {
+ frm.push(pc, __func__, __LINE__);
+
+ log_rule_B("indent_min_vbrace_open");
+ size_t iMinIndent = options::indent_min_vbrace_open();
+
+ if (indent_size > iMinIndent)
+ {
+ iMinIndent = indent_size;
+ }
+ size_t iNewIndent = frm.prev().GetIndent() + iMinIndent;
+
+ log_rule_B("indent_vbrace_open_on_tabstop");
+
+ if (options::indent_vbrace_open_on_tabstop())
+ {
+ iNewIndent = next_tab_column(iNewIndent);
+ }
+ frm.top().SetIndent(iNewIndent);
+ log_indent();
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ log_indent_tmp();
+
+ // Always indent on virtual braces
+ indent_column_set(frm.top().GetIndentTmp());
+ }
+ else if ( pc->Is(CT_BRACE_OPEN)
+ && pc->GetNext()->IsNot(CT_NAMESPACE))
+ {
+ LOG_FMT(LINDENT2, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ frm.push(pc, __func__, __LINE__);
+
+ log_rule_B("indent_macro_brace");
+
+ if ( !options::indent_macro_brace()
+ && frm.prev().GetOpenToken() == CT_PP_DEFINE
+ && frm.prev().GetOpenLine() == frm.top().GetOpenLine())
+ {
+ LOG_FMT(LINDENT2, "%s(%d): indent_macro_brace\n", __func__, __LINE__);
+ }
+ else if ( options::indent_cpp_lambda_body()
+ && pc->GetParentType() == CT_CPP_LAMBDA)
+ {
+ log_rule_B("indent_cpp_lambda_body");
+ frm.top().SetBraceIndent(frm.prev().GetIndent());
+
+ Chunk *head = frm.top().GetOpenChunk()->GetPrevNcNnlNpp();
+ Chunk *tail = Chunk::NullChunkPtr;
+ Chunk *frm_prev = frm.prev().GetOpenChunk();
+ bool enclosure = ( frm_prev->GetParentType() != CT_FUNC_DEF // Issue #3407
+ && frm_prev != frm_prev->GetClosingParen());
+ bool linematch = true;
+
+ for (auto it = frm.rbegin(); it != frm.rend() && tail->IsNullChunk(); ++it)
+ {
+ if (it->GetOpenChunk() != frm.top().GetOpenChunk())
+ {
+ linematch &= it->GetOpenChunk()->IsOnSameLine(head);
+ }
+ Chunk *match = it->GetOpenChunk()->GetClosingParen();
+
+ if (match->IsNullChunk())
+ {
+ continue;
+ }
+ Chunk *target = match->GetNextNcNnlNpp();
+
+ while ( tail->IsNullChunk()
+ && target->IsNotNullChunk())
+ {
+ if ( target->IsSemicolon()
+ && target->GetLevel() == match->GetLevel())
+ {
+ tail = target;
+ }
+ else if (target->GetLevel() < match->GetLevel())
+ {
+ break;
+ }
+ else
+ {
+ target = target->GetNextNcNnlNpp();
+ }
+ }
+ }
+
+ bool toplevel = true;
+
+ for (auto it = frm.rbegin(); it != frm.rend() && tail->IsNotNullChunk(); ++it)
+ {
+ if (!it->GetOpenChunk()->Is(CT_FPAREN_OPEN))
+ {
+ continue;
+ }
+
+ if (it->GetOpenChunk()->GetLevel() < tail->GetLevel())
+ {
+ toplevel = false;
+ break;
+ }
+ }
+
+ // A few things to check:
+ // 1. The matching brace is on the same line as the ending semicolon
+ // 2a. If it's an assignment, check that both sides of the assignment operator are on the same line
+ // 2b. If it's inside some closure, check that all the frames are on the same line,
+ // and it is in the top level closure, and indent_continue is non-zero
+ bool sameLine = frm.top().GetOpenChunk()->GetClosingParen()->IsOnSameLine(tail);
+
+ bool isAssignSameLine =
+ !enclosure
+ && options::align_assign_span() == 0
+ && !options::indent_align_assign()
+ && frm.prev().GetOpenChunk()->GetPrevNcNnlNpp()->IsOnSameLine(frm.prev().GetOpenChunk())
+ && frm.prev().GetOpenChunk()->IsOnSameLine(frm.prev().GetOpenChunk()->GetNextNcNnlNpp());
+
+ bool closureSameLineTopLevel =
+ (options::indent_continue() > 0)
+ && enclosure
+ && linematch
+ && toplevel
+ && frm.top().GetOpenChunk()->GetClosingParen()->IsOnSameLine(frm.top().GetOpenChunk());
+
+ if ( sameLine
+ && ( (isAssignSameLine)
+ || (closureSameLineTopLevel)))
+ {
+ if (indent_size > frm.top().GetBraceIndent()) // if options::indent_indent_columns() is too big
+ {
+ frm.top().SetBraceIndent(1);
+ }
+ else
+ {
+ frm.top().SetBraceIndent(frm.top().GetBraceIndent() - indent_size);
+ }
+ }
+ indent_column_set(frm.top().GetBraceIndent());
+ frm.top().SetIndent(indent_column + indent_size);
+ log_indent();
+
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+
+ frm.prev().SetIndentTmp(frm.top().GetIndentTmp());
+ log_indent_tmp();
+ }
+ else if ( language_is_set(LANG_CPP)
+ && options::indent_cpp_lambda_only_once()
+ && (pc->GetParentType() == CT_CPP_LAMBDA))
+ {
+ // test example cpp:30756
+ log_rule_B("indent_cpp_lambda_only_once");
+
+ size_t namespace_indent_to_ignore = 0; // Issue #1813
+ log_rule_B("indent_namespace");
+
+ if (!options::indent_namespace())
+ {
+ for (auto i = frm.rbegin(); i != frm.rend(); ++i)
+ {
+ if (i->GetNsCount())
+ {
+ namespace_indent_to_ignore = i->GetNsCount();
+ break;
+ }
+ }
+ }
+ // Issue # 1296
+ frm.top().SetBraceIndent(1 + (pc->GetBraceLevel() - namespace_indent_to_ignore) * indent_size);
+ indent_column_set(frm.top().GetBraceIndent());
+ frm.top().SetIndent(indent_column + indent_size);
+ log_indent();
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+
+ frm.prev().SetIndentTmp(frm.top().GetIndentTmp());
+ log_indent_tmp();
+ }
+ else if ( language_is_set(LANG_CS | LANG_JAVA)
+ && options::indent_cs_delegate_brace()
+ && ( pc->GetParentType() == CT_LAMBDA
+ || pc->GetParentType() == CT_DELEGATE))
+ {
+ log_rule_B("indent_cs_delegate_brace");
+ frm.top().SetBraceIndent(1 + (pc->GetBraceLevel() + 1) * indent_size);
+ indent_column_set(frm.top().GetBraceIndent());
+ frm.top().SetIndent(indent_column + indent_size);
+ log_indent();
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+
+ frm.prev().SetIndentTmp(frm.top().GetIndentTmp());
+ log_indent_tmp();
+ }
+ else if ( language_is_set(LANG_CS | LANG_JAVA)
+ && !options::indent_cs_delegate_brace()
+ && !options::indent_align_paren()
+ && ( pc->GetParentType() == CT_LAMBDA
+ || pc->GetParentType() == CT_DELEGATE))
+ {
+ log_rule_B("indent_cs_delegate_brace");
+ log_rule_B("indent_align_paren");
+ frm.top().SetBraceIndent(frm.prev().GetIndent());
+
+ // Issue # 1620, UNI-24090.cs
+ if (frm.prev().GetOpenChunk()->IsOnSameLine(frm.top().GetOpenChunk()->GetPrevNcNnlNpp()))
+ {
+ frm.top().SetBraceIndent(frm.top().GetBraceIndent() - indent_size);
+ }
+ indent_column_set(frm.top().GetBraceIndent());
+ frm.top().SetIndent(indent_column + indent_size);
+ log_indent();
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+ frm.prev().SetIndentTmp(frm.top().GetIndentTmp());
+ log_indent_tmp();
+ }
+ else if ( !options::indent_paren_open_brace()
+ && !language_is_set(LANG_CS)
+ && pc->GetParentType() == CT_CPP_LAMBDA
+ && ( pc->TestFlags(PCF_IN_FCN_DEF)
+ || pc->TestFlags(PCF_IN_FCN_CTOR)) // Issue #2152
+ && pc->GetNextNc()->IsNewline())
+ {
+ log_rule_B("indent_paren_open_brace");
+ // Issue #1165
+ LOG_FMT(LINDENT2, "%s(%d): orig line is %zu, brace level is %zu, for '%s', pc->GetLevel() is %zu, pc(-1)->GetLevel() is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetBraceLevel(), pc->Text(), pc->GetLevel(), frm.prev().GetOpenChunk()->GetLevel());
+ frm.top().SetBraceIndent(1 + (pc->GetBraceLevel() + 1) * indent_size);
+ indent_column_set(frm.top().GetBraceIndent());
+ frm.top().SetIndent(frm.prev().GetIndentTmp());
+ log_indent();
+
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+ }
+ // any '{' that is inside of a '(' overrides the '(' indent
+ // only to help the vim command }
+ else if ( !options::indent_paren_open_brace()
+ && frm.prev().GetOpenChunk()->IsParenOpen()
+ && pc->GetNextNc()->IsNewline())
+ {
+ log_rule_B("indent_paren_open_brace");
+ LOG_FMT(LINDENT2, "%s(%d): orig line is %zu, brace level is %zu, for '%s', pc->GetLevel() is %zu, pc(-1)->GetLevel() is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetBraceLevel(), pc->Text(), pc->GetLevel(), frm.prev().GetOpenChunk()->GetLevel());
+ // FIXME: I don't know how much of this is necessary, but it seems to work
+ frm.top().SetBraceIndent(1 + pc->GetBraceLevel() * indent_size);
+ indent_column_set(frm.top().GetBraceIndent());
+ frm.top().SetIndent(indent_column + indent_size);
+ log_indent();
+
+ if ( (pc->GetParentType() == CT_OC_BLOCK_EXPR)
+ && pc->TestFlags(PCF_IN_OC_MSG))
+ {
+ frm.top().SetIndent(frm.prev().GetIndentTmp() + indent_size);
+ log_indent();
+ frm.top().SetBraceIndent(frm.prev().GetIndentTmp());
+ indent_column_set(frm.top().GetBraceIndent());
+ }
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+
+ frm.prev().SetIndentTmp(frm.top().GetIndentTmp());
+ }
+ else if ( frm.GetParenCount() != 0
+ && !pc->TestFlags(PCF_IN_LAMBDA)) // Issue #3761
+ {
+ if (frm.top().GetOpenChunk()->GetParentType() == CT_OC_BLOCK_EXPR)
+ {
+ log_rule_B("indent_oc_block_msg");
+
+ if ( pc->TestFlags(PCF_IN_OC_MSG)
+ && options::indent_oc_block_msg())
+ {
+ frm.top().IndentData().ref = oc_msg_block_indent(pc, false, false, false, true);
+ log_rule_B("indent_oc_block_msg");
+ frm.top().IndentData().delta = options::indent_oc_block_msg();
+ }
+ log_rule_B("indent_oc_block");
+ log_rule_B("indent_oc_block_msg_xcode_style");
+
+ if ( options::indent_oc_block()
+ || options::indent_oc_block_msg_xcode_style())
+ {
+ bool in_oc_msg = pc->TestFlags(PCF_IN_OC_MSG);
+ log_rule_B("indent_oc_block_msg_from_keyword");
+ bool indent_from_keyword = options::indent_oc_block_msg_from_keyword()
+ && in_oc_msg;
+ log_rule_B("indent_oc_block_msg_from_colon");
+ bool indent_from_colon = options::indent_oc_block_msg_from_colon()
+ && in_oc_msg;
+ log_rule_B("indent_oc_block_msg_from_caret");
+ bool indent_from_caret = options::indent_oc_block_msg_from_caret()
+ && in_oc_msg;
+ log_rule_B("indent_oc_block_msg_from_brace");
+ bool indent_from_brace = options::indent_oc_block_msg_from_brace()
+ && in_oc_msg;
+
+ /*
+ * In "Xcode indent mode", we want to indent:
+ * - if the colon is aligned (namely, if a newline has been
+ * added before it), indent_from_brace
+ * - otherwise, indent from previous block (the "else" statement here)
+ */
+ log_rule_B("indent_oc_block_msg_xcode_style");
+
+ if (options::indent_oc_block_msg_xcode_style())
+ {
+ Chunk *bbc = pc->GetClosingParen(); // block brace close '}'
+ Chunk *bbc_next_ncnl = bbc->GetNextNcNnl();
+
+ if ( bbc_next_ncnl->GetType() == CT_OC_MSG_NAME
+ || bbc_next_ncnl->GetType() == CT_OC_MSG_FUNC)
+ {
+ indent_from_brace = false;
+ indent_from_colon = false;
+ indent_from_caret = false;
+ indent_from_keyword = true;
+ }
+ else
+ {
+ indent_from_brace = false;
+ indent_from_colon = false;
+ indent_from_caret = false;
+ indent_from_keyword = false;
+ }
+ }
+ Chunk *ref = oc_msg_block_indent(pc, indent_from_brace,
+ indent_from_caret,
+ indent_from_colon,
+ indent_from_keyword);
+
+ if (ref->IsNotNullChunk())
+ {
+ frm.top().SetIndent(indent_size + ref->GetColumn());
+ }
+ else
+ {
+ frm.top().SetIndent(1 + ((pc->GetBraceLevel() + 1) * indent_size));
+ }
+ log_indent();
+ indent_column_set(frm.top().GetIndent() - indent_size);
+ }
+ else
+ {
+ frm.top().SetIndent(frm.prev().GetIndentTmp() + indent_size);
+ log_indent();
+ }
+ }
+ else if ( frm.top().GetOpenChunk()->GetType() == CT_BRACE_OPEN
+ && frm.top().GetOpenChunk()->GetParentType() == CT_OC_AT)
+ {
+ // We are inside @{ ... } -- indent one tab from the paren
+ if (frm.prev().GetIndentContinue())
+ {
+ frm.top().SetIndent(frm.prev().GetIndentTmp());
+ }
+ else
+ {
+ frm.top().SetIndent(frm.prev().GetIndentTmp() + indent_size);
+ }
+ log_indent();
+ }
+ // Issue # 1620, UNI-24090.cs
+ else if ( frm.prev().GetOpenChunk()->IsOnSameLine(frm.top().GetOpenChunk())
+ && !options::indent_align_paren()
+ && frm.prev().GetOpenChunk()->IsParenOpen()
+ && !pc->TestFlags(PCF_ONE_LINER))
+ {
+ log_rule_B("indent_align_paren");
+ // We are inside ({ ... }) -- where { and ( are on the same line, avoiding double indentations.
+ // only to help the vim command }
+ frm.top().SetBraceIndent(frm.prev().GetIndent() - indent_size);
+ indent_column_set(frm.top().GetBraceIndent());
+ frm.top().SetIndent(frm.prev().GetIndentTmp());
+ log_indent();
+ }
+ else if ( frm.prev().GetOpenChunk()->IsOnSameLine(frm.top().GetOpenChunk()->GetPrevNcNnlNpp())
+ && !options::indent_align_paren()
+ && frm.prev().GetOpenChunk()->IsParenOpen()
+ && !pc->TestFlags(PCF_ONE_LINER))
+ {
+ log_rule_B("indent_align_paren");
+ // We are inside ({ ... }) -- where { and ( are on adjacent lines, avoiding indentation of brace.
+ // only to help the vim command }
+ frm.top().SetBraceIndent(frm.prev().GetIndent() - indent_size);
+ indent_column_set(frm.top().GetBraceIndent());
+ frm.top().SetIndent(frm.prev().GetIndentTmp());
+ log_indent();
+ }
+ else if ( options::indent_oc_inside_msg_sel()
+ && ( frm.prev().GetOpenToken() == CT_OC_MSG_FUNC
+ || frm.prev().GetOpenToken() == CT_OC_MSG_NAME)) // Issue #2658
+ {
+ log_rule_B("indent_oc_inside_msg_sel");
+ // [Class Message:{<here>
+ frm.top().SetIndent(frm.prev().GetOpenChunk()->GetColumn() + indent_size);
+ log_indent();
+ indent_column_set(frm.prev().GetOpenChunk()->GetColumn());
+ }
+ // Issue #3813
+ else if (pc->TestFlags(PCF_OC_IN_BLOCK) && pc->GetParentType() == CT_SWITCH)
+ {
+ frm.top().SetIndent(frm.prev().GetIndentTmp());
+ }
+ else
+ {
+ // We are inside ({ ... }) -- indent one tab from the paren
+ frm.top().SetIndent(frm.prev().GetIndentTmp() + indent_size);
+
+ if (!frm.prev().GetOpenChunk()->IsParenOpen())
+ {
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ }
+ log_indent();
+ }
+ }
+ else if ( frm.top().GetOpenChunk()->GetType() == CT_BRACE_OPEN
+ && frm.top().GetOpenChunk()->GetParentType() == CT_OC_AT)
+ {
+ // We are inside @{ ... } -- indent one tab from the paren
+ if (frm.prev().GetIndentContinue())
+ {
+ frm.top().SetIndent(frm.prev().GetIndentTmp());
+ }
+ else
+ {
+ frm.top().SetIndent(frm.prev().GetIndentTmp() + indent_size);
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ }
+ log_indent();
+ }
+ else if ( ( pc->GetParentType() == CT_BRACED_INIT_LIST
+ || ( !options::indent_compound_literal_return()
+ && pc->GetParentType() == CT_C_CAST))
+ && frm.prev().GetOpenToken() == CT_RETURN)
+ {
+ log_rule_B("indent_compound_literal_return");
+
+ // we're returning either a c compound literal (CT_C_CAST) or a
+ // C++11 initialization list (CT_BRACED_INIT_LIST), use indent from the return.
+ if (frm.prev().GetIndentContinue())
+ {
+ frm.top().SetIndent(frm.prev().GetIndentTmp());
+ }
+ else
+ {
+ frm.top().SetIndent(frm.prev().GetIndentTmp() + indent_size);
+ }
+ log_indent();
+ }
+ else
+ {
+ // Use the prev indent level + indent_size.
+ if (pc->GetParentType() == CT_SWITCH)
+ {
+ frm.top().SetIndent(frm.prev().GetIndent() + options::indent_switch_body());
+ }
+ else
+ {
+ frm.top().SetIndent(frm.prev().GetIndent() + indent_size);
+ }
+ LOG_FMT(LINDLINE, "%s(%d): frm.pse_tos is %zu, ... indent is %zu\n",
+ __func__, __LINE__, frm.size() - 1, frm.top().GetIndent());
+ LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s', parent type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(),
+ get_token_name(pc->GetParentType()));
+
+ // If this brace is part of a statement, bump it out by indent_brace
+ if ( pc->GetParentType() == CT_IF
+ || pc->GetParentType() == CT_ELSE
+ || pc->GetParentType() == CT_ELSEIF
+ || pc->GetParentType() == CT_TRY
+ || pc->GetParentType() == CT_CATCH
+ || pc->GetParentType() == CT_DO
+ || pc->GetParentType() == CT_WHILE
+ || pc->GetParentType() == CT_USING_STMT
+ || pc->GetParentType() == CT_SWITCH
+ || pc->GetParentType() == CT_SYNCHRONIZED
+ || pc->GetParentType() == CT_FOR)
+ {
+ if (parent_token_indent != 0)
+ {
+ frm.top().SetIndent(frm.top().GetIndent() + parent_token_indent - indent_size);
+ log_indent();
+ }
+ else
+ {
+ log_rule_B("indent_brace");
+ frm.top().SetIndent(frm.top().GetIndent() + options::indent_brace());
+ log_indent();
+ indent_column_set(indent_column + options::indent_brace());
+ }
+ }
+ else if (pc->GetParentType() == CT_CASE)
+ {
+ if (options::indent_ignore_case_brace())
+ {
+ log_rule_B("indent_ignore_case_brace");
+ indent_column_set(pc->GetOrigCol());
+ }
+ else
+ {
+ log_rule_B("indent_case_brace");
+ const auto tmp_indent = static_cast<int>(frm.prev().GetIndent())
+ - static_cast<int>(indent_size)
+ + options::indent_case_brace();
+ /*
+ * An open brace with the parent of case does not indent by default
+ * options::indent_case_brace() can be used to indent the brace.
+ * So we need to take the CASE indent, subtract off the
+ * indent_size that was added above and then add indent_case_brace.
+ * may take negative value
+ */
+ indent_column_set(max(tmp_indent, 0));
+ }
+ // Stuff inside the brace still needs to be indented
+ frm.top().SetIndent(indent_column + indent_size);
+ log_indent();
+
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+ }
+ else if ( pc->GetParentType() == CT_CLASS
+ && !options::indent_class())
+ {
+ log_rule_B("indent_class");
+ LOG_FMT(LINDENT, "%s(%d): orig line is %zu, orig col is %zu, text is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ frm.top().SetIndent(frm.top().GetIndent() - indent_size);
+ log_indent();
+ }
+ else if (pc->GetParentType() == CT_NAMESPACE)
+ {
+ frm.top().SetNsCount(frm.prev().GetNsCount() + 1);
+
+ log_rule_B("indent_namespace");
+ log_rule_B("indent_namespace_single_indent");
+
+ if ( options::indent_namespace()
+ && options::indent_namespace_single_indent())
+ {
+ if (frm.top().GetNsCount() >= 2)
+ {
+ // undo indent on all except the first namespace
+ frm.top().SetIndent(frm.top().GetIndent() - indent_size);
+ log_indent();
+ }
+ indent_column_set(frm.prev(frm.top().GetNsCount()).GetIndent());
+ }
+ else if ( options::indent_namespace()
+ && options::indent_namespace_inner_only())
+ {
+ if (frm.top().GetNsCount() == 1)
+ {
+ // undo indent on first namespace only
+ frm.top().SetIndent(frm.top().GetIndent() - indent_size);
+ log_indent();
+ }
+ }
+ else if ( pc->TestFlags(PCF_LONG_BLOCK)
+ || !options::indent_namespace())
+ {
+ log_rule_B("indent_namespace");
+ // don't indent long blocks
+ frm.top().SetIndent(frm.top().GetIndent() - indent_size);
+ log_indent();
+ }
+ else // indenting 'short' namespace
+ {
+ log_rule_B("indent_namespace_level");
+
+ if (options::indent_namespace_level() > 0)
+ {
+ frm.top().SetIndent(frm.top().GetIndent() - indent_size);
+ log_indent();
+ frm.top().SetIndent(frm.top().GetIndent() + options::indent_namespace_level());
+ log_indent();
+ }
+ }
+ }
+ else if ( pc->GetParentType() == CT_EXTERN
+ && !options::indent_extern())
+ {
+ log_rule_B("indent_extern");
+ frm.top().SetIndent(frm.top().GetIndent() - indent_size);
+ log_indent();
+ }
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ }
+
+ if (pc->TestFlags(PCF_DONT_INDENT))
+ {
+ frm.top().SetIndent(pc->GetColumn());
+ log_indent();
+
+ indent_column_set(pc->GetColumn());
+ }
+ else
+ {
+ /*
+ * If there isn't a newline between the open brace and the next
+ * item, just indent to wherever the next token is.
+ * This covers this sort of stuff:
+ * { a++;
+ * b--; };
+ */
+ Chunk *next = pc->GetNextNcNnl();
+
+ if (next->IsNullChunk())
+ {
+ break;
+ }
+ Chunk *prev = pc->GetPrev();
+
+ if ( pc->GetParentType() == CT_BRACED_INIT_LIST
+ && prev->Is(CT_BRACE_OPEN)
+ && prev->GetParentType() == CT_BRACED_INIT_LIST)
+ {
+ indent_column = frm.prev().GetBraceIndent();
+ frm.top().SetIndent(frm.prev().GetIndent());
+ log_indent();
+ }
+ else if ( !pc->IsNewlineBetween(next)
+ && next->GetParentType() != CT_BRACED_INIT_LIST
+ && options::indent_token_after_brace()
+ && !pc->TestFlags(PCF_ONE_LINER)) // Issue #1108
+ {
+ log_rule_B("indent_token_after_brace");
+ frm.top().SetIndent(next->GetColumn());
+ log_indent();
+ }
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ frm.top().SetOpenLine(pc->GetOrigLine());
+ log_indent_tmp();
+
+ log_rule_B("Update the indent_column");
+
+ // Update the indent_column if needed
+ if ( brace_indent
+ || parent_token_indent != 0)
+ {
+ indent_column_set(frm.top().GetIndentTmp());
+ log_indent_tmp();
+ }
+ }
+ // Save the brace indent
+ frm.top().SetBraceIndent(indent_column);
+ }
+ else if (pc->Is(CT_SQL_END))
+ {
+ if (frm.top().GetOpenToken() == CT_SQL_BEGIN)
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ indent_column_set(frm.top().GetIndentTmp());
+ log_indent_tmp();
+ }
+ }
+ else if ( pc->Is(CT_SQL_BEGIN)
+ || pc->Is(CT_MACRO_OPEN)
+ || ( pc->Is(CT_CLASS)
+ && language_is_set(LANG_CS))) // Issue #3536
+ {
+ frm.push(pc, __func__, __LINE__);
+
+ frm.top().SetIndent(frm.prev().GetIndent() + indent_size);
+ log_indent();
+
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ log_indent_tmp();
+ }
+ else if (pc->Is(CT_SQL_EXEC))
+ {
+ frm.push(pc, __func__, __LINE__);
+
+ frm.top().SetIndent(frm.prev().GetIndent() + indent_size);
+ log_indent();
+
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+ }
+ else if (pc->Is(CT_MACRO_ELSE))
+ {
+ if (frm.top().GetOpenToken() == CT_MACRO_OPEN)
+ {
+ indent_column_set(frm.prev().GetIndent());
+ }
+ }
+ else if (pc->Is(CT_CASE))
+ {
+ // Start a case - indent options::indent_switch_case() from the switch level
+ log_rule_B("indent_switch_case");
+ const size_t tmp = frm.top().GetIndent() + indent_size
+ - options::indent_switch_body()
+ + options::indent_switch_case();
+ frm.push(pc, __func__, __LINE__);
+
+ frm.top().SetIndent(tmp);
+ log_indent();
+
+ log_rule_B("indent_case_shift");
+ frm.top().SetIndentTmp(tmp - indent_size + options::indent_case_shift());
+ frm.top().SetIndentTab(tmp);
+ log_indent_tmp();
+
+ // Always set on case statements
+ indent_column_set(frm.top().GetIndentTmp());
+
+ if (options::indent_case_comment())
+ {
+ // comments before 'case' need to be aligned with the 'case'
+ Chunk *pct = pc;
+
+ while ( ((pct = pct->GetPrevNnl())->IsNotNullChunk())
+ && pct->IsComment())
+ {
+ Chunk *t2 = pct->GetPrev();
+
+ if (t2->IsNewline())
+ {
+ pct->SetColumn(frm.top().GetIndentTmp());
+ pct->SetColumnIndent(pct->GetColumn());
+ }
+ }
+ }
+ }
+ else if (pc->Is(CT_BREAK))
+ {
+ Chunk *prev = pc->GetPrevNcNnl();
+
+ if ( prev->Is(CT_BRACE_CLOSE)
+ && prev->GetParentType() == CT_CASE)
+ {
+ // issue #663 + issue #1366
+ Chunk *prev_prev_newline = pc->GetPrevNl()->GetPrevNl();
+
+ if (prev_prev_newline->IsNotNullChunk())
+ {
+ // This only affects the 'break', so no need for a stack entry
+ indent_column_set(prev_prev_newline->GetNext()->GetColumn());
+ }
+ }
+ }
+ else if (pc->Is(CT_LABEL))
+ {
+ if (options::indent_ignore_label())
+ {
+ log_rule_B("indent_ignore_label");
+ indent_column_set(pc->GetOrigCol());
+ }
+ else
+ {
+ log_rule_B("indent_label");
+ const int val = options::indent_label();
+ size_t pse_indent = frm.top().GetIndent();
+
+ // Labels get sent to the left or backed up
+ if (val > 0)
+ {
+ indent_column_set(val);
+
+ Chunk *next = pc->GetNext()->GetNext(); // colon + possible statement
+
+ if ( next->IsNotNullChunk()
+ && !next->IsNewline()
+ // label (+ 2, because there is colon and space after it) must fit into indent
+ && (val + pc->Len() + 2 <= pse_indent))
+ {
+ reindent_line(next, pse_indent);
+ }
+ }
+ else
+ {
+ bool no_underflow = (size_t)(abs(val)) < pse_indent;
+ indent_column_set((no_underflow ? (pse_indent + val) : 0));
+ }
+ }
+ }
+ else if (pc->Is(CT_ACCESS))
+ {
+ log_rule_B("indent_access_spec_body");
+
+ if (options::indent_access_spec_body())
+ {
+ const size_t tmp = frm.top().GetIndent() + indent_size;
+ frm.push(pc, __func__, __LINE__);
+
+ frm.top().SetIndent(tmp);
+ log_indent();
+
+ frm.top().SetIndentTmp(tmp - indent_size);
+ frm.top().SetIndentTab(tmp);
+ log_indent_tmp();
+
+ /*
+ * If we are indenting the body, then we must leave the access spec
+ * indented at brace level
+ */
+ indent_column_set(frm.top().GetIndentTmp());
+ // Issues 1161 + 2704
+ // comments before 'access specifier' need to be aligned with the 'access specifier'
+ // unless it is a Doxygen comment
+ Chunk *pct = pc;
+
+ while ( ((pct = pct->GetPrevNnl())->IsNotNullChunk())
+ && pct->IsComment()
+ && !pct->IsDoxygenComment())
+ {
+ Chunk *t2 = pct->GetPrev();
+
+ if (t2->IsNewline())
+ {
+ pct->SetColumn(frm.top().GetIndentTmp());
+ pct->SetColumnIndent(pct->GetColumn());
+ }
+ }
+ }
+ else
+ {
+ // Access spec labels get sent to the left or backed up
+ log_rule_B("indent_access_spec");
+ int val = options::indent_access_spec();
+
+ if (val > 0)
+ {
+ indent_column_set(val);
+ }
+ else
+ {
+ size_t pse_indent = frm.top().GetIndent();
+ bool no_underflow = (size_t)(abs(val)) < pse_indent;
+
+ indent_column_set(no_underflow ? (pse_indent + val) : 0);
+ }
+ }
+ }
+ else if ( pc->Is(CT_CLASS_COLON)
+ || pc->Is(CT_CONSTR_COLON))
+ {
+ // just indent one level
+ frm.push(pc, __func__, __LINE__);
+
+ frm.top().SetIndent(frm.prev().GetIndentTmp() + indent_size);
+ log_indent();
+
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ log_indent_tmp();
+
+ if (pc->Is(CT_CLASS_COLON))
+ {
+ if (options::indent_ignore_before_class_colon())
+ {
+ log_rule_B("indent_ignore_before_class_colon");
+ frm.top().SetIndentTmp(pc->GetOrigCol());
+ log_indent_tmp();
+ }
+ else if (options::indent_before_class_colon() != 0)
+ {
+ log_rule_B("indent_before_class_colon");
+ frm.top().SetIndentTmp(std::max<ptrdiff_t>(frm.top().GetIndentTmp() + options::indent_before_class_colon(), 0));
+ log_indent_tmp();
+ }
+ }
+ indent_column_set(frm.top().GetIndentTmp());
+
+ log_rule_B("indent_class_colon");
+
+ if ( options::indent_class_colon()
+ && pc->Is(CT_CLASS_COLON))
+ {
+ log_rule_B("indent_class_on_colon");
+
+ if (options::indent_class_on_colon())
+ {
+ frm.top().SetIndent(pc->GetColumn());
+ log_indent();
+ }
+ else
+ {
+ Chunk *next = pc->GetNext();
+
+ if ( next->IsNotNullChunk()
+ && !next->IsNewline())
+ {
+ frm.top().SetIndent(next->GetColumn());
+ log_indent();
+ }
+ }
+ }
+ else if (pc->Is(CT_CONSTR_COLON))
+ {
+ if (options::indent_ignore_before_constr_colon())
+ {
+ log_rule_B("indent_ignore_before_constr_colon");
+ frm.top().SetIndentTmp(pc->GetOrigCol());
+ indent_column_set(frm.top().GetIndentTmp());
+ }
+
+ if (options::indent_constr_colon())
+ {
+ log_rule_B("indent_constr_colon");
+ Chunk *prev = pc->GetPrev();
+
+ if (prev->IsNewline())
+ {
+ log_rule_B("indent_ctor_init_following");
+ frm.top().SetIndent(frm.top().GetIndent() + options::indent_ctor_init_following());
+ log_indent();
+ }
+ // TODO: Create a dedicated indent_constr_on_colon?
+ log_rule_B("indent_class_on_colon");
+
+ if (options::indent_ctor_init() != 0)
+ {
+ log_rule_B("indent_ctor_init");
+ /*
+ * If the std::max() calls were specialized with size_t (the type of the underlying variable),
+ * they would never actually do their job, because size_t is unsigned and therefore even
+ * a "negative" result would be always greater than zero.
+ * Using ptrdiff_t (a standard signed type of the same size as size_t) in order to avoid that.
+ */
+ frm.top().SetIndent(std::max<ptrdiff_t>(frm.top().GetIndent() + options::indent_ctor_init(), 0));
+ log_indent();
+ frm.top().SetIndentTmp(std::max<ptrdiff_t>(frm.top().GetIndentTmp() + options::indent_ctor_init(), 0));
+ frm.top().SetIndentTab(std::max<ptrdiff_t>(frm.top().GetIndentTab() + options::indent_ctor_init(), 0));
+ log_indent_tmp();
+ indent_column_set(frm.top().GetIndentTmp());
+ }
+ else if (options::indent_class_on_colon())
+ {
+ frm.top().SetIndent(pc->GetColumn());
+ log_indent();
+ }
+ else
+ {
+ Chunk *next = pc->GetNext();
+
+ if ( next->IsNotNullChunk()
+ && !next->IsNewline())
+ {
+ frm.top().SetIndent(next->GetColumn());
+ log_indent();
+ }
+ }
+ }
+ }
+ }
+ else if ( pc->Is(CT_PAREN_OPEN)
+ && ( pc->GetParentType() == CT_ASM
+ || ( pc->GetPrevNcNnl()->IsNotNullChunk()
+ && pc->GetPrevNcNnl()->GetType() == CT_ASM))
+ && options::indent_ignore_asm_block())
+ {
+ log_rule_B("indent_ignore_asm_block");
+ Chunk *tmp = pc->GetClosingParen();
+
+ int move = 0;
+
+ if ( pc->GetPrev()->IsNewline()
+ && pc->GetColumn() != indent_column)
+ {
+ move = indent_column - pc->GetColumn();
+ }
+ else
+ {
+ move = pc->GetColumn() - pc->GetOrigCol();
+ }
+
+ do
+ {
+ if (!pc->TestFlags(PCF_IN_PREPROC))
+ {
+ pc->SetColumn(pc->GetOrigCol() + move);
+ }
+ pc = pc->GetNext();
+ } while (pc != tmp);
+
+ reindent_line(pc, indent_column);
+ }
+ else if ( ( pc->Is(CT_PAREN_OPEN)
+ || pc->Is(CT_LPAREN_OPEN) // Issue #3054
+ || pc->Is(CT_SPAREN_OPEN)
+ || pc->Is(CT_FPAREN_OPEN)
+ || pc->Is(CT_RPAREN_OPEN) // Issue #3914
+ || pc->Is(CT_SQUARE_OPEN)
+ || pc->Is(CT_ANGLE_OPEN))
+ && ( !pc->TestFlags(PCF_CONT_LINE)
+ || options::indent_continue() >= 0))
+ {
+ /*
+ * Open parenthesis and squares - never update indent_column,
+ * unless right after a newline.
+ */
+ frm.push(pc, __func__, __LINE__);
+
+ if ( pc->GetPrev()->IsNewline()
+ && pc->GetColumn() != indent_column
+ && !pc->TestFlags(PCF_DONT_INDENT))
+ {
+ LOG_FMT(LINDENT, "%s(%d): orig line is %zu, indent => %zu, text is '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ reindent_line(pc, indent_column);
+ }
+ frm.top().SetIndent(pc->GetColumn() + pc->Len());
+ log_indent();
+
+ if ( pc->Is(CT_SQUARE_OPEN)
+ && language_is_set(LANG_D))
+ {
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ }
+ bool skipped = false;
+ log_rule_B("indent_inside_ternary_operator");
+ log_rule_B("indent_align_paren");
+
+ if ( options::indent_inside_ternary_operator()
+ && ( pc->Is(CT_FPAREN_OPEN)
+ || pc->Is(CT_PAREN_OPEN))
+ && frm.size() > 2
+ && ( frm.prev().GetOpenToken() == CT_QUESTION
+ || frm.prev().GetOpenToken() == CT_COND_COLON)
+ && !options::indent_align_paren())
+ {
+ frm.top().SetIndent(frm.prev().GetIndentTmp() + indent_size);
+ log_indent();
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+ }
+ else if ( ( pc->Is(CT_FPAREN_OPEN)
+ || pc->Is(CT_ANGLE_OPEN))
+ && ( ( options::indent_func_call_param()
+ && ( pc->GetParentType() == CT_FUNC_CALL
+ || pc->GetParentType() == CT_FUNC_CALL_USER))
+ || ( options::indent_func_proto_param()
+ && pc->GetParentType() == CT_FUNC_PROTO)
+ || ( options::indent_func_class_param()
+ && ( pc->GetParentType() == CT_FUNC_CLASS_DEF
+ || pc->GetParentType() == CT_FUNC_CLASS_PROTO))
+ || ( options::indent_template_param()
+ && pc->GetParentType() == CT_TEMPLATE)
+ || ( options::indent_func_ctor_var_param()
+ && pc->GetParentType() == CT_FUNC_CTOR_VAR)
+ || ( options::indent_func_def_param()
+ && pc->GetParentType() == CT_FUNC_DEF)
+ || ( !options::indent_func_def_param() // Issue #931
+ && pc->GetParentType() == CT_FUNC_DEF
+ && options::indent_func_def_param_paren_pos_threshold() > 0
+ && pc->GetOrigCol() > options::indent_func_def_param_paren_pos_threshold())))
+ {
+ log_rule_B("indent_func_call_param");
+ log_rule_B("indent_func_proto_param");
+ log_rule_B("indent_func_class_param");
+ log_rule_B("indent_template_param");
+ log_rule_B("indent_func_ctor_var_param");
+ log_rule_B("indent_func_def_param");
+ log_rule_B("indent_func_def_param_paren_pos_threshold");
+ // Skip any continuation indents
+ size_t idx = (!frm.empty()) ? frm.size() - 2 : 0;
+
+ while ( ( ( idx > 0
+ && frm.at(idx).GetOpenToken() != CT_BRACE_OPEN
+ && frm.at(idx).GetOpenToken() != CT_VBRACE_OPEN
+ && frm.at(idx).GetOpenToken() != CT_PAREN_OPEN
+ && frm.at(idx).GetOpenToken() != CT_FPAREN_OPEN
+ && frm.at(idx).GetOpenToken() != CT_RPAREN_OPEN // Issue #3914
+ && frm.at(idx).GetOpenToken() != CT_SPAREN_OPEN
+ && frm.at(idx).GetOpenToken() != CT_SQUARE_OPEN
+ && frm.at(idx).GetOpenToken() != CT_ANGLE_OPEN
+ && frm.at(idx).GetOpenToken() != CT_CASE
+ && frm.at(idx).GetOpenToken() != CT_MEMBER
+ && frm.at(idx).GetOpenToken() != CT_QUESTION
+ && frm.at(idx).GetOpenToken() != CT_COND_COLON
+ && frm.at(idx).GetOpenToken() != CT_LAMBDA
+ && frm.at(idx).GetOpenToken() != CT_ASSIGN_NL)
+ || frm.at(idx).GetOpenChunk()->IsOnSameLine(frm.top().GetOpenChunk()))
+ && ( frm.at(idx).GetOpenToken() != CT_CLASS_COLON
+ && frm.at(idx).GetOpenToken() != CT_CONSTR_COLON
+ && !( frm.at(idx).GetOpenToken() == CT_LAMBDA
+ && frm.at(idx).GetOpenChunk()->GetPrevNc()->GetType() == CT_NEWLINE)))
+ {
+ if (idx == 0)
+ {
+ fprintf(stderr, "%s(%d): idx is ZERO, cannot be decremented, at line %zu, column %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ idx--;
+ skipped = true;
+ }
+ // PR#381
+ log_rule_B("indent_param");
+
+ if (options::indent_param() != 0)
+ {
+ frm.top().SetIndent(frm.at(idx).GetIndent() + options::indent_param());
+ log_indent();
+ }
+ else
+ {
+ frm.top().SetIndent(frm.at(idx).GetIndent() + indent_size);
+ log_indent();
+ }
+ log_rule_B("indent_func_param_double");
+
+ if (options::indent_func_param_double())
+ {
+ // double is: Use both values of the options indent_columns and indent_param
+ frm.top().SetIndent(frm.top().GetIndent() + indent_size);
+ log_indent();
+ }
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ }
+ else if ( options::indent_oc_inside_msg_sel()
+ && pc->Is(CT_PAREN_OPEN)
+ && frm.size() > 2
+ && ( frm.prev().GetOpenToken() == CT_OC_MSG_FUNC
+ || frm.prev().GetOpenToken() == CT_OC_MSG_NAME)
+ && !options::indent_align_paren()) // Issue #2658
+ {
+ log_rule_B("indent_oc_inside_msg_sel");
+ log_rule_B("indent_align_paren");
+ // When parens are inside OC messages, push on the parse frame stack
+ // [Class Message:(<here>
+ frm.top().SetIndent(frm.prev().GetOpenChunk()->GetColumn() + indent_size);
+ log_indent();
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+ }
+ else if ( pc->Is(CT_PAREN_OPEN)
+ && !pc->GetNext()->IsNewline()
+ && !options::indent_align_paren()
+ && !pc->TestFlags(PCF_IN_SPAREN))
+ {
+ log_rule_B("indent_align_paren");
+ size_t idx = frm.size() - 2;
+
+ while ( idx > 0
+ && frm.at(idx).GetOpenChunk()->IsOnSameLine(frm.top().GetOpenChunk()))
+ {
+ idx--;
+ skipped = true;
+ }
+ frm.top().SetIndent(frm.at(idx).GetIndent() + indent_size);
+ log_indent();
+
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ skipped = true;
+ }
+ else if ( ( pc->IsString("(")
+ && !options::indent_paren_nl())
+ || ( pc->IsString("<")
+ && !options::indent_paren_nl()) // TODO: add indent_angle_nl?
+ || ( pc->IsString("[")
+ && !options::indent_square_nl()))
+ {
+ log_rule_B("indent_paren_nl");
+ log_rule_B("indent_square_nl");
+ Chunk *next = pc->GetNextNc();
+
+ if (next->IsNullChunk())
+ {
+ break;
+ }
+ log_rule_B("indent_paren_after_func_def");
+ log_rule_B("indent_paren_after_func_decl");
+ log_rule_B("indent_paren_after_func_call");
+
+ if ( next->IsNewline()
+ && !options::indent_paren_after_func_def()
+ && !options::indent_paren_after_func_decl()
+ && !options::indent_paren_after_func_call()
+ && ( !pc->TestFlags(PCF_CONT_LINE)
+ || options::indent_continue() >= 0))
+ {
+ size_t sub = 2;
+
+ if ( (frm.prev().GetOpenToken() == CT_ASSIGN)
+ || (frm.prev().GetOpenToken() == CT_RETURN))
+ {
+ sub = 3;
+ }
+ sub = frm.size() - sub;
+
+ log_rule_B("indent_align_paren");
+
+ if (!options::indent_align_paren())
+ {
+ sub = frm.size() - 2;
+
+ while ( sub > 0
+ && frm.at(sub).GetOpenChunk()->IsOnSameLine(frm.top().GetOpenChunk()))
+ {
+ sub--;
+ skipped = true;
+ }
+
+ if ( ( frm.at(sub + 1).GetOpenToken() == CT_CLASS_COLON
+ || frm.at(sub + 1).GetOpenToken() == CT_CONSTR_COLON)
+ && (frm.at(sub + 1).GetOpenChunk()->GetPrev()->Is(CT_NEWLINE)))
+ {
+ sub = sub + 1;
+ }
+ }
+ frm.top().SetIndent(frm.at(sub).GetIndent() + indent_size);
+ log_indent();
+
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ skipped = true;
+ }
+ else
+ {
+ if ( next->IsNotNullChunk()
+ && !next->IsComment())
+ {
+ if (next->Is(CT_SPACE))
+ {
+ next = next->GetNextNc();
+
+ if (next->IsNullChunk())
+ {
+ break;
+ }
+ }
+
+ if (next->GetPrev()->IsComment())
+ {
+ // Issue #2099
+ frm.top().SetIndent(next->GetPrev()->GetColumn());
+ }
+ else
+ {
+ frm.top().SetIndent(next->GetColumn());
+ }
+ log_indent();
+ }
+ }
+ }
+ log_rule_B("use_indent_continue_only_once");
+ log_rule_B("indent_paren_after_func_decl");
+ log_rule_B("indent_paren_after_func_def");
+ log_rule_B("indent_paren_after_func_call");
+
+ if ( ( ( !frm.top().GetIndentContinue() // Issue #3567
+ && vardefcol == 0)
+ || ( !options::use_indent_continue_only_once() // Issue #1160
+ && !options::indent_ignore_first_continue())) // Issue #3561
+ && ( pc->Is(CT_FPAREN_OPEN)
+ && pc->GetPrev()->IsNewline())
+ && ( ( ( pc->GetParentType() == CT_FUNC_PROTO
+ || pc->GetParentType() == CT_FUNC_CLASS_PROTO)
+ && options::indent_paren_after_func_decl())
+ || ( ( pc->GetParentType() == CT_FUNC_DEF
+ || pc->GetParentType() == CT_FUNC_CLASS_DEF)
+ && options::indent_paren_after_func_def())
+ || ( ( pc->GetParentType() == CT_FUNC_CALL
+ || pc->GetParentType() == CT_FUNC_CALL_USER)
+ && options::indent_paren_after_func_call())
+ || !pc->GetNext()->IsNewline()))
+ {
+ frm.top().SetIndent(frm.prev().GetIndent() + indent_size);
+ log_indent();
+
+ indent_column_set(frm.top().GetIndent());
+ }
+ log_rule_B("indent_continue");
+
+ if ( pc->GetParentType() != CT_OC_AT
+ && ( options::indent_ignore_first_continue()
+ || options::indent_continue() != 0)
+ && !skipped)
+ {
+ if (options::indent_ignore_first_continue())
+ {
+ frm.top().SetIndent(get_indent_first_continue(pc->GetNext()));
+ }
+ else
+ {
+ frm.top().SetIndent(frm.prev().GetIndent());
+ }
+ log_indent();
+
+ if ( pc->GetLevel() == pc->GetBraceLevel()
+ && !options::indent_ignore_first_continue()
+ && ( pc->Is(CT_FPAREN_OPEN)
+ || pc->Is(CT_RPAREN_OPEN) // Issue #1170
+ || pc->Is(CT_SPAREN_OPEN)
+ || ( pc->Is(CT_SQUARE_OPEN)
+ && pc->GetParentType() != CT_OC_MSG)
+ || pc->Is(CT_ANGLE_OPEN))) // Issue #1170
+ {
+ log_rule_B("use_indent_continue_only_once");
+
+ if ( (options::use_indent_continue_only_once())
+ && (frm.top().GetIndentContinue())
+ && vardefcol != 0)
+ {
+ /*
+ * The value of the indentation for a continuation line is calculate
+ * differently if the line is:
+ * a declaration :your case with QString fileName ...
+ * an assignment :your case with pSettings = new QSettings( ...
+ * At the second case the option value might be used twice:
+ * at the assignment
+ * at the function call (if present)
+ * If you want to prevent the double use of the option value
+ * you may use the new option :
+ * use_indent_continue_only_once
+ * with the value "true".
+ * use/don't use indent_continue once Guy 2016-05-16
+ */
+
+ // if vardefcol isn't zero, use it
+ frm.top().SetIndent(vardefcol);
+ log_indent();
+ }
+ else
+ {
+ frm.top().SetIndent(calc_indent_continue(frm));
+ log_indent();
+ frm.top().SetIndentContinue(true);
+
+ log_rule_B("indent_sparen_extra");
+
+ if ( pc->Is(CT_SPAREN_OPEN)
+ && options::indent_sparen_extra() != 0)
+ {
+ frm.top().SetIndent(frm.top().GetIndent() + options::indent_sparen_extra());
+ log_indent();
+ }
+ }
+ }
+ }
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+
+ frm.SetParenCount(frm.GetParenCount() + 1);
+ }
+ else if ( options::indent_member_single()
+ && pc->Is(CT_MEMBER)
+ && (strcmp(pc->Text(), ".") == 0)
+ && language_is_set(LANG_CS | LANG_CPP))
+ {
+ log_rule_B("indent_member_single");
+
+ if (frm.top().GetOpenToken() != CT_MEMBER)
+ {
+ frm.push(pc, __func__, __LINE__);
+ Chunk *tmp = frm.top().GetOpenChunk()->GetPrevNcNnlNpp();
+
+ if (frm.prev().GetOpenChunk()->IsOnSameLine(tmp))
+ {
+ frm.top().SetIndent(frm.prev().GetIndent());
+ }
+ else
+ {
+ frm.top().SetIndent(frm.prev().GetIndent() + indent_size);
+ }
+ log_indent();
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+ }
+
+ if (pc->GetPrev()->IsNewline())
+ {
+ if ( pc->Is(CT_MEMBER) // Issue #2890
+ && language_is_set(LANG_CPP))
+ {
+ // will be done at another place
+ // look at the comment: XXXXXXXXXXXXXXXXXXXXXXXXXX
+ }
+ else
+ {
+ indent_column_set(frm.top().GetIndent());
+ reindent_line(pc, indent_column);
+ did_newline = false;
+ }
+ }
+ //check for the series of CT_member chunks else pop it.
+ Chunk *tmp = pc->GetNextNcNnlNpp();
+
+ if (tmp->IsNotNullChunk())
+ {
+ if (tmp->Is(CT_FUNC_CALL))
+ {
+ tmp = tmp->GetNextType(CT_FPAREN_CLOSE, tmp->GetLevel());
+ tmp = tmp->GetNextNcNnlNpp();
+ }
+ else if ( tmp->Is(CT_WORD)
+ || tmp->Is(CT_TYPE))
+ {
+ tmp = tmp->GetNextNcNnlNpp();
+ }
+ }
+
+ if ( tmp->IsNotNullChunk()
+ && ( (strcmp(tmp->Text(), ".") != 0)
+ || tmp->IsNot(CT_MEMBER)))
+ {
+ if (tmp->IsParenClose())
+ {
+ tmp = tmp->GetPrevNcNnlNpp();
+ }
+ Chunk *local_prev = tmp->GetPrev(); // Issue #3294
+
+ if (local_prev->IsComment())
+ {
+ tmp = tmp->GetPrev(); // Issue #3294
+ }
+
+ if ( tmp->IsNotNullChunk()
+ && tmp->GetPrev()->IsNewline())
+ {
+ tmp = tmp->GetPrevNcNnlNpp()->GetNextNl();
+ }
+
+ if (tmp->IsNotNullChunk())
+ {
+ frm.top().SetPopChunk(tmp);
+ }
+ }
+ }
+ else if ( pc->Is(CT_ASSIGN)
+ || pc->Is(CT_IMPORT)
+ || ( pc->Is(CT_USING)
+ && language_is_set(LANG_CS)))
+ {
+ /*
+ * if there is a newline after the '=' or the line starts with a '=',
+ * just indent one level,
+ * otherwise align on the '='.
+ */
+ if ( pc->Is(CT_ASSIGN)
+ && pc->GetPrev()->IsNewline())
+ {
+ if (frm.top().GetOpenToken() == CT_ASSIGN_NL)
+ {
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ }
+ else
+ {
+ frm.top().SetIndentTmp(frm.top().GetIndent() + indent_size);
+ }
+ log_indent_tmp();
+
+ indent_column_set(frm.top().GetIndentTmp());
+ LOG_FMT(LINDENT, "%s(%d): %zu] assign => %zu [%s]\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ reindent_line(pc, frm.top().GetIndentTmp());
+ }
+ Chunk *next = pc->GetNext();
+
+ if (next->IsNotNullChunk())
+ {
+ /*
+ * fixes 1260 , 1268 , 1277 (Extra indentation after line with multiple assignments)
+ * For multiple consecutive assignments in single line , the indent of all these
+ * assignments should be same and one more than this line's indent.
+ * so popping the previous assign and pushing the new one
+ */
+ if ( frm.top().GetOpenToken() == CT_ASSIGN
+ && pc->Is(CT_ASSIGN))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+ frm.push(pc, __func__, __LINE__);
+
+ if ( pc->Is(CT_ASSIGN)
+ && pc->GetPrev()->IsNewline())
+ {
+ frm.top().SetOpenToken(CT_ASSIGN_NL);
+ }
+ log_rule_B("indent_continue");
+
+ if (options::indent_ignore_first_continue())
+ {
+ frm.top().SetIndent(get_indent_first_continue(pc));
+ log_indent();
+ frm.top().SetIndentContinue(true); // Issue #3567
+ }
+ else if (options::indent_continue() != 0)
+ {
+ frm.top().SetIndent(frm.prev().GetIndent());
+ log_indent();
+
+ if ( pc->GetLevel() == pc->GetBraceLevel()
+ && ( pc->IsNot(CT_ASSIGN)
+ || ( pc->GetParentType() != CT_FUNC_PROTO
+ && pc->GetParentType() != CT_FUNC_DEF)))
+ {
+ log_rule_B("use_indent_continue_only_once");
+
+ if ( (options::use_indent_continue_only_once())
+ && (frm.top().GetIndentContinue())
+ && vardefcol != 0)
+ {
+ // if vardefcol isn't zero, use it
+ frm.top().SetIndent(vardefcol);
+ log_indent();
+ }
+ else
+ {
+ frm.top().SetIndent(calc_indent_continue(frm));
+ log_indent();
+
+ vardefcol = frm.top().GetIndent(); // use the same variable for the next line
+ frm.top().SetIndentContinue(true);
+ }
+ }
+ }
+ else if ( next->IsNewline()
+ || !options::indent_align_assign())
+ {
+ log_rule_B("indent_align_assign");
+ log_rule_B("indent_off_after_assign");
+
+ if (options::indent_off_after_assign()) // Issue #2591
+ {
+ frm.top().SetIndent(frm.prev().GetIndentTmp());
+ }
+ else
+ {
+ frm.top().SetIndent(frm.prev().GetIndentTmp() + indent_size);
+ }
+ log_indent();
+
+ if ( pc->Is(CT_ASSIGN)
+ && next->IsNewline())
+ {
+ frm.top().SetOpenToken(CT_ASSIGN_NL);
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ }
+ }
+ else
+ {
+ frm.top().SetIndent(pc->GetColumn() + pc->Len() + 1);
+ log_indent();
+ }
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+ }
+ }
+ else if ( pc->Is(CT_RETURN)
+ || ( pc->Is(CT_THROW)
+ && pc->GetParentType() == CT_NONE))
+ {
+ // don't count returns inside a () or []
+ if ( pc->GetLevel() == pc->GetBraceLevel()
+ || pc->TestFlags(PCF_IN_LAMBDA))
+ {
+ Chunk *next = pc->GetNext();
+
+ // Avoid indentation on return token set by the option.
+ log_rule_B("indent_off_after_return");
+
+ // Avoid indentation on return token if the next token is a new token
+ // to properly indent object initializers returned by functions.
+ log_rule_B("indent_off_after_return_new");
+ bool indent_after_return = ( next->IsNotNullChunk()
+ && next->GetType() == CT_NEW)
+ ? !options::indent_off_after_return_new()
+ : !options::indent_off_after_return();
+
+ if ( indent_after_return
+ || next->IsNullChunk())
+ {
+ frm.push(pc, __func__, __LINE__);
+
+ log_rule_B("indent_single_after_return");
+
+ if ( next->IsNewline()
+ || ( pc->Is(CT_RETURN)
+ && options::indent_single_after_return()))
+ {
+ // apply normal single indentation
+ frm.top().SetIndent(frm.prev().GetIndent() + indent_size);
+ }
+ else
+ {
+ // indent after the return token
+ frm.top().SetIndent(frm.prev().GetIndent() + pc->Len() + 1);
+ }
+ log_indent();
+ frm.top().SetIndentTmp(frm.prev().GetIndent());
+ log_indent_tmp();
+ }
+ log_indent();
+ }
+ }
+ else if ( pc->Is(CT_OC_SCOPE)
+ || pc->Is(CT_TYPEDEF))
+ {
+ frm.push(pc, __func__, __LINE__);
+ // Issue #405
+ frm.top().SetIndent(frm.prev().GetIndent());
+ log_indent();
+
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ LOG_FMT(LINDLINE, "%s(%d): .indent is %zu, .indent_tmp is %zu\n",
+ __func__, __LINE__, frm.top().GetIndent(), frm.top().GetIndentTmp());
+
+ log_rule_B("indent_continue");
+
+ if (options::indent_ignore_first_continue())
+ {
+ frm.top().SetIndent(get_indent_first_continue(pc));
+ log_indent();
+ }
+ else if (options::indent_continue() != 0)
+ {
+ frm.top().SetIndent(calc_indent_continue(frm, frm.size() - 2));
+ log_indent();
+
+ frm.top().SetIndentContinue(true);
+ }
+ else
+ {
+ frm.top().SetIndent(frm.prev().GetIndent() + indent_size);
+ log_indent();
+ }
+ }
+ else if (pc->Is(CT_C99_MEMBER))
+ {
+ // nothing to do
+ }
+ else if (pc->Is(CT_WHERE_SPEC))
+ {
+ /* class indentation is ok already, just need to adjust func */
+ /* TODO: make this configurable, obviously.. */
+ if ( pc->GetParentType() == CT_FUNC_DEF
+ || pc->GetParentType() == CT_FUNC_PROTO
+ || ( pc->GetParentType() == CT_STRUCT
+ && frm.top().GetOpenToken() != CT_CLASS_COLON))
+ {
+ indent_column_set(frm.top().GetIndent() + 4);
+ }
+ }
+ else if ( options::indent_inside_ternary_operator()
+ && ( pc->Is(CT_QUESTION)
+ || pc->Is(CT_COND_COLON))) // Issue #1130, #1715
+ {
+ log_rule_B("indent_inside_ternary_operator");
+
+ // Pop any colons before because they should already be processed
+ while ( pc->Is(CT_COND_COLON)
+ && frm.top().GetOpenToken() == CT_COND_COLON)
+ {
+ frm.pop(__func__, __LINE__, pc);
+ }
+ log_rule_B("indent_inside_ternary_operator");
+
+ // Pop Question from stack in ternary operator
+ if ( options::indent_inside_ternary_operator()
+ && pc->Is(CT_COND_COLON)
+ && frm.top().GetOpenToken() == CT_QUESTION)
+ {
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ indent_column_set(frm.top().GetIndentTmp());
+ }
+ frm.push(pc, __func__, __LINE__);
+
+ frm.top().SetIndent(frm.prev().GetIndent() + indent_size);
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ log_indent();
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+ }
+ else if ( pc->Is(CT_LAMBDA)
+ && (language_is_set(LANG_CS | LANG_JAVA))
+ && pc->GetNextNcNnlNpp()->IsNot(CT_BRACE_OPEN)
+ && options::indent_cs_delegate_body())
+ {
+ log_rule_B("indent_cs_delegate_body");
+ frm.push(pc, __func__, __LINE__);
+ frm.top().SetIndent(frm.prev().GetIndent());
+ log_indent();
+
+ if ( pc->GetPrevNc()->IsNewline()
+ && !frm.prev().GetOpenChunk()->IsOnSameLine(pc->GetPrevNcNnl()))
+ {
+ frm.top().SetIndent(frm.prev().GetIndent() + indent_size);
+ log_indent();
+ reindent_line(pc, (frm.prev().GetIndent() + indent_size));
+ did_newline = false;
+ }
+ else if ( pc->GetNextNc()->IsNewline()
+ && !frm.prev().GetOpenChunk()->IsOnSameLine(frm.top().GetOpenChunk()))
+ {
+ frm.top().SetIndent(frm.prev().GetIndent() + indent_size);
+ }
+ log_indent();
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+ }
+ else if ( options::indent_oc_inside_msg_sel()
+ && ( pc->Is(CT_OC_MSG_FUNC)
+ || pc->Is(CT_OC_MSG_NAME))
+ && pc->GetNextNcNnl()->Is(CT_OC_COLON)) // Issue #2658
+ {
+ log_rule_B("indent_oc_inside_msg_sel");
+ // Pop the OC msg name that is on the top of the stack
+ // [Class Message:<here>
+ frm.push(pc, __func__, __LINE__);
+
+ frm.top().SetIndent(frm.prev().GetIndent());
+ frm.top().SetIndentTab(frm.prev().GetIndentTab());
+ log_indent();
+ frm.top().SetIndentTmp(frm.prev().GetIndentTmp());
+ log_indent_tmp();
+ }
+ else if (pc->IsComment())
+ {
+ // Issue #3294
+ Chunk *next = pc->GetNext();
+
+ if (next->Is(CT_COND_COLON))
+ {
+ LOG_FMT(LINDLINE, "%s(%d): Comment and COND_COLON: pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ frm.pop(__func__, __LINE__, pc);
+ }
+// uncomment the line below to get debug info
+// #define ANYTHING_ELSE
+#ifdef ANYTHING_ELSE
+ else
+ {
+ // anything else?
+ // Issue #3294
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ LOG_FMT(LSPACE, "\n\n%s(%d): WARNING: unrecognize indent_text:\n",
+ __func__, __LINE__);
+ }
+#endif /* ANYTHING_ELSE */
+ }
+ else
+ {
+ // anything else?
+#ifdef ANYTHING_ELSE
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ LOG_FMT(LSPACE, "\n\n%s(%d): WARNING: unrecognize indent_text:\n",
+ __func__, __LINE__);
+#endif /* ANYTHING_ELSE */
+ }
+ // Handle shift expression continuation indenting
+ size_t shiftcontcol = 0;
+
+ log_rule_B("indent_shift");
+
+ if ( options::indent_shift() == 1
+ && !pc->TestFlags(PCF_IN_ENUM)
+ && pc->GetParentType() != CT_OPERATOR
+ && !pc->IsComment()
+ && pc->IsNot(CT_BRACE_OPEN)
+ && pc->GetLevel() > 0
+ && !pc->IsEmptyText())
+ {
+ bool in_shift = false;
+ bool is_operator = false;
+
+ // Are we in such an expression? Go both forwards and backwards.
+ Chunk *tmp = pc;
+
+ do
+ {
+ if (tmp->Is(CT_SHIFT))
+ {
+ in_shift = true;
+ LOG_FMT(LINDENT2, "%s(%d): in_shift set to TRUE\n",
+ __func__, __LINE__);
+
+ tmp = tmp->GetPrevNcNnl();
+
+ if (tmp->Is(CT_OPERATOR))
+ {
+ is_operator = true;
+ }
+ break;
+ }
+ tmp = tmp->GetPrevNcNnl();
+ } while ( !in_shift
+ && tmp->IsNotNullChunk()
+ && tmp->IsNot(CT_SEMICOLON)
+ && tmp->IsNot(CT_BRACE_OPEN)
+ && tmp->IsNot(CT_BRACE_CLOSE)
+ && tmp->IsNot(CT_COMMA)
+ && tmp->IsNot(CT_SPAREN_OPEN)
+ && tmp->IsNot(CT_SPAREN_CLOSE));
+
+ tmp = pc;
+
+ do
+ {
+ tmp = tmp->GetNextNcNnl();
+
+ if ( tmp->IsNotNullChunk()
+ && tmp->Is(CT_SHIFT))
+ {
+ in_shift = true;
+ LOG_FMT(LINDENT2, "%s(%d): in_shift set to TRUE\n",
+ __func__, __LINE__);
+
+ tmp = tmp->GetPrevNcNnl();
+
+ if (tmp->Is(CT_OPERATOR))
+ {
+ is_operator = true;
+ }
+ break;
+ }
+ } while ( !in_shift
+ && tmp->IsNotNullChunk()
+ && tmp->IsNot(CT_SEMICOLON)
+ && tmp->IsNot(CT_BRACE_OPEN)
+ && tmp->IsNot(CT_BRACE_CLOSE)
+ && tmp->IsNot(CT_COMMA)
+ && tmp->IsNot(CT_SPAREN_OPEN)
+ && tmp->IsNot(CT_SPAREN_CLOSE));
+
+ LOG_FMT(LINDENT2, "%s(%d): in_shift is %s\n",
+ __func__, __LINE__, in_shift ? "TRUE" : "FALSE");
+ Chunk *prev_nonl = pc->GetPrevNcNnl();
+ Chunk *prev2 = pc->GetPrevNc();
+
+ if (( prev_nonl->IsSemicolon()
+ || prev_nonl->IsBraceOpen()
+ || prev_nonl->IsBraceClose()
+ || prev_nonl->Is(CT_CASE_COLON)
+ || ( prev_nonl->IsNotNullChunk()
+ && prev_nonl->TestFlags(PCF_IN_PREPROC)) != pc->TestFlags(PCF_IN_PREPROC)
+ || prev_nonl->Is(CT_COMMA)
+ || is_operator))
+ {
+ in_shift = false;
+ }
+ LOG_FMT(LINDENT2, "%s(%d): in_shift is %s\n",
+ __func__, __LINE__, in_shift ? "TRUE" : "FALSE");
+
+ if ( prev2->Is(CT_NEWLINE)
+ && in_shift)
+ {
+ shiftcontcol = calc_indent_continue(frm);
+ // Calling frm.top().SetIndentContinue(true) in the top context when the indent is not also set
+ // just leads to complications when succeeding statements try to indent based on being
+ // embedded in a continuation. In other words setting frm.top().SetIndentContinue(true)
+ // should only be set if frm.top().indent is also set.
+
+ // Work around the doubly increased indent in RETURNs and assignments
+ bool need_workaround = false;
+ size_t sub = 0;
+
+ for (int i = frm.size() - 1; i >= 0; i--)
+ {
+ if ( frm.at(i).GetOpenToken() == CT_RETURN
+ || frm.at(i).GetOpenToken() == CT_ASSIGN)
+ {
+ need_workaround = true;
+ sub = frm.size() - i;
+ break;
+ }
+ }
+
+ if (need_workaround)
+ {
+ shiftcontcol = calc_indent_continue(frm, frm.size() - 1 - sub);
+ }
+ }
+ }
+
+ // Handle variable definition continuation indenting
+ if ( vardefcol == 0
+ && ( pc->Is(CT_WORD)
+ || pc->Is(CT_FUNC_CTOR_VAR))
+ && !pc->TestFlags(PCF_IN_FCN_DEF)
+ && pc->TestFlags(PCF_VAR_1ST_DEF))
+ {
+ log_rule_B("indent_continue");
+
+ if (options::indent_ignore_first_continue())
+ {
+ vardefcol = get_indent_first_continue(pc);
+ }
+ else if (options::indent_continue() != 0)
+ {
+ vardefcol = calc_indent_continue(frm);
+ // Calling frm.top().SetIndentContinue(true) in the top context when the indent is not also set
+ // just leads to complications when succeeding statements try to indent based on being
+ // embedded in a continuation. In other words setting frm.top().SetIndentContinue(true)
+ // should only be set if frm.top().indent is also set.
+ }
+ else if ( options::indent_var_def_cont()
+ || pc->GetPrev()->IsNewline())
+ {
+ log_rule_B("indent_var_def_cont");
+ vardefcol = frm.top().GetIndent() + indent_size;
+ }
+ else
+ {
+ // Issue #3010
+ vardefcol = pc->GetColumn();
+ // BUT, we need to skip backward over any '*'
+ Chunk *tmp = pc->GetPrevNc();
+
+ while (tmp->Is(CT_PTR_TYPE))
+ {
+ vardefcol = tmp->GetColumn();
+ tmp = tmp->GetPrevNc();
+ }
+ // BUT, we need to skip backward over any '::' or TYPE
+ //tmp = pc->GetPrevNc();
+
+ //if (tmp->Is(CT_DC_MEMBER))
+ //{
+ // // look for a type
+ // Chunk *tmp2 = tmp->GetPrevNc();
+ // if (tmp2->Is(CT_TYPE))
+ // {
+ // // we have something like "SomeLongNamespaceName::Foo()"
+ // vardefcol = tmp2->GetColumn();
+ // LOG_FMT(LINDENT, "%s(%d): orig line is %zu, vardefcol is %zu\n",
+ // __func__, __LINE__, pc->GetOrigLine(), vardefcol);
+ // }
+ //}
+ }
+ }
+
+ if ( pc->IsSemicolon()
+ || ( pc->Is(CT_BRACE_OPEN)
+ && ( pc->GetParentType() == CT_FUNCTION
+ || pc->GetParentType() == CT_CLASS))) //Issue #3576
+ {
+ vardefcol = 0;
+ }
+
+ // Indent the line if needed
+ if ( did_newline
+ && !pc->IsNewline()
+ && (pc->Len() != 0))
+ {
+ if ( pc->TestFlags(PCF_CONT_LINE)
+ && options::indent_continue() < 0)
+ {
+ log_rule_B("indent_continue");
+ indent_column = calc_indent_continue(frm);
+ log_indent();
+ }
+ pc->SetColumnIndent(frm.top().GetIndentTab());
+
+ if (frm.top().GetIndentData().ref)
+ {
+ pc->IndentData().ref = frm.top().GetIndentData().ref;
+ pc->IndentData().delta = frm.top().GetIndentData().delta;
+ }
+ LOG_FMT(LINDENT2, "%s(%d): orig line is %zu, pc->GetColumn() indent is %zu, indent_column is %zu, for '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetColumnIndent(), indent_column, pc->ElidedText(copy));
+
+ /*
+ * Check for special continuations.
+ * Note that some of these could be done as a stack item like
+ * everything else
+ */
+
+ Chunk *prev = pc->GetPrevNcNnl();
+ Chunk *prevv = prev->GetPrevNcNnl();
+ Chunk *next = pc->GetNextNcNnl();
+
+ bool do_vardefcol = false;
+
+ if ( vardefcol > 0
+ && pc->GetLevel() == pc->GetBraceLevel()
+ && ( prev->Is(CT_COMMA)
+ || prev->Is(CT_TYPE)
+ || prev->Is(CT_PTR_TYPE)
+ || prev->Is(CT_WORD)))
+ {
+ Chunk *tmp = pc;
+
+ while (tmp->Is(CT_PTR_TYPE))
+ {
+ tmp = tmp->GetNextNcNnl();
+ }
+ LOG_FMT(LINDENT2, "%s(%d): orig line is %zu, for '%s'",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->Text());
+ LOG_FMT(LINDENT2, " tmp->GetFlags(): ");
+ log_pcf_flags(LINDENT2, tmp->GetFlags()); // Issue #2332
+
+ if ( tmp->TestFlags(PCF_VAR_DEF)
+ && ( tmp->Is(CT_WORD)
+ || tmp->Is(CT_FUNC_CTOR_VAR)))
+ {
+ do_vardefcol = true;
+ }
+ }
+ //LOG_FMT(LINDENT2, "%s(%d): GUY 2:\n", __func__, __LINE__);
+
+ if (pc->TestFlags(PCF_DONT_INDENT))
+ {
+ // no change
+ }
+ else if ( pc->GetParentType() == CT_SQL_EXEC
+ && options::indent_preserve_sql())
+ {
+ log_rule_B("indent_preserve_sql");
+ reindent_line(pc, sql_col + (pc->GetOrigCol() - sql_orig_col));
+ LOG_FMT(LINDENT, "Indent SQL: [%s] to %zu (%zu/%zu)\n",
+ pc->Text(), pc->GetColumn(), sql_col, sql_orig_col);
+ }
+ else if ( !options::indent_member_single()
+ && !pc->TestFlags(PCF_STMT_START)
+ && ( pc->Is(CT_MEMBER)
+ || ( pc->Is(CT_DC_MEMBER)
+ && prev->Is(CT_TYPE))
+ || ( prev->Is(CT_MEMBER)
+ || ( prev->Is(CT_DC_MEMBER)
+ && prevv->Is(CT_TYPE)))))
+ {
+ log_rule_B("indent_member_single");
+ log_rule_B("indent_member");
+ size_t tmp = options::indent_member() + indent_column;
+ LOG_FMT(LINDENT, "%s(%d): orig line is %zu, member => %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), tmp);
+ reindent_line(pc, tmp);
+ }
+ else if (do_vardefcol)
+ {
+ LOG_FMT(LINDENT, "%s(%d): orig line is %zu, vardefcol is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), vardefcol);
+ reindent_line(pc, vardefcol);
+ }
+ else if (shiftcontcol > 0)
+ {
+ LOG_FMT(LINDENT, "%s(%d): orig line is %zu, shiftcontcol is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), shiftcontcol);
+ reindent_line(pc, shiftcontcol);
+ }
+ else if ( pc->Is(CT_NAMESPACE)
+ && options::indent_namespace()
+ && options::indent_namespace_single_indent()
+ && frm.top().GetNsCount())
+ {
+ log_rule_B("indent_namespace");
+ log_rule_B("indent_namespace_single_indent");
+ LOG_FMT(LINDENT, "%s(%d): orig line is %zu, Namespace => %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), frm.top().GetBraceIndent());
+ reindent_line(pc, frm.top().GetBraceIndent());
+ }
+ else if ( pc->Is(CT_STRING)
+ && prev->Is(CT_STRING)
+ && options::indent_align_string())
+ {
+ log_rule_B("indent_align_string");
+ const int tmp = (xml_indent != 0) ? xml_indent : prev->GetColumn();
+
+ LOG_FMT(LINDENT, "%s(%d): orig line is %zu, String => %d\n",
+ __func__, __LINE__, pc->GetOrigLine(), tmp);
+ reindent_line(pc, tmp);
+ }
+ else if (pc->IsComment())
+ {
+ LOG_FMT(LINDENT, "%s(%d): orig line is %zu, comment => %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), frm.top().GetIndentTmp());
+ indent_comment(pc, frm.top().GetIndentTmp());
+ }
+ else if (pc->Is(CT_PREPROC))
+ {
+ LOG_FMT(LINDENT, "%s(%d): orig line is %zu, pp-indent => %zu [%s]\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ reindent_line(pc, indent_column);
+ }
+ else if ( pc->IsParenClose()
+ || pc->Is(CT_ANGLE_CLOSE))
+ {
+ /*
+ * This is a big hack. We assume that since we hit a paren close,
+ * that we just removed a paren open
+ */
+ LOG_FMT(LINDLINE, "%s(%d): indent_column is %zu\n",
+ __func__, __LINE__, indent_column);
+
+ if (frm.lastPopped().GetOpenToken() == E_Token(pc->GetType() - 1))
+ {
+ // Issue # 405
+ LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ Chunk *ck1 = frm.lastPopped().GetOpenChunk();
+ LOG_FMT(LINDLINE, "%s(%d): ck1 orig line is %zu, orig col is %zu, Text() is '%s', GetType() is %s\n",
+ __func__, __LINE__, ck1->GetOrigLine(), ck1->GetOrigCol(), ck1->Text(), get_token_name(ck1->GetType()));
+ Chunk *ck2 = ck1->GetPrev();
+ LOG_FMT(LINDLINE, "%s(%d): ck2 orig line is %zu, orig col is %zu, Text() is '%s', GetType() is %s\n",
+ __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol(), ck2->Text(), get_token_name(ck2->GetType()));
+
+ log_rule_B("indent_paren_close");
+
+ if (options::indent_paren_close() == -1)
+ {
+ LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_paren_close is -1\n",
+ __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol());
+ indent_column_set(pc->GetOrigCol());
+ LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_column set to %zu\n",
+ __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol(), indent_column);
+ }
+ else if ( ck2->IsNewline()
+ || (options::indent_paren_close() == 1))
+ {
+ /*
+ * If the open parenthesis was the first thing on the line or we
+ * are doing mode 1, then put the close parenthesis in the same
+ * column
+ */
+ LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_paren_close is 1\n",
+ __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol());
+ indent_column_set(ck1->GetColumn());
+ LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_column set to %zu\n",
+ __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol(), indent_column);
+ }
+ else
+ {
+ if (options::indent_paren_close() != 2)
+ {
+ // indent_paren_close is 0 or 1
+ LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_paren_close is 0 or 1\n",
+ __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol());
+ indent_column_set(frm.lastPopped().GetIndentTmp());
+ LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_column set to %zu\n",
+ __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol(), indent_column);
+ pc->SetColumnIndent(frm.lastPopped().GetIndentTab());
+ log_rule_B("indent_paren_close");
+
+ if (options::indent_paren_close() == 1)
+ {
+ LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_paren_close is 1\n",
+ __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol());
+
+ if (indent_column == 0)
+ {
+ fprintf(stderr, "%s(%d): indent_column is ZERO, cannot be decremented, at line %zu, column %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ indent_column--;
+ LOG_FMT(LINDLINE, "%s(%d): [%zu:%zu] indent_column set to %zu\n",
+ __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol(), indent_column);
+ }
+ }
+ else
+ {
+ // indent_paren_close is 2: Indent to the brace level
+ LOG_FMT(LINDLINE, "%s(%d): indent_paren_close is 2\n",
+ __func__, __LINE__);
+ LOG_FMT(LINDLINE, "%s(%d): ck2 orig line is %zu, orig col is %zu, ck2->Text() is '%s'\n",
+ __func__, __LINE__, ck2->GetOrigLine(), ck2->GetOrigCol(), ck2->Text());
+
+ if (pc->GetPrev()->GetType() == CT_NEWLINE)
+ {
+ LOG_FMT(LINDLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ LOG_FMT(LINDLINE, "%s(%d): prev is <newline>\n",
+ __func__, __LINE__);
+ Chunk *search = pc;
+
+ while (search->GetNext()->IsParenClose())
+ {
+ search = search->GetNext();
+ }
+ Chunk *searchNext = search->GetNext();
+
+ // Issue #3407 - Skip over a possible 'noexcept' keyword before going forward.
+ if (searchNext->GetType() == CT_NOEXCEPT)
+ {
+ searchNext = searchNext->GetNext();
+ }
+
+ if ( searchNext->GetType() == CT_SEMICOLON
+ || searchNext->GetType() == CT_MEMBER // Issue #2582
+ || searchNext->GetType() == CT_NEWLINE)
+ {
+ LOG_FMT(LINDLINE, "%s(%d):\n", __func__, __LINE__);
+ search = search->GetOpeningParen();
+
+ if ( options::indent_oc_inside_msg_sel()
+ && search->GetPrevNcNnl()->Is(CT_OC_COLON)
+ && ( frm.top().GetOpenToken() == CT_OC_MSG_FUNC
+ || frm.top().GetOpenToken() == CT_OC_MSG_NAME)) // Issue #2658
+ {
+ log_rule_B("indent_oc_inside_msg_sel");
+ // [Class Message:(...)<here>
+ indent_column_set(frm.top().GetOpenChunk()->GetColumn());
+ }
+ else if ( options::indent_inside_ternary_operator()
+ && ( frm.top().GetOpenToken() == CT_QUESTION
+ || frm.top().GetOpenToken() == CT_COND_COLON)) // Issue #1130, #1715
+ {
+ log_rule_B("indent_inside_ternary_operator");
+ indent_column_set(frm.top().GetIndent());
+ }
+ else
+ {
+ search = search->GetPrevNl()->GetNext();
+
+ if (search->IsNullChunk())
+ {
+ search = Chunk::GetHead();
+ }
+ indent_column_set(search->GetColumn());
+ }
+ }
+ }
+ }
+ }
+ }
+ size_t indent_value = 0;
+ LOG_FMT(LINDENT, "%s(%d): orig line is %zu, closing parenthesis => %zu, text is '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ LOG_FMT(LINDENT, "%s(%d): [%s/%s]\n",
+ __func__, __LINE__,
+ get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
+ Chunk *prev2 = pc->GetPrev(); // Issue #2930
+ LOG_FMT(LINDENT, "%s(%d): prev2 is orig line is %zu, text is '%s'\n",
+ __func__, __LINE__, prev2->GetOrigLine(), prev2->Text());
+ Chunk *next2 = pc->GetNext();
+ LOG_FMT(LINDENT, "%s(%d): next2 is orig line is %zu, text is '%s'\n",
+ __func__, __LINE__, next2->GetOrigLine(), next2->Text());
+
+ if ( pc->GetParentType() == CT_FUNC_DEF
+ && prev2->IsNewline()
+ && next2->IsNewline())
+ {
+ if (options::donot_indent_func_def_close_paren())
+ {
+ indent_value = 1;
+ }
+ else
+ {
+ reindent_line(pc, indent_column);
+ indent_value = indent_column;
+ }
+ }
+ else
+ {
+ indent_value = indent_column;
+ }
+ reindent_line(pc, indent_value);
+ }
+ else if (pc->Is(CT_COMMA))
+ {
+ bool indent_align = false;
+ bool indent_ignore = false;
+
+ if (frm.top().GetOpenChunk()->IsParenOpen())
+ {
+ log_rule_B("indent_comma_paren");
+ indent_align = options::indent_comma_paren() == (int)indent_mode_e::ALIGN;
+ indent_ignore = options::indent_comma_paren() == (int)indent_mode_e::IGNORE;
+ }
+ else if (frm.top().GetOpenChunk()->IsBraceOpen())
+ {
+ log_rule_B("indent_comma_brace");
+ indent_align = options::indent_comma_brace() == (int)indent_mode_e::ALIGN;
+ indent_ignore = options::indent_comma_brace() == (int)indent_mode_e::IGNORE;
+ }
+
+ if (indent_ignore)
+ {
+ indent_column_set(pc->GetOrigCol());
+ }
+ else if (indent_align)
+ {
+ indent_column_set(frm.top().GetOpenChunk()->GetColumn());
+ }
+ LOG_FMT(LINDENT, "%s(%d): %zu] comma => %zu [%s]\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ reindent_line(pc, indent_column);
+ }
+ else if ( options::indent_func_const()
+ && pc->Is(CT_QUALIFIER)
+ && strncasecmp(pc->Text(), "const", pc->Len()) == 0
+ && ( next->Is(CT_BRACED)
+ || next->IsBraceOpen()
+ || next->Is(CT_NEWLINE)
+ || next->Is(CT_SEMICOLON)
+ || next->Is(CT_THROW)))
+ {
+ // indent const - void GetFoo(void)\n const\n { return (m_Foo); }
+ log_rule_B("indent_func_const");
+ indent_column_set(frm.top().GetIndent() + options::indent_func_const());
+ LOG_FMT(LINDENT, "%s(%d): %zu] const => %zu [%s]\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ reindent_line(pc, indent_column);
+ }
+ else if ( options::indent_func_throw()
+ && pc->Is(CT_THROW)
+ && pc->GetParentType() != CT_NONE)
+ {
+ // indent throw - void GetFoo(void)\n throw()\n { return (m_Foo); }
+ log_rule_B("indent_func_throw");
+ indent_column_set(options::indent_func_throw());
+ LOG_FMT(LINDENT, "%s(%d): %zu] throw => %zu [%s]\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ reindent_line(pc, indent_column);
+ }
+ else if (pc->Is(CT_SEMICOLON))
+ {
+ if ( pc->TestFlags(PCF_IN_FOR)
+ && options::indent_semicolon_for_paren())
+ {
+ log_rule_B("indent_semicolon_for_paren");
+ indent_column_set(frm.top().GetOpenChunk()->GetColumn());
+
+ log_rule_B("indent_first_for_expr");
+
+ if (options::indent_first_for_expr())
+ {
+ reindent_line(frm.top().GetOpenChunk()->GetNext(),
+ indent_column + pc->Len() + 1);
+ }
+ LOG_FMT(LINDENT, "%s(%d): %zu] SEMICOLON => %zu [%s]\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ reindent_line(pc, indent_column);
+ }
+ else
+ {
+ log_rule_B("indent_ignore_semicolon");
+
+ if (options::indent_ignore_semicolon())
+ {
+ indent_column_set(pc->GetOrigCol());
+ }
+ LOG_FMT(LINDENT, "%s(%d): %zu] semicolon => %zu [%s]\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ reindent_line(pc, indent_column);
+ }
+ }
+ else if (pc->Is(CT_BOOL))
+ {
+ if (frm.top().GetOpenChunk()->IsParenOpen())
+ {
+ log_rule_B("indent_bool_paren");
+
+ if (options::indent_bool_paren() == (int)indent_mode_e::IGNORE)
+ {
+ indent_column_set(pc->GetOrigCol());
+ }
+ else if (options::indent_bool_paren() == (int)indent_mode_e::ALIGN)
+ {
+ indent_column_set(frm.top().GetOpenChunk()->GetColumn());
+
+ log_rule_B("indent_first_bool_expr");
+
+ if (options::indent_first_bool_expr())
+ {
+ reindent_line(frm.top().GetOpenChunk()->GetNext(),
+ indent_column + pc->Len() + 1);
+ }
+ }
+ }
+ else
+ {
+ log_rule_B("indent_ignore_bool");
+
+ if (options::indent_ignore_bool())
+ {
+ indent_column_set(pc->GetOrigCol());
+ }
+ }
+ LOG_FMT(LINDENT, "%s(%d): %zu] bool => %zu [%s]\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ reindent_line(pc, indent_column);
+ }
+ else if ( pc->Is(CT_ARITH)
+ || pc->Is(CT_CARET))
+ {
+ log_rule_B("indent_ignore_arith");
+
+ if (options::indent_ignore_arith())
+ {
+ indent_column_set(pc->GetOrigCol());
+ }
+ LOG_FMT(LINDENT, "%s(%d): %zu] arith => %zu [%s]\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ reindent_line(pc, indent_column);
+ }
+ else if (pc->Is(CT_SHIFT))
+ {
+ log_rule_B("indent_shift");
+
+ if (options::indent_shift() == -1)
+ {
+ indent_column_set(pc->GetOrigCol());
+ }
+ LOG_FMT(LINDENT, "%s(%d): %zu] shift => %zu [%s]\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ reindent_line(pc, indent_column);
+ }
+ else if (pc->Is(CT_ASSIGN))
+ {
+ log_rule_B("indent_ignore_assign");
+
+ if (options::indent_ignore_assign())
+ {
+ indent_column_set(pc->GetOrigCol());
+ }
+ LOG_FMT(LINDENT, "%s(%d): %zu] assign => %zu [%s]\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ reindent_line(pc, indent_column);
+ }
+ else if ( options::indent_ternary_operator() == 1
+ && prev->Is(CT_COND_COLON))
+ {
+ log_rule_B("indent_ternary_operator");
+ Chunk *tmp = prev->GetPrevType(CT_QUESTION);
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp = tmp->GetNextNcNnl();
+
+ if (tmp->IsNotNullChunk())
+ {
+ LOG_FMT(LINDENT, "%s: %zu] ternarydefcol => %zu [%s]\n",
+ __func__, pc->GetOrigLine(), tmp->GetColumn(), pc->Text());
+ reindent_line(pc, tmp->GetColumn());
+ }
+ }
+ }
+ else if ( options::indent_ternary_operator() == 2
+ && pc->Is(CT_COND_COLON))
+ {
+ log_rule_B("indent_ternary_operator");
+ // get the parent, the QUESTION
+ Chunk *question = pc->GetParent();
+
+ if (question->IsNotNullChunk())
+ {
+ LOG_FMT(LINDENT, "%s: %zu] ternarydefcol => %zu [%s]\n",
+ __func__, pc->GetOrigLine(), question->GetColumn(), pc->Text());
+ reindent_line(pc, question->GetColumn());
+ }
+ }
+ else if ( options::indent_oc_inside_msg_sel()
+ && ( pc->Is(CT_OC_MSG_FUNC)
+ || pc->Is(CT_OC_MSG_NAME))) // Issue #2658
+ {
+ log_rule_B("indent_oc_inside_msg_sel");
+ reindent_line(pc, frm.top().GetIndent());
+ }
+ else
+ {
+ bool use_indent = true;
+ const size_t ttidx = frm.size() - 1;
+
+ if (ttidx > 0)
+ {
+ LOG_FMT(LINDPC, "%s(%d): (frm.at(ttidx).pc)->GetParentType() is %s\n",
+ __func__, __LINE__, get_token_name((frm.at(ttidx).GetOpenChunk())->GetParentType()));
+
+ if ((frm.at(ttidx).GetOpenChunk())->GetParentType() == CT_FUNC_CALL)
+ {
+ LOG_FMT(LINDPC, "FUNC_CALL OK [%d]\n", __LINE__);
+
+ log_rule_B("use_indent_func_call_param");
+
+ if (options::use_indent_func_call_param())
+ {
+ LOG_FMT(LINDPC, "use is true [%d]\n", __LINE__);
+ }
+ else
+ {
+ LOG_FMT(LINDPC, "use is false [%d]\n", __LINE__);
+ use_indent = false;
+ }
+ }
+ }
+ LOG_FMT(LINDENT, "%s(%d): pc->line is %zu, pc->GetColumn() is %zu, pc->Text() is '%s, indent_column is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetColumn(), pc->Text(), indent_column);
+
+ if ( use_indent
+ && pc->IsNot(CT_PP_IGNORE)) // Leave indentation alone for PP_IGNORE tokens
+ {
+ log_rule_B("pos_conditional");
+
+ if ( ( pc->Is(CT_QUESTION) // Issue #2101
+ || pc->Is(CT_COND_COLON)) // Issue #2101
+ && options::pos_conditional() == TP_IGNORE)
+ {
+ // do not indent this line
+ LOG_FMT(LINDENT, "%s(%d): %zu] don't indent this line\n",
+ __func__, __LINE__, pc->GetOrigLine());
+ }
+ else if (pc->Is(CT_BREAK))
+ {
+ // Issue #1692
+ log_rule_B("indent_switch_break_with_case");
+
+ // Issue #2281
+ if ( options::indent_switch_break_with_case()
+ && pc->GetTypeOfParent() == CT_SWITCH)
+ {
+ // look for a case before Issue #2735
+ Chunk *whereIsCase = pc->GetPrevType(CT_CASE, pc->GetLevel());
+
+ if (whereIsCase->IsNotNullChunk())
+ {
+ LOG_FMT(LINDENT, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, whereIsCase->GetOrigLine(), whereIsCase->GetOrigCol(), whereIsCase->Text());
+ LOG_FMT(LINDENT, "%s(%d): column is %zu\n",
+ __func__, __LINE__, whereIsCase->GetColumn());
+ reindent_line(pc, whereIsCase->GetColumn());
+ }
+ }
+ else
+ {
+ LOG_FMT(LINDENT, "%s(%d): orig line is %zu, indent_column set to %zu, for '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ reindent_line(pc, indent_column);
+ }
+ }
+ else if ( pc->Is(CT_MEMBER) // Issue #2890
+ && language_is_set(LANG_CPP))
+ {
+ // comment name: XXXXXXXXXXXXXXXXXXXXXXXXXX
+ LOG_FMT(LINDENT, "%s(%d): orig line is %zu, indent_column set to %zu, for '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ const size_t frm_size = frm.size();
+ LOG_FMT(LINDPC, "%s(%d): frm_size is %zu\n",
+ __func__, __LINE__, frm_size);
+ // get pc
+ LOG_FMT(LINDPC, "%s(%d): Text() is '%s', (frm.at(frm_size - 1).pc)->GetType() is %s\n",
+ __func__, __LINE__, (frm.at(frm_size - 1).GetOpenChunk())->Text(), get_token_name((frm.at(frm_size - 1).GetOpenChunk())->GetType()));
+ // get the token before
+ const size_t temp_ttidx = frm_size - 2;
+
+ if (temp_ttidx == 0)
+ {
+ indent_column = 1 + indent_size;
+ reindent_line(pc, indent_column);
+ }
+ else
+ {
+ Chunk *token_before = frm.at(temp_ttidx).GetOpenChunk();
+ LOG_FMT(LINDPC, "%s(%d): Text() is '%s', token_before->GetType() is %s\n",
+ __func__, __LINE__, token_before->Text(), get_token_name(token_before->GetType()));
+
+ size_t vor_col = 0;
+
+ if (token_before->Is(CT_ASSIGN))
+ {
+ Chunk *before_Assign = frm.at(temp_ttidx - 1).GetOpenChunk();
+
+ if (before_Assign->IsNullChunk())
+ {
+ indent_column = 1 + indent_size;
+ }
+ else
+ {
+ vor_col = before_Assign->GetColumn();
+ LOG_FMT(LINDPC, "%s(%d): Text() is '%s', before_Assign->GetType() is %s, column is %zu\n",
+ __func__, __LINE__, before_Assign->Text(), get_token_name(before_Assign->GetType()), vor_col);
+ indent_column = vor_col + 2 * indent_size;
+ }
+ }
+ else if (token_before->Is(CT_BRACE_OPEN))
+ {
+ vor_col = token_before->GetColumn();
+ LOG_FMT(LINDPC, "%s(%d): Text() is '%s', token_before->GetType() is %s, column is %zu\n",
+ __func__, __LINE__, token_before->Text(), get_token_name(token_before->GetType()), vor_col);
+ indent_column = vor_col + 2 * indent_size;
+ }
+ else if (token_before->Is(CT_RETURN))
+ {
+ Chunk *before_Return = frm.at(temp_ttidx - 1).GetOpenChunk();
+ vor_col = before_Return->GetColumn();
+ LOG_FMT(LINDPC, "%s(%d): Text() is '%s', before_Return->GetType() is %s, column is %zu\n",
+ __func__, __LINE__, before_Return->Text(), get_token_name(before_Return->GetType()), vor_col);
+ indent_column = vor_col + 2 * indent_size;
+ }
+ else
+ {
+ // TO DO
+ }
+ reindent_line(pc, indent_column);
+ }
+ reindent_line(pc, indent_column);
+ }
+ else
+ {
+ LOG_FMT(LINDENT, "%s(%d): orig line is %zu, indent_column set to %zu, for '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent_column, pc->Text());
+ reindent_line(pc, indent_column);
+ }
+ }
+ else
+ {
+ // do not indent this line
+ LOG_FMT(LINDENT, "%s(%d): %zu] don't indent this line\n",
+ __func__, __LINE__, pc->GetOrigLine());
+ }
+ }
+ did_newline = false;
+
+ if ( pc->Is(CT_SQL_EXEC)
+ || pc->Is(CT_SQL_BEGIN)
+ || pc->Is(CT_SQL_END))
+ {
+ sql_col = pc->GetColumn();
+ sql_orig_col = pc->GetOrigCol();
+ }
+
+ // Handle indent for variable defs at the top of a block of code
+ if (pc->TestFlags(PCF_VAR_TYPE))
+ {
+ if ( !frm.top().GetNonVardef()
+ && (frm.top().GetOpenToken() == CT_BRACE_OPEN))
+ {
+ log_rule_B("indent_var_def_blk");
+ int val = options::indent_var_def_blk();
+
+ if (val != 0)
+ {
+ size_t indent = indent_column;
+ indent = (val > 0) ? val // reassign if positive val,
+ : ((size_t)(abs(val)) < indent) // else if no underflow
+ ? (indent + val) : 0; // reduce, else 0
+
+ LOG_FMT(LINDENT, "%s(%d): %zu] var_type indent => %zu [%s]\n",
+ __func__, __LINE__, pc->GetOrigLine(), indent, pc->Text());
+ reindent_line(pc, indent);
+ }
+ }
+ }
+ else if (pc != frm.top().GetOpenChunk())
+ {
+ frm.top().SetNonVardef(true);
+ }
+ }
+
+ // if we hit a newline, reset indent_tmp
+ if ( pc->IsNewline()
+ || pc->Is(CT_COMMENT_MULTI)
+ || pc->Is(CT_COMMENT_CPP))
+ {
+ log_indent();
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ log_indent_tmp();
+
+ /*
+ * Handle the case of a multi-line #define w/o anything on the
+ * first line (indent_tmp will be 1 or 0)
+ */
+ if ( pc->Is(CT_NL_CONT)
+ && frm.top().GetIndentTmp() <= indent_size
+ && frm.top().GetOpenToken() != CT_PP_DEFINE)
+ {
+ frm.top().SetIndentTmp(indent_size + 1);
+ log_indent_tmp();
+ }
+ // Get ready to indent the next item
+ did_newline = true;
+ }
+ // Check for open XML tags "</..."
+ log_rule_B("indent_xml_string");
+
+ if ( options::indent_xml_string() > 0
+ && pc->Is(CT_STRING)
+ && pc->Len() > 4
+ && pc->GetStr()[1] == '<'
+ && pc->GetStr()[2] != '/'
+ && pc->GetStr()[pc->Len() - 3] != '/')
+ {
+ if (xml_indent <= 0)
+ {
+ xml_indent = pc->GetColumn();
+ }
+ log_rule_B("indent_xml_string");
+ xml_indent += options::indent_xml_string();
+ }
+ // Issue #672
+ log_rule_B("indent_continue_class_head");
+
+ if ( pc->Is(CT_CLASS)
+ && language_is_set(LANG_CPP | LANG_JAVA)
+ && ( options::indent_ignore_first_continue()
+ || options::indent_continue_class_head() != 0)
+ && !classFound)
+ {
+ LOG_FMT(LINDENT, "%s(%d): orig line is %zu, CT_CLASS found, OPEN IT\n",
+ __func__, __LINE__, pc->GetOrigLine());
+ frm.push(pc, __func__, __LINE__);
+
+ if (options::indent_ignore_first_continue())
+ {
+ frm.top().SetIndent(get_indent_first_continue(pc));
+ }
+ else
+ {
+ frm.top().SetIndent(frm.prev().GetIndent() + options::indent_continue_class_head());
+ }
+ log_indent();
+
+ frm.top().SetIndentTmp(frm.top().GetIndent());
+ frm.top().SetIndentTab(frm.top().GetIndent());
+ log_indent_tmp();
+ classFound = true;
+ }
+ pc = pc->GetNext();
+
+ if (pc->Is(CT_SPACE)) // Issue #3710
+ {
+ pc = pc->GetNext();
+ }
+ LOG_FMT(LINDLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ }
+null_pc:
+
+ // Throw out any stuff inside a preprocessor - no need to warn
+ while ( !frm.empty()
+ && frm.top().GetInPreproc())
+ {
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ // Throw out any VBRACE_OPEN at the end - implied with the end of file
+ while ( !frm.empty()
+ && frm.top().GetOpenToken() == CT_VBRACE_OPEN)
+ {
+ frm.pop(__func__, __LINE__, pc);
+ }
+
+ for (size_t idx_temp = 1; idx_temp < frm.size(); idx_temp++)
+ {
+ LOG_FMT(LWARN, "%s(%d): size is %zu\n",
+ __func__, __LINE__, frm.size());
+ LOG_FMT(LWARN, "%s(%d): File: %s, open_line is %zu, parent is %s: Unmatched %s\n",
+ __func__, __LINE__, cpd.filename.c_str(), frm.at(idx_temp).GetOpenLine(),
+ get_token_name(frm.at(idx_temp).GetParent()),
+ get_token_name(frm.at(idx_temp).GetOpenToken()));
+ exit(EX_IOERR);
+ }
+
+ LOG_FMT(LINDLINE, "%s(%d): before quick_align_again\n", __func__, __LINE__);
+ quick_align_again();
+ quick_indent_again();
+ LOG_FMT(LINDLINE, "%s(%d): after quick_align_again\n", __func__, __LINE__);
+} // indent_text
+
+
+static bool single_line_comment_indent_rule_applies(Chunk *start, bool forward)
+{
+ LOG_FUNC_ENTRY();
+
+ if (!start->IsSingleLineComment())
+ {
+ return(false);
+ }
+ Chunk *pc = start;
+ size_t nl_count = 0;
+
+ while ((pc = forward ? pc->GetNext() : pc->GetPrev())->IsNotNullChunk())
+ {
+ if (pc->IsNewline())
+ {
+ if ( nl_count > 0
+ || pc->GetNlCount() > 1)
+ {
+ return(false);
+ }
+ nl_count++;
+ }
+ else if (pc->IsSingleLineComment())
+ {
+ nl_count = 0;
+ }
+ else if ( pc->Is(CT_COMMENT_MULTI)
+ || (forward && pc->IsBraceClose())
+ || (!forward && pc->IsBraceOpen()))
+ {
+ /*
+ * check for things we wouldn't want to indent the comment for
+ * example: non-single line comment, closing brace
+ */
+ return(false);
+ }
+ else
+ {
+ return(true);
+ }
+ }
+ return(false);
+} // single_line_comment_indent_rule_applies
+
+
+static bool is_end_of_assignment(Chunk *pc, const ParsingFrame &frm)
+{
+ return( ( frm.top().GetOpenToken() == CT_ASSIGN_NL
+ || frm.top().GetOpenToken() == CT_MEMBER
+ || frm.top().GetOpenToken() == CT_ASSIGN)
+ && ( pc->IsSemicolon()
+ || pc->Is(CT_COMMA)
+ || pc->Is(CT_BRACE_OPEN)
+ || pc->Is(CT_SPAREN_CLOSE)
+ || ( pc->Is(CT_SQUARE_OPEN)
+ && pc->GetParentType() == CT_ASSIGN))
+ && pc->GetParentType() != CT_CPP_LAMBDA);
+}
+
+
+static size_t calc_comment_next_col_diff(Chunk *pc)
+{
+ Chunk *next = pc; // assumes pc has a comment type
+
+ LOG_FMT(LCMTIND, "%s(%d): next->Text() is '%s'\n",
+ __func__, __LINE__, next->Text());
+
+ // Note: every comment is squashed into a single token
+ // (including newline chars for multiline comments) and is followed by
+ // a newline token (unless there are no more tokens left)
+ do
+ {
+ Chunk *newline_token = next->GetNext();
+ LOG_FMT(LCMTIND, "%s(%d): newline_token->Text() is '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, newline_token->Text(), newline_token->GetOrigLine(), newline_token->GetOrigCol());
+
+ if ( newline_token->IsNullChunk()
+ || newline_token->GetNlCount() > 1)
+ {
+ return(5000); // FIXME: Max thresh magic number 5000
+ }
+ next = newline_token->GetNext();
+
+ if (next->IsNotNullChunk())
+ {
+ LOG_FMT(LCMTIND, "%s(%d): next->Text() is '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, next->Text(), next->GetOrigLine(), next->GetOrigCol());
+ }
+ } while (next->IsComment());
+
+ if (next->IsNullChunk())
+ {
+ return(5000); // FIXME: Max thresh magic number 5000
+ }
+ LOG_FMT(LCMTIND, "%s(%d): next->Text() is '%s'\n",
+ __func__, __LINE__, next->Text());
+ // here next is the first non comment, non newline token
+ return(next->GetOrigCol() > pc->GetOrigCol()
+ ? next->GetOrigCol() - pc->GetOrigCol()
+ : pc->GetOrigCol() - next->GetOrigCol());
+}
+
+
+static void indent_comment(Chunk *pc, size_t col)
+{
+ LOG_FUNC_ENTRY();
+ char copy[1000];
+
+ LOG_FMT(LCMTIND, "%s(%d): pc->Text() is '%s', orig line %zu, orig col %zu, level %zu\n",
+ __func__, __LINE__, pc->ElidedText(copy), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
+
+ // force column 1 comment to column 1 if not changing them
+ log_rule_B("indent_col1_comment");
+
+ if ( pc->GetOrigCol() == 1
+ && !options::indent_col1_comment()
+ && !pc->TestFlags(PCF_INSERTED))
+ {
+ LOG_FMT(LCMTIND, "%s(%d): rule 1 - keep in col 1\n", __func__, __LINE__);
+ reindent_line(pc, 1);
+ return;
+ }
+ Chunk *nl = pc->GetPrev();
+
+ if (nl->IsNotNullChunk())
+ {
+ LOG_FMT(LCMTIND, "%s(%d): nl->Text() is '%s', orig line %zu, orig col %zu, level %zu\n",
+ __func__, __LINE__, nl->Text(), nl->GetOrigLine(), nl->GetOrigCol(), nl->GetLevel());
+ }
+
+ if (pc->GetOrigCol() > 1)
+ {
+ Chunk *prev = nl->GetPrev();
+
+ if (prev->IsNotNullChunk())
+ {
+ LOG_FMT(LCMTIND, "%s(%d): prev->Text() is '%s', orig line %zu, orig col %zu, level %zu\n",
+ __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(), prev->GetLevel());
+ log_pcf_flags(LCMTIND, prev->GetFlags());
+ }
+
+ if ( prev->IsComment()
+ && nl->GetNlCount() == 1)
+ {
+ const size_t prev_col_diff = (prev->GetOrigCol() > pc->GetOrigCol())
+ ? prev->GetOrigCol() - pc->GetOrigCol()
+ : pc->GetOrigCol() - prev->GetOrigCol();
+ LOG_FMT(LCMTIND, "%s(%d): prev_col_diff is %zu\n",
+ __func__, __LINE__, prev_col_diff);
+
+ /*
+ * Here we want to align comments that are relatively close one to
+ * another but not when the comment is a Doxygen comment (Issue #1134)
+ */
+ if (prev_col_diff <= options::indent_comment_align_thresh())
+ {
+ LOG_FMT(LCMTIND, "%s(%d): prev->Text() is '%s', Doxygen_comment(prev) is %s\n",
+ __func__, __LINE__, prev->Text(), prev->IsDoxygenComment() ? "TRUE" : "FALSE");
+ LOG_FMT(LCMTIND, "%s(%d): pc->Text() is '%s', Doxygen_comment(pc) is %s\n",
+ __func__, __LINE__, pc->Text(), pc->IsDoxygenComment() ? "TRUE" : "FALSE");
+
+ if (prev->IsDoxygenComment() == pc->IsDoxygenComment())
+ {
+ const size_t next_col_diff = calc_comment_next_col_diff(pc);
+ LOG_FMT(LCMTIND, "%s(%d): next_col_diff is %zu\n",
+ __func__, __LINE__, next_col_diff);
+
+ // Align to the previous comment or to the next token?
+ if ( prev_col_diff <= next_col_diff
+ || next_col_diff == 5000) // FIXME: Max thresh magic number 5000
+ {
+ LOG_FMT(LCMTIND, "%s(%d): rule 3 - prev comment, coldiff = %zu, now in %zu\n",
+ __func__, __LINE__, prev_col_diff, pc->GetColumn());
+ reindent_line(pc, prev->GetColumn());
+ return;
+ }
+ }
+ }
+ }
+ }
+ // check if special single-line-comment-before-code rule applies
+ log_rule_B("indent_single_line_comments_before");
+
+ if ( (options::indent_single_line_comments_before() > 0)
+ && single_line_comment_indent_rule_applies(pc, true))
+ {
+ LOG_FMT(LCMTIND, "%s(%d): rule 4 - indent single line comments before code, now in %zu\n",
+ __func__, __LINE__, pc->GetColumn());
+ reindent_line(pc, col + options::indent_single_line_comments_before());
+ return;
+ }
+ // check if special single-line-comment-after-code rule applies
+ log_rule_B("indent_single_line_comments_after");
+
+ if ( (options::indent_single_line_comments_after() > 0)
+ && single_line_comment_indent_rule_applies(pc, false))
+ {
+ LOG_FMT(LCMTIND, "%s(%d): rule 4 - indent single line comments after code, now in %zu\n",
+ __func__, __LINE__, pc->GetColumn());
+ reindent_line(pc, col + options::indent_single_line_comments_after());
+ return;
+ }
+ log_rule_B("indent_comment");
+
+ if ( pc->GetOrigCol() > 1
+ && !options::indent_comment())
+ {
+ LOG_FMT(LCMTIND, "%s(%d): rule 5 - keep in orig col\n", __func__, __LINE__);
+ reindent_line(pc, pc->GetOrigCol());
+ return;
+ }
+ LOG_FMT(LCMTIND, "%s(%d): rule 6 - fall-through, stay in %zu\n",
+ __func__, __LINE__, col);
+ reindent_line(pc, col);
+} // indent_comment
+
+
+bool ifdef_over_whole_file()
+{
+ LOG_FUNC_ENTRY();
+
+ // if requested, treat an #if that guards the entire file the same as any other #if
+ // if running as frag, assume #if is not a guard
+ if ( options::pp_indent_in_guard()
+ || cpd.frag)
+ {
+ return(false);
+ }
+
+ // the results for this file are cached
+ if (cpd.ifdef_over_whole_file)
+ {
+ return(cpd.ifdef_over_whole_file > 0);
+ }
+ Chunk *start_pp = Chunk::NullChunkPtr;
+ Chunk *end_pp = Chunk::NullChunkPtr;
+ size_t IFstage = 0;
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ LOG_FMT(LNOTE, "%s(%d): pc->pp level is %zu, pc orig line is %zu, orig col is %zu, pc->Text() is '%s'\n",
+ __func__, __LINE__, pc->GetPpLevel(), pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+
+ if (pc->IsCommentOrNewline())
+ {
+ continue;
+ }
+
+ if (IFstage == 0) // 0 is BEGIN
+ {
+ // Check the first preprocessor, make sure it is an #if type
+ if (pc->IsNot(CT_PREPROC))
+ {
+ break;
+ }
+ Chunk *next = pc->GetNext();
+
+ if ( next->IsNullChunk()
+ || next->IsNot(CT_PP_IF))
+ {
+ break;
+ }
+ IFstage = 1; // 1 is CT_PP_IF found
+ start_pp = pc;
+ }
+ else if (IFstage == 1) // 1 is CT_PP_IF found
+ {
+ // Scan until a preprocessor at level 0 is found - the close to the #if
+ if (pc->Is(CT_PREPROC))
+ {
+ if (pc->GetPpLevel() == 0)
+ {
+ IFstage = 2;
+ end_pp = pc;
+ }
+ }
+ continue;
+ }
+ else if (IFstage == 2)
+ {
+ // We should only see the rest of the preprocessor
+ if ( pc->Is(CT_PREPROC)
+ || !pc->TestFlags(PCF_IN_PREPROC))
+ {
+ IFstage = 0;
+ break;
+ }
+ }
+ }
+
+ cpd.ifdef_over_whole_file = (IFstage == 2) ? 1 : -1;
+
+ if (cpd.ifdef_over_whole_file > 0)
+ {
+ start_pp->SetFlagBits(PCF_WF_IF);
+ end_pp->SetFlagBits(PCF_WF_ENDIF);
+ }
+ LOG_FMT(LNOTE, "The whole file is%s covered by a #IF\n",
+ (cpd.ifdef_over_whole_file > 0) ? "" : " NOT");
+ return(cpd.ifdef_over_whole_file > 0);
+} // ifdef_over_whole_file
+
+
+void indent_preproc()
+{
+ LOG_FUNC_ENTRY();
+
+ // Scan to see if the whole file is covered by one #ifdef
+ const size_t pp_level_sub = ifdef_over_whole_file() ? 1 : 0;
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ LOG_FMT(LPPIS, "%s(%d): orig line is %zu, orig col is %zu, pc->Text() is '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+
+ if (pc->IsNot(CT_PREPROC))
+ {
+ continue;
+ }
+ Chunk *next = pc->GetNextNcNnl();
+
+ if (next->IsNullChunk())
+ {
+ break;
+ }
+ const size_t pp_level = (pc->GetPpLevel() > pp_level_sub)
+ ? pc->GetPpLevel() - pp_level_sub : 0;
+
+ // Adjust the indent of the '#'
+ if (options::pp_indent() & IARF_ADD)
+ {
+ log_rule_B("pp_indent ADD");
+ reindent_line(pc, 1 + pp_level * options::pp_indent_count());
+ }
+ else if (options::pp_indent() & IARF_REMOVE)
+ {
+ log_rule_B("pp_indent REMOVE");
+ reindent_line(pc, 1);
+ }
+ // Add spacing by adjusting the length
+ log_rule_B("pp_space_after");
+
+ if ( (options::pp_space_after() != IARF_IGNORE)
+ && next->IsNotNullChunk())
+ {
+ if (options::pp_space_after() & IARF_ADD)
+ {
+ log_rule_B("pp_space_after ADD");
+ const size_t mult = options::pp_space_count();
+ reindent_line(next, pc->GetColumn() + pc->Len() + (pp_level * mult));
+ }
+ else if (options::pp_space_after() & IARF_REMOVE)
+ {
+ log_rule_B("pp_space_after REMOVE");
+ reindent_line(next, pc->GetColumn() + pc->Len());
+ }
+ }
+ // Mark as already handled if not region stuff or in column 1
+ log_rule_B("pp_indent_at_level");
+
+ bool at_file_level = pc->GetBraceLevel() <= ((pc->GetParentType() == CT_PP_DEFINE) ? 1 : 0);
+
+ if ( ( ( at_file_level
+ && !options::pp_indent_at_level0())
+ || ( !at_file_level
+ && !options::pp_indent_at_level()))
+ && pc->GetParentType() != CT_PP_REGION
+ && pc->GetParentType() != CT_PP_ENDREGION)
+ {
+ log_rule_B("pp_define_at_level");
+
+ if ( !options::pp_define_at_level()
+ || pc->GetParentType() != CT_PP_DEFINE)
+ {
+ pc->SetFlagBits(PCF_DONT_INDENT);
+ }
+ }
+ LOG_FMT(LPPIS, "%s(%d): orig line %zu to %zu (len %zu, next->col %zu)\n",
+ __func__, __LINE__, pc->GetOrigLine(), 1 + pp_level, pc->Len(),
+ next ? next->GetColumn() : -1);
+ }
+} // indent_preproc
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/indent.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/indent.h
new file mode 100644
index 00000000..ee927638
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/indent.h
@@ -0,0 +1,59 @@
+/**
+ * @file indent.h
+ * prototypes for indent.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+#ifndef INDENT_H_INCLUDED
+#define INDENT_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+
+/**
+ * Change the top-level indentation only by changing the column member in
+ * the chunk structures.
+ * The level indicator must already be set.
+ */
+void indent_text();
+
+
+/**
+ * Indent the preprocessor stuff from column 1.
+ * FIXME: This is broken if there is a comment or escaped newline
+ * between '#' and 'define'.
+ */
+void indent_preproc();
+
+/**
+ *
+ * @param pc chunk at the start of the line
+ * @param column desired column
+ */
+void indent_to_column(Chunk *pc, size_t column);
+
+
+/**
+ * Same as indent_to_column, except we can move both ways
+ *
+ * @param pc chunk at the start of the line
+ * @param column desired column
+ */
+void align_to_column(Chunk *pc, size_t column);
+
+
+//! Scan to see if the whole file is covered by one #ifdef
+bool ifdef_over_whole_file();
+
+
+/**
+ * Changes the initial indent for a line to the given column
+ *
+ * @param pc The chunk at the start of the line
+ * @param column The desired column
+ */
+void reindent_line(Chunk *pc, size_t column);
+
+
+#endif /* INDENT_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/keywords.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/keywords.cpp
new file mode 100644
index 00000000..98ff84a3
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/keywords.cpp
@@ -0,0 +1,691 @@
+/**
+ * @file keywords.cpp
+ * Manages the table of keywords.
+ *
+ * @author Ben Gardner
+ * @author Guy Maurel since version 0.62 for uncrustify4Qt
+ * October 2015, 2023
+ * @license GPL v2+
+ */
+
+#include "keywords.h"
+
+#include "args.h"
+#include "prototypes.h"
+#include "uncrustify.h"
+#include "uncrustify_limits.h"
+//# define DEBUG_LANGUAGE
+// see also the call to dump_keyword_for_lang
+#ifdef DEBUG_LANGUAGE
+#include "unc_tools.h"
+#endif
+
+#include <cerrno>
+#include <map>
+
+
+using namespace std;
+
+// Dynamic keyword map
+typedef map<string, E_Token> dkwmap;
+static dkwmap dkwm;
+
+
+/**
+ * Compares two chunk_tag_t entries using strcmp on the strings
+ *
+ * @param the 'left' entry
+ * @param the 'right' entry
+ *
+ * @return == 0 if both keywords are equal
+ * @return < 0 p1 is smaller than p2
+ * @return > 0 p2 is smaller than p1
+ */
+static int kw_compare(const void *p1, const void *p2);
+
+
+/**
+ * search in static keywords for first occurrence of a given tag
+ *
+ * @param tag/keyword to search for
+ */
+static const chunk_tag_t *kw_static_first(const chunk_tag_t *tag);
+
+
+static const chunk_tag_t *kw_static_match(bool orig_list, const chunk_tag_t *tag, int lang_flags);
+
+/**
+ * selected keywords for the chosen language.
+ */
+
+static chunk_tag_t keyword_for_lang[uncrustify::limits::MAX_KEYWORDS];
+static size_t language_count;
+
+/**
+ * interesting static keywords - keep sorted.
+ * Table includes the Name, Type, and Language flags.
+ */
+static chunk_tag_t keywords[] =
+{
+ // TODO: it might be useful if users could add their custom keywords to this list
+ { "@autoreleasepool", CT_AUTORELEASEPOOL, LANG_OC },
+ { "@available", CT_OC_AVAILABLE, LANG_OC },
+ { "@catch", CT_CATCH, LANG_OC },
+ { "@dynamic", CT_OC_DYNAMIC, LANG_OC },
+ { "@end", CT_OC_END, LANG_OC },
+ { "@finally", CT_FINALLY, LANG_OC },
+ { "@implementation", CT_OC_IMPL, LANG_OC },
+ { "@interface", CT_OC_INTF, LANG_OC },
+ { "@interface", CT_CLASS, LANG_JAVA },
+ { "@private", CT_ACCESS, LANG_OC },
+ { "@property", CT_OC_PROPERTY, LANG_OC },
+ { "@protected", CT_ACCESS, LANG_OC },
+ { "@protocol", CT_OC_PROTOCOL, LANG_OC },
+ { "@public", CT_ACCESS, LANG_OC },
+ { "@selector", CT_OC_SEL, LANG_OC },
+ { "@synchronized", CT_SYNCHRONIZED, LANG_OC },
+ { "@synthesize", CT_OC_DYNAMIC, LANG_OC },
+ { "@throw", CT_THROW, LANG_OC },
+ { "@try", CT_TRY, LANG_OC },
+ { "API_AVAILABLE", CT_ATTRIBUTE, LANG_OC },
+ { "API_DEPRECATED", CT_ATTRIBUTE, LANG_OC },
+ { "API_DEPRECATED_WITH_REPLACEMENT", CT_ATTRIBUTE, LANG_OC },
+ { "API_UNAVAILABLE", CT_ATTRIBUTE, LANG_OC },
+ { "BOOL", CT_TYPE, LANG_OC },
+ { "INT16_C", CT_TYPE, LANG_CPP },
+ { "INT32_C", CT_TYPE, LANG_CPP },
+ { "INT64_C", CT_TYPE, LANG_CPP },
+ { "INT8_C", CT_TYPE, LANG_CPP },
+ { "INTMAX_C", CT_TYPE, LANG_CPP },
+ { "NS_ENUM", CT_ENUM, LANG_OC },
+ { "NS_OPTIONS", CT_ENUM, LANG_OC },
+ { "Q_EMIT", CT_Q_EMIT, LANG_CPP },
+ { "Q_FOREACH", CT_FOR, LANG_CPP },
+ { "Q_FOREVER", CT_Q_FOREVER, LANG_CPP },
+ { "Q_GADGET", CT_Q_GADGET, LANG_CPP },
+ { "Q_OBJECT", CT_COMMENT_EMBED, LANG_CPP },
+ { "Q_SIGNALS", CT_ACCESS, LANG_CPP },
+ { "UINT16_C", CT_TYPE, LANG_CPP },
+ { "UINT32_C", CT_TYPE, LANG_CPP },
+ { "UINT64_C", CT_TYPE, LANG_CPP },
+ { "UINT8_C", CT_TYPE, LANG_CPP },
+ { "UINTMAX_C", CT_TYPE, LANG_CPP },
+ { "_Bool", CT_TYPE, LANG_C | LANG_CPP },
+ { "_Complex", CT_TYPE, LANG_C | LANG_CPP },
+ { "_Imaginary", CT_TYPE, LANG_C | LANG_CPP },
+ { "_Nonnull", CT_QUALIFIER, LANG_OC },
+ { "_Null_unspecified", CT_QUALIFIER, LANG_OC },
+ { "_Nullable", CT_QUALIFIER, LANG_OC },
+ { "_Pragma", CT_PP_PRAGMA, LANG_ALL | FLAG_PP },
+ { "__DI__", CT_DI, LANG_C | LANG_CPP },
+ { "__HI__", CT_HI, LANG_C | LANG_CPP },
+ { "__QI__", CT_QI, LANG_C | LANG_CPP },
+ { "__SI__", CT_SI, LANG_C | LANG_CPP },
+ { "__asm__", CT_ASM, LANG_C | LANG_CPP },
+ { "__attribute__", CT_ATTRIBUTE, LANG_C | LANG_CPP | LANG_OC },
+ { "__autoreleasing", CT_QUALIFIER, LANG_C | LANG_CPP },
+ { "__block", CT_QUALIFIER, LANG_C | LANG_CPP | LANG_OC },
+ { "__bridge", CT_QUALIFIER, LANG_C | LANG_CPP },
+ { "__bridge_retained", CT_QUALIFIER, LANG_C | LANG_CPP },
+ { "__bridge_transfer", CT_QUALIFIER, LANG_C | LANG_CPP },
+ { "__const__", CT_QUALIFIER, LANG_C | LANG_CPP },
+ { "__declspec", CT_DECLSPEC, LANG_C | LANG_CPP },
+ { "__except", CT_CATCH, LANG_C | LANG_CPP },
+ { "__finally", CT_FINALLY, LANG_C | LANG_CPP },
+ { "__has_include", CT_CNG_HASINC, LANG_C | LANG_CPP | LANG_OC | FLAG_PP },
+ { "__has_include_next", CT_CNG_HASINCN, LANG_C | LANG_CPP | FLAG_PP },
+ { "__inline__", CT_QUALIFIER, LANG_C | LANG_CPP },
+ { "__nonnull", CT_QUALIFIER, LANG_OC },
+ { "__nothrow__", CT_NOTHROW, LANG_C | LANG_CPP },
+ { "__null_unspecified", CT_QUALIFIER, LANG_OC },
+ { "__nullable", CT_QUALIFIER, LANG_OC },
+ { "__pragma", CT_PP_PRAGMA, LANG_ALL | FLAG_PP },
+ { "__restrict", CT_QUALIFIER, LANG_C | LANG_CPP },
+ { "__signed__", CT_TYPE, LANG_C | LANG_CPP },
+ { "__strong", CT_QUALIFIER, LANG_C | LANG_CPP },
+ { "__thread", CT_QUALIFIER, LANG_C | LANG_CPP },
+ { "__traits", CT_QUALIFIER, LANG_D },
+ { "__try", CT_TRY, LANG_C | LANG_CPP },
+ { "__typeof", CT_DECLTYPE, LANG_C | LANG_CPP | LANG_OC },
+ { "__typeof__", CT_DECLTYPE, LANG_C | LANG_CPP },
+ { "__unsafe_unretained", CT_QUALIFIER, LANG_OC },
+ { "__unused", CT_ATTRIBUTE, LANG_C | LANG_CPP },
+ { "__volatile__", CT_QUALIFIER, LANG_C | LANG_CPP },
+ { "__weak", CT_QUALIFIER, LANG_C | LANG_CPP },
+ { "__word__", CT_WORD_, LANG_C | LANG_CPP },
+ { "abstract", CT_QUALIFIER, LANG_CS | LANG_D | LANG_JAVA | LANG_VALA | LANG_ECMA },
+ { "add", CT_GETSET, LANG_CS },
+ { "alias", CT_USING, LANG_D },
+ { "align", CT_ALIGN, LANG_D },
+ { "alignof", CT_SIZEOF, LANG_CPP },
+ { "and", CT_SBOOL, LANG_CPP },
+ { "and_eq", CT_SASSIGN, LANG_CPP },
+ { "as", CT_AS, LANG_CS | LANG_VALA },
+ { "asm", CT_ASM, LANG_C | LANG_CPP | LANG_D },
+ { "asm", CT_PP_ASM, LANG_ALL | FLAG_PP },
+ { "assert", CT_ASSERT, LANG_JAVA },
+ { "assert", CT_FUNCTION, LANG_D | LANG_PAWN },
+ { "assert", CT_PP_ASSERT, LANG_PAWN | FLAG_PP },
+ { "async", CT_QUALIFIER, LANG_VALA },
+ { "auto", CT_TYPE, LANG_C | LANG_CPP | LANG_D },
+ { "base", CT_BASE, LANG_CS | LANG_VALA },
+ { "bit", CT_TYPE, LANG_D },
+ { "bitand", CT_ARITH, LANG_C | LANG_CPP },
+ { "bitor", CT_ARITH, LANG_C | LANG_CPP },
+ { "body", CT_BODY, LANG_D },
+ { "bool", CT_TYPE, LANG_C | LANG_CPP | LANG_CS | LANG_VALA },
+ { "boolean", CT_TYPE, LANG_JAVA | LANG_ECMA },
+ { "break", CT_BREAK, LANG_ALL },
+ { "byte", CT_TYPE, LANG_CS | LANG_D | LANG_JAVA | LANG_ECMA },
+ { "case", CT_CASE, LANG_ALL },
+ { "cast", CT_D_CAST, LANG_D },
+ { "catch", CT_CATCH, LANG_CPP | LANG_CS | LANG_VALA | LANG_D | LANG_JAVA | LANG_ECMA },
+ { "cdouble", CT_TYPE, LANG_D },
+ { "cent", CT_TYPE, LANG_D },
+ { "cfloat", CT_TYPE, LANG_D },
+ { "char", CT_CHAR, LANG_PAWN },
+ { "char", CT_TYPE, LANG_ALLC },
+ { "checked", CT_QUALIFIER, LANG_CS },
+ { "class", CT_CLASS, LANG_CPP | LANG_CS | LANG_D | LANG_JAVA | LANG_VALA | LANG_ECMA },
+ { "compl", CT_ARITH, LANG_CPP },
+ { "const", CT_QUALIFIER, LANG_ALL },
+ { "const_cast", CT_TYPE_CAST, LANG_CPP },
+ { "constexpr", CT_QUALIFIER, LANG_CPP },
+ { "construct", CT_CONSTRUCT, LANG_VALA },
+ { "continue", CT_CONTINUE, LANG_ALL },
+ { "creal", CT_TYPE, LANG_D },
+ { "dchar", CT_TYPE, LANG_D },
+ { "debug", CT_DEBUG, LANG_D },
+ { "debugger", CT_DEBUGGER, LANG_ECMA },
+ { "decltype", CT_DECLTYPE, LANG_CPP },
+ { "default", CT_DEFAULT, LANG_ALL },
+ { "define", CT_PP_DEFINE, LANG_ALL | FLAG_PP },
+ { "defined", CT_DEFINED, LANG_PAWN },
+ { "defined", CT_PP_DEFINED, LANG_ALLC | FLAG_PP },
+ { "delegate", CT_DELEGATE, LANG_CS | LANG_VALA | LANG_D },
+ { "delete", CT_DELETE, LANG_CPP | LANG_D | LANG_ECMA | LANG_VALA },
+ { "deprecated", CT_QUALIFIER, LANG_D },
+ { "do", CT_DO, LANG_ALL },
+ { "double", CT_TYPE, LANG_ALLC },
+ { "dynamic", CT_QUALIFIER, LANG_VALA },
+ { "dynamic_cast", CT_TYPE_CAST, LANG_CPP },
+ { "elif", CT_PP_ELSE, LANG_ALLC | FLAG_PP },
+ { "else", CT_ELSE, LANG_ALL },
+ { "else", CT_PP_ELSE, LANG_ALL | FLAG_PP },
+ { "elseif", CT_PP_ELSE, LANG_PAWN | FLAG_PP },
+ { "emit", CT_PP_EMIT, LANG_PAWN | FLAG_PP },
+ { "endif", CT_PP_ENDIF, LANG_ALL | FLAG_PP },
+ { "endinput", CT_PP_ENDINPUT, LANG_PAWN | FLAG_PP },
+ { "endregion", CT_PP_ENDREGION, LANG_ALL | FLAG_PP },
+ { "endscript", CT_PP_ENDINPUT, LANG_PAWN | FLAG_PP },
+ { "enum", CT_ENUM, LANG_ALL },
+ { "error", CT_PP_ERROR, LANG_PAWN | FLAG_PP },
+ { "errordomain", CT_ENUM, LANG_VALA },
+ { "event", CT_TYPE, LANG_CS },
+ { "exit", CT_FUNCTION, LANG_PAWN },
+ { "explicit", CT_QUALIFIER, LANG_CPP | LANG_CS },
+ { "export", CT_EXPORT, LANG_CPP | LANG_D | LANG_ECMA },
+ { "extends", CT_QUALIFIER, LANG_JAVA | LANG_ECMA },
+ { "extern", CT_EXTERN, LANG_C | LANG_CPP | LANG_OC | LANG_CS | LANG_D | LANG_VALA },
+ { "false", CT_WORD, LANG_ALL },
+ { "file", CT_PP_FILE, LANG_PAWN | FLAG_PP },
+ { "final", CT_QUALIFIER, LANG_CPP | LANG_D | LANG_ECMA },
+ { "finally", CT_FINALLY, LANG_D | LANG_CS | LANG_VALA | LANG_ECMA | LANG_JAVA },
+ { "fixed", CT_FIXED, LANG_CS },
+ { "flags", CT_TYPE, LANG_VALA },
+ { "float", CT_TYPE, LANG_ALLC },
+ { "for", CT_FOR, LANG_ALL },
+ { "foreach", CT_FOR, LANG_CS | LANG_D | LANG_VALA },
+ { "foreach_reverse", CT_FOR, LANG_D },
+ { "forward", CT_FORWARD, LANG_PAWN },
+ { "friend", CT_FRIEND, LANG_CPP },
+ { "function", CT_FUNCTION, LANG_D | LANG_ECMA },
+ { "get", CT_GETSET, LANG_CS | LANG_VALA },
+ { "goto", CT_GOTO, LANG_ALL },
+ { "idouble", CT_TYPE, LANG_D },
+ { "if", CT_IF, LANG_ALL },
+ { "if", CT_PP_IF, LANG_ALL | FLAG_PP },
+ { "ifdef", CT_PP_IF, LANG_ALLC | FLAG_PP },
+ { "ifloat", CT_TYPE, LANG_D },
+ { "ifndef", CT_PP_IF, LANG_ALLC | FLAG_PP },
+ { "implements", CT_QUALIFIER, LANG_JAVA | LANG_ECMA },
+ { "implicit", CT_QUALIFIER, LANG_CS },
+ { "import", CT_IMPORT, LANG_D | LANG_JAVA | LANG_ECMA },
+ { "import", CT_PP_INCLUDE, LANG_OC | FLAG_PP },
+ { "in", CT_IN, LANG_D | LANG_CS | LANG_VALA | LANG_ECMA | LANG_OC },
+ { "include", CT_PP_INCLUDE, LANG_C | LANG_CPP | LANG_OC | LANG_PAWN | FLAG_PP },
+ { "inline", CT_QUALIFIER, LANG_C | LANG_CPP },
+ { "inout", CT_QUALIFIER, LANG_D },
+ { "instanceof", CT_SIZEOF, LANG_JAVA | LANG_ECMA },
+ { "int", CT_TYPE, LANG_ALLC },
+ { "interface", CT_CLASS, LANG_CPP | LANG_CS | LANG_D | LANG_JAVA | LANG_VALA | LANG_ECMA },
+ { "internal", CT_QUALIFIER, LANG_CS | LANG_VALA },
+ { "invariant", CT_INVARIANT, LANG_D },
+ { "ireal", CT_TYPE, LANG_D },
+ { "is", CT_SCOMPARE, LANG_D | LANG_CS | LANG_VALA },
+ { "lazy", CT_LAZY, LANG_D },
+ { "line", CT_PP_LINE, LANG_PAWN | FLAG_PP },
+ { "lock", CT_LOCK, LANG_CS | LANG_VALA },
+ { "long", CT_TYPE, LANG_ALLC },
+ { "macro", CT_D_MACRO, LANG_D },
+ { "mixin", CT_CLASS, LANG_D }, // may need special handling
+ { "module", CT_D_MODULE, LANG_D },
+ { "mutable", CT_QUALIFIER, LANG_CPP },
+ { "namespace", CT_NAMESPACE, LANG_CPP | LANG_CS | LANG_VALA },
+ { "native", CT_NATIVE, LANG_PAWN },
+ { "native", CT_QUALIFIER, LANG_JAVA | LANG_ECMA },
+ { "new", CT_NEW, LANG_CPP | LANG_CS | LANG_D | LANG_JAVA | LANG_PAWN | LANG_VALA | LANG_ECMA },
+ { "noexcept", CT_NOEXCEPT, LANG_CPP },
+ { "nonnull", CT_TYPE, LANG_OC },
+ { "not", CT_SARITH, LANG_CPP },
+ { "not_eq", CT_SCOMPARE, LANG_CPP },
+// { "null", CT_TYPE, LANG_CS | LANG_D | LANG_JAVA | LANG_VALA },
+ { "null_resettable", CT_OC_PROPERTY_ATTR, LANG_OC },
+ { "null_unspecified", CT_TYPE, LANG_OC },
+ { "nullable", CT_TYPE, LANG_OC },
+ { "object", CT_TYPE, LANG_CS },
+ { "operator", CT_OPERATOR, LANG_CPP | LANG_CS | LANG_PAWN },
+ { "or", CT_SBOOL, LANG_CPP },
+ { "or_eq", CT_SASSIGN, LANG_CPP },
+ { "out", CT_QUALIFIER, LANG_CS | LANG_D | LANG_VALA },
+ { "override", CT_QUALIFIER, LANG_CPP | LANG_CS | LANG_D | LANG_VALA },
+ { "owned", CT_QUALIFIER, LANG_VALA },
+ { "package", CT_ACCESS, LANG_D },
+ { "package", CT_PACKAGE, LANG_ECMA | LANG_JAVA },
+ { "params", CT_TYPE, LANG_CS | LANG_VALA },
+ { "pragma", CT_PP_PRAGMA, LANG_ALL | FLAG_PP },
+ { "private", CT_ACCESS, LANG_ALLC_NOT_C }, // Issue # 4044
+ { "property", CT_PP_PROPERTY, LANG_CS | FLAG_PP },
+ { "protected", CT_ACCESS, LANG_ALLC_NOT_C }, // Issue # 4044
+ { "public", CT_ACCESS, LANG_ALLC_NOT_C }, // Issue # 4044
+ { "readonly", CT_QUALIFIER, LANG_CS },
+ { "real", CT_TYPE, LANG_D },
+ { "ref", CT_QUALIFIER, LANG_CS | LANG_VALA },
+ { "region", CT_PP_REGION, LANG_ALL | FLAG_PP },
+ { "register", CT_QUALIFIER, LANG_C | LANG_CPP },
+ { "reinterpret_cast", CT_TYPE_CAST, LANG_CPP },
+ { "remove", CT_GETSET, LANG_CS },
+ { "restrict", CT_QUALIFIER, LANG_C | LANG_CPP },
+ { "return", CT_RETURN, LANG_ALL },
+ { "sbyte", CT_TYPE, LANG_CS },
+ { "scope", CT_D_SCOPE, LANG_D },
+ { "sealed", CT_QUALIFIER, LANG_CS },
+ { "section", CT_PP_SECTION, LANG_PAWN | FLAG_PP },
+ { "self", CT_THIS, LANG_OC },
+ { "set", CT_GETSET, LANG_CS | LANG_VALA },
+ { "short", CT_TYPE, LANG_ALLC },
+ { "signal", CT_ACCESS, LANG_VALA },
+ { "signals", CT_ACCESS, LANG_CPP },
+ { "signed", CT_TYPE, LANG_C | LANG_CPP },
+ { "size_t", CT_TYPE, LANG_ALLC },
+ { "sizeof", CT_SIZEOF, LANG_C | LANG_CPP | LANG_CS | LANG_VALA | LANG_PAWN },
+ { "sleep", CT_SIZEOF, LANG_PAWN },
+ { "stackalloc", CT_NEW, LANG_CS },
+ { "state", CT_STATE, LANG_PAWN },
+ { "static", CT_QUALIFIER, LANG_ALL },
+ { "static_cast", CT_TYPE_CAST, LANG_CPP },
+ { "stock", CT_STOCK, LANG_PAWN },
+ { "strictfp", CT_QUALIFIER, LANG_JAVA },
+ { "string", CT_TYPE, LANG_CS | LANG_VALA },
+ { "struct", CT_STRUCT, LANG_C | LANG_CPP | LANG_OC | LANG_CS | LANG_D | LANG_VALA },
+ { "super", CT_SUPER, LANG_D | LANG_JAVA | LANG_ECMA },
+ { "switch", CT_SWITCH, LANG_ALL },
+ { "synchronized", CT_QUALIFIER, LANG_D | LANG_ECMA },
+ { "synchronized", CT_SYNCHRONIZED, LANG_JAVA },
+ { "tagof", CT_TAGOF, LANG_PAWN },
+ { "template", CT_TEMPLATE, LANG_CPP | LANG_D },
+ { "this", CT_THIS, LANG_CPP | LANG_CS | LANG_D | LANG_JAVA | LANG_VALA | LANG_ECMA },
+ { "throw", CT_THROW, LANG_CPP | LANG_CS | LANG_VALA | LANG_D | LANG_JAVA | LANG_ECMA },
+ { "throws", CT_QUALIFIER, LANG_JAVA | LANG_ECMA | LANG_VALA },
+ { "transient", CT_QUALIFIER, LANG_JAVA | LANG_ECMA },
+ { "true", CT_WORD, LANG_ALL },
+ { "try", CT_TRY, LANG_CPP | LANG_CS | LANG_D | LANG_JAVA | LANG_ECMA | LANG_VALA },
+ { "tryinclude", CT_PP_INCLUDE, LANG_PAWN | FLAG_PP },
+ { "typedef", CT_TYPEDEF, LANG_C | LANG_CPP | LANG_OC | LANG_D },
+ { "typeid", CT_SIZEOF, LANG_CPP | LANG_D },
+ { "typename", CT_TYPENAME, LANG_CPP },
+ { "typeof", CT_DECLTYPE, LANG_C | LANG_CPP },
+ { "typeof", CT_SIZEOF, LANG_CS | LANG_D | LANG_VALA | LANG_ECMA },
+ { "ubyte", CT_TYPE, LANG_D },
+ { "ucent", CT_TYPE, LANG_D },
+ { "uint", CT_TYPE, LANG_CS | LANG_VALA | LANG_D },
+ { "ulong", CT_TYPE, LANG_CS | LANG_VALA | LANG_D },
+ { "unchecked", CT_QUALIFIER, LANG_CS },
+ { "undef", CT_PP_UNDEF, LANG_ALL | FLAG_PP },
+ { "union", CT_UNION, LANG_C | LANG_CPP | LANG_D },
+ { "unittest", CT_UNITTEST, LANG_D },
+ { "unowned", CT_QUALIFIER, LANG_VALA },
+ { "unsafe", CT_UNSAFE, LANG_CS },
+ { "unsafe_unretained", CT_QUALIFIER, LANG_OC },
+ { "unsigned", CT_TYPE, LANG_C | LANG_CPP },
+ { "ushort", CT_TYPE, LANG_CS | LANG_VALA | LANG_D },
+ { "using", CT_USING, LANG_CPP | LANG_CS | LANG_VALA },
+ { "var", CT_TYPE, LANG_CS | LANG_VALA | LANG_ECMA },
+ { "version", CT_D_VERSION, LANG_D },
+ { "virtual", CT_QUALIFIER, LANG_CPP | LANG_CS | LANG_VALA },
+ { "void", CT_TYPE, LANG_ALLC },
+ { "volatile", CT_QUALIFIER, LANG_C | LANG_CPP | LANG_CS | LANG_JAVA | LANG_ECMA },
+ { "volatile", CT_VOLATILE, LANG_D },
+ { "wchar", CT_TYPE, LANG_D },
+ { "wchar_t", CT_TYPE, LANG_C | LANG_CPP },
+ { "weak", CT_QUALIFIER, LANG_VALA },
+ { "when", CT_WHEN, LANG_CS },
+ { "where", CT_WHERE, LANG_CS },
+ { "while", CT_WHILE, LANG_ALL },
+ { "with", CT_D_WITH, LANG_D | LANG_ECMA },
+ { "xor", CT_SARITH, LANG_CPP },
+ { "xor_eq", CT_SASSIGN, LANG_CPP },
+};
+
+
+// Issue #3353
+void init_keywords_for_language()
+{
+ unsigned int local_flags = cpd.lang_flags;
+ size_t keywords_count = ARRAY_SIZE(keywords);
+
+ language_count = 0;
+
+ for (size_t idx = 0; idx < keywords_count; idx++)
+ {
+ chunk_tag_t *tag = &keywords[idx];
+
+ if ((tag->lang_flags & local_flags) != 0)
+ {
+ // for debugging only
+ // fprintf(stderr, "%s(%d): %zu Keyword: '%s', type is '%s'\n",
+ // __func__, __LINE__, idx, tag->tag, get_token_name(tag->type));
+ keyword_for_lang[language_count].tag = tag->tag;
+ keyword_for_lang[language_count].type = tag->type;
+ keyword_for_lang[language_count].lang_flags = tag->lang_flags;
+ language_count++;
+ }
+ }
+
+#ifdef DEBUG_LANGUAGE
+ dump_keyword_for_lang(language_count, keyword_for_lang);
+#endif
+
+ LOG_FMT(LDYNKW, "%s(%d): Number of Keywords for language %s: '%zu'\n",
+ __func__, __LINE__, language_name_from_flags(local_flags), language_count);
+} // init_keywords_for_language
+
+
+static int kw_compare(const void *p1, const void *p2)
+{
+ const chunk_tag_t *t1 = static_cast<const chunk_tag_t *>(p1);
+ const chunk_tag_t *t2 = static_cast<const chunk_tag_t *>(p2);
+
+ return(strcmp(t1->tag, t2->tag));
+} // kw_compare
+
+
+bool keywords_are_sorted()
+{
+ size_t keywords_count = ARRAY_SIZE(keywords);
+
+ for (size_t idx = 1; idx < keywords_count; idx++)
+ {
+ if (kw_compare(&keywords[idx - 1], &keywords[idx]) > 0)
+ {
+ fprintf(stderr, "%s: bad sort order at idx %d, words '%s' and '%s'\n",
+ __func__, (int)idx - 1, keywords[idx - 1].tag, keywords[idx].tag);
+ // coveralls will always complain.
+ // these lines are only needed for the developer.
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ }
+
+ return(true);
+} // keywords_are_sorted
+
+
+void add_keyword(const std::string &tag, E_Token type)
+{
+ // See if the keyword has already been added
+ dkwmap::iterator it = dkwm.find(tag);
+
+ if (it != dkwm.end())
+ {
+ LOG_FMT(LDYNKW, "%s(%d): changed '%s' to '%s'\n",
+ __func__, __LINE__, tag.c_str(), get_token_name(type));
+ (*it).second = type;
+ return;
+ }
+ // Insert the keyword
+ dkwm.insert(dkwmap::value_type(tag, type));
+ LOG_FMT(LDYNKW, "%s(%d): added '%s' as '%s'\n",
+ __func__, __LINE__, tag.c_str(), get_token_name(type));
+} // add_keyword
+
+
+static const chunk_tag_t *kw_static_first(const chunk_tag_t *tag)
+{
+ const chunk_tag_t *prev = tag - 1;
+
+ // TODO: avoid pointer arithmetic
+ // loop over static keyword array
+ while ( prev >= &keyword_for_lang[0] // not at beginning of keyword array
+ && strcmp(prev->tag, tag->tag) == 0) // tags match
+ {
+ tag = prev;
+ prev--;
+ }
+ return(tag);
+} // kw_static_first
+
+
+static const chunk_tag_t *kw_static_match(bool orig_list, const chunk_tag_t *tag, int lang_flags)
+{
+ bool in_pp = ( cpd.in_preproc != CT_NONE
+ && cpd.in_preproc != CT_PP_DEFINE);
+
+ for (const chunk_tag_t *iter = kw_static_first(tag);
+ (orig_list) ? (iter < &keywords[ARRAY_SIZE(keywords)]) : (iter < &keyword_for_lang[language_count]);
+ iter++)
+ {
+ bool pp_iter = (iter->lang_flags & FLAG_PP) != 0; // forcing value to bool
+
+ if ( (strcmp(iter->tag, tag->tag) == 0)
+ && language_is_set(iter->lang_flags)
+ && (lang_flags & iter->lang_flags)
+ && in_pp == pp_iter)
+ {
+ return(iter);
+ }
+ }
+
+ return(nullptr);
+} // kw_static_match
+
+
+E_Token find_keyword_type(const char *word, size_t len)
+{
+ if (len <= 0)
+ {
+ return(CT_NONE);
+ }
+ // check the dynamic word list first
+ string ss(word, len);
+ dkwmap::iterator it = dkwm.find(ss);
+
+ if (it != dkwm.end())
+ {
+ return((*it).second);
+ }
+ chunk_tag_t key;
+
+ key.tag = ss.c_str();
+
+ // check the static word list
+ const chunk_tag_t *p_ret = static_cast<const chunk_tag_t *>(
+ bsearch(&key, keyword_for_lang, language_count, sizeof(keyword_for_lang[0]), kw_compare));
+
+ if (p_ret != nullptr)
+ {
+ if ( strcmp(p_ret->tag, "__pragma") == 0
+ || strcmp(p_ret->tag, "_Pragma") == 0)
+ {
+ cpd.in_preproc = CT_PREPROC;
+ }
+ p_ret = kw_static_match(false, p_ret, cpd.lang_flags);
+ }
+ return((p_ret != nullptr) ? p_ret->type : CT_WORD);
+} // find_keyword_type
+
+
+int load_keyword_file(const char *filename)
+{
+ FILE *pf = fopen(filename, "r");
+
+ if (pf == nullptr)
+ {
+ LOG_FMT(LERR, "%s: fopen(%s) failed: %s (%d)\n",
+ __func__, filename, strerror(errno), errno);
+ exit(EX_IOERR);
+ }
+ const int max_line_length = 256;
+ const int max_arg_count = 2;
+
+ // maximal length of a line in the file
+ char buf[max_line_length];
+ char *args[max_arg_count];
+ size_t line_no = 0;
+
+ // read file line by line
+ while (fgets(buf, max_line_length, pf) != nullptr)
+ {
+ line_no++;
+
+ // remove comments after '#' sign
+ char *ptr;
+
+ if ((ptr = strchr(buf, '#')) != nullptr)
+ {
+ *ptr = 0; // set string end where comment begins
+ }
+ size_t argc = Args::SplitLine(buf, args, max_arg_count);
+
+ if (argc > 0)
+ {
+ if ( argc == 1
+ && CharTable::IsKw1(*args[0]))
+ {
+ add_keyword(args[0], CT_TYPE);
+ }
+ else
+ {
+ LOG_FMT(LWARN, "%s:%zu Invalid line (starts with '%s')\n",
+ filename, line_no, args[0]);
+ exit(EX_SOFTWARE);
+ }
+ }
+ else
+ {
+ continue; // the line is empty
+ }
+ }
+ fclose(pf);
+ return(EX_OK);
+} // load_keyword_file
+
+
+void print_custom_keywords(FILE *pfile)
+{
+ for (const auto &keyword_pair : dkwm)
+ {
+ E_Token tt = keyword_pair.second;
+
+ if (tt == CT_TYPE)
+ {
+ fprintf(pfile, "custom type %*.s%s\n",
+ uncrustify::limits::MAX_OPTION_NAME_LEN - 10, " ",
+ keyword_pair.first.c_str());
+ }
+ else if (tt == CT_MACRO_OPEN)
+ {
+ fprintf(pfile, "macro-open %*.s%s\n",
+ uncrustify::limits::MAX_OPTION_NAME_LEN - 11, " ",
+ keyword_pair.first.c_str());
+ }
+ else if (tt == CT_MACRO_CLOSE)
+ {
+ fprintf(pfile, "macro-close %*.s%s\n",
+ uncrustify::limits::MAX_OPTION_NAME_LEN - 12, " ",
+ keyword_pair.first.c_str());
+ }
+ else if (tt == CT_MACRO_ELSE)
+ {
+ fprintf(pfile, "macro-else %*.s%s\n",
+ uncrustify::limits::MAX_OPTION_NAME_LEN - 11, " ",
+ keyword_pair.first.c_str());
+ }
+ else
+ {
+ const char *tn = get_token_name(tt);
+
+ fprintf(pfile, "set %s %*.s%s\n",
+ tn,
+ uncrustify::limits::MAX_OPTION_NAME_LEN - (4 + static_cast<int>(strlen(tn))),
+ " ", keyword_pair.first.c_str());
+ }
+ }
+} // print_custom_keywords
+
+
+void clear_keyword_file()
+{
+ dkwm.clear();
+} // clear_keyword_file
+
+
+pattern_class_e get_token_pattern_class(E_Token tok)
+{
+ // TODO: instead of this switch better assign the pattern class to each statement
+ switch (tok)
+ {
+ case CT_IF:
+ case CT_ELSEIF:
+ case CT_SWITCH:
+ case CT_FOR:
+ case CT_WHILE:
+ case CT_SYNCHRONIZED:
+ case CT_USING_STMT:
+ case CT_LOCK:
+ case CT_D_WITH:
+ case CT_D_VERSION_IF:
+ case CT_D_SCOPE_IF:
+ return(pattern_class_e::PBRACED);
+
+ case CT_ELSE:
+ return(pattern_class_e::ELSE);
+
+ case CT_DO:
+ case CT_TRY:
+ case CT_FINALLY:
+ case CT_BODY:
+ case CT_UNITTEST:
+ case CT_UNSAFE:
+ case CT_VOLATILE:
+ case CT_GETSET:
+ return(pattern_class_e::BRACED);
+
+ case CT_CATCH:
+ case CT_D_VERSION:
+ case CT_DEBUG:
+ return(pattern_class_e::OPBRACED);
+
+ case CT_NAMESPACE:
+ return(pattern_class_e::VBRACED);
+
+ case CT_WHILE_OF_DO:
+ return(pattern_class_e::PAREN);
+
+ case CT_INVARIANT:
+ return(pattern_class_e::OPPAREN);
+
+ default:
+ return(pattern_class_e::NONE);
+ } // switch
+} // get_token_pattern_class
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/keywords.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/keywords.h
new file mode 100644
index 00000000..25a4a536
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/keywords.h
@@ -0,0 +1,85 @@
+/**
+ * @file keywords.h
+ * prototypes for keywords.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef KEYWORDS_H_INCLUDED
+#define KEYWORDS_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+/**
+ * Initializes keywords table for a given language.
+ *
+ * Let us have a look on the problem is caused by the tokens "in" and "out",
+ * used in the file "Issue_3353.h" under.
+ * The strings representing the tokens ("in" and "out"), are found in the
+ * original table: static chunk_tag_t keywords[] because they are used by
+ * other languages. They are tokenized as CT_IN and CT_OUT.
+ * The correct tokenization is CT_FUNC_VAR.
+ *
+ * It is necessary to create (at run time) a new table with all the keywords
+ * proper to the used language.
+ *
+ */
+
+/**
+ * The file
+ * "Issue_3353.h"
+ * struct A {
+ * void (*in)(
+ * void);
+ * void (*out)(
+ * void);
+ * };
+ */
+void init_keywords_for_language();
+
+/**
+ * Loads the dynamic keywords from a file
+ *
+ * @param filename The path to the file to load
+ *
+ * @retval EX_OK successfully read keywords from file
+ * @retval EX_IOERR reading keywords file failed
+ */
+int load_keyword_file(const char *filename);
+
+
+/**
+ * Search first the dynamic and then the static table for a matching keyword
+ *
+ * @param word Pointer to the text -- NOT zero terminated
+ * @param len The length of the text
+ *
+ * @return CT_WORD (no match) or the keyword token
+ */
+E_Token find_keyword_type(const char *word, size_t len);
+
+
+/**
+ * Adds a keyword to the list of dynamic keywords
+ *
+ * @param tag The tag (string) must be zero terminated
+ * @param type The type, usually CT_TYPE
+ */
+void add_keyword(const std::string &tag, E_Token type);
+
+
+void print_custom_keywords(FILE *pfile);
+
+
+void clear_keyword_file();
+
+
+//! Returns the pattern that the keyword needs based on the token
+pattern_class_e get_token_pattern_class(E_Token tok);
+
+
+bool keywords_are_sorted();
+
+
+#endif /* KEYWORDS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/lang_pawn.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/lang_pawn.cpp
new file mode 100644
index 00000000..fe999a2a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/lang_pawn.cpp
@@ -0,0 +1,520 @@
+/**
+ * @file lang_pawn.cpp
+ * Special functions for pawn stuff
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "lang_pawn.h"
+
+#include "prototypes.h"
+
+using namespace uncrustify;
+
+
+/**
+ * Checks to see if a token continues a statement to the next line.
+ * We need to check for 'open' braces/paren/etc because the level doesn't
+ * change until the token after the open.
+ */
+static bool pawn_continued(Chunk *pc, size_t br_level);
+
+
+/**
+ * Functions prototypes and definitions can only appear in level 0.
+ *
+ * Function prototypes start with "native", "forward", or are just a function
+ * with a trailing semicolon instead of a open brace (or something else)
+ *
+ * somefunc(params) <-- def
+ * stock somefunc(params) <-- def
+ * somefunc(params); <-- proto
+ * forward somefunc(params) <-- proto
+ * native somefunc[rect](params) <-- proto
+ *
+ * Functions start with 'stock', 'static', 'public', or '@' (on level 0)
+ *
+ * Variable definitions start with 'stock', 'static', 'new', or 'public'.
+ */
+static Chunk *pawn_process_line(Chunk *start);
+
+
+//! We are on a level 0 function proto of def
+static Chunk *pawn_mark_function0(Chunk *start, Chunk *fcn);
+
+
+/**
+ * follows a variable definition at level 0 until the end.
+ * Adds a semicolon at the end, if needed.
+ */
+static Chunk *pawn_process_variable(Chunk *start);
+
+
+static Chunk *pawn_process_func_def(Chunk *pc);
+
+
+Chunk *pawn_add_vsemi_after(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc->IsSemicolon())
+ {
+ return(pc);
+ }
+ Chunk *next = pc->GetNextNc();
+
+ if ( next->IsNotNullChunk()
+ && next->IsSemicolon())
+ {
+ return(pc);
+ }
+ Chunk chunk = *pc;
+
+ chunk.SetType(CT_VSEMICOLON);
+ chunk.SetParentType(CT_NONE);
+ chunk.Str() = options::mod_pawn_semicolon() ? ";" : "";
+ chunk.SetColumn(pc->GetColumn() + pc->Len());
+
+ LOG_FMT(LPVSEMI, "%s: Added VSEMI on line %zu, prev='%s' [%s]\n",
+ __func__, pc->GetOrigLine(), pc->Text(),
+ get_token_name(pc->GetType()));
+
+ return(chunk.CopyAndAddAfter(pc));
+}
+
+
+void pawn_scrub_vsemi()
+{
+ constexpr static auto LCURRENT = LPVSEMI;
+
+ LOG_FUNC_ENTRY();
+
+ log_rule_B("mod_pawn_semicolon");
+
+ if (!options::mod_pawn_semicolon())
+ {
+ return;
+ }
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if (pc->IsNot(CT_VSEMICOLON))
+ {
+ continue;
+ }
+ Chunk *prev = pc->GetPrevNcNnl();
+
+ if (prev->Is(CT_BRACE_CLOSE))
+ {
+ if ( prev->GetParentType() == CT_IF
+ || prev->GetParentType() == CT_ELSE
+ || prev->GetParentType() == CT_SWITCH
+ || prev->GetParentType() == CT_CASE
+ || prev->GetParentType() == CT_WHILE_OF_DO)
+ {
+ pc->Str().clear();
+ }
+ }
+ }
+}
+
+
+static bool pawn_continued(Chunk *pc, size_t br_level)
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc->IsNullChunk())
+ {
+ return(false);
+ }
+
+ if ( pc->GetLevel() > br_level
+ || pc->Is(CT_ARITH)
+ || pc->Is(CT_SHIFT)
+ || pc->Is(CT_CARET)
+ || pc->Is(CT_QUESTION)
+ || pc->Is(CT_BOOL)
+ || pc->Is(CT_ASSIGN)
+ || pc->Is(CT_COMMA)
+ || pc->Is(CT_COMPARE)
+ || pc->Is(CT_IF)
+ || pc->Is(CT_ELSE)
+ || pc->Is(CT_DO)
+ || pc->Is(CT_SWITCH)
+ || pc->Is(CT_WHILE)
+ || pc->Is(CT_BRACE_OPEN)
+ || pc->Is(CT_VBRACE_OPEN)
+ || pc->Is(CT_FPAREN_OPEN)
+ || pc->GetParentType() == CT_IF
+ || pc->GetParentType() == CT_ELSE
+ || pc->GetParentType() == CT_ELSEIF
+ || pc->GetParentType() == CT_DO
+ || pc->GetParentType() == CT_FOR
+ || pc->GetParentType() == CT_SWITCH
+ || pc->GetParentType() == CT_WHILE
+ || pc->GetParentType() == CT_FUNC_DEF
+ || pc->GetParentType() == CT_ENUM
+ || pc->GetFlags().test_any(PCF_IN_ENUM | PCF_IN_STRUCT)
+ || pc->IsString(":")
+ || pc->IsString("+")
+ || pc->IsString("-"))
+ {
+ return(true);
+ }
+ return(false);
+} // pawn_continued
+
+
+void pawn_prescan()
+{
+ LOG_FUNC_ENTRY();
+
+ /*
+ * Start at the beginning and step through the entire file, and clean up
+ * any questionable stuff
+ */
+ bool did_nl = true;
+ Chunk *pc = Chunk::GetHead();
+
+ while (pc->IsNotNullChunk())
+ {
+ if ( did_nl
+ && pc->IsNot(CT_PREPROC)
+ && !pc->IsNewline()
+ && pc->GetLevel() == 0)
+ {
+ // pc now points to the start of a line
+ pc = pawn_process_line(pc);
+ }
+
+ // note that continued lines are ignored
+ if (pc->IsNotNullChunk())
+ {
+ did_nl = (pc->Is(CT_NEWLINE));
+ }
+ pc = pc->GetNextNc();
+ }
+}
+
+
+static Chunk *pawn_process_line(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ //LOG_FMT(LSYS, "%s: %d - %s\n", __func__,
+ // start->GetOrigLine(), start->Text());
+
+ if ( start->Is(CT_NEW)
+ || start->IsString("const"))
+ {
+ return(pawn_process_variable(start));
+ }
+ // if a open paren is found before an assign, then this is a function
+ Chunk *fcn = Chunk::NullChunkPtr;
+
+ if (start->Is(CT_WORD))
+ {
+ fcn = start;
+ }
+ Chunk *pc = start;
+
+ while ( ((pc = pc->GetNextNc())->IsNotNullChunk())
+ && !pc->IsString("(")
+ && pc->IsNot(CT_ASSIGN)
+ && pc->IsNot(CT_NEWLINE))
+ {
+ if ( pc->GetLevel() == 0
+ && ( pc->Is(CT_FUNCTION)
+ || pc->Is(CT_WORD)
+ || pc->Is(CT_OPERATOR_VAL)))
+ {
+ fcn = pc;
+ }
+ }
+
+ if (pc->IsNotNullChunk())
+ {
+ if (pc->Is(CT_ASSIGN))
+ {
+ return(pawn_process_variable(pc));
+ }
+ }
+
+ if (fcn->IsNotNullChunk())
+ {
+ //LOG_FMT(LSYS, "FUNCTION: %s\n", fcn->Text());
+ return(pawn_mark_function0(start, fcn));
+ }
+
+ if (start->Is(CT_ENUM))
+ {
+ pc = start->GetNextType(CT_BRACE_CLOSE, start->GetLevel());
+ return(pc);
+ }
+ //LOG_FMT(LSYS, "%s: Don't understand line %d, starting with '%s' [%s]\n",
+ // __func__, start->GetOrigLine(), start->Text(), get_token_name(start->GetType()));
+ return(start);
+} // pawn_process_line
+
+
+static Chunk *pawn_process_variable(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *pc = Chunk::NullChunkPtr;
+
+ if (start->IsNotNullChunk())
+ {
+ pc = start;
+ }
+ Chunk *prev = Chunk::NullChunkPtr;
+
+ while ((pc = pc->GetNextNc())->IsNotNullChunk())
+ {
+ if ( pc->Is(CT_NEWLINE)
+ && prev->IsNotNullChunk()
+ && !pawn_continued(prev, start->GetLevel()))
+ {
+ if (!prev->IsSemicolon())
+ {
+ pawn_add_vsemi_after(prev);
+ }
+ break;
+ }
+ prev = pc;
+ }
+ return(pc);
+}
+
+
+void pawn_add_virtual_semicolons()
+{
+ LOG_FUNC_ENTRY();
+
+ // Add Pawn virtual semicolons
+ if (language_is_set(LANG_PAWN))
+ {
+ Chunk *prev = Chunk::NullChunkPtr;
+ Chunk *pc = Chunk::GetHead();
+
+ while ((pc = pc->GetNext())->IsNotNullChunk())
+ {
+ if ( !pc->IsCommentOrNewline()
+ && !pc->IsVBrace())
+ {
+ prev = pc;
+ }
+
+ if ( prev->IsNullChunk()
+ || ( pc->IsNot(CT_NEWLINE)
+ && !pc->IsBraceClose()))
+ {
+ continue;
+ }
+
+ // we just hit a newline and we have a previous token
+ if ( !prev->TestFlags(PCF_IN_PREPROC)
+ && !prev->GetFlags().test_any(PCF_IN_ENUM | PCF_IN_STRUCT)
+ && !prev->IsSemicolon()
+ && !pawn_continued(prev, prev->GetBraceLevel()))
+ {
+ pawn_add_vsemi_after(prev);
+ prev = Chunk::NullChunkPtr;
+ }
+ }
+ }
+} // pawn_add_virtual_semicolons
+
+
+static Chunk *pawn_mark_function0(Chunk *start, Chunk *fcn)
+{
+ LOG_FUNC_ENTRY();
+
+ // handle prototypes
+ if (start == fcn)
+ {
+ Chunk *last = fcn->GetNextType(CT_PAREN_CLOSE, fcn->GetLevel())->GetNext();
+
+ if (last->Is(CT_SEMICOLON))
+ {
+ LOG_FMT(LPFUNC, "%s: %zu] '%s' proto due to semicolon\n",
+ __func__, fcn->GetOrigLine(), fcn->Text());
+ fcn->SetType(CT_FUNC_PROTO);
+ return(last);
+ }
+ }
+ else
+ {
+ if ( start->Is(CT_FORWARD)
+ || start->Is(CT_NATIVE))
+ {
+ LOG_FMT(LPFUNC, "%s: %zu] '%s' [%s] proto due to %s\n",
+ __func__, fcn->GetOrigLine(), fcn->Text(),
+ get_token_name(fcn->GetType()),
+ get_token_name(start->GetType()));
+ fcn->SetType(CT_FUNC_PROTO);
+ return(fcn->GetNextNc());
+ }
+ }
+ // Not a prototype, so it must be a function def
+ return(pawn_process_func_def(fcn));
+}
+
+
+static Chunk *pawn_process_func_def(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ // We are on a function definition
+ pc->SetType(CT_FUNC_DEF);
+
+ LOG_FMT(LPFUNC, "%s: %zu:%zu %s\n",
+ __func__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+
+ /*
+ * If we don't have a brace open right after the close fparen, then
+ * we need to add virtual braces around the function body.
+ */
+ Chunk *clp = pc->GetNextString(")", 1, 0);
+ Chunk *last = clp->GetNextNcNnl();
+
+ if (last->IsNotNullChunk())
+ {
+ LOG_FMT(LPFUNC, "%s: %zu] last is '%s' [%s]\n",
+ __func__, last->GetOrigLine(), last->Text(), get_token_name(last->GetType()));
+ }
+
+ // See if there is a state clause after the function
+ if ( last->IsNotNullChunk()
+ && last->IsString("<"))
+ {
+ LOG_FMT(LPFUNC, "%s: %zu] '%s' has state angle open %s\n",
+ __func__, pc->GetOrigLine(), pc->Text(), get_token_name(last->GetType()));
+
+ last->SetType(CT_ANGLE_OPEN);
+ last->SetParentType(CT_FUNC_DEF);
+
+ while ( ((last = last->GetNext())->IsNotNullChunk())
+ && !last->IsString(">"))
+ {
+ // do nothing just search, TODO: use search_chunk
+ }
+
+ if (last->IsNotNullChunk())
+ {
+ LOG_FMT(LPFUNC, "%s: %zu] '%s' has state angle close %s\n",
+ __func__, pc->GetOrigLine(), pc->Text(), get_token_name(last->GetType()));
+ last->SetType(CT_ANGLE_CLOSE);
+ last->SetParentType(CT_FUNC_DEF);
+ }
+ last = last->GetNextNcNnl();
+ }
+
+ if (last->IsNullChunk())
+ {
+ return(last);
+ }
+
+ if (last->Is(CT_BRACE_OPEN))
+ {
+ last->SetParentType(CT_FUNC_DEF);
+ last = last->GetNextType(CT_BRACE_CLOSE, last->GetLevel());
+
+ if (last->IsNotNullChunk())
+ {
+ last->SetParentType(CT_FUNC_DEF);
+ }
+ }
+ else
+ {
+ LOG_FMT(LPFUNC, "%s: %zu] '%s' fdef: expected brace open: %s\n",
+ __func__, pc->GetOrigLine(), pc->Text(), get_token_name(last->GetType()));
+
+ // do not insert a vbrace before a preproc
+ if (last->TestFlags(PCF_IN_PREPROC))
+ {
+ return(last);
+ }
+ Chunk chunk = *last;
+ chunk.Str().clear();
+ chunk.SetType(CT_VBRACE_OPEN);
+ chunk.SetParentType(CT_FUNC_DEF);
+
+ Chunk *prev = chunk.CopyAndAddBefore(last);
+ last = prev;
+
+ // find the next newline at level 0
+ prev = prev->GetNextNcNnl();
+
+ do
+ {
+ LOG_FMT(LPFUNC, "%s:%zu] check %s, level %zu\n",
+ __func__, prev->GetOrigLine(), get_token_name(prev->GetType()), prev->GetLevel());
+
+ if ( prev->Is(CT_NEWLINE)
+ && prev->GetLevel() == 0)
+ {
+ Chunk *next = prev->GetNextNcNnl();
+
+ if ( next->IsNotNullChunk()
+ && next->IsNot(CT_ELSE)
+ && next->IsNot(CT_WHILE_OF_DO))
+ {
+ break;
+ }
+ }
+ prev->SetLevel(prev->GetLevel() + 1);
+ prev->SetBraceLevel(prev->GetBraceLevel() + 1);
+ last = prev;
+ } while ((prev = prev->GetNext())->IsNotNullChunk());
+
+ if (last->IsNotNullChunk())
+ {
+ LOG_FMT(LPFUNC, "%s:%zu] ended on %s, level %zu\n",
+ __func__, last->GetOrigLine(), get_token_name(last->GetType()), last->GetLevel());
+ }
+ chunk = *last;
+ chunk.Str().clear();
+ chunk.SetType(CT_VBRACE_CLOSE);
+ chunk.SetParentType(CT_FUNC_DEF);
+ chunk.SetColumn(chunk.GetColumn() + last->Len());
+ chunk.SetLevel(0);
+ chunk.SetBraceLevel(0);
+ last = chunk.CopyAndAddAfter(last);
+ }
+ return(last);
+} // pawn_process_func_def
+
+
+Chunk *pawn_check_vsemicolon(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ // Grab the open VBrace
+ Chunk *vb_open = pc->GetPrevType(CT_VBRACE_OPEN);
+
+ /*
+ * Grab the item before the newline
+ * Don't do anything if:
+ * - the only thing previous is the V-Brace open
+ * - in a preprocessor
+ * - level > (vb_open->GetLevel() + 1) -- ie, in () or []
+ * - it is something that needs a continuation
+ * + arith, assign, bool, comma, compare
+ */
+ Chunk *prev = pc->GetPrevNcNnl();
+
+ if ( prev->IsNullChunk()
+ || prev == vb_open
+ || prev->TestFlags(PCF_IN_PREPROC)
+ || pawn_continued(prev, vb_open->GetLevel() + 1))
+ {
+ if (prev->IsNotNullChunk())
+ {
+ LOG_FMT(LPVSEMI, "%s: no VSEMI on line %zu, prev='%s' [%s]\n",
+ __func__, prev->GetOrigLine(), prev->Text(), get_token_name(prev->GetType()));
+ }
+ return(pc);
+ }
+ return(pawn_add_vsemi_after(prev));
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/lang_pawn.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/lang_pawn.h
new file mode 100644
index 00000000..7f4c503d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/lang_pawn.h
@@ -0,0 +1,49 @@
+/**
+ * @file long_pawn.h
+ * prototypes for long_pawn.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+#ifndef LONG_PAWN_H_INCLUDED
+#define LONG_PAWN_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+
+/**
+ * Does a scan of level 0 BEFORE stuff in combine.cpp is called.
+ * At this point, VSemis have been added only in VBraces.
+ * Otherwise, all level info is correct, except for unbraced functions.
+ *
+ * We are looking for unbraced functions.
+ */
+void pawn_prescan();
+
+
+void pawn_add_virtual_semicolons();
+
+
+/**
+ * We are in a virtual brace and hit a newline.
+ * If this should end the vbrace, then insert a VSEMICOLON and return that.
+ *
+ * @param pc The newline (CT_NEWLINE)
+ *
+ * @return Either the newline or the newly inserted virtual semicolon
+ */
+Chunk *pawn_check_vsemicolon(Chunk *pc);
+
+
+/**
+ * Turns certain virtual semicolons invisible.
+ * - after a close brace with a parent of switch, case, else, if
+ */
+void pawn_scrub_vsemi();
+
+
+//! add a semicolon after ...
+Chunk *pawn_add_vsemi_after(Chunk *pc);
+
+
+#endif /* LONG_PAWN_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/language_names.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/language_names.cpp
new file mode 100644
index 00000000..546b240e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/language_names.cpp
@@ -0,0 +1,227 @@
+/**
+ * @file language_names.cpp
+ *
+ * @author Guy Maurel
+ * extract from uncrustify.cpp
+ * @license GPL v2+
+ */
+
+#include "language_names.h"
+
+static lang_name_t language_names[] =
+{
+ { "C", LANG_C }, // 0x0001
+ { "CPP", LANG_CPP }, // 0x0002
+ { "D", LANG_D }, // 0x0004
+ { "CS", LANG_CS }, // 0x0008
+ { "JAVA", LANG_JAVA }, // 0x0010
+ { "OC", LANG_OC }, // 0x0020
+ { "VALA", LANG_VALA }, // 0x0040
+ { "PAWN", LANG_PAWN }, // 0x0080
+ { "ECMA", LANG_ECMA }, // 0x0100
+ { "OC+", LANG_OC | LANG_CPP }, // 0x0020 + 0x0002
+ { "CS+", LANG_CS | LANG_CPP }, // 0x0008 + 0x0002
+ { "C-Header", LANG_C | LANG_CPP | FLAG_HDR }, // 0x0001 + 0x0002 + 0x2000 = 0x2022
+};
+
+
+//! known filename extensions linked to the corresponding programming language
+struct lang_ext_t language_exts[] =
+{
+ { ".c", "C" },
+ { ".c++", "CPP" },
+ { ".cc", "CPP" },
+ { ".cp", "CPP" },
+ { ".cpp", "CPP" },
+ { ".cs", "CS" },
+ { ".cxx", "CPP" },
+ { ".d", "D" },
+ { ".di", "D" },
+ { ".es", "ECMA" },
+ { ".h", "C-Header" },
+ { ".h++", "CPP" },
+ { ".hh", "CPP" },
+ { ".hp", "CPP" },
+ { ".hpp", "CPP" },
+ { ".hxx", "CPP" },
+ { ".inc", "PAWN" },
+ { ".inl", "CPP" },
+ { ".java", "JAVA" },
+ { ".js", "ECMA" },
+ { ".m", "OC" },
+ { ".mm", "OC+" },
+ { ".p", "PAWN" },
+ { ".pawn", "PAWN" },
+ { ".sma", "PAWN" },
+ { ".sqc", "C" }, // embedded SQL
+ { ".sql", "SQL" },
+ { ".vala", "VALA" },
+ { ".vapi", "VALA" },
+};
+
+
+size_t language_flags_from_name(const char *name)
+{
+ for (const auto &language : language_names)
+ {
+ if (strcasecmp(name, language.name) == 0)
+ {
+ return(language.lang);
+ }
+ }
+
+ return(0);
+}
+
+
+const char *language_name_from_flags(size_t lang)
+{
+ // Check for an exact match first
+ for (auto &language_name : language_names)
+ {
+ if (language_name.lang == lang)
+ {
+ return(language_name.name);
+ }
+ }
+
+ static char lang_liste[120];
+ lang_liste[0] = '\0';
+
+ // Check for the next set language bit
+ for (auto &language_name : language_names)
+ {
+ if (strcmp(language_name.name, "OC+") == 0)
+ {
+ break;
+ }
+
+ if ((language_name.lang & lang) != 0)
+ {
+ if (lang_liste[0] == '\0')
+ {
+ strcpy(lang_liste, language_name.name);
+ }
+ else
+ {
+ int ll = strlen(lang_liste);
+ strcpy(&lang_liste[ll], ", ");
+ strcpy(&lang_liste[ll + 2], language_name.name);
+ }
+ }
+ }
+
+ return(lang_liste);
+} // language_name_from_flags
+
+
+bool ends_with(const char *filename, const char *tag, bool case_sensitive = true)
+{
+ int len1 = strlen(filename);
+ int len2 = strlen(tag);
+
+ return( len2 <= len1
+ && ( ( case_sensitive
+ && (strcmp(&filename[len1 - len2], tag) == 0))
+ || ( !case_sensitive
+ && (strcasecmp(&filename[len1 - len2], tag) == 0))));
+} // ends_with
+
+
+const char *get_file_extension(int &idx)
+{
+ const char *val = nullptr;
+
+ if (idx < static_cast<int> ARRAY_SIZE(language_exts))
+ {
+ val = language_exts[idx].ext;
+ }
+ idx++;
+ return(val);
+} // get_file_extension
+
+
+////typedef std::map<std::string, std::string> extension_map_t;
+//static extension_map_t g_ext_map;
+
+
+const char *extension_add(const char *ext_text, const char *lang_text)
+{
+ size_t lang_flags = language_flags_from_name(lang_text);
+
+ if (lang_flags)
+ {
+ const char *lang_name = language_name_from_flags(lang_flags);
+ g_ext_map[std::string(ext_text)] = lang_name;
+ return(lang_name);
+ }
+ return(nullptr);
+}
+
+
+void print_extensions(FILE *pfile)
+{
+ for (auto &language : language_names)
+ {
+ bool did_one = false;
+
+ for (auto &extension_val : g_ext_map)
+ {
+ if (strcmp(extension_val.second.c_str(), language.name) == 0)
+ {
+ if (!did_one)
+ {
+ fprintf(pfile, "file_ext %s", extension_val.second.c_str());
+ did_one = true;
+ }
+ fprintf(pfile, " %s", extension_val.first.c_str());
+ }
+ }
+
+ if (did_one)
+ {
+ fprintf(pfile, "\n");
+ }
+ }
+}
+
+
+// TODO: better use enum lang_t for source file language
+size_t language_flags_from_filename(const char *filename)
+{
+ // check custom extensions first
+ for (const auto &extension_val : g_ext_map)
+ {
+ if (ends_with(filename, extension_val.first.c_str()))
+ {
+ return(language_flags_from_name(extension_val.second.c_str()));
+ }
+ }
+
+ for (auto &language : language_exts)
+ {
+ if (ends_with(filename, language.ext))
+ {
+ return(language_flags_from_name(language.name));
+ }
+ }
+
+ // check again without case sensitivity
+ for (auto &extension_val : g_ext_map)
+ {
+ if (ends_with(filename, extension_val.first.c_str(), false))
+ {
+ return(language_flags_from_name(extension_val.second.c_str()));
+ }
+ }
+
+ for (auto &language : language_exts)
+ {
+ if (ends_with(filename, language.ext, false))
+ {
+ return(language_flags_from_name(language.name));
+ }
+ }
+
+ return(LANG_C);
+} // language_flags_from_filename
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/language_names.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/language_names.h
new file mode 100644
index 00000000..df63d894
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/language_names.h
@@ -0,0 +1,109 @@
+/**
+ * @file language_names.h
+ *
+ * @author Guy Maurel
+ * extract from uncrustify.cpp
+ * @license GPL v2+
+ */
+
+#ifndef LANGUAGE_NAMES_H_INCLUDED
+#define LANGUAGE_NAMES_H_INCLUDED
+
+#include "base_types.h"
+
+#include <cstddef> // to get size_t
+#include <cstdio>
+#include <map>
+#include <string>
+#include <string.h>
+//#include <strings.h>
+
+struct lang_name_t
+{
+ const char *name;
+ size_t lang;
+};
+
+//! list of all programming languages Uncrustify supports
+enum lang_flag_e
+{
+ LANG_C = 0x0001,
+ LANG_CPP = 0x0002,
+ LANG_D = 0x0004,
+ LANG_CS = 0x0008, //! C# (C-Sharp)
+ LANG_JAVA = 0x0010,
+ LANG_OC = 0x0020, //! Objective-C
+ LANG_VALA = 0x0040,
+ LANG_PAWN = 0x0080,
+ LANG_ECMA = 0x0100, //! ECMA Script (JavaScript)
+
+ LANG_ALLC_NOT_C = 0x017e, /** LANG_CPP | LANG_D | LANG_CS | Issue # 4044
+ * LANG_JAVA | LANG_OC | LANG_VALA | LANG_ECMA */
+ LANG_ALLC = 0x017f, /** LANG_C | LANG_CPP | LANG_D | LANG_CS |
+ * LANG_JAVA | LANG_OC | LANG_VALA | LANG_ECMA */
+ LANG_ALL = 0x0fff, //! applies to all languages
+
+ FLAG_HDR = 0x2000, /*<< Header file for C family languages */
+ FLAG_DIG = 0x4000, //! digraph/trigraph
+ FLAG_PP = 0x8000, //! only appears in a preprocessor
+};
+
+
+size_t language_flags_from_name(const char *name);
+
+
+/**
+ * Gets the tag text for a language
+ *
+ * @param lang The LANG_xxx enum
+ *
+ * @return A string
+ */
+const char *language_name_from_flags(size_t lang);
+
+bool ends_with(const char *filename, const char *tag, bool case_sensitive);
+
+
+//! type to map a programming language to a typically used filename extension
+struct lang_ext_t
+{
+ const char *ext; //! filename extension typically used for ...
+ const char *name; //! a programming language
+};
+
+
+/**
+ * Set idx = 0 before the first call.
+ * Done when returns nullptr
+ */
+const char *get_file_extension(int &idx);
+
+
+typedef std::map<std::string, std::string> extension_map_t;
+/**
+ * maps a file extension to a language flag.
+ *
+ * @note The "." need to be included, as in ".c". The file extensions
+ * ARE case sensitive.
+ */
+static extension_map_t g_ext_map;
+
+
+const char *extension_add(const char *ext_text, const char *lang_text);
+
+
+//! Prints custom file extensions to the file
+void print_extensions(FILE *pfile);
+
+
+// TODO: better use enum lang_t for source file language
+/**
+ * Find the language for the file extension
+ * Defaults to C
+ *
+ * @param filename The name of the file
+ * @return LANG_xxx
+ */
+size_t language_flags_from_filename(const char *filename);
+
+#endif /* LANGUAGE_NAMES_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/language_tools.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/language_tools.cpp
index 77e577f4..77e577f4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/language_tools.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/language_tools.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/language_tools.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/language_tools.h
index 5f57c3f1..5f57c3f1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/language_tools.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/language_tools.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/log_levels.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/log_levels.h
new file mode 100644
index 00000000..db2acf71
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/log_levels.h
@@ -0,0 +1,139 @@
+/**
+ * @file log_levels.h
+ *
+ * Enum for log levels.
+ * Use these for the log severities in LOG_FMT(), etc.
+ *
+ * @author Ben Gardner
+ * @author Guy Maurel October 2015- 2021
+ * @license GPL v2+
+ */
+
+#ifndef LOG_LEVELS_H_INCLUDED
+#define LOG_LEVELS_H_INCLUDED
+
+/**
+ * list of available log levels
+ *
+ * The user defines which log level is active using the
+ * -L or -log option.
+ * use -L A to set all the levels
+ * All messages which have a level that is active will be stored to the log
+ * file.
+ * All other log messages will be discarded.
+ * Different parts of the software use different log levels.
+ * This allows to log only operations of a specific operation.
+ * This eases debugging.
+ * To get all log messages use the option -La
+ * By default only system messages (level=LSYS) are logged.
+ */
+enum log_sev_t
+{
+ LSYS = 0, //! system messages
+ LERR = 1, //! error messages
+ LWARN = 2, //! warnings
+ LNOTE = 3, //! user notifications
+ LINFO = 4, //! user information
+ LDATA = 5, //! data logging
+
+ LFILELIST = 8, //! Files in the file list file
+ LLINEENDS = 9, //! Show which line endings are used
+ LCASTS = 10, //! align casts
+ LALBR = 11, //! align braces
+ LALTD = 12, //! Align Typedef
+ LALPP = 13, //! align #define
+ LALPROTO = 14, //! align prototype
+ LALNLC = 15, //! align backslash-newline
+ LALTC = 16, //! align trailing comments
+ LALADD = 17, //! align add
+ LALASS = 18, //! align assign
+ LFVD = 19, //! fix_var_def
+ LFVD2 = 20, //! fix_var_def-2
+ LINDENT = 21, //! indent_text
+ LINDENT2 = 22, //! indent_text tab level
+ LINDPSE = 23, //! indent_text stack
+ LINDPC = 24, //! indent play-by-play
+ LNEWLINE = 25, //! newlines
+ LPF = 26, //! Parse Frame
+ LSTMT = 27, //! Marking statements/expressions
+ LTOK = 28, //! Tokenize
+ LALRC = 29, //! align right comment
+ LCMTIND = 30, //! Comment Indent
+ LINDLINE = 31, //! indent line
+ LSIB = 32, //! Scan IB
+ LRETURN = 33, //! add/remove parens for return or throw
+ LBRDEL = 34, //! brace removal
+ LFCN = 35, //! function detection
+ LFCNP = 36, //! function parameters
+ LPCU = 37, //! parse cleanup
+ LDYNKW = 38, //! dynamic keywords
+ LOUTIND = 39, //! output indent
+ LBCSAFTER = 40, //! Brace cleanup stack - after each token
+ LBCSPOP = 41, //! Brace cleanup stack - log pops
+ LBCSPUSH = 42, //! Brace cleanup stack - log push
+ LBCSSWAP = 43, //! Brace cleanup stack - log swaps
+ LFTOR = 44, //! Class Ctor or Dtor
+ LAS = 45, //! align_stack
+ LPPIS = 46, //! Preprocessor Indent and Space
+ LTYPEDEF = 47, //! Typedef and function types
+ LVARDEF = 48, //! Variable def marking
+ LDEFVAL = 49, //! define values
+ LPVSEMI = 50, //! Pawn: virtual semicolons
+ LPFUNC = 51, //! Pawn: function recognition
+ LSPLIT = 52, //! Line splitting
+ LFTYPE = 53, //! Function type detection
+ LTEMPL = 54, //! Template detection
+ LPARADD = 55, //! adding parens in if/while
+ LPARADD2 = 56, //! adding parens in if/while - details
+ LBLANKD = 57, //! blank line details
+ LTEMPFUNC = 58, //! Template function detection
+ LSCANSEMI = 59, //! scan semicolon removal
+ LDELSEMI = 60, //! Removing semicolons
+ LFPARAM = 61, //! Testing for a full parameter
+ LNL1LINE = 62, //! NL check for 1 liners
+ LPFCHK = 63, //! Parse Frame check function call
+ LAVDB = 64, //! align var def braces
+ LSORT = 65, //! Sorting
+ LSPACE = 66, //! Space
+ LALIGN = 67, //! align
+ LALAGAIN = 68, //! align again
+ LOPERATOR = 69, //! operator
+ LASFCP = 70, //! Align Same Function Call Params
+ LINDLINED = 71, //! indent line details
+ LBCTRL = 72, //! beautifier control
+ LRMRETURN = 73, //! remove 'return;'
+ LPPIF = 74, //! #if/#else/#endif pair processing
+ LMCB = 75, //! mod_case_brace
+ LBRCH = 76, //! if brace chain
+ LFCNR = 77, //! function return type
+ LOCCLASS = 78, //! OC Class stuff
+ LOCMSG = 79, //! OC Message stuff
+ LBLANK = 80, //! Blank Lines
+ LOBJCWORD = 81, //! Convert keyword to CT_WORD in certain circumstances
+ LCHANGE = 82, //! something changed
+ LCONTTEXT = 83, //! comment cont_text set
+ LANNOT = 84, //! Java annotation
+ LOCBLK = 85, //! OC Block stuff
+ LFLPAREN = 86, //! Flag paren
+ LOCMSGD = 87, //! OC Message declaration
+ LINDENTAG = 88, //! indent again
+ LNFD = 89, //! newline-function-def
+ LJDBI = 90, //! Java Double Brace Init
+ LSETPAR = 91, //! Chunk::SetParentType()
+ LSETTYP = 92, //! Chunk::SetType()
+ LSETFLG = 93, //! set_chunk_flags()
+ LNLFUNCT = 94, //! newlines before function
+ LCHUNK = 95, //! Add or delete chunk
+ LBC = 96, //! brace cleanup
+ LCOMBINE = 97, //! combine
+ LGUY98 = 98, //! for guy-test
+ LGUY = 99, //! for guy-test
+ LBR = 100, //! braces
+ LOUTPUT = 101, //! output
+ LUNC = 102, //! rules used in uncrustify.cpp
+ LQT = 103, //! load/save options for Qt
+ LVARDFBLK = 104, //! newlines for variable definition blocks
+ LOTHER = 255, //! stuff that doesn't neatly fit any other category
+};
+
+#endif /* LOG_LEVELS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/log_rules.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/log_rules.cpp
new file mode 100644
index 00000000..01e6b7fe
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/log_rules.cpp
@@ -0,0 +1,133 @@
+/**
+ * @file log_rules.cpp
+ * is an extract from space.cpp
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#include "log_rules.h"
+
+#include "unc_tools.h"
+
+
+void log_rule2(const char *func, size_t line, const char *rule, Chunk *first, Chunk *second)
+{
+ LOG_FUNC_ENTRY();
+
+ if (second->IsNot(CT_NEWLINE))
+ {
+ LOG_FMT(LSPACE, "%s(%zu): first orig line is %zu, orig col is %zu, Text() is '%s', [%s/%s] <===>\n",
+ func, line, first->GetOrigLine(), first->GetOrigCol(), first->Text(),
+ get_token_name(first->GetType()), get_token_name(first->GetParentType()));
+ LOG_FMT(LSPACE, " second orig line is %zu, orig col is %zu, Text() is '%s', [%s/%s] :",
+ second->GetOrigLine(), second->GetOrigCol(), second->Text(),
+ get_token_name(second->GetType()), get_token_name(second->GetParentType()));
+ LOG_FMT(LSPACE, " rule %s[line %zu]\n",
+ rule, line);
+ }
+}
+
+
+#ifdef SUPER_LOG
+
+
+void log_rule3(log_sev_t sev, const char *func, size_t line, const char *rule)
+#else
+
+
+void log_rule3(log_sev_t sev, const char *func, const char *rule)
+#endif
+{
+ // some Windows platforms provide a qualified function name ("ABC::XYZ::function_Name")
+ // as __func__; call get_unqualified_func_name() to return an unqualified function name
+
+ func = get_unqualified_func_name(func);
+
+#ifdef SUPER_LOG
+ LOG_FMT(sev, "log_rule(%s:%zu): rule is '%s'\n", func, line, rule);
+#else
+ LOG_FMT(sev, "log_rule(%s): rule is '%s'\n", func, rule);
+#endif
+}
+
+
+void log_rule4(const char *rule, Chunk *first)
+{
+ if (!(cpd.html_type == tracking_type_e::TT_SPACE))
+ {
+ return;
+ }
+
+ if (first->GetTrackingData() == nullptr)
+ {
+ first->TrackingData() = new TrackList;
+ }
+ // copy the rule
+ size_t length = strlen(rule) + 1;
+ char *r = (char *)malloc(length);
+
+ strcpy(r, rule);
+ size_t a_number = get_A_Number();
+ TrackNumber A = make_pair(a_number, r);
+
+ first->TrackingData()->push_back(A);
+ size_t sizeOfTrack = first->GetTrackingData()->size();
+
+ LOG_FMT(LSPACE, "log_rule4(%d): rule is '%s', after '%s', at line %zu, tracking number is %zu, size is %zu\n",
+ __LINE__, rule, first->Text(), first->GetOrigLine(), a_number, sizeOfTrack);
+}
+
+
+void log_ruleStart(const char *rule, Chunk *first)
+{
+ if (!(cpd.html_type == tracking_type_e::TT_START))
+ {
+ return;
+ }
+
+ if (first->GetTrackingData() == nullptr)
+ {
+ first->TrackingData() = new TrackList;
+ }
+ // copy the rule
+ size_t length = strlen(rule) + 1;
+ char *r = (char *)malloc(length);
+
+ strcpy(r, rule);
+ size_t a_number = get_A_Number();
+ TrackNumber A = make_pair(a_number, r);
+
+ first->TrackingData()->push_back(A);
+ size_t sizeOfTrack = first->GetTrackingData()->size();
+
+ LOG_FMT(LSPACE, "log_ruleStart(%d): rule is '%s', '%s', at line %zu, tracking number is %zu, size is %zu\n",
+ __LINE__, rule, first->Text(), first->GetOrigLine(), a_number, sizeOfTrack);
+} // log_ruleStart
+
+
+void log_ruleNL(const char *rule, Chunk *pc)
+{
+ if (!(cpd.html_type == tracking_type_e::TT_NEWLINE))
+ {
+ return;
+ }
+
+ if (pc->GetTrackingData() == nullptr)
+ {
+ pc->TrackingData() = new TrackList;
+ }
+ // copy the rule
+ size_t length = strlen(rule) + 1;
+ char *r = (char *)malloc(length);
+
+ strcpy(r, rule);
+ size_t a_number = get_A_Number();
+ TrackNumber A = make_pair(a_number, r);
+
+ pc->TrackingData()->push_back(A);
+ size_t sizeOfTrack = pc->GetTrackingData()->size();
+
+ LOG_FMT(LSPACE, "log_rule4(%d): rule is '%s', after '%s', at line %zu, tracking number is %zu, size is %zu\n",
+ __LINE__, rule, pc->Text(), pc->GetOrigLine(), a_number, sizeOfTrack);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/log_rules.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/log_rules.h
new file mode 100644
index 00000000..1c1583e6
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/log_rules.h
@@ -0,0 +1,56 @@
+/**
+ * @file log_rules.h
+ * prototypes for log_rules.cpp
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#ifndef LOG_RULES_H_INCLUDED
+#define LOG_RULES_H_INCLUDED
+
+#include "chunk.h"
+#include "uncrustify.h"
+
+using namespace uncrustify;
+
+#define log_rule(rule) \
+ log_rule2(__func__, __LINE__, (rule), first, second); \
+ log_rule4((rule), first)
+
+// if you need more debug information, remove the comment at the next line
+#define SUPER_LOG 1
+#ifdef SUPER_LOG
+#define log_rule_B(rule) \
+ log_rule3(LCURRENT, __func__, __LINE__, (rule))
+#else
+#define log_rule_B(rule) \
+ log_rule3(LCURRENT, __func__, (rule))
+#endif
+
+#ifdef SUPER_LOG
+#define log_rule_NL(rule) \
+ log_ruleNL((rule), pc)
+#else
+#define log_rule_NL(rule) \
+ log_ruleNL(LCURRENT, __func__, (rule))
+#endif
+
+void log_rule2(const char *func, size_t line, const char *rule, Chunk *first, Chunk *second);
+
+
+#ifdef SUPER_LOG
+void log_rule3(log_sev_t sev, const char *func, size_t line, const char *rule);
+
+#else
+void log_rule3(log_sev_t sev, const char *func, const char *rule);
+
+#endif
+
+void log_rule4(const char *rule, Chunk *first);
+
+void log_ruleStart(const char *rule, Chunk *first);
+
+void log_ruleNL(const char *rule, Chunk *pc);
+
+#endif /* LOG_RULES_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/logger.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/logger.cpp
new file mode 100644
index 00000000..f2f6e626
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/logger.cpp
@@ -0,0 +1,336 @@
+/**
+ * @file logger.cpp
+ *
+ * Functions to do logging.
+ *
+ * If a log statement ends in a newline, the current log is ended.
+ * When the log severity changes, an implicit newline is inserted.
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "logger.h"
+
+#include "compat.h"
+
+#include <cstdarg> // to get va_start, va_end
+
+
+struct log_fcn_info
+{
+ log_fcn_info(const char *name_, int line_)
+ : name(name_)
+ , line(line_)
+ {
+ }
+
+ const char *name;
+ int line;
+};
+static std::deque<log_fcn_info> g_fq;
+
+//! Private log structure
+struct log_buf
+{
+ log_buf()
+ : log_file(nullptr)
+ , sev(LSYS)
+ , in_log(0)
+ , buf_len(0)
+ , show_hdr(false)
+ {
+ bufX.clear();
+ bufX.resize(256);
+ }
+
+ FILE *log_file; //! file where the log messages are stored into
+ log_sev_t sev; //! log level determines which messages are logged
+ int in_log; //! flag indicates if a log operation is going on
+ size_t buf_len; //! number of characters currently stored in buffer
+ std::vector<char> bufX; //! buffer holds the log message
+ log_mask_t mask;
+ bool show_hdr; //! flag determine if a header gets added to log message
+};
+
+
+static struct log_buf g_log;
+
+
+/**
+ * Starts the log statement by flushing if needed and printing the header
+ *
+ * @param sev The log severity
+ *
+ * @return The number of bytes available
+ */
+static size_t log_start(log_sev_t sev);
+
+
+/**
+ * Cleans up after a log statement by detecting whether the log is done,
+ * (it ends in a newline) and possibly flushing the log.
+ */
+static void log_end();
+
+
+/**
+ * Initializes the log subsystem - call this first.
+ * This function sets the log stream and enables the top 3 sevs (0-2).
+ *
+ * @param log_file NULL for stderr or the FILE stream for logs.
+ */
+void log_init(FILE *log_file)
+{
+ // set the top 3 severities
+ logmask_set_all(g_log.mask, false);
+ log_set_sev(LSYS, true);
+ log_set_sev(LERR, true);
+ log_set_sev(LWARN, true);
+
+ g_log.log_file = (log_file != nullptr) ? log_file : stderr;
+}
+
+
+void log_show_sev(bool show)
+{
+ g_log.show_hdr = show;
+}
+
+
+bool log_sev_on(log_sev_t sev)
+{
+ return(logmask_test(g_log.mask, sev));
+}
+
+
+void log_set_sev(log_sev_t sev, bool value)
+{
+ logmask_set_sev(g_log.mask, sev, value);
+}
+
+
+void log_set_mask(const log_mask_t &mask)
+{
+ g_log.mask = mask;
+}
+
+
+void log_get_mask(log_mask_t &mask)
+{
+ mask = g_log.mask;
+}
+
+
+void log_flush(bool force_nl)
+{
+ if (g_log.buf_len > 0)
+ {
+ if ( force_nl
+ && g_log.bufX[g_log.buf_len - 1] != '\n')
+ {
+ g_log.bufX[g_log.buf_len++] = '\n';
+ g_log.bufX[g_log.buf_len] = 0;
+ }
+ size_t retlength = fwrite(&g_log.bufX[0], g_log.buf_len, 1, g_log.log_file);
+
+ if (retlength != 1)
+ {
+ // maybe we should log something to complain... =)
+ }
+ g_log.buf_len = 0;
+ }
+}
+
+
+static size_t log_start(log_sev_t sev)
+{
+ if (sev != g_log.sev)
+ {
+ if (g_log.buf_len > 0)
+ {
+ log_flush(true);
+ }
+ g_log.sev = sev;
+ g_log.in_log = false;
+ }
+
+ // If not in a log, the buffer is empty. Add the header, if enabled.
+ if ( !g_log.in_log
+ && g_log.show_hdr)
+ {
+ g_log.buf_len = static_cast<size_t>(snprintf(&g_log.bufX[0], g_log.bufX.size(), "<%d>", sev));
+ }
+ size_t cap = (g_log.bufX.size() - 2) - g_log.buf_len;
+
+ return((cap > 0) ? cap : 0);
+}
+
+
+static void log_end()
+{
+ g_log.in_log = (g_log.bufX[g_log.buf_len - 1] != '\n');
+
+ if ( !g_log.in_log
+ || (g_log.buf_len > (g_log.bufX.size() / 2)))
+ {
+ log_flush(false);
+ }
+}
+
+
+void log_fmt(log_sev_t sev, const char *fmt, ...)
+{
+ if ( fmt == nullptr
+ || !log_sev_on(sev))
+ {
+ return;
+ }
+ // Issue #1203
+ unsigned int length = strlen(fmt);
+
+ if (length == 0)
+ {
+ return;
+ }
+ // the value of buffer_length is experimental
+ const int buffer_length = 40000;
+ char buf[buffer_length];
+
+ // it MUST be a 'unsigned int' variable to be runable under windows
+
+ if (length >= buffer_length)
+ {
+ fprintf(stderr, "FATAL(1): The variable 'buf' is not big enough:\n");
+ fprintf(stderr, " it should be bigger as %u\n", length);
+ fprintf(stderr, "Please make a report.\n");
+ fprintf(stderr, "For the buffer: %s\n", fmt);
+ exit(EX_SOFTWARE);
+ }
+ memcpy(buf, fmt, length);
+ buf[length] = 0;
+ convert_log_zu2lu(buf);
+
+ while (true)
+ {
+ /* Some implementation of vsnprintf() return the number of characters
+ * that would have been stored if the buffer was large enough instead of
+ * the number of characters actually stored.
+ *
+ * this gets the number of characters that fit into the log buffer
+ */
+ size_t cap = log_start(sev);
+ // Add on the variable log parameters to the log string
+ va_list args; // determine list of arguments ...
+ va_start(args, fmt);
+ size_t which = g_log.buf_len;
+ char *where = &g_log.bufX[which];
+ size_t lenX = static_cast<size_t>(vsnprintf(where, cap, buf, args));
+ va_end(args);
+
+ if (lenX > 0)
+ {
+ // The functions snprintf() and vsnprintf() do not write more than size bytes
+ // (including the terminating null byte ('\0')). If the output was truncated due
+ // to this limit, then the return value is the number of characters (excluding the
+ // terminating null byte) which would have been written to the final string if
+ // enough space had been available. Thus, a return value of size or more means
+ // that the output was truncated.
+ if (lenX > cap)
+ {
+ size_t bufXLength = g_log.bufX.size();
+ size_t X = bufXLength * 2;
+
+ if (X >= buffer_length)
+ {
+ fprintf(stderr, "FATAL(2): The variable 'buf' is not big enough:\n");
+ fprintf(stderr, " it should be bigger as %zu\n", X);
+ fprintf(stderr, "Please make a report.\n");
+ fprintf(stderr, "For the buffer: %s\n", fmt);
+ exit(EX_SOFTWARE);
+ }
+ g_log.bufX.resize(X);
+ }
+ else
+ {
+ g_log.buf_len += lenX;
+ g_log.bufX[g_log.buf_len] = 0;
+ break;
+ }
+ }
+ }
+ log_end();
+} // log_fmt
+
+
+log_func::log_func(const char *name, int line)
+{
+ g_fq.push_back(log_fcn_info(name, line));
+}
+
+
+log_func::~log_func()
+{
+ g_fq.pop_back();
+}
+
+
+void log_func_stack(log_sev_t sev, const char *prefix, const char *suffix, size_t skip_cnt)
+{
+ UNUSED(skip_cnt);
+
+ if (prefix != nullptr)
+ {
+ LOG_FMT(sev, "%s", prefix);
+ }
+#ifdef DEBUG
+ const char *sep = "";
+ size_t g_fq_size = g_fq.size();
+ size_t begin_with;
+
+ if (g_fq_size > (skip_cnt + 1))
+ {
+ begin_with = g_fq_size - (skip_cnt + 1);
+
+ for (size_t idx = begin_with; idx != 0; idx--)
+ {
+ LOG_FMT(sev, "%s %s:%d", sep, g_fq[idx].name, g_fq[idx].line);
+ sep = ",";
+ }
+
+ LOG_FMT(sev, "%s %s:%d", sep, g_fq[0].name, g_fq[0].line);
+ }
+#else
+ LOG_FMT(sev, "-DEBUG NOT SET-");
+#endif
+
+ if (suffix != nullptr)
+ {
+ LOG_FMT(sev, "%s", suffix);
+ }
+}
+
+
+const char *get_unqualified_func_name(const char *func)
+{
+ /**
+ * we look for the last ':' character;
+ */
+ for (auto i = strlen(func); i > 0; --i)
+ {
+ if (func[i - 1] == ':')
+ {
+ /**
+ * function name is qualified, so return the
+ * unqualified portion
+ */
+ return(func + i);
+ }
+ }
+
+ /**
+ * input function name is unqualified
+ */
+
+ return(func);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/logger.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/logger.h
index 9b27fbab..9b27fbab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/logger.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/logger.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/logmask.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/logmask.cpp
index 148ce193..148ce193 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/logmask.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/logmask.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/logmask.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/logmask.h
index ef00e1d0..ef00e1d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/logmask.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/logmask.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/mark_functor.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/mark_functor.cpp
new file mode 100644
index 00000000..40bec01e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/mark_functor.cpp
@@ -0,0 +1,114 @@
+/**
+ * @file mark_functor.cpp
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#include "mark_functor.h"
+
+#include "chunk.h"
+
+
+/*
+ * tokenize the functor such as:
+ * desc->add_options() ( a ) (b)(c);
+ */
+void mark_functor()
+{
+ LOG_FUNC_ENTRY();
+ bool found_functor = false;
+ Chunk *is_it_closing = Chunk::NullChunkPtr;
+
+ // Issue #3914
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel(), pc->Text());
+
+ if (pc->Is(CT_SEMICOLON))
+ {
+ found_functor = false;
+ continue;
+ }
+
+ if (found_functor)
+ {
+ if ( pc->Is(CT_FPAREN_CLOSE)
+ || pc->Is(CT_RPAREN_CLOSE))
+ {
+ LOG_FMT(LCOMBINE, "%s(%d): FOUND a Closing: orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel(), pc->Text());
+ // desc->add_options() ( a ) (
+ // ^
+ pc->SetType(CT_RPAREN_CLOSE);
+ }
+ else if ( pc->Is(CT_FPAREN_OPEN)
+ || pc->Is(CT_RPAREN_OPEN))
+ {
+ LOG_FMT(LCOMBINE, "%s(%d): FOUND a Opening: orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel(), pc->Text());
+ // desc->add_options() ( a ) (
+ // ^
+ pc->SetType(CT_RPAREN_OPEN);
+ }
+ else // pc->Is(CT_FPAREN_CLOSE) || pc->Is(CT_RPAREN_CLOSE))
+ {
+ continue;
+ }
+ }
+ else // (found_functor)
+ {
+ if (pc->Is(CT_FPAREN_OPEN))
+ {
+ LOG_FMT(LCOMBINE, "%s(%d): FOUND 1 Opening: orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel(), pc->Text());
+ is_it_closing = pc->GetPrevNcNnl();
+ LOG_FMT(LCOMBINE, "%s(%d): FOUND 2 Closing: orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n",
+ __func__, __LINE__, is_it_closing->GetOrigLine(), is_it_closing->GetOrigCol(), is_it_closing->GetLevel(), is_it_closing->Text());
+
+ if (is_it_closing->Is(CT_FPAREN_CLOSE))
+ {
+ Chunk *opening = is_it_closing->GetOpeningParen();
+ LOG_FMT(LCOMBINE, "%s(%d): FOUND 3 Opening: orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n",
+ __func__, __LINE__, opening->GetOrigLine(), opening->GetOrigCol(), opening->GetLevel(), opening->Text());
+ // look for member function
+ Chunk *is_it_func = opening->GetPrevNcNnl();
+ LOG_FMT(LCOMBINE, "%s(%d): FOUND 4 func: orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n",
+ __func__, __LINE__, is_it_func->GetOrigLine(), is_it_func->GetOrigCol(), is_it_func->GetLevel(), is_it_func->Text());
+ Chunk *is_it_member = is_it_func->GetPrevNcNnl(); // CT_MEMBER
+ LOG_FMT(LCOMBINE, "%s(%d): FOUND 5 func: orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n",
+ __func__, __LINE__, is_it_member->GetOrigLine(), is_it_member->GetOrigCol(), is_it_member->GetLevel(), is_it_member->Text());
+
+ if (is_it_member->Is(CT_MEMBER))
+ {
+ // set parenthesis at the function
+ // desc->add_options() ( a ) (
+ // ^
+ is_it_closing->SetType(CT_RPAREN_CLOSE);
+ // desc->add_options() ( a ) (
+ // ^
+ opening->SetType(CT_RPAREN_OPEN);
+ // desc->add_options() ( a ) (
+ // ^
+ pc->SetType(CT_RPAREN_OPEN);
+ found_functor = true;
+ }
+ else
+ {
+ continue;
+ }
+ }
+ else
+ {
+ LOG_FMT(LCOMBINE, "%s(%d): NOT useable\n", __func__, __LINE__);
+ continue;
+ }
+ }
+ else // (pc->Is(CT_FPAREN_OPEN))
+ {
+ continue;
+ } // (pc->Is(CT_FPAREN_OPEN))
+ } // (found_functor)
+ }
+} // mark_functor
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/mark_functor.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/mark_functor.h
new file mode 100644
index 00000000..f9449ea9
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/mark_functor.h
@@ -0,0 +1,13 @@
+/**
+ * @file mark_functor.h
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#ifndef MARK_FUNCTOR_H_INCLUDED
+#define MARK_FUNCTOR_H_INCLUDED
+
+void mark_functor();
+
+#endif /* MARK_FUNCTOR_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/mark_question_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/mark_question_colon.cpp
new file mode 100644
index 00000000..84131bc7
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/mark_question_colon.cpp
@@ -0,0 +1,192 @@
+/**
+ * @file mark_question_colon.cpp
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#include "mark_question_colon.h"
+
+#include "chunk.h"
+#include "combine_tools.h"
+#include "log_levels.h"
+
+
+/*
+ * Issue #3558
+ * will be called if a ? (CT_QUESTION) chunk is encountered
+ * return the chunk colon if found or Chunk::NullChunkPtr
+ * if a ; (CT_SEMI_COLON) chunk is found
+ */
+Chunk *search_for_colon(Chunk *pc_question)
+{
+ Chunk *pc2 = pc_question->GetNextNcNnl();
+ bool colon_found = false;
+
+ LOG_FMT(LCOMBINE, "%s(%d): pc_question.orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc_question->GetOrigLine(), pc_question->GetOrigCol(), pc_question->GetLevel(),
+ pc_question->Text());
+
+ // examine the next tokens, look for E2, E3, COLON, might be for a next CT_QUESTION
+ while (pc2->IsNotNullChunk())
+ {
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel(), pc2->Text());
+
+ if ( pc2->Is(CT_SEMICOLON)
+ || ( pc2->Is(CT_PAREN_CLOSE)
+ && (pc_question->GetLevel() == pc2->GetLevel() + 1))
+ || pc2->Is(CT_COMMA))
+ {
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel(), pc2->Text());
+ pc2->SetFlagBits(PCF_IN_CONDITIONAL);
+ log_pcf_flags(LCOMBINE, pc2->GetFlags());
+
+ if (colon_found)
+ {
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel(), pc2->Text());
+ pc_question->SetParent(pc2); // back again
+
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel(), pc2->Text());
+ return(pc2);
+ }
+ else
+ {
+ pc2->SetParent(pc_question); // save the question token
+ pc_question->SetParent(pc2); // back again
+ }
+ }
+ else if (pc2->Is(CT_COMMA))
+ {
+ // TODO: is it necessary?
+ }
+ else if (pc2->Is(CT_QUESTION))
+ {
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel(), pc2->Text());
+ pc2 = search_for_colon(pc2);
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel(), pc2->Text());
+ continue;
+ }
+ else if (pc2->Is(CT_COND_COLON))
+ {
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel(), pc2->Text());
+
+ if (colon_found)
+ {
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel(), pc2->Text());
+ Chunk *pr = pc2->GetPrevNcNnl();
+ return(pr);
+ }
+ else
+ {
+ pc2->SetParent(pc_question); // save the question token
+ pc_question->SetParent(pc2); // back again
+ colon_found = true;
+ }
+
+ if (pc2->Is(CT_COLON))
+ {
+ if (colon_found)
+ {
+ return(pc2);
+ }
+ else
+ {
+ }
+ }
+ }
+ else if (pc2->Is(CT_COLON))
+ {
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel(), pc2->Text());
+
+ if (colon_found)
+ {
+ pc2->SetType(CT_COND_COLON);
+ return(pc2);
+ }
+ else
+ {
+ // E2 found orig line is 23, orig col is 3
+ pc2->SetType(CT_COND_COLON);
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel(), pc2->Text());
+ pc2->SetParent(pc_question); // save the question token
+ pc_question->SetParent(pc2); // back again
+
+ // look for E3
+ colon_found = true;
+ }
+ }
+ pc2 = pc2->GetNextNcNnl();
+ }
+
+ if (pc2->IsNotNullChunk())
+ {
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '?'\n",
+ __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel());
+ }
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '?'\n",
+ __func__, __LINE__, pc2->GetOrigLine(), pc2->GetOrigCol(), pc2->GetLevel());
+ return(pc2);
+} // search_for_colon
+
+
+void mark_question_colon()
+{
+ LOG_FUNC_ENTRY();
+ Chunk *pc = Chunk::GetHead();
+ Chunk *pc_question;
+
+ // Issue #3558
+ while (pc->IsNotNullChunk())
+ {
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel(), pc->Text());
+ log_pcf_flags(LCOMBINE, pc->GetFlags());
+
+ if ( pc->Is(CT_QUESTION)
+ && !language_is_set(LANG_JAVA))
+ {
+ pc_question = pc;
+ // look for E2, COLON, E3...
+ pc = search_for_colon(pc);
+
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel(), pc->Text());
+
+ if ( pc->Is(CT_SEMICOLON)
+ || ( pc->Is(CT_PAREN_CLOSE)
+ && (pc_question->GetLevel() == pc->GetLevel() + 1))
+ || pc->Is(CT_COMMA))
+ {
+ // set at the end of the question statement ...
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel(), pc->Text());
+ // ... and go on
+ }
+ }
+ pc = pc->GetNextNcNnl();
+ }
+
+ for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel(), pc->Text());
+
+ if (pc->Is(CT_QUESTION))
+ {
+ Chunk *from = pc;
+ Chunk *to = pc->GetParent();
+ flag_series(from, to, PCF_IN_CONDITIONAL);
+ pc = to;
+ }
+ }
+} // mark_question_colon
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/mark_question_colon.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/mark_question_colon.h
index 20fca294..20fca294 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/mark_question_colon.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/mark_question_colon.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/md5.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/md5.cpp
index af8874a4..af8874a4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/md5.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/md5.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/md5.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/md5.h
index d1148b5e..d1148b5e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/md5.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/md5.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/newlines.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/newlines.cpp
new file mode 100644
index 00000000..360e568a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/newlines.cpp
@@ -0,0 +1,6856 @@
+/**
+ * @file newlines.cpp
+ * Adds or removes newlines.
+ *
+ * Information
+ * "Ignore" means do not change it.
+ * "Add" in the context of spaces means make sure there is at least 1.
+ * "Add" elsewhere means make sure one is present.
+ * "Remove" mean remove the space/brace/newline/etc.
+ * "Force" in the context of spaces means ensure that there is exactly 1.
+ * "Force" in other contexts means the same as "add".
+ *
+ * Rmk: spaces = space + nl
+ *
+ * @author Ben Gardner
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#include "newlines.h"
+
+#include "align_stack.h"
+#include "combine_skip.h"
+#include "flag_parens.h"
+#include "indent.h"
+#include "keywords.h"
+#include "prototypes.h"
+#include "space.h"
+#include "unc_tools.h"
+
+#ifdef WIN32
+#include <algorithm> // to get max
+#endif // ifdef WIN32
+
+
+constexpr static auto LCURRENT = LNEWLINE;
+
+using namespace std;
+using namespace uncrustify;
+
+
+static void mark_change(const char *func, size_t line);
+
+
+/**
+ * Check to see if we are allowed to increase the newline count.
+ * We can't increase the newline count:
+ * - if nl_squeeze_ifdef and a preproc is after the newline.
+ * - if eat_blanks_before_close_brace and the next is '}'
+ * - unless function contains an empty body and
+ * nl_inside_empty_func is non-zero
+ * - if eat_blanks_after_open_brace and the prev is '{'
+ * - unless the brace belongs to a namespace
+ * and nl_inside_namespace is non-zero
+ */
+static bool can_increase_nl(Chunk *nl);
+
+
+/**
+ * Basic approach:
+ * 1. Find next open brace
+ * 2. Find next close brace
+ * 3. Determine why the braces are there
+ * a. struct/union/enum "enum [name] {"
+ * c. assignment "= {"
+ * b. if/while/switch/for/etc ") {"
+ * d. else "} else {"
+ */
+static void setup_newline_add(Chunk *prev, Chunk *nl, Chunk *next);
+
+
+//! Make sure there is a blank line after a commented group of values
+static void newlines_double_space_struct_enum_union(Chunk *open_brace);
+
+
+//! If requested, make sure each entry in an enum is on its own line
+static void newlines_enum_entries(Chunk *open_brace, iarf_e av);
+
+
+/**
+ * Checks to see if it is OK to add a newline around the chunk.
+ * Don't want to break one-liners...
+ * return value:
+ * true: a new line may be added
+ * false: a new line may NOT be added
+ */
+static bool one_liner_nl_ok(Chunk *pc);
+
+
+static void nl_create_one_liner(Chunk *vbrace_open);
+
+
+static void nl_create_list_liner(Chunk *brace_open);
+
+
+/**
+ * Test if a chunk belongs to a one-liner method definition inside a class body
+ */
+static bool is_class_one_liner(Chunk *pc);
+
+
+/**
+ * Test if a chunk may be combined with a function prototype group.
+ *
+ * If nl_class_leave_one_liner_groups is enabled, a chunk may be combined with
+ * a function prototype group if it is a one-liner inside a class body, and is
+ * a definition of the same sort as surrounding prototypes. This checks against
+ * either the function name, or the function closing brace.
+ */
+bool is_func_proto_group(Chunk *pc, E_Token one_liner_type);
+
+/**
+ * Test if an opening brace is part of a function call or definition.
+ */
+static bool is_func_call_or_def(Chunk *pc);
+
+
+//! Find the next newline or nl_cont
+static void nl_handle_define(Chunk *pc);
+
+
+/**
+ * Does the Ignore, Add, Remove, or Force thing between two chunks
+ *
+ * @param before The first chunk
+ * @param after The second chunk
+ * @param av The IARF value
+ */
+static void newline_iarf_pair(Chunk *before, Chunk *after, iarf_e av, bool check_nl_assign_leave_one_liners = false);
+
+
+/**
+ * Adds newlines to multi-line function call/decl/def
+ * Start points to the open paren
+ */
+static void newline_func_multi_line(Chunk *start);
+
+
+static void newline_template(Chunk *start);
+
+
+/**
+ * Formats a function declaration
+ * Start points to the open paren
+ */
+static void newline_func_def_or_call(Chunk *start);
+
+
+/**
+ * Formats a message, adding newlines before the item before the colons.
+ *
+ * Start points to the open '[' in:
+ * [myObject doFooWith:arg1 name:arg2 // some lines with >1 arg
+ * error:arg3];
+ */
+static void newline_oc_msg(Chunk *start);
+
+
+//! Ensure that the next non-comment token after close brace is a newline
+static void newline_end_newline(Chunk *br_close);
+
+
+/**
+ * Add or remove a newline between the closing paren and opening brace.
+ * Also uncuddles anything on the closing brace. (may get fixed later)
+ *
+ * "if (...) { \n" or "if (...) \n { \n"
+ *
+ * For virtual braces, we can only add a newline after the vbrace open.
+ * If we do so, also add a newline after the vbrace close.
+ */
+static bool newlines_if_for_while_switch(Chunk *start, iarf_e nl_opt);
+
+
+/**
+ * Add or remove extra newline before the chunk.
+ * Adds before comments
+ * Doesn't do anything if open brace before it
+ * "code\n\ncomment\nif (...)" or "code\ncomment\nif (...)"
+ */
+static void newlines_if_for_while_switch_pre_blank_lines(Chunk *start, iarf_e nl_opt);
+
+
+static void blank_line_set(Chunk *pc, Option<unsigned> &opt);
+
+
+/**
+ * Add one/two newline(s) before the chunk.
+ * Adds before comments
+ * Adds before destructor
+ * Doesn't do anything if open brace before it
+ * "code\n\ncomment\nif (...)" or "code\ncomment\nif (...)"
+ */
+static void newlines_func_pre_blank_lines(Chunk *start, E_Token start_type);
+
+
+static Chunk *get_closing_brace(Chunk *start);
+
+
+/**
+ * remove any consecutive newlines following this chunk
+ * skip vbraces
+ */
+static void remove_next_newlines(Chunk *start);
+
+
+/**
+ * Add or remove extra newline after end of the block started in chunk.
+ * Doesn't do anything if close brace after it
+ * Interesting issue is that at this point, nls can be before or after vbraces
+ * VBraces will stay VBraces, conversion to real ones should have already happened
+ * "if (...)\ncode\ncode" or "if (...)\ncode\n\ncode"
+ */
+static void newlines_if_for_while_switch_post_blank_lines(Chunk *start, iarf_e nl_opt);
+
+
+/**
+ * Adds or removes a newline between the keyword and the open brace.
+ * If there is something after the '{' on the same line, then
+ * the newline is removed unconditionally.
+ * If there is a '=' between the keyword and '{', do nothing.
+ *
+ * "struct [name] {" or "struct [name] \n {"
+ */
+static void newlines_struct_union(Chunk *start, iarf_e nl_opt, bool leave_trailing);
+static void newlines_enum(Chunk *start);
+static void newlines_namespace(Chunk *start); // Issue #2186
+
+
+/**
+ * Cuddles or un-cuddles a chunk with a previous close brace
+ *
+ * "} while" vs "} \n while"
+ * "} else" vs "} \n else"
+ *
+ * @param start The chunk - should be CT_ELSE or CT_WHILE_OF_DO
+ */
+static void newlines_cuddle_uncuddle(Chunk *start, iarf_e nl_opt);
+
+
+/**
+ * Adds/removes a newline between else and '{'.
+ * "else {" or "else \n {"
+ */
+static void newlines_do_else(Chunk *start, iarf_e nl_opt);
+
+
+//! Check if token starts a variable declaration
+static bool is_var_def(Chunk *pc, Chunk *next);
+
+
+//! Put newline(s) before and/or after a block of variable definitions
+static Chunk *newline_var_def_blk(Chunk *start);
+
+
+/**
+ * Handles the brace_on_func_line setting and decides if the closing brace
+ * of a pair should be right after a newline.
+ * The only cases where the closing brace shouldn't be the first thing on a line
+ * is where the opening brace has junk after it AND where a one-liner in a
+ * class is supposed to be preserved.
+ *
+ * General rule for break before close brace:
+ * If the brace is part of a function (call or definition) OR if the only
+ * thing after the opening brace is comments, the there must be a newline
+ * before the close brace.
+ *
+ * Example of no newline before close
+ * struct mystring { int len;
+ * char str[]; };
+ * while (*(++ptr) != 0) { }
+ *
+ * Examples of newline before close
+ * void foo() {
+ * }
+ */
+static void newlines_brace_pair(Chunk *br_open);
+
+
+/**
+ * Put a empty line between the 'case' statement and the previous case colon
+ * or semicolon.
+ * Does not work with PAWN (?)
+ */
+static void newline_case(Chunk *start);
+
+
+static void newline_case_colon(Chunk *start);
+
+
+//! Put a blank line before a return statement, unless it is after an open brace
+static void newline_before_return(Chunk *start);
+
+
+/**
+ * Put a empty line after a return statement, unless it is followed by a
+ * close brace.
+ *
+ * May not work with PAWN
+ */
+static void newline_after_return(Chunk *start);
+
+
+static void blank_line_max(Chunk *pc, Option<unsigned> &opt);
+
+
+static iarf_e newline_template_option(Chunk *pc, iarf_e special, iarf_e base, iarf_e fallback);
+
+
+#define MARK_CHANGE() mark_change(__func__, __LINE__)
+
+
+static void mark_change(const char *func, size_t line)
+{
+ LOG_FUNC_ENTRY();
+
+ cpd.changes++;
+
+ if (cpd.pass_count == 0)
+ {
+ LOG_FMT(LCHANGE, "%s(%d): change %d on %s:%zu\n",
+ __func__, __LINE__, cpd.changes, func, line);
+ }
+} // mark_change
+
+
+static bool can_increase_nl(Chunk *nl)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *prev = nl->GetPrevNc();
+
+ Chunk *pcmt = nl->GetPrev();
+ Chunk *next = nl->GetNext();
+
+ if (options::nl_squeeze_ifdef())
+ {
+ log_rule_B("nl_squeeze_ifdef");
+
+ Chunk *pp_start = prev->GetPpStart();
+
+ if ( pp_start->IsNotNullChunk()
+ && ( pp_start->GetParentType() == CT_PP_IF
+ || pp_start->GetParentType() == CT_PP_ELSE)
+ && ( pp_start->GetLevel() > 0
+ || options::nl_squeeze_ifdef_top_level()))
+ {
+ log_rule_B("nl_squeeze_ifdef_top_level");
+ bool rv = ifdef_over_whole_file() && pp_start->TestFlags(PCF_WF_IF);
+ LOG_FMT(LBLANKD, "%s(%d): nl_squeeze_ifdef %zu (prev) pp_lvl=%zu rv=%d\n",
+ __func__, __LINE__, nl->GetOrigLine(), nl->GetPpLevel(), rv);
+ return(rv);
+ }
+
+ if ( next->Is(CT_PREPROC)
+ && ( next->GetParentType() == CT_PP_ELSE
+ || next->GetParentType() == CT_PP_ENDIF)
+ && ( next->GetLevel() > 0
+ || options::nl_squeeze_ifdef_top_level()))
+ {
+ log_rule_B("nl_squeeze_ifdef_top_level");
+ bool rv = ifdef_over_whole_file() && next->TestFlags(PCF_WF_ENDIF);
+ LOG_FMT(LBLANKD, "%s(%d): nl_squeeze_ifdef %zu (next) pp_lvl=%zu rv=%d\n",
+ __func__, __LINE__, nl->GetOrigLine(), nl->GetPpLevel(), rv);
+ return(rv);
+ }
+ }
+
+ if (next->Is(CT_BRACE_CLOSE))
+ {
+ if ( options::nl_inside_namespace() > 0
+ && next->GetParentType() == CT_NAMESPACE)
+ {
+ log_rule_B("nl_inside_namespace");
+ LOG_FMT(LBLANKD, "%s(%d): nl_inside_namespace %zu\n",
+ __func__, __LINE__, nl->GetOrigLine());
+ return(true);
+ }
+
+ if ( options::nl_inside_empty_func() > 0
+ && prev->Is(CT_BRACE_OPEN)
+ && ( next->GetParentType() == CT_FUNC_DEF
+ || next->GetParentType() == CT_FUNC_CLASS_DEF))
+ {
+ log_rule_B("nl_inside_empty_func");
+ LOG_FMT(LBLANKD, "%s(%d): nl_inside_empty_func %zu\n",
+ __func__, __LINE__, nl->GetOrigLine());
+ return(true);
+ }
+
+ if (options::eat_blanks_before_close_brace())
+ {
+ log_rule_B("eat_blanks_before_close_brace");
+ LOG_FMT(LBLANKD, "%s(%d): eat_blanks_before_close_brace %zu\n",
+ __func__, __LINE__, nl->GetOrigLine());
+ return(false);
+ }
+ }
+
+ if (prev->Is(CT_BRACE_CLOSE))
+ {
+ if ( options::nl_before_namespace()
+ && prev->GetParentType() == CT_NAMESPACE)
+ {
+ log_rule_B("nl_before_namespace");
+ LOG_FMT(LBLANKD, "%s(%d): nl_before_namespace %zu\n",
+ __func__, __LINE__, nl->GetOrigLine());
+ return(true);
+ }
+ }
+
+ if (prev->Is(CT_BRACE_OPEN))
+ {
+ if ( options::nl_inside_namespace() > 0
+ && prev->GetParentType() == CT_NAMESPACE)
+ {
+ log_rule_B("nl_inside_namespace");
+ LOG_FMT(LBLANKD, "%s(%d): nl_inside_namespace %zu\n",
+ __func__, __LINE__, nl->GetOrigLine());
+ return(true);
+ }
+
+ if ( options::nl_inside_empty_func() > 0
+ && next->Is(CT_BRACE_CLOSE)
+ && ( prev->GetParentType() == CT_FUNC_DEF
+ || prev->GetParentType() == CT_FUNC_CLASS_DEF))
+ {
+ log_rule_B("nl_inside_empty_func");
+ LOG_FMT(LBLANKD, "%s(%d): nl_inside_empty_func %zu\n",
+ __func__, __LINE__, nl->GetOrigLine());
+ return(true);
+ }
+
+ if (options::eat_blanks_after_open_brace())
+ {
+ log_rule_B("eat_blanks_after_open_brace");
+ LOG_FMT(LBLANKD, "%s(%d): eat_blanks_after_open_brace %zu\n",
+ __func__, __LINE__, nl->GetOrigLine());
+ return(false);
+ }
+ }
+ log_rule_B("nl_start_of_file");
+
+ if ( !pcmt
+ && (options::nl_start_of_file() != IARF_IGNORE))
+ {
+ LOG_FMT(LBLANKD, "%s(%d): SOF no prev %zu\n", __func__, __LINE__, nl->GetOrigLine());
+ return(false);
+ }
+ log_rule_B("nl_end_of_file");
+
+ if ( next->IsNullChunk()
+ && (options::nl_end_of_file() != IARF_IGNORE))
+ {
+ LOG_FMT(LBLANKD, "%s(%d): EOF no next %zu\n", __func__, __LINE__, nl->GetOrigLine());
+ return(false);
+ }
+ return(true);
+} // can_increase_nl
+
+
+static void setup_newline_add(Chunk *prev, Chunk *nl, Chunk *next)
+{
+ LOG_FUNC_ENTRY();
+
+ if ( prev->IsNullChunk()
+ || nl->IsNullChunk()
+ || next->IsNullChunk())
+ {
+ return;
+ }
+ undo_one_liner(prev);
+
+ nl->SetOrigLine(prev->GetOrigLine());
+ nl->SetLevel(prev->GetLevel());
+ nl->SetPpLevel(prev->GetPpLevel());
+ nl->SetBraceLevel(prev->GetBraceLevel());
+ nl->SetPpLevel(prev->GetPpLevel());
+ nl->SetNlCount(1);
+ nl->SetFlags((prev->GetFlags() & PCF_COPY_FLAGS) & ~PCF_IN_PREPROC);
+ nl->SetOrigCol(prev->GetOrigColEnd());
+ nl->SetColumn(prev->GetOrigCol());
+
+ if ( prev->TestFlags(PCF_IN_PREPROC)
+ && next->TestFlags(PCF_IN_PREPROC))
+ {
+ nl->SetFlagBits(PCF_IN_PREPROC);
+ }
+
+ if (nl->TestFlags(PCF_IN_PREPROC))
+ {
+ nl->SetType(CT_NL_CONT);
+ nl->Str() = "\\\n";
+ }
+ else
+ {
+ nl->SetType(CT_NEWLINE);
+ nl->Str() = "\n";
+ }
+} // setup_newline_add
+
+
+void double_newline(Chunk *nl)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *prev = nl->GetPrev();
+
+ if (prev->IsNullChunk())
+ {
+ return;
+ }
+ LOG_FMT(LNEWLINE, "%s(%d): add newline after ", __func__, __LINE__);
+
+ if (prev->Is(CT_VBRACE_CLOSE))
+ {
+ LOG_FMT(LNEWLINE, "VBRACE_CLOSE ");
+ }
+ else
+ {
+ LOG_FMT(LNEWLINE, "'%s' ", prev->Text());
+ }
+ LOG_FMT(LNEWLINE, "on line %zu", prev->GetOrigLine());
+
+ if (!can_increase_nl(nl))
+ {
+ LOG_FMT(LNEWLINE, " - denied\n");
+ return;
+ }
+ LOG_FMT(LNEWLINE, " - done\n");
+
+ if (nl->GetNlCount() != 2)
+ {
+ nl->SetNlCount(2);
+ MARK_CHANGE();
+ }
+} // double_newline
+
+
+Chunk *newline_add_before(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk nl;
+ Chunk *prev = pc->GetPrevNvb();
+
+ if (prev->IsNewline())
+ {
+ // Already has a newline before this chunk
+ return(prev);
+ }
+ LOG_FMT(LNEWLINE, "%s(%d): Text() '%s', on orig line is %zu, orig col is %zu, pc column is %zu",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetColumn());
+ log_func_stack_inline(LNEWLINE);
+
+ setup_newline_add(prev, &nl, pc);
+ nl.SetOrigCol(pc->GetOrigCol());
+ nl.SetPpLevel(pc->GetPpLevel());
+ LOG_FMT(LNEWLINE, "%s(%d): nl column is %zu\n",
+ __func__, __LINE__, nl.GetColumn());
+
+ MARK_CHANGE();
+ return(nl.CopyAndAddBefore(pc));
+} // newline_add_before
+
+
+Chunk *newline_force_before(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *nl = newline_add_before(pc);
+
+ if ( nl->IsNotNullChunk()
+ && nl->GetNlCount() > 1)
+ {
+ nl->SetNlCount(1);
+ MARK_CHANGE();
+ }
+ return(nl);
+} // newline_force_before
+
+
+Chunk *newline_add_after(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc->IsNullChunk())
+ {
+ return(Chunk::NullChunkPtr);
+ }
+ Chunk *next = pc->GetNextNvb();
+
+ if (next->IsNewline())
+ {
+ // Already has a newline after this chunk
+ return(next);
+ }
+ LOG_FMT(LNEWLINE, "%s(%d): '%s' on line %zu",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine());
+ log_func_stack_inline(LNEWLINE);
+
+ Chunk nl;
+
+ nl.SetOrigLine(pc->GetOrigLine());
+ nl.SetOrigCol(pc->GetOrigCol());
+ setup_newline_add(pc, &nl, next);
+
+ MARK_CHANGE();
+ // TO DO: check why the next statement is necessary
+ nl.SetOrigCol(pc->GetOrigCol());
+ nl.SetPpLevel(pc->GetPpLevel());
+ return(nl.CopyAndAddAfter(pc));
+} // newline_add_after
+
+
+Chunk *newline_force_after(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *nl = newline_add_after(pc); // add a newline
+
+ if ( nl->IsNotNullChunk()
+ && nl->GetNlCount() > 1) // check if there are more than 1 newline
+ {
+ nl->SetNlCount(1); // if so change the newline count back to 1
+ MARK_CHANGE();
+ }
+ return(nl);
+} // newline_force_after
+
+
+static void newline_end_newline(Chunk *br_close)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *next = br_close->GetNext();
+ Chunk nl;
+
+ if (!next->IsCommentOrNewline())
+ {
+ nl.SetOrigLine(br_close->GetOrigLine());
+ nl.SetOrigCol(br_close->GetOrigCol());
+ nl.SetNlCount(1);
+ nl.SetPpLevel(0);
+ nl.SetFlags((br_close->GetFlags() & PCF_COPY_FLAGS) & ~PCF_IN_PREPROC);
+
+ if ( br_close->TestFlags(PCF_IN_PREPROC)
+ && next->IsNotNullChunk()
+ && next->TestFlags(PCF_IN_PREPROC))
+ {
+ nl.SetFlagBits(PCF_IN_PREPROC);
+ }
+
+ if (nl.TestFlags(PCF_IN_PREPROC))
+ {
+ nl.SetType(CT_NL_CONT);
+ nl.Str() = "\\\n";
+ }
+ else
+ {
+ nl.SetType(CT_NEWLINE);
+ nl.Str() = "\n";
+ }
+ MARK_CHANGE();
+ LOG_FMT(LNEWLINE, "%s(%d): %zu:%zu add newline after '%s'\n",
+ __func__, __LINE__, br_close->GetOrigLine(), br_close->GetOrigCol(), br_close->Text());
+ nl.CopyAndAddAfter(br_close);
+ }
+} // newline_end_newline
+
+
+static void newline_min_after(Chunk *ref, size_t count, E_PcfFlag flag)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LNEWLINE, "%s(%d): for '%s', at orig line %zu, count is %zu,\n flag is %s:",
+ __func__, __LINE__, ref->Text(), ref->GetOrigLine(), count,
+ pcf_flags_str(flag).c_str());
+ log_func_stack_inline(LNEWLINE);
+
+ Chunk *pc = ref;
+
+ do
+ {
+ pc = pc->GetNext();
+ } while ( pc->IsNotNullChunk()
+ && !pc->IsNewline());
+
+ if (pc->IsNotNullChunk()) // Coverity CID 76002
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): type is %s, orig line %zu, orig col %zu\n",
+ __func__, __LINE__, get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetOrigCol());
+ }
+ Chunk *next = pc->GetNext();
+
+ if (next->IsNullChunk())
+ {
+ return;
+ }
+
+ if ( next->IsComment()
+ && next->GetNlCount() == 1
+ && pc->GetPrev()->IsComment())
+ {
+ newline_min_after(next, count, flag);
+ return;
+ }
+ pc->SetFlagBits(flag);
+
+ if ( pc->IsNewline()
+ && can_increase_nl(pc))
+ {
+ if (pc->GetNlCount() < count)
+ {
+ pc->SetNlCount(count);
+ MARK_CHANGE();
+ }
+ }
+} // newline_min_after
+
+
+Chunk *newline_add_between(Chunk *start, Chunk *end)
+{
+ LOG_FUNC_ENTRY();
+
+ if ( start->IsNullChunk()
+ || end->IsNullChunk()
+ || end->Is(CT_IGNORED))
+ {
+ return(Chunk::NullChunkPtr);
+ }
+ LOG_FMT(LNEWLINE, "%s(%d): start->Text() is '%s', type is %s, orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, start->Text(), get_token_name(start->GetType()),
+ start->GetOrigLine(), start->GetOrigCol());
+ LOG_FMT(LNEWLINE, "%s(%d): and end->Text() is '%s', orig line is %zu, orig col is %zu\n ",
+ __func__, __LINE__, end->Text(), end->GetOrigLine(), end->GetOrigCol());
+ log_func_stack_inline(LNEWLINE);
+
+ // Back-up check for one-liners (should never be true!)
+ if (!one_liner_nl_ok(start))
+ {
+ return(Chunk::NullChunkPtr);
+ }
+
+ /*
+ * Scan for a line break, if there is a line break between start and end
+ * we won't add another one
+ */
+ for (Chunk *pc = start; pc != end; pc = pc->GetNext())
+ {
+ if (pc->IsNewline())
+ {
+ return(pc);
+ }
+ }
+
+ /*
+ * If the second one is a brace open, then check to see
+ * if a comment + newline follows
+ */
+ if (end->Is(CT_BRACE_OPEN))
+ {
+ Chunk *pc = end->GetNext();
+
+ if (pc->IsComment())
+ {
+ pc = pc->GetNext();
+
+ if (pc->IsNewline())
+ {
+ // are there some more (comment + newline)s ?
+ Chunk *pc1 = end->GetNextNcNnl();
+
+ if (!pc1->IsNewline())
+ {
+ // yes, go back
+ Chunk *pc2 = pc1->GetPrev();
+ pc = pc2;
+ }
+
+ if (end == pc)
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): pc1 and pc are identical\n",
+ __func__, __LINE__);
+ }
+ else
+ {
+ // Move the open brace to after the newline
+ end->MoveAfter(pc);
+ }
+ LOG_FMT(LNEWLINE, "%s(%d):\n", __func__, __LINE__);
+ newline_add_after(end);
+ return(pc);
+ }
+ else // Issue #3873
+ {
+ LOG_FMT(LNEWLINE, "%s(%d):\n", __func__, __LINE__);
+ }
+ }
+ else
+ {
+ LOG_FMT(LNEWLINE, "%s(%d):\n", __func__, __LINE__);
+ }
+ }
+ else
+ {
+ LOG_FMT(LNEWLINE, "%s(%d):\n", __func__, __LINE__);
+ }
+ Chunk *tmp = newline_add_before(end);
+
+ return(tmp);
+} // newline_add_between
+
+
+void newline_del_between(Chunk *start, Chunk *end)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LNEWLINE, "%s(%d): start->Text() is '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, start->Text(), start->GetOrigLine(), start->GetOrigCol());
+ LOG_FMT(LNEWLINE, "%s(%d): and end->Text() is '%s', orig line is %zu, orig col is %zu: preproc=%c/%c\n",
+ __func__, __LINE__, end->Text(), end->GetOrigLine(), end->GetOrigCol(),
+ start->TestFlags(PCF_IN_PREPROC) ? 'y' : 'n',
+ end->TestFlags(PCF_IN_PREPROC) ? 'y' : 'n');
+ log_func_stack_inline(LNEWLINE);
+
+ // Can't remove anything if the preproc status differs
+ if (!start->IsSamePreproc(end))
+ {
+ return;
+ }
+ Chunk *pc = start;
+ bool start_removed = false;
+
+ do
+ {
+ Chunk *next = pc->GetNext();
+
+ if (pc->IsNewline())
+ {
+ Chunk *prev = pc->GetPrev();
+
+ if ( ( !prev->IsComment()
+ && !next->IsComment())
+ || prev->IsNewline()
+ || next->IsNewline())
+ {
+ if (pc->SafeToDeleteNl())
+ {
+ if (pc == start)
+ {
+ start_removed = true;
+ }
+ Chunk::Delete(pc);
+ MARK_CHANGE();
+
+ if (prev->IsNotNullChunk())
+ {
+ size_t temp = space_col_align(prev, next);
+ align_to_column(next, prev->GetColumn() + temp);
+ dump_step(dump_file_name, "del 1");
+ }
+ }
+ }
+ else
+ {
+ if (pc->GetNlCount() > 1)
+ {
+ pc->SetNlCount(1);
+ MARK_CHANGE();
+ }
+ }
+ }
+ pc = next;
+ } while (pc != end);
+
+ if ( !start_removed
+ && end->IsString("{")
+ && ( start->IsString(")")
+ || start->Is(CT_DO)
+ || start->Is(CT_ELSE)))
+ {
+ end->MoveAfter(start);
+ }
+} // newline_del_between
+
+
+void newlines_sparens()
+{
+ LOG_FUNC_ENTRY();
+
+ //Chunk *sparen_open;
+
+ for (Chunk *sparen_open = Chunk::GetHead()->GetNextType(CT_SPAREN_OPEN, ANY_LEVEL);
+ sparen_open->IsNotNullChunk();
+ sparen_open = sparen_open->GetNextType(CT_SPAREN_OPEN, ANY_LEVEL))
+ {
+ Chunk *sparen_close = sparen_open->GetNextType(CT_SPAREN_CLOSE, sparen_open->GetLevel());
+
+ if (sparen_close->IsNullChunk())
+ {
+ continue;
+ }
+ Chunk *sparen_content_start = sparen_open->GetNextNnl();
+ Chunk *sparen_content_end = sparen_close->GetPrevNnl();
+ bool is_multiline = (
+ sparen_content_start != sparen_content_end
+ && !sparen_content_start->IsOnSameLine(sparen_content_end));
+
+ // Add a newline after '(' if an if/for/while/switch condition spans multiple lines,
+ // as e.g. required by the ROS 2 development style guidelines:
+ // https://index.ros.org/doc/ros2/Contributing/Developer-Guide/#open-versus-cuddled-braces
+ if (is_multiline)
+ {
+ log_rule_B("nl_multi_line_sparen_open");
+ newline_iarf(sparen_open, options::nl_multi_line_sparen_open());
+ }
+
+ // Add a newline before ')' if an if/for/while/switch condition spans multiple lines. Overrides nl_before_if_closing_paren if both are specified.
+ if ( is_multiline
+ && options::nl_multi_line_sparen_close() != IARF_IGNORE)
+ {
+ log_rule_B("nl_multi_line_sparen_close");
+ newline_iarf(sparen_content_end, options::nl_multi_line_sparen_close());
+ }
+ else
+ {
+ // add/remove trailing newline in an if condition
+ Chunk *ctrl_structure = sparen_open->GetPrevNcNnl();
+
+ if ( ctrl_structure->Is(CT_IF)
+ || ctrl_structure->Is(CT_ELSEIF))
+ {
+ log_rule_B("nl_before_if_closing_paren");
+ newline_iarf_pair(sparen_content_end, sparen_close, options::nl_before_if_closing_paren());
+ }
+ }
+ }
+} // newlines_sparens
+
+
+static bool newlines_if_for_while_switch(Chunk *start, iarf_e nl_opt)
+{
+ LOG_FUNC_ENTRY();
+
+ log_rule_B("nl_define_macro");
+
+ if ( nl_opt == IARF_IGNORE
+ || ( start->TestFlags(PCF_IN_PREPROC)
+ && !options::nl_define_macro()))
+ {
+ return(false);
+ }
+ bool retval = false;
+ Chunk *pc = start->GetNextNcNnl();
+
+ if (pc->Is(CT_SPAREN_OPEN))
+ {
+ Chunk *close_paren = pc->GetNextType(CT_SPAREN_CLOSE, pc->GetLevel());
+ Chunk *brace_open = close_paren->GetNextNcNnl();
+
+ if ( ( brace_open->Is(CT_BRACE_OPEN)
+ || brace_open->Is(CT_VBRACE_OPEN))
+ && one_liner_nl_ok(brace_open))
+ {
+ log_rule_B("nl_multi_line_cond");
+
+ if (options::nl_multi_line_cond())
+ {
+ while ((pc = pc->GetNext()) != close_paren)
+ {
+ if (pc->IsNewline())
+ {
+ nl_opt = IARF_ADD;
+ break;
+ }
+ }
+ }
+
+ if (brace_open->Is(CT_VBRACE_OPEN))
+ {
+ // Can only add - we don't want to create a one-line here
+ if (nl_opt & IARF_ADD)
+ {
+ newline_iarf_pair(close_paren, brace_open->GetNextNcNnl(), nl_opt);
+ pc = brace_open->GetNextType(CT_VBRACE_CLOSE, brace_open->GetLevel());
+
+ if ( !pc->GetPrevNc()->IsNewline()
+ && !pc->GetNextNc()->IsNewline())
+ {
+ newline_add_after(pc);
+ retval = true;
+ }
+ }
+ }
+ else
+ {
+ newline_iarf_pair(close_paren, brace_open, nl_opt);
+ Chunk *next = brace_open->GetNextNcNnl();
+
+ if (brace_open->GetType() != next->GetType()) // Issue #2836
+ {
+ newline_add_between(brace_open, brace_open->GetNextNcNnl());
+ }
+ // Make sure nothing is cuddled with the closing brace
+ pc = brace_open->GetNextType(CT_BRACE_CLOSE, brace_open->GetLevel());
+ newline_add_between(pc, pc->GetNextNcNnlNet());
+ retval = true;
+ }
+ }
+ }
+ return(retval);
+} // newlines_if_for_while_switch
+
+
+static void newlines_if_for_while_switch_pre_blank_lines(Chunk *start, iarf_e nl_opt)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LNEWLINE, "%s(%d): start->Text() is '%s', type is %s, orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, start->Text(), get_token_name(start->GetType()), start->GetOrigLine(), start->GetOrigCol());
+
+ log_rule_B("nl_define_macro");
+
+ if ( nl_opt == IARF_IGNORE
+ || ( start->TestFlags(PCF_IN_PREPROC)
+ && !options::nl_define_macro()))
+ {
+ return;
+ }
+
+ /*
+ * look backwards until we find
+ * open brace (don't add or remove)
+ * 2 newlines in a row (don't add)
+ * something else (don't remove)
+ */
+ for (Chunk *pc = start->GetPrev(); pc->IsNotNullChunk(); pc = pc->GetPrev())
+ {
+ size_t level = start->GetLevel();
+ bool do_add = (nl_opt & IARF_ADD) != IARF_IGNORE; // forcing value to bool
+ Chunk *last_nl = Chunk::NullChunkPtr;
+
+ if (pc->IsNewline())
+ {
+ last_nl = pc;
+
+ // if we found 2 or more in a row
+ if ( pc->GetNlCount() > 1
+ || pc->GetPrevNvb()->IsNewline())
+ {
+ // need to remove
+ if ( (nl_opt & IARF_REMOVE)
+ && !pc->TestFlags(PCF_VAR_DEF))
+ {
+ // if we're also adding, take care of that here
+ size_t nl_count = do_add ? 2 : 1;
+
+ if (nl_count != pc->GetNlCount())
+ {
+ pc->SetNlCount(nl_count);
+ MARK_CHANGE();
+ }
+ Chunk *prev;
+
+ // can keep using pc because anything other than newline stops loop, and we delete if newline
+ while ((prev = pc->GetPrevNvb())->IsNewline())
+ {
+ // Make sure we don't combine a preproc and non-preproc
+ if (!prev->SafeToDeleteNl())
+ {
+ break;
+ }
+ Chunk::Delete(prev);
+ MARK_CHANGE();
+ }
+ }
+ return;
+ }
+ }
+ else if ( pc->IsBraceOpen()
+ || pc->GetLevel() < level)
+ {
+ return;
+ }
+ else if (pc->IsComment())
+ {
+ // vbrace close is ok because it won't go into output, so we should skip it
+ last_nl = Chunk::NullChunkPtr;
+ continue;
+ }
+ else
+ {
+ if ( pc->Is(CT_CASE_COLON)
+ && options::nl_before_ignore_after_case())
+ {
+ return;
+ }
+
+ if (do_add) // we found something previously besides a comment or a new line
+ {
+ // if we have run across a newline
+ if (last_nl->IsNotNullChunk())
+ {
+ if (last_nl->GetNlCount() < 2)
+ {
+ double_newline(last_nl);
+ }
+ }
+ else
+ {
+ Chunk *next;
+
+ // we didn't run into a newline, so we need to add one
+ if ( ((next = pc->GetNext())->IsNotNullChunk())
+ && next->IsComment())
+ {
+ pc = next;
+ }
+
+ if ((last_nl = newline_add_after(pc))->IsNotNullChunk())
+ {
+ double_newline(last_nl);
+ }
+ }
+ }
+ return;
+ }
+ }
+} // newlines_if_for_while_switch_pre_blank_lines
+
+
+static void blank_line_set(Chunk *pc, Option<unsigned> &opt)
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc->IsNullChunk())
+ {
+ return;
+ }
+ const unsigned optval = opt();
+
+ if ( (optval > 0)
+ && (pc->GetNlCount() != optval))
+ {
+ LOG_FMT(LBLANKD, "%s(%d): do_blank_lines: %s set line %zu to %u\n",
+ __func__, __LINE__, opt.name(), pc->GetOrigLine(), optval);
+ pc->SetNlCount(optval);
+ MARK_CHANGE();
+ }
+} // blank_line_set
+
+
+bool do_it_newlines_func_pre_blank_lines(Chunk *last_nl, E_Token start_type)
+{
+ LOG_FUNC_ENTRY();
+
+ if (last_nl->IsNullChunk())
+ {
+ return(false);
+ }
+ LOG_FMT(LNLFUNCT, "%s(%d): orig line is %zu, orig col is %zu, type is %s, Text() is '%s'\n",
+ __func__, __LINE__,
+ last_nl->GetOrigLine(), last_nl->GetOrigCol(), get_token_name(last_nl->GetType()), last_nl->Text());
+
+ switch (start_type)
+ {
+ case CT_FUNC_CLASS_DEF:
+ {
+ log_rule_B("nl_before_func_class_def");
+ bool diff = options::nl_before_func_class_def() <= last_nl->GetNlCount();
+ LOG_FMT(LNLFUNCT, "%s(%d): is %s\n",
+ __func__, __LINE__, diff ? "TRUE" : "FALSE");
+
+ log_rule_B("nl_before_func_class_def");
+
+ if (options::nl_before_func_class_def() != last_nl->GetNlCount())
+ {
+ LOG_FMT(LNLFUNCT, "%s(%d): set blank line(s) to %u\n",
+ __func__, __LINE__, options::nl_before_func_class_def());
+ blank_line_set(last_nl, options::nl_before_func_class_def);
+ }
+ return(diff);
+ }
+
+ case CT_FUNC_CLASS_PROTO:
+ {
+ log_rule_B("nl_before_func_class_proto");
+ bool diff = options::nl_before_func_class_proto() <= last_nl->GetNlCount();
+ LOG_FMT(LNLFUNCT, "%s(%d): is %s\n",
+ __func__, __LINE__, diff ? "TRUE" : "FALSE");
+
+ log_rule_B("nl_before_func_class_proto");
+
+ if (options::nl_before_func_class_proto() != last_nl->GetNlCount())
+ {
+ LOG_FMT(LNLFUNCT, "%s(%d): set blank line(s) to %u\n",
+ __func__, __LINE__, options::nl_before_func_class_proto());
+ blank_line_set(last_nl, options::nl_before_func_class_proto);
+ }
+ return(diff);
+ }
+
+ case CT_FUNC_DEF:
+ {
+ LOG_FMT(LNLFUNCT, "%s(%d): nl_before_func_body_def() is %u, last_nl new line count is %zu\n",
+ __func__, __LINE__, options::nl_before_func_body_def(), last_nl->GetNlCount());
+ log_rule_B("nl_before_func_body_def");
+ bool diff = options::nl_before_func_body_def() <= last_nl->GetNlCount();
+ LOG_FMT(LNLFUNCT, "%s(%d): is %s\n",
+ __func__, __LINE__, diff ? "TRUE" : "FALSE");
+
+ log_rule_B("nl_before_func_body_def");
+
+ if (options::nl_before_func_body_def() != last_nl->GetNlCount())
+ {
+ LOG_FMT(LNLFUNCT, "%s(%d): set blank line(s) to %u\n",
+ __func__, __LINE__, options::nl_before_func_body_def());
+ log_rule_B("nl_before_func_body_def");
+ blank_line_set(last_nl, options::nl_before_func_body_def);
+ }
+ LOG_FMT(LNLFUNCT, "%s(%d): nl_before_func_body_def() is %u, last_nl new line count is %zu\n",
+ __func__, __LINE__, options::nl_before_func_body_def(), last_nl->GetNlCount());
+ return(diff);
+ }
+
+ case CT_FUNC_PROTO:
+ {
+ log_rule_B("nl_before_func_body_proto");
+ bool diff = options::nl_before_func_body_proto() <= last_nl->GetNlCount();
+ LOG_FMT(LNLFUNCT, "%s(%d): is %s\n",
+ __func__, __LINE__, diff ? "TRUE" : "FALSE");
+
+ log_rule_B("nl_before_func_body_proto");
+
+ if (options::nl_before_func_body_proto() != last_nl->GetNlCount())
+ {
+ LOG_FMT(LNLFUNCT, "%s(%d): set blank line(s) to %u\n",
+ __func__, __LINE__, options::nl_before_func_body_proto());
+ log_rule_B("nl_before_func_body_proto");
+ blank_line_set(last_nl, options::nl_before_func_body_proto);
+ }
+ return(diff);
+ }
+
+ default:
+ {
+ LOG_FMT(LERR, "%s(%d): setting to blank line(s) at line %zu not possible\n",
+ __func__, __LINE__, last_nl->GetOrigLine());
+ return(false);
+ }
+ } // switch
+} // do_it_newlines_func_pre_blank_lines
+
+
+static void newlines_func_pre_blank_lines(Chunk *start, E_Token start_type)
+{
+ LOG_FUNC_ENTRY();
+
+ log_rule_B("nl_before_func_class_def");
+ log_rule_B("nl_before_func_class_proto");
+ log_rule_B("nl_before_func_body_def");
+ log_rule_B("nl_before_func_body_proto");
+
+ if ( start->IsNullChunk()
+ || ( ( start_type != CT_FUNC_CLASS_DEF
+ || options::nl_before_func_class_def() == 0)
+ && ( start_type != CT_FUNC_CLASS_PROTO
+ || options::nl_before_func_class_proto() == 0)
+ && ( start_type != CT_FUNC_DEF
+ || options::nl_before_func_body_def() == 0)
+ && ( start_type != CT_FUNC_PROTO
+ || options::nl_before_func_body_proto() == 0)))
+ {
+ return;
+ }
+ LOG_FMT(LNLFUNCT, "%s(%d): set blank line(s): for <NL> at line %zu, column %zu, start_type is %s\n",
+ __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol(), get_token_name(start_type));
+ LOG_FMT(LNLFUNCT, "%s(%d): BEGIN set blank line(s) for '%s' at line %zu\n",
+ __func__, __LINE__, start->Text(), start->GetOrigLine());
+ /*
+ * look backwards until we find:
+ * - open brace (don't add or remove)
+ * - two newlines in a row (don't add)
+ * - a destructor
+ * - something else (don't remove)
+ */
+ Chunk *pc = Chunk::NullChunkPtr;
+ Chunk *last_nl = Chunk::NullChunkPtr;
+ Chunk *last_comment = Chunk::NullChunkPtr;
+ size_t first_line = start->GetOrigLine();
+
+ for (pc = start->GetPrev(); pc->IsNotNullChunk(); pc = pc->GetPrev())
+ {
+ LOG_FMT(LNLFUNCT, "%s(%d): orig line is %zu, orig col is %zu, type is %s, Text() is '%s', new line count is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()), pc->Text(), pc->GetNlCount());
+
+ if (pc->IsNewline())
+ {
+ last_nl = pc;
+ LOG_FMT(LNLFUNCT, "%s(%d): <Chunk::IsNewline> found at line %zu, column %zu, new line count is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetNlCount());
+ LOG_FMT(LNLFUNCT, "%s(%d): last_nl set to %zu\n",
+ __func__, __LINE__, last_nl->GetOrigLine());
+ bool break_now = false;
+
+ if (pc->GetNlCount() > 1)
+ {
+ break_now = do_it_newlines_func_pre_blank_lines(last_nl, start_type);
+ LOG_FMT(LNLFUNCT, "%s(%d): break_now is %s\n",
+ __func__, __LINE__, break_now ? "TRUE" : "FALSE");
+ }
+
+ if (break_now)
+ {
+ break;
+ }
+ else
+ {
+ continue;
+ }
+ }
+ else if (pc->IsComment())
+ {
+ LOG_FMT(LNLFUNCT, "%s(%d): <Chunk::IsComment> found at line %zu, column %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+
+ if ( ( pc->GetOrigLine() < first_line
+ && ((first_line - pc->GetOrigLine()
+ - (pc->Is(CT_COMMENT_MULTI) ? pc->GetNlCount() : 0))) < 2)
+ || ( last_comment->IsNotNullChunk()
+ && pc->Is(CT_COMMENT_CPP) // combine only cpp comments
+ && last_comment->Is(pc->GetType()) // don't mix comment types
+ && last_comment->GetOrigLine() > pc->GetOrigLine()
+ && (last_comment->GetOrigLine() - pc->GetOrigLine()) < 2))
+ {
+ last_comment = pc;
+ continue;
+ }
+ bool break_now = do_it_newlines_func_pre_blank_lines(last_nl, start_type);
+ LOG_FMT(LNLFUNCT, "%s(%d): break_now is %s\n",
+ __func__, __LINE__, break_now ? "TRUE" : "FALSE");
+ continue;
+ }
+ else if ( pc->Is(CT_DESTRUCTOR)
+ || pc->Is(CT_TYPE)
+ || pc->Is(CT_TEMPLATE)
+ || pc->Is(CT_QUALIFIER)
+ || pc->Is(CT_PTR_TYPE)
+ || pc->Is(CT_BYREF) // Issue #2163
+ || pc->Is(CT_DC_MEMBER)
+ || pc->Is(CT_EXTERN)
+ || ( pc->Is(CT_STRING)
+ && pc->GetParentType() == CT_EXTERN))
+ {
+ LOG_FMT(LNLFUNCT, "%s(%d): first_line set to %zu\n",
+ __func__, __LINE__, pc->GetOrigLine());
+ first_line = pc->GetOrigLine();
+ continue;
+ }
+ else if ( pc->Is(CT_ANGLE_CLOSE)
+ && pc->GetParentType() == CT_TEMPLATE)
+ {
+ LOG_FMT(LNLFUNCT, "%s(%d):\n", __func__, __LINE__);
+ // skip template stuff to add newlines before it
+ pc = pc->GetOpeningParen();
+
+ if (pc->IsNotNullChunk())
+ {
+ first_line = pc->GetOrigLine();
+ }
+ continue;
+ }
+ else
+ {
+ LOG_FMT(LNLFUNCT, "%s(%d): else ==================================\n",
+ __func__, __LINE__);
+ bool break_now = do_it_newlines_func_pre_blank_lines(last_nl, start_type);
+ LOG_FMT(LNLFUNCT, "%s(%d): break_now is %s\n",
+ __func__, __LINE__, break_now ? "TRUE" : "FALSE");
+ break;
+ }
+ }
+} // newlines_func_pre_blank_lines
+
+
+static Chunk *get_closing_brace(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc;
+ size_t level = start->GetLevel();
+
+ for (pc = start; (pc = pc->GetNext())->IsNotNullChunk();)
+ {
+ if ( (pc->IsBraceClose())
+ && pc->GetLevel() == level)
+ {
+ return(pc);
+ }
+
+ // for some reason, we can have newlines between if and opening brace that are lower level than either
+ if ( !pc->IsNewline()
+ && pc->GetLevel() < level)
+ {
+ return(Chunk::NullChunkPtr);
+ }
+ }
+
+ return(Chunk::NullChunkPtr);
+} // get_closing_brace
+
+
+static void remove_next_newlines(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *next;
+
+ while ((next = start->GetNext())->IsNotNullChunk())
+ {
+ if ( next->IsNewline()
+ && next->SafeToDeleteNl())
+ {
+ Chunk::Delete(next);
+ MARK_CHANGE();
+ }
+ else if (next->IsVBrace())
+ {
+ start = next;
+ }
+ else
+ {
+ break;
+ }
+ }
+} // remove_next_newlines
+
+
+static void newlines_if_for_while_switch_post_blank_lines(Chunk *start, iarf_e nl_opt)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *prev;
+
+ LOG_FMT(LNEWLINE, "%s(%d): start->Text() is '%s', type is %s, orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, start->Text(), get_token_name(start->GetType()), start->GetOrigLine(), start->GetOrigCol());
+
+ log_rule_B("nl_define_macro");
+
+ if ( nl_opt == IARF_IGNORE
+ || ( start->TestFlags(PCF_IN_PREPROC)
+ && !options::nl_define_macro()))
+ {
+ return;
+ }
+ Chunk *pc = get_closing_brace(start);
+
+ // first find ending brace
+ if (pc->IsNullChunk())
+ {
+ return;
+ }
+ LOG_FMT(LNEWLINE, "%s(%d): pc->Text() is '%s', type is %s, orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetOrigCol());
+
+ /*
+ * if we're dealing with an if, we actually want to add or remove
+ * blank lines after any else
+ */
+ if (start->Is(CT_IF))
+ {
+ Chunk *next;
+
+ while (true)
+ {
+ next = pc->GetNextNcNnl();
+
+ if ( next->IsNotNullChunk()
+ && ( next->Is(CT_ELSE)
+ || next->Is(CT_ELSEIF)))
+ {
+ // point to the closing brace of the else
+ if ((pc = get_closing_brace(next))->IsNullChunk())
+ {
+ return;
+ }
+ LOG_FMT(LNEWLINE, "%s(%d): pc->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetOrigCol());
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+
+ /*
+ * if we're dealing with a do/while, we actually want to add or
+ * remove blank lines after while and its condition
+ */
+ if (start->Is(CT_DO))
+ {
+ // point to the next semicolon
+ if ((pc = pc->GetNextType(CT_SEMICOLON, start->GetLevel()))->IsNullChunk())
+ {
+ return;
+ }
+ LOG_FMT(LNEWLINE, "%s(%d): pc->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetOrigCol());
+ }
+ bool isVBrace = (pc->Is(CT_VBRACE_CLOSE));
+
+ if (isVBrace)
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): isVBrace is TRUE\n", __func__, __LINE__);
+ }
+ else
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): isVBrace is FALSE\n", __func__, __LINE__);
+ }
+
+ if ((prev = pc->GetPrevNvb())->IsNullChunk())
+ {
+ return;
+ }
+ bool have_pre_vbrace_nl = isVBrace && prev->IsNewline();
+
+ if (have_pre_vbrace_nl)
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): have_pre_vbrace_nl is TRUE\n", __func__, __LINE__);
+ }
+ else
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): have_pre_vbrace_nl is FALSE\n", __func__, __LINE__);
+ }
+
+ if (nl_opt & IARF_REMOVE)
+ {
+ Chunk *next;
+
+ // if chunk before is a vbrace, remove any newlines after it
+ if (have_pre_vbrace_nl)
+ {
+ if (prev->GetNlCount() != 1)
+ {
+ prev->SetNlCount(1);
+ MARK_CHANGE();
+ }
+ remove_next_newlines(pc);
+ }
+ else if ( ((next = pc->GetNextNvb())->IsNewline())
+ && !next->TestFlags(PCF_VAR_DEF))
+ {
+ // otherwise just deal with newlines after brace
+ if (next->GetNlCount() != 1)
+ {
+ next->SetNlCount(1);
+ MARK_CHANGE();
+ }
+ remove_next_newlines(next);
+ }
+ }
+
+ // may have a newline before and after vbrace
+ // don't do anything with it if the next non newline chunk is a closing brace
+ if (nl_opt & IARF_ADD)
+ {
+ Chunk *next = pc->GetNextNnl();
+
+ do
+ {
+ if (next->IsNullChunk())
+ {
+ return;
+ }
+
+ if (next->IsNot(CT_VBRACE_CLOSE))
+ {
+ break;
+ }
+ next = next->GetNextNnl();
+ } while (true);
+
+ LOG_FMT(LNEWLINE, "%s(%d): next->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
+ __func__, __LINE__, next->Text(), get_token_name(next->GetType()), next->GetOrigLine(), next->GetOrigCol());
+
+ if (next->IsNot(CT_BRACE_CLOSE))
+ {
+ // if vbrace, have to check before and after
+ // if chunk before vbrace, check its count
+ size_t nl_count = have_pre_vbrace_nl ? prev->GetNlCount() : 0;
+ LOG_FMT(LNEWLINE, "%s(%d): new line count %zu\n", __func__, __LINE__, nl_count);
+
+ if ((next = pc->GetNextNvb())->IsNewline())
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): next->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
+ __func__, __LINE__, next->Text(), get_token_name(next->GetType()), next->GetOrigLine(), next->GetOrigCol());
+ nl_count += next->GetNlCount();
+ LOG_FMT(LNEWLINE, "%s(%d): new line count is %zu\n", __func__, __LINE__, nl_count);
+ }
+
+ // if we have no newlines, add one and make it double
+ if (nl_count == 0)
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): new line count is 0\n", __func__, __LINE__);
+
+ if ( ((next = pc->GetNext())->IsNotNullChunk())
+ && next->IsComment())
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): next->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
+ __func__, __LINE__, next->Text(), get_token_name(next->GetType()), next->GetOrigLine(), next->GetOrigCol());
+ pc = next;
+ LOG_FMT(LNEWLINE, "%s(%d): pc->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetOrigCol());
+ }
+
+ if ((next = newline_add_after(pc))->IsNullChunk())
+ {
+ return;
+ }
+ LOG_FMT(LNEWLINE, "%s(%d): next->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
+ __func__, __LINE__, next->Text(), get_token_name(next->GetType()), next->GetOrigLine(), next->GetOrigCol());
+ double_newline(next);
+ }
+ else if (nl_count == 1) // if we don't have enough newlines
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): new line count is 1\n", __func__, __LINE__);
+
+ // if we have a preceding vbrace, add one after it
+ if (have_pre_vbrace_nl)
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): have_pre_vbrace_nl is TRUE\n", __func__, __LINE__);
+ next = newline_add_after(pc);
+ LOG_FMT(LNEWLINE, "%s(%d): next->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
+ __func__, __LINE__, next->Text(), get_token_name(next->GetType()), next->GetOrigLine(), next->GetOrigCol());
+ }
+ else
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): have_pre_vbrace_nl is FALSE\n", __func__, __LINE__);
+ prev = next->GetPrevNnl();
+ LOG_FMT(LNEWLINE, "%s(%d): prev->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
+ __func__, __LINE__, prev->Text(), get_token_name(prev->GetType()), prev->GetOrigLine(), prev->GetOrigCol());
+ pc = next->GetNextNl();
+ LOG_FMT(LNEWLINE, "%s(%d): pc->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetOrigCol());
+ Chunk *pc2 = pc->GetNext();
+
+ if (pc2->IsNotNullChunk())
+ {
+ pc = pc2;
+ LOG_FMT(LNEWLINE, "%s(%d): pc->Text() is '%s', type %s, orig line %zu, orig col %zu\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetOrigCol());
+ }
+ else
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): no next found: <EOF>\n", __func__, __LINE__);
+ }
+ log_rule_B("nl_squeeze_ifdef");
+
+ if ( pc->Is(CT_PREPROC)
+ && pc->GetParentType() == CT_PP_ENDIF
+ && options::nl_squeeze_ifdef())
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): cannot add newline after orig line %zu due to nl_squeeze_ifdef\n",
+ __func__, __LINE__, prev->GetOrigLine());
+ }
+ else
+ {
+ // make newline after double
+ LOG_FMT(LNEWLINE, "%s(%d): call double_newline\n", __func__, __LINE__);
+ double_newline(next);
+ }
+ }
+ }
+ }
+ }
+} // newlines_if_for_while_switch_post_blank_lines
+
+
+static void newlines_struct_union(Chunk *start, iarf_e nl_opt, bool leave_trailing)
+{
+ LOG_FUNC_ENTRY();
+
+ log_rule_B("nl_define_macro");
+
+ if ( nl_opt == IARF_IGNORE
+ || ( start->TestFlags(PCF_IN_PREPROC)
+ && !options::nl_define_macro()))
+ {
+ return;
+ }
+ /*
+ * step past any junk between the keyword and the open brace
+ * Quit if we hit a semicolon or '=', which are not expected.
+ */
+ size_t level = start->GetLevel();
+ Chunk *pc = start->GetNextNcNnl();
+
+ while ( pc->IsNotNullChunk()
+ && pc->GetLevel() >= level)
+ {
+ if ( pc->GetLevel() == level
+ && ( pc->Is(CT_BRACE_OPEN)
+ || pc->IsSemicolon()
+ || pc->Is(CT_ASSIGN)))
+ {
+ break;
+ }
+ start = pc;
+ pc = pc->GetNextNcNnl();
+ }
+
+ // If we hit a brace open, then we need to toy with the newlines
+ if (pc->Is(CT_BRACE_OPEN))
+ {
+ // Skip over embedded C comments
+ Chunk *next = pc->GetNext();
+
+ while (next->Is(CT_COMMENT))
+ {
+ next = next->GetNext();
+ }
+
+ if ( leave_trailing
+ && !next->IsCommentOrNewline())
+ {
+ nl_opt = IARF_IGNORE;
+ }
+ newline_iarf_pair(start, pc, nl_opt);
+ }
+} // newlines_struct_union
+
+
+// enum {
+// enum class angle_state_e : unsigned int {
+// enum-key attr(optional) identifier(optional) enum-base(optional) { enumerator-list(optional) }
+// enum-key attr(optional) nested-name-specifier(optional) identifier enum-base(optional) ; TODO
+// enum-key - one of enum, enum class or enum struct TODO
+// identifier - the name of the enumeration that's being declared
+// enum-base(C++11) - colon (:), followed by a type-specifier-seq
+// enumerator-list - comma-separated list of enumerator definitions
+static void newlines_enum(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ log_rule_B("nl_define_macro");
+
+ if ( start->TestFlags(PCF_IN_PREPROC)
+ && !options::nl_define_macro())
+ {
+ return;
+ }
+ // look for 'enum class'
+ Chunk *pcClass = start->GetNextNcNnl();
+
+ if (pcClass->Is(CT_ENUM_CLASS))
+ {
+ log_rule_B("nl_enum_class");
+ newline_iarf_pair(start, pcClass, options::nl_enum_class());
+ // look for 'identifier'/ 'type'
+ Chunk *pcType = pcClass->GetNextNcNnl();
+
+ if (pcType->Is(CT_TYPE))
+ {
+ log_rule_B("nl_enum_class_identifier");
+ newline_iarf_pair(pcClass, pcType, options::nl_enum_class_identifier());
+ // look for ':'
+ Chunk *pcColon = pcType->GetNextNcNnl();
+
+ if (pcColon->Is(CT_ENUM_COLON)) // Issue #4040
+ {
+ log_rule_B("nl_enum_identifier_colon");
+ newline_iarf_pair(pcType, pcColon, options::nl_enum_identifier_colon());
+ // look for 'type' i.e. unsigned
+ Chunk *pcType1 = pcColon->GetNextNcNnl();
+
+ if (pcType1->Is(CT_TYPE))
+ {
+ log_rule_B("nl_enum_colon_type");
+ newline_iarf_pair(pcColon, pcType1, options::nl_enum_colon_type());
+ // look for 'type' i.e. int
+ Chunk *pcType2 = pcType1->GetNextNcNnl();
+
+ if (pcType2->Is(CT_TYPE))
+ {
+ log_rule_B("nl_enum_colon_type");
+ newline_iarf_pair(pcType1, pcType2, options::nl_enum_colon_type());
+ }
+ }
+ }
+ }
+ }
+ /*
+ * step past any junk between the keyword and the open brace
+ * Quit if we hit a semicolon or '=', which are not expected.
+ */
+ size_t level = start->GetLevel();
+ Chunk *pc = start->GetNextNcNnl();
+
+ while ( pc->IsNotNullChunk()
+ && pc->GetLevel() >= level)
+ {
+ if ( pc->GetLevel() == level
+ && ( pc->Is(CT_BRACE_OPEN)
+ || pc->IsSemicolon()
+ || pc->Is(CT_ASSIGN)))
+ {
+ break;
+ }
+ start = pc;
+ pc = pc->GetNextNcNnl();
+ }
+
+ // If we hit a brace open, then we need to toy with the newlines
+ if (pc->Is(CT_BRACE_OPEN))
+ {
+ // Skip over embedded C comments
+ Chunk *next = pc->GetNext();
+
+ while (next->Is(CT_COMMENT))
+ {
+ next = next->GetNext();
+ }
+ iarf_e nl_opt;
+
+ if (!next->IsCommentOrNewline())
+ {
+ nl_opt = IARF_IGNORE;
+ }
+ else
+ {
+ log_rule_B("nl_enum_brace");
+ nl_opt = options::nl_enum_brace();
+ }
+ newline_iarf_pair(start, pc, nl_opt);
+ }
+} // newlines_enum
+
+
+// namespace {
+// namespace word {
+// namespace type::word {
+static void newlines_namespace(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ log_rule_B("nl_namespace_brace");
+
+ // Add or remove newline between 'namespace' and 'BRACE_OPEN'
+ log_rule_B("nl_define_macro");
+ iarf_e nl_opt = options::nl_namespace_brace();
+
+ if ( nl_opt == IARF_IGNORE
+ || ( start->TestFlags(PCF_IN_PREPROC)
+ && !options::nl_define_macro()))
+ {
+ return;
+ }
+ Chunk *braceOpen = start->GetNextType(CT_BRACE_OPEN, start->GetLevel());
+
+ LOG_FMT(LNEWLINE, "%s(%d): braceOpen orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, braceOpen->GetOrigLine(), braceOpen->GetOrigCol(), braceOpen->Text());
+ // produces much more log output. Use it only debugging purpose
+ //log_pcf_flags(LNEWLINE, braceOpen->GetFlags());
+
+ if (braceOpen->TestFlags(PCF_ONE_LINER))
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): is one_liner\n",
+ __func__, __LINE__);
+ return;
+ }
+ Chunk *beforeBrace = braceOpen->GetPrev();
+
+ LOG_FMT(LNEWLINE, "%s(%d): beforeBrace orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, beforeBrace->GetOrigLine(), beforeBrace->GetOrigCol(), beforeBrace->Text());
+ // 'namespace' 'BRACE_OPEN'
+ newline_iarf_pair(beforeBrace, braceOpen, nl_opt);
+} // newlines_namespace
+
+
+static void newlines_cuddle_uncuddle(Chunk *start, iarf_e nl_opt)
+{
+ LOG_FUNC_ENTRY();
+
+ log_rule_B("nl_define_macro");
+
+ if ( start->TestFlags(PCF_IN_PREPROC)
+ && !options::nl_define_macro())
+ {
+ return;
+ }
+ Chunk *br_close = start->GetPrevNcNnlNi(); // Issue #2279
+
+ if (br_close->Is(CT_BRACE_CLOSE))
+ {
+ newline_iarf_pair(br_close, start, nl_opt);
+ }
+} // newlines_cuddle_uncuddle
+
+
+static void newlines_do_else(Chunk *start, iarf_e nl_opt)
+{
+ LOG_FUNC_ENTRY();
+
+ log_rule_B("nl_define_macro");
+ log_ruleNL("nl_define_macro", start);
+
+ if ( nl_opt == IARF_IGNORE
+ || ( start->TestFlags(PCF_IN_PREPROC)
+ && !options::nl_define_macro()))
+ {
+ return;
+ }
+ Chunk *next = start->GetNextNcNnl();
+
+ if ( next->IsNotNullChunk()
+ && ( next->Is(CT_BRACE_OPEN)
+ || next->Is(CT_VBRACE_OPEN)))
+ {
+ if (!one_liner_nl_ok(next))
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): a new line may NOT be added\n", __func__, __LINE__);
+ return;
+ }
+ LOG_FMT(LNL1LINE, "%s(%d): a new line may be added\n", __func__, __LINE__);
+
+ if (next->Is(CT_VBRACE_OPEN))
+ {
+ // Can only add - we don't want to create a one-line here
+ if (nl_opt & IARF_ADD)
+ {
+ newline_iarf_pair(start, next->GetNextNcNnl(), nl_opt);
+ Chunk *tmp = next->GetNextType(CT_VBRACE_CLOSE, next->GetLevel());
+
+ if ( !tmp->GetNextNc()->IsNewline()
+ && !tmp->GetPrevNc()->IsNewline())
+ {
+ newline_add_after(tmp);
+ }
+ }
+ }
+ else
+ {
+ newline_iarf_pair(start, next, nl_opt);
+ newline_add_between(next, next->GetNextNcNnl());
+ }
+ }
+} // newlines_do_else
+
+
+static bool is_var_def(Chunk *pc, Chunk *next)
+{
+ if ( pc->Is(CT_DECLTYPE)
+ && next->Is(CT_PAREN_OPEN))
+ {
+ // If current token starts a decltype expression, skip it
+ next = next->GetClosingParen();
+ next = next->GetNextNcNnl();
+ }
+ else if (!pc->IsTypeDefinition())
+ {
+ // Otherwise, if the current token is not a type --> not a declaration
+ return(false);
+ }
+ else if (next->Is(CT_DC_MEMBER))
+ {
+ // If next token is CT_DC_MEMBER, skip it
+ next = next->SkipDcMember();
+ }
+ else if (next->Is(CT_ANGLE_OPEN))
+ {
+ // If we have a template type, skip it
+ next = next->GetClosingParen();
+ next = next->GetNextNcNnl();
+ }
+ bool is = ( ( next->IsTypeDefinition()
+ && next->GetParentType() != CT_FUNC_DEF) // Issue #2639
+ || next->Is(CT_WORD)
+ || next->Is(CT_FUNC_CTOR_VAR));
+
+ return(is);
+} // is_var_def
+
+
+static bool is_func_call_or_def(Chunk *pc)
+{
+ if ( pc->GetParentType() == CT_FUNC_DEF
+ || pc->GetParentType() == CT_FUNC_CALL
+ || pc->GetParentType() == CT_FUNC_CALL_USER
+ || pc->GetParentType() == CT_FUNC_CLASS_DEF
+ || pc->GetParentType() == CT_OC_CLASS
+ || pc->GetParentType() == CT_OC_MSG_DECL
+ || pc->GetParentType() == CT_CS_PROPERTY
+ || pc->GetParentType() == CT_CPP_LAMBDA)
+ {
+ return(true);
+ }
+ return(false);
+} // is_func_call_or_def
+
+
+// Put newline(s) before and/or after a block of variable definitions
+static Chunk *newline_var_def_blk(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc = start;
+ Chunk *prev = start->GetPrevNcNnlNi(); // Issue #2279
+ bool did_this_line = false;
+ bool fn_top = false;
+ bool var_blk = false;
+ bool first_var_blk = true;
+
+ LOG_FMT(LVARDFBLK, "%s(%d): start orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol(), start->Text());
+
+ if (start->Is(CT_BRACE_OPEN))
+ {
+ // can't be any variable definitions in a "= {" block
+ if ( prev->IsNotNullChunk()
+ && prev->Is(CT_ASSIGN))
+ {
+ Chunk *tmp = start->GetClosingParen();
+ return(tmp->GetNextNcNnl());
+ }
+ // check if we're at the top of a function definition, or function call with a
+ // possible variable block
+ fn_top = is_func_call_or_def(start);
+ // opening brace is processed, start with next chunk
+ pc = pc->GetNext();
+ }
+
+ while ( pc->IsNotNullChunk()
+ && ( pc->GetLevel() >= start->GetLevel()
+ || pc->GetLevel() == 0))
+ {
+ LOG_CHUNK(LTOK, pc);
+
+ Chunk *next_pc = pc->GetNext();
+ LOG_FMT(LVARDFBLK, "%s(%d): next_pc orig line is %zu, orig col is %zu, type is %s, Text() is '%s'\n",
+ __func__, __LINE__, next_pc->GetOrigLine(), next_pc->GetOrigCol(), get_token_name(next_pc->GetType()), next_pc->Text());
+
+ // If next_pc token is CT_DC_MEMBER, skip it
+ if (next_pc->Is(CT_DC_MEMBER))
+ {
+ pc = pc->SkipDcMember();
+ }
+
+ // skip qualifiers
+ if (pc->Is(CT_QUALIFIER))
+ {
+ pc = pc->GetNext();
+ continue;
+ }
+
+ if (pc->IsComment())
+ {
+ pc = pc->GetNext();
+ continue;
+ }
+
+ // process nested braces
+ if (pc->Is(CT_BRACE_OPEN))
+ {
+ pc = newline_var_def_blk(pc);
+ continue;
+ }
+
+ // Done with this brace set?
+ if (pc->Is(CT_BRACE_CLOSE))
+ {
+ pc = pc->GetNext();
+ break;
+ }
+
+ // skip vbraces
+ if (pc->Is(CT_VBRACE_OPEN))
+ {
+ pc = pc->GetNextType(CT_VBRACE_CLOSE, pc->GetLevel());
+ pc = pc->GetNext();
+ continue;
+ }
+
+ // Ignore stuff inside parenthesis/squares/angles
+ if (pc->GetLevel() > pc->GetBraceLevel())
+ {
+ pc = pc->GetNext();
+ continue;
+ }
+
+ if (pc->IsNewline())
+ {
+ did_this_line = false;
+ pc = pc->GetNext();
+ continue;
+ }
+
+ // Determine if this is a variable definition or code
+ if ( !did_this_line
+ && pc->IsNot(CT_FUNC_CLASS_DEF)
+ && pc->IsNot(CT_FUNC_CLASS_PROTO)
+ && ( (pc->GetLevel() == (start->GetLevel() + 1))
+ || pc->GetLevel() == 0))
+ {
+ Chunk *next = pc->GetNextNcNnl();
+ LOG_FMT(LVARDFBLK, "%s(%d): next orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->Text());
+
+ // skip over all other type-like things
+ while ( next->Is(CT_PTR_TYPE) // Issue #2692
+ || next->Is(CT_BYREF) // Issue #3018
+ || next->Is(CT_QUALIFIER)
+ || next->Is(CT_TSQUARE))
+ {
+ next = next->GetNextNcNnl();
+ LOG_FMT(LVARDFBLK, "%s(%d): next orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->Text());
+ }
+
+ if (next->IsNullChunk())
+ {
+ break;
+ }
+ LOG_FMT(LVARDFBLK, "%s(%d): next orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->Text());
+
+ prev = pc->GetPrevNcNnl();
+
+ while ( prev->Is(CT_DC_MEMBER)
+ || prev->Is(CT_QUALIFIER)
+ || prev->Is(CT_TYPE))
+ {
+ prev = prev->GetPrevNcNnl();
+ }
+
+ if (!( prev->IsBraceOpen()
+ || prev->IsBraceClose()))
+ {
+ prev = pc->GetPrevType(CT_SEMICOLON, pc->GetLevel());
+ }
+
+ if (prev->IsNullChunk())
+ {
+ prev = pc->GetPrevType(CT_BRACE_OPEN, pc->GetLevel() - 1); // Issue #2692
+ }
+
+ if ( prev->Is(CT_STRING)
+ && prev->GetParentType() == CT_EXTERN
+ && prev->GetPrev()->Is(CT_EXTERN))
+ {
+ prev = prev->GetPrev()->GetPrevNcNnlNi(); // Issue #2279
+ }
+ LOG_FMT(LVARDFBLK, "%s(%d): pc orig line is %zu, orig col is %zu, type is %s, Text() is '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()), pc->Text());
+ LOG_FMT(LVARDFBLK, "%s(%d): next orig line is %zu, orig col is %zu, type is %s, Text() is '%s'\n",
+ __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), get_token_name(next->GetType()), next->Text());
+
+ if (is_var_def(pc, next))
+ {
+ LOG_FMT(LVARDFBLK, "%s(%d): 'typ==var' found: '%s %s' at line %zu\n",
+ __func__, __LINE__, pc->Text(), next->Text(), pc->GetOrigLine());
+ LOG_FMT(LBLANKD, "%s(%d): var_blk %s, first_var_blk %s, fn_top %s\n",
+ __func__, __LINE__, var_blk ? "TRUE" : "FALSE",
+ first_var_blk ? "TRUE" : "FALSE", fn_top ? "TRUE" : "FALSE");
+ // Put newline(s) before a block of variable definitions
+ log_rule_B("nl_var_def_blk_start");
+
+ if ( !var_blk
+ && !first_var_blk
+ && options::nl_var_def_blk_start() > 0)
+ {
+ LOG_FMT(LVARDFBLK, "%s(%d): pc is '%s', orig line is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine());
+
+ if (prev->IsNullChunk())
+ {
+ LOG_FMT(LVARDFBLK, "%s(%d): prev is a null chunk\n", __func__, __LINE__);
+ }
+ else
+ {
+ LOG_FMT(LVARDFBLK, "%s(%d): prev is '%s', orig line is %zu\n",
+ __func__, __LINE__, prev->Text(), prev->GetOrigLine());
+
+ if (!prev->IsBraceOpen())
+ {
+ newline_min_after(prev, options::nl_var_def_blk_start() + 1, PCF_VAR_DEF);
+ }
+ }
+ }
+ // set newlines within var def block
+ log_rule_B("nl_var_def_blk_in");
+
+ if ( var_blk
+ && (options::nl_var_def_blk_in() > 0))
+ {
+ prev = pc->GetPrev();
+ LOG_FMT(LVARDFBLK, "%s(%d): prev orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text());
+
+ if (prev->IsNewline())
+ {
+ if (prev->GetNlCount() > options::nl_var_def_blk_in())
+ {
+ prev->SetNlCount(options::nl_var_def_blk_in());
+ MARK_CHANGE();
+ }
+ }
+ }
+ pc = pc->GetNextType(CT_SEMICOLON, pc->GetLevel());
+ var_blk = true;
+ }
+ else if (var_blk)
+ {
+ LOG_FMT(LVARDFBLK, "%s(%d): var_blk %s, first_var_blk %s, fn_top %s\n",
+ __func__, __LINE__, var_blk ? "TRUE" : "FALSE",
+ first_var_blk ? "TRUE" : "FALSE", fn_top ? "TRUE" : "FALSE");
+ log_rule_B("nl_var_def_blk_end_func_top");
+ log_rule_B("nl_var_def_blk_end");
+
+ if ( first_var_blk
+ && fn_top)
+ {
+ // set blank lines after first var def block at the top of a function
+ if (options::nl_var_def_blk_end_func_top() > 0)
+ {
+ LOG_FMT(LVARDFBLK, "%s(%d): nl_var_def_blk_end_func_top at line %zu\n",
+ __func__, __LINE__, prev->GetOrigLine());
+ newline_min_after(prev, options::nl_var_def_blk_end_func_top() + 1, PCF_VAR_DEF);
+ }
+ }
+ else if ( !pc->IsPreproc()
+ && options::nl_var_def_blk_end() > 0)
+ {
+ // set blank lines after other var def blocks
+ LOG_FMT(LVARDFBLK, "%s(%d): nl_var_def_blk_end at line %zu\n",
+ __func__, __LINE__, prev->GetOrigLine());
+ // Issue #3516
+ newline_min_after(prev, options::nl_var_def_blk_end() + 1, PCF_VAR_DEF);
+ }
+ // reset the variables for the next block
+ first_var_blk = false;
+ var_blk = false;
+ }
+ else
+ {
+ first_var_blk = false;
+ var_blk = false;
+ }
+ }
+ else
+ {
+ if (pc->Is(CT_FUNC_CLASS_DEF))
+ {
+ log_rule_B("nl_var_def_blk_end");
+
+ if ( var_blk
+ && options::nl_var_def_blk_end() > 0)
+ {
+ prev = pc->GetPrev();
+ prev = prev->GetPrev();
+ newline_min_after(prev, options::nl_var_def_blk_end() + 1, PCF_VAR_DEF);
+ pc = pc->GetNext();
+ first_var_blk = false;
+ var_blk = false;
+ }
+ }
+ }
+ did_this_line = true;
+
+ if (pc == nullptr)
+ {
+ pc = Chunk::NullChunkPtr;
+ }
+ pc = pc->GetNext();
+ }
+ LOG_FMT(LVARDFBLK, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s', level is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), pc->GetLevel());
+ LOG_FMT(LVARDFBLK, "%s(%d): start orig line is %zu, orig col is %zu, Text() is '%s', level is %zu\n",
+ __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol(), start->Text(), start->GetLevel());
+ return(pc);
+} // newline_var_def_blk
+
+
+static void collapse_empty_body(Chunk *br_open)
+{
+ for (Chunk *pc = br_open->GetNext(); pc->IsNot(CT_BRACE_CLOSE); pc = pc->GetNext())
+ {
+ if ( pc->Is(CT_NEWLINE)
+ && pc->SafeToDeleteNl())
+ {
+ pc = pc->GetPrev();
+ Chunk *next = pc->GetNext();
+ Chunk::Delete(next);
+ MARK_CHANGE();
+ }
+ }
+} // collapse_empty_body
+
+
+static void newlines_brace_pair(Chunk *br_open)
+{
+ LOG_FUNC_ENTRY();
+
+ log_rule_B("nl_define_macro");
+
+ if ( br_open->TestFlags(PCF_IN_PREPROC)
+ && !options::nl_define_macro())
+ {
+ return;
+ }
+
+ //fixes 1235 Add single line namespace support
+ if ( br_open->Is(CT_BRACE_OPEN)
+ && (br_open->GetParentType() == CT_NAMESPACE)
+ && br_open->GetPrev()->IsNewline())
+ {
+ Chunk *chunk_brace_close = br_open->GetClosingParen();
+
+ if (chunk_brace_close->IsNotNullChunk())
+ {
+ if (br_open->IsOnSameLine(chunk_brace_close))
+ {
+ log_rule_B("nl_namespace_two_to_one_liner - 1");
+
+ if (options::nl_namespace_two_to_one_liner())
+ {
+ Chunk *prev = br_open->GetPrevNnl();
+ newline_del_between(prev, br_open);
+ }
+ /* Below code is to support conversion of 2 liner to 4 liners
+ * else
+ * {
+ * Chunk *nxt = br_open->GetNext();
+ * newline_add_between(br_open, nxt);
+ * }*/
+ }
+ }
+ }
+ // fix 1247 oneliner function support - converts 4,3,2 liners to oneliner
+ log_rule_B("nl_create_func_def_one_liner");
+
+ if ( br_open->GetParentType() == CT_FUNC_DEF
+ && options::nl_create_func_def_one_liner()
+ && !br_open->TestFlags(PCF_NOT_POSSIBLE)) // Issue #2795
+ {
+ Chunk *br_close = br_open->GetClosingParen();
+ Chunk *tmp = br_open->GetPrevNcNnlNi(); // Issue #2279
+
+ if ( br_close->IsNotNullChunk() // Issue #2594
+ && ((br_close->GetOrigLine() - br_open->GetOrigLine()) <= 2)
+ && tmp->IsParenClose()) // need to check the conditions.
+ {
+ // Issue #1825
+ bool is_it_possible = true;
+
+ while ( tmp->IsNotNullChunk()
+ && (tmp = tmp->GetNext())->IsNotNullChunk()
+ && !tmp->IsBraceClose()
+ && (tmp->GetNext()->IsNotNullChunk()))
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): tmp orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
+
+ if (tmp->IsComment())
+ {
+ is_it_possible = false;
+ break;
+ }
+ }
+
+ if (is_it_possible)
+ {
+ // Issue 2795
+ // we have to check if it could be too long for code_width
+ // make a vector to save the chunk
+ vector<Chunk> saved_chunk;
+ log_rule_B("code_width");
+
+ if (options::code_width() > 0)
+ {
+ saved_chunk.reserve(16);
+ Chunk *current = br_open->GetPrevNcNnlNi();
+ Chunk *next_br_close = br_close->GetNext();
+ current = current->GetNext();
+
+ while (current->IsNotNullChunk())
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): zu kopieren: current orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, current->GetOrigLine(), current->GetOrigCol(), current->Text());
+ saved_chunk.push_back(*current);
+ Chunk *the_next = current->GetNext();
+
+ if ( the_next->IsNullChunk()
+ || the_next == next_br_close)
+ {
+ break;
+ }
+ current = the_next;
+ }
+ }
+ Chunk *tmp_1 = br_open->GetPrevNcNnlNi();
+
+ while ( tmp_1->IsNotNullChunk()
+ && (tmp_1 = tmp_1->GetNext())->IsNotNullChunk()
+ && !tmp_1->IsBraceClose()
+ && (tmp_1->GetNext()->IsNotNullChunk()))
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): tmp_1 orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, tmp_1->GetOrigLine(), tmp_1->GetOrigCol(), tmp_1->Text());
+
+ if (tmp_1->IsNewline())
+ {
+ tmp_1 = tmp_1->GetPrev(); // Issue #1825
+ newline_iarf_pair(tmp_1, tmp_1->GetNextNcNnl(), IARF_REMOVE);
+ }
+ }
+ br_open->SetFlagBits(PCF_ONE_LINER); // set the one liner flag if needed
+ br_close->SetFlagBits(PCF_ONE_LINER);
+ log_rule_B("code_width");
+
+ if ( options::code_width() > 0
+ && br_close->GetColumn() > options::code_width())
+ {
+ // the created line is too long
+ // it is not possible to make an one_liner
+ // because the line would be too long
+ br_open->SetFlagBits(PCF_NOT_POSSIBLE);
+ // restore the code
+ size_t count;
+ Chunk tmp_2;
+ Chunk *current = br_open;
+
+ for (count = 0; count < saved_chunk.size(); count++)
+ {
+ tmp_2 = saved_chunk.at(count);
+
+ if (tmp_2.GetOrigLine() != current->GetOrigLine())
+ {
+ // restore the newline
+ Chunk chunk;
+ chunk.SetType(CT_NEWLINE);
+ chunk.SetOrigLine(current->GetOrigLine());
+ chunk.SetOrigCol(current->GetOrigCol());
+ chunk.SetPpLevel(current->GetPpLevel());
+ chunk.SetNlCount(1);
+ chunk.CopyAndAddBefore(current);
+ LOG_FMT(LNEWLINE, "%s(%d): %zu:%zu add newline before '%s'\n",
+ __func__, __LINE__, current->GetOrigLine(), current->GetOrigCol(), current->Text());
+ }
+ else
+ {
+ current = current->GetNext();
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // Make sure we don't break a one-liner
+ if (!one_liner_nl_ok(br_open))
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): br_open orig line is %zu, orig col is %zu, a new line may NOT be added\n",
+ __func__, __LINE__, br_open->GetOrigLine(), br_open->GetOrigCol());
+ return;
+ }
+ LOG_FMT(LNL1LINE, "%s(%d): a new line may be added\n", __func__, __LINE__);
+
+ Chunk *next = br_open->GetNextNc();
+
+ // Insert a newline between the '=' and open brace, if needed
+ LOG_FMT(LNL1LINE, "%s(%d): br_open->Text() '%s', br_open->GetType() [%s], br_open->GetParentType() [%s]\n",
+ __func__, __LINE__, br_open->Text(), get_token_name(br_open->GetType()),
+ get_token_name(br_open->GetParentType()));
+
+ if (br_open->GetParentType() == CT_ASSIGN)
+ {
+ // Only mess with it if the open brace is followed by a newline
+ if (next->IsNewline())
+ {
+ Chunk *prev = br_open->GetPrevNcNnlNi(); // Issue #2279
+ log_rule_B("nl_assign_brace");
+ newline_iarf_pair(prev, br_open, options::nl_assign_brace());
+ }
+ }
+
+ if ( br_open->GetParentType() == CT_OC_MSG_DECL
+ || br_open->GetParentType() == CT_FUNC_DEF
+ || br_open->GetParentType() == CT_FUNC_CLASS_DEF
+ || br_open->GetParentType() == CT_OC_CLASS
+ || br_open->GetParentType() == CT_CS_PROPERTY
+ || br_open->GetParentType() == CT_CPP_LAMBDA
+ || br_open->GetParentType() == CT_FUNC_CALL
+ || br_open->GetParentType() == CT_FUNC_CALL_USER)
+ {
+ Chunk *prev = Chunk::NullChunkPtr;
+ iarf_e val;
+
+ if (br_open->GetParentType() == CT_OC_MSG_DECL)
+ {
+ log_rule_B("nl_oc_mdef_brace");
+ val = options::nl_oc_mdef_brace();
+ }
+ else
+ {
+ if ( br_open->GetParentType() == CT_FUNC_DEF
+ || br_open->GetParentType() == CT_FUNC_CLASS_DEF
+ || br_open->GetParentType() == CT_OC_CLASS)
+ {
+ val = IARF_NOT_DEFINED;
+ log_rule_B("nl_fdef_brace_cond");
+ const iarf_e nl_fdef_brace_cond_v = options::nl_fdef_brace_cond();
+
+ if (nl_fdef_brace_cond_v != IARF_IGNORE)
+ {
+ prev = br_open->GetPrevNcNnlNi(); // Issue #2279
+
+ if (prev->Is(CT_FPAREN_CLOSE))
+ {
+ val = nl_fdef_brace_cond_v;
+ }
+ }
+
+ if (val == IARF_NOT_DEFINED)
+ {
+ log_rule_B("nl_fdef_brace");
+ val = options::nl_fdef_brace();
+ }
+ }
+ else
+ {
+ log_rule_B("nl_property_brace");
+ log_rule_B("nl_cpp_ldef_brace");
+ log_rule_B("nl_fcall_brace");
+ val = ((br_open->GetParentType() == CT_CS_PROPERTY) ?
+ options::nl_property_brace() :
+ ((br_open->GetParentType() == CT_CPP_LAMBDA) ?
+ options::nl_cpp_ldef_brace() :
+ options::nl_fcall_brace()));
+ }
+ }
+
+ if (val != IARF_IGNORE)
+ {
+ if (prev->IsNullChunk())
+ {
+ // Grab the chunk before the open brace
+ prev = br_open->GetPrevNcNnlNi(); // Issue #2279
+ }
+ newline_iarf_pair(prev, br_open, val);
+ }
+ }
+
+ if (br_open->GetNextNnl()->Is(CT_BRACE_CLOSE))
+ {
+ // Chunk is "{" and "}" with only whitespace/newlines in between
+
+ if (br_open->GetParentType() == CT_FUNC_DEF)
+ {
+ // Braces belong to a function definition
+ log_rule_B("nl_collapse_empty_body_functions");
+
+ if (options::nl_collapse_empty_body_functions())
+ {
+ collapse_empty_body(br_open);
+ return;
+ }
+ }
+ else
+ {
+ log_rule_B("nl_collapse_empty_body");
+
+ if (options::nl_collapse_empty_body())
+ {
+ collapse_empty_body(br_open);
+ return;
+ }
+ }
+ }
+ //fixes #1245 will add new line between tsquare and brace open based on nl_tsquare_brace
+
+ if (br_open->Is(CT_BRACE_OPEN))
+ {
+ Chunk *chunk_closing_brace = br_open->GetClosingParen();
+
+ if (chunk_closing_brace->IsNotNullChunk())
+ {
+ if (chunk_closing_brace->GetOrigLine() > br_open->GetOrigLine())
+ {
+ Chunk *prev = br_open->GetPrevNc();
+
+ if ( prev->Is(CT_TSQUARE)
+ && next->IsNewline())
+ {
+ log_rule_B("nl_tsquare_brace");
+ newline_iarf_pair(prev, br_open, options::nl_tsquare_brace());
+ }
+ }
+ }
+ }
+ // Eat any extra newlines after the brace open
+ log_rule_B("eat_blanks_after_open_brace");
+
+ if (options::eat_blanks_after_open_brace())
+ {
+ if (next->IsNewline())
+ {
+ log_rule_B("nl_inside_empty_func");
+ log_rule_B("nl_inside_namespace");
+
+ if ( options::nl_inside_empty_func() > 0
+ && br_open->GetNextNnl()->Is(CT_BRACE_CLOSE)
+ && ( br_open->GetParentType() == CT_FUNC_CLASS_DEF
+ || br_open->GetParentType() == CT_FUNC_DEF))
+ {
+ blank_line_set(next, options::nl_inside_empty_func);
+ }
+ else if ( options::nl_inside_namespace() > 0
+ && br_open->GetParentType() == CT_NAMESPACE)
+ {
+ blank_line_set(next, options::nl_inside_namespace);
+ }
+ else if (next->GetNlCount() > 1)
+ {
+ next->SetNlCount(1);
+ LOG_FMT(LBLANKD, "%s(%d): eat_blanks_after_open_brace %zu\n",
+ __func__, __LINE__, next->GetOrigLine());
+ MARK_CHANGE();
+ }
+ }
+ }
+ bool nl_close_brace = false;
+
+ // Handle the cases where the brace is part of a function call or definition
+ if (is_func_call_or_def(br_open))
+ {
+ // Need to force a newline before the close brace, if not in a class body
+ if (!br_open->TestFlags(PCF_IN_CLASS))
+ {
+ nl_close_brace = true;
+ }
+ // handle newlines after the open brace
+ Chunk *pc = br_open->GetNextNcNnl();
+ newline_add_between(br_open, pc);
+ }
+ // Grab the matching brace close
+ Chunk *br_close = br_open->GetNextType(CT_BRACE_CLOSE, br_open->GetLevel());
+
+ if (br_close->IsNullChunk())
+ {
+ return;
+ }
+
+ if (!nl_close_brace)
+ {
+ /*
+ * If the open brace hits a CT_NEWLINE, CT_NL_CONT, CT_COMMENT_MULTI, or
+ * CT_COMMENT_CPP without hitting anything other than CT_COMMENT, then
+ * there should be a newline before the close brace.
+ */
+ Chunk *pc = br_open->GetNext();
+
+ while (pc->Is(CT_COMMENT))
+ {
+ pc = pc->GetNext();
+ }
+
+ if (pc->IsCommentOrNewline())
+ {
+ nl_close_brace = true;
+ }
+ }
+ Chunk *prev = br_close->GetPrevNcNnlNet();
+
+ if (nl_close_brace)
+ {
+ newline_add_between(prev, br_close);
+ }
+ else
+ {
+ newline_del_between(prev, br_close);
+ }
+} // newlines_brace_pair
+
+
+static void newline_case(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ // printf("%s case (%s) on line %d col %d\n",
+ // __func__, c_chunk_names[start->GetType()],
+ // start->GetOrigLine(), start->GetOrigCol());
+
+ // Scan backwards until a '{' or ';' or ':'. Abort if a multi-newline is found
+ Chunk *prev = start;
+
+ do
+ {
+ prev = prev->GetPrevNc();
+
+ if ( prev->IsNotNullChunk()
+ && prev->IsNewline()
+ && prev->GetNlCount() > 1)
+ {
+ return;
+ }
+ } while ( prev->IsNot(CT_BRACE_OPEN)
+ && prev->IsNot(CT_BRACE_CLOSE)
+ && prev->IsNot(CT_SEMICOLON)
+ && prev->IsNot(CT_CASE_COLON));
+
+ if (prev->IsNullChunk())
+ {
+ return;
+ }
+ Chunk *pc = newline_add_between(prev, start);
+
+ if (pc == nullptr)
+ {
+ return;
+ }
+
+ // Only add an extra line after a semicolon or brace close
+ if ( prev->Is(CT_SEMICOLON)
+ || prev->Is(CT_BRACE_CLOSE))
+ {
+ if ( pc->IsNewline()
+ && pc->GetNlCount() < 2)
+ {
+ double_newline(pc);
+ }
+ }
+} // newline_case
+
+
+static void newline_case_colon(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ // Scan forwards until a non-comment is found
+ Chunk *pc = start;
+
+ do
+ {
+ pc = pc->GetNext();
+ } while (pc->IsComment());
+
+ if ( pc->IsNotNullChunk()
+ && !pc->IsNewline())
+ {
+ newline_add_before(pc);
+ }
+} // newline_case_colon
+
+
+static void newline_before_return(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc = Chunk::NullChunkPtr;
+
+ if (start != nullptr)
+ {
+ pc = start->GetPrev();
+ }
+ Chunk *nl = pc;
+
+ // Skip over single preceding newline
+ if (pc->IsNewline())
+ {
+ // Do we already have a blank line?
+ if (nl->GetNlCount() > 1)
+ {
+ return;
+ }
+ pc = nl->GetPrev();
+ }
+
+ // Skip over preceding comments that are not a trailing comment, taking
+ // into account that comment blocks may span multiple lines.
+ // Trailing comments are considered part of the previous token, not the
+ // return statement. They are handled below.
+ while ( pc->IsComment()
+ && pc->GetParentType() != CT_COMMENT_END)
+ {
+ pc = pc->GetPrev();
+
+ if (!pc->IsNewline())
+ {
+ return;
+ }
+ nl = pc;
+ pc = pc->GetPrev();
+ }
+ pc = nl->GetPrev();
+
+ // Peek over trailing comment of previous token
+ if ( pc->IsComment()
+ && pc->GetParentType() == CT_COMMENT_END)
+ {
+ pc = pc->GetPrev();
+ }
+
+ // Don't add extra blanks after an opening brace or a case statement
+ if ( pc->IsNullChunk()
+ || ( pc->Is(CT_BRACE_OPEN)
+ || pc->Is(CT_VBRACE_OPEN)
+ || pc->Is(CT_CASE_COLON)))
+ {
+ return;
+ }
+
+ if ( nl->IsNewline()
+ && nl->GetNlCount() < 2)
+ {
+ nl->SetNlCount(nl->GetNlCount() + 1);
+ MARK_CHANGE();
+ LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, text is '%s', new line count is now %zu\n",
+ __func__, __LINE__, nl->GetOrigLine(), nl->GetOrigCol(), nl->Text(), nl->GetNlCount());
+ }
+} // newline_before_return
+
+
+static void newline_after_return(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *semi = start->GetNextType(CT_SEMICOLON, start->GetLevel());
+ Chunk *after = semi->GetNextNcNnlNet();
+
+ // If we hit a brace or an 'else', then a newline isn't needed
+ if ( after->IsNullChunk()
+ || after->IsBraceClose()
+ || after->Is(CT_ELSE))
+ {
+ return;
+ }
+ Chunk *pc;
+
+ for (pc = semi->GetNext(); pc != after; pc = pc->GetNext())
+ {
+ if (pc->Is(CT_NEWLINE))
+ {
+ if (pc->GetNlCount() < 2)
+ {
+ double_newline(pc);
+ }
+ return;
+ }
+ }
+} // newline_after_return
+
+
+static void newline_iarf_pair(Chunk *before, Chunk *after, iarf_e av, bool check_nl_assign_leave_one_liners)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LNEWLINE, "%s(%d): ", __func__, __LINE__);
+ log_func_stack(LNEWLINE, "CallStack:");
+
+ if ( before == nullptr
+ || before == Chunk::NullChunkPtr
+ || after == nullptr
+ || after == Chunk::NullChunkPtr
+ || after->Is(CT_IGNORED))
+ {
+ return;
+ }
+
+ if (av & IARF_ADD)
+ {
+ if ( check_nl_assign_leave_one_liners
+ && options::nl_assign_leave_one_liners()
+ && after->TestFlags(PCF_ONE_LINER))
+ {
+ log_rule_B("nl_assign_leave_one_liners");
+ return;
+ }
+ Chunk *nl = newline_add_between(before, after);
+ LOG_FMT(LNEWLINE, "%s(%d): newline_add_between '%s' and '%s'\n",
+ __func__, __LINE__, before->Text(), after->Text());
+
+ if ( nl != nullptr
+ && av == IARF_FORCE
+ && nl->GetNlCount() > 1)
+ {
+ nl->SetNlCount(1);
+ }
+ }
+ else if (av & IARF_REMOVE)
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): newline_remove_between '%s' and '%s'\n",
+ __func__, __LINE__, before->Text(), after->Text());
+ newline_del_between(before, after);
+ }
+} // newline_iarf_pair
+
+
+void newline_iarf(Chunk *pc, iarf_e av)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LNFD, "%s(%d): ", __func__, __LINE__);
+ log_func_stack(LNFD, "CallStack:");
+ Chunk *after = Chunk::NullChunkPtr;
+
+ if (pc != nullptr)
+ {
+ after = pc->GetNextNnl();
+ }
+
+ if ( (pc != nullptr && pc->Is(CT_FPAREN_OPEN)) // Issue #2914
+ && pc->GetParentType() == CT_FUNC_CALL
+ && after->Is(CT_COMMENT_CPP)
+ && options::donot_add_nl_before_cpp_comment())
+ {
+ return;
+ }
+ newline_iarf_pair(pc, after, av);
+} // newline_iarf
+
+
+static void newline_func_multi_line(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LNFD, "%s(%d): called on %zu:%zu '%s' [%s/%s]\n",
+ __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol(),
+ start->Text(), get_token_name(start->GetType()), get_token_name(start->GetParentType()));
+
+ bool add_start;
+ bool add_args;
+ bool add_end;
+
+ if ( start->GetParentType() == CT_FUNC_DEF
+ || start->GetParentType() == CT_FUNC_CLASS_DEF)
+ {
+ log_rule_B("nl_func_def_start_multi_line");
+ add_start = options::nl_func_def_start_multi_line();
+ log_rule_B("nl_func_def_args_multi_line");
+ add_args = options::nl_func_def_args_multi_line();
+ log_rule_B("nl_func_def_end_multi_line");
+ add_end = options::nl_func_def_end_multi_line();
+ }
+ else if ( start->GetParentType() == CT_FUNC_CALL
+ || start->GetParentType() == CT_FUNC_CALL_USER)
+ {
+ log_rule_B("nl_func_call_start_multi_line");
+ add_start = options::nl_func_call_start_multi_line();
+ log_rule_B("nl_func_call_args_multi_line");
+ add_args = options::nl_func_call_args_multi_line();
+ log_rule_B("nl_func_call_end_multi_line");
+ add_end = options::nl_func_call_end_multi_line();
+ }
+ else
+ {
+ log_rule_B("nl_func_decl_start_multi_line");
+ add_start = options::nl_func_decl_start_multi_line();
+ log_rule_B("nl_func_decl_args_multi_line");
+ add_args = options::nl_func_decl_args_multi_line();
+ log_rule_B("nl_func_decl_end_multi_line");
+ add_end = options::nl_func_decl_end_multi_line();
+ }
+
+ if ( !add_start
+ && !add_args
+ && !add_end)
+ {
+ return;
+ }
+ Chunk *pc = start->GetNextNcNnl();
+
+ while ( pc->IsNotNullChunk()
+ && pc->GetLevel() > start->GetLevel())
+ {
+ pc = pc->GetNextNcNnl();
+ }
+
+ if ( pc->Is(CT_FPAREN_CLOSE)
+ && start->IsNewlineBetween(pc))
+ {
+ Chunk *start_next = start->GetNextNcNnl();
+ bool has_leading_closure = ( start_next->GetParentType() == CT_OC_BLOCK_EXPR
+ || start_next->GetParentType() == CT_CPP_LAMBDA
+ || start_next->Is(CT_BRACE_OPEN));
+
+ Chunk *prev_end = pc->GetPrevNcNnl();
+ bool has_trailing_closure = ( prev_end->GetParentType() == CT_OC_BLOCK_EXPR
+ || prev_end->GetParentType() == CT_CPP_LAMBDA
+ || prev_end->Is(CT_BRACE_OPEN));
+
+ if ( add_start
+ && !start->GetNext()->IsNewline())
+ {
+ log_rule_B("nl_func_call_args_multi_line_ignore_closures");
+
+ if (options::nl_func_call_args_multi_line_ignore_closures())
+ {
+ if ( !has_leading_closure
+ && !has_trailing_closure)
+ {
+ newline_iarf(start, IARF_ADD);
+ }
+ }
+ else
+ {
+ newline_iarf(start, IARF_ADD);
+ }
+ }
+
+ if ( add_end
+ && !pc->GetPrev()->IsNewline())
+ {
+ log_rule_B("nl_func_call_args_multi_line_ignore_closures");
+
+ if (options::nl_func_call_args_multi_line_ignore_closures())
+ {
+ if ( !has_leading_closure
+ && !has_trailing_closure)
+ {
+ newline_iarf(pc->GetPrev(), IARF_ADD);
+ }
+ }
+ else
+ {
+ newline_iarf(pc->GetPrev(), IARF_ADD);
+ }
+ }
+
+ if (add_args)
+ {
+ // process the function in reverse and leave the first comma if the option to leave trailing closure
+ // is on. nl_func_call_args_multi_line_ignore_trailing_closure
+ for (pc = start->GetNextNcNnl();
+ pc->IsNotNullChunk() && pc->GetLevel() > start->GetLevel();
+ pc = pc->GetNextNcNnl())
+ {
+ if ( pc->Is(CT_COMMA)
+ && (pc->GetLevel() == (start->GetLevel() + 1)))
+ {
+ Chunk *tmp = pc->GetNext();
+
+ if (tmp->IsComment())
+ {
+ pc = tmp;
+ }
+
+ if (!pc->GetNext()->IsNewline())
+ {
+ log_rule_B("nl_func_call_args_multi_line_ignore_closures");
+
+ if (options::nl_func_call_args_multi_line_ignore_closures())
+ {
+ Chunk *prev_comma = pc->GetPrevNcNnl();
+ Chunk *after_comma = pc->GetNextNcNnl();
+
+ if (!( ( prev_comma->GetParentType() == CT_OC_BLOCK_EXPR
+ || prev_comma->GetParentType() == CT_CPP_LAMBDA
+ || prev_comma->Is(CT_BRACE_OPEN))
+ || ( after_comma->GetParentType() == CT_OC_BLOCK_EXPR
+ || after_comma->GetParentType() == CT_CPP_LAMBDA
+ || after_comma->Is(CT_BRACE_OPEN))))
+ {
+ newline_iarf(pc, IARF_ADD);
+ }
+ }
+ else
+ {
+ newline_iarf(pc, IARF_ADD);
+ }
+ }
+ }
+ }
+ }
+ }
+} // newline_func_multi_line
+
+
+static void newline_template(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LNFD, "%s(%d): called on %zu:%zu '%s' [%s/%s]\n",
+ __func__, __LINE__, start->GetOrigLine(), start->GetOrigCol(),
+ start->Text(), get_token_name(start->GetType()), get_token_name(start->GetParentType()));
+
+ log_rule_B("nl_template_start");
+ bool add_start = options::nl_template_start();
+
+ log_rule_B("nl_template_args");
+ bool add_args = options::nl_template_args();
+
+ log_rule_B("nl_template_end");
+ bool add_end = options::nl_template_end();
+
+ if ( !add_start
+ && !add_args
+ && !add_end)
+ {
+ return;
+ }
+ Chunk *pc = start->GetNextNcNnl();
+
+ while ( pc->IsNotNullChunk()
+ && pc->GetLevel() > start->GetLevel())
+ {
+ pc = pc->GetNextNcNnl();
+ }
+
+ if (pc->Is(CT_ANGLE_CLOSE))
+ {
+ if (add_start)
+ {
+ newline_iarf(start, IARF_ADD);
+ }
+
+ if (add_end)
+ {
+ newline_iarf(pc->GetPrev(), IARF_ADD);
+ }
+
+ if (add_args)
+ {
+ Chunk *pc_1;
+
+ for (pc_1 = start->GetNextNcNnl();
+ pc_1->IsNotNullChunk() && pc_1->GetLevel() > start->GetLevel();
+ pc_1 = pc_1->GetNextNcNnl())
+ {
+ if ( pc_1->Is(CT_COMMA)
+ && (pc_1->GetLevel() == (start->GetLevel() + 1)))
+ {
+ Chunk *tmp = pc_1->GetNext();
+
+ if (tmp->IsComment())
+ {
+ pc_1 = tmp;
+ }
+
+ if (!pc_1->GetNext()->IsNewline())
+ {
+ newline_iarf(pc_1, IARF_ADD);
+ }
+ }
+ }
+ }
+ }
+} // newline_template
+
+
+static void newline_func_def_or_call(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LNFD, "%s(%d): called on start->Text() is '%s', orig line is %zu, orig col is %zu, [%s/%s]\n",
+ __func__, __LINE__, start->Text(), start->GetOrigLine(), start->GetOrigCol(),
+ get_token_name(start->GetType()), get_token_name(start->GetParentType()));
+
+ bool is_def = (start->GetParentType() == CT_FUNC_DEF)
+ || start->GetParentType() == CT_FUNC_CLASS_DEF;
+ bool is_call = (start->GetParentType() == CT_FUNC_CALL)
+ || start->GetParentType() == CT_FUNC_CALL_USER;
+
+ LOG_FMT(LNFD, "%s(%d): is_def is %s, is_call is %s\n",
+ __func__, __LINE__, is_def ? "TRUE" : "FALSE", is_call ? "TRUE" : "FALSE");
+
+ if (is_call)
+ {
+ log_rule_B("nl_func_call_paren");
+ iarf_e atmp = options::nl_func_call_paren();
+
+ if (atmp != IARF_IGNORE)
+ {
+ Chunk *prev = start->GetPrevNcNnlNi(); // Issue #2279
+
+ if (prev->IsNotNullChunk())
+ {
+ newline_iarf(prev, atmp);
+ }
+ }
+ Chunk *pc = start->GetNextNcNnl();
+
+ if (pc->IsString(")"))
+ {
+ log_rule_B("nl_func_call_paren_empty");
+ atmp = options::nl_func_call_paren_empty();
+
+ if (atmp != IARF_IGNORE)
+ {
+ Chunk *prev = start->GetPrevNcNnlNi(); // Issue #2279
+
+ if (prev->IsNotNullChunk())
+ {
+ newline_iarf(prev, atmp);
+ }
+ }
+ log_rule_B("nl_func_call_empty");
+ atmp = options::nl_func_call_empty();
+
+ if (atmp != IARF_IGNORE)
+ {
+ newline_iarf(start, atmp);
+ }
+ return;
+ }
+ }
+ else
+ {
+ log_rule_B("nl_func_def_paren");
+ log_rule_B("nl_func_paren");
+ iarf_e atmp = is_def ? options::nl_func_def_paren()
+ : options::nl_func_paren();
+ LOG_FMT(LSPACE, "%s(%d): atmp is %s\n",
+ __func__, __LINE__,
+ (atmp == IARF_IGNORE) ? "IGNORE" :
+ (atmp == IARF_ADD) ? "ADD" :
+ (atmp == IARF_REMOVE) ? "REMOVE" : "FORCE");
+
+ if (atmp != IARF_IGNORE)
+ {
+ Chunk *prev = start->GetPrevNcNnlNi(); // Issue #2279
+
+ if (prev->IsNotNullChunk())
+ {
+ newline_iarf(prev, atmp);
+ }
+ }
+ // Handle break newlines type and function
+ Chunk *prev = start->GetPrevNcNnlNi(); // Issue #2279
+ prev = skip_template_prev(prev);
+ // Don't split up a function variable
+ prev = prev->IsParenClose() ? Chunk::NullChunkPtr : prev->GetPrevNcNnlNi(); // Issue #2279
+
+ log_rule_B("nl_func_class_scope");
+
+ if ( prev->Is(CT_DC_MEMBER)
+ && (options::nl_func_class_scope() != IARF_IGNORE))
+ {
+ newline_iarf(prev->GetPrevNcNnlNi(), options::nl_func_class_scope()); // Issue #2279
+ }
+
+ if (prev->IsNot(CT_ACCESS_COLON))
+ {
+ Chunk *tmp;
+
+ if (prev->Is(CT_OPERATOR))
+ {
+ tmp = prev;
+ prev = prev->GetPrevNcNnlNi(); // Issue #2279
+ }
+ else
+ {
+ tmp = start;
+ }
+
+ if (prev->Is(CT_DC_MEMBER))
+ {
+ log_rule_B("nl_func_scope_name");
+
+ if ( options::nl_func_scope_name() != IARF_IGNORE
+ && !start->TestFlags(PCF_IN_DECLTYPE))
+ {
+ newline_iarf(prev, options::nl_func_scope_name());
+ }
+ }
+ const Chunk *tmp_next = prev->GetNextNcNnl();
+
+ if (tmp_next->IsNot(CT_FUNC_CLASS_DEF))
+ {
+ Chunk *closing = tmp->GetClosingParen();
+ Chunk *brace = closing->GetNextNcNnl();
+ iarf_e a; // Issue #2561
+
+ if ( tmp->GetParentType() == CT_FUNC_PROTO
+ || tmp->GetParentType() == CT_FUNC_CLASS_PROTO)
+ {
+ // proto
+ log_rule_B("nl_func_proto_type_name");
+ a = options::nl_func_proto_type_name();
+ }
+ else
+ {
+ // def
+
+ log_rule_B("nl_func_leave_one_liners");
+
+ if ( options::nl_func_leave_one_liners()
+ && ( brace == nullptr
+ || brace->TestFlags(PCF_ONE_LINER))) // Issue #1511 and #3274
+ {
+ a = IARF_IGNORE;
+ }
+ else
+ {
+ log_rule_B("nl_func_type_name");
+ a = options::nl_func_type_name();
+ }
+ }
+ log_rule_B("nl_func_type_name_class");
+
+ if ( tmp->TestFlags(PCF_IN_CLASS)
+ && (options::nl_func_type_name_class() != IARF_IGNORE))
+ {
+ a = options::nl_func_type_name_class();
+ }
+
+ if ( (a != IARF_IGNORE)
+ && prev->IsNotNullChunk())
+ {
+ LOG_FMT(LNFD, "%s(%d): prev->Text() '%s', orig line is %zu, orig col is %zu, [%s/%s]\n",
+ __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol(),
+ get_token_name(prev->GetType()),
+ get_token_name(prev->GetParentType()));
+
+ if (prev->Is(CT_DESTRUCTOR))
+ {
+ prev = prev->GetPrevNcNnlNi(); // Issue #2279
+ }
+
+ /*
+ * If we are on a '::', step back two tokens
+ * TODO: do we also need to check for '.' ?
+ */
+ while (prev->Is(CT_DC_MEMBER))
+ {
+ prev = prev->GetPrevNcNnlNi(); // Issue #2279
+ prev = skip_template_prev(prev);
+ prev = prev->GetPrevNcNnlNi(); // Issue #2279
+ }
+
+ if ( !prev->IsBraceClose()
+ && prev->IsNot(CT_BRACE_OPEN)
+ && prev->IsNot(CT_SEMICOLON)
+ && prev->IsNot(CT_ACCESS_COLON)
+ // #1008: if we landed on an operator check that it is having
+ // a type before it, in order to not apply nl_func_type_name
+ // on conversion operators as they don't have a normal
+ // return type syntax
+ && (tmp_next->IsNot(CT_OPERATOR) ? true : prev->IsTypeDefinition()))
+ {
+ newline_iarf(prev, a);
+ }
+ }
+ }
+ }
+ Chunk *pc = start->GetNextNcNnl();
+
+ if (pc->IsString(")"))
+ {
+ log_rule_B("nl_func_def_empty");
+ log_rule_B("nl_func_decl_empty");
+ atmp = is_def ? options::nl_func_def_empty()
+ : options::nl_func_decl_empty();
+
+ if (atmp != IARF_IGNORE)
+ {
+ newline_iarf(start, atmp);
+ }
+ log_rule_B("nl_func_def_paren_empty");
+ log_rule_B("nl_func_paren_empty");
+ atmp = is_def ? options::nl_func_def_paren_empty()
+ : options::nl_func_paren_empty();
+
+ if (atmp != IARF_IGNORE)
+ {
+ prev = start->GetPrevNcNnlNi(); // Issue #2279
+
+ if (prev->IsNotNullChunk())
+ {
+ newline_iarf(prev, atmp);
+ }
+ }
+ return;
+ }
+ }
+ // Now scan for commas
+ size_t comma_count = 0;
+ Chunk *tmp;
+ Chunk *pc;
+
+ for (pc = start->GetNextNcNnl();
+ pc->IsNotNullChunk() && pc->GetLevel() > start->GetLevel();
+ pc = pc->GetNextNcNnl())
+ {
+ if ( pc->Is(CT_COMMA)
+ && (pc->GetLevel() == (start->GetLevel() + 1)))
+ {
+ comma_count++;
+ tmp = pc->GetNext();
+
+ if (tmp->IsComment())
+ {
+ pc = tmp;
+ }
+
+ if (is_def)
+ {
+ log_rule_B("nl_func_def_args");
+ newline_iarf(pc, options::nl_func_def_args());
+ }
+ else if (is_call)
+ {
+ // Issue #2604
+ log_rule_B("nl_func_call_args");
+ newline_iarf(pc, options::nl_func_call_args());
+ }
+ else // start->GetParentType() == CT_FUNC_DECL
+ {
+ log_rule_B("nl_func_decl_args");
+ newline_iarf(pc, options::nl_func_decl_args());
+ }
+ }
+ }
+
+ log_rule_B("nl_func_def_start");
+ log_rule_B("nl_func_decl_start");
+ iarf_e as = is_def ? options::nl_func_def_start() : options::nl_func_decl_start();
+
+ log_rule_B("nl_func_def_end");
+ log_rule_B("nl_func_decl_end");
+ iarf_e ae = is_def ? options::nl_func_def_end() : options::nl_func_decl_end();
+
+ if (comma_count == 0)
+ {
+ iarf_e atmp;
+ log_rule_B("nl_func_def_start_single");
+ log_rule_B("nl_func_decl_start_single");
+ atmp = is_def ? options::nl_func_def_start_single() :
+ options::nl_func_decl_start_single();
+
+ if (atmp != IARF_IGNORE)
+ {
+ as = atmp;
+ }
+ log_rule_B("nl_func_def_end_single");
+ log_rule_B("nl_func_decl_end_single");
+ atmp = is_def ? options::nl_func_def_end_single() :
+ options::nl_func_decl_end_single();
+
+ if (atmp != IARF_IGNORE)
+ {
+ ae = atmp;
+ }
+ }
+
+ if (!is_call)
+ {
+ newline_iarf(start, as);
+ }
+
+ // and fix up the close parenthesis
+ if (pc->Is(CT_FPAREN_CLOSE))
+ {
+ Chunk *prev = pc->GetPrevNnl();
+
+ if ( prev->IsNot(CT_FPAREN_OPEN)
+ && !is_call)
+ {
+ newline_iarf(prev, ae);
+ }
+ newline_func_multi_line(start);
+ }
+} // newline_func_def_or_call
+
+
+static void newline_oc_msg(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *sq_c = start->GetClosingParen();
+
+ if (sq_c->IsNullChunk())
+ {
+ return;
+ }
+ log_rule_B("nl_oc_msg_leave_one_liner");
+
+ if (options::nl_oc_msg_leave_one_liner())
+ {
+ return;
+ }
+ bool should_nl_msg = false;
+
+ // Get count of parameters
+ size_t parameter_count = 0;
+
+ for (Chunk *pc = start->GetNextNcNnl(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ if (pc->GetLevel() <= start->GetLevel())
+ {
+ break;
+ }
+
+ if (pc->Is(CT_OC_COLON) && pc->GetLevel() - 1 == start->GetLevel())
+ {
+ parameter_count++;
+ }
+ }
+
+ size_t min_params = options::nl_oc_msg_args_min_params();
+
+ if ( parameter_count >= min_params
+ && min_params != 0)
+ {
+ should_nl_msg = true;
+ }
+ // Get length of longest line
+ size_t longest_line = 0;
+
+ for (Chunk *pc = start->GetNextNcNnl(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ if (pc->GetLevel() <= start->GetLevel())
+ {
+ break;
+ }
+
+ if (pc->GetOrigColEnd() > longest_line)
+ {
+ longest_line = pc->GetOrigColEnd();
+ }
+ }
+
+ size_t max_code_width = options::nl_oc_msg_args_max_code_width();
+
+ if ( longest_line > max_code_width
+ && max_code_width != 0)
+ {
+ should_nl_msg = true;
+ }
+
+ // If both nl_oc_msg_args_min_params and nl_oc_msg_args_max_code_width are disabled
+ // we should newline all messages.
+ if ( max_code_width == 0
+ && min_params == 0)
+ {
+ should_nl_msg = true;
+ }
+
+ if (!should_nl_msg)
+ {
+ return;
+ }
+
+ for (Chunk *pc = start->GetNextNcNnl(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ if (pc->GetLevel() <= start->GetLevel())
+ {
+ break;
+ }
+
+ if (pc->Is(CT_OC_MSG_NAME) && pc->GetLevel() - 1 == start->GetLevel())
+ {
+ newline_add_before(pc);
+ }
+ }
+} // newline_oc_msg
+
+
+static bool one_liner_nl_ok(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LNL1LINE, "%s(%d): check type is %s, parent is %s, flag is %s, orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, get_token_name(pc->GetType()), get_token_name(pc->GetParentType()),
+ pcf_flags_str(pc->GetFlags()).c_str(), pc->GetOrigLine(), pc->GetOrigCol());
+
+ if (!pc->TestFlags(PCF_ONE_LINER))
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): true (not 1-liner), a new line may be added\n", __func__, __LINE__);
+ return(true);
+ }
+ // Step back to find the opening brace
+ Chunk *br_open = pc;
+
+ if (br_open->IsBraceClose())
+ {
+ br_open = br_open->GetPrevType(br_open->Is(CT_BRACE_CLOSE) ? CT_BRACE_OPEN : CT_VBRACE_OPEN,
+ br_open->GetLevel(), E_Scope::ALL);
+ }
+ else
+ {
+ while ( br_open->IsNotNullChunk()
+ && br_open->TestFlags(PCF_ONE_LINER)
+ && !br_open->IsBraceOpen()
+ && !br_open->IsBraceClose())
+ {
+ br_open = br_open->GetPrev();
+ }
+ }
+ pc = br_open;
+
+ if ( pc->IsNotNullChunk()
+ && pc->TestFlags(PCF_ONE_LINER)
+ && ( pc->IsBraceOpen()
+ || pc->IsBraceClose()))
+ {
+ log_rule_B("nl_class_leave_one_liners");
+
+ if ( options::nl_class_leave_one_liners()
+ && pc->TestFlags(PCF_IN_CLASS))
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): false (class)\n", __func__, __LINE__);
+ return(false);
+ }
+ log_rule_B("nl_assign_leave_one_liners");
+
+ if ( options::nl_assign_leave_one_liners()
+ && pc->GetParentType() == CT_ASSIGN)
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): false (assign)\n", __func__, __LINE__);
+ return(false);
+ }
+ log_rule_B("nl_enum_leave_one_liners");
+
+ if ( options::nl_enum_leave_one_liners()
+ && pc->GetParentType() == CT_ENUM)
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): false (enum)\n", __func__, __LINE__);
+ return(false);
+ }
+ log_rule_B("nl_getset_leave_one_liners");
+
+ if ( options::nl_getset_leave_one_liners()
+ && pc->GetParentType() == CT_GETSET)
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): false (get/set), a new line may NOT be added\n", __func__, __LINE__);
+ return(false);
+ }
+ // Issue #UT-98
+ log_rule_B("nl_cs_property_leave_one_liners");
+
+ if ( options::nl_cs_property_leave_one_liners()
+ && pc->GetParentType() == CT_CS_PROPERTY)
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): false (c# property), a new line may NOT be added\n", __func__, __LINE__);
+ return(false);
+ }
+ log_rule_B("nl_func_leave_one_liners");
+
+ if ( options::nl_func_leave_one_liners()
+ && ( pc->GetParentType() == CT_FUNC_DEF
+ || pc->GetParentType() == CT_FUNC_CLASS_DEF))
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): false (func def)\n", __func__, __LINE__);
+ return(false);
+ }
+ log_rule_B("nl_func_leave_one_liners");
+
+ if ( options::nl_func_leave_one_liners()
+ && pc->GetParentType() == CT_OC_MSG_DECL)
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): false (method def)\n", __func__, __LINE__);
+ return(false);
+ }
+ log_rule_B("nl_cpp_lambda_leave_one_liners");
+
+ if ( options::nl_cpp_lambda_leave_one_liners()
+ && ((pc->GetParentType() == CT_CPP_LAMBDA)))
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): false (lambda)\n", __func__, __LINE__);
+ return(false);
+ }
+ log_rule_B("nl_oc_msg_leave_one_liner");
+
+ if ( options::nl_oc_msg_leave_one_liner()
+ && pc->TestFlags(PCF_IN_OC_MSG))
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): false (message)\n", __func__, __LINE__);
+ return(false);
+ }
+ log_rule_B("nl_if_leave_one_liners");
+
+ if ( options::nl_if_leave_one_liners()
+ && ( pc->GetParentType() == CT_IF
+ || pc->GetParentType() == CT_ELSEIF
+ || pc->GetParentType() == CT_ELSE))
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): false (if/else)\n", __func__, __LINE__);
+ return(false);
+ }
+ log_rule_B("nl_while_leave_one_liners");
+
+ if ( options::nl_while_leave_one_liners()
+ && pc->GetParentType() == CT_WHILE)
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): false (while)\n", __func__, __LINE__);
+ return(false);
+ }
+ log_rule_B("nl_do_leave_one_liners");
+
+ if ( options::nl_do_leave_one_liners()
+ && pc->GetParentType() == CT_DO)
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): false (do)\n", __func__, __LINE__);
+ return(false);
+ }
+ log_rule_B("nl_for_leave_one_liners");
+
+ if ( options::nl_for_leave_one_liners()
+ && pc->GetParentType() == CT_FOR)
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): false (for)\n", __func__, __LINE__);
+ return(false);
+ }
+ log_rule_B("nl_namespace_two_to_one_liner - 2");
+
+ if ( options::nl_namespace_two_to_one_liner()
+ && pc->GetParentType() == CT_NAMESPACE)
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): false (namespace)\n", __func__, __LINE__);
+ return(false);
+ }
+ }
+ LOG_FMT(LNL1LINE, "%s(%d): true, a new line may be added\n", __func__, __LINE__);
+ return(true);
+} // one_liner_nl_ok
+
+
+void undo_one_liner(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ if ( pc != nullptr
+ && pc->TestFlags(PCF_ONE_LINER))
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): pc->Text() '%s', orig line is %zu, orig col is %zu",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+ pc->ResetFlagBits(PCF_ONE_LINER);
+
+ // scan backward
+ LOG_FMT(LNL1LINE, "%s(%d): scan backward\n", __func__, __LINE__);
+ Chunk *tmp = pc;
+
+ while ((tmp = tmp->GetPrev())->IsNotNullChunk())
+ {
+ if (!tmp->TestFlags(PCF_ONE_LINER))
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): tmp->Text() '%s', orig line is %zu, orig col is %zu, --> break\n",
+ __func__, __LINE__, tmp->Text(), tmp->GetOrigLine(), tmp->GetOrigCol());
+ break;
+ }
+ LOG_FMT(LNL1LINE, "%s(%d): clear for tmp->Text() '%s', orig line is %zu, orig col is %zu",
+ __func__, __LINE__, tmp->Text(), tmp->GetOrigLine(), tmp->GetOrigCol());
+ tmp->ResetFlagBits(PCF_ONE_LINER);
+ }
+ // scan forward
+ LOG_FMT(LNL1LINE, "%s(%d): scan forward\n", __func__, __LINE__);
+ tmp = pc;
+ LOG_FMT(LNL1LINE, "%s(%d): - \n", __func__, __LINE__);
+
+ while ((tmp = tmp->GetNext())->IsNotNullChunk())
+ {
+ if (!tmp->TestFlags(PCF_ONE_LINER))
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): tmp->Text() '%s', orig line is %zu, orig col is %zu, --> break\n",
+ __func__, __LINE__, tmp->Text(), tmp->GetOrigLine(), tmp->GetOrigCol());
+ break;
+ }
+ LOG_FMT(LNL1LINE, "%s(%d): clear for tmp->Text() '%s', orig line is %zu, orig col is %zu",
+ __func__, __LINE__, tmp->Text(), tmp->GetOrigLine(), tmp->GetOrigCol());
+ tmp->ResetFlagBits(PCF_ONE_LINER);
+ }
+ LOG_FMT(LNL1LINE, "\n");
+ }
+} // undo_one_liner
+
+
+static void nl_create_one_liner(Chunk *vbrace_open)
+{
+ LOG_FUNC_ENTRY();
+
+ // See if we get a newline between the next text and the vbrace_close
+ Chunk *tmp = vbrace_open->GetNextNcNnl();
+ Chunk *first = tmp;
+
+ if ( first->IsNullChunk()
+ || get_token_pattern_class(first->GetType()) != pattern_class_e::NONE)
+ {
+ return;
+ }
+ size_t nl_total = 0;
+
+ while (tmp->IsNot(CT_VBRACE_CLOSE))
+ {
+ if (tmp->IsNewline())
+ {
+ nl_total += tmp->GetNlCount();
+
+ if (nl_total > 1)
+ {
+ return;
+ }
+ }
+ tmp = tmp->GetNext();
+ }
+
+ if ( tmp->IsNotNullChunk()
+ && first->IsNotNullChunk())
+ {
+ newline_del_between(vbrace_open, first);
+ }
+} // nl_create_one_liner
+
+
+static void nl_create_list_liner(Chunk *brace_open)
+{
+ LOG_FUNC_ENTRY();
+
+ // See if we get a newline between the next text and the vbrace_close
+ if (brace_open == nullptr)
+ {
+ return;
+ }
+ Chunk *closing = brace_open->GetNextType(CT_BRACE_CLOSE, brace_open->GetLevel());
+ Chunk *tmp = brace_open;
+
+ do
+ {
+ if (tmp->Is(CT_COMMA))
+ {
+ return;
+ }
+ tmp = tmp->GetNext();
+ } while (tmp != closing);
+
+ newline_del_between(brace_open, closing);
+} // nl_create_list_liner
+
+
+void newlines_remove_newlines()
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LBLANK, "%s(%d):\n", __func__, __LINE__);
+ Chunk *pc = Chunk::GetHead();
+
+ if (!pc->IsNewline())
+ {
+ pc = pc->GetNextNl();
+ }
+ Chunk *next;
+ Chunk *prev;
+
+ while (pc->IsNotNullChunk())
+ {
+ // Remove all newlines not in preproc
+ if (!pc->TestFlags(PCF_IN_PREPROC))
+ {
+ next = pc->GetNext();
+ prev = pc->GetPrev();
+ newline_iarf(pc, IARF_REMOVE);
+
+ if (next == Chunk::GetHead())
+ {
+ pc = next;
+ continue;
+ }
+ else if ( prev->IsNotNullChunk()
+ && !prev->GetNext()->IsNewline())
+ {
+ pc = prev;
+ }
+ }
+ pc = pc->GetNextNl();
+ }
+} // newlines_remove_newlines
+
+
+void newlines_remove_disallowed()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc = Chunk::GetHead();
+ Chunk *next;
+
+ while ((pc = pc->GetNextNl())->IsNotNullChunk())
+ {
+ LOG_FMT(LBLANKD, "%s(%d): orig line is %zu, orig col is %zu, <Newline>, nl is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetNlCount());
+
+ next = pc->GetNext();
+
+ if ( next->IsNotNullChunk()
+ && !next->Is(CT_NEWLINE)
+ && !can_increase_nl(pc))
+ {
+ LOG_FMT(LBLANKD, "%s(%d): force to 1 orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+
+ if (pc->GetNlCount() != 1)
+ {
+ pc->SetNlCount(1);
+ MARK_CHANGE();
+ }
+ }
+ }
+} // newlines_remove_disallowed
+
+
+void newlines_cleanup_angles()
+{
+ // Issue #1167
+ LOG_FUNC_ENTRY();
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ char copy[1000];
+ LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy));
+
+ if (pc->Is(CT_ANGLE_OPEN))
+ {
+ newline_template(pc);
+ }
+ }
+} // newlines_cleanup_angles
+
+
+void newlines_cleanup_braces(bool first)
+{
+ LOG_FUNC_ENTRY();
+ dump_step(dump_file_name, "new 2");
+
+ // Get the first token that's not an empty line:
+ Chunk *pc = Chunk::GetHead();
+
+ if (pc->IsNewline())
+ {
+ pc = pc->GetNextNcNnl();
+ }
+
+ for ( ; pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ char copy[1000];
+ LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy));
+
+ if ( pc->Is(CT_IF)
+ || pc->Is(CT_CONSTEXPR))
+ {
+ log_rule_B("nl_if_brace");
+ newlines_if_for_while_switch(pc, options::nl_if_brace());
+ }
+ else if (pc->Is(CT_ELSEIF))
+ {
+ log_rule_B("nl_elseif_brace");
+ iarf_e arg = options::nl_elseif_brace();
+ log_rule_B("nl_if_brace");
+ newlines_if_for_while_switch(
+ pc, (arg != IARF_IGNORE) ? arg : options::nl_if_brace());
+ }
+ else if (pc->Is(CT_FOR))
+ {
+ log_rule_B("nl_for_brace");
+ newlines_if_for_while_switch(pc, options::nl_for_brace());
+ }
+ else if (pc->Is(CT_CATCH))
+ {
+ log_rule_B("nl_oc_brace_catch");
+
+ if ( language_is_set(LANG_OC)
+ && (pc->GetStr()[0] == '@')
+ && (options::nl_oc_brace_catch() != IARF_IGNORE))
+ {
+ newlines_cuddle_uncuddle(pc, options::nl_oc_brace_catch());
+ }
+ else
+ {
+ log_rule_B("nl_brace_catch");
+ newlines_cuddle_uncuddle(pc, options::nl_brace_catch());
+ }
+ Chunk *next = pc->GetNextNcNnl();
+
+ if (next->Is(CT_BRACE_OPEN))
+ {
+ log_rule_B("nl_oc_catch_brace");
+
+ if ( language_is_set(LANG_OC)
+ && (options::nl_oc_catch_brace() != IARF_IGNORE))
+ {
+ log_rule_B("nl_oc_catch_brace");
+ newlines_do_else(pc, options::nl_oc_catch_brace());
+ }
+ else
+ {
+ log_rule_B("nl_catch_brace");
+ newlines_do_else(pc, options::nl_catch_brace());
+ }
+ }
+ else
+ {
+ log_rule_B("nl_oc_catch_brace");
+
+ if ( language_is_set(LANG_OC)
+ && (options::nl_oc_catch_brace() != IARF_IGNORE))
+ {
+ newlines_if_for_while_switch(pc, options::nl_oc_catch_brace());
+ }
+ else
+ {
+ log_rule_B("nl_catch_brace");
+ newlines_if_for_while_switch(pc, options::nl_catch_brace());
+ }
+ }
+ }
+ else if (pc->Is(CT_WHILE))
+ {
+ log_rule_B("nl_while_brace");
+ newlines_if_for_while_switch(pc, options::nl_while_brace());
+ }
+ else if (pc->Is(CT_USING_STMT))
+ {
+ log_rule_B("nl_using_brace");
+ newlines_if_for_while_switch(pc, options::nl_using_brace());
+ }
+ else if (pc->Is(CT_D_SCOPE_IF))
+ {
+ log_rule_B("nl_scope_brace");
+ newlines_if_for_while_switch(pc, options::nl_scope_brace());
+ }
+ else if (pc->Is(CT_UNITTEST))
+ {
+ log_rule_B("nl_unittest_brace");
+ newlines_do_else(pc, options::nl_unittest_brace());
+ }
+ else if (pc->Is(CT_D_VERSION_IF))
+ {
+ log_rule_B("nl_version_brace");
+ newlines_if_for_while_switch(pc, options::nl_version_brace());
+ }
+ else if (pc->Is(CT_SWITCH))
+ {
+ log_rule_B("nl_switch_brace");
+ newlines_if_for_while_switch(pc, options::nl_switch_brace());
+ }
+ else if (pc->Is(CT_SYNCHRONIZED))
+ {
+ log_rule_B("nl_synchronized_brace");
+ newlines_if_for_while_switch(pc, options::nl_synchronized_brace());
+ }
+ else if (pc->Is(CT_DO))
+ {
+ log_rule_B("nl_do_brace");
+ newlines_do_else(pc, options::nl_do_brace());
+ }
+ else if (pc->Is(CT_ELSE))
+ {
+ log_rule_B("nl_brace_else");
+ newlines_cuddle_uncuddle(pc, options::nl_brace_else());
+ Chunk *next = pc->GetNextNcNnl();
+
+ if (next->Is(CT_ELSEIF))
+ {
+ log_rule_B("nl_else_if");
+ newline_iarf_pair(pc, next, options::nl_else_if());
+ }
+ log_rule_B("nl_else_brace");
+ newlines_do_else(pc, options::nl_else_brace());
+ }
+ else if (pc->Is(CT_TRY))
+ {
+ log_rule_B("nl_try_brace");
+ newlines_do_else(pc, options::nl_try_brace());
+ // Issue #1734
+ Chunk *po = pc->GetNextNcNnl();
+ flag_parens(po, PCF_IN_TRY_BLOCK, po->GetType(), CT_NONE, false);
+ }
+ else if (pc->Is(CT_GETSET))
+ {
+ log_rule_B("nl_getset_brace");
+ newlines_do_else(pc, options::nl_getset_brace());
+ }
+ else if (pc->Is(CT_FINALLY))
+ {
+ log_rule_B("nl_brace_finally");
+ newlines_cuddle_uncuddle(pc, options::nl_brace_finally());
+ log_rule_B("nl_finally_brace");
+ newlines_do_else(pc, options::nl_finally_brace());
+ }
+ else if (pc->Is(CT_WHILE_OF_DO))
+ {
+ log_rule_B("nl_brace_while");
+ newlines_cuddle_uncuddle(pc, options::nl_brace_while());
+ }
+ else if (pc->Is(CT_BRACE_OPEN))
+ {
+ switch (pc->GetParentType())
+ {
+ case CT_DOUBLE_BRACE:
+ {
+ log_rule_B("nl_paren_dbrace_open");
+
+ if (options::nl_paren_dbrace_open() != IARF_IGNORE)
+ {
+ Chunk *prev = pc->GetPrevNcNnlNi(E_Scope::PREPROC); // Issue #2279
+
+ if (prev->IsParenClose())
+ {
+ log_rule_B("nl_paren_dbrace_open");
+ newline_iarf_pair(prev, pc, options::nl_paren_dbrace_open());
+ }
+ }
+ break;
+ }
+
+ case CT_ENUM:
+ {
+ log_rule_B("nl_enum_own_lines");
+
+ if (options::nl_enum_own_lines() != IARF_IGNORE)
+ {
+ newlines_enum_entries(pc, options::nl_enum_own_lines());
+ }
+ log_rule_B("nl_ds_struct_enum_cmt");
+
+ if (options::nl_ds_struct_enum_cmt())
+ {
+ newlines_double_space_struct_enum_union(pc);
+ }
+ break;
+ }
+
+ case CT_STRUCT:
+ case CT_UNION:
+ {
+ log_rule_B("nl_ds_struct_enum_cmt");
+
+ if (options::nl_ds_struct_enum_cmt())
+ {
+ newlines_double_space_struct_enum_union(pc);
+ }
+ break;
+ }
+
+ case CT_CLASS:
+ {
+ if (pc->GetLevel() == pc->GetBraceLevel())
+ {
+ log_rule_B("nl_class_brace");
+ log_ruleNL("nl_class_brace", pc->GetPrevNnl());
+ newlines_do_else(pc->GetPrevNnl(), options::nl_class_brace());
+ }
+ break;
+ }
+
+ case CT_OC_CLASS:
+ {
+ if (pc->GetLevel() == pc->GetBraceLevel())
+ {
+ // Request #126
+ // introduce two new options
+ // look back if we have a @interface or a @implementation
+ for (Chunk *tmp = pc->GetPrev(); tmp->IsNotNullChunk(); tmp = tmp->GetPrev())
+ {
+ LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
+
+ if ( tmp->Is(CT_OC_INTF)
+ || tmp->Is(CT_OC_IMPL))
+ {
+ LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, may be remove/force newline before {\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+
+ if (tmp->Is(CT_OC_INTF))
+ {
+ log_rule_B("nl_oc_interface_brace");
+ newlines_do_else(pc->GetPrevNnl(), options::nl_oc_interface_brace());
+ }
+ else
+ {
+ log_rule_B("nl_oc_implementation_brace");
+ newlines_do_else(pc->GetPrevNnl(), options::nl_oc_implementation_brace());
+ }
+ break;
+ }
+ }
+ }
+ break;
+ }
+
+ case CT_BRACED_INIT_LIST:
+ {
+ // Issue #1052
+ log_rule_B("nl_create_list_one_liner");
+
+ if (options::nl_create_list_one_liner())
+ {
+ nl_create_list_liner(pc);
+ break;
+ }
+ Chunk *prev = pc->GetPrevNnl();
+
+ if ( prev->IsNotNullChunk()
+ && ( prev->GetType() == CT_TYPE
+ || prev->GetType() == CT_WORD
+ || prev->GetType() == CT_ASSIGN // Issue #2957
+ || prev->GetParentType() == CT_TEMPLATE
+ || prev->GetParentType() == CT_DECLTYPE))
+ {
+ log_rule_B("nl_type_brace_init_lst");
+ newline_iarf_pair(prev, pc, options::nl_type_brace_init_lst(), true);
+ }
+ break;
+ }
+
+ case CT_OC_BLOCK_EXPR:
+ {
+ // issue # 477
+ log_rule_B("nl_oc_block_brace");
+ newline_iarf_pair(pc->GetPrev(), pc, options::nl_oc_block_brace());
+ break;
+ }
+
+ case CT_FUNC_CLASS_DEF: // Issue #2343
+ {
+ if (!one_liner_nl_ok(pc))
+ {
+ LOG_FMT(LNL1LINE, "a new line may NOT be added\n");
+ // no change - preserve one liner body
+ }
+ else
+ {
+ log_rule_B("nl_before_opening_brace_func_class_def");
+
+ if (options::nl_before_opening_brace_func_class_def() != IARF_IGNORE)
+ {
+ newline_iarf_pair(pc->GetPrev(), pc, options::nl_before_opening_brace_func_class_def());
+ }
+ }
+ }
+
+ default:
+ {
+ break;
+ }
+ } // switch
+
+ log_rule_B("nl_brace_brace");
+
+ if (options::nl_brace_brace() != IARF_IGNORE)
+ {
+ Chunk *next = pc->GetNextNc(E_Scope::PREPROC);
+
+ if (next->Is(CT_BRACE_OPEN))
+ {
+ newline_iarf_pair(pc, next, options::nl_brace_brace());
+ }
+ }
+ Chunk *next = pc->GetNextNnl();
+
+ if (next->IsNullChunk())
+ {
+ // do nothing
+ }
+ else if (next->Is(CT_BRACE_CLOSE))
+ {
+ // TODO: add an option to split open empty statements? { };
+ }
+ else if (next->Is(CT_BRACE_OPEN))
+ {
+ // already handled
+ }
+ else
+ {
+ next = pc->GetNextNcNnl();
+
+ // Handle unnamed temporary direct-list-initialization
+ if (pc->GetParentType() == CT_BRACED_INIT_LIST)
+ {
+ log_rule_B("nl_type_brace_init_lst_open");
+ newline_iarf_pair(pc, pc->GetNextNnl(),
+ options::nl_type_brace_init_lst_open(), true);
+ }
+ // Handle nl_after_brace_open
+ else if ( ( pc->GetParentType() == CT_CPP_LAMBDA
+ || pc->GetLevel() == pc->GetBraceLevel())
+ && options::nl_after_brace_open())
+ {
+ log_rule_B("nl_after_brace_open");
+
+ if (!one_liner_nl_ok(pc))
+ {
+ LOG_FMT(LNL1LINE, "a new line may NOT be added (nl_after_brace_open)\n");
+ // no change - preserve one liner body
+ }
+ else if ( pc->TestFlags(PCF_IN_PREPROC)
+ || ( pc->TestFlags(PCF_ONE_LINER)
+ && pc->TestFlags(PCF_IN_ARRAY_ASSIGN)
+ && options::nl_assign_leave_one_liners()))
+ {
+ // no change - don't break up preprocessors
+ }
+ else
+ {
+ // Step back from next to the first non-newline item
+ Chunk *tmp = next->GetPrev();
+
+ while (tmp != pc)
+ {
+ if (tmp->IsComment())
+ {
+ log_rule_B("nl_after_brace_open_cmt");
+
+ if ( !options::nl_after_brace_open_cmt()
+ && tmp->IsNot(CT_COMMENT_MULTI))
+ {
+ break;
+ }
+ }
+ tmp = tmp->GetPrev();
+ }
+ // Add the newline
+ newline_iarf(tmp, IARF_ADD);
+ }
+ }
+ }
+ // braced-init-list is more like a function call with arguments,
+ // than curly braces that determine a structure of a source code,
+ // so, don't add a newline before a closing brace. Issue #1405.
+ log_rule_B("nl_type_brace_init_lst_open");
+ log_rule_B("nl_type_brace_init_lst_close");
+
+ if (!( pc->GetParentType() == CT_BRACED_INIT_LIST
+ && options::nl_type_brace_init_lst_open() == IARF_IGNORE
+ && options::nl_type_brace_init_lst_close() == IARF_IGNORE))
+ {
+ newlines_brace_pair(pc);
+ }
+
+ // Handle nl_before_brace_open
+ if ( pc->Is(CT_BRACE_OPEN)
+ && pc->GetLevel() == pc->GetBraceLevel()
+ && options::nl_before_brace_open())
+ {
+ log_rule_B("nl_before_brace_open");
+
+ if (!one_liner_nl_ok(pc))
+ {
+ LOG_FMT(LNL1LINE, "a new line may NOT be added (nl_before_brace_open)\n");
+ // no change - preserve one liner body
+ }
+ else if ( pc->TestFlags(PCF_IN_PREPROC)
+ || pc->TestFlags(PCF_IN_ARRAY_ASSIGN))
+ {
+ // no change - don't break up array assignments or preprocessors
+ }
+ else
+ {
+ // Step back to previous non-newline item
+ Chunk *tmp = pc->GetPrev();
+
+ if (!tmp->Is(CT_NEWLINE))
+ {
+ newline_iarf(tmp, IARF_ADD);
+ }
+ }
+ }
+ }
+ else if (pc->Is(CT_BRACE_CLOSE))
+ {
+ // newline between a close brace and x
+ log_rule_B("nl_brace_brace");
+
+ if (options::nl_brace_brace() != IARF_IGNORE)
+ {
+ Chunk *next = pc->GetNextNc(E_Scope::PREPROC);
+
+ if (next->Is(CT_BRACE_CLOSE))
+ {
+ log_rule_B("nl_brace_brace");
+ newline_iarf_pair(pc, next, options::nl_brace_brace());
+ }
+ }
+ log_rule_B("nl_brace_square");
+
+ if (options::nl_brace_square() != IARF_IGNORE)
+ {
+ Chunk *next = pc->GetNextNc(E_Scope::PREPROC);
+
+ if (next->Is(CT_SQUARE_CLOSE))
+ {
+ log_rule_B("nl_brace_square");
+ newline_iarf_pair(pc, next, options::nl_brace_square());
+ }
+ }
+ log_rule_B("nl_brace_fparen");
+
+ if (options::nl_brace_fparen() != IARF_IGNORE)
+ {
+ Chunk *next = pc->GetNextNc(E_Scope::PREPROC);
+
+ log_rule_B("nl_brace_fparen");
+
+ if ( next->Is(CT_NEWLINE)
+ && (options::nl_brace_fparen() == IARF_REMOVE))
+ {
+ next = next->GetNextNc(E_Scope::PREPROC); // Issue #1000
+ }
+
+ if (next->Is(CT_FPAREN_CLOSE))
+ {
+ log_rule_B("nl_brace_fparen");
+ newline_iarf_pair(pc, next, options::nl_brace_fparen());
+ }
+ }
+ // newline before a close brace
+ log_rule_B("nl_type_brace_init_lst_close");
+
+ if ( pc->GetParentType() == CT_BRACED_INIT_LIST
+ && options::nl_type_brace_init_lst_close() != IARF_IGNORE)
+ {
+ // Handle unnamed temporary direct-list-initialization
+ newline_iarf_pair(pc->GetPrevNnl(), pc,
+ options::nl_type_brace_init_lst_close(), true);
+ }
+ // blanks before a close brace
+ log_rule_B("eat_blanks_before_close_brace");
+
+ if (options::eat_blanks_before_close_brace())
+ {
+ // Limit the newlines before the close brace to 1
+ Chunk *prev = pc->GetPrev();
+
+ if (prev->IsNewline())
+ {
+ log_rule_B("nl_inside_namespace");
+ log_rule_B("nl_inside_empty_func");
+
+ if ( options::nl_inside_empty_func() > 0
+ && pc->GetPrevNnl()->Is(CT_BRACE_OPEN)
+ && ( pc->GetParentType() == CT_FUNC_CLASS_DEF
+ || pc->GetParentType() == CT_FUNC_DEF))
+ {
+ blank_line_set(prev, options::nl_inside_empty_func);
+ }
+ else if ( options::nl_inside_namespace() > 0
+ && pc->GetParentType() == CT_NAMESPACE)
+ {
+ blank_line_set(prev, options::nl_inside_namespace);
+ }
+ else if (prev->GetNlCount() != 1)
+ {
+ prev->SetNlCount(1);
+ LOG_FMT(LBLANKD, "%s(%d): eat_blanks_before_close_brace %zu\n",
+ __func__, __LINE__, prev->GetOrigLine());
+ MARK_CHANGE();
+ }
+ }
+ }
+ else if ( options::nl_ds_struct_enum_close_brace()
+ && ( pc->GetParentType() == CT_ENUM
+ || pc->GetParentType() == CT_STRUCT
+ || pc->GetParentType() == CT_UNION))
+ {
+ log_rule_B("nl_ds_struct_enum_close_brace");
+
+ if (!pc->TestFlags(PCF_ONE_LINER))
+ {
+ // Make sure the brace is preceded by two newlines
+ Chunk *prev = pc->GetPrev();
+
+ if (!prev->IsNewline())
+ {
+ prev = newline_add_before(pc);
+ }
+
+ if (prev->GetNlCount() < 2)
+ {
+ double_newline(prev);
+ }
+ }
+ }
+ // Force a newline after a close brace
+ log_rule_B("nl_brace_struct_var");
+
+ if ( (options::nl_brace_struct_var() != IARF_IGNORE)
+ && ( pc->GetParentType() == CT_STRUCT
+ || pc->GetParentType() == CT_ENUM
+ || pc->GetParentType() == CT_UNION))
+ {
+ Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
+
+ if ( next->IsNot(CT_SEMICOLON)
+ && next->IsNot(CT_COMMA))
+ {
+ log_rule_B("nl_brace_struct_var");
+ newline_iarf(pc, options::nl_brace_struct_var());
+ }
+ }
+ else if ( pc->GetParentType() != CT_OC_AT
+ && pc->GetParentType() != CT_BRACED_INIT_LIST
+ && ( options::nl_after_brace_close()
+ || pc->GetParentType() == CT_FUNC_CLASS_DEF
+ || pc->GetParentType() == CT_FUNC_DEF
+ || pc->GetParentType() == CT_OC_MSG_DECL))
+ {
+ log_rule_B("nl_after_brace_close");
+ Chunk *next = pc->GetNext();
+
+ if ( next->IsNot(CT_SEMICOLON)
+ && next->IsNot(CT_COMMA)
+ && next->IsNot(CT_SPAREN_CLOSE) // Issue #664
+ && next->IsNot(CT_SQUARE_CLOSE)
+ && next->IsNot(CT_FPAREN_CLOSE)
+ && next->IsNot(CT_PAREN_CLOSE)
+ && next->IsNot(CT_WHILE_OF_DO)
+ && next->IsNot(CT_VBRACE_CLOSE) // Issue #666
+ && ( next->IsNot(CT_BRACE_CLOSE)
+ || !next->TestFlags(PCF_ONE_LINER)) // #1258
+ && !pc->TestFlags(PCF_IN_ARRAY_ASSIGN)
+ && !pc->TestFlags(PCF_IN_TYPEDEF)
+ && !next->IsCommentOrNewline()
+ && next->IsNotNullChunk())
+ {
+ // #1258
+ // dont add newline between two consecutive braces closes, if the second is a part of one liner.
+ newline_end_newline(pc);
+ }
+ }
+ else if (pc->GetParentType() == CT_NAMESPACE)
+ {
+ log_rule_B("nl_after_namespace");
+
+ if (options::nl_after_namespace() > 0)
+ {
+ Chunk *next = pc->GetNextNcNnl(E_Scope::PREPROC);
+
+ if (next->IsNotNullChunk())
+ {
+ newline_add_before(next);
+ // newline_iarf(next, IARF_ADD);
+ }
+ }
+ }
+ }
+ else if (pc->Is(CT_VBRACE_OPEN))
+ {
+ log_rule_B("nl_after_vbrace_open");
+ log_rule_B("nl_after_vbrace_open_empty");
+
+ if ( options::nl_after_vbrace_open()
+ || options::nl_after_vbrace_open_empty())
+ {
+ Chunk *next = pc->GetNext(E_Scope::PREPROC);
+ bool add_it;
+
+ if (next->IsSemicolon())
+ {
+ log_rule_B("nl_after_vbrace_open_empty");
+ add_it = options::nl_after_vbrace_open_empty();
+ }
+ else
+ {
+ log_rule_B("nl_after_vbrace_open");
+ add_it = ( options::nl_after_vbrace_open()
+ && next->IsNot(CT_VBRACE_CLOSE)
+ && !next->IsCommentOrNewline());
+ }
+
+ if (add_it)
+ {
+ newline_iarf(pc, IARF_ADD);
+ }
+ }
+ log_rule_B("nl_create_if_one_liner");
+ log_rule_B("nl_create_for_one_liner");
+ log_rule_B("nl_create_while_one_liner");
+
+ if ( ( ( pc->GetParentType() == CT_IF
+ || pc->GetParentType() == CT_ELSEIF
+ || pc->GetParentType() == CT_ELSE)
+ && options::nl_create_if_one_liner())
+ || ( pc->GetParentType() == CT_FOR
+ && options::nl_create_for_one_liner())
+ || ( pc->GetParentType() == CT_WHILE
+ && options::nl_create_while_one_liner()))
+ {
+ nl_create_one_liner(pc);
+ }
+ log_rule_B("nl_split_if_one_liner");
+ log_rule_B("nl_split_for_one_liner");
+ log_rule_B("nl_split_while_one_liner");
+
+ if ( ( ( pc->GetParentType() == CT_IF
+ || pc->GetParentType() == CT_ELSEIF
+ || pc->GetParentType() == CT_ELSE)
+ && options::nl_split_if_one_liner())
+ || ( pc->GetParentType() == CT_FOR
+ && options::nl_split_for_one_liner())
+ || ( pc->GetParentType() == CT_WHILE
+ && options::nl_split_while_one_liner()))
+ {
+ if (pc->TestFlags(PCF_ONE_LINER))
+ {
+ // split one-liner
+ Chunk *end = pc->GetNext()->GetNextType(CT_SEMICOLON)->GetNext();
+ // Scan for clear flag
+ LOG_FMT(LNEWLINE, "(%d) ", __LINE__);
+ LOG_FMT(LNEWLINE, "\n");
+
+ for (Chunk *temp = pc; temp != end; temp = temp->GetNext())
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): Text() is '%s', type is %s, level is %zu\n",
+ __func__, __LINE__, temp->Text(), get_token_name(temp->GetType()), temp->GetLevel());
+ // produces much more log output. Use it only debugging purpose
+ //log_pcf_flags(LNEWLINE, temp->GetFlags());
+ temp->ResetFlagBits(PCF_ONE_LINER);
+ }
+
+ // split
+ newline_add_between(pc, pc->GetNext());
+ }
+ }
+ }
+ else if (pc->Is(CT_VBRACE_CLOSE))
+ {
+ log_rule_B("nl_after_vbrace_close");
+
+ if (options::nl_after_vbrace_close())
+ {
+ if (!pc->GetNextNc()->IsNewline())
+ {
+ newline_iarf(pc, IARF_ADD);
+ }
+ }
+ }
+ else if ( pc->Is(CT_SQUARE_OPEN)
+ && pc->GetParentType() == CT_OC_MSG)
+ {
+ log_rule_B("nl_oc_msg_args");
+
+ if (options::nl_oc_msg_args())
+ {
+ newline_oc_msg(pc);
+ }
+ }
+ else if (pc->Is(CT_STRUCT))
+ {
+ log_rule_B("nl_struct_brace");
+ newlines_struct_union(pc, options::nl_struct_brace(), true);
+ }
+ else if (pc->Is(CT_UNION))
+ {
+ log_rule_B("nl_union_brace");
+ newlines_struct_union(pc, options::nl_union_brace(), true);
+ }
+ else if (pc->Is(CT_ENUM))
+ {
+ newlines_enum(pc);
+ }
+ else if (pc->Is(CT_CASE))
+ {
+ // Note: 'default' also maps to CT_CASE
+ log_rule_B("nl_before_case");
+
+ if (options::nl_before_case())
+ {
+ newline_case(pc);
+ }
+ }
+ else if (pc->Is(CT_THROW))
+ {
+ Chunk *prev = pc->GetPrev();
+
+ if ( prev->Is(CT_PAREN_CLOSE)
+ || prev->Is(CT_FPAREN_CLOSE)) // Issue #1122
+ {
+ log_rule_B("nl_before_throw");
+ newline_iarf(pc->GetPrevNcNnlNi(), options::nl_before_throw()); // Issue #2279
+ }
+ }
+ else if ( pc->Is(CT_QUALIFIER)
+ && !strcmp(pc->Text(), "throws"))
+ {
+ Chunk *prev = pc->GetPrev();
+
+ if ( prev->Is(CT_PAREN_CLOSE)
+ || prev->Is(CT_FPAREN_CLOSE)) // Issue #1122
+ {
+ log_rule_B("nl_before_throw");
+ newline_iarf(pc->GetPrevNcNnlNi(), options::nl_before_throw()); // Issue #2279
+ }
+ }
+ else if (pc->Is(CT_CASE_COLON))
+ {
+ Chunk *next = pc->GetNextNnl();
+
+ log_rule_B("nl_case_colon_brace");
+
+ if ( next->Is(CT_BRACE_OPEN)
+ && options::nl_case_colon_brace() != IARF_IGNORE)
+ {
+ newline_iarf(pc, options::nl_case_colon_brace());
+ }
+ else if (options::nl_after_case())
+ {
+ log_rule_B("nl_after_case");
+ newline_case_colon(pc);
+ }
+ }
+ else if (pc->Is(CT_SPAREN_CLOSE))
+ {
+ Chunk *next = pc->GetNextNcNnl();
+
+ if (next->Is(CT_BRACE_OPEN))
+ {
+ /*
+ * TODO: this could be used to control newlines between the
+ * the if/while/for/switch close parenthesis and the open brace, but
+ * that is currently handled elsewhere.
+ */
+ }
+ }
+ else if (pc->Is(CT_RETURN))
+ {
+ log_rule_B("nl_before_return");
+
+ if (options::nl_before_return())
+ {
+ newline_before_return(pc);
+ }
+ log_rule_B("nl_after_return");
+
+ if (options::nl_after_return())
+ {
+ newline_after_return(pc);
+ }
+ }
+ else if (pc->Is(CT_SEMICOLON))
+ {
+ log_rule_B("nl_after_semicolon");
+ log_rule_NL("nl_after_semicolon");
+
+ if ( !pc->TestFlags(PCF_IN_SPAREN)
+ && !pc->TestFlags(PCF_IN_PREPROC)
+ && options::nl_after_semicolon())
+ {
+ Chunk *next = pc->GetNext();
+
+ while (next->Is(CT_VBRACE_CLOSE))
+ {
+ next = next->GetNext();
+ }
+
+ if ( next->IsNotNullChunk()
+ && !next->IsCommentOrNewline())
+ {
+ if (one_liner_nl_ok(next))
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): a new line may be added\n", __func__, __LINE__);
+ newline_iarf(pc, IARF_ADD);
+ }
+ else
+ {
+ LOG_FMT(LNL1LINE, "%s(%d): a new line may NOT be added\n", __func__, __LINE__);
+ }
+ }
+ }
+ else if (pc->GetParentType() == CT_CLASS)
+ {
+ log_rule_B("nl_after_class");
+
+ if (options::nl_after_class() > 0)
+ {
+ /*
+ * If there is already a "class" comment, then don't add a newline if
+ * one exists after the comment. or else this will interfere with the
+ * mod_add_long_class_closebrace_comment option.
+ */
+ iarf_e mode = IARF_ADD;
+ Chunk *next = pc->GetNext();
+
+ if (next->IsComment())
+ {
+ pc = next;
+ next = pc->GetNext();
+
+ if (next->IsNewline())
+ {
+ mode = IARF_IGNORE;
+ }
+ }
+ newline_iarf(pc, mode);
+ }
+ }
+ }
+ else if (pc->Is(CT_FPAREN_OPEN))
+ {
+ log_rule_B("nl_func_decl_start");
+ log_rule_B("nl_func_def_start");
+ log_rule_B("nl_func_decl_start_single");
+ log_rule_B("nl_func_def_start_single");
+ log_rule_B("nl_func_decl_start_multi_line");
+ log_rule_B("nl_func_def_start_multi_line");
+ log_rule_B("nl_func_decl_args");
+ log_rule_B("nl_func_def_args");
+ log_rule_B("nl_func_decl_args_multi_line");
+ log_rule_B("nl_func_def_args_multi_line");
+ log_rule_B("nl_func_decl_end");
+ log_rule_B("nl_func_def_end");
+ log_rule_B("nl_func_decl_end_single");
+ log_rule_B("nl_func_def_end_single");
+ log_rule_B("nl_func_decl_end_multi_line");
+ log_rule_B("nl_func_def_end_multi_line");
+ log_rule_B("nl_func_decl_empty");
+ log_rule_B("nl_func_def_empty");
+ log_rule_B("nl_func_type_name");
+ log_rule_B("nl_func_type_name_class");
+ log_rule_B("nl_func_class_scope");
+ log_rule_B("nl_func_scope_name");
+ log_rule_B("nl_func_proto_type_name");
+ log_rule_B("nl_func_paren");
+ log_rule_B("nl_func_def_paren");
+ log_rule_B("nl_func_def_paren_empty");
+ log_rule_B("nl_func_paren_empty");
+
+ if ( ( pc->GetParentType() == CT_FUNC_DEF
+ || pc->GetParentType() == CT_FUNC_PROTO
+ || pc->GetParentType() == CT_FUNC_CLASS_DEF
+ || pc->GetParentType() == CT_FUNC_CLASS_PROTO
+ || pc->GetParentType() == CT_OPERATOR)
+ && ( options::nl_func_decl_start() != IARF_IGNORE
+ || options::nl_func_def_start() != IARF_IGNORE
+ || options::nl_func_decl_start_single() != IARF_IGNORE
+ || options::nl_func_def_start_single() != IARF_IGNORE
+ || options::nl_func_decl_start_multi_line()
+ || options::nl_func_def_start_multi_line()
+ || options::nl_func_decl_args() != IARF_IGNORE
+ || options::nl_func_def_args() != IARF_IGNORE
+ || options::nl_func_decl_args_multi_line()
+ || options::nl_func_def_args_multi_line()
+ || options::nl_func_decl_end() != IARF_IGNORE
+ || options::nl_func_def_end() != IARF_IGNORE
+ || options::nl_func_decl_end_single() != IARF_IGNORE
+ || options::nl_func_def_end_single() != IARF_IGNORE
+ || options::nl_func_decl_end_multi_line()
+ || options::nl_func_def_end_multi_line()
+ || options::nl_func_decl_empty() != IARF_IGNORE
+ || options::nl_func_def_empty() != IARF_IGNORE
+ || options::nl_func_type_name() != IARF_IGNORE
+ || options::nl_func_type_name_class() != IARF_IGNORE
+ || options::nl_func_class_scope() != IARF_IGNORE
+ || options::nl_func_scope_name() != IARF_IGNORE
+ || options::nl_func_proto_type_name() != IARF_IGNORE
+ || options::nl_func_paren() != IARF_IGNORE
+ || options::nl_func_def_paren() != IARF_IGNORE
+ || options::nl_func_def_paren_empty() != IARF_IGNORE
+ || options::nl_func_paren_empty() != IARF_IGNORE))
+ {
+ newline_func_def_or_call(pc);
+ }
+ else if ( ( pc->GetParentType() == CT_FUNC_CALL
+ || pc->GetParentType() == CT_FUNC_CALL_USER)
+ && ( (options::nl_func_call_start_multi_line())
+ || (options::nl_func_call_args_multi_line())
+ || (options::nl_func_call_end_multi_line())
+ || (options::nl_func_call_start() != IARF_IGNORE) // Issue #2020
+ || (options::nl_func_call_args() != IARF_IGNORE) // Issue #2604
+ || (options::nl_func_call_paren() != IARF_IGNORE)
+ || (options::nl_func_call_paren_empty() != IARF_IGNORE)
+ || (options::nl_func_call_empty() != IARF_IGNORE)))
+ {
+ log_rule_B("nl_func_call_start_multi_line");
+ log_rule_B("nl_func_call_args_multi_line");
+ log_rule_B("nl_func_call_end_multi_line");
+ log_rule_B("nl_func_call_start");
+ log_rule_B("nl_func_call_args");
+ log_rule_B("nl_func_call_paren");
+ log_rule_B("nl_func_call_paren_empty");
+ log_rule_B("nl_func_call_empty");
+
+ if (options::nl_func_call_start() != IARF_IGNORE)
+ {
+ newline_iarf(pc, options::nl_func_call_start());
+ }
+ // note that newline_func_def_or_call() calls newline_func_multi_line()
+ newline_func_def_or_call(pc);
+ }
+ else if ( first
+ && (options::nl_remove_extra_newlines() == 1))
+ {
+ log_rule_B("nl_remove_extra_newlines");
+ newline_iarf(pc, IARF_REMOVE);
+ }
+ }
+ else if (pc->Is(CT_FPAREN_CLOSE)) // Issue #2758
+ {
+ if ( ( pc->GetParentType() == CT_FUNC_CALL
+ || pc->GetParentType() == CT_FUNC_CALL_USER)
+ && options::nl_func_call_end() != IARF_IGNORE)
+ {
+ log_rule_B("nl_func_call_end");
+ newline_iarf(pc->GetPrev(), options::nl_func_call_end());
+ }
+ }
+ else if (pc->Is(CT_ANGLE_CLOSE))
+ {
+ if (pc->GetParentType() == CT_TEMPLATE)
+ {
+ Chunk *next = pc->GetNextNcNnl();
+
+ if ( next->IsNotNullChunk()
+ && next->GetLevel() == next->GetBraceLevel())
+ {
+ Chunk *tmp = pc->GetPrevType(CT_ANGLE_OPEN, pc->GetLevel())->GetPrevNcNnlNi(); // Issue #2279
+
+ if (tmp->Is(CT_TEMPLATE))
+ {
+ if (next->Is(CT_USING))
+ {
+ newline_iarf(pc, options::nl_template_using());
+ log_rule_B("nl_template_using");
+ }
+ else if (next->GetParentType() == CT_FUNC_DEF) // function definition
+ {
+ iarf_e const action =
+ newline_template_option(
+ pc,
+ options::nl_template_func_def_special(),
+ options::nl_template_func_def(),
+ options::nl_template_func());
+ log_rule_B("nl_template_func_def_special");
+ log_rule_B("nl_template_func_def");
+ log_rule_B("nl_template_func");
+ newline_iarf(pc, action);
+ }
+ else if (next->GetParentType() == CT_FUNC_PROTO) // function declaration
+ {
+ iarf_e const action =
+ newline_template_option(
+ pc,
+ options::nl_template_func_decl_special(),
+ options::nl_template_func_decl(),
+ options::nl_template_func());
+ log_rule_B("nl_template_func_decl_special");
+ log_rule_B("nl_template_func_decl");
+ log_rule_B("nl_template_func");
+ newline_iarf(pc, action);
+ }
+ else if ( next->Is(CT_TYPE)
+ || next->Is(CT_QUALIFIER)) // variable
+ {
+ newline_iarf(pc, options::nl_template_var());
+ log_rule_B("nl_template_var");
+ }
+ else if (next->TestFlags(PCF_INCOMPLETE)) // class declaration
+ {
+ iarf_e const action =
+ newline_template_option(
+ pc,
+ options::nl_template_class_decl_special(),
+ options::nl_template_class_decl(),
+ options::nl_template_class());
+ log_rule_B("nl_template_class_decl_special");
+ log_rule_B("nl_template_class_decl");
+ log_rule_B("nl_template_class");
+ newline_iarf(pc, action);
+ }
+ else // class definition
+ {
+ iarf_e const action =
+ newline_template_option(
+ pc,
+ options::nl_template_class_def_special(),
+ options::nl_template_class_def(),
+ options::nl_template_class());
+ log_rule_B("nl_template_class_def_special");
+ log_rule_B("nl_template_class_def");
+ log_rule_B("nl_template_class");
+ newline_iarf(pc, action);
+ }
+ }
+ }
+ }
+ }
+ else if ( pc->Is(CT_NAMESPACE)
+ && pc->GetParentType() != CT_USING)
+ {
+ // Issue #2387
+ Chunk *next = pc->GetNextNcNnl();
+
+ if (next->IsNotNullChunk())
+ {
+ next = next->GetNextNcNnl();
+
+ if (!next->Is(CT_ASSIGN))
+ {
+ // Issue #1235
+ // Issue #2186
+ Chunk *braceOpen = pc->GetNextType(CT_BRACE_OPEN, pc->GetLevel());
+
+ if (braceOpen->IsNullChunk())
+ {
+ // fatal error
+ LOG_FMT(LERR, "%s(%d): Missing BRACE_OPEN after namespace\n orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ exit(EXIT_FAILURE);
+ }
+ LOG_FMT(LNEWLINE, "%s(%d): braceOpen orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, braceOpen->GetOrigLine(), braceOpen->GetOrigCol(), braceOpen->Text());
+ // produces much more log output. Use it only debugging purpose
+ //log_pcf_flags(LNEWLINE, braceOpen->GetFlags());
+ newlines_namespace(pc);
+ }
+ }
+ }
+ else if (pc->Is(CT_SQUARE_OPEN))
+ {
+ if ( pc->GetParentType() == CT_ASSIGN
+ && !pc->TestFlags(PCF_ONE_LINER))
+ {
+ Chunk *tmp = pc->GetPrevNcNnlNi(); // Issue #2279
+ newline_iarf(tmp, options::nl_assign_square());
+ log_rule_B("nl_assign_square");
+
+ iarf_e arg = options::nl_after_square_assign();
+ log_rule_B("nl_after_square_assign");
+
+ if (options::nl_assign_square() & IARF_ADD)
+ {
+ log_rule_B("nl_assign_square");
+ arg = IARF_ADD;
+ }
+ newline_iarf(pc, arg);
+
+ /*
+ * if there is a newline after the open, then force a newline
+ * before the close
+ */
+ tmp = pc->GetNextNc();
+
+ if (tmp->IsNewline())
+ {
+ tmp = pc->GetNextType(CT_SQUARE_CLOSE, pc->GetLevel());
+
+ if (tmp->IsNotNullChunk())
+ {
+ newline_add_before(tmp);
+ }
+ }
+ }
+ }
+ else if (pc->Is(CT_ACCESS))
+ {
+ // Make sure there is a newline before an access spec
+ if (options::nl_before_access_spec() > 0)
+ {
+ log_rule_B("nl_before_access_spec");
+ Chunk *prev = pc->GetPrev();
+
+ if (!prev->IsNewline())
+ {
+ newline_add_before(pc);
+ }
+ }
+ }
+ else if (pc->Is(CT_ACCESS_COLON))
+ {
+ // Make sure there is a newline after an access spec
+ if (options::nl_after_access_spec() > 0)
+ {
+ log_rule_B("nl_after_access_spec");
+ Chunk *next = pc->GetNext();
+
+ if (!next->IsNewline())
+ {
+ newline_add_before(next);
+ }
+ }
+ }
+ else if (pc->Is(CT_PP_DEFINE))
+ {
+ if (options::nl_multi_line_define())
+ {
+ log_rule_B("nl_multi_line_define");
+ nl_handle_define(pc);
+ }
+ }
+ else if ( first
+ && (options::nl_remove_extra_newlines() == 1)
+ && !pc->TestFlags(PCF_IN_PREPROC))
+ {
+ log_rule_B("nl_remove_extra_newlines");
+ log_rule_NL("nl_remove_extra_newlines");
+ newline_iarf(pc, IARF_REMOVE);
+ }
+ else if ( pc->Is(CT_MEMBER)
+ && ( language_is_set(LANG_JAVA)
+ || language_is_set(LANG_CPP))) // Issue #2574
+ {
+ // Issue #1124
+ if (pc->GetParentType() != CT_FUNC_DEF)
+ {
+ newline_iarf(pc->GetPrevNnl(), options::nl_before_member());
+ log_rule_B("nl_before_member");
+ newline_iarf(pc, options::nl_after_member());
+ log_rule_B("nl_after_member");
+ }
+ }
+ else
+ {
+ // ignore it
+ }
+ }
+
+ newline_var_def_blk(Chunk::GetHead());
+} // newlines_cleanup_braces
+
+
+static void nl_handle_define(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *nl = pc;
+ Chunk *ref = Chunk::NullChunkPtr;
+
+ while ((nl = nl->GetNext())->IsNotNullChunk())
+ {
+ if (nl->Is(CT_NEWLINE))
+ {
+ return;
+ }
+
+ if ( nl->Is(CT_MACRO)
+ || ( nl->Is(CT_FPAREN_CLOSE)
+ && nl->GetParentType() == CT_MACRO_FUNC))
+ {
+ ref = nl;
+ }
+
+ if (nl->Is(CT_NL_CONT))
+ {
+ if (ref->IsNotNullChunk())
+ {
+ newline_add_after(ref);
+ }
+ return;
+ }
+ }
+} // nl_handle_define
+
+
+void newline_after_multiline_comment()
+{
+ LOG_FUNC_ENTRY();
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if (pc->IsNot(CT_COMMENT_MULTI))
+ {
+ continue;
+ }
+ Chunk *tmp = pc;
+
+ while ( ((tmp = tmp->GetNext())->IsNotNullChunk())
+ && !tmp->IsNewline())
+ {
+ if (!tmp->IsComment())
+ {
+ newline_add_before(tmp);
+ break;
+ }
+ }
+ }
+} // newline_after_multiline_comment
+
+
+void newline_after_label_colon()
+{
+ LOG_FUNC_ENTRY();
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if (pc->IsNot(CT_LABEL_COLON))
+ {
+ continue;
+ }
+ newline_add_after(pc);
+ }
+} // newline_after_label_colon
+
+
+static bool is_class_one_liner(Chunk *pc)
+{
+ if ( ( pc->Is(CT_FUNC_CLASS_DEF)
+ || pc->Is(CT_FUNC_DEF))
+ && pc->TestFlags(PCF_IN_CLASS))
+ {
+ // Find opening brace
+ pc = pc->GetNextType(CT_BRACE_OPEN, pc->GetLevel());
+ return( pc->IsNotNullChunk()
+ && pc->TestFlags(PCF_ONE_LINER));
+ }
+ return(false);
+} // is_class_one_liner
+
+
+void newlines_insert_blank_lines()
+{
+ LOG_FUNC_ENTRY();
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ //LOG_FMT(LNEWLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ // __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ if (pc->Is(CT_IF))
+ {
+ newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_before_if());
+ log_rule_B("nl_before_if");
+ newlines_if_for_while_switch_post_blank_lines(pc, options::nl_after_if());
+ log_rule_B("nl_after_if");
+ }
+ else if (pc->Is(CT_FOR))
+ {
+ newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_before_for());
+ log_rule_B("nl_before_for");
+ newlines_if_for_while_switch_post_blank_lines(pc, options::nl_after_for());
+ log_rule_B("nl_after_for");
+ }
+ else if (pc->Is(CT_WHILE))
+ {
+ newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_before_while());
+ log_rule_B("nl_before_while");
+ newlines_if_for_while_switch_post_blank_lines(pc, options::nl_after_while());
+ log_rule_B("nl_after_while");
+ }
+ else if (pc->Is(CT_SWITCH))
+ {
+ newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_before_switch());
+ log_rule_B("nl_before_switch");
+ newlines_if_for_while_switch_post_blank_lines(pc, options::nl_after_switch());
+ log_rule_B("nl_after_switch");
+ }
+ else if (pc->Is(CT_SYNCHRONIZED))
+ {
+ newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_before_synchronized());
+ log_rule_B("nl_before_synchronized");
+ newlines_if_for_while_switch_post_blank_lines(pc, options::nl_after_synchronized());
+ log_rule_B("nl_after_synchronized");
+ }
+ else if (pc->Is(CT_DO))
+ {
+ newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_before_do());
+ log_rule_B("nl_before_do");
+ newlines_if_for_while_switch_post_blank_lines(pc, options::nl_after_do());
+ log_rule_B("nl_after_do");
+ }
+ else if (pc->Is(CT_OC_INTF))
+ {
+ newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_oc_before_interface());
+ log_rule_B("nl_oc_before_interface");
+ }
+ else if (pc->Is(CT_OC_END))
+ {
+ newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_oc_before_end());
+ log_rule_B("nl_oc_before_end");
+ }
+ else if (pc->Is(CT_OC_IMPL))
+ {
+ newlines_if_for_while_switch_pre_blank_lines(pc, options::nl_oc_before_implementation());
+ log_rule_B("nl_oc_before_implementation");
+ }
+ else if ( pc->Is(CT_FUNC_CLASS_DEF)
+ || pc->Is(CT_FUNC_DEF)
+ || pc->Is(CT_FUNC_CLASS_PROTO)
+ || pc->Is(CT_FUNC_PROTO))
+ {
+ if ( options::nl_class_leave_one_liner_groups()
+ && is_class_one_liner(pc))
+ {
+ log_rule_B("nl_class_leave_one_liner_groups");
+ newlines_func_pre_blank_lines(pc, CT_FUNC_PROTO);
+ }
+ else
+ {
+ newlines_func_pre_blank_lines(pc, pc->GetType());
+ }
+ }
+ else
+ {
+ // ignore it
+ //LOG_FMT(LNEWLINE, "%s(%d): ignore it\n", __func__, __LINE__);
+ }
+ }
+} // newlines_insert_blank_lines
+
+
+void newlines_functions_remove_extra_blank_lines()
+{
+ LOG_FUNC_ENTRY();
+
+ const size_t nl_max_blank_in_func = options::nl_max_blank_in_func();
+
+ log_rule_B("nl_max_blank_in_func");
+
+ if (nl_max_blank_in_func == 0)
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): nl_max_blank_in_func is zero\n", __func__, __LINE__);
+ return;
+ }
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+
+ if ( pc->IsNot(CT_BRACE_OPEN)
+ || ( pc->GetParentType() != CT_FUNC_DEF
+ && pc->GetParentType() != CT_CPP_LAMBDA))
+ {
+ continue;
+ }
+ const size_t startMoveLevel = pc->GetLevel();
+
+ while (pc->IsNotNullChunk())
+ {
+ if ( pc->Is(CT_BRACE_CLOSE)
+ && pc->GetLevel() == startMoveLevel)
+ {
+ break;
+ }
+
+ // delete newlines
+ if ( !pc->Is(CT_COMMENT_MULTI) // Issue #2195
+ && pc->GetNlCount() > nl_max_blank_in_func)
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ pc->SetNlCount(nl_max_blank_in_func);
+ MARK_CHANGE();
+ remove_next_newlines(pc);
+ }
+ else
+ {
+ pc = pc->GetNext();
+ }
+ }
+ }
+} // newlines_functions_remove_extra_blank_lines
+
+
+void newlines_squeeze_ifdef()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc;
+
+ for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ if ( pc->Is(CT_PREPROC)
+ && ( pc->GetLevel() > 0
+ || options::nl_squeeze_ifdef_top_level()))
+ {
+ log_rule_B("nl_squeeze_ifdef_top_level");
+ Chunk *ppr = pc->GetNext();
+
+ if ( ppr->Is(CT_PP_IF)
+ || ppr->Is(CT_PP_ELSE)
+ || ppr->Is(CT_PP_ENDIF))
+ {
+ Chunk *pnl = Chunk::NullChunkPtr;
+ Chunk *nnl = ppr->GetNextNl();
+
+ if ( ppr->Is(CT_PP_ELSE)
+ || ppr->Is(CT_PP_ENDIF))
+ {
+ pnl = pc->GetPrevNl();
+ }
+ Chunk *tmp1;
+ Chunk *tmp2;
+
+ if (nnl->IsNotNullChunk())
+ {
+ if (pnl->IsNotNullChunk())
+ {
+ if (pnl->GetNlCount() > 1)
+ {
+ pnl->SetNlCount(1);
+ MARK_CHANGE();
+
+ tmp1 = pnl->GetPrevNnl();
+ tmp2 = nnl->GetPrevNnl();
+
+ LOG_FMT(LNEWLINE, "%s(%d): moved from after line %zu to after %zu\n",
+ __func__, __LINE__, tmp1->GetOrigLine(), tmp2->GetOrigLine());
+ }
+ }
+
+ if ( ppr->Is(CT_PP_IF)
+ || ppr->Is(CT_PP_ELSE))
+ {
+ if (nnl->GetNlCount() > 1)
+ {
+ tmp1 = nnl->GetPrevNnl();
+ LOG_FMT(LNEWLINE, "%s(%d): trimmed newlines after line %zu from %zu\n",
+ __func__, __LINE__, tmp1->GetOrigLine(), nnl->GetNlCount());
+ nnl->SetNlCount(1);
+ MARK_CHANGE();
+ }
+ }
+ }
+ }
+ }
+ }
+} // newlines_squeeze_ifdef
+
+
+void newlines_squeeze_paren_close()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc;
+
+ for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ Chunk *next;
+ Chunk *prev;
+
+ if (pc->Is(CT_NEWLINE))
+ {
+ prev = pc->GetPrev();
+ }
+ else
+ {
+ prev = pc;
+ }
+ next = pc->GetNext();
+
+ if ( next->IsNotNullChunk()
+ && prev->IsNotNullChunk()
+ && next->IsParenClose()
+ && prev->IsParenClose())
+ {
+ Chunk *prev_op = prev->GetOpeningParen();
+ Chunk *next_op = next->GetOpeningParen();
+ bool flag = true;
+
+ Chunk *tmp = prev;
+
+ while (tmp->IsParenClose())
+ {
+ tmp = tmp->GetPrev();
+ }
+
+ if (tmp->IsNot(CT_NEWLINE))
+ {
+ flag = false;
+ }
+
+ if (flag)
+ {
+ if (next_op->IsOnSameLine(prev_op))
+ {
+ if (pc->Is(CT_NEWLINE))
+ {
+ pc = next;
+ }
+ newline_del_between(prev, next);
+ }
+ else
+ {
+ newline_add_between(prev, next);
+ }
+ }
+ }
+ }
+} // newlines_squeeze_paren_close
+
+
+void newlines_eat_start_end()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc;
+
+ // Process newlines at the start of the file
+ if ( cpd.frag_cols == 0
+ && ( (options::nl_start_of_file() & IARF_REMOVE)
+ || ( (options::nl_start_of_file() & IARF_ADD)
+ && (options::nl_start_of_file_min() > 0))))
+ {
+ log_rule_B("nl_start_of_file");
+ log_rule_B("nl_start_of_file_min");
+ pc = Chunk::GetHead();
+
+ if (pc->IsNotNullChunk())
+ {
+ if (pc->Is(CT_NEWLINE))
+ {
+ if (options::nl_start_of_file() == IARF_REMOVE)
+ {
+ log_rule_B("nl_start_of_file");
+ LOG_FMT(LBLANKD, "%s(%d): eat_blanks_start_of_file %zu\n",
+ __func__, __LINE__, pc->GetOrigLine());
+ Chunk::Delete(pc);
+ MARK_CHANGE();
+ }
+ else if ( options::nl_start_of_file() == IARF_FORCE
+ || (pc->GetNlCount() < options::nl_start_of_file_min()))
+ {
+ log_rule_B("nl_start_of_file");
+ LOG_FMT(LBLANKD, "%s(%d): set_blanks_start_of_file %zu\n",
+ __func__, __LINE__, pc->GetOrigLine());
+ pc->SetNlCount(options::nl_start_of_file_min());
+ log_rule_B("nl_start_of_file_min");
+ MARK_CHANGE();
+ }
+ }
+ else if ( (options::nl_start_of_file() & IARF_ADD)
+ && (options::nl_start_of_file_min() > 0))
+ {
+ log_rule_B("nl_start_of_file");
+ log_rule_B("nl_start_of_file_min");
+ Chunk chunk;
+ chunk.SetType(CT_NEWLINE);
+ chunk.SetOrigLine(pc->GetOrigLine());
+ chunk.SetOrigCol(pc->GetOrigCol());
+ chunk.SetPpLevel(pc->GetPpLevel());
+ chunk.SetNlCount(options::nl_start_of_file_min());
+ log_rule_B("nl_start_of_file_min");
+ chunk.CopyAndAddBefore(pc);
+ LOG_FMT(LNEWLINE, "%s(%d): %zu:%zu add newline before '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ MARK_CHANGE();
+ }
+ }
+ }
+
+ // Process newlines at the end of the file
+ if ( cpd.frag_cols == 0
+ && ( (options::nl_end_of_file() & IARF_REMOVE)
+ || ( (options::nl_end_of_file() & IARF_ADD)
+ && (options::nl_end_of_file_min() > 0))))
+ {
+ log_rule_B("nl_end_of_file");
+ log_rule_B("nl_end_of_file_min");
+ pc = Chunk::GetTail();
+
+ if (pc->IsNotNullChunk())
+ {
+ if (pc->Is(CT_NEWLINE))
+ {
+ if (options::nl_end_of_file() == IARF_REMOVE)
+ {
+ log_rule_B("nl_end_of_file");
+ LOG_FMT(LBLANKD, "%s(%d): eat_blanks_end_of_file %zu\n",
+ __func__, __LINE__, pc->GetOrigLine());
+ Chunk::Delete(pc);
+ MARK_CHANGE();
+ }
+ else if ( options::nl_end_of_file() == IARF_FORCE
+ || (pc->GetNlCount() < options::nl_end_of_file_min()))
+ {
+ log_rule_B("nl_end_of_file");
+ log_rule_B("nl_end_of_file_min");
+
+ if (pc->GetNlCount() != options::nl_end_of_file_min())
+ {
+ log_rule_B("nl_end_of_file_min");
+ LOG_FMT(LBLANKD, "%s(%d): set_blanks_end_of_file %zu\n",
+ __func__, __LINE__, pc->GetOrigLine());
+ pc->SetNlCount(options::nl_end_of_file_min());
+ log_rule_B("nl_end_of_file_min");
+ MARK_CHANGE();
+ }
+ }
+ }
+ else if ( (options::nl_end_of_file() & IARF_ADD)
+ && (options::nl_end_of_file_min() > 0))
+ {
+ log_rule_B("nl_end_of_file");
+ log_rule_B("nl_end_of_file_min");
+ Chunk chunk;
+ chunk.SetType(CT_NEWLINE);
+ chunk.SetOrigLine(pc->GetOrigLine());
+ chunk.SetOrigCol(pc->GetOrigCol());
+ chunk.SetPpLevel(pc->GetPpLevel());
+ chunk.SetNlCount(options::nl_end_of_file_min());
+ log_rule_B("nl_end_of_file_min");
+ chunk.CopyAndAddBefore(Chunk::NullChunkPtr);
+ LOG_FMT(LNEWLINE, "%s(%d): %zu:%zu add newline after '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ MARK_CHANGE();
+ }
+ }
+ }
+} // newlines_eat_start_end
+
+
+void newlines_chunk_pos(E_Token chunk_type, token_pos_e mode)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LNEWLINE, "%s(%d): mode is %s\n",
+ __func__, __LINE__, to_string(mode));
+
+ if ( !(mode & (TP_JOIN | TP_LEAD | TP_TRAIL))
+ && chunk_type != CT_COMMA)
+ {
+ return;
+ }
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ char copy[1000];
+ LOG_FMT(LNEWLINE, "%s(%d): pc orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy));
+ // produces much more log output. Use it only debugging purpose
+ //log_pcf_flags(LNEWLINE, pc->GetFlags());
+
+ if (pc->Is(chunk_type))
+ {
+ token_pos_e mode_local;
+
+ if (chunk_type == CT_COMMA)
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ // produces much more log output. Use it only debugging purpose
+ //log_pcf_flags(LNEWLINE, pc->GetFlags());
+
+ if (pc->TestFlags(PCF_IN_CONST_ARGS)) // Issue #2250
+ {
+ continue;
+ }
+
+ /*
+ * for chunk_type == CT_COMMA
+ * we get 'mode' from options::pos_comma()
+ * BUT we must take care of options::pos_class_comma()
+ * TODO and options::pos_constr_comma()
+ */
+ if (pc->TestFlags(PCF_IN_CLASS_BASE))
+ {
+ // change mode
+ log_rule_B("pos_class_comma");
+ mode_local = options::pos_class_comma();
+ }
+ else if (pc->TestFlags(PCF_IN_ENUM))
+ {
+ log_rule_B("pos_enum_comma");
+ mode_local = options::pos_enum_comma();
+ }
+ else
+ {
+ mode_local = mode;
+ }
+ LOG_FMT(LNEWLINE, "%s(%d): mode_local is %s\n",
+ __func__, __LINE__, to_string(mode_local));
+ }
+ else
+ {
+ mode_local = mode;
+ }
+ Chunk *prev = pc->GetPrevNc();
+ Chunk *next = pc->GetNextNc();
+
+ LOG_FMT(LNEWLINE, "%s(%d): mode_local is %s\n",
+ __func__, __LINE__, to_string(mode_local));
+
+ LOG_FMT(LNEWLINE, "%s(%d): prev orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text());
+ LOG_FMT(LNEWLINE, "%s(%d): next orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), next->Text());
+ size_t nl_flag = ((prev->IsNewline() ? 1 : 0) |
+ (next->IsNewline() ? 2 : 0));
+ LOG_FMT(LNEWLINE, "%s(%d): nl_flag is %zu\n",
+ __func__, __LINE__, nl_flag);
+
+ if (mode_local & TP_JOIN)
+ {
+ if (nl_flag & 1)
+ {
+ // remove newline if not preceded by a comment
+ Chunk *prev2 = prev->GetPrev();
+
+ if ( prev2->IsNotNullChunk()
+ && !(prev2->IsComment()))
+ {
+ remove_next_newlines(prev2);
+ }
+ }
+
+ if (nl_flag & 2)
+ {
+ // remove newline if not followed by a comment or by '{'
+ Chunk *next2 = next->GetNext();
+
+ if ( next2->IsNotNullChunk()
+ && !next2->IsComment()
+ && !next2->Is(CT_BRACE_OPEN))
+ {
+ remove_next_newlines(pc);
+ }
+ }
+ continue;
+ }
+
+ if ( ( nl_flag == 0
+ && !(mode_local & (TP_FORCE | TP_BREAK)))
+ || ( nl_flag == 3
+ && !(mode_local & TP_FORCE)))
+ {
+ // No newlines and not adding any or both and not forcing
+ continue;
+ }
+
+ if ( ( (mode_local & TP_LEAD)
+ && nl_flag == 1)
+ || ( (mode_local & TP_TRAIL)
+ && nl_flag == 2))
+ {
+ // Already a newline before (lead) or after (trail)
+ continue;
+ }
+
+ // If there were no newlines, we need to add one
+ if (nl_flag == 0)
+ {
+ if (mode_local & TP_LEAD)
+ {
+ newline_add_before(pc);
+ }
+ else
+ {
+ newline_add_after(pc);
+ }
+ continue;
+ }
+
+ // If there were both newlines, we need to remove one
+ if (nl_flag == 3)
+ {
+ if (mode_local & TP_LEAD)
+ {
+ remove_next_newlines(pc);
+ }
+ else
+ {
+ remove_next_newlines(pc->GetPrevNcNnlNi()); // Issue #2279
+ }
+ continue;
+ }
+
+ // we need to move the newline
+ if (mode_local & TP_LEAD)
+ {
+ Chunk *next2 = next->GetNext();
+
+ if ( next2->Is(CT_PREPROC)
+ || ( chunk_type == CT_ASSIGN
+ && next2->Is(CT_BRACE_OPEN)))
+ {
+ continue;
+ }
+
+ if (next->GetNlCount() == 1)
+ {
+ if ( prev != nullptr
+ && !prev->TestFlags(PCF_IN_PREPROC))
+ {
+ // move the CT_BOOL to after the newline
+ pc->MoveAfter(next);
+ }
+ }
+ }
+ else
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): prev orig line is %zu, orig col is %zu, Text() is '%s', new line count is %zu\n",
+ __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text(), prev->GetNlCount());
+
+ if (prev->GetNlCount() == 1)
+ {
+ // Back up to the next non-comment item
+ prev = prev->GetPrevNc();
+ LOG_FMT(LNEWLINE, "%s(%d): prev orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text());
+
+ if ( prev->IsNotNullChunk()
+ && !prev->IsNewline()
+ && !prev->TestFlags(PCF_IN_PREPROC)
+ && !prev->TestFlags(PCF_IN_OC_MSG))
+ {
+ pc->MoveAfter(prev);
+ }
+ }
+ }
+ }
+ }
+} // newlines_chunk_pos
+
+
+void newlines_class_colon_pos(E_Token tok)
+{
+ LOG_FUNC_ENTRY();
+
+ token_pos_e tpc;
+ token_pos_e pcc;
+ iarf_e anc;
+ iarf_e ncia;
+
+ if (tok == CT_CLASS_COLON)
+ {
+ tpc = options::pos_class_colon();
+ log_rule_B("pos_class_colon");
+ anc = options::nl_class_colon();
+ log_rule_B("nl_class_colon");
+ ncia = options::nl_class_init_args();
+ log_rule_B("nl_class_init_args");
+ pcc = options::pos_class_comma();
+ log_rule_B("pos_class_comma");
+ }
+ else // tok == CT_CONSTR_COLON
+ {
+ tpc = options::pos_constr_colon();
+ log_rule_B("pos_constr_colon");
+ anc = options::nl_constr_colon();
+ log_rule_B("nl_constr_colon");
+ ncia = options::nl_constr_init_args();
+ log_rule_B("nl_constr_init_args");
+ pcc = options::pos_constr_comma();
+ log_rule_B("pos_constr_comma");
+ }
+ Chunk *ccolon = nullptr;
+ size_t acv_span = options::align_constr_value_span();
+
+ log_rule_B("align_constr_value_span");
+ bool with_acv = (acv_span > 0) && language_is_set(LANG_CPP);
+ AlignStack constructorValue; // ABC_Member(abc_value)
+
+ if (with_acv)
+ {
+ int acv_thresh = options::align_constr_value_thresh();
+ log_rule_B("align_constr_value_thresh");
+ size_t acv_gap = options::align_constr_value_gap();
+ log_rule_B("align_constr_value_gap");
+ constructorValue.Start(acv_span, acv_thresh);
+ constructorValue.m_gap = acv_gap;
+ constructorValue.m_right_align = !options::align_on_tabstop();
+ log_rule_B("align_on_tabstop");
+ }
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ if ( ccolon == nullptr
+ && pc->IsNot(tok))
+ {
+ continue;
+ }
+ Chunk *prev;
+ Chunk *next;
+
+ if (pc->Is(tok))
+ {
+ LOG_FMT(LBLANKD, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ ccolon = pc;
+ prev = pc->GetPrevNc();
+ next = pc->GetNextNc();
+
+ if (pc->Is(CT_CONSTR_COLON))
+ {
+ LOG_FMT(LBLANKD, "%s(%d): pc orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ Chunk *paren_vor_value = pc->GetNextType(CT_FPAREN_OPEN, pc->GetLevel());
+
+ if ( with_acv
+ && paren_vor_value->IsNotNullChunk())
+ {
+ LOG_FMT(LBLANKD, "%s(%d): paren_vor_value orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, paren_vor_value->GetOrigLine(), paren_vor_value->GetOrigCol(),
+ paren_vor_value->Text(), get_token_name(paren_vor_value->GetType()));
+ constructorValue.NewLines(paren_vor_value->GetNlCount());
+ constructorValue.Add(paren_vor_value);
+ }
+ }
+
+ if ( !prev->IsNewline()
+ && !next->IsNewline()
+ && (anc & IARF_ADD)) // nl_class_colon, nl_constr_colon: 1
+
+ {
+ newline_add_after(pc);
+ prev = pc->GetPrevNc();
+ next = pc->GetNextNc();
+ }
+
+ if (anc == IARF_REMOVE) // nl_class_colon, nl_constr_colon: 2
+ {
+ if ( prev->IsNewline()
+ && prev->SafeToDeleteNl())
+ {
+ Chunk::Delete(prev);
+ MARK_CHANGE();
+ prev = pc->GetPrevNc();
+ }
+
+ if ( next->IsNewline()
+ && next->SafeToDeleteNl())
+ {
+ Chunk::Delete(next);
+ MARK_CHANGE();
+ next = pc->GetNextNc();
+ }
+ }
+
+ if (tpc & TP_TRAIL) // pos_class_colon, pos_constr_colon: 4
+ {
+ if ( prev->IsNewline()
+ && prev->GetNlCount() == 1
+ && prev->SafeToDeleteNl())
+ {
+ pc->Swap(prev);
+ }
+ }
+ else if (tpc & TP_LEAD) // pos_class_colon, pos_constr_colon: 3
+ {
+ if ( next->IsNewline()
+ && next->GetNlCount() == 1
+ && next->SafeToDeleteNl())
+ {
+ pc->Swap(next);
+ }
+ }
+ }
+ else
+ {
+ // (pc->GetType() != tok)
+ if ( pc->Is(CT_BRACE_OPEN)
+ || pc->Is(CT_SEMICOLON))
+ {
+ ccolon = nullptr;
+
+ if (with_acv)
+ {
+ constructorValue.End();
+ }
+ continue;
+ }
+
+ if ( pc->Is(CT_COMMA)
+ && pc->GetLevel() == ccolon->GetLevel())
+ {
+ LOG_FMT(LBLANKD, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ Chunk *paren_vor_value = pc->GetNextType(CT_FPAREN_OPEN, pc->GetLevel());
+
+ if ( with_acv
+ && paren_vor_value->IsNotNullChunk())
+ {
+ LOG_FMT(LBLANKD, "%s(%d): paren_vor_value orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, paren_vor_value->GetOrigLine(), paren_vor_value->GetOrigCol(),
+ paren_vor_value->Text(), get_token_name(paren_vor_value->GetType()));
+ constructorValue.NewLines(paren_vor_value->GetNlCount());
+ constructorValue.Add(paren_vor_value);
+ }
+
+ if (ncia & IARF_ADD) // nl_class_init_args, nl_constr_init_args:
+ {
+ if (pcc & TP_TRAIL) // pos_class_comma, pos_constr_comma
+ {
+ if (ncia == IARF_FORCE) // nl_class_init_args, nl_constr_init_args: 5
+ {
+ Chunk *after = pc->GetNext(); // Issue #2759
+
+ if (after->IsNot(CT_COMMENT_CPP))
+ {
+ newline_force_after(pc);
+ }
+ }
+ else
+ {
+ // (ncia == IARF_ADD) // nl_class_init_args, nl_constr_init_args: 8
+ newline_add_after(pc);
+ }
+ prev = pc->GetPrevNc();
+
+ if ( prev->IsNewline()
+ && prev->SafeToDeleteNl())
+ {
+ Chunk::Delete(prev);
+ MARK_CHANGE();
+ }
+ }
+ else if (pcc & TP_LEAD) // pos_class_comma, pos_constr_comma
+ {
+ if (ncia == IARF_FORCE) // nl_class_init_args, nl_constr_init_args: 7
+ {
+ newline_force_before(pc);
+ }
+ else
+ {
+ // (ncia == IARF_ADD) // nl_class_init_args, nl_constr_init_args: 9
+ newline_add_before(pc);
+ }
+ next = pc->GetNextNc();
+
+ if ( next->IsNewline()
+ && next->SafeToDeleteNl())
+ {
+ Chunk::Delete(next);
+ MARK_CHANGE();
+ }
+ }
+ }
+ else if (ncia == IARF_REMOVE) // nl_class_init_args, nl_constr_init_args: 6
+ {
+ next = pc->GetNext();
+
+ if ( next->IsNewline()
+ && next->SafeToDeleteNl())
+ {
+ // comma is after
+ Chunk::Delete(next);
+ MARK_CHANGE();
+ }
+ else
+ {
+ prev = pc->GetPrev();
+
+ if ( prev->IsNewline()
+ && prev->SafeToDeleteNl())
+ {
+ // comma is before
+ Chunk::Delete(prev);
+ MARK_CHANGE();
+ }
+ }
+ }
+ }
+ }
+ }
+} // newlines_class_colon_pos
+
+
+static void blank_line_max(Chunk *pc, Option<unsigned> &opt)
+{
+ LOG_FUNC_ENTRY();
+
+ if (pc == nullptr)
+ {
+ return;
+ }
+ const auto optval = opt();
+
+ if ( (optval > 0)
+ && (pc->GetNlCount() > optval))
+ {
+ LOG_FMT(LBLANKD, "%s(%d): do_blank_lines: %s max line %zu\n",
+ __func__, __LINE__, opt.name(), pc->GetOrigLine());
+ pc->SetNlCount(optval);
+ MARK_CHANGE();
+ }
+} // blank_line_max
+
+
+iarf_e newline_template_option(Chunk *pc, iarf_e special, iarf_e base, iarf_e fallback)
+{
+ Chunk *const prev = pc->GetPrevNcNnl();
+
+ if ( prev->Is(CT_ANGLE_OPEN)
+ && special != IARF_IGNORE)
+ {
+ return(special);
+ }
+ else if (base != IARF_IGNORE)
+ {
+ return(base);
+ }
+ else
+ {
+ return(fallback);
+ }
+} // newline_template_option
+
+
+bool is_func_proto_group(Chunk *pc, E_Token one_liner_type)
+{
+ if ( pc != nullptr
+ && options::nl_class_leave_one_liner_groups()
+ && ( pc->Is(one_liner_type)
+ || pc->GetParentType() == one_liner_type)
+ && pc->TestFlags(PCF_IN_CLASS))
+ {
+ log_rule_B("nl_class_leave_one_liner_groups");
+
+ if (pc->Is(CT_BRACE_CLOSE))
+ {
+ return(pc->TestFlags(PCF_ONE_LINER));
+ }
+ else
+ {
+ // Find opening brace
+ pc = pc->GetNextType(CT_BRACE_OPEN, pc->GetLevel());
+ return( pc->IsNotNullChunk()
+ && pc->TestFlags(PCF_ONE_LINER));
+ }
+ }
+ return(false);
+} // is_func_proto_group
+
+
+void do_blank_lines()
+{
+ LOG_FUNC_ENTRY();
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if (pc->Is(CT_NEWLINE))
+ {
+ LOG_FMT(LBLANKD, "%s(%d): orig line is %zu, orig col is %zu, <Newline>, nl is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetNlCount());
+ }
+ else
+ {
+ char copy[1000];
+ LOG_FMT(LBLANKD, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy), get_token_name(pc->GetType()));
+ }
+ LOG_FMT(LBLANK, "%s(%d): new line count is %zu\n",
+ __func__, __LINE__, pc->GetNlCount());
+
+ if (pc->IsNot(CT_NEWLINE))
+ {
+ continue;
+ }
+ Chunk *prev = pc->GetPrevNc();
+
+ if (prev->IsNotNullChunk())
+ {
+ LOG_FMT(LBLANK, "%s(%d): prev orig line is %zu, prev->Text() '%s', prev->GetType() is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(),
+ prev->Text(), get_token_name(prev->GetType()));
+
+ if (prev->Is(CT_IGNORED))
+ {
+ continue;
+ }
+ }
+ Chunk *next = pc->GetNext();
+ Chunk *pcmt = pc->GetPrev();
+
+ bool line_added = false;
+
+ /*
+ * If this is the first or the last token, pretend that there is an extra
+ * line. It will be removed at the end.
+ */
+ if ( pc == Chunk::GetHead()
+ || next->IsNullChunk())
+ {
+ line_added = true;
+ pc->SetNlCount(pc->GetNlCount() + 1);
+ LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, text is '%s', new line count is now %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), pc->GetNlCount());
+ }
+
+ // Limit consecutive newlines
+ if ( (options::nl_max() > 0)
+ && (pc->GetNlCount() > options::nl_max()))
+ {
+ log_rule_B("nl_max");
+ blank_line_max(pc, options::nl_max);
+ }
+
+ if (!can_increase_nl(pc))
+ {
+ LOG_FMT(LBLANKD, "%s(%d): force to 1 orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+
+ if (pc->GetNlCount() != 1)
+ {
+ pc->SetNlCount(1);
+ MARK_CHANGE();
+ }
+ continue;
+ }
+
+ // Control blanks before multi-line comments
+ if ( (options::nl_before_block_comment() > pc->GetNlCount())
+ && next->Is(CT_COMMENT_MULTI))
+ {
+ log_rule_B("nl_before_block_comment");
+
+ // Don't add blanks after an open brace or a case statement
+ if ( ( prev->IsNullChunk()
+ || ( prev->IsNot(CT_BRACE_OPEN)
+ && prev->IsNot(CT_VBRACE_OPEN)
+ && prev->IsNot(CT_CASE_COLON)))
+ && pcmt->IsNot(CT_COMMENT_MULTI)) // Issue #2383
+ {
+ blank_line_set(pc, options::nl_before_block_comment);
+ log_rule_B("nl_before_block_comment");
+ }
+ }
+
+ // Control blanks before single line C comments
+ if ( (options::nl_before_c_comment() > pc->GetNlCount())
+ && next->Is(CT_COMMENT))
+ {
+ log_rule_B("nl_before_c_comment");
+
+ // Don't add blanks after an open brace, a case stamement, or a comment
+ if ( ( prev->IsNullChunk()
+ || ( prev->IsNot(CT_BRACE_OPEN)
+ && prev->IsNot(CT_VBRACE_OPEN)
+ && prev->IsNot(CT_CASE_COLON)))
+ && pcmt->IsNot(CT_COMMENT)) // Issue #2383
+ {
+ blank_line_set(pc, options::nl_before_c_comment);
+ log_rule_B("nl_before_c_comment");
+ }
+ }
+
+ // Control blanks before CPP comments
+ if ( (options::nl_before_cpp_comment() > pc->GetNlCount())
+ && next->Is(CT_COMMENT_CPP))
+ {
+ log_rule_B("nl_before_cpp_comment");
+
+ // Don't add blanks after an open brace or a case statement
+ if ( ( prev->IsNullChunk()
+ || ( prev->IsNot(CT_BRACE_OPEN)
+ && prev->IsNot(CT_VBRACE_OPEN)
+ && prev->IsNot(CT_CASE_COLON)))
+ && pcmt->IsNot(CT_COMMENT_CPP)) // Issue #2383
+ {
+ blank_line_set(pc, options::nl_before_cpp_comment);
+ log_rule_B("nl_before_cpp_comment");
+ }
+ }
+
+ // Control blanks before a class/struct
+ if ( ( prev->Is(CT_SEMICOLON)
+ || prev->Is(CT_BRACE_CLOSE))
+ && ( prev->GetParentType() == CT_CLASS
+ || prev->GetParentType() == CT_STRUCT))
+ {
+ E_Token parent_type = prev->GetParentType();
+ Chunk *start = prev->GetPrevType(parent_type, prev->GetLevel());
+ Chunk *tmp = start;
+
+ // Is this a class/struct template?
+ if (tmp->GetParentType() == CT_TEMPLATE)
+ {
+ tmp = tmp->GetPrevType(CT_TEMPLATE, prev->GetLevel());
+ tmp = tmp->GetPrevNc();
+ }
+ else
+ {
+ tmp = tmp->GetPrevNc();
+
+ while ( tmp->Is(CT_NEWLINE)
+ && tmp->GetPrev()->IsComment())
+ {
+ tmp = tmp->GetPrev()->GetPrevNc();
+ }
+
+ if (tmp->Is(CT_FRIEND))
+ {
+ // Account for a friend declaration
+ tmp = tmp->GetPrevNc();
+ }
+ }
+
+ while ( tmp->Is(CT_NEWLINE)
+ && tmp->GetPrev()->IsComment())
+ {
+ tmp = tmp->GetPrev()->GetPrevNc();
+ }
+
+ if ( tmp->IsNotNullChunk()
+ && !start->TestFlags(PCF_INCOMPLETE))
+ {
+ if (parent_type == CT_CLASS && options::nl_before_class() > tmp->GetNlCount())
+ {
+ log_rule_B("nl_before_class");
+ blank_line_set(tmp, options::nl_before_class);
+ }
+ else if (parent_type == CT_STRUCT && options::nl_before_struct() > tmp->GetNlCount())
+ {
+ log_rule_B("nl_before_struct");
+ blank_line_set(tmp, options::nl_before_struct);
+ }
+ }
+ }
+
+ if ( prev->Is(CT_BRACE_CLOSE)
+ && prev->GetParentType() == CT_NAMESPACE)
+ {
+ // Control blanks before a namespace
+ Chunk *tmp = prev->GetPrevType(CT_NAMESPACE, prev->GetLevel());
+ tmp = tmp->GetPrevNc();
+
+ while ( tmp->Is(CT_NEWLINE)
+ && tmp->GetPrev()->IsComment())
+ {
+ tmp = tmp->GetPrev()->GetPrevNc();
+ }
+
+ if ( tmp->IsNotNullChunk()
+ && options::nl_before_namespace() > tmp->GetNlCount())
+ {
+ log_rule_B("nl_before_namespace");
+ blank_line_set(tmp, options::nl_before_namespace);
+ }
+
+ // Add blanks after namespace
+ if (options::nl_after_namespace() > pc->GetNlCount())
+ {
+ log_rule_B("nl_after_namespace");
+ blank_line_set(pc, options::nl_after_namespace);
+ }
+ }
+
+ // Control blanks inside empty function body
+ if ( prev->Is(CT_BRACE_OPEN)
+ && next->Is(CT_BRACE_CLOSE)
+ && ( prev->GetParentType() == CT_FUNC_DEF
+ || prev->GetParentType() == CT_FUNC_CLASS_DEF)
+ && options::nl_inside_empty_func() > pc->GetNlCount()
+ && prev->TestFlags(PCF_EMPTY_BODY))
+ {
+ blank_line_set(pc, options::nl_inside_empty_func);
+ log_rule_B("nl_inside_empty_func");
+ }
+
+ // Control blanks after an access spec
+ if ( (options::nl_after_access_spec() > 0)
+ && (options::nl_after_access_spec() != pc->GetNlCount())
+ && prev->Is(CT_ACCESS_COLON))
+ {
+ log_rule_B("nl_after_access_spec");
+
+ // Don't add blanks before a closing brace
+ if ( next->IsNullChunk()
+ || !next->IsBraceClose())
+ {
+ log_rule_B("nl_after_access_spec");
+ blank_line_set(pc, options::nl_after_access_spec);
+ }
+ }
+
+ // Add blanks after function bodies
+ if ( prev->Is(CT_BRACE_CLOSE)
+ && ( prev->GetParentType() == CT_FUNC_DEF
+ || prev->GetParentType() == CT_FUNC_CLASS_DEF
+ || prev->GetParentType() == CT_OC_MSG_DECL
+ || prev->GetParentType() == CT_ASSIGN))
+ {
+ if (prev->TestFlags(PCF_ONE_LINER))
+ {
+ if (options::nl_after_func_body_one_liner() > pc->GetNlCount())
+ {
+ log_rule_B("nl_after_func_body_one_liner");
+ blank_line_set(pc, options::nl_after_func_body_one_liner);
+ }
+ }
+ else
+ {
+ if ( prev->TestFlags(PCF_IN_CLASS)
+ && (options::nl_after_func_body_class() > 0))
+ {
+ log_rule_B("nl_after_func_body_class");
+
+ if (options::nl_after_func_body_class() != pc->GetNlCount())
+ {
+ log_rule_B("nl_after_func_body_class");
+ blank_line_set(pc, options::nl_after_func_body_class);
+ }
+ }
+ else
+ {
+ if (!(pc->GetPrev()->TestFlags(PCF_IN_TRY_BLOCK))) // Issue #1734
+ {
+ if (options::nl_after_func_body() > 0)
+ {
+ log_rule_B("nl_after_func_body");
+
+ if (options::nl_after_func_body() != pc->GetNlCount())
+ {
+ log_rule_B("nl_after_func_body");
+ blank_line_set(pc, options::nl_after_func_body);
+ }
+ }
+ else
+ {
+ if (options::nl_min_after_func_body() > 0) // Issue #2787
+ {
+ log_rule_B("nl_min_after_func_body");
+
+ if (options::nl_min_after_func_body() > pc->GetNlCount())
+ {
+ log_rule_B("nl_min_after_func_body");
+ blank_line_set(pc, options::nl_min_after_func_body);
+ }
+ }
+
+ if (options::nl_max_after_func_body() > 0)
+ {
+ log_rule_B("nl_max_after_func_body");
+
+ if (options::nl_max_after_func_body() < pc->GetNlCount())
+ {
+ log_rule_B("nl_max_after_func_body");
+ blank_line_set(pc, options::nl_max_after_func_body);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // Add blanks after function prototypes
+ if ( ( prev->Is(CT_SEMICOLON)
+ && prev->GetParentType() == CT_FUNC_PROTO)
+ || is_func_proto_group(prev, CT_FUNC_DEF))
+ {
+ if (options::nl_after_func_proto() > pc->GetNlCount())
+ {
+ log_rule_B("nl_after_func_proto");
+ pc->SetNlCount(options::nl_after_func_proto());
+ MARK_CHANGE();
+ }
+
+ if ( (options::nl_after_func_proto_group() > pc->GetNlCount())
+ && next->IsNotNullChunk()
+ && next->GetParentType() != CT_FUNC_PROTO
+ && !is_func_proto_group(next, CT_FUNC_DEF))
+ {
+ log_rule_B("nl_after_func_proto_group");
+ blank_line_set(pc, options::nl_after_func_proto_group);
+ }
+ }
+
+ // Issue #411: Add blanks after function class prototypes
+ if ( ( prev->Is(CT_SEMICOLON)
+ && prev->GetParentType() == CT_FUNC_CLASS_PROTO)
+ || is_func_proto_group(prev, CT_FUNC_CLASS_DEF))
+ {
+ if (options::nl_after_func_class_proto() > pc->GetNlCount())
+ {
+ log_rule_B("nl_after_func_class_proto");
+ pc->SetNlCount(options::nl_after_func_class_proto());
+ MARK_CHANGE();
+ }
+
+ if ( (options::nl_after_func_class_proto_group() > pc->GetNlCount())
+ && next->IsNot(CT_FUNC_CLASS_PROTO)
+ && next->GetParentType() != CT_FUNC_CLASS_PROTO
+ && !is_func_proto_group(next, CT_FUNC_CLASS_DEF))
+ {
+ log_rule_B("nl_after_func_class_proto_group");
+ blank_line_set(pc, options::nl_after_func_class_proto_group);
+ }
+ }
+
+ // Add blanks after struct/enum/union/class
+ if ( ( prev->Is(CT_SEMICOLON)
+ || prev->Is(CT_BRACE_CLOSE))
+ && ( prev->GetParentType() == CT_STRUCT
+ || prev->GetParentType() == CT_ENUM
+ || prev->GetParentType() == CT_UNION
+ || prev->GetParentType() == CT_CLASS))
+ {
+ auto &opt = (prev->GetParentType() == CT_CLASS
+ ? options::nl_after_class
+ : options::nl_after_struct);
+ log_rule_B("nl_after_class");
+ log_rule_B("nl_after_struct");
+
+ if (opt() > pc->GetNlCount())
+ {
+ // Issue #1702
+ // look back if we have a variable
+ Chunk *tmp = pc;
+ bool is_var_def = false;
+ bool is_fwd_decl = false;
+
+ while ((tmp = tmp->GetPrev())->IsNotNullChunk())
+ {
+ if (tmp->GetLevel() > pc->GetLevel())
+ {
+ continue;
+ }
+ LOG_FMT(LBLANK, "%s(%d): %zu:%zu token is '%s'\n",
+ __func__, __LINE__, tmp->GetOrigLine(), tmp->GetOrigCol(), tmp->Text());
+
+ if (tmp->TestFlags(PCF_VAR_DEF))
+ {
+ is_var_def = true;
+ break;
+ }
+
+ if (tmp->Is(prev->GetParentType()))
+ {
+ is_fwd_decl = tmp->TestFlags(PCF_INCOMPLETE);
+ break;
+ }
+ }
+ LOG_FMT(LBLANK, "%s(%d): var_def = %s, fwd_decl = %s\n",
+ __func__, __LINE__,
+ is_var_def ? "yes" : "no",
+ is_fwd_decl ? "yes" : "no");
+
+ if ( !is_var_def
+ && !is_fwd_decl)
+ {
+ blank_line_set(pc, opt);
+ }
+ }
+ }
+
+ // Change blanks between a function comment and body
+ if ( (options::nl_comment_func_def() != 0)
+ && pcmt->Is(CT_COMMENT_MULTI)
+ && pcmt->GetParentType() == CT_COMMENT_WHOLE
+ && next->IsNotNullChunk()
+ && ( next->GetParentType() == CT_FUNC_DEF
+ || next->GetParentType() == CT_FUNC_CLASS_DEF))
+ {
+ log_rule_B("nl_comment_func_def");
+
+ if (options::nl_comment_func_def() != pc->GetNlCount())
+ {
+ log_rule_B("nl_comment_func_def");
+ blank_line_set(pc, options::nl_comment_func_def);
+ }
+ }
+
+ // Change blanks after a try-catch-finally block
+ if ( (options::nl_after_try_catch_finally() != 0)
+ && (options::nl_after_try_catch_finally() != pc->GetNlCount())
+ && prev->IsNotNullChunk()
+ && next->IsNotNullChunk())
+ {
+ log_rule_B("nl_after_try_catch_finally");
+
+ if ( prev->Is(CT_BRACE_CLOSE)
+ && ( prev->GetParentType() == CT_CATCH
+ || prev->GetParentType() == CT_FINALLY))
+ {
+ if ( next->IsNot(CT_BRACE_CLOSE)
+ && next->IsNot(CT_CATCH)
+ && next->IsNot(CT_FINALLY))
+ {
+ blank_line_set(pc, options::nl_after_try_catch_finally);
+ log_rule_B("nl_after_try_catch_finally");
+ }
+ }
+ }
+
+ // Change blanks after a try-catch-finally block
+ if ( (options::nl_between_get_set() != 0)
+ && (options::nl_between_get_set() != pc->GetNlCount())
+ && prev->IsNotNullChunk()
+ && next->IsNotNullChunk())
+ {
+ log_rule_B("nl_between_get_set");
+
+ if ( prev->GetParentType() == CT_GETSET
+ && next->IsNot(CT_BRACE_CLOSE)
+ && ( prev->Is(CT_BRACE_CLOSE)
+ || prev->Is(CT_SEMICOLON)))
+ {
+ blank_line_set(pc, options::nl_between_get_set);
+ log_rule_B("nl_between_get_set");
+ }
+ }
+
+ // Change blanks after a try-catch-finally block
+ if ( (options::nl_around_cs_property() != 0)
+ && (options::nl_around_cs_property() != pc->GetNlCount())
+ && prev->IsNotNullChunk()
+ && next->IsNotNullChunk())
+ {
+ log_rule_B("nl_around_cs_property");
+
+ if ( prev->Is(CT_BRACE_CLOSE)
+ && prev->GetParentType() == CT_CS_PROPERTY
+ && next->IsNot(CT_BRACE_CLOSE))
+ {
+ blank_line_set(pc, options::nl_around_cs_property);
+ log_rule_B("nl_around_cs_property");
+ }
+ else if ( next->GetParentType() == CT_CS_PROPERTY
+ && next->TestFlags(PCF_STMT_START))
+ {
+ blank_line_set(pc, options::nl_around_cs_property);
+ log_rule_B("nl_around_cs_property");
+ }
+ }
+
+ // Control blanks before an access spec
+ if ( (options::nl_before_access_spec() > 0)
+ && (options::nl_before_access_spec() != pc->GetNlCount())
+ && next->Is(CT_ACCESS))
+ {
+ log_rule_B("nl_before_access_spec");
+
+ // Don't add blanks after an open brace
+ if ( prev->IsNullChunk()
+ || ( prev->IsNot(CT_BRACE_OPEN)
+ && prev->IsNot(CT_VBRACE_OPEN)))
+ {
+ log_rule_B("nl_before_access_spec");
+ blank_line_set(pc, options::nl_before_access_spec);
+ }
+ }
+
+ // Change blanks inside namespace braces
+ if ( (options::nl_inside_namespace() != 0)
+ && (options::nl_inside_namespace() != pc->GetNlCount())
+ && ( ( prev->Is(CT_BRACE_OPEN)
+ && prev->GetParentType() == CT_NAMESPACE)
+ || ( next->Is(CT_BRACE_CLOSE)
+ && next->GetParentType() == CT_NAMESPACE)))
+ {
+ log_rule_B("nl_inside_namespace");
+ blank_line_set(pc, options::nl_inside_namespace);
+ }
+
+ // Control blanks before a whole-file #ifdef
+ if ( options::nl_before_whole_file_ifdef() != 0
+ && options::nl_before_whole_file_ifdef() != pc->GetNlCount()
+ && next->Is(CT_PREPROC)
+ && next->GetParentType() == CT_PP_IF
+ && ifdef_over_whole_file()
+ && next->TestFlags(PCF_WF_IF))
+ {
+ log_rule_B("nl_before_whole_file_ifdef");
+ blank_line_set(pc, options::nl_before_whole_file_ifdef);
+ }
+
+ // Control blanks after a whole-file #ifdef
+ if ( options::nl_after_whole_file_ifdef() != 0
+ && options::nl_after_whole_file_ifdef() != pc->GetNlCount())
+ {
+ Chunk *pp_start = prev->GetPpStart();
+
+ if ( pp_start->IsNotNullChunk()
+ && pp_start->GetParentType() == CT_PP_IF
+ && ifdef_over_whole_file()
+ && pp_start->TestFlags(PCF_WF_IF))
+ {
+ log_rule_B("nl_after_whole_file_ifdef");
+ blank_line_set(pc, options::nl_after_whole_file_ifdef);
+ }
+ }
+
+ // Control blanks before a whole-file #endif
+ if ( options::nl_before_whole_file_endif() != 0
+ && options::nl_before_whole_file_endif() != pc->GetNlCount()
+ && next->Is(CT_PREPROC)
+ && next->GetParentType() == CT_PP_ENDIF
+ && ifdef_over_whole_file()
+ && next->TestFlags(PCF_WF_ENDIF))
+ {
+ log_rule_B("nl_before_whole_file_endif");
+ blank_line_set(pc, options::nl_before_whole_file_endif);
+ }
+
+ // Control blanks after a whole-file #endif
+ if ( options::nl_after_whole_file_endif() != 0
+ && options::nl_after_whole_file_endif() != pc->GetNlCount())
+ {
+ Chunk *pp_start = prev->GetPpStart();
+
+ if ( pp_start->IsNotNullChunk()
+ && pp_start->GetParentType() == CT_PP_ENDIF
+ && ifdef_over_whole_file()
+ && pp_start->TestFlags(PCF_WF_ENDIF))
+ {
+ log_rule_B("nl_after_whole_file_endif");
+ blank_line_set(pc, options::nl_after_whole_file_endif);
+ }
+ }
+
+ if ( line_added
+ && pc->GetNlCount() > 1)
+ {
+ pc->SetNlCount(pc->GetNlCount() - 1);
+ LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, text is '%s', new line count is now %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), pc->GetNlCount());
+ }
+ LOG_FMT(LBLANK, "%s(%d): orig line is %zu, orig col is %zu, text is '%s', end new line count is now %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), pc->GetNlCount());
+ }
+} // do_blank_lines
+
+
+void newlines_cleanup_dup()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc = Chunk::GetHead();
+ Chunk *next = pc;
+
+ while (pc->IsNotNullChunk())
+ {
+ next = next->GetNext();
+
+ if ( pc->Is(CT_NEWLINE)
+ && next->Is(CT_NEWLINE))
+ {
+ next->SetNlCount(max(pc->GetNlCount(), next->GetNlCount()));
+ Chunk::Delete(pc);
+ MARK_CHANGE();
+ }
+ pc = next;
+ }
+} // newlines_cleanup_dup
+
+
+static void newlines_enum_entries(Chunk *open_brace, iarf_e av)
+{
+ LOG_FUNC_ENTRY();
+
+ for (Chunk *pc = open_brace->GetNextNc();
+ pc->IsNotNullChunk() && pc->GetLevel() > open_brace->GetLevel();
+ pc = pc->GetNextNc())
+ {
+ if ( (pc->GetLevel() != (open_brace->GetLevel() + 1))
+ || pc->IsNot(CT_COMMA)
+ || ( pc->Is(CT_COMMA)
+ && ( pc->GetNext()->GetType() == CT_COMMENT_CPP
+ || pc->GetNext()->GetType() == CT_COMMENT
+ || pc->GetNext()->GetType() == CT_COMMENT_MULTI)))
+ {
+ continue;
+ }
+ newline_iarf(pc, av);
+ }
+
+ newline_iarf(open_brace, av);
+} // newlines_enum_entries
+
+
+static void newlines_double_space_struct_enum_union(Chunk *open_brace)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc = Chunk::NullChunkPtr;
+
+ if (open_brace != nullptr)
+ {
+ pc = open_brace;
+ }
+
+ while ( (pc = pc->GetNextNc())->IsNotNullChunk()
+ && pc->GetLevel() > open_brace->GetLevel())
+ {
+ if ( pc->GetLevel() != (open_brace->GetLevel() + 1)
+ || pc->IsNot(CT_NEWLINE))
+ {
+ continue;
+ }
+ /*
+ * If the newline is NOT after a comment or a brace open and
+ * it is before a comment, then make sure that the newline is
+ * at least doubled
+ */
+ Chunk *prev = pc->GetPrev();
+
+ if ( !prev->IsComment()
+ && prev->IsNot(CT_BRACE_OPEN)
+ && pc->GetNext()->IsComment())
+ {
+ if (pc->GetNlCount() < 2)
+ {
+ double_newline(pc);
+ }
+ }
+ }
+} // newlines_double_space_struct_enum_union
+
+
+void annotations_newlines()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *next;
+ Chunk *prev;
+ Chunk *ae; // last token of the annotation
+ Chunk *pc = Chunk::GetHead();
+
+ while ( (pc = pc->GetNextType(CT_ANNOTATION))->IsNotNullChunk()
+ && (next = pc->GetNextNnl())->IsNotNullChunk())
+ {
+ // find the end of this annotation
+ if (next->IsParenOpen())
+ {
+ // TODO: control newline between annotation and '(' ?
+ ae = next->GetClosingParen();
+ }
+ else
+ {
+ ae = pc;
+ }
+
+ if (ae->IsNullChunk())
+ {
+ break;
+ }
+ LOG_FMT(LANNOT, "%s(%d): orig line is %zu, orig col is %zu, annotation is '%s', end @ orig line %zu, orig col %zu, is '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(),
+ ae->GetOrigLine(), ae->GetOrigCol(), ae->Text());
+
+ prev = ae->GetPrev(); // Issue #1845
+ LOG_FMT(LANNOT, "%s(%d): prev orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, prev->GetOrigLine(), prev->GetOrigCol(), prev->Text());
+ next = ae->GetNextNnl();
+
+ if (next->Is(CT_ANNOTATION))
+ {
+ LOG_FMT(LANNOT, "%s(%d): -- nl_between_annotation\n",
+ __func__, __LINE__);
+ newline_iarf(ae, options::nl_between_annotation());
+ log_rule_B("nl_between_annotation");
+ }
+
+ if (next->Is(CT_NEWLINE))
+ {
+ if (next->Is(CT_ANNOTATION))
+ {
+ LOG_FMT(LANNOT, "%s(%d): -- nl_after_annotation\n",
+ __func__, __LINE__);
+ newline_iarf(ae, options::nl_after_annotation());
+ log_rule_B("nl_after_annotation");
+ }
+ }
+ }
+} // annotations_newlines
+
+
+bool newlines_between(Chunk *pc_start, Chunk *pc_end, size_t &newlines, E_Scope scope)
+{
+ if ( pc_start->IsNullChunk()
+ || pc_end->IsNullChunk())
+ {
+ return(false);
+ }
+ newlines = 0;
+
+ Chunk *it = pc_start;
+
+ for ( ; it->IsNotNullChunk() && it != pc_end; it = it->GetNext(scope))
+ {
+ newlines += it->GetNlCount();
+ }
+
+ // newline count is valid if search stopped on expected chunk
+ return(it == pc_end);
+} // newlines_between
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/newlines.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/newlines.h
new file mode 100644
index 00000000..c9e15511
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/newlines.h
@@ -0,0 +1,206 @@
+/**
+ * @file newlines.h
+ * prototypes for newlines.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef NEWLINES_H_INCLUDED
+#define NEWLINES_H_INCLUDED
+
+#include "chunk.h"
+
+/**
+ * Double the newline, if allowed.
+ */
+void double_newline(Chunk *nl);
+
+/**
+ * Remove all extra newlines.
+ * Modify line breaks as needed.
+ */
+void newlines_remove_newlines();
+
+
+/**
+ * Remove all newlines that fail the checks performed by the can_increase_nl() function
+ */
+void newlines_remove_disallowed();
+
+
+/** Step through all chunks, altering newlines inside parens of if/for/while/do as needed.
+ * Handles the style options: nl_multi_line_sparen_open, nl_multi_line_sparen_close, nl_before_if_closing_paren
+ */
+void newlines_sparens();
+
+//! Step through all chunks.
+void newlines_cleanup_braces(bool first);
+
+
+void newlines_cleanup_angles();
+
+
+//! Handle insertion/removal of blank lines before if/for/while/do and functions
+void newlines_insert_blank_lines();
+
+
+/**
+ * Handle removal of extra blank lines in functions
+ * x <= 0: do nothing, x > 0: allow max x-1 blank lines
+ */
+void newlines_functions_remove_extra_blank_lines();
+
+
+void newlines_squeeze_ifdef();
+
+/**
+ * In case of consecutive closing parens, which follow a newline,
+ * the closing paren are altered to different lines, as per the respective opening parens.
+ * In the given example, first 2 opening paren are in same line, hence the respective closing paren are put in the same line.
+ * input:
+ * func1(func2(
+ * func3(
+ * func4(
+ * )
+ * )
+ * )
+ * );
+ * output:
+ * func1(func2(
+ * func3(
+ * func4(
+ * )
+ * )
+ * ));
+ */
+void newlines_squeeze_paren_close();
+
+
+//! removes unnecessary newlines at start and end of a file
+void newlines_eat_start_end();
+
+
+/**
+ * Searches for a chunk of type chunk_type and moves them, if needed.
+ * Will not move tokens that are on their own line or have other than
+ * exactly 1 newline before (options::pos_comma() == TRAIL) or after (options::pos_comma() == LEAD).
+ * We can't remove a newline if it is right before a preprocessor.
+ */
+void newlines_chunk_pos(E_Token chunk_type, uncrustify::token_pos_e mode);
+
+
+/**
+ * Searches for CT_CLASS_COLON and moves them, if needed.
+ * Also breaks up the args
+ */
+void newlines_class_colon_pos(E_Token tok);
+
+
+void newlines_cleanup_dup();
+
+
+void annotations_newlines();
+
+
+void newline_after_multiline_comment();
+
+
+//! Handle insertion of blank lines after label colons
+void newline_after_label_colon();
+
+
+/**
+ * Scans for newline tokens and changes the nl_count.
+ * A newline token has a minimum nl_count of 1.
+ * Note that a blank line is actually 2 newlines, unless the newline is the
+ * first chunk.
+ * So, most comparisons have +1 below.
+ */
+void do_blank_lines();
+
+
+/**
+ * Clears the PCF_ONE_LINER flag on the current line.
+ * Done right before inserting a newline.
+ */
+void undo_one_liner(Chunk *pc);
+
+
+/**
+ * Does a simple Ignore, Add, Remove, or Force after the given chunk
+ *
+ * @param pc The chunk
+ * @param av The IARF value
+ */
+void newline_iarf(Chunk *pc, uncrustify::iarf_e av);
+
+
+/**
+ * Add a newline before the chunk if there isn't already a newline present.
+ * Virtual braces are skipped, as they do not contribute to the output.
+ */
+Chunk *newline_add_before(Chunk *pc);
+
+
+/**
+ * Add a newline after the chunk if there isn't already a newline present.
+ * Virtual braces are skipped, as they do not contribute to the output.
+ */
+Chunk *newline_force_before(Chunk *pc);
+
+
+Chunk *newline_add_after(Chunk *pc);
+
+
+Chunk *newline_force_after(Chunk *pc);
+
+
+/**
+ * Removes any CT_NEWLINE or CT_NL_CONT between start and end.
+ * Start must be before end on the chunk list.
+ * If the 'PCF_IN_PREPROC' status differs between two tags, we can't remove
+ * the newline.
+ *
+ * @param start The starting chunk (if it is a newline, it will be removed!)
+ * @param end The ending chunk (will not be removed, even if it is a newline)
+ *
+ * @return true/false - removed something
+ */
+void newline_del_between(Chunk *start, Chunk *end);
+
+
+/**
+ * Add a newline between two tokens.
+ * If there is already a newline between then, nothing is done.
+ * Otherwise a newline is inserted.
+ *
+ * If end is CT_BRACE_OPEN and a comment and newline follow, then
+ * the brace open is moved instead of inserting a newline.
+ *
+ * In this situation:
+ * if (...) { //comment
+ *
+ * you get:
+ * if (...) //comment
+ * {
+ */
+Chunk *newline_add_between(Chunk *start, Chunk *end);
+
+
+/**
+ * Counts newlines between two chunk elements
+ *
+ * @param pc_start chunk from which the counting of newlines will start
+ * @param pc_end chunk at which the counting of newlines will end
+ * @param newlines reference in which the amount of newlines will be written to
+ * (will be initialized with 0)
+ * @param scope specifies region chunks should/should not be considered.
+ *
+ * @return false if pc_start or pc_end are null chunks or if pc_end is not reached
+ * @return true if above cases are not met
+ */
+bool newlines_between(Chunk *pc_start, Chunk *pc_end, size_t &newlines, E_Scope scope = E_Scope::ALL);
+
+
+#endif /* NEWLINES_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/option.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/option.cpp
new file mode 100644
index 00000000..be09ac2f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/option.cpp
@@ -0,0 +1,1325 @@
+/**
+ * @file option.cpp
+ * Parses the options from the config file.
+ *
+ * @author Ben Gardner
+ * @author Guy Maurel October 2015, 2021
+ * @author Matthew Woehlke since version 0.67
+ * @license GPL v2+
+ */
+
+#include "option.h"
+
+#include "keywords.h"
+#include "language_names.h"
+#include "uncrustify.h"
+#include "uncrustify_version.h"
+
+#include <fstream>
+#include <unordered_map>
+
+#include <cctype> // to get std::tolower
+#include <cstdarg> // to get va_start, va_end
+
+
+namespace uncrustify
+{
+
+namespace
+{
+
+static const char *DOC_TEXT_END = u8R"___(
+# Meaning of the settings:
+# Ignore - do not do any changes
+# Add - makes sure there is 1 or more space/brace/newline/etc
+# Force - makes sure there is exactly 1 space/brace/newline/etc,
+# behaves like Add in some contexts
+# Remove - removes space/brace/newline/etc
+#
+#
+# - Token(s) can be treated as specific type(s) with the 'set' option:
+# `set tokenType tokenString [tokenString...]`
+#
+# Example:
+# `set BOOL __AND__ __OR__`
+#
+# tokenTypes are defined in src/token_enum.h, use them without the
+# 'CT_' prefix: 'CT_BOOL' => 'BOOL'
+#
+#
+# - Token(s) can be treated as type(s) with the 'type' option.
+# `type tokenString [tokenString...]`
+#
+# Example:
+# `type int c_uint_8 Rectangle`
+#
+# This can also be achieved with `set TYPE int c_uint_8 Rectangle`
+#
+#
+# To embed whitespace in tokenStrings use the '\' escape character, or quote
+# the tokenStrings. These quotes are supported: "'`
+#
+#
+# - Support for the auto detection of languages through the file ending can be
+# added using the 'file_ext' command.
+# `file_ext langType langString [langString..]`
+#
+# Example:
+# `file_ext CPP .ch .cxx .cpp.in`
+#
+# langTypes are defined in uncrusify_types.h in the lang_flag_e enum, use
+# them without the 'LANG_' prefix: 'LANG_CPP' => 'CPP'
+#
+#
+# - Custom macro-based indentation can be set up using 'macro-open',
+# 'macro-else' and 'macro-close'.
+# `(macro-open | macro-else | macro-close) tokenString`
+#
+# Example:
+# `macro-open BEGIN_TEMPLATE_MESSAGE_MAP`
+# `macro-open BEGIN_MESSAGE_MAP`
+# `macro-close END_MESSAGE_MAP`
+#
+#
+)___";
+
+
+std::vector<OptionGroup> option_groups;
+std::unordered_map<std::string, GenericOption *> option_map;
+
+#define LOG_CONFIG(...) \
+ log_config(); LOG_FMT(LNOTE, __VA_ARGS__);
+
+
+//-----------------------------------------------------------------------------
+constexpr int option_level(int major, int minor, int patch = 0)
+{
+ return((major << 20) | (minor << 10) | (patch << 0));
+}
+
+
+//-----------------------------------------------------------------------------
+void log_config()
+{
+ // Print the name of the configuration file only once
+ static bool config_name_logged = false;
+
+ if (!config_name_logged)
+ {
+ LOG_FMT(LNOTE, "log_config: the configuration file is: %s\n",
+ cpd.filename.c_str());
+ config_name_logged = true;
+ }
+}
+
+
+//-----------------------------------------------------------------------------
+// This identity function exists so that all Option<T>::str can simply call
+// to_string(m_val); this function will be used by Option<string>
+std::string to_string(const std::string &in)
+{
+ return(in);
+}
+
+using std::to_string;
+
+
+//-----------------------------------------------------------------------------
+std::string to_lower(const char *in, std::string::size_type size = 0)
+{
+ std::string out;
+
+ if (size > 0)
+ {
+ out.reserve(size);
+ }
+
+ while (*in)
+ {
+ out += static_cast<char>(std::tolower(*in));
+ ++in;
+ }
+ return(out);
+}
+
+
+//-----------------------------------------------------------------------------
+std::string to_lower(const std::string &in)
+{
+ return(to_lower(in.data(), in.size()));
+}
+
+
+//-----------------------------------------------------------------------------
+bool is_arg_sep(int ch)
+{
+ return( isspace(ch)
+ || ch == ','
+ || ch == '=');
+}
+
+
+//-----------------------------------------------------------------------------
+bool is_varg_sep(int ch)
+{
+ return(ch == '.');
+}
+
+
+//-----------------------------------------------------------------------------
+std::vector<std::string> split_args(std::string in, const char *filename,
+ bool (*is_sep)(int))
+{
+ std::vector<std::string> out;
+ std::string::size_type n = 0;
+ std::string::size_type k = in.size();
+
+ // Parse input string
+ while (n < k)
+ {
+ // Skip leading space
+ while ( n < k
+ && is_sep(in[n]))
+ {
+ ++n;
+ }
+
+ // Detect comments or trailing space
+ if ( n >= k
+ || in[n] == '#')
+ {
+ break;
+ }
+
+ // Detect and extract quoted string
+ if (const auto *quote = strchr("\'\"`", in[n]))
+ {
+ const auto start = ++n;
+
+ for ((void)n; in[n] != *quote; ++n)
+ {
+ if ( n < k
+ && in[n] == '\\')
+ {
+ in.erase(n, 1);
+ --k;
+ }
+
+ if (n >= k)
+ {
+ OptionWarning w{ filename };
+ w("found unterminated quoted-string");
+ return{};
+ }
+ }
+
+ out.push_back(in.substr(start, n - start));
+
+ if ( ++n < k
+ && !is_sep(in[n]))
+ {
+ OptionWarning w{ filename };
+ w("unexpected text following quoted-string");
+ return{};
+ }
+ continue;
+ }
+ // Extract anything else
+ const auto start = n;
+
+ for ((void)n;
+ ( n < k
+ && !is_sep(in[n]));
+ ++n)
+ {
+ if (in[n] == '\\')
+ {
+ in.erase(n, 1);
+ --k;
+ }
+
+ if (n >= k)
+ {
+ OptionWarning w{ filename };
+ w("found unterminated quoted-string");
+ return{};
+ }
+ }
+
+ out.push_back(in.substr(start, n - start));
+ }
+ return(out);
+} // split_args
+
+
+//-----------------------------------------------------------------------------
+bool is_path_relative(const std::string &path)
+{
+ assert(!path.empty());
+
+#ifdef WIN32
+ // Check for partition labels as indication for an absolute path
+ // 'X:\path\to\file' style absolute disk path
+ if ( path.size() > 1
+ && isalpha(path[0])
+ && path[1] == ':')
+ {
+ return(false);
+ }
+
+ // Check for double backslashes as indication for a network path
+ // '\\server\path\to\file style' absolute UNC path
+ if ( path.size() > 1
+ && path[0] == '\\'
+ && path[1] == '\\')
+ {
+ return(false);
+ }
+#endif
+
+ // Check for a slash as indication for a filename with leading path
+ // '/path/to/file' style absolute path
+ return(path[0] != '/');
+}
+
+
+//-----------------------------------------------------------------------------
+void print_description(FILE *pfile, std::string description,
+ const char *eol_marker)
+{
+ // Descriptions always start with a '\n', so skip the first character
+ for (std::string::size_type start = 1, length = description.length();
+ ( start != std::string::npos
+ && start < length);
+ ++start)
+ {
+ // Check for empty line so we can squelch trailing whitespace
+ if (description[start] == '\n')
+ {
+ fprintf(pfile, "#%s", eol_marker);
+ }
+ else
+ {
+ const auto end = description.find('\n', start);
+ fprintf(pfile, "# %s%s",
+ description.substr(start, end - start).c_str(), eol_marker);
+ start = end;
+ }
+ }
+}
+
+
+//-----------------------------------------------------------------------------
+bool process_option_line_compat_0_68(const std::string &cmd,
+ const std::vector<std::string> &args,
+ const char *filename)
+{
+ if (cmd == "sp_cpp_lambda_paren")
+ {
+ OptionWarning w{ filename, OptionWarning::MINOR };
+ w("option '%s' is deprecated; use '%s' instead",
+ cmd.c_str(), options::sp_cpp_lambda_square_paren.name());
+
+ UNUSED(options::sp_cpp_lambda_square_paren.read(args[1].c_str()));
+ return(true);
+ }
+ return(false);
+} // process_option_line_compat_0_68
+
+
+bool process_option_line_compat_0_70(const std::string &cmd, const char *filename)
+{
+ if (cmd == "sp_word_brace") // Issue #2428
+ {
+ OptionWarning w{ filename, OptionWarning::MINOR };
+ w("option '%s' is deprecated; did you want to use '%s' instead?",
+ cmd.c_str(), options::sp_type_brace_init_lst.name());
+
+ //UNUSED(options::sp_type_brace_init_lst.read(args[1].c_str()));
+ return(true);
+ }
+ return(false);
+} // process_option_line_compat_0_70
+
+
+bool process_option_line_compat_0_73(const std::string &cmd, const char *filename)
+{
+ if (cmd == "indent_sing_line_comments") // Issue #3249
+ {
+ OptionWarning w{ filename, OptionWarning::MINOR };
+ w("option '%s' is deprecated; did you want to use '%s' instead?",
+ cmd.c_str(), options::indent_single_line_comments_before.name());
+
+ //UNUSED(options::indent_single_line_comments_before.read(args[1].c_str()));
+ return(true);
+ }
+
+ if (cmd == "sp_before_tr_emb_cmt") // Issue #3339
+ {
+ OptionWarning w{ filename, OptionWarning::MINOR };
+ w("option '%s' is deprecated; did you want to use '%s' instead?",
+ cmd.c_str(), options::sp_before_tr_cmt.name());
+
+ //UNUSED(options::sp_before_tr_cmt.read(args[1].c_str()));
+ return(true);
+ }
+
+ if (cmd == "sp_num_before_tr_emb_cmt") // Issue #3339
+ {
+ OptionWarning w{ filename, OptionWarning::MINOR };
+ w("option '%s' is deprecated; did you want to use '%s' instead?",
+ cmd.c_str(), options::sp_num_before_tr_cmt.name());
+
+ //UNUSED(options::sp_num_before_tr_cmt.read(args[1].c_str()));
+ return(true);
+ }
+ return(false);
+} // process_option_line_compat_0_73
+
+
+bool process_option_line_compat_0_74(const std::string &cmd, const char *filename)
+{
+ if (cmd == "sp_type_question") // PR #3638
+ {
+ OptionWarning w{ filename, OptionWarning::MINOR };
+ w("option '%s' is deprecated; did you want to use '%s' instead?",
+ cmd.c_str(), options::sp_before_ptr_star.name());
+
+ return(true);
+ }
+ return(false);
+} // process_option_line_compat_0_74
+
+
+bool process_option_line_compat_0_75(const std::string &cmd, const char *filename)
+{
+ if (cmd == "pp_space")
+ {
+ OptionWarning w{ filename, OptionWarning::MINOR };
+ w("option '%s' is deprecated; it has been replaced by '%s'.",
+ cmd.c_str(), options::pp_space_after.name());
+
+ return(true);
+ }
+
+ if (cmd == "pp_space_before")
+ {
+ OptionWarning w{ filename, OptionWarning::MINOR };
+ w("option '%s' is deprecated; it was a temporary option used\n"
+ "during the development of version 0.76. Use '%s' and '%s' instead.",
+ cmd.c_str(), options::pp_indent.name(), options::pp_indent_count.name());
+
+ return(true);
+ }
+ return(false);
+} // process_option_line_compat_0_75
+
+
+bool process_option_line_compat_0_76(const std::string &cmd, const std::vector<std::string> &args, const char *filename)
+{
+ if (cmd == "nl_func_var_def_blk")
+ {
+ OptionWarning w{ filename, OptionWarning::MINOR };
+ w("option '%s' is deprecated; it has been replaced by '%s'.\n"
+ "You can also use '%s' for additional functionality",
+ cmd.c_str(), options::nl_var_def_blk_end_func_top.name(),
+ options::nl_var_def_blk_end.name());
+
+ UNUSED(options::nl_var_def_blk_end_func_top.read(args[1].c_str()));
+ return(true);
+ }
+ return(false);
+} // process_option_line_compat_0_76
+
+} // namespace
+
+///////////////////////////////////////////////////////////////////////////////
+
+//BEGIN Option<T> and helpers
+
+
+//-----------------------------------------------------------------------------
+OptionWarning::OptionWarning(const char *filename, Severity severity)
+{
+ UNUSED(severity);
+
+ if (cpd.line_number != 0)
+ {
+ fprintf(stderr, "%s:%u: ", filename, cpd.line_number);
+ }
+ else
+ {
+ fprintf(stderr, "%s: ", filename);
+ }
+}
+
+
+//-----------------------------------------------------------------------------
+OptionWarning::OptionWarning(const GenericOption *opt, Severity severity)
+{
+ UNUSED(severity);
+
+ fprintf(stderr, "Option<%s>: at %s:%d: ", to_string(opt->type()),
+ cpd.filename.c_str(), cpd.line_number);
+}
+
+
+//-----------------------------------------------------------------------------
+OptionWarning::~OptionWarning()
+{
+ fprintf(stderr, "\n");
+ log_flush(true);
+}
+
+
+//-----------------------------------------------------------------------------
+void OptionWarning::operator()(const char *fmt, ...)
+{
+ va_list args;
+
+ va_start(args, fmt);
+ vfprintf(stderr, fmt, args);
+ va_end(args);
+}
+
+
+//-----------------------------------------------------------------------------
+void GenericOption::warnUnexpectedValue(const char *actual) const
+{
+ OptionWarning w{ this };
+
+ auto values = possibleValues();
+
+ if (values[1] == nullptr)
+ {
+ w("Expected %s ", *values);
+ }
+ else
+ {
+ w("Expected one of ");
+
+ while (*values)
+ {
+ w("'%s'", *values);
+
+ if (*(++values))
+ {
+ w(", ");
+ }
+ }
+ }
+ w(", for '%s'; got '%s'", name(), actual);
+}
+
+
+//-----------------------------------------------------------------------------
+void GenericOption::warnIncompatibleReference(const GenericOption *ref) const
+{
+ OptionWarning w{ this };
+
+ w("%s references option %s with incompatible type %s",
+ name(), ref->name(), to_string(ref->type()));
+}
+
+
+//-----------------------------------------------------------------------------
+template<typename T>
+bool read_enum(const char *in, Option<T> &out)
+{
+ assert(in);
+
+ if (convert_string(in, out.m_val))
+ {
+ return(true);
+ }
+
+ if (const auto *const opt = find_option(in))
+ {
+ if (opt->type() != out.type())
+ {
+ out.warnIncompatibleReference(opt);
+ return(false);
+ }
+ auto &topt = *static_cast<const Option<T> *>(opt);
+ out.m_val = topt();
+ return(true);
+ }
+ out.warnUnexpectedValue(in);
+ return(false);
+}
+
+
+//-----------------------------------------------------------------------------
+template<typename T>
+bool read_number(const char *in, Option<T> &out)
+{
+ assert(in);
+
+ char *c;
+ const auto val = std::strtol(in, &c, 10);
+
+ if ( *c == 0
+ && out.validate(val))
+ {
+ out.m_val = static_cast<T>(val);
+ return(true);
+ }
+ bool invert = false;
+
+ if (strchr("-", in[0]))
+ {
+ invert = true;
+ ++in;
+ }
+
+ if (const auto *const opt = find_option(in))
+ {
+ LOG_CONFIG("%s(%d): line_number is %d, option(%s) %s, ref(%s) %s\n",
+ __func__, __LINE__, cpd.line_number,
+ to_string(out.type()), out.name(),
+ to_string(opt->type()), opt->name());
+
+ long tval;
+
+ if (opt->type() == OT_NUM)
+ {
+ auto &sopt = *static_cast<const Option<signed> *>(opt);
+ tval = static_cast<long>(sopt());
+ }
+ else if (opt->type() == OT_UNUM)
+ {
+ auto &uopt = *static_cast<const Option<unsigned> *>(opt);
+ tval = static_cast<long>(uopt());
+ }
+ else
+ {
+ out.warnIncompatibleReference(opt);
+ return(false);
+ }
+ const auto rval = (invert ? -tval : tval);
+
+ if (out.validate(rval))
+ {
+ out.m_val = static_cast<T>(rval);
+ return(true);
+ }
+ return(false);
+ }
+ out.warnUnexpectedValue(in);
+ return(false);
+} // read_number
+
+
+//-----------------------------------------------------------------------------
+template<typename T>
+void Option<T>::reset()
+{
+ m_val = m_default;
+}
+
+
+//-----------------------------------------------------------------------------
+template<typename T>
+std::string Option<T>::str() const
+{
+ return(to_string(m_val));
+}
+
+
+//-----------------------------------------------------------------------------
+template<typename T>
+std::string Option<T>::defaultStr() const
+{
+ return(m_default != T{} ? to_string(m_default) : std::string{});
+}
+
+// Explicit instantiations
+template class Option<bool>;
+template class Option<iarf_e>;
+template class Option<line_end_e>;
+template class Option<token_pos_e>;
+template class Option<signed>;
+template class Option<unsigned>;
+template class Option<std::string>;
+
+//END Option<T> and helpers
+
+///////////////////////////////////////////////////////////////////////////////
+
+//BEGIN Option<bool>
+
+
+//-----------------------------------------------------------------------------
+template<>
+option_type_e Option<bool>::type() const
+{
+ return(OT_BOOL);
+}
+
+
+//-----------------------------------------------------------------------------
+template<>
+const char *const *Option<bool>::possibleValues() const
+{
+ static char const *values[] = { "true", "false", nullptr };
+
+ return(values);
+}
+
+
+//-----------------------------------------------------------------------------
+template<>
+bool Option<bool>::read(const char *in)
+{
+ assert(in);
+
+ if (convert_string(in, m_val))
+ {
+ return(true);
+ }
+ bool invert = false;
+
+ if (strchr("~!-", in[0]))
+ {
+ invert = true;
+ ++in;
+ }
+
+ if (const auto *const opt = find_option(in))
+ {
+ if (opt->type() != OT_BOOL)
+ {
+ warnIncompatibleReference(opt);
+ return(false);
+ }
+ auto &bopt = *static_cast<const Option<bool> *>(opt);
+ m_val = (invert ? !bopt() : bopt());
+ return(true);
+ }
+ warnUnexpectedValue(in);
+ return(false);
+}
+
+//END Option<bool>
+
+///////////////////////////////////////////////////////////////////////////////
+
+//BEGIN Option<iarf_e>
+
+
+//-----------------------------------------------------------------------------
+template<>
+option_type_e Option<iarf_e>::type() const
+{
+ return(OT_IARF);
+}
+
+
+//-----------------------------------------------------------------------------
+template<>
+const char *const *Option<iarf_e>::possibleValues() const
+{
+ return(iarf_values);
+}
+
+
+//-----------------------------------------------------------------------------
+template<>
+bool Option<iarf_e>::read(const char *in)
+{
+ return(read_enum(in, *this));
+}
+
+//END Option<iarf_e>
+
+///////////////////////////////////////////////////////////////////////////////
+
+//BEGIN Option<line_end_e>
+
+
+//-----------------------------------------------------------------------------
+template<>
+option_type_e Option<line_end_e>::type() const
+{
+ return(OT_LINEEND);
+}
+
+
+//-----------------------------------------------------------------------------
+template<>
+const char *const *Option<line_end_e>::possibleValues() const
+{
+ return(line_end_values);
+}
+
+
+//-----------------------------------------------------------------------------
+template<>
+bool Option<line_end_e>::read(const char *in)
+{
+ return(read_enum(in, *this));
+}
+
+//END Option<line_end_e>
+
+///////////////////////////////////////////////////////////////////////////////
+
+//BEGIN Option<token_pos_e>
+
+
+//-----------------------------------------------------------------------------
+template<>
+option_type_e Option<token_pos_e>::type() const
+{
+ return(OT_TOKENPOS);
+}
+
+
+//-----------------------------------------------------------------------------
+template<>
+const char *const *Option<token_pos_e>::possibleValues() const
+{
+ return(token_pos_values);
+}
+
+
+//-----------------------------------------------------------------------------
+template<>
+bool Option<token_pos_e>::read(const char *in)
+{
+ return(read_enum(in, *this));
+}
+
+//END Option<token_pos_e>
+
+///////////////////////////////////////////////////////////////////////////////
+
+//BEGIN Option<signed>
+
+
+//-----------------------------------------------------------------------------
+template<>
+option_type_e Option<signed>::type() const
+{
+ return(OT_NUM);
+}
+
+
+//-----------------------------------------------------------------------------
+template<>
+const char *const *Option<signed>::possibleValues() const
+{
+ static char const *values[] = { "number", nullptr };
+
+ return(values);
+}
+
+
+//-----------------------------------------------------------------------------
+template<>
+bool Option<signed>::read(const char *in)
+{
+ return(read_number(in, *this));
+}
+
+//END Option<signed>
+
+///////////////////////////////////////////////////////////////////////////////
+
+//BEGIN Option<unsigned>
+
+
+//-----------------------------------------------------------------------------
+template<>
+option_type_e Option<unsigned>::type() const
+{
+ return(OT_UNUM);
+}
+
+
+//-----------------------------------------------------------------------------
+template<>
+const char *const *Option<unsigned>::possibleValues() const
+{
+ static char const *values[] = { "unsigned number", nullptr };
+
+ return(values);
+}
+
+
+//-----------------------------------------------------------------------------
+template<>
+bool Option<unsigned>::read(const char *in)
+{
+ return(read_number(in, *this));
+}
+
+//END Option<unsigned>
+
+///////////////////////////////////////////////////////////////////////////////
+
+//BEGIN Option<string>
+
+
+//-----------------------------------------------------------------------------
+template<>
+option_type_e Option<std::string>::type() const
+{
+ return(OT_STRING);
+}
+
+
+//-----------------------------------------------------------------------------
+template<>
+const char *const *Option<std::string>::possibleValues() const
+{
+ static char const *values[] = { "string", nullptr };
+
+ return(values);
+}
+
+
+//-----------------------------------------------------------------------------
+template<>
+bool Option<std::string>::read(const char *in)
+{
+ m_val = in;
+ return(true);
+}
+
+//END Option<string>
+
+///////////////////////////////////////////////////////////////////////////////
+
+//BEGIN global functions for options
+
+
+//-----------------------------------------------------------------------------
+void begin_option_group(const char *description)
+{
+ auto g = OptionGroup{ description, {} };
+
+ option_groups.push_back(g);
+}
+
+
+//-----------------------------------------------------------------------------
+void register_option(GenericOption *option)
+{
+ assert(!option_groups.empty());
+
+ option_groups.back().options.push_back(option);
+ option_map.emplace(option->name(), option);
+}
+
+
+//-----------------------------------------------------------------------------
+uncrustify::GenericOption *find_option(const char *name)
+{
+ const auto iter = option_map.find(to_lower(name));
+
+ if (iter != option_map.end())
+ {
+ return(iter->second);
+ }
+ return(nullptr);
+}
+
+
+//-----------------------------------------------------------------------------
+OptionGroup *get_option_group(size_t i)
+{
+ if (i >= option_groups.size())
+ {
+ return(nullptr);
+ }
+ return(&option_groups[i]);
+}
+
+
+//-----------------------------------------------------------------------------
+size_t get_option_count()
+{
+ return(option_map.size());
+}
+
+
+//-----------------------------------------------------------------------------
+void process_option_line(const std::string &config_line, const char *filename,
+ int &compat_level)
+{
+ // Split line into arguments, and punt if no arguments are present
+ auto args = split_args(config_line, filename, is_arg_sep);
+
+ if (args.empty())
+ {
+ return;
+ }
+ // Check for necessary arguments
+ const auto &cmd = to_lower(args.front());
+
+ if ( cmd == "set"
+ || cmd == "file_ext")
+ {
+ if (args.size() < 3)
+ {
+ OptionWarning w{ filename };
+ w("%s requires at least three arguments", cmd.c_str());
+ return;
+ }
+ }
+ else
+ {
+ if (args.size() < 2)
+ {
+ OptionWarning w{ filename };
+ w("%s requires at least two arguments", cmd.c_str());
+ return;
+ }
+ }
+
+ if (cmd == "type")
+ {
+ for (size_t i = 1; i < args.size(); ++i)
+ {
+ add_keyword(args[i], CT_TYPE);
+ }
+ }
+ else if (cmd == "macro-open")
+ {
+ add_keyword(args[1], CT_MACRO_OPEN);
+ }
+ else if (cmd == "macro-close")
+ {
+ add_keyword(args[1], CT_MACRO_CLOSE);
+ }
+ else if (cmd == "macro-else")
+ {
+ add_keyword(args[1], CT_MACRO_ELSE);
+ }
+ else if (cmd == "set")
+ {
+ const auto token = find_token_name(args[1].c_str());
+
+ if (token != CT_NONE)
+ {
+ LOG_FMT(LNOTE, "%s:%d set '%s':",
+ filename, cpd.line_number, args[1].c_str());
+
+ for (size_t i = 2; i < args.size(); ++i)
+ {
+ LOG_FMT(LNOTE, " '%s'", args[i].c_str());
+ add_keyword(args[i], token);
+ }
+
+ LOG_FMT(LNOTE, "\n");
+ }
+ else
+ {
+ OptionWarning w{ filename };
+ w("%s: unknown type '%s'", cmd.c_str(), args[1].c_str());
+ }
+ }
+#ifndef EMSCRIPTEN
+ else if (cmd == "include")
+ {
+ auto this_line_number = cpd.line_number;
+ const auto &include_path = args[1];
+
+ if (include_path.empty())
+ {
+ OptionWarning w{ filename };
+ w("include: path cannot be empty");
+ }
+ else if (is_path_relative(include_path))
+ {
+ // include is a relative path to the current config file
+ UncText ut = std::string{ filename };
+ ut.resize(static_cast<unsigned>(path_dirname_len(filename)));
+ ut.append(include_path);
+ UNUSED(load_option_file(ut.c_str(), compat_level));
+ }
+ else
+ {
+ // include is an absolute path
+ UNUSED(load_option_file(include_path.c_str(), compat_level));
+ }
+ cpd.line_number = this_line_number;
+ }
+#endif
+ else if (cmd == "file_ext")
+ {
+ auto *const lang_arg = args[1].c_str();
+
+ for (size_t i = 2; i < args.size(); ++i)
+ {
+ auto *const lang_name = extension_add(args[i].c_str(), lang_arg);
+
+ if (lang_name)
+ {
+ LOG_FMT(LNOTE, "%s:%d file_ext '%s' => '%s'\n",
+ filename, cpd.line_number, args[i].c_str(), lang_name);
+ }
+ else
+ {
+ OptionWarning w{ filename };
+ w("file_ext: unknown language '%s'", lang_arg);
+ break;
+ }
+ }
+ }
+ else if (cmd == "using")
+ {
+ auto vargs = split_args(args[1], filename, is_varg_sep);
+
+ if (vargs.size() == 2)
+ {
+ compat_level = option_level(std::stoi(vargs[0]), std::stoi(vargs[1]));
+ }
+ else if (vargs.size() == 3)
+ {
+ compat_level = option_level(std::stoi(vargs[0]),
+ std::stoi(vargs[1]),
+ std::stoi(vargs[2]));
+ }
+ else
+ {
+ OptionWarning w{ filename };
+ w("%s requires a version number in the form MAJOR.MINOR[.PATCH]",
+ cmd.c_str());
+ }
+ }
+ else
+ {
+ // Must be a regular option = value
+ if (compat_level < option_level(0, 69))
+ {
+ if (process_option_line_compat_0_68(cmd, args, filename))
+ {
+ return;
+ }
+ }
+
+ if (compat_level < option_level(0, 71))
+ {
+ if (process_option_line_compat_0_70(cmd, filename))
+ {
+ return;
+ }
+ }
+
+ if (compat_level < option_level(0, 74))
+ {
+ if (process_option_line_compat_0_73(cmd, filename))
+ {
+ return;
+ }
+ }
+
+ if (compat_level < option_level(0, 75))
+ {
+ if (process_option_line_compat_0_74(cmd, filename))
+ {
+ return;
+ }
+ }
+
+ if (compat_level < option_level(0, 76))
+ {
+ if (process_option_line_compat_0_75(cmd, filename))
+ {
+ return;
+ }
+ }
+
+ if (compat_level < option_level(0, 77))
+ {
+ if (process_option_line_compat_0_76(cmd, args, filename))
+ {
+ return;
+ }
+ }
+ const auto oi = option_map.find(cmd);
+
+ if (oi == option_map.end())
+ {
+ OptionWarning w{ filename };
+ w("unknown option '%s'", args[0].c_str());
+ }
+ else
+ {
+ UNUSED(oi->second->read(args[1].c_str()));
+ }
+ }
+} // process_option_line
+
+
+//-----------------------------------------------------------------------------
+bool load_option_file(const char *filename, int compat_level)
+{
+ cpd.line_number = 0;
+
+#ifdef WIN32
+ // "/dev/null" not understood by "fopen" in Windows
+ if (strcasecmp(filename, "/dev/null") == 0)
+ {
+ return(true);
+ }
+#endif
+
+ std::ifstream in;
+ in.open(filename, std::ifstream::in);
+
+ if (!in.good())
+ {
+ OptionWarning w{ filename };
+ w("file could not be opened: %s (%d)\n",
+ strerror(errno), errno);
+ exit(EX_SOFTWARE);
+ }
+ // Read in the file line by line
+ std::string line;
+
+ while (std::getline(in, line))
+ {
+ // check all characters of the line
+ size_t howmany = line.length();
+ int ch;
+
+ for (size_t n = 0; n < howmany; n++)
+ {
+ ch = line[n];
+
+ // do not check characters in comment part of line
+ if ('#' == ch)
+ {
+ break;
+ }
+
+ // ch >= 0 && ch <= 255
+ if ( ch < 0
+ || ch > 255)
+ {
+ // error
+ // related to PR #3298
+ fprintf(stderr, "%s: line %u: Character at position %zu, is not printable.\n", filename, cpd.line_number + 1, n + 1);
+ exit(EX_SOFTWARE);
+ }
+ }
+
+ ++cpd.line_number;
+ process_option_line(line, filename, compat_level);
+ }
+ return(true);
+} // load_option_file
+
+
+//-----------------------------------------------------------------------------
+const char *get_eol_marker()
+{
+ static char eol[3] = { 0x0A, 0x00, 0x00 };
+
+ const auto &lines = cpd.newline.get();
+
+ for (size_t i = 0; i < lines.size(); ++i)
+ {
+ eol[i] = static_cast<char>(lines[i]);
+ }
+
+ return(eol);
+}
+
+
+//-----------------------------------------------------------------------------
+void save_option_file(FILE *pfile, bool with_doc, bool minimal)
+{
+ int non_default_values = 0;
+ const char *eol_marker = get_eol_marker();
+
+ fprintf(pfile, "# %s%s", UNCRUSTIFY_VERSION, eol_marker);
+
+ // Print the options by group
+ for (auto &og : option_groups)
+ {
+ bool first = true;
+
+ for (auto *option : og.options)
+ {
+ const auto val = option->str();
+
+ if (!option->isDefault())
+ {
+ ++non_default_values;
+ }
+ else if (minimal)
+ {
+ continue;
+ }
+ //....................................................................
+
+ if (with_doc)
+ {
+ assert(option->description() != nullptr);
+ assert(*option->description() != 0);
+
+ if (first)
+ {
+ fprintf(pfile, "%s#%s", eol_marker, eol_marker);
+ print_description(pfile, og.description, eol_marker);
+ fprintf(pfile, "#%s", eol_marker);
+ }
+ fprintf(pfile, "%s", eol_marker);
+ print_description(pfile, option->description(), eol_marker);
+
+ const auto ds = option->defaultStr();
+
+ if (!ds.empty())
+ {
+ fprintf(pfile, "#%s# Default: %s%s",
+ eol_marker, ds.c_str(), eol_marker);
+ }
+ }
+ first = false;
+
+ const int name_len = static_cast<int>(strlen(option->name()));
+ const int pad = name_len < uncrustify::limits::MAX_OPTION_NAME_LEN
+ ? (uncrustify::limits::MAX_OPTION_NAME_LEN - name_len)
+ : 1;
+
+ fprintf(pfile, "%s%*.s= ", option->name(), pad, " ");
+
+ if (option->type() == OT_STRING)
+ {
+ fprintf(pfile, "\"%s\"", val.c_str());
+ }
+ else
+ {
+ fprintf(pfile, "%s", val.c_str());
+ }
+
+ if (with_doc)
+ {
+ const int val_len = static_cast<int>(val.length());
+ fprintf(pfile, "%*.s # ", 8 - val_len, " ");
+
+ for (auto pv = option->possibleValues(); *pv; ++pv)
+ {
+ fprintf(pfile, "%s%s", *pv, pv[1] ? "/" : "");
+ }
+ }
+ fputs(eol_marker, pfile);
+ }
+ }
+
+ if (with_doc)
+ {
+ fprintf(pfile, "%s", DOC_TEXT_END);
+ }
+ print_custom_keywords(pfile); // Print custom keywords
+ print_extensions(pfile); // Print custom file extensions
+
+ fprintf(pfile, "# option(s) with 'not default' value: %d%s#%s",
+ non_default_values, eol_marker, eol_marker);
+} // save_option_file
+
+} // namespace uncrustify
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/option.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/option.h
index 7b961940..7b961940 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/option.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/option.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/option_enum.cpp.in b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/option_enum.cpp.in
index aeb976b2..aeb976b2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/option_enum.cpp.in
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/option_enum.cpp.in
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/option_enum.h.in b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/option_enum.h.in
index e50a9281..e50a9281 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/option_enum.h.in
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/option_enum.h.in
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/options.cpp.in b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/options.cpp.in
index 2ee14c8b..2ee14c8b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/options.cpp.in
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/options.cpp.in
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/options.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/options.h
new file mode 100644
index 00000000..52dbebed
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/options.h
@@ -0,0 +1,4436 @@
+/**
+ * @file options.h
+ * Declarations of all the options.
+ *
+ * September 2020
+ * @author Ben Gardner
+ * @author Guy Maurel
+ * @author Matthew Woehlke
+ * @license GPL v2+
+ */
+
+#ifndef OPTIONS_H_INCLUDED
+#define OPTIONS_H_INCLUDED
+
+/* NOTE:
+ * This file is processed by make_options.py, and must conform to a particular
+ * format. Option groups are marked by '//begin ' (in upper case; this example
+ * is lower case to prevent being considered a region marker for code folding)
+ * followed by the group description. Options consist of two lines of
+ * declaration preceded by one or more lines of C++ comments. The comments form
+ * the option description and are taken verbatim, aside from stripping the
+ * leading '// '. Only comments immediately preceding an option declaration,
+ * with no blank lines, are taken as part of the description, so a blank line
+ * may be used to separate notations from a description.
+ *
+ * An option declaration is 'extern TYPE\nNAME;', optionally followed by
+ * ' // = VALUE' if the option has a default value that is different from the
+ * default-constructed value type of the option. The 'VALUE' must be valid C++
+ * code, and is taken verbatim as an argument when creating the option's
+ * instantiation. Note also that the line break, as shown, is required.
+ */
+
+#include "option_enum.h"
+
+namespace uncrustify
+{
+
+namespace options
+{
+
+using std::string;
+
+///////////////////////////////////////////////////////////////////////////////
+//BEGIN General options
+
+// The type of line endings.
+extern Option<line_end_e>
+newlines; // = LE_AUTO
+
+// The original size of tabs in the input.
+extern BoundedOption<unsigned, 1, 32>
+input_tab_size; // = 8
+
+// The size of tabs in the output (only used if align_with_tabs=true).
+extern BoundedOption<unsigned, 1, 32>
+output_tab_size; // = 8
+
+// The ASCII value of the string escape char, usually 92 (\) or (Pawn) 94 (^).
+extern BoundedOption<unsigned, 0, 255>
+string_escape_char; // = '\\'
+
+// Alternate string escape char (usually only used for Pawn).
+// Only works right before the quote char.
+extern BoundedOption<unsigned, 0, 255>
+string_escape_char2;
+
+// Replace tab characters found in string literals with the escape sequence \t
+// instead.
+extern Option<bool>
+string_replace_tab_chars;
+
+// Allow interpreting '>=' and '>>=' as part of a template in code like
+// 'void f(list<list<B>>=val);'. If true, 'assert(x<0 && y>=3)' will be broken.
+// Improvements to template detection may make this option obsolete.
+extern Option<bool>
+tok_split_gte;
+
+// Disable formatting of NL_CONT ('\\n') ended lines (e.g. multi-line macros).
+extern Option<bool>
+disable_processing_nl_cont;
+
+// Specify the marker used in comments to disable processing of part of the
+// file.
+extern Option<string>
+disable_processing_cmt; // = UNCRUSTIFY_OFF_TEXT
+
+// Specify the marker used in comments to (re)enable processing in a file.
+extern Option<string>
+enable_processing_cmt; // = UNCRUSTIFY_ON_TEXT
+
+// Enable parsing of digraphs.
+extern Option<bool>
+enable_digraphs;
+
+// Option to allow both disable_processing_cmt and enable_processing_cmt
+// strings, if specified, to be interpreted as ECMAScript regular expressions.
+// If true, a regex search will be performed within comments according to the
+// specified patterns in order to disable/enable processing.
+extern Option<bool>
+processing_cmt_as_regex;
+
+// Add or remove the UTF-8 BOM (recommend 'remove').
+extern Option<iarf_e>
+utf8_bom;
+
+// If the file contains bytes with values between 128 and 255, but is not
+// UTF-8, then output as UTF-8.
+extern Option<bool>
+utf8_byte;
+
+// Force the output encoding to UTF-8.
+extern Option<bool>
+utf8_force;
+
+//END
+
+///////////////////////////////////////////////////////////////////////////////
+//BEGIN Spacing options
+
+// Add or remove space around non-assignment symbolic operators ('+', '/', '%',
+// '<<', and so forth).
+extern Option<iarf_e>
+sp_arith;
+
+// Add or remove space around arithmetic operators '+' and '-'.
+//
+// Overrides sp_arith.
+extern Option<iarf_e>
+sp_arith_additive;
+
+// Add or remove space around assignment operator '=', '+=', etc.
+extern Option<iarf_e>
+sp_assign;
+
+// Add or remove space around '=' in C++11 lambda capture specifications.
+//
+// Overrides sp_assign.
+extern Option<iarf_e>
+sp_cpp_lambda_assign;
+
+// Add or remove space after the capture specification of a C++11 lambda when
+// an argument list is present, as in '[] <here> (int x){ ... }'.
+extern Option<iarf_e>
+sp_cpp_lambda_square_paren;
+
+// Add or remove space after the capture specification of a C++11 lambda with
+// no argument list is present, as in '[] <here> { ... }'.
+extern Option<iarf_e>
+sp_cpp_lambda_square_brace;
+
+// Add or remove space after the opening parenthesis and before the closing
+// parenthesis of a argument list of a C++11 lambda, as in
+// '[]( <here> ){ ... }'
+// with an empty list.
+extern Option<iarf_e>
+sp_cpp_lambda_argument_list_empty;
+
+// Add or remove space after the opening parenthesis and before the closing
+// parenthesis of a argument list of a C++11 lambda, as in
+// '[]( <here> int x <here> ){ ... }'.
+extern Option<iarf_e>
+sp_cpp_lambda_argument_list;
+
+// Add or remove space after the argument list of a C++11 lambda, as in
+// '[](int x) <here> { ... }'.
+extern Option<iarf_e>
+sp_cpp_lambda_paren_brace;
+
+// Add or remove space between a lambda body and its call operator of an
+// immediately invoked lambda, as in '[]( ... ){ ... } <here> ( ... )'.
+extern Option<iarf_e>
+sp_cpp_lambda_fparen;
+
+// Add or remove space around assignment operator '=' in a prototype.
+//
+// If set to ignore, use sp_assign.
+extern Option<iarf_e>
+sp_assign_default;
+
+// Add or remove space before assignment operator '=', '+=', etc.
+//
+// Overrides sp_assign.
+extern Option<iarf_e>
+sp_before_assign;
+
+// Add or remove space after assignment operator '=', '+=', etc.
+//
+// Overrides sp_assign.
+extern Option<iarf_e>
+sp_after_assign;
+
+// Add or remove space in 'enum {'.
+extern Option<iarf_e>
+sp_enum_brace; // = IARF_ADD
+
+// Add or remove space in 'NS_ENUM ('.
+extern Option<iarf_e>
+sp_enum_paren;
+
+// Add or remove space around assignment '=' in enum.
+extern Option<iarf_e>
+sp_enum_assign;
+
+// Add or remove space before assignment '=' in enum.
+//
+// Overrides sp_enum_assign.
+extern Option<iarf_e>
+sp_enum_before_assign;
+
+// Add or remove space after assignment '=' in enum.
+//
+// Overrides sp_enum_assign.
+extern Option<iarf_e>
+sp_enum_after_assign;
+
+// Add or remove space around assignment ':' in enum.
+extern Option<iarf_e>
+sp_enum_colon;
+
+// Add or remove space around preprocessor '##' concatenation operator.
+extern Option<iarf_e>
+sp_pp_concat; // = IARF_ADD
+
+// Add or remove space after preprocessor '#' stringify operator.
+// Also affects the '#@' charizing operator.
+extern Option<iarf_e>
+sp_pp_stringify;
+
+// Add or remove space before preprocessor '#' stringify operator
+// as in '#define x(y) L#y'.
+extern Option<iarf_e>
+sp_before_pp_stringify;
+
+// Add or remove space around boolean operators '&&' and '||'.
+extern Option<iarf_e>
+sp_bool;
+
+// Add or remove space around compare operator '<', '>', '==', etc.
+extern Option<iarf_e>
+sp_compare;
+
+// Add or remove space inside '(' and ')'.
+extern Option<iarf_e>
+sp_inside_paren;
+
+// Add or remove space between nested parentheses, i.e. '((' vs. ') )'.
+extern Option<iarf_e>
+sp_paren_paren;
+
+// Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.
+extern Option<iarf_e>
+sp_cparen_oparen;
+
+// Whether to balance spaces inside nested parentheses.
+extern Option<bool>
+sp_balance_nested_parens;
+
+// Add or remove space between ')' and '{'.
+extern Option<iarf_e>
+sp_paren_brace;
+
+// Add or remove space between nested braces, i.e. '{{' vs. '{ {'.
+extern Option<iarf_e>
+sp_brace_brace;
+
+// Add or remove space before pointer star '*'.
+extern Option<iarf_e>
+sp_before_ptr_star;
+
+// Add or remove space before pointer star '*' that isn't followed by a
+// variable name. If set to ignore, sp_before_ptr_star is used instead.
+extern Option<iarf_e>
+sp_before_unnamed_ptr_star;
+
+// Add or remove space before pointer star '*' that is followed by a qualifier.
+// If set to ignore, sp_before_unnamed_ptr_star is used instead.
+extern Option<iarf_e>
+sp_before_qualifier_ptr_star;
+
+// Add or remove space before pointer star '*' that is followed by 'operator' keyword.
+// If set to ignore, sp_before_unnamed_ptr_star is used instead.
+extern Option<iarf_e>
+sp_before_operator_ptr_star;
+
+// Add or remove space before pointer star '*' that is followed by
+// a class scope (as in 'int *MyClass::method()') or namespace scope
+// (as in 'int *my_ns::func()').
+// If set to ignore, sp_before_unnamed_ptr_star is used instead.
+extern Option<iarf_e>
+sp_before_scope_ptr_star;
+
+// Add or remove space before pointer star '*' that is followed by '::',
+// as in 'int *::func()'.
+// If set to ignore, sp_before_unnamed_ptr_star is used instead.
+extern Option<iarf_e>
+sp_before_global_scope_ptr_star;
+
+// Add or remove space between a qualifier and a pointer star '*' that isn't
+// followed by a variable name, as in '(char const *)'. If set to ignore,
+// sp_before_ptr_star is used instead.
+extern Option<iarf_e>
+sp_qualifier_unnamed_ptr_star;
+
+// Add or remove space between pointer stars '*', as in 'int ***a;'.
+extern Option<iarf_e>
+sp_between_ptr_star;
+
+// Add or remove space between pointer star '*' and reference '&', as in 'int *& a;'.
+extern Option<iarf_e>
+sp_between_ptr_ref;
+
+// Add or remove space after pointer star '*', if followed by a word.
+//
+// Overrides sp_type_func.
+extern Option<iarf_e>
+sp_after_ptr_star;
+
+// Add or remove space after pointer caret '^', if followed by a word.
+extern Option<iarf_e>
+sp_after_ptr_block_caret;
+
+// Add or remove space after pointer star '*', if followed by a qualifier.
+extern Option<iarf_e>
+sp_after_ptr_star_qualifier;
+
+// Add or remove space after a pointer star '*', if followed by a function
+// prototype or function definition.
+//
+// Overrides sp_after_ptr_star and sp_type_func.
+extern Option<iarf_e>
+sp_after_ptr_star_func;
+
+// Add or remove space after a pointer star '*' in the trailing return of a
+// function prototype or function definition.
+extern Option<iarf_e>
+sp_after_ptr_star_trailing;
+
+// Add or remove space between the pointer star '*' and the name of the variable
+// in a function pointer definition.
+extern Option<iarf_e>
+sp_ptr_star_func_var;
+
+// Add or remove space between the pointer star '*' and the name of the type
+// in a function pointer type definition.
+extern Option<iarf_e>
+sp_ptr_star_func_type;
+
+// Add or remove space after a pointer star '*', if followed by an open
+// parenthesis, as in 'void* (*)()'.
+extern Option<iarf_e>
+sp_ptr_star_paren;
+
+// Add or remove space before a pointer star '*', if followed by a function
+// prototype or function definition. If set to ignore, sp_before_ptr_star is
+// used instead.
+extern Option<iarf_e>
+sp_before_ptr_star_func;
+
+// Add or remove space between a qualifier and a pointer star '*' followed by
+// the name of the function in a function prototype or definition, as in
+// 'char const *foo()`. If set to ignore, sp_before_ptr_star is used instead.
+extern Option<iarf_e>
+sp_qualifier_ptr_star_func;
+
+// Add or remove space before a pointer star '*' in the trailing return of a
+// function prototype or function definition.
+extern Option<iarf_e>
+sp_before_ptr_star_trailing;
+
+// Add or remove space between a qualifier and a pointer star '*' in the
+// trailing return of a function prototype or function definition, as in
+// 'auto foo() -> char const *'.
+extern Option<iarf_e>
+sp_qualifier_ptr_star_trailing;
+
+// Add or remove space before a reference sign '&'.
+extern Option<iarf_e>
+sp_before_byref;
+
+// Add or remove space before a reference sign '&' that isn't followed by a
+// variable name. If set to ignore, sp_before_byref is used instead.
+extern Option<iarf_e>
+sp_before_unnamed_byref;
+
+// Add or remove space after reference sign '&', if followed by a word.
+//
+// Overrides sp_type_func.
+extern Option<iarf_e>
+sp_after_byref;
+
+// Add or remove space after a reference sign '&', if followed by a function
+// prototype or function definition.
+//
+// Overrides sp_after_byref and sp_type_func.
+extern Option<iarf_e>
+sp_after_byref_func;
+
+// Add or remove space before a reference sign '&', if followed by a function
+// prototype or function definition.
+extern Option<iarf_e>
+sp_before_byref_func;
+
+// Add or remove space after a reference sign '&', if followed by an open
+// parenthesis, as in 'char& (*)()'.
+extern Option<iarf_e>
+sp_byref_paren;
+
+// Add or remove space between type and word. In cases where total removal of
+// whitespace would be a syntax error, a value of 'remove' is treated the same
+// as 'force'.
+//
+// This also affects some other instances of space following a type that are
+// not covered by other options; for example, between the return type and
+// parenthesis of a function type template argument, between the type and
+// parenthesis of an array parameter, or between 'decltype(...)' and the
+// following word.
+extern Option<iarf_e>
+sp_after_type; // = IARF_FORCE
+
+// Add or remove space between 'decltype(...)' and word,
+// brace or function call.
+extern Option<iarf_e>
+sp_after_decltype;
+
+// (D) Add or remove space before the parenthesis in the D constructs
+// 'template Foo(' and 'class Foo('.
+extern Option<iarf_e>
+sp_before_template_paren;
+
+// Add or remove space between 'template' and '<'.
+// If set to ignore, sp_before_angle is used.
+extern Option<iarf_e>
+sp_template_angle;
+
+// Add or remove space before '<'.
+extern Option<iarf_e>
+sp_before_angle;
+
+// Add or remove space inside '<' and '>'.
+extern Option<iarf_e>
+sp_inside_angle;
+
+// Add or remove space inside '<>'.
+// if empty.
+extern Option<iarf_e>
+sp_inside_angle_empty;
+
+// Add or remove space between '>' and ':'.
+extern Option<iarf_e>
+sp_angle_colon;
+
+// Add or remove space after '>'.
+extern Option<iarf_e>
+sp_after_angle;
+
+// Add or remove space between '>' and '(' as found in 'new List<byte>(foo);'.
+extern Option<iarf_e>
+sp_angle_paren;
+
+// Add or remove space between '>' and '()' as found in 'new List<byte>();'.
+extern Option<iarf_e>
+sp_angle_paren_empty;
+
+// Add or remove space between '>' and a word as in 'List<byte> m;' or
+// 'template <typename T> static ...'.
+extern Option<iarf_e>
+sp_angle_word;
+
+// Add or remove space between '>' and '>' in '>>' (template stuff).
+extern Option<iarf_e>
+sp_angle_shift; // = IARF_ADD
+
+// (C++11) Permit removal of the space between '>>' in 'foo<bar<int> >'. Note
+// that sp_angle_shift cannot remove the space without this option.
+extern Option<bool>
+sp_permit_cpp11_shift;
+
+// Add or remove space before '(' of control statements ('if', 'for', 'switch',
+// 'while', etc.).
+extern Option<iarf_e>
+sp_before_sparen;
+
+// Add or remove space inside '(' and ')' of control statements other than
+// 'for'.
+extern Option<iarf_e>
+sp_inside_sparen;
+
+// Add or remove space after '(' of control statements other than 'for'.
+//
+// Overrides sp_inside_sparen.
+extern Option<iarf_e>
+sp_inside_sparen_open;
+
+// Add or remove space before ')' of control statements other than 'for'.
+//
+// Overrides sp_inside_sparen.
+extern Option<iarf_e>
+sp_inside_sparen_close;
+
+// Add or remove space inside '(' and ')' of 'for' statements.
+extern Option<iarf_e>
+sp_inside_for;
+
+// Add or remove space after '(' of 'for' statements.
+//
+// Overrides sp_inside_for.
+extern Option<iarf_e>
+sp_inside_for_open;
+
+// Add or remove space before ')' of 'for' statements.
+//
+// Overrides sp_inside_for.
+extern Option<iarf_e>
+sp_inside_for_close;
+
+// Add or remove space between '((' or '))' of control statements.
+extern Option<iarf_e>
+sp_sparen_paren;
+
+// Add or remove space after ')' of control statements.
+extern Option<iarf_e>
+sp_after_sparen;
+
+// Add or remove space between ')' and '{' of control statements.
+extern Option<iarf_e>
+sp_sparen_brace;
+
+// Add or remove space between 'do' and '{'.
+extern Option<iarf_e>
+sp_do_brace_open;
+
+// Add or remove space between '}' and 'while'.
+extern Option<iarf_e>
+sp_brace_close_while;
+
+// Add or remove space between 'while' and '('. Overrides sp_before_sparen.
+extern Option<iarf_e>
+sp_while_paren_open;
+
+// (D) Add or remove space between 'invariant' and '('.
+extern Option<iarf_e>
+sp_invariant_paren;
+
+// (D) Add or remove space after the ')' in 'invariant (C) c'.
+extern Option<iarf_e>
+sp_after_invariant_paren;
+
+// Add or remove space before empty statement ';' on 'if', 'for' and 'while'.
+extern Option<iarf_e>
+sp_special_semi;
+
+// Add or remove space before ';'.
+extern Option<iarf_e>
+sp_before_semi; // = IARF_REMOVE
+
+// Add or remove space before ';' in non-empty 'for' statements.
+extern Option<iarf_e>
+sp_before_semi_for;
+
+// Add or remove space before a semicolon of an empty left part of a for
+// statement, as in 'for ( <here> ; ; )'.
+extern Option<iarf_e>
+sp_before_semi_for_empty;
+
+// Add or remove space between the semicolons of an empty middle part of a for
+// statement, as in 'for ( ; <here> ; )'.
+extern Option<iarf_e>
+sp_between_semi_for_empty;
+
+// Add or remove space after ';', except when followed by a comment.
+extern Option<iarf_e>
+sp_after_semi; // = IARF_ADD
+
+// Add or remove space after ';' in non-empty 'for' statements.
+extern Option<iarf_e>
+sp_after_semi_for; // = IARF_FORCE
+
+// Add or remove space after the final semicolon of an empty part of a for
+// statement, as in 'for ( ; ; <here> )'.
+extern Option<iarf_e>
+sp_after_semi_for_empty;
+
+// Add or remove space before '[' (except '[]').
+extern Option<iarf_e>
+sp_before_square;
+
+// Add or remove space before '[' for a variable definition.
+extern Option<iarf_e>
+sp_before_vardef_square; // = IARF_REMOVE
+
+// Add or remove space before '[' for asm block.
+extern Option<iarf_e>
+sp_before_square_asm_block;
+
+// Add or remove space before '[]'.
+extern Option<iarf_e>
+sp_before_squares;
+
+// Add or remove space before C++17 structured bindings.
+extern Option<iarf_e>
+sp_cpp_before_struct_binding;
+
+// Add or remove space inside a non-empty '[' and ']'.
+extern Option<iarf_e>
+sp_inside_square;
+
+// Add or remove space inside '[]'.
+// if empty.
+extern Option<iarf_e>
+sp_inside_square_empty;
+
+// (OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and
+// ']'. If set to ignore, sp_inside_square is used.
+extern Option<iarf_e>
+sp_inside_square_oc_array;
+
+// Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.
+extern Option<iarf_e>
+sp_after_comma;
+
+// Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.
+extern Option<iarf_e>
+sp_before_comma; // = IARF_REMOVE
+
+// (C#, Vala) Add or remove space between ',' and ']' in multidimensional array type
+// like 'int[,,]'.
+extern Option<iarf_e>
+sp_after_mdatype_commas;
+
+// (C#, Vala) Add or remove space between '[' and ',' in multidimensional array type
+// like 'int[,,]'.
+extern Option<iarf_e>
+sp_before_mdatype_commas;
+
+// (C#, Vala) Add or remove space between ',' in multidimensional array type
+// like 'int[,,]'.
+extern Option<iarf_e>
+sp_between_mdatype_commas;
+
+// Add or remove space between an open parenthesis and comma,
+// i.e. '(,' vs. '( ,'.
+extern Option<iarf_e>
+sp_paren_comma; // = IARF_FORCE
+
+// Add or remove space between a type and ':'.
+extern Option<iarf_e>
+sp_type_colon;
+
+// Add or remove space after the variadic '...' when preceded by a
+// non-punctuator.
+// The value REMOVE will be overridden with FORCE
+extern Option<iarf_e>
+sp_after_ellipsis;
+
+// Add or remove space before the variadic '...' when preceded by a
+// non-punctuator.
+// The value REMOVE will be overridden with FORCE
+extern Option<iarf_e>
+sp_before_ellipsis;
+
+// Add or remove space between a type and '...'.
+extern Option<iarf_e>
+sp_type_ellipsis;
+
+// Add or remove space between a '*' and '...'.
+extern Option<iarf_e>
+sp_ptr_type_ellipsis;
+
+// Add or remove space between ')' and '...'.
+extern Option<iarf_e>
+sp_paren_ellipsis;
+
+// Add or remove space between '&&' and '...'.
+extern Option<iarf_e>
+sp_byref_ellipsis;
+
+// Add or remove space between ')' and a qualifier such as 'const'.
+extern Option<iarf_e>
+sp_paren_qualifier;
+
+// Add or remove space between ')' and 'noexcept'.
+extern Option<iarf_e>
+sp_paren_noexcept;
+
+// Add or remove space after class ':'.
+extern Option<iarf_e>
+sp_after_class_colon;
+
+// Add or remove space before class ':'.
+extern Option<iarf_e>
+sp_before_class_colon;
+
+// Add or remove space after class constructor ':'.
+extern Option<iarf_e>
+sp_after_constr_colon; // = IARF_ADD
+
+// Add or remove space before class constructor ':'.
+extern Option<iarf_e>
+sp_before_constr_colon; // = IARF_ADD
+
+// Add or remove space before case ':'.
+extern Option<iarf_e>
+sp_before_case_colon; // = IARF_REMOVE
+
+// Add or remove space between 'operator' and operator sign.
+extern Option<iarf_e>
+sp_after_operator;
+
+// Add or remove space between the operator symbol and the open parenthesis, as
+// in 'operator ++('.
+extern Option<iarf_e>
+sp_after_operator_sym;
+
+// Overrides sp_after_operator_sym when the operator has no arguments, as in
+// 'operator *()'.
+extern Option<iarf_e>
+sp_after_operator_sym_empty;
+
+// Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or
+// '(int)a' vs. '(int) a'.
+extern Option<iarf_e>
+sp_after_cast;
+
+// Add or remove spaces inside cast parentheses.
+extern Option<iarf_e>
+sp_inside_paren_cast;
+
+// Add or remove space between the type and open parenthesis in a C++ cast,
+// i.e. 'int(exp)' vs. 'int (exp)'.
+extern Option<iarf_e>
+sp_cpp_cast_paren;
+
+// Add or remove space between 'sizeof' and '('.
+extern Option<iarf_e>
+sp_sizeof_paren;
+
+// Add or remove space between 'sizeof' and '...'.
+extern Option<iarf_e>
+sp_sizeof_ellipsis;
+
+// Add or remove space between 'sizeof...' and '('.
+extern Option<iarf_e>
+sp_sizeof_ellipsis_paren;
+
+// Add or remove space between '...' and a parameter pack.
+extern Option<iarf_e>
+sp_ellipsis_parameter_pack;
+
+// Add or remove space between a parameter pack and '...'.
+extern Option<iarf_e>
+sp_parameter_pack_ellipsis;
+
+// Add or remove space between 'decltype' and '('.
+extern Option<iarf_e>
+sp_decltype_paren;
+
+// (Pawn) Add or remove space after the tag keyword.
+extern Option<iarf_e>
+sp_after_tag;
+
+// Add or remove space inside enum '{' and '}'.
+extern Option<iarf_e>
+sp_inside_braces_enum;
+
+// Add or remove space inside struct/union '{' and '}'.
+extern Option<iarf_e>
+sp_inside_braces_struct;
+
+// (OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'
+extern Option<iarf_e>
+sp_inside_braces_oc_dict;
+
+// Add or remove space after open brace in an unnamed temporary
+// direct-list-initialization
+// if statement is a brace_init_lst
+// works only if sp_brace_brace is set to ignore.
+extern Option<iarf_e>
+sp_after_type_brace_init_lst_open;
+
+// Add or remove space before close brace in an unnamed temporary
+// direct-list-initialization
+// if statement is a brace_init_lst
+// works only if sp_brace_brace is set to ignore.
+extern Option<iarf_e>
+sp_before_type_brace_init_lst_close;
+
+// Add or remove space inside an unnamed temporary direct-list-initialization
+// if statement is a brace_init_lst
+// works only if sp_brace_brace is set to ignore
+// works only if sp_before_type_brace_init_lst_close is set to ignore.
+extern Option<iarf_e>
+sp_inside_type_brace_init_lst;
+
+// Add or remove space inside '{' and '}'.
+extern Option<iarf_e>
+sp_inside_braces;
+
+// Add or remove space inside '{}'.
+// if empty.
+extern Option<iarf_e>
+sp_inside_braces_empty;
+
+// Add or remove space around trailing return operator '->'.
+extern Option<iarf_e>
+sp_trailing_return;
+
+// Add or remove space between return type and function name. A minimum of 1
+// is forced except for pointer return types.
+extern Option<iarf_e>
+sp_type_func;
+
+// Add or remove space between type and open brace of an unnamed temporary
+// direct-list-initialization.
+extern Option<iarf_e>
+sp_type_brace_init_lst;
+
+// Add or remove space between function name and '(' on function declaration.
+extern Option<iarf_e>
+sp_func_proto_paren;
+
+// Add or remove space between function name and '()' on function declaration
+// if empty.
+extern Option<iarf_e>
+sp_func_proto_paren_empty;
+
+// Add or remove space between function name and '(' with a typedef specifier.
+extern Option<iarf_e>
+sp_func_type_paren;
+
+// Add or remove space between alias name and '(' of a non-pointer function type typedef.
+extern Option<iarf_e>
+sp_func_def_paren;
+
+// Add or remove space between function name and '()' on function definition
+// if empty.
+extern Option<iarf_e>
+sp_func_def_paren_empty;
+
+// Add or remove space inside empty function '()'.
+// Overrides sp_after_angle unless use_sp_after_angle_always is set to true.
+extern Option<iarf_e>
+sp_inside_fparens;
+
+// Add or remove space inside function '(' and ')'.
+extern Option<iarf_e>
+sp_inside_fparen;
+
+// Add or remove space inside user functor '(' and ')'.
+extern Option<iarf_e>
+sp_func_call_user_inside_rparen;
+
+// Add or remove space inside empty functor '()'.
+// Overrides sp_after_angle unless use_sp_after_angle_always is set to true.
+extern Option<iarf_e>
+sp_inside_rparens;
+
+// Add or remove space inside functor '(' and ')'.
+extern Option<iarf_e>
+sp_inside_rparen;
+
+// Add or remove space inside the first parentheses in a function type, as in
+// 'void (*x)(...)'.
+extern Option<iarf_e>
+sp_inside_tparen;
+
+// Add or remove space between the ')' and '(' in a function type, as in
+// 'void (*x)(...)'.
+extern Option<iarf_e>
+sp_after_tparen_close;
+
+// Add or remove space between ']' and '(' when part of a function call.
+extern Option<iarf_e>
+sp_square_fparen;
+
+// Add or remove space between ')' and '{' of function.
+extern Option<iarf_e>
+sp_fparen_brace;
+
+// Add or remove space between ')' and '{' of a function call in object
+// initialization.
+//
+// Overrides sp_fparen_brace.
+extern Option<iarf_e>
+sp_fparen_brace_initializer;
+
+// (Java) Add or remove space between ')' and '{{' of double brace initializer.
+extern Option<iarf_e>
+sp_fparen_dbrace;
+
+// Add or remove space between function name and '(' on function calls.
+extern Option<iarf_e>
+sp_func_call_paren;
+
+// Add or remove space between function name and '()' on function calls without
+// parameters. If set to ignore (the default), sp_func_call_paren is used.
+extern Option<iarf_e>
+sp_func_call_paren_empty;
+
+// Add or remove space between the user function name and '(' on function
+// calls. You need to set a keyword to be a user function in the config file,
+// like:
+// set func_call_user tr _ i18n
+extern Option<iarf_e>
+sp_func_call_user_paren;
+
+// Add or remove space inside user function '(' and ')'.
+extern Option<iarf_e>
+sp_func_call_user_inside_fparen;
+
+// Add or remove space between nested parentheses with user functions,
+// i.e. '((' vs. '( ('.
+extern Option<iarf_e>
+sp_func_call_user_paren_paren;
+
+// Add or remove space between a constructor/destructor and the open
+// parenthesis.
+extern Option<iarf_e>
+sp_func_class_paren;
+
+// Add or remove space between a constructor without parameters or destructor
+// and '()'.
+extern Option<iarf_e>
+sp_func_class_paren_empty;
+
+// Add or remove space after 'return'.
+extern Option<iarf_e>
+sp_return; // = IARF_FORCE
+
+// Add or remove space between 'return' and '('.
+extern Option<iarf_e>
+sp_return_paren;
+
+// Add or remove space between 'return' and '{'.
+extern Option<iarf_e>
+sp_return_brace;
+
+// Add or remove space between '__attribute__' and '('.
+extern Option<iarf_e>
+sp_attribute_paren;
+
+// Add or remove space between 'defined' and '(' in '#if defined (FOO)'.
+extern Option<iarf_e>
+sp_defined_paren;
+
+// Add or remove space between 'throw' and '(' in 'throw (something)'.
+extern Option<iarf_e>
+sp_throw_paren;
+
+// Add or remove space between 'throw' and anything other than '(' as in
+// '@throw [...];'.
+extern Option<iarf_e>
+sp_after_throw;
+
+// Add or remove space between 'catch' and '(' in 'catch (something) { }'.
+// If set to ignore, sp_before_sparen is used.
+extern Option<iarf_e>
+sp_catch_paren;
+
+// (OC) Add or remove space between '@catch' and '('
+// in '@catch (something) { }'. If set to ignore, sp_catch_paren is used.
+extern Option<iarf_e>
+sp_oc_catch_paren;
+
+// (OC) Add or remove space before Objective-C protocol list
+// as in '@protocol Protocol<here><Protocol_A>' or '@interface MyClass : NSObject<here><MyProtocol>'.
+extern Option<iarf_e>
+sp_before_oc_proto_list;
+
+// (OC) Add or remove space between class name and '('
+// in '@interface className(categoryName)<ProtocolName>:BaseClass'
+extern Option<iarf_e>
+sp_oc_classname_paren;
+
+// (D) Add or remove space between 'version' and '('
+// in 'version (something) { }'. If set to ignore, sp_before_sparen is used.
+extern Option<iarf_e>
+sp_version_paren;
+
+// (D) Add or remove space between 'scope' and '('
+// in 'scope (something) { }'. If set to ignore, sp_before_sparen is used.
+extern Option<iarf_e>
+sp_scope_paren;
+
+// Add or remove space between 'super' and '(' in 'super (something)'.
+extern Option<iarf_e>
+sp_super_paren; // = IARF_REMOVE
+
+// Add or remove space between 'this' and '(' in 'this (something)'.
+extern Option<iarf_e>
+sp_this_paren; // = IARF_REMOVE
+
+// Add or remove space between a macro name and its definition.
+extern Option<iarf_e>
+sp_macro;
+
+// Add or remove space between a macro function ')' and its definition.
+extern Option<iarf_e>
+sp_macro_func;
+
+// Add or remove space between 'else' and '{' if on the same line.
+extern Option<iarf_e>
+sp_else_brace;
+
+// Add or remove space between '}' and 'else' if on the same line.
+extern Option<iarf_e>
+sp_brace_else;
+
+// Add or remove space between '}' and the name of a typedef on the same line.
+extern Option<iarf_e>
+sp_brace_typedef;
+
+// Add or remove space before the '{' of a 'catch' statement, if the '{' and
+// 'catch' are on the same line, as in 'catch (decl) <here> {'.
+extern Option<iarf_e>
+sp_catch_brace;
+
+// (OC) Add or remove space before the '{' of a '@catch' statement, if the '{'
+// and '@catch' are on the same line, as in '@catch (decl) <here> {'.
+// If set to ignore, sp_catch_brace is used.
+extern Option<iarf_e>
+sp_oc_catch_brace;
+
+// Add or remove space between '}' and 'catch' if on the same line.
+extern Option<iarf_e>
+sp_brace_catch;
+
+// (OC) Add or remove space between '}' and '@catch' if on the same line.
+// If set to ignore, sp_brace_catch is used.
+extern Option<iarf_e>
+sp_oc_brace_catch;
+
+// Add or remove space between 'finally' and '{' if on the same line.
+extern Option<iarf_e>
+sp_finally_brace;
+
+// Add or remove space between '}' and 'finally' if on the same line.
+extern Option<iarf_e>
+sp_brace_finally;
+
+// Add or remove space between 'try' and '{' if on the same line.
+extern Option<iarf_e>
+sp_try_brace;
+
+// Add or remove space between get/set and '{' if on the same line.
+extern Option<iarf_e>
+sp_getset_brace;
+
+// Add or remove space between a variable and '{' for C++ uniform
+// initialization.
+extern Option<iarf_e>
+sp_word_brace_init_lst;
+
+// Add or remove space between a variable and '{' for a namespace.
+extern Option<iarf_e>
+sp_word_brace_ns; // = IARF_ADD
+
+// Add or remove space before the '::' operator.
+extern Option<iarf_e>
+sp_before_dc;
+
+// Add or remove space after the '::' operator.
+extern Option<iarf_e>
+sp_after_dc;
+
+// (D) Add or remove around the D named array initializer ':' operator.
+extern Option<iarf_e>
+sp_d_array_colon;
+
+// Add or remove space after the '!' (not) unary operator.
+extern Option<iarf_e>
+sp_not; // = IARF_REMOVE
+
+// Add or remove space between two '!' (not) unary operators.
+// If set to ignore, sp_not will be used.
+extern Option<iarf_e>
+sp_not_not; // = IARF_IGNORE
+
+// Add or remove space after the '~' (invert) unary operator.
+extern Option<iarf_e>
+sp_inv; // = IARF_REMOVE
+
+// Add or remove space after the '&' (address-of) unary operator. This does not
+// affect the spacing after a '&' that is part of a type.
+extern Option<iarf_e>
+sp_addr; // = IARF_REMOVE
+
+// Add or remove space around the '.' or '->' operators.
+extern Option<iarf_e>
+sp_member; // = IARF_REMOVE
+
+// Add or remove space after the '*' (dereference) unary operator. This does
+// not affect the spacing after a '*' that is part of a type.
+extern Option<iarf_e>
+sp_deref; // = IARF_REMOVE
+
+// Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.
+extern Option<iarf_e>
+sp_sign; // = IARF_REMOVE
+
+// Add or remove space between '++' and '--' the word to which it is being
+// applied, as in '(--x)' or 'y++;'.
+extern Option<iarf_e>
+sp_incdec; // = IARF_REMOVE
+
+// Add or remove space before a backslash-newline at the end of a line.
+extern Option<iarf_e>
+sp_before_nl_cont; // = IARF_ADD
+
+// (OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;'
+// or '+(int) bar;'.
+extern Option<iarf_e>
+sp_after_oc_scope;
+
+// (OC) Add or remove space after the colon in message specs,
+// i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.
+extern Option<iarf_e>
+sp_after_oc_colon;
+
+// (OC) Add or remove space before the colon in message specs,
+// i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.
+extern Option<iarf_e>
+sp_before_oc_colon;
+
+// (OC) Add or remove space after the colon in immutable dictionary expression
+// 'NSDictionary *test = @{@"foo" :@"bar"};'.
+extern Option<iarf_e>
+sp_after_oc_dict_colon;
+
+// (OC) Add or remove space before the colon in immutable dictionary expression
+// 'NSDictionary *test = @{@"foo" :@"bar"};'.
+extern Option<iarf_e>
+sp_before_oc_dict_colon;
+
+// (OC) Add or remove space after the colon in message specs,
+// i.e. '[object setValue:1];' vs. '[object setValue: 1];'.
+extern Option<iarf_e>
+sp_after_send_oc_colon;
+
+// (OC) Add or remove space before the colon in message specs,
+// i.e. '[object setValue:1];' vs. '[object setValue :1];'.
+extern Option<iarf_e>
+sp_before_send_oc_colon;
+
+// (OC) Add or remove space after the (type) in message specs,
+// i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'.
+extern Option<iarf_e>
+sp_after_oc_type;
+
+// (OC) Add or remove space after the first (type) in message specs,
+// i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'.
+extern Option<iarf_e>
+sp_after_oc_return_type;
+
+// (OC) Add or remove space between '@selector' and '(',
+// i.e. '@selector(msgName)' vs. '@selector (msgName)'.
+// Also applies to '@protocol()' constructs.
+extern Option<iarf_e>
+sp_after_oc_at_sel;
+
+// (OC) Add or remove space between '@selector(x)' and the following word,
+// i.e. '@selector(foo) a:' vs. '@selector(foo)a:'.
+extern Option<iarf_e>
+sp_after_oc_at_sel_parens;
+
+// (OC) Add or remove space inside '@selector' parentheses,
+// i.e. '@selector(foo)' vs. '@selector( foo )'.
+// Also applies to '@protocol()' constructs.
+extern Option<iarf_e>
+sp_inside_oc_at_sel_parens;
+
+// (OC) Add or remove space before a block pointer caret,
+// i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'.
+extern Option<iarf_e>
+sp_before_oc_block_caret;
+
+// (OC) Add or remove space after a block pointer caret,
+// i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'.
+extern Option<iarf_e>
+sp_after_oc_block_caret;
+
+// (OC) Add or remove space between the receiver and selector in a message,
+// as in '[receiver selector ...]'.
+extern Option<iarf_e>
+sp_after_oc_msg_receiver;
+
+// (OC) Add or remove space after '@property'.
+extern Option<iarf_e>
+sp_after_oc_property;
+
+// (OC) Add or remove space between '@synchronized' and the open parenthesis,
+// i.e. '@synchronized(foo)' vs. '@synchronized (foo)'.
+extern Option<iarf_e>
+sp_after_oc_synchronized;
+
+// Add or remove space around the ':' in 'b ? t : f'.
+extern Option<iarf_e>
+sp_cond_colon;
+
+// Add or remove space before the ':' in 'b ? t : f'.
+//
+// Overrides sp_cond_colon.
+extern Option<iarf_e>
+sp_cond_colon_before;
+
+// Add or remove space after the ':' in 'b ? t : f'.
+//
+// Overrides sp_cond_colon.
+extern Option<iarf_e>
+sp_cond_colon_after;
+
+// Add or remove space around the '?' in 'b ? t : f'.
+extern Option<iarf_e>
+sp_cond_question;
+
+// Add or remove space before the '?' in 'b ? t : f'.
+//
+// Overrides sp_cond_question.
+extern Option<iarf_e>
+sp_cond_question_before;
+
+// Add or remove space after the '?' in 'b ? t : f'.
+//
+// Overrides sp_cond_question.
+extern Option<iarf_e>
+sp_cond_question_after;
+
+// In the abbreviated ternary form '(a ?: b)', add or remove space between '?'
+// and ':'.
+//
+// Overrides all other sp_cond_* options.
+extern Option<iarf_e>
+sp_cond_ternary_short;
+
+// Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make
+// sense here.
+extern Option<iarf_e>
+sp_case_label;
+
+// (D) Add or remove space around the D '..' operator.
+extern Option<iarf_e>
+sp_range;
+
+// Add or remove space after ':' in a Java/C++11 range-based 'for',
+// as in 'for (Type var : <here> expr)'.
+extern Option<iarf_e>
+sp_after_for_colon;
+
+// Add or remove space before ':' in a Java/C++11 range-based 'for',
+// as in 'for (Type var <here> : expr)'.
+extern Option<iarf_e>
+sp_before_for_colon;
+
+// (D) Add or remove space between 'extern' and '(' as in 'extern <here> (C)'.
+extern Option<iarf_e>
+sp_extern_paren;
+
+// Add or remove space after the opening of a C++ comment, as in '// <here> A'.
+extern Option<iarf_e>
+sp_cmt_cpp_start;
+
+// remove space after the '//' and the pvs command '-V1234',
+// only works with sp_cmt_cpp_start set to add or force.
+extern Option<bool>
+sp_cmt_cpp_pvs;
+
+// remove space after the '//' and the command 'lint',
+// only works with sp_cmt_cpp_start set to add or force.
+extern Option<bool>
+sp_cmt_cpp_lint;
+
+// Add or remove space in a C++ region marker comment, as in '// <here> BEGIN'.
+// A region marker is defined as a comment which is not preceded by other text
+// (i.e. the comment is the first non-whitespace on the line), and which starts
+// with either 'BEGIN' or 'END'.
+//
+// Overrides sp_cmt_cpp_start.
+extern Option<iarf_e>
+sp_cmt_cpp_region;
+
+// If true, space added with sp_cmt_cpp_start will be added after Doxygen
+// sequences like '///', '///<', '//!' and '//!<'.
+extern Option<bool>
+sp_cmt_cpp_doxygen;
+
+// If true, space added with sp_cmt_cpp_start will be added after Qt translator
+// or meta-data comments like '//:', '//=', and '//~'.
+extern Option<bool>
+sp_cmt_cpp_qttr;
+
+// Add or remove space between #else or #endif and a trailing comment.
+extern Option<iarf_e>
+sp_endif_cmt;
+
+// Add or remove space after 'new', 'delete' and 'delete[]'.
+extern Option<iarf_e>
+sp_after_new;
+
+// Add or remove space between 'new' and '(' in 'new()'.
+extern Option<iarf_e>
+sp_between_new_paren;
+
+// Add or remove space between ')' and type in 'new(foo) BAR'.
+extern Option<iarf_e>
+sp_after_newop_paren;
+
+// Add or remove space inside parentheses of the new operator
+// as in 'new(foo) BAR'.
+extern Option<iarf_e>
+sp_inside_newop_paren;
+
+// Add or remove space after the open parenthesis of the new operator,
+// as in 'new(foo) BAR'.
+//
+// Overrides sp_inside_newop_paren.
+extern Option<iarf_e>
+sp_inside_newop_paren_open;
+
+// Add or remove space before the close parenthesis of the new operator,
+// as in 'new(foo) BAR'.
+//
+// Overrides sp_inside_newop_paren.
+extern Option<iarf_e>
+sp_inside_newop_paren_close;
+
+// Add or remove space before a trailing comment.
+extern Option<iarf_e>
+sp_before_tr_cmt;
+
+// Number of spaces before a trailing comment.
+extern BoundedOption<unsigned, 0, 16>
+sp_num_before_tr_cmt;
+
+// Add or remove space before an embedded comment.
+extern Option<iarf_e>
+sp_before_emb_cmt; // = IARF_FORCE
+
+// Number of spaces before an embedded comment.
+extern BoundedOption<unsigned, 0, 16>
+sp_num_before_emb_cmt; // = 1
+
+// Add or remove space after an embedded comment.
+extern Option<iarf_e>
+sp_after_emb_cmt; // = IARF_FORCE
+
+// Number of spaces after an embedded comment.
+extern BoundedOption<unsigned, 0, 16>
+sp_num_after_emb_cmt; // = 1
+
+// (Java) Add or remove space between an annotation and the open parenthesis.
+extern Option<iarf_e>
+sp_annotation_paren;
+
+// If true, vbrace tokens are dropped to the previous token and skipped.
+extern Option<bool>
+sp_skip_vbrace_tokens;
+
+// Add or remove space after 'noexcept'.
+extern Option<iarf_e>
+sp_after_noexcept;
+
+// Add or remove space after '_'.
+extern Option<iarf_e>
+sp_vala_after_translation;
+
+// Add or remove space before a bit colon ':'.
+extern Option<iarf_e>
+sp_before_bit_colon;
+
+// Add or remove space after a bit colon ':'.
+extern Option<iarf_e>
+sp_after_bit_colon;
+
+// If true, a <TAB> is inserted after #define.
+extern Option<bool>
+force_tab_after_define;
+
+//END
+
+///////////////////////////////////////////////////////////////////////////////
+//BEGIN Indenting options
+
+// The number of columns to indent per level. Usually 2, 3, 4, or 8.
+extern BoundedOption<unsigned, 0, 16>
+indent_columns; // = 8
+
+// Whether to ignore indent for the first continuation line. Subsequent
+// continuation lines will still be indented to match the first.
+extern Option<bool>
+indent_ignore_first_continue;
+
+// The continuation indent. If non-zero, this overrides the indent of '(', '['
+// and '=' continuation indents. Negative values are OK; negative value is
+// absolute and not increased for each '(' or '[' level.
+//
+// For FreeBSD, this is set to 4.
+// Requires indent_ignore_first_continue=false.
+extern BoundedOption<signed, -16, 16>
+indent_continue;
+
+// The continuation indent, only for class header line(s). If non-zero, this
+// overrides the indent of 'class' continuation indents.
+// Requires indent_ignore_first_continue=false.
+extern BoundedOption<unsigned, 0, 16>
+indent_continue_class_head;
+
+// Whether to indent empty lines (i.e. lines which contain only spaces before
+// the newline character).
+extern Option<bool>
+indent_single_newlines;
+
+// The continuation indent for func_*_param if they are true. If non-zero, this
+// overrides the indent.
+extern BoundedOption<unsigned, 0, 16>
+indent_param;
+
+// How to use tabs when indenting code.
+//
+// 0: Spaces only
+// 1: Indent with tabs to brace level, align with spaces (default)
+// 2: Indent and align with tabs, using spaces when not on a tabstop
+extern BoundedOption<unsigned, 0, 2>
+indent_with_tabs; // = 1
+
+// Whether to indent comments that are not at a brace level with tabs on a
+// tabstop. Requires indent_with_tabs=2. If false, will use spaces.
+extern Option<bool>
+indent_cmt_with_tabs;
+
+// Whether to indent strings broken by '\' so that they line up.
+extern Option<bool>
+indent_align_string;
+
+// The number of spaces to indent multi-line XML strings.
+// Requires indent_align_string=true.
+extern BoundedOption<unsigned, 0, 16>
+indent_xml_string;
+
+// Spaces to indent '{' from level.
+extern BoundedOption<unsigned, 0, 16>
+indent_brace;
+
+// Whether braces are indented to the body level.
+extern Option<bool>
+indent_braces;
+
+// Whether to disable indenting function braces if indent_braces=true.
+extern Option<bool>
+indent_braces_no_func;
+
+// Whether to disable indenting class braces if indent_braces=true.
+extern Option<bool>
+indent_braces_no_class;
+
+// Whether to disable indenting struct braces if indent_braces=true.
+extern Option<bool>
+indent_braces_no_struct;
+
+// Whether to indent based on the size of the brace parent,
+// i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
+extern Option<bool>
+indent_brace_parent;
+
+// Whether to indent based on the open parenthesis instead of the open brace
+// in '({\n'.
+extern Option<bool>
+indent_paren_open_brace;
+
+// (C#) Whether to indent the brace of a C# delegate by another level.
+extern Option<bool>
+indent_cs_delegate_brace;
+
+// (C#) Whether to indent a C# delegate (to handle delegates with no brace) by
+// another level.
+extern Option<bool>
+indent_cs_delegate_body;
+
+// Whether to indent the body of a 'namespace'.
+extern Option<bool>
+indent_namespace;
+
+// Whether to indent only the first namespace, and not any nested namespaces.
+// Requires indent_namespace=true.
+extern Option<bool>
+indent_namespace_single_indent;
+
+// The number of spaces to indent a namespace block.
+// If set to zero, use the value indent_columns
+extern BoundedOption<unsigned, 0, 16>
+indent_namespace_level;
+
+// If the body of the namespace is longer than this number, it won't be
+// indented. Requires indent_namespace=true. 0 means no limit.
+extern BoundedOption<unsigned, 0, 255>
+indent_namespace_limit;
+
+// Whether to indent only in inner namespaces (nested in other namespaces).
+// Requires indent_namespace=true.
+extern Option<bool>
+indent_namespace_inner_only;
+
+// Whether the 'extern "C"' body is indented.
+extern Option<bool>
+indent_extern;
+
+// Whether the 'class' body is indented.
+extern Option<bool>
+indent_class;
+
+// Whether to ignore indent for the leading base class colon.
+extern Option<bool>
+indent_ignore_before_class_colon;
+
+// Additional indent before the leading base class colon.
+// Negative values decrease indent down to the first column.
+// Requires indent_ignore_before_class_colon=false and a newline break before
+// the colon (see pos_class_colon and nl_class_colon)
+extern BoundedOption<signed, -16, 16>
+indent_before_class_colon;
+
+// Whether to indent the stuff after a leading base class colon.
+extern Option<bool>
+indent_class_colon;
+
+// Whether to indent based on a class colon instead of the stuff after the
+// colon. Requires indent_class_colon=true.
+extern Option<bool>
+indent_class_on_colon;
+
+// Whether to ignore indent for a leading class initializer colon.
+extern Option<bool>
+indent_ignore_before_constr_colon;
+
+// Whether to indent the stuff after a leading class initializer colon.
+extern Option<bool>
+indent_constr_colon;
+
+// Virtual indent from the ':' for leading member initializers.
+extern BoundedOption<unsigned, 0, 16>
+indent_ctor_init_leading; // = 2
+
+// Virtual indent from the ':' for following member initializers.
+extern BoundedOption<unsigned, 0, 16>
+indent_ctor_init_following; // = 2
+
+// Additional indent for constructor initializer list.
+// Negative values decrease indent down to the first column.
+extern BoundedOption<signed, -16, 16>
+indent_ctor_init;
+
+// Whether to indent 'if' following 'else' as a new block under the 'else'.
+// If false, 'else\nif' is treated as 'else if' for indenting purposes.
+extern Option<bool>
+indent_else_if;
+
+// Amount to indent variable declarations after a open brace.
+//
+// <0: Relative
+// >=0: Absolute
+extern BoundedOption<signed, -16, 16>
+indent_var_def_blk;
+
+// Whether to indent continued variable declarations instead of aligning.
+extern Option<bool>
+indent_var_def_cont;
+
+// How to indent continued shift expressions ('<<' and '>>').
+// Set align_left_shift=false when using this.
+// 0: Align shift operators instead of indenting them (default)
+// 1: Indent by one level
+// -1: Preserve original indentation
+extern BoundedOption<signed, -1, 1>
+indent_shift;
+
+// Whether to force indentation of function definitions to start in column 1.
+extern Option<bool>
+indent_func_def_force_col1;
+
+// Whether to indent continued function call parameters one indent level,
+// rather than aligning parameters under the open parenthesis.
+extern Option<bool>
+indent_func_call_param;
+
+// Whether to indent continued function definition parameters one indent level,
+// rather than aligning parameters under the open parenthesis.
+extern Option<bool>
+indent_func_def_param;
+
+// for function definitions, only if indent_func_def_param is false
+// Allows to align params when appropriate and indent them when not
+// behave as if it was true if paren position is more than this value
+// if paren position is more than the option value
+extern BoundedOption<unsigned, 0, 160>
+indent_func_def_param_paren_pos_threshold;
+
+// Whether to indent continued function call prototype one indent level,
+// rather than aligning parameters under the open parenthesis.
+extern Option<bool>
+indent_func_proto_param;
+
+// Whether to indent continued function call declaration one indent level,
+// rather than aligning parameters under the open parenthesis.
+extern Option<bool>
+indent_func_class_param;
+
+// Whether to indent continued class variable constructors one indent level,
+// rather than aligning parameters under the open parenthesis.
+extern Option<bool>
+indent_func_ctor_var_param;
+
+// Whether to indent continued template parameter list one indent level,
+// rather than aligning parameters under the open parenthesis.
+extern Option<bool>
+indent_template_param;
+
+// Double the indent for indent_func_xxx_param options.
+// Use both values of the options indent_columns and indent_param.
+extern Option<bool>
+indent_func_param_double;
+
+// Indentation column for standalone 'const' qualifier on a function
+// prototype.
+extern BoundedOption<unsigned, 0, 69>
+indent_func_const;
+
+// Indentation column for standalone 'throw' qualifier on a function
+// prototype.
+extern BoundedOption<unsigned, 0, 41>
+indent_func_throw;
+
+// How to indent within a macro followed by a brace on the same line
+// This allows reducing the indent in macros that have (for example)
+// `do { ... } while (0)` blocks bracketing them.
+//
+// true: add an indent for the brace on the same line as the macro
+// false: do not add an indent for the brace on the same line as the macro
+extern Option<bool>
+indent_macro_brace; // = true
+
+// The number of spaces to indent a continued '->' or '.'.
+// Usually set to 0, 1, or indent_columns.
+extern BoundedOption<unsigned, 0, 16>
+indent_member;
+
+// Whether lines broken at '.' or '->' should be indented by a single indent.
+// The indent_member option will not be effective if this is set to true.
+extern Option<bool>
+indent_member_single;
+
+// Spaces to indent single line ('//') comments on lines before code.
+extern BoundedOption<unsigned, 0, 16>
+indent_single_line_comments_before;
+
+// Spaces to indent single line ('//') comments on lines after code.
+extern BoundedOption<unsigned, 0, 16>
+indent_single_line_comments_after;
+
+// When opening a paren for a control statement (if, for, while, etc), increase
+// the indent level by this value. Negative values decrease the indent level.
+extern BoundedOption<signed, -16, 16>
+indent_sparen_extra;
+
+// Whether to indent trailing single line ('//') comments relative to the code
+// instead of trying to keep the same absolute column.
+extern Option<bool>
+indent_relative_single_line_comments;
+
+// Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.
+// It might be wise to choose the same value for the option indent_case_brace.
+extern BoundedOption<unsigned, 0, 16>
+indent_switch_case;
+
+// Spaces to indent the body of a 'switch' before any 'case'.
+// Usually the same as indent_columns or indent_switch_case.
+extern BoundedOption<unsigned, 0, 16>
+indent_switch_body;
+
+// Whether to ignore indent for '{' following 'case'.
+extern Option<bool>
+indent_ignore_case_brace;
+
+// Spaces to indent '{' from 'case'. By default, the brace will appear under
+// the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.
+// It might be wise to choose the same value for the option indent_switch_case.
+extern BoundedOption<signed, -16, 16>
+indent_case_brace;
+
+// indent 'break' with 'case' from 'switch'.
+extern Option<bool>
+indent_switch_break_with_case;
+
+// Whether to indent preprocessor statements inside of switch statements.
+extern Option<bool>
+indent_switch_pp; // = true
+
+// Spaces to shift the 'case' line, without affecting any other lines.
+// Usually 0.
+extern BoundedOption<unsigned, 0, 16>
+indent_case_shift;
+
+// Whether to align comments before 'case' with the 'case'.
+extern Option<bool>
+indent_case_comment; // = true
+
+// Whether to indent comments not found in first column.
+extern Option<bool>
+indent_comment; // = true
+
+// Whether to indent comments found in first column.
+extern Option<bool>
+indent_col1_comment;
+
+// Whether to indent multi string literal in first column.
+extern Option<bool>
+indent_col1_multi_string_literal;
+
+// Align comments on adjacent lines that are this many columns apart or less.
+extern BoundedOption<unsigned, 0, 16>
+indent_comment_align_thresh; // = 3
+
+// Whether to ignore indent for goto labels.
+extern Option<bool>
+indent_ignore_label;
+
+// How to indent goto labels. Requires indent_ignore_label=false.
+//
+// >0: Absolute column where 1 is the leftmost column
+// <=0: Subtract from brace indent
+extern BoundedOption<signed, -16, 16>
+indent_label; // = 1
+
+// How to indent access specifiers that are followed by a
+// colon.
+//
+// >0: Absolute column where 1 is the leftmost column
+// <=0: Subtract from brace indent
+extern BoundedOption<signed, -16, 16>
+indent_access_spec; // = 1
+
+// Whether to indent the code after an access specifier by one level.
+// If true, this option forces 'indent_access_spec=0'.
+extern Option<bool>
+indent_access_spec_body;
+
+// If an open parenthesis is followed by a newline, whether to indent the next
+// line so that it lines up after the open parenthesis (not recommended).
+extern Option<bool>
+indent_paren_nl;
+
+// How to indent a close parenthesis after a newline.
+//
+// 0: Indent to body level (default)
+// 1: Align under the open parenthesis
+// 2: Indent to the brace level
+// -1: Preserve original indentation
+extern BoundedOption<signed, -1, 2>
+indent_paren_close;
+
+// Whether to indent the open parenthesis of a function definition,
+// if the parenthesis is on its own line.
+extern Option<bool>
+indent_paren_after_func_def;
+
+// Whether to indent the open parenthesis of a function declaration,
+// if the parenthesis is on its own line.
+extern Option<bool>
+indent_paren_after_func_decl;
+
+// Whether to indent the open parenthesis of a function call,
+// if the parenthesis is on its own line.
+extern Option<bool>
+indent_paren_after_func_call;
+
+// How to indent a comma when inside braces.
+// 0: Indent by one level (default)
+// 1: Align under the open brace
+// -1: Preserve original indentation
+extern BoundedOption<signed, -1, 1>
+indent_comma_brace;
+
+// How to indent a comma when inside parentheses.
+// 0: Indent by one level (default)
+// 1: Align under the open parenthesis
+// -1: Preserve original indentation
+extern BoundedOption<signed, -1, 1>
+indent_comma_paren;
+
+// How to indent a Boolean operator when inside parentheses.
+// 0: Indent by one level (default)
+// 1: Align under the open parenthesis
+// -1: Preserve original indentation
+extern BoundedOption<signed, -1, 1>
+indent_bool_paren;
+
+// Whether to ignore the indentation of a Boolean operator when outside
+// parentheses.
+extern Option<bool>
+indent_ignore_bool;
+
+// Whether to ignore the indentation of an arithmetic operator.
+extern Option<bool>
+indent_ignore_arith;
+
+// Whether to indent a semicolon when inside a for parenthesis.
+// If true, aligns under the open for parenthesis.
+extern Option<bool>
+indent_semicolon_for_paren;
+
+// Whether to ignore the indentation of a semicolon outside of a 'for'
+// statement.
+extern Option<bool>
+indent_ignore_semicolon;
+
+// Whether to align the first expression to following ones
+// if indent_bool_paren=1.
+extern Option<bool>
+indent_first_bool_expr;
+
+// Whether to align the first expression to following ones
+// if indent_semicolon_for_paren=true.
+extern Option<bool>
+indent_first_for_expr;
+
+// If an open square is followed by a newline, whether to indent the next line
+// so that it lines up after the open square (not recommended).
+extern Option<bool>
+indent_square_nl;
+
+// (ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies.
+extern Option<bool>
+indent_preserve_sql;
+
+// Whether to ignore the indentation of an assignment operator.
+extern Option<bool>
+indent_ignore_assign;
+
+// Whether to align continued statements at the '='. If false or if the '=' is
+// followed by a newline, the next line is indent one tab.
+extern Option<bool>
+indent_align_assign; // = true
+
+// If true, the indentation of the chunks after a '=' sequence will be set at
+// LHS token indentation column before '='.
+extern Option<bool>
+indent_off_after_assign;
+
+// Whether to align continued statements at the '('. If false or the '(' is
+// followed by a newline, the next line indent is one tab.
+extern Option<bool>
+indent_align_paren; // = true
+
+// (OC) Whether to indent Objective-C code inside message selectors.
+extern Option<bool>
+indent_oc_inside_msg_sel;
+
+// (OC) Whether to indent Objective-C blocks at brace level instead of usual
+// rules.
+extern Option<bool>
+indent_oc_block;
+
+// (OC) Indent for Objective-C blocks in a message relative to the parameter
+// name.
+//
+// =0: Use indent_oc_block rules
+// >0: Use specified number of spaces to indent
+extern BoundedOption<unsigned, 0, 16>
+indent_oc_block_msg;
+
+// (OC) Minimum indent for subsequent parameters
+extern BoundedOption<unsigned, 0, 5000>
+indent_oc_msg_colon;
+
+// (OC) Whether to prioritize aligning with initial colon (and stripping spaces
+// from lines, if necessary).
+extern Option<bool>
+indent_oc_msg_prioritize_first_colon; // = true
+
+// (OC) Whether to indent blocks the way that Xcode does by default
+// (from the keyword if the parameter is on its own line; otherwise, from the
+// previous indentation level). Requires indent_oc_block_msg=true.
+extern Option<bool>
+indent_oc_block_msg_xcode_style;
+
+// (OC) Whether to indent blocks from where the brace is, relative to a
+// message keyword. Requires indent_oc_block_msg=true.
+extern Option<bool>
+indent_oc_block_msg_from_keyword;
+
+// (OC) Whether to indent blocks from where the brace is, relative to a message
+// colon. Requires indent_oc_block_msg=true.
+extern Option<bool>
+indent_oc_block_msg_from_colon;
+
+// (OC) Whether to indent blocks from where the block caret is.
+// Requires indent_oc_block_msg=true.
+extern Option<bool>
+indent_oc_block_msg_from_caret;
+
+// (OC) Whether to indent blocks from where the brace caret is.
+// Requires indent_oc_block_msg=true.
+extern Option<bool>
+indent_oc_block_msg_from_brace;
+
+// When indenting after virtual brace open and newline add further spaces to
+// reach this minimum indent.
+extern BoundedOption<unsigned, 0, 16>
+indent_min_vbrace_open;
+
+// Whether to add further spaces after regular indent to reach next tabstop
+// when indenting after virtual brace open and newline.
+extern Option<bool>
+indent_vbrace_open_on_tabstop;
+
+// How to indent after a brace followed by another token (not a newline).
+// true: indent all contained lines to match the token
+// false: indent all contained lines to match the brace
+extern Option<bool>
+indent_token_after_brace; // = true
+
+// Whether to indent the body of a C++11 lambda.
+extern Option<bool>
+indent_cpp_lambda_body;
+
+// How to indent compound literals that are being returned.
+// true: add both the indent from return & the compound literal open brace
+// (i.e. 2 indent levels)
+// false: only indent 1 level, don't add the indent for the open brace, only
+// add the indent for the return.
+extern Option<bool>
+indent_compound_literal_return; // = true
+
+// (C#) Whether to indent a 'using' block if no braces are used.
+extern Option<bool>
+indent_using_block; // = true
+
+// How to indent the continuation of ternary operator.
+//
+// 0: Off (default)
+// 1: When the `if_false` is a continuation, indent it under the `if_true` branch
+// 2: When the `:` is a continuation, indent it under `?`
+extern BoundedOption<unsigned, 0, 2>
+indent_ternary_operator;
+
+// Whether to indent the statements inside ternary operator.
+extern Option<bool>
+indent_inside_ternary_operator;
+
+// If true, the indentation of the chunks after a `return` sequence will be set at return indentation column.
+extern Option<bool>
+indent_off_after_return;
+
+// If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column.
+extern Option<bool>
+indent_off_after_return_new;
+
+// If true, the tokens after return are indented with regular single indentation. By default (false) the indentation is after the return token.
+extern Option<bool>
+indent_single_after_return;
+
+// Whether to ignore indent and alignment for 'asm' blocks (i.e. assume they
+// have their own indentation).
+extern Option<bool>
+indent_ignore_asm_block;
+
+// Don't indent the close parenthesis of a function definition,
+// if the parenthesis is on its own line.
+extern Option<bool>
+donot_indent_func_def_close_paren;
+
+//END
+
+///////////////////////////////////////////////////////////////////////////////
+//BEGIN Newline adding and removing options
+
+// Whether to collapse empty blocks between '{' and '}' except for functions.
+// Use nl_collapse_empty_body_functions to specify how empty function braces
+// should be formatted.
+extern Option<bool>
+nl_collapse_empty_body;
+
+// Whether to collapse empty blocks between '{' and '}' for functions only.
+// If true, overrides nl_inside_empty_func.
+extern Option<bool>
+nl_collapse_empty_body_functions;
+
+// Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'.
+extern Option<bool>
+nl_assign_leave_one_liners;
+
+// Don't split one-line braced statements inside a 'class xx { }' body.
+extern Option<bool>
+nl_class_leave_one_liners;
+
+// Don't split one-line enums, as in 'enum foo { BAR = 15 };'
+extern Option<bool>
+nl_enum_leave_one_liners;
+
+// Don't split one-line get or set functions.
+extern Option<bool>
+nl_getset_leave_one_liners;
+
+// (C#) Don't split one-line property get or set functions.
+extern Option<bool>
+nl_cs_property_leave_one_liners;
+
+// Don't split one-line function definitions, as in 'int foo() { return 0; }'.
+// might modify nl_func_type_name
+extern Option<bool>
+nl_func_leave_one_liners;
+
+// Don't split one-line C++11 lambdas, as in '[]() { return 0; }'.
+extern Option<bool>
+nl_cpp_lambda_leave_one_liners;
+
+// Don't split one-line if/else statements, as in 'if(...) b++;'.
+extern Option<bool>
+nl_if_leave_one_liners;
+
+// Don't split one-line while statements, as in 'while(...) b++;'.
+extern Option<bool>
+nl_while_leave_one_liners;
+
+// Don't split one-line do statements, as in 'do { b++; } while(...);'.
+extern Option<bool>
+nl_do_leave_one_liners;
+
+// Don't split one-line for statements, as in 'for(...) b++;'.
+extern Option<bool>
+nl_for_leave_one_liners;
+
+// (OC) Don't split one-line Objective-C messages.
+extern Option<bool>
+nl_oc_msg_leave_one_liner;
+
+// (OC) Add or remove newline between method declaration and '{'.
+extern Option<iarf_e>
+nl_oc_mdef_brace;
+
+// (OC) Add or remove newline between Objective-C block signature and '{'.
+extern Option<iarf_e>
+nl_oc_block_brace;
+
+// (OC) Add or remove blank line before '@interface' statement.
+extern Option<iarf_e>
+nl_oc_before_interface;
+
+// (OC) Add or remove blank line before '@implementation' statement.
+extern Option<iarf_e>
+nl_oc_before_implementation;
+
+// (OC) Add or remove blank line before '@end' statement.
+extern Option<iarf_e>
+nl_oc_before_end;
+
+// (OC) Add or remove newline between '@interface' and '{'.
+extern Option<iarf_e>
+nl_oc_interface_brace;
+
+// (OC) Add or remove newline between '@implementation' and '{'.
+extern Option<iarf_e>
+nl_oc_implementation_brace;
+
+// Add or remove newlines at the start of the file.
+extern Option<iarf_e>
+nl_start_of_file;
+
+// The minimum number of newlines at the start of the file (only used if
+// nl_start_of_file is 'add' or 'force').
+extern BoundedOption<unsigned, 0, 16>
+nl_start_of_file_min;
+
+// Add or remove newline at the end of the file.
+extern Option<iarf_e>
+nl_end_of_file;
+
+// The minimum number of newlines at the end of the file (only used if
+// nl_end_of_file is 'add' or 'force').
+extern BoundedOption<unsigned, 0, 16>
+nl_end_of_file_min;
+
+// Add or remove newline between '=' and '{'.
+extern Option<iarf_e>
+nl_assign_brace;
+
+// (D) Add or remove newline between '=' and '['.
+extern Option<iarf_e>
+nl_assign_square;
+
+// Add or remove newline between '[]' and '{'.
+extern Option<iarf_e>
+nl_tsquare_brace;
+
+// (D) Add or remove newline after '= ['. Will also affect the newline before
+// the ']'.
+extern Option<iarf_e>
+nl_after_square_assign;
+
+// Add or remove newline between a function call's ')' and '{', as in
+// 'list_for_each(item, &list) { }'.
+extern Option<iarf_e>
+nl_fcall_brace;
+
+// Add or remove newline between 'enum' and '{'.
+extern Option<iarf_e>
+nl_enum_brace;
+
+// Add or remove newline between 'enum' and 'class'.
+extern Option<iarf_e>
+nl_enum_class;
+
+// Add or remove newline between 'enum class' and the identifier.
+extern Option<iarf_e>
+nl_enum_class_identifier;
+
+// Add or remove newline between 'enum class' type and ':'.
+extern Option<iarf_e>
+nl_enum_identifier_colon;
+
+// Add or remove newline between 'enum class identifier :' and type.
+extern Option<iarf_e>
+nl_enum_colon_type;
+
+// Add or remove newline between 'struct and '{'.
+extern Option<iarf_e>
+nl_struct_brace;
+
+// Add or remove newline between 'union' and '{'.
+extern Option<iarf_e>
+nl_union_brace;
+
+// Add or remove newline between 'if' and '{'.
+extern Option<iarf_e>
+nl_if_brace;
+
+// Add or remove newline between '}' and 'else'.
+extern Option<iarf_e>
+nl_brace_else;
+
+// Add or remove newline between 'else if' and '{'. If set to ignore,
+// nl_if_brace is used instead.
+extern Option<iarf_e>
+nl_elseif_brace;
+
+// Add or remove newline between 'else' and '{'.
+extern Option<iarf_e>
+nl_else_brace;
+
+// Add or remove newline between 'else' and 'if'.
+extern Option<iarf_e>
+nl_else_if;
+
+// Add or remove newline before '{' opening brace
+extern Option<iarf_e>
+nl_before_opening_brace_func_class_def;
+
+// Add or remove newline before 'if'/'else if' closing parenthesis.
+extern Option<iarf_e>
+nl_before_if_closing_paren;
+
+// Add or remove newline between '}' and 'finally'.
+extern Option<iarf_e>
+nl_brace_finally;
+
+// Add or remove newline between 'finally' and '{'.
+extern Option<iarf_e>
+nl_finally_brace;
+
+// Add or remove newline between 'try' and '{'.
+extern Option<iarf_e>
+nl_try_brace;
+
+// Add or remove newline between get/set and '{'.
+extern Option<iarf_e>
+nl_getset_brace;
+
+// Add or remove newline between 'for' and '{'.
+extern Option<iarf_e>
+nl_for_brace;
+
+// Add or remove newline before the '{' of a 'catch' statement, as in
+// 'catch (decl) <here> {'.
+extern Option<iarf_e>
+nl_catch_brace;
+
+// (OC) Add or remove newline before the '{' of a '@catch' statement, as in
+// '@catch (decl) <here> {'. If set to ignore, nl_catch_brace is used.
+extern Option<iarf_e>
+nl_oc_catch_brace;
+
+// Add or remove newline between '}' and 'catch'.
+extern Option<iarf_e>
+nl_brace_catch;
+
+// (OC) Add or remove newline between '}' and '@catch'. If set to ignore,
+// nl_brace_catch is used.
+extern Option<iarf_e>
+nl_oc_brace_catch;
+
+// Add or remove newline between '}' and ']'.
+extern Option<iarf_e>
+nl_brace_square;
+
+// Add or remove newline between '}' and ')' in a function invocation.
+extern Option<iarf_e>
+nl_brace_fparen;
+
+// Add or remove newline between 'while' and '{'.
+extern Option<iarf_e>
+nl_while_brace;
+
+// (D) Add or remove newline between 'scope (x)' and '{'.
+extern Option<iarf_e>
+nl_scope_brace;
+
+// (D) Add or remove newline between 'unittest' and '{'.
+extern Option<iarf_e>
+nl_unittest_brace;
+
+// (D) Add or remove newline between 'version (x)' and '{'.
+extern Option<iarf_e>
+nl_version_brace;
+
+// (C#) Add or remove newline between 'using' and '{'.
+extern Option<iarf_e>
+nl_using_brace;
+
+// Add or remove newline between two open or close braces. Due to general
+// newline/brace handling, REMOVE may not work.
+extern Option<iarf_e>
+nl_brace_brace;
+
+// Add or remove newline between 'do' and '{'.
+extern Option<iarf_e>
+nl_do_brace;
+
+// Add or remove newline between '}' and 'while' of 'do' statement.
+extern Option<iarf_e>
+nl_brace_while;
+
+// Add or remove newline between 'switch' and '{'.
+extern Option<iarf_e>
+nl_switch_brace;
+
+// Add or remove newline between 'synchronized' and '{'.
+extern Option<iarf_e>
+nl_synchronized_brace;
+
+// 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.
+extern Option<bool>
+nl_multi_line_cond;
+
+// Add a newline after '(' if an if/for/while/switch condition spans multiple
+// lines
+extern Option<iarf_e>
+nl_multi_line_sparen_open;
+
+// Add a newline before ')' if an if/for/while/switch condition spans multiple
+// lines. Overrides nl_before_if_closing_paren if both are specified.
+extern Option<iarf_e>
+nl_multi_line_sparen_close;
+
+// Force a newline in a define after the macro name for multi-line defines.
+extern Option<bool>
+nl_multi_line_define;
+
+// Whether to add a newline before 'case', and a blank line before a 'case'
+// statement that follows a ';' or '}'.
+extern Option<bool>
+nl_before_case;
+
+// Whether to add a newline after a 'case' statement.
+extern Option<bool>
+nl_after_case;
+
+// Add or remove newline between a case ':' and '{'.
+//
+// Overrides nl_after_case.
+extern Option<iarf_e>
+nl_case_colon_brace;
+
+// Add or remove newline between ')' and 'throw'.
+extern Option<iarf_e>
+nl_before_throw;
+
+// Add or remove newline between 'namespace' and '{'.
+extern Option<iarf_e>
+nl_namespace_brace;
+
+// Add or remove newline after 'template<...>' of a template class.
+extern Option<iarf_e>
+nl_template_class;
+
+// Add or remove newline after 'template<...>' of a template class declaration.
+//
+// Overrides nl_template_class.
+extern Option<iarf_e>
+nl_template_class_decl;
+
+// Add or remove newline after 'template<>' of a specialized class declaration.
+//
+// Overrides nl_template_class_decl.
+extern Option<iarf_e>
+nl_template_class_decl_special;
+
+// Add or remove newline after 'template<...>' of a template class definition.
+//
+// Overrides nl_template_class.
+extern Option<iarf_e>
+nl_template_class_def;
+
+// Add or remove newline after 'template<>' of a specialized class definition.
+//
+// Overrides nl_template_class_def.
+extern Option<iarf_e>
+nl_template_class_def_special;
+
+// Add or remove newline after 'template<...>' of a template function.
+extern Option<iarf_e>
+nl_template_func;
+
+// Add or remove newline after 'template<...>' of a template function
+// declaration.
+//
+// Overrides nl_template_func.
+extern Option<iarf_e>
+nl_template_func_decl;
+
+// Add or remove newline after 'template<>' of a specialized function
+// declaration.
+//
+// Overrides nl_template_func_decl.
+extern Option<iarf_e>
+nl_template_func_decl_special;
+
+// Add or remove newline after 'template<...>' of a template function
+// definition.
+//
+// Overrides nl_template_func.
+extern Option<iarf_e>
+nl_template_func_def;
+
+// Add or remove newline after 'template<>' of a specialized function
+// definition.
+//
+// Overrides nl_template_func_def.
+extern Option<iarf_e>
+nl_template_func_def_special;
+
+// Add or remove newline after 'template<...>' of a template variable.
+extern Option<iarf_e>
+nl_template_var;
+
+// Add or remove newline between 'template<...>' and 'using' of a templated
+// type alias.
+extern Option<iarf_e>
+nl_template_using;
+
+// Add or remove newline between 'class' and '{'.
+extern Option<iarf_e>
+nl_class_brace;
+
+// Add or remove newline before or after (depending on pos_class_comma,
+// may not be IGNORE) each',' in the base class list.
+extern Option<iarf_e>
+nl_class_init_args;
+
+// Add or remove newline after each ',' in the constructor member
+// initialization. Related to nl_constr_colon, pos_constr_colon and
+// pos_constr_comma.
+extern Option<iarf_e>
+nl_constr_init_args;
+
+// Add or remove newline before first element, after comma, and after last
+// element, in 'enum'.
+extern Option<iarf_e>
+nl_enum_own_lines;
+
+// Add or remove newline between return type and function name in a function
+// definition.
+// might be modified by nl_func_leave_one_liners
+extern Option<iarf_e>
+nl_func_type_name;
+
+// Add or remove newline between return type and function name inside a class
+// definition. If set to ignore, nl_func_type_name or nl_func_proto_type_name
+// is used instead.
+extern Option<iarf_e>
+nl_func_type_name_class;
+
+// Add or remove newline between class specification and '::'
+// in 'void A::f() { }'. Only appears in separate member implementation (does
+// not appear with in-line implementation).
+extern Option<iarf_e>
+nl_func_class_scope;
+
+// Add or remove newline between function scope and name, as in
+// 'void A :: <here> f() { }'.
+extern Option<iarf_e>
+nl_func_scope_name;
+
+// Add or remove newline between return type and function name in a prototype.
+extern Option<iarf_e>
+nl_func_proto_type_name;
+
+// Add or remove newline between a function name and the opening '(' in the
+// declaration.
+extern Option<iarf_e>
+nl_func_paren;
+
+// Overrides nl_func_paren for functions with no parameters.
+extern Option<iarf_e>
+nl_func_paren_empty;
+
+// Add or remove newline between a function name and the opening '(' in the
+// definition.
+extern Option<iarf_e>
+nl_func_def_paren;
+
+// Overrides nl_func_def_paren for functions with no parameters.
+extern Option<iarf_e>
+nl_func_def_paren_empty;
+
+// Add or remove newline between a function name and the opening '(' in the
+// call.
+extern Option<iarf_e>
+nl_func_call_paren;
+
+// Overrides nl_func_call_paren for functions with no parameters.
+extern Option<iarf_e>
+nl_func_call_paren_empty;
+
+// Add or remove newline after '(' in a function declaration.
+extern Option<iarf_e>
+nl_func_decl_start;
+
+// Add or remove newline after '(' in a function definition.
+extern Option<iarf_e>
+nl_func_def_start;
+
+// Overrides nl_func_decl_start when there is only one parameter.
+extern Option<iarf_e>
+nl_func_decl_start_single;
+
+// Overrides nl_func_def_start when there is only one parameter.
+extern Option<iarf_e>
+nl_func_def_start_single;
+
+// Whether to add a newline after '(' in a function declaration if '(' and ')'
+// are in different lines. If false, nl_func_decl_start is used instead.
+extern Option<bool>
+nl_func_decl_start_multi_line;
+
+// Whether to add a newline after '(' in a function definition if '(' and ')'
+// are in different lines. If false, nl_func_def_start is used instead.
+extern Option<bool>
+nl_func_def_start_multi_line;
+
+// Add or remove newline after each ',' in a function declaration.
+extern Option<iarf_e>
+nl_func_decl_args;
+
+// Add or remove newline after each ',' in a function definition.
+extern Option<iarf_e>
+nl_func_def_args;
+
+// Add or remove newline after each ',' in a function call.
+extern Option<iarf_e>
+nl_func_call_args;
+
+// Whether to add a newline after each ',' in a function declaration if '('
+// and ')' are in different lines. If false, nl_func_decl_args is used instead.
+extern Option<bool>
+nl_func_decl_args_multi_line;
+
+// Whether to add a newline after each ',' in a function definition if '('
+// and ')' are in different lines. If false, nl_func_def_args is used instead.
+extern Option<bool>
+nl_func_def_args_multi_line;
+
+// Add or remove newline before the ')' in a function declaration.
+extern Option<iarf_e>
+nl_func_decl_end;
+
+// Add or remove newline before the ')' in a function definition.
+extern Option<iarf_e>
+nl_func_def_end;
+
+// Overrides nl_func_decl_end when there is only one parameter.
+extern Option<iarf_e>
+nl_func_decl_end_single;
+
+// Overrides nl_func_def_end when there is only one parameter.
+extern Option<iarf_e>
+nl_func_def_end_single;
+
+// Whether to add a newline before ')' in a function declaration if '(' and ')'
+// are in different lines. If false, nl_func_decl_end is used instead.
+extern Option<bool>
+nl_func_decl_end_multi_line;
+
+// Whether to add a newline before ')' in a function definition if '(' and ')'
+// are in different lines. If false, nl_func_def_end is used instead.
+extern Option<bool>
+nl_func_def_end_multi_line;
+
+// Add or remove newline between '()' in a function declaration.
+extern Option<iarf_e>
+nl_func_decl_empty;
+
+// Add or remove newline between '()' in a function definition.
+extern Option<iarf_e>
+nl_func_def_empty;
+
+// Add or remove newline between '()' in a function call.
+extern Option<iarf_e>
+nl_func_call_empty;
+
+// Whether to add a newline after '(' in a function call,
+// has preference over nl_func_call_start_multi_line.
+extern Option<iarf_e>
+nl_func_call_start;
+
+// Whether to add a newline before ')' in a function call.
+extern Option<iarf_e>
+nl_func_call_end;
+
+// Whether to add a newline after '(' in a function call if '(' and ')' are in
+// different lines.
+extern Option<bool>
+nl_func_call_start_multi_line;
+
+// Whether to add a newline after each ',' in a function call if '(' and ')'
+// are in different lines.
+extern Option<bool>
+nl_func_call_args_multi_line;
+
+// Whether to add a newline before ')' in a function call if '(' and ')' are in
+// different lines.
+extern Option<bool>
+nl_func_call_end_multi_line;
+
+// Whether to respect nl_func_call_XXX option in case of closure args.
+extern Option<bool>
+nl_func_call_args_multi_line_ignore_closures; // false
+
+// Whether to add a newline after '<' of a template parameter list.
+extern Option<bool>
+nl_template_start;
+
+// Whether to add a newline after each ',' in a template parameter list.
+extern Option<bool>
+nl_template_args;
+
+// Whether to add a newline before '>' of a template parameter list.
+extern Option<bool>
+nl_template_end;
+
+// (OC) Whether to put each Objective-C message parameter on a separate line.
+// See nl_oc_msg_leave_one_liner.
+extern Option<bool>
+nl_oc_msg_args;
+
+// (OC) Minimum number of Objective-C message parameters before applying nl_oc_msg_args.
+extern BoundedOption<unsigned, 0, 16>
+nl_oc_msg_args_min_params;
+
+// (OC) Max code width of Objective-C message before applying nl_oc_msg_args.
+extern BoundedOption<unsigned, 0, 10000>
+nl_oc_msg_args_max_code_width;
+
+// Add or remove newline between function signature and '{'.
+extern Option<iarf_e>
+nl_fdef_brace;
+
+// Add or remove newline between function signature and '{',
+// if signature ends with ')'. Overrides nl_fdef_brace.
+extern Option<iarf_e>
+nl_fdef_brace_cond;
+
+// Add or remove newline between C++11 lambda signature and '{'.
+extern Option<iarf_e>
+nl_cpp_ldef_brace;
+
+// Add or remove newline between 'return' and the return expression.
+extern Option<iarf_e>
+nl_return_expr;
+
+// Add or remove newline between 'throw' and the throw expression.
+extern Option<iarf_e>
+nl_throw_expr;
+
+// Whether to add a newline after semicolons, except in 'for' statements.
+extern Option<bool>
+nl_after_semicolon;
+
+// (Java) Add or remove newline between the ')' and '{{' of the double brace
+// initializer.
+extern Option<iarf_e>
+nl_paren_dbrace_open;
+
+// Whether to add a newline after the type in an unnamed temporary
+// direct-list-initialization, better:
+// before a direct-list-initialization.
+extern Option<iarf_e>
+nl_type_brace_init_lst;
+
+// Whether to add a newline after the open brace in an unnamed temporary
+// direct-list-initialization.
+extern Option<iarf_e>
+nl_type_brace_init_lst_open;
+
+// Whether to add a newline before the close brace in an unnamed temporary
+// direct-list-initialization.
+extern Option<iarf_e>
+nl_type_brace_init_lst_close;
+
+// Whether to add a newline before '{'.
+extern Option<bool>
+nl_before_brace_open;
+
+// Whether to add a newline after '{'.
+extern Option<bool>
+nl_after_brace_open;
+
+// Whether to add a newline between the open brace and a trailing single-line
+// comment. Requires nl_after_brace_open=true.
+extern Option<bool>
+nl_after_brace_open_cmt;
+
+// Whether to add a newline after a virtual brace open with a non-empty body.
+// These occur in un-braced if/while/do/for statement bodies.
+extern Option<bool>
+nl_after_vbrace_open;
+
+// Whether to add a newline after a virtual brace open with an empty body.
+// These occur in un-braced if/while/do/for statement bodies.
+extern Option<bool>
+nl_after_vbrace_open_empty;
+
+// Whether to add a newline after '}'. Does not apply if followed by a
+// necessary ';'.
+extern Option<bool>
+nl_after_brace_close;
+
+// Whether to add a newline after a virtual brace close,
+// as in 'if (foo) a++; <here> return;'.
+extern Option<bool>
+nl_after_vbrace_close;
+
+// Add or remove newline between the close brace and identifier,
+// as in 'struct { int a; } <here> b;'. Affects enumerations, unions and
+// structures. If set to ignore, uses nl_after_brace_close.
+extern Option<iarf_e>
+nl_brace_struct_var;
+
+// Whether to alter newlines in '#define' macros.
+extern Option<bool>
+nl_define_macro;
+
+// Whether to alter newlines between consecutive parenthesis closes. The number
+// of closing parentheses in a line will depend on respective open parenthesis
+// lines.
+extern Option<bool>
+nl_squeeze_paren_close;
+
+// Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and
+// '#endif'. Does not affect top-level #ifdefs.
+extern Option<bool>
+nl_squeeze_ifdef;
+
+// Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well.
+extern Option<bool>
+nl_squeeze_ifdef_top_level;
+
+// Add or remove blank line before 'if'.
+extern Option<iarf_e>
+nl_before_if;
+
+// Add or remove blank line after 'if' statement. Add/Force work only if the
+// next token is not a closing brace.
+extern Option<iarf_e>
+nl_after_if;
+
+// Add or remove blank line before 'for'.
+extern Option<iarf_e>
+nl_before_for;
+
+// Add or remove blank line after 'for' statement.
+extern Option<iarf_e>
+nl_after_for;
+
+// Add or remove blank line before 'while'.
+extern Option<iarf_e>
+nl_before_while;
+
+// Add or remove blank line after 'while' statement.
+extern Option<iarf_e>
+nl_after_while;
+
+// Add or remove blank line before 'switch'.
+extern Option<iarf_e>
+nl_before_switch;
+
+// Add or remove blank line after 'switch' statement.
+extern Option<iarf_e>
+nl_after_switch;
+
+// Add or remove blank line before 'synchronized'.
+extern Option<iarf_e>
+nl_before_synchronized;
+
+// Add or remove blank line after 'synchronized' statement.
+extern Option<iarf_e>
+nl_after_synchronized;
+
+// Add or remove blank line before 'do'.
+extern Option<iarf_e>
+nl_before_do;
+
+// Add or remove blank line after 'do/while' statement.
+extern Option<iarf_e>
+nl_after_do;
+
+// Ignore nl_before_{if,for,switch,do,synchronized} if the control
+// statement is immediately after a case statement.
+// if nl_before_{if,for,switch,do} is set to remove, this option
+// does nothing.
+extern Option<bool>
+nl_before_ignore_after_case;
+
+// Whether to put a blank line before 'return' statements, unless after an open
+// brace.
+extern Option<bool>
+nl_before_return;
+
+// Whether to put a blank line after 'return' statements, unless followed by a
+// close brace.
+extern Option<bool>
+nl_after_return;
+
+// Whether to put a blank line before a member '.' or '->' operators.
+extern Option<iarf_e>
+nl_before_member;
+
+// (Java) Whether to put a blank line after a member '.' or '->' operators.
+extern Option<iarf_e>
+nl_after_member;
+
+// Whether to double-space commented-entries in 'struct'/'union'/'enum'.
+extern Option<bool>
+nl_ds_struct_enum_cmt;
+
+// Whether to force a newline before '}' of a 'struct'/'union'/'enum'.
+// (Lower priority than eat_blanks_before_close_brace.)
+extern Option<bool>
+nl_ds_struct_enum_close_brace;
+
+// Add or remove newline before or after (depending on pos_class_colon) a class
+// colon, as in 'class Foo <here> : <or here> public Bar'.
+extern Option<iarf_e>
+nl_class_colon;
+
+// Add or remove newline around a class constructor colon. The exact position
+// depends on nl_constr_init_args, pos_constr_colon and pos_constr_comma.
+extern Option<iarf_e>
+nl_constr_colon;
+
+// Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }'
+// into a single line. If true, prevents other brace newline rules from turning
+// such code into four lines. If true, it also preserves one-liner namespaces.
+extern Option<bool>
+nl_namespace_two_to_one_liner;
+
+// Whether to remove a newline in simple unbraced if statements, turning them
+// into one-liners, as in 'if(b)\n i++;' => 'if(b) i++;'.
+extern Option<bool>
+nl_create_if_one_liner;
+
+// Whether to remove a newline in simple unbraced for statements, turning them
+// into one-liners, as in 'for (...)\n stmt;' => 'for (...) stmt;'.
+extern Option<bool>
+nl_create_for_one_liner;
+
+// Whether to remove a newline in simple unbraced while statements, turning
+// them into one-liners, as in 'while (expr)\n stmt;' => 'while (expr) stmt;'.
+extern Option<bool>
+nl_create_while_one_liner;
+
+// Whether to collapse a function definition whose body (not counting braces)
+// is only one line so that the entire definition (prototype, braces, body) is
+// a single line.
+extern Option<bool>
+nl_create_func_def_one_liner;
+
+// Whether to split one-line simple list definitions into three lines by
+// adding newlines, as in 'int a[12] = { <here> 0 <here> };'.
+extern Option<bool>
+nl_create_list_one_liner;
+
+// Whether to split one-line simple unbraced if statements into two lines by
+// adding a newline, as in 'if(b) <here> i++;'.
+extern Option<bool>
+nl_split_if_one_liner;
+
+// Whether to split one-line simple unbraced for statements into two lines by
+// adding a newline, as in 'for (...) <here> stmt;'.
+extern Option<bool>
+nl_split_for_one_liner;
+
+// Whether to split one-line simple unbraced while statements into two lines by
+// adding a newline, as in 'while (expr) <here> stmt;'.
+extern Option<bool>
+nl_split_while_one_liner;
+
+// Don't add a newline before a cpp-comment in a parameter list of a function
+// call.
+extern Option<bool>
+donot_add_nl_before_cpp_comment;
+
+//END
+
+///////////////////////////////////////////////////////////////////////////////
+//BEGIN Blank line options
+
+// The maximum number of consecutive newlines (3 = 2 blank lines).
+extern BoundedOption<unsigned, 0, 16>
+nl_max;
+
+// The maximum number of consecutive newlines in a function.
+extern BoundedOption<unsigned, 0, 16>
+nl_max_blank_in_func;
+
+// The number of newlines inside an empty function body.
+// This option overrides eat_blanks_after_open_brace and
+// eat_blanks_before_close_brace, but is ignored when
+// nl_collapse_empty_body_functions=true
+extern BoundedOption<unsigned, 0, 16>
+nl_inside_empty_func;
+
+// The number of newlines before a function prototype.
+extern BoundedOption<unsigned, 0, 16>
+nl_before_func_body_proto;
+
+// The number of newlines before a multi-line function definition. Where
+// applicable, this option is overridden with eat_blanks_after_open_brace=true
+extern BoundedOption<unsigned, 0, 16>
+nl_before_func_body_def;
+
+// The number of newlines before a class constructor/destructor prototype.
+extern BoundedOption<unsigned, 0, 16>
+nl_before_func_class_proto;
+
+// The number of newlines before a class constructor/destructor definition.
+extern BoundedOption<unsigned, 0, 16>
+nl_before_func_class_def;
+
+// The number of newlines after a function prototype.
+extern BoundedOption<unsigned, 0, 16>
+nl_after_func_proto;
+
+// The number of newlines after a function prototype, if not followed by
+// another function prototype.
+extern BoundedOption<unsigned, 0, 16>
+nl_after_func_proto_group;
+
+// The number of newlines after a class constructor/destructor prototype.
+extern BoundedOption<unsigned, 0, 16>
+nl_after_func_class_proto;
+
+// The number of newlines after a class constructor/destructor prototype,
+// if not followed by another constructor/destructor prototype.
+extern BoundedOption<unsigned, 0, 16>
+nl_after_func_class_proto_group;
+
+// Whether one-line method definitions inside a class body should be treated
+// as if they were prototypes for the purposes of adding newlines.
+//
+// Requires nl_class_leave_one_liners=true. Overrides nl_before_func_body_def
+// and nl_before_func_class_def for one-liners.
+extern Option<bool>
+nl_class_leave_one_liner_groups;
+
+// The number of newlines after '}' of a multi-line function body.
+//
+// Overrides nl_min_after_func_body and nl_max_after_func_body.
+extern BoundedOption<unsigned, 0, 16>
+nl_after_func_body;
+
+// The minimum number of newlines after '}' of a multi-line function body.
+//
+// Only works when nl_after_func_body is 0.
+extern BoundedOption<unsigned, 0, 16>
+nl_min_after_func_body;
+
+// The maximum number of newlines after '}' of a multi-line function body.
+//
+// Only works when nl_after_func_body is 0.
+// Takes precedence over nl_min_after_func_body.
+extern BoundedOption<unsigned, 0, 16>
+nl_max_after_func_body;
+
+// The number of newlines after '}' of a multi-line function body in a class
+// declaration. Also affects class constructors/destructors.
+//
+// Overrides nl_after_func_body.
+extern BoundedOption<unsigned, 0, 16>
+nl_after_func_body_class;
+
+// The number of newlines after '}' of a single line function body. Also
+// affects class constructors/destructors.
+//
+// Overrides nl_after_func_body and nl_after_func_body_class.
+extern BoundedOption<unsigned, 0, 16>
+nl_after_func_body_one_liner;
+
+// The number of newlines before a block of typedefs. If nl_after_access_spec
+// is non-zero, that option takes precedence.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_typedef_blk_start;
+
+// The number of newlines after a block of typedefs.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_typedef_blk_end;
+
+// The maximum number of consecutive newlines within a block of typedefs.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_typedef_blk_in;
+
+// The minimum number of blank lines after a block of variable definitions
+// at the top of a function body. If any preprocessor directives appear
+// between the opening brace of the function and the variable block, then
+// it is considered as not at the top of the function.Newlines are added
+// before trailing preprocessor directives, if any exist.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_var_def_blk_end_func_top;
+
+// The minimum number of empty newlines before a block of variable definitions
+// not at the top of a function body. If nl_after_access_spec is non-zero,
+// that option takes precedence. Newlines are not added at the top of the
+// file or just after an opening brace. Newlines are added above any
+// preprocessor directives before the block.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_var_def_blk_start;
+
+// The minimum number of empty newlines after a block of variable definitions
+// not at the top of a function body. Newlines are not added if the block
+// is at the bottom of the file or just before a preprocessor directive.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_var_def_blk_end;
+
+// The maximum number of consecutive newlines within a block of variable
+// definitions.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_var_def_blk_in;
+
+// The minimum number of newlines before a multi-line comment.
+// Doesn't apply if after a brace open or another multi-line comment.
+extern BoundedOption<unsigned, 0, 16>
+nl_before_block_comment;
+
+// 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.
+extern BoundedOption<unsigned, 0, 16>
+nl_before_c_comment;
+
+// The minimum number of newlines before a CPP comment.
+// Doesn't apply if after a brace open or other CPP comments.
+extern BoundedOption<unsigned, 0, 16>
+nl_before_cpp_comment;
+
+// Whether to force a newline after a multi-line comment.
+extern Option<bool>
+nl_after_multiline_comment;
+
+// Whether to force a newline after a label's colon.
+extern Option<bool>
+nl_after_label_colon;
+
+// The number of newlines before a struct definition.
+extern BoundedOption<unsigned, 0, 16>
+nl_before_struct;
+
+// The number of newlines after '}' or ';' of a struct/enum/union definition.
+extern BoundedOption<unsigned, 0, 16>
+nl_after_struct;
+
+// The number of newlines before a class definition.
+extern BoundedOption<unsigned, 0, 16>
+nl_before_class;
+
+// The number of newlines after '}' or ';' of a class definition.
+extern BoundedOption<unsigned, 0, 16>
+nl_after_class;
+
+// The number of newlines before a namespace.
+extern BoundedOption<unsigned, 0, 16>
+nl_before_namespace;
+
+// The number of newlines after '{' of a namespace. This also adds newlines
+// before the matching '}'.
+//
+// 0: Apply eat_blanks_after_open_brace or eat_blanks_before_close_brace if
+// applicable, otherwise no change.
+//
+// Overrides eat_blanks_after_open_brace and eat_blanks_before_close_brace.
+extern BoundedOption<unsigned, 0, 16>
+nl_inside_namespace;
+
+// The number of newlines after '}' of a namespace.
+extern BoundedOption<unsigned, 0, 16>
+nl_after_namespace;
+
+// The number of newlines before an access specifier label. This also includes
+// the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
+// if after a brace open.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_before_access_spec;
+
+// The number of newlines after an access specifier label. This also includes
+// the Qt-specific 'signals:' and 'slots:'. Will not change the newline count
+// if after a brace open.
+//
+// 0: No change (default).
+//
+// Overrides nl_typedef_blk_start and nl_var_def_blk_start.
+extern BoundedOption<unsigned, 0, 16>
+nl_after_access_spec;
+
+// The number of newlines between a function definition and the function
+// comment, as in '// comment\n <here> void foo() {...}'.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_comment_func_def;
+
+// The number of newlines after a try-catch-finally block that isn't followed
+// by a brace close.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_after_try_catch_finally;
+
+// (C#) The number of newlines before and after a property, indexer or event
+// declaration.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_around_cs_property;
+
+// (C#) The number of newlines between the get/set/add/remove handlers.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_between_get_set;
+
+// (C#) Add or remove newline between property and the '{'.
+extern Option<iarf_e>
+nl_property_brace;
+
+// Whether to remove blank lines after '{'.
+extern Option<bool>
+eat_blanks_after_open_brace;
+
+// Whether to remove blank lines before '}'.
+extern Option<bool>
+eat_blanks_before_close_brace;
+
+// How aggressively to remove extra newlines not in preprocessor.
+//
+// 0: No change (default)
+// 1: Remove most newlines not handled by other config
+// 2: Remove all newlines and reformat completely by config
+extern BoundedOption<unsigned, 0, 2>
+nl_remove_extra_newlines;
+
+// (Java) Add or remove newline after an annotation statement. Only affects
+// annotations that are after a newline.
+extern Option<iarf_e>
+nl_after_annotation;
+
+// (Java) Add or remove newline between two annotations.
+extern Option<iarf_e>
+nl_between_annotation;
+
+// The number of newlines before a whole-file #ifdef.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_before_whole_file_ifdef;
+
+// The number of newlines after a whole-file #ifdef.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_after_whole_file_ifdef;
+
+// The number of newlines before a whole-file #endif.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_before_whole_file_endif;
+
+// The number of newlines after a whole-file #endif.
+//
+// 0: No change (default).
+extern BoundedOption<unsigned, 0, 16>
+nl_after_whole_file_endif;
+
+//END
+
+///////////////////////////////////////////////////////////////////////////////
+//BEGIN Positioning options
+
+// The position of arithmetic operators in wrapped expressions.
+extern Option<token_pos_e>
+pos_arith;
+
+// The position of assignment in wrapped expressions. Do not affect '='
+// followed by '{'.
+extern Option<token_pos_e>
+pos_assign;
+
+// The position of Boolean operators in wrapped expressions.
+extern Option<token_pos_e>
+pos_bool;
+
+// The position of comparison operators in wrapped expressions.
+extern Option<token_pos_e>
+pos_compare;
+
+// The position of conditional operators, as in the '?' and ':' of
+// 'expr ? stmt : stmt', in wrapped expressions.
+extern Option<token_pos_e>
+pos_conditional;
+
+// The position of the comma in wrapped expressions.
+extern Option<token_pos_e>
+pos_comma;
+
+// The position of the comma in enum entries.
+extern Option<token_pos_e>
+pos_enum_comma;
+
+// The position of the comma in the base class list if there is more than one
+// line. Affects nl_class_init_args.
+extern Option<token_pos_e>
+pos_class_comma;
+
+// The position of the comma in the constructor initialization list.
+// Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon.
+extern Option<token_pos_e>
+pos_constr_comma;
+
+// The position of trailing/leading class colon, between class and base class
+// list. Affects nl_class_colon.
+extern Option<token_pos_e>
+pos_class_colon;
+
+// The position of colons between constructor and member initialization.
+// Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.
+extern Option<token_pos_e>
+pos_constr_colon;
+
+// The position of shift operators in wrapped expressions.
+extern Option<token_pos_e>
+pos_shift;
+
+//END
+
+///////////////////////////////////////////////////////////////////////////////
+//BEGIN Line splitting options
+
+// Try to limit code width to N columns.
+extern BoundedOption<unsigned, 0, 10000>
+code_width;
+
+// Whether to fully split long 'for' statements at semi-colons.
+extern Option<bool>
+ls_for_split_full;
+
+// Whether to fully split long function prototypes/calls at commas.
+// The option ls_code_width has priority over the option ls_func_split_full.
+extern Option<bool>
+ls_func_split_full;
+
+// Whether to split lines as close to code_width as possible and ignore some
+// groupings.
+// The option ls_code_width has priority over the option ls_func_split_full.
+extern Option<bool>
+ls_code_width;
+
+//END
+
+///////////////////////////////////////////////////////////////////////////////
+//BEGIN Code alignment options (not left column spaces/tabs)
+
+// Whether to keep non-indenting tabs.
+extern Option<bool>
+align_keep_tabs;
+
+// Whether to use tabs for aligning.
+extern Option<bool>
+align_with_tabs;
+
+// Whether to bump out to the next tab when aligning.
+extern Option<bool>
+align_on_tabstop;
+
+// Whether to right-align numbers.
+extern Option<bool>
+align_number_right;
+
+// Whether to keep whitespace not required for alignment.
+extern Option<bool>
+align_keep_extra_space;
+
+// Whether to align variable definitions in prototypes and functions.
+extern Option<bool>
+align_func_params;
+
+// The span for aligning parameter definitions in function on parameter name.
+//
+// 0: Don't align (default).
+extern BoundedOption<unsigned, 0, 16>
+align_func_params_span;
+
+// The threshold for aligning function parameter definitions.
+// Use a negative number for absolute thresholds.
+//
+// 0: No limit (default).
+extern BoundedOption<signed, -1000, 5000>
+align_func_params_thresh;
+
+// The gap for aligning function parameter definitions.
+extern BoundedOption<unsigned, 0, 16>
+align_func_params_gap;
+
+// The span for aligning constructor value.
+//
+// 0: Don't align (default).
+extern BoundedOption<unsigned, 0, 16>
+align_constr_value_span;
+
+// The threshold for aligning constructor value.
+// Use a negative number for absolute thresholds.
+//
+// 0: No limit (default).
+extern BoundedOption<signed, -1000, 5000>
+align_constr_value_thresh;
+
+// The gap for aligning constructor value.
+extern BoundedOption<unsigned, 0, 16>
+align_constr_value_gap;
+
+// Whether to align parameters in single-line functions that have the same
+// name. The function names must already be aligned with each other.
+extern Option<bool>
+align_same_func_call_params;
+
+// The span for aligning function-call parameters for single line functions.
+//
+// 0: Don't align (default).
+extern BoundedOption<unsigned, 0, 5000>
+align_same_func_call_params_span;
+
+// The threshold for aligning function-call parameters for single line
+// functions.
+// Use a negative number for absolute thresholds.
+//
+// 0: No limit (default).
+extern BoundedOption<signed, -1000, 5000>
+align_same_func_call_params_thresh;
+
+// The span for aligning variable definitions.
+//
+// 0: Don't align (default).
+extern BoundedOption<unsigned, 0, 5000>
+align_var_def_span;
+
+// How to consider (or treat) the '*' in the alignment of variable definitions.
+//
+// 0: Part of the type 'void * foo;' (default)
+// 1: Part of the variable 'void *foo;'
+// 2: Dangling 'void *foo;'
+// Dangling: the '*' will not be taken into account when aligning.
+extern BoundedOption<unsigned, 0, 2>
+align_var_def_star_style;
+
+// How to consider (or treat) the '&' in the alignment of variable definitions.
+//
+// 0: Part of the type 'long & foo;' (default)
+// 1: Part of the variable 'long &foo;'
+// 2: Dangling 'long &foo;'
+// Dangling: the '&' will not be taken into account when aligning.
+extern BoundedOption<unsigned, 0, 2>
+align_var_def_amp_style;
+
+// The threshold for aligning variable definitions.
+// Use a negative number for absolute thresholds.
+//
+// 0: No limit (default).
+extern BoundedOption<signed, -1000, 5000>
+align_var_def_thresh;
+
+// The gap for aligning variable definitions.
+extern BoundedOption<unsigned, 0, 16>
+align_var_def_gap;
+
+// Whether to align the colon in struct bit fields.
+extern Option<bool>
+align_var_def_colon;
+
+// The gap for aligning the colon in struct bit fields.
+extern BoundedOption<unsigned, 0, 16>
+align_var_def_colon_gap;
+
+// Whether to align any attribute after the variable name.
+extern Option<bool>
+align_var_def_attribute;
+
+// Whether to align inline struct/enum/union variable definitions.
+extern Option<bool>
+align_var_def_inline;
+
+// The span for aligning on '=' in assignments.
+//
+// 0: Don't align (default).
+extern BoundedOption<unsigned, 0, 5000>
+align_assign_span;
+
+// The span for aligning on '=' in function prototype modifier.
+//
+// 0: Don't align (default).
+extern BoundedOption<unsigned, 0, 5000>
+align_assign_func_proto_span;
+
+// The threshold for aligning on '=' in assignments.
+// Use a negative number for absolute thresholds.
+//
+// 0: No limit (default).
+extern BoundedOption<signed, -1000, 5000>
+align_assign_thresh;
+
+// Whether to align on the left most assignment when multiple
+// definitions are found on the same line.
+// Depends on 'align_assign_span' and 'align_assign_thresh' settings.
+extern Option<bool>
+align_assign_on_multi_var_defs;
+
+// The span for aligning on '{' in braced init list.
+//
+// 0: Don't align (default).
+extern BoundedOption<unsigned, 0, 5000>
+align_braced_init_list_span;
+
+// The threshold for aligning on '{' in braced init list.
+// Use a negative number for absolute thresholds.
+//
+// 0: No limit (default).
+extern BoundedOption<signed, -1000, 5000>
+align_braced_init_list_thresh;
+
+// How to apply align_assign_span to function declaration "assignments", i.e.
+// 'virtual void foo() = 0' or '~foo() = {default|delete}'.
+//
+// 0: Align with other assignments (default)
+// 1: Align with each other, ignoring regular assignments
+// 2: Don't align
+extern BoundedOption<unsigned, 0, 2>
+align_assign_decl_func;
+
+// The span for aligning on '=' in enums.
+//
+// 0: Don't align (default).
+extern BoundedOption<unsigned, 0, 5000>
+align_enum_equ_span;
+
+// The threshold for aligning on '=' in enums.
+// Use a negative number for absolute thresholds.
+//
+// 0: no limit (default).
+extern BoundedOption<signed, -1000, 5000>
+align_enum_equ_thresh;
+
+// The span for aligning class member definitions.
+//
+// 0: Don't align (default).
+extern BoundedOption<unsigned, 0, 5000>
+align_var_class_span;
+
+// The threshold for aligning class member definitions.
+// Use a negative number for absolute thresholds.
+//
+// 0: No limit (default).
+extern BoundedOption<signed, -1000, 5000>
+align_var_class_thresh;
+
+// The gap for aligning class member definitions.
+extern BoundedOption<unsigned, 0, 16>
+align_var_class_gap;
+
+// The span for aligning struct/union member definitions.
+//
+// 0: Don't align (default).
+extern BoundedOption<unsigned, 0, 5000>
+align_var_struct_span;
+
+// The threshold for aligning struct/union member definitions.
+// Use a negative number for absolute thresholds.
+//
+// 0: No limit (default).
+extern BoundedOption<signed, -1000, 5000>
+align_var_struct_thresh;
+
+// The gap for aligning struct/union member definitions.
+extern BoundedOption<unsigned, 0, 16>
+align_var_struct_gap;
+
+// The span for aligning struct initializer values.
+//
+// 0: Don't align (default).
+extern BoundedOption<unsigned, 0, 5000>
+align_struct_init_span;
+
+// The span for aligning single-line typedefs.
+//
+// 0: Don't align (default).
+extern BoundedOption<unsigned, 0, 16>
+align_typedef_span;
+
+// The minimum space between the type and the synonym of a typedef.
+extern BoundedOption<unsigned, 0, 16>
+align_typedef_gap;
+
+// How to align typedef'd functions with other typedefs.
+//
+// 0: Don't mix them at all (default)
+// 1: Align the open parenthesis with the types
+// 2: Align the function type name with the other type names
+extern BoundedOption<unsigned, 0, 2>
+align_typedef_func;
+
+// How to consider (or treat) the '*' in the alignment of typedefs.
+//
+// 0: Part of the typedef type, 'typedef int * pint;' (default)
+// 1: Part of type name: 'typedef int *pint;'
+// 2: Dangling: 'typedef int *pint;'
+// Dangling: the '*' will not be taken into account when aligning.
+extern BoundedOption<unsigned, 0, 2>
+align_typedef_star_style;
+
+// How to consider (or treat) the '&' in the alignment of typedefs.
+//
+// 0: Part of the typedef type, 'typedef int & intref;' (default)
+// 1: Part of type name: 'typedef int &intref;'
+// 2: Dangling: 'typedef int &intref;'
+// Dangling: the '&' will not be taken into account when aligning.
+extern BoundedOption<unsigned, 0, 2>
+align_typedef_amp_style;
+
+// The span for aligning comments that end lines.
+//
+// 0: Don't align (default).
+extern BoundedOption<unsigned, 0, 5000>
+align_right_cmt_span;
+
+// Minimum number of columns between preceding text and a trailing comment in
+// order for the comment to qualify for being aligned. Must be non-zero to have
+// an effect.
+extern BoundedOption<unsigned, 0, 16>
+align_right_cmt_gap;
+
+// If aligning comments, whether to mix with comments after '}' and #endif with
+// less than three spaces before the comment.
+extern Option<bool>
+align_right_cmt_mix;
+
+// Whether to only align trailing comments that are at the same brace level.
+extern Option<bool>
+align_right_cmt_same_level;
+
+// Minimum column at which to align trailing comments. Comments which are
+// aligned beyond this column, but which can be aligned in a lesser column,
+// may be "pulled in".
+//
+// 0: Ignore (default).
+extern BoundedOption<unsigned, 0, 200>
+align_right_cmt_at_col;
+
+// The span for aligning function prototypes.
+//
+// 0: Don't align (default).
+extern BoundedOption<unsigned, 0, 5000>
+align_func_proto_span;
+
+// Whether to ignore continuation lines when evaluating the number of
+// new lines for the function prototype alignment's span.
+//
+// false: continuation lines are part of the newlines count
+// true: continuation lines are not counted
+extern Option<bool>
+align_func_proto_span_ignore_cont_lines; // = false
+
+// How to consider (or treat) the '*' in the alignment of function prototypes.
+//
+// 0: Part of the type 'void * foo();' (default)
+// 1: Part of the function 'void *foo();'
+// 2: Dangling 'void *foo();'
+// Dangling: the '*' will not be taken into account when aligning.
+extern BoundedOption<unsigned, 0, 2>
+align_func_proto_star_style;
+
+// How to consider (or treat) the '&' in the alignment of function prototypes.
+//
+// 0: Part of the type 'long & foo();' (default)
+// 1: Part of the function 'long &foo();'
+// 2: Dangling 'long &foo();'
+// Dangling: the '&' will not be taken into account when aligning.
+extern BoundedOption<unsigned, 0, 2>
+align_func_proto_amp_style;
+
+// The threshold for aligning function prototypes.
+// Use a negative number for absolute thresholds.
+//
+// 0: No limit (default).
+extern BoundedOption<signed, -1000, 5000>
+align_func_proto_thresh;
+
+// Minimum gap between the return type and the function name.
+extern BoundedOption<unsigned, 0, 16>
+align_func_proto_gap;
+
+// Whether to align function prototypes on the 'operator' keyword instead of
+// what follows.
+extern Option<bool>
+align_on_operator;
+
+// Whether to mix aligning prototype and variable declarations. If true,
+// align_var_def_XXX options are used instead of align_func_proto_XXX options.
+extern Option<bool>
+align_mix_var_proto;
+
+// Whether to align single-line functions with function prototypes.
+// Uses align_func_proto_span.
+extern Option<bool>
+align_single_line_func;
+
+// Whether to align the open brace of single-line functions.
+// Requires align_single_line_func=true. Uses align_func_proto_span.
+extern Option<bool>
+align_single_line_brace;
+
+// Gap for align_single_line_brace.
+extern BoundedOption<unsigned, 0, 16>
+align_single_line_brace_gap;
+
+// (OC) The span for aligning Objective-C message specifications.
+//
+// 0: Don't align (default).
+extern BoundedOption<unsigned, 0, 5000>
+align_oc_msg_spec_span;
+
+// Whether and how to align backslashes that split a macro onto multiple lines.
+// This will not work right if the macro contains a multi-line comment.
+//
+// 0: Do nothing (default)
+// 1: Align the backslashes in the column at the end of the longest line
+// 2: Align with the backslash that is farthest to the left, or, if that
+// backslash is farther left than the end of the longest line, at the end of
+// the longest line
+// 3: Align with the backslash that is farthest to the right
+extern BoundedOption<unsigned, 0, 3>
+align_nl_cont;
+
+// The minimum number of spaces between the end of a line and its continuation
+// backslash. Requires align_nl_cont.
+extern BoundedOption<unsigned, 0, 16>
+align_nl_cont_spaces; // = 1
+
+// Whether to align macro functions and variables together.
+extern Option<bool>
+align_pp_define_together;
+
+// The span for aligning on '#define' bodies.
+//
+// =0: Don't align (default)
+// >0: Number of lines (including comments) between blocks
+extern BoundedOption<unsigned, 0, 5000>
+align_pp_define_span;
+
+// The minimum space between label and value of a preprocessor define.
+extern BoundedOption<unsigned, 0, 16>
+align_pp_define_gap;
+
+// Whether to align lines that start with '<<' with previous '<<'.
+extern Option<bool>
+align_left_shift; // = true
+
+// Whether to align comma-separated statements following '<<' (as used to
+// initialize Eigen matrices).
+extern Option<bool>
+align_eigen_comma_init;
+
+// Whether to align text after 'asm volatile ()' colons.
+extern Option<bool>
+align_asm_colon;
+
+// (OC) Span for aligning parameters in an Objective-C message call
+// on the ':'.
+//
+// 0: Don't align.
+extern BoundedOption<unsigned, 0, 5000>
+align_oc_msg_colon_span;
+
+// (OC) Whether to always align with the first parameter, even if it is too
+// short.
+extern Option<bool>
+align_oc_msg_colon_first;
+
+// (OC) Whether to align parameters in an Objective-C '+' or '-' declaration
+// on the ':'.
+extern Option<bool>
+align_oc_decl_colon;
+
+// (OC) Whether to not align parameters in an Objectve-C message call if first
+// colon is not on next line of the message call (the same way Xcode does
+// alignment)
+extern Option<bool>
+align_oc_msg_colon_xcode_like;
+
+//END
+
+///////////////////////////////////////////////////////////////////////////////
+//BEGIN Comment modification options
+
+// Try to wrap comments at N columns.
+extern BoundedOption<unsigned, 0, 256>
+cmt_width;
+
+// How to reflow comments.
+//
+// 0: No reflowing (apart from the line wrapping due to cmt_width) (default)
+// 1: No touching at all
+// 2: Full reflow (enable cmt_indent_multi for indent with line wrapping due to cmt_width)
+extern BoundedOption<unsigned, 0, 2>
+cmt_reflow_mode;
+
+// Path to a file that contains regular expressions describing patterns for
+// which the end of one line and the beginning of the next will be folded into
+// the same sentence or paragraph during full comment reflow. The regular
+// expressions are described using ECMAScript syntax. The syntax for this
+// specification is as follows, where "..." indicates the custom regular
+// expression and "n" indicates the nth end_of_prev_line_regex and
+// beg_of_next_line_regex regular expression pair:
+//
+// end_of_prev_line_regex[1] = "...$"
+// beg_of_next_line_regex[1] = "^..."
+// end_of_prev_line_regex[2] = "...$"
+// beg_of_next_line_regex[2] = "^..."
+// .
+// .
+// .
+// end_of_prev_line_regex[n] = "...$"
+// beg_of_next_line_regex[n] = "^..."
+//
+// Note that use of this option overrides the default reflow fold regular
+// expressions, which are internally defined as follows:
+//
+// end_of_prev_line_regex[1] = "[\w,\]\)]$"
+// beg_of_next_line_regex[1] = "^[\w,\[\(]"
+// end_of_prev_line_regex[2] = "\.$"
+// beg_of_next_line_regex[2] = "^[A-Z]"
+extern Option<string>
+cmt_reflow_fold_regex_file;
+
+// Whether to indent wrapped lines to the start of the encompassing paragraph
+// during full comment reflow (cmt_reflow_mode = 2). Overrides the value
+// specified by cmt_sp_after_star_cont.
+//
+// Note that cmt_align_doxygen_javadoc_tags overrides this option for
+// paragraphs associated with javadoc tags
+extern Option<bool>
+cmt_reflow_indent_to_paragraph_start;
+
+// Whether to convert all tabs to spaces in comments. If false, tabs in
+// comments are left alone, unless used for indenting.
+extern Option<bool>
+cmt_convert_tab_to_spaces;
+
+// TODO This description is confusing and should be revised.
+
+// Whether to apply changes to multi-line comments, including cmt_width,
+// keyword substitution and leading chars.
+extern Option<bool>
+cmt_indent_multi; // = true
+
+// Whether to align doxygen javadoc-style tags ('@param', '@return', etc.)
+// and corresponding fields such that groups of consecutive block tags,
+// parameter names, and descriptions align with one another. Overrides that
+// which is specified by the cmt_sp_after_star_cont. If cmt_width > 0, it may
+// be necessary to enable cmt_indent_multi and set cmt_reflow_mode = 2
+// in order to achieve the desired alignment for line-wrapping.
+extern Option<bool>
+cmt_align_doxygen_javadoc_tags;
+
+// The number of spaces to insert after the star and before doxygen
+// javadoc-style tags (@param, @return, etc). Requires enabling
+// cmt_align_doxygen_javadoc_tags. Overrides that which is specified by the
+// cmt_sp_after_star_cont.
+extern BoundedOption<unsigned, 0, 16>
+cmt_sp_before_doxygen_javadoc_tags; // = 1
+
+// Whether to change trailing, single-line c-comments into cpp-comments.
+extern Option<bool>
+cmt_trailing_single_line_c_to_cpp;
+
+// Whether to group c-comments that look like they are in a block.
+extern Option<bool>
+cmt_c_group;
+
+// Whether to put an empty '/*' on the first line of the combined c-comment.
+extern Option<bool>
+cmt_c_nl_start;
+
+// Whether to add a newline before the closing '*/' of the combined c-comment.
+extern Option<bool>
+cmt_c_nl_end;
+
+// Whether to change cpp-comments into c-comments.
+extern Option<bool>
+cmt_cpp_to_c;
+
+// Whether to group cpp-comments that look like they are in a block. Only
+// meaningful if cmt_cpp_to_c=true.
+extern Option<bool>
+cmt_cpp_group;
+
+// Whether to put an empty '/*' on the first line of the combined cpp-comment
+// when converting to a c-comment.
+//
+// Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
+extern Option<bool>
+cmt_cpp_nl_start;
+
+// Whether to add a newline before the closing '*/' of the combined cpp-comment
+// when converting to a c-comment.
+//
+// Requires cmt_cpp_to_c=true and cmt_cpp_group=true.
+extern Option<bool>
+cmt_cpp_nl_end;
+
+// Whether to put a star on subsequent comment lines.
+extern Option<bool>
+cmt_star_cont;
+
+// The number of spaces to insert at the start of subsequent comment lines.
+extern BoundedOption<unsigned, 0, 16>
+cmt_sp_before_star_cont;
+
+// The number of spaces to insert after the star on subsequent comment lines.
+extern BoundedOption<unsigned, 0, 16>
+cmt_sp_after_star_cont;
+
+// TODO This description is confusing and should be revised.
+
+// For multi-line comments with a '*' lead, remove leading spaces if the first
+// and last lines of the comment are the same length.
+extern Option<bool>
+cmt_multi_check_last; // = true
+
+// TODO This description is confusing and should be revised.
+
+// For multi-line comments with a '*' lead, remove leading spaces if the first
+// and last lines of the comment are the same length AND if the length is
+// bigger as the first_len minimum.
+extern BoundedOption<unsigned, 1, 20>
+cmt_multi_first_len_minimum; // = 4
+
+// Path to a file that contains text to insert at the beginning of a file if
+// the file doesn't start with a C/C++ comment. If the inserted text contains
+// '$(filename)', that will be replaced with the current file's name.
+extern Option<string>
+cmt_insert_file_header;
+
+// Path to a file that contains text to insert at the end of a file if the
+// file doesn't end with a C/C++ comment. If the inserted text contains
+// '$(filename)', that will be replaced with the current file's name.
+extern Option<string>
+cmt_insert_file_footer;
+
+// Path to a file that contains text to insert before a function definition if
+// the function isn't preceded by a C/C++ comment. If the inserted text
+// contains '$(function)', '$(javaparam)' or '$(fclass)', these will be
+// replaced with, respectively, the name of the function, the javadoc '@param'
+// and '@return' stuff, or the name of the class to which the member function
+// belongs.
+extern Option<string>
+cmt_insert_func_header;
+
+// Path to a file that contains text to insert before a class if the class
+// isn't preceded by a C/C++ comment. If the inserted text contains '$(class)',
+// that will be replaced with the class name.
+extern Option<string>
+cmt_insert_class_header;
+
+// Path to a file that contains text to insert before an Objective-C message
+// specification, if the method isn't preceded by a C/C++ comment. If the
+// inserted text contains '$(message)' or '$(javaparam)', these will be
+// replaced with, respectively, the name of the function, or the javadoc
+// '@param' and '@return' stuff.
+extern Option<string>
+cmt_insert_oc_msg_header;
+
+// TODO This description may be confusing; consider revising.
+
+// Whether a comment should be inserted if a preprocessor is encountered when
+// stepping backwards from a function name.
+//
+// Applies to cmt_insert_oc_msg_header, cmt_insert_func_header and
+// cmt_insert_class_header.
+extern Option<bool>
+cmt_insert_before_preproc;
+
+// Whether a comment should be inserted if a function is declared inline to a
+// class definition.
+//
+// Applies to cmt_insert_func_header.
+extern Option<bool>
+cmt_insert_before_inlines; // = true
+
+// Whether a comment should be inserted if the function is a class constructor
+// or destructor.
+//
+// Applies to cmt_insert_func_header.
+extern Option<bool>
+cmt_insert_before_ctor_dtor;
+
+//END
+
+///////////////////////////////////////////////////////////////////////////////
+//BEGIN Code modifying options (non-whitespace)
+
+// Add or remove braces on a single-line 'do' statement.
+extern Option<iarf_e>
+mod_full_brace_do;
+
+// Add or remove braces on a single-line 'for' statement.
+extern Option<iarf_e>
+mod_full_brace_for;
+
+// (Pawn) Add or remove braces on a single-line function definition.
+extern Option<iarf_e>
+mod_full_brace_function;
+
+// Add or remove braces on a single-line 'if' statement. Braces will not be
+// removed if the braced statement contains an 'else'.
+extern Option<iarf_e>
+mod_full_brace_if;
+
+// Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either
+// have, or do not have, braces. Overrides mod_full_brace_if.
+//
+// 0: Don't override mod_full_brace_if
+// 1: Add braces to all blocks if any block needs braces and remove braces if
+// they can be removed from all blocks
+// 2: Add braces to all blocks if any block already has braces, regardless of
+// whether it needs them
+// 3: Add braces to all blocks if any block needs braces and remove braces if
+// they can be removed from all blocks, except if all blocks have braces
+// despite none needing them
+extern BoundedOption<unsigned, 0, 3>
+mod_full_brace_if_chain;
+
+// Whether to add braces to all blocks of an 'if'/'else if'/'else' chain.
+// If true, mod_full_brace_if_chain will only remove braces from an 'if' that
+// does not have an 'else if' or 'else'.
+extern Option<bool>
+mod_full_brace_if_chain_only;
+
+// Add or remove braces on single-line 'while' statement.
+extern Option<iarf_e>
+mod_full_brace_while;
+
+// Add or remove braces on single-line 'using ()' statement.
+extern Option<iarf_e>
+mod_full_brace_using;
+
+// Don't remove braces around statements that span N newlines
+extern BoundedOption<unsigned, 0, 5000>
+mod_full_brace_nl;
+
+// Whether to prevent removal of braces from 'if'/'for'/'while'/etc. blocks
+// which span multiple lines.
+//
+// Affects:
+// mod_full_brace_for
+// mod_full_brace_if
+// mod_full_brace_if_chain
+// mod_full_brace_if_chain_only
+// mod_full_brace_while
+// mod_full_brace_using
+//
+// Does not affect:
+// mod_full_brace_do
+// mod_full_brace_function
+extern Option<bool>
+mod_full_brace_nl_block_rem_mlcond;
+
+// Add or remove unnecessary parentheses on 'return' statement.
+extern Option<iarf_e>
+mod_paren_on_return;
+
+// Add or remove unnecessary parentheses on 'throw' statement.
+extern Option<iarf_e>
+mod_paren_on_throw;
+
+// (Pawn) Whether to change optional semicolons to real semicolons.
+extern Option<bool>
+mod_pawn_semicolon;
+
+// Whether to fully parenthesize Boolean expressions in 'while' and 'if'
+// statement, as in 'if (a && b > c)' => 'if (a && (b > c))'.
+extern Option<bool>
+mod_full_paren_if_bool;
+
+// Whether to fully parenthesize Boolean expressions after '='
+// statement, as in 'x = a && b > c;' => 'x = (a && (b > c));'.
+extern Option<bool>
+mod_full_paren_assign_bool;
+
+// Whether to fully parenthesize Boolean expressions after '='
+// statement, as in 'return a && b > c;' => 'return (a && (b > c));'.
+extern Option<bool>
+mod_full_paren_return_bool;
+
+// Whether to remove superfluous semicolons.
+extern Option<bool>
+mod_remove_extra_semicolon;
+
+// Whether to remove duplicate include.
+extern Option<bool>
+mod_remove_duplicate_include;
+
+// the following options (mod_XX_closebrace_comment) use different comment,
+// depending of the setting of the next option.
+// false: Use the c comment (default)
+// true : Use the cpp comment
+extern Option<bool>
+mod_add_force_c_closebrace_comment;
+
+// 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.
+extern BoundedOption<unsigned, 0, 255>
+mod_add_long_function_closebrace_comment;
+
+// If a namespace body exceeds the specified number of newlines and doesn't
+// have a comment after the close brace, a comment will be added.
+extern BoundedOption<unsigned, 0, 255>
+mod_add_long_namespace_closebrace_comment;
+
+// If a class body exceeds the specified number of newlines and doesn't have a
+// comment after the close brace, a comment will be added.
+extern BoundedOption<unsigned, 0, 255>
+mod_add_long_class_closebrace_comment;
+
+// 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.
+extern BoundedOption<unsigned, 0, 255>
+mod_add_long_switch_closebrace_comment;
+
+// If an #ifdef body exceeds the specified number of newlines and doesn't have
+// a comment after the #endif, a comment will be added.
+extern BoundedOption<unsigned, 0, 255>
+mod_add_long_ifdef_endif_comment;
+
+// If an #ifdef or #else body exceeds the specified number of newlines and
+// doesn't have a comment after the #else, a comment will be added.
+extern BoundedOption<unsigned, 0, 255>
+mod_add_long_ifdef_else_comment;
+
+// Whether to take care of the case by the mod_sort_xx options.
+extern Option<bool>
+mod_sort_case_sensitive;
+
+// Whether to sort consecutive single-line 'import' statements.
+extern Option<bool>
+mod_sort_import;
+
+// (C#) Whether to sort consecutive single-line 'using' statements.
+extern Option<bool>
+mod_sort_using;
+
+// Whether to sort consecutive single-line '#include' statements (C/C++) and
+// '#import' statements (Objective-C). Be aware that this has the potential to
+// break your code if your includes/imports have ordering dependencies.
+extern Option<bool>
+mod_sort_include;
+
+// Whether to prioritize '#include' and '#import' statements that contain
+// filename without extension when sorting is enabled.
+extern Option<bool>
+mod_sort_incl_import_prioritize_filename;
+
+// Whether to prioritize '#include' and '#import' statements that does not
+// contain extensions when sorting is enabled.
+extern Option<bool>
+mod_sort_incl_import_prioritize_extensionless;
+
+// Whether to prioritize '#include' and '#import' statements that contain
+// angle over quotes when sorting is enabled.
+extern Option<bool>
+mod_sort_incl_import_prioritize_angle_over_quotes;
+
+// Whether to ignore file extension in '#include' and '#import' statements
+// for sorting comparison.
+extern Option<bool>
+mod_sort_incl_import_ignore_extension;
+
+// Whether to group '#include' and '#import' statements when sorting is enabled.
+extern Option<bool>
+mod_sort_incl_import_grouping_enabled;
+
+// Whether to move a 'break' that appears after a fully braced 'case' before
+// the close brace, as in 'case X: { ... } break;' => 'case X: { ... break; }'.
+extern Option<bool>
+mod_move_case_break;
+
+// Whether to move a 'return' that appears after a fully braced 'case' before
+// the close brace, as in 'case X: { ... } return;' => 'case X: { ... return; }'.
+extern Option<bool>
+mod_move_case_return;
+
+// Add or remove braces around a fully braced case statement. Will only remove
+// braces if there are no variable declarations in the block.
+extern Option<iarf_e>
+mod_case_brace;
+
+// Whether to remove a void 'return;' that appears as the last statement in a
+// function.
+extern Option<bool>
+mod_remove_empty_return;
+
+// Add or remove the comma after the last value of an enumeration.
+extern Option<iarf_e>
+mod_enum_last_comma;
+
+// Syntax to use for infinite loops.
+//
+// 0: Leave syntax alone (default)
+// 1: Rewrite as `for(;;)`
+// 2: Rewrite as `while(true)`
+// 3: Rewrite as `do`...`while(true);`
+// 4: Rewrite as `while(1)`
+// 5: Rewrite as `do`...`while(1);`
+//
+// Infinite loops that do not already match one of these syntaxes are ignored.
+// Other options that affect loop formatting will be applied after transforming
+// the syntax.
+extern BoundedOption<unsigned, 0, 5>
+mod_infinite_loop;
+
+// Add or remove the 'int' keyword in 'int short'.
+extern Option<iarf_e>
+mod_int_short;
+
+// Add or remove the 'int' keyword in 'short int'.
+extern Option<iarf_e>
+mod_short_int;
+
+// Add or remove the 'int' keyword in 'int long'.
+extern Option<iarf_e>
+mod_int_long;
+
+// Add or remove the 'int' keyword in 'long int'.
+extern Option<iarf_e>
+mod_long_int;
+
+// Add or remove the 'int' keyword in 'int signed'.
+extern Option<iarf_e>
+mod_int_signed;
+
+// Add or remove the 'int' keyword in 'signed int'.
+extern Option<iarf_e>
+mod_signed_int;
+
+// Add or remove the 'int' keyword in 'int unsigned'.
+extern Option<iarf_e>
+mod_int_unsigned;
+
+// Add or remove the 'int' keyword in 'unsigned int'.
+extern Option<iarf_e>
+mod_unsigned_int;
+
+// If there is a situation where mod_int_* and mod_*_int would result in
+// multiple int keywords, whether to keep the rightmost int (the default) or the
+// leftmost int.
+extern Option<bool>
+mod_int_prefer_int_on_left;
+
+// (OC) Whether to organize the properties. If true, properties will be
+// rearranged according to the mod_sort_oc_property_*_weight factors.
+extern Option<bool>
+mod_sort_oc_properties;
+
+// (OC) Weight of a class property modifier.
+extern Option<signed>
+mod_sort_oc_property_class_weight;
+
+// (OC) Weight of 'atomic' and 'nonatomic'.
+extern Option<signed>
+mod_sort_oc_property_thread_safe_weight;
+
+// (OC) Weight of 'readwrite' when organizing properties.
+extern Option<signed>
+mod_sort_oc_property_readwrite_weight;
+
+// (OC) Weight of a reference type specifier ('retain', 'copy', 'assign',
+// 'weak', 'strong') when organizing properties.
+extern Option<signed>
+mod_sort_oc_property_reference_weight;
+
+// (OC) Weight of getter type ('getter=') when organizing properties.
+extern Option<signed>
+mod_sort_oc_property_getter_weight;
+
+// (OC) Weight of setter type ('setter=') when organizing properties.
+extern Option<signed>
+mod_sort_oc_property_setter_weight;
+
+// (OC) Weight of nullability type ('nullable', 'nonnull', 'null_unspecified',
+// 'null_resettable') when organizing properties.
+extern Option<signed>
+mod_sort_oc_property_nullability_weight;
+
+//END
+
+///////////////////////////////////////////////////////////////////////////////
+//BEGIN Preprocessor options
+
+// How to use tabs when indenting preprocessor code.
+//
+// -1: Use 'indent_with_tabs' setting (default)
+// 0: Spaces only
+// 1: Indent with tabs to brace level, align with spaces
+// 2: Indent and align with tabs, using spaces when not on a tabstop
+extern BoundedOption<signed, -1, 2>
+pp_indent_with_tabs; // = -1
+
+// Add or remove indentation of preprocessor directives inside #if blocks
+// at brace level 0 (file-level).
+extern Option<iarf_e>
+pp_indent;
+
+// Whether to indent #if/#else/#endif at the brace level. If false, these are
+// indented from column 1.
+extern Option<bool>
+pp_indent_at_level;
+
+// Whether to indent #if/#else/#endif at the parenthesis level if the brace
+// level is 0. If false, these are indented from column 1.
+extern Option<bool>
+pp_indent_at_level0;
+
+// Specifies the number of columns to indent preprocessors per level
+// at brace level 0 (file-level). If pp_indent_at_level=false, also specifies
+// the number of columns to indent preprocessors per level
+// at brace level > 0 (function-level).
+extern BoundedOption<unsigned, 0, 16>
+pp_indent_count; // = 1
+
+// Add or remove space after # based on pp level of #if blocks.
+extern Option<iarf_e>
+pp_space_after;
+
+// Sets the number of spaces per level added with pp_space_after.
+extern BoundedOption<unsigned, 0, 16>
+pp_space_count;
+
+// The indent for '#region' and '#endregion' in C# and '#pragma region' in
+// C/C++. Negative values decrease indent down to the first column.
+extern BoundedOption<signed, -16, 16>
+pp_indent_region;
+
+// Whether to indent the code between #region and #endregion.
+extern Option<bool>
+pp_region_indent_code;
+
+// If pp_indent_at_level=true, sets the indent for #if, #else and #endif when
+// not at file-level. Negative values decrease indent down to the first column.
+//
+// =0: Indent preprocessors using output_tab_size
+// >0: Column at which all preprocessors will be indented
+extern BoundedOption<signed, -16, 16>
+pp_indent_if;
+
+// Whether to indent the code between #if, #else and #endif.
+extern Option<bool>
+pp_if_indent_code;
+
+// Whether to indent the body of an #if that encompasses all the code in the file.
+extern Option<bool>
+pp_indent_in_guard;
+
+// Whether to indent '#define' at the brace level. If false, these are
+// indented from column 1.
+extern Option<bool>
+pp_define_at_level;
+
+// Whether to indent '#include' at the brace level.
+extern Option<bool>
+pp_include_at_level;
+
+// Whether to ignore the '#define' body while formatting.
+extern Option<bool>
+pp_ignore_define_body;
+
+// An offset value that controls the indentation of the body of a multiline #define.
+// 'body' refers to all the lines of a multiline #define except the first line.
+// Requires 'pp_ignore_define_body = false'.
+//
+// <0: Absolute column: the body indentation starts off at the specified column
+// (ex. -3 ==> the body is indented starting from column 3)
+// >=0: Relative to the column of the '#' of '#define'
+// (ex. 3 ==> the body is indented starting 3 columns at the right of '#')
+extern BoundedOption<signed, -32, 32>
+pp_multiline_define_body_indent; // = 8
+
+// TODO The following descriptions are confusing and suffer from sub-optimal
+// grammar, and should be revised; from here...
+
+// Whether to indent case statements between #if, #else, and #endif.
+// Only applies to the indent of the preprocessor that the case statements
+// directly inside of.
+extern Option<bool>
+pp_indent_case; // = true
+
+// Whether to indent whole function definitions between #if, #else, and #endif.
+// Only applies to the indent of the preprocessor that the function definition
+// is directly inside of.
+extern Option<bool>
+pp_indent_func_def; // = true
+
+// Whether to indent extern C blocks between #if, #else, and #endif.
+// Only applies to the indent of the preprocessor that the extern block is
+// directly inside of.
+extern Option<bool>
+pp_indent_extern; // = true
+
+// How to indent braces directly inside #if, #else, and #endif.
+// Requires pp_if_indent_code=true and only applies to the indent of the
+// preprocessor that the braces are directly inside of.
+// 0: No extra indent
+// 1: Indent by one level
+// -1: Preserve original indentation
+extern BoundedOption<signed, -1, 1>
+pp_indent_brace; // = 1
+
+// Whether to print warning messages for unbalanced #if and #else blocks.
+// This will print a message in the following cases:
+// - if an #ifdef block ends on a different indent level than
+// where it started from. Example:
+//
+// #ifdef TEST
+// int i;
+// {
+// int j;
+// #endif
+//
+// - an #elif/#else block ends on a different indent level than
+// the corresponding #ifdef block. Example:
+//
+// #ifdef TEST
+// int i;
+// #else
+// }
+// int j;
+// #endif
+extern Option<bool>
+pp_warn_unbalanced_if; // = false
+
+// TODO ...until here.
+
+//END
+
+///////////////////////////////////////////////////////////////////////////////
+//BEGIN Sort includes options
+
+// The regex for include category with priority 0.
+extern Option<string>
+include_category_0;
+
+// The regex for include category with priority 1.
+extern Option<string>
+include_category_1;
+
+// The regex for include category with priority 2.
+extern Option<string>
+include_category_2;
+
+//END
+
+///////////////////////////////////////////////////////////////////////////////
+//BEGIN Use or Do not Use options
+
+// true: indent_func_call_param will be used (default)
+// false: indent_func_call_param will NOT be used
+extern Option<bool>
+use_indent_func_call_param; // = true
+
+// The value of the indentation for a continuation line is calculated
+// differently if the statement is:
+// - a declaration: your case with QString fileName ...
+// - an assignment: your case with pSettings = new QSettings( ...
+//
+// At the second case the indentation value might be used twice:
+// - at the assignment
+// - at the function call (if present)
+//
+// To prevent the double use of the indentation value, use this option with the
+// value 'true'.
+//
+// true: indent_continue will be used only once
+// false: indent_continue will be used every time (default)
+//
+// Requires indent_ignore_first_continue=false.
+extern Option<bool>
+use_indent_continue_only_once;
+
+// The indentation can be:
+// - after the assignment, at the '[' character
+// - at the beginning of the lambda body
+//
+// true: indentation will be at the beginning of the lambda body
+// false: indentation will be after the assignment (default)
+extern Option<bool>
+indent_cpp_lambda_only_once;
+
+// Whether sp_after_angle takes precedence over sp_inside_fparen. This was the
+// historic behavior, but is probably not the desired behavior, so this is off
+// by default.
+extern Option<bool>
+use_sp_after_angle_always;
+
+// Whether to apply special formatting for Qt SIGNAL/SLOT macros. Essentially,
+// this tries to format these so that they match Qt's normalized form (i.e. the
+// result of QMetaObject::normalizedSignature), which can slightly improve the
+// performance of the QObject::connect call, rather than how they would
+// otherwise be formatted.
+//
+// See options_for_QT.cpp for details.
+extern Option<bool>
+use_options_overriding_for_qt_macros; // = true
+
+// If true: the form feed character is removed from the list of whitespace
+// characters. See https://en.cppreference.com/w/cpp/string/byte/isspace.
+extern Option<bool>
+use_form_feed_no_more_as_whitespace_character;
+
+//END
+
+///////////////////////////////////////////////////////////////////////////////
+//BEGIN Warn levels - 1: error, 2: warning (default), 3: note
+
+// (C#) Warning is given if doing tab-to-\t replacement and we have found one
+// in a C# verbatim string literal.
+extern BoundedOption<unsigned, 1, 3>
+warn_level_tabs_found_in_verbatim_string_literals; // = LWARN
+
+// For debugging purpose only.
+
+// Limit the number of loops.
+// Used by uncrustify.cpp to exit from infinite loop.
+// 0: no limit.
+extern Option<signed>
+debug_max_number_of_loops;
+
+// Set the number of the line to protocol;
+// Used in the function prot_the_line if the 2. parameter is zero.
+// 0: nothing protocol.
+extern Option<signed>
+debug_line_number_to_protocol;
+
+// Set the number of second(s) before terminating formatting the current file,
+// 0: no timeout.
+// only for linux
+extern Option<signed>
+debug_timeout;
+
+// Set the number of characters to be printed if the text is too long,
+// 0: do not truncate.
+extern BoundedOption<unsigned, 0, 960>
+debug_truncate;
+
+// sort (or not) the tracking info.
+extern Option<bool>
+debug_sort_the_tracks; // = true
+
+// decode (or not) the flags as a new line.
+// only if the -p option is set.
+extern Option<bool>
+debug_decode_the_flags;
+
+// use (or not) the exit(EX_SOFTWARE) function.
+extern Option<bool>
+debug_use_the_exit_function_pop; // = true
+
+// insert the number of the line at the beginning of each line
+extern Option<bool>
+set_numbering_for_html_output;
+
+//END
+
+} // namespace options
+
+} // namespace uncrustify
+
+#endif /* OPTIONS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/options_for_QT.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/options_for_QT.cpp
index c0a178f0..c0a178f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/options_for_QT.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/options_for_QT.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/options_for_QT.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/options_for_QT.h
index 1b8bfccf..1b8bfccf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/options_for_QT.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/options_for_QT.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/output.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/output.cpp
new file mode 100644
index 00000000..6de21597
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/output.cpp
@@ -0,0 +1,3580 @@
+/**
+ * @file output.cpp
+ * Does all the output & comment formatting.
+ *
+ * @author Ben Gardner
+ * @author Guy Maurel October 2015, 2021
+ * @license GPL v2+
+ */
+
+#include "output.h"
+
+#include "align_tab_column.h"
+#include "braces.h"
+#include "indent.h"
+#include "prototypes.h"
+#include "tokenize.h"
+#include "unc_ctype.h"
+#include "unicode.h"
+
+#include <ctime>
+#include <map>
+#include <regex>
+#include <set>
+
+// if you need more logs, commented out the next define line
+#define EXTRA_LOG
+
+constexpr static auto LCURRENT = LOUTPUT;
+
+using namespace uncrustify;
+
+
+struct cmt_reflow
+{
+ Chunk *pc = Chunk::NullChunkPtr;
+ size_t column = 0; //! Column of the comment start
+ size_t brace_col = 0; //! Brace column (for indenting with tabs)
+ size_t base_col = 0; //! Base column (for indenting with tabs)
+ size_t word_count = 0; //! number of words on this line
+ size_t xtra_indent = 0; //! extra indent of non-first lines (0 or 1)
+ UncText cont_text; //! fixed text to output at the start of a line (0 to 3 chars)
+ bool reflow = false; //! reflow the current line
+};
+
+
+// for tracking line numbering
+bool numbering_status = false;
+int line_number;
+char char_number[16] = { 0 };
+
+
+void set_numbering(bool status)
+{
+ if (options::set_numbering_for_html_output())
+ {
+ numbering_status = status;
+ }
+}
+
+
+bool get_numbering()
+{
+ return(numbering_status);
+}
+
+
+void set_line_number()
+{
+ line_number = 0;
+}
+
+
+void print_numbering()
+{
+ if (get_numbering())
+ {
+ line_number++;
+ sprintf(char_number, "%d ", line_number);
+ write_string(char_number);
+ }
+}
+
+
+/**
+ * A multiline comment
+ * The only trick here is that we have to trim out whitespace characters
+ * to get the comment to line up.
+ */
+static void output_comment_multi(Chunk *pc);
+
+
+static bool kw_fcn_filename(Chunk *cmt, UncText &out_txt);
+
+
+static bool kw_fcn_class(Chunk *cmt, UncText &out_txt);
+
+
+static bool kw_fcn_message(Chunk *cmt, UncText &out_txt);
+
+
+static bool kw_fcn_category(Chunk *cmt, UncText &out_txt);
+
+
+static bool kw_fcn_scope(Chunk *cmt, UncText &out_txt);
+
+
+static bool kw_fcn_function(Chunk *cmt, UncText &out_txt);
+
+
+/**
+ * Adds the javadoc-style @param and @return stuff, based on the params and
+ * return value for pc.
+ * If the arg list is '()' or '(void)', then no @params are added.
+ * Likewise, if the return value is 'void', then no @return is added.
+ */
+static bool kw_fcn_javaparam(Chunk *cmt, UncText &out_txt);
+
+
+static bool kw_fcn_fclass(Chunk *cmt, UncText &out_txt);
+
+
+static bool kw_fcn_year(Chunk *cmt, UncText &out_txt);
+
+
+/**
+ * Output a multiline comment without any reformatting other than shifting
+ * it left or right to get the column right.
+ *
+ * Trims trailing whitespaces.
+ */
+static void output_comment_multi_simple(Chunk *pc);
+
+
+/**
+ * This renders the #if condition to a string buffer.
+ *
+ * @param[out] dst UncText buffer to be filled
+ * @param[in] ifdef if conditional as chunk list
+ */
+static void generate_if_conditional_as_text(UncText &dst, Chunk *ifdef);
+
+
+/**
+ * Do keyword substitution on a comment.
+ * NOTE: it is assumed that a comment will contain at most one of each type
+ * of keyword.
+ */
+static void do_kw_subst(Chunk *pc);
+
+
+//! All output text is sent here, one char at a time.
+static void add_char(UINT32 ch, bool is_literal = false);
+
+
+static void add_text(const char *ascii_text);
+
+
+static void add_text(const UncText &text, bool is_ignored, bool is_literal);
+
+
+/**
+ * Count the number of characters to the end of the next chunk of text.
+ * If it exceeds the limit, return true.
+ */
+static bool next_word_exceeds_limit(const UncText &text, size_t idx);
+
+
+/**
+ * Output a comment to the column using indent_with_tabs and
+ * indent_cmt_with_tabs as the rules.
+ * base_col is the indent of the first line of the comment.
+ * On the first line, column == base_col.
+ * On subsequent lines, column >= base_col.
+ *
+ * @param brace_col the brace-level indent of the comment
+ * @param base_col the indent of the start of the comment (multiline)
+ * @param column the column that we should end up in
+ */
+static void cmt_output_indent(size_t brace_col, size_t base_col, size_t column);
+
+
+/**
+ * Checks for and updates the lead chars.
+ *
+ * @param line the comment line
+ *
+ * @return 0: not present, >0: number of chars that are part of the lead
+ */
+static size_t cmt_parse_lead(const UncText &line, bool is_last);
+
+
+/**
+ * Scans a multiline comment to determine the following:
+ * - the extra indent of the non-first line (0 or 1)
+ * - the continuation text ('' or '* ')
+ *
+ * The decision is based on:
+ * - cmt_indent_multi
+ * - cmt_star_cont
+ * - cmt_multi_first_len_minimum
+ * - the first line length
+ * - the second line leader length
+ * - the last line length (without leading space/tab)
+ *
+ * If the first and last line are the same length and don't contain any alnum
+ * chars and (the first line len > 2 or the second leader is the same as the
+ * first line length), then the indent is 0.
+ *
+ * If the leader on the second line is 1 wide or missing, then the indent is 1.
+ *
+ * Otherwise, the indent is 0.
+ *
+ * @param str The comment string
+ * @param len Length of the comment
+ * @param start_col Starting column
+ *
+ * @return cmt.xtra_indent is set to 0 or 1
+ */
+static void calculate_comment_body_indent(cmt_reflow &cmt, const UncText &str);
+
+
+static int next_up(const UncText &text, size_t idx, const UncText &tag);
+
+
+/**
+ * Outputs the C comment at pc.
+ * C comment combining is done here
+ *
+ * @return the last chunk output'd
+ */
+static Chunk *output_comment_c(Chunk *pc);
+
+
+/**
+ * Outputs the CPP comment at pc.
+ * CPP comment combining is done here
+ *
+ * @return the last chunk output'd
+ */
+static Chunk *output_comment_cpp(Chunk *pc);
+
+
+static void cmt_trim_whitespace(UncText &line, bool in_preproc);
+
+
+/**
+ * Outputs a comment. The initial opening '//' may be included in the text.
+ * Subsequent openings (if combining comments), should not be included.
+ * The closing (for C/D comments) should not be included.
+ *
+ * TODO:
+ * If reflowing text, the comment should be added one word (or line) at a time.
+ * A newline should only be sent if a blank line is encountered or if the next
+ * line is indented beyond the current line (optional?).
+ * If the last char on a line is a ':' or '.', then the next line won't be
+ * combined.
+ */
+static void add_comment_text(const UncText &text, cmt_reflow &cmt, bool esc_close, size_t continuation_indent = 0);
+
+
+static void output_cmt_start(cmt_reflow &cmt, Chunk *pc);
+
+
+/**
+ * Checks to see if the current comment can be combined with the next comment.
+ * The two can be combined if:
+ * 1. They are the same type
+ * 2. There is exactly one newline between then
+ * 3. They are indented to the same level
+ */
+static bool can_combine_comment(Chunk *pc, cmt_reflow &cmt);
+
+
+#define LOG_CONTTEXT() \
+ LOG_FMT(LCONTTEXT, "%s(%d): set cont_text to '%s'\n", __func__, __LINE__, cmt.cont_text.c_str())
+
+
+static void add_spaces()
+{
+ while (cpd.spaces > 0)
+ {
+ write_char(' ');
+ cpd.spaces--;
+ }
+}
+
+
+static void add_char(UINT32 ch, bool is_literal)
+{
+ // If we did a '\r' and it isn't followed by a '\n', then output a newline
+ if ( (cpd.last_char == '\r')
+ && (ch != '\n'))
+ {
+ write_string(cpd.newline);
+ cpd.column = 1;
+ cpd.did_newline = true;
+ cpd.spaces = 0;
+ }
+
+ // convert a newline into the LF/CRLF/CR sequence
+ if (ch == '\n')
+ {
+ add_spaces();
+ write_string(cpd.newline);
+ cpd.column = 1;
+ cpd.did_newline = true;
+ cpd.spaces = 0;
+ print_numbering();
+ }
+ else if (ch == '\r') // do not output the CARRIAGERETURN
+ {
+ // do not output '\r'
+ cpd.column = 1;
+ cpd.did_newline = true;
+ cpd.spaces = 0;
+ }
+ else if ( (ch == '\t')
+ && cpd.output_tab_as_space)
+ {
+ size_t endcol = next_tab_column(cpd.column);
+
+ while (cpd.column < endcol)
+ {
+ add_char(' ');
+ }
+ return;
+ }
+ else
+ {
+ // explicitly disallow a tab after a space
+ if ( !is_literal
+ && ch == '\t'
+ && cpd.last_char == ' ')
+ {
+ log_rule_B("indent_with_tabs");
+
+ int indent_with_tabs = options::pp_indent_with_tabs();
+
+ if ( cpd.in_preproc != CT_PREPROC
+ || indent_with_tabs == -1)
+ {
+ indent_with_tabs = options::indent_with_tabs();
+ }
+
+ if (indent_with_tabs == 0)
+ {
+ size_t endcol = next_tab_column(cpd.column);
+
+ while (cpd.column < endcol)
+ {
+ add_char(' ');
+ }
+ return;
+ }
+ }
+
+ if ( (ch == ' ')
+ && !cpd.output_trailspace)
+ {
+ cpd.spaces++;
+ cpd.column++;
+ }
+ else
+ {
+ add_spaces();
+ write_char(ch);
+
+ if (ch == '\t')
+ {
+ cpd.column = next_tab_column(cpd.column);
+ }
+ else
+ {
+ cpd.column++;
+ }
+ }
+ }
+ cpd.last_char = ch;
+} // add_char
+
+
+static void add_text(const char *ascii_text)
+{
+ char ch;
+
+ while ((ch = *ascii_text) != 0)
+ {
+ ascii_text++;
+ add_char(ch);
+ }
+}
+
+
+static void add_text(const UncText &text, bool is_ignored = false, bool is_literal = false)
+{
+ for (size_t idx = 0; idx < text.size(); idx++)
+ {
+ int ch = text[idx];
+
+ if (is_ignored)
+ {
+ write_char(ch);
+ }
+ else
+ {
+ add_char(ch, is_literal);
+ }
+ }
+}
+
+
+static bool next_word_exceeds_limit(const UncText &text, size_t idx)
+{
+ size_t length = 0;
+
+ // Count any whitespace
+ while ( (idx < text.size())
+ && unc_isspace(text[idx]))
+ {
+ idx++;
+ length++;
+ }
+
+ // Count non-whitespace
+ while ( (idx < text.size())
+ && !unc_isspace(text[idx]))
+ {
+ idx++;
+ length++;
+ }
+ bool exceed_limit = (cpd.column + length - 1) > options::cmt_width();
+ LOG_FMT(LCONTTEXT, "%s(%d): idx is %zu%s\n",
+ __func__, __LINE__, idx, (exceed_limit ? " exceeds limit" : ""));
+ return(exceed_limit);
+}
+
+
+/**
+ * Advance to a specific column
+ * cpd.column is the current column
+ *
+ * @param column The column to advance to
+ */
+static void output_to_column(size_t column, bool allow_tabs)
+{
+ cpd.did_newline = false;
+
+ if (allow_tabs)
+ {
+ // tab out as far as possible and then use spaces
+ size_t next_column = next_tab_column(cpd.column);
+
+ while (next_column <= column)
+ {
+ add_text("\t");
+ next_column = next_tab_column(cpd.column);
+ }
+ }
+
+ // space out the final bit
+ while (cpd.column < column)
+ {
+ add_text(" ");
+ }
+}
+
+
+static void cmt_output_indent(size_t brace_col, size_t base_col, size_t column)
+{
+ log_rule_B("indent_cmt_with_tabs");
+ size_t iwt = options::indent_cmt_with_tabs() ? 2 :
+ (options::indent_with_tabs() ? 1 : 0);
+
+ size_t tab_col = (iwt == 0) ? 0 : ((iwt == 1) ? brace_col : base_col);
+
+ // LOG_FMT(LSYS, "%s(brace=%zd base=%zd col=%zd iwt=%zd) tab=%zd cur=%zd\n",
+ // __func__, brace_col, base_col, column, iwt, tab_col, cpd.column);
+
+ cpd.did_newline = false;
+
+ if ( iwt == 2
+ || ( cpd.column == 1
+ && iwt == 1))
+ {
+ // tab out as far as possible and then use spaces
+ while (next_tab_column(cpd.column) <= tab_col)
+ {
+ add_text("\t");
+ }
+ }
+
+ // space out the rest
+ while (cpd.column < column)
+ {
+ add_text(" ");
+ }
+} // cmt_output_indent
+
+
+void output_parsed(FILE *pfile, bool withOptions)
+{
+ const char *eol_marker = get_eol_marker();
+
+ if (withOptions)
+ {
+ save_option_file(pfile, false, true);
+ }
+ fprintf(pfile, "# -=====-%s", eol_marker);
+ fprintf(pfile, "# number of loops = %d\n", cpd.changes);
+ fprintf(pfile, "# -=====-%s", eol_marker);
+ fprintf(pfile, "# language = %s\n", language_name_from_flags(cpd.lang_flags));
+ fprintf(pfile, "# -=====-%s", eol_marker);
+ // MAXLENGTHOFTHENAME must be consider at the format line at the file
+ // output.cpp, line 427: fprintf(pfile, "# Line Tag Parent...
+ // and 430: ... fprintf(pfile, "%s# %3zu>%19.19s[%19.19s] ...
+ // here xx xx xx xx
+#ifdef WIN32
+ fprintf(pfile, "# Line Tag Parent_type Type of the parent Columns Br/Lvl/pp Nl Text");
+#else // not WIN32
+ fprintf(pfile, "# Line Tag Parent_type Type of the parent Columns Br/Lvl/pp Flags Nl Text");
+#endif // ifdef WIN32
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+#ifdef WIN32
+ fprintf(pfile, "%s# %3d>%19.19s|%19.19s|%19.19s[%3d/%3d/%3d/%3d][%d/%d/%d][%d-%d]",
+ eol_marker, (int)pc->GetOrigLine(), get_token_name(pc->GetType()),
+ get_token_name(pc->GetParentType()), get_token_name(pc->GetTypeOfParent()),
+ (int)pc->GetColumn(), (int)pc->GetOrigCol(), (int)pc->GetOrigColEnd(), (int)pc->GetOrigPrevSp(),
+ (int)pc->GetBraceLevel(), (int)pc->GetLevel(), (int)pc->GetPpLevel(), (int)pc->GetNlCount(), pc->GetAfterTab());
+#else // not WIN32
+ fprintf(pfile, "%s# %3zu>%19.19s|%19.19s|%19.19s[%3zu/%3zu/%3zu/%3zu][%zu/%zu/%zu]",
+ eol_marker, pc->GetOrigLine(), get_token_name(pc->GetType()),
+ get_token_name(pc->GetParentType()), get_token_name(pc->GetTypeOfParent()),
+ pc->GetColumn(), pc->GetOrigCol(), pc->GetOrigColEnd(), pc->GetOrigPrevSp(),
+ pc->GetBraceLevel(), pc->GetLevel(), pc->GetPpLevel());
+ // Print pc flags in groups of 4 hex characters
+ char flag_string[24];
+ sprintf(flag_string, "%16llx", static_cast<PcfFlags::int_t>(pc->GetFlags()));
+ fprintf(pfile, "[%.4s %.4s %.4s %.4s]", flag_string, flag_string + 4, flag_string + 8, flag_string + 12);
+ fprintf(pfile, "[%zu-%d]",
+ pc->GetNlCount(), pc->GetAfterTab());
+#endif // ifdef WIN32
+
+ if ( pc->IsNot(CT_NEWLINE)
+ && (pc->Len() != 0))
+ {
+ for (size_t cnt = 0; cnt < pc->GetColumn(); cnt++)
+ {
+ fprintf(pfile, " ");
+ }
+
+ if (pc->IsNot(CT_NL_CONT))
+ {
+ fprintf(pfile, "%s", pc->Text());
+ }
+ else
+ {
+ fprintf(pfile, "\\");
+ }
+ }
+
+ if (options::debug_decode_the_flags())
+ {
+ // such as:
+ // The flags are: [0xc0400:IN_CLASS,STMT_START,EXPR_START]
+ fprintf(pfile, "%s The flags are: ", eol_marker);
+ fprintf(pfile, "%s", pcf_flags_str(pc->GetFlags()).c_str());
+ }
+ }
+
+ fprintf(pfile, "%s# -=====-%s", eol_marker, eol_marker);
+ fflush(pfile);
+} // output_parsed
+
+
+void output_parsed_csv(FILE *pfile)
+{
+ const char *eol_marker = get_eol_marker();
+
+ fprintf(pfile, "number of loops,%d,\n", cpd.changes);
+ fprintf(pfile, "language,%s,\n", language_name_from_flags(cpd.lang_flags));
+ fprintf(pfile, "Line,Tag,Parent_type,Type of the parent,Column,Orig Col Strt,"
+ "Orig Col End,Orig Sp Before,Br,Lvl,pp,Flags,Nl Before,Nl After,Text,");
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ fprintf(pfile, "%s%zu,%s,%s,%s,%zu,%zu,%zu,%zu,%zu,%zu,%zu,",
+ eol_marker, pc->GetOrigLine(), get_token_name(pc->GetType()),
+ get_token_name(pc->GetParentType()), get_token_name(pc->GetTypeOfParent()),
+ pc->GetColumn(), pc->GetOrigCol(), pc->GetOrigColEnd(), pc->GetOrigPrevSp(),
+ pc->GetBraceLevel(), pc->GetLevel(), pc->GetPpLevel());
+
+ auto pcf_flag_str = pcf_flags_str(E_PcfFlag(pc->GetFlags()));
+#ifdef WIN32
+ auto pcf_flag_str_start = pcf_flag_str.find("[") + 1;
+#else // not WIN32
+ auto pcf_flag_str_start = pcf_flag_str.find(":") + 1;
+#endif // ifdef WIN32
+ auto pcf_flag_str_end = pcf_flag_str.find("]");
+ auto pcf_names = pcf_flag_str.substr(pcf_flag_str_start,
+ pcf_flag_str_end - pcf_flag_str_start);
+ fprintf(pfile, "\"%s\",", pcf_names.c_str());
+ fprintf(pfile, "%zu,%d,",
+ pc->GetNlCount(), pc->GetAfterTab());
+
+ if ( pc->IsNot(CT_NEWLINE)
+ && (pc->Len() != 0))
+ {
+ fprintf(pfile, "\"");
+
+ for (size_t cnt = 0; cnt < pc->GetColumn(); cnt++)
+ {
+ fprintf(pfile, " ");
+ }
+
+ if (pc->IsNot(CT_NL_CONT))
+ {
+ for (auto *ch = pc->Text(); *ch != '\0'; ++ch)
+ {
+ fprintf(pfile, "%c", *ch);
+
+ if (*ch == '"')
+ {
+ // need to escape the double-quote for csv-format
+ fprintf(pfile, "\"");
+ }
+ }
+ }
+ else
+ {
+ fprintf(pfile, "\\");
+ }
+ fprintf(pfile, "\"");
+ }
+ }
+
+ fflush(pfile);
+} // output_parsed_csv
+
+
+// Compares two tracks according to second in descending order.
+bool compareTrack(TrackNumber t1, TrackNumber t2)
+{
+ char *t1s = t1.second;
+ char *t2s = t2.second;
+ int vergleich = strcmp(t2s, t1s);
+ bool int_vergleich = vergleich > 0;
+
+ return(int_vergleich);
+}
+
+
+void output_text(FILE *pfile)
+{
+ bool tracking = cpd.html_type != tracking_type_e::TT_NONE; // special for debugging
+
+ cpd.fout = pfile;
+ cpd.did_newline = true;
+ cpd.column = 1;
+
+ if (cpd.bom)
+ {
+ write_bom();
+ }
+ Chunk *pc;
+
+ if (cpd.frag_cols > 0)
+ {
+ size_t indent = cpd.frag_cols - 1;
+
+ // loop over the whole chunk list
+ for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ pc->SetColumn(pc->GetColumn() + indent);
+ pc->SetColumnIndent(pc->GetColumnIndent() + indent);
+ }
+
+ cpd.frag_cols = 0;
+ }
+
+ if (tracking)
+ {
+ set_numbering(false);
+ add_text("<html>\n");
+ add_text("<head>\n");
+ add_text(" <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"/>\n");
+ add_text(" <title>Uncrustify: where do the Spaces options work</title>\n");
+ add_text("</head>\n");
+ add_text("<body lang=\"en-US\">\n");
+ add_text("<p>\n");
+ add_text("</p>\n");
+ add_text("<pre>\n");
+ set_numbering(true);
+ set_line_number();
+ print_numbering();
+ }
+ bool write_in_tracking = false;
+ int pp_indent_with_tabs = options::pp_indent_with_tabs();
+
+ if (pp_indent_with_tabs == -1)
+ {
+ pp_indent_with_tabs = options::indent_with_tabs();
+ }
+
+ // loop over the whole chunk list
+ for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ char copy[1000];
+ LOG_FMT(LCONTTEXT, "%s(%d): Text() is '%s', type is %s, orig line is %zu, column is %zu, nl is %zu\n",
+ __func__, __LINE__, pc->ElidedText(copy), get_token_name(pc->GetType()), pc->GetOrigLine(), pc->GetColumn(), pc->GetNlCount());
+ cpd.output_tab_as_space = false;
+
+ if (pc->Is(CT_NEWLINE))
+ {
+ for (size_t cnt = 0; cnt < pc->GetNlCount(); cnt++)
+ {
+ if ( cnt > 0
+ && pc->GetNlColumn() > 1)
+ {
+ log_rule_B("indent_with_tabs - newline");
+
+ if (pc->IsPreproc())
+ {
+ output_to_column(pc->GetNlColumn(), (pp_indent_with_tabs == 2));
+ }
+ else
+ {
+ output_to_column(pc->GetNlColumn(), (options::indent_with_tabs() == 2));
+ }
+ }
+ add_char('\n');
+ }
+
+ cpd.did_newline = true;
+ cpd.column = 1;
+ }
+ else if (pc->Is(CT_NL_CONT))
+ {
+ // FIXME: this really shouldn't be done here!
+ if (!pc->TestFlags(PCF_WAS_ALIGNED))
+ {
+ // Add or remove space before a backslash-newline at the end of a line.
+ log_rule_B("sp_before_nl_cont");
+
+ if (options::sp_before_nl_cont() & IARF_REMOVE)
+ {
+ log_rule_B("sp_before_nl_cont");
+ pc->SetColumn(cpd.column + (options::sp_before_nl_cont() == IARF_FORCE));
+ }
+ else
+ {
+ // Try to keep the same relative spacing
+ Chunk *prev = pc->GetPrev();
+
+ if (prev->Is(CT_PP_IGNORE))
+ {
+ /*
+ * Want to completely leave alone PP_IGNORE'd blocks because
+ * they likely have special column aligned newline
+ * continuations (common in multiline macros)
+ */
+ pc->SetColumn(pc->GetOrigCol());
+ }
+ else
+ {
+ // Try to keep the same relative spacing
+ while ( prev->IsNotNullChunk()
+ && prev->GetOrigCol() == 0
+ && prev->GetNlCount() == 0)
+ {
+ prev = prev->GetPrev();
+ }
+
+ if ( prev->IsNotNullChunk()
+ && prev->GetNlCount() == 0)
+ {
+ int orig_sp = pc->GetOrigPrevSp();
+
+ if ((int)(cpd.column + orig_sp) < 0)
+ {
+#ifdef WIN32
+ fprintf(stderr, "FATAL: negative value.\n pc->GetOrigCol() is %d, prev->GetOrigColEnd() is %d\n",
+ (int)pc->GetOrigCol(), (int)prev->GetOrigColEnd());
+#else // not WIN32
+ fprintf(stderr, "FATAL: negative value.\n pc->GetOrigCol() is %zu, prev->GetOrigColEnd() is %zu\n",
+ pc->GetOrigCol(), prev->GetOrigColEnd());
+#endif // ifdef WIN32
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ pc->SetColumn(cpd.column + orig_sp);
+
+ // Add or remove space before a backslash-newline at the end of a line.
+ log_rule_B("sp_before_nl_cont");
+
+ if ( (options::sp_before_nl_cont() != IARF_IGNORE)
+ && (pc->GetColumn() < (cpd.column + 1)))
+ {
+ pc->SetColumn(cpd.column + 1);
+ }
+ }
+ }
+ }
+ output_to_column(pc->GetColumn(), false);
+ }
+ else
+ {
+ log_rule_B("indent_with_tabs - newline cont");
+
+ if (pc->IsPreproc())
+ {
+ output_to_column(pc->GetColumn(), (pp_indent_with_tabs == 2));
+ }
+ else
+ {
+ output_to_column(pc->GetColumn(), (options::indent_with_tabs() == 2));
+ }
+ }
+ add_char('\\');
+ add_char('\n');
+ cpd.did_newline = true;
+ cpd.column = 1;
+ }
+ else if (pc->Is(CT_COMMENT_MULTI))
+ {
+ log_rule_B("cmt_indent_multi");
+ log_rule_B("cmt_convert_tab_to_spaces - multi");
+ cpd.output_tab_as_space = options::cmt_convert_tab_to_spaces();
+
+ if (options::cmt_indent_multi())
+ {
+ output_comment_multi(pc);
+ }
+ else
+ {
+ output_comment_multi_simple(pc);
+ }
+ }
+ else if ( pc->Is(CT_COMMENT_CPP)
+ || pc->Is(CT_COMMENT_CPP_ENDIF))
+ {
+ log_rule_B("cmt_comment_cpp");
+ log_rule_B("cmt_convert_tab_to_spaces - comment_cpp");
+ cpd.output_tab_as_space = options::cmt_convert_tab_to_spaces();
+
+ bool tmp = cpd.output_trailspace;
+ /*
+ * keep trailing spaces if they are still present in a chunk;
+ * note that tokenize() already strips spaces in comments,
+ * so if they made it up to here, they are to stay
+ */
+ cpd.output_trailspace = true;
+ pc = output_comment_cpp(pc);
+ cpd.output_trailspace = tmp;
+ }
+ else if ( pc->Is(CT_COMMENT)
+ || pc->Is(CT_COMMENT_ENDIF))
+ {
+ log_rule_B("cmt_comment");
+ log_rule_B("cmt_convert_tab_to_spaces - comment");
+ cpd.output_tab_as_space = options::cmt_convert_tab_to_spaces();
+
+ pc = output_comment_c(pc);
+ }
+ else if ( pc->Is(CT_JUNK)
+ || pc->Is(CT_IGNORED))
+ {
+ LOG_FMT(LOUTIND, "%s(%d): orig line is %zu, orig col is %zu,\npc->Text() >%s<, pc->str.size() is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), pc->GetStr().size());
+ // do not adjust the column for junk
+ add_text(pc->GetStr(), true);
+ }
+ else if (pc->Len() == 0)
+ {
+ // don't do anything for non-visible stuff
+ LOG_FMT(LOUTIND, "%s(%d): orig line is %zu, column is %zu, non-visible stuff: type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetColumn(), get_token_name(pc->GetType()));
+ }
+ else
+ {
+ bool allow_tabs;
+ cpd.output_trailspace = (pc->Is(CT_STRING_MULTI));
+
+ // indent to the 'level' first
+ if (cpd.did_newline)
+ {
+ if ( ( pc->IsPreproc()
+ && pp_indent_with_tabs == 1)
+ || ( !pc->IsPreproc()
+ && options::indent_with_tabs() == 1))
+ {
+ size_t lvlcol;
+
+ /*
+ * FIXME: it would be better to properly set m_columnIndent in
+ * indent_text(), but this hack for '}' and '#' seems to work.
+ */
+ if ( pc->Is(CT_BRACE_CLOSE)
+ || pc->Is(CT_CASE_COLON)
+ || pc->IsPreproc())
+ {
+ lvlcol = pc->GetColumn();
+ }
+ else
+ {
+ lvlcol = pc->GetColumnIndent();
+
+ if (lvlcol > pc->GetColumn())
+ {
+ lvlcol = pc->GetColumn();
+ }
+ }
+
+ if (lvlcol > 1)
+ {
+ log_rule_B("indent_with_tabs - hack");
+ output_to_column(lvlcol, true);
+ }
+ }
+ log_rule_B("indent_with_tabs");
+ allow_tabs = ( pc->IsPreproc()
+ && pp_indent_with_tabs == 2)
+ || ( !pc->IsPreproc()
+ && options::indent_with_tabs() == 2)
+ || ( pc->IsComment()
+ && options::indent_with_tabs() != 0);
+
+ LOG_FMT(LOUTIND, "%s(%d): orig line is %zu, column is %zu, column indent is %zu, cpd.column is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetColumn(), pc->GetColumnIndent(), cpd.column);
+ }
+ else
+ {
+ /*
+ * Reformatting multi-line comments can screw up the column.
+ * Make sure we don't mess up the spacing on this line.
+ * This has to be done here because comments are not formatted
+ * until the output phase.
+ */
+ if (pc->GetColumn() < cpd.column)
+ {
+ reindent_line(pc, cpd.column);
+ }
+ // not the first item on a line
+ Chunk *prev = pc->GetPrev();
+ log_rule_B("align_with_tabs");
+ allow_tabs = ( options::align_with_tabs()
+ && pc->TestFlags(PCF_WAS_ALIGNED)
+ && ((prev->GetColumn() + prev->Len() + 1) != pc->GetColumn()));
+
+ log_rule_B("align_keep_tabs");
+
+ if (options::align_keep_tabs())
+ {
+ allow_tabs |= pc->GetAfterTab();
+ }
+ LOG_FMT(LOUTIND, "%s(%d): at column %zu(%s)\n",
+ __func__, __LINE__, pc->GetColumn(), (allow_tabs ? "true" : "FALSE"));
+ }
+ output_to_column(pc->GetColumn(), allow_tabs);
+
+ if (write_in_tracking)
+ {
+ if (pc->Is(CT_ANGLE_OPEN))
+ {
+ add_text("&lt;", false, false);
+ }
+ else if (pc->Is(CT_ANGLE_CLOSE))
+ {
+ add_text("&gt;", false, false);
+ }
+ else
+ {
+ if (tracking)
+ {
+ if (pc->GetStr()[0] == '<')
+ {
+ add_text("&lt;", false, false);
+ size_t lang = pc->GetStr().size();
+
+ for (size_t idx = 1; idx < lang - 1; idx++)
+ {
+ int ch = pc->GetStr()[idx];
+ add_char(ch);
+ }
+
+ add_text("&gt;", false, false);
+ }
+ }
+ add_text(pc->GetStr(), false, pc->Is(CT_STRING));
+ }
+ write_in_tracking = false;
+ }
+ else
+ {
+ add_text(pc->GetStr(), false, pc->Is(CT_STRING));
+ }
+
+ if (pc->Is(CT_PP_DEFINE)) // Issue #876
+ {
+ // If true, a <TAB> is inserted after #define.
+ log_rule_B("force_tab_after_define");
+
+ if (options::force_tab_after_define())
+ {
+ add_char('\t');
+ }
+ }
+ cpd.did_newline = pc->IsNewline();
+ cpd.output_trailspace = false;
+ }
+
+ if (pc->GetTrackingData() != nullptr)
+ {
+ LOG_FMT(LGUY, " Tracking info are: \n");
+ LOG_FMT(LGUY, " number of track(s) %zu\n", pc->GetTrackingData()->size());
+ add_text("<a title=\"");
+ char tempText[80];
+
+ // is sorting necessary?
+ size_t many = pc->GetTrackingData()->size();
+
+ if (many > 1)
+ {
+#ifdef EXTRA_LOG
+ // protocol before sort
+ for (size_t track = 0; track < pc->GetTrackingData()->size(); track++)
+ {
+ const TrackList *A = pc->GetTrackingData();
+ const TrackNumber B = A->at(track);
+ size_t Bfirst = B.first;
+ char *Bsecond = B.second;
+
+ LOG_FMT(LGUY, " %zu, tracking number is %zu\n", track, Bfirst);
+ LOG_FMT(LGUY, " %zu, rule is %s\n", track, Bsecond);
+ }
+#endif
+
+ if (options::debug_sort_the_tracks())
+ {
+ TrackList *A1 = pc->TrackingData();
+ sort(A1->begin(), A1->end(), compareTrack);
+ }
+#ifdef EXTRA_LOG
+ // protocol after sort
+ for (size_t track = 0; track < pc->GetTrackingData()->size(); track++)
+ {
+ const TrackList *A = pc->GetTrackingData();
+ const TrackNumber B = A->at(track);
+ size_t Bfirst = B.first;
+ char *Bsecond = B.second;
+
+ LOG_FMT(LGUY, " %zu, tracking number is %zu\n", track, Bfirst);
+ LOG_FMT(LGUY, " %zu, rule is %s\n", track, Bsecond);
+ }
+#endif
+ }
+ char *old_one = nullptr;
+
+ for (size_t track = 0; track < pc->GetTrackingData()->size(); track++)
+ {
+ const TrackList *A = pc->GetTrackingData();
+ const TrackNumber B = A->at(track);
+ size_t Bfirst = B.first;
+ char *Bsecond = B.second;
+ bool first_text = true;
+
+ if ( old_one == nullptr
+ || strcmp(old_one, Bsecond) != 0)
+ {
+ // first time this option
+ if (old_one != nullptr)
+ {
+ add_text("&#010;");
+ }
+ old_one = Bsecond;
+
+ if (first_text)
+ {
+ sprintf(tempText, "%s", Bsecond);
+ add_text(tempText);
+ add_text(": ");
+ first_text = false;
+ }
+ }
+ else
+ {
+ add_text(", ");
+ }
+ sprintf(tempText, "%zu", Bfirst);
+ add_text(tempText);
+ } // for (size_t track = 0; track < pc->GetTrackingData()->size(); track++)
+
+ add_text("\"><font color=\"red\">M</font></a>");
+ write_in_tracking = true;
+ }
+ } // loop over the whole chunk list
+
+ if (tracking)
+ {
+ set_numbering(false);
+ add_text("</pre>\n");
+ add_text("</body>\n");
+ add_text("</html>\n");
+ }
+} // output_text
+
+
+static size_t cmt_parse_lead(const UncText &line, bool is_last)
+{
+ size_t len = 0;
+
+ while ( len < 32
+ && len < line.size()) // TODO what is the meaning of 32?
+ {
+ if ( len > 0
+ && line[len] == '/')
+ {
+ // ignore combined comments
+ size_t tmp = len + 1;
+
+ while ( tmp < line.size()
+ && unc_isspace(line[tmp]))
+ {
+ tmp++;
+ }
+
+ if ( tmp < line.size()
+ && line[tmp] == '/')
+ {
+ return(1);
+ }
+ break;
+ }
+ else if (strchr("*|\\#+", line[len]) == nullptr)
+ {
+ break; // none of the characters '*|\#+' found in line
+ }
+ len++;
+ }
+
+ if (len > 30) // TODO: what is the meaning of 30?
+ {
+ return(1);
+ }
+
+ if ( len > 0
+ && ( len >= line.size()
+ || unc_isspace(line[len])))
+ {
+ return(len);
+ }
+
+ if ( len == 1
+ && line[0] == '*')
+ {
+ return(len);
+ }
+
+ if ( is_last
+ && len > 0)
+ {
+ return(len);
+ }
+ return(0);
+} // cmt_parse_lead
+
+
+/**
+ * Eat whitespace characters starting at the specified index in the forward or reverse direction
+ * within a single line
+ * @param str the input string containing the comment text
+ * @param idx the starting index
+ * @param forward if true, searches in the forward direction;
+ * if false, searches in the reverse direction
+ * @return the first index at which a non-whitespace character is encountered, including
+ * a newline character
+ */
+template<typename String>
+static int eat_line_whitespace(const String &str,
+ int idx, bool
+ forward = true)
+{
+ auto advance_index = [&](int i)
+ {
+ return(forward ? i + 1 : i - 1);
+ };
+
+ auto index_in_range = [&](int i)
+ {
+ // TODO: the following BREAKS with source code formatting; uncrustify seems to
+ // think that the following is a template. This will NEED to be fixed!!!
+ // For now, reformulate the statement
+ //return(forward ? i<int(str.size()) : i> = 0);
+ return(forward ? (i < int(str.size())) : (i >= 0));
+ };
+
+ while ( index_in_range(idx)
+ && str[idx] != '\n'
+ && str[idx] != '\r'
+ && unc_isspace(str[idx]))
+ {
+ idx = advance_index(idx);
+ }
+ return(idx);
+} // eat_line_whitespace
+
+
+/**
+ * Returns whether or not a javaparam tag is the leading
+ * text in a comment line, with only a sequence of whitespace
+ * and/or '*' characters preceding it
+ * @param str the input string containing the comment text
+ * @param idx the starting index
+ * @return true/false
+ */
+template<typename String>
+static bool javaparam_tag_is_start_of_line(const String &str, int idx)
+{
+ idx = eat_line_whitespace(str,
+ str[idx] == '@' ? idx - 1 : idx,
+ false);
+
+ while (true)
+ {
+ if ( idx < 0
+ || str[idx] == '\n'
+ || str[idx] == '\r')
+ {
+ return(true);
+ }
+
+ if (str[idx] == '*')
+ {
+ idx = eat_line_whitespace(str,
+ idx - 1,
+ false);
+ }
+ else
+ {
+ return(false);
+ }
+ }
+} // javaparam_tag_is_start_of_line
+
+
+/**
+ * Attempts to match a doxygen/javadoc-style comment tag
+ * @param str the input string containing the comment text
+ * @param idx the starting index
+ * @return the index of the character immediately following the matched tag,
+ * or -1 if no match is found
+ */
+static int match_doxygen_javadoc_tag(const std::wstring &str, size_t idx)
+{
+ std::wsmatch match;
+
+ if (str[idx] == L'@')
+ {
+ // Issue #3357
+ std::wregex criteria(L"(@(?:author|"
+ L"deprecated|"
+ L"exception|"
+ L"param(?:\\s*?\\[\\s*(?:in\\s*,\\s*out|in|out)\\s*?\\])?|"
+ L"return|"
+ L"see|"
+ L"since|"
+ L"throws|"
+ L"version)(?=\\s))");
+
+ if ( std::regex_search(str.cbegin() + idx, str.cend(), match, criteria)
+ && match[1].matched
+ && match.position(1) == std::wsmatch::difference_type(0))
+ {
+ std::set<std::wstring> block_tags =
+ {
+ L"@author",
+ L"@deprecated",
+ L"@exception",
+ L"@param",
+ L"@param[in]",
+ L"@param[in,out]",
+ L"@param[out]",
+ L"@return",
+ L"@see",
+ L"@since",
+ L"@throws",
+ L"@version"
+ };
+ std::wstring result(match[1]);
+ result.erase(std::remove_if(result.begin(), result.end(), ::isspace), result.end());
+ auto &&it_block_tag = block_tags.find(result);
+
+ if ( it_block_tag != block_tags.end()
+ && javaparam_tag_is_start_of_line(str, idx))
+ {
+ return(int(idx + match[1].length()));
+ }
+ }
+ }
+ return(-1);
+} // match_javadoc_block_tag
+
+
+static void calculate_doxygen_javadoc_indent_alignment(const std::wstring &str,
+ size_t &doxygen_javadoc_param_name_indent,
+ size_t &doxygen_javadoc_continuation_indent)
+{
+ log_rule_B("cmt_align_doxygen_javadoc_tags");
+
+ doxygen_javadoc_continuation_indent = 0;
+ doxygen_javadoc_param_name_indent = 0;
+
+ if (!options::cmt_align_doxygen_javadoc_tags())
+ {
+ return;
+ }
+
+ for (size_t idx = 0; idx < str.size(); ++idx)
+ {
+ int start_idx = idx;
+ int end_idx = match_doxygen_javadoc_tag(str, start_idx);
+
+ if (end_idx > start_idx)
+ {
+ size_t block_tag_width = 1 + std::count_if(str.begin() + start_idx,
+ str.begin() + end_idx,
+ [](wchar_t ch) {
+ return(!unc_isspace(ch));
+ });
+
+ if (block_tag_width > doxygen_javadoc_param_name_indent)
+ {
+ doxygen_javadoc_param_name_indent = block_tag_width;
+ }
+ idx = eat_line_whitespace(str, end_idx);
+
+ size_t param_name_width = 0;
+
+ if (str.find(L"@param", start_idx) == size_t(start_idx))
+ {
+ param_name_width = 1;
+
+ while (true)
+ {
+ while ( !unc_isspace(str[idx])
+ && str[idx] != ',')
+ {
+ ++param_name_width;
+ ++idx;
+ }
+ idx = eat_line_whitespace(str, idx);
+
+ if (str[idx] != ',')
+ {
+ break;
+ }
+ param_name_width += 2;
+ idx = eat_line_whitespace(str, idx + 1);
+ }
+ }
+
+ if (param_name_width > doxygen_javadoc_continuation_indent)
+ {
+ doxygen_javadoc_continuation_indent = param_name_width;
+ }
+ }
+ }
+
+ if (doxygen_javadoc_param_name_indent > 0)
+ {
+ log_rule_B("cmt_sp_before_doxygen_javadoc_tags");
+
+ doxygen_javadoc_param_name_indent += options::cmt_sp_before_doxygen_javadoc_tags();
+ doxygen_javadoc_continuation_indent += doxygen_javadoc_param_name_indent;
+ }
+} // calculate_doxygen_javadoc_indent_alignment
+
+
+static void calculate_comment_body_indent(cmt_reflow &cmt, const UncText &str)
+{
+ cmt.xtra_indent = 0;
+
+ log_rule_B("cmt_indent_multi");
+
+ if (!options::cmt_indent_multi())
+ {
+ return;
+ }
+ size_t idx = 0;
+ size_t len = str.size();
+ size_t last_len = 0;
+
+ log_rule_B("cmt_multi_check_last");
+
+ if (options::cmt_multi_check_last())
+ {
+ // find the last line length
+ for (idx = len - 1; idx > 0; idx--)
+ {
+ if ( str[idx] == '\n'
+ || str[idx] == '\r')
+ {
+ idx++;
+
+ while ( idx < len
+ && ( str[idx] == ' '
+ || str[idx] == '\t'))
+ {
+ idx++;
+ }
+ last_len = len - idx;
+ break;
+ }
+ }
+ }
+ // find the first line length
+ size_t first_len = 0;
+
+ for (idx = 0; idx < len; idx++)
+ {
+ if ( str[idx] == '\n'
+ || str[idx] == '\r')
+ {
+ first_len = idx;
+
+ while ( str[first_len - 1] == ' '
+ || str[first_len - 1] == '\t')
+ {
+ if (first_len == 0)
+ {
+ fprintf(stderr, "%s(%d): first_len is ZERO, cannot be decremented.\n",
+ __func__, __LINE__);
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ first_len--;
+ }
+
+ // handle DOS endings
+ if ( str[idx] == '\r'
+ && str[idx + 1] == '\n')
+ {
+ idx++;
+ }
+ idx++;
+ break;
+ }
+ }
+
+ // Scan the second line
+ size_t width = 0;
+
+ for ( ; idx < len - 1; idx++)
+ {
+ if ( str[idx] == ' '
+ || str[idx] == '\t')
+ {
+ if (width > 0)
+ {
+ break;
+ }
+ continue;
+ }
+
+ if ( str[idx] == '\n'
+ || str[idx] == '\r')
+ {
+ break; // Done with second line
+ }
+
+ // Count the leading chars
+ if ( str[idx] == '*'
+ || str[idx] == '|'
+ || str[idx] == '\\'
+ || str[idx] == '#'
+ || str[idx] == '+')
+ {
+ width++;
+ }
+ else
+ {
+ if ( width != 1
+ || str[idx - 1] != '*')
+ {
+ width = 0;
+ }
+ break;
+ }
+ }
+
+ // LOG_FMT(LSYS, "%s: first=%d last=%d width=%d\n", __func__, first_len, last_len, width);
+
+ /*
+ * If the first and last line are the same length and don't contain any
+ * alphanumeric chars and (the first line len > cmt_multi_first_len_minimum
+ * or the second leader is the same as the first line length), then the
+ * indent is 0.
+ */
+ log_rule_B("cmt_multi_first_len_minimum");
+
+ if ( first_len == last_len
+ && ( first_len > options::cmt_multi_first_len_minimum()
+ || first_len == width))
+ {
+ return;
+ }
+ cmt.xtra_indent = (width == 2) ? 0 : 1;
+} // calculate_comment_body_indent
+
+
+// TODO: can we use search_next_chunk here?
+static Chunk *get_next_function(Chunk *pc)
+{
+ while ((pc = pc->GetNext())->IsNotNullChunk())
+ {
+ if ( pc->Is(CT_FUNC_DEF)
+ || pc->Is(CT_FUNC_PROTO)
+ || pc->Is(CT_FUNC_CLASS_DEF)
+ || pc->Is(CT_FUNC_CLASS_PROTO)
+ || pc->Is(CT_OC_MSG_DECL))
+ {
+ return(pc);
+ }
+ }
+ return(Chunk::NullChunkPtr);
+}
+
+
+static Chunk *get_next_class(Chunk *pc)
+{
+ return(pc->GetNextType(CT_CLASS)->GetNext());
+}
+
+
+static Chunk *get_prev_category(Chunk *pc)
+{
+ return(pc->GetPrevType(CT_OC_CATEGORY));
+}
+
+
+static Chunk *get_next_scope(Chunk *pc)
+{
+ return(pc->GetNextType(CT_OC_SCOPE));
+}
+
+
+static Chunk *get_prev_oc_class(Chunk *pc)
+{
+ return(pc->GetPrevType(CT_OC_CLASS));
+}
+
+
+static int next_up(const UncText &text, size_t idx, const UncText &tag)
+{
+ size_t offs = 0;
+
+ while ( idx < text.size()
+ && unc_isspace(text[idx]))
+ {
+ idx++;
+ offs++;
+ }
+
+ if (text.startswith(tag, idx))
+ {
+ return(offs);
+ }
+ return(-1);
+}
+
+
+static void add_comment_text(const UncText &text,
+ cmt_reflow &cmt,
+ bool esc_close,
+ size_t continuation_indent)
+{
+ bool was_star = false;
+ bool was_slash = false;
+ bool in_word = false;
+ size_t len = text.size();
+ size_t ch_cnt = 0; // chars since newline
+
+ // If the '//' is included write it first else we may wrap an empty line
+ size_t idx = 0;
+
+ if (text.startswith("//"))
+ {
+ add_text("//");
+ idx += 2;
+
+ while (unc_isspace(text[idx]))
+ {
+ add_char(text[idx++]);
+ }
+ }
+
+ for ( ; idx < len; idx++) // TODO: avoid modifying idx in loop
+ {
+ // Split the comment
+ if (text[idx] == '\n')
+ {
+ in_word = false;
+ add_char('\n');
+ cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
+
+ if (cmt.xtra_indent > 0)
+ {
+ add_char(' ');
+ }
+ // hack to get escaped newlines to align and not duplicate the leading '//'
+ int tmp = next_up(text, idx + 1, "//");
+
+ if (tmp < 0)
+ {
+ add_text(cmt.cont_text);
+ }
+ else
+ {
+ idx += tmp;
+ }
+ ch_cnt = 0;
+ }
+ else if ( cmt.reflow
+ && text[idx] == ' '
+ && options::cmt_width() > 0
+ && ( cpd.column > options::cmt_width()
+ || ( ch_cnt > 1
+ && next_word_exceeds_limit(text, idx))))
+ {
+ log_rule_B("cmt_width");
+ in_word = false;
+ add_char('\n');
+ cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
+
+ if (cmt.xtra_indent > 0)
+ {
+ add_char(' ');
+ }
+ // The number of spaces to insert after the star on subsequent comment lines.
+ log_rule_B("cmt_sp_after_star_cont");
+
+ /**
+ * calculate the output column
+ */
+ size_t column = options::cmt_sp_after_star_cont();
+
+ if ( text[idx + 1] == 42 // this is star *
+ && text[idx + 2] == 47) // this is /
+ {
+ LOG_FMT(LCONTTEXT, "%s(%d): we have a comment end\n",
+ __func__, __LINE__);
+
+ column += cmt.column;
+ }
+ else
+ {
+ add_text(cmt.cont_text);
+
+ if (continuation_indent > 0)
+ {
+ if (options::cmt_align_doxygen_javadoc_tags())
+ {
+ log_rule_B("cmt_align_doxygen_javadoc_tags");
+ }
+ else if (options::cmt_reflow_indent_to_paragraph_start())
+ {
+ log_rule_B("cmt_reflow_indent_to_paragraph_start");
+ }
+ column += continuation_indent;
+
+ log_rule_B("cmt_sp_after_star_cont");
+
+ if (column >= options::cmt_sp_after_star_cont())
+ {
+ column -= options::cmt_sp_after_star_cont();
+ }
+ }
+ /**
+ * count the number trailing spaces in the comment continuation text
+ */
+ size_t num_trailing_sp = 0;
+
+ while ( num_trailing_sp < cmt.cont_text.size()
+ && unc_isspace(cmt.cont_text[cmt.cont_text.size() - 1 - num_trailing_sp]))
+ {
+ ++num_trailing_sp;
+ }
+ column += cpd.column;
+
+ if (column >= num_trailing_sp)
+ {
+ column -= num_trailing_sp;
+ }
+ }
+ output_to_column(column,
+ false);
+ ch_cnt = 0;
+ }
+ else
+ {
+ // Escape a C closure in a CPP comment
+ if ( esc_close
+ && ( ( was_star
+ && text[idx] == '/')
+ || ( was_slash
+ && text[idx] == '*')))
+ {
+ add_char(' ');
+ }
+
+ if ( !in_word
+ && !unc_isspace(text[idx]))
+ {
+ cmt.word_count++;
+ }
+ in_word = !unc_isspace(text[idx]);
+
+ add_char(text[idx]);
+ was_star = (text[idx] == '*');
+ was_slash = (text[idx] == '/');
+ ch_cnt++;
+ }
+ }
+} // add_comment_text
+
+
+static void output_cmt_start(cmt_reflow &cmt, Chunk *pc)
+{
+ cmt.pc = pc;
+ cmt.column = pc->GetColumn();
+ cmt.brace_col = pc->GetColumnIndent();
+ cmt.base_col = pc->GetColumnIndent();
+ cmt.word_count = 0;
+ cmt.xtra_indent = 0;
+ cmt.cont_text.clear();
+ cmt.reflow = false;
+
+ // Issue #2752
+ log_rule_B("cmt_insert_file_header");
+ log_rule_B("cmt_insert_file_footer");
+ log_rule_B("cmt_insert_func_header");
+ log_rule_B("cmt_insert_class_header");
+ log_rule_B("cmt_insert_oc_msg_header");
+
+ if ( options::cmt_insert_file_header().size() > 0
+ || options::cmt_insert_file_footer().size() > 0
+ || options::cmt_insert_func_header().size() > 0
+ || options::cmt_insert_class_header().size() > 0
+ || options::cmt_insert_oc_msg_header().size() > 0)
+ {
+ LOG_FMT(LCONTTEXT, "%s(%d): cmt_insert_file\n", __func__, __LINE__);
+ do_kw_subst(pc);
+ }
+ else
+ {
+ LOG_FMT(LCONTTEXT, "%s(%d): no cmt_insert_file\n", __func__, __LINE__);
+ }
+
+ if (cmt.brace_col == 0)
+ {
+ log_rule_B("output_tab_size");
+ cmt.brace_col = 1 + (pc->GetBraceLevel() * options::output_tab_size());
+ }
+ // LOG_FMT(LSYS, "%s: line %zd, brace=%zd base=%zd col=%zd orig=%zd aligned=%x\n",
+ // __func__, pc->GetOrigLine(), cmt.brace_col, cmt.base_col, cmt.column, pc->GetOrigCol(),
+ // pc->GetFlags() & (PCF_WAS_ALIGNED | PCF_RIGHT_COMMENT));
+
+ if ( pc->GetParentType() == CT_COMMENT_START
+ || pc->GetParentType() == CT_COMMENT_WHOLE)
+ {
+ log_rule_B("indent_col1_comment");
+
+ if ( !options::indent_col1_comment()
+ && pc->GetOrigCol() == 1
+ && !pc->TestFlags(PCF_INSERTED))
+ {
+ cmt.column = 1;
+ cmt.base_col = 1;
+ cmt.brace_col = 1;
+ }
+ }
+ // tab aligning code
+ log_rule_B("indent_cmt_with_tabs");
+
+ if ( options::indent_cmt_with_tabs()
+ && ( pc->GetParentType() == CT_COMMENT_END
+ || pc->GetParentType() == CT_COMMENT_WHOLE))
+ {
+ cmt.column = align_tab_column(cmt.column - 1);
+ // LOG_FMT(LSYS, "%s: line %d, orig:%d new:%d\n",
+ // __func__, pc->GetOrigLine(), pc->GetColumn(), cmt.column);
+ pc->SetColumn(cmt.column);
+ }
+ cmt.base_col = cmt.column;
+
+ // LOG_FMT(LSYS, "%s: -- brace=%d base=%d col=%d\n",
+ // __func__, cmt.brace_col, cmt.base_col, cmt.column);
+
+ // Bump out to the column
+ cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
+} // output_cmt_start
+
+
+static bool can_combine_comment(Chunk *pc, cmt_reflow &cmt)
+{
+ // We can't combine if there is something other than a newline next
+ if (pc->GetParentType() == CT_COMMENT_START)
+ {
+ return(false);
+ }
+
+ // next is a newline for sure, make sure it is a single newline
+ if (pc == nullptr)
+ {
+ pc = Chunk::NullChunkPtr;
+ }
+ Chunk *next = pc->GetNext();
+
+ if ( next->IsNotNullChunk()
+ && next->GetNlCount() == 1)
+ {
+ // Make sure the comment is the same type at the same column
+ next = next->GetNext();
+
+ if ( next->Is(pc->GetType())
+ && ( ( next->GetColumn() == 1
+ && pc->GetColumn() == 1)
+ || ( next->GetColumn() == cmt.base_col
+ && pc->GetColumn() == cmt.base_col)
+ || ( next->GetColumn() > cmt.base_col
+ && pc->GetParentType() == CT_COMMENT_END)))
+ {
+ return(true);
+ }
+ }
+ return(false);
+} // can_combine_comment
+
+
+static Chunk *output_comment_c(Chunk *first)
+{
+ cmt_reflow cmt;
+
+ output_cmt_start(cmt, first);
+ log_rule_B("cmt_reflow_mode");
+ cmt.reflow = (options::cmt_reflow_mode() != 1);
+
+ // See if we can combine this comment with the next comment
+ log_rule_B("cmt_c_group");
+
+ if ( !options::cmt_c_group()
+ || !can_combine_comment(first, cmt))
+ {
+ // Just add the single comment
+ log_rule_B("cmt_star_cont");
+ cmt.cont_text = options::cmt_star_cont() ? " * " : " ";
+ LOG_CONTTEXT();
+
+ bool replace_comment = ( options::cmt_trailing_single_line_c_to_cpp()
+ && first->IsLastChunkOnLine()
+ && first->Str().at(2) != '*');
+
+ if ( replace_comment
+ && first->TestFlags(PCF_IN_PREPROC))
+ {
+ // Do not replace a single line comment if we are inside a #define line
+ if (first->GetPpStart()->GetParentType() == CT_PP_DEFINE)
+ {
+ replace_comment = false;
+ }
+ }
+
+ if (replace_comment)
+ {
+ // Transform the comment to CPP and reuse the same logic (issue #4121)
+ log_rule_B("cmt_trailing_single_line_c_to_cpp");
+
+ UncText tmp(first->GetStr(), 0, first->Len() - 2);
+ tmp.at(1) = '/'; // Change '/*' to '//'
+ cmt_trim_whitespace(tmp, false);
+ first->Str() = tmp;
+
+ output_comment_cpp(first);
+ }
+ else
+ {
+ add_comment_text(first->GetStr(), cmt, false);
+ }
+ return(first);
+ }
+ log_rule_B("cmt_star_cont");
+ cmt.cont_text = options::cmt_star_cont() ? " *" : " ";
+ LOG_CONTTEXT();
+
+ add_text("/*");
+
+ log_rule_B("cmt_c_nl_start");
+
+ if (options::cmt_c_nl_start())
+ {
+ add_comment_text("\n", cmt, false);
+ }
+ Chunk *pc = first;
+ UncText tmp;
+
+ while (can_combine_comment(pc, cmt))
+ {
+ LOG_FMT(LCONTTEXT, "%s(%d): Text() is '%s'\n",
+ __func__, __LINE__, pc->Text());
+ tmp.set(pc->GetStr(), 2, pc->Len() - 4);
+
+ if ( cpd.last_char == '*'
+ && tmp[0] != ' ') // Issue #1908
+ {
+ LOG_FMT(LCONTTEXT, "%s(%d): add_text a " "\n", __func__, __LINE__);
+ add_text(" ");
+ }
+ // In case of reflow, original comment could contain trailing spaces before closing the comment, we don't need them after reflow
+ LOG_FMT(LCONTTEXT, "%s(%d): trim\n", __func__, __LINE__);
+ cmt_trim_whitespace(tmp, false);
+ LOG_FMT(LCONTTEXT, "%s(%d): add_comment_text(tmp is '%s')\n",
+ __func__, __LINE__, tmp.c_str());
+ add_comment_text(tmp, cmt, false);
+ LOG_FMT(LCONTTEXT, "%s(%d): add_comment_text(newline)\n",
+ __func__, __LINE__);
+ add_comment_text("\n", cmt, false);
+ pc = pc->GetNext();
+ pc = pc->GetNext();
+ }
+ tmp.set(pc->GetStr(), 2, pc->Len() - 4);
+
+ if ( cpd.last_char == '*'
+ && tmp[0] == '/')
+ {
+ add_text(" ");
+ }
+ // In case of reflow, original comment could contain trailing spaces before closing the comment, we don't need them after reflow
+ cmt_trim_whitespace(tmp, false);
+ add_comment_text(tmp, cmt, false);
+
+ log_rule_B("cmt_c_nl_end");
+
+ if (options::cmt_c_nl_end())
+ {
+ cmt.cont_text = " ";
+ LOG_CONTTEXT();
+ add_comment_text("\n", cmt, false);
+ }
+ add_comment_text("*/", cmt, false);
+ return(pc);
+} // output_comment_c
+
+
+static Chunk *output_comment_cpp(Chunk *first)
+{
+ cmt_reflow cmt;
+
+ output_cmt_start(cmt, first);
+ log_rule_B("cmt_reflow_mode");
+ cmt.reflow = (options::cmt_reflow_mode() != 1);
+
+ UncText leadin = "//"; // default setting to keep previous behaviour
+
+ // If true, space is added with sp_cmt_cpp_start will be added after doxygen
+ // sequences like '///', '///<', '//!' and '//!<'.
+ log_rule_B("sp_cmt_cpp_doxygen");
+
+ if (options::sp_cmt_cpp_doxygen()) // special treatment for doxygen style comments (treat as unity)
+ {
+ const char *sComment = first->Text();
+ bool grouping = (sComment[2] == '@');
+ size_t brace = 3;
+
+ if ( sComment[2] == '/'
+ || sComment[2] == '!') // doxygen style found!
+ {
+ leadin += sComment[2]; // at least one additional char (either "///" or "//!")
+
+ if (sComment[3] == '<') // and a further one (either "///<" or "//!<")
+ {
+ leadin += '<';
+ }
+ else
+ {
+ grouping = (sComment[3] == '@'); // or a further one (grouping)
+ brace = 4;
+ }
+ }
+
+ if ( grouping
+ && ( sComment[brace] == '{'
+ || sComment[brace] == '}'))
+ {
+ leadin += '@';
+ leadin += sComment[brace];
+ }
+ }
+ // Special treatment for Qt translator or meta-data comments (treat as unity)
+ // If true, space is added with sp_cmt_cpp_start will be added after Qt
+ // translator or meta-data comments like '//:', '//=', and '//~'.
+ log_rule_B("sp_cmt_cpp_qttr");
+
+ if (options::sp_cmt_cpp_qttr())
+ {
+ const int c = first->GetStr()[2];
+
+ if ( c == ':'
+ || c == '='
+ || c == '~')
+ {
+ leadin += c;
+ }
+ }
+ // CPP comments can't be grouped unless they are converted to C comments
+ log_rule_B("cmt_cpp_to_c");
+
+ if (!options::cmt_cpp_to_c())
+ {
+ auto const *cmt_text = first->GetStr().c_str() + 2;
+ // Add or remove space after the opening of a C++ comment,
+ // i.e. '// A' vs. '//A'.
+ auto *sp_cmt = &options::sp_cmt_cpp_start;
+
+ cmt.cont_text = leadin;
+
+ // Get start of comment text
+ while ( *cmt_text != '\0'
+ && unc_isspace(*cmt_text))
+ {
+ ++cmt_text;
+ }
+
+ // Determine if we are dealing with a region marker
+ if ( ( first->GetPrev()->IsNullChunk()
+ || first->GetPrev()->GetOrigLine() != first->GetOrigLine())
+ && ( strncmp(cmt_text, "BEGIN", 5) == 0
+ || strncmp(cmt_text, "END", 3) == 0))
+ {
+ // If sp_cmt_cpp_region is not ignore, use that instead of
+ // sp_cmt_cpp_start
+ if (options::sp_cmt_cpp_region() != IARF_IGNORE)
+ {
+ sp_cmt = &options::sp_cmt_cpp_region;
+ }
+ }
+ // Add or remove space after the opening of a C++ comment,
+ // i.e. '// A' vs. '//A'.
+ log_rule_B(sp_cmt->name());
+
+ if ((*sp_cmt)() != IARF_REMOVE)
+ {
+ cmt.cont_text += ' ';
+ }
+ LOG_CONTTEXT();
+
+ // Add or remove space after the opening of a C++ comment,
+ // i.e. '// A' vs. '//A'.
+ log_rule_B(sp_cmt->name());
+
+ if ((*sp_cmt)() == IARF_IGNORE)
+ {
+ add_comment_text(first->GetStr(), cmt, false);
+ }
+ else
+ {
+ size_t iLISz = leadin.size();
+ UncText tmp(first->GetStr(), 0, iLISz);
+ add_comment_text(tmp, cmt, false);
+
+ tmp.set(first->GetStr(), iLISz, first->Len() - iLISz);
+
+ // Add or remove space after the opening of a C++ comment,
+ // i.e. '// A' vs. '//A'.
+ log_rule_B("sp_cmt_cpp_start");
+
+ if ((*sp_cmt)() & IARF_REMOVE)
+ {
+ while ( (tmp.size() > 0)
+ && unc_isspace(tmp[0]))
+ {
+ tmp.pop_front();
+ }
+ }
+
+ if (tmp.size() > 0)
+ {
+ // Add or remove space after the opening of a C++ comment,
+ // i.e. '// A' vs. '//A'.
+ log_rule_B("sp_cmt_cpp_start");
+
+ if ((*sp_cmt)() & IARF_ADD)
+ {
+ if ( !unc_isspace(tmp[0])
+ && (tmp[0] != '/'))
+ {
+ // only with sp_cmt_cpp_start set to 'add' or 'force'
+ bool sp_cmt_pvs = options::sp_cmt_cpp_pvs(); // Issue #3919
+ bool sp_cmt_lint = options::sp_cmt_cpp_lint(); // Issue #3614
+ UncText temp = first->GetStr();
+ int PVS = temp.find("//-V");
+ int LINT = temp.find("//lint");
+
+ // @return == -1 if not found
+ // @return >= 0 the position
+ if ( ( PVS == 0
+ && sp_cmt_pvs)
+ || ( LINT == 0
+ && sp_cmt_lint))
+ {
+ // do not include a space
+ }
+ else
+ {
+ add_comment_text(" ", cmt, false);
+ }
+ }
+ }
+ add_comment_text(tmp, cmt, false);
+ }
+ }
+ return(first);
+ }
+ // We are going to convert the CPP comments to C comments
+ log_rule_B("cmt_star_cont");
+ cmt.cont_text = options::cmt_star_cont() ? " * " : " ";
+ LOG_CONTTEXT();
+
+ UncText tmp;
+
+ // See if we can combine this comment with the next comment
+ log_rule_B("cmt_cpp_group");
+
+ if ( !options::cmt_cpp_group()
+ || !can_combine_comment(first, cmt))
+ {
+ // nothing to group: just output a single line
+ add_text("/*");
+
+ // patch # 32, 2012-03-23
+ // Add or remove space after the opening of a C++ comment,
+ // i.e. '// A' vs. '//A'.
+ log_rule_B("sp_cmt_cpp_start");
+
+ if ( !unc_isspace(first->GetStr()[2])
+ && (options::sp_cmt_cpp_start() & IARF_ADD))
+ {
+ add_char(' ');
+ }
+ tmp.set(first->GetStr(), 2, first->Len() - 2);
+ add_comment_text(tmp, cmt, true);
+ add_text(" */");
+ return(first);
+ }
+ add_text("/*");
+
+ log_rule_B("cmt_cpp_nl_start");
+
+ if (options::cmt_cpp_nl_start())
+ {
+ add_comment_text("\n", cmt, false);
+ }
+ else
+ {
+ add_text(" ");
+ }
+ Chunk *pc = first;
+ int offs;
+
+ while (can_combine_comment(pc, cmt))
+ {
+ offs = unc_isspace(pc->GetStr()[2]) ? 1 : 0;
+ tmp.set(pc->GetStr(), 2 + offs, pc->Len() - (2 + offs));
+
+ if ( cpd.last_char == '*'
+ && tmp[0] == '/')
+ {
+ add_text(" ");
+ }
+ add_comment_text(tmp, cmt, true);
+ add_comment_text("\n", cmt, false);
+ pc = pc->GetNext()->GetNext();
+ }
+ offs = unc_isspace(pc->GetStr()[2]) ? 1 : 0;
+ tmp.set(pc->GetStr(), 2 + offs, pc->Len() - (2 + offs));
+ add_comment_text(tmp, cmt, true);
+
+ log_rule_B("cmt_cpp_nl_end");
+
+ if (options::cmt_cpp_nl_end())
+ {
+ cmt.cont_text = "";
+ LOG_CONTTEXT();
+ add_comment_text("\n", cmt, false);
+ }
+ add_comment_text(" */", cmt, false);
+ return(pc);
+} // output_comment_cpp
+
+
+static void cmt_trim_whitespace(UncText &line, bool in_preproc)
+{
+ // Remove trailing whitespace on the line
+ while ( line.size() > 0
+ && ( line.back() == ' '
+ || line.back() == '\t'))
+ {
+ line.pop_back();
+ }
+
+ // Shift back to the comment text, ...
+ if ( in_preproc // if in a preproc ...
+ && line.size() > 1 // with a line that holds ...
+ && line.back() == '\\') // a backslash-newline ...
+ {
+ bool do_space = false;
+
+ // If there was any space before the backslash, change it to 1 space
+ line.pop_back();
+
+ while ( line.size() > 0
+ && ( line.back() == ' '
+ || line.back() == '\t'))
+ {
+ do_space = true;
+ line.pop_back();
+ }
+
+ if (do_space)
+ {
+ line.append(' ');
+ }
+ line.append('\\');
+ }
+} // cmt_trim_whitespace
+
+
+/**
+ * Return an indexed-map of reflow fold end of line/beginning of line regex pairs read
+ * from file
+ */
+static std::map<std::size_t, std::pair<std::wregex, std::wregex> > get_reflow_fold_regex_map()
+{
+ /**
+ * TODO: should the following be static to prevent initializing it multiple times?
+ */
+ static std::map<std::size_t, std::pair<std::wregex, std::wregex> > regex_map;
+
+ if (regex_map.empty())
+ {
+ if (!options::cmt_reflow_fold_regex_file().empty())
+ {
+ std::wstring raw_wstring(cpd.reflow_fold_regex.raw.begin(),
+ cpd.reflow_fold_regex.raw.end());
+
+ std::wregex criteria(L"\\s*(?:(?:(beg_of_next)|(end_of_prev))_line_regex)"
+ "\\s*\\[\\s*([0-9]+)\\s*\\]\\s*=\\s*\"(.*)\"\\s*"
+ "(?=\\r\\n|\\r|\\n|$)");
+ std::wsregex_iterator it_regex(raw_wstring.cbegin(), raw_wstring.cend(), criteria);
+ std::wsregex_iterator it_regex_end = std::wsregex_iterator();
+
+ while (it_regex != it_regex_end)
+ {
+ std::wsmatch match = *it_regex;
+
+ if ( (( match[1].matched
+ || match[2].matched))
+ && match[3].matched
+ && match[4].matched)
+ {
+ auto &&index = std::stoi(match[3].str());
+ std::wregex *p_wregex = match[1].matched ? &regex_map[index].second
+ : &regex_map[index].first;
+ *p_wregex = match[4].str();
+ }
+ ++it_regex;
+ }
+ }
+ else
+ {
+ regex_map.emplace(0L, std::make_pair((std::wregex)L"[\\w,\\]\\)]$", (std::wregex)L"^[\\w,\\[\\(]"));
+ regex_map.emplace(1L, std::make_pair((std::wregex)L"\\.$", (std::wregex)L"^[A-Z]"));
+ }
+ }
+ return(regex_map);
+} // get_reflow_fold_regex_map
+
+
+static void output_comment_multi(Chunk *pc)
+{
+ if (pc == nullptr)
+ {
+ return;
+ }
+ cmt_reflow cmt;
+
+ char copy[1000];
+
+ LOG_FMT(LCONTTEXT, "%s(%d): Text() is '%s', type is %s, orig col is %zu, column is %zu\n",
+ __func__, __LINE__, pc->ElidedText(copy), get_token_name(pc->GetType()), pc->GetOrigCol(), pc->GetColumn());
+
+ output_cmt_start(cmt, pc);
+ log_rule_B("cmt_reflow_mode");
+ cmt.reflow = (options::cmt_reflow_mode() != 1);
+
+ size_t cmt_col = cmt.base_col;
+ int col_diff = pc->GetOrigCol() - cmt.base_col;
+
+ calculate_comment_body_indent(cmt, pc->GetStr());
+
+ log_rule_B("cmt_indent_multi");
+ log_rule_B("cmt_star_cont");
+ cmt.cont_text = !options::cmt_indent_multi() ? "" :
+ (options::cmt_star_cont() ? "* " : " ");
+ LOG_CONTTEXT();
+
+ std::wstring pc_wstring(pc->GetStr().get().cbegin(),
+ pc->GetStr().get().cend());
+
+ size_t doxygen_javadoc_param_name_indent = 0;
+ size_t doxygen_javadoc_continuation_indent = 0;
+ size_t reflow_paragraph_continuation_indent = 0;
+
+ calculate_doxygen_javadoc_indent_alignment(pc_wstring,
+ doxygen_javadoc_param_name_indent,
+ doxygen_javadoc_continuation_indent);
+
+ size_t line_count = 0;
+ size_t ccol = pc->GetColumn(); // the col of subsequent comment lines
+ size_t cmt_idx = 0;
+ bool nl_end = false;
+ bool doxygen_javadoc_indent_align = false;
+ UncText line;
+
+ /*
+ * Get a map of regex pairs that define expressions to match at both the end
+ * of the previous line and the beginning of the next line
+ */
+ auto &&cmt_reflow_regex_map = get_reflow_fold_regex_map();
+
+ line.clear();
+ LOG_FMT(LCONTTEXT, "%s(%d): pc->Len() is %zu\n",
+ __func__, __LINE__, pc->Len());
+ //LOG_FMT(LCONTTEXT, "%s(%d): pc->str is %s\n",
+ // __func__, __LINE__, pc->str.c_str());
+
+ /**
+ * check for enable/disable processing comment strings that may
+ * both be embedded within the same multi-line comment
+ */
+ auto disable_processing_cmt_idx = find_disable_processing_comment_marker(pc->GetStr());
+ auto enable_processing_cmt_idx = find_enable_processing_comment_marker(pc->GetStr());
+
+ while (cmt_idx < pc->Len())
+ {
+ int ch = pc->GetStr()[cmt_idx];
+ cmt_idx++;
+
+ if ( cmt_idx > std::size_t(disable_processing_cmt_idx)
+ && enable_processing_cmt_idx > disable_processing_cmt_idx)
+ {
+ auto length = enable_processing_cmt_idx - disable_processing_cmt_idx;
+ UncText verbatim_text(pc->GetStr(),
+ disable_processing_cmt_idx,
+ length);
+
+ add_text(verbatim_text);
+
+ cmt_idx = enable_processing_cmt_idx;
+
+ /**
+ * check for additional enable/disable processing comment strings that may
+ * both be embedded within the same multi-line comment
+ */
+ disable_processing_cmt_idx = find_disable_processing_comment_marker(pc->GetStr(),
+ enable_processing_cmt_idx);
+ enable_processing_cmt_idx = find_enable_processing_comment_marker(pc->GetStr(),
+ enable_processing_cmt_idx);
+
+ /**
+ * it's probably necessary to reset the line count to prevent line
+ * continuation characters from being added to the end of the current line
+ */
+ line_count = 0;
+ }
+
+ // handle the CRLF and CR endings. convert both to LF
+ if (ch == '\r')
+ {
+ ch = '\n';
+
+ if ( cmt_idx < pc->Len()
+ && pc->GetStr()[cmt_idx] == '\n')
+ {
+ cmt_idx++;
+ }
+ }
+
+ // Find the start column
+ if (line.size() == 0)
+ {
+ nl_end = false;
+
+ if (ch == ' ')
+ {
+ ccol++;
+ continue;
+ }
+ else if (ch == '\t')
+ {
+ log_rule_B("input_tab_size");
+ ccol = calc_next_tab_column(ccol, options::input_tab_size());
+ continue;
+ }
+ else
+ {
+ LOG_FMT(LCONTTEXT, "%s(%d):ch is %d, %c\n", __func__, __LINE__, ch, char(ch));
+ }
+ }
+
+ if ( ch == '@'
+ && options::cmt_align_doxygen_javadoc_tags())
+ {
+ int start_idx = cmt_idx - 1;
+ int end_idx = match_doxygen_javadoc_tag(pc_wstring, start_idx);
+
+ if (end_idx > start_idx)
+ {
+ doxygen_javadoc_indent_align = true;
+
+ std::string match(pc->GetStr().get().cbegin() + start_idx,
+ pc->GetStr().get().cbegin() + end_idx);
+
+ match.erase(std::remove_if(match.begin(),
+ match.end(),
+ ::isspace),
+ match.end());
+
+ /**
+ * remove whitespace before the '@'
+ */
+ int line_size_before_indent = line.size();
+
+ while ( line_size_before_indent > 0
+ && unc_isspace(line.back()))
+ {
+ line.pop_back();
+ --line_size_before_indent;
+ }
+ log_rule_B("cmt_sp_before_doxygen_javadoc_tags");
+
+ int indent = options::cmt_sp_before_doxygen_javadoc_tags();
+
+ while (indent-- > 0)
+ {
+ line.append(' ');
+ }
+ cmt_idx += (end_idx - start_idx);
+ line.append(match.c_str());
+
+ bool is_exception_tag = match.find("@exception") != std::string::npos;
+ bool is_param_tag = match.find("@param") != std::string::npos;
+ bool is_throws_tag = match.find("@throws") != std::string::npos;
+
+ if ( is_exception_tag
+ || is_param_tag
+ || is_throws_tag)
+ {
+ indent = int(doxygen_javadoc_param_name_indent) - int(line.size());
+
+ while (indent-- > -line_size_before_indent)
+ {
+ line.append(' ');
+ }
+
+ while (true)
+ {
+ cmt_idx = eat_line_whitespace(pc->GetStr(),
+ cmt_idx);
+
+ while ( cmt_idx < pc->Len()
+ && !unc_isspace(pc->GetStr()[cmt_idx])
+ && pc->GetStr()[cmt_idx] != ',')
+ {
+ line.append(pc->Str()[cmt_idx++]);
+ }
+
+ if (!is_param_tag)
+ {
+ break;
+ }
+ /**
+ * check for the possibility that comma-separated parameter names are present
+ */
+ cmt_idx = eat_line_whitespace(pc->GetStr(),
+ cmt_idx);
+
+ if (pc->GetStr()[cmt_idx] != ',')
+ {
+ break;
+ }
+ ++cmt_idx;
+ line.append(", ");
+ }
+ }
+ cmt_idx = eat_line_whitespace(pc->GetStr(),
+ cmt_idx);
+ indent = int(doxygen_javadoc_continuation_indent) - int(line.size());
+
+ while (indent-- > -line_size_before_indent)
+ {
+ line.append(' ');
+ }
+
+ while ( cmt_idx < pc->Len()
+ && !unc_isspace(pc->GetStr()[cmt_idx]))
+ {
+ line.append(pc->Str()[cmt_idx++]);
+ }
+ continue;
+ }
+ }
+ /*
+ * Now see if we need/must fold the next line with the current to enable
+ * full reflow
+ */
+ log_rule_B("cmt_reflow_mode");
+
+ if ( options::cmt_reflow_mode() == 2
+ && ch == '\n'
+ && cmt_idx < pc->Len())
+ {
+ int next_nonempty_line = -1;
+ int prev_nonempty_line = -1;
+ size_t nwidx = line.size();
+
+ // strip trailing whitespace from the line collected so far
+ while (nwidx > 0)
+ {
+ nwidx--;
+
+ if ( prev_nonempty_line < 0
+ && !unc_isspace(line[nwidx])
+ && line[nwidx] != '*' // block comment: skip '*' at end of line
+ && (pc->TestFlags(PCF_IN_PREPROC)
+ ? ( line[nwidx] != '\\'
+ || ( line[nwidx + 1] != '\r'
+ && line[nwidx + 1] != '\n'))
+ : true))
+ {
+ prev_nonempty_line = nwidx; // last non-whitespace char in the previous line
+ }
+ }
+
+ for (size_t nxt_idx = cmt_idx;
+ ( nxt_idx < pc->Len()
+ && pc->GetStr()[nxt_idx] != '\r'
+ && pc->GetStr()[nxt_idx] != '\n');
+ nxt_idx++)
+ {
+ if ( next_nonempty_line < 0
+ && !unc_isspace(pc->GetStr()[nxt_idx])
+ && pc->GetStr()[nxt_idx] != '*'
+ && (pc->TestFlags(PCF_IN_PREPROC)
+ ? ( pc->GetStr()[nxt_idx] != '\\'
+ || ( pc->GetStr()[nxt_idx + 1] != '\r'
+ && pc->GetStr()[nxt_idx + 1] != '\n'))
+ : true))
+ {
+ next_nonempty_line = nxt_idx; // first non-whitespace char in the next line
+ }
+ }
+
+ if ( options::cmt_reflow_indent_to_paragraph_start()
+ && next_nonempty_line >= 0
+ && ( prev_nonempty_line <= 0
+ || doxygen_javadoc_indent_align))
+ {
+ log_rule_B("cmt_reflow_indent_to_paragraph_start");
+
+ int cmt_star_indent = 0;
+
+ while ( next_nonempty_line > cmt_star_indent
+ && pc->GetStr()[next_nonempty_line - cmt_star_indent - 1] != '*')
+ {
+ ++cmt_star_indent;
+ }
+ reflow_paragraph_continuation_indent = size_t(cmt_star_indent);
+ }
+
+ /*
+ * see if we should fold up; usually that'd be a YES, but there are a few
+ * situations where folding/reflowing by merging lines is frowned upon:
+ *
+ * - ASCII art in the comments (most often, these are drawings done in +-\/|.,*)
+ *
+ * - Doxygen/JavaDoc/etc. parameters: these often start with \ or @, at least
+ * something clearly non-alphanumeric (you see where we're going with this?)
+ *
+ * - bullet lists that are closely spaced: bullets are always non-alphanumeric
+ * characters, such as '-' or '+' (or, oh horror, '*' - that's bloody ambiguous
+ * to parse :-( ... with or without '*' comment start prefix, that's the
+ * question, then.)
+ *
+ * - semi-HTML formatted code, e.g. <pre>...</pre> comment sections (NDoc, etc.)
+ *
+ * - New lines which form a new paragraph without there having been added an
+ * extra empty line between the last sentence and the new one.
+ * A bit like this, really; so it is opportune to check if the last line ended
+ * in a terminal (that would be the set '.:;!?') and the new line starts with
+ * a capital.
+ * Though new lines starting with comment delimiters, such as '(', should be
+ * pulled up.
+ *
+ * So it bores down to this: the only folding (& reflowing) that's going to happen
+ * is when the next line starts with an alphanumeric character AND the last
+ * line didn't end with an non-alphanumeric character, except: ',' AND the next
+ * line didn't start with a '*' all of a sudden while the previous one didn't
+ * (the ambiguous '*'-for-bullet case!)
+ */
+ if ( prev_nonempty_line >= 0
+ && next_nonempty_line >= int(cmt_idx))
+ {
+ std::wstring prev_line(line.get().cbegin(),
+ line.get().cend());
+ std::wstring next_line(pc->GetStr().get().cbegin() + next_nonempty_line,
+ pc->GetStr().get().cend());
+
+ for (auto &&cmt_reflow_regex_map_entry : cmt_reflow_regex_map)
+ {
+ auto &&cmt_reflow_regex_pair = cmt_reflow_regex_map_entry.second;
+ auto &&end_of_prev_line_regex = cmt_reflow_regex_pair.first;
+ auto &&beg_of_next_line_regex = cmt_reflow_regex_pair.second;
+ std::wsmatch match[2];
+
+ if ( std::regex_search(prev_line, match[0], end_of_prev_line_regex)
+ && match[0].position(0) + match[0].length(0) == std::wsmatch::difference_type(line.size())
+ && std::regex_search(next_line, match[1], beg_of_next_line_regex)
+ && match[1].position(0) == 0)
+ {
+ // rewind the line to the last non-alpha:
+ line.resize(prev_nonempty_line + 1);
+
+ // roll the current line forward to the first non-alpha:
+ cmt_idx = next_nonempty_line;
+ // override the NL and make it a single whitespace:
+ ch = ' ';
+
+ break;
+ }
+ }
+ }
+ }
+
+ if (ch == '\n')
+ {
+ LOG_FMT(LCONTTEXT, "%s(%d):ch is newline\n", __func__, __LINE__);
+ }
+ else
+ {
+ LOG_FMT(LCONTTEXT, "%s(%d):ch is %d, %c\n", __func__, __LINE__, ch, char(ch));
+ }
+ line.append(ch);
+
+ // If we just hit an end of line OR we just hit end-of-comment...
+ if ( ch == '\n'
+ || cmt_idx == pc->Len())
+ {
+ if (ch == '\n')
+ {
+ LOG_FMT(LCONTTEXT, "%s(%d):ch is newline\n", __func__, __LINE__);
+ }
+ else
+ {
+ LOG_FMT(LCONTTEXT, "%s(%d):ch is %d, %c\n", __func__, __LINE__, ch, char(ch));
+ }
+ line_count++;
+ LOG_FMT(LCONTTEXT, "%s(%d):line_count is %zu\n", __func__, __LINE__, line_count);
+
+ // strip trailing tabs and spaces before the newline
+ if (ch == '\n')
+ {
+ nl_end = true;
+ line.pop_back();
+ cmt_trim_whitespace(line, pc->TestFlags(PCF_IN_PREPROC));
+ }
+
+ if (line_count == 1)
+ {
+ // this is the first line - add unchanged
+ add_comment_text(line, cmt, false);
+
+ if (nl_end)
+ {
+ add_char('\n');
+ }
+ }
+ else
+ {
+ /*
+ * This is not the first line, so we need to indent to the
+ * correct column. Each line is indented 0 or more spaces.
+ */
+ // Ensure ccol is not negative
+ if (static_cast<int>(ccol) >= col_diff)
+ {
+ ccol -= col_diff;
+ }
+
+ if (ccol < (cmt_col + 3))
+ {
+ ccol = cmt_col + 3;
+ }
+
+ if (line.size() == 0)
+ {
+ // Empty line - just a '\n'
+ log_rule_B("cmt_star_cont");
+
+ if (options::cmt_star_cont())
+ {
+ // The number of spaces to insert at the start of subsequent comment lines.
+ log_rule_B("cmt_sp_before_star_cont");
+ cmt.column = cmt_col + options::cmt_sp_before_star_cont();
+ cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
+
+ if (cmt.xtra_indent > 0)
+ {
+ add_char(' ');
+ }
+ // multiline comments can have empty lines with some spaces in them for alignment
+ // while adding * symbol and aligning them we don't want to keep these trailing spaces
+ UncText tmp = UncText(cmt.cont_text);
+ cmt_trim_whitespace(tmp, false);
+ add_text(tmp);
+ }
+ add_char('\n');
+ }
+ else
+ {
+ /*
+ * If this doesn't start with a '*' or '|'.
+ * '\name' is a common parameter documentation thing.
+ */
+ log_rule_B("cmt_indent_multi");
+
+ if ( options::cmt_indent_multi()
+ && line[0] != '*'
+ && line[0] != '|'
+ && line[0] != '#'
+ && ( line[0] != '\\'
+ || unc_isalpha(line[1]))
+ && line[0] != '+')
+ {
+ // The number of spaces to insert at the start of subsequent comment lines.
+ log_rule_B("cmt_sp_before_star_cont");
+ size_t start_col = cmt_col + options::cmt_sp_before_star_cont();
+
+ log_rule_B("cmt_star_cont");
+
+ if (options::cmt_star_cont())
+ {
+ cmt.column = start_col;
+ cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
+
+ if (cmt.xtra_indent > 0)
+ {
+ add_char(' ');
+ }
+ add_text(cmt.cont_text);
+ // The number of spaces to insert after the star on subsequent comment lines.
+ log_rule_B("cmt_sp_after_star_cont");
+ output_to_column(ccol + options::cmt_sp_after_star_cont(), false);
+ }
+ else
+ {
+ cmt.column = ccol;
+ cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
+ }
+ }
+ else
+ {
+ // The number of spaces to insert at the start of subsequent comment lines.
+ log_rule_B("cmt_sp_before_star_cont");
+ cmt.column = cmt_col + options::cmt_sp_before_star_cont();
+ cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
+
+ if (cmt.xtra_indent > 0)
+ {
+ add_char(' ');
+ }
+ size_t idx;
+
+ // Checks for and updates the lead chars.
+ // @return 0=not present, >0=number of chars that are part of the lead
+ idx = cmt_parse_lead(line, (cmt_idx == pc->Len()));
+
+ if (idx > 0)
+ {
+ // >0=number of chars that are part of the lead
+ cmt.cont_text.set(line, 0, idx);
+ LOG_CONTTEXT();
+
+ if ( (line.size() >= 2)
+ && (line[0] == '*')
+ && unc_isalnum(line[1]))
+ {
+ line.insert(1, ' ');
+ }
+ }
+ else
+ {
+ // bug #653
+ if (language_is_set(LANG_D))
+ {
+ // 0=no lead char present
+ add_text(cmt.cont_text);
+ }
+ }
+ }
+ size_t continuation_indent = 0;
+
+ if (doxygen_javadoc_indent_align)
+ {
+ continuation_indent = doxygen_javadoc_continuation_indent;
+ }
+ else if (reflow_paragraph_continuation_indent > 0)
+ {
+ continuation_indent = reflow_paragraph_continuation_indent;
+ }
+ add_comment_text(line,
+ cmt,
+ false,
+ continuation_indent);
+
+ if (nl_end)
+ {
+ add_text("\n");
+ }
+ }
+ }
+ line.clear();
+ doxygen_javadoc_indent_align = false;
+ ccol = 1;
+ }
+ }
+} // output_comment_multi
+
+
+static bool kw_fcn_filename(Chunk *cmt, UncText &out_txt)
+{
+ UNUSED(cmt);
+ out_txt.append(path_basename(cpd.filename.c_str()));
+ return(true);
+}
+
+
+static bool kw_fcn_class(Chunk *cmt, UncText &out_txt)
+{
+ Chunk *tmp = Chunk::NullChunkPtr;
+
+ if (language_is_set(LANG_CPP | LANG_OC))
+ {
+ Chunk *fcn = get_next_function(cmt);
+
+ if (fcn->Is(CT_OC_MSG_DECL))
+ {
+ tmp = get_prev_oc_class(cmt);
+ }
+ else
+ {
+ tmp = get_next_class(cmt);
+ }
+ }
+ else if (language_is_set(LANG_OC))
+ {
+ tmp = get_prev_oc_class(cmt);
+ }
+
+ if (tmp->IsNullChunk())
+ {
+ tmp = get_next_class(cmt);
+ }
+
+ if (tmp->IsNotNullChunk())
+ {
+ out_txt.append(tmp->GetStr());
+
+ while ((tmp = tmp->GetNext())->IsNotNullChunk())
+ {
+ if (tmp->IsNot(CT_DC_MEMBER))
+ {
+ break;
+ }
+ tmp = tmp->GetNext();
+
+ if (tmp->IsNotNullChunk())
+ {
+ out_txt.append("::");
+ out_txt.append(tmp->GetStr());
+ }
+ }
+ return(true);
+ }
+ return(false);
+} // kw_fcn_class
+
+
+static bool kw_fcn_message(Chunk *cmt, UncText &out_txt)
+{
+ Chunk *fcn = get_next_function(cmt);
+
+ if (fcn->IsNullChunk())
+ {
+ return(false);
+ }
+ out_txt.append(fcn->GetStr());
+
+ Chunk *tmp = fcn->GetNextNcNnl();
+ Chunk *word = Chunk::NullChunkPtr;
+
+ while (tmp->IsNotNullChunk())
+ {
+ if ( tmp->Is(CT_BRACE_OPEN)
+ || tmp->Is(CT_SEMICOLON))
+ {
+ break;
+ }
+
+ if (tmp->Is(CT_OC_COLON))
+ {
+ if (word->IsNotNullChunk())
+ {
+ out_txt.append(word->GetStr());
+ word = Chunk::NullChunkPtr;
+ }
+ out_txt.append(":");
+ }
+
+ if (tmp->Is(CT_WORD))
+ {
+ word = tmp;
+ }
+ tmp = tmp->GetNextNcNnl();
+ }
+ return(true);
+} // kw_fcn_message
+
+
+static bool kw_fcn_category(Chunk *cmt, UncText &out_txt)
+{
+ Chunk *category = get_prev_category(cmt);
+
+ if (category->IsNotNullChunk())
+ {
+ out_txt.append('(');
+ out_txt.append(category->GetStr());
+ out_txt.append(')');
+ }
+ return(true);
+} // kw_fcn_category
+
+
+static bool kw_fcn_scope(Chunk *cmt, UncText &out_txt)
+{
+ Chunk *scope = get_next_scope(cmt);
+
+ if (scope->IsNotNullChunk())
+ {
+ out_txt.append(scope->GetStr());
+ return(true);
+ }
+ return(false);
+} // kw_fcn_scope
+
+
+static bool kw_fcn_function(Chunk *cmt, UncText &out_txt)
+{
+ Chunk *fcn = get_next_function(cmt);
+
+ if (fcn->IsNotNullChunk())
+ {
+ if (fcn->GetParentType() == CT_OPERATOR)
+ {
+ out_txt.append("operator ");
+ }
+
+ if (fcn->GetPrev()->GetType() == CT_DESTRUCTOR)
+ {
+ out_txt.append('~');
+ }
+ out_txt.append(fcn->GetStr());
+ return(true);
+ }
+ return(false);
+}
+
+
+static bool kw_fcn_javaparam(Chunk *cmt, UncText &out_txt)
+{
+ Chunk *fcn = get_next_function(cmt);
+
+ if (fcn->IsNullChunk())
+ {
+ return(false);
+ }
+ Chunk *fpo;
+ Chunk *fpc;
+ bool has_param = true;
+ bool need_nl = false;
+
+ if (fcn->Is(CT_OC_MSG_DECL))
+ {
+ Chunk *tmp = fcn->GetNextNcNnl();
+ has_param = false;
+
+ while (tmp->IsNotNullChunk())
+ {
+ if ( tmp->Is(CT_BRACE_OPEN)
+ || tmp->Is(CT_SEMICOLON))
+ {
+ break;
+ }
+
+ if (has_param)
+ {
+ if (need_nl)
+ {
+ out_txt.append("\n");
+ }
+ need_nl = true;
+ out_txt.append("@param");
+ out_txt.append(" ");
+ out_txt.append(tmp->GetStr());
+ out_txt.append(" TODO");
+ }
+ has_param = false;
+
+ if (tmp->Is(CT_PAREN_CLOSE))
+ {
+ has_param = true;
+ }
+ tmp = tmp->GetNextNcNnl();
+ }
+ fpo = fpc = Chunk::NullChunkPtr;
+ }
+ else
+ {
+ fpo = fcn->GetNextType(CT_FPAREN_OPEN, fcn->GetLevel());
+
+ if (fpo->IsNullChunk())
+ {
+ return(true);
+ }
+ fpc = fpo->GetNextType(CT_FPAREN_CLOSE, fcn->GetLevel());
+
+ if (fpc->IsNullChunk())
+ {
+ return(true);
+ }
+ }
+ Chunk *tmp;
+
+ // Check for 'foo()' and 'foo(void)'
+ if (fpo->IsNotNullChunk())
+ {
+ if (fpo->GetNextNcNnl() == fpc)
+ {
+ has_param = false;
+ }
+ else
+ {
+ tmp = fpo->GetNextNcNnl();
+
+ if ( (tmp == fpc->GetPrevNcNnl())
+ && tmp->IsString("void"))
+ {
+ has_param = false;
+ }
+ }
+ }
+
+ if (has_param)
+ {
+ Chunk *prev = Chunk::NullChunkPtr;
+ tmp = fpo;
+
+ while ((tmp = tmp->GetNext())->IsNotNullChunk())
+ {
+ if ( tmp->Is(CT_COMMA)
+ || tmp == fpc)
+ {
+ if (need_nl)
+ {
+ out_txt.append("\n");
+ }
+ need_nl = true;
+ out_txt.append("@param");
+
+ if (prev->IsNotNullChunk())
+ {
+ out_txt.append(" ");
+ out_txt.append(prev->GetStr());
+ out_txt.append(" TODO");
+ }
+ prev = Chunk::NullChunkPtr;
+
+ if (tmp == fpc)
+ {
+ break;
+ }
+ }
+
+ if (tmp->Is(CT_WORD))
+ {
+ prev = tmp;
+ }
+ }
+ }
+ // Do the return stuff
+ tmp = fcn->GetPrevNcNnl();
+
+ // For Objective-C we need to go to the previous chunk
+ if ( tmp->IsNotNullChunk()
+ && tmp->GetParentType() == CT_OC_MSG_DECL
+ && tmp->Is(CT_PAREN_CLOSE))
+ {
+ tmp = tmp->GetPrevNcNnl();
+ }
+
+ if ( tmp->IsNotNullChunk()
+ && !tmp->IsString("void"))
+ {
+ if (need_nl)
+ {
+ out_txt.append("\n");
+ }
+ out_txt.append("@return TODO");
+ }
+ return(true);
+} // kw_fcn_javaparam
+
+
+static bool kw_fcn_fclass(Chunk *cmt, UncText &out_txt)
+{
+ Chunk *fcn = get_next_function(cmt);
+
+ if (!fcn)
+ {
+ return(false);
+ }
+
+ if (fcn->TestFlags(PCF_IN_CLASS))
+ {
+ // if inside a class, we need to find to the class name
+ Chunk *tmp = fcn->GetPrevType(CT_BRACE_OPEN, fcn->GetLevel() - 1);
+ tmp = tmp->GetPrevType(CT_CLASS, tmp->GetLevel());
+
+ if (tmp->IsNullChunk())
+ {
+ tmp = Chunk::NullChunkPtr;
+ }
+ else
+ {
+ tmp = tmp->GetNextNcNnl();
+ }
+
+ while ( tmp->IsNotNullChunk()
+ && tmp->GetNextNcNnl()->Is(CT_DC_MEMBER))
+ {
+ tmp = tmp->GetNextNcNnl();
+ tmp = tmp->GetNextNcNnl();
+ }
+
+ if (tmp->IsNotNullChunk())
+ {
+ out_txt.append(tmp->GetStr());
+ return(true);
+ }
+ }
+ else
+ {
+ // if outside a class, we expect "CLASS::METHOD(...)"
+ Chunk *tmp = fcn->GetPrevNcNnl();
+
+ if (tmp->Is(CT_OPERATOR))
+ {
+ tmp = tmp->GetPrevNcNnl();
+ }
+
+ if ( tmp->IsNotNullChunk()
+ && ( tmp->Is(CT_DC_MEMBER)
+ || tmp->Is(CT_MEMBER)))
+ {
+ tmp = tmp->GetPrevNcNnl();
+ out_txt.append(tmp->GetStr());
+ return(true);
+ }
+ }
+ return(false);
+} // kw_fcn_fclass
+
+
+static bool kw_fcn_year(Chunk *cmt, UncText &out_txt)
+{
+ UNUSED(cmt);
+ time_t now = time(nullptr);
+
+ out_txt.append(std::to_string(1900 + localtime(&now)->tm_year));
+ return(true);
+}
+
+
+struct kw_subst_t
+{
+ const char *tag;
+ bool (*func)(Chunk *cmt, UncText &out_txt);
+};
+
+
+static const kw_subst_t kw_subst_table[] =
+{
+ { "$(filename)", kw_fcn_filename },
+ { "$(class)", kw_fcn_class },
+ { "$(message)", kw_fcn_message },
+ { "$(category)", kw_fcn_category },
+ { "$(scope)", kw_fcn_scope },
+ { "$(function)", kw_fcn_function },
+ { "$(javaparam)", kw_fcn_javaparam },
+ { "$(fclass)", kw_fcn_fclass },
+ { "$(year)", kw_fcn_year },
+};
+
+
+static void do_kw_subst(Chunk *pc)
+{
+ for (const auto &kw : kw_subst_table)
+ {
+ int idx = pc->GetStr().find(kw.tag);
+
+ if (idx < 0)
+ {
+ continue;
+ }
+ UncText tmp_txt;
+ tmp_txt.clear();
+
+ if (kw.func(pc, tmp_txt))
+ {
+ // if the replacement contains '\n' we need to fix the lead
+ if (tmp_txt.find("\n") >= 0)
+ {
+ size_t nl_idx = pc->GetStr().rfind("\n", idx);
+
+ if (nl_idx > 0)
+ {
+ // idx and nl_idx are both positive
+ UncText nl_txt;
+ nl_txt.append("\n");
+ nl_idx++;
+
+ while ( (nl_idx < static_cast<size_t>(idx))
+ && !unc_isalnum(pc->GetStr()[nl_idx]))
+ {
+ nl_txt.append(pc->Str()[nl_idx++]);
+ }
+ tmp_txt.replace("\n", nl_txt);
+ }
+ }
+ pc->Str().replace(kw.tag, tmp_txt);
+ }
+ }
+} // do_kw_subst
+
+
+static void output_comment_multi_simple(Chunk *pc)
+{
+ if ( pc == nullptr
+ && pc->IsNotNullChunk())
+ {
+ return;
+ }
+ cmt_reflow cmt;
+
+ LOG_FMT(LCONTTEXT, "%s(%d): Text() is '%s', type is %s, orig col is %zu, column is %zu\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()), pc->GetOrigCol(), pc->GetColumn());
+
+ output_cmt_start(cmt, pc);
+
+ // The multiline comment is saved inside one chunk. If the comment is
+ // shifted all lines of the comment need to be shifted by the same amount.
+ // Save the difference of initial and current position to apply it on every
+ // line_column
+ const int col_diff = [pc]()
+ {
+ int diff = 0;
+
+ if (pc->GetPrev()->IsNewline())
+ {
+ // The comment should be indented correctly
+ diff = pc->GetColumn() - pc->GetOrigCol();
+ }
+ return(diff);
+ }();
+
+ /**
+ * check for enable/disable processing comment strings that may
+ * both be embedded within the same multi-line comment
+ */
+ auto disable_processing_cmt_idx = find_disable_processing_comment_marker(pc->GetStr());
+ auto enable_processing_cmt_idx = find_enable_processing_comment_marker(pc->GetStr());
+
+ UncText line;
+ size_t line_count = 0;
+ size_t line_column = pc->GetColumn();
+ size_t cmt_idx = 0;
+
+ while (cmt_idx < pc->Len())
+ {
+ int ch = pc->GetStr()[cmt_idx];
+ cmt_idx++;
+
+ if ( cmt_idx > std::size_t(disable_processing_cmt_idx)
+ && enable_processing_cmt_idx > disable_processing_cmt_idx)
+ {
+ auto length = enable_processing_cmt_idx - disable_processing_cmt_idx;
+ UncText verbatim_text(pc->GetStr(),
+ disable_processing_cmt_idx,
+ length);
+
+ add_text(verbatim_text);
+
+ cmt_idx = enable_processing_cmt_idx;
+
+ /**
+ * check for additional enable/disable processing comment strings that may
+ * both be embedded within the same multi-line comment
+ */
+ disable_processing_cmt_idx = find_disable_processing_comment_marker(pc->GetStr(),
+ enable_processing_cmt_idx);
+ enable_processing_cmt_idx = find_enable_processing_comment_marker(pc->GetStr(),
+ enable_processing_cmt_idx);
+
+ line.clear();
+
+ continue;
+ }
+ // 1: step through leading tabs and spaces to find the start column
+ log_rule_B("cmt_convert_tab_to_spaces");
+
+ if ( line.size() == 0
+ && ( line_column < cmt.base_col
+ || options::cmt_convert_tab_to_spaces()))
+ {
+ if (ch == ' ')
+ {
+ line_column++;
+ continue;
+ }
+ else if (ch == '\t')
+ {
+ log_rule_B("input_tab_size");
+ line_column = calc_next_tab_column(line_column, options::input_tab_size());
+ continue;
+ }
+ else
+ {
+ LOG_FMT(LCONTTEXT, "%s(%d):ch is %d, %c\n", __func__, __LINE__, ch, char(ch));
+ }
+ }
+
+ // 2: add chars to line, handle the CRLF and CR endings (convert both to LF)
+ if (ch == '\r')
+ {
+ ch = '\n';
+
+ if ( (cmt_idx < pc->Len())
+ && (pc->GetStr()[cmt_idx] == '\n'))
+ {
+ cmt_idx++;
+ }
+ }
+ LOG_FMT(LCONTTEXT, "%s(%d):Line is %s\n", __func__, __LINE__, line.c_str());
+ line.append(ch);
+ LOG_FMT(LCONTTEXT, "%s(%d):Line is %s\n", __func__, __LINE__, line.c_str());
+
+ // If we just hit an end of line OR we just hit end-of-comment...
+ if ( ch == '\n'
+ || cmt_idx == pc->Len())
+ {
+ line_count++;
+ LOG_FMT(LCONTTEXT, "%s(%d):line_count is %zu\n", __func__, __LINE__, line_count);
+
+ // strip trailing tabs and spaces before the newline
+ if (ch == '\n')
+ {
+ line.pop_back();
+
+ // Say we aren't in a preproc to prevent changing any bs-nl
+ cmt_trim_whitespace(line, false);
+
+ line.append('\n');
+ }
+
+ if (line.size() > 0)
+ {
+ // unless line contains only a single newline char, indent if the
+ // line consists of either:
+ if ( line.size() > 1 // more than a single newline char or
+ || ch != '\n') // (end-of-comment) a single non newline char
+ {
+ if (line_count > 1)
+ {
+ // apply comment column shift without underflowing
+ line_column = (col_diff<0
+ && (size_t)(abs(col_diff))> line_column)
+ ? 0 : line_column + col_diff;
+ }
+ cmt.column = line_column;
+ cmt_output_indent(cmt.brace_col, cmt.base_col, cmt.column);
+ }
+ add_text(line);
+
+ line.clear();
+ }
+ line_column = 1;
+ }
+ }
+} // output_comment_multi_simple
+
+
+static void generate_if_conditional_as_text(UncText &dst, Chunk *ifdef)
+{
+ int column = -1;
+
+ dst.clear();
+
+ for (Chunk *pc = ifdef; pc != nullptr && pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if (column == -1)
+ {
+ column = pc->GetColumn();
+ }
+
+ if ( pc->Is(CT_NEWLINE)
+ || pc->Is(CT_COMMENT_MULTI)
+ || pc->Is(CT_COMMENT_CPP))
+ {
+ break;
+ }
+ else if (pc->Is(CT_NL_CONT))
+ {
+ dst += ' ';
+ column = -1;
+ }
+ else if ( pc->Is(CT_COMMENT)
+ || pc->Is(CT_COMMENT_EMBED))
+ {
+ }
+ else // if (pc->Is(CT_JUNK)) || else
+ {
+ for (int spacing = pc->GetColumn() - column; spacing > 0; spacing--)
+ {
+ dst += ' ';
+ column++;
+ }
+
+ dst.append(pc->GetStr());
+ column += pc->Len();
+ }
+ }
+} // generate_if_conditional_as_text
+
+
+void add_long_preprocessor_conditional_block_comment()
+{
+ Chunk *pp_start = nullptr;
+ Chunk *pp_end = nullptr;
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ // just track the preproc level:
+ if (pc->Is(CT_PREPROC))
+ {
+ pp_end = pp_start = pc;
+ }
+
+ if ( pc->IsNot(CT_PP_IF)
+ || !pp_start)
+ {
+ continue;
+ }
+#if 0
+ if (pc->TestFlags(PCF_IN_PREPROC))
+ {
+ continue;
+ }
+#endif
+
+ Chunk *br_close;
+ Chunk *br_open = pc;
+ size_t nl_count = 0;
+
+ Chunk *tmp = pc;
+
+ while ((tmp = tmp->GetNext())->IsNotNullChunk())
+ {
+ // just track the preproc level:
+ if (tmp->Is(CT_PREPROC))
+ {
+ pp_end = tmp;
+ }
+
+ if (tmp->IsNewline())
+ {
+ nl_count += tmp->GetNlCount();
+ }
+ else if ( pp_end->GetPpLevel() == pp_start->GetPpLevel()
+ && ( tmp->Is(CT_PP_ENDIF)
+ || ((br_open->Is(CT_PP_IF)) ? (tmp->Is(CT_PP_ELSE)) : 0)))
+ {
+ br_close = tmp;
+
+ LOG_FMT(LPPIF, "found #if / %s section on lines %zu and %zu, new line count=%zu\n",
+ (tmp->Is(CT_PP_ENDIF) ? "#endif" : "#else"),
+ br_open->GetOrigLine(), br_close->GetOrigLine(), nl_count);
+
+ // Found the matching #else or #endif - make sure a newline is next
+ tmp = tmp->GetNext();
+
+ LOG_FMT(LPPIF, "next item type %d (is %s)\n",
+ (tmp ? tmp->GetType() : -1), (tmp ? tmp->IsNewline() ? "newline"
+ : tmp->IsComment() ? "comment" : "other" : "---"));
+
+ if ( tmp->IsNullChunk()
+ || tmp->Is(CT_NEWLINE)) // tmp->IsNewline())
+ {
+ size_t nl_min;
+
+ if (br_close->Is(CT_PP_ENDIF))
+ {
+ log_rule_B("mod_add_long_ifdef_endif_comment");
+ nl_min = options::mod_add_long_ifdef_endif_comment();
+ }
+ else
+ {
+ log_rule_B("mod_add_long_ifdef_else_comment");
+ nl_min = options::mod_add_long_ifdef_else_comment();
+ }
+ const char *txt = !tmp ? "EOF" : ((tmp->Is(CT_PP_ENDIF)) ? "#endif" : "#else");
+ LOG_FMT(LPPIF, "#if / %s section candidate for augmenting when over NL threshold %zu != 0 (new line count=%zu)\n",
+ txt, nl_min, nl_count);
+
+ if ( nl_min > 0
+ && nl_count > nl_min) // nl_count is 1 too large at all times as #if line was counted too
+ {
+ // determine the added comment style
+ E_Token style = (language_is_set(LANG_CPP)) ?
+ CT_COMMENT_CPP : CT_COMMENT;
+
+ UncText str;
+ generate_if_conditional_as_text(str, br_open);
+
+ LOG_FMT(LPPIF, "#if / %s section over threshold %zu (new line count=%zu) --> insert comment after the %s: %s\n",
+ txt, nl_min, nl_count, txt, str.c_str());
+
+ // Add a comment after the close brace
+ insert_comment_after(br_close, style, str);
+ }
+ }
+
+ // checks both the #else and #endif for a given level, only then look further in the main loop
+ if (br_close->Is(CT_PP_ENDIF))
+ {
+ break;
+ }
+ }
+ }
+ }
+} // add_long_preprocessor_conditional_block_comment
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/output.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/output.h
new file mode 100644
index 00000000..1d55c8c8
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/output.h
@@ -0,0 +1,46 @@
+/**
+ * @file output.h
+ * prototypes for output.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef OUTPUT_H_INCLUDED
+#define OUTPUT_H_INCLUDED
+
+#include "unc_text.h"
+
+#include <stdio.h>
+
+
+//! This renders the chunk list to a file.
+void output_parsed(FILE *pfile, bool withOptions = true);
+
+
+//! This renders the chunk list to a file formatted as csv.
+void output_parsed_csv(FILE *pfile);
+
+
+//! This renders the chunk list to a file.
+void output_text(FILE *pfile);
+
+
+/**
+ * See also it's preprocessor counterpart
+ * add_long_closebrace_comment
+ * in braces.cpp
+ *
+ * Note: since this concerns itself with the preprocessor -- which is line-oriented --
+ * it turns out that just looking at pc->GetPpLevel() is NOT the right thing to do.
+ * See a --parsed dump if you don't believe this: an '#endif' will be one level
+ * UP from the corresponding #ifdef when you look at the tokens 'ifdef' versus 'endif',
+ * but it's a whole another story when you look at their CT_PREPROC ('#') tokens!
+ *
+ * Hence we need to track and seek matching CT_PREPROC pp_levels here, which complicates
+ * things a little bit, but not much.
+ */
+void add_long_preprocessor_conditional_block_comment();
+
+
+#endif /* OUTPUT_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parameter_pack_cleanup.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parameter_pack_cleanup.cpp
index 12992ff3..12992ff3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parameter_pack_cleanup.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parameter_pack_cleanup.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parameter_pack_cleanup.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parameter_pack_cleanup.h
index e3aa31ac..e3aa31ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parameter_pack_cleanup.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parameter_pack_cleanup.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parens.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parens.cpp
new file mode 100644
index 00000000..18b69210
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parens.cpp
@@ -0,0 +1,362 @@
+/**
+ * @file parens.cpp
+ * Adds or removes parens.
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "parens.h"
+
+#include "log_rules.h"
+
+using namespace uncrustify;
+
+
+//! Add an open parenthesis after first and add a close parenthesis before the last
+static void add_parens_between(Chunk *first, Chunk *last);
+
+
+/**
+ * Scans between two parens and adds additional parens if needed.
+ * This function is recursive. If it hits another open paren, it'll call itself
+ * with the new bounds.
+ *
+ * Adds optional parens in an IF or SWITCH conditional statement.
+ *
+ * This basically just checks for a CT_COMPARE that isn't surrounded by parens.
+ * The edges for the compare are the open, close and any CT_BOOL tokens.
+ *
+ * This only handles VERY simple patterns:
+ * (!a && b) => (!a && b) -- no change
+ * (a && b == 1) => (a && (b == 1))
+ * (a == 1 || b > 2) => ((a == 1) || (b > 2))
+ *
+ * FIXME: we really should bail if we transition between a preprocessor and
+ * a non-preprocessor
+ */
+static void check_bool_parens(Chunk *popen, Chunk *pclose, int nest);
+
+
+void do_parens()
+{
+ constexpr static auto LCURRENT = LPARADD;
+
+ LOG_FUNC_ENTRY();
+
+ log_rule_B("mod_full_paren_if_bool");
+
+ if (options::mod_full_paren_if_bool())
+ {
+ Chunk *pc = Chunk::GetHead();
+
+ while ((pc = pc->GetNextNcNnl())->IsNotNullChunk())
+ {
+ if ( pc->IsNot(CT_SPAREN_OPEN)
+ || ( pc->GetParentType() != CT_IF
+ && pc->GetParentType() != CT_ELSEIF
+ && pc->GetParentType() != CT_SWITCH))
+ {
+ continue;
+ }
+ // Grab the close sparen
+ Chunk *pclose = pc->GetNextType(CT_SPAREN_CLOSE, pc->GetLevel(), E_Scope::PREPROC);
+
+ if (pclose->IsNotNullChunk())
+ {
+ check_bool_parens(pc, pclose, 0);
+ pc = pclose;
+ }
+ }
+ }
+} // do_parens
+
+
+void do_parens_assign() // Issue #3316
+{
+ constexpr static auto LCURRENT = LPARADD;
+
+ LOG_FUNC_ENTRY();
+
+ log_rule_B("mod_full_paren_assign_bool");
+
+ if (options::mod_full_paren_assign_bool())
+ {
+ Chunk *pc = Chunk::GetHead();
+
+ while ((pc = pc->GetNextNcNnl())->IsNotNullChunk())
+ {
+ if (pc->Is(CT_ASSIGN))
+ {
+ if (pc->TestFlags(PCF_IN_SPAREN)) // Issue #4239
+ {
+ continue;
+ }
+ LOG_FMT(LPARADD, "%s(%d): orig line is %zu, orig col is %zu, text is '%s', level is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), pc->GetLevel());
+ // look before for a open sparen
+ size_t check_level = pc->GetLevel();
+ Chunk *p = pc->GetPrevNc(E_Scope::PREPROC);
+
+ while (p->IsNotNullChunk())
+ {
+ LOG_FMT(LPARADD, "%s(%d): orig line is %zu, text is '%s', level is %zu, type is %s\n",
+ __func__, __LINE__, p->GetOrigLine(), p->Text(), p->GetLevel(), get_token_name(p->GetType()));
+
+ //log_pcf_flags(LPARADD, p->GetFlags());
+ if (p->TestFlags(PCF_STMT_START))
+ {
+ break;
+ }
+
+ if (p->Is(CT_PAREN_OPEN))
+ {
+ check_level--;
+ }
+
+ if (p->Is(CT_SPAREN_OPEN))
+ {
+ break;
+ }
+ p = p->GetPrevNc(E_Scope::PREPROC);
+
+ if (p->GetLevel() < check_level - 1)
+ {
+ break;
+ }
+ }
+ LOG_FMT(LPARADD, "%s(%d): orig line is %zu, text is '%s', level is %zu, type is %s\n",
+ __func__, __LINE__, p->GetOrigLine(), p->Text(), p->GetLevel(), get_token_name(p->GetType()));
+
+ if (p->GetParentType() == CT_WHILE)
+ {
+ continue;
+ }
+ // Grab the semicolon
+ Chunk *semicolon = pc->GetNextType(CT_SEMICOLON, pc->GetLevel(), E_Scope::PREPROC);
+
+ if (semicolon->IsNotNullChunk())
+ {
+ check_bool_parens(pc, semicolon, 0);
+ pc = semicolon;
+ }
+ }
+ }
+ }
+} // do_parens_assign
+
+
+void do_parens_return() // Issue #3316
+{
+ constexpr static auto LCURRENT = LPARADD;
+
+ LOG_FUNC_ENTRY();
+
+ log_rule_B("mod_full_paren_return_bool");
+
+ if (options::mod_full_paren_return_bool())
+ {
+ Chunk *pc = Chunk::GetHead();
+
+ while ((pc = pc->GetNextNcNnl())->IsNotNullChunk())
+ {
+ if (pc->Is(CT_RETURN))
+ {
+ LOG_FMT(LPARADD, "%s(%d): orig line is %zu, text is '%s', level is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->Text(), pc->GetLevel());
+ // look before for a open sparen
+ size_t check_level = pc->GetLevel();
+ Chunk *p = pc->GetPrevNc(E_Scope::PREPROC);
+
+ while (p->IsNotNullChunk())
+ {
+ LOG_FMT(LPARADD, "%s(%d): orig line is %zu, text is '%s', level is %zu, type is %s\n",
+ __func__, __LINE__, p->GetOrigLine(), p->Text(), p->GetLevel(), get_token_name(p->GetType()));
+
+ //log_pcf_flags(LPARADD, p->GetFlags());
+ if (p->TestFlags(PCF_STMT_START))
+ {
+ break;
+ }
+
+ if (p->Is(CT_PAREN_OPEN))
+ {
+ check_level--;
+ }
+
+ if (p->Is(CT_SPAREN_OPEN))
+ {
+ break;
+ }
+ p = p->GetPrevNc(E_Scope::PREPROC);
+
+ if (p->GetLevel() < check_level - 1)
+ {
+ break;
+ }
+ }
+ LOG_FMT(LPARADD, "%s(%d): orig line is %zu, text is '%s', level is %zu, type is %s\n",
+ __func__, __LINE__, p->GetOrigLine(), p->Text(), p->GetLevel(), get_token_name(p->GetType()));
+
+ if (p->GetParentType() == CT_WHILE)
+ {
+ continue;
+ }
+ // Grab the semicolon
+ Chunk *semicolon = pc->GetNextType(CT_SEMICOLON, pc->GetLevel(), E_Scope::PREPROC);
+
+ if (semicolon->IsNotNullChunk())
+ {
+ check_bool_parens(pc, semicolon, 0);
+ pc = semicolon;
+ }
+ }
+ }
+ }
+} // do_parens_return
+
+
+static void add_parens_between(Chunk *first, Chunk *last)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LPARADD, "%s(%d): first: line %zu, col %zu, between '%s' [lvl is %zu] and\n",
+ __func__, __LINE__, first->GetOrigLine(), first->GetOrigCol(),
+ first->Text(), first->GetLevel());
+ LOG_FMT(LPARADD, "%s(%d): last: line %zu, col %zu, '%s' [lvl is %zu]\n",
+ __func__, __LINE__, last->GetOrigLine(), last->GetOrigCol(),
+ last->Text(), last->GetLevel());
+
+ // Don't do anything if we have a bad sequence, ie "&& )"
+ Chunk *first_n = first->GetNextNcNnl();
+
+ if (first_n == last)
+ {
+ return;
+ }
+ Chunk pc;
+
+ pc.SetType(CT_PAREN_OPEN);
+ pc.SetOrigLine(first_n->GetOrigLine());
+ pc.SetColumn(first_n->GetColumn()); // Issue #3236
+ pc.SetOrigCol(first_n->GetOrigCol()); // Issue #3236
+ pc.SetOrigColEnd(first_n->GetOrigColEnd()); // Issue #3236
+ pc.Str() = "(";
+ pc.SetFlags(first_n->GetFlags() & PCF_COPY_FLAGS);
+ pc.SetLevel(first_n->GetLevel());
+ pc.SetPpLevel(first_n->GetPpLevel());
+ pc.SetBraceLevel(first_n->GetBraceLevel());
+ pc.CopyAndAddBefore(first_n);
+
+ shift_the_rest_of_the_line(first_n); // Issue #3236
+
+ Chunk *last_prev = last->GetPrevNcNnl(E_Scope::PREPROC);
+
+ pc.SetType(CT_PAREN_CLOSE);
+ pc.SetOrigLine(last_prev->GetOrigLine());
+ pc.SetOrigCol(last_prev->GetOrigCol());
+ pc.SetColumn(last_prev->GetColumn() + 1); // Issue #3236
+ pc.SetOrigCol(last_prev->GetOrigCol() + 1); // Issue #3236
+ pc.SetOrigColEnd(last_prev->GetOrigColEnd() + 1); // Issue #3236
+ pc.Str() = ")";
+ pc.SetFlags(last_prev->GetFlags() & PCF_COPY_FLAGS);
+ pc.SetLevel(last_prev->GetLevel());
+ pc.SetPpLevel(last_prev->GetPpLevel());
+ pc.SetBraceLevel(last_prev->GetBraceLevel());
+ pc.CopyAndAddAfter(last_prev);
+
+ shift_the_rest_of_the_line(last); // Issue #3236
+
+ for (Chunk *tmp = first_n;
+ tmp != last_prev;
+ tmp = tmp->GetNextNcNnl())
+ {
+ tmp->SetLevel(tmp->GetLevel() + 1);
+ }
+
+ last_prev->SetLevel(last_prev->GetLevel() + 1);
+} // add_parens_between
+
+
+static void check_bool_parens(Chunk *popen, Chunk *pclose, int nest)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *ref = popen;
+ bool hit_compare = false;
+
+ LOG_FMT(LPARADD, "%s(%d): nest is %d, popen on line %zu, orig col is %zu, pclose on line %zu, orig col is %zu, level is %zu\n",
+ __func__, __LINE__, nest,
+ popen->GetOrigLine(), popen->GetOrigCol(),
+ pclose->GetOrigLine(), pclose->GetOrigCol(),
+ popen->GetLevel());
+
+ Chunk *pc = popen;
+
+ while ( (pc = pc->GetNextNcNnl())->IsNotNullChunk()
+ && pc != pclose)
+ {
+ if (pc->TestFlags(PCF_IN_PREPROC))
+ {
+ LOG_FMT(LPARADD2, " -- bail on PP %s [%s] at line %zu col %zu, level %zu\n",
+ get_token_name(pc->GetType()),
+ pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
+ return;
+ }
+
+ if ( pc->Is(CT_BOOL)
+ || pc->Is(CT_QUESTION)
+ || pc->Is(CT_COND_COLON)
+ || pc->Is(CT_COMMA))
+ {
+ LOG_FMT(LPARADD2, " -- %s [%s] at line %zu col %zu, level %zu\n",
+ get_token_name(pc->GetType()),
+ pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
+
+ if (hit_compare)
+ {
+ hit_compare = false;
+
+ if (!language_is_set(LANG_CS))
+ {
+ add_parens_between(ref, pc);
+ }
+ }
+ ref = pc;
+ }
+ else if (pc->Is(CT_COMPARE))
+ {
+ LOG_FMT(LPARADD2, " -- compare '%s' at line %zu, orig col is %zu, level is %zu\n",
+ pc->Text(), pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
+ hit_compare = true;
+ }
+ else if (pc->IsParenOpen())
+ {
+ Chunk *next = pc->GetClosingParen();
+
+ if (next->IsNotNullChunk())
+ {
+ check_bool_parens(pc, next, nest + 1);
+ pc = next;
+ }
+ }
+ else if (pc->Is(CT_SEMICOLON)) // Issue #3236
+ {
+ ref = pc;
+ }
+ else if ( pc->Is(CT_BRACE_OPEN)
+ || pc->Is(CT_SQUARE_OPEN)
+ || pc->Is(CT_ANGLE_OPEN))
+ {
+ // Skip [], {}, and <>
+ pc = pc->GetClosingParen();
+ }
+ }
+
+ if ( hit_compare
+ && ref != popen
+ && !language_is_set(LANG_CS))
+ {
+ add_parens_between(ref, pclose);
+ }
+} // check_bool_parens
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parens.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parens.h
new file mode 100644
index 00000000..f3c6fe87
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parens.h
@@ -0,0 +1,24 @@
+/**
+ * @file parens.h
+ * prototypes for parens.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+#ifndef PARENS_H_INCLUDED
+#define PARENS_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+
+//! add parenthesis
+void do_parens();
+
+
+void do_parens_assign();
+
+
+void do_parens_return();
+
+
+#endif /* PARENS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parent_for_pp.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parent_for_pp.cpp
index f731b9f7..f731b9f7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parent_for_pp.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parent_for_pp.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parent_for_pp.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parent_for_pp.h
index 7e77700a..7e77700a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/parent_for_pp.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parent_for_pp.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame.cpp
new file mode 100644
index 00000000..f91ecbf4
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame.cpp
@@ -0,0 +1,256 @@
+/**
+ * @file parsing_frame.cpp
+ *
+ * Holds data needed for indenting and brace parsing
+ *
+ * @author Daniel Chumak
+ * @license GPL v2+
+ */
+
+#include "parsing_frame.h"
+
+#include "chunk.h"
+#include "options.h"
+#include "uncrustify.h"
+
+#include <stdexcept> // to get std::logic_error
+
+
+using std::string;
+using std::to_string;
+using std::invalid_argument;
+
+
+ParenStackEntry::ParenStackEntry()
+{
+ m_openToken = CT_EOF;
+ m_openChunk = Chunk::NullChunkPtr;
+ m_openLevel = 0;
+ m_openLine = 0;
+ m_openCol = 0;
+ m_braceIndent = 0;
+ m_indent = 1;
+ m_indentTmp = 1;
+ m_indentTab = 1;
+ m_nsCount = 0;
+ m_indentContinue = false;
+ m_inPreproc = false;
+ m_nonVardef = false;
+ m_parent = CT_NONE;
+ m_stage = E_BraceStage::NONE;
+ m_indentationData = { Chunk::NullChunkPtr, 0 };
+ m_popChunk = Chunk::NullChunkPtr;
+}
+
+
+ParsingFrame::ParsingFrame()
+{
+ //! amount of elements for which memory is going to be pre-initialized
+ static constexpr int CONTAINER_INIT_SIZE = 16;
+
+ m_parenStack = std::vector<ParenStackEntry>();
+ m_parenStack.reserve(CONTAINER_INIT_SIZE);
+ m_parenStack.push_back(ParenStackEntry());
+
+ m_lastPopped = ParenStackEntry();
+ m_refNumber = 0;
+ m_parenLevel = 0;
+ m_braceLevel = 0;
+ m_ppLevel = 0;
+ m_sParenCount = 0;
+ m_parenCount = 0;
+ m_ifdefType = E_Token::CT_NONE;
+ m_stmtCount = 0;
+ m_exprCount = 0;
+}
+
+
+ParenStackEntry &ParsingFrame::prev(size_t idx)
+{
+ LOG_FUNC_ENTRY();
+
+ if (idx == 0)
+ {
+ throw invalid_argument(string(__FILE__) + ":" + to_string(__LINE__)
+ + " idx can't be zero");
+ }
+
+ if (idx >= m_parenStack.size())
+ {
+ LOG_FMT(LINDPSE, "%s(%d): idx is %zu, size is %zu\n",
+ __func__, __LINE__, idx, m_parenStack.size());
+ throw invalid_argument(string(__FILE__) + ":" + to_string(__LINE__)
+ + " idx can't be >= size()");
+ }
+ return(*std::prev(std::end(m_parenStack), idx + 1));
+}
+
+
+const ParenStackEntry &ParsingFrame::prev(size_t idx) const
+{
+ LOG_FUNC_ENTRY();
+ // Reuse the code from non-const method
+ return((const_cast<ParsingFrame *>(this))->prev(idx));
+}
+
+
+ParenStackEntry &ParsingFrame::top()
+{
+ // always at least one (dummy) element inside m_parenStack guaranteed
+ return(*std::prev(std::end(m_parenStack)));
+}
+
+
+const ParenStackEntry &ParsingFrame::top() const
+{
+ // always at least one (dummy) element inside m_parenStack guaranteed
+ return(*std::prev(std::end(m_parenStack)));
+}
+
+
+void ParsingFrame::push(Chunk *pc, const char *func, int line, E_BraceStage stage)
+{
+ LOG_FUNC_ENTRY();
+
+ ParenStackEntry new_entry;
+
+ if (pc->IsNotNullChunk())
+ {
+ new_entry.SetOpenToken(pc->GetType());
+ new_entry.SetOpenLevel(pc->GetLevel());
+ new_entry.SetOpenLine(pc->GetOrigLine());
+ new_entry.SetOpenCol(pc->GetOrigCol());
+ new_entry.SetOpenChunk(pc);
+
+ new_entry.SetIndentTab(top().GetIndentTab());
+ new_entry.SetIndentContinue(top().GetIndentContinue());
+ new_entry.SetStage(stage);
+
+ new_entry.SetInPreproc(pc->TestFlags(PCF_IN_PREPROC));
+ new_entry.SetNonVardef(false);
+ new_entry.IndentData() = top().GetIndentData();
+ new_entry.SetPopChunk(Chunk::NullChunkPtr);
+ }
+ m_parenStack.push_back(new_entry);
+
+// uncomment the line below to get the address of the m_parenStack
+// #define DEBUG_PUSH_POP
+#ifdef DEBUG_PUSH_POP
+ LOG_FMT(LINDPSE, "ParsingFrame::push(%s:%d) Add is %4zu: orig line is %4zu, orig col is %4zu, type is %12s, "
+ "brace level is %2zu, level is %2zu, pse_tos: %2zu -> %2zu\n",
+ func, line, (size_t)this, pc->GetOrigLine(), pc->GetOrigCol(),
+ get_token_name(pc->GetType()), pc->GetBraceLevel(), pc->GetLevel(),
+ (m_parenStack.size() - 2), (m_parenStack.size() - 1));
+#else /* DEBUG_PUSH_POP */
+ LOG_FMT(LINDPSE, "ParsingFrame::push(%s:%d): orig line is %4zu, orig col is %4zu, type is %12s, "
+ "brace level is %2zu, level is %2zu, pse_tos: %2zu -> %2zu\n",
+ func, line, pc->GetOrigLine(), pc->GetOrigCol(),
+ get_token_name(pc->GetType()), pc->GetBraceLevel(), pc->GetLevel(),
+ (m_parenStack.size() - 2), (m_parenStack.size() - 1));
+#endif /* DEBUG_PUSH_POP */
+}
+
+
+void ParsingFrame::pop(const char *func, int line, Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ if ( pc->GetType() == CT_ACCESS
+ || pc->GetType() == CT_ANGLE_CLOSE
+ || pc->GetType() == CT_ANGLE_OPEN
+ || pc->GetType() == CT_ARITH // Issue #3965
+ || pc->GetType() == CT_ASSIGN
+ || pc->GetType() == CT_ASSIGN_FUNC_PROTO // Issue #4026
+ || pc->GetType() == CT_BRACE_CLOSE
+ || pc->GetType() == CT_BRACE_OPEN
+ || pc->GetType() == CT_BOOL
+ || pc->GetType() == CT_CASE
+ || pc->GetType() == CT_CLASS_COLON
+ || pc->GetType() == CT_COMMA
+ || pc->GetType() == CT_COMMENT
+ || pc->GetType() == CT_COMMENT_CPP
+ || pc->GetType() == CT_COMMENT_MULTI
+ || pc->GetType() == CT_COMPARE // Issue #3915
+ || pc->GetType() == CT_COND_COLON
+ || pc->GetType() == CT_DC_MEMBER // Issue #4026
+ || pc->GetType() == CT_FPAREN_CLOSE
+ || pc->GetType() == CT_FPAREN_OPEN
+ || pc->GetType() == CT_FUNC_CTOR_VAR // Issue #4026
+ || pc->GetType() == CT_INCDEC_AFTER // Issue #4026
+ || pc->GetType() == CT_LPAREN_CLOSE
+ || pc->GetType() == CT_LPAREN_OPEN
+ || pc->GetType() == CT_MACRO_CLOSE
+ || pc->GetType() == CT_MACRO_FUNC_CALL // Issue #4026
+ || pc->GetType() == CT_MACRO_OPEN
+ || pc->GetType() == CT_MEMBER // Issue #3996
+ || pc->GetType() == CT_NEWLINE
+ || pc->GetType() == CT_NONE
+ || pc->GetType() == CT_OC_END
+ || pc->GetType() == CT_OC_MSG_NAME
+ || pc->GetType() == CT_OC_PROPERTY
+ || pc->GetType() == CT_OC_SCOPE
+ || pc->GetType() == CT_OPERATOR // Issue #4026
+ || pc->GetType() == CT_PARAMETER_PACK // Issue #4075
+ || pc->GetType() == CT_PAREN_CLOSE
+ || pc->GetType() == CT_PAREN_OPEN
+ || pc->GetType() == CT_PREPROC
+ || pc->GetType() == CT_QUESTION // Issue #4023
+ || pc->GetType() == CT_RPAREN_CLOSE // Issue #3914
+ || pc->GetType() == CT_RPAREN_OPEN
+ || pc->GetType() == CT_SBOOL // Issue #3965
+ || pc->GetType() == CT_SEMICOLON
+ || pc->GetType() == CT_SHIFT // Issue #3983
+ || pc->GetType() == CT_SPAREN_CLOSE
+ || pc->GetType() == CT_SPAREN_OPEN
+ || pc->GetType() == CT_SQL_END
+ || pc->GetType() == CT_SQUARE_CLOSE
+ || pc->GetType() == CT_SQUARE_OPEN
+ || pc->GetType() == CT_TPAREN_CLOSE
+ || pc->GetType() == CT_TPAREN_OPEN
+ || pc->GetType() == CT_TYPEDEF
+ || pc->GetType() == CT_VBRACE_CLOSE
+ || pc->GetType() == CT_VBRACE_OPEN
+ || pc->GetType() == CT_VSEMICOLON
+ || pc->GetType() == CT_WORD)
+ {
+ LOG_FMT(LINDPSE, "ParsingFrame::pop (%s:%d): orig line is %4zu, orig col is %4zu, type is %12s\n",
+ func, line, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+ }
+ else
+ {
+ fprintf(stderr, "ParsingFrame::pop (%s:%d): orig line is %4zu, orig col is %4zu, type is %12s,\n",
+ func, line, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()));
+ fprintf(stderr, "ParsingFrame::pop (%s:%d): the type is %s, is not coded. Please make a call.\n",
+ func, line, get_token_name(pc->GetType()));
+ log_flush(true);
+
+ if (uncrustify::options::debug_use_the_exit_function_pop()) // Issue #4075
+ {
+ exit(EX_SOFTWARE);
+ }
+ }
+#ifdef DEBUG_PUSH_POP
+ LOG_FMT(LINDPSE, "ParsingFrame::pop (%s:%d) Add is %4zu: open_line is %4zu, clos_col is %4zu, type is %12s, "
+ "cpd.level is %2d, level is %2zu, pse_tos: %2zu -> %2zu\n",
+ func, line, (size_t)this, m_parenStack.back().open_line, m_parenStack.back().open_colu,
+ get_token_name(m_parenStack.back().type), cpd.pp_level, m_parenStack.back().level,
+ (m_parenStack.size() - 1), (m_parenStack.size() - 2));
+#else /* DEBUG_PUSH_POP */
+ LOG_FMT(LINDPSE, "ParsingFrame::pop (%s:%d): open_line is %4zu, clos_col is %4zu, type is %12s, "
+ "cpd.level is %2d, level is %2zu, pse_tos: %2zu -> %2zu\n",
+ func, line, m_parenStack.back().GetOpenLine(), m_parenStack.back().GetOpenCol(),
+ get_token_name(m_parenStack.back().GetOpenToken()), cpd.pp_level, m_parenStack.back().GetOpenLevel(),
+ (m_parenStack.size() - 1), (m_parenStack.size() - 2));
+#endif /* DEBUG_PUSH_POP */
+
+ m_lastPopped = *std::prev(std::end(m_parenStack));
+
+ if (m_parenStack.size() == 1)
+ {
+ *std::begin(m_parenStack) = ParenStackEntry();
+ }
+ else
+ {
+ m_parenStack.pop_back();
+ }
+} // ParsingFrame::pop
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame.h
new file mode 100644
index 00000000..1431b43d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame.h
@@ -0,0 +1,797 @@
+/**
+ * @file parsing_frame.h
+ *
+ * Holds data needed for indenting and brace parsing
+ *
+ * @author Daniel Chumak
+ * @license GPL v2+
+ */
+
+#ifndef PARSING_FRAME_H_INCLUDED
+#define PARSING_FRAME_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+#include <vector>
+
+
+//! Class describing a parenthesis stack entry and its information
+class ParenStackEntry
+{
+public:
+ ParenStackEntry();
+
+ // --------- Access methods
+
+ /**
+ * @brief returns the token that opened the entry
+ */
+ E_Token GetOpenToken() const;
+
+ /**
+ * @brief Sets the token that opened the entry
+ * @param token the token to set
+ */
+ void SetOpenToken(const E_Token token);
+
+ /**
+ * @brief returns the chunk that opened the entry
+ */
+ Chunk *GetOpenChunk() const;
+
+ /**
+ * @brief Sets the chunk that opened the entry
+ * @param chunk the chunk to set
+ */
+ void SetOpenChunk(Chunk *chunk);
+
+ /**
+ * @brief returns the level that opened the entry
+ */
+ size_t GetOpenLevel() const;
+
+ /**
+ * @brief Sets the level that opened the entry
+ * @param level the level to set
+ */
+ void SetOpenLevel(size_t level);
+
+ /**
+ * @brief returns the line that opened the entry
+ */
+ size_t GetOpenLine() const;
+
+ /**
+ * @brief Sets the line that opened the entry
+ * @param line the line to set
+ */
+ void SetOpenLine(size_t line);
+
+ /**
+ * @brief returns the column that opened the entry
+ */
+ size_t GetOpenCol() const;
+
+ /**
+ * @brief Sets the column that opened the entry
+ * @param column the column to set
+ */
+ void SetOpenCol(size_t column);
+
+ /**
+ * @brief returns the indent for braces
+ */
+ size_t GetBraceIndent() const;
+
+ /**
+ * @brief Sets the indent for braces
+ * @param indent the indent for braces
+ */
+ void SetBraceIndent(size_t indent);
+
+ /**
+ * @brief returns the indent level
+ */
+ size_t GetIndent() const;
+
+ /**
+ * @brief Sets the indent level
+ * @param level the indent level
+ */
+ void SetIndent(size_t level);
+
+ /**
+ * @brief returns the temporary indent level
+ */
+ size_t GetIndentTmp() const;
+
+ /**
+ * @brief Sets the temporary indent level
+ * @param level the temporary indent level
+ */
+ void SetIndentTmp(size_t level);
+
+ /**
+ * @brief returns the tab indent level
+ */
+ size_t GetIndentTab() const;
+
+ /**
+ * @brief Sets the tab indent level
+ * @param level the tab indent level
+ */
+ void SetIndentTab(size_t level);
+
+ /**
+ * @brief returns the consecutive namespace levels
+ */
+ size_t GetNsCount() const;
+
+ /**
+ * @brief Sets the consecutive namespace levels
+ * @param count the consecutive namespace levels
+ */
+ void SetNsCount(size_t count);
+
+ /**
+ * @brief returns whether indent_continue was applied
+ */
+ bool GetIndentContinue() const;
+
+ /**
+ * @brief Sets whether indent_continue was applied
+ * @param cont new value
+ */
+ void SetIndentContinue(bool cont);
+
+ /**
+ * @brief returns whether this was created in a preprocessor
+ */
+ bool GetInPreproc() const;
+
+ /**
+ * @brief Sets whether this was created in a preprocessor
+ * @param preproc new value
+ */
+ void SetInPreproc(bool preproc);
+
+ /**
+ * @brief returns whether a non-vardef line was hit
+ */
+ bool GetNonVardef() const;
+
+ /**
+ * @brief Sets whether a non-vardef line was hit
+ * @param vardef new value
+ */
+ void SetNonVardef(bool vardef);
+
+ /**
+ * @brief returns the parent token (if, for, function, etc)
+ */
+ E_Token GetParent() const;
+
+ /**
+ * @brief Sets the parent token (if, for, function, etc)
+ * @param parent the token to set
+ */
+ void SetParent(const E_Token parent);
+
+ /**
+ * @brief returns the stage used to check progression of complex statements
+ */
+ E_BraceStage GetStage() const;
+
+ /**
+ * @brief Sets the stage used to check progression of complex statements
+ * @param stage the new value
+ */
+ void SetStage(const E_BraceStage stage);
+
+ /**
+ * @brief Returns the associated indentation data as a const reference
+ */
+ const IndentationData &GetIndentData() const;
+
+ /**
+ * @brief Returns the associated indentation data as a modifiable reference
+ */
+ IndentationData &IndentData();
+
+ /**
+ * @brief returns the pop chunk
+ */
+ Chunk *GetPopChunk() const;
+
+ /**
+ * @brief Sets the pop chunk
+ * @param chunk the new chunk
+ */
+ void SetPopChunk(Chunk *chunk);
+
+
+protected:
+ E_Token m_openToken; // the type that opened the entry
+ Chunk *m_openChunk; // chunk that opened the level
+ size_t m_openLevel; // level of opening type
+ size_t m_openLine; // line that open symbol is on, only for logging purposes
+ size_t m_openCol; // column that open symbol is on, only for logging purposes
+ size_t m_braceIndent; // indent for braces - may not relate to indent
+ size_t m_indent; // indent level (depends on use)
+ size_t m_indentTmp; // temporary indent level (depends on use)
+ size_t m_indentTab; // the 'tab' indent (always <= real column)
+ size_t m_nsCount; // Number of consecutive namespace levels
+ bool m_indentContinue; // indent_continue was applied
+ bool m_inPreproc; // whether this was created in a preprocessor
+ bool m_nonVardef; // Hit a non-vardef line
+ E_Token m_parent; // if, for, function, etc
+ E_BraceStage m_stage; // used to check progression of complex statements.
+ IndentationData m_indentationData; // Indentation data
+ Chunk *m_popChunk; // Pop chunk
+};
+
+
+//! Class describing a parsing frame and its information
+class ParsingFrame
+{
+public:
+ ParsingFrame();
+ virtual ~ParsingFrame() = default;
+
+ /**
+ * @brief Returns whether the frame paren stack is empty or not
+ */
+ bool empty() const;
+
+ /**
+ * @brief Returns the size of the frame paren stack
+ */
+ size_t size() const;
+
+ /**
+ * @brief Returns the last popped entry from the frame paren stack
+ */
+ const ParenStackEntry &lastPopped() const;
+
+ /**
+ * @brief Returns the frame reference number
+ */
+ size_t GetRefNumber() const;
+
+ /**
+ * @brief Set the frame reference number
+ * @param the new reference number
+ */
+ void SetRefNumber(const size_t refNo);
+
+ /**
+ * @brief Returns the frame parenthesis level
+ */
+ size_t GetParenLevel() const;
+
+ /**
+ * @brief Set the frame parenthesis level
+ * @param the new parenthesis level
+ */
+ void SetParenLevel(const size_t parenLevel);
+
+ /**
+ * @brief Returns the frame brace level
+ */
+ size_t GetBraceLevel() const;
+
+ /**
+ * @brief Set the frame brace level
+ * @param the new brace level
+ */
+ void SetBraceLevel(const size_t braceLevel);
+
+ /**
+ * @brief Returns the frame preprocessor level
+ */
+ size_t GetPpLevel() const;
+
+ /**
+ * @brief Set the frame preprocessor level
+ * @param the new preprocessor level
+ */
+ void SetPpLevel(const size_t ppLevel);
+
+ /**
+ * @brief Returns the count of special parenthesis
+ */
+ size_t GetSParenCount() const;
+
+ /**
+ * @brief Set the count of special parenthesis
+ * @param the new special parenthesis count value
+ */
+ void SetSParenCount(const size_t sParenCount);
+
+ /**
+ * @brief Returns the count of parenthesis
+ */
+ size_t GetParenCount() const;
+
+ /**
+ * @brief Set the count of parenthesis
+ * @param the new parenthesis count value
+ */
+ void SetParenCount(const size_t parenCount);
+
+ /**
+ * @brief Returns the count of statements
+ */
+ size_t GetStmtCount() const;
+
+ /**
+ * @brief Set the count of statements
+ * @param the new statement count value
+ */
+ void SetStmtCount(const size_t stmtCount);
+
+ /**
+ * @brief Returns the count of statements
+ */
+ size_t GetExprCount() const;
+
+ /**
+ * @brief Set the count of statements
+ * @param the new statement count value
+ */
+ void SetExprCount(const size_t exprCount);
+
+ /**
+ * @brief Returns the ifdef type
+ */
+ E_Token GetIfdefType() const;
+
+ /**
+ * @brief Set the ifdef type
+ * @param the new type
+ */
+ void SetIfdefType(const E_Token inIfdef);
+
+ ParenStackEntry &at(size_t idx);
+ const ParenStackEntry &at(size_t idx) const;
+
+ ParenStackEntry &prev(size_t idx = 1);
+ const ParenStackEntry &prev(size_t idx = 1) const;
+
+ ParenStackEntry &top();
+ const ParenStackEntry &top() const;
+
+ void push(Chunk *pc, const char *func, int line, E_BraceStage stage = E_BraceStage::NONE);
+ void pop(const char *func, int line, Chunk *pc);
+
+ using iterator = std::vector<ParenStackEntry>::iterator;
+ iterator begin();
+ iterator end();
+
+ using const_iterator = std::vector<ParenStackEntry>::const_iterator;
+ const_iterator begin() const;
+ const_iterator end() const;
+
+ using reverse_iterator = std::vector<ParenStackEntry>::reverse_iterator;
+ reverse_iterator rbegin();
+ reverse_iterator rend();
+
+ using const_reverse_iterator = std::vector<ParenStackEntry>::const_reverse_iterator;
+ const_reverse_iterator rbegin() const;
+ const_reverse_iterator rend() const;
+
+
+protected:
+ // Members
+ std::vector<ParenStackEntry> m_parenStack; //! The parenthesis stack
+ ParenStackEntry m_lastPopped; //! last popped frame or nullptr
+
+ size_t m_refNumber; //! frame reference number
+ size_t m_parenLevel; //! level of parens/square/angle/brace
+ size_t m_braceLevel; //! level of brace/vbrace
+ size_t m_ppLevel; //! level of preproc #if stuff
+ size_t m_sParenCount; //! count of special parenthesis
+ size_t m_parenCount; //! count of parenthesis
+ size_t m_stmtCount; //! count of statements
+ size_t m_exprCount; //! count of expressions
+ E_Token m_ifdefType; //! the ifdef type
+};
+
+
+// ------------------------------
+// ParenStackEntry inline methods
+// ------------------------------
+inline E_Token ParenStackEntry::GetOpenToken() const
+{
+ return(m_openToken);
+}
+
+
+inline void ParenStackEntry::SetOpenToken(const E_Token token)
+{
+ m_openToken = token;
+}
+
+
+inline Chunk *ParenStackEntry::GetOpenChunk() const
+{
+ return(m_openChunk);
+}
+
+
+inline void ParenStackEntry::SetOpenChunk(Chunk *chunk)
+{
+ m_openChunk = chunk;
+}
+
+
+inline size_t ParenStackEntry::GetOpenLevel() const
+{
+ return(m_openLevel);
+}
+
+
+inline void ParenStackEntry::SetOpenLevel(size_t level)
+{
+ m_openLevel = level;
+}
+
+
+inline size_t ParenStackEntry::GetOpenLine() const
+{
+ return(m_openLine);
+}
+
+
+inline void ParenStackEntry::SetOpenLine(size_t line)
+{
+ m_openLine = line;
+}
+
+
+inline size_t ParenStackEntry::GetOpenCol() const
+{
+ return(m_openCol);
+}
+
+
+inline void ParenStackEntry::SetOpenCol(size_t column)
+{
+ m_openCol = column;
+}
+
+
+inline size_t ParenStackEntry::GetBraceIndent() const
+{
+ return(m_braceIndent);
+}
+
+
+inline void ParenStackEntry::SetBraceIndent(size_t indent)
+{
+ m_braceIndent = indent;
+}
+
+
+inline size_t ParenStackEntry::GetIndent() const
+{
+ return(m_indent);
+}
+
+
+inline void ParenStackEntry::SetIndent(size_t level)
+{
+ m_indent = level;
+}
+
+
+inline size_t ParenStackEntry::GetIndentTmp() const
+{
+ return(m_indentTmp);
+}
+
+
+inline void ParenStackEntry::SetIndentTmp(size_t level)
+{
+ m_indentTmp = level;
+}
+
+
+inline size_t ParenStackEntry::GetIndentTab() const
+{
+ return(m_indentTab);
+}
+
+
+inline void ParenStackEntry::SetIndentTab(size_t level)
+{
+ m_indentTab = level;
+}
+
+
+inline size_t ParenStackEntry::GetNsCount() const
+{
+ return(m_nsCount);
+}
+
+
+inline void ParenStackEntry::SetNsCount(size_t count)
+{
+ m_nsCount = count;
+}
+
+
+inline bool ParenStackEntry::GetIndentContinue() const
+{
+ return(m_indentContinue);
+}
+
+
+inline void ParenStackEntry::SetIndentContinue(bool cont)
+{
+ m_indentContinue = cont;
+}
+
+
+inline bool ParenStackEntry::GetInPreproc() const
+{
+ return(m_inPreproc);
+}
+
+
+inline void ParenStackEntry::SetInPreproc(bool preproc)
+{
+ m_inPreproc = preproc;
+}
+
+
+inline bool ParenStackEntry::GetNonVardef() const
+{
+ return(m_nonVardef);
+}
+
+
+inline void ParenStackEntry::SetNonVardef(bool vardef)
+{
+ m_nonVardef = vardef;
+}
+
+
+inline E_Token ParenStackEntry::GetParent() const
+{
+ return(m_parent);
+}
+
+
+inline void ParenStackEntry::SetParent(const E_Token parent)
+{
+ m_parent = parent;
+}
+
+
+inline E_BraceStage ParenStackEntry::GetStage() const
+{
+ return(m_stage);
+}
+
+
+inline void ParenStackEntry::SetStage(const E_BraceStage stage)
+{
+ m_stage = stage;
+}
+
+
+inline const IndentationData &ParenStackEntry::GetIndentData() const
+{
+ return(m_indentationData);
+}
+
+
+inline IndentationData &ParenStackEntry::IndentData()
+{
+ return(m_indentationData);
+}
+
+
+inline Chunk *ParenStackEntry::GetPopChunk() const
+{
+ return(m_popChunk);
+}
+
+
+inline void ParenStackEntry::SetPopChunk(Chunk *chunk)
+{
+ m_popChunk = chunk;
+}
+
+
+// ------------------------------
+// ParsingFrame inline methods
+// ------------------------------
+inline bool ParsingFrame::empty() const
+{
+ return(m_parenStack.empty());
+}
+
+
+inline size_t ParsingFrame::size() const
+{
+ return(m_parenStack.size());
+}
+
+
+inline const ParenStackEntry &ParsingFrame::lastPopped() const
+{
+ return(m_lastPopped);
+}
+
+
+inline size_t ParsingFrame::GetRefNumber() const
+{
+ return(m_refNumber);
+}
+
+
+inline void ParsingFrame::SetRefNumber(const size_t refNo)
+{
+ m_refNumber = refNo;
+}
+
+
+inline size_t ParsingFrame::GetParenLevel() const
+{
+ return(m_parenLevel);
+}
+
+
+inline void ParsingFrame::SetParenLevel(const size_t parenLevel)
+{
+ m_parenLevel = parenLevel;
+}
+
+
+inline size_t ParsingFrame::GetBraceLevel() const
+{
+ return(m_braceLevel);
+}
+
+
+inline void ParsingFrame::SetBraceLevel(const size_t braceLevel)
+{
+ m_braceLevel = braceLevel;
+}
+
+
+inline size_t ParsingFrame::GetPpLevel() const
+{
+ return(m_ppLevel);
+}
+
+
+inline void ParsingFrame::SetPpLevel(const size_t ppLevel)
+{
+ m_ppLevel = ppLevel;
+}
+
+
+inline size_t ParsingFrame::GetSParenCount() const
+{
+ return(m_sParenCount);
+}
+
+
+inline void ParsingFrame::SetSParenCount(const size_t sParenCount)
+{
+ m_sParenCount = sParenCount;
+}
+
+
+inline size_t ParsingFrame::GetParenCount() const
+{
+ return(m_parenCount);
+}
+
+
+inline void ParsingFrame::SetParenCount(const size_t parenCount)
+{
+ m_parenCount = parenCount;
+}
+
+
+inline size_t ParsingFrame::GetStmtCount() const
+{
+ return(m_stmtCount);
+}
+
+
+inline void ParsingFrame::SetStmtCount(const size_t stmtCount)
+{
+ m_stmtCount = stmtCount;
+}
+
+
+inline size_t ParsingFrame::GetExprCount() const
+{
+ return(m_exprCount);
+}
+
+
+inline void ParsingFrame::SetExprCount(const size_t exprCount)
+{
+ m_exprCount = exprCount;
+}
+
+
+inline E_Token ParsingFrame::GetIfdefType() const
+{
+ return(m_ifdefType);
+}
+
+
+inline void ParsingFrame::SetIfdefType(const E_Token inIfdef)
+{
+ m_ifdefType = inIfdef;
+}
+
+
+inline ParenStackEntry &ParsingFrame::at(size_t idx)
+{
+ return(m_parenStack.at(idx));
+}
+
+
+inline const ParenStackEntry &ParsingFrame::at(size_t idx) const
+{
+ return(m_parenStack.at(idx));
+}
+
+
+inline ParsingFrame::iterator ParsingFrame::begin()
+{
+ return(std::begin(m_parenStack));
+}
+
+
+inline ParsingFrame::const_iterator ParsingFrame::begin() const
+{
+ return(std::begin(m_parenStack));
+}
+
+
+inline ParsingFrame::reverse_iterator ParsingFrame::rbegin()
+{
+ return(m_parenStack.rbegin());
+}
+
+
+inline ParsingFrame::const_reverse_iterator ParsingFrame::rbegin() const
+{
+ return(m_parenStack.rbegin());
+}
+
+
+inline ParsingFrame::iterator ParsingFrame::end()
+{
+ return(std::end(m_parenStack));
+}
+
+
+inline ParsingFrame::const_iterator ParsingFrame::end() const
+{
+ return(std::end(m_parenStack));
+}
+
+
+inline ParsingFrame::reverse_iterator ParsingFrame::rend()
+{
+ return(m_parenStack.rend());
+}
+
+
+inline ParsingFrame::const_reverse_iterator ParsingFrame::rend() const
+{
+ return(m_parenStack.rend());
+}
+
+
+#endif /* PARSING_FRAME_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame_stack.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame_stack.cpp
new file mode 100644
index 00000000..7a370b16
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame_stack.cpp
@@ -0,0 +1,353 @@
+/**
+ * @file parsing_frame_stack.cpp
+ * mainly used to handle preprocessor stuff
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "parsing_frame_stack.h"
+
+#include "prototypes.h"
+
+
+namespace
+{
+
+typedef std::vector<ParsingFrame> ParsingFrameOrigStack;
+
+void fl_log_frms(log_sev_t logsev, const char *txt, const ParsingFrame &frm, const ParsingFrameOrigStack &frames);
+
+
+//! Logs the entire parse frame stack
+void fl_log_all(log_sev_t logsev, const ParsingFrameOrigStack &frames);
+
+
+/**
+ * Copy the top element of the frame list into the ParsingFrame.
+ *
+ * If the frame list is empty nothing happens.
+ *
+ * This is called on #else and #elif.
+ */
+void fl_copy_tos(ParsingFrame &pf, const ParsingFrameOrigStack &frames);
+
+
+/**
+ * Copy the 2nd top element off the list into the ParsingFrame.
+ * This is called on #else and #elif.
+ * The stack contains [...] [base] [if] at this point.
+ * We want to copy [base].
+ */
+void fl_copy_2nd_tos(ParsingFrame &pf, const ParsingFrameOrigStack &frames);
+
+
+//! Deletes the top element from the list.
+void fl_trash_tos(ParsingFrameOrigStack &frames);
+
+
+//! Logs one parse frame
+void fl_log(log_sev_t logsev, const ParsingFrame &frm)
+{
+ LOG_FMT(logsev, "[%s] Brace level=%zu Paren level=%zu PseTos=%zu\n",
+ get_token_name(frm.GetIfdefType()), frm.GetBraceLevel(), frm.GetParenLevel(), frm.size() - 1);
+
+ LOG_FMT(logsev, " *");
+
+ for (size_t idx = 1; idx < frm.size(); idx++)
+ {
+ LOG_FMT(logsev, " [%s-%s]", get_token_name(frm.at(idx).GetOpenToken()),
+ get_brace_stage_name(frm.at(idx).GetStage()));
+ }
+
+ LOG_FMT(logsev, "\n");
+}
+
+
+void fl_log_frms(log_sev_t logsev,
+ const char *txt,
+ const ParsingFrame &frm,
+ const ParsingFrameOrigStack &frames)
+{
+ LOG_FMT(logsev, "%s Parse Frames(%zu):", txt, frames.size());
+
+ for (const auto &frame : frames)
+ {
+ LOG_FMT(logsev, " [%s-%zu]", get_token_name(frame.GetIfdefType()),
+ frame.GetRefNumber());
+ }
+
+ LOG_FMT(logsev, "-[%s-%zu]\n", get_token_name(frm.GetIfdefType()), frm.GetRefNumber());
+}
+
+
+void fl_log_all(log_sev_t logsev, const ParsingFrameOrigStack &frames)
+{
+ LOG_FMT(logsev, "##=- Parse Frame : %zu entries\n", frames.size());
+
+ for (size_t idx = 0; idx < frames.size(); idx++)
+ {
+ LOG_FMT(logsev, "## idx is %zu, ", idx);
+
+ fl_log(logsev, frames.at(idx));
+ }
+
+ LOG_FMT(logsev, "##=-\n");
+}
+
+
+void fl_copy_tos(ParsingFrame &pf, const ParsingFrameOrigStack &frames)
+{
+ if (!frames.empty())
+ {
+ pf = *std::prev(std::end(frames));
+ }
+ LOG_FMT(LPF, "%s(%d): frame_count is %zu\n", __func__, __LINE__, frames.size());
+}
+
+
+void fl_copy_2nd_tos(ParsingFrame &pf, const ParsingFrameOrigStack &frames)
+{
+ if (frames.size() > 1)
+ {
+ pf = *std::prev(std::end(frames), 2);
+ }
+ LOG_FMT(LPF, "%s(%d): frame_count is %zu\n", __func__, __LINE__, frames.size());
+}
+
+
+void fl_trash_tos(ParsingFrameOrigStack &frames)
+{
+ if (!frames.empty())
+ {
+ frames.pop_back();
+ }
+ LOG_FMT(LPF, "%s(%d): frame_count is %zu\n", __func__, __LINE__, frames.size());
+}
+
+} // namespace
+
+
+ParsingFrameStack::ParsingFrameStack()
+ : m_frames()
+{
+}
+
+
+void ParsingFrameStack::push(ParsingFrame &frm)
+{
+ static int seq_ref_no = 1;
+
+ m_frames.push_back(frm);
+ frm.SetRefNumber(seq_ref_no++);
+
+ LOG_FMT(LPF, "%s(%d): frame_count is %zu\n", __func__, __LINE__, m_frames.size());
+}
+
+
+void ParsingFrameStack::pop(ParsingFrame &pf)
+{
+ if (m_frames.empty())
+ {
+ return;
+ }
+ fl_copy_tos(pf, m_frames);
+ fl_trash_tos(m_frames);
+}
+
+
+int ParsingFrameStack::check(ParsingFrame &frm, int &pp_level, Chunk *pc)
+{
+ if (pc->IsNot(CT_PREPROC))
+ {
+ return(pp_level);
+ }
+ Chunk *next = pc->GetNext();
+
+ if (next->IsNullChunk())
+ {
+ return(pp_level);
+ }
+
+ if (pc->GetParentType() != next->GetType())
+ {
+ LOG_FMT(LNOTE, "%s(%d): Preproc parent not set correctly on orig line %zu: got %s expected %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), get_token_name(pc->GetParentType()),
+ get_token_name(next->GetType()));
+ pc->SetParentType(next->GetType());
+ }
+ LOG_FMT(LPFCHK, "%s(%d): orig line is %zu, %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), get_token_name(pc->GetParentType()));
+ fl_log_frms(LPFCHK, "TOP", frm, m_frames);
+
+
+ int out_pp_level = pp_level;
+ const E_Token in_ifdef = frm.GetIfdefType();
+ const size_t b4_cnt = m_frames.size();
+
+ const char *txt = nullptr;
+
+ if (pc->TestFlags(PCF_IN_PREPROC))
+ {
+ LOG_FMT(LPF, " <In> ");
+ fl_log(LPF, frm);
+
+ if (pc->GetParentType() == CT_PP_IF)
+ {
+ // An #if pushes a copy of the current frame on the stack
+ pp_level++;
+ push(frm);
+ frm.SetIfdefType(CT_PP_IF);
+ txt = "if-push";
+ }
+ else if (pc->GetParentType() == CT_PP_ELSE)
+ {
+ if (out_pp_level == 0)
+ {
+ fprintf(stderr, "%s(%d): pp level is ZERO, cannot be decremented, at line %zu, column %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ out_pp_level--;
+
+ /*
+ * For #else of #elif, we want to keep the #if part and throw out the
+ * else parts.
+ * We check to see what the top type is to see if we just push or
+ * pop and then push.
+ * We need to use the copy right before the if.
+ */
+ bool if_block = false;
+
+ if (frm.GetIfdefType() == CT_PP_IF)
+ {
+ // we have [...] [base]-[if], so push an [else]
+ push(frm);
+ frm.SetIfdefType(CT_PP_ELSE);
+ if_block = true;
+ }
+ size_t brace_level = frm.GetBraceLevel();
+ // we have [...] [base] [if]-[else], copy [base] over [else]
+ fl_copy_2nd_tos(frm, m_frames);
+ frm.SetIfdefType(CT_PP_ELSE);
+
+ if (if_block)
+ {
+ // check if #if block was unbalanced
+ size_t base_brace_level = m_frames[m_frames.size() - 2].GetBraceLevel();
+
+ if ( options::pp_warn_unbalanced_if()
+ && brace_level != base_brace_level)
+ {
+ LOG_FMT(LWARN, "%s(%d): orig line is %zu, unbalanced #if block braces (1), in-level is %zu, out-level is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), base_brace_level, brace_level);
+ }
+ }
+ else
+ {
+ // check if previous #else block has a different indentation than the corresponding #if block
+ size_t if_brace_level = m_frames[m_frames.size() - 1].GetBraceLevel();
+
+ if ( options::pp_warn_unbalanced_if()
+ && brace_level != if_brace_level)
+ {
+ LOG_FMT(LWARN, "%s(%d): orig line is %zu, unbalanced #if-#else block braces (1), #else out-level is %zu, #if out-level is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), brace_level, if_brace_level);
+ }
+ }
+ txt = "else-push";
+ }
+ else if (pc->GetParentType() == CT_PP_ENDIF)
+ {
+ /*
+ * we may have [...] [base] [if]-[else] or [...] [base]-[if].
+ * Throw out the [else].
+ */
+ if (pp_level == 0)
+ {
+ // cpd.pp_level is ZERO, cannot be decremented.
+ fprintf(stderr, "%s(%d): #endif found, at line %zu, column %zu, without corresponding #if\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ pp_level--;
+
+ if (out_pp_level == 0)
+ {
+ fprintf(stderr, "%s(%d): pp level is ZERO, cannot be decremented, at line %zu, column %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ out_pp_level--;
+
+ if (frm.GetIfdefType() == CT_PP_ELSE)
+ {
+ size_t brace_level = frm.GetBraceLevel(); // brace level or current #else block
+ /*
+ * We have: [...] [base] [if]-[else]
+ * We want: [...]-[if]
+ */
+ fl_copy_tos(frm, m_frames); // [...] [base] [if]-[if]
+
+ if ( options::pp_warn_unbalanced_if()
+ && brace_level != frm.GetBraceLevel())
+ {
+ LOG_FMT(LWARN, "%s(%d): orig line is %zu, unbalanced #if-#else block braces (2), #else out-level is %zu, #if out-level is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), brace_level, frm.GetBraceLevel());
+ }
+
+ if (m_frames.size() < 2)
+ {
+ fprintf(stderr, "Number of 'frame' is too small.\n");
+ fprintf(stderr, "Please make a report.\n");
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ frm.SetIfdefType(m_frames[m_frames.size() - 2].GetIfdefType());
+ fl_trash_tos(m_frames); // [...] [base]-[if]
+ fl_trash_tos(m_frames); // [...]-[if]
+
+ txt = "endif-trash/pop";
+ }
+ else if (frm.GetIfdefType() == CT_PP_IF)
+ {
+ /*
+ * We have: [...] [base] [if]
+ * We want: [...] [base]
+ */
+ // check if #if block was unbalanced
+ size_t brace_level = frm.GetBraceLevel();
+ pop(frm);
+
+ if ( options::pp_warn_unbalanced_if()
+ && brace_level != frm.GetBraceLevel())
+ {
+ LOG_FMT(LWARN, "%s(%d): orig line is %zu, unbalanced #if block braces (2), in-level is %zu, out-level is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), frm.GetBraceLevel(), brace_level);
+ }
+ txt = "endif-pop";
+ }
+ else
+ {
+ txt = "???";
+ }
+ }
+ }
+
+ if (txt != nullptr)
+ {
+ LOG_FMT(LPF, "%s(%d): orig line is %zu, type is %s: %s ifdef token is %s/%s, counts is %zu, frame_count is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(),
+ get_token_name(pc->GetParentType()), txt, get_token_name(in_ifdef),
+ get_token_name(frm.GetIfdefType()), b4_cnt, m_frames.size());
+ fl_log_all(LPF, m_frames);
+ LOG_FMT(LPF, " <Out>");
+ fl_log(LPF, frm);
+ }
+ fl_log_frms(LPFCHK, "END", frm, m_frames);
+
+ return(out_pp_level);
+} // check
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame_stack.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame_stack.h
new file mode 100644
index 00000000..0cc908dc
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/parsing_frame_stack.h
@@ -0,0 +1,43 @@
+/**
+ * @file parsing_frame_stack.h
+ * mainly used to handle preprocessor stuff
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef PARSING_FRAME_STACK_H_INCLUDED
+#define PARSING_FRAME_STACK_H_INCLUDED
+
+#include "parsing_frame.h"
+
+//! Class describing a parsing frame stack
+class ParsingFrameStack
+{
+public:
+ ParsingFrameStack();
+
+ /**
+ * Push a copy of a ParsingFrame onto the frame stack.
+ */
+ void push(ParsingFrame &frm);
+
+
+ /**
+ * Pop and return the top element of the frame stack.
+ * TODO: return the frame rather than passing it as argument
+ */
+ void pop(ParsingFrame &pf);
+
+
+ // TODO: this name is dumb:
+ // - what is it checking?
+ // - why does is much more than simple checks, it allters kinds of stuff
+ //! Returns the pp_indent to use for this line
+ int check(ParsingFrame &frm, int &pp_level, Chunk *pc);
+
+private:
+ std::vector<ParsingFrame> m_frames;
+};
+
+#endif /* PARSING_FRAME_STACK_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/pcf_flags.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/pcf_flags.cpp
new file mode 100644
index 00000000..1b8722e4
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/pcf_flags.cpp
@@ -0,0 +1,105 @@
+/**
+ * @file pcf_flags.cpp
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#include "pcf_flags.h"
+
+static const char *pcf_names[] =
+{
+ "IN_PREPROC", // 0
+ "IN_STRUCT", // 1
+ "IN_ENUM", // 2
+ "IN_FCN_DEF", // 3
+ "IN_FCN_CALL", // 4
+ "IN_SPAREN", // 5
+ "IN_TEMPLATE", // 6
+ "IN_TYPEDEF", // 7
+ "IN_CONST_ARGS", // 8
+ "IN_ARRAY_ASSIGN", // 9
+ "IN_CLASS", // 10
+ "IN_CLASS_BASE", // 11
+ "IN_NAMESPACE", // 12
+ "IN_FOR", // 13
+ "IN_OC_MSG", // 14
+ "IN_WHERE_SPEC", // 15
+ "IN_DECLTYPE", // 16
+ "FORCE_SPACE", // 17
+ "STMT_START", // 18
+ "EXPR_START", // 19
+ "DONT_INDENT", // 20
+ "ALIGN_START", // 21
+ "WAS_ALIGNED", // 22
+ "VAR_TYPE", // 23
+ "VAR_DEF", // 24
+ "VAR_1ST", // 25
+ "VAR_INLINE", // 26
+ "RIGHT_COMMENT", // 27
+ "OLD_FCN_PARAMS", // 28
+ "LVALUE", // 29
+ "ONE_LINER", // 30
+ "EMPTY_BODY", // 31
+ "ANCHOR", // 32
+ "PUNCTUATOR", // 33
+ "INSERTED", // 34
+ "LONG_BLOCK", // 35
+ "OC_BOXED", // 36
+ "KEEP_BRACE", // 37
+ "OC_RTYPE", // 38
+ "OC_ATYPE", // 39
+ "WF_ENDIF", // 40
+ "IN_QT_MACRO", // 41
+ "IN_FCN_CTOR", // 42 Issue #2152
+ "IN_TRY_BLOCK", // 43 Issue #1734
+ "INCOMPLETE", // 44
+ "IN_LAMBDA", // 45
+ "WF_IF", // 46
+ "NOT_POSSIBLE", // 47
+ "IN_CONDITIONAL", // 48 Issue #3558
+ "OC_IN_BLOCK", // 49
+ "CONT_LINE", // 50
+};
+
+
+std::string pcf_flags_str(PcfFlags flags)
+{
+ char buffer[64];
+
+ // Generate hex representation first
+ snprintf(buffer, 63, "[0x%llx:", (long long unsigned int)(flags));
+
+ // Add human-readable names
+ auto out = std::string{ buffer };
+ auto first = true;
+
+ for (size_t i = 0; i < ARRAY_SIZE(pcf_names); ++i)
+ {
+ if (flags & static_cast<E_PcfFlag>(pcf_bit(i)))
+ {
+ if (first)
+ {
+ first = false;
+ }
+ else
+ {
+ out += ',';
+ }
+ out += pcf_names[i];
+ }
+ }
+
+ out += ']';
+ return(out);
+}
+
+
+void log_pcf_flags(log_sev_t sev, PcfFlags flags)
+{
+ if (!log_sev_on(sev))
+ {
+ return;
+ }
+ log_fmt(sev, " chunk flags: %s\n", pcf_flags_str(flags).c_str());
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/pcf_flags.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/pcf_flags.h
new file mode 100644
index 00000000..7f09edb1
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/pcf_flags.h
@@ -0,0 +1,100 @@
+/**
+ * @file pcf_flags.h
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#ifndef PCF_FLAGS_STR_INCLUDED
+#define PCF_FLAGS_STR_INCLUDED
+
+#include "base_types.h"
+#include "enum_flags.h"
+#include "logger.h"
+
+//// and the ever-so-important array size macro
+//#ifndef ARRAY_SIZE
+//#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+//#endif
+
+using namespace std;
+
+
+constexpr auto pcf_bit(size_t b) -> decltype(0ULL)
+{
+ return(1ULL << b);
+}
+
+enum E_PcfFlag : decltype ( 0ULL )
+{
+// Copy flags are in the lower 17 bits
+ PCF_NONE = 0ULL,
+ PCF_COPY_FLAGS = 0x0001ffffULL,
+ PCF_IN_PREPROC = pcf_bit(0), //! in a preprocessor
+ PCF_IN_STRUCT = pcf_bit(1), //! in a struct
+ PCF_IN_ENUM = pcf_bit(2), //! in enum
+ PCF_IN_FCN_DEF = pcf_bit(3), //! inside function def parens
+ PCF_IN_FCN_CALL = pcf_bit(4), //! inside function call parens
+ PCF_IN_SPAREN = pcf_bit(5), //! inside for/if/while/switch parens
+ PCF_IN_TEMPLATE = pcf_bit(6),
+ PCF_IN_TYPEDEF = pcf_bit(7),
+ PCF_IN_CONST_ARGS = pcf_bit(8),
+ PCF_IN_ARRAY_ASSIGN = pcf_bit(9),
+ PCF_IN_CLASS = pcf_bit(10),
+ PCF_IN_CLASS_BASE = pcf_bit(11),
+ PCF_IN_NAMESPACE = pcf_bit(12),
+ PCF_IN_FOR = pcf_bit(13),
+ PCF_IN_OC_MSG = pcf_bit(14),
+ PCF_IN_WHERE_SPEC = pcf_bit(15), /* inside C# 'where' constraint clause on class or function def */
+ PCF_IN_DECLTYPE = pcf_bit(16),
+
+// Non-Copy flags are in the upper 47 bits
+ PCF_FORCE_SPACE = pcf_bit(17), //! must have a space after this token
+ PCF_STMT_START = pcf_bit(18), //! marks the start of a statement
+ PCF_EXPR_START = pcf_bit(19),
+ PCF_DONT_INDENT = pcf_bit(20), //! already aligned!
+ PCF_ALIGN_START = pcf_bit(21),
+ PCF_WAS_ALIGNED = pcf_bit(22),
+ PCF_VAR_TYPE = pcf_bit(23), //! part of a variable def type
+ PCF_VAR_DEF = pcf_bit(24), //! variable name in a variable def
+ PCF_VAR_1ST = pcf_bit(25), //! 1st variable def in a statement
+ PCF_VAR_1ST_DEF = (PCF_VAR_DEF | PCF_VAR_1ST),
+ PCF_VAR_INLINE = pcf_bit(26), //! type was an inline struct/enum/union
+ PCF_RIGHT_COMMENT = pcf_bit(27),
+ PCF_OLD_FCN_PARAMS = pcf_bit(28),
+ PCF_LVALUE = pcf_bit(29), //! left of assignment
+ PCF_ONE_LINER = pcf_bit(30),
+ PCF_ONE_CLASS = (PCF_ONE_LINER | PCF_IN_CLASS),
+ PCF_EMPTY_BODY = pcf_bit(31),
+ PCF_ANCHOR = pcf_bit(32), //! aligning anchor
+ PCF_PUNCTUATOR = pcf_bit(33),
+ PCF_INSERTED = pcf_bit(34), //! chunk was inserted from another file
+ PCF_LONG_BLOCK = pcf_bit(35), //! the block is 'long' by some measure
+ PCF_OC_BOXED = pcf_bit(36), //! inside OC boxed expression
+ PCF_KEEP_BRACE = pcf_bit(37), //! do not remove brace
+ PCF_OC_RTYPE = pcf_bit(38), //! inside OC return type
+ PCF_OC_ATYPE = pcf_bit(39), //! inside OC arg type
+ PCF_WF_ENDIF = pcf_bit(40), //! #endif for whole file ifdef
+ PCF_IN_QT_MACRO = pcf_bit(41), //! in a QT-macro, i.e. SIGNAL, SLOT
+ PCF_IN_FCN_CTOR = pcf_bit(42), //! inside function constructor
+ PCF_IN_TRY_BLOCK = pcf_bit(43), //! inside Function-try-block
+ PCF_INCOMPLETE = pcf_bit(44), //! class/struct forward declaration
+ PCF_IN_LAMBDA = pcf_bit(45), //! inside a lambda expression
+ PCF_WF_IF = pcf_bit(46), //! #if for a whole file ifdef
+ PCF_NOT_POSSIBLE = pcf_bit(47), //! it is not possible to make an one_liner
+ //! because the line would be too long
+ PCF_IN_CONDITIONAL = pcf_bit(48), //! inside a conditional ternary expression
+ PCF_OC_IN_BLOCK = pcf_bit(49), //! inside OC block function
+ PCF_CONT_LINE = pcf_bit(50), //! continuation line split
+};
+
+UNC_DECLARE_FLAGS(PcfFlags, E_PcfFlag);
+UNC_DECLARE_OPERATORS_FOR_FLAGS(PcfFlags);
+
+std::string pcf_flags_str(PcfFlags flags);
+
+
+void log_pcf_flags(log_sev_t sev, PcfFlags flags);
+
+
+#endif /* PCF_FLAGS_STR_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/pragma_cleanup.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/pragma_cleanup.cpp
index 336a1272..336a1272 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/pragma_cleanup.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/pragma_cleanup.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/pragma_cleanup.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/pragma_cleanup.h
index 47a3a03d..47a3a03d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/pragma_cleanup.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/pragma_cleanup.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/prototypes.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/prototypes.h
index 55fe35b6..55fe35b6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/prototypes.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/prototypes.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/punctuators.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/punctuators.cpp
new file mode 100644
index 00000000..1d1aab3d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/punctuators.cpp
@@ -0,0 +1,86 @@
+/**
+ * @file punctuators.cpp
+ * Manages the table of punctuators.
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "punctuators.h"
+
+//#include "log_rules.h"
+#include "prototypes.h"
+
+#include <algorithm>
+
+constexpr static auto LCURRENT = LOTHER;
+
+using namespace std;
+using namespace uncrustify;
+
+
+/**
+ *
+ * The file "punctuator_table.h" was generated by punc.py from this file.
+ * If you change one of the below symbol tables, re-run punc.py.
+ * $ python scripts/punc.py > src/punctuator_table.h
+ * now automatically with CMakeLists.txt
+ * Automatically generated by <code>scripts/make_punctuator_table.py</code>
+ *
+ * NOTE: the tables below do not need to be sorted.
+ */
+
+#include "symbols_table.h"
+// must be positioned here, after all symbolsX[], because punc_table uses them
+#include "punctuator_table.h"
+
+
+const chunk_tag_t *find_punctuator(const char *str, int lang_flags)
+{
+ if ( str == nullptr
+ || str[0] == '\0')
+ {
+ return(nullptr);
+ }
+ const auto binary_find = [](const lookup_entry_t *first, const lookup_entry_t *last, const char &value)
+ {
+ const auto tmp = std::lower_bound(first, last, value,
+ lookup_entry_t::comperator());
+
+ return((value == tmp->ch) ? tmp : nullptr);
+ };
+
+ const chunk_tag_t *match = nullptr;
+ const auto *parent = punc_table; //!< graph in table form, initially point at first entry
+ auto ch_idx = int{};
+
+ while ( ch_idx < 6
+ && str[ch_idx] != '\0') //!< symbols6: max punc len = 6
+ {
+ // search for next parent node in all current child nodes
+ parent = binary_find(parent, next(parent, parent->left_in_group), str[ch_idx]);
+
+ if (parent == nullptr)
+ {
+ break; // no nodes found with the searched char
+ }
+ log_rule_B("enable_digraphs");
+
+ if ( parent->tag != nullptr
+ && (parent->tag->lang_flags & lang_flags) != 0 // punctuator lang and processing lang match
+ && ( (parent->tag->lang_flags & FLAG_DIG) == 0 // punctuator is not a di/tri-graph
+ || options::enable_digraphs())) // or di/tri-graph processing is enabled
+ {
+ match = parent->tag;
+ }
+
+ if (parent->next_idx == 0)
+ {
+ break; // no child nodes, leaf reached
+ }
+ parent = &punc_table[parent->next_idx]; // point at the first child node
+ ch_idx++;
+ continue;
+ }
+ return(match);
+} // find_punctuator
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/punctuators.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/punctuators.h
index ed4c3fa5..ed4c3fa5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/punctuators.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/punctuators.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/quick_align_again.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/quick_align_again.cpp
new file mode 100644
index 00000000..640abba9
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/quick_align_again.cpp
@@ -0,0 +1,53 @@
+/**
+ * @file quick_align_again.cpp
+ *
+ * @author Guy Maurel
+ * split from align.cpp
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "quick_align_again.h"
+
+#include "align_stack.h"
+#include "chunk.h"
+
+
+void quick_align_again()
+{
+ LOG_FUNC_ENTRY();
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ char copy[1000];
+ LOG_FMT(LALAGAIN, "%s(%d): orig line is %zu, orig col is %zu, column is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetColumn(), pc->ElidedText(copy));
+
+ if ( pc->GetAlignData().next->IsNotNullChunk()
+ && pc->TestFlags(PCF_ALIGN_START))
+ {
+ AlignStack as;
+ as.Start(100, 0);
+ as.m_right_align = pc->GetAlignData().right_align;
+ as.m_star_style = static_cast<AlignStack::StarStyle>(pc->GetAlignData().star_style);
+ as.m_amp_style = static_cast<AlignStack::StarStyle>(pc->GetAlignData().amp_style);
+ as.m_gap = pc->GetAlignData().gap;
+
+ LOG_FMT(LALAGAIN, "%s(%d): pc->Text() is '%s', orig line is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine());
+ as.Add(pc->GetAlignData().start);
+ pc->SetFlagBits(PCF_WAS_ALIGNED);
+
+ for (Chunk *tmp = pc->GetAlignData().next; tmp->IsNotNullChunk(); tmp = tmp->GetAlignData().next)
+ {
+ tmp->SetFlagBits(PCF_WAS_ALIGNED);
+ as.Add(tmp->GetAlignData().start);
+ LOG_FMT(LALAGAIN, "%s(%d): => tmp->Text() is '%s', orig line is %zu\n",
+ __func__, __LINE__, tmp->Text(), tmp->GetOrigLine());
+ }
+
+ LOG_FMT(LALAGAIN, "\n");
+ as.End();
+ }
+ }
+} // quick_align_again
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/quick_align_again.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/quick_align_again.h
index c370c612..c370c612 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/quick_align_again.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/quick_align_again.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/remove_duplicate_include.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/remove_duplicate_include.cpp
index e06029f1..e06029f1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/remove_duplicate_include.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/remove_duplicate_include.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/remove_duplicate_include.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/remove_duplicate_include.h
index c58416c2..c58416c2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/remove_duplicate_include.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/remove_duplicate_include.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/remove_extra_returns.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/remove_extra_returns.cpp
new file mode 100644
index 00000000..221e97b4
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/remove_extra_returns.cpp
@@ -0,0 +1,87 @@
+/**
+ * @file remove_extra_returns.cpp
+ *
+ * @author Guy Maurel
+ * October 2015, 2016
+ * @license GPL v2+
+ * extract from combine.cpp
+ */
+
+#include "remove_extra_returns.h"
+
+#include "chunk.h"
+#include "uncrustify.h"
+
+
+void remove_extra_returns()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc = Chunk::GetHead();
+
+ while (pc->IsNotNullChunk())
+ {
+ LOG_FMT(LRMRETURN, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s', type is %s, parent type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(),
+ get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
+
+ if ( pc->Is(CT_RETURN)
+ && !pc->TestFlags(PCF_IN_PREPROC))
+ {
+ // we might be in a class, check it Issue #2705
+ // look for a closing brace
+ bool remove_it = false;
+ Chunk *closing_brace = pc->GetNextType(CT_BRACE_CLOSE, 1);
+ LOG_FMT(LRMRETURN, "%s(%d): on orig line %zu, level is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetLevel());
+
+ if (closing_brace->IsNotNullChunk())
+ {
+ if (closing_brace->GetParentType() == CT_FUNC_CLASS_DEF)
+ {
+ // we have a class. Do nothing
+ }
+ else if ( closing_brace->GetParentType() == CT_FUNC_DEF
+ && pc->GetLevel() < 2)
+ {
+ remove_it = true;
+ }
+ }
+ else
+ {
+ // it is not a class
+ // look for a closing brace
+ // make sure we are at level 1 because 'return' could
+ // be part of nested 'if' blocks
+ closing_brace = pc->GetNextType(CT_BRACE_CLOSE, 0);
+ LOG_FMT(LRMRETURN, "%s(%d): on orig line %zu, level is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetLevel());
+
+ if (closing_brace->IsNotNullChunk())
+ {
+ if ( closing_brace->GetParentType() == CT_FUNC_DEF
+ && pc->GetLevel() < 2)
+ {
+ remove_it = true;
+ }
+ }
+ }
+
+ if (remove_it)
+ {
+ Chunk *semicolon = pc->GetNextNcNnl();
+
+ if ( semicolon->IsNotNullChunk()
+ && semicolon->Is(CT_SEMICOLON))
+ {
+ LOG_FMT(LRMRETURN, "%s(%d): Removed 'return;' on orig line %zu\n",
+ __func__, __LINE__, pc->GetOrigLine());
+ Chunk::Delete(pc);
+ Chunk::Delete(semicolon);
+ pc = closing_brace;
+ }
+ }
+ }
+ pc = pc->GetNext();
+ }
+} // remove_extra_returns
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/remove_extra_returns.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/remove_extra_returns.h
index 85fc6429..85fc6429 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/remove_extra_returns.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/remove_extra_returns.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/rewrite_infinite_loops.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/rewrite_infinite_loops.cpp
index 6b97ea7d..6b97ea7d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/rewrite_infinite_loops.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/rewrite_infinite_loops.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/rewrite_infinite_loops.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/rewrite_infinite_loops.h
index 5b8f3fee..5b8f3fee 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/rewrite_infinite_loops.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/rewrite_infinite_loops.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/semicolons.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/semicolons.cpp
new file mode 100644
index 00000000..569f5271
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/semicolons.cpp
@@ -0,0 +1,151 @@
+/**
+ * @file semicolons.cpp
+ * Removes extra semicolons
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "semicolons.h"
+
+#include "prototypes.h"
+
+
+static void remove_semicolon(Chunk *pc);
+
+
+/**
+ * We are on a semicolon that is after an unidentified brace close.
+ * Check for what is before the brace open.
+ * Do not remove if it is a square close, word, type, or paren close.
+ */
+static void check_unknown_brace_close(Chunk *semi, Chunk *brace_close);
+
+
+static void remove_semicolon(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LDELSEMI, "%s(%d): Removed semicolon: orig line is %zu, orig col is %zu",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
+ log_func_stack_inline(LDELSEMI);
+ // TODO: do we want to shift stuff back a column?
+ Chunk::Delete(pc);
+}
+
+
+void remove_extra_semicolons()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc = Chunk::GetHead();
+
+ while (pc->IsNotNullChunk())
+ {
+ Chunk *next = pc->GetNextNcNnl();
+ Chunk *prev;
+
+ if ( pc->Is(CT_SEMICOLON)
+ && !pc->TestFlags(PCF_IN_PREPROC)
+ && (prev = pc->GetPrevNcNnl())->IsNotNullChunk())
+ {
+ LOG_FMT(LSCANSEMI, "%s(%d): Semi orig line is %zu, orig col is %zu, parent is %s, prev = '%s' [%s/%s]\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetParentType()),
+ prev->Text(),
+ get_token_name(prev->GetType()), get_token_name(prev->GetParentType()));
+
+ if (pc->GetParentType() == CT_TYPEDEF)
+ {
+ // keep it
+ }
+ else if ( prev->Is(CT_BRACE_CLOSE)
+ && ( prev->GetParentType() == CT_ELSE
+ || prev->GetParentType() == CT_ELSEIF
+ || prev->GetParentType() == CT_FOR
+ || prev->GetParentType() == CT_FUNC_CLASS_DEF
+ || prev->GetParentType() == CT_FUNC_DEF
+ || prev->GetParentType() == CT_IF
+ || prev->GetParentType() == CT_NAMESPACE
+ || prev->GetParentType() == CT_OC_MSG_DECL
+ || prev->GetParentType() == CT_SWITCH
+ || prev->GetParentType() == CT_USING_STMT
+ || prev->GetParentType() == CT_WHILE))
+ {
+ // looking for code block vs. initialisation
+ bool code_block_found = true;
+ Chunk *closing_brace = pc->GetPrevNcNnl(); // Issue #3506
+
+ if (closing_brace->IsNotNullChunk())
+ {
+ Chunk *opening_brace = closing_brace->GetOpeningParen();
+
+ if (opening_brace->IsNotNullChunk())
+ {
+ Chunk *equal_sign = opening_brace->GetPrevNcNnl();
+
+ if ( equal_sign->IsNotNullChunk()
+ && equal_sign->Is(CT_ASSIGN))
+ {
+ // initialisation found
+ code_block_found = false;
+ }
+ }
+ }
+
+ if (code_block_found)
+ {
+ // code block found
+ remove_semicolon(pc);
+ }
+ }
+ else if ( prev->Is(CT_BRACE_CLOSE)
+ && prev->GetParentType() == CT_NONE)
+ {
+ check_unknown_brace_close(pc, prev);
+ }
+ else if ( prev->Is(CT_SEMICOLON)
+ && prev->GetParentType() != CT_FOR)
+ {
+ remove_semicolon(pc);
+ }
+ else if ( language_is_set(LANG_D)
+ && ( prev->GetParentType() == CT_ENUM
+ || prev->GetParentType() == CT_STRUCT
+ || prev->GetParentType() == CT_UNION))
+ {
+ remove_semicolon(pc);
+ }
+ else if ( language_is_set(LANG_JAVA)
+ && prev->GetParentType() == CT_SYNCHRONIZED)
+ {
+ remove_semicolon(pc);
+ }
+ else if (prev->Is(CT_BRACE_OPEN))
+ {
+ remove_semicolon(pc);
+ }
+ }
+ pc = next;
+ }
+} // remove_extra_semicolons
+
+
+static void check_unknown_brace_close(Chunk *semi, Chunk *brace_close)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *pc = brace_close->GetPrevType(CT_BRACE_OPEN, brace_close->GetLevel());
+
+ pc = pc->GetPrevNcNnl();
+
+ if ( pc->IsNotNullChunk()
+ && pc->IsNot(CT_ANGLE_CLOSE)
+ && pc->IsNot(CT_COND_COLON) // Issue #3920
+ && pc->IsNot(CT_RETURN)
+ && pc->IsNot(CT_SQUARE_CLOSE)
+ && pc->IsNot(CT_TSQUARE)
+ && pc->IsNot(CT_TYPE)
+ && pc->IsNot(CT_WORD)
+ && !pc->IsParenClose())
+ {
+ remove_semicolon(semi);
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/semicolons.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/semicolons.h
new file mode 100644
index 00000000..60839e67
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/semicolons.h
@@ -0,0 +1,26 @@
+/**
+ * @file semicolons.h
+ * prototypes for semicolons.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+#ifndef SEMICOLONS_H_INCLUDED
+#define SEMICOLONS_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+
+/**
+ * Removes superfluous semicolons:
+ * - after brace close whose parent is IF, ELSE, SWITCH, WHILE, FOR, NAMESPACE
+ * - after another semicolon where parent is not FOR
+ * - (D) after brace close whose parent is ENUM/STRUCT/UNION
+ * - (Java) after brace close whose parent is SYNCHRONIZED
+ * - after an open brace
+ * - when not in a #DEFINE
+ */
+void remove_extra_semicolons();
+
+
+#endif /* SEMICOLONS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/sorting.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/sorting.cpp
new file mode 100644
index 00000000..807e0739
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/sorting.cpp
@@ -0,0 +1,709 @@
+/**
+ * @file sorting.cpp
+ * Sorts chunks and imports
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "sorting.h"
+
+#include "newlines.h"
+#include "prototypes.h"
+
+#include <regex>
+#include <unordered_map>
+
+constexpr static auto LCURRENT = LSORT;
+
+using namespace uncrustify;
+
+Option<std::string> *include_category_options[] =
+{
+ &options::include_category_0,
+ &options::include_category_1,
+ &options::include_category_2,
+};
+constexpr static int kIncludeCategoriesCount = 3;
+
+
+struct include_category
+{
+ include_category(const std::string &pattern)
+ : regex(pattern)
+ {
+ }
+ std::regex regex;
+};
+
+
+include_category *include_categories[kIncludeCategoriesCount];
+unordered_map<Chunk *, int> chunk_priority_cache;
+unordered_map<std::string, bool> filename_without_ext_cache;
+
+
+/**
+ * Compare two series of chunks, starting with the given ones.
+ * @param pc1 first instance to compare
+ * @param pc2 second instance to compare
+ * @param tcare take care of case (lower case/ upper case) Issue #2091
+ *
+ * @retval == 0 both text elements are equal
+ * @retval > 0
+ * @retval < 0
+ */
+static int compare_chunks(Chunk *pc1, Chunk *pc2, bool tcare);
+
+
+/**
+ * Sort all of the chunks in O(n log n) time with a maximum of O(n) swaps
+ */
+static void do_the_sort(Chunk **chunks, size_t num_chunks);
+
+
+#define MARK_CHANGE() mark_change(__func__, __LINE__)
+
+
+static void mark_change(const char *func, size_t line)
+{
+ LOG_FUNC_ENTRY();
+ cpd.changes++;
+
+ if (cpd.pass_count == 0)
+ {
+ LOG_FMT(LCHANGE, "%s(%d): change %d on %s:%zu\n",
+ __func__, __LINE__, cpd.changes, func, line);
+ }
+}
+
+
+static void prepare_categories()
+{
+ for (int i = 0; i < kIncludeCategoriesCount; ++i)
+ {
+ const auto &cat_pattern = (*include_category_options[i])();
+
+ if (!cat_pattern.empty())
+ {
+ include_categories[i] = new include_category(cat_pattern);
+ }
+ else
+ {
+ include_categories[i] = nullptr;
+ }
+ }
+}
+
+
+static void cleanup_categories()
+{
+ chunk_priority_cache.clear();
+ filename_without_ext_cache.clear();
+
+ for (auto &include_category : include_categories)
+ {
+ if (include_category == nullptr)
+ {
+ continue;
+ }
+ delete include_category;
+ include_category = NULL;
+ }
+}
+
+
+static int get_chunk_priority(Chunk *pc)
+{
+ if (chunk_priority_cache.count(pc) > 0)
+ {
+ return(chunk_priority_cache[pc]);
+ }
+ int category = kIncludeCategoriesCount;
+
+ for (int i = 0; i < kIncludeCategoriesCount; i++)
+ {
+ if (include_categories[i] != nullptr)
+ {
+ if (std::regex_match(pc->Text(), include_categories[i]->regex))
+ {
+ category = i;
+ break;
+ }
+ }
+ }
+
+ chunk_priority_cache[pc] = category;
+ return(category);
+}
+
+
+/**
+ * Returns true if the text contains filename without extension.
+ */
+static bool text_contains_filename_without_ext(const char *text)
+{
+ if (filename_without_ext_cache.count(text) > 0)
+ {
+ return(filename_without_ext_cache[text]);
+ }
+ std::string filepath = cpd.filename;
+ size_t slash_idx = filepath.find_last_of("/\\");
+ std::string filename_without_ext = filepath;
+
+ if ( slash_idx != std::string::npos
+ && slash_idx < (filepath.size() - 1))
+ {
+ std::string filename = filepath.substr(slash_idx + 1);
+ size_t dot_idx = filename.find_last_of('.');
+ filename_without_ext = filename.substr(0, dot_idx);
+ }
+ const std::regex special_chars = std::regex(R"([-[\]{}()*+?.,\^$|#\s])");
+ const std::string sanitized_filename = std::regex_replace(filename_without_ext, special_chars, R"(\$&)");
+ const std::regex filename_pattern = std::regex("\\S?" + sanitized_filename + "\\b.*");
+
+ filename_without_ext_cache[text] = std::regex_match(text, filename_pattern);
+ return(filename_without_ext_cache[text]);
+}
+
+
+/**
+ * Get chunk text without the extension.
+ */
+static UncText get_text_without_ext(const UncText &chunk_text)
+{
+ UncText result = chunk_text;
+ int idx = result.rfind(".", result.size() - 1);
+
+ if (idx == -1)
+ {
+ return(result);
+ }
+ result.erase(idx, result.size() - idx);
+ return(result);
+}
+
+
+/**
+ * Returns true if UncText has "." which implies extension.
+ */
+static bool has_dot(const UncText &chunk_text)
+{
+ int idx = chunk_text.rfind(".", chunk_text.size() - 1);
+
+ return(idx != -1);
+}
+
+
+/**
+ * Returns chunk string required for sorting.
+ */
+static UncText chunk_sort_str(Chunk *pc)
+{
+ if (pc->GetParentType() == CT_PP_INCLUDE)
+ {
+ return(UncText{ pc->GetStr(), 0, pc->Len() - 1 });
+ }
+ return(pc->GetStr());
+}
+
+
+//! Compare two chunks
+static int compare_chunks(Chunk *pc1, Chunk *pc2, bool tcare)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LSORT, "%s(%d): @begin pc1->len is %zu, line is %zu, column is %zu\n",
+ __func__, __LINE__, pc1->Len(), pc1->GetOrigLine(), pc1->GetOrigCol());
+ LOG_FMT(LSORT, "%s(%d): @begin pc2->len is %zu, line is %zu, column is %zu\n",
+ __func__, __LINE__, pc2->Len(), pc2->GetOrigLine(), pc2->GetOrigCol());
+
+ if (pc1 == pc2) // same chunk is always identical thus return 0 differences
+ {
+ return(0);
+ }
+
+ while ( pc1->IsNotNullChunk()
+ && pc2->IsNotNullChunk())
+ {
+ auto const &s1_ext = chunk_sort_str(pc1);
+ auto const &s2_ext = chunk_sort_str(pc2);
+
+ log_rule_B("mod_sort_incl_import_ignore_extension");
+ auto const &s1 = (options::mod_sort_incl_import_ignore_extension()) ? get_text_without_ext(s1_ext) : s1_ext;
+ auto const &s2 = (options::mod_sort_incl_import_ignore_extension()) ? get_text_without_ext(s2_ext) : s2_ext;
+ log_rule_B("mod_sort_incl_import_prioritize_filename");
+
+ if (options::mod_sort_incl_import_prioritize_filename())
+ {
+ bool s1_contains_filename = text_contains_filename_without_ext(s1.c_str());
+ bool s2_contains_filename = text_contains_filename_without_ext(s2.c_str());
+
+ if ( s1_contains_filename
+ && !s2_contains_filename)
+ {
+ return(-1);
+ }
+ else if ( !s1_contains_filename
+ && s2_contains_filename)
+ {
+ return(1);
+ }
+ }
+
+ if (options::mod_sort_incl_import_prioritize_extensionless())
+ {
+ log_rule_B("mod_sort_incl_import_prioritize_extensionless");
+ const bool s1_has_dot = has_dot(s1_ext);
+ const bool s2_has_dot = has_dot(s2_ext);
+
+ if ( s1_has_dot
+ && !s2_has_dot)
+ {
+ return(1);
+ }
+ else if ( !s1_has_dot
+ && s2_has_dot)
+ {
+ return(-1);
+ }
+ }
+
+ if (options::mod_sort_incl_import_prioritize_angle_over_quotes())
+ {
+ log_rule_B("mod_sort_incl_import_prioritize_angle_over_quotes");
+
+ if ( s1.startswith("<")
+ && s2.startswith("\""))
+ {
+ return(-1);
+ }
+ else if ( s1.startswith("\"")
+ && s2.startswith("<"))
+ {
+ return(1);
+ }
+ }
+ int ppc1 = get_chunk_priority(pc1);
+ int ppc2 = get_chunk_priority(pc2);
+
+ if (ppc1 != ppc2)
+ {
+ return(ppc1 - ppc2);
+ }
+ LOG_FMT(LSORT, "%s(%d): text is %s, pc1->len is %zu, line is %zu, column is %zu\n",
+ __func__, __LINE__, pc1->Text(), pc1->Len(), pc1->GetOrigLine(), pc1->GetOrigCol());
+ LOG_FMT(LSORT, "%s(%d): text is %s, pc2->len is %zu, line is %zu, column is %zu\n",
+ __func__, __LINE__, pc2->Text(), pc2->Len(), pc2->GetOrigLine(), pc2->GetOrigCol());
+
+ int ret_val = UncText::compare(s1, s2, std::min(s1.size(), s2.size()), tcare);
+ LOG_FMT(LSORT, "%s(%d): ret_val is %d\n",
+ __func__, __LINE__, ret_val);
+
+ if (ret_val != 0)
+ {
+ return(ret_val);
+ }
+
+ if (pc1->Len() != pc2->Len())
+ {
+ return(pc1->Len() - pc2->Len());
+ }
+ // Same word, same length. Step to the next chunk.
+ pc1 = pc1->GetNext();
+ LOG_FMT(LSORT, "%s(%d): text is %s, pc1->len is %zu, line is %zu, column is %zu\n",
+ __func__, __LINE__, pc1->Text(), pc1->Len(), pc1->GetOrigLine(), pc1->GetOrigCol());
+
+ if (pc1->Is(CT_MEMBER))
+ {
+ pc1 = pc1->GetNext();
+ LOG_FMT(LSORT, "%s(%d): text is %s, pc1->len is %zu, line is %zu, column is %zu\n",
+ __func__, __LINE__, pc1->Text(), pc1->Len(), pc1->GetOrigLine(), pc1->GetOrigCol());
+ }
+ pc2 = pc2->GetNext();
+ LOG_FMT(LSORT, "%s(%d): text is %s, pc2->len is %zu, line is %zu, column is %zu\n",
+ __func__, __LINE__, pc2->Text(), pc2->Len(), pc2->GetOrigLine(), pc2->GetOrigCol());
+
+ if (pc2->Is(CT_MEMBER))
+ {
+ pc2 = pc2->GetNext();
+ LOG_FMT(LSORT, "%s(%d): text is %s, pc2->len is %zu, line is %zu, column is %zu\n",
+ __func__, __LINE__, pc2->Text(), pc2->Len(), pc2->GetOrigLine(), pc2->GetOrigCol());
+ }
+ LOG_FMT(LSORT, "%s(%d): >>>text is %s, pc1->len is %zu, line is %zu, column is %zu\n",
+ __func__, __LINE__, pc1->Text(), pc1->Len(), pc1->GetOrigLine(), pc1->GetOrigCol());
+ LOG_FMT(LSORT, "%s(%d): >>>text is %s, pc2->len is %zu, line is %zu, column is %zu\n",
+ __func__, __LINE__, pc2->Text(), pc2->Len(), pc2->GetOrigLine(), pc2->GetOrigCol());
+
+ // If we hit a newline or null chuck, we are done
+ if ( pc1->IsNullChunk()
+ || pc1->IsNewline()
+ || pc2->IsNullChunk()
+ || pc2->IsNewline())
+ {
+ break;
+ }
+ }
+
+ if ( pc1->IsNullChunk()
+ || !pc2->IsNewline())
+ {
+ return(-1);
+ }
+
+ if (!pc1->IsNewline())
+ {
+ return(1);
+ }
+ return(0);
+} // compare_chunks
+
+
+/**
+ * Sort all of the chunks in O(n log n) time with a maximum of O(n) swaps
+ */
+static void do_the_sort(Chunk **chunks, size_t num_chunks)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LSORT, "%s(%d): %zu chunks:",
+ __func__, __LINE__, num_chunks);
+
+ for (size_t idx = 0; idx < num_chunks; idx++)
+ {
+ LOG_FMT(LSORT, " [%s]", chunks[idx]->Text());
+ }
+
+ LOG_FMT(LSORT, "\n");
+
+ log_rule_B("mod_sort_case_sensitive");
+ bool take_care = options::mod_sort_case_sensitive(); // Issue #2091
+
+ // Sort an array of the chunk positions in order to minimize the number of swaps
+ std::vector<size_t> chunk_positions(num_chunks);
+
+ for (size_t idx = 0; idx < num_chunks; idx++)
+ {
+ chunk_positions[idx] = idx;
+ }
+
+ sort(chunk_positions.begin(), chunk_positions.end(), [chunks, take_care](const size_t &l, const size_t &r) {
+ return(compare_chunks(chunks[l], chunks[r], take_care) < 0);
+ });
+
+ // Swap the chunk positions
+ for (size_t idx = 0; idx < num_chunks; idx++)
+ {
+ if (chunk_positions[idx] != idx)
+ {
+ log_rule_B("mod_sort_incl_import_grouping_enabled");
+
+ const size_t from = chunk_positions[idx];
+ const size_t to = chunk_positions[from];
+ chunks[from]->SwapLines(chunks[to]);
+
+ Chunk *pc = chunks[from];
+ chunks[from] = chunks[to];
+ chunks[to] = pc;
+
+ chunk_positions[from] = from;
+ chunk_positions[idx] = to;
+ idx--;
+ }
+ }
+} // do_the_sort
+
+
+/**
+ * Remove blank lines between chunks.
+ */
+static void remove_blank_lines_between_imports(Chunk **chunks, size_t num_chunks)
+{
+ LOG_FUNC_ENTRY();
+
+ if (num_chunks < 2)
+ {
+ return;
+ }
+
+ for (size_t idx = 0; idx < (num_chunks - 1); idx++)
+ {
+ Chunk *chunk1 = chunks[idx]->GetNextNl();
+ chunk1->SetNlCount(1);
+ MARK_CHANGE();
+ }
+}
+
+
+/**
+ * Delete chunks on line having chunk.
+ */
+static void delete_chunks_on_line_having_chunk(Chunk *chunk)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc = chunk->GetFirstChunkOnLine();
+
+ while ( pc->IsNotNullChunk()
+ && !pc->IsComment())
+ {
+ Chunk *next_pc = pc->GetNext();
+ LOG_FMT(LCHUNK, "%s(%d): Removed '%s' on orig line %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine());
+
+ if (pc->IsNewline())
+ {
+ Chunk::Delete(pc);
+ break;
+ }
+ else
+ {
+ Chunk::Delete(pc);
+ }
+ pc = next_pc;
+ }
+}
+
+
+/**
+ * Dedupe import/include directives.
+ */
+static void dedupe_imports(Chunk **chunks, size_t num_chunks)
+{
+ LOG_FUNC_ENTRY();
+ log_rule_B("mod_sort_case_sensitive");
+
+ for (size_t idx = 1; idx < num_chunks; idx++)
+ {
+ auto const &s1 = chunk_sort_str(chunks[idx - 1]);
+ auto const &s2 = chunk_sort_str(chunks[idx]);
+
+ if (s1.size() != s2.size())
+ {
+ continue;
+ }
+ int ret_val = UncText::compare(s1, s2, std::min(s1.size(), s2.size()), options::mod_sort_case_sensitive());
+
+ if (ret_val == 0)
+ {
+ delete_chunks_on_line_having_chunk(chunks[idx - 1]);
+ }
+ }
+}
+
+
+/**
+ * Add blank line before the chunk.
+ */
+static void blankline_add_before(Chunk *pc)
+{
+ Chunk *newline = newline_add_before(pc->GetFirstChunkOnLine());
+
+ if (newline->GetNlCount() < 2)
+ {
+ double_newline(newline);
+ }
+}
+
+
+/**
+ * Group imports.
+ */
+static void group_imports_by_adding_newlines(Chunk **chunks, size_t num_chunks)
+{
+ LOG_FUNC_ENTRY();
+
+ // Group imports based on first character, typically quote or angle.
+ int c_idx = -1;
+ int c_idx_last = -1;
+
+ for (size_t idx = 0; idx < num_chunks; idx++)
+ {
+ if (chunks[idx]->GetStr().size() > 0)
+ {
+ c_idx = chunks[idx]->GetStr().at(0);
+ }
+ else
+ {
+ c_idx = -1;
+ }
+
+ if ( c_idx_last != c_idx
+ && idx > 0)
+ {
+ blankline_add_before(chunks[idx]);
+ }
+ c_idx_last = c_idx;
+ }
+
+ // Group imports based on having extension.
+ bool chunk_has_dot = false;
+ bool chunk_last_has_dot = false;
+
+ for (size_t idx = 0; idx < num_chunks; idx++)
+ {
+ chunk_has_dot = has_dot(chunks[idx]->GetStr());
+
+ if ( chunk_last_has_dot != chunk_has_dot
+ && idx > 0)
+ {
+ blankline_add_before(chunks[idx]);
+ }
+ chunk_last_has_dot = chunk_has_dot;
+ }
+
+ // Group imports based on priority defined by config.
+ int chunk_pri = -1;
+ int chunk_pri_last = -1;
+
+ for (size_t idx = 0; idx < num_chunks; idx++)
+ {
+ chunk_pri = get_chunk_priority(chunks[idx]);
+
+ if ( chunk_pri_last != chunk_pri
+ && idx > 0)
+ {
+ blankline_add_before(chunks[idx]);
+ }
+ chunk_pri_last = chunk_pri;
+ }
+
+ // Group imports that contain filename pattern.
+ bool chunk_has_filename = false;
+ bool last_chunk_has_filename = false;
+
+ for (size_t idx = 0; idx < num_chunks; idx++)
+ {
+ auto const &chunk_text = chunk_sort_str(chunks[idx]);
+ chunk_has_filename = text_contains_filename_without_ext(chunk_text.c_str());
+
+ if ( !chunk_has_filename
+ && last_chunk_has_filename)
+ {
+ blankline_add_before(chunks[idx]);
+ }
+ last_chunk_has_filename = chunk_has_filename;
+ }
+} // group_imports_by_adding_newlines
+
+
+void sort_imports()
+{
+ LOG_FUNC_ENTRY();
+ const int max_number_to_sort = 1024;
+ const int max_lines_to_check_for_sort_after_include = 128;
+ const int max_gap_threshold_between_include_to_sort = 32;
+
+ Chunk *chunks[max_number_to_sort];
+ size_t num_chunks = 0;
+ Chunk *p_last = Chunk::NullChunkPtr;
+ Chunk *p_imp = Chunk::NullChunkPtr;
+ Chunk *p_imp_last = Chunk::NullChunkPtr;
+
+ prepare_categories();
+
+ Chunk *pc = Chunk::GetHead();
+
+ log_rule_B("mod_sort_incl_import_grouping_enabled");
+
+ while (pc->IsNotNullChunk())
+ {
+ // Simple optimization to limit the sorting. Any MAX_LINES_TO_CHECK_AFTER_INCLUDE lines after last
+ // import is seen are ignore from sorting.
+ if ( options::mod_sort_incl_import_grouping_enabled()
+ && p_imp_last->IsNotNullChunk()
+ && (pc->GetOrigLine() - p_imp_last->GetOrigLine()) > max_lines_to_check_for_sort_after_include)
+ {
+ break;
+ }
+ Chunk *next = pc->GetNext();
+
+ if (pc->IsNewline())
+ {
+ bool did_import = false;
+
+ if ( p_imp->IsNotNullChunk()
+ && ( p_last->Is(CT_SEMICOLON)
+ || p_imp->TestFlags(PCF_IN_PREPROC)))
+ {
+ if (num_chunks < max_number_to_sort)
+ {
+ LOG_FMT(LSORT, "%s(%d): p_imp is %s\n",
+ __func__, __LINE__, p_imp->Text());
+ chunks[num_chunks++] = p_imp;
+ }
+ else
+ {
+ fprintf(stderr, "Number of 'import' to be sorted is too big for the current value %d.\n", max_number_to_sort);
+ fprintf(stderr, "Please make a report.\n");
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ did_import = true;
+ }
+ log_rule_B("mod_sort_incl_import_grouping_enabled");
+
+ if ( !did_import
+ || ( !options::mod_sort_incl_import_grouping_enabled()
+ && pc->GetNlCount() > 1)
+ || ( options::mod_sort_incl_import_grouping_enabled()
+ && p_imp_last->IsNotNullChunk()
+ && (pc->GetOrigLine() - p_imp_last->GetOrigLine()) > max_gap_threshold_between_include_to_sort)
+ || next->IsNullChunk())
+ {
+ if (num_chunks > 1)
+ {
+ log_rule_B("mod_sort_incl_import_grouping_enabled");
+
+ if (options::mod_sort_incl_import_grouping_enabled())
+ {
+ remove_blank_lines_between_imports(chunks, num_chunks);
+ do_the_sort(chunks, num_chunks);
+ group_imports_by_adding_newlines(chunks, num_chunks);
+ dedupe_imports(chunks, num_chunks);
+ }
+ else
+ {
+ do_the_sort(chunks, num_chunks);
+ }
+ }
+ num_chunks = 0;
+ }
+ p_imp_last = p_imp;
+ p_imp = Chunk::NullChunkPtr;
+ p_last = Chunk::NullChunkPtr;
+ }
+ else if (pc->Is(CT_IMPORT))
+ {
+ log_rule_B("mod_sort_import");
+
+ if (options::mod_sort_import())
+ {
+ p_imp = pc->GetNext();
+ }
+ }
+ else if (pc->Is(CT_USING))
+ {
+ log_rule_B("mod_sort_using");
+
+ if (options::mod_sort_using())
+ {
+ p_imp = pc->GetNext();
+ }
+ }
+ else if (pc->Is(CT_PP_INCLUDE))
+ {
+ log_rule_B("mod_sort_include");
+
+ if (options::mod_sort_include())
+ {
+ p_imp = pc->GetNext();
+ p_last = pc;
+ }
+ }
+ else if (!pc->IsComment())
+ {
+ p_last = pc;
+ }
+ pc = next;
+ }
+ cleanup_categories();
+} // sort_imports
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/sorting.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/sorting.h
index 8d518df8..8d518df8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/sorting.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/sorting.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/space.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/space.cpp
new file mode 100644
index 00000000..ed85a4d3
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/space.cpp
@@ -0,0 +1,4004 @@
+/**
+ * @file space.cpp
+ * Adds or removes inter-chunk spaces.
+ *
+ * Information
+ * "Ignore" means do not change it.
+ * "Add" in the context of spaces means make sure there is at least 1.
+ * "Add" elsewhere means make sure one is present.
+ * "Remove" mean remove the space/brace/newline/etc.
+ * "Force" in the context of spaces means ensure that there is exactly 1.
+ * "Force" in other contexts means the same as "add".
+ *
+ * Rmk: spaces = space + nl
+ *
+ * @author Ben Gardner
+ * @author Guy Maurel, 2015-2023
+ * @license GPL v2+
+ */
+
+#include "space.h"
+
+#include "add_space_table.h"
+#include "log_rules.h"
+#include "options_for_QT.h"
+#include "punctuators.h"
+
+#ifdef WIN32
+#include <algorithm> // to get max
+#endif // ifdef WIN32
+
+using namespace std;
+using namespace uncrustify;
+
+
+/**
+ * Ensure to force the space between the \a first and the \a second chunks
+ * if the PCF_FORCE_SPACE flag is set in the \a first.
+ *
+ * @param first The first chunk
+ * @param second The second chunk
+ * @param av Av from the do_space()
+ *
+ * @return IARF_IGNORE, IARF_ADD, IARF_REMOVE or IARF_FORCE
+ */
+static iarf_e ensure_force_space(Chunk *first, Chunk *second, iarf_e av);
+
+
+bool token_is_within_trailing_return(Chunk *pc)
+{
+ // look back for '->' type is TRAILING_RET
+ // until CT_FPAREN_CLOSE
+ // or CT_FPAREN_OPEN is found
+ Chunk *prev = pc;
+
+ while (prev->IsNotNullChunk())
+ {
+ if (prev->Is(CT_TRAILING_RET))
+ {
+ return(true);
+ }
+ else if ( prev->Is(CT_FPAREN_CLOSE)
+ || prev->Is(CT_FPAREN_OPEN)
+ || prev->Is(CT_SEMICOLON)) // Issue #4080
+ {
+ return(false);
+ }
+ else
+ {
+ prev = prev->GetPrev();
+ }
+ }
+ return(false);
+} // token_is_within_trailing_return
+
+
+/**
+ * Decides how to change inter-chunk spacing.
+ * Note that the order of the if statements is VERY important.
+ *
+ * @param first The first chunk
+ * @param second The second chunk
+ *
+ * @return IARF_IGNORE, IARF_ADD, IARF_REMOVE or IARF_FORCE
+ *
+ * This function is called for every chunk in the input file,
+ * thus it is important to keep this function efficient
+ */
+static iarf_e do_space(Chunk *first, Chunk *second, int &min_sp)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LSPACE, "%s(%d): orig line %zu, orig col %zu, first text '%s', type %s\n",
+ __func__, __LINE__, first->GetOrigLine(), first->GetOrigCol(), first->Text(), get_token_name(first->GetType()));
+
+ min_sp = 1;
+
+ if ( first->Is(CT_VBRACE_OPEN)
+ && first->GetPrev()->Is(CT_SPAREN_CLOSE)
+ && second->IsNot(CT_SEMICOLON))
+ {
+ // Add or remove space after ')' of control statements.
+ log_rule("sp_after_sparen");
+ return(options::sp_after_sparen());
+ }
+
+ if (first->Is(CT_SPAREN_CLOSE))
+ {
+ if (second->Is(CT_VBRACE_OPEN))
+ {
+ // Fix spacing between SPAREN_CLOSE and VBRACE_OPEN tokens as we don't want the default behavior (which is ADD).
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if ( options::sp_sparen_brace() == IARF_IGNORE
+ && second->Is(CT_BRACE_OPEN))
+ {
+ // Do sp_after_sparen if sp_sparen_brace is ignored. No need for VBRACE_OPEN spacing.
+ log_rule("sp_after_sparen");
+ return(options::sp_after_sparen());
+ }
+ }
+
+ if ( first->Is(CT_PP_IGNORE)
+ && second->Is(CT_PP_IGNORE))
+ {
+ // Leave spacing alone between PP_IGNORE tokens as we don't want the default behavior (which is ADD).
+ log_rule("PP_IGNORE");
+ return(IARF_IGNORE);
+ }
+
+ if ( first->Is(CT_PP)
+ || second->Is(CT_PP))
+ {
+ // Add or remove space around preprocessor '##' concatenation operator.
+ log_rule("sp_pp_concat");
+ return(options::sp_pp_concat());
+ }
+
+ if (first->Is(CT_POUND))
+ {
+ // Add or remove space after preprocessor '#' stringify operator.
+ // Also affects the '#@' charizing operator.
+ log_rule("sp_pp_stringify");
+ return(options::sp_pp_stringify());
+ }
+
+ if ( second->Is(CT_POUND)
+ && second->TestFlags(PCF_IN_PREPROC)
+ && first->GetParentType() != CT_MACRO_FUNC)
+ {
+ // Add or remove space before preprocessor '#' stringify operator
+ // as in '#define x(y) L#y'.
+ log_rule("sp_before_pp_stringify");
+ return(options::sp_before_pp_stringify());
+ }
+
+ if ( first->Is(CT_SPACE)
+ || second->Is(CT_SPACE))
+ {
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if (first->Is(CT_DECLSPEC)) // Issue 1289
+ {
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if ( second->Is(CT_NEWLINE)
+ || second->Is(CT_VBRACE_OPEN))
+ {
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if ( first->Is(CT_VBRACE_OPEN)
+ && second->IsNot(CT_NL_CONT)
+ && second->IsNot(CT_SEMICOLON)) // # Issue 1158
+ {
+ log_rule("FORCE");
+ return(IARF_FORCE);
+ }
+
+ if ( first->Is(CT_VBRACE_CLOSE)
+ && second->IsNot(CT_NL_CONT))
+ {
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if (second->Is(CT_VSEMICOLON))
+ {
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if (first->Is(CT_MACRO_FUNC))
+ {
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if (second->Is(CT_NL_CONT))
+ {
+ // Add or remove space before a backslash-newline at the end of a line.
+ log_rule("sp_before_nl_cont");
+ return(options::sp_before_nl_cont());
+ }
+
+ if ( language_is_set(LANG_D)
+ && ( first->Is(CT_D_ARRAY_COLON)
+ || second->Is(CT_D_ARRAY_COLON)))
+ {
+ // (D) Add or remove around the D named array initializer ':' operator.
+ log_rule("sp_d_array_colon");
+ return(options::sp_d_array_colon());
+ }
+
+ if ( first->Is(CT_CASE)
+ && (( CharTable::IsKw1(second->GetStr()[0])
+ || second->Is(CT_NUMBER))))
+ {
+ // Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make
+ // sense here.
+ log_rule("sp_case_label");
+ return(options::sp_case_label() | IARF_ADD);
+ }
+
+ if (first->Is(CT_FOR_COLON))
+ {
+ // java
+ // Add or remove space after ':' in a Java/C++11 range-based 'for',
+ // as in 'for (Type var : expr)'.
+ log_rule("sp_after_for_colon");
+ return(options::sp_after_for_colon());
+ }
+
+ if (second->Is(CT_FOR_COLON))
+ {
+ // java
+ // Add or remove space before ':' in a Java/C++11 range-based 'for',
+ // as in 'for (Type var : expr)'.
+ log_rule("sp_before_for_colon");
+ return(options::sp_before_for_colon());
+ }
+
+ if ( first->Is(CT_QUESTION)
+ && second->Is(CT_COND_COLON))
+ {
+ // In the abbreviated ternary form '(a ?: b)', add or remove space between '?'
+ // and ':'.
+ // Overrides all other sp_cond_* options.
+ log_rule("sp_cond_ternary_short");
+ return(options::sp_cond_ternary_short());
+ }
+
+ if ( first->Is(CT_QUESTION) // see the tests cpp:34513-34516
+ || second->Is(CT_QUESTION))
+ {
+ if ( second->Is(CT_QUESTION)
+ && (options::sp_cond_question_before() != IARF_IGNORE))
+ {
+ // Add or remove space before the '?' in 'b ? t : f'.
+ // Overrides sp_cond_question.
+ log_rule("sp_cond_question_before");
+ return(options::sp_cond_question_before());
+ }
+
+ if ( first->Is(CT_QUESTION)
+ && (options::sp_cond_question_after() != IARF_IGNORE))
+ {
+ // Add or remove space after the '?' in 'b ? t : f'.
+ // Overrides sp_cond_question.
+ log_rule("sp_cond_question_after");
+ return(options::sp_cond_question_after());
+ }
+ log_rule("sp_cond_question");
+ return(options::sp_cond_question());
+ }
+
+ if ( first->Is(CT_COND_COLON)
+ || second->Is(CT_COND_COLON))
+ {
+ if ( second->Is(CT_COND_COLON)
+ && (options::sp_cond_colon_before() != IARF_IGNORE))
+ {
+ // Add or remove space before the ':' in 'b ? t : f'.
+ // Overrides sp_cond_colon.
+ log_rule("sp_cond_colon_before");
+ return(options::sp_cond_colon_before());
+ }
+
+ if ( first->Is(CT_COND_COLON)
+ && (options::sp_cond_colon_after() != IARF_IGNORE))
+ {
+ // Add or remove space after the ':' in 'b ? t : f'.
+ // Overrides sp_cond_colon.
+ log_rule("sp_cond_colon_after");
+ return(options::sp_cond_colon_after());
+ }
+ // Issue #2596
+ // replace "if (first->Is(CT_WORD) && second->Is(CT_COND_COLON))"
+ // Add or remove space around the ':' in 'b ? t : f'.
+ log_rule("sp_cond_colon");
+ return(options::sp_cond_colon());
+ }
+
+ if ( language_is_set(LANG_D)
+ && ( first->Is(CT_RANGE)
+ || second->Is(CT_RANGE)))
+ {
+ // (D) Add or remove space around the D '..' operator.
+ log_rule("sp_range");
+ return(options::sp_range());
+ }
+
+ if ( first->Is(CT_COLON)
+ && first->GetParentType() == CT_SQL_EXEC)
+ {
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ // Macro stuff can only return IGNORE, ADD, or FORCE
+ if (first->Is(CT_MACRO))
+ {
+ // Add or remove space between a macro name and its definition.
+ log_rule("sp_macro");
+ iarf_e arg = options::sp_macro();
+ return(arg | ((arg != IARF_IGNORE) ? IARF_ADD : IARF_IGNORE));
+ }
+
+ if ( first->Is(CT_FPAREN_CLOSE)
+ && first->GetParentType() == CT_MACRO_FUNC)
+ {
+ // Add or remove space between a macro function ')' and its definition.
+ log_rule("sp_macro_func");
+ iarf_e arg = options::sp_macro_func();
+ return(arg | ((arg != IARF_IGNORE) ? IARF_ADD : IARF_IGNORE));
+ }
+
+ if (first->Is(CT_PREPROC))
+ {
+ // Remove spaces, unless we are ignoring. See indent_preproc()
+ log_rule("pp_space_after");
+
+ if (options::pp_space_after() == IARF_IGNORE)
+ {
+ log_rule("IGNORE");
+ return(IARF_IGNORE);
+ }
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if (second->Is(CT_PREPROC))
+ {
+ // Remove spaces, unless we are ignoring. See indent_preproc()
+ log_rule("pp_indent");
+
+ if (options::pp_indent() == IARF_IGNORE)
+ {
+ log_rule("IGNORE");
+ return(IARF_IGNORE);
+ }
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if (second->Is(CT_SEMICOLON)) // see the tests cpp:34517-34519
+ {
+ if (first->Is(CT_VBRACE_OPEN))
+ {
+ // Add or remove space before ';'.
+ log_rule("sp_before_semi");
+ return(options::sp_before_semi());
+ }
+
+ // Issue #4094-03
+ if (second->GetParentType() == CT_FOR)
+ {
+ if (first->Is(CT_SPAREN_OPEN))
+ {
+ // empty, e.g. for (;;)
+ // ^ is first
+ // ^ is second
+ // Add or remove space before a semicolon of an empty left part of a for statement.
+ log_rule("sp_before_semi_for_empty");
+ return(options::sp_before_semi_for_empty());
+ }
+
+ if (first->Is(CT_SEMICOLON))
+ {
+ // empty, e.g. for (;;)
+ // ^ is first
+ // ^ is second
+ // Add or remove space between semicolons of an empty middle part of a for statement.
+ log_rule("sp_between_semi_for_empty");
+ return(options::sp_between_semi_for_empty());
+ }
+ // Add or remove space before ';' in non-empty 'for' statements.
+ log_rule("sp_before_semi_for");
+ return(options::sp_before_semi_for());
+ }
+ iarf_e arg = options::sp_before_semi(); // see the tests cpp:34517-34519
+
+ if ( first->Is(CT_VBRACE_OPEN) // Issue #2942
+ && first->GetPrev()->Is(CT_SPAREN_CLOSE)
+ && first->GetParentType() != CT_WHILE_OF_DO)
+ {
+ // Add or remove space before empty statement ';' on 'if', 'for' and 'while'.
+ log_rule("sp_special_semi");
+ arg = arg | options::sp_special_semi();
+ }
+ else
+ {
+ // Add or remove space before ';'.
+ log_rule("sp_before_semi");
+ }
+ return(arg);
+ }
+
+ if ( ( second->Is(CT_COMMENT)
+ || second->Is(CT_COMMENT_CPP))
+ && ( first->Is(CT_PP_ELSE)
+ || first->Is(CT_PP_ENDIF)))
+ {
+ if (second->Is(CT_COMMENT_CPP))
+ {
+ second->SetType(CT_COMMENT_CPP_ENDIF);
+ }
+ else
+ {
+ second->SetType(CT_COMMENT_ENDIF);
+ }
+ // Add or remove space between #else or #endif and a trailing comment.
+ log_rule("sp_endif_cmt");
+ return(options::sp_endif_cmt());
+ }
+
+ if ( options::sp_before_tr_cmt() != IARF_IGNORE
+ && second->GetParentType() == CT_COMMENT_END)
+ {
+ // Add or remove space before a trailing comment.
+ // Number of spaces before a trailing comment.
+ log_rule("sp_num_before_tr_cmt");
+ min_sp = options::sp_num_before_tr_cmt();
+ return(options::sp_before_tr_cmt());
+ }
+
+ if (second->GetParentType() == CT_COMMENT_END)
+ {
+ switch (second->GetOrigPrevSp())
+ {
+ case 0:
+ log_rule("orig prev sp - REMOVE");
+ return(IARF_REMOVE);
+
+ case 1:
+ log_rule("orig prev sp - FORCE");
+ return(IARF_FORCE);
+
+ default:
+ log_rule("orig prev sp - ADD");
+ return(IARF_ADD);
+ }
+ }
+
+ // Issue #4094-05
+ // "for (;;)" vs. "for (;; )" and "for (a;b;c)" vs. "for (a; b; c)"
+ if (first->Is(CT_SEMICOLON)) // see the tests cpp:34517-34519
+ {
+ if (first->GetParentType() == CT_FOR)
+ {
+ if (second->Is(CT_SPAREN_CLOSE))
+ {
+ // Add or remove space after the final semicolon of an empty part of a for
+ // statement, as in 'for ( ; ; <here> )'.
+ log_rule("sp_after_semi_for_empty");
+ return(options::sp_after_semi_for_empty());
+ }
+
+ if (second->IsNot(CT_SPAREN_CLOSE)) // Issue 1324
+ {
+ // Add or remove space after ';' in non-empty 'for' statements.
+ log_rule("sp_after_semi_for");
+ return(options::sp_after_semi_for());
+ }
+ }
+ else if ( !second->IsComment()
+ && second->IsNot(CT_BRACE_CLOSE)) // issue #197
+ {
+ // Add or remove space after ';', except when followed by a comment.
+ // see the tests cpp:34517-34519
+ log_rule("sp_after_semi");
+ return(options::sp_after_semi());
+ }
+ // Let the comment spacing rules handle this
+ }
+
+ // puts a space in the rare '+-' or '-+'
+ if ( ( first->Is(CT_NEG)
+ || first->Is(CT_POS)
+ || first->Is(CT_ARITH)
+ || first->Is(CT_SHIFT))
+ && ( second->Is(CT_NEG)
+ || second->Is(CT_POS)
+ || second->Is(CT_ARITH)
+ || second->Is(CT_SHIFT)))
+ {
+ log_rule("ADD");
+ return(IARF_ADD);
+ }
+
+ // "return(a);" vs. "return (foo_t)a + 3;" vs. "return a;" vs. "return;"
+ if (first->Is(CT_RETURN))
+ {
+ if ( second->Is(CT_PAREN_OPEN)
+ && second->GetParentType() == CT_RETURN)
+ {
+ // Add or remove space between 'return' and '('.
+ log_rule("sp_return_paren");
+ return(options::sp_return_paren());
+ }
+ else if ( second->Is(CT_BRACE_OPEN)
+ && second->GetParentType() == CT_BRACED_INIT_LIST)
+ {
+ // Add or remove space between 'return' and '{'.
+ log_rule("sp_return_brace");
+ return(options::sp_return_brace());
+ }
+ // Everything else requires a space
+ // The value REMOVE will be overridden with FORCE
+ log_rule("sp_return");
+
+ if (options::sp_return() == IARF_REMOVE)
+ {
+ return(IARF_FORCE);
+ }
+ return(options::sp_return());
+ }
+
+ // "sizeof(foo_t)" vs. "sizeof (foo_t)"
+ if (first->Is(CT_SIZEOF))
+ {
+ if (second->Is(CT_PAREN_OPEN))
+ {
+ // Add or remove space between 'sizeof' and '('.
+ log_rule("sp_sizeof_paren");
+ return(options::sp_sizeof_paren());
+ }
+
+ if (second->Is(CT_ELLIPSIS))
+ {
+ // Add or remove space between 'sizeof' and '...'.
+ log_rule("sp_sizeof_ellipsis");
+ return(options::sp_sizeof_ellipsis());
+ }
+ log_rule("FORCE");
+ return(IARF_FORCE);
+ }
+
+ // "decltype(foo_t)" vs. "decltype (foo_t)"
+ if (first->Is(CT_DECLTYPE))
+ {
+ if (second->Is(CT_PAREN_OPEN))
+ {
+ // Add or remove space between 'decltype' and '('.
+ log_rule("sp_decltype_paren");
+ return(options::sp_decltype_paren());
+ }
+ log_rule("FORCE");
+ return(IARF_FORCE);
+ }
+
+ // handle '::'
+ if (first->Is(CT_DC_MEMBER))
+ {
+ // Add or remove space after the '::' operator.
+ log_rule("sp_after_dc");
+ return(options::sp_after_dc());
+ }
+
+ // Issue #889
+ // mapped_file_source abc((int) ::CW2A(sTemp));
+ if ( first->Is(CT_PAREN_CLOSE)
+ && second->Is(CT_DC_MEMBER)
+ && second->GetNext()->GetType() == CT_FUNC_CALL)
+ {
+ log_rule("sp_after_cast");
+ return(options::sp_after_cast());
+ }
+
+ if (second->Is(CT_DC_MEMBER))
+ {
+ /* '::' at the start of an identifier is not member access, but global scope operator.
+ * Detect if previous chunk is keyword
+ */
+ switch (first->GetType())
+ {
+ case CT_SBOOL:
+ case CT_SASSIGN:
+ case CT_ARITH:
+ case CT_SHIFT:
+ case CT_CASE:
+ case CT_CLASS:
+ case CT_DELETE:
+ case CT_FRIEND:
+ case CT_NAMESPACE:
+ case CT_NEW:
+ case CT_SARITH:
+ case CT_SCOMPARE:
+ case CT_OPERATOR:
+ case CT_ACCESS:
+ case CT_QUALIFIER:
+ case CT_RETURN:
+ case CT_SIZEOF:
+ case CT_DECLTYPE:
+ case CT_STRUCT:
+ case CT_THROW:
+ case CT_TYPEDEF:
+ case CT_TYPENAME:
+ case CT_UNION:
+ case CT_USING:
+ log_rule("FORCE");
+ return(IARF_FORCE);
+
+ default:
+ break;
+ }
+
+ if ( ( first->Is(CT_WORD)
+ || first->Is(CT_TYPE)
+ || first->Is(CT_PAREN_CLOSE)
+ || CharTable::IsKw1(first->GetStr()[0]))
+ && (strcmp(first->Text(), "void") != 0)) // Issue 1249
+ {
+ // Add or remove space before the '::' operator.
+ log_rule("sp_before_dc");
+ return(options::sp_before_dc());
+ }
+ }
+
+ // "a,b" vs. "a, b"
+ if (first->Is(CT_COMMA)) // see the tests cpp:34520-34524
+ // see the tests c-sharp:12200-12202
+ {
+ if ( language_is_set(LANG_CS | LANG_VALA)
+ && first->GetParentType() == CT_TYPE)
+ {
+ // (C#, Vala) multidimensional array type: ',,' vs. ', ,' or ',]' vs. ', ]'
+ if (second->Is(CT_COMMA))
+ {
+ // (C#, Vala) Add or remove space between ',' in multidimensional array type
+ // like 'int[,,]'.
+ log_rule("sp_between_mdatype_commas");
+ return(options::sp_between_mdatype_commas());
+ }
+ // (C#, Vala) Add or remove space between ',' and ']' in multidimensional array type
+ // like 'int[,,]'.
+ log_rule("sp_after_mdatype_commas");
+ return(options::sp_after_mdatype_commas());
+ }
+
+ // Fix for issue #1243
+ // Don't add extra space after comma immediately followed by Angle close
+ if (second->Is(CT_ANGLE_CLOSE))
+ {
+ log_rule("IGNORE");
+ return(IARF_IGNORE);
+ }
+ // Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.
+ log_rule("sp_after_comma");
+ return(options::sp_after_comma());
+ }
+
+ // test if we are within a SIGNAL/SLOT call
+ if (QT_SIGNAL_SLOT_found)
+ {
+ if ( first->Is(CT_FPAREN_CLOSE)
+ && ( second->Is(CT_FPAREN_CLOSE)
+ || second->Is(CT_COMMA)))
+ {
+ if (second->GetLevel() == QT_SIGNAL_SLOT_level)
+ {
+ restoreValues = true;
+ }
+ }
+ }
+
+ if (second->Is(CT_COMMA))
+ {
+ if ( language_is_set(LANG_CS | LANG_VALA)
+ && first->Is(CT_SQUARE_OPEN)
+ && first->GetParentType() == CT_TYPE)
+ {
+ // (C#, Vala) Add or remove space between '[' and ',' in multidimensional array type
+ // like 'int[,,]'.
+ log_rule("sp_before_mdatype_commas");
+ return(options::sp_before_mdatype_commas());
+ }
+
+ if ( first->Is(CT_PAREN_OPEN)
+ || first->Is(CT_FPAREN_OPEN))
+ {
+ // Add or remove space between an open parenthesis and comma,
+ // i.e. '(,' vs. '( ,'.
+ log_rule("sp_paren_comma");
+ return(options::sp_paren_comma());
+ }
+ // Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.
+ log_rule("sp_before_comma");
+ return(options::sp_before_comma());
+ }
+
+ if (second->Is(CT_ELLIPSIS))
+ {
+ // type followed by a ellipsis
+ Chunk *tmp = first;
+
+ if ( tmp->Is(CT_PTR_TYPE)
+ || tmp->Is(CT_BYREF))
+ {
+ tmp = tmp->GetPrevNcNnl();
+ }
+
+ if ( tmp->Is(CT_TYPE)
+ || tmp->Is(CT_QUALIFIER))
+ {
+ // Add or remove space between a type and '...'.
+ log_rule("sp_type_ellipsis");
+ return(options::sp_type_ellipsis());
+ }
+
+ // non-punc followed by a ellipsis
+ if ( !first->TestFlags(PCF_PUNCTUATOR)
+ && (options::sp_before_ellipsis() != IARF_IGNORE))
+ {
+ // Add or remove space before the variadic '...' when preceded by a
+ // non-punctuator.
+ log_rule("sp_before_ellipsis");
+ return(options::sp_before_ellipsis());
+ }
+
+ if ( first->Is(CT_FPAREN_CLOSE)
+ || first->Is(CT_PAREN_CLOSE))
+ {
+ // Add or remove space between ')' and '...'.
+ log_rule("sp_paren_ellipsis");
+ return(options::sp_paren_ellipsis());
+ }
+
+ if (first->Is(CT_TAG_COLON))
+ {
+ log_rule("FORCE");
+ return(IARF_FORCE);
+ }
+
+ if (first->Is(CT_BYREF)) // Issue #3309
+ {
+ log_rule("sp_byref_ellipsis");
+ return(options::sp_byref_ellipsis());
+ }
+
+ if (first->Is(CT_PARAMETER_PACK)) // Issue #3309
+ {
+ log_rule("sp_parameter_pack_ellipsis");
+ return(options::sp_parameter_pack_ellipsis());
+ }
+ }
+
+ if (first->Is(CT_ELLIPSIS))
+ {
+ if (second->Is(CT_PARAMETER_PACK)) // Issue #3309
+ {
+ log_rule("sp_ellipsis_parameter_pack");
+ return(options::sp_ellipsis_parameter_pack());
+ }
+
+ if (CharTable::IsKw1(second->GetStr()[0]))
+ {
+ log_rule("FORCE");
+ return(IARF_FORCE);
+ }
+
+ if ( second->Is(CT_PAREN_OPEN)
+ && first->GetPrev()->Is(CT_SIZEOF))
+ {
+ // Add or remove space between 'sizeof...' and '('.
+ log_rule("sp_sizeof_ellipsis_paren");
+ return(options::sp_sizeof_ellipsis_paren());
+ }
+ }
+
+ if ( language_is_set(LANG_PAWN)
+ && first->Is(CT_TAG_COLON))
+ {
+ // (Pawn) Add or remove space after the tag keyword.
+ log_rule("sp_after_tag");
+ return(options::sp_after_tag());
+ }
+
+ if (second->Is(CT_TAG_COLON))
+ {
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ // handle '~'
+ if (first->Is(CT_DESTRUCTOR))
+ {
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if ( language_is_set(LANG_OC)
+ && first->Is(CT_CATCH)
+ && second->Is(CT_SPAREN_OPEN)
+ && (options::sp_oc_catch_paren() != IARF_IGNORE))
+ {
+ // (OC) Add or remove space between '@catch' and '('
+ // in '@catch (something) { }'. If set to ignore, sp_catch_paren is used.
+ log_rule("sp_oc_catch_paren");
+ return(options::sp_oc_catch_paren());
+ }
+
+ if ( language_is_set(LANG_OC)
+ && ( first->Is(CT_PAREN_CLOSE)
+ || first->Is(CT_OC_CLASS)
+ || first->Is(CT_WORD))
+ && second->Is(CT_ANGLE_OPEN)
+ && ( second->GetParentType() == CT_OC_PROTO_LIST
+ || second->GetParentType() == CT_OC_GENERIC_SPEC)
+ && (options::sp_before_oc_proto_list() != IARF_IGNORE))
+ {
+ // (OC) Add or remove space before Objective-C protocol list
+ // as in '@protocol Protocol<here><Protocol_A>' or '@interface MyClass : NSObject<here><MyProtocol>'.
+ log_rule("sp_before_oc_proto_list");
+ return(options::sp_before_oc_proto_list());
+ }
+
+ if ( language_is_set(LANG_OC)
+ && first->Is(CT_OC_CLASS)
+ && second->Is(CT_PAREN_OPEN)
+ && (options::sp_oc_classname_paren() != IARF_IGNORE))
+ {
+ // (OC) Add or remove space between class name and '('
+ // in '@interface className(categoryName)<ProtocolName>:BaseClass'
+ log_rule("sp_oc_classname_paren");
+ return(options::sp_oc_classname_paren());
+ }
+
+ if ( first->Is(CT_CATCH)
+ && second->Is(CT_SPAREN_OPEN)
+ && (options::sp_catch_paren() != IARF_IGNORE))
+ {
+ // Add or remove space between 'catch' and '(' in 'catch (something) { }'.
+ // If set to ignore, sp_before_sparen is used.
+ log_rule("sp_catch_paren");
+ return(options::sp_catch_paren());
+ }
+
+ if ( language_is_set(LANG_D)
+ && first->Is(CT_D_VERSION_IF)
+ && second->Is(CT_SPAREN_OPEN)
+ && (options::sp_version_paren() != IARF_IGNORE))
+ {
+ // (D) Add or remove space between 'version' and '('
+ // in 'version (something) { }'. If set to ignore, sp_before_sparen is used.
+ log_rule("sp_version_paren");
+ return(options::sp_version_paren());
+ }
+
+ if ( language_is_set(LANG_D)
+ && first->Is(CT_D_SCOPE_IF)
+ && second->Is(CT_SPAREN_OPEN)
+ && (options::sp_scope_paren() != IARF_IGNORE))
+ {
+ // (D) Add or remove space between 'scope' and '('
+ // in 'scope (something) { }'. If set to ignore, sp_before_sparen is used.
+ log_rule("sp_scope_paren");
+ return(options::sp_scope_paren());
+ }
+
+ if ( language_is_set(LANG_OC)
+ && first->Is(CT_SYNCHRONIZED)
+ && second->Is(CT_SPAREN_OPEN))
+ {
+ // (OC) Add or remove space between '@synchronized' and the open parenthesis,
+ // i.e. '@synchronized(foo)' vs. '@synchronized (foo)'.
+ log_rule("sp_after_oc_synchronized");
+ return(options::sp_after_oc_synchronized());
+ }
+
+ // "if (" vs. "if("
+ if (second->Is(CT_SPAREN_OPEN))
+ {
+ // Add or remove space after 'do' between 'while' and '('. Issue #995
+ if ( first->Is(CT_WHILE_OF_DO)
+ && options::sp_while_paren_open() != IARF_IGNORE)
+ {
+ log_rule("sp_while_paren_open");
+ return(options::sp_while_paren_open());
+ }
+ // Add or remove space before '(' of other control statements ('if', 'for',
+ // 'switch', 'while', etc.).
+ log_rule("sp_before_sparen");
+ return(options::sp_before_sparen());
+ }
+
+ if ( first->Is(CT_LAMBDA)
+ || second->Is(CT_LAMBDA))
+ {
+ // Add or remove space around assignment operator '=', '+=', etc.
+ log_rule("sp_assign (lambda)");
+ return(options::sp_assign());
+ }
+
+ // Handle the special lambda case for C++11:
+ // [=](Something arg){.....}
+ // Add or remove space around '=' in C++11 lambda capture specifications.
+ // Overrides sp_assign.
+ if ( (options::sp_cpp_lambda_assign() != IARF_IGNORE)
+ && ( ( first->Is(CT_SQUARE_OPEN)
+ && first->GetParentType() == CT_CPP_LAMBDA
+ && second->Is(CT_ASSIGN))
+ || ( first->Is(CT_ASSIGN)
+ && second->Is(CT_SQUARE_CLOSE)
+ && second->GetParentType() == CT_CPP_LAMBDA)))
+ {
+ log_rule("sp_cpp_lambda_assign");
+ return(options::sp_cpp_lambda_assign());
+ }
+
+ if ( first->Is(CT_SQUARE_CLOSE)
+ && first->GetParentType() == CT_CPP_LAMBDA)
+ {
+ // Handle the special lambda case for C++11:
+ // [](Something arg){.....}
+ // Add or remove space after the capture specification of a C++11 lambda when
+ // an argument list is present, as in '[] <here> (int x){ ... }'.
+ if (second->Is(CT_LPAREN_OPEN))
+ {
+ log_rule("sp_cpp_lambda_square_paren");
+ return(options::sp_cpp_lambda_square_paren());
+ }
+ else if (second->Is(CT_BRACE_OPEN))
+ {
+ // Add or remove space after the capture specification of a C++11 lambda with
+ // no argument list is present, as in '[] <here> { ... }'.
+ log_rule("sp_cpp_lambda_square_brace");
+ return(options::sp_cpp_lambda_square_brace());
+ }
+ }
+
+ if (first->Is(CT_LPAREN_OPEN))
+ {
+ if (second->Is(CT_LPAREN_CLOSE))
+ {
+ // Add or remove space after the opening parenthesis and before the closing
+ // parenthesis of a argument list of a C++11 lambda, as in
+ // '[]( <here> ){ ... }'
+ // with an empty list.
+ log_rule("sp_cpp_lambda_argument_list_empty");
+ return(options::sp_cpp_lambda_argument_list_empty());
+ }
+ // Add or remove space after the opening parenthesis of a argument list
+ // of a C++11 lambda, as in '[]( <here> int x ){ ... }'.
+ log_rule("sp_cpp_lambda_argument_list");
+ return(options::sp_cpp_lambda_argument_list());
+ }
+
+ if (first->Is(CT_LPAREN_CLOSE))
+ {
+ if (second->Is(CT_BRACE_OPEN))
+ {
+ // Add or remove space after the argument list of a C++11 lambda, as in
+ // '[](int x) <here> { ... }'.
+ log_rule("sp_cpp_lambda_paren_brace");
+ return(options::sp_cpp_lambda_paren_brace());
+ }
+ }
+
+ if (second->Is(CT_LPAREN_CLOSE))
+ {
+ // Add or remove space before the closing parenthesis of a argument list
+ // of a C++11 lambda, as in '[]( int x <here> ){ ... }'.
+ log_rule("sp_cpp_lambda_argument_list");
+ return(options::sp_cpp_lambda_argument_list());
+ }
+
+ if ( first->Is(CT_BRACE_CLOSE)
+ && first->GetParentType() == CT_CPP_LAMBDA
+ && second->Is(CT_FPAREN_OPEN))
+ {
+ // Add or remove space between a lambda body and its call operator of an
+ // immediately invoked lambda, as in '[]( ... ){ ... } <here> ( ... )'.
+ log_rule("sp_cpp_lambda_fparen");
+ return(options::sp_cpp_lambda_fparen());
+ }
+
+ if (first->Is(CT_ENUM))
+ {
+ if (second->Is(CT_BRACE_OPEN))
+ {
+ // Add or remove space in 'enum {'.
+ log_rule("sp_enum_brace");
+ return(options::sp_enum_brace());
+ }
+ else if (second->Is(CT_FPAREN_OPEN))
+ {
+ // Add or remove space in 'NS_ENUM ('.
+ log_rule("sp_enum_paren");
+ return(options::sp_enum_paren());
+ }
+ }
+
+ if (second->Is(CT_ASSIGN))
+ {
+ if (second->TestFlags(PCF_IN_ENUM))
+ {
+ // Add or remove space before assignment '=' in enum.
+ // Overrides sp_enum_assign.
+ if (options::sp_enum_before_assign() != IARF_IGNORE)
+ {
+ log_rule("sp_enum_before_assign");
+ return(options::sp_enum_before_assign());
+ }
+ // Add or remove space around assignment '=' in enum.
+ log_rule("sp_enum_assign");
+ return(options::sp_enum_assign());
+ }
+
+ // Add or remove space around assignment operator '=' in a prototype.
+ // If set to ignore, use sp_assign.
+ if ( (options::sp_assign_default() != IARF_IGNORE)
+ && second->GetParentType() == CT_FUNC_PROTO)
+ {
+ log_rule("sp_assign_default");
+ return(options::sp_assign_default());
+ }
+
+ // Add or remove space before assignment operator '=', '+=', etc.
+ // Overrides sp_assign.
+ if (options::sp_before_assign() != IARF_IGNORE)
+ {
+ log_rule("sp_before_assign");
+ return(options::sp_before_assign());
+ }
+ // Add or remove space around assignment operator '=', '+=', etc.
+ log_rule("sp_assign");
+ return(options::sp_assign());
+ }
+
+ if (second->Is(CT_ASSIGN_DEFAULT_ARG))
+ {
+ // Add or remove space around assignment operator '=' in a prototype.
+ // If set to ignore, use sp_assign.
+ if ( (options::sp_assign_default() != IARF_IGNORE)
+ && second->GetParentType() == CT_FUNC_PROTO)
+ {
+ log_rule("sp_assign_default");
+ return(options::sp_assign_default());
+ }
+
+ // Add or remove space before assignment operator '=', '+=', etc.
+ // Overrides sp_assign.
+ if (options::sp_before_assign() != IARF_IGNORE)
+ {
+ log_rule("sp_before_assign");
+ return(options::sp_before_assign());
+ }
+ // Add or remove space around assignment operator '=', '+=', etc.
+ log_rule("sp_assign");
+ return(options::sp_assign());
+ }
+
+ if (first->Is(CT_ASSIGN))
+ {
+ if (first->TestFlags(PCF_IN_ENUM))
+ {
+ // Add or remove space after assignment '=' in enum.
+ // Overrides sp_enum_assign.
+ if (options::sp_enum_after_assign() != IARF_IGNORE)
+ {
+ log_rule("sp_enum_after_assign");
+ return(options::sp_enum_after_assign());
+ }
+ // Add or remove space around assignment '=' in enum.
+ log_rule("sp_enum_assign");
+ return(options::sp_enum_assign());
+ }
+
+ // Add or remove space around assignment operator '=' in a prototype.
+ // If set to ignore, use sp_assign.
+ if ( (options::sp_assign_default() != IARF_IGNORE)
+ && first->GetParentType() == CT_FUNC_PROTO)
+ {
+ log_rule("sp_assign_default");
+ return(options::sp_assign_default());
+ }
+
+ // Add or remove space after assignment operator '=', '+=', etc.
+ // Overrides sp_assign.
+ if (options::sp_after_assign() != IARF_IGNORE)
+ {
+ log_rule("sp_after_assign");
+ return(options::sp_after_assign());
+ }
+ // Add or remove space around assignment operator '=', '+=', etc.
+ log_rule("sp_assign");
+ return(options::sp_assign());
+ }
+
+ if ( first->Is(CT_TRAILING_RET)
+ || first->Is(CT_CPP_LAMBDA_RET)
+ || second->Is(CT_TRAILING_RET)
+ || second->Is(CT_CPP_LAMBDA_RET))
+ {
+ // Add or remove space around trailing return operator '->'.
+ log_rule("sp_trailing_return");
+ return(options::sp_trailing_return());
+ }
+
+ if (first->Is(CT_ASSIGN_DEFAULT_ARG))
+ {
+ // Add or remove space around assignment operator '=' in a prototype.
+ // If set to ignore, use sp_assign.
+ if ( (options::sp_assign_default() != IARF_IGNORE)
+ && first->GetParentType() == CT_FUNC_PROTO)
+ {
+ log_rule("sp_assign_default");
+ return(options::sp_assign_default());
+ }
+
+ // Add or remove space after assignment operator '=', '+=', etc.
+ // Overrides sp_assign.
+ if (options::sp_after_assign() != IARF_IGNORE)
+ {
+ log_rule("sp_after_assign");
+ return(options::sp_after_assign());
+ }
+ // Add or remove space around assignment operator '=', '+=', etc.
+ log_rule("sp_assign");
+ return(options::sp_assign());
+ }
+
+ if (first->Is(CT_ENUM_COLON)) // Issue #4040
+ {
+ // Add or remove space around assignment ':' in enum.
+ log_rule("sp_enum_colon");
+ return(options::sp_enum_colon());
+ }
+
+ if (second->Is(CT_ENUM_COLON)) // Issue #4040
+ {
+ // Add or remove space around assignment ':' in enum.
+ log_rule("sp_enum_colon");
+ return(options::sp_enum_colon());
+ }
+
+ if (first->Is(CT_BIT_COLON)) // Issue #4040
+ {
+ // Add or remove space after a bit colon ':'.
+ log_rule("sp_after_bit_colon");
+ return(options::sp_after_bit_colon());
+ }
+
+ if (second->Is(CT_BIT_COLON)) // Issue #4040
+ {
+ // Add or remove space before a bit colon ':'.
+ log_rule("sp_before_bit_colon");
+ return(options::sp_before_bit_colon());
+ }
+
+ if ( first->Is(CT_OC_AVAILABLE_VALUE)
+ || second->Is(CT_OC_AVAILABLE_VALUE))
+ {
+ log_rule("IGNORE");
+ return(IARF_IGNORE);
+ }
+
+ if (language_is_set(LANG_OC))
+ {
+ if (second->Is(CT_OC_BLOCK_CARET))
+ {
+ // (OC) Add or remove space before a block pointer caret,
+ // i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'.
+ log_rule("sp_before_oc_block_caret");
+ return(options::sp_before_oc_block_caret());
+ }
+
+ if (first->Is(CT_OC_BLOCK_CARET))
+ {
+ // (OC) Add or remove space after a block pointer caret,
+ // i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'.
+ log_rule("sp_after_oc_block_caret");
+ return(options::sp_after_oc_block_caret());
+ }
+
+ if (second->Is(CT_OC_MSG_FUNC))
+ {
+ if ( (options::sp_after_oc_msg_receiver() == IARF_REMOVE)
+ && ( first->IsNot(CT_SQUARE_CLOSE)
+ && first->IsNot(CT_FPAREN_CLOSE)
+ && first->IsNot(CT_PAREN_CLOSE)))
+ {
+ log_rule("FORCE");
+ return(IARF_FORCE);
+ }
+ // (OC) Add or remove space between the receiver and selector in a message,
+ // as in '[receiver selector ...]'.
+ log_rule("sp_after_oc_msg_receiver");
+ return(options::sp_after_oc_msg_receiver());
+ }
+ }
+
+ // c++17 structured bindings e.g., "auto [x, y, z]" vs. a[x, y, z]" or "auto const [x, y, z]" vs. "auto const[x, y, z]"
+ if ( language_is_set(LANG_CPP)
+ && ( first->Is(CT_BYREF)
+ || first->Is(CT_QUALIFIER)
+ || first->Is(CT_TYPE))
+ && second->Is(CT_SQUARE_OPEN)
+ && second->GetParentType() != CT_OC_MSG
+ && second->GetParentType() != CT_CS_SQ_STMT)
+ {
+ // Add or remove space before C++17 structured bindings.
+ log_rule("sp_cpp_before_struct_binding");
+ return(options::sp_cpp_before_struct_binding());
+ }
+
+ // "a [x]" vs. "a[x]"
+ if ( second->Is(CT_SQUARE_OPEN)
+ && ( second->GetParentType() != CT_OC_MSG
+ && second->GetParentType() != CT_CS_SQ_STMT
+ && second->GetParentType() != CT_CPP_LAMBDA))
+ {
+ if ( second->TestFlags(PCF_IN_SPAREN)
+ && (first->Is(CT_IN)))
+ {
+ log_rule("FORCE");
+ return(IARF_FORCE);
+ }
+
+ if (first->Is(CT_ASM_COLON))
+ {
+ // Add or remove space before '[' for asm block.
+ log_rule("sp_before_square_asm_block");
+ return(options::sp_before_square_asm_block());
+ }
+
+ if (first->TestFlags(PCF_VAR_DEF))
+ {
+ // Add or remove space before '[' for a variable definition.
+ log_rule("sp_before_vardef_square");
+ return(options::sp_before_vardef_square());
+ }
+ // Add or remove space before '[' (except '[]').
+ log_rule("sp_before_square");
+ return(options::sp_before_square());
+ }
+
+ // "byte[]" vs. "byte []"
+ if (second->Is(CT_TSQUARE))
+ {
+ // Add or remove space before '[]'.
+ log_rule("sp_before_squares");
+ return(options::sp_before_squares());
+ }
+
+ if ( (options::sp_angle_shift() != IARF_IGNORE)
+ && first->Is(CT_ANGLE_CLOSE)
+ && second->Is(CT_ANGLE_CLOSE))
+ {
+ // Add or remove space between '>' and '>' in '>>' (template stuff).
+ log_rule("sp_angle_shift");
+ return(options::sp_angle_shift());
+ }
+
+ // Issue #4094-01
+ // spacing around template < > stuff
+ if ( first->Is(CT_ANGLE_OPEN)
+ || second->Is(CT_ANGLE_CLOSE))
+ {
+ if ( first->Is(CT_ANGLE_OPEN)
+ && second->Is(CT_ANGLE_CLOSE))
+ {
+ // Add or remove space inside '<>'.
+ // if empty.
+ log_rule("sp_inside_angle_empty");
+ return(options::sp_inside_angle_empty());
+ }
+ // Add or remove space inside '<' and '>'.
+ log_rule("sp_inside_angle");
+ iarf_e op = options::sp_inside_angle();
+
+ // special: if we're not supporting digraphs, then we shouldn't create them!
+ if ( (op == IARF_REMOVE)
+ && !options::enable_digraphs()
+ && first->Is(CT_ANGLE_OPEN)
+ && second->Is(CT_DC_MEMBER))
+ {
+ op = IARF_IGNORE;
+ }
+ return(op);
+ }
+
+ if (second->Is(CT_ANGLE_OPEN))
+ {
+ if ( first->Is(CT_TEMPLATE)
+ && (options::sp_template_angle() != IARF_IGNORE))
+ {
+ // Add or remove space between 'template' and '<'.
+ // If set to ignore, sp_before_angle is used.
+ log_rule("sp_template_angle");
+ return(options::sp_template_angle());
+ }
+
+ if (first->IsNot(CT_QUALIFIER))
+ {
+ // Add or remove space before '<'.
+ log_rule("sp_before_angle");
+ return(options::sp_before_angle());
+ }
+ }
+
+ if (first->Is(CT_ANGLE_CLOSE))
+ {
+ if ( second->Is(CT_WORD)
+ || CharTable::IsKw1(second->GetStr()[0]))
+ {
+ // Add or remove space between '>' and a word as in 'List<byte> m;' or
+ // 'template <typename T> static ...'.
+ log_rule("sp_angle_word");
+ return(options::sp_angle_word());
+ }
+
+ // Issue #4094-02
+ if ( second->Is(CT_FPAREN_OPEN)
+ || second->Is(CT_PAREN_OPEN))
+ {
+ Chunk *next = second->GetNextNcNnl();
+
+ if (next->Is(CT_FPAREN_CLOSE))
+ {
+ // Add or remove space between '>' and '()' as found in 'new List<byte>();'.
+ log_rule("sp_angle_paren_empty");
+ return(options::sp_angle_paren_empty());
+ }
+ // Add or remove space between '>' and '(' as found in 'new List<byte>(foo);'.
+ log_rule("sp_angle_paren");
+ return(options::sp_angle_paren());
+ }
+
+ if (second->Is(CT_DC_MEMBER))
+ {
+ // Add or remove space before the '::' operator.
+ log_rule("sp_before_dc");
+ return(options::sp_before_dc());
+ }
+
+ if ( second->IsNot(CT_BYREF)
+ && second->IsNot(CT_PTR_TYPE)
+ && second->IsNot(CT_BRACE_OPEN)
+ && second->IsNot(CT_PAREN_CLOSE))
+ {
+ if ( second->Is(CT_CLASS_COLON)
+ && options::sp_angle_colon() != IARF_IGNORE)
+ {
+ // Add or remove space between '>' and ':'.
+ log_rule("sp_angle_colon");
+ return(options::sp_angle_colon());
+ }
+
+ // Whether sp_after_angle takes precedence over sp_inside_fparen. This was the
+ // historic behavior, but is probably not the desired behavior, so this is off
+ // by default.
+ if ( second->Is(CT_FPAREN_CLOSE)
+ && options::sp_inside_fparen() != IARF_IGNORE
+ && !options::use_sp_after_angle_always())
+ {
+ // Add or remove space between '>' and ')'.
+ log_rule("sp_inside_fparen");
+ return(options::sp_inside_fparen());
+ }
+ // Add or remove space after '>'.
+ log_rule("sp_after_angle");
+ return(options::sp_after_angle());
+ }
+ }
+
+ if (first->Is(CT_BYREF)) // see the tests cpp:34509-34512
+ {
+ if (second->Is(CT_PAREN_OPEN))
+ {
+ // Add or remove space after a reference sign '&', if followed by an open
+ // parenthesis, as in 'char& (*)()'.
+ log_rule("sp_byref_paren");
+ return(options::sp_byref_paren());
+ }
+ else if ( first->GetParentType() == CT_FUNC_DEF // Issue #3197, #3210
+ || first->GetParentType() == CT_FUNC_PROTO)
+ {
+ // Add or remove space after a reference sign '&', if followed by a function
+ // prototype or function definition.
+ log_rule("sp_after_byref_func"); // byref 2
+ return(options::sp_after_byref_func());
+ }
+ else if ( CharTable::IsKw1(second->GetStr()[0])
+ && ( options::sp_after_byref() != IARF_IGNORE
+ || ( !second->Is(CT_FUNC_PROTO)
+ && !second->Is(CT_FUNC_DEF))))
+ {
+ // Add or remove space after reference sign '&', if followed by a word.
+ log_rule("sp_after_byref"); // byref 1
+ return(options::sp_after_byref());
+ }
+ }
+
+ if ( second->Is(CT_BYREF)
+ && !first->Is(CT_PAREN_OPEN)) // Issue #1804
+ {
+ if ( second->GetParentType() == CT_FUNC_DEF // Issue #3197, #3210
+ || second->GetParentType() == CT_FUNC_PROTO)
+ {
+ // Add or remove space before a reference sign '&', if followed by a function
+ // prototype or function definition.
+ log_rule("sp_before_byref_func"); // byref 4
+ return(options::sp_before_byref_func());
+ }
+ Chunk *next = second->GetNext();
+
+ if ( next->IsNotNullChunk()
+ && ( next->Is(CT_COMMA)
+ || next->Is(CT_PAREN_CLOSE) // Issue #3691
+ || next->Is(CT_FPAREN_CLOSE)
+ || next->Is(CT_SEMICOLON)))
+ {
+ if (options::sp_before_unnamed_byref() != IARF_IGNORE) // Issue #3691
+ {
+ // Add or remove space before a reference sign '&' that isn't followed by a
+ // variable name. If set to 'ignore', sp_before_byref is used instead.
+ log_rule("sp_before_unnamed_byref"); // byref 5
+ return(options::sp_before_unnamed_byref());
+ }
+ else
+ {
+ // Add or remove space before a reference sign '&'.
+ log_rule("sp_before_byref"); // byref 3
+ return(options::sp_before_byref());
+ }
+ }
+
+ if (first->Is(CT_PTR_TYPE))
+ {
+ // Add or remove space between pointer and Ref.
+ // as in 'int *& a'.
+ log_rule("sp_between_ptr_ref"); // ptr_ref 1
+ return(options::sp_between_ptr_ref());
+ }
+ // Add or remove space before a reference sign '&'.
+ log_rule("sp_before_byref"); // byref 3
+ return(options::sp_before_byref());
+ }
+
+ if (first->Is(CT_SPAREN_CLOSE))
+ {
+ if (second->Is(CT_BRACE_OPEN))
+ {
+ if (second->GetParentType() == CT_CATCH)
+ {
+ if ( language_is_set(LANG_OC)
+ && (options::sp_oc_catch_brace() != IARF_IGNORE))
+ {
+ // (OC) Add or remove space before the '{' of a '@catch' statement, if the '{'
+ // and '@catch' are on the same line, as in '@catch (decl) <here> {'.
+ // If set to ignore, sp_catch_brace is used.
+ // only to help the vim command }}
+ log_rule("sp_oc_catch_brace");
+ return(options::sp_oc_catch_brace());
+ }
+
+ if (options::sp_catch_brace() != IARF_IGNORE)
+ {
+ // Add or remove space before the '{' of a 'catch' statement, if the '{' and
+ // 'catch' are on the same line, as in 'catch (decl) <here> {'.
+ log_rule("sp_catch_brace");
+ return(options::sp_catch_brace());
+ }
+ }
+
+ if (options::sp_sparen_brace() != IARF_IGNORE)
+ {
+ // Add or remove space between ')' and '{' of control statements.
+ log_rule("sp_sparen_brace");
+ return(options::sp_sparen_brace());
+ }
+ }
+ }
+
+ // Issue #4094-07
+ if ( second->Is(CT_FPAREN_OPEN)
+ && first->GetParentType() == CT_OPERATOR
+ && (options::sp_after_operator_sym() != IARF_IGNORE))
+ {
+ if ( (options::sp_after_operator_sym_empty() != IARF_IGNORE)
+ && second->Is(CT_FPAREN_OPEN))
+ {
+ Chunk *next = second->GetNextNcNnl();
+
+ if (next->Is(CT_FPAREN_CLOSE))
+ {
+ // Overrides sp_after_operator_sym when the operator has no arguments, as in
+ // 'operator *()'.
+ log_rule("sp_after_operator_sym_empty");
+ return(options::sp_after_operator_sym_empty());
+ }
+ }
+ // Add or remove space between the operator symbol and the open parenthesis, as
+ // in 'operator ++('.
+ log_rule("sp_after_operator_sym");
+ return(options::sp_after_operator_sym());
+ }
+
+ // Issue #2270
+ // Translations under vala
+ if ( language_is_set(LANG_VALA)
+ && first->Is(CT_FUNC_CALL))
+ {
+ if ( first->IsString("_")
+ && second->Is(CT_FPAREN_OPEN)
+ && (options::sp_vala_after_translation() != IARF_IGNORE))
+ {
+ // Add or remove space after '_'.
+ log_rule("sp_vala_after_translation");
+ return(options::sp_vala_after_translation());
+ }
+ }
+
+ if ( first->Is(CT_MACRO_OPEN)
+ || first->Is(CT_MACRO_CLOSE)
+ || first->Is(CT_MACRO_ELSE))
+ {
+ if (second->Is(CT_FPAREN_OPEN))
+ {
+ // TODO: provide some test data to check this block
+ // Add or remove space between function name and '(' on function calls.
+ log_rule("sp_func_call_paren");
+ return(options::sp_func_call_paren());
+ }
+ log_rule("IGNORE");
+ return(IARF_IGNORE);
+ }
+
+ // Issue #4094-11
+ // spaces between function and open paren
+ if ( first->Is(CT_FUNC_CALL)
+ || first->Is(CT_FUNCTION) // Issue #2665
+ || first->Is(CT_FUNC_CTOR_VAR)
+ || first->Is(CT_CNG_HASINC)
+ || first->Is(CT_CNG_HASINCN)
+ || ( first->Is(CT_BRACE_CLOSE)
+ && first->GetParentType() == CT_BRACED_INIT_LIST
+ && second->Is(CT_FPAREN_OPEN))
+ || ( first->Is(CT_FUNC_VAR) // Issue #3852
+ && second->Is(CT_PAREN_OPEN)))
+ {
+ if ( (options::sp_func_call_paren_empty() != IARF_IGNORE)
+ && second->Is(CT_FPAREN_OPEN))
+ {
+ Chunk *next = second->GetNextNcNnl();
+
+ if (next->Is(CT_FPAREN_CLOSE))
+ {
+ // Add or remove space between function name and '()' on function calls without
+ // parameters. If set to 'ignore' (the default), sp_func_call_paren is used.
+ log_rule("sp_func_call_paren_empty");
+ return(options::sp_func_call_paren_empty());
+ }
+ }
+ // Add or remove space between function name and '(' on function calls.
+ log_rule("sp_func_call_paren");
+ return(options::sp_func_call_paren());
+ }
+
+ if (first->Is(CT_FUNC_CALL_USER))
+ {
+ // Add or remove space between the user function name and '(' on function
+ // calls. You need to set a keyword to be a user function in the config file,
+ // like:
+ // set func_call_user tr _ i18n
+ log_rule("sp_func_call_user_paren");
+ return(options::sp_func_call_user_paren());
+ }
+
+ if ( first->Is(CT_ATTRIBUTE)
+ && second->IsParenOpen())
+ {
+ // Add or remove space between '__attribute__' and '('.
+ log_rule("sp_attribute_paren");
+ return(options::sp_attribute_paren());
+ }
+
+ // Issue #4094-10
+ if (first->Is(CT_FUNC_DEF))
+ {
+ if ( (options::sp_func_def_paren_empty() != IARF_IGNORE)
+ && second->Is(CT_FPAREN_OPEN))
+ {
+ Chunk *next = second->GetNextNcNnl();
+
+ if (next->Is(CT_FPAREN_CLOSE))
+ {
+ // Add or remove space between function name and '()' on function definition
+ // if empty.
+ log_rule("sp_func_def_paren_empty");
+ return(options::sp_func_def_paren_empty());
+ }
+ }
+ // Add or remove space between function name and '(' on function definition.
+ log_rule("sp_func_def_paren");
+ return(options::sp_func_def_paren());
+ }
+
+ if ( first->Is(CT_CPP_CAST)
+ || first->Is(CT_TYPE_WRAP))
+ {
+ // Add or remove space between the type and open parenthesis in a C++ cast,
+ // i.e. 'int(exp)' vs. 'int (exp)'.
+ log_rule("sp_cpp_cast_paren");
+ return(options::sp_cpp_cast_paren());
+ }
+
+ if ( first->Is(CT_SPAREN_CLOSE)
+ && second->Is(CT_WHEN))
+ {
+ // TODO: provide some test data to check this block
+ log_rule("FORCE");
+ return(IARF_FORCE); // TODO: make this configurable?
+ }
+
+ if ( first->Is(CT_PAREN_CLOSE)
+ && ( second->Is(CT_PAREN_OPEN)
+ || second->Is(CT_FPAREN_OPEN)))
+ {
+ // "(int)a" vs. "(int) a" or "cast(int)a" vs. "cast(int) a"
+ if ( first->GetParentType() == CT_C_CAST
+ || first->GetParentType() == CT_D_CAST)
+ {
+ // Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or
+ // '(int)a' vs. '(int) a'.
+ log_rule("sp_after_cast");
+ return(options::sp_after_cast());
+ }
+ // Probably a parenthesized indirect function call or similar (issue #3260)
+ log_rule("sp_cparen_oparen");
+ return(options::sp_cparen_oparen());
+ }
+
+ // handle the space between parens in fcn type 'void (*f)(void)'
+ if (first->Is(CT_TPAREN_CLOSE))
+ {
+ // Add or remove space between the ')' and '(' in a function type, as in
+ // 'void (*x)(...)'.
+ log_rule("sp_after_tparen_close");
+ return(options::sp_after_tparen_close());
+ }
+
+ // ")(" vs. ") ("
+ if ( ( first->IsString(")")
+ && second->IsString("("))
+ || ( first->IsParenClose()
+ && second->IsParenOpen()))
+ {
+ // Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.
+ log_rule("sp_cparen_oparen");
+ return(options::sp_cparen_oparen());
+ }
+
+ // Issue #4094-09
+ if ( first->Is(CT_FUNC_PROTO)
+ || ( second->Is(CT_FPAREN_OPEN)
+ && second->GetParentType() == CT_FUNC_PROTO))
+ {
+ if ( (options::sp_func_proto_paren_empty() != IARF_IGNORE)
+ && second->Is(CT_FPAREN_OPEN))
+ {
+ Chunk *next = second->GetNextNcNnl();
+
+ if (next->Is(CT_FPAREN_CLOSE))
+ {
+ // Add or remove space between function name and '()' on function declaration
+ // if empty.
+ log_rule("sp_func_proto_paren_empty");
+ return(options::sp_func_proto_paren_empty());
+ }
+ }
+ // Add or remove space between function name and '(' on function declaration.
+ log_rule("sp_func_proto_paren");
+ return(options::sp_func_proto_paren());
+ }
+
+ // Issue #2437
+ if ( first->Is(CT_FUNC_TYPE)
+ && second->Is(CT_FPAREN_OPEN))
+ {
+ // Add or remove space between function name and '(' with a typedef specifier.
+ log_rule("sp_func_type_paren");
+ return(options::sp_func_type_paren());
+ }
+
+ // Issue #4094-12
+ if ( first->Is(CT_FUNC_CLASS_DEF)
+ || first->Is(CT_FUNC_CLASS_PROTO))
+ {
+ if ( (options::sp_func_class_paren_empty() != IARF_IGNORE)
+ && second->Is(CT_FPAREN_OPEN))
+ {
+ Chunk *next = second->GetNextNcNnl();
+
+ if (next->Is(CT_FPAREN_CLOSE))
+ {
+ // Add or remove space between a constructor without parameters or destructor
+ // and '()'.
+ log_rule("sp_func_class_paren_empty");
+ return(options::sp_func_class_paren_empty());
+ }
+ }
+ // Add or remove space between a constructor/destructor and the open
+ // parenthesis.
+ log_rule("sp_func_class_paren");
+ return(options::sp_func_class_paren());
+ }
+
+ if ( first->Is(CT_CLASS)
+ && !first->TestFlags(PCF_IN_OC_MSG))
+ {
+ log_rule("FORCE");
+ return(IARF_FORCE);
+ }
+
+ // Issue #4094-08
+ if ( first->Is(CT_BRACE_OPEN)
+ && second->Is(CT_BRACE_CLOSE))
+ {
+ // Add or remove space inside '{}'.
+ // if empty.
+ log_rule("sp_inside_braces_empty");
+ return(options::sp_inside_braces_empty());
+ }
+
+ if ( ( first->Is(CT_TYPE) // Issue #2428
+ || first->Is(CT_ANGLE_CLOSE))
+ && second->Is(CT_BRACE_OPEN)
+ && second->GetParentType() == CT_BRACED_INIT_LIST)
+ {
+ iarf_flags_t arg = iarf_flags_t{ options::sp_type_brace_init_lst() };
+
+ if ( arg != IARF_IGNORE
+ || first->GetParentType() != CT_DECLTYPE)
+ {
+ // 'int{9}' vs. 'int {9}'
+ // Add or remove space between type and open brace of an unnamed temporary
+ // direct-list-initialization.
+ log_rule("sp_type_brace_init_lst");
+ return(arg);
+ }
+ }
+
+ if ( ( first->Is(CT_WORD) // Issue #2428
+ || first->Is(CT_SQUARE_CLOSE)
+ || first->Is(CT_TSQUARE))
+ && second->Is(CT_BRACE_OPEN)
+ && second->GetParentType() == CT_BRACED_INIT_LIST)
+ {
+ // Add or remove space between a variable and '{' for C++ uniform
+ // initialization.
+ auto arg = iarf_flags_t{ options::sp_word_brace_init_lst() };
+
+ if ( arg != IARF_IGNORE
+ || first->GetParentType() != CT_DECLTYPE)
+ {
+ // 'a{9}' vs. 'a {9}'
+ // Add or remove space between variable/word and open brace of an unnamed
+ // temporary direct-list-initialization.
+ log_rule("sp_word_brace_init_lst");
+ return(arg);
+ }
+ }
+
+ if (second->Is(CT_BRACE_CLOSE))
+ {
+ if (second->GetParentType() == CT_ENUM)
+ {
+ // Add or remove space inside enum '{' and '}'.
+ log_rule("sp_inside_braces_enum");
+ return(options::sp_inside_braces_enum());
+ }
+
+ if ( second->GetParentType() == CT_STRUCT
+ || second->GetParentType() == CT_UNION)
+ {
+ // Fix for issue #1240 adding space in struct initializers
+ Chunk *tmp = second->GetOpeningParen()->GetPrevNcNnl();
+
+ if (tmp->Is(CT_ASSIGN))
+ {
+ // TODO: provide some test data to check this block
+ log_rule("IGNORE");
+ return(IARF_IGNORE);
+ }
+ // Add or remove space inside struct/union '{' and '}'.
+ log_rule("sp_inside_braces_struct");
+ return(options::sp_inside_braces_struct());
+ }
+ else if ( language_is_set(LANG_OC)
+ && second->GetParentType() == CT_OC_AT
+ && options::sp_inside_braces_oc_dict() != IARF_IGNORE)
+ {
+ // (OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'
+ log_rule("sp_inside_braces_oc_dict");
+ return(options::sp_inside_braces_oc_dict());
+ }
+
+ if (second->GetParentType() == CT_BRACED_INIT_LIST)
+ {
+ // Add or remove space between nested braces, i.e. '{{' vs. '{ {'.
+ // only to help the vim command }}}}
+ if ( options::sp_brace_brace() != IARF_IGNORE
+ && first->Is(CT_BRACE_CLOSE)
+ && first->GetParentType() == CT_BRACED_INIT_LIST)
+ {
+ log_rule("sp_brace_brace");
+ return(options::sp_brace_brace());
+ }
+
+ if (options::sp_before_type_brace_init_lst_close() != IARF_IGNORE)
+ {
+ // Add or remove space before close brace in an unnamed temporary
+ // direct-list-initialization
+ // if statement is a brace_init_lst
+ // works only if sp_brace_brace is set to ignore.
+ log_rule("sp_before_type_brace_init_lst_close");
+ return(options::sp_before_type_brace_init_lst_close());
+ }
+
+ if (options::sp_inside_type_brace_init_lst() != IARF_IGNORE)
+ {
+ // Add or remove space inside an unnamed temporary direct-list-initialization.
+ // if statement is a brace_init_lst
+ // works only if sp_brace_brace is set to ignore
+ // works only if sp_before_type_brace_init_lst_close is set to ignore.
+ log_rule("sp_inside_type_brace_init_lst");
+ return(options::sp_inside_type_brace_init_lst());
+ }
+ }
+ // Add or remove space inside '{' and '}'.
+ log_rule("sp_inside_braces");
+ return(options::sp_inside_braces());
+ }
+
+ if (first->Is(CT_D_CAST))
+ {
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if ( first->Is(CT_PP_DEFINED)
+ && second->Is(CT_PAREN_OPEN))
+ {
+ // Add or remove space between 'defined' and '(' in '#if defined (FOO)'.
+ log_rule("sp_defined_paren");
+ return(options::sp_defined_paren());
+ }
+
+ if (first->Is(CT_THROW))
+ {
+ if (second->Is(CT_PAREN_OPEN))
+ {
+ // Add or remove space between 'throw' and '(' in 'throw (something)'.
+ log_rule("sp_throw_paren");
+ return(options::sp_throw_paren());
+ }
+ // Add or remove space between 'throw' and anything other than '(' as in
+ // '@throw [...];'.
+ log_rule("sp_after_throw");
+ return(options::sp_after_throw());
+ }
+
+ if ( first->Is(CT_THIS)
+ && second->Is(CT_PAREN_OPEN))
+ {
+ // Add or remove space between 'this' and '(' in 'this (something)'.
+ log_rule("sp_this_paren");
+ return(options::sp_this_paren());
+ }
+
+ if ( first->Is(CT_STATE)
+ && second->Is(CT_PAREN_OPEN))
+ {
+ log_rule("ADD");
+ return(IARF_ADD);
+ }
+
+ if ( first->Is(CT_DELEGATE)
+ && second->Is(CT_PAREN_OPEN))
+ {
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if ( first->Is(CT_MEMBER)
+ || second->Is(CT_MEMBER))
+ {
+ // Add or remove space around the '.' or '->' operators.
+ log_rule("sp_member");
+ return(options::sp_member());
+ }
+
+ if (first->Is(CT_C99_MEMBER))
+ {
+ // always remove space(s) after then '.' of a C99-member
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if ( first->Is(CT_SUPER)
+ && second->Is(CT_PAREN_OPEN))
+ {
+ // Add or remove space between 'super' and '(' in 'super (something)'.
+ log_rule("sp_super_paren");
+ return(options::sp_super_paren());
+ }
+
+ if ( first->Is(CT_FPAREN_CLOSE)
+ && second->Is(CT_BRACE_OPEN))
+ {
+ if ( language_is_set(LANG_JAVA)
+ && second->GetParentType() == CT_DOUBLE_BRACE)
+ {
+ // (Java) Add or remove space between ')' and '{{' of double brace initializer.
+ // only to help the vim command }}
+ log_rule("sp_fparen_dbrace");
+ return(options::sp_fparen_dbrace());
+ }
+
+ // To fix issue #1234
+ // check for initializers and add space or ignore based on the option.
+ if (first->GetParentType() == CT_FUNC_CALL)
+ {
+ Chunk *tmp = first->GetPrevType(first->GetParentType(), first->GetLevel());
+ tmp = tmp->GetPrevNcNnl();
+
+ if (tmp->Is(CT_NEW))
+ {
+ // Add or remove space between ')' and '{' of s function call in object
+ // initialization.
+ // Overrides sp_fparen_brace.
+ log_rule("sp_fparen_brace_initializer");
+ return(options::sp_fparen_brace_initializer());
+ }
+ }
+ // Add or remove space between ')' and '{' of function.
+ log_rule("sp_fparen_brace");
+ return(options::sp_fparen_brace());
+ }
+
+ if ( first->Is(CT_D_TEMPLATE)
+ || second->Is(CT_D_TEMPLATE))
+ {
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if ( first->Is(CT_ELSE)
+ && second->Is(CT_BRACE_OPEN))
+ {
+ // Add or remove space between 'else' and '{' if on the same line.
+ log_rule("sp_else_brace");
+ return(options::sp_else_brace());
+ }
+
+ if ( first->Is(CT_ELSE)
+ && second->Is(CT_ELSEIF))
+ {
+ log_rule("FORCE");
+ return(IARF_FORCE);
+ }
+
+ if ( first->Is(CT_FINALLY)
+ && second->Is(CT_BRACE_OPEN))
+ {
+ // Add or remove space between 'finally' and '{' if on the same line.
+ log_rule("sp_finally_brace");
+ return(options::sp_finally_brace());
+ }
+
+ if ( first->Is(CT_TRY)
+ && second->Is(CT_BRACE_OPEN))
+ {
+ // Add or remove space between 'try' and '{' if on the same line.
+ log_rule("sp_try_brace");
+ return(options::sp_try_brace());
+ }
+
+ if ( first->Is(CT_GETSET)
+ && second->Is(CT_BRACE_OPEN))
+ {
+ // Add or remove space between get/set and '{' if on the same line.
+ log_rule("sp_getset_brace");
+ return(options::sp_getset_brace());
+ }
+
+ if ( first->Is(CT_WORD)
+ && second->Is(CT_BRACE_OPEN))
+ {
+ if (first->GetParentType() == CT_NAMESPACE)
+ {
+ // Add or remove space between a variable and '{' for a namespace.
+ log_rule("sp_word_brace_ns");
+ return(options::sp_word_brace_ns());
+ }
+ }
+
+ if ( language_is_set(LANG_D)
+ && second->Is(CT_PAREN_OPEN)
+ && second->GetParentType() == CT_INVARIANT)
+ {
+ // (D) Add or remove space between 'invariant' and '('.
+ log_rule("sp_invariant_paren");
+ return(options::sp_invariant_paren());
+ }
+
+ if ( first->Is(CT_PAREN_CLOSE)
+ && first->GetParentType() != CT_DECLTYPE)
+ {
+ if ( language_is_set(LANG_D)
+ && first->GetParentType() == CT_INVARIANT)
+ {
+ // (D) Add or remove space after the ')' in 'invariant (C) c'.
+ log_rule("sp_after_invariant_paren");
+ return(options::sp_after_invariant_paren());
+ }
+
+ // "(struct foo) {...}" vs. "(struct foo){...}"
+ if (second->Is(CT_BRACE_OPEN))
+ {
+ // Add or remove space between ')' and '{'.
+ log_rule("sp_paren_brace");
+ return(options::sp_paren_brace());
+ }
+
+ // D-specific: "delegate(some thing) dg
+ if (first->GetParentType() == CT_DELEGATE)
+ {
+ log_rule("ADD");
+ return(IARF_ADD);
+ }
+
+ // PAWN-specific: "state (condition) next"
+ if (first->GetParentType() == CT_STATE)
+ {
+ log_rule("ADD");
+ return(IARF_ADD);
+ }
+
+ /* C++ new operator: new(bar) Foo */
+ if (first->GetParentType() == CT_NEW)
+ {
+ // Add or remove space between ')' and type in 'new(foo) BAR'.
+ log_rule("sp_after_newop_paren");
+ return(options::sp_after_newop_paren());
+ }
+ }
+
+ /* "((" vs. "( (" or "))" vs. ") )" */
+ // Issue #1342
+ if ( ( first->IsString("(")
+ && second->IsString("("))
+ || ( first->IsString(")")
+ && second->IsString(")")))
+ {
+ if (second->GetParentType() == CT_FUNC_CALL_USER)
+ {
+ // Add or remove space between nested parentheses with user functions,
+ // i.e. '((' vs. '( ('.
+ log_rule("sp_func_call_user_paren_paren");
+ return(options::sp_func_call_user_paren_paren());
+ }
+
+ if ( options::sp_sparen_paren() != IARF_IGNORE
+ && ( first->Is(CT_SPAREN_OPEN)
+ || second->Is(CT_SPAREN_CLOSE)))
+ {
+ // Add or remove space between nested parentheses with control
+ // statements, i.e. 'if ((' vs. 'if ( ('. Issue #3209
+ log_rule("sp_sparen_paren");
+ return(options::sp_sparen_paren());
+ }
+ // Add or remove space between nested parentheses, i.e. '((' vs. ') )'.
+ log_rule("sp_paren_paren");
+ return(options::sp_paren_paren());
+ }
+
+ // "foo(...)" vs. "foo( ... )"
+ if ( first->Is(CT_FPAREN_OPEN)
+ || second->Is(CT_FPAREN_CLOSE))
+ {
+ if ( (first->GetParentType() == CT_FUNC_CALL_USER)
+ || ( (second->GetParentType() == CT_FUNC_CALL_USER)
+ && ( (first->Is(CT_WORD))
+ || (first->Is(CT_SQUARE_CLOSE)))))
+ {
+ // Add or remove space inside user function '(' and ')'.
+ log_rule("sp_func_call_user_inside_fparen");
+ return(options::sp_func_call_user_inside_fparen());
+ }
+
+ if ( first->Is(CT_FPAREN_OPEN)
+ && second->Is(CT_FPAREN_CLOSE))
+ {
+ // Add or remove space inside empty function '()'.
+ log_rule("sp_inside_fparens");
+ return(options::sp_inside_fparens());
+ }
+ // Add or remove space inside function '(' and ')'.
+ log_rule("sp_inside_fparen");
+ return(options::sp_inside_fparen());
+ }
+
+ // functor "foo(...)" vs. "foo( ... )"
+ if ( first->Is(CT_RPAREN_OPEN)
+ || second->Is(CT_RPAREN_CLOSE)) // Issue #3914
+ {
+ if ( (first->GetParentType() == CT_FUNC_CALL_USER)
+ || ( (second->GetParentType() == CT_FUNC_CALL_USER)
+ && ( (first->Is(CT_WORD))
+ || (first->Is(CT_SQUARE_CLOSE)))))
+ {
+ // Add or remove space inside user function '(' and ')'.
+ log_rule("sp_func_call_user_inside_rparen");
+ return(options::sp_func_call_user_inside_rparen());
+ }
+
+ if ( first->Is(CT_RPAREN_OPEN)
+ && second->Is(CT_RPAREN_CLOSE)) // Issue #3914
+ {
+ // Add or remove space inside empty function '()'.
+ log_rule("sp_inside_rparens");
+ return(options::sp_inside_rparens());
+ }
+ // Add or remove space inside function '(' and ')'.
+ log_rule("sp_inside_rparen");
+ return(options::sp_inside_rparen());
+ }
+
+ // "foo(...)" vs. "foo( ... )"
+ if ( first->Is(CT_TPAREN_OPEN)
+ || second->Is(CT_TPAREN_CLOSE))
+ {
+ // Add or remove space inside the first parentheses in a function type, as in
+ // 'void (*x)(...)'.
+ log_rule("sp_inside_tparen");
+ return(options::sp_inside_tparen());
+ }
+
+ if ( language_is_set(LANG_OC)
+ && first->Is(CT_PAREN_CLOSE))
+ {
+ if ( first->TestFlags(PCF_OC_RTYPE) // == CT_OC_RTYPE)
+ && ( first->GetParentType() == CT_OC_MSG_DECL
+ || first->GetParentType() == CT_OC_MSG_SPEC))
+ {
+ // (OC) Add or remove space after the first (type) in message specs,
+ // i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'.
+ log_rule("sp_after_oc_return_type");
+ return(options::sp_after_oc_return_type());
+ }
+
+ if ( first->GetParentType() == CT_OC_MSG_SPEC
+ || first->GetParentType() == CT_OC_MSG_DECL)
+ {
+ // (OC) Add or remove space after the (type) in message specs,
+ // i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'.
+ log_rule("sp_after_oc_type");
+ return(options::sp_after_oc_type());
+ }
+
+ if ( first->GetParentType() == CT_OC_SEL
+ && second->IsNot(CT_SQUARE_CLOSE))
+ {
+ // (OC) Add or remove space between '@selector(x)' and the following word,
+ // i.e. '@selector(foo) a:' vs. '@selector(foo)a:'.
+ log_rule("sp_after_oc_at_sel_parens");
+ return(options::sp_after_oc_at_sel_parens());
+ }
+ }
+
+ if ( language_is_set(LANG_OC)
+ && options::sp_inside_oc_at_sel_parens() != IARF_IGNORE)
+ {
+ if ( ( first->Is(CT_PAREN_OPEN)
+ && ( first->GetParentType() == CT_OC_SEL
+ || first->GetParentType() == CT_OC_PROTOCOL))
+ || ( second->Is(CT_PAREN_CLOSE)
+ && ( second->GetParentType() == CT_OC_SEL
+ || second->GetParentType() == CT_OC_PROTOCOL)))
+ {
+ // (OC) Add or remove space inside '@selector' parentheses,
+ // i.e. '@selector(foo)' vs. '@selector( foo )'.
+ // Also applies to '@protocol()' constructs.
+ log_rule("sp_inside_oc_at_sel_parens");
+ return(options::sp_inside_oc_at_sel_parens());
+ }
+ }
+
+ if ( second->Is(CT_PAREN_OPEN)
+ && ( first->Is(CT_OC_SEL)
+ || first->Is(CT_OC_PROTOCOL)))
+ {
+ // (OC) Add or remove space between '@selector' and '(',
+ // i.e. '@selector(msgName)' vs. '@selector (msgName)'.
+ // Also applies to '@protocol()' constructs.
+ log_rule("sp_after_oc_at_sel");
+ return(options::sp_after_oc_at_sel());
+ }
+
+ /*
+ * C cast: "(int)" vs. "( int )"
+ * D cast: "cast(int)" vs. "cast( int )"
+ * CPP cast: "int(a + 3)" vs. "int( a + 3 )"
+ */
+ if (first->Is(CT_PAREN_OPEN))
+ {
+ if ( first->GetParentType() == CT_C_CAST
+ || first->GetParentType() == CT_CPP_CAST
+ || first->GetParentType() == CT_D_CAST)
+ {
+ // Add or remove spaces inside cast parentheses.
+ log_rule("sp_inside_paren_cast");
+ return(options::sp_inside_paren_cast());
+ }
+
+ if (first->GetParentType() == CT_NEW)
+ {
+ if (options::sp_inside_newop_paren_open() != IARF_IGNORE)
+ {
+ // Add or remove space after the open parenthesis of the new operator,
+ // as in 'new(foo) BAR'.
+ // Overrides sp_inside_newop_paren.
+ log_rule("sp_inside_newop_paren_open");
+ return(options::sp_inside_newop_paren_open());
+ }
+
+ if (options::sp_inside_newop_paren() != IARF_IGNORE)
+ {
+ // Add or remove space inside parentheses of the new operator
+ // as in 'new(foo) BAR'.
+ log_rule("sp_inside_newop_paren");
+ return(options::sp_inside_newop_paren());
+ }
+ }
+ log_rule("sp_inside_paren");
+ return(options::sp_inside_paren());
+ }
+
+ if (second->Is(CT_PAREN_CLOSE))
+ {
+ if ( second->GetParentType() == CT_C_CAST
+ || second->GetParentType() == CT_CPP_CAST
+ || second->GetParentType() == CT_D_CAST)
+ {
+ // Add or remove spaces inside cast parentheses.
+ log_rule("sp_inside_paren_cast");
+ return(options::sp_inside_paren_cast());
+ }
+
+ if (second->GetParentType() == CT_NEW)
+ {
+ if (options::sp_inside_newop_paren_close() != IARF_IGNORE)
+ {
+ // Add or remove space before the close parenthesis of the new operator,
+ // as in 'new(foo) BAR'.
+ // Overrides sp_inside_newop_paren.
+ log_rule("sp_inside_newop_paren_close");
+ return(options::sp_inside_newop_paren_close());
+ }
+
+ if (options::sp_inside_newop_paren() != IARF_IGNORE)
+ {
+ // Add or remove space inside parentheses of the new operator
+ // as in 'new(foo) BAR'.
+ log_rule("sp_inside_newop_paren");
+ return(options::sp_inside_newop_paren());
+ }
+ }
+ // Add or remove space inside '(' and ')'.
+ log_rule("sp_inside_paren");
+ return(options::sp_inside_paren());
+ }
+
+ // Issue #4094-06
+ if ( first->Is(CT_SQUARE_OPEN)
+ && second->Is(CT_SQUARE_CLOSE))
+ {
+ // Add or remove space inside '[]'.
+ // if empty.
+ log_rule("sp_inside_square_empty");
+ return(options::sp_inside_square_empty());
+ }
+
+ // "[3]" vs. "[ 3 ]" or for objective-c "@[@3]" vs. "@[ @3 ]"
+ if ( first->Is(CT_SQUARE_OPEN)
+ || second->Is(CT_SQUARE_CLOSE))
+ {
+ if ( language_is_set(LANG_OC)
+ && ( ( first->GetParentType() == CT_OC_AT
+ && first->Is(CT_SQUARE_OPEN))
+ || ( second->GetParentType() == CT_OC_AT
+ && second->Is(CT_SQUARE_CLOSE)))
+ && (options::sp_inside_square_oc_array() != IARF_IGNORE))
+ {
+ // (OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and
+ // ']'. If set to ignore, sp_inside_square is used.
+ log_rule("sp_inside_square_oc_array");
+ return(options::sp_inside_square_oc_array());
+ }
+ // Add or remove space inside a non-empty '[' and ']'.
+ log_rule("sp_inside_square");
+ return(options::sp_inside_square());
+ }
+
+ if ( first->Is(CT_SQUARE_CLOSE)
+ && second->Is(CT_FPAREN_OPEN))
+ {
+ // Add or remove space between ']' and '(' when part of a function call.
+ log_rule("sp_square_fparen");
+ return(options::sp_square_fparen());
+ }
+
+ // "if(...)" vs. "if( ... )" etc.
+ if (second->Is(CT_SPAREN_CLOSE))
+ {
+ if ( second->GetParentType() == CT_FOR
+ && options::sp_inside_for_open() != IARF_IGNORE)
+ {
+ // Add or remove space before ')' of 'for' statements.
+ // Overrides sp_inside_for.
+ log_rule("sp_inside_for_close");
+ return(options::sp_inside_for_close());
+ }
+ else if (options::sp_inside_sparen_open() != IARF_IGNORE)
+ {
+ // Add or remove space before ')' of other control statements.
+ // Overrides sp_inside_sparen.
+ log_rule("sp_inside_sparen_close");
+ return(options::sp_inside_sparen_close());
+ }
+ }
+
+ if (first->Is(CT_SPAREN_OPEN))
+ {
+ if ( first->GetParentType() == CT_FOR
+ && options::sp_inside_for_open() != IARF_IGNORE)
+ {
+ // Add or remove space before ')' of 'for' statements.
+ // Overrides sp_inside_for.
+ log_rule("sp_inside_for_close");
+ return(options::sp_inside_for_close());
+ }
+ else if (options::sp_inside_sparen_open() != IARF_IGNORE)
+ {
+ // Add or remove space after '(' of other control statements.
+ // Overrides sp_inside_sparen.
+ log_rule("sp_inside_sparen_open");
+ return(options::sp_inside_sparen_open());
+ }
+ }
+
+ if (first->Is(CT_SPAREN_OPEN))
+ {
+ if (first->GetParentType() == CT_FOR)
+ {
+ // Add or remove space inside '(' and ')' of 'for' statements.
+ log_rule("sp_inside_for");
+ return(options::sp_inside_for());
+ }
+ else
+ {
+ // Add or remove space inside '(' and ')' of other control statements.
+ log_rule("sp_inside_sparen");
+ return(options::sp_inside_sparen());
+ }
+ }
+
+ if (second->Is(CT_SPAREN_CLOSE))
+ {
+ if (second->GetParentType() == CT_FOR)
+ {
+ // Add or remove space inside '(' and ')' of 'for' statements.
+ log_rule("sp_inside_for");
+ return(options::sp_inside_for());
+ }
+ else
+ {
+ // Add or remove space inside '(' and ')' of other control statements.
+ log_rule("sp_inside_sparen");
+ return(options::sp_inside_sparen());
+ }
+ }
+
+ if (first->Is(CT_CLASS_COLON))
+ {
+ if ( first->GetParentType() == CT_OC_CLASS
+ && ( first->GetPrevType(CT_OC_INTF, first->GetLevel(), E_Scope::ALL)->IsNullChunk()
+ && first->GetPrevType(CT_OC_IMPL, first->GetLevel(), E_Scope::ALL)->IsNullChunk()))
+ {
+ if (options::sp_after_oc_colon() != IARF_IGNORE)
+ {
+ // TODO: provide some test data to check this block
+ // (OC) Add or remove space after the colon in message specs,
+ // i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.
+ log_rule("sp_after_oc_colon");
+ return(options::sp_after_oc_colon());
+ }
+ }
+
+ if (options::sp_after_class_colon() != IARF_IGNORE)
+ {
+ // Add or remove space after class ':'.
+ log_rule("sp_after_class_colon");
+ return(options::sp_after_class_colon());
+ }
+ }
+
+ if (second->Is(CT_CLASS_COLON))
+ {
+ if ( language_is_set(LANG_OC)
+ && second->GetParentType() == CT_OC_CLASS
+ && ( second->GetPrevType(CT_OC_INTF, second->GetLevel(), E_Scope::ALL)->IsNullChunk()
+ && second->GetPrevType(CT_OC_IMPL, second->GetLevel(), E_Scope::ALL)->IsNullChunk()))
+ {
+ if ( second->GetParentType() == CT_OC_CLASS
+ && second->GetPrevType(CT_OC_INTF, second->GetLevel(), E_Scope::ALL)->IsNullChunk())
+ {
+ if (options::sp_before_oc_colon() != IARF_IGNORE)
+ {
+ // TODO: provide some test data to check this block
+ // (OC) Add or remove space before the colon in message specs,
+ // i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.
+ log_rule("sp_before_oc_colon");
+ return(options::sp_before_oc_colon());
+ }
+ }
+ }
+
+ if (options::sp_before_class_colon() != IARF_IGNORE)
+ {
+ // Add or remove space before class ':'.
+ log_rule("sp_before_class_colon");
+ return(options::sp_before_class_colon());
+ }
+ }
+
+ if (first->Is(CT_CONSTR_COLON))
+ {
+ min_sp = options::indent_ctor_init_leading() - 1; // default indent is 1 space
+ // Add or remove space after class constructor ':'.
+ log_rule("sp_after_constr_colon");
+ return(options::sp_after_constr_colon());
+ }
+
+ if (second->Is(CT_CONSTR_COLON))
+ {
+ // Add or remove space before class constructor ':'.
+ log_rule("sp_before_constr_colon");
+ return(options::sp_before_constr_colon());
+ }
+
+ if (second->Is(CT_CASE_COLON))
+ {
+ // Add or remove space before case ':'.
+ log_rule("sp_before_case_colon");
+ return(options::sp_before_case_colon());
+ }
+
+ if (first->Is(CT_DOT))
+ {
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if (second->Is(CT_DOT))
+ {
+ log_rule("ADD");
+ return(IARF_ADD);
+ }
+
+ if ( first->Is(CT_NULLCOND)
+ || second->Is(CT_NULLCOND))
+ {
+ // TODO: provide some test data to check this block
+ // LANG_CS null conditional operator
+ // Add or remove space around the '.' or '->' operators.
+ log_rule("sp_member");
+ return(options::sp_member());
+ }
+
+ if ( first->Is(CT_ARITH)
+ || first->Is(CT_SHIFT)
+ || first->Is(CT_CARET)
+ || second->Is(CT_ARITH)
+ || second->Is(CT_SHIFT)
+ || second->Is(CT_CARET))
+ {
+ // Add or remove space around arithmetic operators '+' and '-'.
+ // Overrides sp_arith.
+ if (options::sp_arith_additive() != IARF_IGNORE)
+ {
+ auto arith_char = ( first->Is(CT_ARITH)
+ || first->Is(CT_SHIFT)
+ || first->Is(CT_CARET))
+ ? first->GetStr()[0] : second->GetStr()[0];
+
+ if ( arith_char == '+'
+ || arith_char == '-')
+ {
+ log_rule("sp_arith_additive");
+ return(options::sp_arith_additive());
+ }
+ }
+ // Add or remove space around non-assignment symbolic operators ('+', '/', '%',
+ // '<<', and so forth).
+ log_rule("sp_arith");
+ return(options::sp_arith());
+ }
+
+ if ( first->Is(CT_BOOL)
+ || second->Is(CT_BOOL))
+ {
+ // Add or remove space around boolean operators '&&' and '||'.
+ iarf_e arg = options::sp_bool();
+
+ if ( (options::pos_bool() != TP_IGNORE)
+ && first->GetOrigLine() != second->GetOrigLine())
+ {
+ arg = arg | IARF_ADD;
+ }
+ log_rule("sp_bool");
+ return(arg);
+ }
+
+ if ( first->Is(CT_COMPARE)
+ || second->Is(CT_COMPARE))
+ {
+ // Add or remove space around compare operator '<', '>', '==', etc.
+ log_rule("sp_compare");
+ return(options::sp_compare());
+ }
+
+ if ( first->Is(CT_PAREN_OPEN)
+ && second->Is(CT_PTR_TYPE))
+ {
+ // TODO: provide some test data to check this block
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if (first->Is(CT_PTR_TYPE)) // see the tests cpp:34505-34508
+ {
+ if ( second->Is(CT_FPAREN_OPEN)
+ || second->Is(CT_TPAREN_OPEN))
+ {
+ // Add or remove space after a pointer star '*', if followed by an open
+ // parenthesis, as in 'void* (*)()'.
+ log_rule("sp_ptr_star_paren"); // ptr_star 10
+ return(options::sp_ptr_star_paren());
+ }
+ else if (second->Is(CT_PTR_TYPE))
+ {
+ // Add or remove space between pointer stars '*'.
+ // as in 'int ***a;'.
+ log_rule("sp_between_ptr_star"); // ptr_star 9
+ return(options::sp_between_ptr_star());
+ }
+ else if (second->Is(CT_BYREF))
+ {
+ // Add or remove space between pointer and Ref.
+ // as in 'int *& a'.
+ log_rule("sp_between_ptr_ref"); // ptr_ref 1
+ return(options::sp_between_ptr_ref());
+ }
+ else if (second->Is(CT_FUNC_VAR))
+ {
+ // Add or remove space between the pointer star '*' and the name of the
+ // variable in a function pointer definition.
+ log_rule("sp_ptr_star_func_var");
+ return(options::sp_ptr_star_func_var());
+ }
+ else if (second->Is(CT_FUNC_TYPE))
+ {
+ // Add or remove space between the pointer star '*' and the name of the
+ // type in a function pointer type definition.
+ log_rule("sp_ptr_star_func_type");
+ return(options::sp_ptr_star_func_type());
+ }
+ else if ( first->GetParentType() == CT_FUNC_DEF
+ || first->GetParentType() == CT_FUNC_PROTO
+ || first->GetParentType() == CT_FUNC_VAR)
+ {
+ if (token_is_within_trailing_return(first))
+ {
+ // Add or remove space after a pointer star '*', in the trailing return
+ // a function prototype or function definition.
+ log_rule("sp_after_ptr_star_trailing"); // ptr_star 3
+ return(options::sp_after_ptr_star_trailing());
+ }
+ else
+ {
+ // Add or remove space after a pointer star '*', if followed by a function
+ // prototype or function definition.
+ log_rule("sp_after_ptr_star_func"); // ptr_star 2
+ return(options::sp_after_ptr_star_func());
+ }
+ }
+ else if (CharTable::IsKw1(second->GetStr()[0]))
+ {
+ Chunk *prev = first->GetPrev();
+
+ if (prev->Is(CT_IN))
+ {
+ // Add or remove space after the '*' (dereference) unary operator. This does
+ // not affect the spacing after a '*' that is part of a type.
+ log_rule("sp_deref");
+ return(options::sp_deref());
+ }
+ else if ( first->GetParentType() == CT_FUNC_VAR
+ || first->GetParentType() == CT_FUNC_TYPE)
+ {
+ // Add or remove space after pointer caret '^', if followed by a word.
+ log_rule("sp_after_ptr_block_caret");
+ return(options::sp_after_ptr_block_caret());
+ }
+ else if (second->Is(CT_QUALIFIER))
+ {
+ // Add or remove space after pointer star '*', if followed by a qualifier.
+ log_rule("sp_after_ptr_star_qualifier"); // ptr_star 4
+ return(options::sp_after_ptr_star_qualifier());
+ }
+ // Add or remove space after pointer star '*', if followed by a word.
+ log_rule("sp_after_ptr_star"); // ptr_star 1
+ return(options::sp_after_ptr_star());
+ }
+ else if (second->Is(CT_PAREN_OPEN))
+ {
+ // Add or remove space after pointer star '*', if followed by a word.
+ log_rule("sp_after_ptr_star"); // ptr_star 1
+ return(options::sp_after_ptr_star());
+ }
+
+ // must be placed at the end of the block
+ // look back for '->' type is TRAILING_RET
+ if (token_is_within_trailing_return(first))
+ {
+ log_rule("sp_after_ptr_star_trailing"); // ptr_star 3
+ return(options::sp_after_ptr_star_trailing());
+ }
+ }
+
+ if ( second->Is(CT_PTR_TYPE)
+ && first->IsNot(CT_IN))
+ {
+ // look back for '->' type is TRAILING_RET
+ if (token_is_within_trailing_return(second))
+ {
+ if (first->Is(CT_QUALIFIER))
+ {
+ log_rule("sp_qualifier_ptr_star_trailing");
+ return(options::sp_qualifier_ptr_star_trailing());
+ }
+ else
+ {
+ log_rule("sp_before_ptr_star_trailing"); // ptr_star 7
+ return(options::sp_before_ptr_star_trailing());
+ }
+ }
+ // Find the next non-'*' chunk
+ Chunk *next = second;
+
+ do
+ {
+ next = next->GetNext();
+ } while (next->Is(CT_PTR_TYPE));
+
+ if ( next->Is(CT_FUNC_DEF)
+ || next->Is(CT_FUNC_PROTO))
+ {
+ // Add or remove space before a pointer star '*', if followed by a function
+ // prototype or function definition. If set to ignore, sp_before_ptr_star is
+ // used instead.
+
+ if (first->Is(CT_QUALIFIER))
+ {
+ if (options::sp_qualifier_ptr_star_func() != IARF_IGNORE)
+ {
+ log_rule("sp_qualifier_ptr_star_func");
+ return(options::sp_qualifier_ptr_star_func());
+ }
+ }
+ else
+ {
+ if (options::sp_before_ptr_star_func() != IARF_IGNORE)
+ {
+ log_rule("sp_before_ptr_star_func"); // ptr_star 6
+ return(options::sp_before_ptr_star_func());
+ }
+ }
+ }
+ else
+ {
+ // Add or remove space before pointer star '*' that isn't followed by a
+ // variable name. If set to 'ignore', sp_before_ptr_star is used instead.
+
+ next = second->GetNextNc();
+
+ while (next->Is(CT_PTR_TYPE))
+ {
+ next = next->GetNextNc();
+ }
+
+ if ( next->IsNotNullChunk()
+ && next->IsNot(CT_WORD))
+ {
+ if (first->Is(CT_QUALIFIER))
+ {
+ if (options::sp_qualifier_unnamed_ptr_star() != IARF_IGNORE)
+ {
+ log_rule("sp_qualifier_unnamed_ptr_star");
+ return(options::sp_qualifier_unnamed_ptr_star());
+ }
+ }
+ else
+ {
+ if (next->Is(CT_QUALIFIER))
+ {
+ if (options::sp_before_qualifier_ptr_star() != IARF_IGNORE)
+ {
+ log_rule("sp_before_qualifier_ptr_star"); // ptr_star 11
+ return(options::sp_before_qualifier_ptr_star());
+ }
+ }
+ else if (next->Is(CT_OPERATOR))
+ {
+ if (options::sp_before_operator_ptr_star() != IARF_IGNORE)
+ {
+ log_rule("sp_before_operator_ptr_star"); // ptr_star 14
+ return(options::sp_before_operator_ptr_star());
+ }
+ }
+ else if (next->Is(CT_DC_MEMBER))
+ {
+ if (options::sp_before_global_scope_ptr_star() != IARF_IGNORE)
+ {
+ log_rule("sp_before_global_scope_ptr_star"); // ptr_star 13
+ return(options::sp_before_global_scope_ptr_star());
+ }
+ }
+ else
+ {
+ Chunk *next_next = next->GetNextNc();
+
+ if (next_next->IsNotNullChunk() && next_next->Is(CT_DC_MEMBER))
+ {
+ if (options::sp_before_scope_ptr_star() != IARF_IGNORE)
+ {
+ log_rule("sp_before_scope_ptr_star"); // ptr_star 12
+ return(options::sp_before_scope_ptr_star());
+ }
+ }
+ }
+
+ if (options::sp_before_unnamed_ptr_star() != IARF_IGNORE)
+ {
+ log_rule("sp_before_unnamed_ptr_star"); // ptr_star 8
+ return(options::sp_before_unnamed_ptr_star());
+ }
+ }
+ }
+ }
+
+ // Add or remove space before pointer star '*'.
+ if (options::sp_before_ptr_star() != IARF_IGNORE)
+ {
+ log_rule("sp_before_ptr_star"); // ptr_star 5
+ return(options::sp_before_ptr_star());
+ }
+ }
+
+ if (first->Is(CT_OPERATOR))
+ {
+ // Add or remove space between 'operator' and operator sign.
+ log_rule("sp_after_operator");
+ return(options::sp_after_operator());
+ }
+
+ if ( second->Is(CT_FUNC_PROTO)
+ || second->Is(CT_FUNC_DEF))
+ {
+ if ( first->IsNot(CT_PTR_TYPE)
+ && first->IsNot(CT_BYREF))
+ {
+ // Add or remove space between return type and function name. A
+ // minimum of 1 is forced except for pointer/reference return types.
+ log_rule("sp_type_func | ADD");
+ return(options::sp_type_func() | IARF_ADD);
+ }
+ // Add or remove space between return type and function name. A
+ // minimum of 1 is forced except for pointer/reference return types.
+ log_rule("sp_type_func");
+ return(options::sp_type_func());
+ }
+
+ // "(int)a" vs. "(int) a" or "cast(int)a" vs. "cast(int) a"
+ if ( ( first->GetParentType() == CT_C_CAST
+ || first->GetParentType() == CT_D_CAST)
+ && first->Is(CT_PAREN_CLOSE))
+ {
+ log_rule("sp_after_cast");
+ return(options::sp_after_cast());
+ }
+
+ if (first->Is(CT_BRACE_CLOSE))
+ {
+ if (second->Is(CT_ELSE))
+ {
+ // Add or remove space between '}' and 'else' if on the same line.
+ log_rule("sp_brace_else");
+ return(options::sp_brace_else());
+ }
+
+ if ( language_is_set(LANG_OC)
+ && second->Is(CT_CATCH)
+ && (options::sp_oc_brace_catch() != IARF_IGNORE))
+ {
+ // TODO: provide some test data to check this block
+ // (OC) Add or remove space between '}' and '@catch' if on the same line.
+ // If set to ignore, sp_brace_catch is used.
+ log_rule("sp_oc_brace_catch");
+ return(options::sp_oc_brace_catch());
+ }
+
+ if (second->Is(CT_CATCH))
+ {
+ // TODO: provide some test data to check this block
+ // Add or remove space between '}' and 'catch' if on the same line.
+ log_rule("sp_brace_catch");
+ return(options::sp_brace_catch());
+ }
+
+ if (second->Is(CT_FINALLY))
+ {
+ // Add or remove space between '}' and 'finally' if on the same line.
+ log_rule("sp_brace_finally");
+ return(options::sp_brace_finally());
+ }
+ }
+
+ if (first->Is(CT_BRACE_OPEN))
+ {
+ if (first->GetParentType() == CT_ENUM)
+ {
+ // Add or remove space inside enum '{' and '}'.
+ log_rule("sp_inside_braces_enum");
+ return(options::sp_inside_braces_enum());
+ }
+
+ if ( first->GetParentType() == CT_STRUCT
+ || first->GetParentType() == CT_UNION)
+ {
+ // Fix for issue #1240 adding space in struct initializers
+ Chunk *tmp = first->GetPrevNcNnl();
+
+ if (tmp->Is(CT_ASSIGN))
+ {
+ // TODO: provide some test data to check this block
+ log_rule("IGNORE");
+ return(IARF_IGNORE);
+ }
+ // Add or remove space inside struct/union '{' and '}'.
+ log_rule("sp_inside_braces_struct");
+ return(options::sp_inside_braces_struct());
+ }
+ else if ( first->GetParentType() == CT_OC_AT
+ && options::sp_inside_braces_oc_dict() != IARF_IGNORE)
+ {
+ // (OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'
+ log_rule("sp_inside_braces_oc_dict");
+ return(options::sp_inside_braces_oc_dict());
+ }
+
+ if (first->GetParentType() == CT_BRACED_INIT_LIST)
+ {
+ // Add or remove space between nested braces, i.e. '{{' vs. '{ {'.
+ // only to help the vim command }}}}
+ if ( options::sp_brace_brace() != IARF_IGNORE
+ && second->Is(CT_BRACE_OPEN)
+ && second->GetParentType() == CT_BRACED_INIT_LIST)
+ {
+ log_rule("sp_brace_brace");
+ return(options::sp_brace_brace());
+ }
+
+ if (options::sp_after_type_brace_init_lst_open() != IARF_IGNORE)
+ {
+ // Add or remove space after open brace in an unnamed temporary
+ // direct-list-initialization
+ // if statement is a brace_init_lst
+ // works only if sp_brace_brace is set to ignore.
+ log_rule("sp_after_type_brace_init_lst_open");
+ return(options::sp_after_type_brace_init_lst_open());
+ }
+
+ if (options::sp_inside_type_brace_init_lst() != IARF_IGNORE)
+ {
+ // Add or remove space inside an unnamed temporary direct-list-initialization
+ // if statement is a brace_init_lst
+ // works only if sp_brace_brace is set to ignore
+ // works only if sp_after_type_brace_init_lst_close is set to ignore.
+ log_rule("sp_inside_type_brace_init_lst");
+ return(options::sp_inside_type_brace_init_lst());
+ }
+ }
+
+ if (!second->IsComment())
+ {
+ // Add or remove space inside '{' and '}'.
+ log_rule("sp_inside_braces");
+ return(options::sp_inside_braces());
+ }
+ }
+
+ if ( first->Is(CT_BRACE_CLOSE)
+ && first->TestFlags(PCF_IN_TYPEDEF)
+ && ( first->GetParentType() == CT_ENUM
+ || first->GetParentType() == CT_STRUCT
+ || first->GetParentType() == CT_UNION))
+ {
+ // Add or remove space between '}' and the name of a typedef on the same line.
+ log_rule("sp_brace_typedef");
+ return(options::sp_brace_typedef());
+ }
+
+ if ( language_is_set(LANG_D)
+ && second->Is(CT_PAREN_OPEN)
+ && second->GetParentType() == CT_TEMPLATE)
+ {
+ // (D) Add or remove space before the parenthesis in the D constructs
+ // 'template Foo(' and 'class Foo('.
+ log_rule("sp_before_template_paren");
+ return(options::sp_before_template_paren());
+ }
+
+ // Issue #3080
+ if ( first->Is(CT_PAREN_CLOSE)
+ && first->GetParentType() == CT_DECLTYPE
+ && ( second->Is(CT_WORD)
+ || second->Is(CT_BRACE_OPEN)
+ || second->Is(CT_FUNC_CALL)))
+ {
+ iarf_e arg = options::sp_after_decltype();
+ // Add or remove space between 'decltype(...)' and word, brace or function call.
+ log_rule("sp_after_decltype");
+ return(arg);
+ }
+
+ // Issue #3080
+ if ( !language_is_set(LANG_D)
+ && first->Is(CT_PAREN_CLOSE)
+ && second->Is(CT_WORD))
+ {
+ // Add or remove space between type and word.
+ log_rule("sp_after_type");
+ return(options::sp_after_type());
+ }
+
+ // see if the D template expression is used as a type
+ if ( language_is_set(LANG_D)
+ && first->Is(CT_PAREN_CLOSE)
+ && first->GetParentType() == CT_D_TEMPLATE)
+ {
+ if (second->GetParentType() == CT_USING_ALIAS)
+ {
+ log_rule("sp_after_type | ADD");
+ return(options::sp_after_type() | IARF_ADD);
+ }
+
+ if (second->Is(CT_WORD))
+ {
+ Chunk *open_paren = first->GetOpeningParen();
+ Chunk *type = open_paren->GetPrev()->GetPrev();
+
+ if (type->Is(CT_TYPE))
+ {
+ log_rule("sp_after_type");
+ return(options::sp_after_type());
+ }
+ }
+ }
+
+ if ( first->Is(CT_TYPE) // Issue #3457
+ && second->Is(CT_COLON))
+ {
+ log_rule("sp_type_colon");
+ return(options::sp_type_colon());
+ }
+
+ if ( !second->Is(CT_PTR_TYPE)
+ && ( first->Is(CT_QUALIFIER)
+ || first->Is(CT_TYPE)))
+ {
+ // Add or remove space between type and word. In cases where total removal of
+ // whitespace would be a syntax error, a value of 'remove' is treated the same
+ // as 'force'.
+ //
+ // This also affects some other instances of space following a type that are
+ // not covered by other options; for example, between the return type and
+ // parenthesis of a function type template argument, between the type and
+ // parenthesis of an array parameter, or between 'decltype(...)' and the
+ // following word.
+ iarf_e arg = options::sp_after_type();
+ log_rule("sp_after_type");
+ return(arg);
+ }
+
+ if ( first->Is(CT_PTR_TYPE)
+ && second->Is(CT_ELLIPSIS))
+ {
+ log_rule("sp_ptr_type_ellipsis");
+ return(options::sp_ptr_type_ellipsis());
+ }
+
+ // If nothing claimed the PTR_TYPE, then return ignore
+ if ( first->Is(CT_PTR_TYPE)
+ || second->Is(CT_PTR_TYPE))
+ {
+ log_rule("IGNORE");
+ return(IARF_IGNORE);
+ }
+
+ if (first->Is(CT_NOT))
+ {
+ if ( second->Is(CT_NOT)
+ && (options::sp_not_not() != IARF_IGNORE))
+ {
+ log_rule("sp_not_not");
+ return(options::sp_not_not());
+ }
+ // Add or remove space after the '!' (not) unary operator.
+ log_rule("sp_not");
+ return(options::sp_not());
+ }
+
+ if (first->Is(CT_INV))
+ {
+ // Add or remove space after the '~' (invert) unary operator.
+ log_rule("sp_inv");
+ return(options::sp_inv());
+ }
+
+ if (first->Is(CT_ADDR))
+ {
+ // Add or remove space after the '&' (address-of) unary operator. This does not
+ // affect the spacing after a '&' that is part of a type.
+ log_rule("sp_addr");
+ return(options::sp_addr());
+ }
+
+ if (first->Is(CT_DEREF))
+ {
+ // Add or remove space after the '*' (dereference) unary operator. This does
+ // not affect the spacing after a '*' that is part of a type.
+ log_rule("sp_deref");
+ return(options::sp_deref());
+ }
+
+ if ( first->Is(CT_POS)
+ || first->Is(CT_NEG))
+ {
+ // Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.
+ log_rule("sp_sign");
+ return(options::sp_sign());
+ }
+
+ if ( first->Is(CT_INCDEC_BEFORE)
+ || second->Is(CT_INCDEC_AFTER))
+ {
+ // Add or remove space between '++' and '--' the word to which it is being
+ // applied, as in '(--x)' or 'y++;'.
+ log_rule("sp_incdec");
+ return(options::sp_incdec());
+ }
+
+ if (second->Is(CT_CS_SQ_COLON))
+ {
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ if (first->Is(CT_CS_SQ_COLON))
+ {
+ log_rule("FORCE");
+ return(IARF_FORCE);
+ }
+
+ if ( language_is_set(LANG_OC)
+ && first->Is(CT_OC_SCOPE))
+ {
+ // (OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;'
+ // or '+(int) bar;'.
+ log_rule("sp_after_oc_scope");
+ return(options::sp_after_oc_scope());
+ }
+
+ if ( language_is_set(LANG_OC)
+ && first->Is(CT_OC_DICT_COLON))
+ {
+ // (OC) Add or remove space after the colon in immutable dictionary expression
+ // 'NSDictionary *test = @{@"foo" :@"bar"};'.
+ log_rule("sp_after_oc_dict_colon");
+ return(options::sp_after_oc_dict_colon());
+ }
+
+ if ( language_is_set(LANG_OC)
+ && second->Is(CT_OC_DICT_COLON))
+ {
+ // (OC) Add or remove space before the colon in immutable dictionary expression
+ // 'NSDictionary *test = @{@"foo" :@"bar"};'.
+ log_rule("sp_before_oc_dict_colon");
+ return(options::sp_before_oc_dict_colon());
+ }
+
+ if ( language_is_set(LANG_OC)
+ && first->Is(CT_OC_COLON))
+ {
+ if (first->TestFlags(PCF_IN_OC_MSG))
+ {
+ // (OC) Add or remove space after the colon in message specs,
+ // i.e. '[object setValue:1];' vs. '[object setValue: 1];'.
+ log_rule("sp_after_send_oc_colon");
+ return(options::sp_after_send_oc_colon());
+ }
+ // (OC) Add or remove space after the colon in message specs,
+ // i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.
+ log_rule("sp_after_oc_colon");
+ return(options::sp_after_oc_colon());
+ }
+
+ if ( language_is_set(LANG_OC)
+ && second->Is(CT_OC_COLON))
+ {
+ if ( first->TestFlags(PCF_IN_OC_MSG)
+ && ( first->Is(CT_OC_MSG_FUNC)
+ || first->Is(CT_OC_MSG_NAME)))
+ {
+ // (OC) Add or remove space before the colon in message specs,
+ // i.e. '[object setValue:1];' vs. '[object setValue :1];'.
+ log_rule("sp_before_send_oc_colon");
+ return(options::sp_before_send_oc_colon());
+ }
+ // (OC) Add or remove space before the colon in message specs,
+ // i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.
+ log_rule("sp_before_oc_colon");
+ return(options::sp_before_oc_colon());
+ }
+
+ if ( second->Is(CT_COMMENT)
+ && second->GetParentType() == CT_COMMENT_EMBED)
+ {
+ // Add or remove space before an embedded comment.
+ // Number of spaces before an embedded comment.
+ log_rule("sp_before_emb_cmt");
+ min_sp = options::sp_num_before_emb_cmt();
+ return(options::sp_before_emb_cmt());
+ }
+
+ if (first->Is(CT_COMMENT))
+ {
+ // Add or remove space after an embedded comment.
+ // Number of spaces after an embedded comment.
+ log_rule("sp_after_emb_cmt");
+ min_sp = options::sp_num_after_emb_cmt();
+ return(options::sp_after_emb_cmt());
+ }
+
+ if ( first->Is(CT_NEW)
+ && second->Is(CT_PAREN_OPEN))
+ {
+ // c# new Constraint, c++ new operator
+ // Add or remove space between 'new' and '(' in 'new()'.
+ log_rule("sp_between_new_paren");
+ return(options::sp_between_new_paren());
+ }
+
+ if ( first->Is(CT_NEW)
+ || first->Is(CT_DELETE)
+ || ( first->Is(CT_TSQUARE)
+ && first->GetParentType() == CT_DELETE))
+ {
+ // Add or remove space after 'new', 'delete' and 'delete[]'.
+ log_rule("sp_after_new");
+ return(options::sp_after_new());
+ }
+
+ if ( language_is_set(LANG_JAVA)
+ && first->Is(CT_ANNOTATION)
+ && second->IsParenOpen())
+ {
+ // (Java) Add or remove space between an annotation and the open parenthesis.
+ log_rule("sp_annotation_paren");
+ return(options::sp_annotation_paren());
+ }
+
+ if ( language_is_set(LANG_OC)
+ && first->Is(CT_OC_PROPERTY))
+ {
+ // (OC) Add or remove space after '@property'.
+ log_rule("sp_after_oc_property");
+ return(options::sp_after_oc_property());
+ }
+
+ if ( language_is_set(LANG_D)
+ && first->Is(CT_EXTERN)
+ && second->Is(CT_PAREN_OPEN))
+ {
+ // (D) Add or remove space between 'extern' and '(' as in 'extern (C)'.
+ log_rule("sp_extern_paren");
+ return(options::sp_extern_paren());
+ }
+
+ if ( second->Is(CT_TYPE)
+ && ( ( first->Is(CT_STRING)
+ && first->GetParentType() == CT_EXTERN)
+ || ( first->Is(CT_FPAREN_CLOSE)
+ && first->GetParentType() == CT_ATTRIBUTE)))
+ {
+ log_rule("FORCE");
+ return(IARF_FORCE); /* TODO: make this configurable? */
+ }
+
+ if (first->Is(CT_NOEXCEPT))
+ {
+ // Add or remove space after 'noexcept'.
+ log_rule("sp_after_noexcept");
+ return(options::sp_after_noexcept());
+ }
+
+ // Issue #2138
+ if (first->Is(CT_FPAREN_CLOSE))
+ {
+ if (second->Is(CT_QUALIFIER))
+ {
+ // Add or remove space between ')' and a qualifier such as 'const'.
+ log_rule("sp_paren_qualifier");
+ return(options::sp_paren_qualifier());
+ }
+ else if (second->Is(CT_NOEXCEPT))
+ {
+ // Add or remove space between ')' and 'noexcept'.
+ log_rule("sp_paren_noexcept");
+ return(options::sp_paren_noexcept());
+ }
+ }
+
+ // Issue #2098
+ if ( first->Is(CT_PP_PRAGMA)
+ && second->Is(CT_PREPROC_BODY))
+ {
+ log_rule("REMOVE");
+ return(IARF_REMOVE);
+ }
+
+ // Issue #1733
+ if ( first->Is(CT_OPERATOR_VAL)
+ && second->Is(CT_TYPE))
+ {
+ log_rule("IGNORE");
+ return(IARF_IGNORE);
+ }
+
+ // Issue #995
+ if ( first->Is(CT_DO)
+ && second->Is(CT_BRACE_OPEN))
+ {
+ // Add or remove space between 'do' and '{'.
+ log_rule("sp_do_brace_open");
+ return(options::sp_do_brace_open());
+ }
+
+ // Issue #995
+ if ( first->Is(CT_BRACE_CLOSE)
+ && second->Is(CT_WHILE_OF_DO))
+ {
+ // Add or remove space between '}' and 'while.
+ log_rule("sp_brace_close_while");
+ return(options::sp_brace_close_while());
+ }
+
+ // TODO: have a look to Issue #2186, why NEWLINE?
+ // Issue #2524
+ if ( first->Is(CT_NEWLINE)
+ && second->Is(CT_BRACE_OPEN))
+ {
+ log_rule("IGNORE");
+ return(IARF_IGNORE);
+ }
+
+ // =============================================================
+ // category 0
+ // this table lists out all combos where nothing is to do
+ // CT_UNKNOWN is a wildcard.
+ for (auto it : IGNORE_space_table)
+ {
+ if ( ( it.first == CT_UNKNOWN
+ || it.first == first->GetType())
+ && ( it.second == CT_UNKNOWN
+ || it.second == second->GetType()))
+ {
+ log_rule("IGNORE from IGNORE_space_table");
+ return(IARF_IGNORE);
+ }
+ }
+
+ // =============================================================
+ // category 1
+ // this table lists out all combos where a space should NOT be present
+ // CT_UNKNOWN is a wildcard.
+ size_t number = 0;
+
+ for (auto it : no_space_table)
+ {
+ if ( ( it.first == CT_UNKNOWN
+ || it.first == first->GetType())
+ && ( it.second == CT_UNKNOWN
+ || it.second == second->GetType()))
+ {
+ char text[80];
+ sprintf(text, "REMOVE from no_space_table @ %zu.", number);
+ log_rule(text);
+ return(IARF_REMOVE);
+ }
+ number++;
+ }
+
+ // =============================================================
+ // category 2
+ // this table lists out all combos where a space MUST be present
+ number = 0;
+
+ for (auto it : add_space_table)
+ {
+ if ( it.first == first->GetType()
+ && it.second == second->GetType())
+ {
+ char text[80];
+ sprintf(text, "ADD from add_space_table @ %zu.", number);
+ log_rule(text);
+ return(IARF_ADD);
+ }
+ number++;
+ }
+
+ // Issue #2386
+ if ( first->Is(CT_FORM_FEED)
+ || second->Is(CT_FORM_FEED))
+ {
+ log_rule("IGNORE");
+ return(IARF_IGNORE);
+ }
+
+ // TODO: if necessary create a new option
+ if ( first->Is(CT_MACRO_FUNC_CALL)
+ && second->Is(CT_FPAREN_OPEN))
+ {
+ log_rule("IGNORE");
+ return(IARF_IGNORE);
+ }
+ //// TODO: if necessary create a new option
+ //if ( first->Is(CT_RPAREN_OPEN)
+ // && second->Is(CT_RPAREN_CLOSE))
+ //{
+ // log_rule("IGNORE");
+ // return(IARF_IGNORE);
+ //}
+
+ //// TODO: if necessary create a new option
+ //if ( first->Is(CT_RPAREN_OPEN)
+ // && second->Is(CT_UNKNOWN))
+ //{
+ // log_rule("IGNORE");
+ // return(IARF_IGNORE);
+ //}
+
+ //// TODO: if necessary create a new option
+ //if ( first->Is(CT_UNKNOWN)
+ // && second->Is(CT_RPAREN_CLOSE))
+ //{
+ // log_rule("IGNORE");
+ // return(IARF_IGNORE);
+ //}
+
+ if ( first->Is(CT_CASE_ELLIPSIS)
+ && second->Is(CT_NUMBER))
+ {
+ // Add or remove space after the variadic '...' when preceded by a
+ // non-punctuator.
+ // The value REMOVE will be overridden with FORCE
+ if (options::sp_after_ellipsis() == IARF_REMOVE)
+ {
+ log_rule("sp_after_ellipsis/FORCE");
+ return(IARF_FORCE);
+ }
+ else
+ {
+ log_rule("sp_after_ellipsis");
+ return(options::sp_after_ellipsis());
+ }
+ }
+
+ if ( first->Is(CT_NUMBER)
+ && second->Is(CT_CASE_ELLIPSIS))
+ {
+ // Add or remove space before the variadic '...' when preceded by a
+ // non-punctuator.
+ // The value REMOVE will be overridden with FORCE
+ if (options::sp_before_ellipsis() == IARF_REMOVE)
+ {
+ log_rule("sp_before_ellipsis/FORCE");
+ return(IARF_FORCE);
+ }
+ else
+ {
+ log_rule("sp_before_ellipsis");
+ return(options::sp_before_ellipsis());
+ }
+ }
+ // =============================================================
+ // category 3
+ // these lines are only useful for debugging uncrustify itself
+ LOG_FMT(LSPACE, "\n\n%s(%d): WARNING: unrecognize do_space:\n",
+ __func__, __LINE__);
+ LOG_FMT(LSPACE, " first orig line is %zu, orig col is %zu, Text() '%s', GetType() is %s\n",
+ first->GetOrigLine(), first->GetOrigCol(), first->Text(), get_token_name(first->GetType()));
+ LOG_FMT(LSPACE, " second orig line is %zu, orig col is %zu, Text() '%s', GetType() is %s\n",
+ second->GetOrigLine(), second->GetOrigCol(), second->Text(), get_token_name(second->GetType()));
+ LOG_FMT(LSPACE, " Please make a call at https://github.com/uncrustify/uncrustify/issues/new\n");
+ LOG_FMT(LSPACE, " or merge the line:\n");
+ LOG_FMT(LSPACE, " { CT_%s, CT_%s},\n",
+ get_token_name(first->GetType()), get_token_name(second->GetType()));
+ LOG_FMT(LSPACE, " in the file <Path_to_uncrustify>/src/add_space_table.h\n");
+
+ log_rule("ADD as default value");
+ return(IARF_ADD);
+} // do_space
+
+
+static iarf_e ensure_force_space(Chunk *first, Chunk *second, iarf_e av)
+{
+ if (first->TestFlags(PCF_FORCE_SPACE))
+ {
+ LOG_FMT(LSPACE, "%s(%d): force between '%s' and '%s'\n",
+ __func__, __LINE__, first->Text(), second->Text());
+ return(av | IARF_ADD);
+ }
+ return(av);
+}
+
+
+static iarf_e do_space_ensured(Chunk *first, Chunk *second, int &min_sp)
+{
+ return(ensure_force_space(first, second, do_space(first, second, min_sp)));
+}
+
+
+void space_text()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *pc = Chunk::GetHead();
+ Chunk *next;
+ size_t prev_column;
+ size_t column = pc->GetColumn();
+
+ while (pc->IsNotNullChunk())
+ {
+ if (pc->Is(CT_NEWLINE))
+ {
+ LOG_FMT(LSPACE, "%s(%d): orig line is %zu, orig col is %zu, <Newline>, nl is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetNlCount());
+ }
+ else
+ {
+ char copy[1000];
+ LOG_FMT(LSPACE, "%s(%d): orig line is %zu, orig col is %zu, '%s' type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy), get_token_name(pc->GetType()));
+ }
+
+ if ( (options::use_options_overriding_for_qt_macros())
+ && ( (strcmp(pc->Text(), "SIGNAL") == 0)
+ || (strcmp(pc->Text(), "SLOT") == 0)))
+ {
+ LOG_FMT(LSPACE, "%s(%d): orig col is %zu, type is %s SIGNAL/SLOT found\n",
+ __func__, __LINE__, pc->GetOrigLine(), get_token_name(pc->GetType()));
+ pc->SetFlagBits(PCF_IN_QT_MACRO); // flag the chunk for a second processing
+
+ // save the values
+ save_set_options_for_QT(pc->GetLevel());
+ }
+
+ // Bug # 637
+ // If true, vbrace tokens are dropped to the previous token and skipped.
+ if (options::sp_skip_vbrace_tokens())
+ {
+ next = pc->GetNext();
+
+ while ( next->IsEmptyText()
+ && !next->IsNewline()
+ && next->IsVBrace())
+ {
+ LOG_FMT(LSPACE, "%s(%d): orig line is %zu, orig col is %zu, Skip %s (%zu+%zu)\n",
+ __func__, __LINE__, next->GetOrigLine(), next->GetOrigCol(), get_token_name(next->GetType()),
+ pc->GetColumn(), pc->GetStr().size());
+ next->SetColumn(pc->GetColumn() + pc->GetStr().size());
+ next = next->GetNext();
+ }
+ }
+ else
+ {
+ next = pc->GetNext();
+ }
+
+ if (next->IsNullChunk())
+ {
+ break;
+ }
+
+ // Issue # 481
+ // Whether to balance spaces inside nested parentheses.
+ if ( QT_SIGNAL_SLOT_found
+ && options::sp_balance_nested_parens())
+ {
+ Chunk *nn = next->GetNext(); // Issue #2734
+
+ if ( nn->IsNotNullChunk()
+ && nn->Is(CT_SPACE))
+ {
+ Chunk::Delete(nn); // remove the space
+ }
+ }
+
+ /*
+ * If the current chunk contains a newline, do not change the column
+ * of the next item
+ */
+ if ( pc->IsNewline()
+ || pc->Is(CT_COMMENT_MULTI))
+ {
+ column = next->GetColumn();
+ }
+ else
+ {
+ // Set to the minimum allowed column
+ if (pc->GetNlCount() == 0)
+ {
+ column += pc->Len();
+ }
+ else
+ {
+ column = pc->GetOrigColEnd();
+ }
+ prev_column = column;
+
+ /*
+ * Apply a general safety check
+ * If the two chunks combined will tokenize differently, then we
+ * must force a space.
+ * Two chunks -- "()" and "[]" will always tokenize differently.
+ * They are always safe to not have a space after them.
+ */
+ pc->ResetFlagBits(PCF_FORCE_SPACE);
+
+ if ( (pc->Len() > 0)
+ && !pc->IsString("[]")
+ && !pc->IsString("{{")
+ && !pc->IsString("}}")
+ && !pc->IsString("()")
+ && !pc->GetStr().startswith("@\""))
+ {
+ // Find the next non-empty chunk on this line
+ Chunk *tmp = next;
+
+ while ( tmp->IsNotNullChunk()
+ && (tmp->Len() == 0)
+ && !tmp->IsNewline())
+ {
+ tmp = tmp->GetNext();
+ }
+
+ if ( tmp->IsNotNullChunk()
+ && tmp->Len() > 0)
+ {
+ bool kw1 = CharTable::IsKw2(pc->GetStr()[pc->Len() - 1]);
+ bool kw2 = CharTable::IsKw1(next->GetStr()[0]);
+
+ if ( kw1
+ && kw2)
+ {
+ // back-to-back words need a space
+ LOG_FMT(LSPACE, "%s(%d): back-to-back words need a space: pc->Text() '%s', next->Text() '%s'\n",
+ __func__, __LINE__, pc->Text(), next->Text());
+ pc->SetFlagBits(PCF_FORCE_SPACE);
+ }
+ // TODO: what is the meaning of 4
+ else if ( !kw1
+ && !kw2
+ && (pc->Len() < 4)
+ && (next->Len() < 4))
+ {
+ // We aren't dealing with keywords. concat and try punctuators
+ char buf[9];
+ memcpy(buf, pc->Text(), pc->Len());
+ memcpy(buf + pc->Len(), next->Text(), next->Len());
+ buf[pc->Len() + next->Len()] = 0;
+
+ const chunk_tag_t *ct;
+ ct = find_punctuator(buf, cpd.lang_flags);
+
+ if ( ct != nullptr
+ && (strlen(ct->tag) != pc->Len()))
+ {
+ // punctuator parsed to a different size..
+
+ /*
+ * C++11 allows '>>' to mean '> >' in templates:
+ * some_func<vector<string>>();
+ */
+ // (C++11) Permit removal of the space between '>>' in 'foo<bar<int> >'. Note
+ // that sp_angle_shift cannot remove the space without this option.
+ if ( ( ( language_is_set(LANG_CPP)
+ && options::sp_permit_cpp11_shift())
+ || (language_is_set(LANG_JAVA | LANG_CS | LANG_VALA | LANG_OC)))
+ && pc->Is(CT_ANGLE_CLOSE)
+ && next->Is(CT_ANGLE_CLOSE))
+ {
+ // allow '>' and '>' to become '>>'
+ }
+ else if (strcmp(ct->tag, "[]") == 0)
+ {
+ // this is OK
+ }
+ else
+ {
+ LOG_FMT(LSPACE, "%s(%d): : pc->Text() is %s, next->Text() is %s\n",
+ __func__, __LINE__, pc->Text(), next->Text());
+ pc->SetFlagBits(PCF_FORCE_SPACE);
+ }
+ }
+ }
+ }
+ }
+ int min_sp;
+ LOG_FMT(LSPACE, "%s(%d): orig line is %zu, orig col is %zu, pc-Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ iarf_e av = do_space_ensured(pc, next, min_sp);
+ min_sp = max(1, min_sp);
+
+ switch (av)
+ {
+ case IARF_FORCE:
+ column += min_sp; // add exactly the specified number of spaces
+ break;
+
+ case IARF_ADD:
+ {
+ int delta = min_sp;
+
+ // Handle the condition of a CT_VBRACE_OPEN with more complicated spacing mechanics.
+ if ( pc->Is(CT_VBRACE_OPEN)
+ && next->GetOrigCol() >= pc->GetPrev()->GetOrigCol())
+ {
+ delta = next->GetOrigCol() - pc->GetPrev()->GetOrigCol();
+
+ if ((delta - 1) < min_sp)
+ {
+ column += min_sp;
+ break;
+ }
+ column += (delta - 1);
+ break;
+ }
+
+ if ( next->GetOrigCol() >= pc->GetOrigColEnd()
+ && pc->GetOrigColEnd() != 0)
+ {
+ // Keep the same relative spacing, minimum 1
+ delta = next->GetOrigCol() - pc->GetOrigColEnd();
+
+ if (delta < min_sp)
+ {
+ delta = min_sp;
+ }
+ }
+ column += delta;
+ break;
+ }
+
+ case IARF_REMOVE:
+ // the symbols will be back-to-back "a+3"
+ break;
+
+ case IARF_IGNORE:
+
+ // Keep the same relative spacing, if possible
+ if ( next->GetOrigCol() >= pc->GetOrigColEnd()
+ && pc->GetOrigColEnd() != 0)
+ {
+ column += next->GetOrigCol() - pc->GetOrigColEnd();
+ }
+ else
+ {
+ // preserve the position if virtual brace
+ // Issue #1854
+ if (pc->Is(CT_VBRACE_OPEN))
+ {
+ column = next->GetOrigCol();
+ }
+ }
+ break;
+
+ default:
+ // If we got here, something is wrong...
+ break;
+ } // switch
+
+ if ( next->IsComment()
+ && next->GetNext()->IsNewline()
+ && column < next->GetOrigCol())
+ {
+ /*
+ * do some comment adjustments if sp_before_tr_cmt and sp_endif_cmt
+ * did not apply.
+ */
+ // Add or remove space between #else or #endif and a trailing comment.
+ if ( ( options::sp_before_tr_cmt() == IARF_IGNORE
+ || next->GetParentType() != CT_COMMENT_END)
+ && ( options::sp_endif_cmt() == IARF_IGNORE
+ || ( pc->IsNot(CT_PP_ELSE)
+ && pc->IsNot(CT_PP_ENDIF))))
+ {
+ if (options::indent_relative_single_line_comments())
+ {
+ // Try to keep relative spacing between tokens
+ LOG_FMT(LSPACE, "%s(%d): <relative adj>", __func__, __LINE__);
+ LOG_FMT(LSPACE, "%s(%d): pc is '%s', orig col is %zu, next orig col is %zu, pc orig col end is %zu\n",
+ __func__, __LINE__, pc->Text(),
+ pc->GetOrigCol(), next->GetOrigCol(), pc->GetOrigColEnd());
+ column = pc->GetColumn() + (next->GetOrigCol() - pc->GetOrigColEnd());
+ }
+ else
+ {
+ /*
+ * If there was a space, we need to force one, otherwise
+ * try to keep the comment in the same column.
+ */
+ size_t col_min = pc->GetColumn() + pc->Len() + ((next->GetOrigPrevSp() > 0) ? 1 : 0);
+ column = next->GetOrigCol();
+
+ if (column < col_min)
+ {
+ column = col_min;
+ }
+ LOG_FMT(LSPACE, "%s(%d): <relative set>", __func__, __LINE__);
+ }
+ }
+ }
+ next->SetColumn(column);
+ LOG_FMT(LSPACE, "%s(%d): orig line is %zu, orig col is %zu, pc-Text() '%s', type is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text(), get_token_name(pc->GetType()));
+ LOG_FMT(LSPACE, "%s(%d): ",
+ __func__, __LINE__);
+ LOG_FMT(LSPACE, " rule = %s @ %zu => %zu\n",
+ (av == IARF_IGNORE) ? "IGNORE" :
+ (av == IARF_ADD) ? "ADD" :
+ (av == IARF_REMOVE) ? "REMOVE" : "FORCE",
+ column - prev_column, next->GetColumn());
+
+ if (restoreValues) // guy 2015-09-22
+ {
+ restore_options_for_QT();
+ }
+ }
+ pc = next;
+
+ if (QT_SIGNAL_SLOT_found)
+ {
+ // flag the chunk for a second processing
+ pc->SetFlagBits(PCF_IN_QT_MACRO);
+ }
+ }
+} // space_text
+
+
+void space_text_balance_nested_parens()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *first = Chunk::GetHead();
+
+ while (first->IsNotNullChunk())
+ {
+ Chunk *next = first->GetNext();
+
+ if (next->IsNullChunk())
+ {
+ break;
+ }
+
+ // if there are two successive opening parenthesis
+ if ( first->IsString("(")
+ && next->IsString("("))
+ {
+ // insert a space between them
+ space_add_after(first, 1);
+
+ // test after the closing parens Issue #1703
+ Chunk *closing = first->GetNextType((E_Token)(first->GetType() + 1), first->GetLevel());
+
+ if (closing->GetOrigCol() == closing->GetPrev()->GetOrigColEnd())
+ {
+ space_add_after(closing->GetPrev(), 1);
+ }
+ }
+ else if ( first->IsString(")")
+ && next->IsString(")"))
+ {
+ // insert a space between the two closing parens
+ space_add_after(first, 1);
+
+ // test after the opening parens Issue #1703
+ Chunk *opening = next->GetPrevType((E_Token)(next->GetType() - 1), next->GetLevel());
+
+ if (opening->GetOrigColEnd() == opening->GetNext()->GetOrigCol())
+ {
+ space_add_after(opening, 1);
+ }
+ }
+ first = next;
+ }
+} // space_text_balance_nested_parens
+
+
+size_t space_needed(Chunk *first, Chunk *second)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LSPACE, "%s(%d)\n", __func__, __LINE__);
+
+ int min_sp;
+
+ switch (do_space_ensured(first, second, min_sp))
+ {
+ case IARF_ADD:
+ case IARF_FORCE:
+ return(max(1, min_sp));
+
+ case IARF_REMOVE:
+ return(0);
+
+ case IARF_IGNORE:
+ default:
+ return(second->GetOrigCol() > (first->GetOrigCol() + first->Len()));
+ }
+}
+
+
+size_t space_col_align(Chunk *first, Chunk *second)
+{
+ LOG_FUNC_ENTRY();
+
+ LOG_FMT(LSPACE, "%s(%d): 1st orig line %zu, orig col %zu, [%s/%s], text '%s' <==>\n",
+ __func__, __LINE__, first->GetOrigLine(), first->GetOrigCol(),
+ get_token_name(first->GetType()), get_token_name(first->GetParentType()),
+ first->Text());
+ LOG_FMT(LSPACE, "%s(%d): 2nd orig line %zu, orig col %zu, [%s/%s], text '%s'\n",
+ __func__, __LINE__, second->GetOrigLine(), second->GetOrigCol(),
+ get_token_name(second->GetType()), get_token_name(second->GetParentType()),
+ second->Text());
+ log_func_stack_inline(LSPACE);
+
+ int min_sp;
+ iarf_e av = do_space_ensured(first, second, min_sp);
+
+ LOG_FMT(LSPACE, "%s(%d): av is %s\n", __func__, __LINE__, to_string(av));
+ size_t coldiff;
+
+ if (first->GetNlCount() > 0)
+ {
+ LOG_FMT(LSPACE, "%s(%d): new line count %zu, orig col end %zu\n",
+ __func__, __LINE__, first->GetNlCount(), first->GetOrigColEnd());
+ coldiff = first->GetOrigColEnd() - 1;
+ }
+ else
+ {
+ LOG_FMT(LSPACE, "%s(%d): '1st' len is %zu\n", __func__, __LINE__, first->Len());
+ coldiff = first->Len();
+ }
+ LOG_FMT(LSPACE, "%s(%d): => coldiff is %zu\n", __func__, __LINE__, coldiff);
+
+ LOG_FMT(LSPACE, "%s(%d): => av is %s\n", __func__, __LINE__,
+ (av == IARF_IGNORE) ? "IGNORE" :
+ (av == IARF_ADD) ? "ADD" :
+ (av == IARF_REMOVE) ? "REMOVE" : "FORCE");
+
+ switch (av)
+ {
+ case IARF_ADD:
+ case IARF_FORCE:
+ coldiff++;
+ break;
+
+ case IARF_REMOVE:
+ break;
+
+ case IARF_IGNORE: // Issue #2064
+ LOG_FMT(LSPACE, "%s(%d): => first orig line is %zu\n", __func__, __LINE__, first->GetOrigLine());
+ LOG_FMT(LSPACE, "%s(%d): => second orig line is %zu\n", __func__, __LINE__, second->GetOrigLine());
+ LOG_FMT(LSPACE, "%s(%d): => first text is '%s'\n", __func__, __LINE__, first->Text());
+ LOG_FMT(LSPACE, "%s(%d): => second text is '%s'\n", __func__, __LINE__, second->Text());
+ LOG_FMT(LSPACE, "%s(%d): => first orig col is %zu\n", __func__, __LINE__, first->GetOrigCol());
+ LOG_FMT(LSPACE, "%s(%d): => second orig col is %zu\n", __func__, __LINE__, second->GetOrigCol());
+ LOG_FMT(LSPACE, "%s(%d): => first len is %zu\n", __func__, __LINE__, first->Len());
+
+ if ( first->GetOrigLine() == second->GetOrigLine()
+ && second->GetOrigCol() > (first->GetOrigCol() + first->Len()))
+ {
+ coldiff++;
+ }
+ break;
+
+ default:
+ // If we got here, something is wrong...
+ break;
+ }
+ LOG_FMT(LSPACE, "%s(%d): => coldiff is %zu\n", __func__, __LINE__, coldiff);
+ return(coldiff);
+} // space_col_align
+
+
+void space_add_after(Chunk *pc, size_t count)
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *next = pc->GetNext();
+
+ // don't add at the end of the file or before a newline
+ if ( next->IsNullChunk()
+ || next->IsNewline())
+ {
+ return;
+ }
+
+ // Limit to 16 spaces
+ if (count > 16)
+ {
+ count = 16;
+ }
+
+ // Two CT_SPACE in a row -- use the max of the two
+ if (next->Is(CT_SPACE))
+ {
+ if (next->Len() < count)
+ {
+ while (next->Len() < count)
+ {
+ next->Str().append(' ');
+ }
+ }
+ return;
+ }
+ Chunk sp;
+
+ sp.SetType(CT_SPACE);
+ sp.SetFlags(pc->GetFlags() & PCF_COPY_FLAGS);
+ sp.Str() = " "; // 16 spaces
+ sp.Str().resize(count);
+ sp.SetLevel(pc->GetLevel());
+ sp.SetBraceLevel(pc->GetBraceLevel());
+ sp.SetPpLevel(pc->GetPpLevel());
+ sp.SetColumn(pc->GetColumn() + pc->Len());
+ sp.SetOrigLine(pc->GetOrigLine());
+ sp.SetOrigCol(pc->GetOrigCol());
+
+ sp.CopyAndAddAfter(pc);
+} // space_add_after
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/space.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/space.h
index 275772f2..275772f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/space.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/space.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/symbols_table.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/symbols_table.h
index bcf7c8b2..bcf7c8b2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/symbols_table.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/symbols_table.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/token_enum.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/token_enum.h
new file mode 100644
index 00000000..6c912e07
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/token_enum.h
@@ -0,0 +1,405 @@
+/**
+ * @file token_enum.h
+ * List of the different tokens used in the program.
+ *
+ * @author Ben Gardner
+ * @author Guy Maurel since version 0.62 for uncrustify4Qt
+ * October 2015
+ * @license GPL v2+
+ */
+
+#ifndef TOKEN_ENUM_H_INCLUDED
+#define TOKEN_ENUM_H_INCLUDED
+
+/**
+ * abbreviations used:
+ * CT = chunk type
+ */
+
+
+/**
+ * This is an enum of all the different chunks/tokens/elements that the
+ * program can work with. The parser and scanner assigns one of these to
+ * each chunk/token.
+ */
+enum E_Token
+{
+ CT_NONE,
+ CT_PARENT_NOT_SET,
+ CT_EOF,
+ CT_UNKNOWN,
+
+ CT_JUNK, // junk collected when parsing is disabled
+
+ CT_WHITESPACE, // whitespace without any newlines
+ CT_SPACE, // a fixed number of spaces to support weird spacing rules
+ CT_NEWLINE, // CRA, one or more newlines
+ CT_NL_CONT, // CRA, backslash-newline
+ CT_FORM_FEED, // character 12
+ CT_COMMENT_CPP, // C++ comment (always followed by CT_NEWLINE)
+ CT_COMMENT, // C-comment, single line
+ CT_COMMENT_MULTI, // Multi-lined comment
+ CT_COMMENT_EMBED, // comment parent_type: non-newline before and after
+ CT_COMMENT_START, // comment parent_type: newline before
+ CT_COMMENT_END, // comment parent_type: newline after
+ CT_COMMENT_WHOLE, // comment parent_type: newline before and after
+ CT_COMMENT_CPP_ENDIF, // C++ comment, single line, after #endif or #else
+ CT_COMMENT_ENDIF, // C-comment, single line, after #endif or #else
+
+ CT_IGNORED, // a chunk of ignored text
+
+ CT_WORD, // variable, type, function name, etc
+ CT_NUMBER,
+ CT_NUMBER_FP,
+ CT_STRING, // quoted string "hi" or 'a' or <in> for include
+ CT_STRING_MULTI, // quoted string with embedded newline
+ CT_IF, // built-in keywords
+ CT_ELSE,
+ CT_ELSEIF,
+ CT_CONSTEXPR, // only when preceded by 'if' (otherwise CT_QUALIFIER)
+ CT_FOR,
+ CT_WHILE,
+ CT_WHILE_OF_DO,
+ CT_SWITCH,
+ CT_CASE,
+ CT_DO,
+ CT_SYNCHRONIZED,
+ CT_VOLATILE,
+ CT_TYPEDEF,
+ CT_STRUCT,
+ CT_ENUM,
+ CT_ENUM_CLASS,
+ CT_SIZEOF,
+ CT_DECLTYPE,
+ CT_RETURN,
+ CT_BREAK,
+ CT_UNION,
+ CT_GOTO,
+ CT_CONTINUE,
+ CT_C_CAST, // C-style cast: "(int)5.6"
+ CT_CPP_CAST, // C++-style cast: "int(5.6)"
+ CT_D_CAST, // D-style cast: "cast(type)" and "const(type)"
+ CT_TYPE_CAST, // static_cast<type>(exp)
+ CT_TYPENAME, // typename type
+ CT_TEMPLATE, // template<...>
+ CT_PARAMETER_PACK, // template<typename ... ARGS>
+ CT_WHERE_SPEC, // 'where' : used in C# generic constraint
+
+ CT_ASSIGN, // =, +=, /=, etc
+ CT_ASSIGN_NL, // Assign followed by a newline - fake item for indenting
+ CT_SASSIGN, // 'and_eq'
+
+ CT_ASSIGN_DEFAULT_ARG, // Default argument such as
+ // Foo( int Foo = 5 );
+ CT_ASSIGN_FUNC_PROTO, // function prototype modifier such as
+ // void* operator new(std::size_t) = delete;
+ // Foo( const Foo & ) = default;
+ // Foo( const Foo & ) = 0;
+
+ CT_COMPARE, // ==, !=, <=, >=
+ CT_SCOMPARE, // compare op that is a string 'is', 'neq'
+ CT_BOOL, // || or &&
+ CT_SBOOL, // or, and
+ CT_ARITH, // +, -, /, etc
+ CT_SARITH, // 'not', 'xor'
+ CT_SHIFT, // <<, >>
+ CT_CARET, // ^
+ CT_DEREF, // * dereference
+ CT_INCDEC_BEFORE, // ++a or --a
+ CT_INCDEC_AFTER, // a++ or a--
+ CT_MEMBER, // . or ->
+ CT_DC_MEMBER, // ::
+ CT_C99_MEMBER, // . in structure stuff
+ CT_INV, // ~
+ CT_DESTRUCTOR, // ~
+ CT_NOT, // !
+ CT_D_TEMPLATE, // ! as in Foo!(A)
+ CT_ADDR, // &
+ CT_NEG, // - as in -1
+ CT_POS, // + as in +1
+ CT_STAR, // * : raw char to be changed
+ CT_PLUS, // + : raw char to be changed
+ CT_MINUS, // - : raw char to be changed
+ CT_AMP, // & : raw char to be changed
+ CT_BYREF, // & in function def/proto params
+
+ // CT_BITWISE_AND, // & // is a CT_ARITH
+ // CT_BITWISE_OR, // | // is a CT_ARITH
+ // CT_BITWISE_EXCLUSIVE_OR,// ^ // is a CT_ARITH
+ // CT_BITWISE_NOT, // ~ // is a CT_ARITH
+
+ CT_POUND, // #
+ CT_PREPROC, // # at the start of a line
+ CT_PREPROC_INDENT, // # at the start of a line that gets indented: #region
+ CT_PREPROC_BODY, // body of every preproc EXCEPT #define
+ CT_PP, // ##
+ CT_ELLIPSIS, // ...
+ CT_RANGE, // ..
+ CT_NULLCOND, // ?.
+
+ CT_SEMICOLON,
+ CT_VSEMICOLON, // virtual semicolon for PAWN
+ CT_COLON,
+ CT_ASM_COLON,
+ CT_CASE_COLON,
+ CT_CASE_ELLIPSIS, // '...' in `case 1 ... 5`:
+ CT_CLASS_COLON, // colon after a class def
+ CT_CONSTR_COLON, // colon after a constructor
+ CT_D_ARRAY_COLON, // D named array initializer colon
+ CT_COND_COLON, // conditional colon in 'b ? t : f'
+ CT_WHERE_COLON, // C# where-constraint colon (after the type)
+ CT_QUESTION, // conditional question in 'b ? t : f'
+ CT_COMMA,
+
+ CT_ASM,
+ CT_ATTRIBUTE,
+ CT_AUTORELEASEPOOL, // OC: Autorelease Pool Blocks, used by iOS
+ CT_OC_AVAILABLE,
+ CT_OC_AVAILABLE_VALUE,
+ CT_CATCH,
+ CT_WHEN,
+ CT_WHERE, // C# where clause
+ CT_CLASS,
+ CT_DELETE,
+ CT_EXPORT,
+ CT_FRIEND,
+ CT_NAMESPACE,
+ CT_PACKAGE,
+ CT_NEW, // may turn into CT_PBRACED if followed by a '('
+ CT_OPERATOR,
+ CT_OPERATOR_VAL,
+ CT_ASSIGN_OPERATOR, // the value after 'operator' such as:
+ // Foo &operator= ( const Foo & );
+ CT_ACCESS,
+ CT_ACCESS_COLON,
+ CT_THROW,
+ CT_NOEXCEPT,
+ CT_TRY,
+ CT_BRACED_INIT_LIST,
+ CT_USING,
+ CT_USING_STMT, // using (xxx) ...
+ CT_USING_ALIAS, // using identifier attr(optional) = type-id
+ CT_D_WITH, // D: parenthetis+braced
+ CT_D_MODULE,
+ CT_SUPER,
+ CT_DELEGATE,
+ CT_BODY,
+ CT_DEBUG,
+ CT_DEBUGGER,
+ CT_INVARIANT,
+ CT_UNITTEST,
+ CT_UNSAFE,
+ CT_FINALLY,
+ CT_FIXED, // C# fixed
+ CT_IMPORT,
+ CT_D_SCOPE,
+ CT_D_SCOPE_IF,
+ CT_LAZY,
+ CT_D_MACRO,
+ CT_D_VERSION, // turns into CT_D_VERSION_IF if not followed by '='
+ CT_D_VERSION_IF, // version(x) { }
+
+ // note for parenthetis/brace/square pairs: close MUST be open + 1
+ CT_PAREN_OPEN,
+ CT_PAREN_CLOSE,
+
+ CT_ANGLE_OPEN, // template<T*>
+ CT_ANGLE_CLOSE,
+
+ CT_SPAREN_OPEN, // 'special' parenthetis after if/for/switch/while/synchronized/catch
+ CT_SPAREN_CLOSE,
+
+ CT_PPAREN_OPEN, // 'protect' parenthetis to protect a type such as (*int)
+ CT_PPAREN_CLOSE, // used at align_func_param
+
+ CT_FPAREN_OPEN, // 'function' parenthetis after fcn/macro fcn
+ CT_FPAREN_CLOSE,
+
+ CT_LPAREN_OPEN, // lambda-declarator parenthetis
+ CT_LPAREN_CLOSE,
+
+ CT_TPAREN_OPEN, // 'type' parenthetis used in function types
+ CT_TPAREN_CLOSE,
+
+ CT_RPAREN_OPEN, // functor Issue #3914
+ CT_RPAREN_CLOSE,
+
+ CT_BRACE_OPEN, // {...}
+ CT_BRACE_CLOSE,
+
+ CT_VBRACE_OPEN, // virtual brace, i.e. brace inserted by uncrustify
+ CT_VBRACE_CLOSE,
+
+ CT_SQUARE_OPEN, // [...]
+ CT_SQUARE_CLOSE,
+
+ CT_TSQUARE, // special case of []
+
+ CT_MACRO_OPEN, // stuff specified via custom-pair
+ CT_MACRO_CLOSE,
+ CT_MACRO_ELSE,
+
+ // aggregate types
+ CT_LABEL, // a non-case label
+ CT_LABEL_COLON, // the colon for a label
+ CT_FUNCTION, // function - unspecified, call mark_function()
+ CT_FUNC_CALL, // function call
+ CT_FUNC_CALL_USER, // function call (special user)
+ CT_FUNC_DEF, // function definition/implementation
+ CT_FUNC_TYPE, // function type - foo in "typedef void (*foo)(void)"
+ CT_FUNC_VAR, // foo and parent type of first parens in "void (*foo)(void)"
+ CT_FUNC_PROTO, // function prototype
+ CT_FUNC_START, // global DC member for functions(void ::func())
+ CT_FUNC_CLASS_DEF, // ctor or dtor for a class
+ CT_FUNC_CLASS_PROTO, // ctor or dtor for a class
+ CT_FUNC_CTOR_VAR, // variable or class initialization
+ CT_FUNC_WRAP, // macro that wraps the function name
+ CT_PROTO_WRAP, // macro: "RETVAL PROTO_WRAP( fcn_name, (PARAMS))". Parens for PARAMS are optional.
+ CT_MACRO_FUNC, // function-like macro
+ CT_MACRO_FUNC_CALL, // function-like macro call
+ CT_MACRO, // a macro def
+ CT_QUALIFIER, // static, const, etc
+ CT_EXTERN, // extern
+ CT_DECLSPEC, // __declspec
+ CT_ALIGN, // paren'd qualifier: align(4) struct a { }
+ CT_TYPE,
+ CT_PTR_TYPE, // a '*' as part of a type
+ CT_TYPE_WRAP, // macro that wraps a type name
+ CT_CPP_LAMBDA, // parent for '[=](...){...}'
+ CT_CPP_LAMBDA_RET, // '->' in '[=](...) -> type {...}'
+ CT_EXECUTION_CONTEXT, // Keyword for use in lambda statement: [] CT_EXECUTION_CONTEXT ()->{}
+ CT_TRAILING_RET, // '->' in 'auto fname(...) -> type;'
+ // '->' in 'auto fname(...) const -> type;'
+ CT_BIT_COLON, // a ':' in a variable declaration
+ CT_ENUM_COLON, // a ':' in a enum definition
+
+ CT_OC_DYNAMIC,
+ CT_OC_END, // ObjC: @end
+ CT_OC_IMPL, // ObjC: @implementation
+ CT_OC_INTF, // ObjC: @interface
+ CT_OC_PROTOCOL, // ObjC: @protocol or @protocol()
+ CT_OC_PROTO_LIST, // ObjC: protocol list < > (parent token only)
+ CT_OC_GENERIC_SPEC, // ObjC: specification of generic < >
+ CT_OC_PROPERTY, // ObjC: @property
+ CT_OC_CLASS, // ObjC: the name after @interface or @implementation
+ CT_OC_CLASS_EXT, // ObjC: a pair of empty parens after the class name in a @interface or @implementation
+ CT_OC_CATEGORY, // ObjC: the category name in parens after the class name in a @interface or @implementation
+ CT_OC_SCOPE, // ObjC: the '-' or '+' in '-(void) func: (int) i;'
+ CT_OC_MSG, // ObjC: parent type to '[', ']' and ';' in '[class func : param name: param];'
+ CT_OC_MSG_CLASS, // ObjC: 'class' in '[class func : param name: param];' (see also PCF_IN_OC_MSG)
+ CT_OC_MSG_FUNC, // ObjC: 'func' in '[class func : param name: param];' (see also PCF_IN_OC_MSG)
+ CT_OC_MSG_NAME, // ObjC: 'name' in '[class func : param name: param];' (see also PCF_IN_OC_MSG)
+ CT_OC_MSG_SPEC, // ObjC: msg spec '-(void) func: (int) i;'
+ CT_OC_MSG_DECL, // ObjC: msg decl '-(void) func: (int) i { }'
+ CT_OC_RTYPE, // ObjC: marks parens of the return type after scope
+ CT_OC_ATYPE, // ObjC: marks parens of the arg type after scope
+ CT_OC_COLON, // ObjC: the colon in a msg spec
+ CT_OC_DICT_COLON, // ObjC: colon in dictionary constant: "KEY: VALUE"
+ CT_OC_SEL, // ObjC: @selector
+ CT_OC_SEL_NAME, // ObjC: selector name
+ CT_OC_BLOCK, // ObjC: block parent type.
+ CT_OC_BLOCK_ARG, // ObjC: block arguments parent type.
+ CT_OC_BLOCK_TYPE, // ObjC: block declaration parent type, e.g. mainly the '(^block_t)' in 'void (^block_t)(int arg);'
+ CT_OC_BLOCK_EXPR, // ObjC: block expression with arg: '^(int arg) { arg++; };' and without (called a block literal): '^{ ... };'
+ CT_OC_BLOCK_CARET, // ObjC: block pointer caret: '^'
+ CT_OC_AT, // ObjC: boxed constants using '@'
+ CT_OC_PROPERTY_ATTR, // ObjC: property attribute (strong, weak, readonly, etc...)
+
+ // start PP types
+ CT_PP_DEFINE, // #define
+ CT_PP_DEFINED, // #if defined
+ CT_PP_INCLUDE, // #include
+ CT_PP_IF, // #if, #ifdef, or #ifndef
+ CT_PP_ELSE, // #else or #elif
+ CT_PP_ENDIF, // #endif
+ CT_PP_ASSERT,
+ CT_PP_EMIT,
+ CT_PP_ENDASM, // end of assembly code section
+ CT_PP_ENDINPUT,
+ CT_PP_ERROR,
+ CT_PP_FILE,
+ CT_PP_LINE,
+ CT_PP_SECTION,
+ CT_PP_ASM, // start of assembly code section
+ CT_PP_UNDEF,
+ CT_PP_PROPERTY,
+
+ CT_PP_BODYCHUNK, // everything after this gets put in CT_PREPROC_BODY
+
+ CT_PP_PRAGMA, // pragma's should not be altered
+ CT_PP_REGION, // C# #region
+ CT_PP_ENDREGION, // C# #endregion
+ CT_PP_REGION_INDENT, // Dummy token for indenting a C# #region
+ CT_PP_IF_INDENT, // Dummy token for indenting a #if stuff
+ CT_PP_IGNORE, // Dummy token for ignoring a certain preprocessor directive (do not do any processing)
+ CT_PP_OTHER, // #line, #error, #pragma, etc
+ // end PP types
+
+ // PAWN stuff
+ CT_CHAR,
+ CT_DEFINED,
+ CT_FORWARD,
+ CT_NATIVE,
+ CT_STATE,
+ CT_STOCK,
+ CT_TAGOF,
+ CT_DOT,
+ CT_TAG,
+ CT_TAG_COLON,
+
+ // C-sharp
+ CT_LOCK, // lock/unlock
+ CT_AS,
+ CT_IN, // "foreach (T c in x)" or "foo(in char c)" or "in { ..."
+ CT_BRACED, // simple braced items: try {}
+ CT_THIS, // may turn into CT_PBRACED if followed by a '('
+ CT_BASE, // C# thingy
+ CT_DEFAULT, // may be changed into CT_CASE
+ CT_GETSET, // must be followed by CT_BRACE_OPEN or reverts to CT_WORD
+ CT_GETSET_EMPTY, // get/set/add/remove followed by a semicolon
+ CT_CONCAT, // The '~' between strings
+ CT_CS_SQ_STMT, // '[assembly: xxx]' or '[Attribute()]' or '[Help()]', etc
+ CT_CS_SQ_COLON, // the colon in one of those [] thingys
+ CT_CS_PROPERTY, // word or ']' followed by '{'
+
+ // Embedded SQL - always terminated with a semicolon
+ CT_SQL_EXEC, // the 'EXEC' in 'EXEC SQL ...'
+ CT_SQL_BEGIN, // the 'BEGINN' in 'EXEC SQL BEGIN ...'
+ CT_SQL_END, // the 'END' in 'EXEC SQL END ...'
+ CT_SQL_WORD, // CT_WORDs in the 'EXEC SQL' statement
+ CT_SQL_ASSIGN, // :=
+
+ // Vala stuff
+ CT_CONSTRUCT, // braced "construct { }" or qualifier "(construct int x)"
+ CT_LAMBDA,
+
+ // Java
+ CT_ASSERT, // assert EXP1 [ : EXP2 ] ;
+ CT_ANNOTATION, // @interface or @something(...)
+ CT_FOR_COLON, // colon in "for ( TYPE var: EXPR ) { ... }"
+ CT_DOUBLE_BRACE, // parent for double brace
+
+ /* Clang */
+ CT_CNG_HASINC, // Clang: __has_include()
+ CT_CNG_HASINCN, // Clang: __has_include_next()
+
+ // extensions for Qt macros
+ CT_Q_EMIT, // guy 2015-10-16
+ CT_Q_FOREACH, // guy 2015-09-23
+ CT_Q_FOREVER, // guy 2015-10-18
+ CT_Q_GADGET, // guy 2016-05-04
+ CT_Q_OBJECT, // guy 2015-10-16
+
+ // Machine Modes
+ CT_MODE, // guy 2016-03-11
+ CT_DI, // guy 2016-03-11
+ CT_HI, // guy 2016-03-11
+ CT_QI, // guy 2016-03-11
+ CT_SI, // guy 2016-03-11
+ CT_NOTHROW, // guy 2016-03-11
+ CT_WORD_, // guy 2016-03-11
+
+ CT_TOKEN_COUNT_ // NOTE: Keep this the last entry because it's used as a counter.
+};
+
+#endif /* TOKEN_ENUM_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize.cpp
new file mode 100644
index 00000000..846755fe
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize.cpp
@@ -0,0 +1,2946 @@
+/**
+ * @file tokenize.cpp
+ * This file breaks up the text stream into tokens or chunks.
+ *
+ * Each routine needs to set pc.len and pc.type.
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "tokenize.h"
+
+#include "keywords.h"
+#include "prototypes.h"
+#include "punctuators.h"
+#include "unc_ctype.h"
+
+#include <regex>
+#include <stack>
+
+
+#define LE_COUNT(x) cpd.le_counts[static_cast<size_t>(LE_ ## x)]
+
+constexpr static auto LCURRENT = LTOK;
+
+using namespace std;
+using namespace uncrustify;
+
+
+struct TokenInfo
+{
+ TokenInfo()
+ : last_ch(0)
+ , idx(0)
+ , row(1)
+ , col(1)
+ {
+ }
+
+ size_t last_ch;
+ size_t idx;
+ size_t row;
+ size_t col;
+};
+
+
+struct TokenContext
+{
+ TokenContext(const deque<int> &d)
+ : data(d)
+ {
+ }
+
+
+ //! save before trying to parse something that may fail
+ void save()
+ {
+ save(s);
+ }
+
+
+ void save(TokenInfo &info)
+ {
+ info = c;
+ }
+
+
+ //! restore previous saved state
+ void restore()
+ {
+ restore(s);
+ }
+
+
+ void restore(const TokenInfo &info)
+ {
+ c = info;
+ }
+
+
+ bool more()
+ {
+ return(c.idx < data.size());
+ }
+
+
+ size_t peek()
+ {
+ return(more() ? data[c.idx] : 0);
+ }
+
+
+ size_t peek(size_t idx)
+ {
+ idx += c.idx;
+ return((idx < data.size()) ? data[idx] : 0);
+ }
+
+
+ size_t get()
+ {
+ if (more())
+ {
+ size_t ch = data[c.idx++];
+
+ switch (ch)
+ {
+ case '\t':
+ log_rule_B("input_tab_size");
+ c.col = calc_next_tab_column(c.col, options::input_tab_size());
+ break;
+
+ case '\n':
+
+ if (c.last_ch != '\r')
+ {
+ c.row++;
+ c.col = 1;
+ }
+ break;
+
+ case '\r':
+ c.row++;
+ c.col = 1;
+ break;
+
+ default:
+ c.col++;
+ break;
+ }
+ c.last_ch = ch;
+ return(ch);
+ }
+ return(0);
+ }
+
+
+ bool expect(size_t ch)
+ {
+ if (peek() == ch)
+ {
+ get();
+ return(true);
+ }
+ return(false);
+ }
+
+
+ const deque<int> &data;
+ TokenInfo c; //! current
+ TokenInfo s; //! saved
+};
+
+
+/**
+ * Count the number of characters in a quoted string.
+ * The next bit of text starts with a quote char " or ' or <.
+ * Count the number of characters until the matching character.
+ *
+ * @param pc The structure to update, str is an input.
+ *
+ * @return Whether a string was parsed
+ */
+static bool parse_string(TokenContext &ctx, Chunk &pc, size_t quote_idx, bool allow_escape);
+
+
+/**
+ * Literal string, ends with single "
+ * Two "" don't end the string.
+ *
+ * @param pc The structure to update, str is an input.
+ *
+ * @return Whether a string was parsed
+ */
+static bool parse_cs_string(TokenContext &ctx, Chunk &pc);
+
+
+/**
+ * VALA verbatim string, ends with three quotes (""")
+ *
+ * @param pc The structure to update, str is an input.
+ */
+static void parse_verbatim_string(TokenContext &ctx, Chunk &pc);
+
+
+static bool tag_compare(const deque<int> &d, size_t a_idx, size_t b_idx, size_t len);
+
+
+/**
+ * Parses a C++0x 'R' string. R"( xxx )" R"tag( )tag" u8R"(x)" uR"(x)"
+ * Newlines may be in the string.
+ *
+ * @param pc structure to update, str is an input.
+ */
+static bool parse_cr_string(TokenContext &ctx, Chunk &pc, size_t q_idx);
+
+
+/**
+ * Count the number of whitespace characters.
+ *
+ * @param pc The structure to update, str is an input.
+ *
+ * @return Whether whitespace was parsed
+ */
+static bool parse_whitespace(TokenContext &ctx, Chunk &pc);
+
+
+/**
+ * Called when we hit a backslash.
+ * If there is nothing but whitespace until the newline, then this is a
+ * backslash newline
+ *
+ * @param pc structure to update, str is an input
+ */
+static bool parse_bs_newline(TokenContext &ctx, Chunk &pc);
+
+
+/**
+ * Parses any number of tab or space chars followed by a newline.
+ * Does not change pc.len if a newline isn't found.
+ * This is not the same as parse_whitespace() because it only consumes until
+ * a single newline is encountered.
+ */
+static bool parse_newline(TokenContext &ctx);
+
+
+/**
+ * PAWN #define is different than C/C++.
+ * #define PATTERN REPLACEMENT_TEXT
+ * The PATTERN may not contain a space or '[' or ']'.
+ * A generic whitespace check should be good enough.
+ * Do not change the pattern.
+ *
+ * @param pc structure to update, str is an input
+ */
+static void parse_pawn_pattern(TokenContext &ctx, Chunk &pc, E_Token tt);
+
+
+static bool parse_ignored(TokenContext &ctx, Chunk &pc);
+
+
+/**
+ * Skips the next bit of whatever and returns the type of block.
+ *
+ * pc.str is the input text.
+ * pc.len in the output length.
+ * pc.type is the output type
+ * pc.column is output column
+ *
+ * @param pc The structure to update, str is an input.
+ * @param prev_pc The previous structure
+ *
+ * @return true/false - whether anything was parsed
+ */
+static bool parse_next(TokenContext &ctx, Chunk &pc, const Chunk *prev_pc);
+
+
+/**
+ * Parses all legal D string constants.
+ *
+ * Quoted strings:
+ * r"Wysiwyg" # WYSIWYG string
+ * x"hexstring" # Hexadecimal array
+ * `Wysiwyg` # WYSIWYG string
+ * 'char' # single character
+ * "reg_string" # regular string
+ *
+ * Non-quoted strings:
+ * \x12 # 1-byte hex constant
+ * \u1234 # 2-byte hex constant
+ * \U12345678 # 4-byte hex constant
+ * \123 # octal constant
+ * \&amp; # named entity
+ * \n # single character
+ *
+ * @param pc The structure to update, str is an input.
+ *
+ * @return Whether a string was parsed
+ */
+static bool d_parse_string(TokenContext &ctx, Chunk &pc);
+
+
+/**
+ * Figure of the length of the comment at text.
+ * The next bit of text starts with a '/', so it might be a comment.
+ * There are three types of comments:
+ * - C comments that start with '/ *' and end with '* /'
+ * - C++ comments that start with //
+ * - D nestable comments '/+' '+/'
+ *
+ * @param pc The structure to update, str is an input.
+ *
+ * @return Whether a comment was parsed
+ */
+static bool parse_comment(TokenContext &ctx, Chunk &pc);
+
+
+/**
+ * Figure of the length of the code placeholder at text, if present.
+ * This is only for Xcode which sometimes inserts temporary code placeholder chunks, which in plaintext <#look like this#>.
+ *
+ * @param pc The structure to update, str is an input.
+ *
+ * @return Whether a placeholder was parsed.
+ */
+static bool parse_code_placeholder(TokenContext &ctx, Chunk &pc);
+
+
+/**
+ * Parse any attached suffix, which may be a user-defined literal suffix.
+ * If for a string, explicitly exclude common format and scan specifiers, ie,
+ * PRIx32 and SCNx64.
+ */
+static void parse_suffix(TokenContext &ctx, Chunk &pc, bool forstring);
+
+
+//! check if a symbol holds a boolean value
+static bool is_bin(int ch);
+static bool is_bin_(int ch);
+
+
+//! check if a symbol holds a octal value
+static bool is_oct(int ch);
+static bool is_oct_(int ch);
+
+
+//! check if a symbol holds a decimal value;
+static bool is_dec(int ch);
+static bool is_dec_(int ch);
+
+
+//! check if a symbol holds a hexadecimal value
+static bool is_hex(int ch);
+static bool is_hex_(int ch);
+
+
+/**
+ * Count the number of characters in the number.
+ * The next bit of text starts with a number (0-9 or '.'), so it is a number.
+ * Count the number of characters in the number.
+ *
+ * This should cover all number formats for all languages.
+ * Note that this is not a strict parser. It will happily parse numbers in
+ * an invalid format.
+ *
+ * For example, only D allows underscores in the numbers, but they are
+ * allowed in all formats.
+ *
+ * @param[in,out] pc The structure to update, str is an input.
+ *
+ * @return Whether a number was parsed
+ */
+static bool parse_number(TokenContext &ctx, Chunk &pc);
+
+
+static bool d_parse_string(TokenContext &ctx, Chunk &pc)
+{
+ size_t ch = ctx.peek();
+
+ if ( ch == '"' // 34
+ || ch == '\'') // 39
+ {
+ return(parse_string(ctx, pc, 0, true));
+ }
+
+ if (ch == '`') // 96
+ {
+ return(parse_string(ctx, pc, 0, false));
+ }
+
+ if ( ( ch == 'r' // 114
+ || ch == 'x') // 120
+ && ctx.peek(1) == '"') // 34
+ {
+ return(parse_string(ctx, pc, 1, false));
+ }
+
+ if (ch != '\\')
+ {
+ return(false);
+ }
+ ctx.save();
+ int cnt;
+
+ pc.Str().clear();
+
+ while (ctx.peek() == '\\') // 92
+ {
+ pc.Str().append(ctx.get());
+
+ // Check for end of file
+ switch (ctx.peek())
+ {
+ case 'x': // \x HexDigit HexDigit
+ cnt = 3;
+
+ while (cnt--)
+ {
+ pc.Str().append(ctx.get());
+ }
+ break;
+
+ case 'u': // \u HexDigit (x4)
+ cnt = 5;
+
+ while (cnt--)
+ {
+ pc.Str().append(ctx.get());
+ }
+ break;
+
+ case 'U': // \U HexDigit (x8)
+ cnt = 9;
+
+ while (cnt--)
+ {
+ pc.Str().append(ctx.get());
+ }
+ break;
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ // handle up to 3 octal digits
+ pc.Str().append(ctx.get());
+ ch = ctx.peek();
+
+ if ( (ch >= '0')
+ && (ch <= '7'))
+ {
+ pc.Str().append(ctx.get());
+ ch = ctx.peek();
+
+ if ( (ch >= '0')
+ && (ch <= '7'))
+ {
+ pc.Str().append(ctx.get());
+ }
+ }
+ break;
+
+ case '&':
+ // \& NamedCharacterEntity ;
+ pc.Str().append(ctx.get());
+
+ while (unc_isalpha(ctx.peek()))
+ {
+ pc.Str().append(ctx.get());
+ }
+
+ if (ctx.peek() == ';') // 59
+ {
+ pc.Str().append(ctx.get());
+ }
+ break;
+
+ default:
+ // Everything else is a single character
+ pc.Str().append(ctx.get());
+ break;
+ } // switch
+ }
+
+ if (pc.GetStr().size() < 1)
+ {
+ ctx.restore();
+ return(false);
+ }
+ pc.SetType(CT_STRING);
+ return(true);
+} // d_parse_string
+
+
+#if 0
+
+
+//! A string-in-string search. Like strstr() with a haystack length.
+static const char *str_search(const char *needle, const char *haystack, int haystack_len)
+{
+ int needle_len = strlen(needle);
+
+ while (haystack_len-- >= needle_len)
+ {
+ if (memcmp(needle, haystack, needle_len) == 0)
+ {
+ return(haystack);
+ }
+ haystack++;
+ }
+ return(NULL);
+}
+#endif
+
+
+static bool parse_comment(TokenContext &ctx, Chunk &pc)
+{
+ bool is_d = language_is_set(LANG_D);
+ bool is_cs = language_is_set(LANG_CS);
+ size_t d_level = 0;
+
+ // does this start with '/ /' or '/ *' or '/ +' (d)
+ if ( (ctx.peek() != '/')
+ || ( (ctx.peek(1) != '*')
+ && (ctx.peek(1) != '/')
+ && ( (ctx.peek(1) != '+')
+ || !is_d)))
+ {
+ return(false);
+ }
+ ctx.save();
+
+ // account for opening two chars
+ pc.Str() = ctx.get(); // opening '/'
+ size_t ch = ctx.get();
+
+ pc.Str().append(ch); // second char
+
+ if (ch == '/') // 47
+ {
+ pc.SetType(CT_COMMENT_CPP);
+
+ while (true)
+ {
+ int bs_cnt = 0;
+
+ while (ctx.more())
+ {
+ ch = ctx.peek();
+
+ if ( (ch == '\r')
+ || (ch == '\n'))
+ {
+ break;
+ }
+
+ if ( (ch == '\\') // 92
+ && !is_cs) // backslashes aren't special in comments in C#
+ {
+ bs_cnt++;
+ }
+ else
+ {
+ bs_cnt = 0;
+ }
+ pc.Str().append(ctx.get());
+ }
+
+ /*
+ * If we hit an odd number of backslashes right before the newline,
+ * then we keep going.
+ */
+ if ( ((bs_cnt & 1) == 0)
+ || !ctx.more())
+ {
+ break;
+ }
+
+ if (ctx.peek() == '\r')
+ {
+ pc.Str().append(ctx.get());
+ }
+
+ if (ctx.peek() == '\n')
+ {
+ pc.Str().append(ctx.get());
+ }
+ pc.SetNlCount(pc.GetNlCount() + 1);
+ cpd.did_newline = true;
+ }
+ }
+ else if (!ctx.more())
+ {
+ // unexpected end of file
+ ctx.restore();
+ return(false);
+ }
+ else if (ch == '+') // 43
+ {
+ pc.SetType(CT_COMMENT);
+ d_level++;
+
+ while ( d_level > 0
+ && ctx.more())
+ {
+ if ( (ctx.peek() == '+') // 43
+ && (ctx.peek(1) == '/')) // 47
+ {
+ pc.Str().append(ctx.get()); // store the '+'
+ pc.Str().append(ctx.get()); // store the '/'
+ d_level--;
+ continue;
+ }
+
+ if ( (ctx.peek() == '/') // 47
+ && (ctx.peek(1) == '+')) // 43
+ {
+ pc.Str().append(ctx.get()); // store the '/'
+ pc.Str().append(ctx.get()); // store the '+'
+ d_level++;
+ continue;
+ }
+ ch = ctx.get();
+ pc.Str().append(ch);
+
+ if ( (ch == '\n')
+ || (ch == '\r'))
+ {
+ pc.SetType(CT_COMMENT_MULTI);
+ pc.SetNlCount(pc.GetNlCount() + 1);
+
+ if (ch == '\r')
+ {
+ if (ctx.peek() == '\n')
+ {
+ ++LE_COUNT(CRLF);
+ pc.Str().append(ctx.get()); // store the '\n'
+ }
+ else
+ {
+ ++LE_COUNT(CR);
+ }
+ }
+ else
+ {
+ ++LE_COUNT(LF);
+ }
+ }
+ }
+ }
+ else // must be '/ *'
+ {
+ pc.SetType(CT_COMMENT);
+
+ while (ctx.more())
+ {
+ if ( (ctx.peek() == '*') // 43
+ && (ctx.peek(1) == '/')) // 47
+ {
+ pc.Str().append(ctx.get()); // store the '*'
+ pc.Str().append(ctx.get()); // store the '/'
+
+ TokenInfo ss;
+ ctx.save(ss);
+ size_t oldsize = pc.GetStr().size();
+
+ // If there is another C comment right after this one, combine them
+ while ( (ctx.peek() == ' ') // 32
+ || (ctx.peek() == '\t')) // tab
+ {
+ pc.Str().append(ctx.get());
+ }
+
+ if ( (ctx.peek() != '/')
+ || (ctx.peek(1) != '*'))
+ {
+ // undo the attempt to join
+ ctx.restore(ss);
+ pc.Str().resize(oldsize);
+ break;
+ }
+ }
+ ch = ctx.get();
+ pc.Str().append(ch);
+
+ if ( (ch == '\n')
+ || (ch == '\r'))
+ {
+ pc.SetType(CT_COMMENT_MULTI);
+ pc.SetNlCount(pc.GetNlCount() + 1);
+
+ if (ch == '\r')
+ {
+ if (ctx.peek() == '\n')
+ {
+ ++LE_COUNT(CRLF);
+ pc.Str().append(ctx.get()); // store the '\n'
+ }
+ else
+ {
+ ++LE_COUNT(CR);
+ }
+ }
+ else
+ {
+ ++LE_COUNT(LF);
+ }
+ }
+ }
+ }
+
+ if (cpd.unc_off)
+ {
+ bool found_enable_marker = (find_enable_processing_comment_marker(pc.GetStr()) >= 0);
+
+ if (found_enable_marker)
+ {
+ const auto &ontext = options::enable_processing_cmt();
+
+ LOG_FMT(LBCTRL, "%s(%d): Found '%s' on line %zu\n",
+ __func__, __LINE__, ontext.c_str(), pc.GetOrigLine());
+ cpd.unc_off = false;
+ }
+ }
+ else
+ {
+ auto position_disable_processing_cmt = find_disable_processing_comment_marker(pc.GetStr());
+ bool found_disable_marker = (position_disable_processing_cmt >= 0);
+
+ if (found_disable_marker)
+ {
+ /**
+ * the user may wish to disable processing part of a multiline comment,
+ * in which case we'll handle at a late time. Check to see if processing
+ * is re-enabled elsewhere in this comment
+ */
+ auto position_enable_processing_cmt = find_enable_processing_comment_marker(pc.GetStr());
+
+ if (position_enable_processing_cmt < position_disable_processing_cmt)
+ {
+ const auto &offtext = options::disable_processing_cmt();
+
+ LOG_FMT(LBCTRL, "%s(%d): Found '%s' on line %zu\n",
+ __func__, __LINE__, offtext.c_str(), pc.GetOrigLine());
+ cpd.unc_off = true;
+ // Issue #842
+ cpd.unc_off_used = true;
+ }
+ }
+ }
+ return(true);
+} // parse_comment
+
+
+static bool parse_code_placeholder(TokenContext &ctx, Chunk &pc)
+{
+ if ( (ctx.peek() != '<')
+ || (ctx.peek(1) != '#'))
+ {
+ return(false);
+ }
+ ctx.save();
+
+ // account for opening two chars '<#'
+ pc.Str() = ctx.get();
+ pc.Str().append(ctx.get());
+
+ // grab everything until '#>', fail if not found.
+ size_t last1 = 0;
+
+ while (ctx.more())
+ {
+ size_t last2 = last1;
+ last1 = ctx.get();
+ pc.Str().append(last1);
+
+ if ( (last2 == '#') // 35
+ && (last1 == '>')) // 62
+ {
+ pc.SetType(CT_WORD);
+ return(true);
+ }
+ }
+ ctx.restore();
+ return(false);
+}
+
+
+static void parse_suffix(TokenContext &ctx, Chunk &pc, bool forstring = false)
+{
+ if (CharTable::IsKw1(ctx.peek()))
+ {
+ size_t slen = 0;
+ size_t oldsize = pc.GetStr().size();
+
+ // don't add the suffix if we see L" or L' or S"
+ size_t p1 = ctx.peek();
+ size_t p2 = ctx.peek(1);
+
+ if ( forstring
+ && ( ( (p1 == 'L') // 76
+ && ( (p2 == '"') // 34
+ || (p2 == '\''))) // 39
+ || ( (p1 == 'S') // 83
+ && (p2 == '"')))) // 34
+ {
+ return;
+ }
+ TokenInfo ss;
+ ctx.save(ss);
+
+ while ( ctx.more()
+ && CharTable::IsKw2(ctx.peek()))
+ {
+ slen++;
+ pc.Str().append(ctx.get());
+ }
+
+ if ( forstring
+ && slen >= 4
+ && ( pc.GetStr().startswith("PRI", oldsize)
+ || pc.GetStr().startswith("SCN", oldsize)))
+ {
+ ctx.restore(ss);
+ pc.Str().resize(oldsize);
+ }
+ }
+} // parse_suffix
+
+
+static bool is_bin(int ch)
+{
+ return( (ch == '0') // 48
+ || (ch == '1')); // 49
+}
+
+
+static bool is_bin_(int ch)
+{
+ return( is_bin(ch)
+ || ch == '_' // 95
+ || ch == '\''); // 39
+}
+
+
+static bool is_oct(int ch)
+{
+ return( (ch >= '0') // 48
+ && (ch <= '7')); // 55
+}
+
+
+static bool is_oct_(int ch)
+{
+ return( is_oct(ch)
+ || ch == '_' // 95
+ || ch == '\''); // 39
+}
+
+
+static bool is_dec(int ch)
+{
+ return( (ch >= '0') // 48
+ && (ch <= '9')); // 57
+}
+
+
+static bool is_dec_(int ch)
+{
+ // number separators: JAVA: "_", C++14: "'"
+ return( is_dec(ch)
+ || (ch == '_') // 95
+ || (ch == '\'')); // 39
+}
+
+
+static bool is_hex(int ch)
+{
+ return( ( (ch >= '0') // 48
+ && (ch <= '9')) // 57
+ || ( (ch >= 'a') // 97
+ && (ch <= 'f')) // 102
+ || ( (ch >= 'A') // 65
+ && (ch <= 'F'))); // 70
+}
+
+
+static bool is_hex_(int ch)
+{
+ return( is_hex(ch)
+ || ch == '_' // 95
+ || ch == '\''); // 39
+}
+
+
+static bool parse_number(TokenContext &ctx, Chunk &pc)
+{
+ /*
+ * A number must start with a digit or a dot, followed by a digit
+ * (signs handled elsewhere)
+ */
+ if ( !is_dec(ctx.peek())
+ && ( (ctx.peek() != '.') // 46
+ || !is_dec(ctx.peek(1))))
+ {
+ return(false);
+ }
+ bool is_float = (ctx.peek() == '.'); // 46
+
+ if ( is_float
+ && (ctx.peek(1) == '.')) // make sure it isn't '..' 46
+ {
+ return(false);
+ }
+ /*
+ * Check for Hex, Octal, or Binary
+ * Note that only D, C++14 and Pawn support binary
+ * Fixes the issue # 1591
+ * In c# the numbers starting with 0 are not treated as octal numbers.
+ */
+ bool did_hex = false;
+
+ if ( ctx.peek() == '0' // 48
+ && !language_is_set(LANG_CS))
+ {
+ size_t ch;
+ Chunk pc_temp;
+
+ pc.Str().append(ctx.get()); // store the '0'
+ pc_temp.Str().append('0');
+
+ // MS constant might have an "h" at the end. Look for it
+ ctx.save();
+
+ while ( ctx.more()
+ && CharTable::IsKw2(ctx.peek()))
+ {
+ ch = ctx.get();
+ pc_temp.Str().append(ch);
+ }
+ ch = pc_temp.GetStr()[pc_temp.Len() - 1];
+ ctx.restore();
+ LOG_FMT(LBCTRL, "%s(%d): pc_temp:%s\n", __func__, __LINE__, pc_temp.Text());
+
+ if (ch == 'h') // TODO can we combine this in analyze_character 104
+ {
+ // we have an MS hexadecimal number with "h" at the end
+ LOG_FMT(LBCTRL, "%s(%d): MS hexadecimal number\n", __func__, __LINE__);
+ did_hex = true;
+
+ do
+ {
+ pc.Str().append(ctx.get()); // store the rest
+ } while (is_hex_(ctx.peek()));
+
+ pc.Str().append(ctx.get()); // store the h
+ LOG_FMT(LBCTRL, "%s(%d): pc:%s\n", __func__, __LINE__, pc.Text());
+ }
+ else
+ {
+ switch (unc_toupper(ctx.peek()))
+ {
+ case 'X': // hex
+ did_hex = true;
+
+ do
+ {
+ pc.Str().append(ctx.get()); // store the 'x' and then the rest
+ } while (is_hex_(ctx.peek()));
+
+ break;
+
+ case 'B': // binary
+
+ do
+ {
+ pc.Str().append(ctx.get()); // store the 'b' and then the rest
+ } while (is_bin_(ctx.peek()));
+
+ break;
+
+ case '0': // octal or decimal
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+
+ do
+ {
+ pc.Str().append(ctx.get());
+ } while (is_oct_(ctx.peek()));
+
+ break;
+
+ default:
+ // either just 0 or 0.1 or 0UL, etc
+ break;
+ } // switch
+ }
+ }
+ else
+ {
+ // Regular int or float
+ while (is_dec_(ctx.peek()))
+ {
+ pc.Str().append(ctx.get());
+ }
+ }
+
+ // Check if we stopped on a decimal point & make sure it isn't '..'
+ if ( (ctx.peek() == '.') // 46
+ && (ctx.peek(1) != '.')) // 46
+ {
+ // Issue #1265, 5.clamp()
+ TokenInfo ss;
+ ctx.save(ss);
+
+ while ( ctx.more()
+ && CharTable::IsKw2(ctx.peek(1)))
+ {
+ // skip characters to check for paren open
+ ctx.get();
+ }
+
+ if (ctx.peek(1) == '(') // 40
+ {
+ ctx.restore(ss);
+ pc.SetType(CT_NUMBER);
+ return(true);
+ }
+ else
+ {
+ ctx.restore(ss);
+ }
+ pc.Str().append(ctx.get());
+ is_float = true;
+
+ if (did_hex)
+ {
+ while (is_hex_(ctx.peek()))
+ {
+ pc.Str().append(ctx.get());
+ }
+ }
+ else
+ {
+ while (is_dec_(ctx.peek()))
+ {
+ pc.Str().append(ctx.get());
+ }
+ }
+ }
+ /*
+ * Check exponent
+ * Valid exponents per language (not that it matters):
+ * C/C++/D/Java: eEpP
+ * C#/Pawn: eE
+ */
+ size_t tmp = unc_toupper(ctx.peek());
+
+ if ( (tmp == 'E') // 69
+ || (tmp == 'P')) // 80
+ {
+ is_float = true;
+ pc.Str().append(ctx.get());
+
+ if ( (ctx.peek() == '+') // 43
+ || (ctx.peek() == '-')) // 45
+ {
+ pc.Str().append(ctx.get());
+ }
+
+ while (is_dec_(ctx.peek()))
+ {
+ pc.Str().append(ctx.get());
+ }
+ }
+
+ /*
+ * Check the suffixes
+ * Valid suffixes per language (not that it matters):
+ * Integer Float
+ * C/C++: uUlL64 lLfF
+ * C#: uUlL fFdDMm
+ * D: uUL ifFL
+ * Java: lL fFdD
+ * Pawn: (none) (none)
+ *
+ * Note that i, f, d, and m only appear in floats.
+ */
+ while (1)
+ {
+ size_t tmp2 = unc_toupper(ctx.peek());
+
+ // https://en.cppreference.com/w/cpp/language/floating_literal
+ if ( (tmp2 == 'I') // 73
+ || (tmp2 == 'F') // 70
+ || (tmp2 == 'D') // 68
+ || (tmp2 == 'M')) // 77
+ {
+ // is a decimal point found? Issue #4027
+ const char *test_it = pc.Text();
+ size_t test_long = strlen(test_it);
+ bool point_found = false;
+
+ for (size_t ind = 0; ind < test_long; ind++)
+ {
+ if (test_it[ind] == '.')
+ {
+ point_found = true;
+ break;
+ }
+ }
+
+ if (point_found)
+ {
+ is_float = true;
+ }
+ else
+ {
+ // append the char(s) until is not IsKw2
+ while (ctx.more())
+ {
+ size_t ch = ctx.peek();
+
+ if (CharTable::IsKw2(ch))
+ {
+ pc.Str().append(ctx.get());
+ }
+ else
+ {
+ break;
+ }
+ }
+ pc.SetType(CT_WORD);
+ return(true);
+ }
+ }
+ else if ( (tmp2 != 'L') // 76
+ && (tmp2 != 'U')) // 85
+ {
+ break;
+ }
+ pc.Str().append(ctx.get());
+ }
+
+ // skip the Microsoft-specific '8' suffix
+ if ((ctx.peek() == '8')) // 56
+ {
+ pc.Str().append(ctx.get());
+ }
+
+ // skip the Microsoft-specific '16', '32' and '64' suffix
+ if ( ( (ctx.peek() == '1') // 49
+ && (ctx.peek(1) == '6')) // 54
+ || ( (ctx.peek() == '3') // 51
+ && (ctx.peek(1) == '2')) // 50
+ || ( (ctx.peek() == '6') // 54
+ && (ctx.peek(1) == '4'))) // 52
+ {
+ pc.Str().append(ctx.get());
+ pc.Str().append(ctx.get());
+ }
+
+ // skip the Microsoft-specific '128' suffix
+ if (( (ctx.peek() == '1') // 49
+ && (ctx.peek(1) == '2') // 50
+ && (ctx.peek(2) == '8'))) // 56
+ {
+ pc.Str().append(ctx.get());
+ pc.Str().append(ctx.get());
+ pc.Str().append(ctx.get());
+ }
+ pc.SetType(is_float ? CT_NUMBER_FP : CT_NUMBER);
+
+ /*
+ * If there is anything left, then we are probably dealing with garbage or
+ * some sick macro junk. Eat it.
+ */
+ parse_suffix(ctx, pc);
+
+ return(true);
+} // parse_number
+
+
+static bool parse_string(TokenContext &ctx, Chunk &pc, size_t quote_idx, bool allow_escape)
+{
+ log_rule_B("string_escape_char");
+ const size_t escape_char = options::string_escape_char();
+
+ log_rule_B("string_escape_char2");
+ const size_t escape_char2 = options::string_escape_char2();
+
+ log_rule_B("string_replace_tab_chars");
+ const bool should_escape_tabs = ( allow_escape
+ && options::string_replace_tab_chars()
+ && language_is_set(LANG_ALLC));
+
+ pc.Str().clear();
+
+ while (quote_idx-- > 0)
+ {
+ pc.Str().append(ctx.get());
+ }
+ pc.SetType(CT_STRING);
+ const size_t termination_character = CharTable::Get(ctx.peek()) & 0xff;
+
+ pc.Str().append(ctx.get()); // store the "
+
+ bool escaped = false;
+
+ while (ctx.more())
+ {
+ const size_t ch = ctx.get();
+
+ // convert char 9 (\t) to chars \t
+ if ( (ch == '\t')
+ && should_escape_tabs)
+ {
+ const size_t lastcol = ctx.c.col - 1;
+ ctx.c.col = lastcol + 2;
+ pc.Str().append(escape_char);
+ pc.Str().append('t');
+ continue;
+ }
+ pc.Str().append(ch);
+
+ if (ch == '\n')
+ {
+ pc.SetNlCount(pc.GetNlCount() + 1);
+ pc.SetType(CT_STRING_MULTI);
+ }
+ else if ( ch == '\r'
+ && ctx.peek() != '\n')
+ {
+ pc.Str().append(ctx.get());
+ pc.SetNlCount(pc.GetNlCount() + 1);
+ pc.SetType(CT_STRING_MULTI);
+ }
+
+ // if last char in prev loop was escaped the one in the current loop isn't
+ if (escaped)
+ {
+ escaped = false;
+ continue;
+ }
+
+ // see if the current char is a escape char
+ if (allow_escape)
+ {
+ if (ch == escape_char)
+ {
+ escaped = (escape_char != 0);
+ continue;
+ }
+
+ if ( ch == escape_char2
+ && (ctx.peek() == termination_character))
+ {
+ escaped = allow_escape;
+ continue;
+ }
+ }
+
+ if (ch == termination_character)
+ {
+ break;
+ }
+ }
+ parse_suffix(ctx, pc, true);
+ return(true);
+} // parse_string
+
+enum cs_string_t
+{
+ CS_STRING_NONE = 0,
+ CS_STRING_STRING = 1 << 0, // is any kind of string
+ CS_STRING_VERBATIM = 1 << 1, // @"" style string
+ CS_STRING_INTERPOLATED = 1 << 2, // $"" or $@"" style string
+};
+
+static cs_string_t operator|=(cs_string_t &value, cs_string_t other)
+{
+ return(value = static_cast<cs_string_t>(value | other));
+}
+
+
+static cs_string_t parse_cs_string_start(TokenContext &ctx, Chunk &pc)
+{
+ cs_string_t stringType = CS_STRING_NONE;
+ int offset = 0;
+
+ if (ctx.peek(offset) == '$') // 36
+ {
+ stringType |= CS_STRING_INTERPOLATED;
+ ++offset;
+ }
+
+ if (ctx.peek(offset) == '@') // 64
+ {
+ stringType |= CS_STRING_VERBATIM;
+ ++offset;
+ }
+
+ if (ctx.peek(offset) == '"') // 34
+ {
+ stringType |= CS_STRING_STRING;
+
+ pc.SetType(CT_STRING);
+
+ for (int i = 0; i <= offset; ++i)
+ {
+ pc.Str().append(ctx.get());
+ }
+ }
+ else
+ {
+ stringType = CS_STRING_NONE;
+ }
+ return(stringType);
+} // parse_cs_string_start
+
+
+struct CsStringParseState
+{
+ cs_string_t type;
+ int braceDepth;
+
+
+ CsStringParseState(cs_string_t stringType)
+ {
+ type = stringType;
+ braceDepth = 0;
+ }
+};
+
+
+/**
+ * C# strings are complex enough (mostly due to interpolation and nesting) that they need a custom parser.
+ */
+static bool parse_cs_string(TokenContext &ctx, Chunk &pc)
+{
+ cs_string_t stringType = parse_cs_string_start(ctx, pc);
+
+ if (stringType == CS_STRING_NONE)
+ {
+ return(false);
+ }
+ // an interpolated string can contain {expressions}, which can contain $"strings", which in turn
+ // can contain {expressions}, so we must track both as they are interleaved, in order to properly
+ // parse the outermost string.
+
+ std::stack<CsStringParseState> parseState; // each entry is a nested string
+
+ parseState.push(CsStringParseState(stringType));
+
+ log_rule_B("string_replace_tab_chars");
+ bool should_escape_tabs = options::string_replace_tab_chars();
+
+ while (ctx.more())
+ {
+ if (parseState.top().braceDepth > 0)
+ {
+ // all we can do when in an expr is look for expr close with }, or a new string opening. must do this first
+ // so we can peek and potentially consume chars for new string openings, before the ch=get() happens later,
+ // which is needed for newline processing.
+
+ if (ctx.peek() == '}') // 125
+ {
+ pc.Str().append(ctx.get());
+
+ if (ctx.peek() == '}') // 125
+ {
+ pc.Str().append(ctx.get()); // in interpolated string, `}}` is escape'd `}`
+ }
+ else
+ {
+ --parseState.top().braceDepth;
+ }
+ continue;
+ }
+ stringType = parse_cs_string_start(ctx, pc);
+
+ if (stringType != CS_STRING_NONE)
+ {
+ parseState.push(CsStringParseState(stringType));
+ continue;
+ }
+ }
+ int lastcol = ctx.c.col;
+ int ch = ctx.get();
+
+ pc.Str().append(ch);
+
+ if (ch == '\n')
+ {
+ pc.SetType(CT_STRING_MULTI);
+ pc.SetNlCount(pc.GetNlCount() + 1);
+ }
+ else if (ch == '\r')
+ {
+ pc.SetType(CT_STRING_MULTI);
+ }
+ else if (parseState.top().braceDepth > 0)
+ {
+ // do nothing. if we're in a brace, we only want the newline handling, and skip the rest.
+ }
+ else if ( (ch == '\t')
+ && should_escape_tabs)
+ {
+ if (parseState.top().type & CS_STRING_VERBATIM)
+ {
+ if (!cpd.warned_unable_string_replace_tab_chars)
+ {
+ cpd.warned_unable_string_replace_tab_chars = true;
+
+ log_rule_B("warn_level_tabs_found_in_verbatim_string_literals");
+ log_sev_t warnlevel = (log_sev_t)options::warn_level_tabs_found_in_verbatim_string_literals();
+
+ /*
+ * a tab char can't be replaced with \\t because escapes don't
+ * work in here-strings. best we can do is warn.
+ */
+ LOG_FMT(warnlevel, "%s(%d): %s: orig line is %zu, orig col is %zu, Detected non-replaceable tab char in literal string\n",
+ __func__, __LINE__, cpd.filename.c_str(), pc.GetOrigLine(), pc.GetOrigCol());
+ LOG_FMT(warnlevel, "%s(%d): Warning is given if doing tab-to-\\t replacement and we have found one in a C# verbatim string literal.\n",
+ __func__, __LINE__);
+
+ if (warnlevel < LWARN)
+ {
+ // TODO: replace the code ?? cpd.error_count++;
+ }
+ }
+ }
+ else
+ {
+ ctx.c.col = lastcol + 2;
+ pc.Str().pop_back(); // remove \t
+ pc.Str().append("\\t");
+
+ continue;
+ }
+ }
+ else if ( ch == '\\'
+ && !(parseState.top().type & CS_STRING_VERBATIM))
+ {
+ // catch escaped quote in order to avoid ending string (but also must handle \\ to avoid accidental 'escape' seq of `\\"`)
+ if ( ctx.peek() == '"' // 34
+ || ctx.peek() == '\\') // 92
+ {
+ pc.Str().append(ctx.get());
+ }
+ }
+ else if (ch == '"') // 34
+ {
+ if ( (parseState.top().type & CS_STRING_VERBATIM)
+ && (ctx.peek() == '"')) // 34
+ {
+ // in verbatim string, `""` is escape'd `"`
+ pc.Str().append(ctx.get());
+ }
+ else
+ {
+ // end of string
+ parseState.pop();
+
+ if (parseState.empty())
+ {
+ break;
+ }
+ }
+ }
+ else if (parseState.top().type & CS_STRING_INTERPOLATED)
+ {
+ if (ch == '{') // 123
+ {
+ if (ctx.peek() == '{') // 123
+ {
+ pc.Str().append(ctx.get()); // in interpolated string, `{{` is escape'd `{`
+ }
+ else
+ {
+ ++parseState.top().braceDepth;
+ }
+ }
+ }
+ }
+ return(true);
+} // parse_cs_string
+
+
+static void parse_verbatim_string(TokenContext &ctx, Chunk &pc)
+{
+ pc.SetType(CT_STRING);
+
+ // consume the initial """
+ pc.Str() = ctx.get();
+ pc.Str().append(ctx.get());
+ pc.Str().append(ctx.get());
+
+ // go until we hit a zero (end of file) or a """
+ while (ctx.more())
+ {
+ size_t ch = ctx.get();
+ pc.Str().append(ch);
+
+ if ( (ch == '"') // 34
+ && (ctx.peek() == '"') // 34
+ && (ctx.peek(1) == '"')) // 34
+ {
+ pc.Str().append(ctx.get());
+ pc.Str().append(ctx.get());
+ break;
+ }
+
+ if ( (ch == '\n')
+ || (ch == '\r'))
+ {
+ pc.SetType(CT_STRING_MULTI);
+ pc.SetNlCount(pc.GetNlCount() + 1);
+ }
+ }
+}
+
+
+static bool tag_compare(const deque<int> &d, size_t a_idx, size_t b_idx, size_t len)
+{
+ if (a_idx != b_idx)
+ {
+ while (len-- > 0)
+ {
+ if (d[a_idx] != d[b_idx])
+ {
+ return(false);
+ }
+ }
+ }
+ return(true);
+}
+
+
+static bool parse_cr_string(TokenContext &ctx, Chunk &pc, size_t q_idx)
+{
+ size_t tag_idx = ctx.c.idx + q_idx + 1;
+ size_t tag_len = 0;
+
+ ctx.save();
+
+ // Copy the prefix + " to the string
+ pc.Str().clear();
+ int cnt = q_idx + 1;
+
+ while (cnt--)
+ {
+ pc.Str().append(ctx.get());
+ }
+
+ // Add the tag and get the length of the tag
+ while ( ctx.more()
+ && (ctx.peek() != '('))
+ {
+ tag_len++;
+ pc.Str().append(ctx.get());
+ }
+
+ if (ctx.peek() != '(')
+ {
+ ctx.restore();
+ return(false);
+ }
+ pc.SetType(CT_STRING);
+
+ while (ctx.more())
+ {
+ if ( (ctx.peek() == ')') // 41
+ && (ctx.peek(tag_len + 1) == '"') // 34
+ && tag_compare(ctx.data, tag_idx, ctx.c.idx + 1, tag_len))
+ {
+ cnt = tag_len + 2; // for the )"
+
+ while (cnt--)
+ {
+ pc.Str().append(ctx.get());
+ }
+ parse_suffix(ctx, pc);
+ return(true);
+ }
+
+ if (ctx.peek() == '\n')
+ {
+ pc.Str().append(ctx.get());
+ pc.SetNlCount(pc.GetNlCount() + 1);
+ pc.SetType(CT_STRING_MULTI);
+ }
+ else
+ {
+ pc.Str().append(ctx.get());
+ }
+ }
+ ctx.restore();
+ return(false);
+} // parse_cr_string
+
+
+/**
+ * Count the number of characters in a word.
+ * The first character is already valid for a keyword
+ *
+ * @param pc The structure to update, str is an input.
+ * @return Whether a word was parsed (always true)
+ */
+static bool parse_word(TokenContext &ctx, Chunk &pc, bool skipcheck)
+{
+ static UncText intr_txt("@interface");
+
+ // The first character is already valid
+ pc.Str().clear();
+ pc.Str().append(ctx.get());
+
+ while (ctx.more())
+ {
+ size_t ch = ctx.peek();
+
+ if (CharTable::IsKw2(ch))
+ {
+ pc.Str().append(ctx.get());
+ }
+ else if ( (ch == '\\') // 92
+ && (unc_tolower(ctx.peek(1)) == 'u')) // 117
+ {
+ pc.Str().append(ctx.get());
+ pc.Str().append(ctx.get());
+ skipcheck = true;
+ }
+ else
+ {
+ break;
+ }
+
+ // HACK: Non-ASCII character are only allowed in identifiers
+ if (ch > 0x7f)
+ {
+ skipcheck = true;
+ }
+ }
+ pc.SetType(CT_WORD);
+
+ if (skipcheck)
+ {
+ return(true);
+ }
+
+ // Detect pre-processor functions now
+ if ( cpd.in_preproc == CT_PP_DEFINE
+ && cpd.preproc_ncnl_count == 1)
+ {
+ if (ctx.peek() == '(') // 40
+ {
+ pc.SetType(CT_MACRO_FUNC);
+ }
+ else
+ {
+ pc.SetType(CT_MACRO);
+
+ log_rule_B("pp_ignore_define_body");
+
+ if (options::pp_ignore_define_body())
+ {
+ /*
+ * We are setting the PP_IGNORE preproc state because the following
+ * chunks are part of the macro body and will have to be ignored.
+ */
+ cpd.in_preproc = CT_PP_IGNORE;
+ }
+ }
+ }
+ else
+ {
+ // '@interface' is reserved, not an interface itself
+ if ( language_is_set(LANG_JAVA)
+ && pc.GetStr().startswith("@")
+ && !pc.GetStr().equals(intr_txt))
+ {
+ pc.SetType(CT_ANNOTATION);
+ }
+ else
+ {
+ // Turn it into a keyword now
+ // Issue #1460 will return "COMMENT_CPP"
+ pc.SetType(find_keyword_type(pc.Text(), pc.GetStr().size()));
+
+ /* Special pattern: if we're trying to redirect a preprocessor directive to PP_IGNORE,
+ * then ensure we're actually part of a preprocessor before doing the swap, or we'll
+ * end up with a function named 'define' as PP_IGNORE. This is necessary because with
+ * the config 'set' feature, there's no way to do a pair of tokens as a word
+ * substitution. */
+ if ( pc.GetType() == CT_PP_IGNORE
+ && !cpd.in_preproc)
+ {
+ pc.SetType(find_keyword_type(pc.Text(), pc.GetStr().size()));
+ }
+ else if (pc.GetType() == CT_COMMENT_CPP) // Issue #1460
+ {
+ size_t ch;
+ bool is_cs = language_is_set(LANG_CS);
+
+ // read until EOL
+ while (true)
+ {
+ int bs_cnt = 0;
+
+ while (ctx.more())
+ {
+ ch = ctx.peek();
+
+ if ( (ch == '\r')
+ || (ch == '\n'))
+ {
+ break;
+ }
+
+ if ( (ch == '\\') // 92
+ && !is_cs) // backslashes aren't special in comments in C#
+ {
+ bs_cnt++;
+ }
+ else
+ {
+ bs_cnt = 0;
+ }
+ pc.Str().append(ctx.get());
+ }
+
+ /*
+ * If we hit an odd number of backslashes right before the newline,
+ * then we keep going.
+ */
+ if ( ((bs_cnt & 1) == 0)
+ || !ctx.more())
+ {
+ break;
+ }
+
+ if (ctx.peek() == '\r')
+ {
+ pc.Str().append(ctx.get());
+ }
+
+ if (ctx.peek() == '\n')
+ {
+ pc.Str().append(ctx.get());
+ }
+ pc.SetNlCount(pc.GetNlCount() + 1);
+ cpd.did_newline = true;
+ }
+ // Store off the end column
+ pc.SetOrigColEnd(ctx.c.col);
+ }
+ }
+ }
+ return(true);
+} // parse_word
+
+
+static size_t parse_attribute_specifier_sequence(TokenContext &ctx)
+{
+ size_t nested = 0;
+ size_t offset = 0;
+ size_t parens = 0;
+ auto ch1 = ctx.peek(offset++);
+
+ while (ch1)
+ {
+ auto ch2 = ctx.peek(offset++);
+
+ while ( ch2 == ' ' // 32
+ || ch2 == '\n'
+ || ch2 == '\r'
+ || ch2 == '\t')
+ {
+ ch2 = ctx.peek(offset++);
+ }
+
+ if ( nested == 0
+ && ch2 != '[') // 91
+ {
+ break;
+ }
+
+ if (ch1 == '(') // 40
+ {
+ ++parens;
+ ch1 = ch2;
+ continue;
+ }
+
+ if (ch1 == ')') // 41
+ {
+ if (parens == 0)
+ {
+ break;
+ }
+ --parens;
+ ch1 = ch2;
+ continue;
+ }
+
+ if ( ch1 != '['
+ && ch1 != ']')
+ {
+ ch1 = ch2;
+ continue;
+ }
+
+ if (ch2 != ch1)
+ {
+ if (parens == 0)
+ {
+ break;
+ }
+ ch1 = ch2;
+ continue;
+ }
+
+ if (ch1 == '[') // 91
+ {
+ if ( nested != 0
+ && parens == 0)
+ {
+ break;
+ }
+ ++nested;
+ }
+ else if (--nested == 0)
+ {
+ return(offset);
+ }
+ ch1 = ctx.peek(offset++);
+ }
+ return(0);
+} // parse_attribute_specifier_sequence
+
+
+static bool extract_attribute_specifier_sequence(TokenContext &ctx, Chunk &pc, size_t length)
+{
+ pc.Str().clear();
+
+ while (length--)
+ {
+ pc.Str().append(ctx.get());
+ }
+ pc.SetType(CT_ATTRIBUTE);
+ return(true);
+} // extract_attribute_specifier_sequence
+
+
+static bool parse_whitespace(TokenContext &ctx, Chunk &pc)
+{
+ size_t nl_count = 0;
+ size_t ch = 0;
+
+ // REVISIT: use a better whitespace detector?
+ while ( ctx.more()
+ && unc_isspace(ctx.peek()))
+ {
+ int lastcol = ctx.c.col;
+ ch = ctx.get(); // throw away the whitespace char
+
+ switch (ch)
+ {
+ case '\r':
+
+ if (ctx.expect('\n'))
+ {
+ // CRLF ending
+ ++LE_COUNT(CRLF);
+ }
+ else
+ {
+ // CR ending
+ ++LE_COUNT(CR);
+ }
+ nl_count++;
+ pc.SetOrigPrevSp(0);
+ break;
+
+ case '\n':
+ // LF ending
+ ++LE_COUNT(LF);
+ nl_count++;
+ pc.SetOrigPrevSp(0);
+ break;
+
+ case '\t':
+ pc.SetOrigPrevSp(pc.GetOrigPrevSp() + ctx.c.col - lastcol);
+ break;
+
+ case ' ':
+ pc.SetOrigPrevSp(pc.GetOrigPrevSp() + 1);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ if (ch != 0)
+ {
+ pc.Str().clear();
+ pc.SetType(nl_count ? CT_NEWLINE : CT_WHITESPACE);
+ pc.SetNlCount(nl_count);
+ pc.SetAfterTab((ctx.c.last_ch == '\t'));
+ return(true);
+ }
+ return(false);
+} // parse_whitespace
+
+
+static bool parse_bs_newline(TokenContext &ctx, Chunk &pc)
+{
+ ctx.save();
+ ctx.get(); // skip the '\'
+
+ size_t ch;
+
+ while ( ctx.more()
+ && unc_isspace(ch = ctx.peek()))
+ {
+ ctx.get();
+
+ if ( (ch == '\r')
+ || (ch == '\n'))
+ {
+ if (ch == '\r')
+ {
+ ctx.expect('\n');
+ }
+ pc.SetType(CT_NL_CONT);
+ pc.Str() = "\\";
+ pc.SetNlCount(1);
+ return(true);
+ }
+ }
+ ctx.restore();
+ return(false);
+}
+
+
+static bool parse_newline(TokenContext &ctx)
+{
+ ctx.save();
+
+ // Eat whitespace
+ while ( (ctx.peek() == ' ') // 32
+ || (ctx.peek() == '\t'))
+ {
+ ctx.get();
+ }
+
+ if ( (ctx.peek() == '\r')
+ || (ctx.peek() == '\n'))
+ {
+ if (!ctx.expect('\n'))
+ {
+ ctx.get();
+ ctx.expect('\n');
+ }
+ return(true);
+ }
+ ctx.restore();
+ return(false);
+}
+
+
+static void parse_pawn_pattern(TokenContext &ctx, Chunk &pc, E_Token tt)
+{
+ pc.Str().clear();
+ pc.SetType(tt);
+
+ while (!unc_isspace(ctx.peek()))
+ {
+ // end the pattern on an escaped newline
+ if (ctx.peek() == '\\') // 92
+ {
+ size_t ch = ctx.peek(1);
+
+ if ( (ch == '\n')
+ || (ch == '\r'))
+ {
+ break;
+ }
+ }
+ pc.Str().append(ctx.get());
+ }
+}
+
+
+static bool parse_off_newlines(TokenContext &ctx, Chunk &pc)
+{
+ size_t nl_count = 0;
+
+ // Parse off newlines/blank lines
+ while (parse_newline(ctx))
+ {
+ nl_count++;
+ }
+
+ if (nl_count > 0)
+ {
+ pc.SetNlCount(nl_count);
+ pc.SetType(CT_NEWLINE);
+ return(true);
+ }
+ return(false);
+}
+
+
+static bool parse_macro(TokenContext &ctx, Chunk &pc, const Chunk *prev_pc)
+{
+ if (parse_off_newlines(ctx, pc))
+ {
+ return(true);
+ }
+
+ if (parse_comment(ctx, pc)) // allow CT_COMMENT_MULTI within macros
+ {
+ return(true);
+ }
+ ctx.save();
+ pc.Str().clear();
+
+ if (prev_pc->IsNullChunk())
+ {
+ return(false);
+ }
+ bool continued = ( prev_pc->Is(CT_NL_CONT)
+ || prev_pc->Is(CT_COMMENT_MULTI));
+
+ while (ctx.more())
+ {
+ size_t pk = ctx.peek(), pk1 = ctx.peek(1);
+ bool nl = ( pk == '\n'
+ || pk == '\r');
+ bool nl_cont = ( pk == '\\' // 92
+ && ( pk1 == '\n'
+ || pk1 == '\r'));
+
+ if ( ( nl_cont
+ || ( continued
+ && nl))
+ && pc.GetStr().size() > 0)
+ {
+ pc.SetType(CT_PP_IGNORE);
+ return(true);
+ }
+ else if (nl)
+ {
+ break;
+ }
+ pc.Str().append(ctx.get());
+ }
+ pc.Str().clear();
+ ctx.restore();
+ return(false);
+} // parse_macro
+
+
+static bool parse_ignored(TokenContext &ctx, Chunk &pc)
+{
+ if (parse_off_newlines(ctx, pc))
+ {
+ return(true);
+ }
+ // See if the options::enable_processing_cmt() or #pragma endasm / #endasm text is on this line
+ ctx.save();
+ pc.Str().clear();
+
+ while ( ctx.more()
+ && (ctx.peek() != '\r')
+ && (ctx.peek() != '\n'))
+ {
+ pc.Str().append(ctx.get());
+ }
+
+ if (pc.GetStr().size() == 0)
+ {
+ // end of file?
+ return(false);
+ }
+
+ // HACK: turn on if we find '#endasm' or '#pragma' and 'endasm' separated by blanks
+ if ( ( ( (pc.GetStr().find("#pragma ") >= 0)
+ || (pc.GetStr().find("#pragma ") >= 0))
+ && ( (pc.GetStr().find(" endasm") >= 0)
+ || (pc.GetStr().find(" endasm") >= 0)))
+ || (pc.GetStr().find("#endasm") >= 0))
+ {
+ cpd.unc_off = false;
+ ctx.restore();
+ pc.Str().clear();
+ return(false);
+ }
+ // Note that we aren't actually making sure this is in a comment, yet
+ log_rule_B("enable_processing_cmt");
+ const auto &ontext = options::enable_processing_cmt();
+
+ if (!ontext.empty())
+ {
+ bool found_enable_pattern = false;
+
+ if ( ontext != UNCRUSTIFY_ON_TEXT
+ && options::processing_cmt_as_regex())
+ {
+ std::wstring pc_wstring(pc.GetStr().get().cbegin(),
+ pc.GetStr().get().cend());
+ std::wregex criteria(std::wstring(ontext.cbegin(),
+ ontext.cend()));
+
+ found_enable_pattern = std::regex_search(pc_wstring.cbegin(),
+ pc_wstring.cend(),
+ criteria);
+ }
+ else
+ {
+ found_enable_pattern = (pc.GetStr().find(ontext.c_str()) >= 0);
+ }
+
+ if (!found_enable_pattern)
+ {
+ pc.SetType(CT_IGNORED);
+ return(true);
+ }
+ }
+ ctx.restore();
+
+ // parse off whitespace leading to the comment
+ if (parse_whitespace(ctx, pc))
+ {
+ pc.SetType(CT_IGNORED);
+ return(true);
+ }
+
+ // Look for the ending comment and let it pass
+ if ( parse_comment(ctx, pc)
+ && !cpd.unc_off)
+ {
+ return(true);
+ }
+ // Reset the chunk & scan to until a newline
+ pc.Str().clear();
+
+ while ( ctx.more()
+ && (ctx.peek() != '\r')
+ && (ctx.peek() != '\n'))
+ {
+ pc.Str().append(ctx.get());
+ }
+
+ if (pc.GetStr().size() > 0)
+ {
+ pc.SetType(CT_IGNORED);
+ return(true);
+ }
+ return(false);
+} // parse_ignored
+
+
+static bool parse_next(TokenContext &ctx, Chunk &pc, const Chunk *prev_pc)
+{
+ if (!ctx.more())
+ {
+ return(false);
+ }
+ // Save off the current column
+ pc.SetType(CT_NONE);
+ pc.SetOrigLine(ctx.c.row);
+ pc.SetColumn(ctx.c.col);
+ pc.SetOrigCol(ctx.c.col);
+ pc.SetNlCount(0);
+ pc.SetFlags(PCF_NONE);
+
+ // If it is turned off, we put everything except newlines into CT_UNKNOWN
+ if (cpd.unc_off)
+ {
+ if (parse_ignored(ctx, pc))
+ {
+ return(true);
+ }
+ }
+ log_rule_B("disable_processing_nl_cont");
+
+ // Parse macro blocks
+ if (options::disable_processing_nl_cont())
+ {
+ if (parse_macro(ctx, pc, prev_pc))
+ {
+ return(true);
+ }
+ }
+
+ // Parse whitespace
+ if (parse_whitespace(ctx, pc))
+ {
+ return(true);
+ }
+
+ // Handle unknown/unhandled preprocessors
+ if ( cpd.in_preproc > CT_PP_BODYCHUNK
+ && cpd.in_preproc <= CT_PP_OTHER)
+ {
+ pc.Str().clear();
+ TokenInfo ss;
+ ctx.save(ss);
+ // Chunk to a newline or comment
+ pc.SetType(CT_PREPROC_BODY);
+ size_t last = 0;
+
+ while (ctx.more())
+ {
+ size_t ch = ctx.peek();
+
+ // Fix for issue #1752
+ // Ignoring extra spaces after ' \ ' for preproc body continuations
+ if ( last == '\\' // 92
+ && ch == ' ') // 32
+ {
+ ctx.get();
+ continue;
+ }
+
+ if ( (ch == '\n')
+ || (ch == '\r'))
+ {
+ // Back off if this is an escaped newline
+ if (last == '\\') // 92
+ {
+ ctx.restore(ss);
+ pc.Str().pop_back();
+ }
+ break;
+ }
+
+ // Quit on a C or C++ comment start Issue #1966
+ if ( (ch == '/') // 47
+ && ( (ctx.peek(1) == '/') // 47
+ || (ctx.peek(1) == '*'))) // 42
+ {
+ break;
+ }
+ last = ch;
+ ctx.save(ss);
+
+ pc.Str().append(ctx.get());
+ }
+
+ if (pc.GetStr().size() > 0)
+ {
+ return(true);
+ }
+ }
+
+ // Detect backslash-newline
+ if ( (ctx.peek() == '\\') // 92
+ && parse_bs_newline(ctx, pc))
+ {
+ return(true);
+ }
+
+ // Parse comments
+ if (parse_comment(ctx, pc))
+ {
+ return(true);
+ }
+
+ // Parse code placeholders
+ if (parse_code_placeholder(ctx, pc))
+ {
+ return(true);
+ }
+
+ if (language_is_set(LANG_CS))
+ {
+ if (parse_cs_string(ctx, pc))
+ {
+ return(true);
+ }
+ }
+
+ if (language_is_set(LANG_CS | LANG_VALA))
+ {
+ // check for non-keyword identifiers such as @if @switch, etc
+ // Vala also allows numeric identifiers if prefixed with '@'
+ if ( ctx.peek() == '@' // 64
+ && ( CharTable::IsKw1(ctx.peek(1))
+ || ( language_is_set(LANG_VALA)
+ && CharTable::IsKw2(ctx.peek(1)))))
+ {
+ parse_word(ctx, pc, true);
+ return(true);
+ }
+ }
+
+ // handle VALA """ strings """
+ if ( language_is_set(LANG_VALA)
+ && (ctx.peek() == '"') // 34
+ && (ctx.peek(1) == '"') // 34
+ && (ctx.peek(2) == '"')) // 34
+ {
+ parse_verbatim_string(ctx, pc);
+ return(true);
+ }
+ /*
+ * handle C++(11) string/char literal prefixes u8|u|U|L|R including all
+ * possible combinations and optional R delimiters: R"delim(x)delim"
+ */
+ auto ch = ctx.peek();
+
+ if ( language_is_set(LANG_C | LANG_CPP)
+ && ( ch == 'u' // 117
+ || ch == 'U' // 85
+ || ch == 'R' // 82
+ || ch == 'L')) // 76
+ {
+ auto idx = size_t{};
+ auto is_real = false;
+
+ if ( ch == 'u' // 117
+ && ctx.peek(1) == '8') // 56
+ {
+ idx = 2;
+ }
+ else if ( unc_tolower(ch) == 'u' // 117
+ || ch == 'L') // 76
+ {
+ idx++;
+ }
+
+ if ( language_is_set(LANG_C | LANG_CPP)
+ && ctx.peek(idx) == 'R') // 82
+ {
+ idx++;
+ is_real = true;
+ }
+ const auto quote = ctx.peek(idx);
+
+ if (is_real)
+ {
+ if ( quote == '"' // 34
+ && parse_cr_string(ctx, pc, idx))
+ {
+ return(true);
+ }
+ }
+ else if ( ( quote == '"' // 34
+ || quote == '\'') // 39
+ && parse_string(ctx, pc, idx, true))
+ {
+ return(true);
+ }
+ }
+
+ // PAWN specific stuff
+ if (language_is_set(LANG_PAWN))
+ {
+ if ( cpd.preproc_ncnl_count == 1
+ && ( cpd.in_preproc == CT_PP_DEFINE
+ || cpd.in_preproc == CT_PP_EMIT))
+ {
+ parse_pawn_pattern(ctx, pc, CT_MACRO);
+ return(true);
+ }
+
+ // Check for PAWN strings: \"hi" or !"hi" or !\"hi" or \!"hi"
+ if ( (ctx.peek() == '\\') // 92
+ || (ctx.peek() == '!')) // 33
+ {
+ if (ctx.peek(1) == '"') // 32
+ {
+ parse_string(ctx, pc, 1, (ctx.peek() == '!')); // 33
+ return(true);
+ }
+
+ if ( ( (ctx.peek(1) == '\\') // 92
+ || (ctx.peek(1) == '!')) // 33
+ && (ctx.peek(2) == '"')) // 32
+ {
+ parse_string(ctx, pc, 2, false);
+ return(true);
+ }
+ }
+
+ // handle PAWN preprocessor args %0 .. %9
+ if ( cpd.in_preproc == CT_PP_DEFINE
+ && (ctx.peek() == '%') // 37
+ && unc_isdigit(ctx.peek(1)))
+ {
+ pc.Str().clear();
+ pc.Str().append(ctx.get());
+ pc.Str().append(ctx.get());
+ pc.SetType(CT_WORD);
+ return(true);
+ }
+ }
+ // Parse strings and character constants
+
+ if (parse_number(ctx, pc))
+ {
+ return(true);
+ }
+
+ if (language_is_set(LANG_D))
+ {
+ // D specific stuff
+ if (d_parse_string(ctx, pc))
+ {
+ return(true);
+ }
+ }
+ else
+ {
+ // Not D stuff
+
+ // Check for L'a', L"abc", 'a', "abc", <abc> strings
+ ch = ctx.peek();
+ size_t ch1 = ctx.peek(1);
+
+ if ( ( ( (ch == 'L') // 76
+ || (ch == 'S')) // 83
+ && ( (ch1 == '"') // 34
+ || (ch1 == '\''))) // 39
+ || (ch == '"') // 34
+ || (ch == '\'') // 39
+ || ( (ch == '<') // 60
+ && cpd.in_preproc == CT_PP_INCLUDE))
+ {
+ parse_string(ctx, pc, unc_isalpha(ch) ? 1 : 0, true);
+
+ if (cpd.in_preproc == CT_PP_INCLUDE)
+ {
+ pc.SetParentType(CT_PP_INCLUDE);
+ }
+ return(true);
+ }
+
+ if ( (ch == '<') // 60
+ && cpd.in_preproc == CT_PP_DEFINE)
+ {
+ if (Chunk::GetTail()->Is(CT_MACRO))
+ {
+ // We have "#define XXX <", assume '<' starts an include string
+ parse_string(ctx, pc, 0, false);
+ return(true);
+ }
+ }
+ /* Inside clang's __has_include() could be "path/to/file.h" or system-style <path/to/file.h> */
+ Chunk *tail = Chunk::GetTail();
+
+ if ( (ch == '(') // 40
+ && (tail->IsNotNullChunk())
+ && ( tail->Is(CT_CNG_HASINC)
+ || tail->Is(CT_CNG_HASINCN)))
+ {
+ parse_string(ctx, pc, 0, false);
+ return(true);
+ }
+ }
+
+ // Check for Vala string templates
+ if ( language_is_set(LANG_VALA)
+ && (ctx.peek() == '@')) // 64
+ {
+ size_t nc = ctx.peek(1);
+
+ if (nc == '"') // 34
+ {
+ // literal string
+ parse_string(ctx, pc, 1, true);
+ return(true);
+ }
+ }
+
+ // Check for Objective C literals
+ if ( language_is_set(LANG_OC)
+ && (ctx.peek() == '@')) // 64
+ {
+ size_t nc = ctx.peek(1);
+
+ if (nc == 'R') // Issue #2720 82
+ {
+ if (ctx.peek(2) == '"') // 34
+ {
+ if (parse_cr_string(ctx, pc, 2)) // Issue #3027
+ {
+ return(true);
+ }
+ // parse string without escaping
+ parse_string(ctx, pc, 2, false);
+ return(true);
+ }
+ }
+
+ if ( (nc == '"') // 34
+ || (nc == '\'')) // 39
+ {
+ // literal string
+ parse_string(ctx, pc, 1, true);
+ return(true);
+ }
+
+ if ( (nc >= '0')
+ && (nc <= '9'))
+ {
+ // literal number
+ pc.Str().append(ctx.get()); // store the '@'
+ parse_number(ctx, pc);
+ return(true);
+ }
+ }
+
+ // Check for pawn/ObjectiveC/Java and normal identifiers
+ if ( CharTable::IsKw1(ctx.peek())
+ || ( (ctx.peek() == '\\') // 92
+ && (unc_tolower(ctx.peek(1)) == 'u')) // 117
+ || ( (ctx.peek() == '@') // 64
+ && CharTable::IsKw1(ctx.peek(1))))
+ {
+ parse_word(ctx, pc, false);
+ return(true);
+ }
+
+ // Check for C++11/14/17/20 attribute specifier sequences
+ if ( language_is_set(LANG_CPP)
+ && ctx.peek() == '[') // 91
+ {
+ if ( !language_is_set(LANG_OC)
+ || ( prev_pc->IsNotNullChunk()
+ && !prev_pc->Is(CT_OC_AT)))
+ {
+ if (auto length = parse_attribute_specifier_sequence(ctx))
+ {
+ extract_attribute_specifier_sequence(ctx, pc, length);
+ return(true);
+ }
+ }
+ }
+ // see if we have a punctuator
+ char punc_txt[7];
+
+ punc_txt[0] = ctx.peek();
+ punc_txt[1] = ctx.peek(1);
+ punc_txt[2] = ctx.peek(2);
+ punc_txt[3] = ctx.peek(3);
+ punc_txt[4] = ctx.peek(4);
+ punc_txt[5] = ctx.peek(5);
+ punc_txt[6] = '\0';
+ const chunk_tag_t *punc;
+
+ if ((punc = find_punctuator(punc_txt, cpd.lang_flags)) != nullptr)
+ {
+ int cnt = strlen(punc->tag);
+
+ while (cnt--)
+ {
+ pc.Str().append(ctx.get());
+ }
+ pc.SetType(punc->type);
+ pc.SetFlagBits(PCF_PUNCTUATOR);
+ return(true);
+ }
+ /* When parsing C/C++ files and running into some unknown token,
+ * check if matches Objective-C as a last resort, before
+ * considering it as garbage.
+ */
+ int probe_lang_flags = 0;
+
+ if (language_is_set(LANG_C | LANG_CPP))
+ {
+ probe_lang_flags = cpd.lang_flags | LANG_OC;
+ }
+
+ if (probe_lang_flags != 0)
+ {
+ if ((punc = find_punctuator(punc_txt, probe_lang_flags)) != nullptr)
+ {
+ cpd.lang_flags = probe_lang_flags;
+ int cnt = strlen(punc->tag);
+
+ while (cnt--)
+ {
+ pc.Str().append(ctx.get());
+ }
+ pc.SetType(punc->type);
+ pc.SetFlagBits(PCF_PUNCTUATOR);
+ return(true);
+ }
+ }
+ // throw away this character
+ pc.SetType(CT_UNKNOWN);
+ pc.Str().append(ctx.get());
+
+ LOG_FMT(LWARN, "%s:%zu Garbage in col %zu: %x\n",
+ cpd.filename.c_str(), pc.GetOrigLine(), ctx.c.col, pc.GetStr()[0]);
+ exit(EX_SOFTWARE);
+} // parse_next
+
+
+int find_disable_processing_comment_marker(const UncText &text,
+ std::size_t start_idx)
+{
+ log_rule_B("disable_processing_cmt");
+ const auto &offtext = options::disable_processing_cmt();
+ int idx = -1;
+
+ if ( !offtext.empty()
+ && start_idx < text.size())
+ {
+ if ( offtext != UNCRUSTIFY_OFF_TEXT
+ && options::processing_cmt_as_regex())
+ {
+ std::wsmatch match;
+ std::wstring pc_wstring(text.get().cbegin() + start_idx,
+ text.get().cend());
+ std::wregex criteria(std::wstring(offtext.cbegin(),
+ offtext.cend()));
+
+ std::regex_search(pc_wstring.cbegin(),
+ pc_wstring.cend(),
+ match,
+ criteria);
+
+ if (!match.empty())
+ {
+ idx = int(match.position() + start_idx);
+ }
+ }
+ else
+ {
+ idx = text.find(offtext.c_str(),
+ start_idx);
+
+ if (idx >= 0)
+ {
+ idx += int(offtext.size());
+ }
+ }
+
+ /**
+ * update the position to the start of the current line
+ */
+ while ( idx > 0
+ && text[idx - 1] != '\n')
+ {
+ --idx;
+ }
+ }
+ return(idx);
+} // find_disable_processing_comment_marker
+
+
+int find_enable_processing_comment_marker(const UncText &text,
+ std::size_t start_idx)
+{
+ log_rule_B("enable_processing_cmt");
+ const auto &ontext = options::enable_processing_cmt();
+ int idx = -1;
+
+ if ( !ontext.empty()
+ && start_idx < text.size())
+ {
+ if ( ontext != UNCRUSTIFY_ON_TEXT
+ && options::processing_cmt_as_regex())
+ {
+ std::wsmatch match;
+ std::wstring pc_wstring(text.get().cbegin() + start_idx,
+ text.get().cend());
+ std::wregex criteria(std::wstring(ontext.cbegin(),
+ ontext.cend()));
+
+ std::regex_search(pc_wstring.cbegin(),
+ pc_wstring.cend(),
+ match,
+ criteria);
+
+ if (!match.empty())
+ {
+ idx = int(start_idx + match.position() + match.size());
+ }
+ }
+ else
+ {
+ idx = text.find(ontext.c_str(),
+ start_idx);
+
+ if (idx >= 0)
+ {
+ idx += int(ontext.size());
+ }
+ }
+
+ /**
+ * update the position to the end of the current line
+ */
+ if (idx >= 0)
+ {
+ while ( idx < int(text.size())
+ && text[idx] != '\n')
+ {
+ ++idx;
+ }
+ }
+ }
+ return(idx);
+} // find_enable_processing_comment_marker
+
+
+void tokenize(const deque<int> &data, Chunk *ref)
+{
+ TokenContext ctx(data);
+ Chunk chunk;
+ Chunk *pc = Chunk::NullChunkPtr;
+ Chunk *rprev = Chunk::NullChunkPtr;
+ bool last_was_tab = false;
+ size_t prev_sp = 0;
+ int num_stripped = 0; // Issue #1966
+
+ cpd.unc_stage = unc_stage_e::TOKENIZE;
+
+ while (ctx.more())
+ {
+ chunk.Reset();
+ chunk.SetPpLevel(0);
+
+ if (!parse_next(ctx, chunk, pc))
+ {
+ LOG_FMT(LERR, "%s:%zu Bailed before the end?\n",
+ cpd.filename.c_str(), ctx.c.row);
+ exit(EX_SOFTWARE);
+ }
+
+ if ( language_is_set(LANG_JAVA)
+ && chunk.GetType() == CT_MEMBER
+ && !memcmp(chunk.Text(), "->", 2))
+ {
+ chunk.SetType(CT_LAMBDA);
+ }
+
+ // Don't create an entry for whitespace
+ if (chunk.GetType() == CT_WHITESPACE)
+ {
+ last_was_tab = chunk.GetAfterTab();
+ prev_sp = chunk.GetOrigPrevSp();
+ continue;
+ }
+ chunk.SetOrigPrevSp(prev_sp);
+ prev_sp = 0;
+
+ if (chunk.GetType() == CT_NEWLINE)
+ {
+ last_was_tab = chunk.GetAfterTab();
+ chunk.SetAfterTab(false);
+ chunk.Str().clear();
+ }
+ else if (chunk.GetType() == CT_NL_CONT)
+ {
+ last_was_tab = chunk.GetAfterTab();
+ chunk.SetAfterTab(false);
+ chunk.Str() = "\\\n";
+ }
+ else
+ {
+ chunk.SetAfterTab(last_was_tab);
+ last_was_tab = false;
+ }
+ num_stripped = 0; // Issue #1966 and #3565
+
+ if (chunk.GetType() != CT_IGNORED)
+ {
+ // Issue #1338
+ // Strip trailing whitespace (for CPP comments and PP blocks)
+ while ( (chunk.GetStr().size() > 0)
+ && ( (chunk.GetStr()[chunk.GetStr().size() - 1] == ' ') // 32
+ || (chunk.GetStr()[chunk.GetStr().size() - 1] == '\t')))
+ {
+ // If comment contains backslash '\' followed by whitespace chars, keep last one;
+ // this will prevent it from turning '\' into line continuation.
+ if ( (chunk.GetStr().size() > 1)
+ && (chunk.GetStr()[chunk.GetStr().size() - 2] == '\\'))
+ {
+ break;
+ }
+ chunk.Str().pop_back();
+ num_stripped++; // Issue #1966
+ }
+ }
+ // Store off the end column
+ chunk.SetOrigColEnd(ctx.c.col - num_stripped); // Issue #1966 and #3565
+
+ // Make the whitespace we disposed of be attributed to the next chunk
+ prev_sp = num_stripped;
+
+ // Add the chunk to the list
+ rprev = pc;
+
+ if (rprev->IsNotNullChunk())
+ {
+ pc->SetFlagBits(rprev->GetFlags() & PCF_COPY_FLAGS);
+
+ // a newline can't be in a preprocessor
+ if (pc->Is(CT_NEWLINE))
+ {
+ pc->ResetFlagBits(PCF_IN_PREPROC);
+ }
+ }
+
+ if (ref->IsNotNullChunk())
+ {
+ chunk.SetFlagBits(PCF_INSERTED);
+ }
+ else
+ {
+ chunk.ResetFlagBits(PCF_INSERTED);
+ }
+ pc = chunk.CopyAndAddBefore(ref);
+
+ // A newline marks the end of a preprocessor
+ if (pc->Is(CT_NEWLINE)) // || pc->Is(CT_COMMENT_MULTI))
+ {
+ cpd.in_preproc = CT_NONE;
+ cpd.preproc_ncnl_count = 0;
+ }
+
+ // Disable indentation when #asm directive found
+ if (pc->Is(CT_PP_ASM))
+ {
+ LOG_FMT(LBCTRL, "Found a directive %s on line %zu\n", "#asm", pc->GetOrigLine());
+ cpd.unc_off = true;
+ }
+
+ // Special handling for preprocessor stuff
+ if (cpd.in_preproc != CT_NONE)
+ {
+ pc->SetFlagBits(PCF_IN_PREPROC);
+ // Issue #2225
+ LOG_FMT(LBCTRL, "%s(%d): orig line is %zu, orig col is %zu, type is %s, parentType is %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(),
+ get_token_name(pc->GetType()), get_token_name(pc->GetParentType()));
+
+ if ( pc->Is(CT_STRING_MULTI)
+ && pc->GetParentType() == CT_PP_INCLUDE)
+ {
+ LOG_FMT(LWARN, "%s:%zu: File name is not possible %s\n",
+ cpd.filename.c_str(), pc->GetOrigLine(), pc->Text());
+ exit(EX_SOFTWARE);
+ }
+
+ // Count words after the preprocessor
+ if (!pc->IsCommentOrNewline())
+ {
+ cpd.preproc_ncnl_count++;
+ }
+
+ // Disable indentation if a #pragma asm directive is found
+ if (cpd.in_preproc == CT_PP_PRAGMA)
+ {
+ if (memcmp(pc->Text(), "asm", 3) == 0)
+ {
+ LOG_FMT(LBCTRL, "Found a pragma %s on line %zu\n", "asm", pc->GetOrigLine());
+ cpd.unc_off = true;
+ }
+ }
+
+ // Figure out the type of preprocessor for #include parsing
+ if (cpd.in_preproc == CT_PREPROC)
+ {
+ if ( pc->GetType() < CT_PP_DEFINE
+ || pc->GetType() > CT_PP_OTHER)
+ {
+ pc->SetType(CT_PP_OTHER);
+ }
+ cpd.in_preproc = pc->GetType();
+ }
+ else if (cpd.in_preproc == CT_PP_IGNORE)
+ {
+ if ( !pc->Is(CT_NL_CONT)
+ && !pc->IsComment()) // Issue #1966
+ {
+ pc->SetType(CT_PP_IGNORE);
+ }
+ }
+ else if ( cpd.in_preproc == CT_PP_DEFINE
+ && pc->Is(CT_PAREN_CLOSE)
+ && options::pp_ignore_define_body())
+ {
+ log_rule_B("pp_ignore_define_body");
+ // When we have a PAREN_CLOSE in a PP_DEFINE we should be terminating a MACRO_FUNC
+ // arguments list. Therefore we can enter the PP_IGNORE state and ignore next chunks.
+ cpd.in_preproc = CT_PP_IGNORE;
+ }
+ }
+ else
+ {
+ // Check for a preprocessor start
+ if ( pc->Is(CT_POUND)
+ && ( rprev->IsNullChunk()
+ || rprev->Is(CT_NEWLINE)))
+ {
+ pc->SetType(CT_PREPROC);
+ pc->SetFlagBits(PCF_IN_PREPROC);
+ cpd.in_preproc = CT_PREPROC;
+ }
+ }
+
+ if (pc->Is(CT_NEWLINE))
+ {
+ LOG_FMT(LBCTRL, "%s(%d): orig line is %zu, orig col is %zu, <Newline>, nl is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetNlCount());
+ }
+ else if (pc->Is(CT_VBRACE_OPEN))
+ {
+ LOG_FMT(LBCTRL, "%s(%d): orig line is %zu, orig col is %zu, type is %s, orig col end is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), get_token_name(pc->GetType()), pc->GetOrigColEnd());
+ }
+ else
+ {
+ char copy[1000];
+ LOG_FMT(LBCTRL, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s', type is %s, orig col end is %zu\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy), get_token_name(pc->GetType()), pc->GetOrigColEnd());
+ }
+ }
+ // Set the cpd.newline string for this file
+ log_rule_B("newlines");
+
+ if ( options::newlines() == LE_LF
+ || ( options::newlines() == LE_AUTO
+ && (LE_COUNT(LF) >= LE_COUNT(CRLF))
+ && (LE_COUNT(LF) >= LE_COUNT(CR))))
+ {
+ // LF line ends
+ cpd.newline = "\n";
+ LOG_FMT(LLINEENDS, "Using LF line endings\n");
+ }
+ else if ( options::newlines() == LE_CRLF
+ || ( options::newlines() == LE_AUTO
+ && (LE_COUNT(CRLF) >= LE_COUNT(LF))
+ && (LE_COUNT(CRLF) >= LE_COUNT(CR))))
+ {
+ // CRLF line ends
+ cpd.newline = "\r\n";
+ LOG_FMT(LLINEENDS, "Using CRLF line endings\r\n");
+ }
+ else
+ {
+ // CR line ends
+ cpd.newline = "\r";
+ LOG_FMT(LLINEENDS, "Using CR line endings\n");
+ }
+} // tokenize
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize.h
new file mode 100644
index 00000000..6f1df591
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize.h
@@ -0,0 +1,55 @@
+/**
+ * @file tokenize.h
+ * prototypes for tokenize.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef TOKENIZE_H_INCLUDED
+#define TOKENIZE_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+
+/**
+ * Test the input string to see if it satisfies the criteria
+ * specified by the disable_processing_cmt option
+ * @param text the string to which a match will be attempted
+ * @param start_idx the starting index within the string from which the
+ * search will be performed
+ * @return returns a non-negative position index that points to the beginning
+ * of the line containing the marker, if found
+ */
+int find_disable_processing_comment_marker(const UncText &text, std::size_t start_idx = 0);
+
+
+/**
+ * Test the input string to see if it satisfies the criteria
+ * specified by the enable_processing_cmt option
+ * @param text the string to which a match will be attempted
+ * @param start_idx the starting index within the string from which the
+ * search will be performed
+ * @return returns a non-negative position index that points to the end
+ * of the line containing the marker, if found
+ */
+int find_enable_processing_comment_marker(const UncText &text, std::size_t start_idx = 0);
+
+
+/**
+ * @brief Parse the text into chunks
+ *
+ * This function parses or tokenizes the whole buffer into a list.
+ * It has to do some tricks to parse preprocessors.
+ *
+ * If output_text() were called immediately after, two things would happen:
+ * - trailing whitespace are removed.
+ * - leading space & tabs are converted to the appropriate format.
+ *
+ * All the tokens are inserted before ref. If ref is NULL, they are inserted
+ * at the end of the list. Line numbers are relative to the start of the data.
+ */
+void tokenize(const std::deque<int> &data, Chunk *ref);
+
+
+#endif /* TOKENIZE_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize_cleanup.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize_cleanup.cpp
new file mode 100644
index 00000000..831e1aae
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize_cleanup.cpp
@@ -0,0 +1,1223 @@
+/**
+ * @file tokenize_cleanup.cpp
+ * Looks at simple sequences to refine the chunk types.
+ * Examples:
+ * - change '[' + ']' into '[]'/
+ * - detect "version = 10;" vs "version (xxx) {"
+ *
+ * @author Ben Gardner
+ * @author Guy Maurel 2015, 2022
+ * @license GPL v2+
+ */
+
+#include "tokenize_cleanup.h"
+
+#include "check_template.h"
+#include "combine.h"
+#include "combine_skip.h"
+#include "flag_braced_init_list.h"
+#include "flag_decltype.h"
+#include "keywords.h"
+#include "prototypes.h"
+#include "punctuators.h"
+#include "space.h"
+#include "unc_ctype.h"
+
+
+using namespace uncrustify;
+
+
+/**
+ * Marks ObjC specific chunks in property declaration, by setting
+ * parent types and chunk types.
+ */
+static void cleanup_objc_property(Chunk *start);
+
+
+/**
+ * Marks ObjC specific chunks in property declaration (getter/setter attribute)
+ * Will mark 'test4Setter'and ':' in '@property (setter=test4Setter:, strong) int test4;' as CT_OC_SEL_NAME
+ */
+static void mark_selectors_in_property_with_open_paren(Chunk *open_paren);
+
+
+/**
+ * Marks ObjC specific chunks in property declaration ( attributes)
+ * Changes all the CT_WORD and CT_TYPE to CT_OC_PROPERTY_ATTR
+ */
+static void mark_attributes_in_property_with_open_paren(Chunk *open_paren);
+
+
+void split_off_angle_close(Chunk *pc)
+{
+ const chunk_tag_t *ct = find_punctuator(pc->Text() + 1, cpd.lang_flags);
+
+ if (ct == nullptr)
+ {
+ return;
+ }
+ Chunk nc = *pc;
+
+ pc->Str().resize(1);
+ pc->SetOrigColEnd(pc->GetOrigCol() + 1);
+ pc->SetType(CT_ANGLE_CLOSE);
+
+ nc.SetType(ct->type);
+ nc.Str().pop_front();
+ nc.SetOrigCol(nc.GetOrigCol() + 1);
+ nc.SetColumn(nc.GetColumn() + 1);
+ nc.CopyAndAddAfter(pc);
+}
+
+
+void tokenize_trailing_return_types()
+{
+ // Issue #2330
+ // auto max(int a, int b) -> int;
+ // Issue #2460
+ // auto f01() -> bool;
+ // auto f02() noexcept -> bool;
+ // auto f03() noexcept(true) -> bool;
+ // auto f04() noexcept(false) -> bool;
+ // auto f05() noexcept -> bool = delete;
+ // auto f06() noexcept(true) -> bool = delete;
+ // auto f07() noexcept(false) -> bool = delete;
+ // auto f11() const -> bool;
+ // auto f12() const noexcept -> bool;
+ // auto f13() const noexcept(true) -> bool;
+ // auto f14() const noexcept(false) -> bool;
+ // auto f15() const noexcept -> bool = delete;
+ // auto f16() const noexcept(true) -> bool = delete;
+ // auto f17() const noexcept(false) -> bool = delete;
+ // auto f21() throw() -> bool;
+ // auto f22() throw() -> bool = delete;
+ // auto f23() const throw() -> bool;
+ // auto f24() const throw() -> bool = delete;
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ char copy[1000];
+ LOG_FMT(LNOTE, "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->ElidedText(copy));
+
+ if ( pc->Is(CT_MEMBER)
+ && (strcmp(pc->Text(), "->") == 0))
+ {
+ Chunk *tmp = pc->GetPrevNcNnl();
+ Chunk *tmp_2;
+ Chunk *open_paren;
+
+ if (tmp->Is(CT_QUALIFIER))
+ {
+ // auto max(int a, int b) const -> int;
+ // auto f11() const -> bool;
+ tmp = tmp->GetPrevNcNnl();
+ }
+ else if (tmp->Is(CT_NOEXCEPT))
+ {
+ // noexcept is present
+ tmp_2 = tmp->GetPrevNcNnl();
+
+ if (tmp_2->Is(CT_QUALIFIER))
+ {
+ // auto f12() const noexcept -> bool;
+ // auto f15() const noexcept -> bool = delete;
+ tmp = tmp_2->GetPrevNcNnl();
+ }
+ else
+ {
+ // auto f02() noexcept -> bool;
+ // auto f05() noexcept -> bool = delete;
+ tmp = tmp_2;
+ }
+ }
+ else if (tmp->Is(CT_PAREN_CLOSE))
+ {
+ open_paren = tmp->GetPrevType(CT_PAREN_OPEN, tmp->GetLevel());
+ tmp = open_paren->GetPrevNcNnl();
+
+ if (tmp->Is(CT_NOEXCEPT))
+ {
+ // noexcept is present
+ tmp_2 = tmp->GetPrevNcNnl();
+
+ if (tmp_2->Is(CT_QUALIFIER))
+ {
+ // auto f13() const noexcept(true) -> bool;
+ // auto f14() const noexcept(false) -> bool;
+ // auto f16() const noexcept(true) -> bool = delete;
+ // auto f17() const noexcept(false) -> bool = delete;
+ tmp = tmp_2->GetPrevNcNnl();
+ }
+ else
+ {
+ // auto f03() noexcept(true) -> bool;
+ // auto f04() noexcept(false) -> bool;
+ // auto f06() noexcept(true) -> bool = delete;
+ // auto f07() noexcept(false) -> bool = delete;
+ tmp = tmp_2;
+ }
+ }
+ else if (tmp->Is(CT_THROW))
+ {
+ // throw is present
+ tmp_2 = tmp->GetPrevNcNnl();
+
+ if (tmp_2->Is(CT_QUALIFIER))
+ {
+ // auto f23() const throw() -> bool;
+ // auto f24() const throw() -> bool = delete;
+ tmp = tmp_2->GetPrevNcNnl();
+ }
+ else
+ {
+ // auto f21() throw() -> bool;
+ // auto f22() throw() -> bool = delete;
+ tmp = tmp_2;
+ }
+ }
+ else
+ {
+ LOG_FMT(LNOTE, "%s(%d): NOT COVERED\n", __func__, __LINE__);
+ }
+ }
+ else
+ {
+ LOG_FMT(LNOTE, "%s(%d): NOT COVERED\n", __func__, __LINE__);
+ }
+
+ if ( tmp->Is(CT_FPAREN_CLOSE)
+ && ( tmp->GetParentType() == CT_FUNC_PROTO
+ || tmp->GetParentType() == CT_FUNC_DEF))
+ {
+ pc->SetType(CT_TRAILING_RET);
+ LOG_FMT(LNOTE, "%s(%d): set trailing return type for Text() is '%s'\n",
+ __func__, __LINE__, pc->Text()); // Issue #3222
+ // TODO
+ // https://en.cppreference.com/w/cpp/language/function
+ // noptr-declarator ( parameter-list ) cv(optional) ref(optional) except(optional) attr(optional) -> trailing
+ Chunk *next = pc->GetNextNcNnl();
+
+ if (next->Is(CT_DECLTYPE))
+ {
+ // TODO
+ }
+ else if (next->Is(CT_WORD))
+ {
+ next->SetType(CT_TYPE); // Issue #3222
+ next = next->GetNextNcNnl();
+
+ if (next->Is(CT_ARITH))
+ {
+ if (next->GetStr()[0] == '*')
+ {
+ next->SetType(CT_PTR_TYPE);
+ }
+ else if (next->GetStr()[0] == '&') // Issue #3407
+ {
+ next->SetType(CT_BYREF);
+ }
+ }
+ }
+ else
+ {
+ // TODO
+ }
+ }
+ }
+ }
+} // tokenize_trailing_return_types
+
+
+void tokenize_cleanup()
+{
+ LOG_FUNC_ENTRY();
+
+ Chunk *prev = Chunk::NullChunkPtr;
+ Chunk *next;
+ bool in_type_cast = false;
+
+ cpd.unc_stage = unc_stage_e::TOKENIZE_CLEANUP;
+
+ /*
+ * Since [] is expected to be TSQUARE for the 'operator', we need to make
+ * this change in the first pass.
+ */
+ Chunk *pc;
+
+ for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ if (pc->Is(CT_SQUARE_OPEN))
+ {
+ next = pc->GetNextNcNnl();
+
+ if (next->Is(CT_SQUARE_CLOSE))
+ {
+ // Change '[' + ']' into '[]'
+ pc->SetType(CT_TSQUARE);
+ pc->Str() = "[]";
+ /*
+ * bug #664: The original m_origColEnd of CT_SQUARE_CLOSE is
+ * stored at m_origColEnd of CT_TSQUARE.
+ * pc->SetOrigColEnd(pc->GetOrigColEnd() + 1);
+ */
+ pc->SetOrigColEnd(next->GetOrigColEnd());
+ Chunk::Delete(next);
+ }
+ }
+
+ if ( pc->Is(CT_SEMICOLON)
+ && pc->TestFlags(PCF_IN_PREPROC)
+ && !pc->GetNextNcNnl(E_Scope::PREPROC))
+ {
+ LOG_FMT(LNOTE, "%s(%d): %s:%zu Detected a macro that ends with a semicolon. Possible failures if used.\n",
+ __func__, __LINE__, cpd.filename.c_str(), pc->GetOrigLine());
+ }
+ }
+
+ // change := to CT_SQL_ASSIGN Issue #527
+ for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl())
+ {
+ if (pc->Is(CT_COLON))
+ {
+ next = pc->GetNextNcNnl();
+
+ if (next->Is(CT_ASSIGN))
+ {
+ // Change ':' + '=' into ':='
+ pc->SetType(CT_SQL_ASSIGN);
+ pc->Str() = ":=";
+ pc->SetOrigColEnd(next->GetOrigColEnd());
+ Chunk::Delete(next);
+ }
+ }
+ }
+
+ // We can handle everything else in the second pass
+ pc = Chunk::GetHead();
+ next = pc->GetNextNcNnl();
+
+ while ( pc->IsNotNullChunk()
+ && next->IsNotNullChunk())
+ {
+ if ( pc->Is(CT_DOT)
+ && language_is_set(LANG_ALLC))
+ {
+ pc->SetType(CT_MEMBER);
+ }
+
+ if ( pc->Is(CT_NULLCOND)
+ && language_is_set(LANG_CS))
+ {
+ pc->SetType(CT_MEMBER);
+ }
+
+ // Determine the version stuff (D only)
+ if (pc->Is(CT_D_VERSION))
+ {
+ if (next->Is(CT_PAREN_OPEN))
+ {
+ pc->SetType(CT_D_VERSION_IF);
+ }
+ else
+ {
+ if (next->IsNot(CT_ASSIGN))
+ {
+ LOG_FMT(LERR, "%s(%d): %s:%zu: version: Unexpected token %s\n",
+ __func__, __LINE__, cpd.filename.c_str(), pc->GetOrigLine(), get_token_name(next->GetType()));
+ exit(EX_SOFTWARE);
+ }
+ pc->SetType(CT_WORD);
+ }
+ }
+
+ // Determine the scope stuff (D only)
+ if (pc->Is(CT_D_SCOPE))
+ {
+ if (next->Is(CT_PAREN_OPEN))
+ {
+ pc->SetType(CT_D_SCOPE_IF);
+ }
+ else
+ {
+ pc->SetType(CT_TYPE);
+ }
+ }
+
+ /*
+ * Change CT_BASE before CT_PAREN_OPEN to CT_WORD.
+ * public myclass() : base() {}
+ * -or-
+ * var x = (T)base.y;
+ */
+ if ( pc->Is(CT_BASE)
+ && ( next->Is(CT_PAREN_OPEN)
+ || next->Is(CT_DOT)))
+ {
+ pc->SetType(CT_WORD);
+ }
+
+ if ( pc->Is(CT_ENUM)
+ && ( next->Is(CT_STRUCT)
+ || next->Is(CT_CLASS)))
+ {
+ next->SetType(CT_ENUM_CLASS);
+ }
+ Chunk *next_non_attr = language_is_set(LANG_CPP) ? skip_attribute_next(next) : next;
+
+ /*
+ * Change CT_WORD after CT_ENUM, CT_UNION, CT_STRUCT, or CT_CLASS to CT_TYPE
+ * Change CT_WORD before CT_WORD to CT_TYPE
+ */
+ if (next_non_attr->Is(CT_WORD))
+ {
+ if (pc->IsClassEnumStructOrUnion())
+ {
+ next_non_attr->SetType(CT_TYPE);
+ }
+
+ if (pc->Is(CT_WORD))
+ {
+ pc->SetType(CT_TYPE);
+ }
+ }
+
+ /*
+ * change extern to qualifier if extern isn't followed by a string or
+ * an open parenthesis
+ */
+ if (pc->Is(CT_EXTERN))
+ {
+ if (next->Is(CT_STRING))
+ {
+ // Probably 'extern "C"'
+ }
+ else if (next->Is(CT_PAREN_OPEN))
+ {
+ // Probably 'extern (C)'
+ }
+ else
+ {
+ // Something else followed by a open brace
+ Chunk *tmp = next->GetNextNcNnl();
+
+ if ( tmp->IsNullChunk()
+ || tmp->IsNot(CT_BRACE_OPEN))
+ {
+ pc->SetType(CT_QUALIFIER);
+ }
+ }
+ }
+
+ /*
+ * Change CT_STAR to CT_PTR_TYPE if preceded by
+ * CT_TYPE, CT_QUALIFIER, or CT_PTR_TYPE
+ * or by a
+ * CT_WORD which is preceded by CT_DC_MEMBER: '::aaa *b'
+ */
+ if ( (next->Is(CT_STAR))
+ || ( language_is_set(LANG_CPP)
+ && (next->Is(CT_CARET)))
+ || ( language_is_set(LANG_CS | LANG_VALA)
+ && (next->Is(CT_QUESTION))
+ && (strcmp(pc->Text(), "null") != 0)))
+ {
+ if ( pc->Is(CT_TYPE)
+ || pc->Is(CT_QUALIFIER)
+ || pc->Is(CT_PTR_TYPE))
+ {
+ next->SetType(CT_PTR_TYPE);
+ }
+ }
+
+ if ( pc->Is(CT_TYPE_CAST)
+ && next->Is(CT_ANGLE_OPEN))
+ {
+ next->SetParentType(CT_TYPE_CAST);
+ in_type_cast = true;
+ }
+
+ if (pc->Is(CT_DECLTYPE))
+ {
+ flag_cpp_decltype(pc);
+ }
+
+ // Change angle open/close to CT_COMPARE, if not a template thingy
+ if ( pc->Is(CT_ANGLE_OPEN)
+ && pc->GetParentType() != CT_TYPE_CAST)
+ {
+ /*
+ * pretty much all languages except C use <> for something other than
+ * comparisons. "#include<xxx>" is handled elsewhere.
+ */
+ if (language_is_set(LANG_OC | LANG_CPP | LANG_CS | LANG_JAVA | LANG_VALA))
+ {
+ // bug #663
+ check_template(pc, in_type_cast);
+ }
+ else
+ {
+ // convert CT_ANGLE_OPEN to CT_COMPARE
+ pc->SetType(CT_COMPARE);
+ }
+ }
+
+ if ( pc->Is(CT_ANGLE_CLOSE)
+ && pc->GetParentType() != CT_TEMPLATE)
+ {
+ if (in_type_cast)
+ {
+ in_type_cast = false;
+ pc->SetParentType(CT_TYPE_CAST);
+ }
+ else
+ {
+ next = handle_double_angle_close(pc);
+ }
+ }
+
+ if (language_is_set(LANG_D))
+ {
+ // Check for the D string concat symbol '~'
+ if ( pc->Is(CT_INV)
+ && ( prev->Is(CT_STRING)
+ || prev->Is(CT_WORD)
+ || next->Is(CT_STRING)))
+ {
+ pc->SetType(CT_CONCAT);
+ }
+
+ // Check for the D template symbol '!' (word + '!' + word or '(')
+ if ( pc->Is(CT_NOT)
+ && prev->Is(CT_WORD)
+ && ( next->Is(CT_PAREN_OPEN)
+ || next->Is(CT_WORD)
+ || next->Is(CT_TYPE)
+ || next->Is(CT_NUMBER)
+ || next->Is(CT_NUMBER_FP)
+ || next->Is(CT_STRING)
+ || next->Is(CT_STRING_MULTI)))
+ {
+ pc->SetType(CT_D_TEMPLATE);
+ }
+
+ // handle "version(unittest) { }" vs "unittest { }"
+ if ( pc->Is(CT_UNITTEST)
+ && prev->Is(CT_PAREN_OPEN))
+ {
+ pc->SetType(CT_WORD);
+ }
+
+ // handle 'static if' and merge the tokens
+ if ( pc->Is(CT_IF)
+ && prev->IsString("static"))
+ {
+ // delete PREV and merge with IF
+ pc->Str().insert(0, ' ');
+ pc->Str().insert(0, prev->GetStr());
+ pc->SetOrigCol(prev->GetOrigCol());
+ pc->SetOrigLine(prev->GetOrigLine());
+ Chunk *to_be_deleted = prev;
+ prev = prev->GetPrevNcNnl();
+
+ if (prev->IsNotNullChunk())
+ {
+ Chunk::Delete(to_be_deleted);
+ }
+ }
+ }
+
+ if (language_is_set(LANG_CPP))
+ {
+ // Change Word before '::' into a type
+ if ( pc->Is(CT_WORD)
+ && next->Is(CT_DC_MEMBER))
+ {
+ prev = pc->GetPrev();
+
+ if (prev->IsNullChunk()) // Issue #3010
+ {
+ pc->SetType(CT_TYPE);
+ }
+ else
+ {
+ if (prev->Is(CT_COLON))
+ {
+ // nothing to do
+ }
+ else
+ {
+ pc->SetType(CT_TYPE);
+ }
+ }
+ }
+
+ // Set parent type for 'if constexpr'
+ if ( prev->Is(CT_IF)
+ && pc->Is(CT_QUALIFIER)
+ && pc->IsString("constexpr"))
+ {
+ pc->SetType(CT_CONSTEXPR);
+ }
+ }
+
+ // Change get/set to CT_WORD if not followed by a brace open
+ if ( pc->Is(CT_GETSET)
+ && next->IsNot(CT_BRACE_OPEN))
+ {
+ if ( next->Is(CT_SEMICOLON)
+ && ( prev->Is(CT_BRACE_CLOSE)
+ || prev->Is(CT_BRACE_OPEN)
+ || prev->Is(CT_SEMICOLON)))
+ {
+ pc->SetType(CT_GETSET_EMPTY);
+ next->SetParentType(CT_GETSET);
+ }
+ else
+ {
+ pc->SetType(CT_WORD);
+ }
+ }
+
+ /*
+ * Interface is only a keyword in MS land if followed by 'class' or 'struct'
+ * likewise, 'class' may be a member name in Java.
+ */
+ if ( pc->Is(CT_CLASS)
+ && !CharTable::IsKw1(next->GetStr()[0]))
+ {
+ if ( next->IsNot(CT_DC_MEMBER)
+ && next->IsNot(CT_ATTRIBUTE)) // Issue #2570
+ {
+ pc->SetType(CT_WORD);
+ }
+ else if ( prev->Is(CT_DC_MEMBER)
+ || prev->Is(CT_TYPE))
+ {
+ pc->SetType(CT_TYPE);
+ }
+ else if (next->Is(CT_DC_MEMBER))
+ {
+ Chunk *next2 = next->GetNextNcNnlNet();
+
+ if ( next2->Is(CT_INV) // CT_INV hasn't turned into CT_DESTRUCTOR just yet
+ || ( next2->Is(CT_CLASS) // constructor isn't turned into CT_FUNC* just yet
+ && !strcmp(pc->Text(), next2->Text())))
+ {
+ pc->SetType(CT_TYPE);
+ }
+ }
+ }
+
+ /*
+ * Change item after operator (>=, ==, etc) to a CT_OPERATOR_VAL
+ * Usually the next item is part of the operator.
+ * In a few cases the next few tokens are part of it:
+ * operator + - common case
+ * operator >> - need to combine '>' and '>'
+ * operator ()
+ * operator [] - already converted to TSQUARE
+ * operator new []
+ * operator delete []
+ * operator const char *
+ * operator const B&
+ * operator std::allocator<U>
+ *
+ * In all cases except the last, this will put the entire operator value
+ * in one chunk.
+ */
+ if (pc->Is(CT_OPERATOR))
+ {
+ Chunk *tmp2 = next->GetNext();
+
+ // Handle special case of () operator -- [] already handled
+ if (next->Is(CT_PAREN_OPEN))
+ {
+ Chunk *tmp = next->GetNext();
+
+ if (tmp->Is(CT_PAREN_CLOSE))
+ {
+ next->Str() = "()";
+ next->SetType(CT_OPERATOR_VAL);
+ Chunk::Delete(tmp);
+ next->SetOrigColEnd(next->GetOrigColEnd() + 1);
+ }
+ }
+ else if ( next->Is(CT_ANGLE_CLOSE)
+ && tmp2->Is(CT_ANGLE_CLOSE)
+ && tmp2->GetOrigCol() == next->GetOrigColEnd())
+ {
+ next->Str().append('>');
+ next->SetOrigColEnd(next->GetOrigColEnd() + 1);
+ next->SetType(CT_OPERATOR_VAL);
+ Chunk::Delete(tmp2);
+ }
+ else if (next->TestFlags(PCF_PUNCTUATOR))
+ {
+ next->SetType(CT_OPERATOR_VAL);
+ }
+ else
+ {
+ next->SetType(CT_TYPE);
+
+ /*
+ * Replace next with a collection of all tokens that are part of
+ * the type.
+ */
+ tmp2 = next;
+ Chunk *tmp;
+
+ while ((tmp = tmp2->GetNext())->IsNotNullChunk())
+ {
+ if ( tmp->IsNot(CT_WORD)
+ && tmp->IsNot(CT_TYPE)
+ && tmp->IsNot(CT_QUALIFIER)
+ && tmp->IsNot(CT_STAR)
+ && tmp->IsNot(CT_CARET)
+ && tmp->IsNot(CT_AMP)
+ && tmp->IsNot(CT_TSQUARE))
+ {
+ break;
+ }
+ // Change tmp into a type so that space_needed() works right
+ make_type(tmp);
+ size_t num_sp = space_needed(tmp2, tmp);
+
+ while (num_sp-- > 0)
+ {
+ next->Str().append(" ");
+ }
+ next->Str().append(tmp->GetStr());
+ tmp2 = tmp;
+ }
+
+ while ((tmp2 = next->GetNext()) != tmp)
+ {
+ Chunk::Delete(tmp2);
+ }
+ next->SetType(CT_OPERATOR_VAL);
+
+ next->SetOrigColEnd(next->GetOrigCol() + next->Len());
+ }
+ next->SetParentType(CT_OPERATOR);
+
+ LOG_FMT(LOPERATOR, "%s(%d): %zu:%zu operator '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), next->Text());
+ }
+
+ // Change private, public, protected into either a qualifier or label
+ if (pc->Is(CT_ACCESS))
+ {
+ // Handle Qt slots - maybe should just check for a CT_WORD?
+ if ( next->IsString("slots")
+ || next->IsString("Q_SLOTS"))
+ {
+ Chunk *tmp = next->GetNext();
+
+ if (tmp->Is(CT_COLON))
+ {
+ next = tmp;
+ }
+ }
+
+ if (next->Is(CT_COLON))
+ {
+ next->SetType(CT_ACCESS_COLON);
+ Chunk *tmp;
+
+ if ((tmp = next->GetNextNcNnl())->IsNotNullChunk())
+ {
+ tmp->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
+ log_ruleStart("start statementi/ expression", tmp);
+ }
+ }
+ else
+ {
+ pc->SetType(( pc->IsString("signals")
+ || pc->IsString("Q_SIGNALS"))
+ ? CT_WORD : CT_QUALIFIER);
+ }
+ }
+
+ // Look for <newline> 'EXEC' 'SQL'
+ if ( ( pc->IsString("EXEC", false)
+ && next->IsString("SQL", false))
+ || ( (*pc->GetStr().c_str() == '$')
+ && pc->IsNot(CT_SQL_WORD)
+ /* but avoid breaking tokenization for C# 6 interpolated strings. */
+ && ( !language_is_set(LANG_CS)
+ || ( pc->Is(CT_STRING)
+ && (!pc->GetStr().startswith("$\""))
+ && (!pc->GetStr().startswith("$@\""))))))
+ {
+ Chunk *tmp = pc->GetPrev();
+
+ if (tmp->IsNewline())
+ {
+ if (*pc->GetStr().c_str() == '$')
+ {
+ pc->SetType(CT_SQL_EXEC);
+
+ if (pc->Len() > 1)
+ {
+ // SPLIT OFF '$'
+ Chunk nc;
+
+ nc = *pc;
+ pc->Str().resize(1);
+ pc->SetOrigColEnd(pc->GetOrigCol() + 1);
+
+ nc.SetType(CT_SQL_WORD);
+ nc.Str().pop_front();
+ nc.SetOrigCol(nc.GetOrigCol() + 1);
+ nc.SetColumn(nc.GetColumn() + 1);
+ nc.CopyAndAddAfter(pc);
+
+ next = pc->GetNext();
+ }
+ }
+ tmp = next->GetNext();
+
+ if (tmp->IsString("BEGIN", false))
+ {
+ pc->SetType(CT_SQL_BEGIN);
+ }
+ else if (tmp->IsString("END", false))
+ {
+ pc->SetType(CT_SQL_END);
+ }
+ else
+ {
+ pc->SetType(CT_SQL_EXEC);
+ }
+
+ // Change words into CT_SQL_WORD until CT_SEMICOLON
+ while (tmp->IsNotNullChunk())
+ {
+ if (tmp->Is(CT_SEMICOLON))
+ {
+ break;
+ }
+
+ if ( (tmp->Len() > 0)
+ && ( unc_isalpha(*tmp->GetStr().c_str())
+ || (*tmp->GetStr().c_str() == '$')))
+ {
+ tmp->SetType(CT_SQL_WORD);
+ }
+ tmp = tmp->GetNextNcNnl();
+ }
+ }
+ }
+
+ // handle MS abomination 'for each'
+ if ( pc->Is(CT_FOR)
+ && next->IsString("each")
+ && (next == pc->GetNext()))
+ {
+ // merge the two with a space between
+ pc->Str().append(' ');
+ pc->Str() += next->GetStr();
+ pc->SetOrigColEnd(next->GetOrigColEnd());
+ Chunk::Delete(next);
+ next = pc->GetNextNcNnl();
+
+ // label the 'in'
+ if (next->Is(CT_PAREN_OPEN))
+ {
+ Chunk *tmp = next->GetNextNcNnl();
+
+ while ( tmp->IsNotNullChunk()
+ && tmp->IsNot(CT_PAREN_CLOSE))
+ {
+ if (tmp->IsString("in"))
+ {
+ tmp->SetType(CT_IN);
+ break;
+ }
+ tmp = tmp->GetNextNcNnl();
+ }
+ }
+ }
+
+ /*
+ * ObjectiveC allows keywords to be used as identifiers in some situations
+ * This is a dirty hack to allow some of the more common situations.
+ */
+ if (language_is_set(LANG_OC))
+ {
+ if ( ( pc->Is(CT_IF)
+ || pc->Is(CT_FOR)
+ || pc->Is(CT_WHILE))
+ && !next->Is(CT_PAREN_OPEN))
+ {
+ pc->SetType(CT_WORD);
+ }
+
+ if ( pc->Is(CT_DO)
+ && ( prev->Is(CT_MINUS)
+ || next->Is(CT_SQUARE_CLOSE)))
+ {
+ pc->SetType(CT_WORD);
+ }
+
+ // Fix self keyword back to word when mixing c++/objective-c
+ if ( pc->Is(CT_THIS)
+ && !strcmp(pc->Text(), "self")
+ && ( next->Is(CT_COMMA)
+ || next->Is(CT_PAREN_CLOSE)))
+ {
+ pc->SetType(CT_WORD);
+ }
+
+ // Fix self keyword back to word when mixing c++/objective-c
+ if ( pc->Is(CT_THIS)
+ && !strcmp(pc->Text(), "self")
+ && ( next->Is(CT_COMMA)
+ || next->Is(CT_PAREN_CLOSE)))
+ {
+ pc->SetType(CT_WORD);
+ }
+ }
+
+ // Vala allows keywords to be used as identifiers
+ if (language_is_set(LANG_VALA))
+ {
+ if ( find_keyword_type(pc->Text(), pc->Len()) != CT_WORD
+ && ( prev->Is(CT_DOT)
+ || next->Is(CT_DOT)
+ || prev->Is(CT_MEMBER)
+ || next->Is(CT_MEMBER)
+ || prev->Is(CT_TYPE)))
+ {
+ pc->SetType(CT_WORD);
+ }
+ }
+
+ // Another hack to clean up more keyword abuse
+ if ( pc->Is(CT_CLASS)
+ && ( prev->Is(CT_DOT)
+ || next->Is(CT_DOT)
+ || prev->Is(CT_MEMBER) // Issue #3031
+ || next->Is(CT_MEMBER)))
+ {
+ pc->SetType(CT_WORD);
+ }
+
+ // Detect Objective C class name
+ if ( pc->Is(CT_OC_IMPL)
+ || pc->Is(CT_OC_INTF)
+ || pc->Is(CT_OC_PROTOCOL))
+ {
+ if (next->IsNot(CT_PAREN_OPEN))
+ {
+ next->SetType(CT_OC_CLASS);
+ }
+ next->SetParentType(pc->GetType());
+
+ Chunk *tmp = next->GetNextNcNnl();
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
+ log_ruleStart("start statementi/ expression", tmp);
+ }
+ tmp = pc->GetNextType(CT_OC_END, pc->GetLevel());
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp->SetParentType(pc->GetType());
+ }
+ }
+
+ if (pc->Is(CT_OC_INTF))
+ {
+ Chunk *tmp = pc->GetNextNcNnl(E_Scope::PREPROC);
+
+ while ( tmp->IsNotNullChunk()
+ && tmp->IsNot(CT_OC_END))
+ {
+ if (get_token_pattern_class(tmp->GetType()) != pattern_class_e::NONE)
+ {
+ LOG_FMT(LOBJCWORD, "%s(%d): @interface %zu:%zu change '%s' (%s) to CT_WORD\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), tmp->Text(),
+ get_token_name(tmp->GetType()));
+ tmp->SetType(CT_WORD);
+ }
+ tmp = tmp->GetNextNcNnl(E_Scope::PREPROC);
+ }
+ }
+
+ /*
+ * Detect Objective-C categories and class extensions:
+ * @interface ClassName (CategoryName)
+ * @implementation ClassName (CategoryName)
+ * @interface ClassName ()
+ * @implementation ClassName ()
+ */
+ if ( ( pc->GetParentType() == CT_OC_IMPL
+ || pc->GetParentType() == CT_OC_INTF
+ || pc->Is(CT_OC_CLASS))
+ && next->Is(CT_PAREN_OPEN))
+ {
+ next->SetParentType(pc->GetParentType());
+
+ Chunk *tmp = next->GetNext();
+
+ if ( tmp->IsNotNullChunk()
+ && tmp->GetNext()->IsNotNullChunk())
+ {
+ if (tmp->Is(CT_PAREN_CLOSE))
+ {
+ //tmp->SetType(CT_OC_CLASS_EXT);
+ tmp->SetParentType(pc->GetParentType());
+ }
+ else
+ {
+ tmp->SetType(CT_OC_CATEGORY);
+ tmp->SetParentType(pc->GetParentType());
+ }
+ }
+ tmp = pc->GetNextType(CT_PAREN_CLOSE, pc->GetLevel());
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp->SetParentType(pc->GetParentType());
+ }
+ }
+
+ /*
+ * Detect Objective C @property:
+ * @property NSString *stringProperty;
+ * @property(nonatomic, retain) NSMutableDictionary *shareWith;
+ */
+ if (pc->Is(CT_OC_PROPERTY))
+ {
+ if (next->IsNot(CT_PAREN_OPEN))
+ {
+ next->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
+ log_ruleStart("start statement/ expression", next);
+ }
+ else
+ {
+ cleanup_objc_property(pc);
+ }
+ }
+
+ /*
+ * Detect Objective C @selector:
+ * @selector(msgNameWithNoArg)
+ * @selector(msgNameWith1Arg:)
+ * @selector(msgNameWith2Args:arg2Name:)
+ */
+ if ( pc->Is(CT_OC_SEL)
+ && next->Is(CT_PAREN_OPEN))
+ {
+ next->SetParentType(pc->GetType());
+
+ Chunk *tmp = next->GetNext();
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp->SetType(CT_OC_SEL_NAME);
+ tmp->SetParentType(pc->GetType());
+
+ while ((tmp = tmp->GetNextNcNnl())->IsNotNullChunk())
+ {
+ if (tmp->Is(CT_PAREN_CLOSE))
+ {
+ tmp->SetParentType(CT_OC_SEL);
+ break;
+ }
+ tmp->SetType(CT_OC_SEL_NAME);
+ tmp->SetParentType(pc->GetType());
+ }
+ }
+ }
+
+ // Handle special preprocessor junk
+ if (pc->Is(CT_PREPROC))
+ {
+ pc->SetParentType(next->GetType());
+ }
+
+ // Detect "pragma region" and "pragma endregion"
+ if ( pc->Is(CT_PP_PRAGMA)
+ && next->Is(CT_PREPROC_BODY))
+ {
+ if ( (strncmp(next->GetStr().c_str(), "region", 6) == 0)
+ || (strncmp(next->GetStr().c_str(), "endregion", 9) == 0))
+ // TODO: probably better use strncmp
+ {
+ pc->SetType((*next->GetStr().c_str() == 'r') ? CT_PP_REGION : CT_PP_ENDREGION);
+
+ prev->SetParentType(pc->GetType());
+ }
+ }
+
+ // Change 'default(' into a sizeof-like statement
+ if ( language_is_set(LANG_CS)
+ && pc->Is(CT_DEFAULT)
+ && next->Is(CT_PAREN_OPEN))
+ {
+ pc->SetType(CT_SIZEOF);
+ }
+
+ if ( pc->Is(CT_UNSAFE)
+ && next->IsNot(CT_BRACE_OPEN))
+ {
+ pc->SetType(CT_QUALIFIER);
+ }
+
+ if ( ( pc->Is(CT_USING)
+ || ( pc->Is(CT_TRY)
+ && language_is_set(LANG_JAVA)))
+ && next->Is(CT_PAREN_OPEN))
+ {
+ pc->SetType(CT_USING_STMT);
+ }
+
+ // Add minimal support for C++0x rvalue references
+ if ( pc->Is(CT_BOOL)
+ && language_is_set(LANG_CPP)
+ && pc->IsString("&&"))
+ {
+ if (prev->Is(CT_TYPE))
+ {
+ // Issue # 1002
+ if (!pc->TestFlags(PCF_IN_TEMPLATE))
+ {
+ pc->SetType(CT_BYREF);
+ }
+ }
+ }
+
+ /*
+ * HACK: treat try followed by a colon as a qualifier to handle this:
+ * A::A(int) try : B() { } catch (...) { }
+ */
+ if ( pc->Is(CT_TRY)
+ && pc->IsString("try")
+ && next->Is(CT_COLON))
+ {
+ pc->SetType(CT_QUALIFIER);
+ }
+
+ /*
+ * If Java's 'synchronized' is in a method declaration, it should be
+ * a qualifier.
+ */
+ if ( language_is_set(LANG_JAVA)
+ && pc->Is(CT_SYNCHRONIZED)
+ && next->IsNot(CT_PAREN_OPEN))
+ {
+ pc->SetType(CT_QUALIFIER);
+ }
+
+ // change CT_DC_MEMBER + CT_FOR into CT_DC_MEMBER + CT_FUNC_CALL
+ if ( pc->Is(CT_FOR)
+ && pc->GetPrev()->Is(CT_DC_MEMBER))
+ {
+ pc->SetType(CT_FUNC_CALL);
+ }
+ // TODO: determine other stuff here
+
+ prev = pc;
+ pc = next;
+ next = pc->GetNextNcNnl();
+ }
+} // tokenize_cleanup
+
+
+static void cleanup_objc_property(Chunk *start)
+{
+ assert(start->Is(CT_OC_PROPERTY));
+
+ Chunk *open_paren = start->GetNextType(CT_PAREN_OPEN, start->GetLevel());
+
+ if (open_paren->IsNullChunk())
+ {
+ LOG_FMT(LTEMPL, "%s(%d): Property is not followed by opening paren\n", __func__, __LINE__);
+ return;
+ }
+ open_paren->SetParentType(start->GetType());
+
+ Chunk *tmp = start->GetNextType(CT_PAREN_CLOSE, start->GetLevel());
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp->SetParentType(start->GetType());
+ tmp = tmp->GetNextNcNnl();
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp->SetFlagBits(PCF_STMT_START | PCF_EXPR_START);
+ log_ruleStart("start statement/ expression", tmp);
+
+ tmp = tmp->GetNextType(CT_SEMICOLON, start->GetLevel());
+
+ if (tmp->IsNotNullChunk())
+ {
+ tmp->SetParentType(start->GetType());
+ }
+ }
+ }
+ mark_selectors_in_property_with_open_paren(open_paren);
+ mark_attributes_in_property_with_open_paren(open_paren);
+}
+
+
+static void mark_selectors_in_property_with_open_paren(Chunk *open_paren)
+{
+ assert(open_paren->Is(CT_PAREN_OPEN));
+
+ Chunk *tmp = open_paren;
+
+ while (tmp->IsNot(CT_PAREN_CLOSE))
+ {
+ if ( tmp->Is(CT_WORD)
+ && ( tmp->IsString("setter")
+ || tmp->IsString("getter")))
+ {
+ tmp = tmp->GetNext();
+
+ while ( tmp->IsNotNullChunk()
+ && tmp->IsNot(CT_COMMA)
+ && tmp->IsNot(CT_PAREN_CLOSE))
+ {
+ if ( tmp->Is(CT_WORD)
+ || tmp->IsString(":"))
+ {
+ tmp->SetType(CT_OC_SEL_NAME);
+ }
+ tmp = tmp->GetNext();
+ }
+ }
+ else
+ {
+ tmp = tmp->GetNext();
+ }
+ }
+}
+
+
+static void mark_attributes_in_property_with_open_paren(Chunk *open_paren)
+{
+ assert(open_paren->Is(CT_PAREN_OPEN));
+
+ Chunk *tmp = open_paren;
+
+ while (tmp->IsNot(CT_PAREN_CLOSE))
+ {
+ Chunk *next = tmp->GetNext();
+
+ if ( ( tmp->Is(CT_COMMA)
+ || tmp->Is(CT_PAREN_OPEN))
+ && ( next->Is(CT_WORD)
+ || next->Is(CT_TYPE)))
+ {
+ next->SetType(CT_OC_PROPERTY_ATTR);
+ }
+ tmp = next;
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize_cleanup.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize_cleanup.h
new file mode 100644
index 00000000..b6dde163
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/tokenize_cleanup.h
@@ -0,0 +1,31 @@
+/**
+ * @file tokenize_cleanup.h
+ * prototypes for tokenize_cleanup.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+#ifndef TOKENIZ_CLEANUP_H_INCLUDED
+#define TOKENIZ_CLEANUP_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+
+/**
+ * @brief clean up tokens
+ *
+ * Change certain token types based on simple sequence.
+ * Example: change '[' + ']' to '[]'
+ * Note that level info is not yet available, so it is OK to do all
+ * processing that doesn't need to know level info. (that's very little!)
+ */
+void tokenize_cleanup();
+
+
+void tokenize_trailing_return_types();
+
+
+void split_off_angle_close(Chunk *pc);
+
+
+#endif /* TOKENIZ_CLEANUP_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_ctype.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_ctype.cpp
index 352b4efb..352b4efb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_ctype.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_ctype.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_ctype.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_ctype.h
index 8cfcbf3b..8cfcbf3b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/unc_ctype.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_ctype.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_text.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_text.cpp
new file mode 100644
index 00000000..6b4eb7fa
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_text.cpp
@@ -0,0 +1,766 @@
+/**
+ * @file UncText.cpp
+ * A simple class that handles the chunk text.
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "unc_text.h"
+
+#include "unc_ctype.h"
+#include "unicode.h" // encode_utf8()
+
+#include <algorithm>
+#include <cstdint>
+#include <stdexcept>
+
+
+using namespace std;
+
+
+static constexpr const int_fast8_t UTF8_BLOCKS = 6; // 6 -> max utf8 blocks per char
+
+
+static size_t fix_len_idx(size_t size, size_t idx, size_t len);
+
+//! converts \n and \r chars are into NL and CR UTF8 symbols before encode_utf8 is called
+static void toLogTextUtf8(int c, UncText::log_type &container);
+
+/**
+ * calculates the size a 'log_type' container needs to have in order to take
+ * in values of a 'UncText::value_type' up to idx
+ * (without \0, with symbols for the converted \n and \r chars)
+ *
+ * throws if char is greater than 0x7fffffff
+ */
+static int getLogTextUtf8Len(UncText::value_type &c0, size_t end);
+
+static int getLogTextUtf8Len(UncText::value_type &c0, size_t start, size_t end);
+
+
+static int getLogTextUtf8Len(UncText::value_type &c0, size_t start, size_t end)
+{
+ size_t c1_idx = 0;
+
+ for (size_t i = start; i < end; ++i)
+ {
+ auto ch = c0[i];
+
+ if (ch == '\n')
+ {
+ ch = 0x2424; // NL symbol
+ }
+ else if (ch == '\r')
+ {
+ ch = 0x240d; // CR symbol
+ }
+
+ if (ch < 0x80) // 1-byte sequence
+ {
+ c1_idx += 1;
+ }
+ else if (ch < 0x0800) // 2-byte sequence
+ {
+ c1_idx += 2;
+ }
+ else if (ch < 0x10000) // 3-byte sequence
+ {
+ c1_idx += 3;
+ }
+ else if (ch < 0x200000) // 4-byte sequence
+ {
+ c1_idx += 4;
+ }
+ else if (ch < 0x4000000) // 5-byte sequence
+ {
+ c1_idx += 5;
+ }
+ else if (ch <= 0x7fffffff) // 6-byte sequence
+ {
+ c1_idx += 6;
+ }
+ else
+ {
+ throw out_of_range(string(__func__) + ":" + to_string(__LINE__)
+ + " - ch value too big, can't convert to utf8");
+ }
+ }
+
+ return(c1_idx);
+} // getLogTextUTF8Len
+
+
+static int getLogTextUtf8Len(UncText::value_type &c0, size_t end)
+{
+ return(getLogTextUtf8Len(c0, 0, end));
+}
+
+
+static void toLogTextUtf8(int c, UncText::log_type &container)
+{
+ if (c == '\n')
+ {
+ c = 0x2424; // NL symbol
+ }
+ else if (c == '\r')
+ {
+ c = 0x240d; // CR symbol
+ }
+ encode_utf8(c, container);
+}
+
+
+static size_t fix_len_idx(size_t size, size_t idx, size_t len)
+{
+ if (idx >= size)
+ {
+ return(0);
+ }
+ const size_t left = size - idx;
+
+ return((len > left) ? left : len);
+}
+
+
+UncText::UncText()
+{
+ m_logtext = log_type{ '\0' };
+}
+
+
+UncText::UncText(const UncText &ref)
+{
+ set(ref);
+}
+
+
+UncText::UncText(const UncText &ref, size_t idx, size_t len)
+{
+ set(ref, idx, len);
+}
+
+
+UncText::UncText(const char *ascii_text)
+{
+ set(ascii_text);
+}
+
+
+UncText::UncText(const std::string &ascii_text)
+{
+ set(ascii_text);
+}
+
+
+UncText::UncText(const value_type &data, size_t idx, size_t len)
+{
+ set(data, idx, len);
+}
+
+
+size_t UncText::size() const
+{
+ return(m_chars.size());
+}
+
+
+UncText &UncText::operator=(int ch)
+{
+ set(ch);
+ return(*this);
+}
+
+
+UncText &UncText::operator=(const UncText &ref)
+{
+ set(ref);
+ return(*this);
+}
+
+
+UncText &UncText::operator=(const std::string &ascii_text)
+{
+ set(ascii_text);
+ return(*this);
+}
+
+
+UncText &UncText::operator=(const char *ascii_text)
+{
+ set(ascii_text);
+ return(*this);
+}
+
+
+UncText &UncText::operator+=(int ch)
+{
+ append(ch);
+ return(*this);
+}
+
+
+UncText &UncText::operator+=(const UncText &ref)
+{
+ append(ref);
+ return(*this);
+}
+
+
+UncText &UncText::operator+=(const std::string &ascii_text)
+{
+ append(ascii_text);
+ return(*this);
+}
+
+
+UncText &UncText::operator+=(const char *ascii_text)
+{
+ append(ascii_text);
+ return(*this);
+}
+
+
+const UncText::value_type &UncText::get() const
+{
+ return(m_chars);
+}
+
+
+int UncText::operator[](size_t idx) const
+{
+ return((idx < m_chars.size()) ? m_chars[idx] : 0);
+}
+
+
+const int &UncText::at(size_t idx) const
+{
+ return(m_chars.at(idx));
+}
+
+
+int &UncText::at(size_t idx)
+{
+ return(m_chars.at(idx));
+}
+
+
+const int &UncText::back() const
+{
+ return(m_chars.back());
+}
+
+
+void UncText::push_back(int ch)
+{
+ append(ch);
+}
+
+
+void UncText::pop_back()
+{
+ if (size() == 0)
+ {
+ return;
+ }
+ m_chars.pop_back();
+ update_logtext();
+}
+
+
+void UncText::pop_front()
+{
+ if (size() == 0)
+ {
+ return;
+ }
+ m_chars.pop_front();
+ update_logtext();
+}
+
+
+void UncText::update_logtext()
+{
+ // make a pessimistic guess at the size
+ m_logtext.clear();
+ m_logtext.reserve(m_chars.size() * 3);
+
+ for (int m_char : m_chars)
+ {
+ toLogTextUtf8(m_char, m_logtext);
+ }
+
+ m_logtext.push_back(0);
+}
+
+
+int UncText::compare(const UncText &ref1, const UncText &ref2, size_t len, bool tcare)
+{
+ const size_t len1 = ref1.size();
+ const size_t len2 = ref2.size();
+ const auto max_idx = std::min({ len, len1, len2 });
+ size_t idx = 0;
+
+ for ( ; idx < max_idx; idx++)
+ {
+ // exactly the same character ?
+ if (ref1.m_chars[idx] == ref2.m_chars[idx])
+ {
+ continue;
+ }
+ int diff; // Issue #2091
+
+ if (tcare)
+ {
+ diff = ref1.m_chars[idx] - ref2.m_chars[idx];
+ }
+ else
+ {
+ diff = unc_tolower(ref1.m_chars[idx]) - unc_tolower(ref2.m_chars[idx]);
+ }
+
+ if (diff == 0)
+ {
+ /*
+ * if we're comparing the same character but in different case
+ * we want to favor lower case before upper case (e.g. a before A)
+ * so the order is the reverse of ASCII order (we negate).
+ */
+ return(-(ref1.m_chars[idx] - ref2.m_chars[idx]));
+ }
+ // return the case-insensitive diff to sort alphabetically
+ return(diff);
+ }
+
+ if (idx == len)
+ {
+ return(0);
+ }
+ // underflow save: return(len1 - len2);
+ return((len1 > len2) ? (len1 - len2) : -static_cast<int>(len2 - len1));
+} // UncText::compare
+
+
+bool UncText::equals(const UncText &ref) const
+{
+ const size_t len = size();
+
+ if (ref.size() != len)
+ {
+ return(false);
+ }
+
+ for (size_t idx = 0; idx < len; idx++)
+ {
+ if (m_chars[idx] != ref.m_chars[idx])
+ {
+ return(false);
+ }
+ }
+
+ return(true);
+}
+
+
+const char *UncText::c_str() const
+{
+ return(reinterpret_cast<const char *>(&m_logtext[0]));
+}
+
+
+void UncText::set(int ch)
+{
+ m_logtext.clear();
+ toLogTextUtf8(ch, m_logtext);
+ m_logtext.push_back('\0');
+
+
+ m_chars.clear();
+ m_chars.push_back(ch);
+}
+
+
+void UncText::set(const UncText &ref)
+{
+ m_chars = ref.m_chars;
+ m_logtext = ref.m_logtext;
+}
+
+
+void UncText::set(const UncText &ref, size_t idx, size_t len)
+{
+ const auto ref_size = ref.size();
+
+ if (len == ref_size)
+ {
+ m_chars = ref.m_chars;
+ update_logtext();
+ return;
+ }
+ m_chars.resize(len);
+
+ len = fix_len_idx(ref_size, idx, len);
+
+ for (size_t di = 0;
+ len > 0;
+ di++, idx++, len--)
+ {
+ m_chars[di] = ref.m_chars[idx];
+ }
+
+ update_logtext();
+}
+
+
+void UncText::set(const string &ascii_text)
+{
+ const size_t len = ascii_text.size();
+
+ m_chars.resize(len);
+
+ for (size_t idx = 0; idx < len; idx++)
+ {
+ m_chars[idx] = ascii_text[idx];
+ }
+
+ update_logtext();
+}
+
+
+void UncText::set(const char *ascii_text)
+{
+ const size_t len = strlen(ascii_text);
+
+ m_chars.resize(len);
+
+ for (size_t idx = 0; idx < len; idx++)
+ {
+ m_chars[idx] = *ascii_text++;
+ }
+
+ update_logtext();
+}
+
+
+void UncText::set(const value_type &data, size_t idx, size_t len)
+{
+ m_chars.resize(len);
+
+ len = fix_len_idx(data.size(), idx, len);
+
+ for (size_t di = 0;
+ len > 0;
+ di++, idx++, len--)
+ {
+ m_chars[di] = data[idx];
+ }
+
+ update_logtext();
+}
+
+
+void UncText::resize(size_t new_size)
+{
+ if (size() == new_size)
+ {
+ return;
+ }
+ const auto log_new_size = getLogTextUtf8Len(m_chars, new_size);
+
+ m_logtext.resize(log_new_size + 1); // one extra for \0
+ m_logtext[log_new_size] = '\0';
+
+
+ m_chars.resize(new_size);
+}
+
+
+void UncText::clear()
+{
+ m_logtext.clear();
+ m_logtext.push_back('\0');
+
+
+ m_chars.clear();
+}
+
+
+void UncText::insert(size_t idx, int ch)
+{
+ if (idx >= m_chars.size())
+ {
+ throw out_of_range(string(__func__) + ":" + to_string(__LINE__)
+ + " - idx >= m_chars.size()");
+ }
+ log_type utf8converted;
+
+ utf8converted.reserve(UTF8_BLOCKS);
+ toLogTextUtf8(ch, utf8converted);
+
+ const auto utf8_idx = getLogTextUtf8Len(m_chars, idx);
+
+ m_logtext.pop_back(); // remove '\0'
+ m_logtext.insert(std::next(std::begin(m_logtext), utf8_idx),
+ std::begin(utf8converted), std::end(utf8converted));
+ m_logtext.push_back('\0');
+
+
+ m_chars.insert(std::next(std::begin(m_chars), idx), ch);
+}
+
+
+void UncText::insert(size_t idx, const UncText &ref)
+{
+ if (ref.size() == 0)
+ {
+ return;
+ }
+
+ if (idx >= m_chars.size())
+ {
+ throw out_of_range(string(__func__) + ":" + to_string(__LINE__)
+ + " - idx >= m_chars.size()");
+ }
+ const auto utf8_idx = getLogTextUtf8Len(m_chars, idx);
+
+ // (A+B) remove \0 from both containers, add back a single at the end
+ m_logtext.pop_back(); // A
+ m_logtext.insert(std::next(std::begin(m_logtext), utf8_idx),
+ std::begin(ref.m_logtext),
+ std::prev(std::end(ref.m_logtext))); // B
+ m_logtext.push_back('\0');
+
+
+ m_chars.insert(std::next(std::begin(m_chars), idx),
+ std::begin(ref.m_chars), std::end(ref.m_chars));
+}
+
+
+void UncText::append(int ch)
+{
+ m_logtext.pop_back();
+
+ if ( ch < 0x80
+ && ch != '\n'
+ && ch != '\r')
+ {
+ m_logtext.push_back(ch);
+ }
+ else
+ {
+ log_type utf8converted;
+ utf8converted.reserve(UTF8_BLOCKS);
+ toLogTextUtf8(ch, utf8converted);
+
+ m_logtext.insert(std::end(m_logtext),
+ std::begin(utf8converted), std::end(utf8converted));
+ }
+ m_logtext.push_back('\0');
+
+
+ m_chars.push_back(ch);
+}
+
+
+void UncText::append(const UncText &ref)
+{
+ if (ref.size() == 0)
+ {
+ return;
+ }
+ m_logtext.pop_back();
+ m_logtext.insert(std::end(m_logtext),
+ std::begin(ref.m_logtext), std::end(ref.m_logtext));
+
+ m_chars.insert(m_chars.end(), ref.m_chars.begin(), ref.m_chars.end());
+}
+
+
+void UncText::append(const string &ascii_text)
+{
+ UncText tmp(ascii_text);
+
+ append(tmp);
+}
+
+
+void UncText::append(const char *ascii_text)
+{
+ UncText tmp(ascii_text);
+
+ append(tmp);
+}
+
+
+void UncText::append(const value_type &data, size_t idx, size_t len)
+{
+ UncText tmp(data, idx, len);
+
+ append(tmp);
+}
+
+
+bool UncText::startswith(const char *text, size_t idx) const
+{
+ const auto orig_idx = idx;
+
+ for ( ;
+ ( idx < size()
+ && *text);
+ idx++, text++)
+ {
+ if (*text != m_chars[idx])
+ {
+ return(false);
+ }
+ }
+
+ return( idx != orig_idx
+ && (*text == 0));
+}
+
+
+bool UncText::startswith(const UncText &text, size_t idx) const
+{
+ size_t si = 0;
+ const auto orig_idx = idx;
+
+ for ( ;
+ ( idx < size()
+ && si < text.size());
+ idx++, si++)
+ {
+ if (text.m_chars[si] != m_chars[idx])
+ {
+ return(false);
+ }
+ }
+
+ return( idx != orig_idx
+ && (si == text.size()));
+}
+
+
+int UncText::find(const char *search_txt, size_t start_idx) const
+{
+ const size_t t_len = strlen(search_txt); // the length of 'text' we are looking for
+ const size_t s_len = size(); // the length of the string we are looking in
+
+ if ( s_len < t_len // search_txt longer than the string we are looking in
+ || start_idx + t_len - 1 >= s_len) // starting position to high to find search_txt
+ {
+ return(-1);
+ }
+ const size_t end_idx = s_len - t_len;
+
+ for (size_t idx = start_idx; idx <= end_idx; idx++)
+ {
+ bool match = true;
+
+ for (size_t ii = 0; ii < t_len; ii++)
+ {
+ if (m_chars[idx + ii] != search_txt[ii])
+ {
+ match = false;
+ break;
+ }
+ }
+
+ if (match) // 'text' found at position 'idx'
+ {
+ return(idx);
+ }
+ }
+
+ return(-1); // 'text' not found
+}
+
+
+int UncText::rfind(const char *search_txt, size_t start_idx) const
+{
+ const size_t t_len = strlen(search_txt); // the length of 'text' we are looking for
+ const size_t s_len = size(); // the length of the string we are looking in
+
+ if ( s_len < t_len // search_txt longer than the string we are looking in
+ || start_idx < t_len - 1) // starting position to low to find search_txt
+ {
+ return(-1);
+ }
+ const size_t end_idx = s_len - t_len;
+
+ if (start_idx > end_idx)
+ {
+ start_idx = end_idx;
+ }
+
+ for (auto idx = static_cast<int>(start_idx); idx >= 0; idx--)
+ {
+ bool match = true;
+
+ for (size_t ii = 0; ii < t_len; ii++)
+ {
+ if (m_chars[idx + ii] != search_txt[ii])
+ {
+ match = false;
+ break;
+ }
+ }
+
+ if (match)
+ {
+ return(idx);
+ }
+ }
+
+ return(-1);
+}
+
+
+void UncText::erase(size_t start_idx, size_t len)
+{
+ if (len == 0)
+ {
+ return;
+ }
+ const size_t end_idx = start_idx + len - 1;
+
+ if (end_idx >= m_chars.size())
+ {
+ throw out_of_range(string(__func__) + ":" + to_string(__LINE__)
+ + " - idx + len >= m_chars.size()");
+ }
+ const auto pos_s = getLogTextUtf8Len(m_chars, start_idx);
+ const auto pos_e = pos_s + getLogTextUtf8Len(m_chars, start_idx, end_idx);
+
+ m_logtext.pop_back();
+ m_logtext.erase(std::next(std::begin(m_logtext), pos_s),
+ std::next(std::begin(m_logtext), pos_e + 1));
+ m_logtext.push_back('\0');
+
+
+ m_chars.erase(std::next(std::begin(m_chars), start_idx),
+ std::next(std::begin(m_chars), end_idx + 1));
+}
+
+
+int UncText::replace(const char *search_text, const UncText &replace_text)
+{
+ const size_t s_len = strlen(search_text);
+ const size_t r_len = replace_text.size();
+
+ int rcnt = 0;
+ int fidx = find(search_text);
+
+ while (fidx >= 0)
+ {
+ rcnt++;
+ erase(static_cast<size_t>(fidx), s_len);
+
+ (static_cast<size_t>(fidx) >= m_chars.size())
+ ? append(replace_text)
+ : insert(static_cast<size_t>(fidx), replace_text);
+
+ fidx = find(search_text, static_cast<size_t>(fidx) + r_len);
+ }
+ return(rcnt);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_text.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_text.h
new file mode 100644
index 00000000..22217f3b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_text.h
@@ -0,0 +1,197 @@
+/**
+ * @file unc_text.h
+ * A simple class that handles the chunk text.
+ * At the start of processing, the entire file is decoded into a std::vector of ints.
+ * This class is intended to hold sections of that large std::vector.
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef UNC_TEXT_H_INCLUDED
+#define UNC_TEXT_H_INCLUDED
+
+#include "base_types.h"
+
+#include <deque>
+#include <string>
+#include <vector>
+
+
+/**
+ * abbreviations used:
+ * - unc_text - uncrustify text
+ */
+
+class UncText
+{
+public:
+ typedef std::deque<int> value_type; // double encoded list of int values
+ typedef std::vector<UINT8> log_type;
+
+
+ UncText();
+
+ UncText(const UncText &ref);
+
+ UncText(const UncText &ref, size_t idx, size_t len = 0);
+
+ UncText(const char *ascii_text);
+
+ UncText(const std::string &ascii_text);
+
+ UncText(const value_type &data, size_t idx = 0, size_t len = 0);
+
+
+ ~UncText() = default;
+
+
+ void resize(size_t new_size);
+
+
+ void clear();
+
+
+ //! grab the number of characters
+ size_t size() const;
+
+
+ void set(int ch);
+
+ void set(const UncText &ref);
+
+ void set(const UncText &ref, size_t idx, size_t len = 0);
+
+ void set(const std::string &ascii_text);
+
+ void set(const char *ascii_text);
+
+ void set(const value_type &data, size_t idx = 0, size_t len = 0);
+
+
+ UncText &operator=(int ch);
+
+ UncText &operator=(const UncText &ref);
+
+ UncText &operator=(const std::string &ascii_text);
+
+ UncText &operator=(const char *ascii_text);
+
+
+ void insert(size_t idx, int ch);
+
+ void insert(size_t idx, const UncText &ref);
+
+
+ void erase(size_t idx, size_t len = 1);
+
+
+ //! Add a unc_text character to an unc_text
+ void append(int ch);
+
+ void append(const UncText &ref);
+
+ //! Add a string to an unc_text
+ void append(const std::string &ascii_text);
+
+ /**
+ * Add a variable length string to an unc_text.
+ * The variable length string format is similar as for printf
+ *
+ * @note the overall length of the string must not exceed 256 characters
+ *
+ * @param ascii_text a variable length string
+ */
+ void append(const char *ascii_text);
+
+ void append(const value_type &data, size_t idx = 0, size_t len = 0);
+
+
+ UncText &operator+=(int ch);
+
+ UncText &operator+=(const UncText &ref);
+
+ UncText &operator+=(const std::string &ascii_text);
+
+ UncText &operator+=(const char *ascii_text);
+
+
+ //! Returns the UTF-8 string for logging
+ const char *c_str() const;
+
+
+ /**
+ * compares the content of two unc_text instances
+ *
+ * @param ref1 first instance to compare
+ * @param ref2 second instance to compare
+ * @param len number of character to compare
+ * @param tcare take care of case (lower case/ upper case) Issue #2091
+ *
+ * @retval == 0 both text elements are equal
+ * @retval > 0
+ * @retval < 0
+ */
+ static int compare(const UncText &ref1, const UncText &ref2, size_t len = 0, bool tcare = false);
+
+
+ bool equals(const UncText &ref) const;
+
+
+ //! grab the data as a series of ints for outputting to a file
+ const value_type &get() const;
+
+
+ int operator[](size_t idx) const;
+
+
+ // throws an exception if out of bounds
+ const int &at(size_t idx) const;
+ int &at(size_t idx);
+
+
+ //! returns the last element of the character list
+ const int &back() const;
+
+
+ void push_back(int ch);
+
+
+ void pop_back();
+
+
+ void pop_front();
+
+
+ bool startswith(const UncText &text, size_t idx = 0) const;
+
+ bool startswith(const char *text, size_t idx = 0) const;
+
+
+ /**
+ * look for 'text', beginning with position 'idx'
+ *
+ * @param text text to search for
+ * @param idx position to start search
+ *
+ * @return == -1 if not found
+ * @return >= 0 the position
+ */
+ int find(const char *text, size_t idx = 0) const;
+
+
+ int rfind(const char *text, size_t idx = 0) const;
+
+
+ int replace(const char *oldtext, const UncText &newtext);
+
+
+protected:
+ void update_logtext();
+
+ value_type m_chars; //! this contains the non-encoded 31-bit chars
+ log_type m_logtext; //! logging text, utf8 encoded - updated in c_str()
+};
+
+
+#endif /* UNC_TEXT_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_tools.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_tools.cpp
new file mode 100644
index 00000000..0da2bdd3
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_tools.cpp
@@ -0,0 +1,722 @@
+/**
+ * @file unc_tools.cpp
+ * This file contains lot of tools for debugging
+ *
+ * @author Guy Maurel
+ * October 2015- 2023
+ * @license GPL v2+
+ */
+
+#include "unc_tools.h"
+
+#include "args.h"
+#include "output.h"
+
+constexpr static auto LCURRENT = LGUY;
+
+/*
+ * the test suite Coveralls: https://coveralls.io
+ * will complains because these functions are only
+ * used at development time.
+ * Don't worry about unused lines for the functions:
+ * prot_the_line
+ * prot_the_source
+ * examine_Data
+ * dump_out
+ * dump_in
+ */
+
+static size_t counter = 0;
+static size_t tokenCounter;
+
+
+/* protocol of the line
+ * examples:
+ * prot_the_line(__func__, __LINE__, pc->GetOrigLine(), 0);
+ * prot_the_line(__func__, __LINE__, 0, 0);
+ * prot_the_line(__func__, __LINE__, 6, 5);
+ * prot_the_source(__LINE__);
+ * log_pcf_flags(LSYS, pc->GetFlags());
+ *
+ * if actual_line is zero, use the option debug_line_number_to_protocol.
+ * if the value is zero, don't make any protocol and return.
+ *
+ * if partNumber is zero, all the tokens of the line are shown,
+ * if partNumber is NOT zero, only the token with this partNumber is shown.
+ *
+ * prot_the_line_pc(pc_sub, __func__, __LINE__, 6, 5);
+ * to get a protocol of a sub branch, which begins with pc_sub
+ */
+void prot_the_line(const char *func_name, int theLine, unsigned int actual_line, size_t partNumber)
+{
+ prot_the_line_pc(Chunk::GetHead(), func_name, theLine, actual_line, partNumber);
+}
+
+
+void prot_the_line_pc(Chunk *pc_sub, const char *func_name, int theLine, unsigned int actual_line, size_t partNumber)
+{
+ if (actual_line == 0)
+ {
+ // use the option debug_line_number_to_protocol.
+ actual_line = options::debug_line_number_to_protocol();
+
+ if (actual_line == 0)
+ {
+ // don't make any protocol.
+ return;
+ }
+ }
+ counter++;
+ tokenCounter = 0;
+ LOG_FMT(LGUY, "Prot_the_line:(%s:%d)(%zu)\n", func_name, theLine, counter);
+
+ for (Chunk *pc = pc_sub; pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if (pc->GetOrigLine() == actual_line)
+ {
+ tokenCounter++;
+
+ if ( partNumber == 0
+ || partNumber == tokenCounter)
+ {
+ LOG_FMT(LGUY, " orig line is %d, (%zu) ", actual_line, tokenCounter);
+
+ if (pc->Is(CT_VBRACE_OPEN))
+ {
+ LOG_FMT(LGUY, "<VBRACE_OPEN>, ");
+ }
+ else if (pc->Is(CT_NEWLINE))
+ {
+ LOG_FMT(LGUY, "<NL>(new line count is %zu), ", pc->GetNlCount());
+ }
+ else if (pc->Is(CT_VBRACE_CLOSE))
+ {
+ LOG_FMT(LGUY, "<CT_VBRACE_CLOSE>, ");
+ }
+ else if (pc->Is(CT_VBRACE_OPEN))
+ {
+ LOG_FMT(LGUY, "<CT_VBRACE_OPEN>, ");
+ }
+ else if (pc->Is(CT_SPACE))
+ {
+ LOG_FMT(LGUY, "<CT_SPACE>, ");
+ }
+ else if (pc->Is(CT_IGNORED))
+ {
+ LOG_FMT(LGUY, "<IGNORED> ");
+ }
+ else
+ {
+ LOG_FMT(LGUY, "Text() '%s', ", pc->Text());
+ }
+ LOG_FMT(LGUY, " column is %zu, pp level is %zu, type is %s, parent type is %s, orig col is %zu,",
+ pc->GetColumn(), pc->GetPpLevel(), get_token_name(pc->GetType()),
+ get_token_name(pc->GetParentType()), pc->GetOrigCol());
+
+ if (pc->Is(CT_IGNORED))
+ {
+ LOG_FMT(LGUY, "\n");
+ }
+ else
+ {
+ LOG_FMT(LGUY, " pc->GetFlags(): ");
+ log_pcf_flags(LGUY, pc->GetFlags());
+ }
+
+ if (pc->Is(CT_COND_COLON))
+ {
+ Chunk *pa = pc->GetParent();
+ LOG_FMT(LGUY, "<> pa-type is %s, orig_line is %zu\n", get_token_name(pa->GetType()), pa->GetOrigLine());
+ }
+
+ if (pc->GetTrackingData() != nullptr)
+ {
+ LOG_FMT(LGUY, " Tracking info are: \n");
+ LOG_FMT(LGUY, " number of track(s) %zu\n", pc->GetTrackingData()->size());
+
+ for (size_t track = 0; track < pc->GetTrackingData()->size(); track++)
+ {
+ const TrackList *A = pc->GetTrackingData();
+ const TrackNumber B = A->at(track);
+ size_t Bfirst = B.first;
+ char *Bsecond = B.second;
+
+ LOG_FMT(LGUY, " %zu, tracking number is %zu\n", track, Bfirst);
+ LOG_FMT(LGUY, " %zu, rule is %s\n", track, Bsecond);
+ }
+ }
+ }
+ }
+ }
+
+ LOG_FMT(LGUY, "\n");
+} // prot_the_line_pc
+
+
+void prot_the_columns(int theLine, unsigned int actual_line)
+{
+ if (actual_line == 0)
+ {
+ // use the option debug_line_number_to_protocol.
+ actual_line = options::debug_line_number_to_protocol();
+
+ if (actual_line == 0)
+ {
+ // don't make any protocol.
+ return;
+ }
+ }
+ counter++;
+ LOG_FMT(LGUY, "%4d:", theLine);
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if (pc->GetOrigLine() == actual_line)
+ {
+ LOG_FMT(LGUY, "%4zu,",
+ pc->GetColumn());
+ }
+ }
+
+ LOG_FMT(LGUY, " (%2zu)\n", counter);
+} // prot_the_columns
+
+
+void prot_the_OrigCols(int theLine, unsigned int actual_line)
+{
+ if (actual_line == 0)
+ {
+ // use the option debug_line_number_to_protocol.
+ actual_line = options::debug_line_number_to_protocol();
+
+ if (actual_line == 0)
+ {
+ // don't make any protocol.
+ return;
+ }
+ }
+ counter++;
+ LOG_FMT(LGUY, "%4d:", theLine);
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if (pc->GetOrigLine() == actual_line)
+ {
+ LOG_FMT(LGUY, "%4zu,",
+ pc->GetOrigCol());
+ }
+ }
+
+ LOG_FMT(LGUY, " (%2zu)\n", counter);
+} // prot_the_OrigCols
+
+
+void rebuild_the_line(int theLine, unsigned int actual_line, bool increment)
+{
+#define MANY 1000
+
+ if (actual_line == 0)
+ {
+ // use the option debug_line_number_to_protocol.
+ actual_line = options::debug_line_number_to_protocol();
+
+ if (actual_line == 0)
+ {
+ // don't make any protocol.
+ return;
+ }
+ }
+ char rebuildLine[MANY];
+ char virtualLine[MANY];
+
+ // fill the array
+ for (size_t where = 0; where < MANY; where++)
+ {
+ rebuildLine[where] = ' ';
+ virtualLine[where] = '_';
+ }
+
+ rebuildLine[MANY - 1] = '\0';
+ virtualLine[MANY - 1] = '\0';
+ LOG_FMT(LGUY, "%4d:", theLine);
+
+ size_t len0 = 0;
+ bool has_a_virtual_brace;
+ has_a_virtual_brace = false;
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if (pc->GetOrigLine() == actual_line)
+ {
+ if (pc->Is(CT_NEWLINE))
+ {
+ size_t col = pc->GetColumn();
+ size_t len1 = pc->Len();
+ len0 = col + len1 - 1;
+ rebuildLine[len0] = '\0';
+ virtualLine[len0] = '\0';
+ break;
+ }
+ else if ( pc->Is(CT_VBRACE_OPEN)
+ || pc->Is(CT_VBRACE_CLOSE))
+ {
+ has_a_virtual_brace = true;
+ size_t col = pc->GetOrigCol();
+ virtualLine[col - 1] = 'V';
+ }
+ else
+ {
+ size_t col = pc->GetColumn();
+ size_t len1 = pc->Len();
+ const char *A = pc->Text();
+
+ for (size_t x = 0; x < len1; x++)
+ {
+ char B = A[x];
+
+ if (col + x >= MANY)
+ {
+ LOG_FMT(LGUY, " ***** MANY is too little for this line %d\n", theLine);
+ exit(EX_SOFTWARE);
+ }
+ rebuildLine[col + x - 1] = B;
+ }
+ }
+ }
+ }
+
+ if (increment)
+ {
+ counter++;
+ }
+ LOG_FMT(LGUY, "%s , counter is %zu\n", rebuildLine, counter);
+
+ if (has_a_virtual_brace)
+ {
+ LOG_FMT(LGUY, "VIRT:%s\n", virtualLine);
+ }
+} // rebuild_the_line
+
+
+void prot_all_lines(const char *func_name, int theLine)
+{
+ counter++;
+ tokenCounter = 0;
+ size_t lineNumber = 1;
+
+ LOG_FMT(LGUY, "Prot_all_lines:(%s:%d)(%zu)\n", func_name, theLine, counter);
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ tokenCounter++;
+
+ LOG_FMT(LGUY, " orig line is %zu,%zu, pp level is %zu, ", lineNumber, tokenCounter, pc->GetPpLevel());
+
+ if (pc->Is(CT_VBRACE_OPEN))
+ {
+ LOG_FMT(LGUY, "<VBRACE_OPEN>, ");
+ }
+ else if (pc->Is(CT_NEWLINE))
+ {
+ LOG_FMT(LGUY, "<NL>(new line count is %zu), ", pc->GetNlCount());
+ tokenCounter = 0;
+ lineNumber = lineNumber + pc->GetNlCount();
+ }
+ else if (pc->Is(CT_VBRACE_CLOSE))
+ {
+ LOG_FMT(LGUY, "<CT_VBRACE_CLOSE>, ");
+ }
+ else if (pc->Is(CT_VBRACE_OPEN))
+ {
+ LOG_FMT(LGUY, "<CT_VBRACE_OPEN>, ");
+ }
+ else if (pc->Is(CT_SPACE))
+ {
+ LOG_FMT(LGUY, "<CT_SPACE>, ");
+ }
+ else if (pc->Is(CT_IGNORED))
+ {
+ LOG_FMT(LGUY, "<IGNORED> ");
+ }
+ else
+ {
+ LOG_FMT(LGUY, "Text() '%s', ", pc->Text());
+ }
+ LOG_FMT(LGUY, " column is %zu, type is %s\n",
+ pc->GetColumn(), get_token_name(pc->GetType()));
+ }
+} // prot_all_lines
+
+
+void prot_the_source(int theLine)
+{
+ counter++;
+ LOG_FMT(LGUY, "Prot_the_source:(%d)(%zu)\n", theLine, counter);
+ output_text(stderr);
+}
+
+
+// examples:
+// examine_Data(__func__, __LINE__, n);
+void examine_Data(const char *func_name, int theLine, int what)
+{
+ LOG_FMT(LGUY, "\n%s:", func_name);
+
+ Chunk *pc;
+
+ switch (what)
+ {
+ case 1:
+
+ for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if ( pc->Is(CT_SQUARE_CLOSE)
+ || pc->Is(CT_TSQUARE))
+ {
+ LOG_FMT(LGUY, "\n");
+ LOG_FMT(LGUY, "1:(%d),", theLine);
+ LOG_FMT(LGUY, "%s, orig col=%zu, orig col end=%zu\n", pc->Text(), pc->GetOrigCol(), pc->GetOrigColEnd());
+ }
+ }
+
+ break;
+
+ case 2:
+ LOG_FMT(LGUY, "2:(%d)\n", theLine);
+
+ for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if (pc->GetOrigLine() == 7)
+ {
+ if (pc->Is(CT_NEWLINE))
+ {
+ LOG_FMT(LGUY, "(%zu)<NL> col=%zu\n\n", pc->GetOrigLine(), pc->GetOrigCol());
+ }
+ else
+ {
+ LOG_FMT(LGUY, "(%zu)%s %s, col=%zu, column=%zu\n", pc->GetOrigLine(), pc->Text(), get_token_name(pc->GetType()), pc->GetOrigCol(), pc->GetColumn());
+ }
+ }
+ }
+
+ break;
+
+ case 3:
+ LOG_FMT(LGUY, "3:(%d)\n", theLine);
+
+ for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if (pc->Is(CT_NEWLINE))
+ {
+ LOG_FMT(LGUY, "(%zu)<NL> col=%zu\n\n", pc->GetOrigLine(), pc->GetOrigCol());
+ }
+ else
+ {
+ LOG_FMT(LGUY, "(%zu)%s %s, col=%zu, column=%zu\n", pc->GetOrigLine(), pc->Text(), get_token_name(pc->GetType()), pc->GetOrigCol(), pc->GetColumn());
+ }
+ }
+
+ break;
+
+ case 4:
+ LOG_FMT(LGUY, "4:(%d)\n", theLine);
+
+ for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if (pc->GetOrigLine() == 6)
+ {
+ if (pc->Is(CT_NEWLINE))
+ {
+ LOG_FMT(LGUY, "(%zu)<NL> col=%zu\n\n", pc->GetOrigLine(), pc->GetOrigCol());
+ }
+ else
+ {
+ LOG_FMT(LGUY, "(%zu)%s %s, col=%zu, column=%zu\n", pc->GetOrigLine(), pc->Text(), get_token_name(pc->GetType()), pc->GetOrigCol(), pc->GetColumn());
+ }
+ }
+ }
+
+ break;
+
+ default:
+ break;
+ } // switch
+} // examine_Data
+
+
+void dump_out(unsigned int type)
+{
+ char dumpFileName[300];
+
+ if (cpd.dumped_file == nullptr)
+ {
+ sprintf(dumpFileName, "%s.%u", cpd.filename.c_str(), type);
+ }
+ else
+ {
+ sprintf(dumpFileName, "%s.%u", cpd.dumped_file, type);
+ }
+ FILE *D_file = fopen(dumpFileName, "w");
+
+ if (D_file != nullptr)
+ {
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ fprintf(D_file, "[%p]\n", pc);
+ fprintf(D_file, " type %s\n", get_token_name(pc->GetType()));
+ fprintf(D_file, " orig line %zu\n", pc->GetOrigLine());
+ fprintf(D_file, " orig col %zu\n", pc->GetOrigCol());
+ fprintf(D_file, " orig col end %zu\n", pc->GetOrigColEnd());
+
+ if (pc->GetOrigPrevSp() != 0)
+ {
+ fprintf(D_file, " orig prev sp %zu\n", pc->GetOrigPrevSp());
+ }
+
+ if (pc->GetColumn() != 0)
+ {
+ fprintf(D_file, " column %zu\n", pc->GetColumn());
+ }
+
+ if (pc->GetColumnIndent() != 0)
+ {
+ fprintf(D_file, " column indent %zu\n", pc->GetColumnIndent());
+ }
+
+ if (pc->GetNlCount() != 0)
+ {
+ fprintf(D_file, " nl_count %zu\n", pc->GetNlCount());
+ }
+
+ if (pc->GetLevel() != 0)
+ {
+ fprintf(D_file, " level %zu\n", pc->GetLevel());
+ }
+
+ if (pc->GetBraceLevel() != 0)
+ {
+ fprintf(D_file, " brace level %zu\n", pc->GetBraceLevel());
+ }
+
+ if (pc->GetPpLevel() != 0)
+ {
+ fprintf(D_file, " pp level %zu\n", pc->GetPpLevel());
+ }
+
+ if (pc->GetAfterTab() != 0)
+ {
+ fprintf(D_file, " after tab %d\n", pc->GetAfterTab());
+ }
+
+ if (pc->IsNot(CT_NEWLINE))
+ {
+ fprintf(D_file, " Text %s\n", pc->Text());
+ }
+ }
+
+ fclose(D_file);
+ }
+} // dump_out
+
+
+void dump_in(unsigned int type)
+{
+ char buffer[256];
+ bool aNewChunkIsFound = false;
+ Chunk chunk;
+ char dumpFileName[300];
+
+ if (cpd.dumped_file == nullptr)
+ {
+ sprintf(dumpFileName, "%s.%u", cpd.filename.c_str(), type);
+ }
+ else
+ {
+ sprintf(dumpFileName, "%s.%u", cpd.dumped_file, type);
+ }
+ FILE *D_file = fopen(dumpFileName, "r");
+
+ if (D_file != nullptr)
+ {
+ unsigned int lineNumber = 0;
+
+ while (fgets(buffer, sizeof(buffer), D_file) != nullptr)
+ {
+ ++lineNumber;
+
+ if (aNewChunkIsFound)
+ {
+ // look for the next chunk
+ char first = buffer[0];
+
+ if (first == '[')
+ {
+ aNewChunkIsFound = false;
+ // add the chunk in the list
+ chunk.CopyAndAddBefore(Chunk::NullChunkPtr);
+ chunk.Reset();
+ aNewChunkIsFound = true;
+ continue;
+ }
+ // the line as the form
+ // part value
+ // Split the line
+ const int max_parts_count = 3;
+ char *parts[max_parts_count];
+ int parts_count = Args::SplitLine(buffer, parts, max_parts_count - 1);
+
+ if (parts_count != 2)
+ {
+ exit(EX_SOFTWARE);
+ }
+
+ if (strcasecmp(parts[0], "type") == 0)
+ {
+ E_Token tokenName = find_token_name(parts[1]);
+ chunk.SetType(tokenName);
+ }
+ else if (strcasecmp(parts[0], "orig line") == 0)
+ {
+ chunk.SetOrigLine(strtol(parts[1], nullptr, 0));
+ }
+ else if (strcasecmp(parts[0], "orig col") == 0)
+ {
+ chunk.SetOrigCol(strtol(parts[1], nullptr, 0));
+ }
+ else if (strcasecmp(parts[0], "orig col end") == 0)
+ {
+ chunk.SetOrigColEnd(strtol(parts[1], nullptr, 0));
+ }
+ else if (strcasecmp(parts[0], "orig prev sp") == 0)
+ {
+ chunk.SetOrigPrevSp(strtol(parts[1], nullptr, 0));
+ }
+ else if (strcasecmp(parts[0], "column") == 0)
+ {
+ chunk.SetColumn(strtol(parts[1], nullptr, 0));
+ }
+ else if (strcasecmp(parts[0], "nl_count") == 0)
+ {
+ chunk.SetNlCount(strtol(parts[1], nullptr, 0));
+ }
+ else if (strcasecmp(parts[0], "text") == 0)
+ {
+ if (chunk.GetType() != CT_NEWLINE)
+ {
+ chunk.Str() = parts[1];
+ }
+ }
+ else
+ {
+ fprintf(stderr, "on line=%d, for '%s'\n", lineNumber, parts[0]);
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ }
+ else
+ {
+ // look for a new chunk
+ char first = buffer[0];
+
+ if (first == '[')
+ {
+ aNewChunkIsFound = true;
+ chunk.Reset();
+ }
+ }
+ }
+ // add the last chunk in the list
+ chunk.CopyAndAddBefore(Chunk::NullChunkPtr);
+ fclose(D_file);
+ }
+ else
+ {
+ fprintf(stderr, "FATAL: file not found '%s'\n", dumpFileName);
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+} // dump_in
+
+
+size_t number = 0;
+
+
+size_t get_A_Number()
+{
+ number = number + 1;
+ return(number);
+}
+
+
+void dump_keyword_for_lang(size_t language_count, chunk_tag_t *keyword_for_lang)
+{
+ LOG_FMT(LDYNKW, "%s: tag type flags\n", __func__);
+
+ for (size_t ii = 0; ii < language_count; ii++)
+ {
+ std::bitset<16> bit_a;
+ bit_a = keyword_for_lang[ii].lang_flags;
+ std::string g_a;
+ g_a = bit_a.to_string();
+ LOG_FMT(LDYNKW, "%s: %3zu: %18s, %14s, %12ld, %16s, %s\n",
+ __func__, ii,
+ keyword_for_lang[ii].tag, get_token_name(keyword_for_lang[ii].type),
+ (long)keyword_for_lang[ii].lang_flags,
+ g_a.data(),
+ language_name_from_flags(keyword_for_lang[ii].lang_flags));
+ }
+}
+
+
+void dump_step(const char *filename, const char *step_description)
+{
+ static int file_num = 0;
+ char buffer[256];
+ FILE *dump_file;
+
+ if ( filename == nullptr
+ || strlen(filename) == 0)
+ {
+ return;
+ }
+
+ // On the first call, also save the options in use
+ if (file_num == 0)
+ {
+ snprintf(buffer, 256, "New dump file: %s_%03d.log - Options in use", filename, file_num);
+ log_rule_B(buffer);
+
+ snprintf(buffer, 256, "%s_%03d.log", filename, file_num);
+ ++file_num;
+
+ dump_file = fopen(buffer, "wb");
+
+ if (dump_file != nullptr)
+ {
+ save_option_file(dump_file, false, true);
+ fclose(dump_file);
+ }
+ }
+ snprintf(buffer, 256, "New dump file: %s_%03d.log - %s", filename, file_num, step_description);
+ log_rule_B(buffer);
+
+ snprintf(buffer, 256, "%s_%03d.log", filename, file_num);
+ ++file_num;
+
+ dump_file = fopen(buffer, "wb");
+
+ if (dump_file != nullptr)
+ {
+ fprintf(dump_file, "STEP: %s\n--------------\n", step_description);
+ output_parsed(dump_file, false);
+ fclose(dump_file);
+ }
+} // dump_step
+
+char dump_file_name[80];
+
+
+void set_dump_file_name(const char *name)
+{
+ sprintf(dump_file_name, "%s", name);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_tools.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_tools.h
new file mode 100644
index 00000000..6cae2ff6
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unc_tools.h
@@ -0,0 +1,66 @@
+/**
+ * @file unc_tools.h
+ *
+ * @author Guy Maurel
+ * October 2015, 2023
+ * @license GPL v2+
+ */
+
+#ifndef UNC_TOOLS_H_INCLUDED
+#define UNC_TOOLS_H_INCLUDED
+
+#include "prototypes.h"
+
+#if defined DEBUG
+#define PROT_THE_LINE prot_the_line(__func__, __LINE__, 0, 0);
+#else
+#define PROT_THE_LINE /* do nothing */;
+#endif
+
+extern char dump_file_name[80];
+
+void set_dump_file_name(const char *name);
+
+
+void prot_the_line(const char *func_name, int theLine, unsigned int actual_line, size_t partNumber);
+
+
+void prot_the_line_pc(Chunk *pc_sub, const char *func_name, int theLine, unsigned int actual_line, size_t partNumber);
+
+
+void prot_all_lines(const char *func_name, int theLine);
+
+
+void prot_the_source(int theLine);
+
+
+void prot_the_columns(int theLine, unsigned int actual_line);
+
+
+void prot_the_OrigCols(int theLine, unsigned int actual_line);
+
+
+void rebuild_the_line(int theLine, unsigned int actual_line, bool increment = true);
+
+
+void examine_Data(const char *func_name, int theLine, int what);
+
+
+//! dump the chunk list to a file
+void dump_out(unsigned int type);
+
+
+//! create chunk list from a file
+void dump_in(unsigned int type);
+
+
+size_t get_A_Number();
+
+
+void dump_keyword_for_lang(size_t language_count, chunk_tag_t *keyword_for_lang);
+
+//! This save the next formatting step to a file
+void dump_step(const char *filename, const char *description);
+
+
+#endif /* UNC_TOOLS_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify.cpp
new file mode 100644
index 00000000..0a7bda62
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify.cpp
@@ -0,0 +1,2537 @@
+/**
+ * @file uncrustify.cpp
+ * This file takes an input C/C++/D/Java file and reformats it.
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#define DEFINE_CHAR_TABLE
+
+#include "uncrustify.h"
+
+#include "align.h"
+#include "align_nl_cont.h"
+#include "align_preprocessor.h"
+#include "align_trailing_comments.h"
+#include "args.h"
+#include "backup.h"
+#include "brace_cleanup.h"
+#include "braces.h"
+#include "change_int_types.h"
+#include "combine.h"
+#include "compat.h"
+#include "detect.h"
+#include "enum_cleanup.h"
+#include "indent.h"
+#include "keywords.h"
+#include "lang_pawn.h"
+#include "language_names.h"
+#include "mark_functor.h"
+#include "mark_question_colon.h"
+#include "newlines.h"
+#include "output.h"
+#include "parameter_pack_cleanup.h"
+#include "parens.h"
+#include "parent_for_pp.h"
+#include "remove_duplicate_include.h"
+#include "remove_extra_returns.h"
+#include "rewrite_infinite_loops.h"
+#include "semicolons.h"
+#include "sorting.h"
+#include "space.h"
+#include "token_names.h"
+#include "tokenize.h"
+#include "tokenize_cleanup.h"
+#include "unc_ctype.h"
+#include "unc_tools.h"
+#include "uncrustify_version.h"
+#include "unicode.h"
+#include "universalindentgui.h"
+#include "width.h"
+
+#include <cerrno>
+#include <fcntl.h>
+#include <map>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_STRINGS_H
+#include <strings.h> // provides strcasecmp()
+#endif
+#ifdef HAVE_UTIME_H
+#include <time.h>
+#endif
+
+
+// VS throws an error if an attribute newer than the requested standard level
+// is used; everyone else just ignores it (or warns) like they are supposed to
+
+#if __cplusplus >= 201703L
+#define NODISCARD [[nodiscard]]
+#elif defined (__has_cpp_attribute)
+#if __has_cpp_attribute(nodiscard)
+#define NODISCARD [[nodiscard]]
+#else
+#define NODISCARD
+#endif
+#else
+#define NODISCARD
+#endif
+
+constexpr static auto LCURRENT = LUNC;
+
+using namespace std;
+using namespace uncrustify;
+
+
+// Global data
+cp_data_t cpd;
+
+
+/**
+ * Find the language for the file extension
+ * Defaults to C
+ *
+ * @param filename The name of the file
+ * @return LANG_xxx
+ */
+//static size_t language_flags_from_filename(const char *filename);
+
+
+static bool read_stdin(file_mem &fm);
+
+
+static void uncrustify_start(const deque<int> &data);
+
+
+/**
+ * Does a source file.
+ *
+ * @param filename_in the file to read
+ * @param filename_out nullptr (stdout) or the file to write
+ * @param parsed_file nullptr or the filename for the parsed debug info
+ * @param dump_file nullptr or the filename prefix for dumping formatting steps debug info
+ * @param no_backup don't create a backup, if filename_out == filename_in
+ * @param keep_mtime don't change the mtime (dangerous)
+ * @param is_quiet whether output should be quiet
+ */
+static void do_source_file(const char *filename_in, const char *filename_out, const char *parsed_file, const char *dump_file, bool no_backup, bool keep_mtime, bool is_quiet);
+
+
+static void add_file_header();
+
+
+static void add_file_footer();
+
+
+static void add_func_header(E_Token type, file_mem &fm);
+
+
+static void add_msg_header(E_Token type, file_mem &fm);
+
+
+static void process_source_list(const char *source_list, const char *prefix, const char *suffix, bool no_backup, bool keep_mtime, bool is_quiet);
+
+
+static const char *make_output_filename(char *buf, size_t buf_size, const char *filename, const char *prefix, const char *suffix);
+
+
+//! compare the content of two files
+static bool file_content_matches(const string &filename1, const string &filename2);
+
+
+static bool bout_content_matches(const file_mem &fm, bool report_status, bool is_quiet);
+
+
+/**
+ * Loads a file into memory
+ *
+ * @param filename name of file to load
+ *
+ * @retval true file was loaded successfully
+ * @retval false file could not be loaded
+ */
+static int load_mem_file(const char *filename, file_mem &fm);
+
+
+/**
+ * Try to load the file from the config folder first and then by name
+ *
+ * @param filename name of file to load
+ *
+ * @retval true file was loaded successfully
+ * @retval false file could not be loaded
+ */
+static int load_mem_file_config(const std::string &filename, file_mem &fm);
+
+
+//! print uncrustify version number and terminate
+static void version_exit();
+
+
+const char *path_basename(const char *path)
+{
+ if (path == nullptr)
+ {
+ return("");
+ }
+ const char *last_path = path;
+ char ch;
+
+ while ((ch = *path) != 0) // check for end of string
+ {
+ path++;
+
+ // Check both slash types to support Linux and Windows
+ if ( (ch == '/')
+ || (ch == '\\'))
+ {
+ last_path = path;
+ }
+ }
+ return(last_path);
+}
+
+
+int path_dirname_len(const char *filename)
+{
+ if (filename == nullptr)
+ {
+ return(0);
+ }
+ // subtracting addresses like this works only on big endian systems
+ return(static_cast<int>(path_basename(filename) - filename));
+}
+
+
+void usage_error(const char *msg)
+{
+ if (msg != nullptr)
+ {
+ fprintf(stderr, "%s\n", msg);
+ log_flush(true);
+ }
+ fprintf(stderr, "Try running with -h for usage information\n");
+ log_flush(true);
+}
+
+
+static void tease()
+{
+ fprintf(stdout,
+ "There are currently %zu options and minimal documentation.\n"
+ "Try UniversalIndentGUI and good luck.\n", get_option_count());
+}
+
+
+void usage(const char *argv0)
+{
+ fprintf(stdout,
+ "Usage:\n"
+ "%s [options] [files ...]\n"
+ "\n"
+ "If no input files are specified, the input is read from stdin\n"
+ "If reading from stdin, you should specify the language using -l\n"
+ "or specify a filename using --assume for automatic language detection.\n"
+ "\n"
+ "If -F is used or files are specified on the command line,\n"
+ "the output filename is 'prefix/filename' + suffix\n"
+ "\n"
+ "When reading from stdin or doing a single file via the '-f' option,\n"
+ "the output is dumped to stdout, unless redirected with -o FILE.\n"
+ "\n"
+ "Errors are always dumped to stderr\n"
+ "\n"
+ "The '-f' and '-o' options may not be used with '-F' or '--replace'.\n"
+ "The '--prefix' and '--suffix' options may not be used with '--replace'.\n"
+ "\n"
+ "Basic Options:\n"
+ " -c CFG : Use the config file CFG, or defaults if CFG is set to '-'.\n"
+ " -f FILE : Process the single file FILE (output to stdout, use with -o).\n"
+ " -o FILE : Redirect stdout to FILE.\n"
+ " -F FILE : Read files to process from FILE, one filename per line (- is stdin).\n"
+ " --check : Do not output the new text, instead verify that nothing changes when\n"
+ " the file(s) are processed.\n"
+ " The status of every file is printed to stderr.\n"
+ " The exit code is EXIT_SUCCESS if there were no changes, EXIT_FAILURE otherwise.\n"
+ " files : Files to process (can be combined with -F).\n"
+ " --suffix SFX : Append SFX to the output filename. The default is '.uncrustify'\n"
+ " --prefix PFX : Prepend PFX to the output filename path.\n"
+ " --replace : Replace source files (creates a backup).\n"
+ " --no-backup : Do not create backup and md5 files. Useful if files are under source control.\n"
+ " --if-changed : Write to stdout (or create output FILE) only if a change was detected.\n"
+#ifdef HAVE_UTIME_H
+ " --mtime : Preserve mtime on replaced files.\n"
+#endif
+ " -l : Language override: C, CPP, D, CS, JAVA, PAWN, OC, OC+, VALA.\n"
+ " -t : Load a file with types (usually not needed).\n"
+ " -q : Quiet mode - no output on stderr (-L will override).\n"
+ " --frag : Code fragment, assume the first line is indented correctly.\n"
+ " --assume FN : Uses the filename FN for automatic language detection if reading\n"
+ " from stdin unless -l is specified.\n"
+ "\n"
+ "Config/Help Options:\n"
+ " -h -? --help --usage : Print this message and exit.\n"
+ " --version : Print the version and exit.\n"
+ " --count-options : Print the number of available options and exit.\n"
+ " --show-config : Print out option documentation and exit.\n"
+ " --update-config : Output a new config file. Use with -o FILE.\n"
+ " --update-config-with-doc : Output a new config file. Use with -o FILE.\n"
+ " --universalindent : Output a config file for Universal Indent GUI.\n"
+ " --detect : Detects the config from a source file. Use with '-f FILE'.\n"
+ " Detection is fairly limited.\n"
+ " --set <option>=<value> : Sets a new value to a config option.\n"
+ "\n"
+ "Debug Options:\n"
+ " -p FILE : Dump debug info into FILE, or to stdout if FILE is set to '-'.\n"
+ " Must be used in combination with '-f FILE'\n"
+ " -ds FILE : Dump parsing info at various moments of the formatting process.\n"
+ " --dump-steps FILE This creates a series of files named 'FILE_nnn.log', each\n"
+ " corresponding to a formatting step in uncrustify.\n"
+ " The file 'FILE_000.log' lists the formatting options in use.\n"
+ " Must be used in combination with '-f FILE'\n"
+ " -L SEV : Set the log severity (see log_levels.h; note 'A' = 'all')\n"
+ " -s : Show the log severity in the logs.\n"
+ " --decode : Decode remaining args (chunk flags) and exit.\n"
+ " --tracking space:FILE : Prepare space tracking information for debugging.\n"
+ " --tracking nl:FILE : Prepare newline tracking information for debugging.\n"
+ " --tracking start:FILE : Prepare start of statement tracking information for debugging.\n"
+ " Cannot be used with the -o option'\n"
+ "\n"
+ "Usage Examples\n"
+ "cat foo.d | uncrustify -q -c my.cfg -l d\n"
+ "uncrustify -c my.cfg -f foo.d\n"
+ "uncrustify -c my.cfg -f foo.d -L0-2,20-23,51\n"
+ "uncrustify -c my.cfg -f foo.d -o foo.d\n"
+ "uncrustify -c my.cfg -f foo.d -o foo.d -ds dump\n"
+ "uncrustify -c my.cfg foo.d\n"
+ "uncrustify -c my.cfg --replace foo.d\n"
+ "uncrustify -c my.cfg --no-backup foo.d\n"
+ "uncrustify -c my.cfg --prefix=out -F files.txt\n"
+ "\n"
+ "Note: Use comments containing ' *INDENT-OFF*' and ' *INDENT-ON*' to disable\n"
+ " processing of parts of the source file (these can be overridden with\n"
+ " enable_processing_cmt and disable_processing_cmt).\n"
+ "\n"
+ ,
+ path_basename(argv0));
+ tease();
+} // usage
+
+
+static void version_exit()
+{
+ printf("%s\n", UNCRUSTIFY_VERSION);
+ exit(EX_OK);
+}
+
+
+NODISCARD static int redir_stdout(const char *output_file)
+{
+ FILE *my_stdout = stdout; // Reopen stdout
+
+ if (output_file != nullptr)
+ {
+ my_stdout = freopen(output_file, "wb", stdout);
+
+ if (my_stdout == nullptr)
+ {
+ LOG_FMT(LERR, "Unable to open %s for write: %s (%d)\n",
+ output_file, strerror(errno), errno);
+ usage_error();
+ exit(EX_IOERR);
+ }
+ LOG_FMT(LNOTE, "Redirecting output to %s\n", output_file);
+ }
+ return(EXIT_SUCCESS);
+}
+
+// Currently, the crash handler is only supported while building under MSVC
+#if defined (WIN32) && defined (_MSC_VER)
+
+
+void setup_crash_handling()
+{
+ // prevent crash popup. uncrustify is a batch processing tool and a popup is unacceptable.
+ ::SetErrorMode(::GetErrorMode() | SEM_NOGPFAULTERRORBOX);
+
+ struct local
+ {
+ static LONG WINAPI crash_filter(_In_ struct _EXCEPTION_POINTERS *exceptionInfo)
+ {
+ __try
+ {
+ LOG_FMT(LERR, "crash_filter: exception 0x%08X at [%d:%d] (ip=%p)",
+ exceptionInfo->ExceptionRecord->ExceptionCode,
+ cpd.line_number, cpd.column,
+ exceptionInfo->ExceptionRecord->ExceptionAddress);
+ log_func_stack(LERR, " [CallStack:", "]\n", 0);
+
+ // treat an exception the same as a parse failure. exceptions can result from parse failures where we
+ // do not have specific handling (null-checks for particular parse paths etc.) and callers generally
+ // won't care about the difference. they just want to know it failed.
+ exit(EXIT_FAILURE);
+ }
+ __except (EXCEPTION_EXECUTE_HANDLER)
+ {
+ // have to be careful of crashes in crash handling code
+ }
+
+ // safety - note that this will not flush like we need, but at least will get the right return code
+ ::ExitProcess(EXIT_FAILURE);
+ }
+ };
+
+ // route all crashes through our own handler
+ ::SetUnhandledExceptionFilter(local::crash_filter);
+}
+
+#else
+
+
+void setup_crash_handling()
+{
+ // TODO: unixes
+}
+
+#endif
+
+
+int main(int argc, char *argv[])
+{
+ // initialize the global data
+ cpd.unc_off_used = false;
+
+ setup_crash_handling();
+
+ // Build options map
+ register_options();
+
+ // If ran without options show the usage info and exit */
+ if (argc == 1)
+ {
+ usage(argv[0]);
+ return(EXIT_SUCCESS);
+ }
+#ifdef DEBUG
+ // make sure we have 'name' not too big
+ const int max_name_length = 19;
+
+ // maxLengthOfTheName must be consider at the format line at the file
+ // output.cpp, line 427: fprintf(pfile, "# Line Tag Parent...
+ // and 430: ... fprintf(pfile, "%s# %3zu>%19.19s[%19.19s] ...
+ // here xx xx xx xx
+ for (const auto &token_name : token_names)
+ {
+ const size_t name_length = strlen(token_name);
+
+ if (name_length > max_name_length)
+ {
+ fprintf(stderr, "%s(%d): The token name '%s' is too long (%d)\n",
+ __func__, __LINE__, token_name, static_cast<int>(name_length));
+ fprintf(stderr, "%s(%d): the max token name length is %d\n",
+ __func__, __LINE__, max_name_length);
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ }
+
+ // make sure we have token_names.h in sync with token_enum.h
+ static_assert(ARRAY_SIZE(token_names) == CT_TOKEN_COUNT_, "");
+#endif // DEBUG
+
+ Args arg(argc, argv);
+
+ if ( arg.Present("--version")
+ || arg.Present("-v"))
+ {
+ version_exit();
+ }
+
+ if ( arg.Present("--help")
+ || arg.Present("-h")
+ || arg.Present("--usage")
+ || arg.Present("-?"))
+ {
+ usage(argv[0]);
+ return(EXIT_SUCCESS);
+ }
+
+ if (arg.Present("--count-options"))
+ {
+ tease();
+ return(EXIT_SUCCESS);
+ }
+
+ if (arg.Present("--show-config"))
+ {
+ save_option_file(stdout, true);
+ return(EXIT_SUCCESS);
+ }
+ cpd.do_check = arg.Present("--check");
+ cpd.if_changed = arg.Present("--if-changed");
+
+#ifdef WIN32
+ // tell Windows not to change what I write to stdout
+ UNUSED(_setmode(_fileno(stdout), _O_BINARY));
+#endif
+
+ // Init logging
+ log_init(cpd.do_check ? stdout : stderr);
+ log_mask_t mask;
+
+ if (arg.Present("-q"))
+ {
+ logmask_from_string("", mask);
+ log_set_mask(mask);
+ }
+ const char *p_arg;
+
+ if ( ((p_arg = arg.Param("-L")) != nullptr)
+ || ((p_arg = arg.Param("--log")) != nullptr))
+ {
+ logmask_from_string(p_arg, mask);
+ log_set_mask(mask);
+ }
+ cpd.frag = arg.Present("--frag");
+
+ if (arg.Present("--decode"))
+ {
+ size_t idx = 1;
+
+ while ((p_arg = arg.Unused(idx)) != nullptr)
+ {
+ log_pcf_flags(LSYS, static_cast<E_PcfFlag>(strtoul(p_arg, nullptr, 16)));
+ }
+ return(EXIT_SUCCESS);
+ }
+ // Get the config file name
+ string cfg_file;
+
+ if ( ((p_arg = arg.Param("--config")) != nullptr)
+ || ((p_arg = arg.Param("-c")) != nullptr))
+ {
+ cfg_file = p_arg;
+ }
+ else if (!unc_getenv("UNCRUSTIFY_CONFIG", cfg_file))
+ {
+ // Try to find a config file at an alternate location
+ string home;
+
+ if (unc_homedir(home))
+ {
+ struct stat tmp_stat = {};
+
+ const auto path0 = home + "/.uncrustify.cfg";
+ const auto path1 = home + "/uncrustify.cfg";
+
+ if (stat(path0.c_str(), &tmp_stat) == 0)
+ {
+ cfg_file = path0;
+ }
+ else if (stat(path1.c_str(), &tmp_stat) == 0)
+ {
+ cfg_file = path1;
+ }
+ }
+ }
+ // Get the parsed file name
+ const char *parsed_file;
+
+ if ( ((parsed_file = arg.Param("--parsed")) != nullptr)
+ || ((parsed_file = arg.Param("-p")) != nullptr))
+ {
+ if ( parsed_file[0] == '-'
+ && !parsed_file[1])
+ {
+ LOG_FMT(LNOTE, "Will print parsed data to stdout\n");
+ }
+ else
+ {
+ LOG_FMT(LNOTE, "Will export parsed data to: %s\n", parsed_file);
+ }
+ }
+ // Get the dump file name prefix
+ const char *dump_file_T;
+
+ if ( ((dump_file_T = arg.Param("--dump-steps")) != nullptr)
+ || ((dump_file_T = arg.Param("-ds")) != nullptr))
+ {
+ // and save it
+ // Issue #3976
+ set_dump_file_name(dump_file_T);
+ LOG_FMT(LNOTE, "Will export formatting steps data to '%s_nnn.log' files\n", dump_file_name);
+ }
+
+ // Enable log severities
+ if ( arg.Present("-s")
+ || arg.Present("--show"))
+ {
+ log_show_sev(true);
+ }
+ // Load type files
+ size_t idx = 0;
+
+ while ((p_arg = arg.Params("-t", idx)) != nullptr)
+ {
+ load_keyword_file(p_arg);
+ }
+ // add types
+ idx = 0;
+
+ while ((p_arg = arg.Params("--type", idx)) != nullptr)
+ {
+ add_keyword(p_arg, CT_TYPE);
+ }
+ bool arg_l_is_set = false;
+
+ // Check for a language override
+ if ((p_arg = arg.Param("-l")) != nullptr)
+ {
+ arg_l_is_set = true;
+ cpd.lang_flags = language_flags_from_name(p_arg);
+
+ if (cpd.lang_flags == 0)
+ {
+ LOG_FMT(LWARN, "Ignoring unknown language: %s\n", p_arg);
+ }
+ else
+ {
+ cpd.lang_forced = true;
+ }
+ }
+ // Get the source file name
+ const char *source_file;
+
+ if ( ((source_file = arg.Param("--file")) == nullptr)
+ && ((source_file = arg.Param("-f")) == nullptr))
+ {
+ // not using a single file, source_file is nullptr
+ }
+ // Get a source file list
+ const char *source_list;
+
+ if ( ((source_list = arg.Param("--files")) == nullptr)
+ && ((source_list = arg.Param("-F")) == nullptr))
+ {
+ // not using a file list, source_list is nullptr
+ }
+ const char *prefix = arg.Param("--prefix");
+ const char *suffix = arg.Param("--suffix");
+ const char *assume = arg.Param("--assume");
+
+ bool no_backup = arg.Present("--no-backup");
+ bool replace = arg.Present("--replace");
+ bool keep_mtime = arg.Present("--mtime");
+ bool update_config = arg.Present("--update-config");
+ bool update_config_wd = arg.Present("--update-config-with-doc");
+ bool detect = arg.Present("--detect");
+ bool pfile_csv = arg.Present("--debug-csv-format");
+ bool is_quiet = arg.Present("-q");
+
+ std::string parsed_file_csv;
+
+ if (pfile_csv)
+ {
+ if ( parsed_file == nullptr
+ || ( parsed_file[0] == '-'
+ && !parsed_file[1]))
+ {
+ fprintf(stderr,
+ "FAIL: --debug-csv-format option must be used in combination with '-p FILE', where FILE\n"
+ " is not set to '-'\n");
+ log_flush(true);
+ exit(EX_CONFIG);
+ }
+ else if (!ends_with(parsed_file, ".csv", false))
+ {
+ parsed_file_csv = parsed_file;
+
+ // user-specified parsed filename does not end in a ".csv" extension, so add it
+ parsed_file_csv += ".csv";
+ parsed_file = parsed_file_csv.c_str();
+ }
+ }
+ // Grab the output override
+ const char *output_file = arg.Param("-o");
+
+ // for debugging tracking
+ const char *html_arg = nullptr;
+ html_arg = arg.Param("--tracking");
+
+ if (html_arg != nullptr)
+ {
+ const size_t max_args_length = 256;
+ size_t argLength = strlen(html_arg);
+
+ if (argLength > max_args_length)
+ {
+ fprintf(stderr, "The buffer is to short for the tracking argument '%s'\n", html_arg);
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ char buffer[max_args_length];
+ strcpy(buffer, html_arg);
+
+ // Tokenize and extract key and value
+ const char *tracking_art = strtok(buffer, ":");
+ const char *html_file = strtok(nullptr, ":");
+
+ if (html_file != nullptr)
+ {
+ if (strcmp(tracking_art, "space") == 0)
+ {
+ cpd.html_type = tracking_type_e::TT_SPACE;
+ }
+ else if (strcmp(tracking_art, "nl") == 0)
+ {
+ cpd.html_type = tracking_type_e::TT_NEWLINE;
+ }
+ else if (strcmp(tracking_art, "start") == 0)
+ {
+ cpd.html_type = tracking_type_e::TT_START;
+ }
+ else
+ {
+ fprintf(stderr, "tracking_art '%s' not implemented\n",
+ tracking_art);
+ log_flush(true);
+ return(EXIT_FAILURE);
+ }
+ cpd.html_file = html_file;
+ }
+ }
+ LOG_FMT(LDATA, "%s\n", UNCRUSTIFY_VERSION);
+ LOG_FMT(LDATA, "config_file = %s\n", cfg_file.c_str());
+ LOG_FMT(LDATA, "output_file = %s\n", (output_file != nullptr) ? output_file : "null");
+ LOG_FMT(LDATA, "source_file = %s\n", (source_file != nullptr) ? source_file : "null");
+ LOG_FMT(LDATA, "source_list = %s\n", (source_list != nullptr) ? source_list : "null");
+ LOG_FMT(LDATA, "tracking_art = %s\n", get_tracking_type_e_name(cpd.html_type));
+ LOG_FMT(LDATA, "tracking = %s\n", (cpd.html_file != nullptr) ? cpd.html_file : "null");
+ LOG_FMT(LDATA, "prefix = %s\n", (prefix != nullptr) ? prefix : "null");
+ LOG_FMT(LDATA, "suffix = %s\n", (suffix != nullptr) ? suffix : "null");
+ LOG_FMT(LDATA, "assume = %s\n", (assume != nullptr) ? assume : "null");
+ LOG_FMT(LDATA, "replace = %s\n", replace ? "true" : "false");
+ LOG_FMT(LDATA, "no_backup = %s\n", no_backup ? "true" : "false");
+ LOG_FMT(LDATA, "detect = %s\n", detect ? "true" : "false");
+ LOG_FMT(LDATA, "check = %s\n", cpd.do_check ? "true" : "false");
+ LOG_FMT(LDATA, "if_changed = %s\n", cpd.if_changed ? "true" : "false");
+
+ if ( cpd.do_check
+ && ( output_file
+ || replace
+ || no_backup
+ || keep_mtime
+ || update_config
+ || update_config_wd
+ || detect
+ || prefix
+ || suffix
+ || cpd.if_changed))
+ {
+ usage_error("Cannot use --check with output options.");
+ return(EX_NOUSER);
+ }
+
+ if (!cpd.do_check)
+ {
+ if (replace)
+ {
+ if ( prefix != nullptr
+ || suffix != nullptr)
+ {
+ usage_error("Cannot use --replace with --prefix or --suffix");
+ return(EX_NOINPUT);
+ }
+
+ if ( source_file != nullptr
+ || output_file != nullptr)
+ {
+ usage_error("Cannot use --replace with -f or -o");
+ return(EX_NOINPUT);
+ }
+ }
+ else if (!no_backup)
+ {
+ if ( prefix == nullptr
+ && suffix == nullptr)
+ {
+ suffix = ".uncrustify";
+ }
+ }
+ }
+
+ /*
+ * Try to load the config file, if available.
+ * It is optional for "--universalindent", "--parsed" and "--detect", but
+ * required for everything else.
+ */
+ if ( !cfg_file.empty()
+ && cfg_file[0] != '-')
+ {
+ cpd.filename = cfg_file;
+
+ if (!load_option_file(cpd.filename.c_str()))
+ {
+ usage_error("Unable to load the config file");
+ return(EX_IOERR);
+ }
+ // test if all options are compatible to each other
+ log_rule_B("nl_max");
+
+ if (options::nl_max() > 0)
+ {
+ // test if one/some option(s) is/are not too big for that
+ log_rule_B("nl_var_def_blk_end_func_top");
+
+ if (options::nl_var_def_blk_end_func_top() >= options::nl_max())
+ {
+ fprintf(stderr, "The option 'nl_var_def_blk_end_func_top' is too big against the option 'nl_max'\n");
+ log_flush(true);
+ exit(EX_CONFIG);
+ }
+ }
+ }
+ // Set config options using command line arguments.
+ idx = 0;
+
+ while ((p_arg = arg.Params("--set", idx)) != nullptr)
+ {
+ size_t argLength = strlen(p_arg);
+ const size_t max_args_length = 256;
+
+ if (argLength > max_args_length)
+ {
+ fprintf(stderr, "The buffer is to short for the set argument '%s'\n", p_arg);
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ char buffer[max_args_length];
+ strcpy(buffer, p_arg);
+
+ // Tokenize and extract key and value
+ const char *token = strtok(buffer, "=");
+ const char *option = token;
+
+ token = strtok(nullptr, "=");
+ const char *value = token;
+
+ if ( option != nullptr
+ && value != nullptr
+ && strtok(nullptr, "=") == nullptr) // end of argument reached
+ {
+ if (auto *opt = uncrustify::find_option(option))
+ {
+ if (!opt->read(value))
+ {
+ return(EXIT_FAILURE);
+ }
+ }
+ else
+ {
+ fprintf(stderr, "Unknown option '%s' to override.\n", buffer);
+ log_flush(true);
+ return(EXIT_FAILURE);
+ }
+ }
+ else
+ {
+ // TODO: consider using defines like EX_USAGE from sysexits.h
+ usage_error("Error while parsing --set");
+ return(EX_USAGE);
+ }
+ }
+
+ if (arg.Present("--universalindent"))
+ {
+ FILE *pfile = stdout;
+
+ if (output_file != nullptr)
+ {
+ pfile = fopen(output_file, "w");
+
+ if (pfile == nullptr)
+ {
+ fprintf(stderr, "Unable to open %s for write: %s (%d)\n",
+ output_file, strerror(errno), errno);
+ log_flush(true);
+ return(EXIT_FAILURE);
+ }
+ }
+ print_universal_indent_cfg(pfile);
+ fclose(pfile);
+
+ return(EXIT_SUCCESS);
+ }
+ // Set the number of second(s) before terminating formatting the current file.
+#ifdef WIN32
+ if (options::debug_timeout() > 0)
+ {
+ fprintf(stderr, "The option 'debug_timeout' is not available under Windows.\n");
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+#else
+ if (options::debug_timeout() > 0)
+ {
+ alarm((unsigned int)options::debug_timeout());
+ }
+#endif // ifdef WIN32
+
+ if (detect)
+ {
+ file_mem fm;
+
+ if ( source_file == nullptr
+ || source_list != nullptr)
+ {
+ fprintf(stderr, "The --detect option requires a single input file\n");
+ log_flush(true);
+ return(EXIT_FAILURE);
+ }
+
+ // Do some simple language detection based on the filename extension
+ if ( !cpd.lang_forced
+ || cpd.lang_flags == 0)
+ {
+ cpd.lang_flags = language_flags_from_filename(source_file);
+ }
+
+ // Try to read in the source file
+ if (load_mem_file(source_file, fm) < 0)
+ {
+ LOG_FMT(LERR, "Failed to load (%s)\n", source_file);
+ exit(EX_IOERR);
+ }
+ uncrustify_start(fm.data);
+ detect_options();
+ uncrustify_end();
+
+ if (auto error = redir_stdout(output_file))
+ {
+ return(error);
+ }
+ save_option_file(stdout, update_config_wd);
+ return(EXIT_SUCCESS);
+ }
+
+ if ( update_config
+ || update_config_wd)
+ {
+ // TODO: complain if file-processing related options are present
+ if (auto error = redir_stdout(output_file))
+ {
+ return(error);
+ }
+ save_option_file(stdout, update_config_wd);
+ return(EXIT_SUCCESS);
+ }
+
+ /*
+ * Everything beyond this point aside from dumping the parse tree is silly
+ * without a config file, so complain and bail if we don't have one.
+ */
+ if ( cfg_file.empty()
+ && !parsed_file)
+ {
+ usage_error("Specify the config file with '-c file' or set UNCRUSTIFY_CONFIG");
+ return(EX_IOERR);
+ }
+ // Done parsing args
+
+ // Check for unused args (ignore them)
+ idx = 1;
+ p_arg = arg.Unused(idx);
+
+ // Check args - for multifile options
+ if ( source_list != nullptr
+ || ( p_arg != nullptr
+ && cpd.html_type == tracking_type_e::TT_NONE)) // Issue #4066
+ {
+ if (source_file != nullptr)
+ {
+ usage_error("Cannot specify both the single file option and a multi-file option.");
+ return(EX_NOUSER);
+ }
+
+ if (output_file != nullptr)
+ {
+ usage_error("Cannot specify -o with a multi-file option.");
+ return(EX_NOHOST);
+ }
+ }
+ // This relies on cpd.filename being the config file name
+ load_header_files();
+
+ if ( cpd.do_check
+ || cpd.if_changed)
+ {
+ cpd.bout = new deque<UINT8>();
+ }
+ idx = 1;
+
+ if ( source_file == nullptr
+ && source_list == nullptr
+ && arg.Unused(idx) == nullptr)
+ {
+ if (!arg_l_is_set) // Issue #3064
+ {
+ if (assume == nullptr)
+ {
+ LOG_FMT(LERR, "If reading from stdin, you should specify the language using -l\n");
+ LOG_FMT(LERR, "or specify a filename using --assume for automatic language detection.\n");
+ return(EXIT_FAILURE);
+ }
+ }
+
+ if (cpd.lang_flags == 0)
+ {
+ if (assume != nullptr)
+ {
+ cpd.lang_flags = language_flags_from_filename(assume);
+ }
+ else
+ {
+ cpd.lang_flags = LANG_C;
+ }
+ }
+
+ if (!cpd.do_check)
+ {
+ if (auto error = redir_stdout(output_file))
+ {
+ return(error);
+ }
+ }
+ file_mem fm;
+
+ if (!read_stdin(fm))
+ {
+ LOG_FMT(LERR, "Failed to read stdin\n");
+ exit(EX_IOERR);
+ }
+ cpd.filename = "stdin";
+
+ // Done reading from stdin
+ LOG_FMT(LSYS, "%s(%d): Parsing: %zu bytes (%zu chars) from stdin as language %s\n",
+ __func__, __LINE__, fm.raw.size(), fm.data.size(),
+ language_name_from_flags(cpd.lang_flags));
+
+ // Issue #3427
+ init_keywords_for_language();
+ uncrustify_file(fm, stdout, parsed_file, dump_file_name, is_quiet);
+ }
+ else if (source_file != nullptr)
+ {
+ // Doing a single file
+ do_source_file(source_file, output_file, parsed_file, dump_file_name, no_backup, keep_mtime, is_quiet);
+ }
+ else
+ {
+ if (parsed_file != nullptr) // Issue #930
+ {
+ fprintf(stderr, "FAIL: -p option must be used with the -f option\n");
+ log_flush(true);
+ exit(EX_CONFIG);
+ }
+
+ if (dump_file_name[0] != char(0)) // Issue #3976
+ {
+ fprintf(stderr, "FAIL: -ds/--dump-steps option must be used with the -f option\n");
+ log_flush(true);
+ exit(EX_CONFIG);
+ }
+
+ // Doing multiple files, TODO: multiple threads for parallel processing
+ if (prefix != nullptr)
+ {
+ LOG_FMT(LSYS, "Output prefix: %s/\n", prefix);
+ }
+
+ if (suffix != nullptr)
+ {
+ LOG_FMT(LSYS, "Output suffix: %s\n", suffix);
+ }
+ // Do the files on the command line first
+ idx = 1;
+
+ while ((p_arg = arg.Unused(idx)) != nullptr)
+ {
+ char outbuf[1024];
+ do_source_file(p_arg,
+ make_output_filename(outbuf, sizeof(outbuf), p_arg, prefix, suffix),
+ nullptr, nullptr, no_backup, keep_mtime, is_quiet);
+ }
+
+ if (source_list != nullptr)
+ {
+ process_source_list(source_list, prefix, suffix, no_backup, keep_mtime, is_quiet);
+ }
+ }
+ clear_keyword_file();
+
+ if ( cpd.do_check
+ && cpd.check_fail_cnt != 0)
+ {
+ return(EXIT_FAILURE);
+ }
+ return(EXIT_SUCCESS);
+} // main
+
+
+static void process_source_list(const char *source_list,
+ const char *prefix, const char *suffix,
+ bool no_backup, bool keep_mtime, bool is_quiet)
+{
+ bool from_stdin = strcmp(source_list, "-") == 0;
+ FILE *p_file = from_stdin ? stdin : fopen(source_list, "r");
+
+ if (p_file == nullptr)
+ {
+ LOG_FMT(LERR, "%s: fopen(%s) failed: %s (%d)\n",
+ __func__, source_list, strerror(errno), errno);
+ exit(EX_IOERR);
+ }
+ char linebuf[256];
+ int line = 0;
+
+ while (fgets(linebuf, sizeof(linebuf), p_file) != nullptr)
+ {
+ line++;
+ char *fname = linebuf;
+ int len = strlen(fname);
+
+ while ( len > 0
+ && unc_isspace(*fname))
+ {
+ fname++;
+ len--;
+ }
+
+ while ( len > 0
+ && unc_isspace(fname[len - 1]))
+ {
+ len--;
+ }
+ fname[len] = 0;
+
+ while (len-- > 0)
+ {
+ if (fname[len] == '\\')
+ {
+ fname[len] = '/';
+ }
+ }
+ LOG_FMT(LFILELIST, "%3d file to uncrustify: %s\n", line, fname);
+
+ if (fname[0] != '#')
+ {
+ char outbuf[1024];
+ do_source_file(fname,
+ make_output_filename(outbuf, sizeof(outbuf), fname, prefix, suffix),
+ nullptr, nullptr, no_backup, keep_mtime, is_quiet);
+ }
+ }
+
+ if (!from_stdin)
+ {
+ fclose(p_file);
+ }
+} // process_source_list
+
+
+static bool read_stdin(file_mem &fm)
+{
+ deque<UINT8> dq;
+ char buf[4096];
+
+ fm.raw.clear();
+ fm.data.clear();
+ fm.enc = char_encoding_e::e_ASCII;
+
+ // Re-open stdin in binary mode to preserve newline characters
+#ifdef WIN32
+ _setmode(_fileno(stdin), _O_BINARY);
+#endif
+
+ while (!feof(stdin))
+ {
+ int len = fread(buf, 1, sizeof(buf), stdin);
+
+ for (int idx = 0; idx < len; idx++)
+ {
+ dq.push_back(buf[idx]);
+ }
+ }
+ // Copy the raw data from the deque to the vector
+ fm.raw.insert(fm.raw.end(), dq.begin(), dq.end());
+ return(decode_unicode(fm.raw, fm.data, fm.enc, fm.bom));
+}
+
+
+static void make_folders(const string &filename)
+{
+ int last_idx = 0;
+ char outname[4096];
+
+ snprintf(outname, sizeof(outname), "%s", filename.c_str());
+
+ for (int idx = 0; outname[idx] != 0; idx++)
+ {
+ if ( (outname[idx] == '/')
+ || (outname[idx] == '\\'))
+ {
+ outname[idx] = PATH_SEP;
+ }
+
+ // search until end of subpath is found
+ if ( idx > last_idx
+ && (outname[idx] == PATH_SEP))
+ {
+ outname[idx] = 0; // mark the end of the subpath
+
+ // create subfolder if it is not the start symbol of a path
+ // and not a Windows drive letter
+ if ( (strcmp(&outname[last_idx], ".") != 0)
+ && (strcmp(&outname[last_idx], "..") != 0)
+ && (!( last_idx == 0
+ && idx == 2
+ && outname[1] == ':')))
+ {
+ int status; // Coverity CID 75999
+ status = mkdir(outname, 0750);
+
+ if ( status != 0
+ && errno != EEXIST)
+ {
+ LOG_FMT(LERR, "%s: Unable to create %s: %s (%d)\n",
+ __func__, outname, strerror(errno), errno);
+ exit(EX_IOERR);
+ }
+ }
+ outname[idx] = PATH_SEP; // reconstruct full path to search for next subpath
+ }
+
+ if (outname[idx] == PATH_SEP)
+ {
+ last_idx = idx + 1;
+ }
+ }
+} // make_folders
+
+
+static int load_mem_file(const char *filename, file_mem &fm)
+{
+ int retval = -1;
+ struct stat my_stat;
+ FILE *p_file;
+
+ fm.raw.clear();
+ fm.data.clear();
+ fm.enc = char_encoding_e::e_ASCII;
+
+ // Grab the stat info for the file, return if it cannot be read
+ if (stat(filename, &my_stat) < 0)
+ {
+ return(-1);
+ }
+#ifdef HAVE_UTIME_H
+ // Save off modification time (mtime)
+ fm.utb.modtime = my_stat.st_mtime;
+#endif
+
+ // Try to read in the file
+ p_file = fopen(filename, "rb");
+
+ if (p_file == nullptr)
+ {
+ return(-1);
+ }
+ fm.raw.resize(my_stat.st_size);
+
+ if (my_stat.st_size == 0) // check if file is empty
+ {
+ retval = 0;
+ fm.bom = false;
+ fm.enc = char_encoding_e::e_ASCII;
+ fm.data.clear();
+ }
+ else
+ {
+ // read the raw data
+ if (fread(&fm.raw[0], fm.raw.size(), 1, p_file) != 1)
+ {
+ LOG_FMT(LERR, "%s: fread(%s) failed: %s (%d)\n",
+ __func__, filename, strerror(errno), errno);
+ exit(EX_IOERR);
+ }
+ else if (!decode_unicode(fm.raw, fm.data, fm.enc, fm.bom))
+ {
+ LOG_FMT(LERR, "%s: failed to decode the file '%s'\n", __func__, filename);
+ exit(EX_IOERR);
+ }
+ else
+ {
+ LOG_FMT(LNOTE, "%s: '%s' encoding looks like %s (%d)\n", __func__, filename,
+ fm.enc == char_encoding_e::e_ASCII ? "ASCII" :
+ fm.enc == char_encoding_e::e_BYTE ? "BYTES" :
+ fm.enc == char_encoding_e::e_UTF8 ? "UTF-8" :
+ fm.enc == char_encoding_e::e_UTF16_LE ? "UTF-16-LE" :
+ fm.enc == char_encoding_e::e_UTF16_BE ? "UTF-16-BE" : "Error",
+ (int)fm.enc);
+ retval = 0;
+ }
+ }
+ fclose(p_file);
+ return(retval);
+} // load_mem_file
+
+
+static int load_mem_file_config(const std::string &filename, file_mem &fm)
+{
+ int retval;
+ char buf[1024];
+
+ snprintf(buf, sizeof(buf), "%.*s%s",
+ path_dirname_len(cpd.filename.c_str()), cpd.filename.c_str(), filename.c_str());
+
+ retval = load_mem_file(buf, fm);
+
+ if (retval < 0)
+ {
+ retval = load_mem_file(filename.c_str(), fm);
+
+ if (retval < 0)
+ {
+ LOG_FMT(LERR, "Failed to load (%s) or (%s)\n", buf, filename.c_str());
+ exit(EX_IOERR);
+ }
+ }
+ return(retval);
+}
+
+
+int load_header_files()
+{
+ int retval = 0;
+
+ log_rule_B("cmt_insert_file_header");
+
+ if (!options::cmt_insert_file_header().empty())
+ {
+ // try to load the file referred to by the options string
+ retval |= load_mem_file_config(options::cmt_insert_file_header(),
+ cpd.file_hdr);
+ }
+ log_rule_B("cmt_insert_file_footer");
+
+ if (!options::cmt_insert_file_footer().empty())
+ {
+ retval |= load_mem_file_config(options::cmt_insert_file_footer(),
+ cpd.file_ftr);
+ }
+ log_rule_B("cmt_insert_func_header");
+
+ if (!options::cmt_insert_func_header().empty())
+ {
+ retval |= load_mem_file_config(options::cmt_insert_func_header(),
+ cpd.func_hdr);
+ }
+ log_rule_B("cmt_insert_class_header");
+
+ if (!options::cmt_insert_class_header().empty())
+ {
+ retval |= load_mem_file_config(options::cmt_insert_class_header(),
+ cpd.class_hdr);
+ }
+ log_rule_B("cmt_insert_oc_msg_header");
+
+ if (!options::cmt_insert_oc_msg_header().empty())
+ {
+ retval |= load_mem_file_config(options::cmt_insert_oc_msg_header(),
+ cpd.oc_msg_hdr);
+ }
+ log_rule_B("cmt_reflow_fold_regex_file");
+
+ if (!options::cmt_reflow_fold_regex_file().empty())
+ {
+ retval |= load_mem_file_config(options::cmt_reflow_fold_regex_file(),
+ cpd.reflow_fold_regex);
+ }
+ return(retval);
+} // load_header_files
+
+
+static const char *make_output_filename(char *buf, size_t buf_size,
+ const char *filename,
+ const char *prefix,
+ const char *suffix)
+{
+ int len = 0;
+
+ if (prefix != nullptr)
+ {
+ len = snprintf(buf, buf_size, "%s/", prefix);
+ }
+ snprintf(&buf[len], buf_size - len, "%s%s", filename,
+ (suffix != nullptr) ? suffix : "");
+
+ return(buf);
+}
+
+
+static bool file_content_matches(const string &filename1, const string &filename2)
+{
+ struct stat st1, st2;
+ int fd1, fd2;
+
+ // Check the file sizes first
+ if ( (stat(filename1.c_str(), &st1) != 0)
+ || (stat(filename2.c_str(), &st2) != 0)
+ || st1.st_size != st2.st_size)
+ {
+ return(false);
+ }
+
+ if ((fd1 = open(filename1.c_str(), O_RDONLY)) < 0)
+ {
+ return(false);
+ }
+
+ if ((fd2 = open(filename2.c_str(), O_RDONLY)) < 0)
+ {
+ close(fd1);
+ return(false);
+ }
+ int len1 = 0;
+ int len2 = 0;
+ UINT8 buf1[1024];
+ UINT8 buf2[1024];
+
+ memset(buf1, 0, sizeof(buf1));
+ memset(buf2, 0, sizeof(buf2));
+
+ while ( len1 >= 0
+ && len2 >= 0)
+ {
+ if (len1 == 0)
+ {
+ len1 = read(fd1, buf1, sizeof(buf1));
+ }
+
+ if (len2 == 0)
+ {
+ len2 = read(fd2, buf2, sizeof(buf2));
+ }
+
+ if ( len1 <= 0
+ || len2 <= 0)
+ {
+ break; // reached end of either files
+ // TODO: what is if one file is longer than the other, do we miss that ?
+ }
+ int minlen = (len1 < len2) ? len1 : len2;
+
+ if (memcmp(buf1, buf2, minlen) != 0)
+ {
+ break; // found a difference
+ }
+ len1 -= minlen;
+ len2 -= minlen;
+ }
+ close(fd1);
+ close(fd2);
+
+ return( len1 == 0
+ && len2 == 0);
+} // file_content_matches
+
+
+static bool bout_content_matches(const file_mem &fm, bool report_status, bool is_quiet)
+{
+ bool is_same = true;
+
+ // compare the old data vs the new data
+ if (cpd.bout->size() != fm.raw.size())
+ {
+ if (report_status)
+ {
+ fprintf(stderr, "FAIL: %s (File size changed from %u to %u)\n",
+ cpd.filename.c_str(), static_cast<int>(fm.raw.size()),
+ static_cast<int>(cpd.bout->size()));
+ log_flush(true);
+ }
+ is_same = false;
+ }
+ else
+ {
+ for (int idx = 0; idx < static_cast<int>(fm.raw.size()); idx++)
+ {
+ if (fm.raw[idx] != (*cpd.bout)[idx])
+ {
+ if (report_status)
+ {
+ fprintf(stderr, "FAIL: %s (Difference at byte %u)\n",
+ cpd.filename.c_str(), idx);
+ log_flush(true);
+ }
+ is_same = false;
+ break;
+ }
+ }
+ }
+
+ if ( is_same
+ && report_status)
+ {
+ if (!is_quiet)
+ {
+ fprintf(stdout, "PASS: %s (%u bytes)\n",
+ cpd.filename.c_str(), static_cast<int>(fm.raw.size()));
+ }
+ }
+ return(is_same);
+} // bout_content_matches
+
+
+static void do_source_file(const char *filename_in,
+ const char *filename_out,
+ const char *parsed_file,
+ const char *dump_file,
+ bool no_backup,
+ bool keep_mtime,
+ bool is_quiet)
+{
+ FILE *pfout = nullptr;
+ bool did_open = false;
+ bool need_backup = false;
+ file_mem fm;
+ string filename_tmp;
+
+ // Do some simple language detection based on the filename extension
+ if ( !cpd.lang_forced
+ || cpd.lang_flags == 0)
+ {
+ cpd.lang_flags = language_flags_from_filename(filename_in);
+ }
+
+ // Try to read in the source file
+ if (load_mem_file(filename_in, fm) < 0)
+ {
+ LOG_FMT(LERR, "Failed to load (%s)\n", filename_in);
+ exit(EX_IOERR);
+ }
+ LOG_FMT(LSYS, "%s: Parsing: %s as language %s\n",
+ __func__, filename_in, language_name_from_flags(cpd.lang_flags));
+
+ // check keyword sort
+ assert(keywords_are_sorted());
+
+ // Issue #3353
+ init_keywords_for_language();
+
+ cpd.filename = filename_in;
+
+ /*
+ * If we're only going to write on an actual change, then build the output
+ * buffer now and if there were changes, run it through the normal file
+ * write path.
+ *
+ * Future: many code paths could be simplified if 'bout' were always used and not
+ * optionally selected in just for do_check and if_changed.
+ */
+ if (cpd.if_changed)
+ {
+ /*
+ * Cleanup is deferred because we need 'bout' preserved long enough
+ * to write it to a file (if it changed).
+ */
+ uncrustify_file(fm, nullptr, parsed_file, dump_file, is_quiet, true);
+
+ if (bout_content_matches(fm, false, is_quiet))
+ {
+ uncrustify_end();
+ return;
+ }
+ }
+
+ if (!cpd.do_check)
+ {
+ if (filename_out == nullptr)
+ {
+ pfout = stdout;
+ }
+ else
+ {
+ // If the out file is the same as the in file, then use a temp file
+ filename_tmp = filename_out;
+
+ if (strcmp(filename_in, filename_out) == 0)
+ {
+ // Create 'outfile.uncrustify'
+ filename_tmp += ".uncrustify";
+
+ if (!no_backup)
+ {
+ if (backup_copy_file(filename_in, fm.raw) != EX_OK)
+ {
+ LOG_FMT(LERR, "%s: Failed to create backup file for %s\n",
+ __func__, filename_in);
+ exit(EX_IOERR);
+ }
+ need_backup = true;
+ }
+ }
+ make_folders(filename_tmp);
+
+ pfout = fopen(filename_tmp.c_str(), "wb");
+
+ if (pfout == nullptr)
+ {
+ LOG_FMT(LERR, "%s: Unable to create %s: %s (%d)\n",
+ __func__, filename_tmp.c_str(), strerror(errno), errno);
+ exit(EX_IOERR);
+ }
+ did_open = true;
+ //LOG_FMT(LSYS, "Output file %s\n", filename_out);
+ }
+ }
+
+ if (cpd.if_changed)
+ {
+ for (UINT8 i : *cpd.bout)
+ {
+ fputc(i, pfout);
+ }
+
+ uncrustify_end();
+ }
+ else
+ {
+ uncrustify_file(fm, pfout, parsed_file, dump_file, is_quiet);
+ }
+
+ if (did_open)
+ {
+ fclose(pfout);
+
+ if (need_backup)
+ {
+ backup_create_md5_file(filename_in);
+ }
+
+ if (filename_tmp != filename_out)
+ {
+ // We need to compare and then do a rename (but avoid redundant test when if_changed set)
+ if ( !cpd.if_changed
+ && file_content_matches(filename_tmp, filename_out))
+ {
+ // No change - remove tmp file
+ UNUSED(unlink(filename_tmp.c_str()));
+ }
+ else
+ {
+ // Change - rename filename_tmp to filename_out
+
+#ifdef WIN32
+ /*
+ * Atomic rename in windows can't go through stdio rename() func because underneath
+ * it calls MoveFileExW without MOVEFILE_REPLACE_EXISTING.
+ */
+ if (!MoveFileEx(filename_tmp.c_str(), filename_out, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED))
+#else
+ if (rename(filename_tmp.c_str(), filename_out) != 0)
+#endif
+ {
+ LOG_FMT(LERR, "%s: Unable to rename '%s' to '%s'\n",
+ __func__, filename_tmp.c_str(), filename_out);
+ exit(EX_IOERR);
+ }
+ }
+ }
+
+ if (keep_mtime)
+ {
+#ifdef HAVE_UTIME_H
+ // update mtime -- don't care if it fails
+ fm.utb.actime = time(nullptr);
+ UNUSED(utime(filename_in, &fm.utb));
+#endif
+ }
+ }
+} // do_source_file
+
+
+static void add_file_header()
+{
+ // don't add the file header if running as frag
+ if ( !Chunk::GetHead()->IsComment()
+ && !cpd.frag)
+ {
+ // TODO: detect the typical #ifndef FOO / #define FOO sequence
+ tokenize(cpd.file_hdr.data, Chunk::GetHead());
+ }
+}
+
+
+static void add_file_footer()
+{
+ Chunk *pc = Chunk::GetTail();
+
+ // Back up if the file ends with a newline
+ if ( pc->IsNotNullChunk()
+ && pc->IsNewline())
+ {
+ pc = pc->GetPrev();
+ }
+
+ if ( pc->IsNotNullChunk()
+ && ( !pc->IsComment()
+ || !pc->GetPrev()->IsNewline()))
+ {
+ pc = Chunk::GetTail();
+
+ if (!pc->IsNewline())
+ {
+ LOG_FMT(LSYS, "Adding a newline at the end of the file\n");
+ newline_add_after(pc);
+ }
+ tokenize(cpd.file_ftr.data, Chunk::NullChunkPtr);
+ }
+}
+
+
+static void add_func_header(E_Token type, file_mem &fm)
+{
+ Chunk *pc;
+ Chunk *ref;
+ Chunk *tmp;
+ bool do_insert;
+
+ for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnlNpp())
+ {
+ if (pc->GetType() != type)
+ {
+ continue;
+ }
+ log_rule_B("cmt_insert_before_inlines");
+
+ if ( pc->TestFlags(PCF_IN_CLASS)
+ && !options::cmt_insert_before_inlines())
+ {
+ continue;
+ }
+ // Check for one liners for classes. Declarations only. Walk down the chunks.
+ ref = pc;
+
+ if ( ref->Is(CT_CLASS)
+ && ref->GetParentType() == CT_NONE
+ && ref->GetNext())
+ {
+ ref = ref->GetNext();
+
+ if ( ref->Is(CT_TYPE)
+ && ref->GetParentType() == type
+ && ref->GetNext())
+ {
+ ref = ref->GetNext();
+
+ if ( ref->Is(CT_SEMICOLON)
+ && ref->GetLevel() == pc->GetLevel())
+ {
+ continue;
+ }
+ }
+ }
+ // Check for one liners for functions. There'll be a closing brace w/o any newlines. Walk down the chunks.
+ ref = pc;
+
+ if ( ref->Is(CT_FUNC_DEF)
+ && ref->GetParentType() == CT_NONE
+ && ref->GetNext())
+ {
+ int found_brace = 0; // Set if a close brace is found before a newline
+
+ while ( ref->IsNot(CT_NEWLINE)
+ && (ref = ref->GetNext())) // TODO: is the assignment of ref wanted here?, better move it to the loop
+ {
+ if (ref->Is(CT_BRACE_CLOSE))
+ {
+ found_brace = 1;
+ break;
+ }
+ }
+
+ if (found_brace)
+ {
+ continue;
+ }
+ }
+ do_insert = false;
+
+ /*
+ * On a function proto or def. Back up to a close brace or semicolon on
+ * the same level
+ */
+ ref = pc;
+
+ while ( (ref = ref->GetPrev())
+ && ref->IsNotNullChunk())
+ {
+ // Bail if we change level or find an access specifier colon
+ if ( ref->GetLevel() != pc->GetLevel()
+ || ref->Is(CT_ACCESS_COLON))
+ {
+ do_insert = true;
+ break;
+ }
+
+ // If we hit an angle close, back up to the angle open
+ if (ref->Is(CT_ANGLE_CLOSE))
+ {
+ ref = ref->GetPrevType(CT_ANGLE_OPEN, ref->GetLevel(), E_Scope::PREPROC);
+ continue;
+ }
+
+ // Bail if we hit a preprocessor and cmt_insert_before_preproc is false
+ if (ref->TestFlags(PCF_IN_PREPROC))
+ {
+ tmp = ref->GetPrevType(CT_PREPROC, ref->GetLevel());
+
+ if ( tmp->IsNotNullChunk()
+ && tmp->GetParentType() == CT_PP_IF)
+ {
+ tmp = tmp->GetPrevNnl();
+
+ log_rule_B("cmt_insert_before_preproc");
+
+ if ( tmp->IsComment()
+ && !options::cmt_insert_before_preproc())
+ {
+ break;
+ }
+ }
+ }
+
+ // Ignore 'right' comments
+ if ( ref->IsComment()
+ && ref->GetPrev()->IsNewline())
+ {
+ break;
+ }
+
+ if ( ref->GetLevel() == pc->GetLevel()
+ && ( ref->TestFlags(PCF_IN_PREPROC)
+ || ref->Is(CT_SEMICOLON)
+ || ref->Is(CT_BRACE_CLOSE)))
+ {
+ do_insert = true;
+ break;
+ }
+ }
+
+ if ( ref->IsNullChunk()
+ && !Chunk::GetHead()->IsComment()
+ && Chunk::GetHead()->GetParentType() == type)
+ {
+ /**
+ * In addition to testing for preceding semicolons, closing braces, etc.,
+ * we need to also account for the possibility that the function declaration
+ * or definition occurs at the very beginning of the file
+ */
+ tokenize(fm.data, Chunk::GetHead());
+ }
+ else if (do_insert)
+ {
+ // Insert between after and ref
+ Chunk *after = ref->GetNextNcNnl();
+ tokenize(fm.data, after);
+
+ for (tmp = ref->GetNext(); tmp != after; tmp = tmp->GetNext())
+ {
+ tmp->SetLevel(after->GetLevel());
+ }
+ }
+ }
+} // add_func_header
+
+
+static void add_msg_header(E_Token type, file_mem &fm)
+{
+ Chunk *pc;
+ Chunk *ref;
+ Chunk *tmp;
+ bool do_insert;
+
+ for (pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnlNpp())
+ {
+ if (pc->GetType() != type)
+ {
+ continue;
+ }
+ do_insert = false;
+
+ /*
+ * On a message declaration back up to a Objective-C scope
+ * the same level
+ */
+ ref = pc;
+
+ while ((ref = ref->GetPrev())->IsNotNullChunk())
+ {
+ // ignore the CT_TYPE token that is the result type
+ if ( ref->GetLevel() != pc->GetLevel()
+ && ( ref->Is(CT_TYPE)
+ || ref->Is(CT_PTR_TYPE)))
+ {
+ continue;
+ }
+
+ // If we hit a parentheses around return type, back up to the open parentheses
+ if (ref->Is(CT_PAREN_CLOSE))
+ {
+ ref = ref->GetPrevType(CT_PAREN_OPEN, ref->GetLevel(), E_Scope::PREPROC);
+ continue;
+ }
+
+ // Bail if we hit a preprocessor and cmt_insert_before_preproc is false
+ if (ref->TestFlags(PCF_IN_PREPROC))
+ {
+ tmp = ref->GetPrevType(CT_PREPROC, ref->GetLevel());
+
+ if ( tmp->IsNotNullChunk()
+ && tmp->GetParentType() == CT_PP_IF)
+ {
+ tmp = tmp->GetPrevNnl();
+
+ log_rule_B("cmt_insert_before_preproc");
+
+ if ( tmp->IsComment()
+ && !options::cmt_insert_before_preproc())
+ {
+ break;
+ }
+ }
+ }
+
+ if ( ref->GetLevel() == pc->GetLevel()
+ && ( ref->TestFlags(PCF_IN_PREPROC)
+ || ref->Is(CT_OC_SCOPE)))
+ {
+ ref = ref->GetPrev();
+
+ if (ref->IsNotNullChunk())
+ {
+ // Ignore 'right' comments
+ if ( ref->IsNewline()
+ && ref->GetPrev()->IsComment())
+ {
+ break;
+ }
+ do_insert = true;
+ }
+ break;
+ }
+ }
+
+ if (do_insert)
+ {
+ // Insert between after and ref
+ Chunk *after = ref->GetNextNcNnl();
+ tokenize(fm.data, after);
+
+ for (tmp = ref->GetNext(); tmp != after; tmp = tmp->GetNext())
+ {
+ tmp->SetLevel(after->GetLevel());
+ }
+ }
+ }
+} // add_msg_header
+
+
+static void uncrustify_start(const deque<int> &data)
+{
+ // Parse the text into chunks
+ tokenize(data, Chunk::NullChunkPtr);
+ PROT_THE_LINE
+
+ cpd.unc_stage = unc_stage_e::HEADER;
+
+ // Get the column for the fragment indent
+ if (cpd.frag)
+ {
+ Chunk *pc = Chunk::GetHead();
+
+ cpd.frag_cols = pc->GetOrigCol();
+ }
+
+ // Add the file header
+ if (!cpd.file_hdr.data.empty())
+ {
+ add_file_header();
+ }
+
+ // Add the file footer
+ if (!cpd.file_ftr.data.empty())
+ {
+ add_file_footer();
+ }
+ /*
+ * Change certain token types based on simple sequence.
+ * Example: change '[' + ']' to '[]'
+ * Note that level info is not yet available, so it is OK to do all
+ * processing that doesn't need to know level info. (that's very little!)
+ */
+ tokenize_cleanup();
+
+ /*
+ * Detect the brace and paren levels and insert virtual braces.
+ * This handles all that nasty preprocessor stuff
+ */
+ brace_cleanup();
+
+ parameter_pack_cleanup();
+
+ // At this point, the level information is available and accurate.
+
+ if (language_is_set(LANG_PAWN))
+ {
+ pawn_prescan();
+ }
+ mark_question_colon();
+
+ // Re-type chunks, combine chunks
+ fix_symbols();
+
+ tokenize_trailing_return_types();
+
+ mark_comments();
+
+ // Look at all colons ':' and mark labels, :? sequences, etc.
+ combine_labels();
+
+ enum_cleanup();
+
+ mark_functor();
+} // uncrustify_start
+
+
+void uncrustify_file(const file_mem &fm, FILE *pfout, const char *parsed_file,
+ const char *dump_file, bool is_quiet, bool defer_uncrustify_end)
+{
+ const deque<int> &data = fm.data;
+
+ // Save off the encoding and whether a BOM is required
+ cpd.bom = fm.bom;
+ cpd.enc = fm.enc;
+
+ if ( options::utf8_force()
+ || ( (cpd.enc == char_encoding_e::e_BYTE)
+ && options::utf8_byte()))
+ {
+ log_rule_B("utf8_force");
+ log_rule_B("utf8_byte");
+ cpd.enc = char_encoding_e::e_UTF8;
+ }
+ iarf_e av;
+
+ switch (cpd.enc)
+ {
+ case char_encoding_e::e_UTF8:
+ log_rule_B("utf8_bom");
+ av = options::utf8_bom();
+ break;
+
+ case char_encoding_e::e_UTF16_LE:
+ case char_encoding_e::e_UTF16_BE:
+ av = IARF_FORCE;
+ break;
+
+ default:
+ av = IARF_IGNORE;
+ break;
+ }
+
+ if (av == IARF_REMOVE)
+ {
+ cpd.bom = false;
+ }
+ else if (av != IARF_IGNORE)
+ {
+ cpd.bom = true;
+ }
+ // Check for embedded 0's (represents a decoding failure or corrupt file)
+ size_t count_line = 1;
+ size_t count_column = 1;
+
+ for (int idx = 0; idx < static_cast<int>(data.size()) - 1; idx++)
+ {
+ if (data[idx] == 0)
+ {
+ LOG_FMT(LERR, "An embedded 0 was found in '%s' %zu:%zu.\n",
+ cpd.filename.c_str(), count_line, count_column);
+ LOG_FMT(LERR, "The file may be encoded in an unsupported Unicode format.\n");
+ LOG_FMT(LERR, "Aborting.\n");
+ exit(EX_IOERR);
+ }
+ count_column++;
+
+ if (data[idx] == '\n')
+ {
+ count_line++;
+ count_column = 1;
+ }
+ }
+
+ uncrustify_start(data);
+ dump_step(dump_file, "After uncrustify_start()");
+
+ cpd.unc_stage = unc_stage_e::OTHER;
+
+ /*
+ * Done with detection. Do the rest only if the file will go somewhere.
+ * The detection code needs as few changes as possible.
+ */
+
+ // Add comments before function defs and classes
+ if (!cpd.func_hdr.data.empty())
+ {
+ log_rule_B("cmt_insert_function_header");
+
+ add_func_header(CT_FUNC_DEF, cpd.func_hdr);
+
+ if (options::cmt_insert_before_ctor_dtor())
+ {
+ add_func_header(CT_FUNC_CLASS_DEF, cpd.func_hdr);
+ }
+ }
+
+ if (!cpd.class_hdr.data.empty())
+ {
+ log_rule_B("cmt_insert_class_header");
+ add_func_header(CT_CLASS, cpd.class_hdr);
+ }
+
+ if (!cpd.oc_msg_hdr.data.empty())
+ {
+ log_rule_B("cmt_insert_oc_message_header");
+ add_msg_header(CT_OC_MSG_DECL, cpd.oc_msg_hdr);
+ }
+ do_parent_for_pp();
+
+ // Rewrite infinite loops
+ if (options::mod_infinite_loop())
+ {
+ log_rule_B("mod_infinite_loop");
+ rewrite_infinite_loops();
+ }
+ // Change virtual braces into real braces
+ do_braces();
+
+ // Scrub extra semicolons
+ if (options::mod_remove_extra_semicolon())
+ {
+ log_rule_B("mod_remove_extra_semicolon");
+ remove_extra_semicolons();
+ }
+
+ // Remove unnecessary returns
+ if (options::mod_remove_empty_return())
+ {
+ log_rule_B("mod_remove_empty_return");
+ remove_extra_returns();
+ }
+
+ // Add or remove redundant 'int' keyword of integer types
+ if ( ( language_is_set(LANG_C)
+ || language_is_set(LANG_CPP))
+ && ( options::mod_int_short() != IARF_IGNORE
+ || options::mod_short_int() != IARF_IGNORE
+ || options::mod_int_long() != IARF_IGNORE
+ || options::mod_long_int() != IARF_IGNORE
+ || options::mod_int_signed() != IARF_IGNORE
+ || options::mod_signed_int() != IARF_IGNORE
+ || options::mod_int_unsigned() != IARF_IGNORE
+ || options::mod_unsigned_int() != IARF_IGNORE))
+ {
+ log_rule_B("mod_int_short");
+ log_rule_B("mod_short_int");
+ log_rule_B("mod_int_long");
+ log_rule_B("mod_long_int");
+ log_rule_B("mod_int_signed");
+ log_rule_B("mod_signed_int");
+ log_rule_B("mod_int_unsigned");
+ log_rule_B("mod_unsigned_int");
+ change_int_types();
+ }
+
+ // Remove duplicate include
+ if (options::mod_remove_duplicate_include())
+ {
+ log_rule_B("mod_remove_duplicate_include");
+ remove_duplicate_include();
+ }
+ // Add parens
+ do_parens();
+ do_parens_assign();
+ do_parens_return();
+
+ // Modify line breaks as needed
+ bool first = true;
+ int old_changes;
+
+ if (options::nl_remove_extra_newlines() == 2)
+ {
+ log_rule_B("nl_remove_extra_newlines");
+ newlines_remove_newlines();
+ }
+ cpd.pass_count = 3;
+
+ dump_step(dump_file, "Before first while loop");
+
+ do
+ {
+ old_changes = cpd.changes;
+
+ LOG_FMT(LNEWLINE, "Newline loop start: %d\n", cpd.changes);
+
+ annotations_newlines();
+ newlines_cleanup_dup();
+ newlines_sparens();
+ newlines_cleanup_braces(first);
+ newlines_cleanup_angles(); // Issue #1167
+
+ if (options::nl_after_multiline_comment())
+ {
+ log_rule_B("nl_after_multiline_comment");
+ newline_after_multiline_comment();
+ }
+
+ if (options::nl_after_label_colon())
+ {
+ log_rule_B("nl_after_label_colon");
+ newline_after_label_colon();
+ }
+ newlines_insert_blank_lines();
+
+ if (options::pos_bool() != TP_IGNORE)
+ {
+ log_rule_B("pos_bool");
+ newlines_chunk_pos(CT_BOOL, options::pos_bool());
+ }
+
+ if (options::pos_compare() != TP_IGNORE)
+ {
+ log_rule_B("pos_compare");
+ newlines_chunk_pos(CT_COMPARE, options::pos_compare());
+ }
+
+ if (options::pos_conditional() != TP_IGNORE)
+ {
+ log_rule_B("pos_conditional");
+ newlines_chunk_pos(CT_COND_COLON, options::pos_conditional());
+ newlines_chunk_pos(CT_QUESTION, options::pos_conditional());
+ }
+
+ if ( options::pos_comma() != TP_IGNORE
+ || options::pos_enum_comma() != TP_IGNORE)
+ {
+ log_rule_B("pos_comma");
+ log_rule_B("pos_enum_comma");
+ newlines_chunk_pos(CT_COMMA, options::pos_comma());
+ }
+
+ if (options::pos_assign() != TP_IGNORE)
+ {
+ log_rule_B("pos_assign");
+ newlines_chunk_pos(CT_ASSIGN, options::pos_assign());
+ }
+
+ if (options::pos_arith() != TP_IGNORE)
+ {
+ log_rule_B("pos_arith");
+ newlines_chunk_pos(CT_ARITH, options::pos_arith());
+ newlines_chunk_pos(CT_CARET, options::pos_arith());
+ }
+
+ if (options::pos_shift() != TP_IGNORE)
+ {
+ log_rule_B("pos_shift");
+ newlines_chunk_pos(CT_SHIFT, options::pos_shift());
+ }
+ newlines_class_colon_pos(CT_CLASS_COLON);
+ newlines_class_colon_pos(CT_CONSTR_COLON);
+
+ if (options::nl_squeeze_ifdef())
+ {
+ log_rule_B("nl_squeeze_ifdef");
+ newlines_squeeze_ifdef();
+ }
+
+ if (options::nl_squeeze_paren_close())
+ {
+ log_rule_B("nl_squeeze_paren_close");
+ newlines_squeeze_paren_close();
+ }
+ do_blank_lines();
+ newlines_eat_start_end();
+ newlines_functions_remove_extra_blank_lines();
+ newlines_cleanup_dup();
+ first = false;
+ dump_step(dump_file, "Inside first while loop");
+ } while ( old_changes != cpd.changes
+ && cpd.pass_count-- > 0);
+
+ mark_comments();
+
+ // Add balanced spaces around nested params
+ if (options::sp_balance_nested_parens())
+ {
+ log_rule_B("sp_balance_nested_parens");
+ space_text_balance_nested_parens();
+ }
+
+ // Scrub certain added semicolons
+ if ( language_is_set(LANG_PAWN)
+ && options::mod_pawn_semicolon())
+ {
+ log_rule_B("mod_pawn_semicolon");
+ pawn_scrub_vsemi();
+ }
+
+ // Sort imports/using/include
+ if ( options::mod_sort_import()
+ || options::mod_sort_include()
+ || options::mod_sort_using())
+ {
+ log_rule_B("mod_sort_import");
+ log_rule_B("mod_sort_include");
+ log_rule_B("mod_sort_using");
+ sort_imports();
+ }
+ // Fix same-line inter-chunk spacing
+ space_text();
+
+ if (options::align_pp_define_span() > 0)
+ {
+ // Do any aligning of preprocessors
+ log_rule_B("align_pp_define_span");
+ align_preprocessor();
+ }
+ // Indent the text
+ indent_preproc();
+ indent_text();
+
+ // Insert trailing comments after certain close braces
+ if ( (options::mod_add_long_switch_closebrace_comment() > 0)
+ || (options::mod_add_long_function_closebrace_comment() > 0)
+ || (options::mod_add_long_class_closebrace_comment() > 0)
+ || (options::mod_add_long_namespace_closebrace_comment() > 0))
+ {
+ log_rule_B("mod_add_long_switch_closebrace_comment");
+ log_rule_B("mod_add_long_function_closebrace_comment");
+ log_rule_B("mod_add_long_class_closebrace_comment");
+ log_rule_B("mod_add_long_namespace_closebrace_comment");
+ add_long_closebrace_comment();
+ }
+
+ // Insert trailing comments after certain preprocessor conditional blocks
+ if ( (options::mod_add_long_ifdef_else_comment() > 0)
+ || (options::mod_add_long_ifdef_endif_comment() > 0))
+ {
+ log_rule_B("mod_add_long_ifdef_else_comment");
+ log_rule_B("mod_add_long_ifdef_endif_comment");
+ add_long_preprocessor_conditional_block_comment();
+ }
+ // Align everything else, reindent and break at code_width
+ first = true;
+
+ dump_step(dump_file, "Before second while loop");
+
+ do
+ {
+ align_all();
+ indent_text();
+ old_changes = cpd.changes;
+
+ if (options::code_width() > 0)
+ {
+ log_rule_B("code_width");
+ LOG_FMT(LNEWLINE, "%s(%d): Code_width loop start: %d\n",
+ __func__, __LINE__, cpd.changes);
+
+ if (options::debug_max_number_of_loops() > 0)
+ {
+ log_rule_B("debug_max_number_of_loops");
+
+ if (cpd.changes > options::debug_max_number_of_loops()) // Issue #2432
+ {
+ LOG_FMT(LNEWLINE, "%s(%d): too many loops. Make a report, please.\n",
+ __func__, __LINE__);
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ }
+ }
+ do_code_width();
+
+ if ( old_changes != cpd.changes
+ && first)
+ {
+ // retry line breaks caused by splitting 1-liners
+ newlines_cleanup_braces(false);
+ newlines_insert_blank_lines();
+ newlines_functions_remove_extra_blank_lines();
+ newlines_remove_disallowed();
+ first = false;
+ }
+ }
+ dump_step(dump_file, "Inside second while loop");
+ } while (old_changes != cpd.changes);
+
+ // And finally, align the backslash newline stuff
+ align_right_comments();
+
+ if (options::align_nl_cont())
+ {
+ log_rule_B("align_nl_cont");
+ align_backslash_newline();
+ }
+ dump_step(dump_file, "Final version");
+
+ // which output is to be done?
+ if (cpd.html_file == nullptr)
+ {
+ // Now render it all to the output file
+ output_text(pfout);
+ }
+ else
+ {
+ make_folders(cpd.html_file); // Issue #4066
+ // create the tracking file
+ FILE *t_file;
+ t_file = fopen(cpd.html_file, "wb");
+
+ if (t_file == nullptr)
+ {
+ LOG_FMT(LERR, "%s: Unable to create %s: %s (%d)\n",
+ __func__, cpd.html_file, strerror(errno), errno);
+ exit(EX_IOERR);
+ }
+ output_text(t_file);
+ fclose(t_file);
+ exit(EX_OK);
+ }
+
+ // Special hook for dumping parsed data for debugging
+ if (parsed_file != nullptr)
+ {
+ FILE *p_file;
+
+ if ( parsed_file[0] == '-'
+ && !parsed_file[1])
+ {
+ p_file = stdout;
+ }
+ else
+ {
+ p_file = fopen(parsed_file, "wb");
+ }
+
+ if (p_file != nullptr)
+ {
+ if (ends_with(parsed_file, ".csv", false))
+ {
+ output_parsed_csv(p_file);
+ }
+ else
+ {
+ output_parsed(p_file);
+ }
+
+ if (p_file != stdout)
+ {
+ fclose(p_file);
+ }
+ }
+ else
+ {
+ LOG_FMT(LERR, "%s: Failed to open '%s' for write: %s (%d)\n",
+ __func__, parsed_file, strerror(errno), errno);
+ exit(EX_IOERR);
+ }
+ }
+
+ if ( cpd.do_check
+ && !bout_content_matches(fm, true, is_quiet))
+ {
+ cpd.check_fail_cnt++;
+ }
+
+ if (!defer_uncrustify_end)
+ {
+ uncrustify_end();
+ }
+} // uncrustify_file
+
+
+void uncrustify_end()
+{
+ // Free all the memory
+ Chunk *pc;
+
+ cpd.unc_stage = unc_stage_e::CLEANUP;
+
+ while ((pc = Chunk::GetHead())->IsNotNullChunk())
+ {
+ Chunk::Delete(pc);
+ }
+
+ if (cpd.bout)
+ {
+ cpd.bout->clear();
+ }
+ // Clean up some state variables
+ cpd.unc_off = false;
+ cpd.al_cnt = 0;
+ cpd.did_newline = true;
+ cpd.pp_level = 0;
+ cpd.changes = 0;
+ cpd.in_preproc = CT_NONE;
+ memset(cpd.le_counts, 0, sizeof(cpd.le_counts));
+ cpd.preproc_ncnl_count = 0;
+ cpd.ifdef_over_whole_file = 0;
+ cpd.warned_unable_string_replace_tab_chars = false;
+}
+
+
+const char *get_token_name(E_Token token)
+{
+ if ( token >= 0
+ && (token < static_cast<int> ARRAY_SIZE(token_names))
+ && (token_names[token] != nullptr))
+ {
+ return(token_names[token]);
+ }
+ return("???");
+}
+
+
+E_Token find_token_name(const char *text)
+{
+ if ( text != nullptr
+ && (*text != 0))
+ {
+ for (int idx = 1; idx < static_cast<int> ARRAY_SIZE(token_names); idx++)
+ {
+ if (strcasecmp(text, token_names[idx]) == 0)
+ {
+ return(static_cast<E_Token>(idx));
+ }
+ }
+ }
+ return(CT_NONE);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify.h
new file mode 100644
index 00000000..3b839060
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify.h
@@ -0,0 +1,69 @@
+/**
+ * @file uncrustify.h
+ * prototypes for uncrustify.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef UNCRUSTIFY_H_INCLUDED
+#define UNCRUSTIFY_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+#include <stdio.h>
+
+int load_header_files();
+
+
+void uncrustify_file(const file_mem &fm, FILE *pfout, const char *parsed_file, const char *dump_filename, bool is_quiet, bool defer_uncrustify_end = false);
+
+
+void uncrustify_end();
+
+
+const char *get_token_name(E_Token token);
+
+
+/**
+ * Grab the token id for the text.
+ *
+ * @return token, will be CT_NONE on failure to match
+ */
+E_Token find_token_name(const char *text);
+
+
+/**
+ * Replace the brain-dead and non-portable basename().
+ * Returns a pointer to the character after the last '/'.
+ * The returned value always points into path, unless path is nullptr.
+ *
+ * Input Returns
+ * nullptr => ""
+ * "/some/path/" => ""
+ * "/some/path" => "path"
+ * "afile" => "afile"
+ *
+ * @param path The path to look at
+ *
+ * @return Pointer to the character after the last path separator
+ */
+const char *path_basename(const char *path);
+
+
+/**
+ * Returns the length of the directory part of the filename.
+ *
+ * @param filename filename including full path
+ *
+ * @return character size of path
+ */
+int path_dirname_len(const char *filename);
+
+
+void usage(const char *argv0);
+
+
+void usage_error(const char *msg = nullptr);
+
+#endif /* UNCRUSTIFY_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_emscripten.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_emscripten.cpp
new file mode 100644
index 00000000..790e7ece
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_emscripten.cpp
@@ -0,0 +1,1213 @@
+/*
+ * uncrustify_emscripten.cpp - JavaScript Emscripten binding interface
+ *
+ * Created on: May 8, 2016
+ * Author: Daniel Chumak
+ *
+ * INTERFACE:
+ * ============================================================================
+ * unsure about these:
+ * --check TODO ???
+ * --decode TODO ???
+ * --detect TODO needs uncrustify start and end which both are static
+ *
+ *
+ * will not be included:
+ * ----------------------------------------------------------------------------
+ * -t ( define via multiple --type )
+ * -d ( define via multiple --define )
+ * --assume ( no files available to guess the lang. based on the filename ending )
+ * --files ( no batch processing will be available )
+ * --prefix
+ * --suffix
+ * --assume
+ * --no-backup
+ * --replace
+ * --mtime
+ * --universalindent
+ * --ds/--dump-steps
+ * -help, -h, --usage, -?
+ *
+ *
+ * done:
+ * ----------------------------------------------------------------------------
+ * --update-config ( use show_config() )
+ * --update-config-with-doc ( show_config( bool withDoc = true ) )
+ * --version, -v ( use get_version() )
+ * --log, -L ( use log_type_enable( log_sev_t sev, bool value ) )
+ * -q ( use quiet() )
+ * --config, -c ( use loadConfig( string _cfg ) )
+ * --file, -f ( use uncrustify( string _file ) )
+ * --show ( use log_type_show_name( bool ) )
+ * --frag ( use uncrustify( string _file, bool frag = true ) )
+ * --type ( use add_keyword( string _type, E_Token type ) )
+ * -l ( use uncrustify() )
+ * --parsed, -p ( use debug() )
+ */
+
+
+#if defined (__linux__)
+
+
+#include "keywords.h"
+#include "log_levels.h"
+#include "logger.h"
+#include "option.h"
+#include "options.h"
+#include "output.h"
+#include "prototypes.h"
+#include "uncrustify.h"
+#include "uncrustify_version.h"
+#include "unicode.h"
+
+#include <iostream>
+#include <map>
+#include <memory>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unordered_map>
+#include <vector>
+
+
+#ifdef EMSCRIPTEN
+#include <emscripten/bind.h>
+#include <emscripten/val.h>
+using namespace emscripten;
+#else
+#define EMSCRIPTEN_BINDINGS(module) void dummyFcn()
+template<class T>
+struct base {};
+struct emscripten
+{
+ template<class... Args>
+ emscripten value(Args...) { return{}; }
+
+ template<class... Args>
+ static emscripten function(Args...) { return{}; }
+
+ template<class... Args>
+ emscripten property(Args...) { return{}; }
+};
+using Dummy = emscripten;
+
+
+template<class T>
+Dummy enum_(char const *const)
+{
+ return(Dummy{});
+}
+
+
+template<class T>
+Dummy register_vector(char const *const)
+{
+ return(Dummy{});
+}
+
+
+template<class... Args>
+Dummy class_(char const *const)
+{
+ return(Dummy{});
+}
+
+
+template<class T>
+Dummy select_overload(T)
+{
+ return(Dummy{});
+}
+#endif
+
+using namespace std;
+using namespace uncrustify;
+
+namespace
+{
+
+/**
+ * Loads options from a file represented as a single char array.
+ * Modifies: input char array, cpd.line_number
+ * Expects: \0 terminated char array
+ *
+ * @param configString char array that holds the whole config
+ * @return EXIT_SUCCESS on success
+ */
+int load_option_fileChar(char *configString)
+{
+ char *delimPos = &configString[0];
+ char *subStringStart = &configString[0];
+
+ cpd.line_number = 0;
+
+ // TODO: handle compat_level
+ int compat_level = 0;
+
+ while (true)
+ {
+ delimPos = strchr(delimPos, '\n');
+
+ if (delimPos == nullptr)
+ {
+ break;
+ }
+ // replaces \n with \0 -> string including multiple terminated substrings
+ *delimPos = '\0';
+
+
+ process_option_line(subStringStart, "", compat_level);
+
+ delimPos++;
+ subStringStart = delimPos;
+ }
+ //get last line, expectation: ends with \0
+ process_option_line(subStringStart, "", compat_level);
+
+ return(EXIT_SUCCESS);
+}
+
+
+/**
+ * adds a new keyword to Uncrustify's dynamic keyword map (dkwm, keywords.cpp)
+ *
+ * @param tag: keyword that is going to be added
+ * @param type: type of the keyword
+ */
+void _add_keyword(string tag, E_Token type)
+{
+ if (tag.empty())
+ {
+ LOG_FMT(LERR, "%s: input string is empty\n", __func__);
+ return;
+ }
+ add_keyword(tag, type);
+}
+
+
+//! clears Uncrustify's dynamic keyword map (dkwm, keywords.cpp)
+void clear_keywords()
+{
+ clear_keyword_file();
+}
+
+
+/**
+ * Show or hide the severity prefix "<1>"
+ *
+ * @param b: true=show, false=hide
+ */
+void show_log_type(bool b)
+{
+ log_show_sev(b);
+}
+
+
+//! returns the UNCRUSTIFY_VERSION string
+string get_version()
+{
+ return(UNCRUSTIFY_VERSION);
+}
+
+
+//! disables all logging messages
+void set_quiet()
+{
+ // set empty mask
+ log_set_mask({});
+}
+
+
+/**
+ * resets value of an option to its default
+ *
+ * @param name: name of the option
+ * @return options enum value of the found option or -1 if option was not found
+ */
+int reset_option(string name)
+{
+ if (name.empty())
+ {
+ LOG_FMT(LERR, "%s: name string is empty\n", __func__);
+ return(-1);
+ }
+ const auto option = find_option(name.c_str());
+
+ if (option == nullptr)
+ {
+ LOG_FMT(LERR, "Option %s not found\n", name.c_str());
+ return(-1);
+ }
+ option->reset();
+ return(0);
+}
+
+
+/**
+ * sets value of an option
+ *
+ * @param name: name of the option
+ * @param value: value that is going to be set
+ * @return options enum value of the found option or -1 if option was not found
+ */
+int set_option(string name, string value)
+{
+ if (name.empty())
+ {
+ LOG_FMT(LERR, "%s: name string is empty\n", __func__);
+ return(-1);
+ }
+
+ if (value.empty())
+ {
+ LOG_FMT(LERR, "%s: value string is empty\n", __func__);
+ return(-1);
+ }
+ const auto option = find_option(name.c_str());
+
+ if (option == nullptr)
+ {
+ LOG_FMT(LERR, "Option %s not found\n", name.c_str());
+ return(-1);
+ }
+
+ if (!option->read(value.c_str()))
+ {
+ LOG_FMT(
+ LERR,
+ "Failed to set value %s for option: %s of type: %s\n",
+ name.c_str(),
+ value.c_str(),
+ to_string(option->type())
+ );
+ return(-1);
+ }
+ return(0);
+}
+
+
+/**
+ * returns value of an option
+ *
+ * @param name: name of the option
+ * @return currently set value of the option
+ */
+string get_option(string name)
+{
+ if (name.empty())
+ {
+ LOG_FMT(LERR, "%s: input string is empty\n", __func__);
+ return("");
+ }
+ const auto option = find_option(name.c_str());
+
+ if (option == nullptr)
+ {
+ LOG_FMT(LWARN, "Option %s not found\n", name.c_str());
+ return("");
+ }
+ return(option->str());
+}
+
+
+/**
+ * returns the config file string based on the current configuration
+ *
+ * @param withDoc: false=without documentation,
+ * true=with documentation text lines
+ * @param only_not_default: false=containing all options,
+ * true=containing only options with non default values
+ * @return returns the config file string based on the current configuration
+ */
+string show_config(bool withDoc, bool only_not_default)
+{
+ char *buf;
+ size_t len;
+
+ FILE *stream = open_memstream(&buf, &len);
+
+ if (stream == nullptr)
+ {
+ LOG_FMT(LERR, "Failed to open_memstream\n");
+ fflush(stream);
+ fclose(stream);
+ free(buf);
+ return("");
+ }
+ save_option_file(stream, withDoc, only_not_default);
+
+ fflush(stream);
+ fclose(stream);
+
+ string out(buf);
+
+ free(buf);
+
+ return(out);
+}
+
+
+/**
+ * returns the config file string with all options based on the current configuration
+ *
+ * @param withDoc: false= without documentation, true=with documentation text lines
+ * @return returns the config file string with all options based on the current configuration
+ */
+string show_config(bool withDoc)
+{
+ return(show_config(withDoc, false));
+}
+
+
+//!returns the config file string with all options and without documentation based on the current configuration
+string show_config()
+{
+ return(show_config(false, false));
+}
+
+
+std::vector<OptionGroup *> get_groups()
+{
+ std::vector<OptionGroup *> groups;
+
+ groups.reserve(5);
+
+ for (size_t i = 0; true; ++i)
+ {
+ OptionGroup *group = get_option_group(i);
+
+ if (!group)
+ {
+ break;
+ }
+ groups.push_back(group);
+ }
+
+ return(groups);
+}
+
+
+std::vector<GenericOption *> get_options()
+{
+ std::vector<GenericOption *> options;
+
+ options.reserve(get_option_count());
+
+ for (size_t i = 0; true; ++i)
+ {
+ OptionGroup *group = get_option_group(i);
+
+ if (!group)
+ {
+ break;
+ }
+ options.insert(
+ end(options),
+ begin(group->options),
+ end(group->options)
+ );
+ }
+
+ return(options);
+}
+
+
+//! resets all options to their default values
+void reset_options()
+{
+ auto options = get_options();
+
+ for (auto *option : options)
+ {
+ option->reset();
+ }
+}
+
+
+/**
+ * initializes the current libUncrustify instance,
+ * used only for emscripten binding here and will be automatically called while
+ * module initialization
+ */
+void _initialize()
+{
+ register_options();
+ log_init(stdout);
+
+ LOG_FMT(LSYS, "Initialized libUncrustify - " UNCRUSTIFY_VERSION "\n");
+}
+
+
+//! destroys the current libUncrustify instance
+void destruct()
+{
+ clear_keyword_file();
+}
+
+
+/**
+ * reads option file string, sets the defined options
+ *
+ * @return returns EXIT_SUCCESS on success
+ */
+int _loadConfig(intptr_t _cfg)
+{
+ // reset everything in case a config was loaded previously
+ clear_keyword_file();
+ reset_options();
+
+ // embind complains about char* so we use an int to get the pointer and cast
+ // it, memory management is done in /emscripten/postfix_module.js
+ char *cfg = reinterpret_cast<char *>(_cfg);
+
+ if (load_option_fileChar(cfg) != EXIT_SUCCESS)
+ {
+ LOG_FMT(LERR, "unable to load the config\n");
+ return(EXIT_FAILURE);
+ }
+ // This relies on cpd.filename being the config file name
+ load_header_files();
+
+ LOG_FMT(LSYS, "finished loading config\n");
+ return(EXIT_SUCCESS);
+}
+
+
+/**
+ * format string
+ *
+ * @param file: pointer to the file char* string that is going to be formatted
+ * @param langIDX: specifies in which language the input file is written
+ * @param frag: true=fragmented code input, false=unfragmented code input
+ * @param defer: true=do not perform cleanup of Uncrustify structures
+ *
+ * @return pointer to the formatted file char* string
+ */
+intptr_t _uncrustify(intptr_t _file, lang_flag_e langIDX, bool frag, bool defer)
+{
+ // Problem: uncrustify originally is not a lib and uses global vars such as
+ // cpd.error_count for the whole program execution
+ // to know if errors occurred during the formatting step we reset this var here
+ cpd.filename = "stdin";
+ cpd.frag = frag;
+
+ if (langIDX == 0) // 0 == undefined
+ {
+ LOG_FMT(LWARN, "language of input file not defined, C++ will be assumed\n");
+ cpd.lang_flags = LANG_CPP;
+ }
+ else
+ {
+ cpd.lang_flags = langIDX;
+ }
+ // embind complains about char* so we use an intptr_t to get the pointer and
+ // cast it, memory management is done in /emscripten/postfix_module.js
+ char *file = reinterpret_cast<char *>(_file);
+
+ file_mem fm;
+
+ fm.raw.clear();
+ fm.data.clear();
+ fm.enc = char_encoding_e::e_ASCII;
+ fm.raw = vector<UINT8>();
+
+ char c;
+
+ for (auto idx = 0; (c = file[idx]) != 0; ++idx)
+ {
+ fm.raw.push_back(c);
+ }
+
+ if (!decode_unicode(fm.raw, fm.data, fm.enc, fm.bom))
+ {
+ LOG_FMT(LERR, "Failed to read code\n");
+ return(0);
+ }
+ // Done reading from stdin
+ LOG_FMT(LSYS, "Parsing: %zu bytes (%zu chars) from stdin as language %s\n",
+ fm.raw.size(), fm.data.size(),
+ language_name_from_flags(cpd.lang_flags));
+
+
+ char *buf = nullptr;
+ size_t len = 0;
+
+ // uncrustify uses FILE instead of streams for its outputs
+ // to redirect FILE writes into a char* open_memstream is used
+ // windows lacks open_memstream, only UNIX/BSD is supported
+ // apparently emscripten has its own implementation, if that is not working
+ // see: stackoverflow.com/questions/10305095#answer-10341073
+ FILE *stream = open_memstream(&buf, &len);
+
+ if (stream == nullptr)
+ {
+ LOG_FMT(LERR, "Failed to open_memstream\n");
+ return(0);
+ }
+ // TODO One way to implement the --parsed, -p functionality would
+ // be to let the uncrustify_file function run, throw away the formatted
+ // output and return the debug as a string. For this uncrustify_file would
+ // need to accept a stream, FILE or a char array pointer in which the output
+ // will be stored.
+ // Another option would be to check, inside the uncrustify_file function,
+ // if the current filename string matches stdout or stderr and use those as
+ // output locations. This is the easier fix but the debug info in the
+ // browsers console is littered with other unneeded text.
+ // Finally, the ugliest solution, would be also possible to re-route
+ // either stdout or stderr inside the Module var of emscripten to a js
+ // function which passes the debug output into a dedicated output js target.
+ // This therefore would introduce the dependency on the user to always have
+ // the output js target available.
+ uncrustify_file(fm, stream, nullptr, nullptr, defer);
+
+ fflush(stream);
+ fclose(stream);
+
+ if (len == 0)
+ {
+ return(0);
+ }
+ // buf is deleted inside js code
+ return(reinterpret_cast<intptr_t>(buf));
+} // uncrustify
+
+
+/**
+ * format string
+ *
+ * @param file: pointer to the file char* string that is going to be formatted
+ * @param langIDX: specifies in which language the input file is written
+ * @param frag: true=fragmented code input, false=unfragmented code input
+ *
+ * @return pointer to the formatted file char* string
+ */
+intptr_t _uncrustify(intptr_t file, lang_flag_e langIDX, bool frag)
+{
+ return(_uncrustify(file, langIDX, frag, false));
+}
+
+
+/**
+ * format string, assume unfragmented code input
+ *
+ * @param file: pointer to the file char* string that is going to be formatted
+ * @param langIDX: specifies in which language the input file is written
+ *
+ * @return pointer to the formatted file char* string
+ */
+intptr_t _uncrustify(intptr_t file, lang_flag_e langIDX)
+{
+ return(_uncrustify(file, langIDX, false, false));
+}
+
+
+/**
+ * generate debug output
+ *
+ * @param file: pointer to the file char* string that is going to be formatted
+ * @param langIDX: specifies in which language the input file is written
+ * @param frag: true=fragmented code input, false=unfragmented code input
+ *
+ * @return pointer to the debug file char* string
+ */
+intptr_t _debug(intptr_t _file, lang_flag_e langIDX, bool frag)
+{
+ auto formatted_str_ptr = _uncrustify(_file, langIDX, frag, true);
+ char *formatted_str = reinterpret_cast<char *>(formatted_str_ptr);
+
+ // Lazy solution: Throw away the formatted file output.
+ // Maybe later add option to return both formatted file string and debug
+ // file string together ... somehow.
+ free(formatted_str);
+
+ char *buf = nullptr;
+ size_t len = 0;
+ FILE *stream = open_memstream(&buf, &len);
+
+ if (stream == nullptr)
+ {
+ LOG_FMT(LERR, "Failed to open_memstream\n");
+ return(0);
+ }
+ output_parsed(stream);
+ fflush(stream);
+ fclose(stream);
+
+ // start deferred _uncrustify cleanup
+ uncrustify_end();
+
+ if (len == 0)
+ {
+ return(0);
+ }
+ // buf is deleted inside js code
+ return(reinterpret_cast<intptr_t>(buf));
+} // uncrustify
+
+
+/**
+ * generate debug output, assume unfragmented code input
+ *
+ * @param file: pointer to the file char* string that is going to be formatted
+ * @param langIDX: specifies in which language the input file is written
+ *
+ * @return pointer to the debug file char* string
+ */
+intptr_t _debug(intptr_t _file, lang_flag_e langIDX)
+{
+ return(_debug(_file, langIDX, false));
+}
+
+} // namespace
+
+EMSCRIPTEN_BINDINGS(MainModule)
+{
+ // region enum bindings
+ enum_<option_type_e>("OptionType")
+ .value("BOOL", option_type_e::BOOL)
+ .value("IARF", option_type_e::IARF)
+ .value("LINEEND", option_type_e::LINEEND)
+ .value("TOKENPOS", option_type_e::TOKENPOS)
+ .value("NUM", option_type_e::NUM)
+ .value("UNUM", option_type_e::UNUM)
+ .value("STRING", option_type_e::STRING);
+
+ enum_<iarf_e>("IARF")
+ .value("IGNORE", IARF_IGNORE)
+ .value("ADD", IARF_ADD)
+ .value("REMOVE", IARF_REMOVE)
+ .value("FORCE", IARF_FORCE);
+
+ enum_<line_end_e>("LineEnd")
+ .value("LF", line_end_e::LF)
+ .value("CRLF", line_end_e::CRLF)
+ .value("CR", line_end_e::CR)
+ .value("AUTO", line_end_e::AUTO);
+
+ enum_<token_pos_e>("TokenPos")
+ .value("IGNORE", token_pos_e::IGNORE)
+ .value("BREAK", token_pos_e::BREAK)
+ .value("FORCE", token_pos_e::FORCE)
+ .value("LEAD", token_pos_e::LEAD)
+ .value("TRAIL", token_pos_e::TRAIL)
+ .value("JOIN", token_pos_e::JOIN)
+ .value("LEAD_BREAK", token_pos_e::LEAD_BREAK)
+ .value("LEAD_FORCE", token_pos_e::LEAD_FORCE)
+ .value("TRAIL_BREAK", token_pos_e::TRAIL_BREAK)
+ .value("TRAIL_FORCE", token_pos_e::TRAIL_FORCE);
+
+ enum_<log_sev_t>("LogType")
+ .value("SYS", log_sev_t::LSYS)
+ .value("ERR", log_sev_t::LERR)
+ .value("WARN", log_sev_t::LWARN)
+ .value("NOTE", log_sev_t::LNOTE)
+ .value("INFO", log_sev_t::LINFO)
+ .value("DATA", log_sev_t::LDATA)
+ .value("FILELIST", log_sev_t::LFILELIST)
+ .value("LINEENDS", log_sev_t::LLINEENDS)
+ .value("CASTS", log_sev_t::LCASTS)
+ .value("ALBR", log_sev_t::LALBR)
+ .value("ALTD", log_sev_t::LALTD)
+ .value("ALPP", log_sev_t::LALPP)
+ .value("ALPROTO", log_sev_t::LALPROTO)
+ .value("ALNLC", log_sev_t::LALNLC)
+ .value("ALTC", log_sev_t::LALTC)
+ .value("ALADD", log_sev_t::LALADD)
+ .value("ALASS", log_sev_t::LALASS)
+ .value("FVD", log_sev_t::LFVD)
+ .value("FVD2", log_sev_t::LFVD2)
+ .value("INDENT", log_sev_t::LINDENT)
+ .value("INDENT2", log_sev_t::LINDENT2)
+ .value("INDPSE", log_sev_t::LINDPSE)
+ .value("INDPC", log_sev_t::LINDPC)
+ .value("NEWLINE", log_sev_t::LNEWLINE)
+ .value("PF", log_sev_t::LPF)
+ .value("STMT", log_sev_t::LSTMT)
+ .value("TOK", log_sev_t::LTOK)
+ .value("ALRC", log_sev_t::LALRC)
+ .value("CMTIND", log_sev_t::LCMTIND)
+ .value("INDLINE", log_sev_t::LINDLINE)
+ .value("SIB", log_sev_t::LSIB)
+ .value("RETURN", log_sev_t::LRETURN)
+ .value("BRDEL", log_sev_t::LBRDEL)
+ .value("FCN", log_sev_t::LFCN)
+ .value("FCNP", log_sev_t::LFCNP)
+ .value("PCU", log_sev_t::LPCU)
+ .value("DYNKW", log_sev_t::LDYNKW)
+ .value("OUTIND", log_sev_t::LOUTIND)
+ .value("BCSAFTER", log_sev_t::LBCSAFTER)
+ .value("BCSPOP", log_sev_t::LBCSPOP)
+ .value("BCSPUSH", log_sev_t::LBCSPUSH)
+ .value("BCSSWAP", log_sev_t::LBCSSWAP)
+ .value("FTOR", log_sev_t::LFTOR)
+ .value("AS", log_sev_t::LAS)
+ .value("PPIS", log_sev_t::LPPIS)
+ .value("TYPEDEF", log_sev_t::LTYPEDEF)
+ .value("VARDEF", log_sev_t::LVARDEF)
+ .value("DEFVAL", log_sev_t::LDEFVAL)
+ .value("PVSEMI", log_sev_t::LPVSEMI)
+ .value("PFUNC", log_sev_t::LPFUNC)
+ .value("SPLIT", log_sev_t::LSPLIT)
+ .value("FTYPE", log_sev_t::LFTYPE)
+ .value("TEMPL", log_sev_t::LTEMPL)
+ .value("PARADD", log_sev_t::LPARADD)
+ .value("PARADD2", log_sev_t::LPARADD2)
+ .value("BLANKD", log_sev_t::LBLANKD)
+ .value("TEMPFUNC", log_sev_t::LTEMPFUNC)
+ .value("SCANSEMI", log_sev_t::LSCANSEMI)
+ .value("DELSEMI", log_sev_t::LDELSEMI)
+ .value("FPARAM", log_sev_t::LFPARAM)
+ .value("NL1LINE", log_sev_t::LNL1LINE)
+ .value("PFCHK", log_sev_t::LPFCHK)
+ .value("AVDB", log_sev_t::LAVDB)
+ .value("SORT", log_sev_t::LSORT)
+ .value("SPACE", log_sev_t::LSPACE)
+ .value("ALIGN", log_sev_t::LALIGN)
+ .value("ALAGAIN", log_sev_t::LALAGAIN)
+ .value("OPERATOR", log_sev_t::LOPERATOR)
+ .value("ASFCP", log_sev_t::LASFCP)
+ .value("INDLINED", log_sev_t::LINDLINED)
+ .value("BCTRL", log_sev_t::LBCTRL)
+ .value("RMRETURN", log_sev_t::LRMRETURN)
+ .value("PPIF", log_sev_t::LPPIF)
+ .value("MCB", log_sev_t::LMCB)
+ .value("BRCH", log_sev_t::LBRCH)
+ .value("FCNR", log_sev_t::LFCNR)
+ .value("OCCLASS", log_sev_t::LOCCLASS)
+ .value("OCMSG", log_sev_t::LOCMSG)
+ .value("BLANK", log_sev_t::LBLANK)
+ .value("OBJCWORD", log_sev_t::LOBJCWORD)
+ .value("CHANGE", log_sev_t::LCHANGE)
+ .value("CONTTEXT", log_sev_t::LCONTTEXT)
+ .value("ANNOT", log_sev_t::LANNOT)
+ .value("OCBLK", log_sev_t::LOCBLK)
+ .value("FLPAREN", log_sev_t::LFLPAREN)
+ .value("OCMSGD", log_sev_t::LOCMSGD)
+ .value("INDENTAG", log_sev_t::LINDENTAG)
+ .value("NFD", log_sev_t::LNFD)
+ .value("JDBI", log_sev_t::LJDBI)
+ .value("SETPAR", log_sev_t::LSETPAR)
+ .value("SETTYP", log_sev_t::LSETTYP)
+ .value("SETFLG", log_sev_t::LSETFLG)
+ .value("NLFUNCT", log_sev_t::LNLFUNCT)
+ .value("CHUNK", log_sev_t::LCHUNK)
+ .value("GUY98", log_sev_t::LGUY98)
+ .value("GUY", log_sev_t::LGUY);
+
+ enum_<E_Token>("TokenType")
+ .value("NONE", E_Token::CT_NONE)
+ .value("EOF", E_Token::CT_EOF)
+ .value("UNKNOWN", E_Token::CT_UNKNOWN)
+ .value("JUNK", E_Token::CT_JUNK)
+ .value("WHITESPACE", E_Token::CT_WHITESPACE)
+ .value("SPACE", E_Token::CT_SPACE)
+ .value("NEWLINE", E_Token::CT_NEWLINE)
+ .value("NL_CONT", E_Token::CT_NL_CONT)
+ .value("COMMENT_CPP", E_Token::CT_COMMENT_CPP)
+ .value("COMMENT", E_Token::CT_COMMENT)
+ .value("COMMENT_MULTI", E_Token::CT_COMMENT_MULTI)
+ .value("COMMENT_EMBED", E_Token::CT_COMMENT_EMBED)
+ .value("COMMENT_START", E_Token::CT_COMMENT_START)
+ .value("COMMENT_END", E_Token::CT_COMMENT_END)
+ .value("COMMENT_WHOLE", E_Token::CT_COMMENT_WHOLE)
+ .value("COMMENT_CPP_ENDIF", E_Token::CT_COMMENT_CPP_ENDIF)
+ .value("COMMENT_ENDIF", E_Token::CT_COMMENT_ENDIF)
+ .value("IGNORED", E_Token::CT_IGNORED)
+ .value("WORD", E_Token::CT_WORD)
+ .value("NUMBER", E_Token::CT_NUMBER)
+ .value("NUMBER_FP", E_Token::CT_NUMBER_FP)
+ .value("STRING", E_Token::CT_STRING)
+ .value("STRING_MULTI", E_Token::CT_STRING_MULTI)
+ .value("IF", E_Token::CT_IF)
+ .value("ELSE", E_Token::CT_ELSE)
+ .value("ELSEIF", E_Token::CT_ELSEIF)
+ .value("FOR", E_Token::CT_FOR)
+ .value("WHILE", E_Token::CT_WHILE)
+ .value("WHILE_OF_DO", E_Token::CT_WHILE_OF_DO)
+ .value("SWITCH", E_Token::CT_SWITCH)
+ .value("CASE", E_Token::CT_CASE)
+ .value("DO", E_Token::CT_DO)
+ .value("SYNCHRONIZED", E_Token::CT_SYNCHRONIZED)
+ .value("VOLATILE", E_Token::CT_VOLATILE)
+ .value("TYPEDEF", E_Token::CT_TYPEDEF)
+ .value("STRUCT", E_Token::CT_STRUCT)
+ .value("ENUM", E_Token::CT_ENUM)
+ .value("ENUM_CLASS", E_Token::CT_ENUM_CLASS)
+ .value("SIZEOF", E_Token::CT_SIZEOF)
+ .value("DECLTYPE", E_Token::CT_DECLTYPE)
+ .value("RETURN", E_Token::CT_RETURN)
+ .value("BREAK", E_Token::CT_BREAK)
+ .value("UNION", E_Token::CT_UNION)
+ .value("GOTO", E_Token::CT_GOTO)
+ .value("CONTINUE", E_Token::CT_CONTINUE)
+ .value("C_CAST", E_Token::CT_C_CAST)
+ .value("CPP_CAST", E_Token::CT_CPP_CAST)
+ .value("D_CAST", E_Token::CT_D_CAST)
+ .value("TYPE_CAST", E_Token::CT_TYPE_CAST)
+ .value("TYPENAME", E_Token::CT_TYPENAME)
+ .value("TEMPLATE", E_Token::CT_TEMPLATE)
+ .value("WHERE_SPEC", E_Token::CT_WHERE_SPEC)
+ .value("ASSIGN", E_Token::CT_ASSIGN)
+ .value("ASSIGN_NL", E_Token::CT_ASSIGN_NL)
+ .value("SASSIGN", E_Token::CT_SASSIGN)
+ .value("ASSIGN_DEFAULT_ARG", E_Token::CT_ASSIGN_DEFAULT_ARG)
+ .value("ASSIGN_FUNC_PROTO", E_Token::CT_ASSIGN_FUNC_PROTO)
+ .value("COMPARE", E_Token::CT_COMPARE)
+ .value("SCOMPARE", E_Token::CT_SCOMPARE)
+ .value("BOOL", E_Token::CT_BOOL)
+ .value("SBOOL", E_Token::CT_SBOOL)
+ .value("ARITH", E_Token::CT_ARITH)
+ .value("SARITH", E_Token::CT_SARITH)
+ .value("CARET", E_Token::CT_CARET)
+ .value("DEREF", E_Token::CT_DEREF)
+ .value("INCDEC_BEFORE", E_Token::CT_INCDEC_BEFORE)
+ .value("INCDEC_AFTER", E_Token::CT_INCDEC_AFTER)
+ .value("MEMBER", E_Token::CT_MEMBER)
+ .value("DC_MEMBER", E_Token::CT_DC_MEMBER)
+ .value("C99_MEMBER", E_Token::CT_C99_MEMBER)
+ .value("INV", E_Token::CT_INV)
+ .value("DESTRUCTOR", E_Token::CT_DESTRUCTOR)
+ .value("NOT", E_Token::CT_NOT)
+ .value("D_TEMPLATE", E_Token::CT_D_TEMPLATE)
+ .value("ADDR", E_Token::CT_ADDR)
+ .value("NEG", E_Token::CT_NEG)
+ .value("POS", E_Token::CT_POS)
+ .value("STAR", E_Token::CT_STAR)
+ .value("PLUS", E_Token::CT_PLUS)
+ .value("MINUS", E_Token::CT_MINUS)
+ .value("AMP", E_Token::CT_AMP)
+ .value("BYREF", E_Token::CT_BYREF)
+ .value("POUND", E_Token::CT_POUND)
+ .value("PREPROC", E_Token::CT_PREPROC)
+ .value("PREPROC_INDENT", E_Token::CT_PREPROC_INDENT)
+ .value("PREPROC_BODY", E_Token::CT_PREPROC_BODY)
+ .value("PP", E_Token::CT_PP)
+ .value("ELLIPSIS", E_Token::CT_ELLIPSIS)
+ .value("RANGE", E_Token::CT_RANGE)
+ .value("NULLCOND", E_Token::CT_NULLCOND)
+ .value("SEMICOLON", E_Token::CT_SEMICOLON)
+ .value("VSEMICOLON", E_Token::CT_VSEMICOLON)
+ .value("COLON", E_Token::CT_COLON)
+ .value("ASM_COLON", E_Token::CT_ASM_COLON)
+ .value("CASE_COLON", E_Token::CT_CASE_COLON)
+ .value("CLASS_COLON", E_Token::CT_CLASS_COLON)
+ .value("CONSTR_COLON", E_Token::CT_CONSTR_COLON)
+ .value("D_ARRAY_COLON", E_Token::CT_D_ARRAY_COLON)
+ .value("COND_COLON", E_Token::CT_COND_COLON)
+ .value("WHERE_COLON", E_Token::CT_WHERE_COLON)
+ .value("QUESTION", E_Token::CT_QUESTION)
+ .value("COMMA", E_Token::CT_COMMA)
+ .value("ASM", E_Token::CT_ASM)
+ .value("ATTRIBUTE", E_Token::CT_ATTRIBUTE)
+ .value("AUTORELEASEPOOL", E_Token::CT_AUTORELEASEPOOL)
+ .value("OC_AVAILABLE", E_Token::CT_OC_AVAILABLE)
+ .value("OC_AVAILABLE_VALUE", E_Token::CT_OC_AVAILABLE_VALUE)
+ .value("CATCH", E_Token::CT_CATCH)
+ .value("WHEN", E_Token::CT_WHEN)
+ .value("WHERE", E_Token::CT_WHERE)
+ .value("CLASS", E_Token::CT_CLASS)
+ .value("DELETE", E_Token::CT_DELETE)
+ .value("EXPORT", E_Token::CT_EXPORT)
+ .value("FRIEND", E_Token::CT_FRIEND)
+ .value("NAMESPACE", E_Token::CT_NAMESPACE)
+ .value("PACKAGE", E_Token::CT_PACKAGE)
+ .value("NEW", E_Token::CT_NEW)
+ .value("OPERATOR", E_Token::CT_OPERATOR)
+ .value("OPERATOR_VAL", E_Token::CT_OPERATOR_VAL)
+ .value("ASSIGN_OPERATOR", E_Token::CT_ASSIGN_OPERATOR)
+ .value("ACCESS", E_Token::CT_ACCESS)
+ .value("ACCESS_COLON", E_Token::CT_ACCESS_COLON)
+ .value("THROW", E_Token::CT_THROW)
+ .value("NOEXCEPT", E_Token::CT_NOEXCEPT)
+ .value("TRY", E_Token::CT_TRY)
+ .value("BRACED_INIT_LIST", E_Token::CT_BRACED_INIT_LIST)
+ .value("USING", E_Token::CT_USING)
+ .value("USING_STMT", E_Token::CT_USING_STMT)
+ .value("USING_ALIAS", E_Token::CT_USING_ALIAS)
+ .value("D_WITH", E_Token::CT_D_WITH)
+ .value("D_MODULE", E_Token::CT_D_MODULE)
+ .value("SUPER", E_Token::CT_SUPER)
+ .value("DELEGATE", E_Token::CT_DELEGATE)
+ .value("BODY", E_Token::CT_BODY)
+ .value("DEBUG", E_Token::CT_DEBUG)
+ .value("DEBUGGER", E_Token::CT_DEBUGGER)
+ .value("INVARIANT", E_Token::CT_INVARIANT)
+ .value("UNITTEST", E_Token::CT_UNITTEST)
+ .value("UNSAFE", E_Token::CT_UNSAFE)
+ .value("FINALLY", E_Token::CT_FINALLY)
+ .value("FIXED", E_Token::CT_FIXED)
+ .value("IMPORT", E_Token::CT_IMPORT)
+ .value("D_SCOPE", E_Token::CT_D_SCOPE)
+ .value("D_SCOPE_IF", E_Token::CT_D_SCOPE_IF)
+ .value("LAZY", E_Token::CT_LAZY)
+ .value("D_MACRO", E_Token::CT_D_MACRO)
+ .value("D_VERSION", E_Token::CT_D_VERSION)
+ .value("D_VERSION_IF", E_Token::CT_D_VERSION_IF)
+ .value("PAREN_OPEN", E_Token::CT_PAREN_OPEN)
+ .value("PAREN_CLOSE", E_Token::CT_PAREN_CLOSE)
+ .value("ANGLE_OPEN", E_Token::CT_ANGLE_OPEN)
+ .value("ANGLE_CLOSE", E_Token::CT_ANGLE_CLOSE)
+ .value("SPAREN_OPEN", E_Token::CT_SPAREN_OPEN)
+ .value("SPAREN_CLOSE", E_Token::CT_SPAREN_CLOSE)
+ .value("FPAREN_OPEN", E_Token::CT_FPAREN_OPEN)
+ .value("FPAREN_CLOSE", E_Token::CT_FPAREN_CLOSE)
+ .value("TPAREN_OPEN", E_Token::CT_TPAREN_OPEN)
+ .value("TPAREN_CLOSE", E_Token::CT_TPAREN_CLOSE)
+ .value("BRACE_OPEN", E_Token::CT_BRACE_OPEN)
+ .value("BRACE_CLOSE", E_Token::CT_BRACE_CLOSE)
+ .value("VBRACE_OPEN", E_Token::CT_VBRACE_OPEN)
+ .value("VBRACE_CLOSE", E_Token::CT_VBRACE_CLOSE)
+ .value("SQUARE_OPEN", E_Token::CT_SQUARE_OPEN)
+ .value("SQUARE_CLOSE", E_Token::CT_SQUARE_CLOSE)
+ .value("TSQUARE", E_Token::CT_TSQUARE)
+ .value("MACRO_OPEN", E_Token::CT_MACRO_OPEN)
+ .value("MACRO_CLOSE", E_Token::CT_MACRO_CLOSE)
+ .value("MACRO_ELSE", E_Token::CT_MACRO_ELSE)
+ .value("LABEL", E_Token::CT_LABEL)
+ .value("LABEL_COLON", E_Token::CT_LABEL_COLON)
+ .value("FUNCTION", E_Token::CT_FUNCTION)
+ .value("FUNC_CALL", E_Token::CT_FUNC_CALL)
+ .value("FUNC_CALL_USER", E_Token::CT_FUNC_CALL_USER)
+ .value("FUNC_DEF", E_Token::CT_FUNC_DEF)
+ .value("FUNC_TYPE", E_Token::CT_FUNC_TYPE)
+ .value("FUNC_VAR", E_Token::CT_FUNC_VAR)
+ .value("FUNC_PROTO", E_Token::CT_FUNC_PROTO)
+ .value("FUNC_START", E_Token::CT_FUNC_START)
+ .value("FUNC_CLASS_DEF", E_Token::CT_FUNC_CLASS_DEF)
+ .value("FUNC_CLASS_PROTO", E_Token::CT_FUNC_CLASS_PROTO)
+ .value("FUNC_CTOR_VAR", E_Token::CT_FUNC_CTOR_VAR)
+ .value("FUNC_WRAP", E_Token::CT_FUNC_WRAP)
+ .value("PROTO_WRAP", E_Token::CT_PROTO_WRAP)
+ .value("MACRO_FUNC", E_Token::CT_MACRO_FUNC)
+ .value("MACRO", E_Token::CT_MACRO)
+ .value("QUALIFIER", E_Token::CT_QUALIFIER)
+ .value("EXTERN", E_Token::CT_EXTERN)
+ .value("DECLSPEC", E_Token::CT_DECLSPEC)
+ .value("ALIGN", E_Token::CT_ALIGN)
+ .value("TYPE", E_Token::CT_TYPE)
+ .value("PTR_TYPE", E_Token::CT_PTR_TYPE)
+ .value("TYPE_WRAP", E_Token::CT_TYPE_WRAP)
+ .value("CPP_LAMBDA", E_Token::CT_CPP_LAMBDA)
+ .value("CPP_LAMBDA_RET", E_Token::CT_CPP_LAMBDA_RET)
+ .value("TRAILING_RET", E_Token::CT_TRAILING_RET)
+ .value("BIT_COLON", E_Token::CT_BIT_COLON)
+ .value("OC_DYNAMIC", E_Token::CT_OC_DYNAMIC)
+ .value("OC_END", E_Token::CT_OC_END)
+ .value("OC_IMPL", E_Token::CT_OC_IMPL)
+ .value("OC_INTF", E_Token::CT_OC_INTF)
+ .value("OC_PROTOCOL", E_Token::CT_OC_PROTOCOL)
+ .value("OC_PROTO_LIST", E_Token::CT_OC_PROTO_LIST)
+ .value("OC_GENERIC_SPEC", E_Token::CT_OC_GENERIC_SPEC)
+ .value("OC_PROPERTY", E_Token::CT_OC_PROPERTY)
+ .value("OC_CLASS", E_Token::CT_OC_CLASS)
+ .value("OC_CLASS_EXT", E_Token::CT_OC_CLASS_EXT)
+ .value("OC_CATEGORY", E_Token::CT_OC_CATEGORY)
+ .value("OC_SCOPE", E_Token::CT_OC_SCOPE)
+ .value("OC_MSG", E_Token::CT_OC_MSG)
+ .value("OC_MSG_CLASS", E_Token::CT_OC_MSG_CLASS)
+ .value("OC_MSG_FUNC", E_Token::CT_OC_MSG_FUNC)
+ .value("OC_MSG_NAME", E_Token::CT_OC_MSG_NAME)
+ .value("OC_MSG_SPEC", E_Token::CT_OC_MSG_SPEC)
+ .value("OC_MSG_DECL", E_Token::CT_OC_MSG_DECL)
+ .value("OC_RTYPE", E_Token::CT_OC_RTYPE)
+ .value("OC_ATYPE", E_Token::CT_OC_ATYPE)
+ .value("OC_COLON", E_Token::CT_OC_COLON)
+ .value("OC_DICT_COLON", E_Token::CT_OC_DICT_COLON)
+ .value("OC_SEL", E_Token::CT_OC_SEL)
+ .value("OC_SEL_NAME", E_Token::CT_OC_SEL_NAME)
+ .value("OC_BLOCK", E_Token::CT_OC_BLOCK)
+ .value("OC_BLOCK_ARG", E_Token::CT_OC_BLOCK_ARG)
+ .value("OC_BLOCK_TYPE", E_Token::CT_OC_BLOCK_TYPE)
+ .value("OC_BLOCK_EXPR", E_Token::CT_OC_BLOCK_EXPR)
+ .value("OC_BLOCK_CARET", E_Token::CT_OC_BLOCK_CARET)
+ .value("OC_AT", E_Token::CT_OC_AT)
+ .value("OC_PROPERTY_ATTR", E_Token::CT_OC_PROPERTY_ATTR)
+ .value("PP_DEFINE", E_Token::CT_PP_DEFINE)
+ .value("PP_DEFINED", E_Token::CT_PP_DEFINED)
+ .value("PP_INCLUDE", E_Token::CT_PP_INCLUDE)
+ .value("PP_IF", E_Token::CT_PP_IF)
+ .value("PP_ELSE", E_Token::CT_PP_ELSE)
+ .value("PP_ENDIF", E_Token::CT_PP_ENDIF)
+ .value("PP_ASSERT", E_Token::CT_PP_ASSERT)
+ .value("PP_EMIT", E_Token::CT_PP_EMIT)
+ .value("PP_ENDINPUT", E_Token::CT_PP_ENDINPUT)
+ .value("PP_ERROR", E_Token::CT_PP_ERROR)
+ .value("PP_FILE", E_Token::CT_PP_FILE)
+ .value("PP_LINE", E_Token::CT_PP_LINE)
+ .value("PP_SECTION", E_Token::CT_PP_SECTION)
+ .value("PP_ASM", E_Token::CT_PP_ASM)
+ .value("PP_UNDEF", E_Token::CT_PP_UNDEF)
+ .value("PP_PROPERTY", E_Token::CT_PP_PROPERTY)
+ .value("PP_BODYCHUNK", E_Token::CT_PP_BODYCHUNK)
+ .value("PP_PRAGMA", E_Token::CT_PP_PRAGMA)
+ .value("PP_REGION", E_Token::CT_PP_REGION)
+ .value("PP_ENDREGION", E_Token::CT_PP_ENDREGION)
+ .value("PP_REGION_INDENT", E_Token::CT_PP_REGION_INDENT)
+ .value("PP_IF_INDENT", E_Token::CT_PP_IF_INDENT)
+ .value("PP_IGNORE", E_Token::CT_PP_IGNORE)
+ .value("PP_OTHER", E_Token::CT_PP_OTHER)
+ .value("CHAR", E_Token::CT_CHAR)
+ .value("DEFINED", E_Token::CT_DEFINED)
+ .value("FORWARD", E_Token::CT_FORWARD)
+ .value("NATIVE", E_Token::CT_NATIVE)
+ .value("STATE", E_Token::CT_STATE)
+ .value("STOCK", E_Token::CT_STOCK)
+ .value("TAGOF", E_Token::CT_TAGOF)
+ .value("DOT", E_Token::CT_DOT)
+ .value("TAG", E_Token::CT_TAG)
+ .value("TAG_COLON", E_Token::CT_TAG_COLON)
+ .value("LOCK", E_Token::CT_LOCK)
+ .value("AS", E_Token::CT_AS)
+ .value("IN", E_Token::CT_IN)
+ .value("BRACED", E_Token::CT_BRACED)
+ .value("THIS", E_Token::CT_THIS)
+ .value("BASE", E_Token::CT_BASE)
+ .value("DEFAULT", E_Token::CT_DEFAULT)
+ .value("GETSET", E_Token::CT_GETSET)
+ .value("GETSET_EMPTY", E_Token::CT_GETSET_EMPTY)
+ .value("CONCAT", E_Token::CT_CONCAT)
+ .value("CS_SQ_STMT", E_Token::CT_CS_SQ_STMT)
+ .value("CS_SQ_COLON", E_Token::CT_CS_SQ_COLON)
+ .value("CS_PROPERTY", E_Token::CT_CS_PROPERTY)
+ .value("SQL_EXEC", E_Token::CT_SQL_EXEC)
+ .value("SQL_BEGIN", E_Token::CT_SQL_BEGIN)
+ .value("SQL_END", E_Token::CT_SQL_END)
+ .value("SQL_WORD", E_Token::CT_SQL_WORD)
+ .value("SQL_ASSIGN", E_Token::CT_SQL_ASSIGN)
+ .value("CONSTRUCT", E_Token::CT_CONSTRUCT)
+ .value("LAMBDA", E_Token::CT_LAMBDA)
+ .value("ASSERT", E_Token::CT_ASSERT)
+ .value("ANNOTATION", E_Token::CT_ANNOTATION)
+ .value("FOR_COLON", E_Token::CT_FOR_COLON)
+ .value("DOUBLE_BRACE", E_Token::CT_DOUBLE_BRACE)
+ .value("CNG_HASINC", E_Token::CT_CNG_HASINC)
+ .value("CNG_HASINCN", E_Token::CT_CNG_HASINCN)
+ .value("Q_EMIT", E_Token::CT_Q_EMIT)
+ .value("Q_FOREACH", E_Token::CT_Q_FOREACH)
+ .value("Q_FOREVER", E_Token::CT_Q_FOREVER)
+ .value("Q_GADGET", E_Token::CT_Q_GADGET)
+ .value("Q_OBJECT", E_Token::CT_Q_OBJECT)
+ .value("MODE", E_Token::CT_MODE)
+ .value("DI", E_Token::CT_DI)
+ .value("HI", E_Token::CT_HI)
+ .value("QI", E_Token::CT_QI)
+ .value("SI", E_Token::CT_SI)
+ .value("NOTHROW", E_Token::CT_NOTHROW)
+ .value("WORD_", E_Token::CT_WORD_);
+
+ enum_<lang_flag_e>("Language")
+ .value("C", lang_flag_e::LANG_C)
+ .value("CPP", lang_flag_e::LANG_CPP)
+ .value("D", lang_flag_e::LANG_D)
+ .value("CS", lang_flag_e::LANG_CS)
+ .value("JAVA", lang_flag_e::LANG_JAVA)
+ .value("OC", lang_flag_e::LANG_OC)
+ .value("VALA", lang_flag_e::LANG_VALA)
+ .value("PAWN", lang_flag_e::LANG_PAWN)
+ .value("ECMA", lang_flag_e::LANG_ECMA);
+
+ // endregion enum bindings
+
+ register_vector<std::string>("strings");
+
+ class_<GenericOption>("GenericOption")
+ .function("type", &GenericOption::type)
+ .function("description", select_overload<std::string(const GenericOption &)>(
+ [](const GenericOption &o)
+ {
+ return((o.description() != nullptr) ? string(o.description()) : "");
+ }))
+ .function("name", select_overload<std::string(const GenericOption &)>(
+ [](const GenericOption &o)
+ {
+ return((o.name() != nullptr) ? string(o.name()) : "");
+ }))
+ .function("possible_values", select_overload<std::vector<std::string>(const GenericOption &)>(
+ [](const GenericOption &o)
+ {
+ std::vector<std::string> strings;
+
+ auto ptr = o.possibleValues();
+
+ for (auto c = *ptr; c; c = *++ptr)
+ {
+ strings.push_back(std::string{ c });
+ }
+
+ return(strings);
+ }))
+ .function("default", &GenericOption::defaultStr)
+ .function("min", &GenericOption::minStr)
+ .function("max", &GenericOption::maxStr)
+ .function("is_default", &GenericOption::isDefault)
+ .function("reset", &GenericOption::reset)
+ .function("set", select_overload<bool(GenericOption &o, const std::string &s)>(
+ [](GenericOption &o, const std::string &s)
+ {
+ return(o.read(s.c_str()));
+ }))
+ .function("value", &GenericOption::str);
+
+ register_vector<GenericOption *>("options");
+
+ class_<Option<iarf_e>, base<GenericOption> >("OptionIARF")
+ .function("value", &Option<iarf_e>::operator());
+
+ class_<Option<line_end_e>, base<GenericOption> >("OptionLineEnd")
+ .function("value", &Option<line_end_e>::operator());
+
+ class_<Option<token_pos_e>, base<GenericOption> >("OptionTokenPos")
+ .function("value", &Option<token_pos_e>::operator());
+
+ class_<Option<unsigned>, base<GenericOption> >("OptionUnsigned")
+ .function("value", &Option<unsigned>::operator());
+
+ class_<Option<signed>, base<GenericOption> >("OptionSigned")
+ .function("value", &Option<signed>::operator());
+
+ class_<Option<std::string>, base<GenericOption> >("OptionString")
+ .function("value", &Option<std::string>::operator());
+
+ class_<OptionGroup>("OptionGroup")
+ .property("description", select_overload<std::string(const OptionGroup &)>(
+ [](const OptionGroup &g)
+ {
+ return(std::string(g.description));
+ }))
+ .property("options", &OptionGroup::options);
+
+ register_vector<OptionGroup *>("groups");
+
+ emscripten::function("get_options", &get_options);
+ emscripten::function("get_groups", &get_groups);
+
+ emscripten::function("_initialize", &_initialize);
+ emscripten::function("destruct", &destruct);
+
+ emscripten::function("get_version", &get_version);
+
+ emscripten::function("add_keyword", &_add_keyword);
+ emscripten::function("clear_keywords", &clear_keywords);
+
+ emscripten::function("reset_options", &reset_options);
+ emscripten::function("option_reset_value", &reset_option);
+ emscripten::function("option_set_value", &set_option);
+ emscripten::function("option_get_value", &get_option);
+
+ emscripten::function("_load_config", &_loadConfig);
+ emscripten::function("show_config", select_overload<string(bool, bool)>(&show_config));
+ emscripten::function("show_config", select_overload<string(bool)>(&show_config));
+ emscripten::function("show_config", select_overload<string()>(&show_config));
+
+ emscripten::function("log_type_enable", &log_set_sev);
+ emscripten::function("log_type_show_name", &show_log_type);
+ emscripten::function("quiet", &set_quiet);
+
+ emscripten::function("_uncrustify", select_overload<intptr_t(intptr_t, lang_flag_e, bool, bool)>(&_uncrustify));
+ emscripten::function("_uncrustify", select_overload<intptr_t(intptr_t, lang_flag_e, bool)>(&_uncrustify));
+ emscripten::function("_uncrustify", select_overload<intptr_t(intptr_t, lang_flag_e)>(&_uncrustify));
+
+ emscripten::function("_debug", select_overload<intptr_t(intptr_t, lang_flag_e, bool)>(&_debug));
+ emscripten::function("_debug", select_overload<intptr_t(intptr_t, lang_flag_e)>(&_debug));
+};
+
+#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_limits.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_limits.h
index 9f226870..9f226870 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_limits.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_limits.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_types.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_types.cpp
new file mode 100644
index 00000000..4dc959c7
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_types.cpp
@@ -0,0 +1,108 @@
+/**
+ * @file uncrustify_types.cpp
+ * Defines some types for the uncrustify program
+ *
+ * @author Guy Maurel
+ * @license GPL v2+
+ */
+
+#include "uncrustify_types.h"
+
+
+const char *get_brace_stage_name(E_BraceStage brace_stage)
+{
+ switch (brace_stage)
+ {
+ case E_BraceStage::NONE:
+ return("NONE");
+
+ case E_BraceStage::PAREN1:
+ return("PAREN1");
+
+ case E_BraceStage::OP_PAREN1:
+ return("OP_PAREN1");
+
+ case E_BraceStage::WOD_PAREN:
+ return("WOD_PAREN");
+
+ case E_BraceStage::WOD_SEMI:
+ return("WOD_SEMI");
+
+ case E_BraceStage::BRACE_DO:
+ return("BRACE_DO");
+
+ case E_BraceStage::BRACE2:
+ return("BRACE2");
+
+ case E_BraceStage::ELSE:
+ return("ELSE");
+
+ case E_BraceStage::ELSEIF:
+ return("ELSEIF");
+
+ case E_BraceStage::WHILE:
+ return("WHILE");
+
+ case E_BraceStage::CATCH:
+ return("CATCH");
+
+ case E_BraceStage::CATCH_WHEN:
+ return("CATCH_WHEN");
+ }
+ return("?????");
+} // get_brace_stage_name
+
+
+const char *get_tracking_type_e_name(tracking_type_e type)
+{
+ switch (type)
+ {
+ case tracking_type_e::TT_NONE:
+ return("NONE");
+
+ case tracking_type_e::TT_SPACE:
+ return("space");
+
+ case tracking_type_e::TT_NEWLINE:
+ return("newline");
+
+ case tracking_type_e::TT_START:
+ return("start");
+ }
+ return("?????");
+} // get_tracking_type_e_name
+
+
+const char *get_unc_stage_name(unc_stage_e unc_stage)
+{
+ switch (unc_stage)
+ {
+ case unc_stage_e::TOKENIZE:
+ return("TOKENIZE");
+
+ case unc_stage_e::HEADER:
+ return("HEADER");
+
+ case unc_stage_e::TOKENIZE_CLEANUP:
+ return("TOKENIZE_CLEANUP");
+
+ case unc_stage_e::BRACE_CLEANUP:
+ return("BRACE_CLEANUP");
+
+ case unc_stage_e::FIX_SYMBOLS:
+ return("FIX_SYMBOLS");
+
+ case unc_stage_e::MARK_COMMENTS:
+ return("MARK_COMMENTS");
+
+ case unc_stage_e::COMBINE_LABELS:
+ return("COMBINE_LABELS");
+
+ case unc_stage_e::OTHER:
+ return("OTHER");
+
+ case unc_stage_e::CLEANUP:
+ return("CLEANUP");
+ }
+ return("?????");
+} // get_unc_stage_name
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_types.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_types.h
new file mode 100644
index 00000000..0e2a0786
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_types.h
@@ -0,0 +1,280 @@
+/**
+ * @file uncrustify_types.h
+ *
+ * Defines some types for the uncrustify program
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef UNCRUSTIFY_TYPES_H_INCLUDED
+#define UNCRUSTIFY_TYPES_H_INCLUDED
+
+#include "options.h"
+#include "pcf_flags.h"
+#include "token_enum.h" // E_Token
+#include "unc_text.h"
+#include "uncrustify_limits.h"
+
+#include <assert.h>
+#include <cstddef> // to get size_t
+
+#ifdef HAVE_UTIME_H
+#include <utime.h>
+#endif
+
+
+/**
+ * abbreviations used:
+ * SS = star style
+ */
+
+/**
+ * special strings to mark a part of the input file where
+ * uncrustify shall not change anything
+ */
+#define UNCRUSTIFY_OFF_TEXT " *INDENT-OFF*"
+#define UNCRUSTIFY_ON_TEXT " *INDENT-ON*"
+
+/**
+ * @brief Macro to inform the compiler that a variable is intentionally
+ * not in use.
+ *
+ * @param [in] variableName: The unused variable.
+ */
+#define UNUSED(variableName) ((void)variableName)
+
+
+//! Brace stage enum used in brace_cleanup
+enum class E_BraceStage : unsigned int
+{
+ NONE,
+ PAREN1, //! expected paren after if/catch (C++)/for/switch/synchronized/while
+ OP_PAREN1, //! optional paren after catch (C#)
+ WOD_PAREN, //! while of do parens
+ WOD_SEMI, //! semicolon after while of do
+ BRACE_DO, //! do
+ BRACE2, //! if/catch/else/finally/for/switch/synchronized/while
+ ELSE, //! expecting 'else' after 'if'
+ ELSEIF, //! expecting 'if' after 'else'
+ WHILE, //! expecting 'while' after 'do'
+ CATCH, //! expecting 'catch' or 'finally' after 'try'
+ CATCH_WHEN, //! optional 'when' after 'catch'
+};
+
+
+enum class char_encoding_e : unsigned int
+{
+ e_ASCII, //! 0-127
+ e_BYTE, //! 0-255, not UTF-8
+ e_UTF8, //! utf 8 bit wide
+ e_UTF16_LE, //! utf 16 bit wide, little endian
+ e_UTF16_BE //! utf 16 bit wide, big endian
+};
+
+enum class tracking_type_e : unsigned int
+{
+ TT_NONE,
+ TT_SPACE,
+ TT_NEWLINE,
+ TT_START
+};
+
+const char *get_tracking_type_e_name(tracking_type_e type);
+
+class Chunk; //forward declaration
+
+
+/**
+ * Sort of like the aligning stuff, but the token indent is relative to the
+ * indent of another chunk. This is needed, as that chunk may be aligned and
+ * so the indent cannot be determined in the indent code.
+ */
+struct IndentationData
+{
+ Chunk *ref;
+ int delta;
+};
+
+
+struct AlignmentData
+{
+ Chunk *next; //! Chunk::NullChunkPtr or the chunk that should be under this one
+ bool right_align; //! AlignStack.m_right_align
+ size_t star_style; //! AlignStack.m_star_style
+ size_t amp_style; //! AlignStack.m_amp_style
+ int gap; //! AlignStack.m_gap
+
+ /*
+ * col_adj is the amount to alter the column for the token.
+ * For example, a dangling '*' would be set to -1.
+ * A right-aligned word would be a positive value.
+ */
+ int col_adj;
+ Chunk *ref;
+ Chunk *start;
+};
+
+
+// for debugging purpose only
+typedef std::pair<size_t, char *> TrackNumber; // track for "trackNumber" and "rule"
+typedef std::vector<TrackNumber> TrackList; // list of tracks
+
+////! list of all programming languages Uncrustify supports
+//enum lang_flag_e
+//{
+// LANG_C = 0x0001,
+// LANG_CPP = 0x0002,
+// LANG_D = 0x0004,
+// LANG_CS = 0x0008, //! C# (C-Sharp)
+// LANG_JAVA = 0x0010,
+// LANG_OC = 0x0020, //! Objective-C
+// LANG_VALA = 0x0040,
+// LANG_PAWN = 0x0080,
+// LANG_ECMA = 0x0100, //! ECMA Script (JavaScript)
+//
+// LANG_ALLC = 0x017f, /** LANG_C | LANG_CPP | LANG_D | LANG_CS |
+// * LANG_JAVA | LANG_OC | LANG_VALA | LANG_ECMA */
+// LANG_ALL = 0x0fff, //! applies to all languages
+//
+// FLAG_HDR = 0x2000, /*<< Header file for C family languages */
+// FLAG_DIG = 0x4000, //! digraph/trigraph
+// FLAG_PP = 0x8000, //! only appears in a preprocessor
+//};
+
+//! Pattern classes for special keywords
+enum class pattern_class_e : unsigned int
+{
+ NONE,
+ BRACED, /** keyword + braced statement:
+ * do, try, finally, body, unittest, unsafe, volatile
+ * add, get, remove, set */
+ PBRACED, /** keyword + parens + braced statement:
+ * if, elseif, switch, for, while, synchronized,
+ * using, lock, with, version, CT_D_SCOPE_IF */
+ OPBRACED, /** keyword + optional parens + braced statement:
+ * catch, version, debug */
+ VBRACED, /** keyword + value + braced statement:
+ * namespace */
+ PAREN, /** keyword + parens:
+ * while-of-do */
+ OPPAREN, /** keyword + optional parens:
+ * invariant (D lang) */
+ ELSE, /** Special case of pattern_class_e::BRACED for handling CT_IF
+ * else */
+};
+
+//! used to link language keywords with some addition information
+struct chunk_tag_t
+{
+ const char *tag; //! name of the keyword e.g. "bool"
+ E_Token type; //! uncrustify type assigned to that keyword
+ size_t lang_flags; //! programming language that uses this keyword
+};
+
+
+struct align_t
+{
+ size_t col;
+ E_Token type;
+ size_t len; //! length of the token + space
+ Chunk *ref; // Issue #3786
+};
+
+//! holds information and data of a file
+struct file_mem
+{
+ std::vector<UINT8> raw; //! raw content of file
+ std::deque<int> data; //! processed content of file
+ bool bom;
+ char_encoding_e enc; //! character encoding of file ASCII, utf, etc.
+#ifdef HAVE_UTIME_H
+ struct utimbuf utb;
+#endif
+};
+
+enum class unc_stage_e : unsigned int
+{
+ TOKENIZE,
+ HEADER,
+ TOKENIZE_CLEANUP,
+ BRACE_CLEANUP,
+ FIX_SYMBOLS,
+ MARK_COMMENTS,
+ COMBINE_LABELS,
+ OTHER,
+ CLEANUP
+};
+
+struct cp_data_t
+{
+ std::deque<UINT8> *bout;
+ FILE *fout;
+ int last_char;
+ bool do_check;
+ unc_stage_e unc_stage;
+ int check_fail_cnt; //! total failure count
+ bool if_changed;
+
+ std::string filename;
+
+ file_mem file_hdr; // for cmt_insert_file_header
+ file_mem file_ftr; // for cmt_insert_file_footer
+ file_mem func_hdr; // for cmt_insert_func_header
+ file_mem oc_msg_hdr; // for cmt_insert_oc_msg_header
+ file_mem class_hdr; // for cmt_insert_class_header
+ file_mem reflow_fold_regex; // for cmt_reflow_fold_regex_file
+
+ size_t lang_flags; //! defines the language of the source input
+ bool lang_forced; //! overwrites automatic language detection
+
+ bool unc_off;
+ bool unc_off_used; //! true if the `disable_processing_cmt` option was actively used in the processed file
+ UINT32 line_number;
+ size_t column; //! column for parsing
+ UINT16 spaces; //! space count on output
+
+ int ifdef_over_whole_file;
+
+ bool frag; //! activates code fragment option
+ UINT32 frag_cols;
+
+ // stuff to auto-detect line endings
+ UINT32 le_counts[uncrustify::line_end_styles];
+ UncText newline;
+
+ bool did_newline; //! flag indicates if a newline was added or converted
+ E_Token in_preproc;
+ int preproc_ncnl_count;
+ bool output_trailspace;
+ bool output_tab_as_space;
+
+ bool bom;
+ char_encoding_e enc;
+
+ // bumped up when a line is split or indented
+ int changes;
+ int pass_count; //! indicates how often the chunk list shall be processed
+
+ align_t al[uncrustify::limits::AL_SIZE];
+ size_t al_cnt;
+ bool al_c99_array;
+
+ bool warned_unable_string_replace_tab_chars;
+
+ int pp_level; // TODO: can this ever be -1?
+
+ const char *phase_name;
+ const char *dumped_file;
+ // for debugging purpose only
+ tracking_type_e html_type = tracking_type_e::TT_NONE;
+ const char *html_file = nullptr;
+};
+
+extern cp_data_t cpd; // TODO: can we avoid this external variable?
+
+const char *get_brace_stage_name(E_BraceStage brace_stage);
+
+const char *get_unc_stage_name(unc_stage_e unc_stage);
+
+#endif /* UNCRUSTIFY_TYPES_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_version.h.in b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_version.h.in
index 079e0fa6..079e0fa6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/uncrustify_version.h.in
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/uncrustify_version.h.in
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unicode.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unicode.cpp
new file mode 100644
index 00000000..684f5b0a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unicode.cpp
@@ -0,0 +1,580 @@
+/**
+ * @file unicode.cpp
+ * Detects, read and writes characters in the proper format.
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "unicode.h"
+
+
+using namespace std;
+
+
+//! See if all characters are ASCII (0-127)
+static bool is_ascii(const vector<UINT8> &data, size_t &non_ascii_cnt, size_t &zero_cnt);
+
+
+//! Convert the array of bytes into an array of ints
+static bool decode_bytes(const vector<UINT8> &in_data, deque<int> &out_data);
+
+
+/**
+ * Decode UTF-8 sequences from in_data and put the chars in out_data.
+ * If there are any decoding errors, then return false.
+ */
+static bool decode_utf8(const vector<UINT8> &in_data, deque<int> &out_data);
+
+
+/**
+ * Extract 2 bytes from the stream and increment idx by 2
+ *
+ * @param in byte vector with input data
+ * @param idx index points to working position in vector
+ */
+static int get_word(const vector<UINT8> &in_data, size_t &idx, bool be);
+
+
+/**
+ * Decode a UTF-16 sequence.
+ * Sets enc based on the BOM.
+ * Must have the BOM as the first two bytes.
+ */
+static bool decode_utf16(const vector<UINT8> &in_data, deque<int> &out_data, char_encoding_e &enc);
+
+
+/**
+ * Looks for the BOM of UTF-16 BE/LE and UTF-8.
+ * If found, set enc and return true.
+ * Sets enc to char_encoding_e::e_ASCII and returns false if not found.
+ */
+static bool decode_bom(const vector<UINT8> &in_data, char_encoding_e &enc);
+
+
+//! Write for ASCII and BYTE encoding
+static void write_byte(int ch);
+
+
+//! Writes a single character to a file using UTF-8 encoding
+static void write_utf8(int ch);
+
+
+static void write_utf16(int ch, bool be);
+
+
+static bool is_ascii(const vector<UINT8> &data, size_t &non_ascii_cnt, size_t &zero_cnt)
+{
+ non_ascii_cnt = 0;
+ zero_cnt = 0;
+
+ for (unsigned char value : data)
+ {
+ if (value & 0x80)
+ {
+ non_ascii_cnt++;
+ }
+
+ if (!value)
+ {
+ zero_cnt++;
+ }
+ }
+
+ return((non_ascii_cnt + zero_cnt) == 0);
+}
+
+
+static bool decode_bytes(const vector<UINT8> &in_data, deque<int> &out_data)
+{
+ out_data.resize(in_data.size());
+
+ for (size_t idx = 0; idx < in_data.size(); idx++)
+ {
+ out_data[idx] = in_data[idx];
+ }
+
+ return(true);
+}
+
+
+void encode_utf8(int ch, vector<UINT8> &res)
+{
+ if (ch < 0)
+ {
+ // illegal code - do not store
+ }
+ else if (ch < 0x80)
+ {
+ // 0xxxxxxx
+ res.push_back(ch);
+ }
+ else if (ch < 0x0800)
+ {
+ // 110xxxxx 10xxxxxx
+ res.push_back(0xC0 | (ch >> 6));
+ res.push_back(0x80 | (ch & 0x3f));
+ }
+ else if (ch < 0x10000)
+ {
+ // 1110xxxx 10xxxxxx 10xxxxxx
+ res.push_back(0xE0 | (ch >> 12));
+ res.push_back(0x80 | ((ch >> 6) & 0x3f));
+ res.push_back(0x80 | (ch & 0x3f));
+ }
+ else if (ch < 0x200000)
+ {
+ // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ res.push_back(0xF0 | (ch >> 18));
+ res.push_back(0x80 | ((ch >> 12) & 0x3f));
+ res.push_back(0x80 | ((ch >> 6) & 0x3f));
+ res.push_back(0x80 | (ch & 0x3f));
+ }
+ else if (ch < 0x4000000)
+ {
+ // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ res.push_back(0xF8 | (ch >> 24));
+ res.push_back(0x80 | ((ch >> 18) & 0x3f));
+ res.push_back(0x80 | ((ch >> 12) & 0x3f));
+ res.push_back(0x80 | ((ch >> 6) & 0x3f));
+ res.push_back(0x80 | (ch & 0x3f));
+ }
+ else // (ch <= 0x7fffffff)
+ {
+ // 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ res.push_back(0xFC | (ch >> 30));
+ res.push_back(0x80 | ((ch >> 24) & 0x3f));
+ res.push_back(0x80 | ((ch >> 18) & 0x3f));
+ res.push_back(0x80 | ((ch >> 12) & 0x3f));
+ res.push_back(0x80 | ((ch >> 6) & 0x3f));
+ res.push_back(0x80 | (ch & 0x3f));
+ }
+} // encode_utf8
+
+
+static bool decode_utf8(const vector<UINT8> &in_data, deque<int> &out_data)
+{
+ size_t idx = 0;
+ int cnt;
+
+ out_data.clear();
+
+ // check for UTF-8 BOM silliness and skip
+ if (in_data.size() >= 3)
+ {
+ if ( (in_data[0] == 0xef)
+ && (in_data[1] == 0xbb)
+ && (in_data[2] == 0xbf))
+ {
+ idx = 3; // skip it
+ }
+ }
+
+ while (idx < in_data.size())
+ {
+ int ch = in_data[idx++];
+
+ if (ch < 0x80) // 1-byte sequence
+ {
+ out_data.push_back(ch);
+ continue;
+ }
+ else if ((ch & 0xE0) == 0xC0) // 2-byte sequence
+ {
+ ch &= 0x1F;
+ cnt = 1;
+ }
+ else if ((ch & 0xF0) == 0xE0) // 3-byte sequence
+ {
+ ch &= 0x0F;
+ cnt = 2;
+ }
+ else if ((ch & 0xF8) == 0xF0) // 4-byte sequence
+ {
+ ch &= 0x07;
+ cnt = 3;
+ }
+ else if ((ch & 0xFC) == 0xF8) // 5-byte sequence
+ {
+ ch &= 0x03;
+ cnt = 4;
+ }
+ else if ((ch & 0xFE) == 0xFC) // 6-byte sequence
+ {
+ ch &= 0x01;
+ cnt = 5;
+ }
+ else
+ {
+ // invalid UTF-8 sequence
+ return(false);
+ }
+
+ while ( cnt-- > 0
+ && idx < in_data.size())
+ {
+ int tmp = in_data[idx++];
+
+ if ((tmp & 0xC0) != 0x80)
+ {
+ // invalid UTF-8 sequence
+ return(false);
+ }
+ ch = (ch << 6) | (tmp & 0x3f);
+ }
+
+ if (cnt >= 0)
+ {
+ // short UTF-8 sequence
+ return(false);
+ }
+ out_data.push_back(ch);
+ }
+ return(true);
+} // decode_utf8
+
+
+static int get_word(const vector<UINT8> &in_data, size_t &idx, bool be)
+{
+ int ch;
+
+ if ((idx + 2) > in_data.size())
+ {
+ ch = -1;
+ }
+ else if (be)
+ {
+ ch = (in_data[idx] << 8) | in_data[idx + 1];
+ }
+ else
+ {
+ ch = in_data[idx] | (in_data[idx + 1] << 8);
+ }
+ idx += 2;
+ return(ch);
+}
+
+
+static bool decode_utf16(const vector<UINT8> &in_data, deque<int> &out_data, char_encoding_e &enc)
+{
+ out_data.clear();
+
+ if (in_data.size() & 1)
+ {
+ // can't have and odd length
+ return(false);
+ }
+
+ if (in_data.size() < 2)
+ {
+ // we require the BOM or at least 1 char
+ return(false);
+ }
+ size_t idx = 2;
+
+ if ( (in_data[0] == 0xfe)
+ && (in_data[1] == 0xff))
+ {
+ enc = char_encoding_e::e_UTF16_BE;
+ }
+ else if ( (in_data[0] == 0xff)
+ && (in_data[1] == 0xfe))
+ {
+ enc = char_encoding_e::e_UTF16_LE;
+ }
+ else
+ {
+ /*
+ * If we have a few words, we can take a guess, assuming the first few
+ * chars are ASCII
+ */
+ enc = char_encoding_e::e_ASCII;
+ idx = 0;
+
+ if (in_data.size() >= 6)
+ {
+ if ( (in_data[0] == 0)
+ && (in_data[2] == 0)
+ && (in_data[4] == 0))
+ {
+ enc = char_encoding_e::e_UTF16_BE;
+ }
+ else if ( (in_data[1] == 0)
+ && (in_data[3] == 0)
+ && (in_data[5] == 0))
+ {
+ enc = char_encoding_e::e_UTF16_LE;
+ }
+ }
+
+ if (enc == char_encoding_e::e_ASCII)
+ {
+ return(false);
+ }
+ }
+ bool be = (enc == char_encoding_e::e_UTF16_BE);
+
+ while (idx < in_data.size())
+ {
+ int ch = get_word(in_data, idx, be);
+
+ if ((ch & 0xfc00) == 0xd800)
+ {
+ ch &= 0x3ff;
+ ch <<= 10;
+ int tmp = get_word(in_data, idx, be);
+
+ if ((tmp & 0xfc00) != 0xdc00)
+ {
+ return(false);
+ }
+ ch |= (tmp & 0x3ff);
+ ch += 0x10000;
+ out_data.push_back(ch);
+ }
+ else if ( ( ch >= 0
+ && ch < 0xD800)
+ || ch >= 0xE000)
+ {
+ out_data.push_back(ch);
+ }
+ else
+ {
+ // invalid character
+ return(false);
+ }
+ }
+ return(true);
+} // decode_utf16
+
+
+static bool decode_bom(const vector<UINT8> &in_data, char_encoding_e &enc)
+{
+ enc = char_encoding_e::e_ASCII;
+
+ if (in_data.size() >= 2)
+ {
+ if ( (in_data[0] == 0xfe)
+ && (in_data[1] == 0xff))
+ {
+ enc = char_encoding_e::e_UTF16_BE;
+ return(true);
+ }
+
+ if ( (in_data[0] == 0xff)
+ && (in_data[1] == 0xfe))
+ {
+ enc = char_encoding_e::e_UTF16_LE;
+ return(true);
+ }
+
+ if ( (in_data.size() >= 3)
+ && (in_data[0] == 0xef)
+ && (in_data[1] == 0xbb)
+ && (in_data[2] == 0xbf))
+ {
+ enc = char_encoding_e::e_UTF8;
+ return(true);
+ }
+ }
+ return(false);
+}
+
+
+bool decode_unicode(const vector<UINT8> &in_data, deque<int> &out_data, char_encoding_e &enc, bool &has_bom)
+{
+ // check for a BOM
+ if (decode_bom(in_data, enc))
+ {
+ has_bom = true;
+
+ if (enc == char_encoding_e::e_UTF8)
+ {
+ return(decode_utf8(in_data, out_data));
+ }
+ return(decode_utf16(in_data, out_data, enc));
+ }
+ has_bom = false;
+
+ // Check for simple ASCII
+ size_t non_ascii_cnt;
+ size_t zero_cnt;
+
+ if (is_ascii(in_data, non_ascii_cnt, zero_cnt))
+ {
+ enc = char_encoding_e::e_ASCII;
+ return(decode_bytes(in_data, out_data));
+ }
+
+ // There are a lot of 0's in UTF-16 (~50%)
+ if ( (zero_cnt > (in_data.size() / 4))
+ && (zero_cnt <= (in_data.size() / 2)))
+ {
+ // likely is UTF-16
+ if (decode_utf16(in_data, out_data, enc))
+ {
+ return(true);
+ }
+ }
+
+ if (decode_utf8(in_data, out_data))
+ {
+ enc = char_encoding_e::e_UTF8;
+ return(true);
+ }
+ // it is an unrecognized byte sequence
+ enc = char_encoding_e::e_BYTE;
+ return(decode_bytes(in_data, out_data));
+} // decode_unicode
+
+
+static void write_byte(int ch)
+{
+ if ((ch & 0xff) == ch)
+ {
+ if (cpd.fout)
+ {
+ fputc(ch, cpd.fout);
+ }
+
+ if (cpd.bout)
+ {
+ cpd.bout->push_back(static_cast<UINT8>(ch));
+ }
+ }
+ else
+ {
+ // illegal code - do not store
+ }
+}
+
+
+static void write_utf8(int ch)
+{
+ vector<UINT8> vv;
+
+ vv.reserve(6);
+
+ encode_utf8(ch, vv);
+
+ for (unsigned char char_val : vv)
+ {
+ write_byte(char_val);
+ }
+}
+
+
+static void write_utf16(int ch, bool be)
+{
+ // U+0000 to U+D7FF and U+E000 to U+FFFF
+ if ( ( ch >= 0
+ && ch < 0xD800)
+ || ( ch >= 0xE000
+ && ch < 0x10000))
+ {
+ if (be)
+ {
+ write_byte(ch >> 8);
+ write_byte(ch & 0xff);
+ }
+ else
+ {
+ write_byte(ch & 0xff);
+ write_byte(ch >> 8);
+ }
+ }
+ else if ( ch >= 0x10000
+ && ch < 0x110000)
+ {
+ int v1 = ch - 0x10000;
+ int w1 = 0xD800 + (v1 >> 10);
+ int w2 = 0xDC00 + (v1 & 0x3ff);
+
+ if (be)
+ {
+ write_byte(w1 >> 8);
+ write_byte(w1 & 0xff);
+ write_byte(w2 >> 8);
+ write_byte(w2 & 0xff);
+ }
+ else
+ {
+ write_byte(w1 & 0xff);
+ write_byte(w1 >> 8);
+ write_byte(w2 & 0xff);
+ write_byte(w2 >> 8);
+ }
+ }
+ else
+ {
+ // illegal code - do not store
+ }
+} // write_utf16
+
+
+void write_bom()
+{
+ switch (cpd.enc)
+ {
+ case char_encoding_e::e_UTF8:
+ write_byte(0xef);
+ write_byte(0xbb);
+ write_byte(0xbf);
+ break;
+
+ case char_encoding_e::e_UTF16_LE:
+ write_utf16(0xfeff, false);
+ break;
+
+ case char_encoding_e::e_UTF16_BE:
+ write_utf16(0xfeff, true);
+ break;
+
+ default:
+ // char_encoding_e::e_ASCII
+ // char_encoding_e::e_BYTE
+ // do nothing
+ // Coveralls will complain
+ break;
+ }
+}
+
+
+void write_char(int ch)
+{
+ if (ch >= 0)
+ {
+ switch (cpd.enc)
+ {
+ case char_encoding_e::e_BYTE:
+ write_byte(ch & 0xff);
+ break;
+
+ case char_encoding_e::e_ASCII:
+ default:
+ write_byte(ch);
+ break;
+
+ case char_encoding_e::e_UTF8:
+ write_utf8(ch);
+ break;
+
+ case char_encoding_e::e_UTF16_LE:
+ write_utf16(ch, false);
+ break;
+
+ case char_encoding_e::e_UTF16_BE:
+ write_utf16(ch, true);
+ break;
+ }
+ }
+}
+
+
+void write_string(const UncText &text)
+{
+ for (size_t idx = 0; idx < text.size(); idx++)
+ {
+ write_char(text[idx]);
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unicode.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unicode.h
new file mode 100644
index 00000000..28318f91
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/unicode.h
@@ -0,0 +1,34 @@
+/**
+ * @file unicode.h
+ * prototypes for unicode.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef UNICODE_H_INCLUDED
+#define UNICODE_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+
+void write_bom();
+
+
+/**
+ * @param ch the 31-bit char value
+ */
+void write_char(int ch);
+
+
+void write_string(const UncText &text);
+
+
+//! Figure out the encoding and convert to an int sequence
+bool decode_unicode(const std::vector<UINT8> &in_data, std::deque<int> &out_data, char_encoding_e &enc, bool &has_bom);
+
+
+void encode_utf8(int ch, std::vector<UINT8> &res);
+
+
+#endif /* UNICODE_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/universalindentgui.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/universalindentgui.cpp
new file mode 100644
index 00000000..23b2912a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/universalindentgui.cpp
@@ -0,0 +1,377 @@
+/**
+ * @file universalindentgui.cpp
+ * Exports the config file for UniversalIndentGUI
+ *
+ * @author Ben Gardner
+ * @author Guy Maurel since version 0.62 for uncrustify4Qt
+ * October 2015, 2016
+ * @license GPL v2+
+ */
+#include "universalindentgui.h"
+
+#include "error_types.h"
+#include "log_rules.h"
+#include "prototypes.h"
+#include "unc_ctype.h"
+#include "uncrustify.h"
+#include "uncrustify_version.h"
+
+#include <cstdio>
+#include <vector>
+
+
+constexpr static auto LCURRENT = LOTHER;
+
+using namespace std;
+
+
+std::vector<uncrustify::OptionGroup *> get_option_groups()
+{
+ std::vector<uncrustify::OptionGroup *> groups;
+ size_t i = 0;
+
+ while (auto *const g = uncrustify::get_option_group(i))
+ {
+ groups.push_back(g);
+ ++i;
+ }
+ return(groups);
+}
+
+
+void print_option_choices(FILE *pfile, uncrustify::GenericOption *option,
+ char const *key = "Choices")
+{
+ fprintf(pfile, "%s=", key);
+
+ for (auto c = option->possibleValues(); *c; ++c)
+ {
+ fprintf(pfile, "%s\\s*=\\s*%s%c", option->name(), *c, c[1] ? '|' : '\n');
+ }
+}
+
+
+void print_universal_indent_cfg(FILE *pfile)
+{
+ const char *p_name;
+ char ch = '=';
+ const auto &groups = get_option_groups();
+ size_t idx;
+
+#if defined (DEBUG) && !defined (WIN32)
+ vector<size_t> allGroups;
+ allGroups.reserve(16);
+ // first run to get the first option number of each group/category
+ size_t optionNumber = 0;
+ bool firstOptionNumberSet = false;
+
+ for (idx = 0; idx < groups.size(); ++idx)
+ {
+ const auto *p_grp = groups[idx];
+
+ for (auto *const option : p_grp->options)
+ {
+ UNUSED(option);
+
+ if (!firstOptionNumberSet)
+ {
+ allGroups[idx] = optionNumber;
+ firstOptionNumberSet = true;
+ }
+ optionNumber++;
+ } // for (auto *const option : p_grp->options)
+
+ firstOptionNumberSet = false;
+ } // end of first run
+
+//#else
+// UNUSED(allGroups);
+#endif // DEBUG
+
+ // second run
+ // Dump the header and the categories
+ fprintf(pfile, "[header]\n");
+
+ // Add all the categories
+ //const auto &groups = get_option_groups();
+ ch = '=';
+
+ fprintf(pfile, "categories");
+ idx = 0;
+#if defined (DEBUG) && !defined (WIN32)
+ optionNumber = 0;
+#endif // DEBUG
+
+ for (auto *const g : groups)
+ {
+ fputc(ch, pfile);
+ ch = '|';
+
+#if defined (DEBUG) && !defined (WIN32)
+ fprintf(pfile, "(%zu)", allGroups[idx]);
+#endif // DEBUG
+
+ // Write description, stripping leading and trailing newlines
+ for (auto dc = g->description + 1; *(dc + 1); ++dc)
+ {
+ fputc(*dc, pfile);
+ }
+
+ idx++;
+ }
+
+ fprintf(pfile, "\n");
+
+ fprintf(pfile,
+ "cfgFileParameterEnding=cr\n"
+ "configFilename=uncrustify.cfg\n");
+
+
+ // Add all the recognized file extensions
+ ch = '=';
+ int fileIdx = 0;
+ fprintf(pfile, "fileTypes");
+
+ while ((p_name = get_file_extension(fileIdx)) != nullptr)
+ {
+ fprintf(pfile, "%c*%s", ch, p_name);
+ ch = '|';
+ }
+ fprintf(pfile, "\n");
+
+ // Add the rest of the constant file header
+ fprintf(pfile,
+ "indenterFileName=uncrustify\n"
+ "indenterName=Uncrustify (C, C++, C#, ObjectiveC, D, Java, Pawn, VALA)\n"
+ "inputFileName=indentinput\n"
+ "inputFileParameter=\"-f \"\n"
+ "manual=http://uncrustify.sourceforge.net/config.txt\n"
+ "outputFileName=indentoutput\n"
+ "outputFileParameter=\"-o \"\n"
+ "stringparaminquotes=false\n"
+ "parameterOrder=ipo\n"
+ "showHelpParameter=-h\n"
+ "stringparaminquotes=false\n"
+ "useCfgFileParameter=\"-c \"\n"
+ "useRegex=true\n");
+
+ fprintf(pfile, "version=%s\n", UNCRUSTIFY_VERSION);
+
+ ch = '=';
+
+ // Now add each option
+ for (idx = 0; idx < groups.size(); ++idx)
+ {
+ const auto *p_grp = groups[idx];
+
+ for (auto *const option : p_grp->options)
+ {
+ /*
+ * Create a better readable name from the options name
+ * by replacing '_' by a space and use some upper case characters.
+ */
+ char *optionNameReadable = new char[strlen(option->name()) + 1];
+ strcpy(optionNameReadable, option->name());
+
+ bool was_space = true;
+
+ for (char *character = optionNameReadable; *character != 0; character++)
+ {
+ if (*character == '_')
+ {
+ *character = ' ';
+ was_space = true;
+ }
+ else if (was_space)
+ {
+ *character = unc_toupper(*character);
+ was_space = false;
+ }
+ }
+
+#if defined (DEBUG) && !defined (WIN32)
+ fprintf(pfile, "\n[(%zu)%s]\n", optionNumber, optionNameReadable);
+#else // DEBUG
+ fprintf(pfile, "\n[%s]\n", optionNameReadable);
+#endif // DEBUG
+ fprintf(pfile, "Category=%zu\n", idx);
+#if defined (DEBUG) && !defined (WIN32)
+ fprintf(pfile, "Description=\"<html>(%zu)", optionNumber);
+#else // DEBUG
+ fprintf(pfile, "Description=\"<html>");
+#endif // DEBUG
+
+ // Skip first character, which is always a newline
+ const char *tmp = option->description() + 1;
+ ch = 0;
+
+ // Output the description which may contain forbidden chars, skipping
+ // the last character which is always an extra newline
+ while ( *tmp != 0
+ && *(tmp + 1) != 0)
+ {
+ switch (*tmp)
+ {
+ case '<':
+ fputs("&lt;", pfile);
+ break;
+
+ case '>':
+ fputs("&gt;", pfile);
+ break;
+
+ case '&':
+ fputs("&amp;", pfile);
+ break;
+
+ case '\n':
+ fputs("<br/>", pfile);
+ break;
+
+ default:
+ fputc(*tmp, pfile);
+ }
+ tmp++;
+ }
+ const auto ds = option->defaultStr();
+
+ if (!ds.empty())
+ {
+ fprintf(pfile, "<br/><br/>Default: %s", ds.c_str());
+ }
+ fprintf(pfile, "</html>\"\n");
+
+ // Handle some options independent of their type and most by their type.
+ log_rule_B("indent_with_tabs");
+
+ if (option == &uncrustify::options::indent_with_tabs)
+ {
+ // Indenting with tabs selector becomes a multiple selector and not
+ // only a number. Also it is by default enabled.
+ fprintf(pfile, "Enabled=true\n");
+ fprintf(pfile, "EditorType=multiple\n");
+ fprintf(pfile, "Choices=\"%s\\s*=\\s*0|%s\\s*=\\s*1|%s\\s*=\\s*2\"\n",
+ option->name(), option->name(), option->name());
+#if defined (DEBUG) && !defined (WIN32)
+ fprintf(pfile, "ChoicesReadable=\"(%zu)Spaces only|(%zu)Indent with tabs, align with spaces|(%zu)Indent and align with tabs\"\n",
+ optionNumber, optionNumber, optionNumber);
+#else // DEBUG
+ fprintf(pfile, "ChoicesReadable=\"Spaces only|Indent with tabs, align with spaces|Indent and align with tabs\"\n");
+#endif // DEBUG
+ fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
+ }
+ else
+ {
+ // All not specially handled options are created only dependent by
+ // their type.
+ fprintf(pfile, "Enabled=false\n");
+
+ switch (option->type())
+ {
+ case uncrustify::OT_BOOL:
+ fprintf(pfile, "EditorType=boolean\n");
+ print_option_choices(pfile, option, "TrueFalse");
+ fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
+ break;
+
+ case uncrustify::OT_IARF:
+ fprintf(pfile, "EditorType=multiple\n");
+ print_option_choices(pfile, option);
+#if defined (DEBUG) && !defined (WIN32)
+ fprintf(pfile, "ChoicesReadable=\"(%zu)Ignore %s|(%zu)Add %s|(%zu)Remove %s|(%zu)Force %s\"\n",
+ optionNumber, optionNameReadable,
+ optionNumber, optionNameReadable,
+ optionNumber, optionNameReadable,
+ optionNumber, optionNameReadable);
+#else // DEBUG
+ // 0 1 2 3
+ fprintf(pfile, "ChoicesReadable=\"Ignore %s|Add %s|Remove %s|Force %s\"\n",
+ optionNameReadable, optionNameReadable, optionNameReadable, optionNameReadable);
+#endif // DEBUG
+ fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
+ break;
+
+ case uncrustify::OT_NUM:
+ fprintf(pfile, "EditorType=numeric\n");
+ fprintf(pfile, "CallName=\"%s\\s*=\\s*\"\n", option->name());
+ fprintf(pfile, "MinVal=%s\n", option->minStr().c_str());
+ fprintf(pfile, "MaxVal=%s\n", option->maxStr().c_str());
+ fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
+ break;
+
+ case uncrustify::OT_UNUM:
+ fprintf(pfile, "EditorType=numeric\n");
+ fprintf(pfile, "CallName=\"%s\\s*=\\s*\"\n", option->name());
+ fprintf(pfile, "MinVal=%s\n", option->minStr().c_str());
+ fprintf(pfile, "MaxVal=%s\n", option->maxStr().c_str());
+ fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
+ break;
+
+ case uncrustify::OT_LINEEND:
+ fprintf(pfile, "EditorType=multiple\n");
+ print_option_choices(pfile, option);
+#if defined (DEBUG) && !defined (WIN32)
+ fprintf(pfile, "ChoicesReadable=\"(%zu)Newlines Unix|(%zu)Newlines Win|(%zu)Newlines Mac|(%zu)Newlines Auto\"\n",
+ optionNumber, optionNumber, optionNumber, optionNumber);
+#else // DEBUG
+ fprintf(pfile, "ChoicesReadable=\"Newlines Unix|Newlines Win|Newlines Mac|Newlines Auto\"\n");
+#endif // DEBUG
+ fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
+ break;
+
+ case uncrustify::OT_TOKENPOS:
+ fprintf(pfile, "EditorType=multiple\n");
+ // Issue #2300-a
+ print_option_choices(pfile, option);
+#if defined (DEBUG) && !defined (WIN32)
+ fprintf(pfile, "ChoicesReadable=\"(%zu)Ignore %s|(%zu)Break %s|(%zu)Force %s|(%zu)Lead %s|(%zu)Trail %s|",
+ optionNumber, optionNameReadable,
+ optionNumber, optionNameReadable,
+ optionNumber, optionNameReadable,
+ optionNumber, optionNameReadable,
+ optionNumber, optionNameReadable);
+#else // DEBUG
+ // 0 1 2 4 8
+ fprintf(pfile, "ChoicesReadable=\"Ignore %s|Break %s|Force %s|Lead %s|Trail %s|",
+ optionNameReadable, optionNameReadable, optionNameReadable,
+ optionNameReadable, optionNameReadable);
+#endif // DEBUG
+ // 16 5 6 9 10
+#if defined (DEBUG) && !defined (WIN32)
+ fprintf(pfile, "(%zu)Join %s|(%zu)Lead Break %s|(%zu)Lead Force %s|(%zu)Trail Break %s|(%zu)Trail Force %s\"\n",
+ optionNumber, optionNameReadable,
+ optionNumber, optionNameReadable,
+ optionNumber, optionNameReadable,
+ optionNumber, optionNameReadable,
+ optionNumber, optionNameReadable);
+#else // DEBUG
+ fprintf(pfile, "Join %s|Lead Break %s|Lead Force %s|Trail Break %s|Trail Force %s\"\n",
+ optionNameReadable, optionNameReadable, optionNameReadable,
+ optionNameReadable, optionNameReadable);
+#endif // DEBUG
+ fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
+ break;
+
+ case uncrustify::OT_STRING:
+ {
+ fprintf(pfile, "CallName=%s\\s*=\\s*\n", option->name());
+ fprintf(pfile, "EditorType=string\n");
+ fprintf(pfile, "ValueDefault=%s\n", option->str().c_str());
+ break;
+ }
+
+ default:
+ fprintf(stderr, "FATAL: Illegal option type %d for '%s'\n",
+ static_cast<int>(option->type()), option->name());
+ log_flush(true);
+ exit(EX_SOFTWARE);
+ break;
+ } // switch
+ }
+#if defined (DEBUG) && !defined (WIN32)
+ optionNumber++;
+#endif // DEBUG
+ delete[] optionNameReadable;
+ } // for (auto *const option : p_grp->options)
+ }
+} // print_universal_indent_cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/universalindentgui.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/universalindentgui.h
new file mode 100644
index 00000000..79a41bf5
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/universalindentgui.h
@@ -0,0 +1,17 @@
+/**
+ * @file universalindentgui.h
+ * prototypes for universalindentgui.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+#ifndef UNIVERSALINDENTGUI_H_INCLUDED
+#define UNIVERSALINDENTGUI_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+
+void print_universal_indent_cfg(FILE *pfile);
+
+
+#endif /* UNIVERSALINDENTGUI_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/width.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/width.cpp
new file mode 100644
index 00000000..4dcc0249
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/width.cpp
@@ -0,0 +1,756 @@
+/**
+ * @file width.cpp
+ * Limits line width.
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#include "width.h"
+
+#include "indent.h"
+#include "newlines.h"
+#include "prototypes.h"
+
+
+constexpr static auto LCURRENT = LSPLIT;
+
+using namespace uncrustify;
+
+
+/**
+ * abbreviations used:
+ * - fparen = function parenthesis
+ */
+
+struct SplitEntry
+{
+ Chunk *pc;
+ size_t pri;
+
+ SplitEntry()
+ : pc(Chunk::NullChunkPtr)
+ , pri(0) {}
+};
+
+
+struct TokenPriority
+{
+ E_Token tok;
+ size_t pri;
+};
+
+
+static inline bool is_past_width(Chunk *pc);
+
+
+//! Split right after the chunk
+static void split_before_chunk(Chunk *pc);
+
+
+static size_t get_split_pri(E_Token tok);
+
+
+/**
+ * Checks to see if pc is a better spot to split.
+ * This should only be called going BACKWARDS (ie prev)
+ * A lower level wins
+ *
+ * Splitting Preference:
+ * - semicolon
+ * - comma
+ * - boolean op
+ * - comparison
+ * - arithmetic op
+ * - assignment
+ * - concatenated strings
+ * - ? :
+ * - function open paren not followed by close paren
+ */
+static void try_split_here(SplitEntry &ent, Chunk *pc);
+
+
+/**
+ * Scan backwards to find the most appropriate spot to split the line
+ * and insert a newline.
+ *
+ * See if this needs special function handling.
+ * Scan backwards and find the best token for the split.
+ *
+ * @param start The first chunk that exceeded the limit
+ */
+static bool split_line(Chunk *pc);
+
+
+/**
+ * Figures out where to split a template
+ *
+ *
+ * @param start the offending token
+ */
+static void split_template(Chunk *start);
+
+
+/**
+ * Splits the parameters at every comma that is at the fparen level.
+ *
+ * @param start the offending token
+ */
+static void split_fcn_params_full(Chunk *start);
+
+
+/**
+ * A for statement is too long.
+ * Step backwards and forwards to find the semicolons
+ * Try splitting at the semicolons first.
+ * If that doesn't work, then look for a comma at paren level.
+ * If that doesn't work, then look for an assignment at paren level.
+ * If that doesn't work, then give up.
+ */
+static void split_for_stmt(Chunk *start);
+
+
+static inline bool is_past_width(Chunk *pc)
+{
+ // allow char to sit at last column by subtracting 1
+ size_t currCol = pc->GetColumn() + pc->Len() - 1;
+
+ LOG_FMT(LSPLIT, "%s(%d): orig line %zu, orig col %zu, curr col %zu, text %s\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), currCol, pc->Text());
+ return(currCol > options::code_width());
+}
+
+
+static void split_before_chunk(Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LSPLIT, "%s(%d): Text() '%s'\n", __func__, __LINE__, pc->Text());
+
+ Chunk *prev = pc->GetPrev();
+
+ if ( !pc->IsNewline()
+ && !prev->IsNewline())
+ {
+ newline_add_before(pc);
+ // Mark chunk as continuation line, so indentation can be
+ // correctly set over multiple passes
+ pc->SetFlagBits(PCF_CONT_LINE);
+
+ // Mark open and close parens as continuation line chunks.
+ // This will prevent an additional level and frame to be
+ // added to the current frame stack (issue 3105).
+ if ( prev->Is(CT_PAREN_OPEN)
+ || prev->Is(CT_LPAREN_OPEN)
+ || prev->Is(CT_SPAREN_OPEN)
+ || prev->Is(CT_FPAREN_OPEN)
+ || prev->Is(CT_SQUARE_OPEN)
+ || prev->Is(CT_ANGLE_OPEN))
+ {
+ LOG_FMT(LSPLIT, "%s(%d): set PCF_LINE_CONT for prev text '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol());
+
+ prev->SetFlagBits(PCF_CONT_LINE);
+ Chunk *closing_paren = prev->GetClosingParen();
+
+ if (closing_paren->IsNotNullChunk())
+ {
+ closing_paren->SetFlagBits(PCF_CONT_LINE);
+ }
+ }
+ // reindent needs to include the indent_continue value and was off by one
+ log_rule_B("indent_columns");
+ log_rule_B("indent_continue");
+ reindent_line(pc, pc->GetBraceLevel() * options::indent_columns() +
+ abs(options::indent_continue()) + 1);
+ cpd.changes++;
+ }
+} // split_before_chunk
+
+
+static TokenPriority pri_table[] =
+{
+ { CT_SEMICOLON, 1 },
+ { CT_COMMA, 2 },
+ { CT_BOOL, 3 },
+ { CT_COMPARE, 4 },
+ { CT_SHIFT, 5 },
+ { CT_ARITH, 6 },
+ { CT_CARET, 7 },
+ { CT_ASSIGN, 9 },
+ { CT_STRING, 10 },
+ { CT_FOR_COLON, 11 },
+ { CT_QUESTION, 20 }, // allow break in ? : for ls_code_width
+ { CT_COND_COLON, 20 },
+ { CT_FPAREN_OPEN, 21 }, // break after function open paren not followed by close paren
+ { CT_QUALIFIER, 25 },
+ { CT_CLASS, 25 },
+ { CT_STRUCT, 25 },
+ { CT_TYPE, 25 },
+ { CT_TYPENAME, 25 },
+ { CT_VOLATILE, 25 },
+};
+
+
+void do_code_width()
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LSPLIT, "%s(%d)\n", __func__, __LINE__);
+
+ // If indent_continue is negative, we want to look for long lines splits,
+ // so raise CT_FPAREN_OPEN priority to get better results.
+ if (options::indent_continue() < 0)
+ {
+ for (TokenPriority &token : pri_table)
+ {
+ if (token.tok == CT_FPAREN_OPEN)
+ {
+ token.pri = 8; // Before assignment priority
+ break;
+ }
+ }
+ }
+
+ for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
+ {
+ if ( !pc->IsCommentOrNewline()
+ && pc->IsNot(CT_SPACE)
+ && is_past_width(pc))
+ {
+ if ( pc->Is(CT_VBRACE_CLOSE) // don't break if a vbrace close
+ && pc->IsLastChunkOnLine()) // is the last chunk on its line
+ {
+ continue;
+ }
+ bool split_OK = split_line(pc);
+
+ if (split_OK)
+ {
+ LOG_FMT(LSPLIT, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ }
+ else
+ {
+ LOG_FMT(LSPLIT, "%s(%d): Bailed! orig line is %zu, orig col is %zu, Text() '%s'\n",
+ __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
+ break;
+ }
+ }
+ }
+} // do_code_width
+
+
+static size_t get_split_pri(E_Token tok)
+{
+ for (TokenPriority token : pri_table)
+ {
+ if (token.tok == tok)
+ {
+ return(token.pri);
+ }
+ }
+
+ return(100); // Bigger than any valid priority
+}
+
+
+static void try_split_here(SplitEntry &ent, Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+
+ size_t pc_pri = get_split_pri(pc->GetType());
+ LOG_FMT(LSPLIT, "%s(%d): text '%s', orig col %zu pc_pri %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigCol(), pc_pri);
+
+ if (pc_pri == 0)
+ {
+ LOG_FMT(LSPLIT, "%s(%d): pc_pri is 0, return\n", __func__, __LINE__);
+ return;
+ }
+ // Can't split after a newline
+ Chunk *prev = pc->GetPrev();
+
+ if ( prev->IsNullChunk()
+ || ( prev->IsNewline()
+ && pc->IsNot(CT_STRING)))
+ {
+ if (prev->IsNotNullChunk())
+ {
+ LOG_FMT(LSPLIT, "%s(%d): can't split after a newline, orig line is %zu, return\n",
+ __func__, __LINE__, prev->GetOrigLine());
+ }
+ return;
+ }
+
+ // Can't split a function without arguments
+ if (pc->Is(CT_FPAREN_OPEN))
+ {
+ Chunk *next = pc->GetNext();
+
+ if (next->Is(CT_FPAREN_CLOSE))
+ {
+ LOG_FMT(LSPLIT, "%s(%d): can't split a function without arguments, return\n", __func__, __LINE__);
+ return;
+ }
+ }
+
+ // Only split concatenated strings
+ if (pc->Is(CT_STRING))
+ {
+ Chunk *next = pc->GetNext();
+
+ if (next->IsNot(CT_STRING))
+ {
+ LOG_FMT(LSPLIT, "%s(%d): only split concatenated strings, return\n", __func__, __LINE__);
+ return;
+ }
+ }
+
+ // keep common groupings unless ls_code_width
+ if ( !options::ls_code_width()
+ && pc_pri >= 22)
+ {
+ LOG_FMT(LSPLIT, "%s(%d): keep common groupings unless ls_code_width, return\n", __func__, __LINE__);
+ return;
+ }
+
+ // don't break after last term of a qualified type
+ if (pc_pri == 25)
+ {
+ Chunk *next = pc->GetNext();
+
+ if ( next->IsNot(CT_WORD)
+ && (get_split_pri(next->GetType()) != 25))
+ {
+ LOG_FMT(LSPLIT, "%s(%d): don't break after last term of a qualified type, return\n", __func__, __LINE__);
+ return;
+ }
+ }
+
+ if ( ent.pc->IsNullChunk()
+ || pc_pri < ent.pri
+ || ( pc_pri == ent.pri
+ && pc->IsNot(CT_FPAREN_OPEN)
+ && pc->GetLevel() < ent.pc->GetLevel()))
+ {
+ LOG_FMT(LSPLIT, "%s(%d): found possible split\n", __func__, __LINE__);
+ ent.pc = pc;
+ ent.pri = pc_pri;
+ }
+} // try_split_here
+
+
+static bool split_line(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LSPLIT, "%s(%d): start->Text() '%s', orig line %zu, orig col %zu, type %s\n",
+ __func__, __LINE__, start->Text(), start->GetOrigLine(), start->GetOrigCol(), get_token_name(start->GetType()));
+ LOG_FMT(LSPLIT, " start->GetFlags() ");
+ log_pcf_flags(LSPLIT, start->GetFlags());
+ LOG_FMT(LSPLIT, " start->GetParentType() %s, (PCF_IN_FCN_DEF %s), (PCF_IN_FCN_CALL %s)\n",
+ get_token_name(start->GetParentType()),
+ start->TestFlags((PCF_IN_FCN_DEF)) ? "TRUE" : "FALSE",
+ start->TestFlags((PCF_IN_FCN_CALL)) ? "TRUE" : "FALSE");
+
+ // break at maximum line length if ls_code_width is true
+ // Issue #2432
+ if (start->TestFlags(PCF_ONE_LINER))
+ {
+ LOG_FMT(LSPLIT, "%s(%d): ** ONE LINER SPLIT **\n", __func__, __LINE__);
+ undo_one_liner(start);
+ newlines_cleanup_braces(false);
+ // Issue #1352
+ cpd.changes++;
+ return(false);
+ }
+ LOG_FMT(LSPLIT, "%s(%d): before ls_code_width\n", __func__, __LINE__);
+
+ if (options::ls_code_width())
+ {
+ log_rule_B("ls_code_width");
+ }
+ // Check to see if we are in a for statement
+ else if (start->TestFlags(PCF_IN_FOR))
+ {
+ LOG_FMT(LSPLIT, " ** FOR SPLIT **\n");
+ split_for_stmt(start);
+
+ if (!is_past_width(start))
+ {
+ return(true);
+ }
+ LOG_FMT(LSPLIT, "%s(%d): for split didn't work\n", __func__, __LINE__);
+ }
+ /*
+ * If this is in a function call or prototype, split on commas or right
+ * after the open parenthesis
+ */
+ else if ( start->TestFlags(PCF_IN_FCN_DEF)
+ || start->TestFlags(PCF_IN_FCN_CALL)
+ || start->GetParentType() == CT_FUNC_PROTO) // Issue #1169
+ {
+ LOG_FMT(LSPLIT, " ** FUNC SPLIT **\n");
+
+ if (options::ls_func_split_full())
+ {
+ log_rule_B("ls_func_split_full");
+
+ split_fcn_params_full(start);
+
+ if (!is_past_width(start))
+ {
+ return(true);
+ }
+ }
+ }
+
+ /*
+ * If this is in a template, split on commas, Issue #1170
+ */
+ else if (start->TestFlags(PCF_IN_TEMPLATE))
+ {
+ LOG_FMT(LSPLIT, " ** TEMPLATE SPLIT **\n");
+ split_template(start);
+ return(true);
+ }
+ LOG_FMT(LSPLIT, "%s(%d):\n", __func__, __LINE__);
+ // Try to find the best spot to split the line
+ SplitEntry ent;
+ ent.pc = Chunk::NullChunkPtr;
+ ent.pri = CT_UNKNOWN;
+
+ Chunk *pc = start->GetPrev();
+ Chunk *prev;
+
+ while ( pc->IsNotNullChunk()
+ && !pc->IsNewline())
+ {
+ LOG_FMT(LSPLIT, "%s(%d): text '%s', orig line is %zu, orig col is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
+
+ if (pc->IsNot(CT_SPACE))
+ {
+ try_split_here(ent, pc);
+
+ // break at maximum line length
+ if ( ent.pc->IsNotNullChunk()
+ && options::ls_code_width())
+ {
+ log_rule_B("ls_code_width");
+ LOG_FMT(LSPLIT, "%s(%d): found split\n", __func__, __LINE__);
+ break;
+ }
+ }
+ pc = pc->GetPrev();
+ }
+
+ if (ent.pc->IsNullChunk())
+ {
+ LOG_FMT(LSPLIT, "%s(%d): TRY_SPLIT yielded NO SOLUTION for orig line %zu at '%s' [%s]\n",
+ __func__, __LINE__, start->GetOrigLine(), start->Text(), get_token_name(start->GetType()));
+ }
+ else
+ {
+ LOG_FMT(LSPLIT, "%s(%d): TRY_SPLIT yielded '%s' [%s] on orig line %zu\n",
+ __func__, __LINE__, ent.pc->Text(), get_token_name(ent.pc->GetType()), ent.pc->GetOrigLine());
+ LOG_FMT(LSPLIT, "%s(%d): ent at '%s', orig col is %zu\n",
+ __func__, __LINE__, ent.pc->Text(), ent.pc->GetOrigCol());
+ }
+
+ // Break before the token instead of after it according to the pos_xxx rules
+ if (ent.pc->IsNullChunk())
+ {
+ pc = Chunk::NullChunkPtr;
+ }
+ else
+ {
+ log_rule_B("pos_arith");
+ log_rule_B("pos_assign");
+ log_rule_B("pos_compare");
+ log_rule_B("pos_conditional");
+ log_rule_B("pos_shift");
+ log_rule_B("pos_bool");
+
+ if ( ( ent.pc->Is(CT_SHIFT)
+ && (options::pos_shift() & TP_LEAD))
+ || ( ( ent.pc->Is(CT_ARITH)
+ || ent.pc->Is(CT_CARET))
+ && (options::pos_arith() & TP_LEAD))
+ || ( ent.pc->Is(CT_ASSIGN)
+ && (options::pos_assign() & TP_LEAD))
+ || ( ent.pc->Is(CT_COMPARE)
+ && (options::pos_compare() & TP_LEAD))
+ || ( ( ent.pc->Is(CT_COND_COLON)
+ || ent.pc->Is(CT_QUESTION))
+ && (options::pos_conditional() & TP_LEAD))
+ || ( ent.pc->Is(CT_BOOL)
+ && (options::pos_bool() & TP_LEAD)))
+ {
+ pc = ent.pc;
+ }
+ else
+ {
+ pc = ent.pc->GetNext();
+ }
+ LOG_FMT(LSPLIT, "%s(%d): at '%s', orig col is %zu\n",
+ __func__, __LINE__, pc->Text(), pc->GetOrigCol());
+ }
+
+ if (pc->IsNullChunk())
+ {
+ pc = start;
+
+ // Don't break before a close, comma, or colon
+ if ( start->Is(CT_PAREN_CLOSE)
+ || start->Is(CT_PAREN_OPEN)
+ || start->Is(CT_FPAREN_CLOSE)
+ || start->Is(CT_FPAREN_OPEN)
+ || start->Is(CT_SPAREN_CLOSE)
+ || start->Is(CT_SPAREN_OPEN)
+ || start->Is(CT_ANGLE_CLOSE)
+ || start->Is(CT_BRACE_CLOSE)
+ || start->Is(CT_COMMA)
+ || start->IsSemicolon()
+ || start->Len() == 0)
+ {
+ LOG_FMT(LSPLIT, " ** NO GO **\n");
+
+ // TODO: Add in logic to handle 'hard' limits by backing up a token
+ return(true);
+ }
+ }
+ // add a newline before pc
+ prev = pc->GetPrev();
+
+ if ( prev->IsNotNullChunk()
+ && !pc->IsNewline()
+ && !prev->IsNewline())
+ {
+ //int plen = (pc->Len() < 5) ? pc->Len() : 5;
+ //int slen = (start->Len() < 5) ? start->Len() : 5;
+ //LOG_FMT(LSPLIT, " '%.*s' [%s], started on token '%.*s' [%s]\n",
+ // plen, pc->Text(), get_token_name(pc->GetType()),
+ // slen, start->Text(), get_token_name(start->GetType()));
+ LOG_FMT(LSPLIT, "%s(%d): Text() '%s', type %s, started on token '%s', type %s\n",
+ __func__, __LINE__, pc->Text(), get_token_name(pc->GetType()),
+ start->Text(), get_token_name(start->GetType()));
+
+ split_before_chunk(pc);
+ }
+ return(true);
+} // split_line
+
+
+/*
+ * The for statement split algorithm works as follows:
+ * 1. Step backwards and forwards to find the semicolons
+ * 2. Try splitting at the semicolons first.
+ * 3. If that doesn't work, then look for a comma at paren level.
+ * 4. If that doesn't work, then look for an assignment at paren level.
+ * 5. If that doesn't work, then give up.
+ */
+static void split_for_stmt(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+ // how many semicolons (1 or 2) do we need to find
+ log_rule_B("ls_for_split_full");
+ size_t max_cnt = options::ls_for_split_full() ? 2 : 1;
+ Chunk *open_paren = Chunk::NullChunkPtr;
+ size_t nl_cnt = 0;
+
+ LOG_FMT(LSPLIT, "%s: starting on %s, line %zu\n",
+ __func__, start->Text(), start->GetOrigLine());
+
+ // Find the open paren so we know the level and count newlines
+ Chunk *pc = start;
+
+ while ((pc = pc->GetPrev())->IsNotNullChunk())
+ {
+ if (pc->Is(CT_SPAREN_OPEN))
+ {
+ open_paren = pc;
+ break;
+ }
+
+ if (pc->GetNlCount() > 0)
+ {
+ nl_cnt += pc->GetNlCount();
+ }
+ }
+
+ if (open_paren->IsNullChunk())
+ {
+ LOG_FMT(LSPLIT, "No open paren\n");
+ return;
+ }
+ // see if we started on the semicolon
+ int count = 0;
+ Chunk *st[2];
+
+ pc = start;
+
+ if ( pc->Is(CT_SEMICOLON)
+ && pc->GetParentType() == CT_FOR)
+ {
+ st[count++] = pc;
+ }
+
+ // first scan backwards for the semicolons
+ while ( (count < static_cast<int>(max_cnt))
+ && ((pc = pc->GetPrev())->IsNotNullChunk())
+ && pc->IsNotNullChunk()
+ && pc->TestFlags(PCF_IN_SPAREN))
+ {
+ if ( pc->Is(CT_SEMICOLON)
+ && pc->GetParentType() == CT_FOR)
+ {
+ st[count++] = pc;
+ }
+ }
+ // And now scan forward
+ pc = start;
+
+ while ( (count < static_cast<int>(max_cnt))
+ && ((pc = pc->GetNext())->IsNotNullChunk())
+ && pc->TestFlags(PCF_IN_SPAREN))
+ {
+ if ( pc->Is(CT_SEMICOLON)
+ && pc->GetParentType() == CT_FOR)
+ {
+ st[count++] = pc;
+ }
+ }
+
+ while (--count >= 0)
+ {
+ // TODO: st[0] may be uninitialized here
+ LOG_FMT(LSPLIT, "%s(%d): split before %s\n", __func__, __LINE__, st[count]->Text());
+ split_before_chunk(st[count]->GetNext());
+ }
+
+ if ( !is_past_width(start)
+ || nl_cnt > 0)
+ {
+ return;
+ }
+ // Still past width, check for commas at parentheses level
+ pc = open_paren;
+
+ while ((pc = pc->GetNext()) != start)
+ {
+ if ( pc->Is(CT_COMMA)
+ && (pc->GetLevel() == (open_paren->GetLevel() + 1)))
+ {
+ split_before_chunk(pc->GetNext());
+
+ if (!is_past_width(pc))
+ {
+ return;
+ }
+ }
+ }
+ // Still past width, check for a assignments at parentheses level
+ pc = open_paren;
+
+ while ((pc = pc->GetNext()) != start)
+ {
+ if ( pc->Is(CT_ASSIGN)
+ && (pc->GetLevel() == (open_paren->GetLevel() + 1)))
+ {
+ split_before_chunk(pc->GetNext());
+
+ if (!is_past_width(pc))
+ {
+ return;
+ }
+ }
+ }
+ // Oh, well. We tried.
+} // split_for_stmt
+
+
+static void split_fcn_params_full(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LSPLIT, "%s(%d): start at '%s'\n", __func__, __LINE__, start->Text());
+
+ // Find the opening function parenthesis
+ Chunk *fpo = start;
+
+ LOG_FMT(LSPLIT, " %s(%d): search for opening function parenthesis\n", __func__, __LINE__);
+
+ while ((fpo = fpo->GetPrev())->IsNotNullChunk())
+ {
+ LOG_FMT(LSPLIT, " %s(%d): %s, orig col is %zu, level is %zu\n",
+ __func__, __LINE__, fpo->Text(), fpo->GetOrigCol(), fpo->GetLevel());
+
+ if ( fpo->Is(CT_FPAREN_OPEN)
+ && (fpo->GetLevel() == start->GetLevel() - 1))
+ {
+ LOG_FMT(LSPLIT, " %s(%d): found open paren\n", __func__, __LINE__);
+ break; // opening parenthesis found. Issue #1020
+ }
+ }
+ // Now break after every comma
+ Chunk *pc = fpo->GetNextNcNnl();
+
+ while (pc->IsNotNullChunk())
+ {
+ if (pc->GetLevel() <= fpo->GetLevel())
+ {
+ break;
+ }
+
+ if ( (pc->GetLevel() == (fpo->GetLevel() + 1))
+ && pc->Is(CT_COMMA))
+ {
+ split_before_chunk(pc->GetNext());
+ }
+ pc = pc->GetNextNcNnl();
+ }
+}
+
+
+static void split_template(Chunk *start)
+{
+ LOG_FUNC_ENTRY();
+ LOG_FMT(LSPLIT, " %s(%d): start %s\n", __func__, __LINE__, start->Text());
+ LOG_FMT(LSPLIT, " %s(%d): back up until the prev is a comma\n", __func__, __LINE__);
+
+ // back up until the prev is a comma
+ Chunk *prev = start;
+
+ while ((prev = prev->GetPrev())->IsNotNullChunk())
+ {
+ LOG_FMT(LSPLIT, " %s(%d): prev '%s'\n", __func__, __LINE__, prev->Text());
+
+ if ( prev->IsNewline()
+ || prev->Is(CT_COMMA))
+ {
+ break;
+ }
+ }
+
+ if ( prev->IsNotNullChunk()
+ && !prev->IsNewline())
+ {
+ LOG_FMT(LSPLIT, " %s(%d):", __func__, __LINE__);
+ LOG_FMT(LSPLIT, " -- ended on %s --\n", get_token_name(prev->GetType()));
+ Chunk *pc = prev->GetNext();
+ newline_add_before(pc);
+ size_t min_col = 1;
+
+ log_rule_B("indent_continue");
+
+ if (options::indent_continue() == 0)
+ {
+ log_rule_B("indent_columns");
+ min_col += options::indent_columns();
+ }
+ else
+ {
+ min_col += abs(options::indent_continue());
+ }
+ reindent_line(pc, min_col);
+ cpd.changes++;
+ }
+} // split_templatefcn_params
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/width.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/width.h
new file mode 100644
index 00000000..f418fb23
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/width.h
@@ -0,0 +1,21 @@
+/**
+ * @file width.h
+ * prototypes for width.cpp
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+#ifndef WIDTH_H_INCLUDED
+#define WIDTH_H_INCLUDED
+
+#include "uncrustify_types.h"
+
+
+/**
+ * Step forward until a token goes beyond the limit and then call split_line()
+ * to split the line at or before that point.
+ */
+void do_code_width();
+
+
+#endif /* WIDTH_H_INCLUDED */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/windows_compat.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/windows_compat.h
index 619581b0..619581b0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/windows_compat.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/src/windows_compat.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/.editorconfig b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/.editorconfig
index fcea945e..fcea945e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/.editorconfig
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/.editorconfig
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/BRACED_INIT_LIST_found_list.awk b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/BRACED_INIT_LIST_found_list.awk
index b1144618..b1144618 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/BRACED_INIT_LIST_found_list.awk
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/BRACED_INIT_LIST_found_list.awk
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/CMakeLists.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/CMakeLists.txt
new file mode 100644
index 00000000..8ef75032
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/CMakeLists.txt
@@ -0,0 +1,93 @@
+cmake_minimum_required(VERSION 3.5)
+
+find_package(Git QUIET)
+
+# sorted by lexicographic order
+set(test_suites
+ c-sharp.test
+ c.test
+ cpp.test
+ d.test
+ ecma.test
+ imported.test
+ java.test
+ objective-c.test
+ pawn.test
+ vala.test
+)
+
+if (NOT ENABLE_CODECOVERAGE)
+ list(APPEND test_suites staging.test)
+endif()
+
+set(stdoc
+ "Create a separate CTest test for each test case"
+ " this is slower, especially with Python 3"
+)
+option("UNCRUSTIFY_SEPARATE_TESTS" "${stdoc}" OFF)
+if (UNCRUSTIFY_SEPARATE_TESTS)
+ set(tests_ctest_file "${CMAKE_CURRENT_BINARY_DIR}/tests.cmake")
+ set_property(DIRECTORY PROPERTY TEST_INCLUDE_FILE ${tests_ctest_file})
+
+ add_custom_command(
+ OUTPUT ${tests_ctest_file}
+ COMMAND ${PYTHON_EXECUTABLE} run_format_tests.py
+ --executable $<TARGET_FILE:uncrustify>
+ --git ${GIT_EXECUTABLE}
+ --python ${PYTHON_EXECUTABLE}
+ --write-ctest ${tests_ctest_file}
+ --cmake-config "$<CONFIGURATION>"
+ VERBATIM
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ DEPENDS ${test_suites}
+ )
+
+ add_custom_target(register_tests ALL DEPENDS ${tests_ctest_file})
+else()
+ foreach(suite IN LISTS test_suites)
+ string(REPLACE ".test" "" lang "${suite}")
+ add_test(NAME ${lang}
+ COMMAND ${PYTHON_EXECUTABLE} run_format_tests.py ${lang}
+ --executable $<TARGET_FILE:uncrustify>
+ -d --git ${GIT_EXECUTABLE}
+ --result-dir ${CMAKE_CURRENT_BINARY_DIR}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ )
+ endforeach()
+endif()
+
+if (NOT ENABLE_CODECOVERAGE)
+ add_test(
+ NAME sources_format
+ COMMAND ${PYTHON_EXECUTABLE} run_sources_tests.py
+ --executable $<TARGET_FILE:uncrustify>
+ -d --git ${GIT_EXECUTABLE}
+ --result-dir ${CMAKE_CURRENT_BINARY_DIR}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ )
+endif()
+
+add_test(
+ NAME cli_options
+ COMMAND ${PYTHON_EXECUTABLE}
+ test_cli_options.py
+ --config $<CONFIG>
+ --build ${uncrustify_BINARY_DIR}
+ --diff
+ --test ${CMAKE_CURRENT_BINARY_DIR}/cli
+ ${_configs}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cli
+)
+
+add_custom_target(update-cli-options
+ COMMAND ${PYTHON_EXECUTABLE}
+ test_cli_options.py
+ --config $<CONFIG>
+ --build ${uncrustify_BINARY_DIR}
+ --apply
+ --test ${CMAKE_CURRENT_BINARY_DIR}/cli
+ DEPENDS uncrustify
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cli
+)
+
+add_test(NAME sanity COMMAND uncrustify --help)
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/c-sharp.test b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/c-sharp.test
index 4837a5ae..4837a5ae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/c-sharp.test
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/c-sharp.test
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/c.test b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/c.test
new file mode 100644
index 00000000..987cf62e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/c.test
@@ -0,0 +1,570 @@
+#
+# Test cases specifically for the C language.
+#
+# test.name config.file input.file
+
+
+# little general tests ====================================================
+
+00000 common/indent_columns-3.cfg c/comment-indent.c
+00001 c/cpp_to_c-1.cfg c/comment-indent.c
+00002 c/cpp_to_c-2.cfg c/comment-indent.c
+00003 c/cpp_to_c-3.cfg c/comment-indent.c
+00004 c/indent-1.cfg c/switch.c
+00005 c/ben_047.cfg c/cmt-align.c
+00006 common/indent_columns-3.cfg c/comment-convert.c
+00007 c/cpp_to_c-1.cfg c/comment-convert.c
+00008 c/cpp_to_c-2.cfg c/comment-convert.c
+00009 c/cpp_to_c-3.cfg c/comment-convert.c
+
+
+# brace styles
+
+00010 c/ben_048.cfg c/braces.c
+00011 common/brace-allman.cfg c/braces.c
+00012! c/brace-banner.cfg c/braces.c
+00013 c/brace-gnu.cfg c/braces.c
+00014 c/brace-kr.cfg c/braces.c
+00015 c/brace-ws.cfg c/braces.c
+00016 c/brace-ws2.cfg c/braces.c
+
+00020 c/ben_049.cfg c/define-if-indent.c
+00050 c/brace-remove-2.cfg c/brace-remove.c
+00051 c/brace-remove-all.cfg c/brace-remove.c
+00052 c/brace-remove-all.cfg c/brace-remove2.c
+00053 c/nl_brace_test.cfg c/brace.c
+00054 c/if_chain.cfg c/if_chain.c
+00055 c/cgal.cfg c/braces-2.c
+00056 c/brace-remove-all.cfg c/brace-remove3.c
+00057 c/if_chain.cfg c/brace-remove3.c
+00058 c/brace-kr-nobr.cfg c/if_chain.c
+00059 c/Issue_2205.cfg c/Issue_2205.c
+
+00060 c/ben_050.cfg c/braces-2.c
+00061 c/ben_051.cfg c/braces-3.c
+00062 c/ben_052.cfg c/braces-4.c
+00065 c/ben_053.cfg c/braces-5.c
+00066 c/ben_054.cfg c/vb-while.c
+00067 c/ben_055.cfg c/vb-do.c
+00068 c/ben_056.cfg c/bsnl.c
+00069 c/ben_057.cfg c/vb-pp.c
+
+00070 c/ben_058.cfg c/return-multi.c
+00071 common/ben_042.cfg c/include_define.h
+00072 common/star_pos-0.cfg c/align-proto.c
+00073 common/empty.cfg c/nl_proto_endif.c
+00074 c/clang-has_include.cfg c/clang-has_include.h
+00075 common/tde.cfg c/function_prototypes_alignment.c
+00076 c/1225.cfg c/1225.c
+
+00081 c/else-if-1.cfg c/else-if.c
+00082 c/else-if-2.cfg c/else-if.c
+00083 c/Issue_3601.cfg c/Issue_3601.c
+
+00091 c/cond-1.cfg c/cond.c
+00092 common/indent_columns-3.cfg c/cond.c
+00093 c/sp_cond_colon.cfg c/cond.c
+00094 c/Issue_3457.cfg c/Issue_3457.c
+
+00101 c/ben_061.cfg c/bugs-1.c
+00102 c/space_indent_columns-3.cfg c/bugs-2.c
+00103 c/ben_063.cfg c/bugs-3.c
+00104 c/ben_064.cfg c/bugs-4.c
+00105 c/ben_065.cfg c/bugs-5.c
+00106 common/ben_011.cfg c/bugs-6.c
+00107 common/ben_011.cfg c/bugs-7.c
+00108 common/indent_columns-3.cfg c/bugs-8.c
+
+00110 c/ben_069.cfg c/misc.c
+00111 c/brace-kr-br.cfg c/misc.c
+
+00120 c/sp_cmt_cpp_start-r.cfg c/sp_cmt_cpp_start.c
+00121 common/sp_cmt_cpp_start-a.cfg c/sp_cmt_cpp_start.c
+00122 common/sp_cmt_cpp_start_force.cfg c/sp_cmt_cpp_start.c
+00123 c/cmt_reflow.cfg c/cmt_reflow.c
+
+00130 c/ben_070.cfg c/minus-minus.c
+00131 c/Issue_3873.cfg c/Issue_3873.c
+00135 c/nepenthes.cfg c/br_cmt.c
+00136 common/empty.cfg c/Issue_4044.c
+
+00140 c/ben_071.cfg c/global-vars.c
+00141 c/ben_072.cfg c/deref.c
+00142 c/ben_073.cfg c/type-cast.c
+00143 c/ben_074.cfg c/t3.in.c
+00144 c/ben_075.cfg c/align-proto-vars.c
+00145 c/ben_076.cfg c/vardefcol.c
+00146 c/Issue_3516.cfg c/Issue_3516.c
+00147 c/Issue_3517.cfg c/Issue_3516.c
+00148 c/Issue_3518.cfg c/Issue_3518.c
+
+# casts
+
+00150 c/ben_077.cfg c/casts.c
+00151 c/cast-sp-r.cfg c/casts.c
+00152 c/cast-sp-a.cfg c/casts.c
+00153 c/cast-type.cfg c/casts.c
+00154 common/sp_after_cast.cfg c/casts.c
+00155 c/ben_078.cfg c/cast_brace.c
+
+00156 c/nl_collapse_empty_1.cfg c/empty-braces.c
+00157 c/nl_collapse_empty_2.cfg c/empty-braces.c
+00158 c/nl_collapse_empty_3.cfg c/empty-braces.c
+00159 c/nl_collapse_empty_4.cfg c/empty-braces.c
+
+# fcn indents
+
+00160 c/indent_func_param.cfg c/fcn_indent.c
+00161 c/indent_func_call_param.cfg c/fcn_indent.c
+00162 c/indent_func_def_param.cfg c/fcn_indent.c
+00163 c/indent_func_proto_param.cfg c/fcn_indent.c
+00164 c/rdan.cfg c/fcn_indent_func_def_col1.c
+00165 c/sp_func_call_user_inside_fparen.cfg c/sp_func_call_user_inside_fparen.c
+
+00170 common/empty.cfg c/beautifier-off.c
+00180 c/sf538.cfg c/lvalue.c
+
+00190 common/empty.cfg c/Issue_3559.c
+
+
+# switch & case stuff
+
+00201 c/case-1.cfg c/case.c
+00202 c/case-2.cfg c/case.c
+00203 c/case-3.cfg c/case.c
+00204 c/bug_1718.cfg c/bug_1718.c
+00205 c/nl_before_return_false.cfg c/case-nl_before_return.c
+00206 c/nl_before_return_true.cfg c/case-nl_before_return.c
+00207 common/nl_before_ignore_after_case.cfg c/nl_before_ignore_after_case.c
+
+
+# structure initializers
+
+00301 c/ben_079.cfg c/align-struct-init.c
+00302 c/ben_080.cfg c/one-liner-init.c
+00303 c/1liner-split.cfg c/one-liner-init.c
+00304 c/1liner-no-split.cfg c/one-liner-init.c
+00305 c/ben_081.cfg c/one-liner-define.c
+
+00310 common/empty.cfg c/sp_embed_comment.c
+00311 c/comment_conversion.cfg c/comment_conversion_define.c
+00312 c/comment_conversion.cfg c/comment_conversion_endif.c
+00313 c/comment_conversion.cfg c/comment_conversion_long_lines.c
+00314 c/comment_conversion.cfg c/comment_conversion_javadoc_single.c
+00315 common/tde.cfg c/comment_conversion_trailing_c_multiline.c
+
+00320 c/rdan.cfg c/indent_first_bool_expr.c
+
+
+# aligning tresholds
+
+00401 common/align-1.cfg c/align-equ.c
+00402 common/align-1.cfg c/align-var.c
+00403 c/align-2.cfg c/align-var.c
+00404 c/align-3.cfg c/align-var.c
+00405 c/align-3.cfg c/bits.c
+00406 c/bug_i_771.cfg c/bug_i_771.c
+00407 c/star-style-0.cfg c/star-style.c
+00408 c/star-style-1.cfg c/star-style.c
+00409 c/star-style-2.cfg c/star-style.c
+
+00411 c/align_typedef_gap-3_span-5.cfg c/align-typedef.c
+00412 c/align_typedef_gap-3_span-5.cfg c/align-typedef.c
+00413 c/align_typedef_func-1.cfg c/align-typedef.c
+00414 c/align_typedef_func-2.cfg c/align-typedef.c
+00415 c/align_stack.cfg c/align_stack.c
+00416 c/align_sf_call_thresh_416.cfg c/align_sf_call_thresh_416.c
+00417 c/align_sf_call_thresh_417.cfg c/align_sf_call_thresh_417.c
+00418 c/align_sf_call_span_418.cfg c/align_sf_call_span_418.c
+00419 c/align_sf_call_span_419.cfg c/align_sf_call_span_419.c
+00420 c/Issue_2278.cfg c/Issue_2278.c
+
+00421 c/nl_ds_struct_enum_cmt-t.cfg c/nl_ds_struct_enum.c
+00422 c/nl_ds_struct_enum-2.cfg c/nl_ds_struct_enum.c
+00423 c/bug_1702.cfg c/bug_1702.c
+00424 c/Issue_3506.cfg c/Issue_3506.c
+
+00430 common/empty.cfg c/paren-indent.c
+00431 c/indent_paren_close-1.cfg c/paren-indent.c
+00432 c/indent_paren_close-2.cfg c/paren-indent.c
+
+00440 c/bug_489.cfg c/bug_489.c
+
+00451 c/code_width-80.cfg c/enum_gallery.c
+00452 c/nl_enum_own_lines-a.cfg c/enum_gallery.c
+00453! c/nl_enum_own_lines-3.cfg c/enum_gallery.c
+00454 c/nl_enum_own_lines-4.cfg c/enum_gallery.c
+
+00461 c/align_func_proto_star_amp-1.cfg c/align_func_proto_star_amp.h
+00462 c/align_func_proto_star_amp-2.cfg c/align_func_proto_star_amp.h
+00463 c/align_func_proto_star_amp-3.cfg c/align_func_proto_star_amp.h
+00464 c/align_func_proto_star_amp-4.cfg c/align_func_proto_star_amp.h
+00465 c/align_func_proto_star_amp-5.cfg c/align_func_proto_star_amp.h
+00466 c/align_func_proto_star_amp-6.cfg c/align_func_proto_star_amp.h
+00467 c/align_func_proto_star_amp-7.cfg c/align_func_proto_star_amp.h
+00468 c/align_func_proto_star_amp-8.cfg c/align_func_proto_star_amp.h
+00469 c/align_func_proto_star_amp-9.cfg c/align_func_proto_star_amp.h
+
+00470 c/align_trailing_do_cmt.cfg c/align_trailing_do_cmt.c
+
+# boolean and comma positioning
+
+00501 c/bool-pos-eol.cfg c/bool-pos.c
+00502 c/bool-pos-sol.cfg c/bool-pos.c
+00503 c/pos_compare-sol.cfg c/pos_compare.c
+00504 c/pos_compare-eol.cfg c/pos_compare.c
+00505 c/pos_conditional-l.cfg c/pos_conditional.c
+00506 c/pos_conditional-t.cfg c/pos_conditional.c
+00510 c/bool-pos-eol-break.cfg c/bool-pos.c
+00511 c/bool-pos-sol-break.cfg c/bool-pos.c
+00512 common/bool-pos-eol-force.cfg c/bool-pos.c
+00513 c/bool-pos-sol-force.cfg c/bool-pos.c
+00514 c/my_conf.cfg c/my_infile.c
+
+00600 common/indent_columns-3.cfg c/dos.c
+00601 common/indent_columns-3.cfg c/mac.c
+00611 common/empty.cfg c/pp-space.c
+00612 c/pp-indent-2.cfg c/pp-space.c
+00613 c/pp_indent-a.cfg c/pp-space.c
+00614 c/pp-space.cfg c/pp-space.c
+00615 c/pp-indent-2.cfg c/pp-nest.c
+00616 c/pp_if_indent-1.cfg c/pp-if-indent.c
+00617 c/rdan.cfg c/pp-if-indent.c
+00618 c/pp_if_indent-4.cfg c/pp-if-indent.c
+00619 c/Issue_3169.cfg c/Issue_3169.c
+
+00620 c/ben_083.cfg c/indent-assign.c
+00621 c/nl_endif.cfg c/nl_endif.c
+00622 c/indent_assign.cfg c/indent-off-after-assign.c
+
+00623 c/pp_space_none.cfg c/pp_space_before_after.c
+00624 c/pp_space_after.cfg c/pp_space_before_after.c
+00625 c/pp_space_before.cfg c/pp_space_before_after.c
+00626 c/pp_space_before_after.cfg c/pp_space_before_after.c
+
+00631 c/nl_assign1.cfg c/nl_assign.c
+00632 c/nl_assign2.cfg c/nl_assign.c
+00633 c/nl_assign1.cfg c/bug_3156.c
+
+# function def newlines
+
+00701 common/func-def-1.cfg c/function-def.c
+00702 common/func-def-2.cfg c/function-def.c
+00703 common/func-def-3.cfg c/function-def.c
+
+00710 c/add_long_closebrace_comment_1.cfg c/add_long_comment.c
+
+# nl_after_semicolon and nl_after_open_brace
+
+00721 c/nl_semicolon.cfg c/nl-semicolon.c
+
+# function call newlines
+
+00730 c/nl_func_call-1.cfg c/nl_func_call.c
+00731 c/nl_func_call-2.cfg c/nl_func_call.c
+00732 c/nl_func_call-3.cfg c/nl_func_call.c
+00733 c/nl_func_call-4.cfg c/nl_func_call.c
+00734 c/nl_func_call-5.cfg c/nl_func_call.c
+
+# function types
+
+00801 c/ben_084.cfg c/fcn_type.c
+00802 c/ben_085.cfg c/funcfunc.c
+00803 c/sf537.cfg c/fcn_type.c
+
+# code width
+
+00901 c/width.cfg c/code_width.c
+00902 common/width-2.cfg c/code_width.c
+00903 c/width-3.cfg c/code_width.c
+
+# pascal ptr_type
+
+00910 c/pascal_ptr.cfg c/pascal_ptr.c
+00911 c/empty_body.cfg c/pascal_ptr.c
+
+01000 c/mod-paren.cfg c/mod-paren.c
+01001 c/nl-comment.cfg c/nl-comment.c
+01002 c/mod-paren2.cfg c/mod-paren.c
+
+01005 c/mod_case_brace_add.cfg c/mod_case_brace.c
+01006 common/mod_case_brace_rm.cfg c/mod_case_brace.c
+01007 c/mod_move_case_brace.cfg c/mod_case_brace.c
+01008 c/mod_case_brace_add.cfg c/Issue_3366.c
+01009 c/mod_move_case_return.cfg c/mod_move_case_return.c
+01010 c/mod_move_case_return.cfg c/mod_move_case_return_bad.c
+
+01011 common/del_semicolon.cfg c/semicolons.c
+01012 c/ben_086.cfg c/semicolons.c
+
+01015 common/empty.cfg c/paren_indent.c
+01016 c/align_attr.cfg c/align_attr.c
+
+01020 common/kw_subst.cfg c/kw_subst.c
+01021 common/kw_subst3.cfg c/hello.c
+01022 common/kw_subst3.cfg c/kw_subst.c
+
+01030 c/cmt_indent_multi-f.cfg c/multi.h
+
+01035 common/empty.cfg c/func_wrap.c
+01036 common/sp_inside_fparen-f.cfg c/func_wrap.c
+01037 c/type_wrap.cfg c/type_wrap.c
+
+01040 c/newline_after_endif.cfg c/newline_after_endif.c
+
+01050 c/func_call_user.cfg c/func_call_user.c
+
+01060 common/empty.cfg c/backslash-newline-lex.c
+
+01070 c/label_colon_nl_1.cfg c/various_colons.c
+01071 c/label_colon_nl_2.cfg c/various_colons.c
+
+01080 common/empty.cfg c/bug_1196.c
+
+# big general tests
+
+02000 c/ben_087.cfg c/i2c-core.c
+02001 c/preproc-cleanup.cfg c/directfb.h
+02002 common/ben2.cfg c/i2c-core.c
+02003 c/Issue_3353.cfg c/Issue_3353.h
+
+# clark's style - blank lines before and after flow control, indented comments
+
+02100 common/clark.cfg c/i2c-core.c
+02101 common/clark.cfg c/comment-indent.c
+
+02200 c/xml-str.cfg c/xml.c
+02201 c/xml-str.cfg c/align-string.c
+
+02300 c/ben_088.cfg c/preproc-if.c
+02301 common/d.cfg c/preproc-if.c
+02302 c/cpp_to_c-1.cfg c/nl-cont.c
+02303 c/cpp_to_c-1.cfg c/nl-cont2.c
+
+02310 c/ben_089.cfg c/empty-for.c
+02311 c/ben_090.cfg c/pragma.c
+
+02315 c/pp_ret.cfg c/pp_ret.c
+
+02320 c/nl_create_one_liner.cfg c/nl_create_one_liner.c
+02325 common/sort_imports.cfg c/sort_include.c
+
+02330 c/leave_one_liners.cfg c/one_liners.c
+
+# some embedded sql stuff
+
+02400 c/ben_091.cfg sql/mysql.sqc C
+02401 c/ben_092.cfg sql/sta-select.sqc C
+02402 c/issue_527.cfg sql/issue_527.sqc C
+
+02410 c/pp_if_indent-0.cfg c/ifdef-indent.c
+02411 c/pp_if_indent-1.cfg c/ifdef-indent.c
+02412 c/pp_if_indent-2.cfg c/ifdef-indent.c
+02413 c/pp_if_indent-3.cfg c/ifdef-indent.c
+02414 c/nl_whole_file_ifdef.cfg c/whole_file_ifdef.c
+02415 c/endif.cfg c/endif.c
+02416 c/cmt_nl_end.cfg c/cmt_nl_end.c
+
+02421 c/cmt_multi_check_last-f.cfg c/cmt_multi.c
+02422 common/empty.cfg c/cmt_multi.c
+02423 common/empty.cfg c/cmt_multi_utf8.c
+
+02431 c/align_right_cmt_gap-1.cfg c/cmt_right_align.c
+02432 c/space_indent_columns-3.cfg c/cmt_right_align.c
+
+02440 common/empty.cfg c/string_utf8.c
+02441 common/empty.cfg c/utf8-identifiers.c
+
+02451 c/return-1.cfg c/nl_return_expr.c
+02452 c/return-2.cfg c/nl_return_expr.c
+02453 c/return-3.cfg c/nl_return_expr.c
+02454 c/return-4.cfg c/nl_return_expr.c
+
+02455 common/mod_paren_on_return-a.cfg c/macro-returns.c
+02456 common/mod_paren_on_return-r.cfg c/macro-returns.c
+02457 c/nl_before_return_true.cfg c/nl_before_return.c
+
+02460 c/freebsd.cfg c/freebsd.c
+
+02486 c/doxy-comment-no.cfg c/doxy-comment.c
+02487 c/doxy-comment-yes.cfg c/doxy-comment.c
+
+02501 c/ger.cfg c/custom_types_ssl.c
+02502 c/custom_types_ssl.cfg c/custom_types_ssl.c
+#02503 ger.cfg c/pp_concat_asn1.h
+
+02504 c/align_keep_extra.cfg c/align_keep_extra.c
+02505 c/align_multi.cfg c/align_assigns.c
+02506 c/align-4.cfg c/align_assign_var_defs.c
+
+02510 c/ben_093.cfg c/asm.c
+
+02520 c/pp_indent_with_tabs_0.cfg c/pp_indent_with_tabs.c
+02521 c/pp_indent_with_tabs_1.cfg c/pp_indent_with_tabs.c
+02522 c/pp_indent_with_tabs_2.cfg c/pp_indent_with_tabs.c
+02523 c/pp_indent_with_tabs_-1_0.cfg c/pp_indent_with_tabs.c
+02524 c/pp_indent_with_tabs_-1_1.cfg c/pp_indent_with_tabs.c
+02525 c/pp_indent_with_tabs_-1_2.cfg c/pp_indent_with_tabs.c
+
+02530 common/empty.cfg c/pp_multiline_define.c
+02531 common/Issue_3052.cfg c/pp_multiline_define.c
+02532 c/pp_multiline_define_ignore_body.cfg c/pp_multiline_define.c
+02533 c/pp_multiline_define_with_spaces.cfg c/pp_multiline_define.c
+02534 c/pp_multiline_define_align_nl.cfg c/pp_multiline_define.c
+02535 c/pp_multiline_define_align_pp_col1.cfg c/pp_multiline_define.c
+02536 c/pp_multiline_define_align_pp_cnt3.cfg c/pp_multiline_define.c
+02537 c/pp_multiline_define_align_pp_ml4.cfg c/pp_multiline_define.c
+02538 c/pp_multiline_define_align_pp_ml2.cfg c/pp_multiline_define.c
+02539 c/pp_multiline_define_align_pp_ml0.cfg c/pp_multiline_define.c
+02540 c/pp_multiline_define_align_pp_ml-1.cfg c/pp_multiline_define.c
+02541 c/pp_multiline_define_align_pp_ml-5.cfg c/pp_multiline_define.c
+02542 c/align_nl_cont-2.cfg c/pp_multiline_define.c
+02543 c/align_nl_cont-3.cfg c/pp_multiline_define.c
+02544 c/align_nl_cont_spaces-5.cfg c/pp_multiline_define.c
+
+02550 c/Issue_3852.cfg c/func_var_multi_paren.c
+
+07630 c/indent-vbrace.cfg c/indent-vbrace.c
+
+08399 c/ben_095.cfg c/gh399.c
+
+09594 common/indent_columns-3.cfg c/sf594.c
+09588 common/empty.cfg c/sf588.c
+
+09601 common/bug_637.cfg c/bug_637.c
+09602 common/bug_671.cfg c/bug_671.c
+09603 common/indent_ternary_operator-1.cfg c/indent_ternary-1.c
+09604 common/indent_ternary_operator-2.cfg c/indent_ternary-2.c
+09605 common/sp_arith-f.cfg c/negative_value.c
+09606 c/ptr-arith.cfg c/extern.c
+09607 c/ptr-arith.cfg c/attribute.c
+09608 common/aet-func_call_user.cfg c/func_call_user2.c
+09609 c/Issue_2279.cfg c/Issue_2279.c
+
+09610 c/force_tab_after_define-t.cfg c/bug_i_876.c
+09611 common/space_indent_columns-4.cfg c/bug_i_222.c
+09612 common/empty.cfg c/bug_1041.c
+09613 common/empty.cfg c/i1413.c
+09614 common/empty.cfg c/string_prefixes.c
+09615 c/i1564.cfg c/i1564.c
+09616 c/enum_comma_ifdef.cfg c/enum_comma_ifdef.c
+09617 c/Issue_2360-a.cfg c/Issue_2360.c
+09618 c/Issue_2360-b.cfg c/Issue_2360.c
+09619 c/Issue_2411.cfg c/Issue_2411.c
+
+09620 c/Issue_2640.cfg c/Issue_2640.c
+09621 c/preproc-cleanup.cfg c/pp-before-func-def.c
+09622 c/Issue_3356.cfg c/Issue_3356.c
+09623 c/convert_cmt_vbrace_one_line.cfg c/vbrace_one_liner.c
+
+10003 common/empty.cfg c/incdec_postfix_multiply.c
+10004 c/ben_094.cfg c/pragma_asm.c
+10005 common/empty.cfg c/i1270.c
+10006 c/bug_2331.cfg c/bug_2331.c
+10007 c/indent_macro_brace-true.cfg c/indent-macro-brace.c
+10008 c/indent_macro_brace-false.cfg c/indent-macro-brace.c
+10009 common/empty.cfg c/return-compound-literal.c
+
+10010 c/indent_compound_literal_return-false.cfg c/return-compound-literal.c
+10011 c/indent_compound_literal_return-true.cfg c/return-compound-literal.c
+10012 c/indent_sparen_extra-8.cfg c/sparen-indent.c
+10013 common/empty.cfg c/sparen-indent.c
+10014 common/indent_continue-8.cfg c/sparen-indent.c
+10015 common/empty.cfg c/Issue_2845.h
+10016 c/Issue_3233.cfg c/Issue_3233.c
+10017 c/sp_sparen_paren-a.cfg c/double-sparen.c
+10018 c/sp_sparen_paren-i.cfg c/double-sparen.c
+10019 c/pp_indent_in_guard.cfg c/include-guard.h
+10020 c/indent_single_line_comments_after.cfg c/single_line_comment_after.c
+10021 common/sp_cparen_oparen-f.cfg c/parenthesized_indirect_call.c
+10022 c/Issue_3269.cfg c/Issue_3269.c
+10023 c/Issue_3272.cfg c/Issue_3272.h
+10024 c/Issue_3274.cfg c/Issue_3274.c
+10025 c/sp_between_semi_for_empty-r.cfg c/forever.c
+10026 c/sp_between_semi_for_empty-i.cfg c/forever.c
+10027 c/Issue_3327.cfg c/Issue_3327.c
+10028 c/sp_emb_cmt-i.cfg c/Issue_3339.c
+10029 c/sp_emb_cmt-f.cfg c/Issue_3339.c
+10030 c/sp_emb_cmt-r.cfg c/Issue_3339.c
+10031 c/sp_after_pointer_star-r.cfg c/Issue_3342.c
+10032 c/sp_after_pointer_star-r.cfg c/Issue_3345.c
+10033 c/pp_include_at_level-true.cfg c/Issue_3343.c
+10034 c/pp_include_at_level-false.cfg c/Issue_3343.c
+10035 c/indent_comment_align_thresh-0.cfg c/comment-indent.c
+10036 c/Issue_3350.cfg c/comment-indent.c
+10037 c/indent_case_comment-true.cfg c/Issue_3362.c
+10038 c/indent_case_comment-false.cfg c/Issue_3362.c
+10039 c/Issue_3370.cfg c/Issue_3370.c
+10040 c/Issue_3377.cfg c/Issue_3377.c
+10041 c/Issue_3351.cfg c/Issue_3351.c
+10042 c/sp_ptr_star_func_var-i.cfg c/Issue_3376.c
+10043 c/sp_ptr_star_func_var-a.cfg c/Issue_3376.c
+10044 c/sp_ptr_star_func_var-r.cfg c/Issue_3376.c
+10045 c/sp_ptr_star_func_var-f.cfg c/Issue_3376.c
+10046 c/Issue_3402.cfg c/Issue_3402.c
+10047 c/pp_if_indent_code-true.cfg c/Issue_3421.h
+10048 c/Issue_3431.cfg c/Issue_3431.c
+10049 c/indent_paren_close--1.cfg c/Issue_3436.c
+10050 common/empty.cfg c/Issue_3192.c
+10051 c/Issue_3454.cfg c/Issue_3454.c
+10052 c/Issue_3472.cfg c/Issue_3472.c
+10053 c/Issue_3476.cfg c/Issue_3476.c
+10054 c/Issue_3480.cfg c/Issue_3480.c
+10055 c/Issue_3493.cfg c/Issue_3493.c
+10056 c/sp_enum_brace-i.cfg c/Issue_3496.h
+10057 c/sp_enum_brace-a.cfg c/Issue_3496.h
+10058 c/sp_enum_brace-r.cfg c/Issue_3496.h
+10059 c/sp_enum_brace-f.cfg c/Issue_3496.h
+10060 c/indent_ignore_bool-true.cfg c/Issue_3548.c
+10061 c/Issue_3556.cfg c/Issue_3556.c
+10062 c/Issue_3561.cfg c/Issue_3561.c
+10063 c/Issue_3565.cfg c/Issue_3565.c
+10064 c/Issue_3567-a.cfg c/Issue_3567.c
+10065 c/Issue_3567-b.cfg c/Issue_3567.c
+10066 c/Issue_3580.cfg c/Issue_3580.c
+10077 c/Issue_3582.cfg c/Issue_3582.c
+10078 c/pp_indent_brace--1.cfg c/Issue_3587.h
+10079 c/Issue_3662.cfg c/Issue_3662.c
+10080 c/mod_infinite_loop-0.cfg c/infinite-loops.c
+10081 c/mod_infinite_loop-1.cfg c/infinite-loops.c
+10082 c/mod_infinite_loop-2.cfg c/infinite-loops.c
+10083 c/mod_infinite_loop-3.cfg c/infinite-loops.c
+10084 c/mod_infinite_loop-4.cfg c/infinite-loops.c
+10085 c/mod_infinite_loop-5.cfg c/infinite-loops.c
+10086 c/Issue_3716-1.cfg c/infinite-loops.c
+10087 c/Issue_3716-2.cfg c/infinite-loops.c
+10088 c/Issue_3716-3.cfg c/infinite-loops.c
+10089 c/Issue_3716-4.cfg c/infinite-loops.c
+10090 c/Issue_3716-5.cfg c/infinite-loops.c
+10091 c/mod_short_int-a.cfg c/int-types.c
+10092 c/mod_short_int-r.cfg c/int-types.c
+10093 c/mod_long_int-a.cfg c/int-types.c
+10094 c/mod_long_int-r.cfg c/int-types.c
+10095 c/mod_signed_int-a.cfg c/int-types.c
+10096 c/mod_signed_int-r.cfg c/int-types.c
+10097 c/mod_unsigned_int-a.cfg c/int-types.c
+10098 c/mod_unsigned_int-r.cfg c/int-types.c
+10099 c/mod_int_short-a.cfg c/int-types.c
+10100 c/mod_int_short-r.cfg c/int-types.c
+10101 c/mod_int_long-a.cfg c/int-types.c
+10102 c/mod_int_long-r.cfg c/int-types.c
+10103 c/mod_int_signed-a.cfg c/int-types.c
+10104 c/mod_int_signed-r.cfg c/int-types.c
+10105 c/mod_int_unsigned-a.cfg c/int-types.c
+10106 c/mod_int_unsigned-r.cfg c/int-types.c
+10107 c/mod_int-shift-left.cfg c/int-types.c
+10108 c/mod_int-shift-right.cfg c/int-types.c
+10109 c/mod_int-add-all-prefer-left.cfg c/int-types.c
+10110 c/mod_int-add-all-prefer-right.cfg c/int-types.c
+10111 c/mod_int-remove-left.cfg c/int-types.c
+10112 c/mod_int-remove-right.cfg c/int-types.c
+10113 c/mod_int-remove-all.cfg c/int-types.c
+10114 c/Issue_3989.cfg c/Issue_3989.c
+
+10120 c/sp_after_sparen-i.cfg c/sp_after_sparen.c
+10121 c/sp_after_sparen-a.cfg c/sp_after_sparen.c
+10122 c/sp_after_sparen-r.cfg c/sp_after_sparen.c
+10123 c/sp_after_sparen-f.cfg c/sp_after_sparen.c
+
+10124 common/tde.cfg c/Issue_3985.c
+10125 common/tde.cfg c/Issue_3992.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/I-842.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/I-842.cfg
index e69de29b..e69de29b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/I-842.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/I-842.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/copyright-header.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/copyright-header.cfg
index 13d5020b..13d5020b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/copyright-header.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/copyright-header.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/copyright-header.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/copyright-header.txt
index f96c1ae8..f96c1ae8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/copyright-header.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/copyright-header.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/mini_d.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/mini_d.cfg
index ddd51138..ddd51138 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/mini_d.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/mini_d.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/mini_nd.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/mini_nd.cfg
index 1fe66176..1fe66176 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/mini_nd.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/mini_nd.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/replace.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/replace.cfg
index 16473bf2..16473bf2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/replace.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/replace.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/tracking_space.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/tracking_space.cfg
index 8b37aa38..8b37aa38 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/tracking_space.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/tracking_space.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/truncate.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/truncate.cfg
index cc48c57e..cc48c57e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/truncate.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/truncate.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/unmatched_close_pp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/unmatched_close_pp.cfg
index e69de29b..e69de29b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/config/unmatched_close_pp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/config/unmatched_close_pp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/I-3310.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/I-3310.c
index e69de29b..e69de29b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/I-3310.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/I-3310.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/I-842.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/I-842.cpp
index 7f7bcaf3..7f7bcaf3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/I-842.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/I-842.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/backup.h-save b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/backup.h-save
index 9a66578c..9a66578c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/backup.h-save
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/backup.h-save
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/class_enum_struct_union.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/class_enum_struct_union.cpp
index 6a72c823..6a72c823 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/class_enum_struct_union.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/class_enum_struct_union.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/in_fcn_def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/in_fcn_def.cpp
new file mode 100644
index 00000000..d0ba6b3c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/in_fcn_def.cpp
@@ -0,0 +1,5 @@
+void (*fnPtr)(int i, double d);
+void function(int i, double d);
+typedef void (*fnPtr)(int i, double d);
+typedef void function(int i, double d);
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/logger.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/logger.cs
index defede8a..defede8a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/logger.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/logger.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/replace.list b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/replace.list
index 009e6f33..009e6f33 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/replace.list
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/replace.list
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/testSrc.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/testSrc.cpp
index 1a22f6d9..1a22f6d9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/testSrc.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/testSrc.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/testSrcP.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/testSrcP.cpp
index 85e36674..85e36674 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/testSrcP.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/testSrcP.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/tracking_space.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/tracking_space.cpp
index 5b0b8aa1..5b0b8aa1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/tracking_space.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/tracking_space.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/truncate.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/truncate.cpp
index 7ef9530d..7ef9530d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/truncate.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/truncate.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/unmatched_close_pp.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/unmatched_close_pp.cpp
index b79d12fd..b79d12fd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/input/unmatched_close_pp.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/input/unmatched_close_pp.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/21.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/21.txt
index 2df9b875..2df9b875 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/21.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/21.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/25.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/25.txt
index cf117b66..cf117b66 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/25.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/25.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/28.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/28.txt
new file mode 100644
index 00000000..f08fdda1
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/28.txt
@@ -0,0 +1,430 @@
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(parse_next : rule is 'disable_processing_nl_cont'
+log_rule(tokenize : rule is 'newlines'
+brace_cleanup : orig line is 1, orig col is 1, Text() 'struct', type is STRUCT, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 1, orig col is 1, type is STRUCT, tos is 0, TOS.type is EOF, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 1, type is STRUCT, Text() is 'struct'
+parse_cleanup : frame statement count is 0, expression count is 0
+parse_cleanup : frame statement count is 1, expression count is 1
+brace_cleanup : orig line is 1, orig col is 8, Text() 'TelegramIndex', type is TYPE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 1, orig col is 8, type is TYPE, tos is 0, TOS.type is EOF, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 1, type is TYPE, Text() is 'TelegramIndex'
+parse_cleanup : frame statement count is 1, expression count is 1
+parse_cleanup : frame statement count is 2, expression count is 2
+brace_cleanup : orig line is 1, orig col is 21, <Newline>, PRE is false
+brace_cleanup : pp level is 0
+brace_cleanup : orig line is 2, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 2, orig col is 1, type is BRACE_OPEN, tos is 0, TOS.type is EOF, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 2, type is BRACE_OPEN, Text() is '{'
+parse_cleanup : frame statement count is 2, expression count is 2
+parse_cleanup : frame statement count is 3, expression count is 3
+parse_cleanup : frame statement count is 0, expression count is 0
+brace_cleanup : orig line is 2, orig col is 2, <Newline>, PRE is false
+brace_cleanup : pp level is 0
+brace_cleanup : orig line is 3, orig col is 1, Text() 'TelegramIndex', type is WORD, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 3, orig col is 1, type is WORD, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 3, type is WORD, Text() is 'TelegramIndex'
+parse_cleanup : frame statement count is 0, expression count is 0
+parse_cleanup : frame statement count is 1, expression count is 1
+brace_cleanup : orig line is 3, orig col is 14, Text() '(', type is PAREN_OPEN, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 3, orig col is 14, type is PAREN_OPEN, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 3, type is PAREN_OPEN, Text() is '('
+parse_cleanup : frame statement count is 1, expression count is 1
+parse_cleanup : frame statement count is 2, expression count is 2
+brace_cleanup : orig line is 3, orig col is 15, Text() 'const', type is QUALIFIER, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 3, orig col is 15, type is QUALIFIER, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 3, type is QUALIFIER, Text() is 'const'
+parse_cleanup : frame statement count is 2, expression count is 0
+parse_cleanup : frame statement count is 3, expression count is 1
+brace_cleanup : orig line is 3, orig col is 21, Text() 'char', type is TYPE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 3, orig col is 21, type is TYPE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 3, type is TYPE, Text() is 'char'
+parse_cleanup : frame statement count is 3, expression count is 1
+parse_cleanup : frame statement count is 4, expression count is 2
+brace_cleanup : orig line is 3, orig col is 25, Text() '*', type is PTR_TYPE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 3, orig col is 25, type is PTR_TYPE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 3, type is PTR_TYPE, Text() is '*'
+parse_cleanup : frame statement count is 4, expression count is 2
+parse_cleanup : frame statement count is 5, expression count is 3
+brace_cleanup : orig line is 3, orig col is 27, Text() 'pN', type is WORD, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 3, orig col is 27, type is WORD, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 3, type is WORD, Text() is 'pN'
+parse_cleanup : frame statement count is 5, expression count is 3
+parse_cleanup : frame statement count is 6, expression count is 4
+brace_cleanup : orig line is 3, orig col is 29, Text() ',', type is COMMA, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 3, orig col is 29, type is COMMA, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 3, type is COMMA, Text() is ','
+parse_cleanup : frame statement count is 6, expression count is 4
+parse_cleanup : frame statement count is 7, expression count is 5
+brace_cleanup : orig line is 3, orig col is 31, Text() 'unsigned', type is TYPE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 3, orig col is 31, type is TYPE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 3, type is TYPE, Text() is 'unsigned'
+parse_cleanup : frame statement count is 7, expression count is 0
+parse_cleanup : frame statement count is 8, expression count is 1
+brace_cleanup : orig line is 3, orig col is 40, Text() 'long', type is TYPE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 3, orig col is 40, type is TYPE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 3, type is TYPE, Text() is 'long'
+parse_cleanup : frame statement count is 8, expression count is 1
+parse_cleanup : frame statement count is 9, expression count is 2
+brace_cleanup : orig line is 3, orig col is 45, Text() 'nI', type is WORD, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 3, orig col is 45, type is WORD, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 3, type is WORD, Text() is 'nI'
+parse_cleanup : frame statement count is 9, expression count is 2
+parse_cleanup : frame statement count is 10, expression count is 3
+brace_cleanup : orig line is 3, orig col is 47, Text() ')', type is PAREN_CLOSE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 3, orig col is 47, type is PAREN_CLOSE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 3, type is PAREN_CLOSE, Text() is ')'
+parse_cleanup : frame statement count is 10, expression count is 3
+parse_cleanup : frame statement count is 11, expression count is 4
+brace_cleanup : orig line is 3, orig col is 49, Text() ':', type is COLON, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 3, orig col is 49, type is COLON, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 3, type is COLON, Text() is ':'
+parse_cleanup : frame statement count is 11, expression count is 4
+parse_cleanup : frame statement count is 12, expression count is 5
+parse_cleanup : frame statement count is 0, expression count is 0
+brace_cleanup : orig line is 3, orig col is 50, <Newline>, PRE is false
+brace_cleanup : pp level is 0
+brace_cleanup : orig line is 4, orig col is 1, Text() 'pTelName', type is WORD, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 4, orig col is 1, type is WORD, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 4, type is WORD, Text() is 'pTelName'
+parse_cleanup : frame statement count is 0, expression count is 0
+parse_cleanup : frame statement count is 1, expression count is 1
+brace_cleanup : orig line is 4, orig col is 9, Text() '(', type is PAREN_OPEN, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 4, orig col is 9, type is PAREN_OPEN, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 4, type is PAREN_OPEN, Text() is '('
+parse_cleanup : frame statement count is 1, expression count is 1
+parse_cleanup : frame statement count is 2, expression count is 2
+brace_cleanup : orig line is 4, orig col is 10, Text() 'pN', type is WORD, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 4, orig col is 10, type is WORD, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 4, type is WORD, Text() is 'pN'
+parse_cleanup : frame statement count is 2, expression count is 0
+parse_cleanup : frame statement count is 3, expression count is 1
+brace_cleanup : orig line is 4, orig col is 12, Text() ')', type is PAREN_CLOSE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 4, orig col is 12, type is PAREN_CLOSE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 4, type is PAREN_CLOSE, Text() is ')'
+parse_cleanup : frame statement count is 3, expression count is 1
+parse_cleanup : frame statement count is 4, expression count is 2
+brace_cleanup : orig line is 4, orig col is 13, Text() ',', type is COMMA, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 4, orig col is 13, type is COMMA, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 4, type is COMMA, Text() is ','
+parse_cleanup : frame statement count is 4, expression count is 2
+parse_cleanup : frame statement count is 5, expression count is 3
+brace_cleanup : orig line is 4, orig col is 14, <Newline>, PRE is false
+brace_cleanup : pp level is 0
+brace_cleanup : orig line is 5, orig col is 1, Text() 'nTelIndex', type is WORD, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 5, orig col is 1, type is WORD, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 5, type is WORD, Text() is 'nTelIndex'
+parse_cleanup : frame statement count is 5, expression count is 0
+parse_cleanup : frame statement count is 6, expression count is 1
+brace_cleanup : orig line is 5, orig col is 10, Text() '(', type is PAREN_OPEN, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 5, orig col is 10, type is PAREN_OPEN, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 5, type is PAREN_OPEN, Text() is '('
+parse_cleanup : frame statement count is 6, expression count is 1
+parse_cleanup : frame statement count is 7, expression count is 2
+brace_cleanup : orig line is 5, orig col is 11, Text() 'n', type is WORD, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 5, orig col is 11, type is WORD, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 5, type is WORD, Text() is 'n'
+parse_cleanup : frame statement count is 7, expression count is 0
+parse_cleanup : frame statement count is 8, expression count is 1
+brace_cleanup : orig line is 5, orig col is 12, Text() ')', type is PAREN_CLOSE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 5, orig col is 12, type is PAREN_CLOSE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 5, type is PAREN_CLOSE, Text() is ')'
+parse_cleanup : frame statement count is 8, expression count is 1
+parse_cleanup : frame statement count is 9, expression count is 2
+brace_cleanup : orig line is 5, orig col is 13, <Newline>, PRE is false
+brace_cleanup : pp level is 0
+brace_cleanup : orig line is 6, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 6, orig col is 1, type is BRACE_OPEN, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 6, type is BRACE_OPEN, Text() is '{'
+parse_cleanup : frame statement count is 9, expression count is 2
+parse_cleanup : frame statement count is 10, expression count is 3
+parse_cleanup : frame statement count is 0, expression count is 0
+brace_cleanup : orig line is 6, orig col is 2, <Newline>, PRE is false
+brace_cleanup : pp level is 0
+brace_cleanup : orig line is 7, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 7, orig col is 1, type is BRACE_CLOSE, tos is 2, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 7, type is BRACE_CLOSE, Text() is '}'
+parse_cleanup : frame statement count is 0, expression count is 0
+parse_cleanup : frame statement count is 1, expression count is 1
+parse_cleanup : frame statement count is 0, expression count is 0
+brace_cleanup : orig line is 7, orig col is 2, <Newline>, PRE is false
+brace_cleanup : pp level is 0
+brace_cleanup : orig line is 9, orig col is 1, Text() '~', type is INV, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 9, orig col is 1, type is INV, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 9, type is INV, Text() is '~'
+parse_cleanup : frame statement count is 0, expression count is 0
+parse_cleanup : frame statement count is 1, expression count is 1
+brace_cleanup : orig line is 9, orig col is 2, Text() 'TelegramIndex', type is WORD, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 9, orig col is 2, type is WORD, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 9, type is WORD, Text() is 'TelegramIndex'
+parse_cleanup : frame statement count is 1, expression count is 0
+parse_cleanup : frame statement count is 2, expression count is 1
+brace_cleanup : orig line is 9, orig col is 15, Text() '(', type is PAREN_OPEN, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 9, orig col is 15, type is PAREN_OPEN, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 9, type is PAREN_OPEN, Text() is '('
+parse_cleanup : frame statement count is 2, expression count is 1
+parse_cleanup : frame statement count is 3, expression count is 2
+brace_cleanup : orig line is 9, orig col is 16, Text() ')', type is PAREN_CLOSE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 9, orig col is 16, type is PAREN_CLOSE, tos is 2, TOS.type is PAREN_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 9, type is PAREN_CLOSE, Text() is ')'
+parse_cleanup : frame statement count is 3, expression count is 0
+parse_cleanup : frame statement count is 4, expression count is 1
+brace_cleanup : orig line is 9, orig col is 17, <Newline>, PRE is false
+brace_cleanup : pp level is 0
+brace_cleanup : orig line is 10, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 10, orig col is 1, type is BRACE_OPEN, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 10, type is BRACE_OPEN, Text() is '{'
+parse_cleanup : frame statement count is 4, expression count is 1
+parse_cleanup : frame statement count is 5, expression count is 2
+parse_cleanup : frame statement count is 0, expression count is 0
+brace_cleanup : orig line is 10, orig col is 2, <Newline>, PRE is false
+brace_cleanup : pp level is 0
+brace_cleanup : orig line is 11, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 11, orig col is 1, type is BRACE_CLOSE, tos is 2, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 11, type is BRACE_CLOSE, Text() is '}'
+parse_cleanup : frame statement count is 0, expression count is 0
+parse_cleanup : frame statement count is 1, expression count is 1
+parse_cleanup : frame statement count is 0, expression count is 0
+brace_cleanup : orig line is 11, orig col is 2, <Newline>, PRE is false
+brace_cleanup : pp level is 0
+brace_cleanup : orig line is 13, orig col is 1, Text() 'const', type is QUALIFIER, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 13, orig col is 1, type is QUALIFIER, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 13, type is QUALIFIER, Text() is 'const'
+parse_cleanup : frame statement count is 0, expression count is 0
+parse_cleanup : frame statement count is 1, expression count is 1
+brace_cleanup : orig line is 13, orig col is 7, Text() 'char', type is TYPE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 13, orig col is 7, type is TYPE, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 13, type is TYPE, Text() is 'char'
+parse_cleanup : frame statement count is 1, expression count is 1
+parse_cleanup : frame statement count is 2, expression count is 2
+brace_cleanup : orig line is 13, orig col is 11, Text() '*', type is PTR_TYPE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 13, orig col is 11, type is PTR_TYPE, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 13, type is PTR_TYPE, Text() is '*'
+parse_cleanup : frame statement count is 2, expression count is 2
+parse_cleanup : frame statement count is 3, expression count is 3
+brace_cleanup : orig line is 13, orig col is 13, Text() 'const', type is QUALIFIER, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 13, orig col is 13, type is QUALIFIER, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 13, type is QUALIFIER, Text() is 'const'
+parse_cleanup : frame statement count is 3, expression count is 3
+parse_cleanup : frame statement count is 4, expression count is 4
+brace_cleanup : orig line is 13, orig col is 19, Text() 'pTelName', type is WORD, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 13, orig col is 19, type is WORD, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 13, type is WORD, Text() is 'pTelName'
+parse_cleanup : frame statement count is 4, expression count is 4
+parse_cleanup : frame statement count is 5, expression count is 5
+brace_cleanup : orig line is 13, orig col is 27, Text() ';', type is SEMICOLON, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 13, orig col is 27, type is SEMICOLON, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 13, type is SEMICOLON, Text() is ';'
+parse_cleanup : frame statement count is 5, expression count is 5
+parse_cleanup : frame statement count is 6, expression count is 6
+parse_cleanup : frame statement count is 0, expression count is 0
+brace_cleanup : orig line is 13, orig col is 28, <Newline>, PRE is false
+brace_cleanup : pp level is 0
+brace_cleanup : orig line is 14, orig col is 1, Text() 'unsigned', type is TYPE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 14, orig col is 1, type is TYPE, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 14, type is TYPE, Text() is 'unsigned'
+parse_cleanup : frame statement count is 0, expression count is 0
+parse_cleanup : frame statement count is 1, expression count is 1
+brace_cleanup : orig line is 14, orig col is 10, Text() 'long', type is TYPE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 14, orig col is 10, type is TYPE, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 14, type is TYPE, Text() is 'long'
+parse_cleanup : frame statement count is 1, expression count is 1
+parse_cleanup : frame statement count is 2, expression count is 2
+brace_cleanup : orig line is 14, orig col is 15, Text() 'nTelIndex', type is WORD, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 14, orig col is 15, type is WORD, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x0:]
+parse_cleanup : orig line is 14, type is WORD, Text() is 'nTelIndex'
+parse_cleanup : frame statement count is 2, expression count is 2
+parse_cleanup : frame statement count is 3, expression count is 3
+brace_cleanup : orig line is 14, orig col is 24, Text() ';', type is SEMICOLON, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 14, orig col is 24, type is SEMICOLON, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 14, type is SEMICOLON, Text() is ';'
+parse_cleanup : frame statement count is 3, expression count is 3
+parse_cleanup : frame statement count is 4, expression count is 4
+parse_cleanup : frame statement count is 0, expression count is 0
+brace_cleanup : orig line is 14, orig col is 25, <Newline>, PRE is false
+brace_cleanup : pp level is 0
+brace_cleanup : orig line is 15, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 15, orig col is 1, type is BRACE_CLOSE, tos is 1, TOS.type is BRACE_OPEN, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 15, type is BRACE_CLOSE, Text() is '}'
+parse_cleanup : frame statement count is 0, expression count is 0
+parse_cleanup : frame statement count is 1, expression count is 1
+parse_cleanup : frame statement count is 0, expression count is 0
+brace_cleanup : orig line is 15, orig col is 2, Text() ';', type is SEMICOLON, PRE is false
+brace_cleanup : pp level is 0
+parse_cleanup : orig line is 15, orig col is 2, type is SEMICOLON, tos is 0, TOS.type is EOF, TOS.stage is NONE, chunk flags: [0x200000000:PUNCTUATOR]
+parse_cleanup : orig line is 15, type is SEMICOLON, Text() is ';'
+parse_cleanup : frame statement count is 0, expression count is 0
+parse_cleanup : frame statement count is 1, expression count is 1
+parse_cleanup : frame statement count is 0, expression count is 0
+brace_cleanup : orig line is 15, orig col is 3, <Newline>, PRE is false
+brace_cleanup : pp level is 0
+parameter_pack_cleanup : orig line is 1, orig col is 1, Text() 'struct', type is STRUCT, PRE is false
+parameter_pack_cleanup : orig line is 1, orig col is 8, Text() 'TelegramIndex', type is TYPE, PRE is false
+parameter_pack_cleanup : orig line is 1, orig col is 21, <Newline>, PRE is false
+parameter_pack_cleanup : orig line is 2, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
+parameter_pack_cleanup : orig line is 2, orig col is 2, <Newline>, PRE is false
+parameter_pack_cleanup : orig line is 3, orig col is 1, Text() 'TelegramIndex', type is WORD, PRE is false
+parameter_pack_cleanup : orig line is 3, orig col is 14, Text() '(', type is PAREN_OPEN, PRE is false
+parameter_pack_cleanup : orig line is 3, orig col is 15, Text() 'const', type is QUALIFIER, PRE is false
+parameter_pack_cleanup : orig line is 3, orig col is 21, Text() 'char', type is TYPE, PRE is false
+parameter_pack_cleanup : orig line is 3, orig col is 25, Text() '*', type is PTR_TYPE, PRE is false
+parameter_pack_cleanup : orig line is 3, orig col is 27, Text() 'pN', type is WORD, PRE is false
+parameter_pack_cleanup : orig line is 3, orig col is 29, Text() ',', type is COMMA, PRE is false
+parameter_pack_cleanup : orig line is 3, orig col is 31, Text() 'unsigned', type is TYPE, PRE is false
+parameter_pack_cleanup : orig line is 3, orig col is 40, Text() 'long', type is TYPE, PRE is false
+parameter_pack_cleanup : orig line is 3, orig col is 45, Text() 'nI', type is WORD, PRE is false
+parameter_pack_cleanup : orig line is 3, orig col is 47, Text() ')', type is PAREN_CLOSE, PRE is false
+parameter_pack_cleanup : orig line is 3, orig col is 49, Text() ':', type is COLON, PRE is false
+parameter_pack_cleanup : orig line is 3, orig col is 50, <Newline>, PRE is false
+parameter_pack_cleanup : orig line is 4, orig col is 1, Text() 'pTelName', type is WORD, PRE is false
+parameter_pack_cleanup : orig line is 4, orig col is 9, Text() '(', type is PAREN_OPEN, PRE is false
+parameter_pack_cleanup : orig line is 4, orig col is 10, Text() 'pN', type is WORD, PRE is false
+parameter_pack_cleanup : orig line is 4, orig col is 12, Text() ')', type is PAREN_CLOSE, PRE is false
+parameter_pack_cleanup : orig line is 4, orig col is 13, Text() ',', type is COMMA, PRE is false
+parameter_pack_cleanup : orig line is 4, orig col is 14, <Newline>, PRE is false
+parameter_pack_cleanup : orig line is 5, orig col is 1, Text() 'nTelIndex', type is WORD, PRE is false
+parameter_pack_cleanup : orig line is 5, orig col is 10, Text() '(', type is PAREN_OPEN, PRE is false
+parameter_pack_cleanup : orig line is 5, orig col is 11, Text() 'n', type is WORD, PRE is false
+parameter_pack_cleanup : orig line is 5, orig col is 12, Text() ')', type is PAREN_CLOSE, PRE is false
+parameter_pack_cleanup : orig line is 5, orig col is 13, <Newline>, PRE is false
+parameter_pack_cleanup : orig line is 6, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
+parameter_pack_cleanup : orig line is 6, orig col is 2, <Newline>, PRE is false
+parameter_pack_cleanup : orig line is 7, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
+parameter_pack_cleanup : orig line is 7, orig col is 2, <Newline>, PRE is false
+parameter_pack_cleanup : orig line is 9, orig col is 1, Text() '~', type is INV, PRE is false
+parameter_pack_cleanup : orig line is 9, orig col is 2, Text() 'TelegramIndex', type is WORD, PRE is false
+parameter_pack_cleanup : orig line is 9, orig col is 15, Text() '(', type is PAREN_OPEN, PRE is false
+parameter_pack_cleanup : orig line is 9, orig col is 16, Text() ')', type is PAREN_CLOSE, PRE is false
+parameter_pack_cleanup : orig line is 9, orig col is 17, <Newline>, PRE is false
+parameter_pack_cleanup : orig line is 10, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
+parameter_pack_cleanup : orig line is 10, orig col is 2, <Newline>, PRE is false
+parameter_pack_cleanup : orig line is 11, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
+parameter_pack_cleanup : orig line is 11, orig col is 2, <Newline>, PRE is false
+parameter_pack_cleanup : orig line is 13, orig col is 1, Text() 'const', type is QUALIFIER, PRE is false
+parameter_pack_cleanup : orig line is 13, orig col is 7, Text() 'char', type is TYPE, PRE is false
+parameter_pack_cleanup : orig line is 13, orig col is 11, Text() '*', type is PTR_TYPE, PRE is false
+parameter_pack_cleanup : orig line is 13, orig col is 13, Text() 'const', type is QUALIFIER, PRE is false
+parameter_pack_cleanup : orig line is 13, orig col is 19, Text() 'pTelName', type is WORD, PRE is false
+parameter_pack_cleanup : orig line is 13, orig col is 27, Text() ';', type is SEMICOLON, PRE is false
+parameter_pack_cleanup : orig line is 13, orig col is 28, <Newline>, PRE is false
+parameter_pack_cleanup : orig line is 14, orig col is 1, Text() 'unsigned', type is TYPE, PRE is false
+parameter_pack_cleanup : orig line is 14, orig col is 10, Text() 'long', type is TYPE, PRE is false
+parameter_pack_cleanup : orig line is 14, orig col is 15, Text() 'nTelIndex', type is WORD, PRE is false
+parameter_pack_cleanup : orig line is 14, orig col is 24, Text() ';', type is SEMICOLON, PRE is false
+parameter_pack_cleanup : orig line is 14, orig col is 25, <Newline>, PRE is false
+parameter_pack_cleanup : orig line is 15, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
+parameter_pack_cleanup : orig line is 15, orig col is 2, Text() ';', type is SEMICOLON, PRE is false
+parameter_pack_cleanup : orig line is 15, orig col is 3, <Newline>, PRE is false
+log_rule(enum_cleanup : rule is 'mod_enum_last_comma'
+newline_var_def_blk : orig line is 1, orig col is 1, Text() 'struct', type is STRUCT, PRE is false
+newline_var_def_blk : orig line is 15, orig col is 3, <Newline>, PRE is false
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/31.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/31.txt
new file mode 100644
index 00000000..515b6978
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/31.txt
@@ -0,0 +1,924 @@
+indent_text : orig line is 1, orig col is 1, Text() 'struct', type is STRUCT, PRE is false
+indent_text : orig line is 1, orig col is 1, column is 1, for 'struct'
+ chunk flags: [0xe0000:FORCE_SPACE,STMT_START,EXPR_START]
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 1, orig col is 1, Text() is 'struct', type is STRUCT
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+reindent_line : orig line is 1, orig col is 1, on 'struct' [STRUCT/NONE] => 1
+ [CallStack]
+indent_text : pc orig line is 1, orig col is 8, Text() is 'TelegramIndex', type is TYPE
+indent_text : orig line is 1, orig col is 8, Text() 'TelegramIndex', type is TYPE, PRE is false
+indent_text : orig line is 1, orig col is 8, column is 8, for 'TelegramIndex'
+ chunk flags: [0x0:]
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 1, orig col is 8, Text() is 'TelegramIndex', type is TYPE
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 1, orig col is 21, Text() is '', type is NEWLINE
+indent_text : orig line is 1, orig col is 21, <Newline>, PRE is false
+indent_text : orig line is 1, <Newline>
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 1, orig col is 21, Text() is '', type is NEWLINE
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : frm.pse_tos is 0, ...indent is 1
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 2, orig col is 1, Text() is '{', type is BRACE_OPEN
+indent_text : orig line is 2, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
+indent_text : orig line is 2, orig col is 1, column is 1, for '{'
+ chunk flags: [0x200000400:IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 2, orig col is 1, Text() is '{', type is BRACE_OPEN
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : frm.pse_tos is 1, ... indent is 9
+indent_text : orig line is 2, orig col is 1, Text() is '{', parent type is STRUCT
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+reindent_line : orig line is 2, orig col is 1, on '{' [BRACE_OPEN/STRUCT] => 1
+ [CallStack]
+indent_text : pc orig line is 2, orig col is 2, Text() is '', type is NEWLINE
+indent_text : orig line is 2, orig col is 2, <Newline>, PRE is false
+indent_text : orig line is 2, <Newline>
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 3, orig col is 1, Text() is 'TelegramIndex', type is FUNC_CLASS_DEF
+indent_text : orig line is 3, orig col is 1, Text() 'TelegramIndex', type is FUNC_CLASS_DEF, PRE is false
+indent_text : orig line is 3, orig col is 1, column is 1, for 'TelegramIndex'
+ chunk flags: [0xc0402:IN_STRUCT,IN_CLASS,STMT_START,EXPR_START]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+reindent_line : orig line is 3, orig col is 1, on 'TelegramIndex' [FUNC_CLASS_DEF/NONE] => 9
+ [CallStack]
+indent_text : pc orig line is 3, orig col is 14, Text() is '(', type is FPAREN_OPEN
+indent_text : orig line is 3, orig col is 14, Text() '(', type is FPAREN_OPEN, PRE is false
+indent_text : orig line is 3, orig col is 14, column is 22, for '('
+ chunk flags: [0x200000502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 2, ...indent is 23
+indent_text : frm.pse_tos is 2, ...indent is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 15, Text() is 'const', type is QUALIFIER
+indent_text : orig line is 3, orig col is 15, Text() 'const', type is QUALIFIER, PRE is false
+indent_text : orig line is 3, orig col is 15, column is 23, for 'const'
+ chunk flags: [0xa0512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,FORCE_SPACE,EXPR_START]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 21, Text() is 'char', type is TYPE
+indent_text : orig line is 3, orig col is 21, Text() 'char', type is TYPE, PRE is false
+indent_text : orig line is 3, orig col is 21, column is 29, for 'char'
+ chunk flags: [0x800512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,VAR_TYPE]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 25, Text() is '*', type is PTR_TYPE
+indent_text : orig line is 3, orig col is 25, Text() '*', type is PTR_TYPE, PRE is false
+indent_text : orig line is 3, orig col is 25, column is 33, for '*'
+ chunk flags: [0x200000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 27, Text() is 'pN', type is WORD
+indent_text : orig line is 3, orig col is 27, Text() 'pN', type is WORD, PRE is false
+indent_text : orig line is 3, orig col is 27, column is 35, for 'pN'
+ chunk flags: [0x1000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,VAR_DEF]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 29, Text() is ',', type is COMMA
+indent_text : orig line is 3, orig col is 29, Text() ',', type is COMMA, PRE is false
+indent_text : orig line is 3, orig col is 29, column is 37, for ','
+ chunk flags: [0x200000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 31, Text() is 'unsigned', type is TYPE
+indent_text : orig line is 3, orig col is 31, Text() 'unsigned', type is TYPE, PRE is false
+indent_text : orig line is 3, orig col is 31, column is 39, for 'unsigned'
+ chunk flags: [0x8a0512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,FORCE_SPACE,EXPR_START,VAR_TYPE]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 40, Text() is 'long', type is TYPE
+indent_text : orig line is 3, orig col is 40, Text() 'long', type is TYPE, PRE is false
+indent_text : orig line is 3, orig col is 40, column is 48, for 'long'
+ chunk flags: [0x820512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,FORCE_SPACE,VAR_TYPE]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 45, Text() is 'nI', type is WORD
+indent_text : orig line is 3, orig col is 45, Text() 'nI', type is WORD, PRE is false
+indent_text : orig line is 3, orig col is 45, column is 53, for 'nI'
+ chunk flags: [0x1000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,VAR_DEF]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 47, Text() is ')', type is FPAREN_CLOSE
+indent_text : orig line is 3, orig col is 47, Text() ')', type is FPAREN_CLOSE, PRE is false
+indent_text : orig line is 3, orig col is 47, column is 55, for ')'
+ chunk flags: [0x200000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 47, Text() is ')', type is FPAREN_CLOSE
+indent_text : pc orig line is 3, orig col is 47, Text() is ')', type is FPAREN_CLOSE
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 3, orig col is 49, Text() is ':', type is CONSTR_COLON
+indent_text : orig line is 3, orig col is 49, Text() ':', type is CONSTR_COLON, PRE is false
+indent_text : orig line is 3, orig col is 49, column is 57, for ':'
+ chunk flags: [0x200000502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 2, ...indent is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 3, orig col is 50, Text() is '', type is NEWLINE
+indent_text : orig line is 3, orig col is 50, <Newline>, PRE is false
+indent_text : orig line is 3, <Newline>
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 3, orig col is 50, Text() is '', type is NEWLINE
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 2, ...indent is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 4, orig col is 1, Text() is 'pTelName', type is FUNC_CTOR_VAR
+indent_text : orig line is 4, orig col is 1, Text() 'pTelName', type is FUNC_CTOR_VAR, PRE is false
+indent_text : orig line is 4, orig col is 1, column is 1, for 'pTelName'
+ chunk flags: [0xc0502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,STMT_START,EXPR_START]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 4, orig col is 1, Text() is 'pTelName', type is FUNC_CTOR_VAR
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+reindent_line : orig line is 4, orig col is 1, on 'pTelName' [FUNC_CTOR_VAR/NONE] => 17
+ [CallStack]
+indent_text : pc orig line is 4, orig col is 9, Text() is '(', type is FPAREN_OPEN
+indent_text : orig line is 4, orig col is 9, Text() '(', type is FPAREN_OPEN, PRE is false
+indent_text : orig line is 4, orig col is 9, column is 25, for '('
+ chunk flags: [0x200000502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 4, orig col is 9, Text() is '(', type is FPAREN_OPEN
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 3, ...indent is 26
+indent_text : frm.pse_tos is 3, ...indent is 26
+indent_text : frm.pse_tos is 3, ...indent_tmp is 26
+indent_text : pc orig line is 4, orig col is 10, Text() is 'pN', type is WORD
+indent_text : orig line is 4, orig col is 10, Text() 'pN', type is WORD, PRE is false
+indent_text : orig line is 4, orig col is 10, column is 26, for 'pN'
+ chunk flags: [0x80512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START]
+indent_text : frm.pse_tos is 3, ...indent_tmp is 26
+indent_text : frm.pse_tos is 3, ...indent_tmp is 26
+indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : orig line is 4, orig col is 12, Text() ')', type is FPAREN_CLOSE, PRE is false
+indent_text : orig line is 4, orig col is 12, column is 28, for ')'
+ chunk flags: [0x200000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 3, ...indent_tmp is 26
+indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 4, orig col is 13, Text() is ',', type is COMMA
+indent_text : orig line is 4, orig col is 13, Text() ',', type is COMMA, PRE is false
+indent_text : orig line is 4, orig col is 13, column is 29, for ','
+ chunk flags: [0x200000502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 4, orig col is 13, Text() is ',', type is COMMA
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 4, orig col is 14, Text() is '', type is NEWLINE
+indent_text : orig line is 4, orig col is 14, <Newline>, PRE is false
+indent_text : orig line is 4, <Newline>
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 4, orig col is 14, Text() is '', type is NEWLINE
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 2, ...indent is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 5, orig col is 1, Text() is 'nTelIndex', type is FUNC_CTOR_VAR
+indent_text : orig line is 5, orig col is 1, Text() 'nTelIndex', type is FUNC_CTOR_VAR, PRE is false
+indent_text : orig line is 5, orig col is 1, column is 1, for 'nTelIndex'
+ chunk flags: [0x80502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,EXPR_START]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 5, orig col is 1, Text() is 'nTelIndex', type is FUNC_CTOR_VAR
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+reindent_line : orig line is 5, orig col is 1, on 'nTelIndex' [FUNC_CTOR_VAR/NONE] => 17
+ [CallStack]
+indent_text : pc orig line is 5, orig col is 10, Text() is '(', type is FPAREN_OPEN
+indent_text : orig line is 5, orig col is 10, Text() '(', type is FPAREN_OPEN, PRE is false
+indent_text : orig line is 5, orig col is 10, column is 26, for '('
+ chunk flags: [0x200000502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 5, orig col is 10, Text() is '(', type is FPAREN_OPEN
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 3, ...indent is 27
+indent_text : frm.pse_tos is 3, ...indent is 27
+indent_text : frm.pse_tos is 3, ...indent_tmp is 27
+indent_text : pc orig line is 5, orig col is 11, Text() is 'n', type is WORD
+indent_text : orig line is 5, orig col is 11, Text() 'n', type is WORD, PRE is false
+indent_text : orig line is 5, orig col is 11, column is 27, for 'n'
+ chunk flags: [0x80512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START]
+indent_text : frm.pse_tos is 3, ...indent_tmp is 27
+indent_text : frm.pse_tos is 3, ...indent_tmp is 27
+indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : orig line is 5, orig col is 12, Text() ')', type is FPAREN_CLOSE, PRE is false
+indent_text : orig line is 5, orig col is 12, column is 28, for ')'
+ chunk flags: [0x200000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 3, ...indent_tmp is 27
+indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 5, orig col is 13, Text() is '', type is NEWLINE
+indent_text : orig line is 5, orig col is 13, <Newline>, PRE is false
+indent_text : orig line is 5, <Newline>
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 5, orig col is 13, Text() is '', type is NEWLINE
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 2, ...indent is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 6, orig col is 1, Text() is '{', type is BRACE_OPEN
+indent_text : orig line is 6, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
+indent_text : orig line is 6, orig col is 1, column is 1, for '{'
+ chunk flags: [0x280000402:IN_STRUCT,IN_CLASS,EMPTY_BODY,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 6, orig col is 1, Text() is '{', type is BRACE_OPEN
+indent_text : pc orig line is 6, orig col is 1, Text() is '{', type is BRACE_OPEN
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 2, ... indent is 17
+indent_text : orig line is 6, orig col is 1, Text() is '{', parent type is FUNC_CLASS_DEF
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+reindent_line : orig line is 6, orig col is 1, on '{' [BRACE_OPEN/FUNC_CLASS_DEF] => 9
+ [CallStack]
+indent_text : pc orig line is 6, orig col is 2, Text() is '', type is NEWLINE
+indent_text : orig line is 6, orig col is 2, <Newline>, PRE is false
+indent_text : orig line is 6, <Newline>
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 2, ...indent is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 7, orig col is 1, Text() is '}', type is BRACE_CLOSE
+indent_text : orig line is 7, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
+indent_text : orig line is 7, orig col is 1, column is 1, for '}'
+ chunk flags: [0x280000402:IN_STRUCT,IN_CLASS,EMPTY_BODY,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 7, orig col is 1, Text() is '}', type is BRACE_CLOSE
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 7, orig col is 1, Text() is '}', type is BRACE_CLOSE
+reindent_line : orig line is 7, orig col is 1, on '}' [BRACE_CLOSE/FUNC_CLASS_DEF] => 9
+ [CallStack]
+indent_text : pc orig line is 7, orig col is 2, Text() is '', type is NEWLINE
+indent_text : orig line is 7, orig col is 2, <Newline>, PRE is false
+indent_text : orig line is 7, <Newline>
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 9, orig col is 1, Text() is '~', type is DESTRUCTOR
+indent_text : orig line is 9, orig col is 1, Text() '~', type is DESTRUCTOR, PRE is false
+indent_text : orig line is 9, orig col is 1, column is 1, for '~'
+ chunk flags: [0x2000c0402:IN_STRUCT,IN_CLASS,STMT_START,EXPR_START,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+reindent_line : orig line is 9, orig col is 1, on '~' [DESTRUCTOR/FUNC_CLASS_DEF] => 9
+ [CallStack]
+indent_text : pc orig line is 9, orig col is 2, Text() is 'TelegramIndex', type is FUNC_CLASS_DEF
+indent_text : orig line is 9, orig col is 2, Text() 'TelegramIndex', type is FUNC_CLASS_DEF, PRE is false
+indent_text : orig line is 9, orig col is 2, column is 10, for 'TelegramIndex'
+ chunk flags: [0x80402:IN_STRUCT,IN_CLASS,EXPR_START]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 9, orig col is 15, Text() is '(', type is FPAREN_OPEN
+indent_text : orig line is 9, orig col is 15, Text() '(', type is FPAREN_OPEN, PRE is false
+indent_text : orig line is 9, orig col is 15, column is 23, for '('
+ chunk flags: [0x200000502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 2, ...indent is 24
+indent_text : frm.pse_tos is 2, ...indent is 24
+indent_text : frm.pse_tos is 2, ...indent_tmp is 24
+indent_text : pc orig line is 9, orig col is 16, Text() is ')', type is FPAREN_CLOSE
+indent_text : orig line is 9, orig col is 16, Text() ')', type is FPAREN_CLOSE, PRE is false
+indent_text : orig line is 9, orig col is 16, column is 24, for ')'
+ chunk flags: [0x200000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 24
+indent_text : pc orig line is 9, orig col is 16, Text() is ')', type is FPAREN_CLOSE
+indent_text : pc orig line is 9, orig col is 16, Text() is ')', type is FPAREN_CLOSE
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 9, orig col is 17, Text() is '', type is NEWLINE
+indent_text : orig line is 9, orig col is 17, <Newline>, PRE is false
+indent_text : orig line is 9, <Newline>
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 10, orig col is 1, Text() is '{', type is BRACE_OPEN
+indent_text : orig line is 10, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
+indent_text : orig line is 10, orig col is 1, column is 1, for '{'
+ chunk flags: [0x280000402:IN_STRUCT,IN_CLASS,EMPTY_BODY,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 2, ... indent is 17
+indent_text : orig line is 10, orig col is 1, Text() is '{', parent type is FUNC_CLASS_DEF
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+reindent_line : orig line is 10, orig col is 1, on '{' [BRACE_OPEN/FUNC_CLASS_DEF] => 9
+ [CallStack]
+indent_text : pc orig line is 10, orig col is 2, Text() is '', type is NEWLINE
+indent_text : orig line is 10, orig col is 2, <Newline>, PRE is false
+indent_text : orig line is 10, <Newline>
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 2, ...indent is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 11, orig col is 1, Text() is '}', type is BRACE_CLOSE
+indent_text : orig line is 11, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
+indent_text : orig line is 11, orig col is 1, column is 1, for '}'
+ chunk flags: [0x280000402:IN_STRUCT,IN_CLASS,EMPTY_BODY,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 11, orig col is 1, Text() is '}', type is BRACE_CLOSE
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 11, orig col is 1, Text() is '}', type is BRACE_CLOSE
+reindent_line : orig line is 11, orig col is 1, on '}' [BRACE_CLOSE/FUNC_CLASS_DEF] => 9
+ [CallStack]
+indent_text : pc orig line is 11, orig col is 2, Text() is '', type is NEWLINE
+indent_text : orig line is 11, orig col is 2, <Newline>, PRE is false
+indent_text : orig line is 11, <Newline>
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 13, orig col is 1, Text() is 'const', type is QUALIFIER
+indent_text : orig line is 13, orig col is 1, Text() 'const', type is QUALIFIER, PRE is false
+indent_text : orig line is 13, orig col is 1, column is 1, for 'const'
+ chunk flags: [0x8e0402:IN_STRUCT,IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+reindent_line : orig line is 13, orig col is 1, on 'const' [QUALIFIER/NONE] => 9
+ [CallStack]
+indent_text : pc orig line is 13, orig col is 7, Text() is 'char', type is TYPE
+indent_text : orig line is 13, orig col is 7, Text() 'char', type is TYPE, PRE is false
+indent_text : orig line is 13, orig col is 7, column is 15, for 'char'
+ chunk flags: [0x800402:IN_STRUCT,IN_CLASS,VAR_TYPE]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 13, orig col is 11, Text() is '*', type is PTR_TYPE
+indent_text : orig line is 13, orig col is 11, Text() '*', type is PTR_TYPE, PRE is false
+indent_text : orig line is 13, orig col is 11, column is 19, for '*'
+ chunk flags: [0x200800402:IN_STRUCT,IN_CLASS,VAR_TYPE,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 13, orig col is 13, Text() is 'const', type is QUALIFIER
+indent_text : orig line is 13, orig col is 13, Text() 'const', type is QUALIFIER, PRE is false
+indent_text : orig line is 13, orig col is 13, column is 21, for 'const'
+ chunk flags: [0x820402:IN_STRUCT,IN_CLASS,FORCE_SPACE,VAR_TYPE]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 13, orig col is 19, Text() is 'pTelName', type is WORD
+indent_text : orig line is 13, orig col is 19, Text() 'pTelName', type is WORD, PRE is false
+indent_text : orig line is 13, orig col is 19, column is 27, for 'pTelName'
+ chunk flags: [0x3000402:IN_STRUCT,IN_CLASS,VAR_DEF,VAR_1ST]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 13, orig col is 27, Text() is ';', type is SEMICOLON
+indent_text : orig line is 13, orig col is 27, Text() ';', type is SEMICOLON, PRE is false
+indent_text : orig line is 13, orig col is 27, column is 35, for ';'
+ chunk flags: [0x200000402:IN_STRUCT,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 13, orig col is 28, Text() is '', type is NEWLINE
+indent_text : orig line is 13, orig col is 28, <Newline>, PRE is false
+indent_text : orig line is 13, <Newline>
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 14, orig col is 1, Text() is 'unsigned', type is TYPE
+indent_text : orig line is 14, orig col is 1, Text() 'unsigned', type is TYPE, PRE is false
+indent_text : orig line is 14, orig col is 1, column is 1, for 'unsigned'
+ chunk flags: [0x8e0402:IN_STRUCT,IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+reindent_line : orig line is 14, orig col is 1, on 'unsigned' [TYPE/NONE] => 9
+ [CallStack]
+indent_text : pc orig line is 14, orig col is 10, Text() is 'long', type is TYPE
+indent_text : orig line is 14, orig col is 10, Text() 'long', type is TYPE, PRE is false
+indent_text : orig line is 14, orig col is 10, column is 18, for 'long'
+ chunk flags: [0x820402:IN_STRUCT,IN_CLASS,FORCE_SPACE,VAR_TYPE]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 14, orig col is 15, Text() is 'nTelIndex', type is WORD
+indent_text : orig line is 14, orig col is 15, Text() 'nTelIndex', type is WORD, PRE is false
+indent_text : orig line is 14, orig col is 15, column is 23, for 'nTelIndex'
+ chunk flags: [0x3000402:IN_STRUCT,IN_CLASS,VAR_DEF,VAR_1ST]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 14, orig col is 24, Text() is ';', type is SEMICOLON
+indent_text : orig line is 14, orig col is 24, Text() ';', type is SEMICOLON, PRE is false
+indent_text : orig line is 14, orig col is 24, column is 32, for ';'
+ chunk flags: [0x200000402:IN_STRUCT,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 14, orig col is 25, Text() is '', type is NEWLINE
+indent_text : orig line is 14, orig col is 25, <Newline>, PRE is false
+indent_text : orig line is 14, <Newline>
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 15, orig col is 1, Text() is '}', type is BRACE_CLOSE
+indent_text : orig line is 15, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
+indent_text : orig line is 15, orig col is 1, column is 1, for '}'
+ chunk flags: [0x200000402:IN_STRUCT,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 15, orig col is 1, Text() is '}', type is BRACE_CLOSE
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 15, orig col is 1, Text() is '}', type is BRACE_CLOSE
+reindent_line : orig line is 15, orig col is 1, on '}' [BRACE_CLOSE/STRUCT] => 1
+ [CallStack]
+indent_text : pc orig line is 15, orig col is 2, Text() is ';', type is SEMICOLON
+indent_text : orig line is 15, orig col is 2, Text() ';', type is SEMICOLON, PRE is false
+indent_text : orig line is 15, orig col is 2, column is 2, for ';'
+ chunk flags: [0x200000000:PUNCTUATOR]
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 15, orig col is 2, Text() is ';', type is SEMICOLON
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 15, orig col is 3, Text() is '', type is NEWLINE
+indent_text : orig line is 15, orig col is 3, <Newline>, PRE is false
+indent_text : orig line is 15, <Newline>
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 15, orig col is 3, Text() is '', type is NEWLINE
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : frm.pse_tos is 0, ...indent is 1
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 0, orig col is 0, Text() is '', type is NONE
+indent_text : before quick_align_again
+reindent_line : orig line is 2, orig col is 1, on '{' [BRACE_OPEN/STRUCT] => 1
+ [CallStack]
+reindent_line : orig line is 3, orig col is 1, on 'TelegramIndex' [FUNC_CLASS_DEF/NONE] => 9
+ [CallStack]
+reindent_line : orig line is 4, orig col is 1, on 'pTelName' [FUNC_CTOR_VAR/NONE] => 17
+ [CallStack]
+reindent_line : orig line is 5, orig col is 1, on 'nTelIndex' [FUNC_CTOR_VAR/NONE] => 17
+ [CallStack]
+reindent_line : orig line is 6, orig col is 1, on '{' [BRACE_OPEN/FUNC_CLASS_DEF] => 9
+ [CallStack]
+reindent_line : orig line is 7, orig col is 1, on '}' [BRACE_CLOSE/FUNC_CLASS_DEF] => 9
+ [CallStack]
+reindent_line : orig line is 9, orig col is 1, on '~' [DESTRUCTOR/FUNC_CLASS_DEF] => 9
+ [CallStack]
+reindent_line : orig line is 10, orig col is 1, on '{' [BRACE_OPEN/FUNC_CLASS_DEF] => 9
+ [CallStack]
+reindent_line : orig line is 11, orig col is 1, on '}' [BRACE_CLOSE/FUNC_CLASS_DEF] => 9
+ [CallStack]
+reindent_line : orig line is 13, orig col is 1, on 'const' [QUALIFIER/NONE] => 9
+ [CallStack]
+reindent_line : orig line is 14, orig col is 1, on 'unsigned' [TYPE/NONE] => 9
+ [CallStack]
+reindent_line : orig line is 15, orig col is 1, on '}' [BRACE_CLOSE/STRUCT] => 1
+ [CallStack]
+indent_text : after quick_align_again
+indent_text : orig line is 1, orig col is 1, Text() 'struct', type is STRUCT, PRE is false
+indent_text : orig line is 1, orig col is 1, column is 1, for 'struct'
+ chunk flags: [0xe0000:FORCE_SPACE,STMT_START,EXPR_START]
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 1, orig col is 1, Text() is 'struct', type is STRUCT
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+reindent_line : orig line is 1, orig col is 1, on 'struct' [STRUCT/NONE] => 1
+ [CallStack]
+indent_text : pc orig line is 1, orig col is 8, Text() is 'TelegramIndex', type is TYPE
+indent_text : orig line is 1, orig col is 8, Text() 'TelegramIndex', type is TYPE, PRE is false
+indent_text : orig line is 1, orig col is 8, column is 8, for 'TelegramIndex'
+ chunk flags: [0x0:]
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 1, orig col is 8, Text() is 'TelegramIndex', type is TYPE
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 1, orig col is 21, Text() is '', type is NEWLINE
+indent_text : orig line is 1, orig col is 21, <Newline>, PRE is false
+indent_text : orig line is 1, <Newline>
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 1, orig col is 21, Text() is '', type is NEWLINE
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : frm.pse_tos is 0, ...indent is 1
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 2, orig col is 1, Text() is '{', type is BRACE_OPEN
+indent_text : orig line is 2, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
+indent_text : orig line is 2, orig col is 1, column is 1, for '{'
+ chunk flags: [0x200000400:IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 2, orig col is 1, Text() is '{', type is BRACE_OPEN
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : frm.pse_tos is 1, ... indent is 9
+indent_text : orig line is 2, orig col is 1, Text() is '{', parent type is STRUCT
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+reindent_line : orig line is 2, orig col is 1, on '{' [BRACE_OPEN/STRUCT] => 1
+ [CallStack]
+indent_text : pc orig line is 2, orig col is 2, Text() is '', type is NEWLINE
+indent_text : orig line is 2, orig col is 2, <Newline>, PRE is false
+indent_text : orig line is 2, <Newline>
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 3, orig col is 1, Text() is 'TelegramIndex', type is FUNC_CLASS_DEF
+indent_text : orig line is 3, orig col is 1, Text() 'TelegramIndex', type is FUNC_CLASS_DEF, PRE is false
+indent_text : orig line is 3, orig col is 1, column is 9, for 'TelegramIndex'
+ chunk flags: [0xc0402:IN_STRUCT,IN_CLASS,STMT_START,EXPR_START]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+reindent_line : orig line is 3, orig col is 1, on 'TelegramIndex' [FUNC_CLASS_DEF/NONE] => 9
+ [CallStack]
+indent_text : pc orig line is 3, orig col is 14, Text() is '(', type is FPAREN_OPEN
+indent_text : orig line is 3, orig col is 14, Text() '(', type is FPAREN_OPEN, PRE is false
+indent_text : orig line is 3, orig col is 14, column is 22, for '('
+ chunk flags: [0x200000502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 2, ...indent is 23
+indent_text : frm.pse_tos is 2, ...indent is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 15, Text() is 'const', type is QUALIFIER
+indent_text : orig line is 3, orig col is 15, Text() 'const', type is QUALIFIER, PRE is false
+indent_text : orig line is 3, orig col is 15, column is 23, for 'const'
+ chunk flags: [0xa0512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,FORCE_SPACE,EXPR_START]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 21, Text() is 'char', type is TYPE
+indent_text : orig line is 3, orig col is 21, Text() 'char', type is TYPE, PRE is false
+indent_text : orig line is 3, orig col is 21, column is 29, for 'char'
+ chunk flags: [0x800512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,VAR_TYPE]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 25, Text() is '*', type is PTR_TYPE
+indent_text : orig line is 3, orig col is 25, Text() '*', type is PTR_TYPE, PRE is false
+indent_text : orig line is 3, orig col is 25, column is 33, for '*'
+ chunk flags: [0x200000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 27, Text() is 'pN', type is WORD
+indent_text : orig line is 3, orig col is 27, Text() 'pN', type is WORD, PRE is false
+indent_text : orig line is 3, orig col is 27, column is 35, for 'pN'
+ chunk flags: [0x1000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,VAR_DEF]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 29, Text() is ',', type is COMMA
+indent_text : orig line is 3, orig col is 29, Text() ',', type is COMMA, PRE is false
+indent_text : orig line is 3, orig col is 29, column is 37, for ','
+ chunk flags: [0x200000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 31, Text() is 'unsigned', type is TYPE
+indent_text : orig line is 3, orig col is 31, Text() 'unsigned', type is TYPE, PRE is false
+indent_text : orig line is 3, orig col is 31, column is 39, for 'unsigned'
+ chunk flags: [0x8a0512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,FORCE_SPACE,EXPR_START,VAR_TYPE]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 40, Text() is 'long', type is TYPE
+indent_text : orig line is 3, orig col is 40, Text() 'long', type is TYPE, PRE is false
+indent_text : orig line is 3, orig col is 40, column is 48, for 'long'
+ chunk flags: [0x820512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,FORCE_SPACE,VAR_TYPE]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 45, Text() is 'nI', type is WORD
+indent_text : orig line is 3, orig col is 45, Text() 'nI', type is WORD, PRE is false
+indent_text : orig line is 3, orig col is 45, column is 53, for 'nI'
+ chunk flags: [0x1000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,VAR_DEF]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 47, Text() is ')', type is FPAREN_CLOSE
+indent_text : orig line is 3, orig col is 47, Text() ')', type is FPAREN_CLOSE, PRE is false
+indent_text : orig line is 3, orig col is 47, column is 55, for ')'
+ chunk flags: [0x200000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 23
+indent_text : pc orig line is 3, orig col is 47, Text() is ')', type is FPAREN_CLOSE
+indent_text : pc orig line is 3, orig col is 47, Text() is ')', type is FPAREN_CLOSE
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 3, orig col is 49, Text() is ':', type is CONSTR_COLON
+indent_text : orig line is 3, orig col is 49, Text() ':', type is CONSTR_COLON, PRE is false
+indent_text : orig line is 3, orig col is 49, column is 57, for ':'
+ chunk flags: [0x200000502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 2, ...indent is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 3, orig col is 50, Text() is '', type is NEWLINE
+indent_text : orig line is 3, orig col is 50, <Newline>, PRE is false
+indent_text : orig line is 3, <Newline>
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 3, orig col is 50, Text() is '', type is NEWLINE
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 2, ...indent is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 4, orig col is 1, Text() is 'pTelName', type is FUNC_CTOR_VAR
+indent_text : orig line is 4, orig col is 1, Text() 'pTelName', type is FUNC_CTOR_VAR, PRE is false
+indent_text : orig line is 4, orig col is 1, column is 17, for 'pTelName'
+ chunk flags: [0xc0502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,STMT_START,EXPR_START]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 4, orig col is 1, Text() is 'pTelName', type is FUNC_CTOR_VAR
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+reindent_line : orig line is 4, orig col is 1, on 'pTelName' [FUNC_CTOR_VAR/NONE] => 17
+ [CallStack]
+indent_text : pc orig line is 4, orig col is 9, Text() is '(', type is FPAREN_OPEN
+indent_text : orig line is 4, orig col is 9, Text() '(', type is FPAREN_OPEN, PRE is false
+indent_text : orig line is 4, orig col is 9, column is 25, for '('
+ chunk flags: [0x200000502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 4, orig col is 9, Text() is '(', type is FPAREN_OPEN
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 3, ...indent is 26
+indent_text : frm.pse_tos is 3, ...indent is 26
+indent_text : frm.pse_tos is 3, ...indent_tmp is 26
+indent_text : pc orig line is 4, orig col is 10, Text() is 'pN', type is WORD
+indent_text : orig line is 4, orig col is 10, Text() 'pN', type is WORD, PRE is false
+indent_text : orig line is 4, orig col is 10, column is 26, for 'pN'
+ chunk flags: [0x80512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START]
+indent_text : frm.pse_tos is 3, ...indent_tmp is 26
+indent_text : frm.pse_tos is 3, ...indent_tmp is 26
+indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : orig line is 4, orig col is 12, Text() ')', type is FPAREN_CLOSE, PRE is false
+indent_text : orig line is 4, orig col is 12, column is 28, for ')'
+ chunk flags: [0x200000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 3, ...indent_tmp is 26
+indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : pc orig line is 4, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 4, orig col is 13, Text() is ',', type is COMMA
+indent_text : orig line is 4, orig col is 13, Text() ',', type is COMMA, PRE is false
+indent_text : orig line is 4, orig col is 13, column is 29, for ','
+ chunk flags: [0x200000502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 4, orig col is 13, Text() is ',', type is COMMA
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 4, orig col is 14, Text() is '', type is NEWLINE
+indent_text : orig line is 4, orig col is 14, <Newline>, PRE is false
+indent_text : orig line is 4, <Newline>
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 4, orig col is 14, Text() is '', type is NEWLINE
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 2, ...indent is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 5, orig col is 1, Text() is 'nTelIndex', type is FUNC_CTOR_VAR
+indent_text : orig line is 5, orig col is 1, Text() 'nTelIndex', type is FUNC_CTOR_VAR, PRE is false
+indent_text : orig line is 5, orig col is 1, column is 17, for 'nTelIndex'
+ chunk flags: [0x80502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,EXPR_START]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 5, orig col is 1, Text() is 'nTelIndex', type is FUNC_CTOR_VAR
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+reindent_line : orig line is 5, orig col is 1, on 'nTelIndex' [FUNC_CTOR_VAR/NONE] => 17
+ [CallStack]
+indent_text : pc orig line is 5, orig col is 10, Text() is '(', type is FPAREN_OPEN
+indent_text : orig line is 5, orig col is 10, Text() '(', type is FPAREN_OPEN, PRE is false
+indent_text : orig line is 5, orig col is 10, column is 26, for '('
+ chunk flags: [0x200000502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 5, orig col is 10, Text() is '(', type is FPAREN_OPEN
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 3, ...indent is 27
+indent_text : frm.pse_tos is 3, ...indent is 27
+indent_text : frm.pse_tos is 3, ...indent_tmp is 27
+indent_text : pc orig line is 5, orig col is 11, Text() is 'n', type is WORD
+indent_text : orig line is 5, orig col is 11, Text() 'n', type is WORD, PRE is false
+indent_text : orig line is 5, orig col is 11, column is 27, for 'n'
+ chunk flags: [0x80512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START]
+indent_text : frm.pse_tos is 3, ...indent_tmp is 27
+indent_text : frm.pse_tos is 3, ...indent_tmp is 27
+indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : orig line is 5, orig col is 12, Text() ')', type is FPAREN_CLOSE, PRE is false
+indent_text : orig line is 5, orig col is 12, column is 28, for ')'
+ chunk flags: [0x200000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 3, ...indent_tmp is 27
+indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : pc orig line is 5, orig col is 12, Text() is ')', type is FPAREN_CLOSE
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 5, orig col is 13, Text() is '', type is NEWLINE
+indent_text : orig line is 5, orig col is 13, <Newline>, PRE is false
+indent_text : orig line is 5, <Newline>
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 5, orig col is 13, Text() is '', type is NEWLINE
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 2, ...indent is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 6, orig col is 1, Text() is '{', type is BRACE_OPEN
+indent_text : orig line is 6, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
+indent_text : orig line is 6, orig col is 1, column is 9, for '{'
+ chunk flags: [0x280000402:IN_STRUCT,IN_CLASS,EMPTY_BODY,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 6, orig col is 1, Text() is '{', type is BRACE_OPEN
+indent_text : pc orig line is 6, orig col is 1, Text() is '{', type is BRACE_OPEN
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 2, ... indent is 17
+indent_text : orig line is 6, orig col is 1, Text() is '{', parent type is FUNC_CLASS_DEF
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+reindent_line : orig line is 6, orig col is 1, on '{' [BRACE_OPEN/FUNC_CLASS_DEF] => 9
+ [CallStack]
+indent_text : pc orig line is 6, orig col is 2, Text() is '', type is NEWLINE
+indent_text : orig line is 6, orig col is 2, <Newline>, PRE is false
+indent_text : orig line is 6, <Newline>
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 2, ...indent is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 7, orig col is 1, Text() is '}', type is BRACE_CLOSE
+indent_text : orig line is 7, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
+indent_text : orig line is 7, orig col is 1, column is 9, for '}'
+ chunk flags: [0x280000402:IN_STRUCT,IN_CLASS,EMPTY_BODY,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 7, orig col is 1, Text() is '}', type is BRACE_CLOSE
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 7, orig col is 1, Text() is '}', type is BRACE_CLOSE
+reindent_line : orig line is 7, orig col is 1, on '}' [BRACE_CLOSE/FUNC_CLASS_DEF] => 9
+ [CallStack]
+indent_text : pc orig line is 7, orig col is 2, Text() is '', type is NEWLINE
+indent_text : orig line is 7, orig col is 2, <Newline>, PRE is false
+indent_text : orig line is 7, <Newline>
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 9, orig col is 1, Text() is '~', type is DESTRUCTOR
+indent_text : orig line is 9, orig col is 1, Text() '~', type is DESTRUCTOR, PRE is false
+indent_text : orig line is 9, orig col is 1, column is 9, for '~'
+ chunk flags: [0x2000c0402:IN_STRUCT,IN_CLASS,STMT_START,EXPR_START,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+reindent_line : orig line is 9, orig col is 1, on '~' [DESTRUCTOR/FUNC_CLASS_DEF] => 9
+ [CallStack]
+indent_text : pc orig line is 9, orig col is 2, Text() is 'TelegramIndex', type is FUNC_CLASS_DEF
+indent_text : orig line is 9, orig col is 2, Text() 'TelegramIndex', type is FUNC_CLASS_DEF, PRE is false
+indent_text : orig line is 9, orig col is 2, column is 10, for 'TelegramIndex'
+ chunk flags: [0x80402:IN_STRUCT,IN_CLASS,EXPR_START]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 9, orig col is 15, Text() is '(', type is FPAREN_OPEN
+indent_text : orig line is 9, orig col is 15, Text() '(', type is FPAREN_OPEN, PRE is false
+indent_text : orig line is 9, orig col is 15, column is 23, for '('
+ chunk flags: [0x200000502:IN_STRUCT,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 2, ...indent is 24
+indent_text : frm.pse_tos is 2, ...indent is 24
+indent_text : frm.pse_tos is 2, ...indent_tmp is 24
+indent_text : pc orig line is 9, orig col is 16, Text() is ')', type is FPAREN_CLOSE
+indent_text : orig line is 9, orig col is 16, Text() ')', type is FPAREN_CLOSE, PRE is false
+indent_text : orig line is 9, orig col is 16, column is 24, for ')'
+ chunk flags: [0x200000512:IN_STRUCT,IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 24
+indent_text : pc orig line is 9, orig col is 16, Text() is ')', type is FPAREN_CLOSE
+indent_text : pc orig line is 9, orig col is 16, Text() is ')', type is FPAREN_CLOSE
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 9, orig col is 17, Text() is '', type is NEWLINE
+indent_text : orig line is 9, orig col is 17, <Newline>, PRE is false
+indent_text : orig line is 9, <Newline>
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 10, orig col is 1, Text() is '{', type is BRACE_OPEN
+indent_text : orig line is 10, orig col is 1, Text() '{', type is BRACE_OPEN, PRE is false
+indent_text : orig line is 10, orig col is 1, column is 9, for '{'
+ chunk flags: [0x280000402:IN_STRUCT,IN_CLASS,EMPTY_BODY,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 2, ... indent is 17
+indent_text : orig line is 10, orig col is 1, Text() is '{', parent type is FUNC_CLASS_DEF
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+reindent_line : orig line is 10, orig col is 1, on '{' [BRACE_OPEN/FUNC_CLASS_DEF] => 9
+ [CallStack]
+indent_text : pc orig line is 10, orig col is 2, Text() is '', type is NEWLINE
+indent_text : orig line is 10, orig col is 2, <Newline>, PRE is false
+indent_text : orig line is 10, <Newline>
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : frm.pse_tos is 2, ...indent is 17
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 11, orig col is 1, Text() is '}', type is BRACE_CLOSE
+indent_text : orig line is 11, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
+indent_text : orig line is 11, orig col is 1, column is 9, for '}'
+ chunk flags: [0x280000402:IN_STRUCT,IN_CLASS,EMPTY_BODY,PUNCTUATOR]
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 11, orig col is 1, Text() is '}', type is BRACE_CLOSE
+indent_text : frm.pse_tos is 2, ...indent_tmp is 17
+indent_text : pc orig line is 11, orig col is 1, Text() is '}', type is BRACE_CLOSE
+reindent_line : orig line is 11, orig col is 1, on '}' [BRACE_CLOSE/FUNC_CLASS_DEF] => 9
+ [CallStack]
+indent_text : pc orig line is 11, orig col is 2, Text() is '', type is NEWLINE
+indent_text : orig line is 11, orig col is 2, <Newline>, PRE is false
+indent_text : orig line is 11, <Newline>
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 13, orig col is 1, Text() is 'const', type is QUALIFIER
+indent_text : orig line is 13, orig col is 1, Text() 'const', type is QUALIFIER, PRE is false
+indent_text : orig line is 13, orig col is 1, column is 9, for 'const'
+ chunk flags: [0x8e0402:IN_STRUCT,IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+reindent_line : orig line is 13, orig col is 1, on 'const' [QUALIFIER/NONE] => 9
+ [CallStack]
+indent_text : pc orig line is 13, orig col is 7, Text() is 'char', type is TYPE
+indent_text : orig line is 13, orig col is 7, Text() 'char', type is TYPE, PRE is false
+indent_text : orig line is 13, orig col is 7, column is 15, for 'char'
+ chunk flags: [0x800402:IN_STRUCT,IN_CLASS,VAR_TYPE]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 13, orig col is 11, Text() is '*', type is PTR_TYPE
+indent_text : orig line is 13, orig col is 11, Text() '*', type is PTR_TYPE, PRE is false
+indent_text : orig line is 13, orig col is 11, column is 19, for '*'
+ chunk flags: [0x200800402:IN_STRUCT,IN_CLASS,VAR_TYPE,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 13, orig col is 13, Text() is 'const', type is QUALIFIER
+indent_text : orig line is 13, orig col is 13, Text() 'const', type is QUALIFIER, PRE is false
+indent_text : orig line is 13, orig col is 13, column is 21, for 'const'
+ chunk flags: [0x820402:IN_STRUCT,IN_CLASS,FORCE_SPACE,VAR_TYPE]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 13, orig col is 19, Text() is 'pTelName', type is WORD
+indent_text : orig line is 13, orig col is 19, Text() 'pTelName', type is WORD, PRE is false
+indent_text : orig line is 13, orig col is 19, column is 27, for 'pTelName'
+ chunk flags: [0x3000402:IN_STRUCT,IN_CLASS,VAR_DEF,VAR_1ST]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 13, orig col is 27, Text() is ';', type is SEMICOLON
+indent_text : orig line is 13, orig col is 27, Text() ';', type is SEMICOLON, PRE is false
+indent_text : orig line is 13, orig col is 27, column is 35, for ';'
+ chunk flags: [0x200000402:IN_STRUCT,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 13, orig col is 28, Text() is '', type is NEWLINE
+indent_text : orig line is 13, orig col is 28, <Newline>, PRE is false
+indent_text : orig line is 13, <Newline>
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 14, orig col is 1, Text() is 'unsigned', type is TYPE
+indent_text : orig line is 14, orig col is 1, Text() 'unsigned', type is TYPE, PRE is false
+indent_text : orig line is 14, orig col is 1, column is 9, for 'unsigned'
+ chunk flags: [0x8e0402:IN_STRUCT,IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+reindent_line : orig line is 14, orig col is 1, on 'unsigned' [TYPE/NONE] => 9
+ [CallStack]
+indent_text : pc orig line is 14, orig col is 10, Text() is 'long', type is TYPE
+indent_text : orig line is 14, orig col is 10, Text() 'long', type is TYPE, PRE is false
+indent_text : orig line is 14, orig col is 10, column is 18, for 'long'
+ chunk flags: [0x820402:IN_STRUCT,IN_CLASS,FORCE_SPACE,VAR_TYPE]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 14, orig col is 15, Text() is 'nTelIndex', type is WORD
+indent_text : orig line is 14, orig col is 15, Text() 'nTelIndex', type is WORD, PRE is false
+indent_text : orig line is 14, orig col is 15, column is 23, for 'nTelIndex'
+ chunk flags: [0x3000402:IN_STRUCT,IN_CLASS,VAR_DEF,VAR_1ST]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 14, orig col is 24, Text() is ';', type is SEMICOLON
+indent_text : orig line is 14, orig col is 24, Text() ';', type is SEMICOLON, PRE is false
+indent_text : orig line is 14, orig col is 24, column is 32, for ';'
+ chunk flags: [0x200000402:IN_STRUCT,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 14, orig col is 25, Text() is '', type is NEWLINE
+indent_text : orig line is 14, orig col is 25, <Newline>, PRE is false
+indent_text : orig line is 14, <Newline>
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : frm.pse_tos is 1, ...indent is 9
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 15, orig col is 1, Text() is '}', type is BRACE_CLOSE
+indent_text : orig line is 15, orig col is 1, Text() '}', type is BRACE_CLOSE, PRE is false
+indent_text : orig line is 15, orig col is 1, column is 1, for '}'
+ chunk flags: [0x200000402:IN_STRUCT,IN_CLASS,PUNCTUATOR]
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 15, orig col is 1, Text() is '}', type is BRACE_CLOSE
+indent_text : frm.pse_tos is 1, ...indent_tmp is 9
+indent_text : pc orig line is 15, orig col is 1, Text() is '}', type is BRACE_CLOSE
+reindent_line : orig line is 15, orig col is 1, on '}' [BRACE_CLOSE/STRUCT] => 1
+ [CallStack]
+indent_text : pc orig line is 15, orig col is 2, Text() is ';', type is SEMICOLON
+indent_text : orig line is 15, orig col is 2, Text() ';', type is SEMICOLON, PRE is false
+indent_text : orig line is 15, orig col is 2, column is 2, for ';'
+ chunk flags: [0x200000000:PUNCTUATOR]
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 15, orig col is 2, Text() is ';', type is SEMICOLON
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 15, orig col is 3, Text() is '', type is NEWLINE
+indent_text : orig line is 15, orig col is 3, <Newline>, PRE is false
+indent_text : orig line is 15, <Newline>
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 15, orig col is 3, Text() is '', type is NEWLINE
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : frm.pse_tos is 0, ...indent is 1
+indent_text : frm.pse_tos is 0, ...indent_tmp is 1
+indent_text : pc orig line is 0, orig col is 0, Text() is '', type is NONE
+indent_text : before quick_align_again
+reindent_line : orig line is 2, orig col is 1, on '{' [BRACE_OPEN/STRUCT] => 1
+ [CallStack]
+reindent_line : orig line is 3, orig col is 1, on 'TelegramIndex' [FUNC_CLASS_DEF/NONE] => 9
+ [CallStack]
+reindent_line : orig line is 4, orig col is 1, on 'pTelName' [FUNC_CTOR_VAR/NONE] => 17
+ [CallStack]
+reindent_line : orig line is 5, orig col is 1, on 'nTelIndex' [FUNC_CTOR_VAR/NONE] => 17
+ [CallStack]
+reindent_line : orig line is 6, orig col is 1, on '{' [BRACE_OPEN/FUNC_CLASS_DEF] => 9
+ [CallStack]
+reindent_line : orig line is 7, orig col is 1, on '}' [BRACE_CLOSE/FUNC_CLASS_DEF] => 9
+ [CallStack]
+reindent_line : orig line is 9, orig col is 1, on '~' [DESTRUCTOR/FUNC_CLASS_DEF] => 9
+ [CallStack]
+reindent_line : orig line is 10, orig col is 1, on '{' [BRACE_OPEN/FUNC_CLASS_DEF] => 9
+ [CallStack]
+reindent_line : orig line is 11, orig col is 1, on '}' [BRACE_CLOSE/FUNC_CLASS_DEF] => 9
+ [CallStack]
+reindent_line : orig line is 13, orig col is 1, on 'const' [QUALIFIER/NONE] => 9
+ [CallStack]
+reindent_line : orig line is 14, orig col is 1, on 'unsigned' [TYPE/NONE] => 9
+ [CallStack]
+reindent_line : orig line is 15, orig col is 1, on '}' [BRACE_CLOSE/STRUCT] => 1
+ [CallStack]
+indent_text : after quick_align_again
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/36.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/36.txt
index ed6495d5..ed6495d5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/36.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/36.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/66.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/66.txt
new file mode 100644
index 00000000..7ce67542
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/66.txt
@@ -0,0 +1,839 @@
+space_text : orig line is 1, orig col is 1, 'struct' type is STRUCT
+space_text : back-to-back words need a space: pc->Text() 'struct', next->Text() 'TelegramIndex'
+space_text : orig line is 1, orig col is 1, pc-Text() 'struct', type is STRUCT
+do_space : orig line 1, orig col 1, first text 'struct', type STRUCT
+do_space : first orig line is 1, orig col is 1, Text() is 'struct', [STRUCT/NONE] <===>
+ second orig line is 1, orig col is 8, Text() is 'TelegramIndex', [TYPE/STRUCT] : rule ADD from add_space_table @ 236.[ ]
+ensure_force_space : force between 'struct' and 'TelegramIndex'
+space_text : orig line is 1, orig col is 1, pc-Text() 'struct', type is STRUCT
+space_text : rule = ADD @ 1 => 8
+space_text : orig line is 1, orig col is 8, 'TelegramIndex' type is TYPE
+space_text : orig line is 1, orig col is 8, pc-Text() 'TelegramIndex', type is TYPE
+do_space : orig line 1, orig col 8, first text 'TelegramIndex', type TYPE
+space_text : orig line is 1, orig col is 8, pc-Text() 'TelegramIndex', type is TYPE
+space_text : rule = REMOVE @ 0 => 21
+space_text : orig line is 1, orig col is 21, <Newline>, nl is 1
+space_text : orig line is 2, orig col is 1, '{' type is BRACE_OPEN
+space_text : orig line is 2, orig col is 1, pc-Text() '{', type is BRACE_OPEN
+do_space : orig line 2, orig col 1, first text '{', type BRACE_OPEN
+space_text : orig line is 2, orig col is 1, pc-Text() '{', type is BRACE_OPEN
+space_text : rule = REMOVE @ 0 => 2
+space_text : orig line is 2, orig col is 2, <Newline>, nl is 1
+space_text : orig line is 3, orig col is 1, 'TelegramIndex' type is FUNC_CLASS_DEF
+space_text : orig line is 3, orig col is 1, pc-Text() 'TelegramIndex', type is FUNC_CLASS_DEF
+do_space : orig line 3, orig col 1, first text 'TelegramIndex', type FUNC_CLASS_DEF
+do_space : first orig line is 3, orig col is 1, Text() is 'TelegramIndex', [FUNC_CLASS_DEF/NONE] <===>
+ second orig line is 3, orig col is 14, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] : rule sp_func_class_paren[ ]
+space_text : orig line is 3, orig col is 1, pc-Text() 'TelegramIndex', type is FUNC_CLASS_DEF
+space_text : rule = IGNORE @ 0 => 14
+space_text : orig line is 3, orig col is 14, '(' type is FPAREN_OPEN
+space_text : orig line is 3, orig col is 14, pc-Text() '(', type is FPAREN_OPEN
+do_space : orig line 3, orig col 14, first text '(', type FPAREN_OPEN
+do_space : first orig line is 3, orig col is 14, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] <===>
+ second orig line is 3, orig col is 15, Text() is 'const', [QUALIFIER/NONE] : rule sp_inside_fparen[ ]
+space_text : orig line is 3, orig col is 14, pc-Text() '(', type is FPAREN_OPEN
+space_text : rule = IGNORE @ 0 => 15
+space_text : orig line is 3, orig col is 15, 'const' type is QUALIFIER
+space_text : back-to-back words need a space: pc->Text() 'const', next->Text() 'char'
+space_text : orig line is 3, orig col is 15, pc-Text() 'const', type is QUALIFIER
+do_space : orig line 3, orig col 15, first text 'const', type QUALIFIER
+do_space : first orig line is 3, orig col is 15, Text() is 'const', [QUALIFIER/NONE] <===>
+ second orig line is 3, orig col is 21, Text() is 'char', [TYPE/NONE] : rule sp_after_type[ ]
+ensure_force_space : force between 'const' and 'char'
+space_text : orig line is 3, orig col is 15, pc-Text() 'const', type is QUALIFIER
+space_text : rule = FORCE @ 1 => 21
+space_text : orig line is 3, orig col is 21, 'char' type is TYPE
+space_text : orig line is 3, orig col is 21, pc-Text() 'char', type is TYPE
+do_space : orig line 3, orig col 21, first text 'char', type TYPE
+do_space : first orig line is 3, orig col is 21, Text() is 'char', [TYPE/NONE] <===>
+ second orig line is 3, orig col is 25, Text() is '*', [PTR_TYPE/NONE] : rule IGNORE[ ]
+space_text : orig line is 3, orig col is 21, pc-Text() 'char', type is TYPE
+space_text : rule = IGNORE @ 0 => 25
+space_text : orig line is 3, orig col is 25, '*' type is PTR_TYPE
+space_text : orig line is 3, orig col is 25, pc-Text() '*', type is PTR_TYPE
+do_space : orig line 3, orig col 25, first text '*', type PTR_TYPE
+do_space : first orig line is 3, orig col is 25, Text() is '*', [PTR_TYPE/NONE] <===>
+ second orig line is 3, orig col is 27, Text() is 'pN', [WORD/NONE] : rule sp_after_ptr_star[ ]
+space_text : orig line is 3, orig col is 25, pc-Text() '*', type is PTR_TYPE
+space_text : rule = IGNORE @ 1 => 27
+space_text : orig line is 3, orig col is 27, 'pN' type is WORD
+space_text : orig line is 3, orig col is 27, pc-Text() 'pN', type is WORD
+do_space : orig line 3, orig col 27, first text 'pN', type WORD
+do_space : first orig line is 3, orig col is 27, Text() is 'pN', [WORD/NONE] <===>
+ second orig line is 3, orig col is 29, Text() is ',', [COMMA/NONE] : rule sp_before_comma[ ]
+space_text : orig line is 3, orig col is 27, pc-Text() 'pN', type is WORD
+space_text : rule = REMOVE @ 0 => 29
+space_text : orig line is 3, orig col is 29, ',' type is COMMA
+space_text : orig line is 3, orig col is 29, pc-Text() ',', type is COMMA
+do_space : orig line 3, orig col 29, first text ',', type COMMA
+do_space : first orig line is 3, orig col is 29, Text() is ',', [COMMA/NONE] <===>
+ second orig line is 3, orig col is 31, Text() is 'unsigned', [TYPE/NONE] : rule sp_after_comma[ ]
+space_text : orig line is 3, orig col is 29, pc-Text() ',', type is COMMA
+space_text : rule = IGNORE @ 1 => 31
+space_text : orig line is 3, orig col is 31, 'unsigned' type is TYPE
+space_text : back-to-back words need a space: pc->Text() 'unsigned', next->Text() 'long'
+space_text : orig line is 3, orig col is 31, pc-Text() 'unsigned', type is TYPE
+do_space : orig line 3, orig col 31, first text 'unsigned', type TYPE
+do_space : first orig line is 3, orig col is 31, Text() is 'unsigned', [TYPE/NONE] <===>
+ second orig line is 3, orig col is 40, Text() is 'long', [TYPE/NONE] : rule sp_after_type[ ]
+ensure_force_space : force between 'unsigned' and 'long'
+space_text : orig line is 3, orig col is 31, pc-Text() 'unsigned', type is TYPE
+space_text : rule = FORCE @ 1 => 40
+space_text : orig line is 3, orig col is 40, 'long' type is TYPE
+space_text : back-to-back words need a space: pc->Text() 'long', next->Text() 'nI'
+space_text : orig line is 3, orig col is 40, pc-Text() 'long', type is TYPE
+do_space : orig line 3, orig col 40, first text 'long', type TYPE
+do_space : first orig line is 3, orig col is 40, Text() is 'long', [TYPE/NONE] <===>
+ second orig line is 3, orig col is 45, Text() is 'nI', [WORD/NONE] : rule sp_after_type[ ]
+ensure_force_space : force between 'long' and 'nI'
+space_text : orig line is 3, orig col is 40, pc-Text() 'long', type is TYPE
+space_text : rule = FORCE @ 1 => 45
+space_text : orig line is 3, orig col is 45, 'nI' type is WORD
+space_text : orig line is 3, orig col is 45, pc-Text() 'nI', type is WORD
+do_space : orig line 3, orig col 45, first text 'nI', type WORD
+do_space : first orig line is 3, orig col is 45, Text() is 'nI', [WORD/NONE] <===>
+ second orig line is 3, orig col is 47, Text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] : rule sp_inside_fparen[ ]
+space_text : orig line is 3, orig col is 45, pc-Text() 'nI', type is WORD
+space_text : rule = IGNORE @ 0 => 47
+space_text : orig line is 3, orig col is 47, ')' type is FPAREN_CLOSE
+space_text : orig line is 3, orig col is 47, pc-Text() ')', type is FPAREN_CLOSE
+do_space : orig line 3, orig col 47, first text ')', type FPAREN_CLOSE
+do_space : first orig line is 3, orig col is 47, Text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] <===>
+ second orig line is 3, orig col is 49, Text() is ':', [CONSTR_COLON/NONE] : rule sp_before_constr_colon[ ]
+space_text : orig line is 3, orig col is 47, pc-Text() ')', type is FPAREN_CLOSE
+space_text : rule = ADD @ 1 => 49
+space_text : orig line is 3, orig col is 49, ':' type is CONSTR_COLON
+space_text : orig line is 3, orig col is 49, pc-Text() ':', type is CONSTR_COLON
+do_space : orig line 3, orig col 49, first text ':', type CONSTR_COLON
+space_text : orig line is 3, orig col is 49, pc-Text() ':', type is CONSTR_COLON
+space_text : rule = REMOVE @ 0 => 50
+space_text : orig line is 3, orig col is 50, <Newline>, nl is 1
+space_text : orig line is 4, orig col is 1, 'pTelName' type is FUNC_CTOR_VAR
+space_text : orig line is 4, orig col is 1, pc-Text() 'pTelName', type is FUNC_CTOR_VAR
+do_space : orig line 4, orig col 1, first text 'pTelName', type FUNC_CTOR_VAR
+do_space : first orig line is 4, orig col is 1, Text() is 'pTelName', [FUNC_CTOR_VAR/NONE] <===>
+ second orig line is 4, orig col is 9, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] : rule sp_func_call_paren[ ]
+space_text : orig line is 4, orig col is 1, pc-Text() 'pTelName', type is FUNC_CTOR_VAR
+space_text : rule = IGNORE @ 0 => 9
+space_text : orig line is 4, orig col is 9, '(' type is FPAREN_OPEN
+space_text : orig line is 4, orig col is 9, pc-Text() '(', type is FPAREN_OPEN
+do_space : orig line 4, orig col 9, first text '(', type FPAREN_OPEN
+do_space : first orig line is 4, orig col is 9, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] <===>
+ second orig line is 4, orig col is 10, Text() is 'pN', [WORD/NONE] : rule sp_inside_fparen[ ]
+space_text : orig line is 4, orig col is 9, pc-Text() '(', type is FPAREN_OPEN
+space_text : rule = IGNORE @ 0 => 10
+space_text : orig line is 4, orig col is 10, 'pN' type is WORD
+space_text : orig line is 4, orig col is 10, pc-Text() 'pN', type is WORD
+do_space : orig line 4, orig col 10, first text 'pN', type WORD
+do_space : first orig line is 4, orig col is 10, Text() is 'pN', [WORD/NONE] <===>
+ second orig line is 4, orig col is 12, Text() is ')', [FPAREN_CLOSE/FUNC_CTOR_VAR] : rule sp_inside_fparen[ ]
+space_text : orig line is 4, orig col is 10, pc-Text() 'pN', type is WORD
+space_text : rule = IGNORE @ 0 => 12
+space_text : orig line is 4, orig col is 12, ')' type is FPAREN_CLOSE
+space_text : orig line is 4, orig col is 12, pc-Text() ')', type is FPAREN_CLOSE
+do_space : orig line 4, orig col 12, first text ')', type FPAREN_CLOSE
+do_space : first orig line is 4, orig col is 12, Text() is ')', [FPAREN_CLOSE/FUNC_CTOR_VAR] <===>
+ second orig line is 4, orig col is 13, Text() is ',', [COMMA/NONE] : rule sp_before_comma[ ]
+space_text : orig line is 4, orig col is 12, pc-Text() ')', type is FPAREN_CLOSE
+space_text : rule = REMOVE @ 0 => 13
+space_text : orig line is 4, orig col is 13, ',' type is COMMA
+space_text : orig line is 4, orig col is 13, pc-Text() ',', type is COMMA
+do_space : orig line 4, orig col 13, first text ',', type COMMA
+space_text : orig line is 4, orig col is 13, pc-Text() ',', type is COMMA
+space_text : rule = REMOVE @ 0 => 14
+space_text : orig line is 4, orig col is 14, <Newline>, nl is 1
+space_text : orig line is 5, orig col is 1, 'nTelIndex' type is FUNC_CTOR_VAR
+space_text : orig line is 5, orig col is 1, pc-Text() 'nTelIndex', type is FUNC_CTOR_VAR
+do_space : orig line 5, orig col 1, first text 'nTelIndex', type FUNC_CTOR_VAR
+do_space : first orig line is 5, orig col is 1, Text() is 'nTelIndex', [FUNC_CTOR_VAR/NONE] <===>
+ second orig line is 5, orig col is 10, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] : rule sp_func_call_paren[ ]
+space_text : orig line is 5, orig col is 1, pc-Text() 'nTelIndex', type is FUNC_CTOR_VAR
+space_text : rule = IGNORE @ 0 => 10
+space_text : orig line is 5, orig col is 10, '(' type is FPAREN_OPEN
+space_text : orig line is 5, orig col is 10, pc-Text() '(', type is FPAREN_OPEN
+do_space : orig line 5, orig col 10, first text '(', type FPAREN_OPEN
+do_space : first orig line is 5, orig col is 10, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] <===>
+ second orig line is 5, orig col is 11, Text() is 'n', [WORD/NONE] : rule sp_inside_fparen[ ]
+space_text : orig line is 5, orig col is 10, pc-Text() '(', type is FPAREN_OPEN
+space_text : rule = IGNORE @ 0 => 11
+space_text : orig line is 5, orig col is 11, 'n' type is WORD
+space_text : orig line is 5, orig col is 11, pc-Text() 'n', type is WORD
+do_space : orig line 5, orig col 11, first text 'n', type WORD
+do_space : first orig line is 5, orig col is 11, Text() is 'n', [WORD/NONE] <===>
+ second orig line is 5, orig col is 12, Text() is ')', [FPAREN_CLOSE/FUNC_CTOR_VAR] : rule sp_inside_fparen[ ]
+space_text : orig line is 5, orig col is 11, pc-Text() 'n', type is WORD
+space_text : rule = IGNORE @ 0 => 12
+space_text : orig line is 5, orig col is 12, ')' type is FPAREN_CLOSE
+space_text : orig line is 5, orig col is 12, pc-Text() ')', type is FPAREN_CLOSE
+do_space : orig line 5, orig col 12, first text ')', type FPAREN_CLOSE
+space_text : orig line is 5, orig col is 12, pc-Text() ')', type is FPAREN_CLOSE
+space_text : rule = REMOVE @ 0 => 13
+space_text : orig line is 5, orig col is 13, <Newline>, nl is 1
+space_text : orig line is 6, orig col is 1, '{' type is BRACE_OPEN
+space_text : orig line is 6, orig col is 1, pc-Text() '{', type is BRACE_OPEN
+do_space : orig line 6, orig col 1, first text '{', type BRACE_OPEN
+space_text : orig line is 6, orig col is 1, pc-Text() '{', type is BRACE_OPEN
+space_text : rule = REMOVE @ 0 => 2
+space_text : orig line is 6, orig col is 2, <Newline>, nl is 1
+space_text : orig line is 7, orig col is 1, '}' type is BRACE_CLOSE
+space_text : orig line is 7, orig col is 1, pc-Text() '}', type is BRACE_CLOSE
+do_space : orig line 7, orig col 1, first text '}', type BRACE_CLOSE
+space_text : orig line is 7, orig col is 1, pc-Text() '}', type is BRACE_CLOSE
+space_text : rule = REMOVE @ 0 => 2
+space_text : orig line is 7, orig col is 2, <Newline>, nl is 2
+space_text : orig line is 9, orig col is 1, '~' type is DESTRUCTOR
+space_text : orig line is 9, orig col is 1, pc-Text() '~', type is DESTRUCTOR
+do_space : orig line 9, orig col 1, first text '~', type DESTRUCTOR
+do_space : first orig line is 9, orig col is 1, Text() is '~', [DESTRUCTOR/FUNC_CLASS_DEF] <===>
+ second orig line is 9, orig col is 2, Text() is 'TelegramIndex', [FUNC_CLASS_DEF/DESTRUCTOR] : rule REMOVE[ ]
+space_text : orig line is 9, orig col is 1, pc-Text() '~', type is DESTRUCTOR
+space_text : rule = REMOVE @ 0 => 2
+space_text : orig line is 9, orig col is 2, 'TelegramIndex' type is FUNC_CLASS_DEF
+space_text : orig line is 9, orig col is 2, pc-Text() 'TelegramIndex', type is FUNC_CLASS_DEF
+do_space : orig line 9, orig col 2, first text 'TelegramIndex', type FUNC_CLASS_DEF
+do_space : first orig line is 9, orig col is 2, Text() is 'TelegramIndex', [FUNC_CLASS_DEF/DESTRUCTOR] <===>
+ second orig line is 9, orig col is 15, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] : rule sp_func_class_paren[ ]
+space_text : orig line is 9, orig col is 2, pc-Text() 'TelegramIndex', type is FUNC_CLASS_DEF
+space_text : rule = IGNORE @ 0 => 15
+space_text : orig line is 9, orig col is 15, '(' type is FPAREN_OPEN
+space_text : orig line is 9, orig col is 15, pc-Text() '(', type is FPAREN_OPEN
+do_space : orig line 9, orig col 15, first text '(', type FPAREN_OPEN
+do_space : first orig line is 9, orig col is 15, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] <===>
+ second orig line is 9, orig col is 16, Text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] : rule sp_inside_fparens[ ]
+space_text : orig line is 9, orig col is 15, pc-Text() '(', type is FPAREN_OPEN
+space_text : rule = IGNORE @ 0 => 16
+space_text : orig line is 9, orig col is 16, ')' type is FPAREN_CLOSE
+space_text : orig line is 9, orig col is 16, pc-Text() ')', type is FPAREN_CLOSE
+do_space : orig line 9, orig col 16, first text ')', type FPAREN_CLOSE
+space_text : orig line is 9, orig col is 16, pc-Text() ')', type is FPAREN_CLOSE
+space_text : rule = REMOVE @ 0 => 17
+space_text : orig line is 9, orig col is 17, <Newline>, nl is 1
+space_text : orig line is 10, orig col is 1, '{' type is BRACE_OPEN
+space_text : orig line is 10, orig col is 1, pc-Text() '{', type is BRACE_OPEN
+do_space : orig line 10, orig col 1, first text '{', type BRACE_OPEN
+space_text : orig line is 10, orig col is 1, pc-Text() '{', type is BRACE_OPEN
+space_text : rule = REMOVE @ 0 => 2
+space_text : orig line is 10, orig col is 2, <Newline>, nl is 1
+space_text : orig line is 11, orig col is 1, '}' type is BRACE_CLOSE
+space_text : orig line is 11, orig col is 1, pc-Text() '}', type is BRACE_CLOSE
+do_space : orig line 11, orig col 1, first text '}', type BRACE_CLOSE
+space_text : orig line is 11, orig col is 1, pc-Text() '}', type is BRACE_CLOSE
+space_text : rule = REMOVE @ 0 => 2
+space_text : orig line is 11, orig col is 2, <Newline>, nl is 2
+space_text : orig line is 13, orig col is 1, 'const' type is QUALIFIER
+space_text : back-to-back words need a space: pc->Text() 'const', next->Text() 'char'
+space_text : orig line is 13, orig col is 1, pc-Text() 'const', type is QUALIFIER
+do_space : orig line 13, orig col 1, first text 'const', type QUALIFIER
+do_space : first orig line is 13, orig col is 1, Text() is 'const', [QUALIFIER/NONE] <===>
+ second orig line is 13, orig col is 7, Text() is 'char', [TYPE/NONE] : rule sp_after_type[ ]
+ensure_force_space : force between 'const' and 'char'
+space_text : orig line is 13, orig col is 1, pc-Text() 'const', type is QUALIFIER
+space_text : rule = FORCE @ 1 => 7
+space_text : orig line is 13, orig col is 7, 'char' type is TYPE
+space_text : orig line is 13, orig col is 7, pc-Text() 'char', type is TYPE
+do_space : orig line 13, orig col 7, first text 'char', type TYPE
+do_space : first orig line is 13, orig col is 7, Text() is 'char', [TYPE/NONE] <===>
+ second orig line is 13, orig col is 11, Text() is '*', [PTR_TYPE/NONE] : rule IGNORE[ ]
+space_text : orig line is 13, orig col is 7, pc-Text() 'char', type is TYPE
+space_text : rule = IGNORE @ 0 => 11
+space_text : orig line is 13, orig col is 11, '*' type is PTR_TYPE
+space_text : orig line is 13, orig col is 11, pc-Text() '*', type is PTR_TYPE
+do_space : orig line 13, orig col 11, first text '*', type PTR_TYPE
+do_space : first orig line is 13, orig col is 11, Text() is '*', [PTR_TYPE/NONE] <===>
+ second orig line is 13, orig col is 13, Text() is 'const', [QUALIFIER/NONE] : rule sp_after_ptr_star_qualifier[ ]
+space_text : orig line is 13, orig col is 11, pc-Text() '*', type is PTR_TYPE
+space_text : rule = IGNORE @ 1 => 13
+space_text : orig line is 13, orig col is 13, 'const' type is QUALIFIER
+space_text : back-to-back words need a space: pc->Text() 'const', next->Text() 'pTelName'
+space_text : orig line is 13, orig col is 13, pc-Text() 'const', type is QUALIFIER
+do_space : orig line 13, orig col 13, first text 'const', type QUALIFIER
+do_space : first orig line is 13, orig col is 13, Text() is 'const', [QUALIFIER/NONE] <===>
+ second orig line is 13, orig col is 19, Text() is 'pTelName', [WORD/NONE] : rule sp_after_type[ ]
+ensure_force_space : force between 'const' and 'pTelName'
+space_text : orig line is 13, orig col is 13, pc-Text() 'const', type is QUALIFIER
+space_text : rule = FORCE @ 1 => 19
+space_text : orig line is 13, orig col is 19, 'pTelName' type is WORD
+space_text : orig line is 13, orig col is 19, pc-Text() 'pTelName', type is WORD
+do_space : orig line 13, orig col 19, first text 'pTelName', type WORD
+do_space : first orig line is 13, orig col is 19, Text() is 'pTelName', [WORD/NONE] <===>
+ second orig line is 13, orig col is 27, Text() is ';', [SEMICOLON/NONE] : rule sp_before_semi[ ]
+space_text : orig line is 13, orig col is 19, pc-Text() 'pTelName', type is WORD
+space_text : rule = REMOVE @ 0 => 27
+space_text : orig line is 13, orig col is 27, ';' type is SEMICOLON
+space_text : orig line is 13, orig col is 27, pc-Text() ';', type is SEMICOLON
+do_space : orig line 13, orig col 27, first text ';', type SEMICOLON
+space_text : orig line is 13, orig col is 27, pc-Text() ';', type is SEMICOLON
+space_text : rule = REMOVE @ 0 => 28
+space_text : orig line is 13, orig col is 28, <Newline>, nl is 1
+space_text : orig line is 14, orig col is 1, 'unsigned' type is TYPE
+space_text : back-to-back words need a space: pc->Text() 'unsigned', next->Text() 'long'
+space_text : orig line is 14, orig col is 1, pc-Text() 'unsigned', type is TYPE
+do_space : orig line 14, orig col 1, first text 'unsigned', type TYPE
+do_space : first orig line is 14, orig col is 1, Text() is 'unsigned', [TYPE/NONE] <===>
+ second orig line is 14, orig col is 10, Text() is 'long', [TYPE/NONE] : rule sp_after_type[ ]
+ensure_force_space : force between 'unsigned' and 'long'
+space_text : orig line is 14, orig col is 1, pc-Text() 'unsigned', type is TYPE
+space_text : rule = FORCE @ 1 => 10
+space_text : orig line is 14, orig col is 10, 'long' type is TYPE
+space_text : back-to-back words need a space: pc->Text() 'long', next->Text() 'nTelIndex'
+space_text : orig line is 14, orig col is 10, pc-Text() 'long', type is TYPE
+do_space : orig line 14, orig col 10, first text 'long', type TYPE
+do_space : first orig line is 14, orig col is 10, Text() is 'long', [TYPE/NONE] <===>
+ second orig line is 14, orig col is 15, Text() is 'nTelIndex', [WORD/NONE] : rule sp_after_type[ ]
+ensure_force_space : force between 'long' and 'nTelIndex'
+space_text : orig line is 14, orig col is 10, pc-Text() 'long', type is TYPE
+space_text : rule = FORCE @ 1 => 15
+space_text : orig line is 14, orig col is 15, 'nTelIndex' type is WORD
+space_text : orig line is 14, orig col is 15, pc-Text() 'nTelIndex', type is WORD
+do_space : orig line 14, orig col 15, first text 'nTelIndex', type WORD
+do_space : first orig line is 14, orig col is 15, Text() is 'nTelIndex', [WORD/NONE] <===>
+ second orig line is 14, orig col is 24, Text() is ';', [SEMICOLON/NONE] : rule sp_before_semi[ ]
+space_text : orig line is 14, orig col is 15, pc-Text() 'nTelIndex', type is WORD
+space_text : rule = REMOVE @ 0 => 24
+space_text : orig line is 14, orig col is 24, ';' type is SEMICOLON
+space_text : orig line is 14, orig col is 24, pc-Text() ';', type is SEMICOLON
+do_space : orig line 14, orig col 24, first text ';', type SEMICOLON
+space_text : orig line is 14, orig col is 24, pc-Text() ';', type is SEMICOLON
+space_text : rule = REMOVE @ 0 => 25
+space_text : orig line is 14, orig col is 25, <Newline>, nl is 1
+space_text : orig line is 15, orig col is 1, '}' type is BRACE_CLOSE
+space_text : orig line is 15, orig col is 1, pc-Text() '}', type is BRACE_CLOSE
+do_space : orig line 15, orig col 1, first text '}', type BRACE_CLOSE
+do_space : first orig line is 15, orig col is 1, Text() is '}', [BRACE_CLOSE/STRUCT] <===>
+ second orig line is 15, orig col is 2, Text() is ';', [SEMICOLON/STRUCT] : rule sp_before_semi[ ]
+space_text : orig line is 15, orig col is 1, pc-Text() '}', type is BRACE_CLOSE
+space_text : rule = REMOVE @ 0 => 2
+space_text : orig line is 15, orig col is 2, ';' type is SEMICOLON
+space_text : orig line is 15, orig col is 2, pc-Text() ';', type is SEMICOLON
+do_space : orig line 15, orig col 2, first text ';', type SEMICOLON
+space_text : orig line is 15, orig col is 2, pc-Text() ';', type is SEMICOLON
+space_text : rule = REMOVE @ 0 => 3
+space_text : orig line is 15, orig col is 3, <Newline>, nl is 2
+space_col_align : 1st orig line 3, orig col 1, [FUNC_CLASS_DEF/NONE], text 'TelegramIndex' <==>
+space_col_align : 2nd orig line 3, orig col 14, [FPAREN_OPEN/FUNC_CLASS_DEF], text '('
+ [CallStack]
+do_space : orig line 3, orig col 1, first text 'TelegramIndex', type FUNC_CLASS_DEF
+do_space : first orig line is 3, orig col is 1, Text() is 'TelegramIndex', [FUNC_CLASS_DEF/NONE] <===>
+ second orig line is 3, orig col is 14, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] : rule sp_func_class_paren[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 13
+space_col_align : => coldiff is 13
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 3
+space_col_align : => second orig line is 3
+space_col_align : => first text is 'TelegramIndex'
+space_col_align : => second text is '('
+space_col_align : => first orig col is 1
+space_col_align : => second orig col is 14
+space_col_align : => first len is 13
+space_col_align : => coldiff is 13
+space_col_align : 1st orig line 3, orig col 14, [FPAREN_OPEN/FUNC_CLASS_DEF], text '(' <==>
+space_col_align : 2nd orig line 3, orig col 15, [QUALIFIER/NONE], text 'const'
+ [CallStack]
+do_space : orig line 3, orig col 14, first text '(', type FPAREN_OPEN
+do_space : first orig line is 3, orig col is 14, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] <===>
+ second orig line is 3, orig col is 15, Text() is 'const', [QUALIFIER/NONE] : rule sp_inside_fparen[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 3
+space_col_align : => second orig line is 3
+space_col_align : => first text is '('
+space_col_align : => second text is 'const'
+space_col_align : => first orig col is 14
+space_col_align : => second orig col is 15
+space_col_align : => first len is 1
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 3, orig col 15, [QUALIFIER/NONE], text 'const' <==>
+space_col_align : 2nd orig line 3, orig col 21, [TYPE/NONE], text 'char'
+ [CallStack]
+do_space : orig line 3, orig col 15, first text 'const', type QUALIFIER
+do_space : first orig line is 3, orig col is 15, Text() is 'const', [QUALIFIER/NONE] <===>
+ second orig line is 3, orig col is 21, Text() is 'char', [TYPE/NONE] : rule sp_after_type[ ]
+ensure_force_space : force between 'const' and 'char'
+space_col_align : av is force
+space_col_align : '1st' len is 5
+space_col_align : => coldiff is 5
+space_col_align : => av is FORCE
+space_col_align : => coldiff is 6
+space_col_align : 1st orig line 3, orig col 21, [TYPE/NONE], text 'char' <==>
+space_col_align : 2nd orig line 3, orig col 25, [PTR_TYPE/NONE], text '*'
+ [CallStack]
+do_space : orig line 3, orig col 21, first text 'char', type TYPE
+do_space : first orig line is 3, orig col is 21, Text() is 'char', [TYPE/NONE] <===>
+ second orig line is 3, orig col is 25, Text() is '*', [PTR_TYPE/NONE] : rule IGNORE[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 4
+space_col_align : => coldiff is 4
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 3
+space_col_align : => second orig line is 3
+space_col_align : => first text is 'char'
+space_col_align : => second text is '*'
+space_col_align : => first orig col is 21
+space_col_align : => second orig col is 25
+space_col_align : => first len is 4
+space_col_align : => coldiff is 4
+space_col_align : 1st orig line 3, orig col 25, [PTR_TYPE/NONE], text '*' <==>
+space_col_align : 2nd orig line 3, orig col 27, [WORD/NONE], text 'pN'
+ [CallStack]
+do_space : orig line 3, orig col 25, first text '*', type PTR_TYPE
+do_space : first orig line is 3, orig col is 25, Text() is '*', [PTR_TYPE/NONE] <===>
+ second orig line is 3, orig col is 27, Text() is 'pN', [WORD/NONE] : rule sp_after_ptr_star[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 3
+space_col_align : => second orig line is 3
+space_col_align : => first text is '*'
+space_col_align : => second text is 'pN'
+space_col_align : => first orig col is 25
+space_col_align : => second orig col is 27
+space_col_align : => first len is 1
+space_col_align : => coldiff is 2
+space_col_align : 1st orig line 3, orig col 27, [WORD/NONE], text 'pN' <==>
+space_col_align : 2nd orig line 3, orig col 29, [COMMA/NONE], text ','
+ [CallStack]
+do_space : orig line 3, orig col 27, first text 'pN', type WORD
+do_space : first orig line is 3, orig col is 27, Text() is 'pN', [WORD/NONE] <===>
+ second orig line is 3, orig col is 29, Text() is ',', [COMMA/NONE] : rule sp_before_comma[ ]
+space_col_align : av is remove
+space_col_align : '1st' len is 2
+space_col_align : => coldiff is 2
+space_col_align : => av is REMOVE
+space_col_align : => coldiff is 2
+space_col_align : 1st orig line 3, orig col 29, [COMMA/NONE], text ',' <==>
+space_col_align : 2nd orig line 3, orig col 31, [TYPE/NONE], text 'unsigned'
+ [CallStack]
+do_space : orig line 3, orig col 29, first text ',', type COMMA
+do_space : first orig line is 3, orig col is 29, Text() is ',', [COMMA/NONE] <===>
+ second orig line is 3, orig col is 31, Text() is 'unsigned', [TYPE/NONE] : rule sp_after_comma[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 3
+space_col_align : => second orig line is 3
+space_col_align : => first text is ','
+space_col_align : => second text is 'unsigned'
+space_col_align : => first orig col is 29
+space_col_align : => second orig col is 31
+space_col_align : => first len is 1
+space_col_align : => coldiff is 2
+space_col_align : 1st orig line 3, orig col 31, [TYPE/NONE], text 'unsigned' <==>
+space_col_align : 2nd orig line 3, orig col 40, [TYPE/NONE], text 'long'
+ [CallStack]
+do_space : orig line 3, orig col 31, first text 'unsigned', type TYPE
+do_space : first orig line is 3, orig col is 31, Text() is 'unsigned', [TYPE/NONE] <===>
+ second orig line is 3, orig col is 40, Text() is 'long', [TYPE/NONE] : rule sp_after_type[ ]
+ensure_force_space : force between 'unsigned' and 'long'
+space_col_align : av is force
+space_col_align : '1st' len is 8
+space_col_align : => coldiff is 8
+space_col_align : => av is FORCE
+space_col_align : => coldiff is 9
+space_col_align : 1st orig line 3, orig col 40, [TYPE/NONE], text 'long' <==>
+space_col_align : 2nd orig line 3, orig col 45, [WORD/NONE], text 'nI'
+ [CallStack]
+do_space : orig line 3, orig col 40, first text 'long', type TYPE
+do_space : first orig line is 3, orig col is 40, Text() is 'long', [TYPE/NONE] <===>
+ second orig line is 3, orig col is 45, Text() is 'nI', [WORD/NONE] : rule sp_after_type[ ]
+ensure_force_space : force between 'long' and 'nI'
+space_col_align : av is force
+space_col_align : '1st' len is 4
+space_col_align : => coldiff is 4
+space_col_align : => av is FORCE
+space_col_align : => coldiff is 5
+space_col_align : 1st orig line 3, orig col 45, [WORD/NONE], text 'nI' <==>
+space_col_align : 2nd orig line 3, orig col 47, [FPAREN_CLOSE/FUNC_CLASS_DEF], text ')'
+ [CallStack]
+do_space : orig line 3, orig col 45, first text 'nI', type WORD
+do_space : first orig line is 3, orig col is 45, Text() is 'nI', [WORD/NONE] <===>
+ second orig line is 3, orig col is 47, Text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] : rule sp_inside_fparen[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 2
+space_col_align : => coldiff is 2
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 3
+space_col_align : => second orig line is 3
+space_col_align : => first text is 'nI'
+space_col_align : => second text is ')'
+space_col_align : => first orig col is 45
+space_col_align : => second orig col is 47
+space_col_align : => first len is 2
+space_col_align : => coldiff is 2
+space_col_align : 1st orig line 3, orig col 47, [FPAREN_CLOSE/FUNC_CLASS_DEF], text ')' <==>
+space_col_align : 2nd orig line 3, orig col 49, [CONSTR_COLON/NONE], text ':'
+ [CallStack]
+do_space : orig line 3, orig col 47, first text ')', type FPAREN_CLOSE
+do_space : first orig line is 3, orig col is 47, Text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] <===>
+ second orig line is 3, orig col is 49, Text() is ':', [CONSTR_COLON/NONE] : rule sp_before_constr_colon[ ]
+space_col_align : av is add
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is ADD
+space_col_align : => coldiff is 2
+space_col_align : 1st orig line 3, orig col 49, [CONSTR_COLON/NONE], text ':' <==>
+space_col_align : 2nd orig line 3, orig col 50, [NEWLINE/NONE], text ''
+ [CallStack]
+do_space : orig line 3, orig col 49, first text ':', type CONSTR_COLON
+space_col_align : av is remove
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is REMOVE
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 4, orig col 1, [FUNC_CTOR_VAR/NONE], text 'pTelName' <==>
+space_col_align : 2nd orig line 4, orig col 9, [FPAREN_OPEN/FUNC_CTOR_VAR], text '('
+ [CallStack]
+do_space : orig line 4, orig col 1, first text 'pTelName', type FUNC_CTOR_VAR
+do_space : first orig line is 4, orig col is 1, Text() is 'pTelName', [FUNC_CTOR_VAR/NONE] <===>
+ second orig line is 4, orig col is 9, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] : rule sp_func_call_paren[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 8
+space_col_align : => coldiff is 8
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 4
+space_col_align : => second orig line is 4
+space_col_align : => first text is 'pTelName'
+space_col_align : => second text is '('
+space_col_align : => first orig col is 1
+space_col_align : => second orig col is 9
+space_col_align : => first len is 8
+space_col_align : => coldiff is 8
+space_col_align : 1st orig line 4, orig col 9, [FPAREN_OPEN/FUNC_CTOR_VAR], text '(' <==>
+space_col_align : 2nd orig line 4, orig col 10, [WORD/NONE], text 'pN'
+ [CallStack]
+do_space : orig line 4, orig col 9, first text '(', type FPAREN_OPEN
+do_space : first orig line is 4, orig col is 9, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] <===>
+ second orig line is 4, orig col is 10, Text() is 'pN', [WORD/NONE] : rule sp_inside_fparen[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 4
+space_col_align : => second orig line is 4
+space_col_align : => first text is '('
+space_col_align : => second text is 'pN'
+space_col_align : => first orig col is 9
+space_col_align : => second orig col is 10
+space_col_align : => first len is 1
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 4, orig col 10, [WORD/NONE], text 'pN' <==>
+space_col_align : 2nd orig line 4, orig col 12, [FPAREN_CLOSE/FUNC_CTOR_VAR], text ')'
+ [CallStack]
+do_space : orig line 4, orig col 10, first text 'pN', type WORD
+do_space : first orig line is 4, orig col is 10, Text() is 'pN', [WORD/NONE] <===>
+ second orig line is 4, orig col is 12, Text() is ')', [FPAREN_CLOSE/FUNC_CTOR_VAR] : rule sp_inside_fparen[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 2
+space_col_align : => coldiff is 2
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 4
+space_col_align : => second orig line is 4
+space_col_align : => first text is 'pN'
+space_col_align : => second text is ')'
+space_col_align : => first orig col is 10
+space_col_align : => second orig col is 12
+space_col_align : => first len is 2
+space_col_align : => coldiff is 2
+space_col_align : 1st orig line 4, orig col 12, [FPAREN_CLOSE/FUNC_CTOR_VAR], text ')' <==>
+space_col_align : 2nd orig line 4, orig col 13, [COMMA/NONE], text ','
+ [CallStack]
+do_space : orig line 4, orig col 12, first text ')', type FPAREN_CLOSE
+do_space : first orig line is 4, orig col is 12, Text() is ')', [FPAREN_CLOSE/FUNC_CTOR_VAR] <===>
+ second orig line is 4, orig col is 13, Text() is ',', [COMMA/NONE] : rule sp_before_comma[ ]
+space_col_align : av is remove
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is REMOVE
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 4, orig col 13, [COMMA/NONE], text ',' <==>
+space_col_align : 2nd orig line 4, orig col 14, [NEWLINE/NONE], text ''
+ [CallStack]
+do_space : orig line 4, orig col 13, first text ',', type COMMA
+space_col_align : av is remove
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is REMOVE
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 5, orig col 1, [FUNC_CTOR_VAR/NONE], text 'nTelIndex' <==>
+space_col_align : 2nd orig line 5, orig col 10, [FPAREN_OPEN/FUNC_CTOR_VAR], text '('
+ [CallStack]
+do_space : orig line 5, orig col 1, first text 'nTelIndex', type FUNC_CTOR_VAR
+do_space : first orig line is 5, orig col is 1, Text() is 'nTelIndex', [FUNC_CTOR_VAR/NONE] <===>
+ second orig line is 5, orig col is 10, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] : rule sp_func_call_paren[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 9
+space_col_align : => coldiff is 9
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 5
+space_col_align : => second orig line is 5
+space_col_align : => first text is 'nTelIndex'
+space_col_align : => second text is '('
+space_col_align : => first orig col is 1
+space_col_align : => second orig col is 10
+space_col_align : => first len is 9
+space_col_align : => coldiff is 9
+space_col_align : 1st orig line 5, orig col 10, [FPAREN_OPEN/FUNC_CTOR_VAR], text '(' <==>
+space_col_align : 2nd orig line 5, orig col 11, [WORD/NONE], text 'n'
+ [CallStack]
+do_space : orig line 5, orig col 10, first text '(', type FPAREN_OPEN
+do_space : first orig line is 5, orig col is 10, Text() is '(', [FPAREN_OPEN/FUNC_CTOR_VAR] <===>
+ second orig line is 5, orig col is 11, Text() is 'n', [WORD/NONE] : rule sp_inside_fparen[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 5
+space_col_align : => second orig line is 5
+space_col_align : => first text is '('
+space_col_align : => second text is 'n'
+space_col_align : => first orig col is 10
+space_col_align : => second orig col is 11
+space_col_align : => first len is 1
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 5, orig col 11, [WORD/NONE], text 'n' <==>
+space_col_align : 2nd orig line 5, orig col 12, [FPAREN_CLOSE/FUNC_CTOR_VAR], text ')'
+ [CallStack]
+do_space : orig line 5, orig col 11, first text 'n', type WORD
+do_space : first orig line is 5, orig col is 11, Text() is 'n', [WORD/NONE] <===>
+ second orig line is 5, orig col is 12, Text() is ')', [FPAREN_CLOSE/FUNC_CTOR_VAR] : rule sp_inside_fparen[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 5
+space_col_align : => second orig line is 5
+space_col_align : => first text is 'n'
+space_col_align : => second text is ')'
+space_col_align : => first orig col is 11
+space_col_align : => second orig col is 12
+space_col_align : => first len is 1
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 5, orig col 12, [FPAREN_CLOSE/FUNC_CTOR_VAR], text ')' <==>
+space_col_align : 2nd orig line 5, orig col 13, [NEWLINE/NONE], text ''
+ [CallStack]
+do_space : orig line 5, orig col 12, first text ')', type FPAREN_CLOSE
+space_col_align : av is remove
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is REMOVE
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 6, orig col 1, [BRACE_OPEN/FUNC_CLASS_DEF], text '{' <==>
+space_col_align : 2nd orig line 6, orig col 2, [NEWLINE/NONE], text ''
+ [CallStack]
+do_space : orig line 6, orig col 1, first text '{', type BRACE_OPEN
+space_col_align : av is remove
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is REMOVE
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 7, orig col 1, [BRACE_CLOSE/FUNC_CLASS_DEF], text '}' <==>
+space_col_align : 2nd orig line 7, orig col 2, [NEWLINE/NONE], text ''
+ [CallStack]
+do_space : orig line 7, orig col 1, first text '}', type BRACE_CLOSE
+space_col_align : av is remove
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is REMOVE
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 9, orig col 1, [DESTRUCTOR/FUNC_CLASS_DEF], text '~' <==>
+space_col_align : 2nd orig line 9, orig col 2, [FUNC_CLASS_DEF/DESTRUCTOR], text 'TelegramIndex'
+ [CallStack]
+do_space : orig line 9, orig col 1, first text '~', type DESTRUCTOR
+do_space : first orig line is 9, orig col is 1, Text() is '~', [DESTRUCTOR/FUNC_CLASS_DEF] <===>
+ second orig line is 9, orig col is 2, Text() is 'TelegramIndex', [FUNC_CLASS_DEF/DESTRUCTOR] : rule REMOVE[ ]
+space_col_align : av is remove
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is REMOVE
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 9, orig col 2, [FUNC_CLASS_DEF/DESTRUCTOR], text 'TelegramIndex' <==>
+space_col_align : 2nd orig line 9, orig col 15, [FPAREN_OPEN/FUNC_CLASS_DEF], text '('
+ [CallStack]
+do_space : orig line 9, orig col 2, first text 'TelegramIndex', type FUNC_CLASS_DEF
+do_space : first orig line is 9, orig col is 2, Text() is 'TelegramIndex', [FUNC_CLASS_DEF/DESTRUCTOR] <===>
+ second orig line is 9, orig col is 15, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] : rule sp_func_class_paren[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 13
+space_col_align : => coldiff is 13
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 9
+space_col_align : => second orig line is 9
+space_col_align : => first text is 'TelegramIndex'
+space_col_align : => second text is '('
+space_col_align : => first orig col is 2
+space_col_align : => second orig col is 15
+space_col_align : => first len is 13
+space_col_align : => coldiff is 13
+space_col_align : 1st orig line 9, orig col 15, [FPAREN_OPEN/FUNC_CLASS_DEF], text '(' <==>
+space_col_align : 2nd orig line 9, orig col 16, [FPAREN_CLOSE/FUNC_CLASS_DEF], text ')'
+ [CallStack]
+do_space : orig line 9, orig col 15, first text '(', type FPAREN_OPEN
+do_space : first orig line is 9, orig col is 15, Text() is '(', [FPAREN_OPEN/FUNC_CLASS_DEF] <===>
+ second orig line is 9, orig col is 16, Text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] : rule sp_inside_fparens[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 9
+space_col_align : => second orig line is 9
+space_col_align : => first text is '('
+space_col_align : => second text is ')'
+space_col_align : => first orig col is 15
+space_col_align : => second orig col is 16
+space_col_align : => first len is 1
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 9, orig col 16, [FPAREN_CLOSE/FUNC_CLASS_DEF], text ')' <==>
+space_col_align : 2nd orig line 9, orig col 17, [NEWLINE/NONE], text ''
+ [CallStack]
+do_space : orig line 9, orig col 16, first text ')', type FPAREN_CLOSE
+space_col_align : av is remove
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is REMOVE
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 10, orig col 1, [BRACE_OPEN/FUNC_CLASS_DEF], text '{' <==>
+space_col_align : 2nd orig line 10, orig col 2, [NEWLINE/NONE], text ''
+ [CallStack]
+do_space : orig line 10, orig col 1, first text '{', type BRACE_OPEN
+space_col_align : av is remove
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is REMOVE
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 11, orig col 1, [BRACE_CLOSE/FUNC_CLASS_DEF], text '}' <==>
+space_col_align : 2nd orig line 11, orig col 2, [NEWLINE/NONE], text ''
+ [CallStack]
+do_space : orig line 11, orig col 1, first text '}', type BRACE_CLOSE
+space_col_align : av is remove
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is REMOVE
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 13, orig col 1, [QUALIFIER/NONE], text 'const' <==>
+space_col_align : 2nd orig line 13, orig col 7, [TYPE/NONE], text 'char'
+ [CallStack]
+do_space : orig line 13, orig col 1, first text 'const', type QUALIFIER
+do_space : first orig line is 13, orig col is 1, Text() is 'const', [QUALIFIER/NONE] <===>
+ second orig line is 13, orig col is 7, Text() is 'char', [TYPE/NONE] : rule sp_after_type[ ]
+ensure_force_space : force between 'const' and 'char'
+space_col_align : av is force
+space_col_align : '1st' len is 5
+space_col_align : => coldiff is 5
+space_col_align : => av is FORCE
+space_col_align : => coldiff is 6
+space_col_align : 1st orig line 13, orig col 7, [TYPE/NONE], text 'char' <==>
+space_col_align : 2nd orig line 13, orig col 11, [PTR_TYPE/NONE], text '*'
+ [CallStack]
+do_space : orig line 13, orig col 7, first text 'char', type TYPE
+do_space : first orig line is 13, orig col is 7, Text() is 'char', [TYPE/NONE] <===>
+ second orig line is 13, orig col is 11, Text() is '*', [PTR_TYPE/NONE] : rule IGNORE[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 4
+space_col_align : => coldiff is 4
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 13
+space_col_align : => second orig line is 13
+space_col_align : => first text is 'char'
+space_col_align : => second text is '*'
+space_col_align : => first orig col is 7
+space_col_align : => second orig col is 11
+space_col_align : => first len is 4
+space_col_align : => coldiff is 4
+space_col_align : 1st orig line 13, orig col 11, [PTR_TYPE/NONE], text '*' <==>
+space_col_align : 2nd orig line 13, orig col 13, [QUALIFIER/NONE], text 'const'
+ [CallStack]
+do_space : orig line 13, orig col 11, first text '*', type PTR_TYPE
+do_space : first orig line is 13, orig col is 11, Text() is '*', [PTR_TYPE/NONE] <===>
+ second orig line is 13, orig col is 13, Text() is 'const', [QUALIFIER/NONE] : rule sp_after_ptr_star_qualifier[ ]
+space_col_align : av is ignore
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is IGNORE
+space_col_align : => first orig line is 13
+space_col_align : => second orig line is 13
+space_col_align : => first text is '*'
+space_col_align : => second text is 'const'
+space_col_align : => first orig col is 11
+space_col_align : => second orig col is 13
+space_col_align : => first len is 1
+space_col_align : => coldiff is 2
+space_col_align : 1st orig line 13, orig col 13, [QUALIFIER/NONE], text 'const' <==>
+space_col_align : 2nd orig line 13, orig col 19, [WORD/NONE], text 'pTelName'
+ [CallStack]
+do_space : orig line 13, orig col 13, first text 'const', type QUALIFIER
+do_space : first orig line is 13, orig col is 13, Text() is 'const', [QUALIFIER/NONE] <===>
+ second orig line is 13, orig col is 19, Text() is 'pTelName', [WORD/NONE] : rule sp_after_type[ ]
+ensure_force_space : force between 'const' and 'pTelName'
+space_col_align : av is force
+space_col_align : '1st' len is 5
+space_col_align : => coldiff is 5
+space_col_align : => av is FORCE
+space_col_align : => coldiff is 6
+space_col_align : 1st orig line 13, orig col 19, [WORD/NONE], text 'pTelName' <==>
+space_col_align : 2nd orig line 13, orig col 27, [SEMICOLON/NONE], text ';'
+ [CallStack]
+do_space : orig line 13, orig col 19, first text 'pTelName', type WORD
+do_space : first orig line is 13, orig col is 19, Text() is 'pTelName', [WORD/NONE] <===>
+ second orig line is 13, orig col is 27, Text() is ';', [SEMICOLON/NONE] : rule sp_before_semi[ ]
+space_col_align : av is remove
+space_col_align : '1st' len is 8
+space_col_align : => coldiff is 8
+space_col_align : => av is REMOVE
+space_col_align : => coldiff is 8
+space_col_align : 1st orig line 13, orig col 27, [SEMICOLON/NONE], text ';' <==>
+space_col_align : 2nd orig line 13, orig col 28, [NEWLINE/NONE], text ''
+ [CallStack]
+do_space : orig line 13, orig col 27, first text ';', type SEMICOLON
+space_col_align : av is remove
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is REMOVE
+space_col_align : => coldiff is 1
+space_col_align : 1st orig line 14, orig col 1, [TYPE/NONE], text 'unsigned' <==>
+space_col_align : 2nd orig line 14, orig col 10, [TYPE/NONE], text 'long'
+ [CallStack]
+do_space : orig line 14, orig col 1, first text 'unsigned', type TYPE
+do_space : first orig line is 14, orig col is 1, Text() is 'unsigned', [TYPE/NONE] <===>
+ second orig line is 14, orig col is 10, Text() is 'long', [TYPE/NONE] : rule sp_after_type[ ]
+ensure_force_space : force between 'unsigned' and 'long'
+space_col_align : av is force
+space_col_align : '1st' len is 8
+space_col_align : => coldiff is 8
+space_col_align : => av is FORCE
+space_col_align : => coldiff is 9
+space_col_align : 1st orig line 14, orig col 10, [TYPE/NONE], text 'long' <==>
+space_col_align : 2nd orig line 14, orig col 15, [WORD/NONE], text 'nTelIndex'
+ [CallStack]
+do_space : orig line 14, orig col 10, first text 'long', type TYPE
+do_space : first orig line is 14, orig col is 10, Text() is 'long', [TYPE/NONE] <===>
+ second orig line is 14, orig col is 15, Text() is 'nTelIndex', [WORD/NONE] : rule sp_after_type[ ]
+ensure_force_space : force between 'long' and 'nTelIndex'
+space_col_align : av is force
+space_col_align : '1st' len is 4
+space_col_align : => coldiff is 4
+space_col_align : => av is FORCE
+space_col_align : => coldiff is 5
+space_col_align : 1st orig line 14, orig col 15, [WORD/NONE], text 'nTelIndex' <==>
+space_col_align : 2nd orig line 14, orig col 24, [SEMICOLON/NONE], text ';'
+ [CallStack]
+do_space : orig line 14, orig col 15, first text 'nTelIndex', type WORD
+do_space : first orig line is 14, orig col is 15, Text() is 'nTelIndex', [WORD/NONE] <===>
+ second orig line is 14, orig col is 24, Text() is ';', [SEMICOLON/NONE] : rule sp_before_semi[ ]
+space_col_align : av is remove
+space_col_align : '1st' len is 9
+space_col_align : => coldiff is 9
+space_col_align : => av is REMOVE
+space_col_align : => coldiff is 9
+space_col_align : 1st orig line 14, orig col 24, [SEMICOLON/NONE], text ';' <==>
+space_col_align : 2nd orig line 14, orig col 25, [NEWLINE/NONE], text ''
+ [CallStack]
+do_space : orig line 14, orig col 24, first text ';', type SEMICOLON
+space_col_align : av is remove
+space_col_align : '1st' len is 1
+space_col_align : => coldiff is 1
+space_col_align : => av is REMOVE
+space_col_align : => coldiff is 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/9.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/9.txt
index 98afe921..98afe921 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/9.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/9.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/92.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/92.txt
new file mode 100644
index 00000000..f0690328
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/92.txt
@@ -0,0 +1,196 @@
+SetType : orig line is 1, orig col is 1, Text() is 'struct'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 1, orig col is 1, Text() is 'struct'
+ type is WORD, parent type is NONE => new type is STRUCT
+SetType : orig line is 1, orig col is 7, Text() is ''
+ type is NONE, parent type is NONE => new type is WHITESPACE
+SetType : orig line is 1, orig col is 8, Text() is 'TelegramIndex'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 1, orig col is 21, Text() is <Newline>
+ type is NONE, parent type is NONE => new type is NEWLINE
+SetType : orig line is 2, orig col is 1, Text() is '{'
+ type is NONE, parent type is NONE => new type is BRACE_OPEN
+SetType : orig line is 2, orig col is 2, Text() is <Newline>
+ type is NONE, parent type is NONE => new type is NEWLINE
+SetType : orig line is 3, orig col is 1, Text() is 'TelegramIndex'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 3, orig col is 14, Text() is '('
+ type is NONE, parent type is NONE => new type is PAREN_OPEN
+SetType : orig line is 3, orig col is 15, Text() is 'const'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 3, orig col is 15, Text() is 'const'
+ type is WORD, parent type is NONE => new type is QUALIFIER
+SetType : orig line is 3, orig col is 20, Text() is ''
+ type is NONE, parent type is NONE => new type is WHITESPACE
+SetType : orig line is 3, orig col is 21, Text() is 'char'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 3, orig col is 21, Text() is 'char'
+ type is WORD, parent type is NONE => new type is TYPE
+SetType : orig line is 3, orig col is 25, Text() is '*'
+ type is NONE, parent type is NONE => new type is STAR
+SetType : orig line is 3, orig col is 26, Text() is ''
+ type is NONE, parent type is NONE => new type is WHITESPACE
+SetType : orig line is 3, orig col is 27, Text() is 'pN'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 3, orig col is 29, Text() is ','
+ type is NONE, parent type is NONE => new type is COMMA
+SetType : orig line is 3, orig col is 30, Text() is ''
+ type is NONE, parent type is NONE => new type is WHITESPACE
+SetType : orig line is 3, orig col is 31, Text() is 'unsigned'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 3, orig col is 31, Text() is 'unsigned'
+ type is WORD, parent type is NONE => new type is TYPE
+SetType : orig line is 3, orig col is 39, Text() is ''
+ type is NONE, parent type is NONE => new type is WHITESPACE
+SetType : orig line is 3, orig col is 40, Text() is 'long'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 3, orig col is 40, Text() is 'long'
+ type is WORD, parent type is NONE => new type is TYPE
+SetType : orig line is 3, orig col is 44, Text() is ''
+ type is NONE, parent type is NONE => new type is WHITESPACE
+SetType : orig line is 3, orig col is 45, Text() is 'nI'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 3, orig col is 47, Text() is ')'
+ type is NONE, parent type is NONE => new type is PAREN_CLOSE
+SetType : orig line is 3, orig col is 48, Text() is ''
+ type is NONE, parent type is NONE => new type is WHITESPACE
+SetType : orig line is 3, orig col is 49, Text() is ':'
+ type is NONE, parent type is NONE => new type is COLON
+SetType : orig line is 3, orig col is 50, Text() is <Newline>
+ type is NONE, parent type is NONE => new type is NEWLINE
+SetType : orig line is 4, orig col is 1, Text() is 'pTelName'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 4, orig col is 9, Text() is '('
+ type is NONE, parent type is NONE => new type is PAREN_OPEN
+SetType : orig line is 4, orig col is 10, Text() is 'pN'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 4, orig col is 12, Text() is ')'
+ type is NONE, parent type is NONE => new type is PAREN_CLOSE
+SetType : orig line is 4, orig col is 13, Text() is ','
+ type is NONE, parent type is NONE => new type is COMMA
+SetType : orig line is 4, orig col is 14, Text() is <Newline>
+ type is NONE, parent type is NONE => new type is NEWLINE
+SetType : orig line is 5, orig col is 1, Text() is 'nTelIndex'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 5, orig col is 10, Text() is '('
+ type is NONE, parent type is NONE => new type is PAREN_OPEN
+SetType : orig line is 5, orig col is 11, Text() is 'n'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 5, orig col is 12, Text() is ')'
+ type is NONE, parent type is NONE => new type is PAREN_CLOSE
+SetType : orig line is 5, orig col is 13, Text() is <Newline>
+ type is NONE, parent type is NONE => new type is NEWLINE
+SetType : orig line is 6, orig col is 1, Text() is '{'
+ type is NONE, parent type is NONE => new type is BRACE_OPEN
+SetType : orig line is 6, orig col is 2, Text() is <Newline>
+ type is NONE, parent type is NONE => new type is NEWLINE
+SetType : orig line is 7, orig col is 1, Text() is '}'
+ type is NONE, parent type is NONE => new type is BRACE_CLOSE
+SetType : orig line is 7, orig col is 2, Text() is <Newline>
+ type is NONE, parent type is NONE => new type is NEWLINE
+SetType : orig line is 9, orig col is 1, Text() is '~'
+ type is NONE, parent type is NONE => new type is INV
+SetType : orig line is 9, orig col is 2, Text() is 'TelegramIndex'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 9, orig col is 15, Text() is '('
+ type is NONE, parent type is NONE => new type is PAREN_OPEN
+SetType : orig line is 9, orig col is 16, Text() is ')'
+ type is NONE, parent type is NONE => new type is PAREN_CLOSE
+SetType : orig line is 9, orig col is 17, Text() is <Newline>
+ type is NONE, parent type is NONE => new type is NEWLINE
+SetType : orig line is 10, orig col is 1, Text() is '{'
+ type is NONE, parent type is NONE => new type is BRACE_OPEN
+SetType : orig line is 10, orig col is 2, Text() is <Newline>
+ type is NONE, parent type is NONE => new type is NEWLINE
+SetType : orig line is 11, orig col is 1, Text() is '}'
+ type is NONE, parent type is NONE => new type is BRACE_CLOSE
+SetType : orig line is 11, orig col is 2, Text() is <Newline>
+ type is NONE, parent type is NONE => new type is NEWLINE
+SetType : orig line is 13, orig col is 1, Text() is 'const'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 13, orig col is 1, Text() is 'const'
+ type is WORD, parent type is NONE => new type is QUALIFIER
+SetType : orig line is 13, orig col is 6, Text() is ''
+ type is NONE, parent type is NONE => new type is WHITESPACE
+SetType : orig line is 13, orig col is 7, Text() is 'char'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 13, orig col is 7, Text() is 'char'
+ type is WORD, parent type is NONE => new type is TYPE
+SetType : orig line is 13, orig col is 11, Text() is '*'
+ type is NONE, parent type is NONE => new type is STAR
+SetType : orig line is 13, orig col is 12, Text() is ''
+ type is NONE, parent type is NONE => new type is WHITESPACE
+SetType : orig line is 13, orig col is 13, Text() is 'const'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 13, orig col is 13, Text() is 'const'
+ type is WORD, parent type is NONE => new type is QUALIFIER
+SetType : orig line is 13, orig col is 18, Text() is ''
+ type is NONE, parent type is NONE => new type is WHITESPACE
+SetType : orig line is 13, orig col is 19, Text() is 'pTelName'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 13, orig col is 27, Text() is ';'
+ type is NONE, parent type is NONE => new type is SEMICOLON
+SetType : orig line is 13, orig col is 28, Text() is <Newline>
+ type is NONE, parent type is NONE => new type is NEWLINE
+SetType : orig line is 14, orig col is 1, Text() is 'unsigned'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 14, orig col is 1, Text() is 'unsigned'
+ type is WORD, parent type is NONE => new type is TYPE
+SetType : orig line is 14, orig col is 9, Text() is ''
+ type is NONE, parent type is NONE => new type is WHITESPACE
+SetType : orig line is 14, orig col is 10, Text() is 'long'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 14, orig col is 10, Text() is 'long'
+ type is WORD, parent type is NONE => new type is TYPE
+SetType : orig line is 14, orig col is 14, Text() is ''
+ type is NONE, parent type is NONE => new type is WHITESPACE
+SetType : orig line is 14, orig col is 15, Text() is 'nTelIndex'
+ type is NONE, parent type is NONE => new type is WORD
+SetType : orig line is 14, orig col is 24, Text() is ';'
+ type is NONE, parent type is NONE => new type is SEMICOLON
+SetType : orig line is 14, orig col is 25, Text() is <Newline>
+ type is NONE, parent type is NONE => new type is NEWLINE
+SetType : orig line is 15, orig col is 1, Text() is '}'
+ type is NONE, parent type is NONE => new type is BRACE_CLOSE
+SetType : orig line is 15, orig col is 2, Text() is ';'
+ type is NONE, parent type is NONE => new type is SEMICOLON
+SetType : orig line is 15, orig col is 3, Text() is <Newline>
+ type is NONE, parent type is NONE => new type is NEWLINE
+SetType : orig line is 1, orig col is 8, Text() is 'TelegramIndex'
+ type is WORD, parent type is NONE => new type is TYPE
+SetType : orig line is 3, orig col is 25, Text() is '*'
+ type is STAR, parent type is NONE => new type is PTR_TYPE
+SetType : orig line is 13, orig col is 11, Text() is '*'
+ type is STAR, parent type is NONE => new type is PTR_TYPE
+SetType : orig line is 1, orig col is 8, Text() is 'TelegramIndex'
+ type is TYPE, parent type is NONE => new type is WORD
+SetType : orig line is 1, orig col is 8, Text() is 'TelegramIndex'
+ type is WORD, parent type is NONE => new type is TYPE
+SetType : orig line is 3, orig col is 1, Text() is 'TelegramIndex'
+ type is WORD, parent type is NONE => new type is FUNC_CLASS_DEF
+SetType : orig line is 3, orig col is 14, Text() is '('
+ type is PAREN_OPEN, parent type is NONE => new type is FPAREN_OPEN
+SetType : orig line is 3, orig col is 47, Text() is ')'
+ type is PAREN_CLOSE, parent type is NONE => new type is FPAREN_CLOSE
+SetType : orig line is 3, orig col is 49, Text() is ':'
+ type is COLON, parent type is NONE => new type is CONSTR_COLON
+SetType : orig line is 4, orig col is 1, Text() is 'pTelName'
+ type is WORD, parent type is NONE => new type is FUNC_CTOR_VAR
+SetType : orig line is 4, orig col is 9, Text() is '('
+ type is PAREN_OPEN, parent type is NONE => new type is FPAREN_OPEN
+SetType : orig line is 4, orig col is 12, Text() is ')'
+ type is PAREN_CLOSE, parent type is NONE => new type is FPAREN_CLOSE
+SetType : orig line is 5, orig col is 1, Text() is 'nTelIndex'
+ type is WORD, parent type is NONE => new type is FUNC_CTOR_VAR
+SetType : orig line is 5, orig col is 10, Text() is '('
+ type is PAREN_OPEN, parent type is NONE => new type is FPAREN_OPEN
+SetType : orig line is 5, orig col is 12, Text() is ')'
+ type is PAREN_CLOSE, parent type is NONE => new type is FPAREN_CLOSE
+SetType : orig line is 9, orig col is 2, Text() is 'TelegramIndex'
+ type is WORD, parent type is NONE => new type is FUNC_CLASS_DEF
+SetType : orig line is 9, orig col is 1, Text() is '~'
+ type is INV, parent type is NONE => new type is DESTRUCTOR
+SetType : orig line is 9, orig col is 15, Text() is '('
+ type is PAREN_OPEN, parent type is NONE => new type is FPAREN_OPEN
+SetType : orig line is 9, orig col is 16, Text() is ')'
+ type is PAREN_CLOSE, parent type is NONE => new type is FPAREN_CLOSE
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/Debug_tracking_space.html b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/Debug_tracking_space.html
new file mode 100644
index 00000000..b189de78
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/Debug_tracking_space.html
@@ -0,0 +1,23 @@
+<html>
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+ <title>Uncrustify: where do the Spaces options work</title>
+</head>
+<body lang="en-US">
+<p>
+</p>
+<pre>
+{<a title="REMOVE: 1"><font color="red">M</font></a>
+ a<a title="sp_assign: 2"><font color="red">M</font></a>=<a title="sp_assign: 3, 86"><font color="red">M</font></a>b<a title="sp_arith: 4, 87, 93"><font color="red">M</font></a>+<a title="sp_arith: 5, 88, 94, 99"><font color="red">M</font></a>111<a title="sp_arith: 6, 89, 95, 100, 104"><font color="red">M</font></a>-<a title="sp_arith: 7, 90, 96, 101, 105, 108"><font color="red">M</font></a>55<a title="sp_before_semi: 8, 91, 97, 102, 106, 109, 111"><font color="red">M</font></a>;<a title="REMOVE: 9, 92, 98, 103, 107, 110, 112, 113"><font color="red">M</font></a>
+}<a title="REMOVE: 10"><font color="red">M</font></a>
+template<a title="sp_before_angle: 11"><font color="red">M</font></a>&lt;<a title="sp_inside_angle: 12, 114"><font color="red">M</font></a>typename<a title="ADD from add_space_table @ 253.: 13, 115, 123"><font color="red">M</font></a>...<a title="sp_ellipsis_parameter_pack: 14, 116, 124, 131"><font color="red">M</font></a>A<a title="sp_before_comma: 15, 117, 125, 132, 138"><font color="red">M</font></a>,<a title="sp_after_comma: 16, 118, 126, 133, 139, 144"><font color="red">M</font></a>int<a title="sp_type_ellipsis: 17, 119, 127, 134, 140, 145, 149"><font color="red">M</font></a>...<a title="FORCE: 18, 120, 128, 135, 141, 146, 150, 153"><font color="red">M</font></a>B<a title="sp_inside_angle: 19, 121, 129, 136, 142, 147, 151, 154, 156"><font color="red">M</font></a>&gt;<a title="REMOVE: 20, 122, 130, 137, 143, 148, 152, 155, 157, 158"><font color="red">M</font></a>
+struct<a title="ADD from add_space_table @ 236.: 21"><font color="red">M</font></a>foo1<a title="sp_after_type: 22, 159"><font color="red">M</font></a>:<a title="ADD from add_space_table @ 49.: 23, 160, 177"><font color="red">M</font></a>foo1<a title="sp_before_angle: 24, 161, 178, 194"><font color="red">M</font></a>&lt;<a title="sp_inside_angle: 25, 162, 179, 195, 210"><font color="red">M</font></a>A<a title="sp_parameter_pack_ellipsis: 26, 163, 180, 196, 211, 225"><font color="red">M</font></a>...<a title="sp_before_comma: 27, 164, 181, 197, 212, 226, 239"><font color="red">M</font></a>,<a title="sp_after_comma: 28, 165, 182, 198, 213, 227, 240, 252"><font color="red">M</font></a>(<a title="sp_inside_paren: 29, 166, 183, 199, 214, 228, 241, 253, 264"><font color="red">M</font></a>sizeof<a title="sp_sizeof_ellipsis: 30, 167, 184, 200, 215, 229, 242, 254, 265, 275"><font color="red">M</font></a>...<a title="sp_sizeof_ellipsis_paren: 31, 168, 185, 201, 216, 230, 243, 255, 266, 276, 285"><font color="red">M</font></a>(<a title="sp_inside_paren: 32, 169, 186, 202, 217, 231, 244, 256, 267, 277, 286, 294"><font color="red">M</font></a>A<a title="sp_inside_paren: 33, 170, 187, 203, 218, 232, 245, 257, 268, 278, 287, 295, 302"><font color="red">M</font></a>)<a title="sp_arith: 34, 171, 188, 204, 219, 233, 246, 258, 269, 279, 288, 296, 303, 309"><font color="red">M</font></a>+<a title="sp_arith: 35, 172, 189, 205, 220, 234, 247, 259, 270, 280, 289, 297, 304, 310, 315"><font color="red">M</font></a>B<a title="sp_inside_paren: 36, 173, 190, 206, 221, 235, 248, 260, 271, 281, 290, 298, 305, 311, 316, 320"><font color="red">M</font></a>)<a title="sp_paren_ellipsis: 272, 324, 321, 317, 312, 306, 299, 291, 282, 37, 261, 249, 236, 222, 207, 191, 174"><font color="red">M</font></a>...<a title="sp_inside_angle: 283, 327, 325, 322, 318, 313, 307, 300, 292, 38, 273, 262, 250, 237, 223, 208, 192, 175"><font color="red">M</font></a>&gt;<a title="REMOVE: 284, 329, 328, 326, 323, 319, 314, 308, 301, 293, 39, 274, 263, 251, 238, 224, 209, 193, 176"><font color="red">M</font></a>
+{<a title="REMOVE: 40"><font color="red">M</font></a>
+ foo1<a title="sp_func_class_paren: 41, 64"><font color="red">M</font></a>(<a title="sp_inside_fparens: 42, 65, 330"><font color="red">M</font></a>)<a title="sp_fparen_brace: 43, 66, 331, 333"><font color="red">M</font></a>{<a title="REMOVE: 44, 67, 332, 334, 335"><font color="red">M</font></a>
+ int<a title="sp_after_type: 45, 68"><font color="red">M</font></a>x<a title="sp_assign: 46, 69, 336"><font color="red">M</font></a>=<a title="sp_assign: 47, 70, 337, 344"><font color="red">M</font></a>sizeof<a title="sp_sizeof_ellipsis: 48, 71, 338, 345, 351"><font color="red">M</font></a>...<a title="sp_sizeof_ellipsis_paren: 49, 72, 339, 346, 352, 357"><font color="red">M</font></a>(<a title="sp_inside_paren: 50, 73, 340, 347, 353, 358, 362"><font color="red">M</font></a>A<a title="sp_inside_paren: 51, 74, 341, 348, 354, 359, 363, 366"><font color="red">M</font></a>)<a title="sp_before_semi: 52, 75, 342, 349, 355, 360, 364, 367, 369"><font color="red">M</font></a>;<a title="REMOVE: 53, 76, 343, 350, 356, 361, 365, 368, 370, 371"><font color="red">M</font></a>
+ bool<a title="sp_after_type: 54, 77"><font color="red">M</font></a>b<a title="sp_assign: 55, 78, 372"><font color="red">M</font></a>=<a title="sp_assign: 56, 79, 373, 378"><font color="red">M</font></a>x<a title="sp_compare: 57, 80, 374, 379, 383"><font color="red">M</font></a>><a title="sp_compare: 58, 81, 375, 380, 384, 387"><font color="red">M</font></a>1<a title="sp_before_semi: 59, 82, 376, 381, 385, 388, 390"><font color="red">M</font></a>;<a title="REMOVE: 60, 83, 377, 382, 386, 389, 391, 392"><font color="red">M</font></a>
+ }<a title="REMOVE: 61, 84"><font color="red">M</font></a>
+}<a title="sp_before_semi: 62"><font color="red">M</font></a>;<a title="REMOVE: 63, 393"><font color="red">M</font></a>
+</pre>
+</body>
+</html>
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/I-842.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/I-842.txt
index e69de29b..e69de29b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/I-842.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/I-842.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/backup.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/backup.h
index 210c6f7c..210c6f7c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/backup.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/backup.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/class_enum_struct_union.csv b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/class_enum_struct_union.csv
new file mode 100644
index 00000000..5b8e9e86
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/class_enum_struct_union.csv
@@ -0,0 +1,685 @@
+number of loops,1,
+language,CPP,
+Line,Tag,Parent_type,Type of the parent,Column,Orig Col Strt,Orig Col End,Orig Sp Before,Br,Lvl,pp,Flags,Nl Before,Nl After,Text,
+1,COMMENT_MULTI,COMMENT_WHOLE,PARENT_NOT_SET,1,4,7,3,0,0,0,"",9,0," /**␤ * the enum (and variable declarations thereof) could be of␤ * the following forms:␤ *␤ * ""enum type [: integral_type] { ... } [x, ...]""␤ * ""enum type [: integral_type]""␤ * ""enum class type [: integral_type] { ... } [x, ...]""␤ * ""enum class type [: integral_type]""␤ * ""enum [: integral_type] { ... } x, ...""␤ */"
+10,NEWLINE,NONE,PARENT_NOT_SET,7,7,4,0,0,0,0,"",2,0,
+12,COMMENT_MULTI,COMMENT_WHOLE,PARENT_NOT_SET,1,4,7,0,0,0,0,"",9,0," /**␤ * the class/struct (and variable declarations thereof) could be of␤ * the following forms:␤ *␤ * template<...> class/struct[<...>] [macros/attributes ...] type [: bases ...] { }␤ * template<...> class/struct[<...>] [macros/attributes ...] type␤ * class/struct[ [macros/attributes ...] type [: bases ...] { } [x, ...]␤ * class/struct [macros/attributes ...] type [x, ...]␤ * class/struct [macros/attributes ...] [: bases] { } x, ...␤ */"
+21,NEWLINE,NONE,PARENT_NOT_SET,7,7,1,0,0,0,0,"",2,0,
+23,PREPROC,PP_DEFINE,PARENT_NOT_SET,1,1,2,0,1,1,0,"IN_PREPROC,STMT_START,EXPR_START,DONT_INDENT,PUNCTUATOR",0,0," #"
+23,PP_DEFINE,NONE,PARENT_NOT_SET,2,2,8,0,1,1,0,"IN_PREPROC,FORCE_SPACE",0,0," define"
+23,MACRO_FUNC,NONE,PARENT_NOT_SET,9,9,16,1,1,1,0,"IN_PREPROC,EXPR_START",0,0," ALIGNAS"
+23,FPAREN_OPEN,MACRO_FUNC,PARENT_NOT_SET,16,16,17,0,1,1,0,"IN_PREPROC,PUNCTUATOR",0,0," ("
+23,WORD,NONE,PARENT_NOT_SET,17,17,31,0,1,2,0,"IN_PREPROC,IN_FCN_CALL,EXPR_START",0,0," byte_alignment"
+23,FPAREN_CLOSE,MACRO_FUNC,PARENT_NOT_SET,31,31,32,0,1,1,0,"IN_PREPROC,IN_FCN_CALL,PUNCTUATOR",0,0," )"
+23,ATTRIBUTE,NONE,PARENT_NOT_SET,33,33,46,1,1,1,0,"IN_PREPROC",0,0," __attribute__"
+23,FPAREN_OPEN,ATTRIBUTE,PARENT_NOT_SET,46,46,47,0,1,1,0,"IN_PREPROC,PUNCTUATOR",0,0," ("
+23,PAREN_OPEN,NONE,PARENT_NOT_SET,47,47,48,0,1,2,0,"IN_PREPROC,EXPR_START,PUNCTUATOR",0,0," ("
+23,FUNC_CALL,NONE,PARENT_NOT_SET,48,48,55,0,1,3,0,"IN_PREPROC,EXPR_START",0,0," aligned"
+23,FPAREN_OPEN,FUNC_CALL,PARENT_NOT_SET,55,55,56,0,1,3,0,"IN_PREPROC,PUNCTUATOR",0,0," ("
+23,WORD,NONE,PARENT_NOT_SET,56,56,70,0,1,4,0,"IN_PREPROC,IN_FCN_CALL,EXPR_START",0,0," byte_alignment"
+23,FPAREN_CLOSE,FUNC_CALL,PARENT_NOT_SET,70,70,71,0,1,3,0,"IN_PREPROC,IN_FCN_CALL,PUNCTUATOR",0,0," )"
+23,PAREN_CLOSE,NONE,PARENT_NOT_SET,71,71,72,0,1,2,0,"IN_PREPROC,PUNCTUATOR",0,0," )"
+23,FPAREN_CLOSE,ATTRIBUTE,PARENT_NOT_SET,72,72,73,0,1,1,0,"IN_PREPROC,PUNCTUATOR",0,0," )"
+23,NEWLINE,NONE,PARENT_NOT_SET,73,73,1,0,0,0,0,"",2,0,
+25,PREPROC,PP_IF,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_PREPROC,DONT_INDENT,PUNCTUATOR",0,0," #"
+25,PP_IF,NONE,PARENT_NOT_SET,2,2,4,0,0,0,1,"IN_PREPROC,FORCE_SPACE",0,0," if"
+25,PP_DEFINED,NONE,PARENT_NOT_SET,5,5,12,1,0,0,1,"IN_PREPROC,EXPR_START",0,0," defined"
+25,PAREN_OPEN,NONE,PARENT_NOT_SET,13,13,14,1,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," ("
+25,WORD,NONE,PARENT_NOT_SET,14,14,22,0,0,0,1,"IN_PREPROC,EXPR_START",0,0," __unix__"
+25,PAREN_CLOSE,NONE,PARENT_NOT_SET,22,22,23,0,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," )"
+25,BOOL,NONE,PARENT_NOT_SET,24,24,26,1,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," ||"
+25,PAREN_OPEN,NONE,PARENT_NOT_SET,27,27,28,1,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," ("
+25,PP_DEFINED,NONE,PARENT_NOT_SET,28,28,35,0,0,0,1,"IN_PREPROC,EXPR_START",0,0," defined"
+25,PAREN_OPEN,NONE,PARENT_NOT_SET,36,36,37,1,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," ("
+25,WORD,NONE,PARENT_NOT_SET,37,37,46,0,0,0,1,"IN_PREPROC,EXPR_START",0,0," __APPLE__"
+25,PAREN_CLOSE,NONE,PARENT_NOT_SET,46,46,47,0,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," )"
+25,BOOL,NONE,PARENT_NOT_SET,48,48,50,1,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," &&"
+25,PP_DEFINED,NONE,PARENT_NOT_SET,51,51,58,1,0,0,1,"IN_PREPROC",0,0," defined"
+25,PAREN_OPEN,NONE,PARENT_NOT_SET,59,59,60,1,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," ("
+25,WORD,NONE,PARENT_NOT_SET,60,60,68,0,0,0,1,"IN_PREPROC,EXPR_START",0,0," __MACH__"
+25,PAREN_CLOSE,NONE,PARENT_NOT_SET,68,68,69,0,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," )"
+25,PAREN_CLOSE,NONE,PARENT_NOT_SET,69,69,70,0,0,0,1,"IN_PREPROC,PUNCTUATOR",0,0," )"
+25,NEWLINE,NONE,PARENT_NOT_SET,70,70,1,0,0,0,1,"",1,0,
+26,PREPROC,PP_DEFINE,PARENT_NOT_SET,1,1,2,0,1,1,1,"IN_PREPROC,STMT_START,EXPR_START,DONT_INDENT,PUNCTUATOR",0,0," #"
+26,PP_DEFINE,NONE,PARENT_NOT_SET,2,2,8,0,1,1,1,"IN_PREPROC,FORCE_SPACE",0,0," define"
+26,MACRO,NONE,PARENT_NOT_SET,9,9,19,1,1,1,1,"IN_PREPROC,FORCE_SPACE",0,0," API_EXPORT"
+26,ATTRIBUTE,NONE,PARENT_NOT_SET,20,20,33,1,1,1,1,"IN_PREPROC,EXPR_START",0,0," __attribute__"
+26,FPAREN_OPEN,ATTRIBUTE,PARENT_NOT_SET,34,34,35,1,1,1,1,"IN_PREPROC,STMT_START,EXPR_START,PUNCTUATOR",0,0," ("
+26,PAREN_OPEN,NONE,PARENT_NOT_SET,35,35,36,0,1,2,1,"IN_PREPROC,EXPR_START,PUNCTUATOR",0,0," ("
+26,FUNC_CALL,NONE,PARENT_NOT_SET,36,36,46,0,1,3,1,"IN_PREPROC,EXPR_START",0,0," visibility"
+26,FPAREN_OPEN,FUNC_CALL,PARENT_NOT_SET,46,46,47,0,1,3,1,"IN_PREPROC,PUNCTUATOR",0,0," ("
+26,STRING,NONE,PARENT_NOT_SET,47,47,56,0,1,4,1,"IN_PREPROC,IN_FCN_CALL,EXPR_START",0,0," ""default"""
+26,FPAREN_CLOSE,FUNC_CALL,PARENT_NOT_SET,56,56,57,0,1,3,1,"IN_PREPROC,IN_FCN_CALL,PUNCTUATOR",0,0," )"
+26,PAREN_CLOSE,NONE,PARENT_NOT_SET,57,57,58,0,1,2,1,"IN_PREPROC,PUNCTUATOR",0,0," )"
+26,FPAREN_CLOSE,ATTRIBUTE,PARENT_NOT_SET,58,58,59,0,1,1,1,"IN_PREPROC,PUNCTUATOR",0,0," )"
+26,NEWLINE,NONE,PARENT_NOT_SET,59,59,1,0,0,0,1,"",1,0,
+27,PREPROC,PP_ELSE,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_PREPROC,DONT_INDENT,PUNCTUATOR",0,0," #"
+27,PP_ELSE,NONE,PP_IF,2,2,6,0,0,0,1,"IN_PREPROC,FORCE_SPACE",0,0," elif"
+27,PP_DEFINED,NONE,PARENT_NOT_SET,7,7,14,1,0,0,1,"IN_PREPROC,FORCE_SPACE,EXPR_START",0,0," defined"
+27,WORD,NONE,PARENT_NOT_SET,15,15,21,1,0,0,1,"IN_PREPROC",0,0," _WIN32"
+27,NEWLINE,NONE,PARENT_NOT_SET,21,21,1,0,0,0,1,"",1,0,
+28,PREPROC,PP_DEFINE,PARENT_NOT_SET,1,1,2,0,1,1,1,"IN_PREPROC,STMT_START,EXPR_START,DONT_INDENT,PUNCTUATOR",0,0," #"
+28,PP_DEFINE,NONE,PARENT_NOT_SET,2,2,8,0,1,1,1,"IN_PREPROC,FORCE_SPACE",0,0," define"
+28,MACRO,NONE,PARENT_NOT_SET,9,9,19,1,1,1,1,"IN_PREPROC,FORCE_SPACE",0,0," API_EXPORT"
+28,DECLSPEC,NONE,PARENT_NOT_SET,20,20,30,1,1,1,1,"IN_PREPROC,STMT_START,EXPR_START",0,0," __declspec"
+28,PAREN_OPEN,DECLSPEC,PARENT_NOT_SET,30,30,31,0,1,1,1,"IN_PREPROC,PUNCTUATOR",0,0," ("
+28,WORD,NONE,PARENT_NOT_SET,31,31,40,0,1,2,1,"IN_PREPROC,EXPR_START",0,0," dllexport"
+28,PAREN_CLOSE,DECLSPEC,PARENT_NOT_SET,40,40,41,0,1,1,1,"IN_PREPROC,PUNCTUATOR",0,0," )"
+28,NEWLINE,NONE,PARENT_NOT_SET,41,41,1,0,0,0,1,"",1,0,
+29,PREPROC,PP_ELSE,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_PREPROC,DONT_INDENT,PUNCTUATOR",0,0," #"
+29,PP_ELSE,NONE,PP_IF,2,2,6,0,0,0,1,"IN_PREPROC",0,0," else"
+29,NEWLINE,NONE,PARENT_NOT_SET,6,6,1,0,0,0,1,"",1,0,
+30,PREPROC,PP_DEFINE,PARENT_NOT_SET,1,1,2,0,1,1,1,"IN_PREPROC,STMT_START,EXPR_START,DONT_INDENT,PUNCTUATOR",0,0," #"
+30,PP_DEFINE,NONE,PARENT_NOT_SET,2,2,8,0,1,1,1,"IN_PREPROC,FORCE_SPACE",0,0," define"
+30,MACRO,NONE,PARENT_NOT_SET,9,9,19,1,1,1,1,"IN_PREPROC",0,0," API_EXPORT"
+30,NEWLINE,NONE,PARENT_NOT_SET,19,19,1,0,0,0,1,"",1,0,
+31,PREPROC,PP_ENDIF,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_PREPROC,DONT_INDENT,PUNCTUATOR",0,0," #"
+31,PP_ENDIF,NONE,PP_IF,2,2,7,0,0,0,0,"IN_PREPROC",0,0," endif"
+31,NEWLINE,NONE,PARENT_NOT_SET,7,7,1,0,0,0,0,"",2,0,
+33,NAMESPACE,NONE,PARENT_NOT_SET,1,1,10,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," namespace"
+33,WORD,NAMESPACE,PARENT_NOT_SET,11,11,26,1,0,0,0,"",0,0," outer_namespace"
+33,NEWLINE,NONE,PARENT_NOT_SET,26,26,1,0,0,0,0,"",1,0,
+34,BRACE_OPEN,NAMESPACE,PARENT_NOT_SET,1,1,2,0,0,0,0,"PUNCTUATOR",0,0," {"
+34,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,1,1,0,"IN_NAMESPACE",2,0,
+36,NAMESPACE,NONE,PARENT_NOT_SET,1,1,10,0,1,1,0,"IN_NAMESPACE,FORCE_SPACE,STMT_START,EXPR_START",0,0," namespace"
+36,WORD,NAMESPACE,PARENT_NOT_SET,11,11,26,1,1,1,0,"IN_NAMESPACE",0,0," inner_namespace"
+36,NEWLINE,NONE,PARENT_NOT_SET,26,26,1,0,1,1,0,"IN_NAMESPACE",1,0,
+37,BRACE_OPEN,NAMESPACE,PARENT_NOT_SET,1,1,2,0,1,1,0,"IN_NAMESPACE,PUNCTUATOR",0,0," {"
+37,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,2,2,0,"IN_NAMESPACE",2,0,
+39,CLASS,NONE,PARENT_NOT_SET,1,1,6,0,2,2,0,"IN_NAMESPACE,FORCE_SPACE,STMT_START,EXPR_START",0,0," class"
+39,TYPE,CLASS,PARENT_NOT_SET,7,7,12,1,2,2,0,"IN_NAMESPACE",0,0," Base1"
+39,BRACE_OPEN,CLASS,PARENT_NOT_SET,13,13,14,1,2,2,0,"IN_CLASS,IN_NAMESPACE,ONE_LINER,EMPTY_BODY,PUNCTUATOR",0,0," {"
+39,BRACE_CLOSE,CLASS,PARENT_NOT_SET,15,15,16,1,2,2,0,"IN_CLASS,IN_NAMESPACE,ONE_LINER,EMPTY_BODY,PUNCTUATOR",0,0," }"
+39,SEMICOLON,CLASS,PARENT_NOT_SET,16,16,17,0,2,2,0,"PUNCTUATOR",0,0," ;"
+39,NEWLINE,NONE,PARENT_NOT_SET,17,17,1,0,2,2,0,"",2,0,
+41,TEMPLATE,NONE,PARENT_NOT_SET,1,1,9,0,2,2,0,"STMT_START,EXPR_START",0,0," template"
+41,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,9,9,10,0,2,2,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
+41,TYPENAME,NONE,PARENT_NOT_SET,10,10,18,0,2,3,0,"IN_TEMPLATE,EXPR_START",0,0," typename"
+41,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,18,18,19,0,2,2,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
+41,CLASS,TEMPLATE,PARENT_NOT_SET,20,20,25,1,2,2,0,"FORCE_SPACE,EXPR_START",0,0," class"
+41,TYPE,CLASS,PARENT_NOT_SET,26,26,31,1,2,2,0,"",0,0," Base2"
+41,BRACE_OPEN,CLASS,PARENT_NOT_SET,32,32,33,1,2,2,0,"IN_CLASS,ONE_LINER,EMPTY_BODY,PUNCTUATOR",0,0," {"
+41,BRACE_CLOSE,CLASS,PARENT_NOT_SET,34,34,35,1,2,2,0,"IN_CLASS,ONE_LINER,EMPTY_BODY,PUNCTUATOR",0,0," }"
+41,SEMICOLON,CLASS,PARENT_NOT_SET,35,35,36,0,2,2,0,"PUNCTUATOR",0,0," ;"
+41,NEWLINE,NONE,PARENT_NOT_SET,36,36,1,0,2,2,0,"",2,0,
+43,BRACE_CLOSE,NAMESPACE,PARENT_NOT_SET,1,1,2,0,1,1,0,"PUNCTUATOR",0,0," }"
+43,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,1,1,0,"",2,0,
+45,BRACE_CLOSE,NAMESPACE,PARENT_NOT_SET,1,1,2,0,0,0,0,"PUNCTUATOR",0,0," }"
+45,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,0,0,0,"",2,0,
+47,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,82,0,0,0,0,"",0,0," // template<...> class/struct[<...>] [macros/attributes ...] type : bases ... { }"
+47,NEWLINE,NONE,PARENT_NOT_SET,82,82,1,0,0,0,0,"",1,0,
+48,TEMPLATE,NONE,PARENT_NOT_SET,1,1,9,0,0,0,0,"STMT_START,EXPR_START",0,0," template"
+48,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,9,9,10,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
+48,TYPENAME,NONE,PARENT_NOT_SET,10,10,18,0,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," typename"
+48,COMMA,NONE,PARENT_NOT_SET,18,18,19,0,0,1,0,"IN_TEMPLATE,PUNCTUATOR",0,0," ,"
+48,TYPENAME,NONE,PARENT_NOT_SET,20,20,28,1,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," typename"
+48,ELLIPSIS,NONE,PARENT_NOT_SET,29,29,32,1,0,1,0,"IN_TEMPLATE,PUNCTUATOR",0,0," ..."
+48,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,32,32,33,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
+48,NEWLINE,NONE,PARENT_NOT_SET,33,33,1,0,0,0,0,"",1,0,
+49,CLASS,TEMPLATE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,EXPR_START",0,0," class"
+49,WORD,NONE,PARENT_NOT_SET,7,7,17,1,0,0,0,"FORCE_SPACE",0,0," API_EXPORT"
+49,ATTRIBUTE,NONE,PARENT_NOT_SET,18,18,31,1,0,0,0,"",0,0," __attribute__"
+49,FPAREN_OPEN,ATTRIBUTE,PARENT_NOT_SET,31,31,32,0,0,0,0,"PUNCTUATOR",0,0," ("
+49,PAREN_OPEN,NONE,PARENT_NOT_SET,32,32,33,0,0,1,0,"EXPR_START,PUNCTUATOR",0,0," ("
+49,WORD,NONE,PARENT_NOT_SET,33,33,47,0,0,2,0,"EXPR_START",0,0," __deprecated__"
+49,PAREN_CLOSE,NONE,PARENT_NOT_SET,47,47,48,0,0,1,0,"PUNCTUATOR",0,0," )"
+49,FPAREN_CLOSE,ATTRIBUTE,PARENT_NOT_SET,48,48,49,0,0,0,0,"PUNCTUATOR",0,0," )"
+49,MACRO_FUNC_CALL,NONE,PARENT_NOT_SET,50,50,57,1,0,0,0,"",0,0," ALIGNAS"
+49,FPAREN_OPEN,MACRO_FUNC_CALL,PARENT_NOT_SET,57,57,58,0,0,0,0,"PUNCTUATOR",0,0," ("
+49,NUMBER,NONE,PARENT_NOT_SET,58,58,59,0,0,1,0,"EXPR_START",0,0," 4"
+49,FPAREN_CLOSE,MACRO_FUNC_CALL,PARENT_NOT_SET,59,59,60,0,0,0,0,"PUNCTUATOR",0,0," )"
+49,TYPE,CLASS,PARENT_NOT_SET,61,61,63,1,0,0,0,"",0,0," c1"
+49,NEWLINE,NONE,PARENT_NOT_SET,63,63,1,0,0,0,0,"",1,0,
+50,CLASS_COLON,CLASS,PARENT_NOT_SET,9,1,2,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," :"
+50,QUALIFIER,NONE,PARENT_NOT_SET,11,3,9,1,0,0,0,"IN_CLASS_BASE,FORCE_SPACE,STMT_START,EXPR_START",0,0," public"
+50,TYPE,NONE,PARENT_NOT_SET,18,10,25,1,0,0,0,"IN_CLASS_BASE",0,0," outer_namespace"
+50,DC_MEMBER,NONE,PARENT_NOT_SET,33,25,27,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
+50,TYPE,NONE,PARENT_NOT_SET,35,27,42,0,0,0,0,"IN_CLASS_BASE",0,0," inner_namespace"
+50,DC_MEMBER,NONE,PARENT_NOT_SET,50,42,44,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
+50,TYPE,NONE,PARENT_NOT_SET,52,44,49,0,0,0,0,"IN_CLASS_BASE",0,0," Base1"
+50,COMMA,NONE,PARENT_NOT_SET,57,49,50,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ,"
+50,NEWLINE,NONE,PARENT_NOT_SET,58,50,3,0,0,0,0,"",1,0,
+51,QUALIFIER,NONE,PARENT_NOT_SET,9,3,9,0,0,0,0,"IN_CLASS_BASE,FORCE_SPACE,EXPR_START",0,0," public"
+51,TYPE,NONE,PARENT_NOT_SET,16,10,25,1,0,0,0,"IN_CLASS_BASE",0,0," outer_namespace"
+51,DC_MEMBER,NONE,PARENT_NOT_SET,31,25,27,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
+51,TYPE,NONE,PARENT_NOT_SET,33,27,42,0,0,0,0,"IN_CLASS_BASE",0,0," inner_namespace"
+51,DC_MEMBER,NONE,PARENT_NOT_SET,48,42,44,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
+51,TYPE,NONE,PARENT_NOT_SET,50,44,49,0,0,0,0,"IN_CLASS_BASE",0,0," Base2"
+51,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,55,49,50,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," <"
+51,TYPE,NONE,PARENT_NOT_SET,56,50,65,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE,EXPR_START",0,0," outer_namespace"
+51,DC_MEMBER,NONE,PARENT_NOT_SET,71,65,67,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
+51,TYPE,NONE,PARENT_NOT_SET,73,67,82,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE",0,0," inner_namespace"
+51,DC_MEMBER,NONE,PARENT_NOT_SET,88,82,84,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
+51,TYPE,NONE,PARENT_NOT_SET,90,84,89,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE",0,0," Base1"
+51,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,95,89,90,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," >"
+51,NEWLINE,NONE,PARENT_NOT_SET,96,90,1,0,0,0,0,"",1,0,
+52,BRACE_OPEN,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_CLASS,EXPR_START,EMPTY_BODY,PUNCTUATOR",0,0," {"
+52,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,1,1,0,"IN_CLASS",2,0,
+54,BRACE_CLOSE,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_CLASS,EMPTY_BODY,PUNCTUATOR",0,0," }"
+54,SEMICOLON,CLASS,PARENT_NOT_SET,2,2,3,0,0,0,0,"PUNCTUATOR",0,0," ;"
+54,NEWLINE,NONE,PARENT_NOT_SET,3,3,1,0,0,0,0,"",2,0,
+56,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,70,0,0,0,0,"",0,0," // template<...> class/struct[<...>] [macros/attributes ...] type { }"
+56,NEWLINE,NONE,PARENT_NOT_SET,70,70,1,0,0,0,0,"",1,0,
+57,TEMPLATE,NONE,PARENT_NOT_SET,1,1,9,0,0,0,0,"STMT_START,EXPR_START",0,0," template"
+57,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,9,9,10,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
+57,TYPENAME,NONE,PARENT_NOT_SET,10,10,18,0,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," typename"
+57,COMMA,NONE,PARENT_NOT_SET,18,18,19,0,0,1,0,"IN_TEMPLATE,PUNCTUATOR",0,0," ,"
+57,TYPENAME,NONE,PARENT_NOT_SET,20,20,28,1,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," typename"
+57,ELLIPSIS,NONE,PARENT_NOT_SET,29,29,32,1,0,1,0,"IN_TEMPLATE,PUNCTUATOR",0,0," ..."
+57,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,32,32,33,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
+57,NEWLINE,NONE,PARENT_NOT_SET,33,33,1,0,0,0,0,"",1,0,
+58,CLASS,TEMPLATE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,EXPR_START",0,0," class"
+58,WORD,NONE,PARENT_NOT_SET,7,7,17,1,0,0,0,"FORCE_SPACE",0,0," API_EXPORT"
+58,TYPE,CLASS,PARENT_NOT_SET,18,18,20,1,0,0,0,"",0,0," c2"
+58,NEWLINE,NONE,PARENT_NOT_SET,20,20,1,0,0,0,0,"",1,0,
+59,BRACE_OPEN,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_CLASS,PUNCTUATOR",0,0," {"
+59,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,1,1,0,"IN_CLASS",1,0,
+60,ACCESS,NONE,PARENT_NOT_SET,1,1,7,0,1,1,0,"IN_CLASS,STMT_START,EXPR_START",0,0," public"
+60,ACCESS_COLON,NONE,PARENT_NOT_SET,7,7,8,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," :"
+60,NEWLINE,NONE,PARENT_NOT_SET,8,8,4,0,1,1,0,"IN_CLASS",2,0,
+62,TEMPLATE,NONE,PARENT_NOT_SET,1,4,12,0,1,1,0,"IN_CLASS,STMT_START,EXPR_START",0,0," template"
+62,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,9,12,13,0,1,1,0,"IN_TEMPLATE,IN_CLASS,PUNCTUATOR",0,0," <"
+62,TYPENAME,NONE,PARENT_NOT_SET,10,13,21,0,1,2,0,"IN_TEMPLATE,IN_CLASS,FORCE_SPACE,EXPR_START",0,0," typename"
+62,TYPE,NONE,PARENT_NOT_SET,19,22,23,1,1,2,0,"IN_TEMPLATE,IN_CLASS",0,0," T"
+62,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,20,23,24,0,1,1,0,"IN_TEMPLATE,IN_CLASS,PUNCTUATOR",0,0," >"
+62,NEWLINE,NONE,PARENT_NOT_SET,21,24,4,0,1,1,0,"IN_CLASS",1,0,
+63,STRUCT,TEMPLATE,PARENT_NOT_SET,1,4,10,0,1,1,0,"IN_CLASS,FORCE_SPACE,EXPR_START",0,0," struct"
+63,TYPE,STRUCT,PARENT_NOT_SET,8,11,22,1,1,1,0,"IN_CLASS",0,0," inner_class"
+63,NEWLINE,NONE,PARENT_NOT_SET,19,22,4,0,1,1,0,"IN_CLASS",1,0,
+64,BRACE_OPEN,STRUCT,PARENT_NOT_SET,1,4,5,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," {"
+64,NEWLINE,NONE,PARENT_NOT_SET,2,5,7,0,2,2,0,"IN_STRUCT,IN_CLASS",1,0,
+65,QUALIFIER,NONE,PARENT_NOT_SET,9,7,13,0,2,2,0,"IN_STRUCT,IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE",0,0," static"
+65,TYPE,NONE,PARENT_NOT_SET,16,14,25,1,2,2,0,"IN_STRUCT,IN_CLASS,VAR_TYPE",0,0," inner_class"
+65,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,27,25,26,0,2,2,0,"IN_STRUCT,IN_TEMPLATE,IN_CLASS,PUNCTUATOR",0,0," <"
+65,TYPE,NONE,PARENT_NOT_SET,28,26,27,0,2,3,0,"IN_STRUCT,IN_TEMPLATE,IN_CLASS,EXPR_START",0,0," T"
+65,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,29,27,28,0,2,2,0,"IN_STRUCT,IN_TEMPLATE,IN_CLASS,PUNCTUATOR",0,0," >"
+65,PTR_TYPE,NONE,PARENT_NOT_SET,31,29,30,1,2,2,0,"IN_STRUCT,IN_CLASS,EXPR_START,VAR_TYPE,PUNCTUATOR",0,0," *"
+65,WORD,NONE,PARENT_NOT_SET,32,30,43,0,2,2,0,"IN_STRUCT,IN_CLASS,EXPR_START,VAR_DEF,VAR_1ST",0,0," m_inner_class"
+65,SEMICOLON,NONE,PARENT_NOT_SET,45,43,44,0,2,2,0,"IN_STRUCT,IN_CLASS,PUNCTUATOR",0,0," ;"
+65,NEWLINE,NONE,PARENT_NOT_SET,46,44,4,0,2,2,0,"IN_STRUCT,IN_CLASS",1,0,
+66,BRACE_CLOSE,STRUCT,PARENT_NOT_SET,1,4,5,0,1,1,0,"IN_STRUCT,IN_CLASS,PUNCTUATOR",0,0," }"
+66,SEMICOLON,STRUCT,PARENT_NOT_SET,2,5,6,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," ;"
+66,NEWLINE,NONE,PARENT_NOT_SET,3,6,1,0,1,1,0,"IN_CLASS",1,0,
+67,BRACE_CLOSE,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_CLASS,PUNCTUATOR",0,0," }"
+67,SEMICOLON,CLASS,PARENT_NOT_SET,2,2,3,0,0,0,0,"PUNCTUATOR",0,0," ;"
+67,NEWLINE,NONE,PARENT_NOT_SET,3,3,1,0,0,0,0,"",2,0,
+69,TEMPLATE,NONE,PARENT_NOT_SET,1,1,9,0,0,0,0,"STMT_START,EXPR_START",0,0," template"
+69,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,9,9,10,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
+69,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,10,10,11,0,0,0,0,"IN_TEMPLATE,EXPR_START,PUNCTUATOR",0,0," >"
+69,TEMPLATE,NONE,PARENT_NOT_SET,12,12,20,1,0,0,0,"EXPR_START",0,0," template"
+69,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,20,20,21,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
+69,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,21,21,22,0,0,0,0,"IN_TEMPLATE,EXPR_START,PUNCTUATOR",0,0," >"
+69,STRUCT,TEMPLATE,PARENT_NOT_SET,23,23,29,1,0,0,0,"FORCE_SPACE,EXPR_START",0,0," struct"
+69,WORD,NONE,PARENT_NOT_SET,30,30,40,1,0,0,0,"FORCE_SPACE",0,0," API_EXPORT"
+69,TYPE,NONE,PARENT_NOT_SET,41,41,43,1,0,0,0,"",0,0," c2"
+69,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,43,43,44,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
+69,TYPE,NONE,PARENT_NOT_SET,44,44,47,0,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," int"
+69,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,47,47,48,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
+69,DC_MEMBER,NONE,PARENT_NOT_SET,48,48,50,0,0,0,0,"EXPR_START,PUNCTUATOR",0,0," ::"
+69,TYPE,STRUCT,PARENT_NOT_SET,50,50,61,0,0,0,0,"VAR_TYPE",0,0," inner_class"
+69,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,61,61,62,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
+69,TYPE,NONE,PARENT_NOT_SET,62,62,65,0,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," int"
+69,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,65,65,66,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
+69,PTR_TYPE,NONE,PARENT_NOT_SET,67,67,68,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
+69,TYPE,NONE,PARENT_NOT_SET,68,68,70,0,0,0,0,"EXPR_START",0,0," c2"
+69,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,70,70,71,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
+69,TYPE,NONE,PARENT_NOT_SET,71,71,74,0,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," int"
+69,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,74,74,75,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
+69,DC_MEMBER,NONE,PARENT_NOT_SET,75,75,77,0,0,0,0,"EXPR_START,PUNCTUATOR",0,0," ::"
+69,TYPE,NONE,PARENT_NOT_SET,77,77,88,0,0,0,0,"",0,0," inner_class"
+69,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,88,88,89,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
+69,TYPE,NONE,PARENT_NOT_SET,89,89,92,0,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," int"
+69,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,92,92,93,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
+69,DC_MEMBER,NONE,PARENT_NOT_SET,93,93,95,0,0,0,0,"EXPR_START,PUNCTUATOR",0,0," ::"
+69,WORD,NONE,PARENT_NOT_SET,95,95,108,0,0,0,0,"VAR_DEF,VAR_1ST,LVALUE",0,0," m_inner_class"
+69,ASSIGN,NONE,PARENT_NOT_SET,109,109,110,1,0,0,0,"PUNCTUATOR",0,0," ="
+69,WORD,NONE,PARENT_NOT_SET,111,111,118,1,0,0,0,"EXPR_START",0,0," nullptr"
+69,SEMICOLON,STRUCT,PARENT_NOT_SET,118,118,119,0,0,0,0,"PUNCTUATOR",0,0," ;"
+69,NEWLINE,NONE,PARENT_NOT_SET,119,119,1,0,0,0,0,"",2,0,
+71,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,66,0,0,0,0,"",0,0," // template<...> class/struct[<...>] [macros/attributes ...] type"
+71,NEWLINE,NONE,PARENT_NOT_SET,66,66,1,0,0,0,0,"",1,0,
+72,TEMPLATE,NONE,PARENT_NOT_SET,1,1,9,0,0,0,0,"STMT_START,EXPR_START",0,0," template"
+72,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,9,9,10,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," <"
+72,TYPENAME,NONE,PARENT_NOT_SET,10,10,18,0,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," typename"
+72,COMMA,NONE,PARENT_NOT_SET,18,18,19,0,0,1,0,"IN_TEMPLATE,PUNCTUATOR",0,0," ,"
+72,TYPENAME,NONE,PARENT_NOT_SET,20,20,28,1,0,1,0,"IN_TEMPLATE,EXPR_START",0,0," typename"
+72,ELLIPSIS,NONE,PARENT_NOT_SET,29,29,32,1,0,1,0,"IN_TEMPLATE,PUNCTUATOR",0,0," ..."
+72,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,32,32,33,0,0,0,0,"IN_TEMPLATE,PUNCTUATOR",0,0," >"
+72,NEWLINE,NONE,PARENT_NOT_SET,33,33,1,0,0,0,0,"",1,0,
+73,CLASS,TEMPLATE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,EXPR_START,INCOMPLETE",0,0," class"
+73,WORD,NONE,PARENT_NOT_SET,7,7,17,1,0,0,0,"FORCE_SPACE,INCOMPLETE",0,0," API_EXPORT"
+73,TYPE,CLASS,PARENT_NOT_SET,18,18,20,1,0,0,0,"INCOMPLETE",0,0," c2"
+73,SEMICOLON,CLASS,PARENT_NOT_SET,20,20,21,0,0,0,0,"PUNCTUATOR",0,0," ;"
+73,NEWLINE,NONE,PARENT_NOT_SET,21,21,1,0,0,0,0,"",2,0,
+75,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,68,0,0,0,0,"",0,0," // class/struct [macros/attributes ...] type : bases ... { } x, ..."
+75,NEWLINE,NONE,PARENT_NOT_SET,68,68,1,0,0,0,0,"",1,0,
+76,CLASS,NONE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," class"
+76,WORD,NONE,PARENT_NOT_SET,7,7,17,1,0,0,0,"FORCE_SPACE",0,0," API_EXPORT"
+76,ATTRIBUTE,NONE,PARENT_NOT_SET,18,18,31,1,0,0,0,"",0,0," __attribute__"
+76,FPAREN_OPEN,ATTRIBUTE,PARENT_NOT_SET,31,31,32,0,0,0,0,"PUNCTUATOR",0,0," ("
+76,PAREN_OPEN,NONE,PARENT_NOT_SET,32,32,33,0,0,1,0,"EXPR_START,PUNCTUATOR",0,0," ("
+76,WORD,NONE,PARENT_NOT_SET,33,33,47,0,0,2,0,"EXPR_START",0,0," __deprecated__"
+76,PAREN_CLOSE,NONE,PARENT_NOT_SET,47,47,48,0,0,1,0,"PUNCTUATOR",0,0," )"
+76,FPAREN_CLOSE,ATTRIBUTE,PARENT_NOT_SET,48,48,49,0,0,0,0,"PUNCTUATOR",0,0," )"
+76,MACRO_FUNC_CALL,NONE,PARENT_NOT_SET,50,50,57,1,0,0,0,"",0,0," ALIGNAS"
+76,FPAREN_OPEN,MACRO_FUNC_CALL,PARENT_NOT_SET,57,57,58,0,0,0,0,"PUNCTUATOR",0,0," ("
+76,NUMBER,NONE,PARENT_NOT_SET,58,58,59,0,0,1,0,"EXPR_START",0,0," 4"
+76,FPAREN_CLOSE,MACRO_FUNC_CALL,PARENT_NOT_SET,59,59,60,0,0,0,0,"PUNCTUATOR",0,0," )"
+76,TYPE,CLASS,PARENT_NOT_SET,61,61,63,1,0,0,0,"VAR_TYPE",0,0," c3"
+76,NEWLINE,NONE,PARENT_NOT_SET,63,63,1,0,0,0,0,"",1,0,
+77,CLASS_COLON,CLASS,PARENT_NOT_SET,9,1,2,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," :"
+77,QUALIFIER,NONE,PARENT_NOT_SET,11,3,9,1,0,0,0,"IN_CLASS_BASE,FORCE_SPACE,STMT_START,EXPR_START",0,0," public"
+77,TYPE,NONE,PARENT_NOT_SET,18,10,25,1,0,0,0,"IN_CLASS_BASE",0,0," outer_namespace"
+77,DC_MEMBER,NONE,PARENT_NOT_SET,33,25,27,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
+77,TYPE,NONE,PARENT_NOT_SET,35,27,42,0,0,0,0,"IN_CLASS_BASE",0,0," inner_namespace"
+77,DC_MEMBER,NONE,PARENT_NOT_SET,50,42,44,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
+77,TYPE,NONE,PARENT_NOT_SET,52,44,49,0,0,0,0,"IN_CLASS_BASE",0,0," Base2"
+77,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,57,49,50,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," <"
+77,TYPE,NONE,PARENT_NOT_SET,58,50,53,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE,EXPR_START",0,0," int"
+77,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,61,53,54,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," >"
+77,COMMA,NONE,PARENT_NOT_SET,62,54,55,0,0,0,0,"IN_CLASS_BASE,EXPR_START,PUNCTUATOR",0,0," ,"
+77,NEWLINE,NONE,PARENT_NOT_SET,63,55,3,0,0,0,0,"",1,0,
+78,QUALIFIER,NONE,PARENT_NOT_SET,9,3,9,0,0,0,0,"IN_CLASS_BASE,FORCE_SPACE,EXPR_START",0,0," public"
+78,TYPE,NONE,PARENT_NOT_SET,16,10,12,1,0,0,0,"IN_CLASS_BASE",0,0," c2"
+78,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,18,12,13,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," <"
+78,TYPE,NONE,PARENT_NOT_SET,19,13,16,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE,EXPR_START",0,0," int"
+78,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,22,16,17,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," >"
+78,DC_MEMBER,NONE,PARENT_NOT_SET,23,17,19,0,0,0,0,"IN_CLASS_BASE,EXPR_START,PUNCTUATOR",0,0," ::"
+78,TYPE,NONE,PARENT_NOT_SET,25,19,30,0,0,0,0,"IN_CLASS_BASE",0,0," inner_class"
+78,ANGLE_OPEN,TEMPLATE,PARENT_NOT_SET,36,30,31,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," <"
+78,TYPE,NONE,PARENT_NOT_SET,37,31,34,0,0,1,0,"IN_TEMPLATE,IN_CLASS_BASE,EXPR_START",0,0," int"
+78,ANGLE_CLOSE,TEMPLATE,PARENT_NOT_SET,40,34,35,0,0,0,0,"IN_TEMPLATE,IN_CLASS_BASE,PUNCTUATOR",0,0," >"
+78,NEWLINE,NONE,PARENT_NOT_SET,41,35,1,0,0,0,0,"",1,0,
+79,BRACE_OPEN,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_CLASS,EXPR_START,PUNCTUATOR",0,0," {"
+79,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,1,1,0,"IN_CLASS",1,0,
+80,ACCESS,NONE,PARENT_NOT_SET,1,1,7,0,1,1,0,"IN_CLASS,STMT_START,EXPR_START",0,0," public"
+80,ACCESS_COLON,NONE,PARENT_NOT_SET,7,7,8,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," :"
+80,NEWLINE,NONE,PARENT_NOT_SET,8,8,4,0,1,1,0,"IN_CLASS",1,0,
+81,FUNC_CLASS_DEF,NONE,PARENT_NOT_SET,1,4,6,0,1,1,0,"IN_CLASS,STMT_START,EXPR_START",0,0," c3"
+81,FPAREN_OPEN,FUNC_CLASS_DEF,PARENT_NOT_SET,3,6,7,0,1,1,0,"IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ("
+81,TYPE,NONE,PARENT_NOT_SET,4,7,10,0,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,FORCE_SPACE,EXPR_START,VAR_TYPE,LVALUE",0,0," int"
+81,WORD,NONE,PARENT_NOT_SET,8,11,12,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,VAR_DEF,LVALUE",0,0," x"
+81,ASSIGN_DEFAULT_ARG,FUNC_PROTO,PARENT_NOT_SET,10,13,14,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ="
+81,NUMBER,NONE,PARENT_NOT_SET,12,15,16,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," 0"
+81,COMMA,NONE,PARENT_NOT_SET,13,16,17,0,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ,"
+81,TYPE,NONE,PARENT_NOT_SET,15,18,21,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,FORCE_SPACE,EXPR_START,VAR_TYPE,LVALUE",0,0," int"
+81,WORD,NONE,PARENT_NOT_SET,19,22,23,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,VAR_DEF,LVALUE",0,0," y"
+81,ASSIGN_DEFAULT_ARG,FUNC_PROTO,PARENT_NOT_SET,21,24,25,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ="
+81,NUMBER,NONE,PARENT_NOT_SET,23,26,27,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," 0"
+81,COMMA,NONE,PARENT_NOT_SET,24,27,28,0,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ,"
+81,TYPE,NONE,PARENT_NOT_SET,26,29,32,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,FORCE_SPACE,EXPR_START,VAR_TYPE,LVALUE",0,0," int"
+81,WORD,NONE,PARENT_NOT_SET,30,33,34,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,VAR_DEF,LVALUE",0,0," z"
+81,ASSIGN_DEFAULT_ARG,FUNC_PROTO,PARENT_NOT_SET,32,35,36,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ="
+81,NUMBER,NONE,PARENT_NOT_SET,34,37,38,1,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," 0"
+81,FPAREN_CLOSE,FUNC_CLASS_DEF,PARENT_NOT_SET,35,38,39,0,1,1,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," )"
+81,CONSTR_COLON,NONE,PARENT_NOT_SET,37,40,41,1,1,1,0,"IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," :"
+81,FUNC_CTOR_VAR,NONE,PARENT_NOT_SET,39,42,45,1,1,1,0,"IN_CONST_ARGS,IN_CLASS,STMT_START,EXPR_START",0,0," m_x"
+81,FPAREN_OPEN,FUNC_CTOR_VAR,PARENT_NOT_SET,42,45,46,0,1,1,0,"IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ("
+81,WORD,NONE,PARENT_NOT_SET,43,46,47,0,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," x"
+81,FPAREN_CLOSE,FUNC_CTOR_VAR,PARENT_NOT_SET,44,47,48,0,1,1,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," )"
+81,COMMA,NONE,PARENT_NOT_SET,45,48,49,0,1,1,0,"IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ,"
+81,FUNC_CTOR_VAR,NONE,PARENT_NOT_SET,47,50,53,1,1,1,0,"IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," m_y"
+81,FPAREN_OPEN,FUNC_CTOR_VAR,PARENT_NOT_SET,50,53,54,0,1,1,0,"IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ("
+81,WORD,NONE,PARENT_NOT_SET,51,54,55,0,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," y"
+81,FPAREN_CLOSE,FUNC_CTOR_VAR,PARENT_NOT_SET,52,55,56,0,1,1,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," )"
+81,COMMA,NONE,PARENT_NOT_SET,53,56,57,0,1,1,0,"IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ,"
+81,FUNC_CTOR_VAR,NONE,PARENT_NOT_SET,55,58,61,1,1,1,0,"IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," m_z"
+81,FPAREN_OPEN,FUNC_CTOR_VAR,PARENT_NOT_SET,58,61,62,0,1,1,0,"IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," ("
+81,WORD,NONE,PARENT_NOT_SET,59,62,63,0,1,2,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,EXPR_START",0,0," z"
+81,FPAREN_CLOSE,FUNC_CTOR_VAR,PARENT_NOT_SET,60,63,64,0,1,1,0,"IN_FCN_CALL,IN_CONST_ARGS,IN_CLASS,PUNCTUATOR",0,0," )"
+81,BRACE_OPEN,FUNC_CLASS_DEF,PARENT_NOT_SET,62,65,66,1,1,1,0,"IN_CLASS,EMPTY_BODY,PUNCTUATOR",0,0," {"
+81,NEWLINE,NONE,PARENT_NOT_SET,63,67,0,0,1,1,0,"IN_CLASS",1,0,
+81,BRACE_CLOSE,FUNC_CLASS_DEF,PARENT_NOT_SET,1,67,68,1,1,1,0,"IN_CLASS,EMPTY_BODY,PUNCTUATOR",0,0," }"
+81,NEWLINE,NONE,PARENT_NOT_SET,2,68,4,0,1,1,0,"IN_CLASS",2,0,
+83,TYPE,NONE,PARENT_NOT_SET,1,4,7,0,1,1,0,"IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE",0,0," int"
+83,WORD,NONE,PARENT_NOT_SET,5,8,11,1,1,1,0,"IN_CLASS,VAR_DEF,VAR_1ST",0,0," m_x"
+83,SEMICOLON,NONE,PARENT_NOT_SET,8,11,12,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," ;"
+83,NEWLINE,NONE,PARENT_NOT_SET,9,12,4,0,1,1,0,"IN_CLASS",1,0,
+84,TYPE,NONE,PARENT_NOT_SET,1,4,7,0,1,1,0,"IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE",0,0," int"
+84,WORD,NONE,PARENT_NOT_SET,5,8,11,1,1,1,0,"IN_CLASS,VAR_DEF,VAR_1ST",0,0," m_y"
+84,SEMICOLON,NONE,PARENT_NOT_SET,8,11,12,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," ;"
+84,NEWLINE,NONE,PARENT_NOT_SET,9,12,4,0,1,1,0,"IN_CLASS",1,0,
+85,TYPE,NONE,PARENT_NOT_SET,1,4,7,0,1,1,0,"IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE",0,0," int"
+85,WORD,NONE,PARENT_NOT_SET,5,8,11,1,1,1,0,"IN_CLASS,VAR_DEF,VAR_1ST",0,0," m_z"
+85,SEMICOLON,NONE,PARENT_NOT_SET,8,11,12,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," ;"
+85,NEWLINE,NONE,PARENT_NOT_SET,9,12,1,0,1,1,0,"IN_CLASS",1,0,
+86,BRACE_CLOSE,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_CLASS,PUNCTUATOR",0,0," }"
+86,WORD,NONE,PARENT_NOT_SET,3,3,6,1,0,0,0,"STMT_START,EXPR_START,VAR_DEF,VAR_1ST,VAR_INLINE",0,0," c31"
+86,COMMA,NONE,PARENT_NOT_SET,6,6,7,0,0,0,0,"PUNCTUATOR",0,0," ,"
+86,PTR_TYPE,CLASS,PARENT_NOT_SET,8,8,9,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
+86,WORD,NONE,PARENT_NOT_SET,9,9,12,0,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE,LVALUE",0,0," c32"
+86,ASSIGN,NONE,PARENT_NOT_SET,13,13,14,1,0,0,0,"PUNCTUATOR",0,0," ="
+86,WORD,NONE,PARENT_NOT_SET,15,15,22,1,0,0,0,"EXPR_START",0,0," nullptr"
+86,COMMA,NONE,PARENT_NOT_SET,22,22,23,0,0,0,0,"PUNCTUATOR",0,0," ,"
+86,PTR_TYPE,CLASS,PARENT_NOT_SET,24,24,25,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
+86,WORD,NONE,PARENT_NOT_SET,25,25,28,0,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," c33"
+86,TSQUARE,NONE,PARENT_NOT_SET,28,28,30,0,0,0,0,"PUNCTUATOR",0,0," []"
+86,ASSIGN,NONE,PARENT_NOT_SET,31,31,32,1,0,0,0,"PUNCTUATOR",0,0," ="
+86,BRACE_OPEN,BRACED_INIT_LIST,PARENT_NOT_SET,33,33,34,1,0,0,0,"EXPR_START,ONE_LINER,PUNCTUATOR",0,0," {"
+86,WORD,NONE,PARENT_NOT_SET,35,35,42,1,1,1,0,"EXPR_START,ONE_LINER",0,0," nullptr"
+86,COMMA,NONE,PARENT_NOT_SET,42,42,43,0,1,1,0,"ONE_LINER,PUNCTUATOR",0,0," ,"
+86,WORD,NONE,PARENT_NOT_SET,44,44,51,1,1,1,0,"EXPR_START,ONE_LINER",0,0," nullptr"
+86,BRACE_CLOSE,BRACED_INIT_LIST,PARENT_NOT_SET,52,52,53,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," }"
+86,COMMA,NONE,PARENT_NOT_SET,53,53,54,0,0,0,0,"PUNCTUATOR",0,0," ,"
+86,WORD,NONE,PARENT_NOT_SET,55,55,58,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE,LVALUE",0,0," c34"
+86,BRACE_OPEN,BRACED_INIT_LIST,PARENT_NOT_SET,58,58,59,0,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
+86,NUMBER,NONE,PARENT_NOT_SET,60,60,61,1,1,1,0,"STMT_START,EXPR_START,ONE_LINER",0,0," 0"
+86,COMMA,NONE,PARENT_NOT_SET,61,61,62,0,1,1,0,"ONE_LINER,PUNCTUATOR",0,0," ,"
+86,NUMBER,NONE,PARENT_NOT_SET,63,63,64,1,1,1,0,"EXPR_START,ONE_LINER",0,0," 1"
+86,COMMA,NONE,PARENT_NOT_SET,64,64,65,0,1,1,0,"ONE_LINER,PUNCTUATOR",0,0," ,"
+86,NUMBER,NONE,PARENT_NOT_SET,66,66,67,1,1,1,0,"EXPR_START,ONE_LINER",0,0," 2"
+86,BRACE_CLOSE,BRACED_INIT_LIST,PARENT_NOT_SET,67,67,68,0,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," }"
+86,COMMA,NONE,PARENT_NOT_SET,68,68,69,0,0,0,0,"PUNCTUATOR",0,0," ,"
+86,PTR_TYPE,CLASS,PARENT_NOT_SET,70,70,71,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
+86,QUALIFIER,NONE,PARENT_NOT_SET,72,72,77,1,0,0,0,"FORCE_SPACE,EXPR_START",0,0," const"
+86,FUNC_CALL,NONE,PARENT_NOT_SET,78,78,81,1,0,0,0,"VAR_DEF,VAR_INLINE",0,0," c35"
+86,FPAREN_OPEN,FUNC_CALL,PARENT_NOT_SET,81,81,82,0,0,0,0,"PUNCTUATOR",0,0," ("
+86,WORD,NONE,PARENT_NOT_SET,82,82,89,0,0,1,0,"IN_FCN_CALL,EXPR_START",0,0," nullptr"
+86,FPAREN_CLOSE,FUNC_CALL,PARENT_NOT_SET,89,89,90,0,0,0,0,"IN_FCN_CALL,PUNCTUATOR",0,0," )"
+86,COMMA,NONE,PARENT_NOT_SET,90,90,91,0,0,0,0,"PUNCTUATOR",0,0," ,"
+86,FUNC_CALL,NONE,PARENT_NOT_SET,92,92,95,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," c16"
+86,FPAREN_OPEN,FUNC_CALL,PARENT_NOT_SET,95,95,96,0,0,0,0,"PUNCTUATOR",0,0," ("
+86,NUMBER,NONE,PARENT_NOT_SET,96,96,97,0,0,1,0,"IN_FCN_CALL,EXPR_START",0,0," 0"
+86,COMMA,NONE,PARENT_NOT_SET,97,97,98,0,0,1,0,"IN_FCN_CALL,PUNCTUATOR",0,0," ,"
+86,NUMBER,NONE,PARENT_NOT_SET,99,99,100,1,0,1,0,"IN_FCN_CALL,EXPR_START",0,0," 1"
+86,COMMA,NONE,PARENT_NOT_SET,100,100,101,0,0,1,0,"IN_FCN_CALL,PUNCTUATOR",0,0," ,"
+86,NUMBER,NONE,PARENT_NOT_SET,102,102,103,1,0,1,0,"IN_FCN_CALL,EXPR_START",0,0," 2"
+86,FPAREN_CLOSE,FUNC_CALL,PARENT_NOT_SET,103,103,104,0,0,0,0,"IN_FCN_CALL,PUNCTUATOR",0,0," )"
+86,SEMICOLON,CLASS,PARENT_NOT_SET,104,104,105,0,0,0,0,"PUNCTUATOR",0,0," ;"
+86,NEWLINE,NONE,PARENT_NOT_SET,105,105,1,0,0,0,0,"",2,0,
+88,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,52,0,0,0,0,"",0,0," // class/struct [macros/attributes ...] type x, ..."
+88,NEWLINE,NONE,PARENT_NOT_SET,52,52,1,0,0,0,0,"",1,0,
+89,CLASS,NONE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," class"
+89,ATTRIBUTE,NONE,PARENT_NOT_SET,7,7,20,1,0,0,0,"",0,0," __attribute__"
+89,FPAREN_OPEN,ATTRIBUTE,PARENT_NOT_SET,20,20,21,0,0,0,0,"PUNCTUATOR",0,0," ("
+89,PAREN_OPEN,NONE,PARENT_NOT_SET,21,21,22,0,0,1,0,"EXPR_START,PUNCTUATOR",0,0," ("
+89,WORD,NONE,PARENT_NOT_SET,22,22,36,0,0,2,0,"EXPR_START",0,0," __deprecated__"
+89,PAREN_CLOSE,NONE,PARENT_NOT_SET,36,36,37,0,0,1,0,"PUNCTUATOR",0,0," )"
+89,FPAREN_CLOSE,ATTRIBUTE,PARENT_NOT_SET,37,37,38,0,0,0,0,"PUNCTUATOR",0,0," )"
+89,WORD,NONE,PARENT_NOT_SET,39,39,49,1,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," API_EXPORT"
+89,MACRO_FUNC_CALL,NONE,PARENT_NOT_SET,50,50,57,1,0,0,0,"",0,0," ALIGNAS"
+89,FPAREN_OPEN,MACRO_FUNC_CALL,PARENT_NOT_SET,57,57,58,0,0,0,0,"PUNCTUATOR",0,0," ("
+89,NUMBER,NONE,PARENT_NOT_SET,58,58,59,0,0,1,0,"EXPR_START",0,0," 4"
+89,FPAREN_CLOSE,MACRO_FUNC_CALL,PARENT_NOT_SET,59,59,60,0,0,0,0,"PUNCTUATOR",0,0," )"
+89,TYPE,CLASS,PARENT_NOT_SET,61,61,63,1,0,0,0,"FORCE_SPACE,VAR_TYPE",0,0," c3"
+89,WORD,NONE,PARENT_NOT_SET,64,64,67,1,0,0,0,"VAR_DEF,VAR_1ST",0,0," c41"
+89,COMMA,NONE,PARENT_NOT_SET,67,67,68,0,0,0,0,"PUNCTUATOR",0,0," ,"
+89,PTR_TYPE,CLASS,PARENT_NOT_SET,69,69,70,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
+89,WORD,NONE,PARENT_NOT_SET,70,70,73,0,0,0,0,"EXPR_START,VAR_DEF,LVALUE",0,0," c42"
+89,ASSIGN,NONE,PARENT_NOT_SET,74,74,75,1,0,0,0,"PUNCTUATOR",0,0," ="
+89,WORD,NONE,PARENT_NOT_SET,76,76,79,1,0,0,0,"EXPR_START",0,0," c32"
+89,QUESTION,NONE,COMMA,80,80,81,1,0,0,0,"PUNCTUATOR,IN_CONDITIONAL",0,0," ?"
+89,WORD,NONE,PARENT_NOT_SET,82,82,85,1,0,0,0,"EXPR_START,IN_CONDITIONAL",0,0," c32"
+89,COND_COLON,NONE,QUESTION,86,86,87,1,0,0,0,"PUNCTUATOR,IN_CONDITIONAL",0,0," :"
+89,WORD,NONE,PARENT_NOT_SET,88,88,95,1,0,0,0,"STMT_START,EXPR_START,IN_CONDITIONAL",0,0," nullptr"
+89,COMMA,NONE,PARENT_NOT_SET,95,95,96,0,0,0,0,"PUNCTUATOR,IN_CONDITIONAL",0,0," ,"
+89,PTR_TYPE,CLASS,PARENT_NOT_SET,97,97,98,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
+89,WORD,NONE,PARENT_NOT_SET,98,98,101,0,0,0,0,"EXPR_START,VAR_DEF",0,0," c43"
+89,TSQUARE,NONE,PARENT_NOT_SET,101,101,103,0,0,0,0,"PUNCTUATOR",0,0," []"
+89,ASSIGN,NONE,PARENT_NOT_SET,104,104,105,1,0,0,0,"PUNCTUATOR",0,0," ="
+89,BRACE_OPEN,BRACED_INIT_LIST,PARENT_NOT_SET,106,106,107,1,0,0,0,"EXPR_START,ONE_LINER,PUNCTUATOR",0,0," {"
+89,WORD,NONE,PARENT_NOT_SET,108,108,115,1,1,1,0,"EXPR_START,ONE_LINER",0,0," nullptr"
+89,COMMA,NONE,PARENT_NOT_SET,115,115,116,0,1,1,0,"ONE_LINER,PUNCTUATOR",0,0," ,"
+89,WORD,NONE,PARENT_NOT_SET,117,117,124,1,1,1,0,"EXPR_START,ONE_LINER",0,0," nullptr"
+89,BRACE_CLOSE,BRACED_INIT_LIST,PARENT_NOT_SET,125,125,126,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," }"
+89,COMMA,NONE,PARENT_NOT_SET,126,126,127,0,0,0,0,"PUNCTUATOR",0,0," ,"
+89,WORD,NONE,PARENT_NOT_SET,128,128,131,1,0,0,0,"EXPR_START,VAR_DEF,LVALUE",0,0," c44"
+89,BRACE_OPEN,BRACED_INIT_LIST,PARENT_NOT_SET,131,131,132,0,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
+89,NUMBER,NONE,PARENT_NOT_SET,133,133,134,1,1,1,0,"STMT_START,EXPR_START,ONE_LINER",0,0," 0"
+89,COMMA,NONE,PARENT_NOT_SET,134,134,135,0,1,1,0,"ONE_LINER,PUNCTUATOR",0,0," ,"
+89,NUMBER,NONE,PARENT_NOT_SET,136,136,137,1,1,1,0,"EXPR_START,ONE_LINER",0,0," 1"
+89,COMMA,NONE,PARENT_NOT_SET,137,137,138,0,1,1,0,"ONE_LINER,PUNCTUATOR",0,0," ,"
+89,NUMBER,NONE,PARENT_NOT_SET,139,139,140,1,1,1,0,"EXPR_START,ONE_LINER",0,0," 2"
+89,BRACE_CLOSE,BRACED_INIT_LIST,PARENT_NOT_SET,140,140,141,0,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," }"
+89,COMMA,NONE,PARENT_NOT_SET,141,141,142,0,0,0,0,"PUNCTUATOR",0,0," ,"
+89,PTR_TYPE,CLASS,PARENT_NOT_SET,143,143,144,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
+89,QUALIFIER,NONE,PARENT_NOT_SET,145,145,150,1,0,0,0,"FORCE_SPACE,EXPR_START",0,0," const"
+89,FUNC_CALL,NONE,PARENT_NOT_SET,151,151,154,1,0,0,0,"VAR_DEF",0,0," c45"
+89,FPAREN_OPEN,FUNC_CALL,PARENT_NOT_SET,154,154,155,0,0,0,0,"PUNCTUATOR",0,0," ("
+89,WORD,NONE,PARENT_NOT_SET,155,155,162,0,0,1,0,"IN_FCN_CALL,EXPR_START",0,0," nullptr"
+89,FPAREN_CLOSE,FUNC_CALL,PARENT_NOT_SET,162,162,163,0,0,0,0,"IN_FCN_CALL,PUNCTUATOR",0,0," )"
+89,COMMA,NONE,PARENT_NOT_SET,163,163,164,0,0,0,0,"PUNCTUATOR",0,0," ,"
+89,FUNC_CALL,NONE,PARENT_NOT_SET,165,165,168,1,0,0,0,"EXPR_START,VAR_DEF",0,0," c46"
+89,FPAREN_OPEN,FUNC_CALL,PARENT_NOT_SET,168,168,169,0,0,0,0,"PUNCTUATOR",0,0," ("
+89,NUMBER,NONE,PARENT_NOT_SET,169,169,170,0,0,1,0,"IN_FCN_CALL,EXPR_START",0,0," 0"
+89,COMMA,NONE,PARENT_NOT_SET,170,170,171,0,0,1,0,"IN_FCN_CALL,PUNCTUATOR",0,0," ,"
+89,NUMBER,NONE,PARENT_NOT_SET,172,172,173,1,0,1,0,"IN_FCN_CALL,EXPR_START",0,0," 1"
+89,COMMA,NONE,PARENT_NOT_SET,173,173,174,0,0,1,0,"IN_FCN_CALL,PUNCTUATOR",0,0," ,"
+89,NUMBER,NONE,PARENT_NOT_SET,175,175,176,1,0,1,0,"IN_FCN_CALL,EXPR_START",0,0," 2"
+89,FPAREN_CLOSE,FUNC_CALL,PARENT_NOT_SET,176,176,177,0,0,0,0,"IN_FCN_CALL,PUNCTUATOR",0,0," )"
+89,SEMICOLON,CLASS,PARENT_NOT_SET,177,177,178,0,0,0,0,"PUNCTUATOR",0,0," ;"
+89,NEWLINE,NONE,PARENT_NOT_SET,178,178,1,0,0,0,0,"",2,0,
+91,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,68,0,0,0,0,"",0,0," // class/struct [macros/attributes ...] type : bases ... { } x, ..."
+91,NEWLINE,NONE,PARENT_NOT_SET,68,68,1,0,0,0,0,"",1,0,
+92,CLASS,NONE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," class"
+92,FUNC_CALL,NONE,PARENT_NOT_SET,7,7,14,1,0,0,0,"",0,0," ALIGNAS"
+92,FPAREN_OPEN,FUNC_CALL,PARENT_NOT_SET,14,14,15,0,0,0,0,"PUNCTUATOR",0,0," ("
+92,NUMBER,NONE,PARENT_NOT_SET,15,15,16,0,0,1,0,"IN_FCN_CALL,EXPR_START",0,0," 4"
+92,FPAREN_CLOSE,FUNC_CALL,PARENT_NOT_SET,16,16,17,0,0,0,0,"IN_FCN_CALL,PUNCTUATOR",0,0," )"
+92,WORD,NONE,PARENT_NOT_SET,18,18,28,1,0,0,0,"FORCE_SPACE",0,0," API_EXPORT"
+92,ATTRIBUTE,NONE,PARENT_NOT_SET,29,29,42,1,0,0,0,"",0,0," __attribute__"
+92,FPAREN_OPEN,ATTRIBUTE,PARENT_NOT_SET,42,42,43,0,0,0,0,"PUNCTUATOR",0,0," ("
+92,PAREN_OPEN,NONE,PARENT_NOT_SET,43,43,44,0,0,1,0,"EXPR_START,PUNCTUATOR",0,0," ("
+92,WORD,NONE,PARENT_NOT_SET,44,44,58,0,0,2,0,"EXPR_START",0,0," __deprecated__"
+92,PAREN_CLOSE,NONE,PARENT_NOT_SET,58,58,59,0,0,1,0,"PUNCTUATOR",0,0," )"
+92,FPAREN_CLOSE,ATTRIBUTE,PARENT_NOT_SET,59,59,60,0,0,0,0,"PUNCTUATOR",0,0," )"
+92,NEWLINE,NONE,PARENT_NOT_SET,60,60,1,0,0,0,0,"",1,0,
+93,CLASS_COLON,CLASS,PARENT_NOT_SET,9,1,2,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," :"
+93,QUALIFIER,NONE,PARENT_NOT_SET,11,3,9,1,0,0,0,"IN_CLASS_BASE,FORCE_SPACE,STMT_START,EXPR_START",0,0," public"
+93,TYPE,NONE,PARENT_NOT_SET,18,10,25,1,0,0,0,"IN_CLASS_BASE",0,0," outer_namespace"
+93,DC_MEMBER,NONE,PARENT_NOT_SET,33,25,27,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
+93,TYPE,NONE,PARENT_NOT_SET,35,27,42,0,0,0,0,"IN_CLASS_BASE",0,0," inner_namespace"
+93,DC_MEMBER,NONE,PARENT_NOT_SET,50,42,44,0,0,0,0,"IN_CLASS_BASE,PUNCTUATOR",0,0," ::"
+93,TYPE,NONE,PARENT_NOT_SET,52,44,49,0,0,0,0,"IN_CLASS_BASE",0,0," Base1"
+93,NEWLINE,NONE,PARENT_NOT_SET,57,49,1,0,0,0,0,"",1,0,
+94,BRACE_OPEN,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"PUNCTUATOR",0,0," {"
+94,NEWLINE,NONE,PARENT_NOT_SET,2,2,1,0,1,1,0,"IN_CLASS",1,0,
+95,ACCESS,NONE,PARENT_NOT_SET,1,1,7,0,1,1,0,"IN_CLASS,STMT_START,EXPR_START",0,0," public"
+95,ACCESS_COLON,NONE,PARENT_NOT_SET,7,7,8,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," :"
+95,NEWLINE,NONE,PARENT_NOT_SET,8,8,4,0,1,1,0,"IN_CLASS",1,0,
+96,TYPE,NONE,PARENT_NOT_SET,1,4,7,0,1,1,0,"IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE",0,0," int"
+96,WORD,NONE,PARENT_NOT_SET,5,8,11,1,1,1,0,"IN_CLASS,VAR_DEF,VAR_1ST",0,0," m_x"
+96,SEMICOLON,NONE,PARENT_NOT_SET,8,11,12,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," ;"
+96,NEWLINE,NONE,PARENT_NOT_SET,9,12,4,0,1,1,0,"IN_CLASS",1,0,
+97,TYPE,NONE,PARENT_NOT_SET,1,4,7,0,1,1,0,"IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE",0,0," int"
+97,WORD,NONE,PARENT_NOT_SET,5,8,11,1,1,1,0,"IN_CLASS,VAR_DEF,VAR_1ST",0,0," m_y"
+97,SEMICOLON,NONE,PARENT_NOT_SET,8,11,12,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," ;"
+97,NEWLINE,NONE,PARENT_NOT_SET,9,12,4,0,1,1,0,"IN_CLASS",1,0,
+98,TYPE,NONE,PARENT_NOT_SET,1,4,7,0,1,1,0,"IN_CLASS,FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE",0,0," int"
+98,WORD,NONE,PARENT_NOT_SET,5,8,11,1,1,1,0,"IN_CLASS,VAR_DEF,VAR_1ST",0,0," m_z"
+98,SEMICOLON,NONE,PARENT_NOT_SET,8,11,12,0,1,1,0,"IN_CLASS,PUNCTUATOR",0,0," ;"
+98,NEWLINE,NONE,PARENT_NOT_SET,9,12,1,0,1,1,0,"IN_CLASS",1,0,
+99,BRACE_CLOSE,CLASS,PARENT_NOT_SET,1,1,2,0,0,0,0,"IN_CLASS,PUNCTUATOR",0,0," }"
+99,WORD,NONE,PARENT_NOT_SET,3,3,6,1,0,0,0,"STMT_START,EXPR_START,VAR_DEF,VAR_1ST,VAR_INLINE",0,0," c51"
+99,COMMA,NONE,PARENT_NOT_SET,6,6,7,0,0,0,0,"PUNCTUATOR",0,0," ,"
+99,PTR_TYPE,CLASS,PARENT_NOT_SET,8,8,9,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
+99,WORD,NONE,PARENT_NOT_SET,9,9,12,0,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE,LVALUE",0,0," c52"
+99,ASSIGN,NONE,PARENT_NOT_SET,13,13,14,1,0,0,0,"PUNCTUATOR",0,0," ="
+99,WORD,NONE,PARENT_NOT_SET,15,15,22,1,0,0,0,"EXPR_START",0,0," nullptr"
+99,COMMA,NONE,PARENT_NOT_SET,22,22,23,0,0,0,0,"PUNCTUATOR",0,0," ,"
+99,PTR_TYPE,CLASS,PARENT_NOT_SET,24,24,25,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
+99,WORD,NONE,PARENT_NOT_SET,25,25,28,0,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," c53"
+99,TSQUARE,NONE,PARENT_NOT_SET,28,28,30,0,0,0,0,"PUNCTUATOR",0,0," []"
+99,ASSIGN,NONE,PARENT_NOT_SET,31,31,32,1,0,0,0,"PUNCTUATOR",0,0," ="
+99,BRACE_OPEN,BRACED_INIT_LIST,PARENT_NOT_SET,33,33,34,1,0,0,0,"EXPR_START,ONE_LINER,PUNCTUATOR",0,0," {"
+99,WORD,NONE,PARENT_NOT_SET,35,35,42,1,1,1,0,"EXPR_START,ONE_LINER",0,0," nullptr"
+99,COMMA,NONE,PARENT_NOT_SET,42,42,43,0,1,1,0,"ONE_LINER,PUNCTUATOR",0,0," ,"
+99,WORD,NONE,PARENT_NOT_SET,44,44,51,1,1,1,0,"EXPR_START,ONE_LINER",0,0," nullptr"
+99,BRACE_CLOSE,BRACED_INIT_LIST,PARENT_NOT_SET,52,52,53,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," }"
+99,SEMICOLON,CLASS,PARENT_NOT_SET,53,53,54,0,0,0,0,"PUNCTUATOR",0,0," ;"
+99,NEWLINE,NONE,PARENT_NOT_SET,54,54,1,0,0,0,0,"",3,0,
+102,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,44,0,0,0,0,"",0,0," // enum type : integral_type { ... } x, ..."
+102,NEWLINE,NONE,PARENT_NOT_SET,44,44,1,0,0,0,0,"",1,0,
+103,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," enum"
+103,TYPE,ENUM,PARENT_NOT_SET,6,6,8,1,0,0,0,"VAR_TYPE",0,0," e1"
+103,ENUM_COLON,ENUM,PARENT_NOT_SET,9,9,10,1,0,0,0,"PUNCTUATOR",0,0," :"
+103,TYPE,ENUM_COLON,PARENT_NOT_SET,11,11,15,1,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," long"
+103,TYPE,ENUM_COLON,PARENT_NOT_SET,16,16,20,1,0,0,0,"",0,0," long"
+103,BRACE_OPEN,ENUM,PARENT_NOT_SET,21,21,22,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
+103,WORD,NONE,PARENT_NOT_SET,23,23,25,1,1,1,0,"IN_ENUM,STMT_START,EXPR_START,ONE_LINER",0,0," a1"
+103,COMMA,NONE,PARENT_NOT_SET,25,25,26,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
+103,WORD,NONE,PARENT_NOT_SET,27,27,29,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," b1"
+103,COMMA,NONE,PARENT_NOT_SET,29,29,30,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
+103,WORD,NONE,PARENT_NOT_SET,31,31,33,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," d1"
+103,BRACE_CLOSE,ENUM,PARENT_NOT_SET,34,34,35,1,0,0,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," }"
+103,WORD,NONE,PARENT_NOT_SET,36,36,39,1,0,0,0,"STMT_START,EXPR_START,VAR_DEF,VAR_1ST,VAR_INLINE",0,0," e11"
+103,COMMA,NONE,PARENT_NOT_SET,39,39,40,0,0,0,0,"PUNCTUATOR",0,0," ,"
+103,WORD,NONE,PARENT_NOT_SET,41,41,44,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," e12"
+103,COMMA,NONE,PARENT_NOT_SET,44,44,45,0,0,0,0,"PUNCTUATOR",0,0," ,"
+103,WORD,NONE,PARENT_NOT_SET,46,46,49,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," e13"
+103,SEMICOLON,ENUM,PARENT_NOT_SET,49,49,50,0,0,0,0,"PUNCTUATOR",0,0," ;"
+103,NEWLINE,NONE,PARENT_NOT_SET,50,50,1,0,0,0,0,"",2,0,
+105,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,37,0,0,0,0,"",0,0," // enum type : integral_type { ... }"
+105,NEWLINE,NONE,PARENT_NOT_SET,37,37,1,0,0,0,0,"",1,0,
+106,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," enum"
+106,TYPE,ENUM,PARENT_NOT_SET,6,6,8,1,0,0,0,"",0,0," e2"
+106,ENUM_COLON,ENUM,PARENT_NOT_SET,9,9,10,1,0,0,0,"PUNCTUATOR",0,0," :"
+106,TYPE,ENUM_COLON,PARENT_NOT_SET,11,11,19,1,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," unsigned"
+106,TYPE,ENUM_COLON,PARENT_NOT_SET,20,20,23,1,0,0,0,"",0,0," int"
+106,BRACE_OPEN,ENUM,PARENT_NOT_SET,24,24,25,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
+106,WORD,NONE,PARENT_NOT_SET,26,26,28,1,1,1,0,"IN_ENUM,STMT_START,EXPR_START,ONE_LINER",0,0," a2"
+106,COMMA,NONE,PARENT_NOT_SET,28,28,29,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
+106,WORD,NONE,PARENT_NOT_SET,30,30,32,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," b2"
+106,COMMA,NONE,PARENT_NOT_SET,32,32,33,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
+106,WORD,NONE,PARENT_NOT_SET,34,34,36,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," d2"
+106,BRACE_CLOSE,ENUM,PARENT_NOT_SET,37,37,38,1,0,0,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," }"
+106,SEMICOLON,ENUM,PARENT_NOT_SET,38,38,39,0,0,0,0,"PUNCTUATOR",0,0," ;"
+106,NEWLINE,NONE,PARENT_NOT_SET,39,39,1,0,0,0,0,"",2,0,
+108,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,29,0,0,0,0,"",0,0," // enum type : integral_type"
+108,NEWLINE,NONE,PARENT_NOT_SET,29,29,1,0,0,0,0,"",1,0,
+109,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START,INCOMPLETE",0,0," enum"
+109,TYPE,ENUM,PARENT_NOT_SET,6,6,8,1,0,0,0,"INCOMPLETE",0,0," e3"
+109,ENUM_COLON,ENUM,PARENT_NOT_SET,9,9,10,1,0,0,0,"PUNCTUATOR",0,0," :"
+109,TYPE,ENUM_COLON,PARENT_NOT_SET,11,11,16,1,0,0,0,"STMT_START,EXPR_START",0,0," short"
+109,SEMICOLON,ENUM,PARENT_NOT_SET,16,16,17,0,0,0,0,"PUNCTUATOR",0,0," ;"
+109,NEWLINE,NONE,PARENT_NOT_SET,17,17,1,0,0,0,0,"",2,0,
+111,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,20,0,0,0,0,"",0,0," // enum type x, ..."
+111,NEWLINE,NONE,PARENT_NOT_SET,20,20,1,0,0,0,0,"",1,0,
+112,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," enum"
+112,TYPE,ENUM,PARENT_NOT_SET,6,6,8,1,0,0,0,"FORCE_SPACE,VAR_TYPE",0,0," e3"
+112,WORD,NONE,PARENT_NOT_SET,9,9,12,1,0,0,0,"VAR_DEF,VAR_1ST",0,0," e31"
+112,COMMA,NONE,PARENT_NOT_SET,12,12,13,0,0,0,0,"PUNCTUATOR",0,0," ,"
+112,WORD,NONE,PARENT_NOT_SET,14,14,17,1,0,0,0,"EXPR_START,VAR_DEF",0,0," e32"
+112,SEMICOLON,ENUM,PARENT_NOT_SET,17,17,18,0,0,0,0,"PUNCTUATOR",0,0," ;"
+112,NEWLINE,NONE,PARENT_NOT_SET,18,18,1,0,0,0,0,"",2,0,
+114,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,50,0,0,0,0,"",0,0," // enum class type : integral_type { ... } x, ..."
+114,NEWLINE,NONE,PARENT_NOT_SET,50,50,1,0,0,0,0,"",1,0,
+115,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," enum"
+115,ENUM_CLASS,NONE,PARENT_NOT_SET,6,6,11,1,0,0,0,"FORCE_SPACE",0,0," class"
+115,TYPE,ENUM,PARENT_NOT_SET,12,12,14,1,0,0,0,"VAR_TYPE",0,0," e4"
+115,ENUM_COLON,ENUM,PARENT_NOT_SET,15,15,16,1,0,0,0,"PUNCTUATOR",0,0," :"
+115,TYPE,ENUM_COLON,PARENT_NOT_SET,17,17,21,1,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," long"
+115,TYPE,ENUM_COLON,PARENT_NOT_SET,22,22,26,1,0,0,0,"",0,0," long"
+115,BRACE_OPEN,ENUM,PARENT_NOT_SET,27,27,28,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
+115,WORD,NONE,PARENT_NOT_SET,29,29,31,1,1,1,0,"IN_ENUM,STMT_START,EXPR_START,ONE_LINER",0,0," a4"
+115,COMMA,NONE,PARENT_NOT_SET,31,31,32,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
+115,WORD,NONE,PARENT_NOT_SET,33,33,35,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," b4"
+115,COMMA,NONE,PARENT_NOT_SET,35,35,36,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
+115,WORD,NONE,PARENT_NOT_SET,37,37,39,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," d4"
+115,BRACE_CLOSE,ENUM,PARENT_NOT_SET,40,40,41,1,0,0,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," }"
+115,WORD,NONE,PARENT_NOT_SET,42,42,45,1,0,0,0,"STMT_START,EXPR_START,VAR_DEF,VAR_1ST,VAR_INLINE",0,0," e41"
+115,COMMA,NONE,PARENT_NOT_SET,45,45,46,0,0,0,0,"PUNCTUATOR",0,0," ,"
+115,WORD,NONE,PARENT_NOT_SET,47,47,50,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," e42"
+115,COMMA,NONE,PARENT_NOT_SET,50,50,51,0,0,0,0,"PUNCTUATOR",0,0," ,"
+115,WORD,NONE,PARENT_NOT_SET,52,52,55,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," e43"
+115,COMMA,NONE,PARENT_NOT_SET,55,55,56,0,0,0,0,"PUNCTUATOR",0,0," ,"
+115,WORD,NONE,PARENT_NOT_SET,57,57,60,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," e44"
+115,SEMICOLON,ENUM,PARENT_NOT_SET,60,60,61,0,0,0,0,"PUNCTUATOR",0,0," ;"
+115,NEWLINE,NONE,PARENT_NOT_SET,61,61,1,0,0,0,0,"",2,0,
+117,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,43,0,0,0,0,"",0,0," // enum class type : integral_type { ... }"
+117,NEWLINE,NONE,PARENT_NOT_SET,43,43,1,0,0,0,0,"",1,0,
+118,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," enum"
+118,ENUM_CLASS,NONE,PARENT_NOT_SET,6,6,11,1,0,0,0,"FORCE_SPACE",0,0," class"
+118,TYPE,ENUM,PARENT_NOT_SET,12,12,14,1,0,0,0,"",0,0," e5"
+118,ENUM_COLON,ENUM,PARENT_NOT_SET,15,15,16,1,0,0,0,"PUNCTUATOR",0,0," :"
+118,TYPE,ENUM_COLON,PARENT_NOT_SET,17,17,25,1,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," unsigned"
+118,TYPE,ENUM_COLON,PARENT_NOT_SET,26,26,29,1,0,0,0,"",0,0," int"
+118,BRACE_OPEN,ENUM,PARENT_NOT_SET,30,30,31,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
+118,WORD,NONE,PARENT_NOT_SET,32,32,34,1,1,1,0,"IN_ENUM,STMT_START,EXPR_START,ONE_LINER",0,0," a5"
+118,COMMA,NONE,PARENT_NOT_SET,34,34,35,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
+118,WORD,NONE,PARENT_NOT_SET,36,36,38,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," b5"
+118,COMMA,NONE,PARENT_NOT_SET,38,38,39,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
+118,WORD,NONE,PARENT_NOT_SET,40,40,42,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," d5"
+118,BRACE_CLOSE,ENUM,PARENT_NOT_SET,43,43,44,1,0,0,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," }"
+118,SEMICOLON,ENUM,PARENT_NOT_SET,44,44,45,0,0,0,0,"PUNCTUATOR",0,0," ;"
+118,NEWLINE,NONE,PARENT_NOT_SET,45,45,1,0,0,0,0,"",2,0,
+120,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,35,0,0,0,0,"",0,0," // enum class type : integral_type"
+120,NEWLINE,NONE,PARENT_NOT_SET,35,35,1,0,0,0,0,"",1,0,
+121,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START,INCOMPLETE",0,0," enum"
+121,ENUM_CLASS,NONE,PARENT_NOT_SET,6,6,11,1,0,0,0,"FORCE_SPACE,INCOMPLETE",0,0," class"
+121,TYPE,ENUM,PARENT_NOT_SET,12,12,14,1,0,0,0,"INCOMPLETE",0,0," e6"
+121,ENUM_COLON,ENUM,PARENT_NOT_SET,15,15,16,1,0,0,0,"PUNCTUATOR",0,0," :"
+121,TYPE,ENUM_COLON,PARENT_NOT_SET,17,17,22,1,0,0,0,"STMT_START,EXPR_START",0,0," short"
+121,SEMICOLON,ENUM,PARENT_NOT_SET,22,22,23,0,0,0,0,"PUNCTUATOR",0,0," ;"
+121,NEWLINE,NONE,PARENT_NOT_SET,23,23,1,0,0,0,0,"",2,0,
+123,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,19,0,0,0,0,"",0,0," // enum class type"
+123,NEWLINE,NONE,PARENT_NOT_SET,19,19,1,0,0,0,0,"",1,0,
+124,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START,INCOMPLETE",0,0," enum"
+124,ENUM_CLASS,NONE,PARENT_NOT_SET,6,6,11,1,0,0,0,"FORCE_SPACE,INCOMPLETE",0,0," class"
+124,TYPE,ENUM,PARENT_NOT_SET,12,12,14,1,0,0,0,"INCOMPLETE",0,0," e7"
+124,SEMICOLON,ENUM,PARENT_NOT_SET,14,14,15,0,0,0,0,"PUNCTUATOR",0,0," ;"
+124,NEWLINE,NONE,PARENT_NOT_SET,15,15,1,0,0,0,0,"",2,0,
+126,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,39,0,0,0,0,"",0,0," // enum : integral_type { ... } x, ..."
+126,NEWLINE,NONE,PARENT_NOT_SET,39,39,1,0,0,0,0,"",1,0,
+127,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"STMT_START,EXPR_START",0,0," enum"
+127,ENUM_COLON,ENUM,PARENT_NOT_SET,6,6,7,1,0,0,0,"PUNCTUATOR",0,0," :"
+127,TYPE,ENUM_COLON,PARENT_NOT_SET,8,8,12,1,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," long"
+127,TYPE,ENUM_COLON,PARENT_NOT_SET,13,13,17,1,0,0,0,"",0,0," long"
+127,BRACE_OPEN,ENUM,PARENT_NOT_SET,18,18,19,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
+127,WORD,NONE,PARENT_NOT_SET,20,20,22,1,1,1,0,"IN_ENUM,STMT_START,EXPR_START,ONE_LINER",0,0," a8"
+127,COMMA,NONE,PARENT_NOT_SET,22,22,23,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
+127,WORD,NONE,PARENT_NOT_SET,24,24,26,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," b8"
+127,COMMA,NONE,PARENT_NOT_SET,26,26,27,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
+127,WORD,NONE,PARENT_NOT_SET,28,28,30,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," c8"
+127,BRACE_CLOSE,ENUM,PARENT_NOT_SET,31,31,32,1,0,0,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," }"
+127,WORD,NONE,PARENT_NOT_SET,33,33,36,1,0,0,0,"STMT_START,EXPR_START,VAR_DEF,VAR_1ST,VAR_INLINE",0,0," e81"
+127,COMMA,NONE,PARENT_NOT_SET,36,36,37,0,0,0,0,"PUNCTUATOR",0,0," ,"
+127,WORD,NONE,PARENT_NOT_SET,38,38,41,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," e82"
+127,SEMICOLON,ENUM,PARENT_NOT_SET,41,41,42,0,0,0,0,"PUNCTUATOR",0,0," ;"
+127,NEWLINE,NONE,PARENT_NOT_SET,42,42,1,0,0,0,0,"",2,0,
+129,COMMENT_CPP,COMMENT_WHOLE,PARENT_NOT_SET,1,1,23,0,0,0,0,"",0,0," // enum { ... } x, ..."
+129,NEWLINE,NONE,PARENT_NOT_SET,23,23,1,0,0,0,0,"",1,0,
+130,ENUM,NONE,PARENT_NOT_SET,1,1,5,0,0,0,0,"STMT_START,EXPR_START",0,0," enum"
+130,BRACE_OPEN,ENUM,PARENT_NOT_SET,6,6,7,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
+130,WORD,NONE,PARENT_NOT_SET,8,8,10,1,1,1,0,"IN_ENUM,STMT_START,EXPR_START,ONE_LINER",0,0," a9"
+130,COMMA,NONE,PARENT_NOT_SET,10,10,11,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
+130,WORD,NONE,PARENT_NOT_SET,12,12,14,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," b9"
+130,COMMA,NONE,PARENT_NOT_SET,14,14,15,0,1,1,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," ,"
+130,WORD,NONE,PARENT_NOT_SET,16,16,18,1,1,1,0,"IN_ENUM,EXPR_START,ONE_LINER",0,0," c9"
+130,BRACE_CLOSE,ENUM,PARENT_NOT_SET,19,19,20,1,0,0,0,"IN_ENUM,ONE_LINER,PUNCTUATOR",0,0," }"
+130,WORD,NONE,PARENT_NOT_SET,21,21,24,1,0,0,0,"STMT_START,EXPR_START,VAR_DEF,VAR_1ST,VAR_INLINE",0,0," e91"
+130,COMMA,NONE,PARENT_NOT_SET,24,24,25,0,0,0,0,"PUNCTUATOR",0,0," ,"
+130,WORD,NONE,PARENT_NOT_SET,26,26,29,1,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE",0,0," e92"
+130,SEMICOLON,ENUM,PARENT_NOT_SET,29,29,30,0,0,0,0,"PUNCTUATOR",0,0," ;"
+130,NEWLINE,NONE,PARENT_NOT_SET,30,30,1,0,0,0,0,"",2,0,
+132,UNION,NONE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," union"
+132,WORD,NONE,PARENT_NOT_SET,7,7,17,1,0,0,0,"FORCE_SPACE",0,0," API_EXPORT"
+132,TYPE,UNION,PARENT_NOT_SET,18,18,20,1,0,0,0,"VAR_TYPE",0,0," u1"
+132,BRACE_OPEN,UNION,PARENT_NOT_SET,21,21,22,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
+132,TYPE,NONE,PARENT_NOT_SET,23,23,26,1,1,1,0,"FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE,ONE_LINER",0,0," int"
+132,WORD,NONE,PARENT_NOT_SET,27,27,28,1,1,1,0,"VAR_DEF,VAR_1ST,ONE_LINER",0,0," x"
+132,SEMICOLON,NONE,PARENT_NOT_SET,28,28,29,0,1,1,0,"ONE_LINER,PUNCTUATOR",0,0," ;"
+132,TYPE,NONE,PARENT_NOT_SET,30,30,34,1,1,1,0,"FORCE_SPACE,STMT_START,EXPR_START,VAR_TYPE,ONE_LINER",0,0," long"
+132,WORD,NONE,PARENT_NOT_SET,35,35,36,1,1,1,0,"VAR_DEF,VAR_1ST,ONE_LINER",0,0," y"
+132,SEMICOLON,NONE,PARENT_NOT_SET,36,36,37,0,1,1,0,"ONE_LINER,PUNCTUATOR",0,0," ;"
+132,BRACE_CLOSE,UNION,PARENT_NOT_SET,38,38,39,1,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," }"
+132,WORD,NONE,PARENT_NOT_SET,40,40,43,1,0,0,0,"STMT_START,EXPR_START,VAR_DEF,VAR_1ST,VAR_INLINE",0,0," u11"
+132,COMMA,NONE,PARENT_NOT_SET,43,43,44,0,0,0,0,"PUNCTUATOR",0,0," ,"
+132,PTR_TYPE,UNION,PARENT_NOT_SET,45,45,46,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
+132,WORD,NONE,PARENT_NOT_SET,46,46,49,0,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE,LVALUE",0,0," u12"
+132,ASSIGN,NONE,PARENT_NOT_SET,50,50,51,1,0,0,0,"PUNCTUATOR",0,0," ="
+132,WORD,NONE,PARENT_NOT_SET,52,52,59,1,0,0,0,"EXPR_START",0,0," nullptr"
+132,COMMA,NONE,PARENT_NOT_SET,59,59,60,0,0,0,0,"PUNCTUATOR",0,0," ,"
+132,PTR_TYPE,UNION,PARENT_NOT_SET,61,61,62,1,0,0,0,"EXPR_START,PUNCTUATOR",0,0," *"
+132,WORD,NONE,PARENT_NOT_SET,62,62,65,0,0,0,0,"EXPR_START,VAR_DEF,VAR_INLINE,LVALUE",0,0," u13"
+132,BRACE_OPEN,BRACED_INIT_LIST,PARENT_NOT_SET,65,65,66,0,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," {"
+132,NUMBER,NONE,PARENT_NOT_SET,66,66,67,0,1,1,0,"STMT_START,EXPR_START,ONE_LINER",0,0," 0"
+132,BRACE_CLOSE,BRACED_INIT_LIST,PARENT_NOT_SET,67,67,68,0,0,0,0,"ONE_LINER,PUNCTUATOR",0,0," }"
+132,SEMICOLON,UNION,PARENT_NOT_SET,68,68,69,0,0,0,0,"PUNCTUATOR",0,0," ;"
+132,NEWLINE,NONE,PARENT_NOT_SET,69,69,1,0,0,0,0,"",2,0,
+134,UNION,NONE,PARENT_NOT_SET,1,1,6,0,0,0,0,"FORCE_SPACE,STMT_START,EXPR_START",0,0," union"
+134,WORD,NONE,PARENT_NOT_SET,7,7,17,1,0,0,0,"FORCE_SPACE",0,0," API_EXPORT"
+134,TYPE,UNION,PARENT_NOT_SET,18,18,20,1,0,0,0,"FORCE_SPACE,VAR_TYPE",0,0," u1"
+134,WORD,NONE,PARENT_NOT_SET,21,21,24,1,0,0,0,"VAR_DEF,VAR_1ST",0,0," u21"
+134,SEMICOLON,UNION,PARENT_NOT_SET,24,24,25,0,0,0,0,"PUNCTUATOR",0,0," ;"
+134,NEWLINE,NONE,PARENT_NOT_SET,25,25,1,0,0,0,0,"",1,0, \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/class_enum_struct_union.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/class_enum_struct_union.txt
new file mode 100644
index 00000000..6c89600d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/class_enum_struct_union.txt
@@ -0,0 +1,692 @@
+
+# option(s) with 'not default' value: 0
+#
+# -=====-
+# number of loops = 1
+# -=====-
+# language = CPP
+# -=====-
+# Line Tag Parent_type Type of the parent Columns Br/Lvl/pp Flags Nl Text
+# 1> COMMENT_MULTI| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 4/ 7/ 3][0/0/0][ 0][9-0] /**␤ * the enum (and variable declarations thereof) could be of␤ * the following forms:␤ *␤ * "enum type [: integral_type] { ... } [x, ...]"␤ * "enum type [: integral_type]"␤ * "enum class type [: integral_type] { ... } [x, ...]"␤ * "enum class type [: integral_type]"␤ * "enum [: integral_type] { ... } x, ..."␤ */
+# 10> NEWLINE| NONE| PARENT_NOT_SET[ 7/ 7/ 4/ 0][0/0/0][ 0][2-0]
+# 12> COMMENT_MULTI| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 4/ 7/ 0][0/0/0][ 0][9-0] /**␤ * the class/struct (and variable declarations thereof) could be of␤ * the following forms:␤ *␤ * template<...> class/struct[<...>] [macros/attributes ...] type [: bases ...] { }␤ * template<...> class/struct[<...>] [macros/attributes ...] type␤ * class/struct[ [macros/attributes ...] type [: bases ...] { } [x, ...]␤ * class/struct [macros/attributes ...] type [x, ...]␤ * class/struct [macros/attributes ...] [: bases] { } x, ...␤ */
+# 21> NEWLINE| NONE| PARENT_NOT_SET[ 7/ 7/ 1/ 0][0/0/0][ 0][2-0]
+# 23> PREPROC| PP_DEFINE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][1/1/0][ 2 001c 0001][0-0] #
+# 23> PP_DEFINE| NONE| PARENT_NOT_SET[ 2/ 2/ 8/ 0][1/1/0][ 2 0001][0-0] define
+# 23> MACRO_FUNC| NONE| PARENT_NOT_SET[ 9/ 9/ 16/ 1][1/1/0][ 8 0001][0-0] ALIGNAS
+# 23> FPAREN_OPEN| MACRO_FUNC| PARENT_NOT_SET[ 16/ 16/ 17/ 0][1/1/0][ 2 0000 0001][0-0] (
+# 23> WORD| NONE| PARENT_NOT_SET[ 17/ 17/ 31/ 0][1/2/0][ 8 0011][0-0] byte_alignment
+# 23> FPAREN_CLOSE| MACRO_FUNC| PARENT_NOT_SET[ 31/ 31/ 32/ 0][1/1/0][ 2 0000 0011][0-0] )
+# 23> ATTRIBUTE| NONE| PARENT_NOT_SET[ 33/ 33/ 46/ 1][1/1/0][ 1][0-0] __attribute__
+# 23> FPAREN_OPEN| ATTRIBUTE| PARENT_NOT_SET[ 46/ 46/ 47/ 0][1/1/0][ 2 0000 0001][0-0] (
+# 23> PAREN_OPEN| NONE| PARENT_NOT_SET[ 47/ 47/ 48/ 0][1/2/0][ 2 0008 0001][0-0] (
+# 23> FUNC_CALL| NONE| PARENT_NOT_SET[ 48/ 48/ 55/ 0][1/3/0][ 8 0001][0-0] aligned
+# 23> FPAREN_OPEN| FUNC_CALL| PARENT_NOT_SET[ 55/ 55/ 56/ 0][1/3/0][ 2 0000 0001][0-0] (
+# 23> WORD| NONE| PARENT_NOT_SET[ 56/ 56/ 70/ 0][1/4/0][ 8 0011][0-0] byte_alignment
+# 23> FPAREN_CLOSE| FUNC_CALL| PARENT_NOT_SET[ 70/ 70/ 71/ 0][1/3/0][ 2 0000 0011][0-0] )
+# 23> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 71/ 71/ 72/ 0][1/2/0][ 2 0000 0001][0-0] )
+# 23> FPAREN_CLOSE| ATTRIBUTE| PARENT_NOT_SET[ 72/ 72/ 73/ 0][1/1/0][ 2 0000 0001][0-0] )
+# 23> NEWLINE| NONE| PARENT_NOT_SET[ 73/ 73/ 1/ 0][0/0/0][ 0][2-0]
+# 25> PREPROC| PP_IF| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0010 0001][0-0] #
+# 25> PP_IF| NONE| PARENT_NOT_SET[ 2/ 2/ 4/ 0][0/0/1][ 2 0001][0-0] if
+# 25> PP_DEFINED| NONE| PARENT_NOT_SET[ 5/ 5/ 12/ 1][0/0/1][ 8 0001][0-0] defined
+# 25> PAREN_OPEN| NONE| PARENT_NOT_SET[ 13/ 13/ 14/ 1][0/0/1][ 2 0000 0001][0-0] (
+# 25> WORD| NONE| PARENT_NOT_SET[ 14/ 14/ 22/ 0][0/0/1][ 8 0001][0-0] __unix__
+# 25> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 22/ 22/ 23/ 0][0/0/1][ 2 0000 0001][0-0] )
+# 25> BOOL| NONE| PARENT_NOT_SET[ 24/ 24/ 26/ 1][0/0/1][ 2 0000 0001][0-0] ||
+# 25> PAREN_OPEN| NONE| PARENT_NOT_SET[ 27/ 27/ 28/ 1][0/0/1][ 2 0000 0001][0-0] (
+# 25> PP_DEFINED| NONE| PARENT_NOT_SET[ 28/ 28/ 35/ 0][0/0/1][ 8 0001][0-0] defined
+# 25> PAREN_OPEN| NONE| PARENT_NOT_SET[ 36/ 36/ 37/ 1][0/0/1][ 2 0000 0001][0-0] (
+# 25> WORD| NONE| PARENT_NOT_SET[ 37/ 37/ 46/ 0][0/0/1][ 8 0001][0-0] __APPLE__
+# 25> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 46/ 46/ 47/ 0][0/0/1][ 2 0000 0001][0-0] )
+# 25> BOOL| NONE| PARENT_NOT_SET[ 48/ 48/ 50/ 1][0/0/1][ 2 0000 0001][0-0] &&
+# 25> PP_DEFINED| NONE| PARENT_NOT_SET[ 51/ 51/ 58/ 1][0/0/1][ 1][0-0] defined
+# 25> PAREN_OPEN| NONE| PARENT_NOT_SET[ 59/ 59/ 60/ 1][0/0/1][ 2 0000 0001][0-0] (
+# 25> WORD| NONE| PARENT_NOT_SET[ 60/ 60/ 68/ 0][0/0/1][ 8 0001][0-0] __MACH__
+# 25> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 68/ 68/ 69/ 0][0/0/1][ 2 0000 0001][0-0] )
+# 25> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 69/ 69/ 70/ 0][0/0/1][ 2 0000 0001][0-0] )
+# 25> NEWLINE| NONE| PARENT_NOT_SET[ 70/ 70/ 1/ 0][0/0/1][ 0][1-0]
+# 26> PREPROC| PP_DEFINE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][1/1/1][ 2 001c 0001][0-0] #
+# 26> PP_DEFINE| NONE| PARENT_NOT_SET[ 2/ 2/ 8/ 0][1/1/1][ 2 0001][0-0] define
+# 26> MACRO| NONE| PARENT_NOT_SET[ 9/ 9/ 19/ 1][1/1/1][ 2 0001][0-0] API_EXPORT
+# 26> ATTRIBUTE| NONE| PARENT_NOT_SET[ 20/ 20/ 33/ 1][1/1/1][ 8 0001][0-0] __attribute__
+# 26> FPAREN_OPEN| ATTRIBUTE| PARENT_NOT_SET[ 34/ 34/ 35/ 1][1/1/1][ 2 000c 0001][0-0] (
+# 26> PAREN_OPEN| NONE| PARENT_NOT_SET[ 35/ 35/ 36/ 0][1/2/1][ 2 0008 0001][0-0] (
+# 26> FUNC_CALL| NONE| PARENT_NOT_SET[ 36/ 36/ 46/ 0][1/3/1][ 8 0001][0-0] visibility
+# 26> FPAREN_OPEN| FUNC_CALL| PARENT_NOT_SET[ 46/ 46/ 47/ 0][1/3/1][ 2 0000 0001][0-0] (
+# 26> STRING| NONE| PARENT_NOT_SET[ 47/ 47/ 56/ 0][1/4/1][ 8 0011][0-0] "default"
+# 26> FPAREN_CLOSE| FUNC_CALL| PARENT_NOT_SET[ 56/ 56/ 57/ 0][1/3/1][ 2 0000 0011][0-0] )
+# 26> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 57/ 57/ 58/ 0][1/2/1][ 2 0000 0001][0-0] )
+# 26> FPAREN_CLOSE| ATTRIBUTE| PARENT_NOT_SET[ 58/ 58/ 59/ 0][1/1/1][ 2 0000 0001][0-0] )
+# 26> NEWLINE| NONE| PARENT_NOT_SET[ 59/ 59/ 1/ 0][0/0/1][ 0][1-0]
+# 27> PREPROC| PP_ELSE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0010 0001][0-0] #
+# 27> PP_ELSE| NONE| PP_IF[ 2/ 2/ 6/ 0][0/0/1][ 2 0001][0-0] elif
+# 27> PP_DEFINED| NONE| PARENT_NOT_SET[ 7/ 7/ 14/ 1][0/0/1][ a 0001][0-0] defined
+# 27> WORD| NONE| PARENT_NOT_SET[ 15/ 15/ 21/ 1][0/0/1][ 1][0-0] _WIN32
+# 27> NEWLINE| NONE| PARENT_NOT_SET[ 21/ 21/ 1/ 0][0/0/1][ 0][1-0]
+# 28> PREPROC| PP_DEFINE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][1/1/1][ 2 001c 0001][0-0] #
+# 28> PP_DEFINE| NONE| PARENT_NOT_SET[ 2/ 2/ 8/ 0][1/1/1][ 2 0001][0-0] define
+# 28> MACRO| NONE| PARENT_NOT_SET[ 9/ 9/ 19/ 1][1/1/1][ 2 0001][0-0] API_EXPORT
+# 28> DECLSPEC| NONE| PARENT_NOT_SET[ 20/ 20/ 30/ 1][1/1/1][ c 0001][0-0] __declspec
+# 28> PAREN_OPEN| DECLSPEC| PARENT_NOT_SET[ 30/ 30/ 31/ 0][1/1/1][ 2 0000 0001][0-0] (
+# 28> WORD| NONE| PARENT_NOT_SET[ 31/ 31/ 40/ 0][1/2/1][ 8 0001][0-0] dllexport
+# 28> PAREN_CLOSE| DECLSPEC| PARENT_NOT_SET[ 40/ 40/ 41/ 0][1/1/1][ 2 0000 0001][0-0] )
+# 28> NEWLINE| NONE| PARENT_NOT_SET[ 41/ 41/ 1/ 0][0/0/1][ 0][1-0]
+# 29> PREPROC| PP_ELSE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0010 0001][0-0] #
+# 29> PP_ELSE| NONE| PP_IF[ 2/ 2/ 6/ 0][0/0/1][ 1][0-0] else
+# 29> NEWLINE| NONE| PARENT_NOT_SET[ 6/ 6/ 1/ 0][0/0/1][ 0][1-0]
+# 30> PREPROC| PP_DEFINE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][1/1/1][ 2 001c 0001][0-0] #
+# 30> PP_DEFINE| NONE| PARENT_NOT_SET[ 2/ 2/ 8/ 0][1/1/1][ 2 0001][0-0] define
+# 30> MACRO| NONE| PARENT_NOT_SET[ 9/ 9/ 19/ 1][1/1/1][ 1][0-0] API_EXPORT
+# 30> NEWLINE| NONE| PARENT_NOT_SET[ 19/ 19/ 1/ 0][0/0/1][ 0][1-0]
+# 31> PREPROC| PP_ENDIF| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0010 0001][0-0] #
+# 31> PP_ENDIF| NONE| PP_IF[ 2/ 2/ 7/ 0][0/0/0][ 1][0-0] endif
+# 31> NEWLINE| NONE| PARENT_NOT_SET[ 7/ 7/ 1/ 0][0/0/0][ 0][2-0]
+# 33> NAMESPACE| NONE| PARENT_NOT_SET[ 1/ 1/ 10/ 0][0/0/0][ e 0000][0-0] namespace
+# 33> WORD| NAMESPACE| PARENT_NOT_SET[ 11/ 11/ 26/ 1][0/0/0][ 0][0-0] outer_namespace
+# 33> NEWLINE| NONE| PARENT_NOT_SET[ 26/ 26/ 1/ 0][0/0/0][ 0][1-0]
+# 34> BRACE_OPEN| NAMESPACE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0000 0000][0-0] {
+# 34> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][1/1/0][ 1000][2-0]
+# 36> NAMESPACE| NONE| PARENT_NOT_SET[ 1/ 1/ 10/ 0][1/1/0][ e 1000][0-0] namespace
+# 36> WORD| NAMESPACE| PARENT_NOT_SET[ 11/ 11/ 26/ 1][1/1/0][ 1000][0-0] inner_namespace
+# 36> NEWLINE| NONE| PARENT_NOT_SET[ 26/ 26/ 1/ 0][1/1/0][ 1000][1-0]
+# 37> BRACE_OPEN| NAMESPACE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][1/1/0][ 2 0000 1000][0-0] {
+# 37> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][2/2/0][ 1000][2-0]
+# 39> CLASS| NONE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][2/2/0][ e 1000][0-0] class
+# 39> TYPE| CLASS| PARENT_NOT_SET[ 7/ 7/ 12/ 1][2/2/0][ 1000][0-0] Base1
+# 39> BRACE_OPEN| CLASS| PARENT_NOT_SET[ 13/ 13/ 14/ 1][2/2/0][ 2 c000 1400][0-0] {
+# 39> BRACE_CLOSE| CLASS| PARENT_NOT_SET[ 15/ 15/ 16/ 1][2/2/0][ 2 c000 1400][0-0] }
+# 39> SEMICOLON| CLASS| PARENT_NOT_SET[ 16/ 16/ 17/ 0][2/2/0][ 2 0000 0000][0-0] ;
+# 39> NEWLINE| NONE| PARENT_NOT_SET[ 17/ 17/ 1/ 0][2/2/0][ 0][2-0]
+# 41> TEMPLATE| NONE| PARENT_NOT_SET[ 1/ 1/ 9/ 0][2/2/0][ c 0000][0-0] template
+# 41> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 9/ 9/ 10/ 0][2/2/0][ 2 0000 0040][0-0] <
+# 41> TYPENAME| NONE| PARENT_NOT_SET[ 10/ 10/ 18/ 0][2/3/0][ 8 0040][0-0] typename
+# 41> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 18/ 18/ 19/ 0][2/2/0][ 2 0000 0040][0-0] >
+# 41> CLASS| TEMPLATE| PARENT_NOT_SET[ 20/ 20/ 25/ 1][2/2/0][ a 0000][0-0] class
+# 41> TYPE| CLASS| PARENT_NOT_SET[ 26/ 26/ 31/ 1][2/2/0][ 0][0-0] Base2
+# 41> BRACE_OPEN| CLASS| PARENT_NOT_SET[ 32/ 32/ 33/ 1][2/2/0][ 2 c000 0400][0-0] {
+# 41> BRACE_CLOSE| CLASS| PARENT_NOT_SET[ 34/ 34/ 35/ 1][2/2/0][ 2 c000 0400][0-0] }
+# 41> SEMICOLON| CLASS| PARENT_NOT_SET[ 35/ 35/ 36/ 0][2/2/0][ 2 0000 0000][0-0] ;
+# 41> NEWLINE| NONE| PARENT_NOT_SET[ 36/ 36/ 1/ 0][2/2/0][ 0][2-0]
+# 43> BRACE_CLOSE| NAMESPACE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][1/1/0][ 2 0000 0000][0-0] }
+# 43> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][1/1/0][ 0][2-0]
+# 45> BRACE_CLOSE| NAMESPACE| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0000 0000][0-0] }
+# 45> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][0/0/0][ 0][2-0]
+# 47> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 82/ 0][0/0/0][ 0][0-0] // template<...> class/struct[<...>] [macros/attributes ...] type : bases ... { }
+# 47> NEWLINE| NONE| PARENT_NOT_SET[ 82/ 82/ 1/ 0][0/0/0][ 0][1-0]
+# 48> TEMPLATE| NONE| PARENT_NOT_SET[ 1/ 1/ 9/ 0][0/0/0][ c 0000][0-0] template
+# 48> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 9/ 9/ 10/ 0][0/0/0][ 2 0000 0040][0-0] <
+# 48> TYPENAME| NONE| PARENT_NOT_SET[ 10/ 10/ 18/ 0][0/1/0][ 8 0040][0-0] typename
+# 48> COMMA| NONE| PARENT_NOT_SET[ 18/ 18/ 19/ 0][0/1/0][ 2 0000 0040][0-0] ,
+# 48> TYPENAME| NONE| PARENT_NOT_SET[ 20/ 20/ 28/ 1][0/1/0][ 8 0040][0-0] typename
+# 48> ELLIPSIS| NONE| PARENT_NOT_SET[ 29/ 29/ 32/ 1][0/1/0][ 2 0000 0040][0-0] ...
+# 48> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 32/ 32/ 33/ 0][0/0/0][ 2 0000 0040][0-0] >
+# 48> NEWLINE| NONE| PARENT_NOT_SET[ 33/ 33/ 1/ 0][0/0/0][ 0][1-0]
+# 49> CLASS| TEMPLATE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ a 0000][0-0] class
+# 49> WORD| NONE| PARENT_NOT_SET[ 7/ 7/ 17/ 1][0/0/0][ 2 0000][0-0] API_EXPORT
+# 49> ATTRIBUTE| NONE| PARENT_NOT_SET[ 18/ 18/ 31/ 1][0/0/0][ 0][0-0] __attribute__
+# 49> FPAREN_OPEN| ATTRIBUTE| PARENT_NOT_SET[ 31/ 31/ 32/ 0][0/0/0][ 2 0000 0000][0-0] (
+# 49> PAREN_OPEN| NONE| PARENT_NOT_SET[ 32/ 32/ 33/ 0][0/1/0][ 2 0008 0000][0-0] (
+# 49> WORD| NONE| PARENT_NOT_SET[ 33/ 33/ 47/ 0][0/2/0][ 8 0000][0-0] __deprecated__
+# 49> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 47/ 47/ 48/ 0][0/1/0][ 2 0000 0000][0-0] )
+# 49> FPAREN_CLOSE| ATTRIBUTE| PARENT_NOT_SET[ 48/ 48/ 49/ 0][0/0/0][ 2 0000 0000][0-0] )
+# 49> MACRO_FUNC_CALL| NONE| PARENT_NOT_SET[ 50/ 50/ 57/ 1][0/0/0][ 0][0-0] ALIGNAS
+# 49> FPAREN_OPEN| MACRO_FUNC_CALL| PARENT_NOT_SET[ 57/ 57/ 58/ 0][0/0/0][ 2 0000 0000][0-0] (
+# 49> NUMBER| NONE| PARENT_NOT_SET[ 58/ 58/ 59/ 0][0/1/0][ 8 0000][0-0] 4
+# 49> FPAREN_CLOSE| MACRO_FUNC_CALL| PARENT_NOT_SET[ 59/ 59/ 60/ 0][0/0/0][ 2 0000 0000][0-0] )
+# 49> TYPE| CLASS| PARENT_NOT_SET[ 61/ 61/ 63/ 1][0/0/0][ 0][0-0] c1
+# 49> NEWLINE| NONE| PARENT_NOT_SET[ 63/ 63/ 1/ 0][0/0/0][ 0][1-0]
+# 50> CLASS_COLON| CLASS| PARENT_NOT_SET[ 9/ 1/ 2/ 0][0/0/0][ 2 0000 0800][0-0] :
+# 50> QUALIFIER| NONE| PARENT_NOT_SET[ 11/ 3/ 9/ 1][0/0/0][ e 0800][0-0] public
+# 50> TYPE| NONE| PARENT_NOT_SET[ 18/ 10/ 25/ 1][0/0/0][ 800][0-0] outer_namespace
+# 50> DC_MEMBER| NONE| PARENT_NOT_SET[ 33/ 25/ 27/ 0][0/0/0][ 2 0000 0800][0-0] ::
+# 50> TYPE| NONE| PARENT_NOT_SET[ 35/ 27/ 42/ 0][0/0/0][ 800][0-0] inner_namespace
+# 50> DC_MEMBER| NONE| PARENT_NOT_SET[ 50/ 42/ 44/ 0][0/0/0][ 2 0000 0800][0-0] ::
+# 50> TYPE| NONE| PARENT_NOT_SET[ 52/ 44/ 49/ 0][0/0/0][ 800][0-0] Base1
+# 50> COMMA| NONE| PARENT_NOT_SET[ 57/ 49/ 50/ 0][0/0/0][ 2 0000 0800][0-0] ,
+# 50> NEWLINE| NONE| PARENT_NOT_SET[ 58/ 50/ 3/ 0][0/0/0][ 0][1-0]
+# 51> QUALIFIER| NONE| PARENT_NOT_SET[ 9/ 3/ 9/ 0][0/0/0][ a 0800][0-0] public
+# 51> TYPE| NONE| PARENT_NOT_SET[ 16/ 10/ 25/ 1][0/0/0][ 800][0-0] outer_namespace
+# 51> DC_MEMBER| NONE| PARENT_NOT_SET[ 31/ 25/ 27/ 0][0/0/0][ 2 0000 0800][0-0] ::
+# 51> TYPE| NONE| PARENT_NOT_SET[ 33/ 27/ 42/ 0][0/0/0][ 800][0-0] inner_namespace
+# 51> DC_MEMBER| NONE| PARENT_NOT_SET[ 48/ 42/ 44/ 0][0/0/0][ 2 0000 0800][0-0] ::
+# 51> TYPE| NONE| PARENT_NOT_SET[ 50/ 44/ 49/ 0][0/0/0][ 800][0-0] Base2
+# 51> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 55/ 49/ 50/ 0][0/0/0][ 2 0000 0840][0-0] <
+# 51> TYPE| NONE| PARENT_NOT_SET[ 56/ 50/ 65/ 0][0/1/0][ 8 0840][0-0] outer_namespace
+# 51> DC_MEMBER| NONE| PARENT_NOT_SET[ 71/ 65/ 67/ 0][0/1/0][ 2 0000 0840][0-0] ::
+# 51> TYPE| NONE| PARENT_NOT_SET[ 73/ 67/ 82/ 0][0/1/0][ 840][0-0] inner_namespace
+# 51> DC_MEMBER| NONE| PARENT_NOT_SET[ 88/ 82/ 84/ 0][0/1/0][ 2 0000 0840][0-0] ::
+# 51> TYPE| NONE| PARENT_NOT_SET[ 90/ 84/ 89/ 0][0/1/0][ 840][0-0] Base1
+# 51> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 95/ 89/ 90/ 0][0/0/0][ 2 0000 0840][0-0] >
+# 51> NEWLINE| NONE| PARENT_NOT_SET[ 96/ 90/ 1/ 0][0/0/0][ 0][1-0]
+# 52> BRACE_OPEN| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 8008 0400][0-0] {
+# 52> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][1/1/0][ 400][2-0]
+# 54> BRACE_CLOSE| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 8000 0400][0-0] }
+# 54> SEMICOLON| CLASS| PARENT_NOT_SET[ 2/ 2/ 3/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 54> NEWLINE| NONE| PARENT_NOT_SET[ 3/ 3/ 1/ 0][0/0/0][ 0][2-0]
+# 56> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 70/ 0][0/0/0][ 0][0-0] // template<...> class/struct[<...>] [macros/attributes ...] type { }
+# 56> NEWLINE| NONE| PARENT_NOT_SET[ 70/ 70/ 1/ 0][0/0/0][ 0][1-0]
+# 57> TEMPLATE| NONE| PARENT_NOT_SET[ 1/ 1/ 9/ 0][0/0/0][ c 0000][0-0] template
+# 57> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 9/ 9/ 10/ 0][0/0/0][ 2 0000 0040][0-0] <
+# 57> TYPENAME| NONE| PARENT_NOT_SET[ 10/ 10/ 18/ 0][0/1/0][ 8 0040][0-0] typename
+# 57> COMMA| NONE| PARENT_NOT_SET[ 18/ 18/ 19/ 0][0/1/0][ 2 0000 0040][0-0] ,
+# 57> TYPENAME| NONE| PARENT_NOT_SET[ 20/ 20/ 28/ 1][0/1/0][ 8 0040][0-0] typename
+# 57> ELLIPSIS| NONE| PARENT_NOT_SET[ 29/ 29/ 32/ 1][0/1/0][ 2 0000 0040][0-0] ...
+# 57> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 32/ 32/ 33/ 0][0/0/0][ 2 0000 0040][0-0] >
+# 57> NEWLINE| NONE| PARENT_NOT_SET[ 33/ 33/ 1/ 0][0/0/0][ 0][1-0]
+# 58> CLASS| TEMPLATE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ a 0000][0-0] class
+# 58> WORD| NONE| PARENT_NOT_SET[ 7/ 7/ 17/ 1][0/0/0][ 2 0000][0-0] API_EXPORT
+# 58> TYPE| CLASS| PARENT_NOT_SET[ 18/ 18/ 20/ 1][0/0/0][ 0][0-0] c2
+# 58> NEWLINE| NONE| PARENT_NOT_SET[ 20/ 20/ 1/ 0][0/0/0][ 0][1-0]
+# 59> BRACE_OPEN| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0000 0400][0-0] {
+# 59> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][1/1/0][ 400][1-0]
+# 60> ACCESS| NONE| PARENT_NOT_SET[ 1/ 1/ 7/ 0][1/1/0][ c 0400][0-0] public
+# 60> ACCESS_COLON| NONE| PARENT_NOT_SET[ 7/ 7/ 8/ 0][1/1/0][ 2 0000 0400][0-0] :
+# 60> NEWLINE| NONE| PARENT_NOT_SET[ 8/ 8/ 4/ 0][1/1/0][ 400][2-0]
+# 62> TEMPLATE| NONE| PARENT_NOT_SET[ 1/ 4/ 12/ 0][1/1/0][ c 0400][0-0] template
+# 62> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 9/ 12/ 13/ 0][1/1/0][ 2 0000 0440][0-0] <
+# 62> TYPENAME| NONE| PARENT_NOT_SET[ 10/ 13/ 21/ 0][1/2/0][ a 0440][0-0] typename
+# 62> TYPE| NONE| PARENT_NOT_SET[ 19/ 22/ 23/ 1][1/2/0][ 440][0-0] T
+# 62> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 20/ 23/ 24/ 0][1/1/0][ 2 0000 0440][0-0] >
+# 62> NEWLINE| NONE| PARENT_NOT_SET[ 21/ 24/ 4/ 0][1/1/0][ 400][1-0]
+# 63> STRUCT| TEMPLATE| PARENT_NOT_SET[ 1/ 4/ 10/ 0][1/1/0][ a 0400][0-0] struct
+# 63> TYPE| STRUCT| PARENT_NOT_SET[ 8/ 11/ 22/ 1][1/1/0][ 400][0-0] inner_class
+# 63> NEWLINE| NONE| PARENT_NOT_SET[ 19/ 22/ 4/ 0][1/1/0][ 400][1-0]
+# 64> BRACE_OPEN| STRUCT| PARENT_NOT_SET[ 1/ 4/ 5/ 0][1/1/0][ 2 0000 0400][0-0] {
+# 64> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 5/ 7/ 0][2/2/0][ 402][1-0]
+# 65> QUALIFIER| NONE| PARENT_NOT_SET[ 9/ 7/ 13/ 0][2/2/0][ 8e 0402][0-0] static
+# 65> TYPE| NONE| PARENT_NOT_SET[ 16/ 14/ 25/ 1][2/2/0][ 80 0402][0-0] inner_class
+# 65> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 27/ 25/ 26/ 0][2/2/0][ 2 0000 0442][0-0] <
+# 65> TYPE| NONE| PARENT_NOT_SET[ 28/ 26/ 27/ 0][2/3/0][ 8 0442][0-0] T
+# 65> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 29/ 27/ 28/ 0][2/2/0][ 2 0000 0442][0-0] >
+# 65> PTR_TYPE| NONE| PARENT_NOT_SET[ 31/ 29/ 30/ 1][2/2/0][ 2 0088 0402][0-0] *
+# 65> WORD| NONE| PARENT_NOT_SET[ 32/ 30/ 43/ 0][2/2/0][ 308 0402][0-0] m_inner_class
+# 65> SEMICOLON| NONE| PARENT_NOT_SET[ 45/ 43/ 44/ 0][2/2/0][ 2 0000 0402][0-0] ;
+# 65> NEWLINE| NONE| PARENT_NOT_SET[ 46/ 44/ 4/ 0][2/2/0][ 402][1-0]
+# 66> BRACE_CLOSE| STRUCT| PARENT_NOT_SET[ 1/ 4/ 5/ 0][1/1/0][ 2 0000 0402][0-0] }
+# 66> SEMICOLON| STRUCT| PARENT_NOT_SET[ 2/ 5/ 6/ 0][1/1/0][ 2 0000 0400][0-0] ;
+# 66> NEWLINE| NONE| PARENT_NOT_SET[ 3/ 6/ 1/ 0][1/1/0][ 400][1-0]
+# 67> BRACE_CLOSE| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0000 0400][0-0] }
+# 67> SEMICOLON| CLASS| PARENT_NOT_SET[ 2/ 2/ 3/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 67> NEWLINE| NONE| PARENT_NOT_SET[ 3/ 3/ 1/ 0][0/0/0][ 0][2-0]
+# 69> TEMPLATE| NONE| PARENT_NOT_SET[ 1/ 1/ 9/ 0][0/0/0][ c 0000][0-0] template
+# 69> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 9/ 9/ 10/ 0][0/0/0][ 2 0000 0040][0-0] <
+# 69> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 10/ 10/ 11/ 0][0/0/0][ 2 0008 0040][0-0] >
+# 69> TEMPLATE| NONE| PARENT_NOT_SET[ 12/ 12/ 20/ 1][0/0/0][ 8 0000][0-0] template
+# 69> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 20/ 20/ 21/ 0][0/0/0][ 2 0000 0040][0-0] <
+# 69> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 21/ 21/ 22/ 0][0/0/0][ 2 0008 0040][0-0] >
+# 69> STRUCT| TEMPLATE| PARENT_NOT_SET[ 23/ 23/ 29/ 1][0/0/0][ a 0000][0-0] struct
+# 69> WORD| NONE| PARENT_NOT_SET[ 30/ 30/ 40/ 1][0/0/0][ 2 0000][0-0] API_EXPORT
+# 69> TYPE| NONE| PARENT_NOT_SET[ 41/ 41/ 43/ 1][0/0/0][ 0][0-0] c2
+# 69> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 43/ 43/ 44/ 0][0/0/0][ 2 0000 0040][0-0] <
+# 69> TYPE| NONE| PARENT_NOT_SET[ 44/ 44/ 47/ 0][0/1/0][ 8 0040][0-0] int
+# 69> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 47/ 47/ 48/ 0][0/0/0][ 2 0000 0040][0-0] >
+# 69> DC_MEMBER| NONE| PARENT_NOT_SET[ 48/ 48/ 50/ 0][0/0/0][ 2 0008 0000][0-0] ::
+# 69> TYPE| STRUCT| PARENT_NOT_SET[ 50/ 50/ 61/ 0][0/0/0][ 80 0000][0-0] inner_class
+# 69> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 61/ 61/ 62/ 0][0/0/0][ 2 0000 0040][0-0] <
+# 69> TYPE| NONE| PARENT_NOT_SET[ 62/ 62/ 65/ 0][0/1/0][ 8 0040][0-0] int
+# 69> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 65/ 65/ 66/ 0][0/0/0][ 2 0000 0040][0-0] >
+# 69> PTR_TYPE| NONE| PARENT_NOT_SET[ 67/ 67/ 68/ 1][0/0/0][ 2 0008 0000][0-0] *
+# 69> TYPE| NONE| PARENT_NOT_SET[ 68/ 68/ 70/ 0][0/0/0][ 8 0000][0-0] c2
+# 69> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 70/ 70/ 71/ 0][0/0/0][ 2 0000 0040][0-0] <
+# 69> TYPE| NONE| PARENT_NOT_SET[ 71/ 71/ 74/ 0][0/1/0][ 8 0040][0-0] int
+# 69> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 74/ 74/ 75/ 0][0/0/0][ 2 0000 0040][0-0] >
+# 69> DC_MEMBER| NONE| PARENT_NOT_SET[ 75/ 75/ 77/ 0][0/0/0][ 2 0008 0000][0-0] ::
+# 69> TYPE| NONE| PARENT_NOT_SET[ 77/ 77/ 88/ 0][0/0/0][ 0][0-0] inner_class
+# 69> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 88/ 88/ 89/ 0][0/0/0][ 2 0000 0040][0-0] <
+# 69> TYPE| NONE| PARENT_NOT_SET[ 89/ 89/ 92/ 0][0/1/0][ 8 0040][0-0] int
+# 69> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 92/ 92/ 93/ 0][0/0/0][ 2 0000 0040][0-0] >
+# 69> DC_MEMBER| NONE| PARENT_NOT_SET[ 93/ 93/ 95/ 0][0/0/0][ 2 0008 0000][0-0] ::
+# 69> WORD| NONE| PARENT_NOT_SET[ 95/ 95/108/ 0][0/0/0][ 2300 0000][0-0] m_inner_class
+# 69> ASSIGN| NONE| PARENT_NOT_SET[109/109/110/ 1][0/0/0][ 2 0000 0000][0-0] =
+# 69> WORD| NONE| PARENT_NOT_SET[111/111/118/ 1][0/0/0][ 8 0000][0-0] nullptr
+# 69> SEMICOLON| STRUCT| PARENT_NOT_SET[118/118/119/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 69> NEWLINE| NONE| PARENT_NOT_SET[119/119/ 1/ 0][0/0/0][ 0][2-0]
+# 71> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 66/ 0][0/0/0][ 0][0-0] // template<...> class/struct[<...>] [macros/attributes ...] type
+# 71> NEWLINE| NONE| PARENT_NOT_SET[ 66/ 66/ 1/ 0][0/0/0][ 0][1-0]
+# 72> TEMPLATE| NONE| PARENT_NOT_SET[ 1/ 1/ 9/ 0][0/0/0][ c 0000][0-0] template
+# 72> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 9/ 9/ 10/ 0][0/0/0][ 2 0000 0040][0-0] <
+# 72> TYPENAME| NONE| PARENT_NOT_SET[ 10/ 10/ 18/ 0][0/1/0][ 8 0040][0-0] typename
+# 72> COMMA| NONE| PARENT_NOT_SET[ 18/ 18/ 19/ 0][0/1/0][ 2 0000 0040][0-0] ,
+# 72> TYPENAME| NONE| PARENT_NOT_SET[ 20/ 20/ 28/ 1][0/1/0][ 8 0040][0-0] typename
+# 72> ELLIPSIS| NONE| PARENT_NOT_SET[ 29/ 29/ 32/ 1][0/1/0][ 2 0000 0040][0-0] ...
+# 72> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 32/ 32/ 33/ 0][0/0/0][ 2 0000 0040][0-0] >
+# 72> NEWLINE| NONE| PARENT_NOT_SET[ 33/ 33/ 1/ 0][0/0/0][ 0][1-0]
+# 73> CLASS| TEMPLATE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ 1000 000a 0000][0-0] class
+# 73> WORD| NONE| PARENT_NOT_SET[ 7/ 7/ 17/ 1][0/0/0][ 1000 0002 0000][0-0] API_EXPORT
+# 73> TYPE| CLASS| PARENT_NOT_SET[ 18/ 18/ 20/ 1][0/0/0][ 1000 0000 0000][0-0] c2
+# 73> SEMICOLON| CLASS| PARENT_NOT_SET[ 20/ 20/ 21/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 73> NEWLINE| NONE| PARENT_NOT_SET[ 21/ 21/ 1/ 0][0/0/0][ 0][2-0]
+# 75> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 68/ 0][0/0/0][ 0][0-0] // class/struct [macros/attributes ...] type : bases ... { } x, ...
+# 75> NEWLINE| NONE| PARENT_NOT_SET[ 68/ 68/ 1/ 0][0/0/0][ 0][1-0]
+# 76> CLASS| NONE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ e 0000][0-0] class
+# 76> WORD| NONE| PARENT_NOT_SET[ 7/ 7/ 17/ 1][0/0/0][ 2 0000][0-0] API_EXPORT
+# 76> ATTRIBUTE| NONE| PARENT_NOT_SET[ 18/ 18/ 31/ 1][0/0/0][ 0][0-0] __attribute__
+# 76> FPAREN_OPEN| ATTRIBUTE| PARENT_NOT_SET[ 31/ 31/ 32/ 0][0/0/0][ 2 0000 0000][0-0] (
+# 76> PAREN_OPEN| NONE| PARENT_NOT_SET[ 32/ 32/ 33/ 0][0/1/0][ 2 0008 0000][0-0] (
+# 76> WORD| NONE| PARENT_NOT_SET[ 33/ 33/ 47/ 0][0/2/0][ 8 0000][0-0] __deprecated__
+# 76> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 47/ 47/ 48/ 0][0/1/0][ 2 0000 0000][0-0] )
+# 76> FPAREN_CLOSE| ATTRIBUTE| PARENT_NOT_SET[ 48/ 48/ 49/ 0][0/0/0][ 2 0000 0000][0-0] )
+# 76> MACRO_FUNC_CALL| NONE| PARENT_NOT_SET[ 50/ 50/ 57/ 1][0/0/0][ 0][0-0] ALIGNAS
+# 76> FPAREN_OPEN| MACRO_FUNC_CALL| PARENT_NOT_SET[ 57/ 57/ 58/ 0][0/0/0][ 2 0000 0000][0-0] (
+# 76> NUMBER| NONE| PARENT_NOT_SET[ 58/ 58/ 59/ 0][0/1/0][ 8 0000][0-0] 4
+# 76> FPAREN_CLOSE| MACRO_FUNC_CALL| PARENT_NOT_SET[ 59/ 59/ 60/ 0][0/0/0][ 2 0000 0000][0-0] )
+# 76> TYPE| CLASS| PARENT_NOT_SET[ 61/ 61/ 63/ 1][0/0/0][ 80 0000][0-0] c3
+# 76> NEWLINE| NONE| PARENT_NOT_SET[ 63/ 63/ 1/ 0][0/0/0][ 0][1-0]
+# 77> CLASS_COLON| CLASS| PARENT_NOT_SET[ 9/ 1/ 2/ 0][0/0/0][ 2 0000 0800][0-0] :
+# 77> QUALIFIER| NONE| PARENT_NOT_SET[ 11/ 3/ 9/ 1][0/0/0][ e 0800][0-0] public
+# 77> TYPE| NONE| PARENT_NOT_SET[ 18/ 10/ 25/ 1][0/0/0][ 800][0-0] outer_namespace
+# 77> DC_MEMBER| NONE| PARENT_NOT_SET[ 33/ 25/ 27/ 0][0/0/0][ 2 0000 0800][0-0] ::
+# 77> TYPE| NONE| PARENT_NOT_SET[ 35/ 27/ 42/ 0][0/0/0][ 800][0-0] inner_namespace
+# 77> DC_MEMBER| NONE| PARENT_NOT_SET[ 50/ 42/ 44/ 0][0/0/0][ 2 0000 0800][0-0] ::
+# 77> TYPE| NONE| PARENT_NOT_SET[ 52/ 44/ 49/ 0][0/0/0][ 800][0-0] Base2
+# 77> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 57/ 49/ 50/ 0][0/0/0][ 2 0000 0840][0-0] <
+# 77> TYPE| NONE| PARENT_NOT_SET[ 58/ 50/ 53/ 0][0/1/0][ 8 0840][0-0] int
+# 77> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 61/ 53/ 54/ 0][0/0/0][ 2 0000 0840][0-0] >
+# 77> COMMA| NONE| PARENT_NOT_SET[ 62/ 54/ 55/ 0][0/0/0][ 2 0008 0800][0-0] ,
+# 77> NEWLINE| NONE| PARENT_NOT_SET[ 63/ 55/ 3/ 0][0/0/0][ 0][1-0]
+# 78> QUALIFIER| NONE| PARENT_NOT_SET[ 9/ 3/ 9/ 0][0/0/0][ a 0800][0-0] public
+# 78> TYPE| NONE| PARENT_NOT_SET[ 16/ 10/ 12/ 1][0/0/0][ 800][0-0] c2
+# 78> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 18/ 12/ 13/ 0][0/0/0][ 2 0000 0840][0-0] <
+# 78> TYPE| NONE| PARENT_NOT_SET[ 19/ 13/ 16/ 0][0/1/0][ 8 0840][0-0] int
+# 78> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 22/ 16/ 17/ 0][0/0/0][ 2 0000 0840][0-0] >
+# 78> DC_MEMBER| NONE| PARENT_NOT_SET[ 23/ 17/ 19/ 0][0/0/0][ 2 0008 0800][0-0] ::
+# 78> TYPE| NONE| PARENT_NOT_SET[ 25/ 19/ 30/ 0][0/0/0][ 800][0-0] inner_class
+# 78> ANGLE_OPEN| TEMPLATE| PARENT_NOT_SET[ 36/ 30/ 31/ 0][0/0/0][ 2 0000 0840][0-0] <
+# 78> TYPE| NONE| PARENT_NOT_SET[ 37/ 31/ 34/ 0][0/1/0][ 8 0840][0-0] int
+# 78> ANGLE_CLOSE| TEMPLATE| PARENT_NOT_SET[ 40/ 34/ 35/ 0][0/0/0][ 2 0000 0840][0-0] >
+# 78> NEWLINE| NONE| PARENT_NOT_SET[ 41/ 35/ 1/ 0][0/0/0][ 0][1-0]
+# 79> BRACE_OPEN| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0008 0400][0-0] {
+# 79> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][1/1/0][ 400][1-0]
+# 80> ACCESS| NONE| PARENT_NOT_SET[ 1/ 1/ 7/ 0][1/1/0][ c 0400][0-0] public
+# 80> ACCESS_COLON| NONE| PARENT_NOT_SET[ 7/ 7/ 8/ 0][1/1/0][ 2 0000 0400][0-0] :
+# 80> NEWLINE| NONE| PARENT_NOT_SET[ 8/ 8/ 4/ 0][1/1/0][ 400][1-0]
+# 81> FUNC_CLASS_DEF| NONE| PARENT_NOT_SET[ 1/ 4/ 6/ 0][1/1/0][ c 0400][0-0] c3
+# 81> FPAREN_OPEN| FUNC_CLASS_DEF| PARENT_NOT_SET[ 3/ 6/ 7/ 0][1/1/0][ 2 0000 0500][0-0] (
+# 81> TYPE| NONE| PARENT_NOT_SET[ 4/ 7/ 10/ 0][1/2/0][ 208a 0510][0-0] int
+# 81> WORD| NONE| PARENT_NOT_SET[ 8/ 11/ 12/ 1][1/2/0][ 2100 0510][0-0] x
+# 81> ASSIGN_DEFAULT_ARG| FUNC_PROTO| PARENT_NOT_SET[ 10/ 13/ 14/ 1][1/2/0][ 2 0000 0510][0-0] =
+# 81> NUMBER| NONE| PARENT_NOT_SET[ 12/ 15/ 16/ 1][1/2/0][ 8 0510][0-0] 0
+# 81> COMMA| NONE| PARENT_NOT_SET[ 13/ 16/ 17/ 0][1/2/0][ 2 0000 0510][0-0] ,
+# 81> TYPE| NONE| PARENT_NOT_SET[ 15/ 18/ 21/ 1][1/2/0][ 208a 0510][0-0] int
+# 81> WORD| NONE| PARENT_NOT_SET[ 19/ 22/ 23/ 1][1/2/0][ 2100 0510][0-0] y
+# 81> ASSIGN_DEFAULT_ARG| FUNC_PROTO| PARENT_NOT_SET[ 21/ 24/ 25/ 1][1/2/0][ 2 0000 0510][0-0] =
+# 81> NUMBER| NONE| PARENT_NOT_SET[ 23/ 26/ 27/ 1][1/2/0][ 8 0510][0-0] 0
+# 81> COMMA| NONE| PARENT_NOT_SET[ 24/ 27/ 28/ 0][1/2/0][ 2 0000 0510][0-0] ,
+# 81> TYPE| NONE| PARENT_NOT_SET[ 26/ 29/ 32/ 1][1/2/0][ 208a 0510][0-0] int
+# 81> WORD| NONE| PARENT_NOT_SET[ 30/ 33/ 34/ 1][1/2/0][ 2100 0510][0-0] z
+# 81> ASSIGN_DEFAULT_ARG| FUNC_PROTO| PARENT_NOT_SET[ 32/ 35/ 36/ 1][1/2/0][ 2 0000 0510][0-0] =
+# 81> NUMBER| NONE| PARENT_NOT_SET[ 34/ 37/ 38/ 1][1/2/0][ 8 0510][0-0] 0
+# 81> FPAREN_CLOSE| FUNC_CLASS_DEF| PARENT_NOT_SET[ 35/ 38/ 39/ 0][1/1/0][ 2 0000 0510][0-0] )
+# 81> CONSTR_COLON| NONE| PARENT_NOT_SET[ 37/ 40/ 41/ 1][1/1/0][ 2 0000 0500][0-0] :
+# 81> FUNC_CTOR_VAR| NONE| PARENT_NOT_SET[ 39/ 42/ 45/ 1][1/1/0][ c 0500][0-0] m_x
+# 81> FPAREN_OPEN| FUNC_CTOR_VAR| PARENT_NOT_SET[ 42/ 45/ 46/ 0][1/1/0][ 2 0000 0500][0-0] (
+# 81> WORD| NONE| PARENT_NOT_SET[ 43/ 46/ 47/ 0][1/2/0][ 8 0510][0-0] x
+# 81> FPAREN_CLOSE| FUNC_CTOR_VAR| PARENT_NOT_SET[ 44/ 47/ 48/ 0][1/1/0][ 2 0000 0510][0-0] )
+# 81> COMMA| NONE| PARENT_NOT_SET[ 45/ 48/ 49/ 0][1/1/0][ 2 0000 0500][0-0] ,
+# 81> FUNC_CTOR_VAR| NONE| PARENT_NOT_SET[ 47/ 50/ 53/ 1][1/1/0][ 8 0500][0-0] m_y
+# 81> FPAREN_OPEN| FUNC_CTOR_VAR| PARENT_NOT_SET[ 50/ 53/ 54/ 0][1/1/0][ 2 0000 0500][0-0] (
+# 81> WORD| NONE| PARENT_NOT_SET[ 51/ 54/ 55/ 0][1/2/0][ 8 0510][0-0] y
+# 81> FPAREN_CLOSE| FUNC_CTOR_VAR| PARENT_NOT_SET[ 52/ 55/ 56/ 0][1/1/0][ 2 0000 0510][0-0] )
+# 81> COMMA| NONE| PARENT_NOT_SET[ 53/ 56/ 57/ 0][1/1/0][ 2 0000 0500][0-0] ,
+# 81> FUNC_CTOR_VAR| NONE| PARENT_NOT_SET[ 55/ 58/ 61/ 1][1/1/0][ 8 0500][0-0] m_z
+# 81> FPAREN_OPEN| FUNC_CTOR_VAR| PARENT_NOT_SET[ 58/ 61/ 62/ 0][1/1/0][ 2 0000 0500][0-0] (
+# 81> WORD| NONE| PARENT_NOT_SET[ 59/ 62/ 63/ 0][1/2/0][ 8 0510][0-0] z
+# 81> FPAREN_CLOSE| FUNC_CTOR_VAR| PARENT_NOT_SET[ 60/ 63/ 64/ 0][1/1/0][ 2 0000 0510][0-0] )
+# 81> BRACE_OPEN| FUNC_CLASS_DEF| PARENT_NOT_SET[ 62/ 65/ 66/ 1][1/1/0][ 2 8000 0400][0-0] {
+# 81> NEWLINE| NONE| PARENT_NOT_SET[ 63/ 67/ 0/ 0][1/1/0][ 400][1-0]
+# 81> BRACE_CLOSE| FUNC_CLASS_DEF| PARENT_NOT_SET[ 1/ 67/ 68/ 1][1/1/0][ 2 8000 0400][0-0] }
+# 81> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 68/ 4/ 0][1/1/0][ 400][2-0]
+# 83> TYPE| NONE| PARENT_NOT_SET[ 1/ 4/ 7/ 0][1/1/0][ 8e 0400][0-0] int
+# 83> WORD| NONE| PARENT_NOT_SET[ 5/ 8/ 11/ 1][1/1/0][ 300 0400][0-0] m_x
+# 83> SEMICOLON| NONE| PARENT_NOT_SET[ 8/ 11/ 12/ 0][1/1/0][ 2 0000 0400][0-0] ;
+# 83> NEWLINE| NONE| PARENT_NOT_SET[ 9/ 12/ 4/ 0][1/1/0][ 400][1-0]
+# 84> TYPE| NONE| PARENT_NOT_SET[ 1/ 4/ 7/ 0][1/1/0][ 8e 0400][0-0] int
+# 84> WORD| NONE| PARENT_NOT_SET[ 5/ 8/ 11/ 1][1/1/0][ 300 0400][0-0] m_y
+# 84> SEMICOLON| NONE| PARENT_NOT_SET[ 8/ 11/ 12/ 0][1/1/0][ 2 0000 0400][0-0] ;
+# 84> NEWLINE| NONE| PARENT_NOT_SET[ 9/ 12/ 4/ 0][1/1/0][ 400][1-0]
+# 85> TYPE| NONE| PARENT_NOT_SET[ 1/ 4/ 7/ 0][1/1/0][ 8e 0400][0-0] int
+# 85> WORD| NONE| PARENT_NOT_SET[ 5/ 8/ 11/ 1][1/1/0][ 300 0400][0-0] m_z
+# 85> SEMICOLON| NONE| PARENT_NOT_SET[ 8/ 11/ 12/ 0][1/1/0][ 2 0000 0400][0-0] ;
+# 85> NEWLINE| NONE| PARENT_NOT_SET[ 9/ 12/ 1/ 0][1/1/0][ 400][1-0]
+# 86> BRACE_CLOSE| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0000 0400][0-0] }
+# 86> WORD| NONE| PARENT_NOT_SET[ 3/ 3/ 6/ 1][0/0/0][ 70c 0000][0-0] c31
+# 86> COMMA| NONE| PARENT_NOT_SET[ 6/ 6/ 7/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 86> PTR_TYPE| CLASS| PARENT_NOT_SET[ 8/ 8/ 9/ 1][0/0/0][ 2 0008 0000][0-0] *
+# 86> WORD| NONE| PARENT_NOT_SET[ 9/ 9/ 12/ 0][0/0/0][ 2508 0000][0-0] c32
+# 86> ASSIGN| NONE| PARENT_NOT_SET[ 13/ 13/ 14/ 1][0/0/0][ 2 0000 0000][0-0] =
+# 86> WORD| NONE| PARENT_NOT_SET[ 15/ 15/ 22/ 1][0/0/0][ 8 0000][0-0] nullptr
+# 86> COMMA| NONE| PARENT_NOT_SET[ 22/ 22/ 23/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 86> PTR_TYPE| CLASS| PARENT_NOT_SET[ 24/ 24/ 25/ 1][0/0/0][ 2 0008 0000][0-0] *
+# 86> WORD| NONE| PARENT_NOT_SET[ 25/ 25/ 28/ 0][0/0/0][ 508 0000][0-0] c33
+# 86> TSQUARE| NONE| PARENT_NOT_SET[ 28/ 28/ 30/ 0][0/0/0][ 2 0000 0000][0-0] []
+# 86> ASSIGN| NONE| PARENT_NOT_SET[ 31/ 31/ 32/ 1][0/0/0][ 2 0000 0000][0-0] =
+# 86> BRACE_OPEN| BRACED_INIT_LIST| PARENT_NOT_SET[ 33/ 33/ 34/ 1][0/0/0][ 2 4008 0000][0-0] {
+# 86> WORD| NONE| PARENT_NOT_SET[ 35/ 35/ 42/ 1][1/1/0][ 4008 0000][0-0] nullptr
+# 86> COMMA| NONE| PARENT_NOT_SET[ 42/ 42/ 43/ 0][1/1/0][ 2 4000 0000][0-0] ,
+# 86> WORD| NONE| PARENT_NOT_SET[ 44/ 44/ 51/ 1][1/1/0][ 4008 0000][0-0] nullptr
+# 86> BRACE_CLOSE| BRACED_INIT_LIST| PARENT_NOT_SET[ 52/ 52/ 53/ 1][0/0/0][ 2 4000 0000][0-0] }
+# 86> COMMA| NONE| PARENT_NOT_SET[ 53/ 53/ 54/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 86> WORD| NONE| PARENT_NOT_SET[ 55/ 55/ 58/ 1][0/0/0][ 2508 0000][0-0] c34
+# 86> BRACE_OPEN| BRACED_INIT_LIST| PARENT_NOT_SET[ 58/ 58/ 59/ 0][0/0/0][ 2 4000 0000][0-0] {
+# 86> NUMBER| NONE| PARENT_NOT_SET[ 60/ 60/ 61/ 1][1/1/0][ 400c 0000][0-0] 0
+# 86> COMMA| NONE| PARENT_NOT_SET[ 61/ 61/ 62/ 0][1/1/0][ 2 4000 0000][0-0] ,
+# 86> NUMBER| NONE| PARENT_NOT_SET[ 63/ 63/ 64/ 1][1/1/0][ 4008 0000][0-0] 1
+# 86> COMMA| NONE| PARENT_NOT_SET[ 64/ 64/ 65/ 0][1/1/0][ 2 4000 0000][0-0] ,
+# 86> NUMBER| NONE| PARENT_NOT_SET[ 66/ 66/ 67/ 1][1/1/0][ 4008 0000][0-0] 2
+# 86> BRACE_CLOSE| BRACED_INIT_LIST| PARENT_NOT_SET[ 67/ 67/ 68/ 0][0/0/0][ 2 4000 0000][0-0] }
+# 86> COMMA| NONE| PARENT_NOT_SET[ 68/ 68/ 69/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 86> PTR_TYPE| CLASS| PARENT_NOT_SET[ 70/ 70/ 71/ 1][0/0/0][ 2 0008 0000][0-0] *
+# 86> QUALIFIER| NONE| PARENT_NOT_SET[ 72/ 72/ 77/ 1][0/0/0][ a 0000][0-0] const
+# 86> FUNC_CALL| NONE| PARENT_NOT_SET[ 78/ 78/ 81/ 1][0/0/0][ 500 0000][0-0] c35
+# 86> FPAREN_OPEN| FUNC_CALL| PARENT_NOT_SET[ 81/ 81/ 82/ 0][0/0/0][ 2 0000 0000][0-0] (
+# 86> WORD| NONE| PARENT_NOT_SET[ 82/ 82/ 89/ 0][0/1/0][ 8 0010][0-0] nullptr
+# 86> FPAREN_CLOSE| FUNC_CALL| PARENT_NOT_SET[ 89/ 89/ 90/ 0][0/0/0][ 2 0000 0010][0-0] )
+# 86> COMMA| NONE| PARENT_NOT_SET[ 90/ 90/ 91/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 86> FUNC_CALL| NONE| PARENT_NOT_SET[ 92/ 92/ 95/ 1][0/0/0][ 508 0000][0-0] c16
+# 86> FPAREN_OPEN| FUNC_CALL| PARENT_NOT_SET[ 95/ 95/ 96/ 0][0/0/0][ 2 0000 0000][0-0] (
+# 86> NUMBER| NONE| PARENT_NOT_SET[ 96/ 96/ 97/ 0][0/1/0][ 8 0010][0-0] 0
+# 86> COMMA| NONE| PARENT_NOT_SET[ 97/ 97/ 98/ 0][0/1/0][ 2 0000 0010][0-0] ,
+# 86> NUMBER| NONE| PARENT_NOT_SET[ 99/ 99/100/ 1][0/1/0][ 8 0010][0-0] 1
+# 86> COMMA| NONE| PARENT_NOT_SET[100/100/101/ 0][0/1/0][ 2 0000 0010][0-0] ,
+# 86> NUMBER| NONE| PARENT_NOT_SET[102/102/103/ 1][0/1/0][ 8 0010][0-0] 2
+# 86> FPAREN_CLOSE| FUNC_CALL| PARENT_NOT_SET[103/103/104/ 0][0/0/0][ 2 0000 0010][0-0] )
+# 86> SEMICOLON| CLASS| PARENT_NOT_SET[104/104/105/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 86> NEWLINE| NONE| PARENT_NOT_SET[105/105/ 1/ 0][0/0/0][ 0][2-0]
+# 88> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 52/ 0][0/0/0][ 0][0-0] // class/struct [macros/attributes ...] type x, ...
+# 88> NEWLINE| NONE| PARENT_NOT_SET[ 52/ 52/ 1/ 0][0/0/0][ 0][1-0]
+# 89> CLASS| NONE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ e 0000][0-0] class
+# 89> ATTRIBUTE| NONE| PARENT_NOT_SET[ 7/ 7/ 20/ 1][0/0/0][ 0][0-0] __attribute__
+# 89> FPAREN_OPEN| ATTRIBUTE| PARENT_NOT_SET[ 20/ 20/ 21/ 0][0/0/0][ 2 0000 0000][0-0] (
+# 89> PAREN_OPEN| NONE| PARENT_NOT_SET[ 21/ 21/ 22/ 0][0/1/0][ 2 0008 0000][0-0] (
+# 89> WORD| NONE| PARENT_NOT_SET[ 22/ 22/ 36/ 0][0/2/0][ 8 0000][0-0] __deprecated__
+# 89> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 36/ 36/ 37/ 0][0/1/0][ 2 0000 0000][0-0] )
+# 89> FPAREN_CLOSE| ATTRIBUTE| PARENT_NOT_SET[ 37/ 37/ 38/ 0][0/0/0][ 2 0000 0000][0-0] )
+# 89> WORD| NONE| PARENT_NOT_SET[ 39/ 39/ 49/ 1][0/0/0][ e 0000][0-0] API_EXPORT
+# 89> MACRO_FUNC_CALL| NONE| PARENT_NOT_SET[ 50/ 50/ 57/ 1][0/0/0][ 0][0-0] ALIGNAS
+# 89> FPAREN_OPEN| MACRO_FUNC_CALL| PARENT_NOT_SET[ 57/ 57/ 58/ 0][0/0/0][ 2 0000 0000][0-0] (
+# 89> NUMBER| NONE| PARENT_NOT_SET[ 58/ 58/ 59/ 0][0/1/0][ 8 0000][0-0] 4
+# 89> FPAREN_CLOSE| MACRO_FUNC_CALL| PARENT_NOT_SET[ 59/ 59/ 60/ 0][0/0/0][ 2 0000 0000][0-0] )
+# 89> TYPE| CLASS| PARENT_NOT_SET[ 61/ 61/ 63/ 1][0/0/0][ 82 0000][0-0] c3
+# 89> WORD| NONE| PARENT_NOT_SET[ 64/ 64/ 67/ 1][0/0/0][ 300 0000][0-0] c41
+# 89> COMMA| NONE| PARENT_NOT_SET[ 67/ 67/ 68/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 89> PTR_TYPE| CLASS| PARENT_NOT_SET[ 69/ 69/ 70/ 1][0/0/0][ 2 0008 0000][0-0] *
+# 89> WORD| NONE| PARENT_NOT_SET[ 70/ 70/ 73/ 0][0/0/0][ 2108 0000][0-0] c42
+# 89> ASSIGN| NONE| PARENT_NOT_SET[ 74/ 74/ 75/ 1][0/0/0][ 2 0000 0000][0-0] =
+# 89> WORD| NONE| PARENT_NOT_SET[ 76/ 76/ 79/ 1][0/0/0][ 8 0000][0-0] c32
+# 89> QUESTION| NONE| COMMA[ 80/ 80/ 81/ 1][0/0/0][ 1 0002 0000 0000][0-0] ?
+# 89> WORD| NONE| PARENT_NOT_SET[ 82/ 82/ 85/ 1][0/0/0][ 1 0000 0008 0000][0-0] c32
+# 89> COND_COLON| NONE| QUESTION[ 86/ 86/ 87/ 1][0/0/0][ 1 0002 0000 0000][0-0] :
+# 89> WORD| NONE| PARENT_NOT_SET[ 88/ 88/ 95/ 1][0/0/0][ 1 0000 000c 0000][0-0] nullptr
+# 89> COMMA| NONE| PARENT_NOT_SET[ 95/ 95/ 96/ 0][0/0/0][ 1 0002 0000 0000][0-0] ,
+# 89> PTR_TYPE| CLASS| PARENT_NOT_SET[ 97/ 97/ 98/ 1][0/0/0][ 2 0008 0000][0-0] *
+# 89> WORD| NONE| PARENT_NOT_SET[ 98/ 98/101/ 0][0/0/0][ 108 0000][0-0] c43
+# 89> TSQUARE| NONE| PARENT_NOT_SET[101/101/103/ 0][0/0/0][ 2 0000 0000][0-0] []
+# 89> ASSIGN| NONE| PARENT_NOT_SET[104/104/105/ 1][0/0/0][ 2 0000 0000][0-0] =
+# 89> BRACE_OPEN| BRACED_INIT_LIST| PARENT_NOT_SET[106/106/107/ 1][0/0/0][ 2 4008 0000][0-0] {
+# 89> WORD| NONE| PARENT_NOT_SET[108/108/115/ 1][1/1/0][ 4008 0000][0-0] nullptr
+# 89> COMMA| NONE| PARENT_NOT_SET[115/115/116/ 0][1/1/0][ 2 4000 0000][0-0] ,
+# 89> WORD| NONE| PARENT_NOT_SET[117/117/124/ 1][1/1/0][ 4008 0000][0-0] nullptr
+# 89> BRACE_CLOSE| BRACED_INIT_LIST| PARENT_NOT_SET[125/125/126/ 1][0/0/0][ 2 4000 0000][0-0] }
+# 89> COMMA| NONE| PARENT_NOT_SET[126/126/127/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 89> WORD| NONE| PARENT_NOT_SET[128/128/131/ 1][0/0/0][ 2108 0000][0-0] c44
+# 89> BRACE_OPEN| BRACED_INIT_LIST| PARENT_NOT_SET[131/131/132/ 0][0/0/0][ 2 4000 0000][0-0] {
+# 89> NUMBER| NONE| PARENT_NOT_SET[133/133/134/ 1][1/1/0][ 400c 0000][0-0] 0
+# 89> COMMA| NONE| PARENT_NOT_SET[134/134/135/ 0][1/1/0][ 2 4000 0000][0-0] ,
+# 89> NUMBER| NONE| PARENT_NOT_SET[136/136/137/ 1][1/1/0][ 4008 0000][0-0] 1
+# 89> COMMA| NONE| PARENT_NOT_SET[137/137/138/ 0][1/1/0][ 2 4000 0000][0-0] ,
+# 89> NUMBER| NONE| PARENT_NOT_SET[139/139/140/ 1][1/1/0][ 4008 0000][0-0] 2
+# 89> BRACE_CLOSE| BRACED_INIT_LIST| PARENT_NOT_SET[140/140/141/ 0][0/0/0][ 2 4000 0000][0-0] }
+# 89> COMMA| NONE| PARENT_NOT_SET[141/141/142/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 89> PTR_TYPE| CLASS| PARENT_NOT_SET[143/143/144/ 1][0/0/0][ 2 0008 0000][0-0] *
+# 89> QUALIFIER| NONE| PARENT_NOT_SET[145/145/150/ 1][0/0/0][ a 0000][0-0] const
+# 89> FUNC_CALL| NONE| PARENT_NOT_SET[151/151/154/ 1][0/0/0][ 100 0000][0-0] c45
+# 89> FPAREN_OPEN| FUNC_CALL| PARENT_NOT_SET[154/154/155/ 0][0/0/0][ 2 0000 0000][0-0] (
+# 89> WORD| NONE| PARENT_NOT_SET[155/155/162/ 0][0/1/0][ 8 0010][0-0] nullptr
+# 89> FPAREN_CLOSE| FUNC_CALL| PARENT_NOT_SET[162/162/163/ 0][0/0/0][ 2 0000 0010][0-0] )
+# 89> COMMA| NONE| PARENT_NOT_SET[163/163/164/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 89> FUNC_CALL| NONE| PARENT_NOT_SET[165/165/168/ 1][0/0/0][ 108 0000][0-0] c46
+# 89> FPAREN_OPEN| FUNC_CALL| PARENT_NOT_SET[168/168/169/ 0][0/0/0][ 2 0000 0000][0-0] (
+# 89> NUMBER| NONE| PARENT_NOT_SET[169/169/170/ 0][0/1/0][ 8 0010][0-0] 0
+# 89> COMMA| NONE| PARENT_NOT_SET[170/170/171/ 0][0/1/0][ 2 0000 0010][0-0] ,
+# 89> NUMBER| NONE| PARENT_NOT_SET[172/172/173/ 1][0/1/0][ 8 0010][0-0] 1
+# 89> COMMA| NONE| PARENT_NOT_SET[173/173/174/ 0][0/1/0][ 2 0000 0010][0-0] ,
+# 89> NUMBER| NONE| PARENT_NOT_SET[175/175/176/ 1][0/1/0][ 8 0010][0-0] 2
+# 89> FPAREN_CLOSE| FUNC_CALL| PARENT_NOT_SET[176/176/177/ 0][0/0/0][ 2 0000 0010][0-0] )
+# 89> SEMICOLON| CLASS| PARENT_NOT_SET[177/177/178/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 89> NEWLINE| NONE| PARENT_NOT_SET[178/178/ 1/ 0][0/0/0][ 0][2-0]
+# 91> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 68/ 0][0/0/0][ 0][0-0] // class/struct [macros/attributes ...] type : bases ... { } x, ...
+# 91> NEWLINE| NONE| PARENT_NOT_SET[ 68/ 68/ 1/ 0][0/0/0][ 0][1-0]
+# 92> CLASS| NONE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ e 0000][0-0] class
+# 92> FUNC_CALL| NONE| PARENT_NOT_SET[ 7/ 7/ 14/ 1][0/0/0][ 0][0-0] ALIGNAS
+# 92> FPAREN_OPEN| FUNC_CALL| PARENT_NOT_SET[ 14/ 14/ 15/ 0][0/0/0][ 2 0000 0000][0-0] (
+# 92> NUMBER| NONE| PARENT_NOT_SET[ 15/ 15/ 16/ 0][0/1/0][ 8 0010][0-0] 4
+# 92> FPAREN_CLOSE| FUNC_CALL| PARENT_NOT_SET[ 16/ 16/ 17/ 0][0/0/0][ 2 0000 0010][0-0] )
+# 92> WORD| NONE| PARENT_NOT_SET[ 18/ 18/ 28/ 1][0/0/0][ 2 0000][0-0] API_EXPORT
+# 92> ATTRIBUTE| NONE| PARENT_NOT_SET[ 29/ 29/ 42/ 1][0/0/0][ 0][0-0] __attribute__
+# 92> FPAREN_OPEN| ATTRIBUTE| PARENT_NOT_SET[ 42/ 42/ 43/ 0][0/0/0][ 2 0000 0000][0-0] (
+# 92> PAREN_OPEN| NONE| PARENT_NOT_SET[ 43/ 43/ 44/ 0][0/1/0][ 2 0008 0000][0-0] (
+# 92> WORD| NONE| PARENT_NOT_SET[ 44/ 44/ 58/ 0][0/2/0][ 8 0000][0-0] __deprecated__
+# 92> PAREN_CLOSE| NONE| PARENT_NOT_SET[ 58/ 58/ 59/ 0][0/1/0][ 2 0000 0000][0-0] )
+# 92> FPAREN_CLOSE| ATTRIBUTE| PARENT_NOT_SET[ 59/ 59/ 60/ 0][0/0/0][ 2 0000 0000][0-0] )
+# 92> NEWLINE| NONE| PARENT_NOT_SET[ 60/ 60/ 1/ 0][0/0/0][ 0][1-0]
+# 93> CLASS_COLON| CLASS| PARENT_NOT_SET[ 9/ 1/ 2/ 0][0/0/0][ 2 0000 0800][0-0] :
+# 93> QUALIFIER| NONE| PARENT_NOT_SET[ 11/ 3/ 9/ 1][0/0/0][ e 0800][0-0] public
+# 93> TYPE| NONE| PARENT_NOT_SET[ 18/ 10/ 25/ 1][0/0/0][ 800][0-0] outer_namespace
+# 93> DC_MEMBER| NONE| PARENT_NOT_SET[ 33/ 25/ 27/ 0][0/0/0][ 2 0000 0800][0-0] ::
+# 93> TYPE| NONE| PARENT_NOT_SET[ 35/ 27/ 42/ 0][0/0/0][ 800][0-0] inner_namespace
+# 93> DC_MEMBER| NONE| PARENT_NOT_SET[ 50/ 42/ 44/ 0][0/0/0][ 2 0000 0800][0-0] ::
+# 93> TYPE| NONE| PARENT_NOT_SET[ 52/ 44/ 49/ 0][0/0/0][ 800][0-0] Base1
+# 93> NEWLINE| NONE| PARENT_NOT_SET[ 57/ 49/ 1/ 0][0/0/0][ 0][1-0]
+# 94> BRACE_OPEN| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0000 0000][0-0] {
+# 94> NEWLINE| NONE| PARENT_NOT_SET[ 2/ 2/ 1/ 0][1/1/0][ 400][1-0]
+# 95> ACCESS| NONE| PARENT_NOT_SET[ 1/ 1/ 7/ 0][1/1/0][ c 0400][0-0] public
+# 95> ACCESS_COLON| NONE| PARENT_NOT_SET[ 7/ 7/ 8/ 0][1/1/0][ 2 0000 0400][0-0] :
+# 95> NEWLINE| NONE| PARENT_NOT_SET[ 8/ 8/ 4/ 0][1/1/0][ 400][1-0]
+# 96> TYPE| NONE| PARENT_NOT_SET[ 1/ 4/ 7/ 0][1/1/0][ 8e 0400][0-0] int
+# 96> WORD| NONE| PARENT_NOT_SET[ 5/ 8/ 11/ 1][1/1/0][ 300 0400][0-0] m_x
+# 96> SEMICOLON| NONE| PARENT_NOT_SET[ 8/ 11/ 12/ 0][1/1/0][ 2 0000 0400][0-0] ;
+# 96> NEWLINE| NONE| PARENT_NOT_SET[ 9/ 12/ 4/ 0][1/1/0][ 400][1-0]
+# 97> TYPE| NONE| PARENT_NOT_SET[ 1/ 4/ 7/ 0][1/1/0][ 8e 0400][0-0] int
+# 97> WORD| NONE| PARENT_NOT_SET[ 5/ 8/ 11/ 1][1/1/0][ 300 0400][0-0] m_y
+# 97> SEMICOLON| NONE| PARENT_NOT_SET[ 8/ 11/ 12/ 0][1/1/0][ 2 0000 0400][0-0] ;
+# 97> NEWLINE| NONE| PARENT_NOT_SET[ 9/ 12/ 4/ 0][1/1/0][ 400][1-0]
+# 98> TYPE| NONE| PARENT_NOT_SET[ 1/ 4/ 7/ 0][1/1/0][ 8e 0400][0-0] int
+# 98> WORD| NONE| PARENT_NOT_SET[ 5/ 8/ 11/ 1][1/1/0][ 300 0400][0-0] m_z
+# 98> SEMICOLON| NONE| PARENT_NOT_SET[ 8/ 11/ 12/ 0][1/1/0][ 2 0000 0400][0-0] ;
+# 98> NEWLINE| NONE| PARENT_NOT_SET[ 9/ 12/ 1/ 0][1/1/0][ 400][1-0]
+# 99> BRACE_CLOSE| CLASS| PARENT_NOT_SET[ 1/ 1/ 2/ 0][0/0/0][ 2 0000 0400][0-0] }
+# 99> WORD| NONE| PARENT_NOT_SET[ 3/ 3/ 6/ 1][0/0/0][ 70c 0000][0-0] c51
+# 99> COMMA| NONE| PARENT_NOT_SET[ 6/ 6/ 7/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 99> PTR_TYPE| CLASS| PARENT_NOT_SET[ 8/ 8/ 9/ 1][0/0/0][ 2 0008 0000][0-0] *
+# 99> WORD| NONE| PARENT_NOT_SET[ 9/ 9/ 12/ 0][0/0/0][ 2508 0000][0-0] c52
+# 99> ASSIGN| NONE| PARENT_NOT_SET[ 13/ 13/ 14/ 1][0/0/0][ 2 0000 0000][0-0] =
+# 99> WORD| NONE| PARENT_NOT_SET[ 15/ 15/ 22/ 1][0/0/0][ 8 0000][0-0] nullptr
+# 99> COMMA| NONE| PARENT_NOT_SET[ 22/ 22/ 23/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 99> PTR_TYPE| CLASS| PARENT_NOT_SET[ 24/ 24/ 25/ 1][0/0/0][ 2 0008 0000][0-0] *
+# 99> WORD| NONE| PARENT_NOT_SET[ 25/ 25/ 28/ 0][0/0/0][ 508 0000][0-0] c53
+# 99> TSQUARE| NONE| PARENT_NOT_SET[ 28/ 28/ 30/ 0][0/0/0][ 2 0000 0000][0-0] []
+# 99> ASSIGN| NONE| PARENT_NOT_SET[ 31/ 31/ 32/ 1][0/0/0][ 2 0000 0000][0-0] =
+# 99> BRACE_OPEN| BRACED_INIT_LIST| PARENT_NOT_SET[ 33/ 33/ 34/ 1][0/0/0][ 2 4008 0000][0-0] {
+# 99> WORD| NONE| PARENT_NOT_SET[ 35/ 35/ 42/ 1][1/1/0][ 4008 0000][0-0] nullptr
+# 99> COMMA| NONE| PARENT_NOT_SET[ 42/ 42/ 43/ 0][1/1/0][ 2 4000 0000][0-0] ,
+# 99> WORD| NONE| PARENT_NOT_SET[ 44/ 44/ 51/ 1][1/1/0][ 4008 0000][0-0] nullptr
+# 99> BRACE_CLOSE| BRACED_INIT_LIST| PARENT_NOT_SET[ 52/ 52/ 53/ 1][0/0/0][ 2 4000 0000][0-0] }
+# 99> SEMICOLON| CLASS| PARENT_NOT_SET[ 53/ 53/ 54/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 99> NEWLINE| NONE| PARENT_NOT_SET[ 54/ 54/ 1/ 0][0/0/0][ 0][3-0]
+# 102> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 44/ 0][0/0/0][ 0][0-0] // enum type : integral_type { ... } x, ...
+# 102> NEWLINE| NONE| PARENT_NOT_SET[ 44/ 44/ 1/ 0][0/0/0][ 0][1-0]
+# 103> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ e 0000][0-0] enum
+# 103> TYPE| ENUM| PARENT_NOT_SET[ 6/ 6/ 8/ 1][0/0/0][ 80 0000][0-0] e1
+# 103> ENUM_COLON| ENUM| PARENT_NOT_SET[ 9/ 9/ 10/ 1][0/0/0][ 2 0000 0000][0-0] :
+# 103> TYPE| ENUM_COLON| PARENT_NOT_SET[ 11/ 11/ 15/ 1][0/0/0][ e 0000][0-0] long
+# 103> TYPE| ENUM_COLON| PARENT_NOT_SET[ 16/ 16/ 20/ 1][0/0/0][ 0][0-0] long
+# 103> BRACE_OPEN| ENUM| PARENT_NOT_SET[ 21/ 21/ 22/ 1][0/0/0][ 2 4000 0000][0-0] {
+# 103> WORD| NONE| PARENT_NOT_SET[ 23/ 23/ 25/ 1][1/1/0][ 400c 0004][0-0] a1
+# 103> COMMA| NONE| PARENT_NOT_SET[ 25/ 25/ 26/ 0][1/1/0][ 2 4000 0004][0-0] ,
+# 103> WORD| NONE| PARENT_NOT_SET[ 27/ 27/ 29/ 1][1/1/0][ 4008 0004][0-0] b1
+# 103> COMMA| NONE| PARENT_NOT_SET[ 29/ 29/ 30/ 0][1/1/0][ 2 4000 0004][0-0] ,
+# 103> WORD| NONE| PARENT_NOT_SET[ 31/ 31/ 33/ 1][1/1/0][ 4008 0004][0-0] d1
+# 103> BRACE_CLOSE| ENUM| PARENT_NOT_SET[ 34/ 34/ 35/ 1][0/0/0][ 2 4000 0004][0-0] }
+# 103> WORD| NONE| PARENT_NOT_SET[ 36/ 36/ 39/ 1][0/0/0][ 70c 0000][0-0] e11
+# 103> COMMA| NONE| PARENT_NOT_SET[ 39/ 39/ 40/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 103> WORD| NONE| PARENT_NOT_SET[ 41/ 41/ 44/ 1][0/0/0][ 508 0000][0-0] e12
+# 103> COMMA| NONE| PARENT_NOT_SET[ 44/ 44/ 45/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 103> WORD| NONE| PARENT_NOT_SET[ 46/ 46/ 49/ 1][0/0/0][ 508 0000][0-0] e13
+# 103> SEMICOLON| ENUM| PARENT_NOT_SET[ 49/ 49/ 50/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 103> NEWLINE| NONE| PARENT_NOT_SET[ 50/ 50/ 1/ 0][0/0/0][ 0][2-0]
+# 105> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 37/ 0][0/0/0][ 0][0-0] // enum type : integral_type { ... }
+# 105> NEWLINE| NONE| PARENT_NOT_SET[ 37/ 37/ 1/ 0][0/0/0][ 0][1-0]
+# 106> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ e 0000][0-0] enum
+# 106> TYPE| ENUM| PARENT_NOT_SET[ 6/ 6/ 8/ 1][0/0/0][ 0][0-0] e2
+# 106> ENUM_COLON| ENUM| PARENT_NOT_SET[ 9/ 9/ 10/ 1][0/0/0][ 2 0000 0000][0-0] :
+# 106> TYPE| ENUM_COLON| PARENT_NOT_SET[ 11/ 11/ 19/ 1][0/0/0][ e 0000][0-0] unsigned
+# 106> TYPE| ENUM_COLON| PARENT_NOT_SET[ 20/ 20/ 23/ 1][0/0/0][ 0][0-0] int
+# 106> BRACE_OPEN| ENUM| PARENT_NOT_SET[ 24/ 24/ 25/ 1][0/0/0][ 2 4000 0000][0-0] {
+# 106> WORD| NONE| PARENT_NOT_SET[ 26/ 26/ 28/ 1][1/1/0][ 400c 0004][0-0] a2
+# 106> COMMA| NONE| PARENT_NOT_SET[ 28/ 28/ 29/ 0][1/1/0][ 2 4000 0004][0-0] ,
+# 106> WORD| NONE| PARENT_NOT_SET[ 30/ 30/ 32/ 1][1/1/0][ 4008 0004][0-0] b2
+# 106> COMMA| NONE| PARENT_NOT_SET[ 32/ 32/ 33/ 0][1/1/0][ 2 4000 0004][0-0] ,
+# 106> WORD| NONE| PARENT_NOT_SET[ 34/ 34/ 36/ 1][1/1/0][ 4008 0004][0-0] d2
+# 106> BRACE_CLOSE| ENUM| PARENT_NOT_SET[ 37/ 37/ 38/ 1][0/0/0][ 2 4000 0004][0-0] }
+# 106> SEMICOLON| ENUM| PARENT_NOT_SET[ 38/ 38/ 39/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 106> NEWLINE| NONE| PARENT_NOT_SET[ 39/ 39/ 1/ 0][0/0/0][ 0][2-0]
+# 108> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 29/ 0][0/0/0][ 0][0-0] // enum type : integral_type
+# 108> NEWLINE| NONE| PARENT_NOT_SET[ 29/ 29/ 1/ 0][0/0/0][ 0][1-0]
+# 109> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ 1000 000e 0000][0-0] enum
+# 109> TYPE| ENUM| PARENT_NOT_SET[ 6/ 6/ 8/ 1][0/0/0][ 1000 0000 0000][0-0] e3
+# 109> ENUM_COLON| ENUM| PARENT_NOT_SET[ 9/ 9/ 10/ 1][0/0/0][ 2 0000 0000][0-0] :
+# 109> TYPE| ENUM_COLON| PARENT_NOT_SET[ 11/ 11/ 16/ 1][0/0/0][ c 0000][0-0] short
+# 109> SEMICOLON| ENUM| PARENT_NOT_SET[ 16/ 16/ 17/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 109> NEWLINE| NONE| PARENT_NOT_SET[ 17/ 17/ 1/ 0][0/0/0][ 0][2-0]
+# 111> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 20/ 0][0/0/0][ 0][0-0] // enum type x, ...
+# 111> NEWLINE| NONE| PARENT_NOT_SET[ 20/ 20/ 1/ 0][0/0/0][ 0][1-0]
+# 112> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ e 0000][0-0] enum
+# 112> TYPE| ENUM| PARENT_NOT_SET[ 6/ 6/ 8/ 1][0/0/0][ 82 0000][0-0] e3
+# 112> WORD| NONE| PARENT_NOT_SET[ 9/ 9/ 12/ 1][0/0/0][ 300 0000][0-0] e31
+# 112> COMMA| NONE| PARENT_NOT_SET[ 12/ 12/ 13/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 112> WORD| NONE| PARENT_NOT_SET[ 14/ 14/ 17/ 1][0/0/0][ 108 0000][0-0] e32
+# 112> SEMICOLON| ENUM| PARENT_NOT_SET[ 17/ 17/ 18/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 112> NEWLINE| NONE| PARENT_NOT_SET[ 18/ 18/ 1/ 0][0/0/0][ 0][2-0]
+# 114> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 50/ 0][0/0/0][ 0][0-0] // enum class type : integral_type { ... } x, ...
+# 114> NEWLINE| NONE| PARENT_NOT_SET[ 50/ 50/ 1/ 0][0/0/0][ 0][1-0]
+# 115> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ e 0000][0-0] enum
+# 115> ENUM_CLASS| NONE| PARENT_NOT_SET[ 6/ 6/ 11/ 1][0/0/0][ 2 0000][0-0] class
+# 115> TYPE| ENUM| PARENT_NOT_SET[ 12/ 12/ 14/ 1][0/0/0][ 80 0000][0-0] e4
+# 115> ENUM_COLON| ENUM| PARENT_NOT_SET[ 15/ 15/ 16/ 1][0/0/0][ 2 0000 0000][0-0] :
+# 115> TYPE| ENUM_COLON| PARENT_NOT_SET[ 17/ 17/ 21/ 1][0/0/0][ e 0000][0-0] long
+# 115> TYPE| ENUM_COLON| PARENT_NOT_SET[ 22/ 22/ 26/ 1][0/0/0][ 0][0-0] long
+# 115> BRACE_OPEN| ENUM| PARENT_NOT_SET[ 27/ 27/ 28/ 1][0/0/0][ 2 4000 0000][0-0] {
+# 115> WORD| NONE| PARENT_NOT_SET[ 29/ 29/ 31/ 1][1/1/0][ 400c 0004][0-0] a4
+# 115> COMMA| NONE| PARENT_NOT_SET[ 31/ 31/ 32/ 0][1/1/0][ 2 4000 0004][0-0] ,
+# 115> WORD| NONE| PARENT_NOT_SET[ 33/ 33/ 35/ 1][1/1/0][ 4008 0004][0-0] b4
+# 115> COMMA| NONE| PARENT_NOT_SET[ 35/ 35/ 36/ 0][1/1/0][ 2 4000 0004][0-0] ,
+# 115> WORD| NONE| PARENT_NOT_SET[ 37/ 37/ 39/ 1][1/1/0][ 4008 0004][0-0] d4
+# 115> BRACE_CLOSE| ENUM| PARENT_NOT_SET[ 40/ 40/ 41/ 1][0/0/0][ 2 4000 0004][0-0] }
+# 115> WORD| NONE| PARENT_NOT_SET[ 42/ 42/ 45/ 1][0/0/0][ 70c 0000][0-0] e41
+# 115> COMMA| NONE| PARENT_NOT_SET[ 45/ 45/ 46/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 115> WORD| NONE| PARENT_NOT_SET[ 47/ 47/ 50/ 1][0/0/0][ 508 0000][0-0] e42
+# 115> COMMA| NONE| PARENT_NOT_SET[ 50/ 50/ 51/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 115> WORD| NONE| PARENT_NOT_SET[ 52/ 52/ 55/ 1][0/0/0][ 508 0000][0-0] e43
+# 115> COMMA| NONE| PARENT_NOT_SET[ 55/ 55/ 56/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 115> WORD| NONE| PARENT_NOT_SET[ 57/ 57/ 60/ 1][0/0/0][ 508 0000][0-0] e44
+# 115> SEMICOLON| ENUM| PARENT_NOT_SET[ 60/ 60/ 61/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 115> NEWLINE| NONE| PARENT_NOT_SET[ 61/ 61/ 1/ 0][0/0/0][ 0][2-0]
+# 117> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 43/ 0][0/0/0][ 0][0-0] // enum class type : integral_type { ... }
+# 117> NEWLINE| NONE| PARENT_NOT_SET[ 43/ 43/ 1/ 0][0/0/0][ 0][1-0]
+# 118> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ e 0000][0-0] enum
+# 118> ENUM_CLASS| NONE| PARENT_NOT_SET[ 6/ 6/ 11/ 1][0/0/0][ 2 0000][0-0] class
+# 118> TYPE| ENUM| PARENT_NOT_SET[ 12/ 12/ 14/ 1][0/0/0][ 0][0-0] e5
+# 118> ENUM_COLON| ENUM| PARENT_NOT_SET[ 15/ 15/ 16/ 1][0/0/0][ 2 0000 0000][0-0] :
+# 118> TYPE| ENUM_COLON| PARENT_NOT_SET[ 17/ 17/ 25/ 1][0/0/0][ e 0000][0-0] unsigned
+# 118> TYPE| ENUM_COLON| PARENT_NOT_SET[ 26/ 26/ 29/ 1][0/0/0][ 0][0-0] int
+# 118> BRACE_OPEN| ENUM| PARENT_NOT_SET[ 30/ 30/ 31/ 1][0/0/0][ 2 4000 0000][0-0] {
+# 118> WORD| NONE| PARENT_NOT_SET[ 32/ 32/ 34/ 1][1/1/0][ 400c 0004][0-0] a5
+# 118> COMMA| NONE| PARENT_NOT_SET[ 34/ 34/ 35/ 0][1/1/0][ 2 4000 0004][0-0] ,
+# 118> WORD| NONE| PARENT_NOT_SET[ 36/ 36/ 38/ 1][1/1/0][ 4008 0004][0-0] b5
+# 118> COMMA| NONE| PARENT_NOT_SET[ 38/ 38/ 39/ 0][1/1/0][ 2 4000 0004][0-0] ,
+# 118> WORD| NONE| PARENT_NOT_SET[ 40/ 40/ 42/ 1][1/1/0][ 4008 0004][0-0] d5
+# 118> BRACE_CLOSE| ENUM| PARENT_NOT_SET[ 43/ 43/ 44/ 1][0/0/0][ 2 4000 0004][0-0] }
+# 118> SEMICOLON| ENUM| PARENT_NOT_SET[ 44/ 44/ 45/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 118> NEWLINE| NONE| PARENT_NOT_SET[ 45/ 45/ 1/ 0][0/0/0][ 0][2-0]
+# 120> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 35/ 0][0/0/0][ 0][0-0] // enum class type : integral_type
+# 120> NEWLINE| NONE| PARENT_NOT_SET[ 35/ 35/ 1/ 0][0/0/0][ 0][1-0]
+# 121> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ 1000 000e 0000][0-0] enum
+# 121> ENUM_CLASS| NONE| PARENT_NOT_SET[ 6/ 6/ 11/ 1][0/0/0][ 1000 0002 0000][0-0] class
+# 121> TYPE| ENUM| PARENT_NOT_SET[ 12/ 12/ 14/ 1][0/0/0][ 1000 0000 0000][0-0] e6
+# 121> ENUM_COLON| ENUM| PARENT_NOT_SET[ 15/ 15/ 16/ 1][0/0/0][ 2 0000 0000][0-0] :
+# 121> TYPE| ENUM_COLON| PARENT_NOT_SET[ 17/ 17/ 22/ 1][0/0/0][ c 0000][0-0] short
+# 121> SEMICOLON| ENUM| PARENT_NOT_SET[ 22/ 22/ 23/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 121> NEWLINE| NONE| PARENT_NOT_SET[ 23/ 23/ 1/ 0][0/0/0][ 0][2-0]
+# 123> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 19/ 0][0/0/0][ 0][0-0] // enum class type
+# 123> NEWLINE| NONE| PARENT_NOT_SET[ 19/ 19/ 1/ 0][0/0/0][ 0][1-0]
+# 124> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ 1000 000e 0000][0-0] enum
+# 124> ENUM_CLASS| NONE| PARENT_NOT_SET[ 6/ 6/ 11/ 1][0/0/0][ 1000 0002 0000][0-0] class
+# 124> TYPE| ENUM| PARENT_NOT_SET[ 12/ 12/ 14/ 1][0/0/0][ 1000 0000 0000][0-0] e7
+# 124> SEMICOLON| ENUM| PARENT_NOT_SET[ 14/ 14/ 15/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 124> NEWLINE| NONE| PARENT_NOT_SET[ 15/ 15/ 1/ 0][0/0/0][ 0][2-0]
+# 126> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 39/ 0][0/0/0][ 0][0-0] // enum : integral_type { ... } x, ...
+# 126> NEWLINE| NONE| PARENT_NOT_SET[ 39/ 39/ 1/ 0][0/0/0][ 0][1-0]
+# 127> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ c 0000][0-0] enum
+# 127> ENUM_COLON| ENUM| PARENT_NOT_SET[ 6/ 6/ 7/ 1][0/0/0][ 2 0000 0000][0-0] :
+# 127> TYPE| ENUM_COLON| PARENT_NOT_SET[ 8/ 8/ 12/ 1][0/0/0][ e 0000][0-0] long
+# 127> TYPE| ENUM_COLON| PARENT_NOT_SET[ 13/ 13/ 17/ 1][0/0/0][ 0][0-0] long
+# 127> BRACE_OPEN| ENUM| PARENT_NOT_SET[ 18/ 18/ 19/ 1][0/0/0][ 2 4000 0000][0-0] {
+# 127> WORD| NONE| PARENT_NOT_SET[ 20/ 20/ 22/ 1][1/1/0][ 400c 0004][0-0] a8
+# 127> COMMA| NONE| PARENT_NOT_SET[ 22/ 22/ 23/ 0][1/1/0][ 2 4000 0004][0-0] ,
+# 127> WORD| NONE| PARENT_NOT_SET[ 24/ 24/ 26/ 1][1/1/0][ 4008 0004][0-0] b8
+# 127> COMMA| NONE| PARENT_NOT_SET[ 26/ 26/ 27/ 0][1/1/0][ 2 4000 0004][0-0] ,
+# 127> WORD| NONE| PARENT_NOT_SET[ 28/ 28/ 30/ 1][1/1/0][ 4008 0004][0-0] c8
+# 127> BRACE_CLOSE| ENUM| PARENT_NOT_SET[ 31/ 31/ 32/ 1][0/0/0][ 2 4000 0004][0-0] }
+# 127> WORD| NONE| PARENT_NOT_SET[ 33/ 33/ 36/ 1][0/0/0][ 70c 0000][0-0] e81
+# 127> COMMA| NONE| PARENT_NOT_SET[ 36/ 36/ 37/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 127> WORD| NONE| PARENT_NOT_SET[ 38/ 38/ 41/ 1][0/0/0][ 508 0000][0-0] e82
+# 127> SEMICOLON| ENUM| PARENT_NOT_SET[ 41/ 41/ 42/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 127> NEWLINE| NONE| PARENT_NOT_SET[ 42/ 42/ 1/ 0][0/0/0][ 0][2-0]
+# 129> COMMENT_CPP| COMMENT_WHOLE| PARENT_NOT_SET[ 1/ 1/ 23/ 0][0/0/0][ 0][0-0] // enum { ... } x, ...
+# 129> NEWLINE| NONE| PARENT_NOT_SET[ 23/ 23/ 1/ 0][0/0/0][ 0][1-0]
+# 130> ENUM| NONE| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ c 0000][0-0] enum
+# 130> BRACE_OPEN| ENUM| PARENT_NOT_SET[ 6/ 6/ 7/ 1][0/0/0][ 2 4000 0000][0-0] {
+# 130> WORD| NONE| PARENT_NOT_SET[ 8/ 8/ 10/ 1][1/1/0][ 400c 0004][0-0] a9
+# 130> COMMA| NONE| PARENT_NOT_SET[ 10/ 10/ 11/ 0][1/1/0][ 2 4000 0004][0-0] ,
+# 130> WORD| NONE| PARENT_NOT_SET[ 12/ 12/ 14/ 1][1/1/0][ 4008 0004][0-0] b9
+# 130> COMMA| NONE| PARENT_NOT_SET[ 14/ 14/ 15/ 0][1/1/0][ 2 4000 0004][0-0] ,
+# 130> WORD| NONE| PARENT_NOT_SET[ 16/ 16/ 18/ 1][1/1/0][ 4008 0004][0-0] c9
+# 130> BRACE_CLOSE| ENUM| PARENT_NOT_SET[ 19/ 19/ 20/ 1][0/0/0][ 2 4000 0004][0-0] }
+# 130> WORD| NONE| PARENT_NOT_SET[ 21/ 21/ 24/ 1][0/0/0][ 70c 0000][0-0] e91
+# 130> COMMA| NONE| PARENT_NOT_SET[ 24/ 24/ 25/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 130> WORD| NONE| PARENT_NOT_SET[ 26/ 26/ 29/ 1][0/0/0][ 508 0000][0-0] e92
+# 130> SEMICOLON| ENUM| PARENT_NOT_SET[ 29/ 29/ 30/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 130> NEWLINE| NONE| PARENT_NOT_SET[ 30/ 30/ 1/ 0][0/0/0][ 0][2-0]
+# 132> UNION| NONE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ e 0000][0-0] union
+# 132> WORD| NONE| PARENT_NOT_SET[ 7/ 7/ 17/ 1][0/0/0][ 2 0000][0-0] API_EXPORT
+# 132> TYPE| UNION| PARENT_NOT_SET[ 18/ 18/ 20/ 1][0/0/0][ 80 0000][0-0] u1
+# 132> BRACE_OPEN| UNION| PARENT_NOT_SET[ 21/ 21/ 22/ 1][0/0/0][ 2 4000 0000][0-0] {
+# 132> TYPE| NONE| PARENT_NOT_SET[ 23/ 23/ 26/ 1][1/1/0][ 408e 0000][0-0] int
+# 132> WORD| NONE| PARENT_NOT_SET[ 27/ 27/ 28/ 1][1/1/0][ 4300 0000][0-0] x
+# 132> SEMICOLON| NONE| PARENT_NOT_SET[ 28/ 28/ 29/ 0][1/1/0][ 2 4000 0000][0-0] ;
+# 132> TYPE| NONE| PARENT_NOT_SET[ 30/ 30/ 34/ 1][1/1/0][ 408e 0000][0-0] long
+# 132> WORD| NONE| PARENT_NOT_SET[ 35/ 35/ 36/ 1][1/1/0][ 4300 0000][0-0] y
+# 132> SEMICOLON| NONE| PARENT_NOT_SET[ 36/ 36/ 37/ 0][1/1/0][ 2 4000 0000][0-0] ;
+# 132> BRACE_CLOSE| UNION| PARENT_NOT_SET[ 38/ 38/ 39/ 1][0/0/0][ 2 4000 0000][0-0] }
+# 132> WORD| NONE| PARENT_NOT_SET[ 40/ 40/ 43/ 1][0/0/0][ 70c 0000][0-0] u11
+# 132> COMMA| NONE| PARENT_NOT_SET[ 43/ 43/ 44/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 132> PTR_TYPE| UNION| PARENT_NOT_SET[ 45/ 45/ 46/ 1][0/0/0][ 2 0008 0000][0-0] *
+# 132> WORD| NONE| PARENT_NOT_SET[ 46/ 46/ 49/ 0][0/0/0][ 2508 0000][0-0] u12
+# 132> ASSIGN| NONE| PARENT_NOT_SET[ 50/ 50/ 51/ 1][0/0/0][ 2 0000 0000][0-0] =
+# 132> WORD| NONE| PARENT_NOT_SET[ 52/ 52/ 59/ 1][0/0/0][ 8 0000][0-0] nullptr
+# 132> COMMA| NONE| PARENT_NOT_SET[ 59/ 59/ 60/ 0][0/0/0][ 2 0000 0000][0-0] ,
+# 132> PTR_TYPE| UNION| PARENT_NOT_SET[ 61/ 61/ 62/ 1][0/0/0][ 2 0008 0000][0-0] *
+# 132> WORD| NONE| PARENT_NOT_SET[ 62/ 62/ 65/ 0][0/0/0][ 2508 0000][0-0] u13
+# 132> BRACE_OPEN| BRACED_INIT_LIST| PARENT_NOT_SET[ 65/ 65/ 66/ 0][0/0/0][ 2 4000 0000][0-0] {
+# 132> NUMBER| NONE| PARENT_NOT_SET[ 66/ 66/ 67/ 0][1/1/0][ 400c 0000][0-0] 0
+# 132> BRACE_CLOSE| BRACED_INIT_LIST| PARENT_NOT_SET[ 67/ 67/ 68/ 0][0/0/0][ 2 4000 0000][0-0] }
+# 132> SEMICOLON| UNION| PARENT_NOT_SET[ 68/ 68/ 69/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 132> NEWLINE| NONE| PARENT_NOT_SET[ 69/ 69/ 1/ 0][0/0/0][ 0][2-0]
+# 134> UNION| NONE| PARENT_NOT_SET[ 1/ 1/ 6/ 0][0/0/0][ e 0000][0-0] union
+# 134> WORD| NONE| PARENT_NOT_SET[ 7/ 7/ 17/ 1][0/0/0][ 2 0000][0-0] API_EXPORT
+# 134> TYPE| UNION| PARENT_NOT_SET[ 18/ 18/ 20/ 1][0/0/0][ 82 0000][0-0] u1
+# 134> WORD| NONE| PARENT_NOT_SET[ 21/ 21/ 24/ 1][0/0/0][ 300 0000][0-0] u21
+# 134> SEMICOLON| UNION| PARENT_NOT_SET[ 24/ 24/ 25/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 134> NEWLINE| NONE| PARENT_NOT_SET[ 25/ 25/ 1/ 0][0/0/0][ 0][1-0]
+# -=====-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/copyright-header.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/copyright-header.cpp
index 348902a5..348902a5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/copyright-header.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/copyright-header.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/help.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/help.txt
new file mode 100644
index 00000000..a5d7d109
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/help.txt
@@ -0,0 +1,85 @@
+Usage:
+uncrustify [options] [files ...]
+
+If no input files are specified, the input is read from stdin
+If reading from stdin, you should specify the language using -l
+or specify a filename using --assume for automatic language detection.
+
+If -F is used or files are specified on the command line,
+the output filename is 'prefix/filename' + suffix
+
+When reading from stdin or doing a single file via the '-f' option,
+the output is dumped to stdout, unless redirected with -o FILE.
+
+Errors are always dumped to stderr
+
+The '-f' and '-o' options may not be used with '-F' or '--replace'.
+The '--prefix' and '--suffix' options may not be used with '--replace'.
+
+Basic Options:
+ -c CFG : Use the config file CFG, or defaults if CFG is set to '-'.
+ -f FILE : Process the single file FILE (output to stdout, use with -o).
+ -o FILE : Redirect stdout to FILE.
+ -F FILE : Read files to process from FILE, one filename per line (- is stdin).
+ --check : Do not output the new text, instead verify that nothing changes when
+ the file(s) are processed.
+ The status of every file is printed to stderr.
+ The exit code is EXIT_SUCCESS if there were no changes, EXIT_FAILURE otherwise.
+ files : Files to process (can be combined with -F).
+ --suffix SFX : Append SFX to the output filename. The default is '.uncrustify'
+ --prefix PFX : Prepend PFX to the output filename path.
+ --replace : Replace source files (creates a backup).
+ --no-backup : Do not create backup and md5 files. Useful if files are under source control.
+ --if-changed : Write to stdout (or create output FILE) only if a change was detected.
+ -l : Language override: C, CPP, D, CS, JAVA, PAWN, OC, OC+, VALA.
+ -t : Load a file with types (usually not needed).
+ -q : Quiet mode - no output on stderr (-L will override).
+ --frag : Code fragment, assume the first line is indented correctly.
+ --assume FN : Uses the filename FN for automatic language detection if reading
+ from stdin unless -l is specified.
+
+Config/Help Options:
+ -h -? --help --usage : Print this message and exit.
+ --version : Print the version and exit.
+ --count-options : Print the number of available options and exit.
+ --show-config : Print out option documentation and exit.
+ --update-config : Output a new config file. Use with -o FILE.
+ --update-config-with-doc : Output a new config file. Use with -o FILE.
+ --universalindent : Output a config file for Universal Indent GUI.
+ --detect : Detects the config from a source file. Use with '-f FILE'.
+ Detection is fairly limited.
+ --set <option>=<value> : Sets a new value to a config option.
+
+Debug Options:
+ -p FILE : Dump debug info into FILE, or to stdout if FILE is set to '-'.
+ Must be used in combination with '-f FILE'
+ -ds FILE : Dump parsing info at various moments of the formatting process.
+ --dump-steps FILE This creates a series of files named 'FILE_nnn.log', each
+ corresponding to a formatting step in uncrustify.
+ The file 'FILE_000.log' lists the formatting options in use.
+ Must be used in combination with '-f FILE'
+ -L SEV : Set the log severity (see log_levels.h; note 'A' = 'all')
+ -s : Show the log severity in the logs.
+ --decode : Decode remaining args (chunk flags) and exit.
+ --tracking space:FILE : Prepare space tracking information for debugging.
+ --tracking nl:FILE : Prepare newline tracking information for debugging.
+ --tracking start:FILE : Prepare start of statement tracking information for debugging.
+ Cannot be used with the -o option'
+
+Usage Examples
+cat foo.d | uncrustify -q -c my.cfg -l d
+uncrustify -c my.cfg -f foo.d
+uncrustify -c my.cfg -f foo.d -L0-2,20-23,51
+uncrustify -c my.cfg -f foo.d -o foo.d
+uncrustify -c my.cfg -f foo.d -o foo.d -ds dump
+uncrustify -c my.cfg foo.d
+uncrustify -c my.cfg --replace foo.d
+uncrustify -c my.cfg --no-backup foo.d
+uncrustify -c my.cfg --prefix=out -F files.txt
+
+Note: Use comments containing ' *INDENT-OFF*' and ' *INDENT-ON*' to disable
+ processing of parts of the source file (these can be overridden with
+ enable_processing_cmt and disable_processing_cmt).
+
+There are currently x options and minimal documentation.
+Try UniversalIndentGUI and good luck.
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/in_fcn_def.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/in_fcn_def.txt
new file mode 100644
index 00000000..95d072a7
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/in_fcn_def.txt
@@ -0,0 +1,62 @@
+
+# option(s) with 'not default' value: 0
+#
+# -=====-
+# number of loops = 0
+# -=====-
+# language = CPP
+# -=====-
+# Line Tag Parent_type Type of the parent Columns Br/Lvl/pp Flags Nl Text
+# 1> TYPE| FUNC_VAR| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ c 0000][0-0] void
+# 1> TPAREN_OPEN| FUNC_VAR| PARENT_NOT_SET[ 6/ 6/ 7/ 1][0/0/0][ 2 0300 0000][0-0] (
+# 1> PTR_TYPE| NONE| PARENT_NOT_SET[ 7/ 7/ 8/ 0][0/1/0][ 2 0008 0000][0-0] *
+# 1> FUNC_VAR| NONE| PARENT_NOT_SET[ 8/ 8/ 13/ 0][0/1/0][ 308 0000][0-0] fnPtr
+# 1> TPAREN_CLOSE| FUNC_VAR| PARENT_NOT_SET[ 13/ 13/ 14/ 0][0/0/0][ 2 0000 0000][0-0] )
+# 1> FPAREN_OPEN| FUNC_PROTO| PARENT_NOT_SET[ 14/ 14/ 15/ 0][0/0/0][ 2 0000 0000][0-0] (
+# 1> TYPE| NONE| PARENT_NOT_SET[ 15/ 15/ 18/ 0][0/1/0][ 8a 0008][0-0] int
+# 1> WORD| NONE| PARENT_NOT_SET[ 19/ 19/ 20/ 1][0/1/0][ 100 0008][0-0] i
+# 1> COMMA| NONE| PARENT_NOT_SET[ 20/ 20/ 21/ 0][0/1/0][ 2 0000 0008][0-0] ,
+# 1> TYPE| NONE| PARENT_NOT_SET[ 22/ 22/ 28/ 1][0/1/0][ 8a 0008][0-0] double
+# 1> WORD| NONE| PARENT_NOT_SET[ 29/ 29/ 30/ 1][0/1/0][ 100 0008][0-0] d
+# 1> FPAREN_CLOSE| FUNC_PROTO| PARENT_NOT_SET[ 30/ 30/ 31/ 0][0/0/0][ 2 0000 0008][0-0] )
+# 1> SEMICOLON| FUNC_VAR| PARENT_NOT_SET[ 31/ 31/ 32/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 1> NEWLINE| NONE| PARENT_NOT_SET[ 32/ 32/ 1/ 0][0/0/0][ 0][1-0]
+# 2> TYPE| FUNC_PROTO| PARENT_NOT_SET[ 1/ 1/ 5/ 0][0/0/0][ e 0000][0-0] void
+# 2> FUNC_PROTO| NONE| PARENT_NOT_SET[ 6/ 6/ 14/ 1][0/0/0][ 0][0-0] function
+# 2> FPAREN_OPEN| FUNC_PROTO| PARENT_NOT_SET[ 14/ 14/ 15/ 0][0/0/0][ 2 0000 0000][0-0] (
+# 2> TYPE| NONE| PARENT_NOT_SET[ 15/ 15/ 18/ 0][0/1/0][ 8a 0008][0-0] int
+# 2> WORD| NONE| PARENT_NOT_SET[ 19/ 19/ 20/ 1][0/1/0][ 100 0008][0-0] i
+# 2> COMMA| NONE| PARENT_NOT_SET[ 20/ 20/ 21/ 0][0/1/0][ 2 0000 0008][0-0] ,
+# 2> TYPE| NONE| PARENT_NOT_SET[ 22/ 22/ 28/ 1][0/1/0][ 8a 0008][0-0] double
+# 2> WORD| NONE| PARENT_NOT_SET[ 29/ 29/ 30/ 1][0/1/0][ 100 0008][0-0] d
+# 2> FPAREN_CLOSE| FUNC_PROTO| PARENT_NOT_SET[ 30/ 30/ 31/ 0][0/0/0][ 2 0000 0008][0-0] )
+# 2> SEMICOLON| FUNC_PROTO| PARENT_NOT_SET[ 31/ 31/ 32/ 0][0/0/0][ 2 0000 0000][0-0] ;
+# 2> NEWLINE| NONE| PARENT_NOT_SET[ 32/ 32/ 1/ 0][0/0/0][ 0][1-0]
+# 3> TYPEDEF| NONE| PARENT_NOT_SET[ 1/ 1/ 8/ 0][0/0/0][ e 0000][0-0] typedef
+# 3> TYPE| FUNC_TYPE| PARENT_NOT_SET[ 9/ 9/ 13/ 1][0/0/0][ 80][0-1] void
+# 3> TPAREN_OPEN| FUNC_TYPE| PARENT_NOT_SET[ 14/ 14/ 15/ 1][0/0/0][ 2 0000 0080][0-0] (
+# 3> PTR_TYPE| NONE| PARENT_NOT_SET[ 15/ 15/ 16/ 0][0/1/0][ 2 0008 0080][0-0] *
+# 3> FUNC_TYPE| TYPEDEF| PARENT_NOT_SET[ 16/ 16/ 21/ 0][0/1/0][ 8 0080][0-0] fnPtr
+# 3> TPAREN_CLOSE| FUNC_TYPE| PARENT_NOT_SET[ 21/ 21/ 22/ 0][0/0/0][ 2 0000 0080][0-0] )
+# 3> FPAREN_OPEN| FUNC_PROTO| PARENT_NOT_SET[ 22/ 22/ 23/ 0][0/0/0][ 2 0000 0080][0-0] (
+# 3> TYPE| NONE| PARENT_NOT_SET[ 23/ 23/ 26/ 0][0/1/0][ 8a 0088][0-0] int
+# 3> WORD| NONE| PARENT_NOT_SET[ 27/ 27/ 28/ 1][0/1/0][ 100 0088][0-0] i
+# 3> COMMA| NONE| PARENT_NOT_SET[ 28/ 28/ 29/ 0][0/1/0][ 2 0000 0088][0-0] ,
+# 3> TYPE| NONE| PARENT_NOT_SET[ 30/ 30/ 36/ 1][0/1/0][ 8a 0088][0-0] double
+# 3> WORD| NONE| PARENT_NOT_SET[ 37/ 37/ 38/ 1][0/1/0][ 100 0088][0-0] d
+# 3> FPAREN_CLOSE| FUNC_PROTO| PARENT_NOT_SET[ 38/ 38/ 39/ 0][0/0/0][ 2 0000 0088][0-0] )
+# 3> SEMICOLON| TYPEDEF| PARENT_NOT_SET[ 39/ 39/ 40/ 0][0/0/0][ 2 0000 0080][0-0] ;
+# 3> NEWLINE| NONE| PARENT_NOT_SET[ 40/ 40/ 1/ 0][0/0/0][ 0][1-0]
+# 4> TYPEDEF| NONE| PARENT_NOT_SET[ 1/ 1/ 8/ 0][0/0/0][ e 0000][0-0] typedef
+# 4> TYPE| NONE| PARENT_NOT_SET[ 9/ 9/ 13/ 1][0/0/0][ 2 0080][0-1] void
+# 4> FUNC_TYPE| TYPEDEF| PARENT_NOT_SET[ 14/ 14/ 22/ 1][0/0/0][ 80][0-0] function
+# 4> FPAREN_OPEN| FUNC_CALL| PARENT_NOT_SET[ 22/ 22/ 23/ 0][0/0/0][ 2 0000 0080][0-0] (
+# 4> TYPE| NONE| PARENT_NOT_SET[ 23/ 23/ 26/ 0][0/1/0][ 8a 0088][0-0] int
+# 4> WORD| NONE| PARENT_NOT_SET[ 27/ 27/ 28/ 1][0/1/0][ 100 0088][0-0] i
+# 4> COMMA| NONE| PARENT_NOT_SET[ 28/ 28/ 29/ 0][0/1/0][ 2 0000 0088][0-0] ,
+# 4> TYPE| NONE| PARENT_NOT_SET[ 30/ 30/ 36/ 1][0/1/0][ 8a 0088][0-0] double
+# 4> WORD| NONE| PARENT_NOT_SET[ 37/ 37/ 38/ 1][0/1/0][ 100 0088][0-0] d
+# 4> FPAREN_CLOSE| FUNC_CALL| PARENT_NOT_SET[ 38/ 38/ 39/ 0][0/0/0][ 2 0000 0088][0-0] )
+# 4> SEMICOLON| TYPEDEF| PARENT_NOT_SET[ 39/ 39/ 40/ 0][0/0/0][ 2 0000 0080][0-0] ;
+# 4> NEWLINE| NONE| PARENT_NOT_SET[ 40/ 40/ 1/ 0][0/0/0][ 0][2-0]
+# -=====-
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/logger_cs_L_99.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/logger_cs_L_99.txt
index 44abdcfd..44abdcfd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/logger_cs_L_99.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/logger_cs_L_99.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/p.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/p.txt
index 616c7066..616c7066 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/p.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/p.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/pc-.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/pc-.txt
index aa0e221e..aa0e221e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/pc-.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/pc-.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/replace.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/replace.txt
new file mode 100644
index 00000000..e643b5cd
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/replace.txt
@@ -0,0 +1,2 @@
+do_source_file: Parsing: input/I-3310.c as language C
+do_source_file: Parsing: input/backup.h as language C-Header
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/truncate.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/truncate.txt
index 3b63da09..3b63da09 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/truncate.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/truncate.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/universalindent.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/universalindent.cfg
new file mode 100644
index 00000000..61277071
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/universalindent.cfg
@@ -0,0 +1,7585 @@
+[header]
+categories=General options|Spacing options|Indenting options|Newline adding and removing options|Blank line options|Positioning options|Line splitting options|Code alignment options (not left column spaces/tabs)|Comment modification options|Code modifying options (non-whitespace)|Preprocessor options|Sort includes options|Use or Do not Use options|Warn levels - 1: error, 2: warning (default), 3: note
+cfgFileParameterEnding=cr
+configFilename=uncrustify.cfg
+fileTypes=*.c|*.c++|*.cc|*.cp|*.cpp|*.cs|*.cxx|*.d|*.di|*.es|*.h|*.h++|*.hh|*.hp|*.hpp|*.hxx|*.inc|*.inl|*.java|*.js|*.m|*.mm|*.p|*.pawn|*.sma|*.sqc|*.sql|*.vala|*.vapi
+indenterFileName=uncrustify
+indenterName=Uncrustify (C, C++, C#, ObjectiveC, D, Java, Pawn, VALA)
+inputFileName=indentinput
+inputFileParameter="-f "
+manual=http://uncrustify.sourceforge.net/config.txt
+outputFileName=indentoutput
+outputFileParameter="-o "
+stringparaminquotes=false
+parameterOrder=ipo
+showHelpParameter=-h
+stringparaminquotes=false
+useCfgFileParameter="-c "
+useRegex=true
+
+
+[Newlines]
+Category=0
+Description="<html>The type of line endings.<br/><br/>Default: auto</html>"
+Enabled=false
+EditorType=multiple
+Choices=newlines\s*=\s*lf|newlines\s*=\s*crlf|newlines\s*=\s*cr|newlines\s*=\s*auto
+ChoicesReadable="Newlines Unix|Newlines Win|Newlines Mac|Newlines Auto"
+ValueDefault=auto
+
+[Input Tab Size]
+Category=0
+Description="<html>The original size of tabs in the input.<br/><br/>Default: 8</html>"
+Enabled=false
+EditorType=numeric
+CallName="input_tab_size\s*=\s*"
+MinVal=1
+MaxVal=32
+ValueDefault=8
+
+[Output Tab Size]
+Category=0
+Description="<html>The size of tabs in the output (only used if align_with_tabs=true).<br/><br/>Default: 8</html>"
+Enabled=false
+EditorType=numeric
+CallName="output_tab_size\s*=\s*"
+MinVal=1
+MaxVal=32
+ValueDefault=8
+
+[String Escape Char]
+Category=0
+Description="<html>The ASCII value of the string escape char, usually 92 (\) or (Pawn) 94 (^).<br/><br/>Default: 92</html>"
+Enabled=false
+EditorType=numeric
+CallName="string_escape_char\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=92
+
+[String Escape Char2]
+Category=0
+Description="<html>Alternate string escape char (usually only used for Pawn).<br/>Only works right before the quote char.</html>"
+Enabled=false
+EditorType=numeric
+CallName="string_escape_char2\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[String Replace Tab Chars]
+Category=0
+Description="<html>Replace tab characters found in string literals with the escape sequence \t<br/>instead.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=string_replace_tab_chars\s*=\s*true|string_replace_tab_chars\s*=\s*false
+ValueDefault=false
+
+[Tok Split Gte]
+Category=0
+Description="<html>Allow interpreting '&gt;=' and '&gt;&gt;=' as part of a template in code like<br/>'void f(list&lt;list&lt;B&gt;&gt;=val);'. If true, 'assert(x&lt;0 &amp;&amp; y&gt;=3)' will be broken.<br/>Improvements to template detection may make this option obsolete.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=tok_split_gte\s*=\s*true|tok_split_gte\s*=\s*false
+ValueDefault=false
+
+[Disable Processing Nl Cont]
+Category=0
+Description="<html>Disable formatting of NL_CONT ('\\n') ended lines (e.g. multi-line macros).</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=disable_processing_nl_cont\s*=\s*true|disable_processing_nl_cont\s*=\s*false
+ValueDefault=false
+
+[Disable Processing Cmt]
+Category=0
+Description="<html>Specify the marker used in comments to disable processing of part of the<br/>file.<br/><br/>Default: *INDENT-OFF*</html>"
+Enabled=false
+CallName=disable_processing_cmt\s*=\s*
+EditorType=string
+ValueDefault= *INDENT-OFF*
+
+[Enable Processing Cmt]
+Category=0
+Description="<html>Specify the marker used in comments to (re)enable processing in a file.<br/><br/>Default: *INDENT-ON*</html>"
+Enabled=false
+CallName=enable_processing_cmt\s*=\s*
+EditorType=string
+ValueDefault= *INDENT-ON*
+
+[Enable Digraphs]
+Category=0
+Description="<html>Enable parsing of digraphs.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=enable_digraphs\s*=\s*true|enable_digraphs\s*=\s*false
+ValueDefault=false
+
+[Processing Cmt As Regex]
+Category=0
+Description="<html>Option to allow both disable_processing_cmt and enable_processing_cmt<br/>strings, if specified, to be interpreted as ECMAScript regular expressions.<br/>If true, a regex search will be performed within comments according to the<br/>specified patterns in order to disable/enable processing.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=processing_cmt_as_regex\s*=\s*true|processing_cmt_as_regex\s*=\s*false
+ValueDefault=false
+
+[Utf8 Bom]
+Category=0
+Description="<html>Add or remove the UTF-8 BOM (recommend 'remove').</html>"
+Enabled=false
+EditorType=multiple
+Choices=utf8_bom\s*=\s*ignore|utf8_bom\s*=\s*add|utf8_bom\s*=\s*remove|utf8_bom\s*=\s*force|utf8_bom\s*=\s*not_defined
+ChoicesReadable="Ignore Utf8 Bom|Add Utf8 Bom|Remove Utf8 Bom|Force Utf8 Bom"
+ValueDefault=ignore
+
+[Utf8 Byte]
+Category=0
+Description="<html>If the file contains bytes with values between 128 and 255, but is not<br/>UTF-8, then output as UTF-8.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=utf8_byte\s*=\s*true|utf8_byte\s*=\s*false
+ValueDefault=false
+
+[Utf8 Force]
+Category=0
+Description="<html>Force the output encoding to UTF-8.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=utf8_force\s*=\s*true|utf8_force\s*=\s*false
+ValueDefault=false
+
+[Sp Arith]
+Category=1
+Description="<html>Add or remove space around non-assignment symbolic operators ('+', '/', '%',<br/>'&lt;&lt;', and so forth).</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_arith\s*=\s*ignore|sp_arith\s*=\s*add|sp_arith\s*=\s*remove|sp_arith\s*=\s*force|sp_arith\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Arith|Add Sp Arith|Remove Sp Arith|Force Sp Arith"
+ValueDefault=ignore
+
+[Sp Arith Additive]
+Category=1
+Description="<html>Add or remove space around arithmetic operators '+' and '-'.<br/><br/>Overrides sp_arith.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_arith_additive\s*=\s*ignore|sp_arith_additive\s*=\s*add|sp_arith_additive\s*=\s*remove|sp_arith_additive\s*=\s*force|sp_arith_additive\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Arith Additive|Add Sp Arith Additive|Remove Sp Arith Additive|Force Sp Arith Additive"
+ValueDefault=ignore
+
+[Sp Assign]
+Category=1
+Description="<html>Add or remove space around assignment operator '=', '+=', etc.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_assign\s*=\s*ignore|sp_assign\s*=\s*add|sp_assign\s*=\s*remove|sp_assign\s*=\s*force|sp_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Assign|Add Sp Assign|Remove Sp Assign|Force Sp Assign"
+ValueDefault=ignore
+
+[Sp Cpp Lambda Assign]
+Category=1
+Description="<html>Add or remove space around '=' in C++11 lambda capture specifications.<br/><br/>Overrides sp_assign.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_lambda_assign\s*=\s*ignore|sp_cpp_lambda_assign\s*=\s*add|sp_cpp_lambda_assign\s*=\s*remove|sp_cpp_lambda_assign\s*=\s*force|sp_cpp_lambda_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Lambda Assign|Add Sp Cpp Lambda Assign|Remove Sp Cpp Lambda Assign|Force Sp Cpp Lambda Assign"
+ValueDefault=ignore
+
+[Sp Cpp Lambda Square Paren]
+Category=1
+Description="<html>Add or remove space after the capture specification of a C++11 lambda when<br/>an argument list is present, as in '[] &lt;here&gt; (int x){ ... }'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_lambda_square_paren\s*=\s*ignore|sp_cpp_lambda_square_paren\s*=\s*add|sp_cpp_lambda_square_paren\s*=\s*remove|sp_cpp_lambda_square_paren\s*=\s*force|sp_cpp_lambda_square_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Lambda Square Paren|Add Sp Cpp Lambda Square Paren|Remove Sp Cpp Lambda Square Paren|Force Sp Cpp Lambda Square Paren"
+ValueDefault=ignore
+
+[Sp Cpp Lambda Square Brace]
+Category=1
+Description="<html>Add or remove space after the capture specification of a C++11 lambda with<br/>no argument list is present, as in '[] &lt;here&gt; { ... }'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_lambda_square_brace\s*=\s*ignore|sp_cpp_lambda_square_brace\s*=\s*add|sp_cpp_lambda_square_brace\s*=\s*remove|sp_cpp_lambda_square_brace\s*=\s*force|sp_cpp_lambda_square_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Lambda Square Brace|Add Sp Cpp Lambda Square Brace|Remove Sp Cpp Lambda Square Brace|Force Sp Cpp Lambda Square Brace"
+ValueDefault=ignore
+
+[Sp Cpp Lambda Argument List Empty]
+Category=1
+Description="<html>Add or remove space after the opening parenthesis and before the closing<br/>parenthesis of a argument list of a C++11 lambda, as in<br/>'[]( &lt;here&gt; ){ ... }'<br/>with an empty list.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_lambda_argument_list_empty\s*=\s*ignore|sp_cpp_lambda_argument_list_empty\s*=\s*add|sp_cpp_lambda_argument_list_empty\s*=\s*remove|sp_cpp_lambda_argument_list_empty\s*=\s*force|sp_cpp_lambda_argument_list_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Lambda Argument List Empty|Add Sp Cpp Lambda Argument List Empty|Remove Sp Cpp Lambda Argument List Empty|Force Sp Cpp Lambda Argument List Empty"
+ValueDefault=ignore
+
+[Sp Cpp Lambda Argument List]
+Category=1
+Description="<html>Add or remove space after the opening parenthesis and before the closing<br/>parenthesis of a argument list of a C++11 lambda, as in<br/>'[]( &lt;here&gt; int x &lt;here&gt; ){ ... }'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_lambda_argument_list\s*=\s*ignore|sp_cpp_lambda_argument_list\s*=\s*add|sp_cpp_lambda_argument_list\s*=\s*remove|sp_cpp_lambda_argument_list\s*=\s*force|sp_cpp_lambda_argument_list\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Lambda Argument List|Add Sp Cpp Lambda Argument List|Remove Sp Cpp Lambda Argument List|Force Sp Cpp Lambda Argument List"
+ValueDefault=ignore
+
+[Sp Cpp Lambda Paren Brace]
+Category=1
+Description="<html>Add or remove space after the argument list of a C++11 lambda, as in<br/>'[](int x) &lt;here&gt; { ... }'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_lambda_paren_brace\s*=\s*ignore|sp_cpp_lambda_paren_brace\s*=\s*add|sp_cpp_lambda_paren_brace\s*=\s*remove|sp_cpp_lambda_paren_brace\s*=\s*force|sp_cpp_lambda_paren_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Lambda Paren Brace|Add Sp Cpp Lambda Paren Brace|Remove Sp Cpp Lambda Paren Brace|Force Sp Cpp Lambda Paren Brace"
+ValueDefault=ignore
+
+[Sp Cpp Lambda Fparen]
+Category=1
+Description="<html>Add or remove space between a lambda body and its call operator of an<br/>immediately invoked lambda, as in '[]( ... ){ ... } &lt;here&gt; ( ... )'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_lambda_fparen\s*=\s*ignore|sp_cpp_lambda_fparen\s*=\s*add|sp_cpp_lambda_fparen\s*=\s*remove|sp_cpp_lambda_fparen\s*=\s*force|sp_cpp_lambda_fparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Lambda Fparen|Add Sp Cpp Lambda Fparen|Remove Sp Cpp Lambda Fparen|Force Sp Cpp Lambda Fparen"
+ValueDefault=ignore
+
+[Sp Assign Default]
+Category=1
+Description="<html>Add or remove space around assignment operator '=' in a prototype.<br/><br/>If set to ignore, use sp_assign.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_assign_default\s*=\s*ignore|sp_assign_default\s*=\s*add|sp_assign_default\s*=\s*remove|sp_assign_default\s*=\s*force|sp_assign_default\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Assign Default|Add Sp Assign Default|Remove Sp Assign Default|Force Sp Assign Default"
+ValueDefault=ignore
+
+[Sp Before Assign]
+Category=1
+Description="<html>Add or remove space before assignment operator '=', '+=', etc.<br/><br/>Overrides sp_assign.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_assign\s*=\s*ignore|sp_before_assign\s*=\s*add|sp_before_assign\s*=\s*remove|sp_before_assign\s*=\s*force|sp_before_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Assign|Add Sp Before Assign|Remove Sp Before Assign|Force Sp Before Assign"
+ValueDefault=ignore
+
+[Sp After Assign]
+Category=1
+Description="<html>Add or remove space after assignment operator '=', '+=', etc.<br/><br/>Overrides sp_assign.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_assign\s*=\s*ignore|sp_after_assign\s*=\s*add|sp_after_assign\s*=\s*remove|sp_after_assign\s*=\s*force|sp_after_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Assign|Add Sp After Assign|Remove Sp After Assign|Force Sp After Assign"
+ValueDefault=ignore
+
+[Sp Enum Brace]
+Category=1
+Description="<html>Add or remove space in 'enum {'.<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_enum_brace\s*=\s*ignore|sp_enum_brace\s*=\s*add|sp_enum_brace\s*=\s*remove|sp_enum_brace\s*=\s*force|sp_enum_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Enum Brace|Add Sp Enum Brace|Remove Sp Enum Brace|Force Sp Enum Brace"
+ValueDefault=add
+
+[Sp Enum Paren]
+Category=1
+Description="<html>Add or remove space in 'NS_ENUM ('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_enum_paren\s*=\s*ignore|sp_enum_paren\s*=\s*add|sp_enum_paren\s*=\s*remove|sp_enum_paren\s*=\s*force|sp_enum_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Enum Paren|Add Sp Enum Paren|Remove Sp Enum Paren|Force Sp Enum Paren"
+ValueDefault=ignore
+
+[Sp Enum Assign]
+Category=1
+Description="<html>Add or remove space around assignment '=' in enum.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_enum_assign\s*=\s*ignore|sp_enum_assign\s*=\s*add|sp_enum_assign\s*=\s*remove|sp_enum_assign\s*=\s*force|sp_enum_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Enum Assign|Add Sp Enum Assign|Remove Sp Enum Assign|Force Sp Enum Assign"
+ValueDefault=ignore
+
+[Sp Enum Before Assign]
+Category=1
+Description="<html>Add or remove space before assignment '=' in enum.<br/><br/>Overrides sp_enum_assign.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_enum_before_assign\s*=\s*ignore|sp_enum_before_assign\s*=\s*add|sp_enum_before_assign\s*=\s*remove|sp_enum_before_assign\s*=\s*force|sp_enum_before_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Enum Before Assign|Add Sp Enum Before Assign|Remove Sp Enum Before Assign|Force Sp Enum Before Assign"
+ValueDefault=ignore
+
+[Sp Enum After Assign]
+Category=1
+Description="<html>Add or remove space after assignment '=' in enum.<br/><br/>Overrides sp_enum_assign.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_enum_after_assign\s*=\s*ignore|sp_enum_after_assign\s*=\s*add|sp_enum_after_assign\s*=\s*remove|sp_enum_after_assign\s*=\s*force|sp_enum_after_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Enum After Assign|Add Sp Enum After Assign|Remove Sp Enum After Assign|Force Sp Enum After Assign"
+ValueDefault=ignore
+
+[Sp Enum Colon]
+Category=1
+Description="<html>Add or remove space around assignment ':' in enum.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_enum_colon\s*=\s*ignore|sp_enum_colon\s*=\s*add|sp_enum_colon\s*=\s*remove|sp_enum_colon\s*=\s*force|sp_enum_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Enum Colon|Add Sp Enum Colon|Remove Sp Enum Colon|Force Sp Enum Colon"
+ValueDefault=ignore
+
+[Sp Pp Concat]
+Category=1
+Description="<html>Add or remove space around preprocessor '##' concatenation operator.<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_pp_concat\s*=\s*ignore|sp_pp_concat\s*=\s*add|sp_pp_concat\s*=\s*remove|sp_pp_concat\s*=\s*force|sp_pp_concat\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Pp Concat|Add Sp Pp Concat|Remove Sp Pp Concat|Force Sp Pp Concat"
+ValueDefault=add
+
+[Sp Pp Stringify]
+Category=1
+Description="<html>Add or remove space after preprocessor '#' stringify operator.<br/>Also affects the '#@' charizing operator.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_pp_stringify\s*=\s*ignore|sp_pp_stringify\s*=\s*add|sp_pp_stringify\s*=\s*remove|sp_pp_stringify\s*=\s*force|sp_pp_stringify\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Pp Stringify|Add Sp Pp Stringify|Remove Sp Pp Stringify|Force Sp Pp Stringify"
+ValueDefault=ignore
+
+[Sp Before Pp Stringify]
+Category=1
+Description="<html>Add or remove space before preprocessor '#' stringify operator<br/>as in '#define x(y) L#y'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_pp_stringify\s*=\s*ignore|sp_before_pp_stringify\s*=\s*add|sp_before_pp_stringify\s*=\s*remove|sp_before_pp_stringify\s*=\s*force|sp_before_pp_stringify\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Pp Stringify|Add Sp Before Pp Stringify|Remove Sp Before Pp Stringify|Force Sp Before Pp Stringify"
+ValueDefault=ignore
+
+[Sp Bool]
+Category=1
+Description="<html>Add or remove space around boolean operators '&amp;&amp;' and '||'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_bool\s*=\s*ignore|sp_bool\s*=\s*add|sp_bool\s*=\s*remove|sp_bool\s*=\s*force|sp_bool\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Bool|Add Sp Bool|Remove Sp Bool|Force Sp Bool"
+ValueDefault=ignore
+
+[Sp Compare]
+Category=1
+Description="<html>Add or remove space around compare operator '&lt;', '&gt;', '==', etc.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_compare\s*=\s*ignore|sp_compare\s*=\s*add|sp_compare\s*=\s*remove|sp_compare\s*=\s*force|sp_compare\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Compare|Add Sp Compare|Remove Sp Compare|Force Sp Compare"
+ValueDefault=ignore
+
+[Sp Inside Paren]
+Category=1
+Description="<html>Add or remove space inside '(' and ')'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_paren\s*=\s*ignore|sp_inside_paren\s*=\s*add|sp_inside_paren\s*=\s*remove|sp_inside_paren\s*=\s*force|sp_inside_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Paren|Add Sp Inside Paren|Remove Sp Inside Paren|Force Sp Inside Paren"
+ValueDefault=ignore
+
+[Sp Paren Paren]
+Category=1
+Description="<html>Add or remove space between nested parentheses, i.e. '((' vs. ') )'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_paren_paren\s*=\s*ignore|sp_paren_paren\s*=\s*add|sp_paren_paren\s*=\s*remove|sp_paren_paren\s*=\s*force|sp_paren_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Paren Paren|Add Sp Paren Paren|Remove Sp Paren Paren|Force Sp Paren Paren"
+ValueDefault=ignore
+
+[Sp Cparen Oparen]
+Category=1
+Description="<html>Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cparen_oparen\s*=\s*ignore|sp_cparen_oparen\s*=\s*add|sp_cparen_oparen\s*=\s*remove|sp_cparen_oparen\s*=\s*force|sp_cparen_oparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cparen Oparen|Add Sp Cparen Oparen|Remove Sp Cparen Oparen|Force Sp Cparen Oparen"
+ValueDefault=ignore
+
+[Sp Balance Nested Parens]
+Category=1
+Description="<html>Whether to balance spaces inside nested parentheses.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=sp_balance_nested_parens\s*=\s*true|sp_balance_nested_parens\s*=\s*false
+ValueDefault=false
+
+[Sp Paren Brace]
+Category=1
+Description="<html>Add or remove space between ')' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_paren_brace\s*=\s*ignore|sp_paren_brace\s*=\s*add|sp_paren_brace\s*=\s*remove|sp_paren_brace\s*=\s*force|sp_paren_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Paren Brace|Add Sp Paren Brace|Remove Sp Paren Brace|Force Sp Paren Brace"
+ValueDefault=ignore
+
+[Sp Brace Brace]
+Category=1
+Description="<html>Add or remove space between nested braces, i.e. '{{' vs. '{ {'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_brace_brace\s*=\s*ignore|sp_brace_brace\s*=\s*add|sp_brace_brace\s*=\s*remove|sp_brace_brace\s*=\s*force|sp_brace_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Brace Brace|Add Sp Brace Brace|Remove Sp Brace Brace|Force Sp Brace Brace"
+ValueDefault=ignore
+
+[Sp Before Ptr Star]
+Category=1
+Description="<html>Add or remove space before pointer star '*'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_ptr_star\s*=\s*ignore|sp_before_ptr_star\s*=\s*add|sp_before_ptr_star\s*=\s*remove|sp_before_ptr_star\s*=\s*force|sp_before_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Ptr Star|Add Sp Before Ptr Star|Remove Sp Before Ptr Star|Force Sp Before Ptr Star"
+ValueDefault=ignore
+
+[Sp Before Unnamed Ptr Star]
+Category=1
+Description="<html>Add or remove space before pointer star '*' that isn't followed by a<br/>variable name. If set to ignore, sp_before_ptr_star is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_unnamed_ptr_star\s*=\s*ignore|sp_before_unnamed_ptr_star\s*=\s*add|sp_before_unnamed_ptr_star\s*=\s*remove|sp_before_unnamed_ptr_star\s*=\s*force|sp_before_unnamed_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Unnamed Ptr Star|Add Sp Before Unnamed Ptr Star|Remove Sp Before Unnamed Ptr Star|Force Sp Before Unnamed Ptr Star"
+ValueDefault=ignore
+
+[Sp Before Qualifier Ptr Star]
+Category=1
+Description="<html>Add or remove space before pointer star '*' that is followed by a qualifier.<br/>If set to ignore, sp_before_unnamed_ptr_star is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_qualifier_ptr_star\s*=\s*ignore|sp_before_qualifier_ptr_star\s*=\s*add|sp_before_qualifier_ptr_star\s*=\s*remove|sp_before_qualifier_ptr_star\s*=\s*force|sp_before_qualifier_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Qualifier Ptr Star|Add Sp Before Qualifier Ptr Star|Remove Sp Before Qualifier Ptr Star|Force Sp Before Qualifier Ptr Star"
+ValueDefault=ignore
+
+[Sp Before Operator Ptr Star]
+Category=1
+Description="<html>Add or remove space before pointer star '*' that is followed by 'operator' keyword.<br/>If set to ignore, sp_before_unnamed_ptr_star is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_operator_ptr_star\s*=\s*ignore|sp_before_operator_ptr_star\s*=\s*add|sp_before_operator_ptr_star\s*=\s*remove|sp_before_operator_ptr_star\s*=\s*force|sp_before_operator_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Operator Ptr Star|Add Sp Before Operator Ptr Star|Remove Sp Before Operator Ptr Star|Force Sp Before Operator Ptr Star"
+ValueDefault=ignore
+
+[Sp Before Scope Ptr Star]
+Category=1
+Description="<html>Add or remove space before pointer star '*' that is followed by<br/>a class scope (as in 'int *MyClass::method()') or namespace scope<br/>(as in 'int *my_ns::func()').<br/>If set to ignore, sp_before_unnamed_ptr_star is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_scope_ptr_star\s*=\s*ignore|sp_before_scope_ptr_star\s*=\s*add|sp_before_scope_ptr_star\s*=\s*remove|sp_before_scope_ptr_star\s*=\s*force|sp_before_scope_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Scope Ptr Star|Add Sp Before Scope Ptr Star|Remove Sp Before Scope Ptr Star|Force Sp Before Scope Ptr Star"
+ValueDefault=ignore
+
+[Sp Before Global Scope Ptr Star]
+Category=1
+Description="<html>Add or remove space before pointer star '*' that is followed by '::',<br/>as in 'int *::func()'.<br/>If set to ignore, sp_before_unnamed_ptr_star is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_global_scope_ptr_star\s*=\s*ignore|sp_before_global_scope_ptr_star\s*=\s*add|sp_before_global_scope_ptr_star\s*=\s*remove|sp_before_global_scope_ptr_star\s*=\s*force|sp_before_global_scope_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Global Scope Ptr Star|Add Sp Before Global Scope Ptr Star|Remove Sp Before Global Scope Ptr Star|Force Sp Before Global Scope Ptr Star"
+ValueDefault=ignore
+
+[Sp Qualifier Unnamed Ptr Star]
+Category=1
+Description="<html>Add or remove space between a qualifier and a pointer star '*' that isn't<br/>followed by a variable name, as in '(char const *)'. If set to ignore,<br/>sp_before_ptr_star is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_qualifier_unnamed_ptr_star\s*=\s*ignore|sp_qualifier_unnamed_ptr_star\s*=\s*add|sp_qualifier_unnamed_ptr_star\s*=\s*remove|sp_qualifier_unnamed_ptr_star\s*=\s*force|sp_qualifier_unnamed_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Qualifier Unnamed Ptr Star|Add Sp Qualifier Unnamed Ptr Star|Remove Sp Qualifier Unnamed Ptr Star|Force Sp Qualifier Unnamed Ptr Star"
+ValueDefault=ignore
+
+[Sp Between Ptr Star]
+Category=1
+Description="<html>Add or remove space between pointer stars '*', as in 'int ***a;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_between_ptr_star\s*=\s*ignore|sp_between_ptr_star\s*=\s*add|sp_between_ptr_star\s*=\s*remove|sp_between_ptr_star\s*=\s*force|sp_between_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Between Ptr Star|Add Sp Between Ptr Star|Remove Sp Between Ptr Star|Force Sp Between Ptr Star"
+ValueDefault=ignore
+
+[Sp Between Ptr Ref]
+Category=1
+Description="<html>Add or remove space between pointer star '*' and reference '&amp;', as in 'int *&amp; a;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_between_ptr_ref\s*=\s*ignore|sp_between_ptr_ref\s*=\s*add|sp_between_ptr_ref\s*=\s*remove|sp_between_ptr_ref\s*=\s*force|sp_between_ptr_ref\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Between Ptr Ref|Add Sp Between Ptr Ref|Remove Sp Between Ptr Ref|Force Sp Between Ptr Ref"
+ValueDefault=ignore
+
+[Sp After Ptr Star]
+Category=1
+Description="<html>Add or remove space after pointer star '*', if followed by a word.<br/><br/>Overrides sp_type_func.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_ptr_star\s*=\s*ignore|sp_after_ptr_star\s*=\s*add|sp_after_ptr_star\s*=\s*remove|sp_after_ptr_star\s*=\s*force|sp_after_ptr_star\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Ptr Star|Add Sp After Ptr Star|Remove Sp After Ptr Star|Force Sp After Ptr Star"
+ValueDefault=ignore
+
+[Sp After Ptr Block Caret]
+Category=1
+Description="<html>Add or remove space after pointer caret '^', if followed by a word.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_ptr_block_caret\s*=\s*ignore|sp_after_ptr_block_caret\s*=\s*add|sp_after_ptr_block_caret\s*=\s*remove|sp_after_ptr_block_caret\s*=\s*force|sp_after_ptr_block_caret\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Ptr Block Caret|Add Sp After Ptr Block Caret|Remove Sp After Ptr Block Caret|Force Sp After Ptr Block Caret"
+ValueDefault=ignore
+
+[Sp After Ptr Star Qualifier]
+Category=1
+Description="<html>Add or remove space after pointer star '*', if followed by a qualifier.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_ptr_star_qualifier\s*=\s*ignore|sp_after_ptr_star_qualifier\s*=\s*add|sp_after_ptr_star_qualifier\s*=\s*remove|sp_after_ptr_star_qualifier\s*=\s*force|sp_after_ptr_star_qualifier\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Ptr Star Qualifier|Add Sp After Ptr Star Qualifier|Remove Sp After Ptr Star Qualifier|Force Sp After Ptr Star Qualifier"
+ValueDefault=ignore
+
+[Sp After Ptr Star Func]
+Category=1
+Description="<html>Add or remove space after a pointer star '*', if followed by a function<br/>prototype or function definition.<br/><br/>Overrides sp_after_ptr_star and sp_type_func.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_ptr_star_func\s*=\s*ignore|sp_after_ptr_star_func\s*=\s*add|sp_after_ptr_star_func\s*=\s*remove|sp_after_ptr_star_func\s*=\s*force|sp_after_ptr_star_func\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Ptr Star Func|Add Sp After Ptr Star Func|Remove Sp After Ptr Star Func|Force Sp After Ptr Star Func"
+ValueDefault=ignore
+
+[Sp After Ptr Star Trailing]
+Category=1
+Description="<html>Add or remove space after a pointer star '*' in the trailing return of a<br/>function prototype or function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_ptr_star_trailing\s*=\s*ignore|sp_after_ptr_star_trailing\s*=\s*add|sp_after_ptr_star_trailing\s*=\s*remove|sp_after_ptr_star_trailing\s*=\s*force|sp_after_ptr_star_trailing\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Ptr Star Trailing|Add Sp After Ptr Star Trailing|Remove Sp After Ptr Star Trailing|Force Sp After Ptr Star Trailing"
+ValueDefault=ignore
+
+[Sp Ptr Star Func Var]
+Category=1
+Description="<html>Add or remove space between the pointer star '*' and the name of the variable<br/>in a function pointer definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_ptr_star_func_var\s*=\s*ignore|sp_ptr_star_func_var\s*=\s*add|sp_ptr_star_func_var\s*=\s*remove|sp_ptr_star_func_var\s*=\s*force|sp_ptr_star_func_var\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Ptr Star Func Var|Add Sp Ptr Star Func Var|Remove Sp Ptr Star Func Var|Force Sp Ptr Star Func Var"
+ValueDefault=ignore
+
+[Sp Ptr Star Func Type]
+Category=1
+Description="<html>Add or remove space between the pointer star '*' and the name of the type<br/>in a function pointer type definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_ptr_star_func_type\s*=\s*ignore|sp_ptr_star_func_type\s*=\s*add|sp_ptr_star_func_type\s*=\s*remove|sp_ptr_star_func_type\s*=\s*force|sp_ptr_star_func_type\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Ptr Star Func Type|Add Sp Ptr Star Func Type|Remove Sp Ptr Star Func Type|Force Sp Ptr Star Func Type"
+ValueDefault=ignore
+
+[Sp Ptr Star Paren]
+Category=1
+Description="<html>Add or remove space after a pointer star '*', if followed by an open<br/>parenthesis, as in 'void* (*)()'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_ptr_star_paren\s*=\s*ignore|sp_ptr_star_paren\s*=\s*add|sp_ptr_star_paren\s*=\s*remove|sp_ptr_star_paren\s*=\s*force|sp_ptr_star_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Ptr Star Paren|Add Sp Ptr Star Paren|Remove Sp Ptr Star Paren|Force Sp Ptr Star Paren"
+ValueDefault=ignore
+
+[Sp Before Ptr Star Func]
+Category=1
+Description="<html>Add or remove space before a pointer star '*', if followed by a function<br/>prototype or function definition. If set to ignore, sp_before_ptr_star is<br/>used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_ptr_star_func\s*=\s*ignore|sp_before_ptr_star_func\s*=\s*add|sp_before_ptr_star_func\s*=\s*remove|sp_before_ptr_star_func\s*=\s*force|sp_before_ptr_star_func\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Ptr Star Func|Add Sp Before Ptr Star Func|Remove Sp Before Ptr Star Func|Force Sp Before Ptr Star Func"
+ValueDefault=ignore
+
+[Sp Qualifier Ptr Star Func]
+Category=1
+Description="<html>Add or remove space between a qualifier and a pointer star '*' followed by<br/>the name of the function in a function prototype or definition, as in<br/>'char const *foo()`. If set to ignore, sp_before_ptr_star is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_qualifier_ptr_star_func\s*=\s*ignore|sp_qualifier_ptr_star_func\s*=\s*add|sp_qualifier_ptr_star_func\s*=\s*remove|sp_qualifier_ptr_star_func\s*=\s*force|sp_qualifier_ptr_star_func\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Qualifier Ptr Star Func|Add Sp Qualifier Ptr Star Func|Remove Sp Qualifier Ptr Star Func|Force Sp Qualifier Ptr Star Func"
+ValueDefault=ignore
+
+[Sp Before Ptr Star Trailing]
+Category=1
+Description="<html>Add or remove space before a pointer star '*' in the trailing return of a<br/>function prototype or function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_ptr_star_trailing\s*=\s*ignore|sp_before_ptr_star_trailing\s*=\s*add|sp_before_ptr_star_trailing\s*=\s*remove|sp_before_ptr_star_trailing\s*=\s*force|sp_before_ptr_star_trailing\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Ptr Star Trailing|Add Sp Before Ptr Star Trailing|Remove Sp Before Ptr Star Trailing|Force Sp Before Ptr Star Trailing"
+ValueDefault=ignore
+
+[Sp Qualifier Ptr Star Trailing]
+Category=1
+Description="<html>Add or remove space between a qualifier and a pointer star '*' in the<br/>trailing return of a function prototype or function definition, as in<br/>'auto foo() -&gt; char const *'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_qualifier_ptr_star_trailing\s*=\s*ignore|sp_qualifier_ptr_star_trailing\s*=\s*add|sp_qualifier_ptr_star_trailing\s*=\s*remove|sp_qualifier_ptr_star_trailing\s*=\s*force|sp_qualifier_ptr_star_trailing\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Qualifier Ptr Star Trailing|Add Sp Qualifier Ptr Star Trailing|Remove Sp Qualifier Ptr Star Trailing|Force Sp Qualifier Ptr Star Trailing"
+ValueDefault=ignore
+
+[Sp Before Byref]
+Category=1
+Description="<html>Add or remove space before a reference sign '&amp;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_byref\s*=\s*ignore|sp_before_byref\s*=\s*add|sp_before_byref\s*=\s*remove|sp_before_byref\s*=\s*force|sp_before_byref\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Byref|Add Sp Before Byref|Remove Sp Before Byref|Force Sp Before Byref"
+ValueDefault=ignore
+
+[Sp Before Unnamed Byref]
+Category=1
+Description="<html>Add or remove space before a reference sign '&amp;' that isn't followed by a<br/>variable name. If set to ignore, sp_before_byref is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_unnamed_byref\s*=\s*ignore|sp_before_unnamed_byref\s*=\s*add|sp_before_unnamed_byref\s*=\s*remove|sp_before_unnamed_byref\s*=\s*force|sp_before_unnamed_byref\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Unnamed Byref|Add Sp Before Unnamed Byref|Remove Sp Before Unnamed Byref|Force Sp Before Unnamed Byref"
+ValueDefault=ignore
+
+[Sp After Byref]
+Category=1
+Description="<html>Add or remove space after reference sign '&amp;', if followed by a word.<br/><br/>Overrides sp_type_func.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_byref\s*=\s*ignore|sp_after_byref\s*=\s*add|sp_after_byref\s*=\s*remove|sp_after_byref\s*=\s*force|sp_after_byref\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Byref|Add Sp After Byref|Remove Sp After Byref|Force Sp After Byref"
+ValueDefault=ignore
+
+[Sp After Byref Func]
+Category=1
+Description="<html>Add or remove space after a reference sign '&amp;', if followed by a function<br/>prototype or function definition.<br/><br/>Overrides sp_after_byref and sp_type_func.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_byref_func\s*=\s*ignore|sp_after_byref_func\s*=\s*add|sp_after_byref_func\s*=\s*remove|sp_after_byref_func\s*=\s*force|sp_after_byref_func\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Byref Func|Add Sp After Byref Func|Remove Sp After Byref Func|Force Sp After Byref Func"
+ValueDefault=ignore
+
+[Sp Before Byref Func]
+Category=1
+Description="<html>Add or remove space before a reference sign '&amp;', if followed by a function<br/>prototype or function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_byref_func\s*=\s*ignore|sp_before_byref_func\s*=\s*add|sp_before_byref_func\s*=\s*remove|sp_before_byref_func\s*=\s*force|sp_before_byref_func\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Byref Func|Add Sp Before Byref Func|Remove Sp Before Byref Func|Force Sp Before Byref Func"
+ValueDefault=ignore
+
+[Sp Byref Paren]
+Category=1
+Description="<html>Add or remove space after a reference sign '&amp;', if followed by an open<br/>parenthesis, as in 'char&amp; (*)()'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_byref_paren\s*=\s*ignore|sp_byref_paren\s*=\s*add|sp_byref_paren\s*=\s*remove|sp_byref_paren\s*=\s*force|sp_byref_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Byref Paren|Add Sp Byref Paren|Remove Sp Byref Paren|Force Sp Byref Paren"
+ValueDefault=ignore
+
+[Sp After Type]
+Category=1
+Description="<html>Add or remove space between type and word. In cases where total removal of<br/>whitespace would be a syntax error, a value of 'remove' is treated the same<br/>as 'force'.<br/><br/>This also affects some other instances of space following a type that are<br/>not covered by other options; for example, between the return type and<br/>parenthesis of a function type template argument, between the type and<br/>parenthesis of an array parameter, or between 'decltype(...)' and the<br/>following word.<br/><br/>Default: force</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_type\s*=\s*ignore|sp_after_type\s*=\s*add|sp_after_type\s*=\s*remove|sp_after_type\s*=\s*force|sp_after_type\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Type|Add Sp After Type|Remove Sp After Type|Force Sp After Type"
+ValueDefault=force
+
+[Sp After Decltype]
+Category=1
+Description="<html>Add or remove space between 'decltype(...)' and word,<br/>brace or function call.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_decltype\s*=\s*ignore|sp_after_decltype\s*=\s*add|sp_after_decltype\s*=\s*remove|sp_after_decltype\s*=\s*force|sp_after_decltype\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Decltype|Add Sp After Decltype|Remove Sp After Decltype|Force Sp After Decltype"
+ValueDefault=ignore
+
+[Sp Before Template Paren]
+Category=1
+Description="<html>(D) Add or remove space before the parenthesis in the D constructs<br/>'template Foo(' and 'class Foo('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_template_paren\s*=\s*ignore|sp_before_template_paren\s*=\s*add|sp_before_template_paren\s*=\s*remove|sp_before_template_paren\s*=\s*force|sp_before_template_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Template Paren|Add Sp Before Template Paren|Remove Sp Before Template Paren|Force Sp Before Template Paren"
+ValueDefault=ignore
+
+[Sp Template Angle]
+Category=1
+Description="<html>Add or remove space between 'template' and '&lt;'.<br/>If set to ignore, sp_before_angle is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_template_angle\s*=\s*ignore|sp_template_angle\s*=\s*add|sp_template_angle\s*=\s*remove|sp_template_angle\s*=\s*force|sp_template_angle\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Template Angle|Add Sp Template Angle|Remove Sp Template Angle|Force Sp Template Angle"
+ValueDefault=ignore
+
+[Sp Before Angle]
+Category=1
+Description="<html>Add or remove space before '&lt;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_angle\s*=\s*ignore|sp_before_angle\s*=\s*add|sp_before_angle\s*=\s*remove|sp_before_angle\s*=\s*force|sp_before_angle\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Angle|Add Sp Before Angle|Remove Sp Before Angle|Force Sp Before Angle"
+ValueDefault=ignore
+
+[Sp Inside Angle]
+Category=1
+Description="<html>Add or remove space inside '&lt;' and '&gt;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_angle\s*=\s*ignore|sp_inside_angle\s*=\s*add|sp_inside_angle\s*=\s*remove|sp_inside_angle\s*=\s*force|sp_inside_angle\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Angle|Add Sp Inside Angle|Remove Sp Inside Angle|Force Sp Inside Angle"
+ValueDefault=ignore
+
+[Sp Inside Angle Empty]
+Category=1
+Description="<html>Add or remove space inside '&lt;&gt;'.<br/>if empty.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_angle_empty\s*=\s*ignore|sp_inside_angle_empty\s*=\s*add|sp_inside_angle_empty\s*=\s*remove|sp_inside_angle_empty\s*=\s*force|sp_inside_angle_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Angle Empty|Add Sp Inside Angle Empty|Remove Sp Inside Angle Empty|Force Sp Inside Angle Empty"
+ValueDefault=ignore
+
+[Sp Angle Colon]
+Category=1
+Description="<html>Add or remove space between '&gt;' and ':'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_angle_colon\s*=\s*ignore|sp_angle_colon\s*=\s*add|sp_angle_colon\s*=\s*remove|sp_angle_colon\s*=\s*force|sp_angle_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Angle Colon|Add Sp Angle Colon|Remove Sp Angle Colon|Force Sp Angle Colon"
+ValueDefault=ignore
+
+[Sp After Angle]
+Category=1
+Description="<html>Add or remove space after '&gt;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_angle\s*=\s*ignore|sp_after_angle\s*=\s*add|sp_after_angle\s*=\s*remove|sp_after_angle\s*=\s*force|sp_after_angle\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Angle|Add Sp After Angle|Remove Sp After Angle|Force Sp After Angle"
+ValueDefault=ignore
+
+[Sp Angle Paren]
+Category=1
+Description="<html>Add or remove space between '&gt;' and '(' as found in 'new List&lt;byte&gt;(foo);'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_angle_paren\s*=\s*ignore|sp_angle_paren\s*=\s*add|sp_angle_paren\s*=\s*remove|sp_angle_paren\s*=\s*force|sp_angle_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Angle Paren|Add Sp Angle Paren|Remove Sp Angle Paren|Force Sp Angle Paren"
+ValueDefault=ignore
+
+[Sp Angle Paren Empty]
+Category=1
+Description="<html>Add or remove space between '&gt;' and '()' as found in 'new List&lt;byte&gt;();'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_angle_paren_empty\s*=\s*ignore|sp_angle_paren_empty\s*=\s*add|sp_angle_paren_empty\s*=\s*remove|sp_angle_paren_empty\s*=\s*force|sp_angle_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Angle Paren Empty|Add Sp Angle Paren Empty|Remove Sp Angle Paren Empty|Force Sp Angle Paren Empty"
+ValueDefault=ignore
+
+[Sp Angle Word]
+Category=1
+Description="<html>Add or remove space between '&gt;' and a word as in 'List&lt;byte&gt; m;' or<br/>'template &lt;typename T&gt; static ...'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_angle_word\s*=\s*ignore|sp_angle_word\s*=\s*add|sp_angle_word\s*=\s*remove|sp_angle_word\s*=\s*force|sp_angle_word\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Angle Word|Add Sp Angle Word|Remove Sp Angle Word|Force Sp Angle Word"
+ValueDefault=ignore
+
+[Sp Angle Shift]
+Category=1
+Description="<html>Add or remove space between '&gt;' and '&gt;' in '&gt;&gt;' (template stuff).<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_angle_shift\s*=\s*ignore|sp_angle_shift\s*=\s*add|sp_angle_shift\s*=\s*remove|sp_angle_shift\s*=\s*force|sp_angle_shift\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Angle Shift|Add Sp Angle Shift|Remove Sp Angle Shift|Force Sp Angle Shift"
+ValueDefault=add
+
+[Sp Permit Cpp11 Shift]
+Category=1
+Description="<html>(C++11) Permit removal of the space between '&gt;&gt;' in 'foo&lt;bar&lt;int&gt; &gt;'. Note<br/>that sp_angle_shift cannot remove the space without this option.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=sp_permit_cpp11_shift\s*=\s*true|sp_permit_cpp11_shift\s*=\s*false
+ValueDefault=false
+
+[Sp Before Sparen]
+Category=1
+Description="<html>Add or remove space before '(' of control statements ('if', 'for', 'switch',<br/>'while', etc.).</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_sparen\s*=\s*ignore|sp_before_sparen\s*=\s*add|sp_before_sparen\s*=\s*remove|sp_before_sparen\s*=\s*force|sp_before_sparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Sparen|Add Sp Before Sparen|Remove Sp Before Sparen|Force Sp Before Sparen"
+ValueDefault=ignore
+
+[Sp Inside Sparen]
+Category=1
+Description="<html>Add or remove space inside '(' and ')' of control statements other than<br/>'for'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_sparen\s*=\s*ignore|sp_inside_sparen\s*=\s*add|sp_inside_sparen\s*=\s*remove|sp_inside_sparen\s*=\s*force|sp_inside_sparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Sparen|Add Sp Inside Sparen|Remove Sp Inside Sparen|Force Sp Inside Sparen"
+ValueDefault=ignore
+
+[Sp Inside Sparen Open]
+Category=1
+Description="<html>Add or remove space after '(' of control statements other than 'for'.<br/><br/>Overrides sp_inside_sparen.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_sparen_open\s*=\s*ignore|sp_inside_sparen_open\s*=\s*add|sp_inside_sparen_open\s*=\s*remove|sp_inside_sparen_open\s*=\s*force|sp_inside_sparen_open\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Sparen Open|Add Sp Inside Sparen Open|Remove Sp Inside Sparen Open|Force Sp Inside Sparen Open"
+ValueDefault=ignore
+
+[Sp Inside Sparen Close]
+Category=1
+Description="<html>Add or remove space before ')' of control statements other than 'for'.<br/><br/>Overrides sp_inside_sparen.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_sparen_close\s*=\s*ignore|sp_inside_sparen_close\s*=\s*add|sp_inside_sparen_close\s*=\s*remove|sp_inside_sparen_close\s*=\s*force|sp_inside_sparen_close\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Sparen Close|Add Sp Inside Sparen Close|Remove Sp Inside Sparen Close|Force Sp Inside Sparen Close"
+ValueDefault=ignore
+
+[Sp Inside For]
+Category=1
+Description="<html>Add or remove space inside '(' and ')' of 'for' statements.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_for\s*=\s*ignore|sp_inside_for\s*=\s*add|sp_inside_for\s*=\s*remove|sp_inside_for\s*=\s*force|sp_inside_for\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside For|Add Sp Inside For|Remove Sp Inside For|Force Sp Inside For"
+ValueDefault=ignore
+
+[Sp Inside For Open]
+Category=1
+Description="<html>Add or remove space after '(' of 'for' statements.<br/><br/>Overrides sp_inside_for.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_for_open\s*=\s*ignore|sp_inside_for_open\s*=\s*add|sp_inside_for_open\s*=\s*remove|sp_inside_for_open\s*=\s*force|sp_inside_for_open\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside For Open|Add Sp Inside For Open|Remove Sp Inside For Open|Force Sp Inside For Open"
+ValueDefault=ignore
+
+[Sp Inside For Close]
+Category=1
+Description="<html>Add or remove space before ')' of 'for' statements.<br/><br/>Overrides sp_inside_for.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_for_close\s*=\s*ignore|sp_inside_for_close\s*=\s*add|sp_inside_for_close\s*=\s*remove|sp_inside_for_close\s*=\s*force|sp_inside_for_close\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside For Close|Add Sp Inside For Close|Remove Sp Inside For Close|Force Sp Inside For Close"
+ValueDefault=ignore
+
+[Sp Sparen Paren]
+Category=1
+Description="<html>Add or remove space between '((' or '))' of control statements.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_sparen_paren\s*=\s*ignore|sp_sparen_paren\s*=\s*add|sp_sparen_paren\s*=\s*remove|sp_sparen_paren\s*=\s*force|sp_sparen_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Sparen Paren|Add Sp Sparen Paren|Remove Sp Sparen Paren|Force Sp Sparen Paren"
+ValueDefault=ignore
+
+[Sp After Sparen]
+Category=1
+Description="<html>Add or remove space after ')' of control statements.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_sparen\s*=\s*ignore|sp_after_sparen\s*=\s*add|sp_after_sparen\s*=\s*remove|sp_after_sparen\s*=\s*force|sp_after_sparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Sparen|Add Sp After Sparen|Remove Sp After Sparen|Force Sp After Sparen"
+ValueDefault=ignore
+
+[Sp Sparen Brace]
+Category=1
+Description="<html>Add or remove space between ')' and '{' of control statements.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_sparen_brace\s*=\s*ignore|sp_sparen_brace\s*=\s*add|sp_sparen_brace\s*=\s*remove|sp_sparen_brace\s*=\s*force|sp_sparen_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Sparen Brace|Add Sp Sparen Brace|Remove Sp Sparen Brace|Force Sp Sparen Brace"
+ValueDefault=ignore
+
+[Sp Do Brace Open]
+Category=1
+Description="<html>Add or remove space between 'do' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_do_brace_open\s*=\s*ignore|sp_do_brace_open\s*=\s*add|sp_do_brace_open\s*=\s*remove|sp_do_brace_open\s*=\s*force|sp_do_brace_open\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Do Brace Open|Add Sp Do Brace Open|Remove Sp Do Brace Open|Force Sp Do Brace Open"
+ValueDefault=ignore
+
+[Sp Brace Close While]
+Category=1
+Description="<html>Add or remove space between '}' and 'while'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_brace_close_while\s*=\s*ignore|sp_brace_close_while\s*=\s*add|sp_brace_close_while\s*=\s*remove|sp_brace_close_while\s*=\s*force|sp_brace_close_while\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Brace Close While|Add Sp Brace Close While|Remove Sp Brace Close While|Force Sp Brace Close While"
+ValueDefault=ignore
+
+[Sp While Paren Open]
+Category=1
+Description="<html>Add or remove space between 'while' and '('. Overrides sp_before_sparen.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_while_paren_open\s*=\s*ignore|sp_while_paren_open\s*=\s*add|sp_while_paren_open\s*=\s*remove|sp_while_paren_open\s*=\s*force|sp_while_paren_open\s*=\s*not_defined
+ChoicesReadable="Ignore Sp While Paren Open|Add Sp While Paren Open|Remove Sp While Paren Open|Force Sp While Paren Open"
+ValueDefault=ignore
+
+[Sp Invariant Paren]
+Category=1
+Description="<html>(D) Add or remove space between 'invariant' and '('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_invariant_paren\s*=\s*ignore|sp_invariant_paren\s*=\s*add|sp_invariant_paren\s*=\s*remove|sp_invariant_paren\s*=\s*force|sp_invariant_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Invariant Paren|Add Sp Invariant Paren|Remove Sp Invariant Paren|Force Sp Invariant Paren"
+ValueDefault=ignore
+
+[Sp After Invariant Paren]
+Category=1
+Description="<html>(D) Add or remove space after the ')' in 'invariant (C) c'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_invariant_paren\s*=\s*ignore|sp_after_invariant_paren\s*=\s*add|sp_after_invariant_paren\s*=\s*remove|sp_after_invariant_paren\s*=\s*force|sp_after_invariant_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Invariant Paren|Add Sp After Invariant Paren|Remove Sp After Invariant Paren|Force Sp After Invariant Paren"
+ValueDefault=ignore
+
+[Sp Special Semi]
+Category=1
+Description="<html>Add or remove space before empty statement ';' on 'if', 'for' and 'while'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_special_semi\s*=\s*ignore|sp_special_semi\s*=\s*add|sp_special_semi\s*=\s*remove|sp_special_semi\s*=\s*force|sp_special_semi\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Special Semi|Add Sp Special Semi|Remove Sp Special Semi|Force Sp Special Semi"
+ValueDefault=ignore
+
+[Sp Before Semi]
+Category=1
+Description="<html>Add or remove space before ';'.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_semi\s*=\s*ignore|sp_before_semi\s*=\s*add|sp_before_semi\s*=\s*remove|sp_before_semi\s*=\s*force|sp_before_semi\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Semi|Add Sp Before Semi|Remove Sp Before Semi|Force Sp Before Semi"
+ValueDefault=remove
+
+[Sp Before Semi For]
+Category=1
+Description="<html>Add or remove space before ';' in non-empty 'for' statements.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_semi_for\s*=\s*ignore|sp_before_semi_for\s*=\s*add|sp_before_semi_for\s*=\s*remove|sp_before_semi_for\s*=\s*force|sp_before_semi_for\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Semi For|Add Sp Before Semi For|Remove Sp Before Semi For|Force Sp Before Semi For"
+ValueDefault=ignore
+
+[Sp Before Semi For Empty]
+Category=1
+Description="<html>Add or remove space before a semicolon of an empty left part of a for<br/>statement, as in 'for ( &lt;here&gt; ; ; )'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_semi_for_empty\s*=\s*ignore|sp_before_semi_for_empty\s*=\s*add|sp_before_semi_for_empty\s*=\s*remove|sp_before_semi_for_empty\s*=\s*force|sp_before_semi_for_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Semi For Empty|Add Sp Before Semi For Empty|Remove Sp Before Semi For Empty|Force Sp Before Semi For Empty"
+ValueDefault=ignore
+
+[Sp Between Semi For Empty]
+Category=1
+Description="<html>Add or remove space between the semicolons of an empty middle part of a for<br/>statement, as in 'for ( ; &lt;here&gt; ; )'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_between_semi_for_empty\s*=\s*ignore|sp_between_semi_for_empty\s*=\s*add|sp_between_semi_for_empty\s*=\s*remove|sp_between_semi_for_empty\s*=\s*force|sp_between_semi_for_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Between Semi For Empty|Add Sp Between Semi For Empty|Remove Sp Between Semi For Empty|Force Sp Between Semi For Empty"
+ValueDefault=ignore
+
+[Sp After Semi]
+Category=1
+Description="<html>Add or remove space after ';', except when followed by a comment.<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_semi\s*=\s*ignore|sp_after_semi\s*=\s*add|sp_after_semi\s*=\s*remove|sp_after_semi\s*=\s*force|sp_after_semi\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Semi|Add Sp After Semi|Remove Sp After Semi|Force Sp After Semi"
+ValueDefault=add
+
+[Sp After Semi For]
+Category=1
+Description="<html>Add or remove space after ';' in non-empty 'for' statements.<br/><br/>Default: force</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_semi_for\s*=\s*ignore|sp_after_semi_for\s*=\s*add|sp_after_semi_for\s*=\s*remove|sp_after_semi_for\s*=\s*force|sp_after_semi_for\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Semi For|Add Sp After Semi For|Remove Sp After Semi For|Force Sp After Semi For"
+ValueDefault=force
+
+[Sp After Semi For Empty]
+Category=1
+Description="<html>Add or remove space after the final semicolon of an empty part of a for<br/>statement, as in 'for ( ; ; &lt;here&gt; )'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_semi_for_empty\s*=\s*ignore|sp_after_semi_for_empty\s*=\s*add|sp_after_semi_for_empty\s*=\s*remove|sp_after_semi_for_empty\s*=\s*force|sp_after_semi_for_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Semi For Empty|Add Sp After Semi For Empty|Remove Sp After Semi For Empty|Force Sp After Semi For Empty"
+ValueDefault=ignore
+
+[Sp Before Square]
+Category=1
+Description="<html>Add or remove space before '[' (except '[]').</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_square\s*=\s*ignore|sp_before_square\s*=\s*add|sp_before_square\s*=\s*remove|sp_before_square\s*=\s*force|sp_before_square\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Square|Add Sp Before Square|Remove Sp Before Square|Force Sp Before Square"
+ValueDefault=ignore
+
+[Sp Before Vardef Square]
+Category=1
+Description="<html>Add or remove space before '[' for a variable definition.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_vardef_square\s*=\s*ignore|sp_before_vardef_square\s*=\s*add|sp_before_vardef_square\s*=\s*remove|sp_before_vardef_square\s*=\s*force|sp_before_vardef_square\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Vardef Square|Add Sp Before Vardef Square|Remove Sp Before Vardef Square|Force Sp Before Vardef Square"
+ValueDefault=remove
+
+[Sp Before Square Asm Block]
+Category=1
+Description="<html>Add or remove space before '[' for asm block.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_square_asm_block\s*=\s*ignore|sp_before_square_asm_block\s*=\s*add|sp_before_square_asm_block\s*=\s*remove|sp_before_square_asm_block\s*=\s*force|sp_before_square_asm_block\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Square Asm Block|Add Sp Before Square Asm Block|Remove Sp Before Square Asm Block|Force Sp Before Square Asm Block"
+ValueDefault=ignore
+
+[Sp Before Squares]
+Category=1
+Description="<html>Add or remove space before '[]'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_squares\s*=\s*ignore|sp_before_squares\s*=\s*add|sp_before_squares\s*=\s*remove|sp_before_squares\s*=\s*force|sp_before_squares\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Squares|Add Sp Before Squares|Remove Sp Before Squares|Force Sp Before Squares"
+ValueDefault=ignore
+
+[Sp Cpp Before Struct Binding]
+Category=1
+Description="<html>Add or remove space before C++17 structured bindings.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_before_struct_binding\s*=\s*ignore|sp_cpp_before_struct_binding\s*=\s*add|sp_cpp_before_struct_binding\s*=\s*remove|sp_cpp_before_struct_binding\s*=\s*force|sp_cpp_before_struct_binding\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Before Struct Binding|Add Sp Cpp Before Struct Binding|Remove Sp Cpp Before Struct Binding|Force Sp Cpp Before Struct Binding"
+ValueDefault=ignore
+
+[Sp Inside Square]
+Category=1
+Description="<html>Add or remove space inside a non-empty '[' and ']'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_square\s*=\s*ignore|sp_inside_square\s*=\s*add|sp_inside_square\s*=\s*remove|sp_inside_square\s*=\s*force|sp_inside_square\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Square|Add Sp Inside Square|Remove Sp Inside Square|Force Sp Inside Square"
+ValueDefault=ignore
+
+[Sp Inside Square Empty]
+Category=1
+Description="<html>Add or remove space inside '[]'.<br/>if empty.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_square_empty\s*=\s*ignore|sp_inside_square_empty\s*=\s*add|sp_inside_square_empty\s*=\s*remove|sp_inside_square_empty\s*=\s*force|sp_inside_square_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Square Empty|Add Sp Inside Square Empty|Remove Sp Inside Square Empty|Force Sp Inside Square Empty"
+ValueDefault=ignore
+
+[Sp Inside Square Oc Array]
+Category=1
+Description="<html>(OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and<br/>']'. If set to ignore, sp_inside_square is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_square_oc_array\s*=\s*ignore|sp_inside_square_oc_array\s*=\s*add|sp_inside_square_oc_array\s*=\s*remove|sp_inside_square_oc_array\s*=\s*force|sp_inside_square_oc_array\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Square Oc Array|Add Sp Inside Square Oc Array|Remove Sp Inside Square Oc Array|Force Sp Inside Square Oc Array"
+ValueDefault=ignore
+
+[Sp After Comma]
+Category=1
+Description="<html>Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_comma\s*=\s*ignore|sp_after_comma\s*=\s*add|sp_after_comma\s*=\s*remove|sp_after_comma\s*=\s*force|sp_after_comma\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Comma|Add Sp After Comma|Remove Sp After Comma|Force Sp After Comma"
+ValueDefault=ignore
+
+[Sp Before Comma]
+Category=1
+Description="<html>Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_comma\s*=\s*ignore|sp_before_comma\s*=\s*add|sp_before_comma\s*=\s*remove|sp_before_comma\s*=\s*force|sp_before_comma\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Comma|Add Sp Before Comma|Remove Sp Before Comma|Force Sp Before Comma"
+ValueDefault=remove
+
+[Sp After Mdatype Commas]
+Category=1
+Description="<html>(C#, Vala) Add or remove space between ',' and ']' in multidimensional array type<br/>like 'int[,,]'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_mdatype_commas\s*=\s*ignore|sp_after_mdatype_commas\s*=\s*add|sp_after_mdatype_commas\s*=\s*remove|sp_after_mdatype_commas\s*=\s*force|sp_after_mdatype_commas\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Mdatype Commas|Add Sp After Mdatype Commas|Remove Sp After Mdatype Commas|Force Sp After Mdatype Commas"
+ValueDefault=ignore
+
+[Sp Before Mdatype Commas]
+Category=1
+Description="<html>(C#, Vala) Add or remove space between '[' and ',' in multidimensional array type<br/>like 'int[,,]'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_mdatype_commas\s*=\s*ignore|sp_before_mdatype_commas\s*=\s*add|sp_before_mdatype_commas\s*=\s*remove|sp_before_mdatype_commas\s*=\s*force|sp_before_mdatype_commas\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Mdatype Commas|Add Sp Before Mdatype Commas|Remove Sp Before Mdatype Commas|Force Sp Before Mdatype Commas"
+ValueDefault=ignore
+
+[Sp Between Mdatype Commas]
+Category=1
+Description="<html>(C#, Vala) Add or remove space between ',' in multidimensional array type<br/>like 'int[,,]'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_between_mdatype_commas\s*=\s*ignore|sp_between_mdatype_commas\s*=\s*add|sp_between_mdatype_commas\s*=\s*remove|sp_between_mdatype_commas\s*=\s*force|sp_between_mdatype_commas\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Between Mdatype Commas|Add Sp Between Mdatype Commas|Remove Sp Between Mdatype Commas|Force Sp Between Mdatype Commas"
+ValueDefault=ignore
+
+[Sp Paren Comma]
+Category=1
+Description="<html>Add or remove space between an open parenthesis and comma,<br/>i.e. '(,' vs. '( ,'.<br/><br/>Default: force</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_paren_comma\s*=\s*ignore|sp_paren_comma\s*=\s*add|sp_paren_comma\s*=\s*remove|sp_paren_comma\s*=\s*force|sp_paren_comma\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Paren Comma|Add Sp Paren Comma|Remove Sp Paren Comma|Force Sp Paren Comma"
+ValueDefault=force
+
+[Sp Type Colon]
+Category=1
+Description="<html>Add or remove space between a type and ':'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_type_colon\s*=\s*ignore|sp_type_colon\s*=\s*add|sp_type_colon\s*=\s*remove|sp_type_colon\s*=\s*force|sp_type_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Type Colon|Add Sp Type Colon|Remove Sp Type Colon|Force Sp Type Colon"
+ValueDefault=ignore
+
+[Sp After Ellipsis]
+Category=1
+Description="<html>Add or remove space after the variadic '...' when preceded by a<br/>non-punctuator.<br/>The value REMOVE will be overridden with FORCE</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_ellipsis\s*=\s*ignore|sp_after_ellipsis\s*=\s*add|sp_after_ellipsis\s*=\s*remove|sp_after_ellipsis\s*=\s*force|sp_after_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Ellipsis|Add Sp After Ellipsis|Remove Sp After Ellipsis|Force Sp After Ellipsis"
+ValueDefault=ignore
+
+[Sp Before Ellipsis]
+Category=1
+Description="<html>Add or remove space before the variadic '...' when preceded by a<br/>non-punctuator.<br/>The value REMOVE will be overridden with FORCE</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_ellipsis\s*=\s*ignore|sp_before_ellipsis\s*=\s*add|sp_before_ellipsis\s*=\s*remove|sp_before_ellipsis\s*=\s*force|sp_before_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Ellipsis|Add Sp Before Ellipsis|Remove Sp Before Ellipsis|Force Sp Before Ellipsis"
+ValueDefault=ignore
+
+[Sp Type Ellipsis]
+Category=1
+Description="<html>Add or remove space between a type and '...'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_type_ellipsis\s*=\s*ignore|sp_type_ellipsis\s*=\s*add|sp_type_ellipsis\s*=\s*remove|sp_type_ellipsis\s*=\s*force|sp_type_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Type Ellipsis|Add Sp Type Ellipsis|Remove Sp Type Ellipsis|Force Sp Type Ellipsis"
+ValueDefault=ignore
+
+[Sp Ptr Type Ellipsis]
+Category=1
+Description="<html>Add or remove space between a '*' and '...'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_ptr_type_ellipsis\s*=\s*ignore|sp_ptr_type_ellipsis\s*=\s*add|sp_ptr_type_ellipsis\s*=\s*remove|sp_ptr_type_ellipsis\s*=\s*force|sp_ptr_type_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Ptr Type Ellipsis|Add Sp Ptr Type Ellipsis|Remove Sp Ptr Type Ellipsis|Force Sp Ptr Type Ellipsis"
+ValueDefault=ignore
+
+[Sp Paren Ellipsis]
+Category=1
+Description="<html>Add or remove space between ')' and '...'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_paren_ellipsis\s*=\s*ignore|sp_paren_ellipsis\s*=\s*add|sp_paren_ellipsis\s*=\s*remove|sp_paren_ellipsis\s*=\s*force|sp_paren_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Paren Ellipsis|Add Sp Paren Ellipsis|Remove Sp Paren Ellipsis|Force Sp Paren Ellipsis"
+ValueDefault=ignore
+
+[Sp Byref Ellipsis]
+Category=1
+Description="<html>Add or remove space between '&amp;&amp;' and '...'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_byref_ellipsis\s*=\s*ignore|sp_byref_ellipsis\s*=\s*add|sp_byref_ellipsis\s*=\s*remove|sp_byref_ellipsis\s*=\s*force|sp_byref_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Byref Ellipsis|Add Sp Byref Ellipsis|Remove Sp Byref Ellipsis|Force Sp Byref Ellipsis"
+ValueDefault=ignore
+
+[Sp Paren Qualifier]
+Category=1
+Description="<html>Add or remove space between ')' and a qualifier such as 'const'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_paren_qualifier\s*=\s*ignore|sp_paren_qualifier\s*=\s*add|sp_paren_qualifier\s*=\s*remove|sp_paren_qualifier\s*=\s*force|sp_paren_qualifier\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Paren Qualifier|Add Sp Paren Qualifier|Remove Sp Paren Qualifier|Force Sp Paren Qualifier"
+ValueDefault=ignore
+
+[Sp Paren Noexcept]
+Category=1
+Description="<html>Add or remove space between ')' and 'noexcept'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_paren_noexcept\s*=\s*ignore|sp_paren_noexcept\s*=\s*add|sp_paren_noexcept\s*=\s*remove|sp_paren_noexcept\s*=\s*force|sp_paren_noexcept\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Paren Noexcept|Add Sp Paren Noexcept|Remove Sp Paren Noexcept|Force Sp Paren Noexcept"
+ValueDefault=ignore
+
+[Sp After Class Colon]
+Category=1
+Description="<html>Add or remove space after class ':'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_class_colon\s*=\s*ignore|sp_after_class_colon\s*=\s*add|sp_after_class_colon\s*=\s*remove|sp_after_class_colon\s*=\s*force|sp_after_class_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Class Colon|Add Sp After Class Colon|Remove Sp After Class Colon|Force Sp After Class Colon"
+ValueDefault=ignore
+
+[Sp Before Class Colon]
+Category=1
+Description="<html>Add or remove space before class ':'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_class_colon\s*=\s*ignore|sp_before_class_colon\s*=\s*add|sp_before_class_colon\s*=\s*remove|sp_before_class_colon\s*=\s*force|sp_before_class_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Class Colon|Add Sp Before Class Colon|Remove Sp Before Class Colon|Force Sp Before Class Colon"
+ValueDefault=ignore
+
+[Sp After Constr Colon]
+Category=1
+Description="<html>Add or remove space after class constructor ':'.<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_constr_colon\s*=\s*ignore|sp_after_constr_colon\s*=\s*add|sp_after_constr_colon\s*=\s*remove|sp_after_constr_colon\s*=\s*force|sp_after_constr_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Constr Colon|Add Sp After Constr Colon|Remove Sp After Constr Colon|Force Sp After Constr Colon"
+ValueDefault=add
+
+[Sp Before Constr Colon]
+Category=1
+Description="<html>Add or remove space before class constructor ':'.<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_constr_colon\s*=\s*ignore|sp_before_constr_colon\s*=\s*add|sp_before_constr_colon\s*=\s*remove|sp_before_constr_colon\s*=\s*force|sp_before_constr_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Constr Colon|Add Sp Before Constr Colon|Remove Sp Before Constr Colon|Force Sp Before Constr Colon"
+ValueDefault=add
+
+[Sp Before Case Colon]
+Category=1
+Description="<html>Add or remove space before case ':'.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_case_colon\s*=\s*ignore|sp_before_case_colon\s*=\s*add|sp_before_case_colon\s*=\s*remove|sp_before_case_colon\s*=\s*force|sp_before_case_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Case Colon|Add Sp Before Case Colon|Remove Sp Before Case Colon|Force Sp Before Case Colon"
+ValueDefault=remove
+
+[Sp After Operator]
+Category=1
+Description="<html>Add or remove space between 'operator' and operator sign.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_operator\s*=\s*ignore|sp_after_operator\s*=\s*add|sp_after_operator\s*=\s*remove|sp_after_operator\s*=\s*force|sp_after_operator\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Operator|Add Sp After Operator|Remove Sp After Operator|Force Sp After Operator"
+ValueDefault=ignore
+
+[Sp After Operator Sym]
+Category=1
+Description="<html>Add or remove space between the operator symbol and the open parenthesis, as<br/>in 'operator ++('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_operator_sym\s*=\s*ignore|sp_after_operator_sym\s*=\s*add|sp_after_operator_sym\s*=\s*remove|sp_after_operator_sym\s*=\s*force|sp_after_operator_sym\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Operator Sym|Add Sp After Operator Sym|Remove Sp After Operator Sym|Force Sp After Operator Sym"
+ValueDefault=ignore
+
+[Sp After Operator Sym Empty]
+Category=1
+Description="<html>Overrides sp_after_operator_sym when the operator has no arguments, as in<br/>'operator *()'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_operator_sym_empty\s*=\s*ignore|sp_after_operator_sym_empty\s*=\s*add|sp_after_operator_sym_empty\s*=\s*remove|sp_after_operator_sym_empty\s*=\s*force|sp_after_operator_sym_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Operator Sym Empty|Add Sp After Operator Sym Empty|Remove Sp After Operator Sym Empty|Force Sp After Operator Sym Empty"
+ValueDefault=ignore
+
+[Sp After Cast]
+Category=1
+Description="<html>Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or<br/>'(int)a' vs. '(int) a'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_cast\s*=\s*ignore|sp_after_cast\s*=\s*add|sp_after_cast\s*=\s*remove|sp_after_cast\s*=\s*force|sp_after_cast\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Cast|Add Sp After Cast|Remove Sp After Cast|Force Sp After Cast"
+ValueDefault=ignore
+
+[Sp Inside Paren Cast]
+Category=1
+Description="<html>Add or remove spaces inside cast parentheses.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_paren_cast\s*=\s*ignore|sp_inside_paren_cast\s*=\s*add|sp_inside_paren_cast\s*=\s*remove|sp_inside_paren_cast\s*=\s*force|sp_inside_paren_cast\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Paren Cast|Add Sp Inside Paren Cast|Remove Sp Inside Paren Cast|Force Sp Inside Paren Cast"
+ValueDefault=ignore
+
+[Sp Cpp Cast Paren]
+Category=1
+Description="<html>Add or remove space between the type and open parenthesis in a C++ cast,<br/>i.e. 'int(exp)' vs. 'int (exp)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cpp_cast_paren\s*=\s*ignore|sp_cpp_cast_paren\s*=\s*add|sp_cpp_cast_paren\s*=\s*remove|sp_cpp_cast_paren\s*=\s*force|sp_cpp_cast_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cpp Cast Paren|Add Sp Cpp Cast Paren|Remove Sp Cpp Cast Paren|Force Sp Cpp Cast Paren"
+ValueDefault=ignore
+
+[Sp Sizeof Paren]
+Category=1
+Description="<html>Add or remove space between 'sizeof' and '('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_sizeof_paren\s*=\s*ignore|sp_sizeof_paren\s*=\s*add|sp_sizeof_paren\s*=\s*remove|sp_sizeof_paren\s*=\s*force|sp_sizeof_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Sizeof Paren|Add Sp Sizeof Paren|Remove Sp Sizeof Paren|Force Sp Sizeof Paren"
+ValueDefault=ignore
+
+[Sp Sizeof Ellipsis]
+Category=1
+Description="<html>Add or remove space between 'sizeof' and '...'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_sizeof_ellipsis\s*=\s*ignore|sp_sizeof_ellipsis\s*=\s*add|sp_sizeof_ellipsis\s*=\s*remove|sp_sizeof_ellipsis\s*=\s*force|sp_sizeof_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Sizeof Ellipsis|Add Sp Sizeof Ellipsis|Remove Sp Sizeof Ellipsis|Force Sp Sizeof Ellipsis"
+ValueDefault=ignore
+
+[Sp Sizeof Ellipsis Paren]
+Category=1
+Description="<html>Add or remove space between 'sizeof...' and '('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_sizeof_ellipsis_paren\s*=\s*ignore|sp_sizeof_ellipsis_paren\s*=\s*add|sp_sizeof_ellipsis_paren\s*=\s*remove|sp_sizeof_ellipsis_paren\s*=\s*force|sp_sizeof_ellipsis_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Sizeof Ellipsis Paren|Add Sp Sizeof Ellipsis Paren|Remove Sp Sizeof Ellipsis Paren|Force Sp Sizeof Ellipsis Paren"
+ValueDefault=ignore
+
+[Sp Ellipsis Parameter Pack]
+Category=1
+Description="<html>Add or remove space between '...' and a parameter pack.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_ellipsis_parameter_pack\s*=\s*ignore|sp_ellipsis_parameter_pack\s*=\s*add|sp_ellipsis_parameter_pack\s*=\s*remove|sp_ellipsis_parameter_pack\s*=\s*force|sp_ellipsis_parameter_pack\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Ellipsis Parameter Pack|Add Sp Ellipsis Parameter Pack|Remove Sp Ellipsis Parameter Pack|Force Sp Ellipsis Parameter Pack"
+ValueDefault=ignore
+
+[Sp Parameter Pack Ellipsis]
+Category=1
+Description="<html>Add or remove space between a parameter pack and '...'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_parameter_pack_ellipsis\s*=\s*ignore|sp_parameter_pack_ellipsis\s*=\s*add|sp_parameter_pack_ellipsis\s*=\s*remove|sp_parameter_pack_ellipsis\s*=\s*force|sp_parameter_pack_ellipsis\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Parameter Pack Ellipsis|Add Sp Parameter Pack Ellipsis|Remove Sp Parameter Pack Ellipsis|Force Sp Parameter Pack Ellipsis"
+ValueDefault=ignore
+
+[Sp Decltype Paren]
+Category=1
+Description="<html>Add or remove space between 'decltype' and '('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_decltype_paren\s*=\s*ignore|sp_decltype_paren\s*=\s*add|sp_decltype_paren\s*=\s*remove|sp_decltype_paren\s*=\s*force|sp_decltype_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Decltype Paren|Add Sp Decltype Paren|Remove Sp Decltype Paren|Force Sp Decltype Paren"
+ValueDefault=ignore
+
+[Sp After Tag]
+Category=1
+Description="<html>(Pawn) Add or remove space after the tag keyword.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_tag\s*=\s*ignore|sp_after_tag\s*=\s*add|sp_after_tag\s*=\s*remove|sp_after_tag\s*=\s*force|sp_after_tag\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Tag|Add Sp After Tag|Remove Sp After Tag|Force Sp After Tag"
+ValueDefault=ignore
+
+[Sp Inside Braces Enum]
+Category=1
+Description="<html>Add or remove space inside enum '{' and '}'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_braces_enum\s*=\s*ignore|sp_inside_braces_enum\s*=\s*add|sp_inside_braces_enum\s*=\s*remove|sp_inside_braces_enum\s*=\s*force|sp_inside_braces_enum\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Braces Enum|Add Sp Inside Braces Enum|Remove Sp Inside Braces Enum|Force Sp Inside Braces Enum"
+ValueDefault=ignore
+
+[Sp Inside Braces Struct]
+Category=1
+Description="<html>Add or remove space inside struct/union '{' and '}'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_braces_struct\s*=\s*ignore|sp_inside_braces_struct\s*=\s*add|sp_inside_braces_struct\s*=\s*remove|sp_inside_braces_struct\s*=\s*force|sp_inside_braces_struct\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Braces Struct|Add Sp Inside Braces Struct|Remove Sp Inside Braces Struct|Force Sp Inside Braces Struct"
+ValueDefault=ignore
+
+[Sp Inside Braces Oc Dict]
+Category=1
+Description="<html>(OC) Add or remove space inside Objective-C boxed dictionary '{' and '}'</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_braces_oc_dict\s*=\s*ignore|sp_inside_braces_oc_dict\s*=\s*add|sp_inside_braces_oc_dict\s*=\s*remove|sp_inside_braces_oc_dict\s*=\s*force|sp_inside_braces_oc_dict\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Braces Oc Dict|Add Sp Inside Braces Oc Dict|Remove Sp Inside Braces Oc Dict|Force Sp Inside Braces Oc Dict"
+ValueDefault=ignore
+
+[Sp After Type Brace Init Lst Open]
+Category=1
+Description="<html>Add or remove space after open brace in an unnamed temporary<br/>direct-list-initialization<br/>if statement is a brace_init_lst<br/>works only if sp_brace_brace is set to ignore.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_type_brace_init_lst_open\s*=\s*ignore|sp_after_type_brace_init_lst_open\s*=\s*add|sp_after_type_brace_init_lst_open\s*=\s*remove|sp_after_type_brace_init_lst_open\s*=\s*force|sp_after_type_brace_init_lst_open\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Type Brace Init Lst Open|Add Sp After Type Brace Init Lst Open|Remove Sp After Type Brace Init Lst Open|Force Sp After Type Brace Init Lst Open"
+ValueDefault=ignore
+
+[Sp Before Type Brace Init Lst Close]
+Category=1
+Description="<html>Add or remove space before close brace in an unnamed temporary<br/>direct-list-initialization<br/>if statement is a brace_init_lst<br/>works only if sp_brace_brace is set to ignore.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_type_brace_init_lst_close\s*=\s*ignore|sp_before_type_brace_init_lst_close\s*=\s*add|sp_before_type_brace_init_lst_close\s*=\s*remove|sp_before_type_brace_init_lst_close\s*=\s*force|sp_before_type_brace_init_lst_close\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Type Brace Init Lst Close|Add Sp Before Type Brace Init Lst Close|Remove Sp Before Type Brace Init Lst Close|Force Sp Before Type Brace Init Lst Close"
+ValueDefault=ignore
+
+[Sp Inside Type Brace Init Lst]
+Category=1
+Description="<html>Add or remove space inside an unnamed temporary direct-list-initialization<br/>if statement is a brace_init_lst<br/>works only if sp_brace_brace is set to ignore<br/>works only if sp_before_type_brace_init_lst_close is set to ignore.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_type_brace_init_lst\s*=\s*ignore|sp_inside_type_brace_init_lst\s*=\s*add|sp_inside_type_brace_init_lst\s*=\s*remove|sp_inside_type_brace_init_lst\s*=\s*force|sp_inside_type_brace_init_lst\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Type Brace Init Lst|Add Sp Inside Type Brace Init Lst|Remove Sp Inside Type Brace Init Lst|Force Sp Inside Type Brace Init Lst"
+ValueDefault=ignore
+
+[Sp Inside Braces]
+Category=1
+Description="<html>Add or remove space inside '{' and '}'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_braces\s*=\s*ignore|sp_inside_braces\s*=\s*add|sp_inside_braces\s*=\s*remove|sp_inside_braces\s*=\s*force|sp_inside_braces\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Braces|Add Sp Inside Braces|Remove Sp Inside Braces|Force Sp Inside Braces"
+ValueDefault=ignore
+
+[Sp Inside Braces Empty]
+Category=1
+Description="<html>Add or remove space inside '{}'.<br/>if empty.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_braces_empty\s*=\s*ignore|sp_inside_braces_empty\s*=\s*add|sp_inside_braces_empty\s*=\s*remove|sp_inside_braces_empty\s*=\s*force|sp_inside_braces_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Braces Empty|Add Sp Inside Braces Empty|Remove Sp Inside Braces Empty|Force Sp Inside Braces Empty"
+ValueDefault=ignore
+
+[Sp Trailing Return]
+Category=1
+Description="<html>Add or remove space around trailing return operator '-&gt;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_trailing_return\s*=\s*ignore|sp_trailing_return\s*=\s*add|sp_trailing_return\s*=\s*remove|sp_trailing_return\s*=\s*force|sp_trailing_return\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Trailing Return|Add Sp Trailing Return|Remove Sp Trailing Return|Force Sp Trailing Return"
+ValueDefault=ignore
+
+[Sp Type Func]
+Category=1
+Description="<html>Add or remove space between return type and function name. A minimum of 1<br/>is forced except for pointer return types.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_type_func\s*=\s*ignore|sp_type_func\s*=\s*add|sp_type_func\s*=\s*remove|sp_type_func\s*=\s*force|sp_type_func\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Type Func|Add Sp Type Func|Remove Sp Type Func|Force Sp Type Func"
+ValueDefault=ignore
+
+[Sp Type Brace Init Lst]
+Category=1
+Description="<html>Add or remove space between type and open brace of an unnamed temporary<br/>direct-list-initialization.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_type_brace_init_lst\s*=\s*ignore|sp_type_brace_init_lst\s*=\s*add|sp_type_brace_init_lst\s*=\s*remove|sp_type_brace_init_lst\s*=\s*force|sp_type_brace_init_lst\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Type Brace Init Lst|Add Sp Type Brace Init Lst|Remove Sp Type Brace Init Lst|Force Sp Type Brace Init Lst"
+ValueDefault=ignore
+
+[Sp Func Proto Paren]
+Category=1
+Description="<html>Add or remove space between function name and '(' on function declaration.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_proto_paren\s*=\s*ignore|sp_func_proto_paren\s*=\s*add|sp_func_proto_paren\s*=\s*remove|sp_func_proto_paren\s*=\s*force|sp_func_proto_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Proto Paren|Add Sp Func Proto Paren|Remove Sp Func Proto Paren|Force Sp Func Proto Paren"
+ValueDefault=ignore
+
+[Sp Func Proto Paren Empty]
+Category=1
+Description="<html>Add or remove space between function name and '()' on function declaration<br/>if empty.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_proto_paren_empty\s*=\s*ignore|sp_func_proto_paren_empty\s*=\s*add|sp_func_proto_paren_empty\s*=\s*remove|sp_func_proto_paren_empty\s*=\s*force|sp_func_proto_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Proto Paren Empty|Add Sp Func Proto Paren Empty|Remove Sp Func Proto Paren Empty|Force Sp Func Proto Paren Empty"
+ValueDefault=ignore
+
+[Sp Func Type Paren]
+Category=1
+Description="<html>Add or remove space between function name and '(' with a typedef specifier.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_type_paren\s*=\s*ignore|sp_func_type_paren\s*=\s*add|sp_func_type_paren\s*=\s*remove|sp_func_type_paren\s*=\s*force|sp_func_type_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Type Paren|Add Sp Func Type Paren|Remove Sp Func Type Paren|Force Sp Func Type Paren"
+ValueDefault=ignore
+
+[Sp Func Def Paren]
+Category=1
+Description="<html>Add or remove space between alias name and '(' of a non-pointer function type typedef.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_def_paren\s*=\s*ignore|sp_func_def_paren\s*=\s*add|sp_func_def_paren\s*=\s*remove|sp_func_def_paren\s*=\s*force|sp_func_def_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Def Paren|Add Sp Func Def Paren|Remove Sp Func Def Paren|Force Sp Func Def Paren"
+ValueDefault=ignore
+
+[Sp Func Def Paren Empty]
+Category=1
+Description="<html>Add or remove space between function name and '()' on function definition<br/>if empty.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_def_paren_empty\s*=\s*ignore|sp_func_def_paren_empty\s*=\s*add|sp_func_def_paren_empty\s*=\s*remove|sp_func_def_paren_empty\s*=\s*force|sp_func_def_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Def Paren Empty|Add Sp Func Def Paren Empty|Remove Sp Func Def Paren Empty|Force Sp Func Def Paren Empty"
+ValueDefault=ignore
+
+[Sp Inside Fparens]
+Category=1
+Description="<html>Add or remove space inside empty function '()'.<br/>Overrides sp_after_angle unless use_sp_after_angle_always is set to true.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_fparens\s*=\s*ignore|sp_inside_fparens\s*=\s*add|sp_inside_fparens\s*=\s*remove|sp_inside_fparens\s*=\s*force|sp_inside_fparens\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Fparens|Add Sp Inside Fparens|Remove Sp Inside Fparens|Force Sp Inside Fparens"
+ValueDefault=ignore
+
+[Sp Inside Fparen]
+Category=1
+Description="<html>Add or remove space inside function '(' and ')'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_fparen\s*=\s*ignore|sp_inside_fparen\s*=\s*add|sp_inside_fparen\s*=\s*remove|sp_inside_fparen\s*=\s*force|sp_inside_fparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Fparen|Add Sp Inside Fparen|Remove Sp Inside Fparen|Force Sp Inside Fparen"
+ValueDefault=ignore
+
+[Sp Func Call User Inside Rparen]
+Category=1
+Description="<html>Add or remove space inside user functor '(' and ')'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_call_user_inside_rparen\s*=\s*ignore|sp_func_call_user_inside_rparen\s*=\s*add|sp_func_call_user_inside_rparen\s*=\s*remove|sp_func_call_user_inside_rparen\s*=\s*force|sp_func_call_user_inside_rparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Call User Inside Rparen|Add Sp Func Call User Inside Rparen|Remove Sp Func Call User Inside Rparen|Force Sp Func Call User Inside Rparen"
+ValueDefault=ignore
+
+[Sp Inside Rparens]
+Category=1
+Description="<html>Add or remove space inside empty functor '()'.<br/>Overrides sp_after_angle unless use_sp_after_angle_always is set to true.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_rparens\s*=\s*ignore|sp_inside_rparens\s*=\s*add|sp_inside_rparens\s*=\s*remove|sp_inside_rparens\s*=\s*force|sp_inside_rparens\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Rparens|Add Sp Inside Rparens|Remove Sp Inside Rparens|Force Sp Inside Rparens"
+ValueDefault=ignore
+
+[Sp Inside Rparen]
+Category=1
+Description="<html>Add or remove space inside functor '(' and ')'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_rparen\s*=\s*ignore|sp_inside_rparen\s*=\s*add|sp_inside_rparen\s*=\s*remove|sp_inside_rparen\s*=\s*force|sp_inside_rparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Rparen|Add Sp Inside Rparen|Remove Sp Inside Rparen|Force Sp Inside Rparen"
+ValueDefault=ignore
+
+[Sp Inside Tparen]
+Category=1
+Description="<html>Add or remove space inside the first parentheses in a function type, as in<br/>'void (*x)(...)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_tparen\s*=\s*ignore|sp_inside_tparen\s*=\s*add|sp_inside_tparen\s*=\s*remove|sp_inside_tparen\s*=\s*force|sp_inside_tparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Tparen|Add Sp Inside Tparen|Remove Sp Inside Tparen|Force Sp Inside Tparen"
+ValueDefault=ignore
+
+[Sp After Tparen Close]
+Category=1
+Description="<html>Add or remove space between the ')' and '(' in a function type, as in<br/>'void (*x)(...)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_tparen_close\s*=\s*ignore|sp_after_tparen_close\s*=\s*add|sp_after_tparen_close\s*=\s*remove|sp_after_tparen_close\s*=\s*force|sp_after_tparen_close\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Tparen Close|Add Sp After Tparen Close|Remove Sp After Tparen Close|Force Sp After Tparen Close"
+ValueDefault=ignore
+
+[Sp Square Fparen]
+Category=1
+Description="<html>Add or remove space between ']' and '(' when part of a function call.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_square_fparen\s*=\s*ignore|sp_square_fparen\s*=\s*add|sp_square_fparen\s*=\s*remove|sp_square_fparen\s*=\s*force|sp_square_fparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Square Fparen|Add Sp Square Fparen|Remove Sp Square Fparen|Force Sp Square Fparen"
+ValueDefault=ignore
+
+[Sp Fparen Brace]
+Category=1
+Description="<html>Add or remove space between ')' and '{' of function.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_fparen_brace\s*=\s*ignore|sp_fparen_brace\s*=\s*add|sp_fparen_brace\s*=\s*remove|sp_fparen_brace\s*=\s*force|sp_fparen_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Fparen Brace|Add Sp Fparen Brace|Remove Sp Fparen Brace|Force Sp Fparen Brace"
+ValueDefault=ignore
+
+[Sp Fparen Brace Initializer]
+Category=1
+Description="<html>Add or remove space between ')' and '{' of a function call in object<br/>initialization.<br/><br/>Overrides sp_fparen_brace.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_fparen_brace_initializer\s*=\s*ignore|sp_fparen_brace_initializer\s*=\s*add|sp_fparen_brace_initializer\s*=\s*remove|sp_fparen_brace_initializer\s*=\s*force|sp_fparen_brace_initializer\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Fparen Brace Initializer|Add Sp Fparen Brace Initializer|Remove Sp Fparen Brace Initializer|Force Sp Fparen Brace Initializer"
+ValueDefault=ignore
+
+[Sp Fparen Dbrace]
+Category=1
+Description="<html>(Java) Add or remove space between ')' and '{{' of double brace initializer.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_fparen_dbrace\s*=\s*ignore|sp_fparen_dbrace\s*=\s*add|sp_fparen_dbrace\s*=\s*remove|sp_fparen_dbrace\s*=\s*force|sp_fparen_dbrace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Fparen Dbrace|Add Sp Fparen Dbrace|Remove Sp Fparen Dbrace|Force Sp Fparen Dbrace"
+ValueDefault=ignore
+
+[Sp Func Call Paren]
+Category=1
+Description="<html>Add or remove space between function name and '(' on function calls.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_call_paren\s*=\s*ignore|sp_func_call_paren\s*=\s*add|sp_func_call_paren\s*=\s*remove|sp_func_call_paren\s*=\s*force|sp_func_call_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Call Paren|Add Sp Func Call Paren|Remove Sp Func Call Paren|Force Sp Func Call Paren"
+ValueDefault=ignore
+
+[Sp Func Call Paren Empty]
+Category=1
+Description="<html>Add or remove space between function name and '()' on function calls without<br/>parameters. If set to ignore (the default), sp_func_call_paren is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_call_paren_empty\s*=\s*ignore|sp_func_call_paren_empty\s*=\s*add|sp_func_call_paren_empty\s*=\s*remove|sp_func_call_paren_empty\s*=\s*force|sp_func_call_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Call Paren Empty|Add Sp Func Call Paren Empty|Remove Sp Func Call Paren Empty|Force Sp Func Call Paren Empty"
+ValueDefault=ignore
+
+[Sp Func Call User Paren]
+Category=1
+Description="<html>Add or remove space between the user function name and '(' on function<br/>calls. You need to set a keyword to be a user function in the config file,<br/>like:<br/> set func_call_user tr _ i18n</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_call_user_paren\s*=\s*ignore|sp_func_call_user_paren\s*=\s*add|sp_func_call_user_paren\s*=\s*remove|sp_func_call_user_paren\s*=\s*force|sp_func_call_user_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Call User Paren|Add Sp Func Call User Paren|Remove Sp Func Call User Paren|Force Sp Func Call User Paren"
+ValueDefault=ignore
+
+[Sp Func Call User Inside Fparen]
+Category=1
+Description="<html>Add or remove space inside user function '(' and ')'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_call_user_inside_fparen\s*=\s*ignore|sp_func_call_user_inside_fparen\s*=\s*add|sp_func_call_user_inside_fparen\s*=\s*remove|sp_func_call_user_inside_fparen\s*=\s*force|sp_func_call_user_inside_fparen\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Call User Inside Fparen|Add Sp Func Call User Inside Fparen|Remove Sp Func Call User Inside Fparen|Force Sp Func Call User Inside Fparen"
+ValueDefault=ignore
+
+[Sp Func Call User Paren Paren]
+Category=1
+Description="<html>Add or remove space between nested parentheses with user functions,<br/>i.e. '((' vs. '( ('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_call_user_paren_paren\s*=\s*ignore|sp_func_call_user_paren_paren\s*=\s*add|sp_func_call_user_paren_paren\s*=\s*remove|sp_func_call_user_paren_paren\s*=\s*force|sp_func_call_user_paren_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Call User Paren Paren|Add Sp Func Call User Paren Paren|Remove Sp Func Call User Paren Paren|Force Sp Func Call User Paren Paren"
+ValueDefault=ignore
+
+[Sp Func Class Paren]
+Category=1
+Description="<html>Add or remove space between a constructor/destructor and the open<br/>parenthesis.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_class_paren\s*=\s*ignore|sp_func_class_paren\s*=\s*add|sp_func_class_paren\s*=\s*remove|sp_func_class_paren\s*=\s*force|sp_func_class_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Class Paren|Add Sp Func Class Paren|Remove Sp Func Class Paren|Force Sp Func Class Paren"
+ValueDefault=ignore
+
+[Sp Func Class Paren Empty]
+Category=1
+Description="<html>Add or remove space between a constructor without parameters or destructor<br/>and '()'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_func_class_paren_empty\s*=\s*ignore|sp_func_class_paren_empty\s*=\s*add|sp_func_class_paren_empty\s*=\s*remove|sp_func_class_paren_empty\s*=\s*force|sp_func_class_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Func Class Paren Empty|Add Sp Func Class Paren Empty|Remove Sp Func Class Paren Empty|Force Sp Func Class Paren Empty"
+ValueDefault=ignore
+
+[Sp Return]
+Category=1
+Description="<html>Add or remove space after 'return'.<br/><br/>Default: force</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_return\s*=\s*ignore|sp_return\s*=\s*add|sp_return\s*=\s*remove|sp_return\s*=\s*force|sp_return\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Return|Add Sp Return|Remove Sp Return|Force Sp Return"
+ValueDefault=force
+
+[Sp Return Paren]
+Category=1
+Description="<html>Add or remove space between 'return' and '('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_return_paren\s*=\s*ignore|sp_return_paren\s*=\s*add|sp_return_paren\s*=\s*remove|sp_return_paren\s*=\s*force|sp_return_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Return Paren|Add Sp Return Paren|Remove Sp Return Paren|Force Sp Return Paren"
+ValueDefault=ignore
+
+[Sp Return Brace]
+Category=1
+Description="<html>Add or remove space between 'return' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_return_brace\s*=\s*ignore|sp_return_brace\s*=\s*add|sp_return_brace\s*=\s*remove|sp_return_brace\s*=\s*force|sp_return_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Return Brace|Add Sp Return Brace|Remove Sp Return Brace|Force Sp Return Brace"
+ValueDefault=ignore
+
+[Sp Attribute Paren]
+Category=1
+Description="<html>Add or remove space between '__attribute__' and '('.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_attribute_paren\s*=\s*ignore|sp_attribute_paren\s*=\s*add|sp_attribute_paren\s*=\s*remove|sp_attribute_paren\s*=\s*force|sp_attribute_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Attribute Paren|Add Sp Attribute Paren|Remove Sp Attribute Paren|Force Sp Attribute Paren"
+ValueDefault=ignore
+
+[Sp Defined Paren]
+Category=1
+Description="<html>Add or remove space between 'defined' and '(' in '#if defined (FOO)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_defined_paren\s*=\s*ignore|sp_defined_paren\s*=\s*add|sp_defined_paren\s*=\s*remove|sp_defined_paren\s*=\s*force|sp_defined_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Defined Paren|Add Sp Defined Paren|Remove Sp Defined Paren|Force Sp Defined Paren"
+ValueDefault=ignore
+
+[Sp Throw Paren]
+Category=1
+Description="<html>Add or remove space between 'throw' and '(' in 'throw (something)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_throw_paren\s*=\s*ignore|sp_throw_paren\s*=\s*add|sp_throw_paren\s*=\s*remove|sp_throw_paren\s*=\s*force|sp_throw_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Throw Paren|Add Sp Throw Paren|Remove Sp Throw Paren|Force Sp Throw Paren"
+ValueDefault=ignore
+
+[Sp After Throw]
+Category=1
+Description="<html>Add or remove space between 'throw' and anything other than '(' as in<br/>'@throw [...];'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_throw\s*=\s*ignore|sp_after_throw\s*=\s*add|sp_after_throw\s*=\s*remove|sp_after_throw\s*=\s*force|sp_after_throw\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Throw|Add Sp After Throw|Remove Sp After Throw|Force Sp After Throw"
+ValueDefault=ignore
+
+[Sp Catch Paren]
+Category=1
+Description="<html>Add or remove space between 'catch' and '(' in 'catch (something) { }'.<br/>If set to ignore, sp_before_sparen is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_catch_paren\s*=\s*ignore|sp_catch_paren\s*=\s*add|sp_catch_paren\s*=\s*remove|sp_catch_paren\s*=\s*force|sp_catch_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Catch Paren|Add Sp Catch Paren|Remove Sp Catch Paren|Force Sp Catch Paren"
+ValueDefault=ignore
+
+[Sp Oc Catch Paren]
+Category=1
+Description="<html>(OC) Add or remove space between '@catch' and '('<br/>in '@catch (something) { }'. If set to ignore, sp_catch_paren is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_oc_catch_paren\s*=\s*ignore|sp_oc_catch_paren\s*=\s*add|sp_oc_catch_paren\s*=\s*remove|sp_oc_catch_paren\s*=\s*force|sp_oc_catch_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Oc Catch Paren|Add Sp Oc Catch Paren|Remove Sp Oc Catch Paren|Force Sp Oc Catch Paren"
+ValueDefault=ignore
+
+[Sp Before Oc Proto List]
+Category=1
+Description="<html>(OC) Add or remove space before Objective-C protocol list<br/>as in '@protocol Protocol&lt;here&gt;&lt;Protocol_A&gt;' or '@interface MyClass : NSObject&lt;here&gt;&lt;MyProtocol&gt;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_oc_proto_list\s*=\s*ignore|sp_before_oc_proto_list\s*=\s*add|sp_before_oc_proto_list\s*=\s*remove|sp_before_oc_proto_list\s*=\s*force|sp_before_oc_proto_list\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Oc Proto List|Add Sp Before Oc Proto List|Remove Sp Before Oc Proto List|Force Sp Before Oc Proto List"
+ValueDefault=ignore
+
+[Sp Oc Classname Paren]
+Category=1
+Description="<html>(OC) Add or remove space between class name and '('<br/>in '@interface className(categoryName)&lt;ProtocolName&gt;:BaseClass'</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_oc_classname_paren\s*=\s*ignore|sp_oc_classname_paren\s*=\s*add|sp_oc_classname_paren\s*=\s*remove|sp_oc_classname_paren\s*=\s*force|sp_oc_classname_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Oc Classname Paren|Add Sp Oc Classname Paren|Remove Sp Oc Classname Paren|Force Sp Oc Classname Paren"
+ValueDefault=ignore
+
+[Sp Version Paren]
+Category=1
+Description="<html>(D) Add or remove space between 'version' and '('<br/>in 'version (something) { }'. If set to ignore, sp_before_sparen is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_version_paren\s*=\s*ignore|sp_version_paren\s*=\s*add|sp_version_paren\s*=\s*remove|sp_version_paren\s*=\s*force|sp_version_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Version Paren|Add Sp Version Paren|Remove Sp Version Paren|Force Sp Version Paren"
+ValueDefault=ignore
+
+[Sp Scope Paren]
+Category=1
+Description="<html>(D) Add or remove space between 'scope' and '('<br/>in 'scope (something) { }'. If set to ignore, sp_before_sparen is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_scope_paren\s*=\s*ignore|sp_scope_paren\s*=\s*add|sp_scope_paren\s*=\s*remove|sp_scope_paren\s*=\s*force|sp_scope_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Scope Paren|Add Sp Scope Paren|Remove Sp Scope Paren|Force Sp Scope Paren"
+ValueDefault=ignore
+
+[Sp Super Paren]
+Category=1
+Description="<html>Add or remove space between 'super' and '(' in 'super (something)'.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_super_paren\s*=\s*ignore|sp_super_paren\s*=\s*add|sp_super_paren\s*=\s*remove|sp_super_paren\s*=\s*force|sp_super_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Super Paren|Add Sp Super Paren|Remove Sp Super Paren|Force Sp Super Paren"
+ValueDefault=remove
+
+[Sp This Paren]
+Category=1
+Description="<html>Add or remove space between 'this' and '(' in 'this (something)'.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_this_paren\s*=\s*ignore|sp_this_paren\s*=\s*add|sp_this_paren\s*=\s*remove|sp_this_paren\s*=\s*force|sp_this_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp This Paren|Add Sp This Paren|Remove Sp This Paren|Force Sp This Paren"
+ValueDefault=remove
+
+[Sp Macro]
+Category=1
+Description="<html>Add or remove space between a macro name and its definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_macro\s*=\s*ignore|sp_macro\s*=\s*add|sp_macro\s*=\s*remove|sp_macro\s*=\s*force|sp_macro\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Macro|Add Sp Macro|Remove Sp Macro|Force Sp Macro"
+ValueDefault=ignore
+
+[Sp Macro Func]
+Category=1
+Description="<html>Add or remove space between a macro function ')' and its definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_macro_func\s*=\s*ignore|sp_macro_func\s*=\s*add|sp_macro_func\s*=\s*remove|sp_macro_func\s*=\s*force|sp_macro_func\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Macro Func|Add Sp Macro Func|Remove Sp Macro Func|Force Sp Macro Func"
+ValueDefault=ignore
+
+[Sp Else Brace]
+Category=1
+Description="<html>Add or remove space between 'else' and '{' if on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_else_brace\s*=\s*ignore|sp_else_brace\s*=\s*add|sp_else_brace\s*=\s*remove|sp_else_brace\s*=\s*force|sp_else_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Else Brace|Add Sp Else Brace|Remove Sp Else Brace|Force Sp Else Brace"
+ValueDefault=ignore
+
+[Sp Brace Else]
+Category=1
+Description="<html>Add or remove space between '}' and 'else' if on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_brace_else\s*=\s*ignore|sp_brace_else\s*=\s*add|sp_brace_else\s*=\s*remove|sp_brace_else\s*=\s*force|sp_brace_else\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Brace Else|Add Sp Brace Else|Remove Sp Brace Else|Force Sp Brace Else"
+ValueDefault=ignore
+
+[Sp Brace Typedef]
+Category=1
+Description="<html>Add or remove space between '}' and the name of a typedef on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_brace_typedef\s*=\s*ignore|sp_brace_typedef\s*=\s*add|sp_brace_typedef\s*=\s*remove|sp_brace_typedef\s*=\s*force|sp_brace_typedef\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Brace Typedef|Add Sp Brace Typedef|Remove Sp Brace Typedef|Force Sp Brace Typedef"
+ValueDefault=ignore
+
+[Sp Catch Brace]
+Category=1
+Description="<html>Add or remove space before the '{' of a 'catch' statement, if the '{' and<br/>'catch' are on the same line, as in 'catch (decl) &lt;here&gt; {'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_catch_brace\s*=\s*ignore|sp_catch_brace\s*=\s*add|sp_catch_brace\s*=\s*remove|sp_catch_brace\s*=\s*force|sp_catch_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Catch Brace|Add Sp Catch Brace|Remove Sp Catch Brace|Force Sp Catch Brace"
+ValueDefault=ignore
+
+[Sp Oc Catch Brace]
+Category=1
+Description="<html>(OC) Add or remove space before the '{' of a '@catch' statement, if the '{'<br/>and '@catch' are on the same line, as in '@catch (decl) &lt;here&gt; {'.<br/>If set to ignore, sp_catch_brace is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_oc_catch_brace\s*=\s*ignore|sp_oc_catch_brace\s*=\s*add|sp_oc_catch_brace\s*=\s*remove|sp_oc_catch_brace\s*=\s*force|sp_oc_catch_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Oc Catch Brace|Add Sp Oc Catch Brace|Remove Sp Oc Catch Brace|Force Sp Oc Catch Brace"
+ValueDefault=ignore
+
+[Sp Brace Catch]
+Category=1
+Description="<html>Add or remove space between '}' and 'catch' if on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_brace_catch\s*=\s*ignore|sp_brace_catch\s*=\s*add|sp_brace_catch\s*=\s*remove|sp_brace_catch\s*=\s*force|sp_brace_catch\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Brace Catch|Add Sp Brace Catch|Remove Sp Brace Catch|Force Sp Brace Catch"
+ValueDefault=ignore
+
+[Sp Oc Brace Catch]
+Category=1
+Description="<html>(OC) Add or remove space between '}' and '@catch' if on the same line.<br/>If set to ignore, sp_brace_catch is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_oc_brace_catch\s*=\s*ignore|sp_oc_brace_catch\s*=\s*add|sp_oc_brace_catch\s*=\s*remove|sp_oc_brace_catch\s*=\s*force|sp_oc_brace_catch\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Oc Brace Catch|Add Sp Oc Brace Catch|Remove Sp Oc Brace Catch|Force Sp Oc Brace Catch"
+ValueDefault=ignore
+
+[Sp Finally Brace]
+Category=1
+Description="<html>Add or remove space between 'finally' and '{' if on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_finally_brace\s*=\s*ignore|sp_finally_brace\s*=\s*add|sp_finally_brace\s*=\s*remove|sp_finally_brace\s*=\s*force|sp_finally_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Finally Brace|Add Sp Finally Brace|Remove Sp Finally Brace|Force Sp Finally Brace"
+ValueDefault=ignore
+
+[Sp Brace Finally]
+Category=1
+Description="<html>Add or remove space between '}' and 'finally' if on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_brace_finally\s*=\s*ignore|sp_brace_finally\s*=\s*add|sp_brace_finally\s*=\s*remove|sp_brace_finally\s*=\s*force|sp_brace_finally\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Brace Finally|Add Sp Brace Finally|Remove Sp Brace Finally|Force Sp Brace Finally"
+ValueDefault=ignore
+
+[Sp Try Brace]
+Category=1
+Description="<html>Add or remove space between 'try' and '{' if on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_try_brace\s*=\s*ignore|sp_try_brace\s*=\s*add|sp_try_brace\s*=\s*remove|sp_try_brace\s*=\s*force|sp_try_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Try Brace|Add Sp Try Brace|Remove Sp Try Brace|Force Sp Try Brace"
+ValueDefault=ignore
+
+[Sp Getset Brace]
+Category=1
+Description="<html>Add or remove space between get/set and '{' if on the same line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_getset_brace\s*=\s*ignore|sp_getset_brace\s*=\s*add|sp_getset_brace\s*=\s*remove|sp_getset_brace\s*=\s*force|sp_getset_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Getset Brace|Add Sp Getset Brace|Remove Sp Getset Brace|Force Sp Getset Brace"
+ValueDefault=ignore
+
+[Sp Word Brace Init Lst]
+Category=1
+Description="<html>Add or remove space between a variable and '{' for C++ uniform<br/>initialization.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_word_brace_init_lst\s*=\s*ignore|sp_word_brace_init_lst\s*=\s*add|sp_word_brace_init_lst\s*=\s*remove|sp_word_brace_init_lst\s*=\s*force|sp_word_brace_init_lst\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Word Brace Init Lst|Add Sp Word Brace Init Lst|Remove Sp Word Brace Init Lst|Force Sp Word Brace Init Lst"
+ValueDefault=ignore
+
+[Sp Word Brace Ns]
+Category=1
+Description="<html>Add or remove space between a variable and '{' for a namespace.<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_word_brace_ns\s*=\s*ignore|sp_word_brace_ns\s*=\s*add|sp_word_brace_ns\s*=\s*remove|sp_word_brace_ns\s*=\s*force|sp_word_brace_ns\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Word Brace Ns|Add Sp Word Brace Ns|Remove Sp Word Brace Ns|Force Sp Word Brace Ns"
+ValueDefault=add
+
+[Sp Before Dc]
+Category=1
+Description="<html>Add or remove space before the '::' operator.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_dc\s*=\s*ignore|sp_before_dc\s*=\s*add|sp_before_dc\s*=\s*remove|sp_before_dc\s*=\s*force|sp_before_dc\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Dc|Add Sp Before Dc|Remove Sp Before Dc|Force Sp Before Dc"
+ValueDefault=ignore
+
+[Sp After Dc]
+Category=1
+Description="<html>Add or remove space after the '::' operator.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_dc\s*=\s*ignore|sp_after_dc\s*=\s*add|sp_after_dc\s*=\s*remove|sp_after_dc\s*=\s*force|sp_after_dc\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Dc|Add Sp After Dc|Remove Sp After Dc|Force Sp After Dc"
+ValueDefault=ignore
+
+[Sp D Array Colon]
+Category=1
+Description="<html>(D) Add or remove around the D named array initializer ':' operator.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_d_array_colon\s*=\s*ignore|sp_d_array_colon\s*=\s*add|sp_d_array_colon\s*=\s*remove|sp_d_array_colon\s*=\s*force|sp_d_array_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp D Array Colon|Add Sp D Array Colon|Remove Sp D Array Colon|Force Sp D Array Colon"
+ValueDefault=ignore
+
+[Sp Not]
+Category=1
+Description="<html>Add or remove space after the '!' (not) unary operator.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_not\s*=\s*ignore|sp_not\s*=\s*add|sp_not\s*=\s*remove|sp_not\s*=\s*force|sp_not\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Not|Add Sp Not|Remove Sp Not|Force Sp Not"
+ValueDefault=remove
+
+[Sp Not Not]
+Category=1
+Description="<html>Add or remove space between two '!' (not) unary operators.<br/>If set to ignore, sp_not will be used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_not_not\s*=\s*ignore|sp_not_not\s*=\s*add|sp_not_not\s*=\s*remove|sp_not_not\s*=\s*force|sp_not_not\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Not Not|Add Sp Not Not|Remove Sp Not Not|Force Sp Not Not"
+ValueDefault=ignore
+
+[Sp Inv]
+Category=1
+Description="<html>Add or remove space after the '~' (invert) unary operator.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inv\s*=\s*ignore|sp_inv\s*=\s*add|sp_inv\s*=\s*remove|sp_inv\s*=\s*force|sp_inv\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inv|Add Sp Inv|Remove Sp Inv|Force Sp Inv"
+ValueDefault=remove
+
+[Sp Addr]
+Category=1
+Description="<html>Add or remove space after the '&amp;' (address-of) unary operator. This does not<br/>affect the spacing after a '&amp;' that is part of a type.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_addr\s*=\s*ignore|sp_addr\s*=\s*add|sp_addr\s*=\s*remove|sp_addr\s*=\s*force|sp_addr\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Addr|Add Sp Addr|Remove Sp Addr|Force Sp Addr"
+ValueDefault=remove
+
+[Sp Member]
+Category=1
+Description="<html>Add or remove space around the '.' or '-&gt;' operators.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_member\s*=\s*ignore|sp_member\s*=\s*add|sp_member\s*=\s*remove|sp_member\s*=\s*force|sp_member\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Member|Add Sp Member|Remove Sp Member|Force Sp Member"
+ValueDefault=remove
+
+[Sp Deref]
+Category=1
+Description="<html>Add or remove space after the '*' (dereference) unary operator. This does<br/>not affect the spacing after a '*' that is part of a type.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_deref\s*=\s*ignore|sp_deref\s*=\s*add|sp_deref\s*=\s*remove|sp_deref\s*=\s*force|sp_deref\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Deref|Add Sp Deref|Remove Sp Deref|Force Sp Deref"
+ValueDefault=remove
+
+[Sp Sign]
+Category=1
+Description="<html>Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_sign\s*=\s*ignore|sp_sign\s*=\s*add|sp_sign\s*=\s*remove|sp_sign\s*=\s*force|sp_sign\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Sign|Add Sp Sign|Remove Sp Sign|Force Sp Sign"
+ValueDefault=remove
+
+[Sp Incdec]
+Category=1
+Description="<html>Add or remove space between '++' and '--' the word to which it is being<br/>applied, as in '(--x)' or 'y++;'.<br/><br/>Default: remove</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_incdec\s*=\s*ignore|sp_incdec\s*=\s*add|sp_incdec\s*=\s*remove|sp_incdec\s*=\s*force|sp_incdec\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Incdec|Add Sp Incdec|Remove Sp Incdec|Force Sp Incdec"
+ValueDefault=remove
+
+[Sp Before Nl Cont]
+Category=1
+Description="<html>Add or remove space before a backslash-newline at the end of a line.<br/><br/>Default: add</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_nl_cont\s*=\s*ignore|sp_before_nl_cont\s*=\s*add|sp_before_nl_cont\s*=\s*remove|sp_before_nl_cont\s*=\s*force|sp_before_nl_cont\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Nl Cont|Add Sp Before Nl Cont|Remove Sp Before Nl Cont|Force Sp Before Nl Cont"
+ValueDefault=add
+
+[Sp After Oc Scope]
+Category=1
+Description="<html>(OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;'<br/>or '+(int) bar;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_scope\s*=\s*ignore|sp_after_oc_scope\s*=\s*add|sp_after_oc_scope\s*=\s*remove|sp_after_oc_scope\s*=\s*force|sp_after_oc_scope\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Scope|Add Sp After Oc Scope|Remove Sp After Oc Scope|Force Sp After Oc Scope"
+ValueDefault=ignore
+
+[Sp After Oc Colon]
+Category=1
+Description="<html>(OC) Add or remove space after the colon in message specs,<br/>i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_colon\s*=\s*ignore|sp_after_oc_colon\s*=\s*add|sp_after_oc_colon\s*=\s*remove|sp_after_oc_colon\s*=\s*force|sp_after_oc_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Colon|Add Sp After Oc Colon|Remove Sp After Oc Colon|Force Sp After Oc Colon"
+ValueDefault=ignore
+
+[Sp Before Oc Colon]
+Category=1
+Description="<html>(OC) Add or remove space before the colon in message specs,<br/>i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_oc_colon\s*=\s*ignore|sp_before_oc_colon\s*=\s*add|sp_before_oc_colon\s*=\s*remove|sp_before_oc_colon\s*=\s*force|sp_before_oc_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Oc Colon|Add Sp Before Oc Colon|Remove Sp Before Oc Colon|Force Sp Before Oc Colon"
+ValueDefault=ignore
+
+[Sp After Oc Dict Colon]
+Category=1
+Description="<html>(OC) Add or remove space after the colon in immutable dictionary expression<br/>'NSDictionary *test = @{@"foo" :@"bar"};'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_dict_colon\s*=\s*ignore|sp_after_oc_dict_colon\s*=\s*add|sp_after_oc_dict_colon\s*=\s*remove|sp_after_oc_dict_colon\s*=\s*force|sp_after_oc_dict_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Dict Colon|Add Sp After Oc Dict Colon|Remove Sp After Oc Dict Colon|Force Sp After Oc Dict Colon"
+ValueDefault=ignore
+
+[Sp Before Oc Dict Colon]
+Category=1
+Description="<html>(OC) Add or remove space before the colon in immutable dictionary expression<br/>'NSDictionary *test = @{@"foo" :@"bar"};'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_oc_dict_colon\s*=\s*ignore|sp_before_oc_dict_colon\s*=\s*add|sp_before_oc_dict_colon\s*=\s*remove|sp_before_oc_dict_colon\s*=\s*force|sp_before_oc_dict_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Oc Dict Colon|Add Sp Before Oc Dict Colon|Remove Sp Before Oc Dict Colon|Force Sp Before Oc Dict Colon"
+ValueDefault=ignore
+
+[Sp After Send Oc Colon]
+Category=1
+Description="<html>(OC) Add or remove space after the colon in message specs,<br/>i.e. '[object setValue:1];' vs. '[object setValue: 1];'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_send_oc_colon\s*=\s*ignore|sp_after_send_oc_colon\s*=\s*add|sp_after_send_oc_colon\s*=\s*remove|sp_after_send_oc_colon\s*=\s*force|sp_after_send_oc_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Send Oc Colon|Add Sp After Send Oc Colon|Remove Sp After Send Oc Colon|Force Sp After Send Oc Colon"
+ValueDefault=ignore
+
+[Sp Before Send Oc Colon]
+Category=1
+Description="<html>(OC) Add or remove space before the colon in message specs,<br/>i.e. '[object setValue:1];' vs. '[object setValue :1];'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_send_oc_colon\s*=\s*ignore|sp_before_send_oc_colon\s*=\s*add|sp_before_send_oc_colon\s*=\s*remove|sp_before_send_oc_colon\s*=\s*force|sp_before_send_oc_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Send Oc Colon|Add Sp Before Send Oc Colon|Remove Sp Before Send Oc Colon|Force Sp Before Send Oc Colon"
+ValueDefault=ignore
+
+[Sp After Oc Type]
+Category=1
+Description="<html>(OC) Add or remove space after the (type) in message specs,<br/>i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_type\s*=\s*ignore|sp_after_oc_type\s*=\s*add|sp_after_oc_type\s*=\s*remove|sp_after_oc_type\s*=\s*force|sp_after_oc_type\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Type|Add Sp After Oc Type|Remove Sp After Oc Type|Force Sp After Oc Type"
+ValueDefault=ignore
+
+[Sp After Oc Return Type]
+Category=1
+Description="<html>(OC) Add or remove space after the first (type) in message specs,<br/>i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_return_type\s*=\s*ignore|sp_after_oc_return_type\s*=\s*add|sp_after_oc_return_type\s*=\s*remove|sp_after_oc_return_type\s*=\s*force|sp_after_oc_return_type\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Return Type|Add Sp After Oc Return Type|Remove Sp After Oc Return Type|Force Sp After Oc Return Type"
+ValueDefault=ignore
+
+[Sp After Oc At Sel]
+Category=1
+Description="<html>(OC) Add or remove space between '@selector' and '(',<br/>i.e. '@selector(msgName)' vs. '@selector (msgName)'.<br/>Also applies to '@protocol()' constructs.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_at_sel\s*=\s*ignore|sp_after_oc_at_sel\s*=\s*add|sp_after_oc_at_sel\s*=\s*remove|sp_after_oc_at_sel\s*=\s*force|sp_after_oc_at_sel\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc At Sel|Add Sp After Oc At Sel|Remove Sp After Oc At Sel|Force Sp After Oc At Sel"
+ValueDefault=ignore
+
+[Sp After Oc At Sel Parens]
+Category=1
+Description="<html>(OC) Add or remove space between '@selector(x)' and the following word,<br/>i.e. '@selector(foo) a:' vs. '@selector(foo)a:'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_at_sel_parens\s*=\s*ignore|sp_after_oc_at_sel_parens\s*=\s*add|sp_after_oc_at_sel_parens\s*=\s*remove|sp_after_oc_at_sel_parens\s*=\s*force|sp_after_oc_at_sel_parens\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc At Sel Parens|Add Sp After Oc At Sel Parens|Remove Sp After Oc At Sel Parens|Force Sp After Oc At Sel Parens"
+ValueDefault=ignore
+
+[Sp Inside Oc At Sel Parens]
+Category=1
+Description="<html>(OC) Add or remove space inside '@selector' parentheses,<br/>i.e. '@selector(foo)' vs. '@selector( foo )'.<br/>Also applies to '@protocol()' constructs.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_oc_at_sel_parens\s*=\s*ignore|sp_inside_oc_at_sel_parens\s*=\s*add|sp_inside_oc_at_sel_parens\s*=\s*remove|sp_inside_oc_at_sel_parens\s*=\s*force|sp_inside_oc_at_sel_parens\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Oc At Sel Parens|Add Sp Inside Oc At Sel Parens|Remove Sp Inside Oc At Sel Parens|Force Sp Inside Oc At Sel Parens"
+ValueDefault=ignore
+
+[Sp Before Oc Block Caret]
+Category=1
+Description="<html>(OC) Add or remove space before a block pointer caret,<br/>i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_oc_block_caret\s*=\s*ignore|sp_before_oc_block_caret\s*=\s*add|sp_before_oc_block_caret\s*=\s*remove|sp_before_oc_block_caret\s*=\s*force|sp_before_oc_block_caret\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Oc Block Caret|Add Sp Before Oc Block Caret|Remove Sp Before Oc Block Caret|Force Sp Before Oc Block Caret"
+ValueDefault=ignore
+
+[Sp After Oc Block Caret]
+Category=1
+Description="<html>(OC) Add or remove space after a block pointer caret,<br/>i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_block_caret\s*=\s*ignore|sp_after_oc_block_caret\s*=\s*add|sp_after_oc_block_caret\s*=\s*remove|sp_after_oc_block_caret\s*=\s*force|sp_after_oc_block_caret\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Block Caret|Add Sp After Oc Block Caret|Remove Sp After Oc Block Caret|Force Sp After Oc Block Caret"
+ValueDefault=ignore
+
+[Sp After Oc Msg Receiver]
+Category=1
+Description="<html>(OC) Add or remove space between the receiver and selector in a message,<br/>as in '[receiver selector ...]'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_msg_receiver\s*=\s*ignore|sp_after_oc_msg_receiver\s*=\s*add|sp_after_oc_msg_receiver\s*=\s*remove|sp_after_oc_msg_receiver\s*=\s*force|sp_after_oc_msg_receiver\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Msg Receiver|Add Sp After Oc Msg Receiver|Remove Sp After Oc Msg Receiver|Force Sp After Oc Msg Receiver"
+ValueDefault=ignore
+
+[Sp After Oc Property]
+Category=1
+Description="<html>(OC) Add or remove space after '@property'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_property\s*=\s*ignore|sp_after_oc_property\s*=\s*add|sp_after_oc_property\s*=\s*remove|sp_after_oc_property\s*=\s*force|sp_after_oc_property\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Property|Add Sp After Oc Property|Remove Sp After Oc Property|Force Sp After Oc Property"
+ValueDefault=ignore
+
+[Sp After Oc Synchronized]
+Category=1
+Description="<html>(OC) Add or remove space between '@synchronized' and the open parenthesis,<br/>i.e. '@synchronized(foo)' vs. '@synchronized (foo)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_oc_synchronized\s*=\s*ignore|sp_after_oc_synchronized\s*=\s*add|sp_after_oc_synchronized\s*=\s*remove|sp_after_oc_synchronized\s*=\s*force|sp_after_oc_synchronized\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Oc Synchronized|Add Sp After Oc Synchronized|Remove Sp After Oc Synchronized|Force Sp After Oc Synchronized"
+ValueDefault=ignore
+
+[Sp Cond Colon]
+Category=1
+Description="<html>Add or remove space around the ':' in 'b ? t : f'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cond_colon\s*=\s*ignore|sp_cond_colon\s*=\s*add|sp_cond_colon\s*=\s*remove|sp_cond_colon\s*=\s*force|sp_cond_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cond Colon|Add Sp Cond Colon|Remove Sp Cond Colon|Force Sp Cond Colon"
+ValueDefault=ignore
+
+[Sp Cond Colon Before]
+Category=1
+Description="<html>Add or remove space before the ':' in 'b ? t : f'.<br/><br/>Overrides sp_cond_colon.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cond_colon_before\s*=\s*ignore|sp_cond_colon_before\s*=\s*add|sp_cond_colon_before\s*=\s*remove|sp_cond_colon_before\s*=\s*force|sp_cond_colon_before\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cond Colon Before|Add Sp Cond Colon Before|Remove Sp Cond Colon Before|Force Sp Cond Colon Before"
+ValueDefault=ignore
+
+[Sp Cond Colon After]
+Category=1
+Description="<html>Add or remove space after the ':' in 'b ? t : f'.<br/><br/>Overrides sp_cond_colon.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cond_colon_after\s*=\s*ignore|sp_cond_colon_after\s*=\s*add|sp_cond_colon_after\s*=\s*remove|sp_cond_colon_after\s*=\s*force|sp_cond_colon_after\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cond Colon After|Add Sp Cond Colon After|Remove Sp Cond Colon After|Force Sp Cond Colon After"
+ValueDefault=ignore
+
+[Sp Cond Question]
+Category=1
+Description="<html>Add or remove space around the '?' in 'b ? t : f'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cond_question\s*=\s*ignore|sp_cond_question\s*=\s*add|sp_cond_question\s*=\s*remove|sp_cond_question\s*=\s*force|sp_cond_question\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cond Question|Add Sp Cond Question|Remove Sp Cond Question|Force Sp Cond Question"
+ValueDefault=ignore
+
+[Sp Cond Question Before]
+Category=1
+Description="<html>Add or remove space before the '?' in 'b ? t : f'.<br/><br/>Overrides sp_cond_question.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cond_question_before\s*=\s*ignore|sp_cond_question_before\s*=\s*add|sp_cond_question_before\s*=\s*remove|sp_cond_question_before\s*=\s*force|sp_cond_question_before\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cond Question Before|Add Sp Cond Question Before|Remove Sp Cond Question Before|Force Sp Cond Question Before"
+ValueDefault=ignore
+
+[Sp Cond Question After]
+Category=1
+Description="<html>Add or remove space after the '?' in 'b ? t : f'.<br/><br/>Overrides sp_cond_question.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cond_question_after\s*=\s*ignore|sp_cond_question_after\s*=\s*add|sp_cond_question_after\s*=\s*remove|sp_cond_question_after\s*=\s*force|sp_cond_question_after\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cond Question After|Add Sp Cond Question After|Remove Sp Cond Question After|Force Sp Cond Question After"
+ValueDefault=ignore
+
+[Sp Cond Ternary Short]
+Category=1
+Description="<html>In the abbreviated ternary form '(a ?: b)', add or remove space between '?'<br/>and ':'.<br/><br/>Overrides all other sp_cond_* options.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cond_ternary_short\s*=\s*ignore|sp_cond_ternary_short\s*=\s*add|sp_cond_ternary_short\s*=\s*remove|sp_cond_ternary_short\s*=\s*force|sp_cond_ternary_short\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cond Ternary Short|Add Sp Cond Ternary Short|Remove Sp Cond Ternary Short|Force Sp Cond Ternary Short"
+ValueDefault=ignore
+
+[Sp Case Label]
+Category=1
+Description="<html>Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make<br/>sense here.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_case_label\s*=\s*ignore|sp_case_label\s*=\s*add|sp_case_label\s*=\s*remove|sp_case_label\s*=\s*force|sp_case_label\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Case Label|Add Sp Case Label|Remove Sp Case Label|Force Sp Case Label"
+ValueDefault=ignore
+
+[Sp Range]
+Category=1
+Description="<html>(D) Add or remove space around the D '..' operator.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_range\s*=\s*ignore|sp_range\s*=\s*add|sp_range\s*=\s*remove|sp_range\s*=\s*force|sp_range\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Range|Add Sp Range|Remove Sp Range|Force Sp Range"
+ValueDefault=ignore
+
+[Sp After For Colon]
+Category=1
+Description="<html>Add or remove space after ':' in a Java/C++11 range-based 'for',<br/>as in 'for (Type var : &lt;here&gt; expr)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_for_colon\s*=\s*ignore|sp_after_for_colon\s*=\s*add|sp_after_for_colon\s*=\s*remove|sp_after_for_colon\s*=\s*force|sp_after_for_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After For Colon|Add Sp After For Colon|Remove Sp After For Colon|Force Sp After For Colon"
+ValueDefault=ignore
+
+[Sp Before For Colon]
+Category=1
+Description="<html>Add or remove space before ':' in a Java/C++11 range-based 'for',<br/>as in 'for (Type var &lt;here&gt; : expr)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_for_colon\s*=\s*ignore|sp_before_for_colon\s*=\s*add|sp_before_for_colon\s*=\s*remove|sp_before_for_colon\s*=\s*force|sp_before_for_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before For Colon|Add Sp Before For Colon|Remove Sp Before For Colon|Force Sp Before For Colon"
+ValueDefault=ignore
+
+[Sp Extern Paren]
+Category=1
+Description="<html>(D) Add or remove space between 'extern' and '(' as in 'extern &lt;here&gt; (C)'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_extern_paren\s*=\s*ignore|sp_extern_paren\s*=\s*add|sp_extern_paren\s*=\s*remove|sp_extern_paren\s*=\s*force|sp_extern_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Extern Paren|Add Sp Extern Paren|Remove Sp Extern Paren|Force Sp Extern Paren"
+ValueDefault=ignore
+
+[Sp Cmt Cpp Start]
+Category=1
+Description="<html>Add or remove space after the opening of a C++ comment, as in '// &lt;here&gt; A'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cmt_cpp_start\s*=\s*ignore|sp_cmt_cpp_start\s*=\s*add|sp_cmt_cpp_start\s*=\s*remove|sp_cmt_cpp_start\s*=\s*force|sp_cmt_cpp_start\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cmt Cpp Start|Add Sp Cmt Cpp Start|Remove Sp Cmt Cpp Start|Force Sp Cmt Cpp Start"
+ValueDefault=ignore
+
+[Sp Cmt Cpp Pvs]
+Category=1
+Description="<html>remove space after the '//' and the pvs command '-V1234',<br/>only works with sp_cmt_cpp_start set to add or force.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=sp_cmt_cpp_pvs\s*=\s*true|sp_cmt_cpp_pvs\s*=\s*false
+ValueDefault=false
+
+[Sp Cmt Cpp Lint]
+Category=1
+Description="<html>remove space after the '//' and the command 'lint',<br/>only works with sp_cmt_cpp_start set to add or force.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=sp_cmt_cpp_lint\s*=\s*true|sp_cmt_cpp_lint\s*=\s*false
+ValueDefault=false
+
+[Sp Cmt Cpp Region]
+Category=1
+Description="<html>Add or remove space in a C++ region marker comment, as in '// &lt;here&gt; BEGIN'.<br/>A region marker is defined as a comment which is not preceded by other text<br/>(i.e. the comment is the first non-whitespace on the line), and which starts<br/>with either 'BEGIN' or 'END'.<br/><br/>Overrides sp_cmt_cpp_start.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_cmt_cpp_region\s*=\s*ignore|sp_cmt_cpp_region\s*=\s*add|sp_cmt_cpp_region\s*=\s*remove|sp_cmt_cpp_region\s*=\s*force|sp_cmt_cpp_region\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Cmt Cpp Region|Add Sp Cmt Cpp Region|Remove Sp Cmt Cpp Region|Force Sp Cmt Cpp Region"
+ValueDefault=ignore
+
+[Sp Cmt Cpp Doxygen]
+Category=1
+Description="<html>If true, space added with sp_cmt_cpp_start will be added after Doxygen<br/>sequences like '///', '///&lt;', '//!' and '//!&lt;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=sp_cmt_cpp_doxygen\s*=\s*true|sp_cmt_cpp_doxygen\s*=\s*false
+ValueDefault=false
+
+[Sp Cmt Cpp Qttr]
+Category=1
+Description="<html>If true, space added with sp_cmt_cpp_start will be added after Qt translator<br/>or meta-data comments like '//:', '//=', and '//~'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=sp_cmt_cpp_qttr\s*=\s*true|sp_cmt_cpp_qttr\s*=\s*false
+ValueDefault=false
+
+[Sp Endif Cmt]
+Category=1
+Description="<html>Add or remove space between #else or #endif and a trailing comment.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_endif_cmt\s*=\s*ignore|sp_endif_cmt\s*=\s*add|sp_endif_cmt\s*=\s*remove|sp_endif_cmt\s*=\s*force|sp_endif_cmt\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Endif Cmt|Add Sp Endif Cmt|Remove Sp Endif Cmt|Force Sp Endif Cmt"
+ValueDefault=ignore
+
+[Sp After New]
+Category=1
+Description="<html>Add or remove space after 'new', 'delete' and 'delete[]'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_new\s*=\s*ignore|sp_after_new\s*=\s*add|sp_after_new\s*=\s*remove|sp_after_new\s*=\s*force|sp_after_new\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After New|Add Sp After New|Remove Sp After New|Force Sp After New"
+ValueDefault=ignore
+
+[Sp Between New Paren]
+Category=1
+Description="<html>Add or remove space between 'new' and '(' in 'new()'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_between_new_paren\s*=\s*ignore|sp_between_new_paren\s*=\s*add|sp_between_new_paren\s*=\s*remove|sp_between_new_paren\s*=\s*force|sp_between_new_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Between New Paren|Add Sp Between New Paren|Remove Sp Between New Paren|Force Sp Between New Paren"
+ValueDefault=ignore
+
+[Sp After Newop Paren]
+Category=1
+Description="<html>Add or remove space between ')' and type in 'new(foo) BAR'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_newop_paren\s*=\s*ignore|sp_after_newop_paren\s*=\s*add|sp_after_newop_paren\s*=\s*remove|sp_after_newop_paren\s*=\s*force|sp_after_newop_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Newop Paren|Add Sp After Newop Paren|Remove Sp After Newop Paren|Force Sp After Newop Paren"
+ValueDefault=ignore
+
+[Sp Inside Newop Paren]
+Category=1
+Description="<html>Add or remove space inside parentheses of the new operator<br/>as in 'new(foo) BAR'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_newop_paren\s*=\s*ignore|sp_inside_newop_paren\s*=\s*add|sp_inside_newop_paren\s*=\s*remove|sp_inside_newop_paren\s*=\s*force|sp_inside_newop_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Newop Paren|Add Sp Inside Newop Paren|Remove Sp Inside Newop Paren|Force Sp Inside Newop Paren"
+ValueDefault=ignore
+
+[Sp Inside Newop Paren Open]
+Category=1
+Description="<html>Add or remove space after the open parenthesis of the new operator,<br/>as in 'new(foo) BAR'.<br/><br/>Overrides sp_inside_newop_paren.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_newop_paren_open\s*=\s*ignore|sp_inside_newop_paren_open\s*=\s*add|sp_inside_newop_paren_open\s*=\s*remove|sp_inside_newop_paren_open\s*=\s*force|sp_inside_newop_paren_open\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Newop Paren Open|Add Sp Inside Newop Paren Open|Remove Sp Inside Newop Paren Open|Force Sp Inside Newop Paren Open"
+ValueDefault=ignore
+
+[Sp Inside Newop Paren Close]
+Category=1
+Description="<html>Add or remove space before the close parenthesis of the new operator,<br/>as in 'new(foo) BAR'.<br/><br/>Overrides sp_inside_newop_paren.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_inside_newop_paren_close\s*=\s*ignore|sp_inside_newop_paren_close\s*=\s*add|sp_inside_newop_paren_close\s*=\s*remove|sp_inside_newop_paren_close\s*=\s*force|sp_inside_newop_paren_close\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Inside Newop Paren Close|Add Sp Inside Newop Paren Close|Remove Sp Inside Newop Paren Close|Force Sp Inside Newop Paren Close"
+ValueDefault=ignore
+
+[Sp Before Tr Cmt]
+Category=1
+Description="<html>Add or remove space before a trailing comment.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_tr_cmt\s*=\s*ignore|sp_before_tr_cmt\s*=\s*add|sp_before_tr_cmt\s*=\s*remove|sp_before_tr_cmt\s*=\s*force|sp_before_tr_cmt\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Tr Cmt|Add Sp Before Tr Cmt|Remove Sp Before Tr Cmt|Force Sp Before Tr Cmt"
+ValueDefault=ignore
+
+[Sp Num Before Tr Cmt]
+Category=1
+Description="<html>Number of spaces before a trailing comment.</html>"
+Enabled=false
+EditorType=numeric
+CallName="sp_num_before_tr_cmt\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Sp Before Emb Cmt]
+Category=1
+Description="<html>Add or remove space before an embedded comment.<br/><br/>Default: force</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_emb_cmt\s*=\s*ignore|sp_before_emb_cmt\s*=\s*add|sp_before_emb_cmt\s*=\s*remove|sp_before_emb_cmt\s*=\s*force|sp_before_emb_cmt\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Emb Cmt|Add Sp Before Emb Cmt|Remove Sp Before Emb Cmt|Force Sp Before Emb Cmt"
+ValueDefault=force
+
+[Sp Num Before Emb Cmt]
+Category=1
+Description="<html>Number of spaces before an embedded comment.<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="sp_num_before_emb_cmt\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=1
+
+[Sp After Emb Cmt]
+Category=1
+Description="<html>Add or remove space after an embedded comment.<br/><br/>Default: force</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_emb_cmt\s*=\s*ignore|sp_after_emb_cmt\s*=\s*add|sp_after_emb_cmt\s*=\s*remove|sp_after_emb_cmt\s*=\s*force|sp_after_emb_cmt\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Emb Cmt|Add Sp After Emb Cmt|Remove Sp After Emb Cmt|Force Sp After Emb Cmt"
+ValueDefault=force
+
+[Sp Num After Emb Cmt]
+Category=1
+Description="<html>Number of spaces after an embedded comment.<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="sp_num_after_emb_cmt\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=1
+
+[Sp Annotation Paren]
+Category=1
+Description="<html>(Java) Add or remove space between an annotation and the open parenthesis.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_annotation_paren\s*=\s*ignore|sp_annotation_paren\s*=\s*add|sp_annotation_paren\s*=\s*remove|sp_annotation_paren\s*=\s*force|sp_annotation_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Annotation Paren|Add Sp Annotation Paren|Remove Sp Annotation Paren|Force Sp Annotation Paren"
+ValueDefault=ignore
+
+[Sp Skip Vbrace Tokens]
+Category=1
+Description="<html>If true, vbrace tokens are dropped to the previous token and skipped.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=sp_skip_vbrace_tokens\s*=\s*true|sp_skip_vbrace_tokens\s*=\s*false
+ValueDefault=false
+
+[Sp After Noexcept]
+Category=1
+Description="<html>Add or remove space after 'noexcept'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_noexcept\s*=\s*ignore|sp_after_noexcept\s*=\s*add|sp_after_noexcept\s*=\s*remove|sp_after_noexcept\s*=\s*force|sp_after_noexcept\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Noexcept|Add Sp After Noexcept|Remove Sp After Noexcept|Force Sp After Noexcept"
+ValueDefault=ignore
+
+[Sp Vala After Translation]
+Category=1
+Description="<html>Add or remove space after '_'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_vala_after_translation\s*=\s*ignore|sp_vala_after_translation\s*=\s*add|sp_vala_after_translation\s*=\s*remove|sp_vala_after_translation\s*=\s*force|sp_vala_after_translation\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Vala After Translation|Add Sp Vala After Translation|Remove Sp Vala After Translation|Force Sp Vala After Translation"
+ValueDefault=ignore
+
+[Sp Before Bit Colon]
+Category=1
+Description="<html>Add or remove space before a bit colon ':'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_before_bit_colon\s*=\s*ignore|sp_before_bit_colon\s*=\s*add|sp_before_bit_colon\s*=\s*remove|sp_before_bit_colon\s*=\s*force|sp_before_bit_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp Before Bit Colon|Add Sp Before Bit Colon|Remove Sp Before Bit Colon|Force Sp Before Bit Colon"
+ValueDefault=ignore
+
+[Sp After Bit Colon]
+Category=1
+Description="<html>Add or remove space after a bit colon ':'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=sp_after_bit_colon\s*=\s*ignore|sp_after_bit_colon\s*=\s*add|sp_after_bit_colon\s*=\s*remove|sp_after_bit_colon\s*=\s*force|sp_after_bit_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Sp After Bit Colon|Add Sp After Bit Colon|Remove Sp After Bit Colon|Force Sp After Bit Colon"
+ValueDefault=ignore
+
+[Force Tab After Define]
+Category=1
+Description="<html>If true, a &lt;TAB&gt; is inserted after #define.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=force_tab_after_define\s*=\s*true|force_tab_after_define\s*=\s*false
+ValueDefault=false
+
+[Indent Columns]
+Category=2
+Description="<html>The number of columns to indent per level. Usually 2, 3, 4, or 8.<br/><br/>Default: 8</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_columns\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=8
+
+[Indent Ignore First Continue]
+Category=2
+Description="<html>Whether to ignore indent for the first continuation line. Subsequent<br/>continuation lines will still be indented to match the first.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_first_continue\s*=\s*true|indent_ignore_first_continue\s*=\s*false
+ValueDefault=false
+
+[Indent Continue]
+Category=2
+Description="<html>The continuation indent. If non-zero, this overrides the indent of '(', '['<br/>and '=' continuation indents. Negative values are OK; negative value is<br/>absolute and not increased for each '(' or '[' level.<br/><br/>For FreeBSD, this is set to 4.<br/>Requires indent_ignore_first_continue=false.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_continue\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Indent Continue Class Head]
+Category=2
+Description="<html>The continuation indent, only for class header line(s). If non-zero, this<br/>overrides the indent of 'class' continuation indents.<br/>Requires indent_ignore_first_continue=false.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_continue_class_head\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Single Newlines]
+Category=2
+Description="<html>Whether to indent empty lines (i.e. lines which contain only spaces before<br/>the newline character).</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_single_newlines\s*=\s*true|indent_single_newlines\s*=\s*false
+ValueDefault=false
+
+[Indent Param]
+Category=2
+Description="<html>The continuation indent for func_*_param if they are true. If non-zero, this<br/>overrides the indent.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_param\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent With Tabs]
+Category=2
+Description="<html>How to use tabs when indenting code.<br/><br/>0: Spaces only<br/>1: Indent with tabs to brace level, align with spaces (default)<br/>2: Indent and align with tabs, using spaces when not on a tabstop<br/><br/>Default: 1</html>"
+Enabled=true
+EditorType=multiple
+Choices="indent_with_tabs\s*=\s*0|indent_with_tabs\s*=\s*1|indent_with_tabs\s*=\s*2"
+ChoicesReadable="Spaces only|Indent with tabs, align with spaces|Indent and align with tabs"
+ValueDefault=1
+
+[Indent Cmt With Tabs]
+Category=2
+Description="<html>Whether to indent comments that are not at a brace level with tabs on a<br/>tabstop. Requires indent_with_tabs=2. If false, will use spaces.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_cmt_with_tabs\s*=\s*true|indent_cmt_with_tabs\s*=\s*false
+ValueDefault=false
+
+[Indent Align String]
+Category=2
+Description="<html>Whether to indent strings broken by '\' so that they line up.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_align_string\s*=\s*true|indent_align_string\s*=\s*false
+ValueDefault=false
+
+[Indent Xml String]
+Category=2
+Description="<html>The number of spaces to indent multi-line XML strings.<br/>Requires indent_align_string=true.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_xml_string\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Brace]
+Category=2
+Description="<html>Spaces to indent '{' from level.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_brace\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Braces]
+Category=2
+Description="<html>Whether braces are indented to the body level.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_braces\s*=\s*true|indent_braces\s*=\s*false
+ValueDefault=false
+
+[Indent Braces No Func]
+Category=2
+Description="<html>Whether to disable indenting function braces if indent_braces=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_braces_no_func\s*=\s*true|indent_braces_no_func\s*=\s*false
+ValueDefault=false
+
+[Indent Braces No Class]
+Category=2
+Description="<html>Whether to disable indenting class braces if indent_braces=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_braces_no_class\s*=\s*true|indent_braces_no_class\s*=\s*false
+ValueDefault=false
+
+[Indent Braces No Struct]
+Category=2
+Description="<html>Whether to disable indenting struct braces if indent_braces=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_braces_no_struct\s*=\s*true|indent_braces_no_struct\s*=\s*false
+ValueDefault=false
+
+[Indent Brace Parent]
+Category=2
+Description="<html>Whether to indent based on the size of the brace parent,<br/>i.e. 'if' =&gt; 3 spaces, 'for' =&gt; 4 spaces, etc.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_brace_parent\s*=\s*true|indent_brace_parent\s*=\s*false
+ValueDefault=false
+
+[Indent Paren Open Brace]
+Category=2
+Description="<html>Whether to indent based on the open parenthesis instead of the open brace<br/>in '({\n'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_paren_open_brace\s*=\s*true|indent_paren_open_brace\s*=\s*false
+ValueDefault=false
+
+[Indent Cs Delegate Brace]
+Category=2
+Description="<html>(C#) Whether to indent the brace of a C# delegate by another level.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_cs_delegate_brace\s*=\s*true|indent_cs_delegate_brace\s*=\s*false
+ValueDefault=false
+
+[Indent Cs Delegate Body]
+Category=2
+Description="<html>(C#) Whether to indent a C# delegate (to handle delegates with no brace) by<br/>another level.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_cs_delegate_body\s*=\s*true|indent_cs_delegate_body\s*=\s*false
+ValueDefault=false
+
+[Indent Namespace]
+Category=2
+Description="<html>Whether to indent the body of a 'namespace'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_namespace\s*=\s*true|indent_namespace\s*=\s*false
+ValueDefault=false
+
+[Indent Namespace Single Indent]
+Category=2
+Description="<html>Whether to indent only the first namespace, and not any nested namespaces.<br/>Requires indent_namespace=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_namespace_single_indent\s*=\s*true|indent_namespace_single_indent\s*=\s*false
+ValueDefault=false
+
+[Indent Namespace Level]
+Category=2
+Description="<html>The number of spaces to indent a namespace block.<br/>If set to zero, use the value indent_columns</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_namespace_level\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Namespace Limit]
+Category=2
+Description="<html>If the body of the namespace is longer than this number, it won't be<br/>indented. Requires indent_namespace=true. 0 means no limit.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_namespace_limit\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[Indent Namespace Inner Only]
+Category=2
+Description="<html>Whether to indent only in inner namespaces (nested in other namespaces).<br/>Requires indent_namespace=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_namespace_inner_only\s*=\s*true|indent_namespace_inner_only\s*=\s*false
+ValueDefault=false
+
+[Indent Extern]
+Category=2
+Description="<html>Whether the 'extern "C"' body is indented.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_extern\s*=\s*true|indent_extern\s*=\s*false
+ValueDefault=false
+
+[Indent Class]
+Category=2
+Description="<html>Whether the 'class' body is indented.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_class\s*=\s*true|indent_class\s*=\s*false
+ValueDefault=false
+
+[Indent Ignore Before Class Colon]
+Category=2
+Description="<html>Whether to ignore indent for the leading base class colon.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_before_class_colon\s*=\s*true|indent_ignore_before_class_colon\s*=\s*false
+ValueDefault=false
+
+[Indent Before Class Colon]
+Category=2
+Description="<html>Additional indent before the leading base class colon.<br/>Negative values decrease indent down to the first column.<br/>Requires indent_ignore_before_class_colon=false and a newline break before<br/>the colon (see pos_class_colon and nl_class_colon)</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_before_class_colon\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Indent Class Colon]
+Category=2
+Description="<html>Whether to indent the stuff after a leading base class colon.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_class_colon\s*=\s*true|indent_class_colon\s*=\s*false
+ValueDefault=false
+
+[Indent Class On Colon]
+Category=2
+Description="<html>Whether to indent based on a class colon instead of the stuff after the<br/>colon. Requires indent_class_colon=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_class_on_colon\s*=\s*true|indent_class_on_colon\s*=\s*false
+ValueDefault=false
+
+[Indent Ignore Before Constr Colon]
+Category=2
+Description="<html>Whether to ignore indent for a leading class initializer colon.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_before_constr_colon\s*=\s*true|indent_ignore_before_constr_colon\s*=\s*false
+ValueDefault=false
+
+[Indent Constr Colon]
+Category=2
+Description="<html>Whether to indent the stuff after a leading class initializer colon.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_constr_colon\s*=\s*true|indent_constr_colon\s*=\s*false
+ValueDefault=false
+
+[Indent Ctor Init Leading]
+Category=2
+Description="<html>Virtual indent from the ':' for leading member initializers.<br/><br/>Default: 2</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_ctor_init_leading\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=2
+
+[Indent Ctor Init Following]
+Category=2
+Description="<html>Virtual indent from the ':' for following member initializers.<br/><br/>Default: 2</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_ctor_init_following\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=2
+
+[Indent Ctor Init]
+Category=2
+Description="<html>Additional indent for constructor initializer list.<br/>Negative values decrease indent down to the first column.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_ctor_init\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Indent Else If]
+Category=2
+Description="<html>Whether to indent 'if' following 'else' as a new block under the 'else'.<br/>If false, 'else\nif' is treated as 'else if' for indenting purposes.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_else_if\s*=\s*true|indent_else_if\s*=\s*false
+ValueDefault=false
+
+[Indent Var Def Blk]
+Category=2
+Description="<html>Amount to indent variable declarations after a open brace.<br/><br/> &lt;0: Relative<br/>&gt;=0: Absolute</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_var_def_blk\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Indent Var Def Cont]
+Category=2
+Description="<html>Whether to indent continued variable declarations instead of aligning.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_var_def_cont\s*=\s*true|indent_var_def_cont\s*=\s*false
+ValueDefault=false
+
+[Indent Shift]
+Category=2
+Description="<html>How to indent continued shift expressions ('&lt;&lt;' and '&gt;&gt;').<br/>Set align_left_shift=false when using this.<br/> 0: Align shift operators instead of indenting them (default)<br/> 1: Indent by one level<br/>-1: Preserve original indentation</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_shift\s*=\s*"
+MinVal=-1
+MaxVal=1
+ValueDefault=0
+
+[Indent Func Def Force Col1]
+Category=2
+Description="<html>Whether to force indentation of function definitions to start in column 1.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_func_def_force_col1\s*=\s*true|indent_func_def_force_col1\s*=\s*false
+ValueDefault=false
+
+[Indent Func Call Param]
+Category=2
+Description="<html>Whether to indent continued function call parameters one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_func_call_param\s*=\s*true|indent_func_call_param\s*=\s*false
+ValueDefault=false
+
+[Indent Func Def Param]
+Category=2
+Description="<html>Whether to indent continued function definition parameters one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_func_def_param\s*=\s*true|indent_func_def_param\s*=\s*false
+ValueDefault=false
+
+[Indent Func Def Param Paren Pos Threshold]
+Category=2
+Description="<html>for function definitions, only if indent_func_def_param is false<br/>Allows to align params when appropriate and indent them when not<br/>behave as if it was true if paren position is more than this value<br/>if paren position is more than the option value</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_func_def_param_paren_pos_threshold\s*=\s*"
+MinVal=0
+MaxVal=160
+ValueDefault=0
+
+[Indent Func Proto Param]
+Category=2
+Description="<html>Whether to indent continued function call prototype one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_func_proto_param\s*=\s*true|indent_func_proto_param\s*=\s*false
+ValueDefault=false
+
+[Indent Func Class Param]
+Category=2
+Description="<html>Whether to indent continued function call declaration one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_func_class_param\s*=\s*true|indent_func_class_param\s*=\s*false
+ValueDefault=false
+
+[Indent Func Ctor Var Param]
+Category=2
+Description="<html>Whether to indent continued class variable constructors one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_func_ctor_var_param\s*=\s*true|indent_func_ctor_var_param\s*=\s*false
+ValueDefault=false
+
+[Indent Template Param]
+Category=2
+Description="<html>Whether to indent continued template parameter list one indent level,<br/>rather than aligning parameters under the open parenthesis.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_template_param\s*=\s*true|indent_template_param\s*=\s*false
+ValueDefault=false
+
+[Indent Func Param Double]
+Category=2
+Description="<html>Double the indent for indent_func_xxx_param options.<br/>Use both values of the options indent_columns and indent_param.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_func_param_double\s*=\s*true|indent_func_param_double\s*=\s*false
+ValueDefault=false
+
+[Indent Func Const]
+Category=2
+Description="<html>Indentation column for standalone 'const' qualifier on a function<br/>prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_func_const\s*=\s*"
+MinVal=0
+MaxVal=69
+ValueDefault=0
+
+[Indent Func Throw]
+Category=2
+Description="<html>Indentation column for standalone 'throw' qualifier on a function<br/>prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_func_throw\s*=\s*"
+MinVal=0
+MaxVal=41
+ValueDefault=0
+
+[Indent Macro Brace]
+Category=2
+Description="<html>How to indent within a macro followed by a brace on the same line<br/>This allows reducing the indent in macros that have (for example)<br/>`do { ... } while ` blocks bracketing them.<br/><br/>true: add an indent for the brace on the same line as the macro<br/>false: do not add an indent for the brace on the same line as the macro<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_macro_brace\s*=\s*true|indent_macro_brace\s*=\s*false
+ValueDefault=true
+
+[Indent Member]
+Category=2
+Description="<html>The number of spaces to indent a continued '-&gt;' or '.'.<br/>Usually set to 0, 1, or indent_columns.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_member\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Member Single]
+Category=2
+Description="<html>Whether lines broken at '.' or '-&gt;' should be indented by a single indent.<br/>The indent_member option will not be effective if this is set to true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_member_single\s*=\s*true|indent_member_single\s*=\s*false
+ValueDefault=false
+
+[Indent Single Line Comments Before]
+Category=2
+Description="<html>Spaces to indent single line ('//') comments on lines before code.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_single_line_comments_before\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Single Line Comments After]
+Category=2
+Description="<html>Spaces to indent single line ('//') comments on lines after code.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_single_line_comments_after\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Sparen Extra]
+Category=2
+Description="<html>When opening a paren for a control statement (if, for, while, etc), increase<br/>the indent level by this value. Negative values decrease the indent level.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_sparen_extra\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Indent Relative Single Line Comments]
+Category=2
+Description="<html>Whether to indent trailing single line ('//') comments relative to the code<br/>instead of trying to keep the same absolute column.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_relative_single_line_comments\s*=\s*true|indent_relative_single_line_comments\s*=\s*false
+ValueDefault=false
+
+[Indent Switch Case]
+Category=2
+Description="<html>Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.<br/>It might be wise to choose the same value for the option indent_case_brace.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_switch_case\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Switch Body]
+Category=2
+Description="<html>Spaces to indent the body of a 'switch' before any 'case'.<br/>Usually the same as indent_columns or indent_switch_case.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_switch_body\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Ignore Case Brace]
+Category=2
+Description="<html>Whether to ignore indent for '{' following 'case'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_case_brace\s*=\s*true|indent_ignore_case_brace\s*=\s*false
+ValueDefault=false
+
+[Indent Case Brace]
+Category=2
+Description="<html>Spaces to indent '{' from 'case'. By default, the brace will appear under<br/>the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.<br/>It might be wise to choose the same value for the option indent_switch_case.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_case_brace\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Indent Switch Break With Case]
+Category=2
+Description="<html>indent 'break' with 'case' from 'switch'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_switch_break_with_case\s*=\s*true|indent_switch_break_with_case\s*=\s*false
+ValueDefault=false
+
+[Indent Switch Pp]
+Category=2
+Description="<html>Whether to indent preprocessor statements inside of switch statements.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_switch_pp\s*=\s*true|indent_switch_pp\s*=\s*false
+ValueDefault=true
+
+[Indent Case Shift]
+Category=2
+Description="<html>Spaces to shift the 'case' line, without affecting any other lines.<br/>Usually 0.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_case_shift\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Case Comment]
+Category=2
+Description="<html>Whether to align comments before 'case' with the 'case'.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_case_comment\s*=\s*true|indent_case_comment\s*=\s*false
+ValueDefault=true
+
+[Indent Comment]
+Category=2
+Description="<html>Whether to indent comments not found in first column.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_comment\s*=\s*true|indent_comment\s*=\s*false
+ValueDefault=true
+
+[Indent Col1 Comment]
+Category=2
+Description="<html>Whether to indent comments found in first column.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_col1_comment\s*=\s*true|indent_col1_comment\s*=\s*false
+ValueDefault=false
+
+[Indent Col1 Multi String Literal]
+Category=2
+Description="<html>Whether to indent multi string literal in first column.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_col1_multi_string_literal\s*=\s*true|indent_col1_multi_string_literal\s*=\s*false
+ValueDefault=false
+
+[Indent Comment Align Thresh]
+Category=2
+Description="<html>Align comments on adjacent lines that are this many columns apart or less.<br/><br/>Default: 3</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_comment_align_thresh\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=3
+
+[Indent Ignore Label]
+Category=2
+Description="<html>Whether to ignore indent for goto labels.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_label\s*=\s*true|indent_ignore_label\s*=\s*false
+ValueDefault=false
+
+[Indent Label]
+Category=2
+Description="<html>How to indent goto labels. Requires indent_ignore_label=false.<br/><br/> &gt;0: Absolute column where 1 is the leftmost column<br/>&lt;=0: Subtract from brace indent<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_label\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=1
+
+[Indent Access Spec]
+Category=2
+Description="<html>How to indent access specifiers that are followed by a<br/>colon.<br/><br/> &gt;0: Absolute column where 1 is the leftmost column<br/>&lt;=0: Subtract from brace indent<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_access_spec\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=1
+
+[Indent Access Spec Body]
+Category=2
+Description="<html>Whether to indent the code after an access specifier by one level.<br/>If true, this option forces 'indent_access_spec=0'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_access_spec_body\s*=\s*true|indent_access_spec_body\s*=\s*false
+ValueDefault=false
+
+[Indent Paren Nl]
+Category=2
+Description="<html>If an open parenthesis is followed by a newline, whether to indent the next<br/>line so that it lines up after the open parenthesis (not recommended).</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_paren_nl\s*=\s*true|indent_paren_nl\s*=\s*false
+ValueDefault=false
+
+[Indent Paren Close]
+Category=2
+Description="<html>How to indent a close parenthesis after a newline.<br/><br/> 0: Indent to body level (default)<br/> 1: Align under the open parenthesis<br/> 2: Indent to the brace level<br/>-1: Preserve original indentation</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_paren_close\s*=\s*"
+MinVal=-1
+MaxVal=2
+ValueDefault=0
+
+[Indent Paren After Func Def]
+Category=2
+Description="<html>Whether to indent the open parenthesis of a function definition,<br/>if the parenthesis is on its own line.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_paren_after_func_def\s*=\s*true|indent_paren_after_func_def\s*=\s*false
+ValueDefault=false
+
+[Indent Paren After Func Decl]
+Category=2
+Description="<html>Whether to indent the open parenthesis of a function declaration,<br/>if the parenthesis is on its own line.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_paren_after_func_decl\s*=\s*true|indent_paren_after_func_decl\s*=\s*false
+ValueDefault=false
+
+[Indent Paren After Func Call]
+Category=2
+Description="<html>Whether to indent the open parenthesis of a function call,<br/>if the parenthesis is on its own line.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_paren_after_func_call\s*=\s*true|indent_paren_after_func_call\s*=\s*false
+ValueDefault=false
+
+[Indent Comma Brace]
+Category=2
+Description="<html>How to indent a comma when inside braces.<br/> 0: Indent by one level (default)<br/> 1: Align under the open brace<br/>-1: Preserve original indentation</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_comma_brace\s*=\s*"
+MinVal=-1
+MaxVal=1
+ValueDefault=0
+
+[Indent Comma Paren]
+Category=2
+Description="<html>How to indent a comma when inside parentheses.<br/> 0: Indent by one level (default)<br/> 1: Align under the open parenthesis<br/>-1: Preserve original indentation</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_comma_paren\s*=\s*"
+MinVal=-1
+MaxVal=1
+ValueDefault=0
+
+[Indent Bool Paren]
+Category=2
+Description="<html>How to indent a Boolean operator when inside parentheses.<br/> 0: Indent by one level (default)<br/> 1: Align under the open parenthesis<br/>-1: Preserve original indentation</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_bool_paren\s*=\s*"
+MinVal=-1
+MaxVal=1
+ValueDefault=0
+
+[Indent Ignore Bool]
+Category=2
+Description="<html>Whether to ignore the indentation of a Boolean operator when outside<br/>parentheses.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_bool\s*=\s*true|indent_ignore_bool\s*=\s*false
+ValueDefault=false
+
+[Indent Ignore Arith]
+Category=2
+Description="<html>Whether to ignore the indentation of an arithmetic operator.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_arith\s*=\s*true|indent_ignore_arith\s*=\s*false
+ValueDefault=false
+
+[Indent Semicolon For Paren]
+Category=2
+Description="<html>Whether to indent a semicolon when inside a for parenthesis.<br/>If true, aligns under the open for parenthesis.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_semicolon_for_paren\s*=\s*true|indent_semicolon_for_paren\s*=\s*false
+ValueDefault=false
+
+[Indent Ignore Semicolon]
+Category=2
+Description="<html>Whether to ignore the indentation of a semicolon outside of a 'for'<br/>statement.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_semicolon\s*=\s*true|indent_ignore_semicolon\s*=\s*false
+ValueDefault=false
+
+[Indent First Bool Expr]
+Category=2
+Description="<html>Whether to align the first expression to following ones<br/>if indent_bool_paren=1.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_first_bool_expr\s*=\s*true|indent_first_bool_expr\s*=\s*false
+ValueDefault=false
+
+[Indent First For Expr]
+Category=2
+Description="<html>Whether to align the first expression to following ones<br/>if indent_semicolon_for_paren=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_first_for_expr\s*=\s*true|indent_first_for_expr\s*=\s*false
+ValueDefault=false
+
+[Indent Square Nl]
+Category=2
+Description="<html>If an open square is followed by a newline, whether to indent the next line<br/>so that it lines up after the open square (not recommended).</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_square_nl\s*=\s*true|indent_square_nl\s*=\s*false
+ValueDefault=false
+
+[Indent Preserve Sql]
+Category=2
+Description="<html>(ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_preserve_sql\s*=\s*true|indent_preserve_sql\s*=\s*false
+ValueDefault=false
+
+[Indent Ignore Assign]
+Category=2
+Description="<html>Whether to ignore the indentation of an assignment operator.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_assign\s*=\s*true|indent_ignore_assign\s*=\s*false
+ValueDefault=false
+
+[Indent Align Assign]
+Category=2
+Description="<html>Whether to align continued statements at the '='. If false or if the '=' is<br/>followed by a newline, the next line is indent one tab.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_align_assign\s*=\s*true|indent_align_assign\s*=\s*false
+ValueDefault=true
+
+[Indent Off After Assign]
+Category=2
+Description="<html>If true, the indentation of the chunks after a '=' sequence will be set at<br/>LHS token indentation column before '='.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_off_after_assign\s*=\s*true|indent_off_after_assign\s*=\s*false
+ValueDefault=false
+
+[Indent Align Paren]
+Category=2
+Description="<html>Whether to align continued statements at the '('. If false or the '(' is<br/>followed by a newline, the next line indent is one tab.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_align_paren\s*=\s*true|indent_align_paren\s*=\s*false
+ValueDefault=true
+
+[Indent Oc Inside Msg Sel]
+Category=2
+Description="<html>(OC) Whether to indent Objective-C code inside message selectors.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_inside_msg_sel\s*=\s*true|indent_oc_inside_msg_sel\s*=\s*false
+ValueDefault=false
+
+[Indent Oc Block]
+Category=2
+Description="<html>(OC) Whether to indent Objective-C blocks at brace level instead of usual<br/>rules.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_block\s*=\s*true|indent_oc_block\s*=\s*false
+ValueDefault=false
+
+[Indent Oc Block Msg]
+Category=2
+Description="<html>(OC) Indent for Objective-C blocks in a message relative to the parameter<br/>name.<br/><br/>=0: Use indent_oc_block rules<br/>&gt;0: Use specified number of spaces to indent</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_oc_block_msg\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Oc Msg Colon]
+Category=2
+Description="<html>(OC) Minimum indent for subsequent parameters</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_oc_msg_colon\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Indent Oc Msg Prioritize First Colon]
+Category=2
+Description="<html>(OC) Whether to prioritize aligning with initial colon (and stripping spaces<br/>from lines, if necessary).<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_msg_prioritize_first_colon\s*=\s*true|indent_oc_msg_prioritize_first_colon\s*=\s*false
+ValueDefault=true
+
+[Indent Oc Block Msg Xcode Style]
+Category=2
+Description="<html>(OC) Whether to indent blocks the way that Xcode does by default<br/>(from the keyword if the parameter is on its own line; otherwise, from the<br/>previous indentation level). Requires indent_oc_block_msg=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_block_msg_xcode_style\s*=\s*true|indent_oc_block_msg_xcode_style\s*=\s*false
+ValueDefault=false
+
+[Indent Oc Block Msg From Keyword]
+Category=2
+Description="<html>(OC) Whether to indent blocks from where the brace is, relative to a<br/>message keyword. Requires indent_oc_block_msg=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_block_msg_from_keyword\s*=\s*true|indent_oc_block_msg_from_keyword\s*=\s*false
+ValueDefault=false
+
+[Indent Oc Block Msg From Colon]
+Category=2
+Description="<html>(OC) Whether to indent blocks from where the brace is, relative to a message<br/>colon. Requires indent_oc_block_msg=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_block_msg_from_colon\s*=\s*true|indent_oc_block_msg_from_colon\s*=\s*false
+ValueDefault=false
+
+[Indent Oc Block Msg From Caret]
+Category=2
+Description="<html>(OC) Whether to indent blocks from where the block caret is.<br/>Requires indent_oc_block_msg=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_block_msg_from_caret\s*=\s*true|indent_oc_block_msg_from_caret\s*=\s*false
+ValueDefault=false
+
+[Indent Oc Block Msg From Brace]
+Category=2
+Description="<html>(OC) Whether to indent blocks from where the brace caret is.<br/>Requires indent_oc_block_msg=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_oc_block_msg_from_brace\s*=\s*true|indent_oc_block_msg_from_brace\s*=\s*false
+ValueDefault=false
+
+[Indent Min Vbrace Open]
+Category=2
+Description="<html>When indenting after virtual brace open and newline add further spaces to<br/>reach this minimum indent.</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_min_vbrace_open\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Indent Vbrace Open On Tabstop]
+Category=2
+Description="<html>Whether to add further spaces after regular indent to reach next tabstop<br/>when indenting after virtual brace open and newline.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_vbrace_open_on_tabstop\s*=\s*true|indent_vbrace_open_on_tabstop\s*=\s*false
+ValueDefault=false
+
+[Indent Token After Brace]
+Category=2
+Description="<html>How to indent after a brace followed by another token (not a newline).<br/>true: indent all contained lines to match the token<br/>false: indent all contained lines to match the brace<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_token_after_brace\s*=\s*true|indent_token_after_brace\s*=\s*false
+ValueDefault=true
+
+[Indent Cpp Lambda Body]
+Category=2
+Description="<html>Whether to indent the body of a C++11 lambda.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_cpp_lambda_body\s*=\s*true|indent_cpp_lambda_body\s*=\s*false
+ValueDefault=false
+
+[Indent Compound Literal Return]
+Category=2
+Description="<html>How to indent compound literals that are being returned.<br/>true: add both the indent from return &amp; the compound literal open brace<br/> (i.e. 2 indent levels)<br/>false: only indent 1 level, don't add the indent for the open brace, only<br/> add the indent for the return.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_compound_literal_return\s*=\s*true|indent_compound_literal_return\s*=\s*false
+ValueDefault=true
+
+[Indent Using Block]
+Category=2
+Description="<html>(C#) Whether to indent a 'using' block if no braces are used.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_using_block\s*=\s*true|indent_using_block\s*=\s*false
+ValueDefault=true
+
+[Indent Ternary Operator]
+Category=2
+Description="<html>How to indent the continuation of ternary operator.<br/><br/>0: Off (default)<br/>1: When the `if_false` is a continuation, indent it under the `if_true` branch<br/>2: When the `:` is a continuation, indent it under `?`</html>"
+Enabled=false
+EditorType=numeric
+CallName="indent_ternary_operator\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Indent Inside Ternary Operator]
+Category=2
+Description="<html>Whether to indent the statements inside ternary operator.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_inside_ternary_operator\s*=\s*true|indent_inside_ternary_operator\s*=\s*false
+ValueDefault=false
+
+[Indent Off After Return]
+Category=2
+Description="<html>If true, the indentation of the chunks after a `return` sequence will be set at return indentation column.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_off_after_return\s*=\s*true|indent_off_after_return\s*=\s*false
+ValueDefault=false
+
+[Indent Off After Return New]
+Category=2
+Description="<html>If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_off_after_return_new\s*=\s*true|indent_off_after_return_new\s*=\s*false
+ValueDefault=false
+
+[Indent Single After Return]
+Category=2
+Description="<html>If true, the tokens after return are indented with regular single indentation. By default (false) the indentation is after the return token.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_single_after_return\s*=\s*true|indent_single_after_return\s*=\s*false
+ValueDefault=false
+
+[Indent Ignore Asm Block]
+Category=2
+Description="<html>Whether to ignore indent and alignment for 'asm' blocks (i.e. assume they<br/>have their own indentation).</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_ignore_asm_block\s*=\s*true|indent_ignore_asm_block\s*=\s*false
+ValueDefault=false
+
+[Donot Indent Func Def Close Paren]
+Category=2
+Description="<html>Don't indent the close parenthesis of a function definition,<br/>if the parenthesis is on its own line.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=donot_indent_func_def_close_paren\s*=\s*true|donot_indent_func_def_close_paren\s*=\s*false
+ValueDefault=false
+
+[Nl Collapse Empty Body]
+Category=3
+Description="<html>Whether to collapse empty blocks between '{' and '}' except for functions.<br/>Use nl_collapse_empty_body_functions to specify how empty function braces<br/>should be formatted.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_collapse_empty_body\s*=\s*true|nl_collapse_empty_body\s*=\s*false
+ValueDefault=false
+
+[Nl Collapse Empty Body Functions]
+Category=3
+Description="<html>Whether to collapse empty blocks between '{' and '}' for functions only.<br/>If true, overrides nl_inside_empty_func.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_collapse_empty_body_functions\s*=\s*true|nl_collapse_empty_body_functions\s*=\s*false
+ValueDefault=false
+
+[Nl Assign Leave One Liners]
+Category=3
+Description="<html>Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_assign_leave_one_liners\s*=\s*true|nl_assign_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Class Leave One Liners]
+Category=3
+Description="<html>Don't split one-line braced statements inside a 'class xx { }' body.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_class_leave_one_liners\s*=\s*true|nl_class_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Enum Leave One Liners]
+Category=3
+Description="<html>Don't split one-line enums, as in 'enum foo { BAR = 15 };'</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_enum_leave_one_liners\s*=\s*true|nl_enum_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Getset Leave One Liners]
+Category=3
+Description="<html>Don't split one-line get or set functions.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_getset_leave_one_liners\s*=\s*true|nl_getset_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Cs Property Leave One Liners]
+Category=3
+Description="<html>(C#) Don't split one-line property get or set functions.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_cs_property_leave_one_liners\s*=\s*true|nl_cs_property_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Func Leave One Liners]
+Category=3
+Description="<html>Don't split one-line function definitions, as in 'int foo() { return 0; }'.<br/>might modify nl_func_type_name</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_leave_one_liners\s*=\s*true|nl_func_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Cpp Lambda Leave One Liners]
+Category=3
+Description="<html>Don't split one-line C++11 lambdas, as in '[]() { return 0; }'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_cpp_lambda_leave_one_liners\s*=\s*true|nl_cpp_lambda_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl If Leave One Liners]
+Category=3
+Description="<html>Don't split one-line if/else statements, as in 'if(...) b++;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_if_leave_one_liners\s*=\s*true|nl_if_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl While Leave One Liners]
+Category=3
+Description="<html>Don't split one-line while statements, as in 'while(...) b++;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_while_leave_one_liners\s*=\s*true|nl_while_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Do Leave One Liners]
+Category=3
+Description="<html>Don't split one-line do statements, as in 'do { b++; } while(...);'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_do_leave_one_liners\s*=\s*true|nl_do_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl For Leave One Liners]
+Category=3
+Description="<html>Don't split one-line for statements, as in 'for(...) b++;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_for_leave_one_liners\s*=\s*true|nl_for_leave_one_liners\s*=\s*false
+ValueDefault=false
+
+[Nl Oc Msg Leave One Liner]
+Category=3
+Description="<html>(OC) Don't split one-line Objective-C messages.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_oc_msg_leave_one_liner\s*=\s*true|nl_oc_msg_leave_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Oc Mdef Brace]
+Category=3
+Description="<html>(OC) Add or remove newline between method declaration and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_mdef_brace\s*=\s*ignore|nl_oc_mdef_brace\s*=\s*add|nl_oc_mdef_brace\s*=\s*remove|nl_oc_mdef_brace\s*=\s*force|nl_oc_mdef_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Mdef Brace|Add Nl Oc Mdef Brace|Remove Nl Oc Mdef Brace|Force Nl Oc Mdef Brace"
+ValueDefault=ignore
+
+[Nl Oc Block Brace]
+Category=3
+Description="<html>(OC) Add or remove newline between Objective-C block signature and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_block_brace\s*=\s*ignore|nl_oc_block_brace\s*=\s*add|nl_oc_block_brace\s*=\s*remove|nl_oc_block_brace\s*=\s*force|nl_oc_block_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Block Brace|Add Nl Oc Block Brace|Remove Nl Oc Block Brace|Force Nl Oc Block Brace"
+ValueDefault=ignore
+
+[Nl Oc Before Interface]
+Category=3
+Description="<html>(OC) Add or remove blank line before '@interface' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_before_interface\s*=\s*ignore|nl_oc_before_interface\s*=\s*add|nl_oc_before_interface\s*=\s*remove|nl_oc_before_interface\s*=\s*force|nl_oc_before_interface\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Before Interface|Add Nl Oc Before Interface|Remove Nl Oc Before Interface|Force Nl Oc Before Interface"
+ValueDefault=ignore
+
+[Nl Oc Before Implementation]
+Category=3
+Description="<html>(OC) Add or remove blank line before '@implementation' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_before_implementation\s*=\s*ignore|nl_oc_before_implementation\s*=\s*add|nl_oc_before_implementation\s*=\s*remove|nl_oc_before_implementation\s*=\s*force|nl_oc_before_implementation\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Before Implementation|Add Nl Oc Before Implementation|Remove Nl Oc Before Implementation|Force Nl Oc Before Implementation"
+ValueDefault=ignore
+
+[Nl Oc Before End]
+Category=3
+Description="<html>(OC) Add or remove blank line before '@end' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_before_end\s*=\s*ignore|nl_oc_before_end\s*=\s*add|nl_oc_before_end\s*=\s*remove|nl_oc_before_end\s*=\s*force|nl_oc_before_end\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Before End|Add Nl Oc Before End|Remove Nl Oc Before End|Force Nl Oc Before End"
+ValueDefault=ignore
+
+[Nl Oc Interface Brace]
+Category=3
+Description="<html>(OC) Add or remove newline between '@interface' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_interface_brace\s*=\s*ignore|nl_oc_interface_brace\s*=\s*add|nl_oc_interface_brace\s*=\s*remove|nl_oc_interface_brace\s*=\s*force|nl_oc_interface_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Interface Brace|Add Nl Oc Interface Brace|Remove Nl Oc Interface Brace|Force Nl Oc Interface Brace"
+ValueDefault=ignore
+
+[Nl Oc Implementation Brace]
+Category=3
+Description="<html>(OC) Add or remove newline between '@implementation' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_implementation_brace\s*=\s*ignore|nl_oc_implementation_brace\s*=\s*add|nl_oc_implementation_brace\s*=\s*remove|nl_oc_implementation_brace\s*=\s*force|nl_oc_implementation_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Implementation Brace|Add Nl Oc Implementation Brace|Remove Nl Oc Implementation Brace|Force Nl Oc Implementation Brace"
+ValueDefault=ignore
+
+[Nl Start Of File]
+Category=3
+Description="<html>Add or remove newlines at the start of the file.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_start_of_file\s*=\s*ignore|nl_start_of_file\s*=\s*add|nl_start_of_file\s*=\s*remove|nl_start_of_file\s*=\s*force|nl_start_of_file\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Start Of File|Add Nl Start Of File|Remove Nl Start Of File|Force Nl Start Of File"
+ValueDefault=ignore
+
+[Nl Start Of File Min]
+Category=3
+Description="<html>The minimum number of newlines at the start of the file (only used if<br/>nl_start_of_file is 'add' or 'force').</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_start_of_file_min\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl End Of File]
+Category=3
+Description="<html>Add or remove newline at the end of the file.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_end_of_file\s*=\s*ignore|nl_end_of_file\s*=\s*add|nl_end_of_file\s*=\s*remove|nl_end_of_file\s*=\s*force|nl_end_of_file\s*=\s*not_defined
+ChoicesReadable="Ignore Nl End Of File|Add Nl End Of File|Remove Nl End Of File|Force Nl End Of File"
+ValueDefault=ignore
+
+[Nl End Of File Min]
+Category=3
+Description="<html>The minimum number of newlines at the end of the file (only used if<br/>nl_end_of_file is 'add' or 'force').</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_end_of_file_min\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Assign Brace]
+Category=3
+Description="<html>Add or remove newline between '=' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_assign_brace\s*=\s*ignore|nl_assign_brace\s*=\s*add|nl_assign_brace\s*=\s*remove|nl_assign_brace\s*=\s*force|nl_assign_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Assign Brace|Add Nl Assign Brace|Remove Nl Assign Brace|Force Nl Assign Brace"
+ValueDefault=ignore
+
+[Nl Assign Square]
+Category=3
+Description="<html>(D) Add or remove newline between '=' and '['.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_assign_square\s*=\s*ignore|nl_assign_square\s*=\s*add|nl_assign_square\s*=\s*remove|nl_assign_square\s*=\s*force|nl_assign_square\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Assign Square|Add Nl Assign Square|Remove Nl Assign Square|Force Nl Assign Square"
+ValueDefault=ignore
+
+[Nl Tsquare Brace]
+Category=3
+Description="<html>Add or remove newline between '[]' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_tsquare_brace\s*=\s*ignore|nl_tsquare_brace\s*=\s*add|nl_tsquare_brace\s*=\s*remove|nl_tsquare_brace\s*=\s*force|nl_tsquare_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Tsquare Brace|Add Nl Tsquare Brace|Remove Nl Tsquare Brace|Force Nl Tsquare Brace"
+ValueDefault=ignore
+
+[Nl After Square Assign]
+Category=3
+Description="<html>(D) Add or remove newline after '= ['. Will also affect the newline before<br/>the ']'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_square_assign\s*=\s*ignore|nl_after_square_assign\s*=\s*add|nl_after_square_assign\s*=\s*remove|nl_after_square_assign\s*=\s*force|nl_after_square_assign\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After Square Assign|Add Nl After Square Assign|Remove Nl After Square Assign|Force Nl After Square Assign"
+ValueDefault=ignore
+
+[Nl Fcall Brace]
+Category=3
+Description="<html>Add or remove newline between a function call's ')' and '{', as in<br/>'list_for_each(item, &amp;list) { }'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_fcall_brace\s*=\s*ignore|nl_fcall_brace\s*=\s*add|nl_fcall_brace\s*=\s*remove|nl_fcall_brace\s*=\s*force|nl_fcall_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Fcall Brace|Add Nl Fcall Brace|Remove Nl Fcall Brace|Force Nl Fcall Brace"
+ValueDefault=ignore
+
+[Nl Enum Brace]
+Category=3
+Description="<html>Add or remove newline between 'enum' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_enum_brace\s*=\s*ignore|nl_enum_brace\s*=\s*add|nl_enum_brace\s*=\s*remove|nl_enum_brace\s*=\s*force|nl_enum_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Enum Brace|Add Nl Enum Brace|Remove Nl Enum Brace|Force Nl Enum Brace"
+ValueDefault=ignore
+
+[Nl Enum Class]
+Category=3
+Description="<html>Add or remove newline between 'enum' and 'class'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_enum_class\s*=\s*ignore|nl_enum_class\s*=\s*add|nl_enum_class\s*=\s*remove|nl_enum_class\s*=\s*force|nl_enum_class\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Enum Class|Add Nl Enum Class|Remove Nl Enum Class|Force Nl Enum Class"
+ValueDefault=ignore
+
+[Nl Enum Class Identifier]
+Category=3
+Description="<html>Add or remove newline between 'enum class' and the identifier.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_enum_class_identifier\s*=\s*ignore|nl_enum_class_identifier\s*=\s*add|nl_enum_class_identifier\s*=\s*remove|nl_enum_class_identifier\s*=\s*force|nl_enum_class_identifier\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Enum Class Identifier|Add Nl Enum Class Identifier|Remove Nl Enum Class Identifier|Force Nl Enum Class Identifier"
+ValueDefault=ignore
+
+[Nl Enum Identifier Colon]
+Category=3
+Description="<html>Add or remove newline between 'enum class' type and ':'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_enum_identifier_colon\s*=\s*ignore|nl_enum_identifier_colon\s*=\s*add|nl_enum_identifier_colon\s*=\s*remove|nl_enum_identifier_colon\s*=\s*force|nl_enum_identifier_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Enum Identifier Colon|Add Nl Enum Identifier Colon|Remove Nl Enum Identifier Colon|Force Nl Enum Identifier Colon"
+ValueDefault=ignore
+
+[Nl Enum Colon Type]
+Category=3
+Description="<html>Add or remove newline between 'enum class identifier :' and type.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_enum_colon_type\s*=\s*ignore|nl_enum_colon_type\s*=\s*add|nl_enum_colon_type\s*=\s*remove|nl_enum_colon_type\s*=\s*force|nl_enum_colon_type\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Enum Colon Type|Add Nl Enum Colon Type|Remove Nl Enum Colon Type|Force Nl Enum Colon Type"
+ValueDefault=ignore
+
+[Nl Struct Brace]
+Category=3
+Description="<html>Add or remove newline between 'struct and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_struct_brace\s*=\s*ignore|nl_struct_brace\s*=\s*add|nl_struct_brace\s*=\s*remove|nl_struct_brace\s*=\s*force|nl_struct_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Struct Brace|Add Nl Struct Brace|Remove Nl Struct Brace|Force Nl Struct Brace"
+ValueDefault=ignore
+
+[Nl Union Brace]
+Category=3
+Description="<html>Add or remove newline between 'union' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_union_brace\s*=\s*ignore|nl_union_brace\s*=\s*add|nl_union_brace\s*=\s*remove|nl_union_brace\s*=\s*force|nl_union_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Union Brace|Add Nl Union Brace|Remove Nl Union Brace|Force Nl Union Brace"
+ValueDefault=ignore
+
+[Nl If Brace]
+Category=3
+Description="<html>Add or remove newline between 'if' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_if_brace\s*=\s*ignore|nl_if_brace\s*=\s*add|nl_if_brace\s*=\s*remove|nl_if_brace\s*=\s*force|nl_if_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl If Brace|Add Nl If Brace|Remove Nl If Brace|Force Nl If Brace"
+ValueDefault=ignore
+
+[Nl Brace Else]
+Category=3
+Description="<html>Add or remove newline between '}' and 'else'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_else\s*=\s*ignore|nl_brace_else\s*=\s*add|nl_brace_else\s*=\s*remove|nl_brace_else\s*=\s*force|nl_brace_else\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace Else|Add Nl Brace Else|Remove Nl Brace Else|Force Nl Brace Else"
+ValueDefault=ignore
+
+[Nl Elseif Brace]
+Category=3
+Description="<html>Add or remove newline between 'else if' and '{'. If set to ignore,<br/>nl_if_brace is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_elseif_brace\s*=\s*ignore|nl_elseif_brace\s*=\s*add|nl_elseif_brace\s*=\s*remove|nl_elseif_brace\s*=\s*force|nl_elseif_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Elseif Brace|Add Nl Elseif Brace|Remove Nl Elseif Brace|Force Nl Elseif Brace"
+ValueDefault=ignore
+
+[Nl Else Brace]
+Category=3
+Description="<html>Add or remove newline between 'else' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_else_brace\s*=\s*ignore|nl_else_brace\s*=\s*add|nl_else_brace\s*=\s*remove|nl_else_brace\s*=\s*force|nl_else_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Else Brace|Add Nl Else Brace|Remove Nl Else Brace|Force Nl Else Brace"
+ValueDefault=ignore
+
+[Nl Else If]
+Category=3
+Description="<html>Add or remove newline between 'else' and 'if'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_else_if\s*=\s*ignore|nl_else_if\s*=\s*add|nl_else_if\s*=\s*remove|nl_else_if\s*=\s*force|nl_else_if\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Else If|Add Nl Else If|Remove Nl Else If|Force Nl Else If"
+ValueDefault=ignore
+
+[Nl Before Opening Brace Func Class Def]
+Category=3
+Description="<html>Add or remove newline before '{' opening brace</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_opening_brace_func_class_def\s*=\s*ignore|nl_before_opening_brace_func_class_def\s*=\s*add|nl_before_opening_brace_func_class_def\s*=\s*remove|nl_before_opening_brace_func_class_def\s*=\s*force|nl_before_opening_brace_func_class_def\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before Opening Brace Func Class Def|Add Nl Before Opening Brace Func Class Def|Remove Nl Before Opening Brace Func Class Def|Force Nl Before Opening Brace Func Class Def"
+ValueDefault=ignore
+
+[Nl Before If Closing Paren]
+Category=3
+Description="<html>Add or remove newline before 'if'/'else if' closing parenthesis.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_if_closing_paren\s*=\s*ignore|nl_before_if_closing_paren\s*=\s*add|nl_before_if_closing_paren\s*=\s*remove|nl_before_if_closing_paren\s*=\s*force|nl_before_if_closing_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before If Closing Paren|Add Nl Before If Closing Paren|Remove Nl Before If Closing Paren|Force Nl Before If Closing Paren"
+ValueDefault=ignore
+
+[Nl Brace Finally]
+Category=3
+Description="<html>Add or remove newline between '}' and 'finally'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_finally\s*=\s*ignore|nl_brace_finally\s*=\s*add|nl_brace_finally\s*=\s*remove|nl_brace_finally\s*=\s*force|nl_brace_finally\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace Finally|Add Nl Brace Finally|Remove Nl Brace Finally|Force Nl Brace Finally"
+ValueDefault=ignore
+
+[Nl Finally Brace]
+Category=3
+Description="<html>Add or remove newline between 'finally' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_finally_brace\s*=\s*ignore|nl_finally_brace\s*=\s*add|nl_finally_brace\s*=\s*remove|nl_finally_brace\s*=\s*force|nl_finally_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Finally Brace|Add Nl Finally Brace|Remove Nl Finally Brace|Force Nl Finally Brace"
+ValueDefault=ignore
+
+[Nl Try Brace]
+Category=3
+Description="<html>Add or remove newline between 'try' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_try_brace\s*=\s*ignore|nl_try_brace\s*=\s*add|nl_try_brace\s*=\s*remove|nl_try_brace\s*=\s*force|nl_try_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Try Brace|Add Nl Try Brace|Remove Nl Try Brace|Force Nl Try Brace"
+ValueDefault=ignore
+
+[Nl Getset Brace]
+Category=3
+Description="<html>Add or remove newline between get/set and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_getset_brace\s*=\s*ignore|nl_getset_brace\s*=\s*add|nl_getset_brace\s*=\s*remove|nl_getset_brace\s*=\s*force|nl_getset_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Getset Brace|Add Nl Getset Brace|Remove Nl Getset Brace|Force Nl Getset Brace"
+ValueDefault=ignore
+
+[Nl For Brace]
+Category=3
+Description="<html>Add or remove newline between 'for' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_for_brace\s*=\s*ignore|nl_for_brace\s*=\s*add|nl_for_brace\s*=\s*remove|nl_for_brace\s*=\s*force|nl_for_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl For Brace|Add Nl For Brace|Remove Nl For Brace|Force Nl For Brace"
+ValueDefault=ignore
+
+[Nl Catch Brace]
+Category=3
+Description="<html>Add or remove newline before the '{' of a 'catch' statement, as in<br/>'catch (decl) &lt;here&gt; {'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_catch_brace\s*=\s*ignore|nl_catch_brace\s*=\s*add|nl_catch_brace\s*=\s*remove|nl_catch_brace\s*=\s*force|nl_catch_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Catch Brace|Add Nl Catch Brace|Remove Nl Catch Brace|Force Nl Catch Brace"
+ValueDefault=ignore
+
+[Nl Oc Catch Brace]
+Category=3
+Description="<html>(OC) Add or remove newline before the '{' of a '@catch' statement, as in<br/>'@catch (decl) &lt;here&gt; {'. If set to ignore, nl_catch_brace is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_catch_brace\s*=\s*ignore|nl_oc_catch_brace\s*=\s*add|nl_oc_catch_brace\s*=\s*remove|nl_oc_catch_brace\s*=\s*force|nl_oc_catch_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Catch Brace|Add Nl Oc Catch Brace|Remove Nl Oc Catch Brace|Force Nl Oc Catch Brace"
+ValueDefault=ignore
+
+[Nl Brace Catch]
+Category=3
+Description="<html>Add or remove newline between '}' and 'catch'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_catch\s*=\s*ignore|nl_brace_catch\s*=\s*add|nl_brace_catch\s*=\s*remove|nl_brace_catch\s*=\s*force|nl_brace_catch\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace Catch|Add Nl Brace Catch|Remove Nl Brace Catch|Force Nl Brace Catch"
+ValueDefault=ignore
+
+[Nl Oc Brace Catch]
+Category=3
+Description="<html>(OC) Add or remove newline between '}' and '@catch'. If set to ignore,<br/>nl_brace_catch is used.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_oc_brace_catch\s*=\s*ignore|nl_oc_brace_catch\s*=\s*add|nl_oc_brace_catch\s*=\s*remove|nl_oc_brace_catch\s*=\s*force|nl_oc_brace_catch\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Oc Brace Catch|Add Nl Oc Brace Catch|Remove Nl Oc Brace Catch|Force Nl Oc Brace Catch"
+ValueDefault=ignore
+
+[Nl Brace Square]
+Category=3
+Description="<html>Add or remove newline between '}' and ']'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_square\s*=\s*ignore|nl_brace_square\s*=\s*add|nl_brace_square\s*=\s*remove|nl_brace_square\s*=\s*force|nl_brace_square\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace Square|Add Nl Brace Square|Remove Nl Brace Square|Force Nl Brace Square"
+ValueDefault=ignore
+
+[Nl Brace Fparen]
+Category=3
+Description="<html>Add or remove newline between '}' and ')' in a function invocation.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_fparen\s*=\s*ignore|nl_brace_fparen\s*=\s*add|nl_brace_fparen\s*=\s*remove|nl_brace_fparen\s*=\s*force|nl_brace_fparen\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace Fparen|Add Nl Brace Fparen|Remove Nl Brace Fparen|Force Nl Brace Fparen"
+ValueDefault=ignore
+
+[Nl While Brace]
+Category=3
+Description="<html>Add or remove newline between 'while' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_while_brace\s*=\s*ignore|nl_while_brace\s*=\s*add|nl_while_brace\s*=\s*remove|nl_while_brace\s*=\s*force|nl_while_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl While Brace|Add Nl While Brace|Remove Nl While Brace|Force Nl While Brace"
+ValueDefault=ignore
+
+[Nl Scope Brace]
+Category=3
+Description="<html>(D) Add or remove newline between 'scope (x)' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_scope_brace\s*=\s*ignore|nl_scope_brace\s*=\s*add|nl_scope_brace\s*=\s*remove|nl_scope_brace\s*=\s*force|nl_scope_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Scope Brace|Add Nl Scope Brace|Remove Nl Scope Brace|Force Nl Scope Brace"
+ValueDefault=ignore
+
+[Nl Unittest Brace]
+Category=3
+Description="<html>(D) Add or remove newline between 'unittest' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_unittest_brace\s*=\s*ignore|nl_unittest_brace\s*=\s*add|nl_unittest_brace\s*=\s*remove|nl_unittest_brace\s*=\s*force|nl_unittest_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Unittest Brace|Add Nl Unittest Brace|Remove Nl Unittest Brace|Force Nl Unittest Brace"
+ValueDefault=ignore
+
+[Nl Version Brace]
+Category=3
+Description="<html>(D) Add or remove newline between 'version (x)' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_version_brace\s*=\s*ignore|nl_version_brace\s*=\s*add|nl_version_brace\s*=\s*remove|nl_version_brace\s*=\s*force|nl_version_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Version Brace|Add Nl Version Brace|Remove Nl Version Brace|Force Nl Version Brace"
+ValueDefault=ignore
+
+[Nl Using Brace]
+Category=3
+Description="<html>(C#) Add or remove newline between 'using' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_using_brace\s*=\s*ignore|nl_using_brace\s*=\s*add|nl_using_brace\s*=\s*remove|nl_using_brace\s*=\s*force|nl_using_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Using Brace|Add Nl Using Brace|Remove Nl Using Brace|Force Nl Using Brace"
+ValueDefault=ignore
+
+[Nl Brace Brace]
+Category=3
+Description="<html>Add or remove newline between two open or close braces. Due to general<br/>newline/brace handling, REMOVE may not work.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_brace\s*=\s*ignore|nl_brace_brace\s*=\s*add|nl_brace_brace\s*=\s*remove|nl_brace_brace\s*=\s*force|nl_brace_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace Brace|Add Nl Brace Brace|Remove Nl Brace Brace|Force Nl Brace Brace"
+ValueDefault=ignore
+
+[Nl Do Brace]
+Category=3
+Description="<html>Add or remove newline between 'do' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_do_brace\s*=\s*ignore|nl_do_brace\s*=\s*add|nl_do_brace\s*=\s*remove|nl_do_brace\s*=\s*force|nl_do_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Do Brace|Add Nl Do Brace|Remove Nl Do Brace|Force Nl Do Brace"
+ValueDefault=ignore
+
+[Nl Brace While]
+Category=3
+Description="<html>Add or remove newline between '}' and 'while' of 'do' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_while\s*=\s*ignore|nl_brace_while\s*=\s*add|nl_brace_while\s*=\s*remove|nl_brace_while\s*=\s*force|nl_brace_while\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace While|Add Nl Brace While|Remove Nl Brace While|Force Nl Brace While"
+ValueDefault=ignore
+
+[Nl Switch Brace]
+Category=3
+Description="<html>Add or remove newline between 'switch' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_switch_brace\s*=\s*ignore|nl_switch_brace\s*=\s*add|nl_switch_brace\s*=\s*remove|nl_switch_brace\s*=\s*force|nl_switch_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Switch Brace|Add Nl Switch Brace|Remove Nl Switch Brace|Force Nl Switch Brace"
+ValueDefault=ignore
+
+[Nl Synchronized Brace]
+Category=3
+Description="<html>Add or remove newline between 'synchronized' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_synchronized_brace\s*=\s*ignore|nl_synchronized_brace\s*=\s*add|nl_synchronized_brace\s*=\s*remove|nl_synchronized_brace\s*=\s*force|nl_synchronized_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Synchronized Brace|Add Nl Synchronized Brace|Remove Nl Synchronized Brace|Force Nl Synchronized Brace"
+ValueDefault=ignore
+
+[Nl Multi Line Cond]
+Category=3
+Description="<html>Add a newline between ')' and '{' if the ')' is on a different line than the<br/>if/for/etc.<br/><br/>Overrides nl_for_brace, nl_if_brace, nl_switch_brace, nl_while_switch and<br/>nl_catch_brace.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_multi_line_cond\s*=\s*true|nl_multi_line_cond\s*=\s*false
+ValueDefault=false
+
+[Nl Multi Line Sparen Open]
+Category=3
+Description="<html>Add a newline after '(' if an if/for/while/switch condition spans multiple<br/>lines</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_multi_line_sparen_open\s*=\s*ignore|nl_multi_line_sparen_open\s*=\s*add|nl_multi_line_sparen_open\s*=\s*remove|nl_multi_line_sparen_open\s*=\s*force|nl_multi_line_sparen_open\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Multi Line Sparen Open|Add Nl Multi Line Sparen Open|Remove Nl Multi Line Sparen Open|Force Nl Multi Line Sparen Open"
+ValueDefault=ignore
+
+[Nl Multi Line Sparen Close]
+Category=3
+Description="<html>Add a newline before ')' if an if/for/while/switch condition spans multiple<br/>lines. Overrides nl_before_if_closing_paren if both are specified.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_multi_line_sparen_close\s*=\s*ignore|nl_multi_line_sparen_close\s*=\s*add|nl_multi_line_sparen_close\s*=\s*remove|nl_multi_line_sparen_close\s*=\s*force|nl_multi_line_sparen_close\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Multi Line Sparen Close|Add Nl Multi Line Sparen Close|Remove Nl Multi Line Sparen Close|Force Nl Multi Line Sparen Close"
+ValueDefault=ignore
+
+[Nl Multi Line Define]
+Category=3
+Description="<html>Force a newline in a define after the macro name for multi-line defines.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_multi_line_define\s*=\s*true|nl_multi_line_define\s*=\s*false
+ValueDefault=false
+
+[Nl Before Case]
+Category=3
+Description="<html>Whether to add a newline before 'case', and a blank line before a 'case'<br/>statement that follows a ';' or '}'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_before_case\s*=\s*true|nl_before_case\s*=\s*false
+ValueDefault=false
+
+[Nl After Case]
+Category=3
+Description="<html>Whether to add a newline after a 'case' statement.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_case\s*=\s*true|nl_after_case\s*=\s*false
+ValueDefault=false
+
+[Nl Case Colon Brace]
+Category=3
+Description="<html>Add or remove newline between a case ':' and '{'.<br/><br/>Overrides nl_after_case.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_case_colon_brace\s*=\s*ignore|nl_case_colon_brace\s*=\s*add|nl_case_colon_brace\s*=\s*remove|nl_case_colon_brace\s*=\s*force|nl_case_colon_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Case Colon Brace|Add Nl Case Colon Brace|Remove Nl Case Colon Brace|Force Nl Case Colon Brace"
+ValueDefault=ignore
+
+[Nl Before Throw]
+Category=3
+Description="<html>Add or remove newline between ')' and 'throw'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_throw\s*=\s*ignore|nl_before_throw\s*=\s*add|nl_before_throw\s*=\s*remove|nl_before_throw\s*=\s*force|nl_before_throw\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before Throw|Add Nl Before Throw|Remove Nl Before Throw|Force Nl Before Throw"
+ValueDefault=ignore
+
+[Nl Namespace Brace]
+Category=3
+Description="<html>Add or remove newline between 'namespace' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_namespace_brace\s*=\s*ignore|nl_namespace_brace\s*=\s*add|nl_namespace_brace\s*=\s*remove|nl_namespace_brace\s*=\s*force|nl_namespace_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Namespace Brace|Add Nl Namespace Brace|Remove Nl Namespace Brace|Force Nl Namespace Brace"
+ValueDefault=ignore
+
+[Nl Template Class]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template class.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_class\s*=\s*ignore|nl_template_class\s*=\s*add|nl_template_class\s*=\s*remove|nl_template_class\s*=\s*force|nl_template_class\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Class|Add Nl Template Class|Remove Nl Template Class|Force Nl Template Class"
+ValueDefault=ignore
+
+[Nl Template Class Decl]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template class declaration.<br/><br/>Overrides nl_template_class.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_class_decl\s*=\s*ignore|nl_template_class_decl\s*=\s*add|nl_template_class_decl\s*=\s*remove|nl_template_class_decl\s*=\s*force|nl_template_class_decl\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Class Decl|Add Nl Template Class Decl|Remove Nl Template Class Decl|Force Nl Template Class Decl"
+ValueDefault=ignore
+
+[Nl Template Class Decl Special]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized class declaration.<br/><br/>Overrides nl_template_class_decl.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_class_decl_special\s*=\s*ignore|nl_template_class_decl_special\s*=\s*add|nl_template_class_decl_special\s*=\s*remove|nl_template_class_decl_special\s*=\s*force|nl_template_class_decl_special\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Class Decl Special|Add Nl Template Class Decl Special|Remove Nl Template Class Decl Special|Force Nl Template Class Decl Special"
+ValueDefault=ignore
+
+[Nl Template Class Def]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template class definition.<br/><br/>Overrides nl_template_class.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_class_def\s*=\s*ignore|nl_template_class_def\s*=\s*add|nl_template_class_def\s*=\s*remove|nl_template_class_def\s*=\s*force|nl_template_class_def\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Class Def|Add Nl Template Class Def|Remove Nl Template Class Def|Force Nl Template Class Def"
+ValueDefault=ignore
+
+[Nl Template Class Def Special]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized class definition.<br/><br/>Overrides nl_template_class_def.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_class_def_special\s*=\s*ignore|nl_template_class_def_special\s*=\s*add|nl_template_class_def_special\s*=\s*remove|nl_template_class_def_special\s*=\s*force|nl_template_class_def_special\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Class Def Special|Add Nl Template Class Def Special|Remove Nl Template Class Def Special|Force Nl Template Class Def Special"
+ValueDefault=ignore
+
+[Nl Template Func]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template function.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_func\s*=\s*ignore|nl_template_func\s*=\s*add|nl_template_func\s*=\s*remove|nl_template_func\s*=\s*force|nl_template_func\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Func|Add Nl Template Func|Remove Nl Template Func|Force Nl Template Func"
+ValueDefault=ignore
+
+[Nl Template Func Decl]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template function<br/>declaration.<br/><br/>Overrides nl_template_func.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_func_decl\s*=\s*ignore|nl_template_func_decl\s*=\s*add|nl_template_func_decl\s*=\s*remove|nl_template_func_decl\s*=\s*force|nl_template_func_decl\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Func Decl|Add Nl Template Func Decl|Remove Nl Template Func Decl|Force Nl Template Func Decl"
+ValueDefault=ignore
+
+[Nl Template Func Decl Special]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized function<br/>declaration.<br/><br/>Overrides nl_template_func_decl.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_func_decl_special\s*=\s*ignore|nl_template_func_decl_special\s*=\s*add|nl_template_func_decl_special\s*=\s*remove|nl_template_func_decl_special\s*=\s*force|nl_template_func_decl_special\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Func Decl Special|Add Nl Template Func Decl Special|Remove Nl Template Func Decl Special|Force Nl Template Func Decl Special"
+ValueDefault=ignore
+
+[Nl Template Func Def]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template function<br/>definition.<br/><br/>Overrides nl_template_func.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_func_def\s*=\s*ignore|nl_template_func_def\s*=\s*add|nl_template_func_def\s*=\s*remove|nl_template_func_def\s*=\s*force|nl_template_func_def\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Func Def|Add Nl Template Func Def|Remove Nl Template Func Def|Force Nl Template Func Def"
+ValueDefault=ignore
+
+[Nl Template Func Def Special]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;&gt;' of a specialized function<br/>definition.<br/><br/>Overrides nl_template_func_def.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_func_def_special\s*=\s*ignore|nl_template_func_def_special\s*=\s*add|nl_template_func_def_special\s*=\s*remove|nl_template_func_def_special\s*=\s*force|nl_template_func_def_special\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Func Def Special|Add Nl Template Func Def Special|Remove Nl Template Func Def Special|Force Nl Template Func Def Special"
+ValueDefault=ignore
+
+[Nl Template Var]
+Category=3
+Description="<html>Add or remove newline after 'template&lt;...&gt;' of a template variable.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_var\s*=\s*ignore|nl_template_var\s*=\s*add|nl_template_var\s*=\s*remove|nl_template_var\s*=\s*force|nl_template_var\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Var|Add Nl Template Var|Remove Nl Template Var|Force Nl Template Var"
+ValueDefault=ignore
+
+[Nl Template Using]
+Category=3
+Description="<html>Add or remove newline between 'template&lt;...&gt;' and 'using' of a templated<br/>type alias.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_template_using\s*=\s*ignore|nl_template_using\s*=\s*add|nl_template_using\s*=\s*remove|nl_template_using\s*=\s*force|nl_template_using\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Template Using|Add Nl Template Using|Remove Nl Template Using|Force Nl Template Using"
+ValueDefault=ignore
+
+[Nl Class Brace]
+Category=3
+Description="<html>Add or remove newline between 'class' and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_class_brace\s*=\s*ignore|nl_class_brace\s*=\s*add|nl_class_brace\s*=\s*remove|nl_class_brace\s*=\s*force|nl_class_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Class Brace|Add Nl Class Brace|Remove Nl Class Brace|Force Nl Class Brace"
+ValueDefault=ignore
+
+[Nl Class Init Args]
+Category=3
+Description="<html>Add or remove newline before or after (depending on pos_class_comma,<br/>may not be IGNORE) each',' in the base class list.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_class_init_args\s*=\s*ignore|nl_class_init_args\s*=\s*add|nl_class_init_args\s*=\s*remove|nl_class_init_args\s*=\s*force|nl_class_init_args\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Class Init Args|Add Nl Class Init Args|Remove Nl Class Init Args|Force Nl Class Init Args"
+ValueDefault=ignore
+
+[Nl Constr Init Args]
+Category=3
+Description="<html>Add or remove newline after each ',' in the constructor member<br/>initialization. Related to nl_constr_colon, pos_constr_colon and<br/>pos_constr_comma.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_constr_init_args\s*=\s*ignore|nl_constr_init_args\s*=\s*add|nl_constr_init_args\s*=\s*remove|nl_constr_init_args\s*=\s*force|nl_constr_init_args\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Constr Init Args|Add Nl Constr Init Args|Remove Nl Constr Init Args|Force Nl Constr Init Args"
+ValueDefault=ignore
+
+[Nl Enum Own Lines]
+Category=3
+Description="<html>Add or remove newline before first element, after comma, and after last<br/>element, in 'enum'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_enum_own_lines\s*=\s*ignore|nl_enum_own_lines\s*=\s*add|nl_enum_own_lines\s*=\s*remove|nl_enum_own_lines\s*=\s*force|nl_enum_own_lines\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Enum Own Lines|Add Nl Enum Own Lines|Remove Nl Enum Own Lines|Force Nl Enum Own Lines"
+ValueDefault=ignore
+
+[Nl Func Type Name]
+Category=3
+Description="<html>Add or remove newline between return type and function name in a function<br/>definition.<br/>might be modified by nl_func_leave_one_liners</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_type_name\s*=\s*ignore|nl_func_type_name\s*=\s*add|nl_func_type_name\s*=\s*remove|nl_func_type_name\s*=\s*force|nl_func_type_name\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Type Name|Add Nl Func Type Name|Remove Nl Func Type Name|Force Nl Func Type Name"
+ValueDefault=ignore
+
+[Nl Func Type Name Class]
+Category=3
+Description="<html>Add or remove newline between return type and function name inside a class<br/>definition. If set to ignore, nl_func_type_name or nl_func_proto_type_name<br/>is used instead.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_type_name_class\s*=\s*ignore|nl_func_type_name_class\s*=\s*add|nl_func_type_name_class\s*=\s*remove|nl_func_type_name_class\s*=\s*force|nl_func_type_name_class\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Type Name Class|Add Nl Func Type Name Class|Remove Nl Func Type Name Class|Force Nl Func Type Name Class"
+ValueDefault=ignore
+
+[Nl Func Class Scope]
+Category=3
+Description="<html>Add or remove newline between class specification and '::'<br/>in 'void A::f() { }'. Only appears in separate member implementation (does<br/>not appear with in-line implementation).</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_class_scope\s*=\s*ignore|nl_func_class_scope\s*=\s*add|nl_func_class_scope\s*=\s*remove|nl_func_class_scope\s*=\s*force|nl_func_class_scope\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Class Scope|Add Nl Func Class Scope|Remove Nl Func Class Scope|Force Nl Func Class Scope"
+ValueDefault=ignore
+
+[Nl Func Scope Name]
+Category=3
+Description="<html>Add or remove newline between function scope and name, as in<br/>'void A :: &lt;here&gt; f() { }'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_scope_name\s*=\s*ignore|nl_func_scope_name\s*=\s*add|nl_func_scope_name\s*=\s*remove|nl_func_scope_name\s*=\s*force|nl_func_scope_name\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Scope Name|Add Nl Func Scope Name|Remove Nl Func Scope Name|Force Nl Func Scope Name"
+ValueDefault=ignore
+
+[Nl Func Proto Type Name]
+Category=3
+Description="<html>Add or remove newline between return type and function name in a prototype.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_proto_type_name\s*=\s*ignore|nl_func_proto_type_name\s*=\s*add|nl_func_proto_type_name\s*=\s*remove|nl_func_proto_type_name\s*=\s*force|nl_func_proto_type_name\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Proto Type Name|Add Nl Func Proto Type Name|Remove Nl Func Proto Type Name|Force Nl Func Proto Type Name"
+ValueDefault=ignore
+
+[Nl Func Paren]
+Category=3
+Description="<html>Add or remove newline between a function name and the opening '(' in the<br/>declaration.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_paren\s*=\s*ignore|nl_func_paren\s*=\s*add|nl_func_paren\s*=\s*remove|nl_func_paren\s*=\s*force|nl_func_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Paren|Add Nl Func Paren|Remove Nl Func Paren|Force Nl Func Paren"
+ValueDefault=ignore
+
+[Nl Func Paren Empty]
+Category=3
+Description="<html>Overrides nl_func_paren for functions with no parameters.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_paren_empty\s*=\s*ignore|nl_func_paren_empty\s*=\s*add|nl_func_paren_empty\s*=\s*remove|nl_func_paren_empty\s*=\s*force|nl_func_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Paren Empty|Add Nl Func Paren Empty|Remove Nl Func Paren Empty|Force Nl Func Paren Empty"
+ValueDefault=ignore
+
+[Nl Func Def Paren]
+Category=3
+Description="<html>Add or remove newline between a function name and the opening '(' in the<br/>definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_paren\s*=\s*ignore|nl_func_def_paren\s*=\s*add|nl_func_def_paren\s*=\s*remove|nl_func_def_paren\s*=\s*force|nl_func_def_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def Paren|Add Nl Func Def Paren|Remove Nl Func Def Paren|Force Nl Func Def Paren"
+ValueDefault=ignore
+
+[Nl Func Def Paren Empty]
+Category=3
+Description="<html>Overrides nl_func_def_paren for functions with no parameters.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_paren_empty\s*=\s*ignore|nl_func_def_paren_empty\s*=\s*add|nl_func_def_paren_empty\s*=\s*remove|nl_func_def_paren_empty\s*=\s*force|nl_func_def_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def Paren Empty|Add Nl Func Def Paren Empty|Remove Nl Func Def Paren Empty|Force Nl Func Def Paren Empty"
+ValueDefault=ignore
+
+[Nl Func Call Paren]
+Category=3
+Description="<html>Add or remove newline between a function name and the opening '(' in the<br/>call.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_call_paren\s*=\s*ignore|nl_func_call_paren\s*=\s*add|nl_func_call_paren\s*=\s*remove|nl_func_call_paren\s*=\s*force|nl_func_call_paren\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Call Paren|Add Nl Func Call Paren|Remove Nl Func Call Paren|Force Nl Func Call Paren"
+ValueDefault=ignore
+
+[Nl Func Call Paren Empty]
+Category=3
+Description="<html>Overrides nl_func_call_paren for functions with no parameters.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_call_paren_empty\s*=\s*ignore|nl_func_call_paren_empty\s*=\s*add|nl_func_call_paren_empty\s*=\s*remove|nl_func_call_paren_empty\s*=\s*force|nl_func_call_paren_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Call Paren Empty|Add Nl Func Call Paren Empty|Remove Nl Func Call Paren Empty|Force Nl Func Call Paren Empty"
+ValueDefault=ignore
+
+[Nl Func Decl Start]
+Category=3
+Description="<html>Add or remove newline after '(' in a function declaration.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_decl_start\s*=\s*ignore|nl_func_decl_start\s*=\s*add|nl_func_decl_start\s*=\s*remove|nl_func_decl_start\s*=\s*force|nl_func_decl_start\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Decl Start|Add Nl Func Decl Start|Remove Nl Func Decl Start|Force Nl Func Decl Start"
+ValueDefault=ignore
+
+[Nl Func Def Start]
+Category=3
+Description="<html>Add or remove newline after '(' in a function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_start\s*=\s*ignore|nl_func_def_start\s*=\s*add|nl_func_def_start\s*=\s*remove|nl_func_def_start\s*=\s*force|nl_func_def_start\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def Start|Add Nl Func Def Start|Remove Nl Func Def Start|Force Nl Func Def Start"
+ValueDefault=ignore
+
+[Nl Func Decl Start Single]
+Category=3
+Description="<html>Overrides nl_func_decl_start when there is only one parameter.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_decl_start_single\s*=\s*ignore|nl_func_decl_start_single\s*=\s*add|nl_func_decl_start_single\s*=\s*remove|nl_func_decl_start_single\s*=\s*force|nl_func_decl_start_single\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Decl Start Single|Add Nl Func Decl Start Single|Remove Nl Func Decl Start Single|Force Nl Func Decl Start Single"
+ValueDefault=ignore
+
+[Nl Func Def Start Single]
+Category=3
+Description="<html>Overrides nl_func_def_start when there is only one parameter.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_start_single\s*=\s*ignore|nl_func_def_start_single\s*=\s*add|nl_func_def_start_single\s*=\s*remove|nl_func_def_start_single\s*=\s*force|nl_func_def_start_single\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def Start Single|Add Nl Func Def Start Single|Remove Nl Func Def Start Single|Force Nl Func Def Start Single"
+ValueDefault=ignore
+
+[Nl Func Decl Start Multi Line]
+Category=3
+Description="<html>Whether to add a newline after '(' in a function declaration if '(' and ')'<br/>are in different lines. If false, nl_func_decl_start is used instead.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_decl_start_multi_line\s*=\s*true|nl_func_decl_start_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Def Start Multi Line]
+Category=3
+Description="<html>Whether to add a newline after '(' in a function definition if '(' and ')'<br/>are in different lines. If false, nl_func_def_start is used instead.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_def_start_multi_line\s*=\s*true|nl_func_def_start_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Decl Args]
+Category=3
+Description="<html>Add or remove newline after each ',' in a function declaration.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_decl_args\s*=\s*ignore|nl_func_decl_args\s*=\s*add|nl_func_decl_args\s*=\s*remove|nl_func_decl_args\s*=\s*force|nl_func_decl_args\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Decl Args|Add Nl Func Decl Args|Remove Nl Func Decl Args|Force Nl Func Decl Args"
+ValueDefault=ignore
+
+[Nl Func Def Args]
+Category=3
+Description="<html>Add or remove newline after each ',' in a function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_args\s*=\s*ignore|nl_func_def_args\s*=\s*add|nl_func_def_args\s*=\s*remove|nl_func_def_args\s*=\s*force|nl_func_def_args\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def Args|Add Nl Func Def Args|Remove Nl Func Def Args|Force Nl Func Def Args"
+ValueDefault=ignore
+
+[Nl Func Call Args]
+Category=3
+Description="<html>Add or remove newline after each ',' in a function call.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_call_args\s*=\s*ignore|nl_func_call_args\s*=\s*add|nl_func_call_args\s*=\s*remove|nl_func_call_args\s*=\s*force|nl_func_call_args\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Call Args|Add Nl Func Call Args|Remove Nl Func Call Args|Force Nl Func Call Args"
+ValueDefault=ignore
+
+[Nl Func Decl Args Multi Line]
+Category=3
+Description="<html>Whether to add a newline after each ',' in a function declaration if '('<br/>and ')' are in different lines. If false, nl_func_decl_args is used instead.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_decl_args_multi_line\s*=\s*true|nl_func_decl_args_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Def Args Multi Line]
+Category=3
+Description="<html>Whether to add a newline after each ',' in a function definition if '('<br/>and ')' are in different lines. If false, nl_func_def_args is used instead.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_def_args_multi_line\s*=\s*true|nl_func_def_args_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Decl End]
+Category=3
+Description="<html>Add or remove newline before the ')' in a function declaration.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_decl_end\s*=\s*ignore|nl_func_decl_end\s*=\s*add|nl_func_decl_end\s*=\s*remove|nl_func_decl_end\s*=\s*force|nl_func_decl_end\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Decl End|Add Nl Func Decl End|Remove Nl Func Decl End|Force Nl Func Decl End"
+ValueDefault=ignore
+
+[Nl Func Def End]
+Category=3
+Description="<html>Add or remove newline before the ')' in a function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_end\s*=\s*ignore|nl_func_def_end\s*=\s*add|nl_func_def_end\s*=\s*remove|nl_func_def_end\s*=\s*force|nl_func_def_end\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def End|Add Nl Func Def End|Remove Nl Func Def End|Force Nl Func Def End"
+ValueDefault=ignore
+
+[Nl Func Decl End Single]
+Category=3
+Description="<html>Overrides nl_func_decl_end when there is only one parameter.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_decl_end_single\s*=\s*ignore|nl_func_decl_end_single\s*=\s*add|nl_func_decl_end_single\s*=\s*remove|nl_func_decl_end_single\s*=\s*force|nl_func_decl_end_single\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Decl End Single|Add Nl Func Decl End Single|Remove Nl Func Decl End Single|Force Nl Func Decl End Single"
+ValueDefault=ignore
+
+[Nl Func Def End Single]
+Category=3
+Description="<html>Overrides nl_func_def_end when there is only one parameter.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_end_single\s*=\s*ignore|nl_func_def_end_single\s*=\s*add|nl_func_def_end_single\s*=\s*remove|nl_func_def_end_single\s*=\s*force|nl_func_def_end_single\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def End Single|Add Nl Func Def End Single|Remove Nl Func Def End Single|Force Nl Func Def End Single"
+ValueDefault=ignore
+
+[Nl Func Decl End Multi Line]
+Category=3
+Description="<html>Whether to add a newline before ')' in a function declaration if '(' and ')'<br/>are in different lines. If false, nl_func_decl_end is used instead.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_decl_end_multi_line\s*=\s*true|nl_func_decl_end_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Def End Multi Line]
+Category=3
+Description="<html>Whether to add a newline before ')' in a function definition if '(' and ')'<br/>are in different lines. If false, nl_func_def_end is used instead.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_def_end_multi_line\s*=\s*true|nl_func_def_end_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Decl Empty]
+Category=3
+Description="<html>Add or remove newline between '()' in a function declaration.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_decl_empty\s*=\s*ignore|nl_func_decl_empty\s*=\s*add|nl_func_decl_empty\s*=\s*remove|nl_func_decl_empty\s*=\s*force|nl_func_decl_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Decl Empty|Add Nl Func Decl Empty|Remove Nl Func Decl Empty|Force Nl Func Decl Empty"
+ValueDefault=ignore
+
+[Nl Func Def Empty]
+Category=3
+Description="<html>Add or remove newline between '()' in a function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_def_empty\s*=\s*ignore|nl_func_def_empty\s*=\s*add|nl_func_def_empty\s*=\s*remove|nl_func_def_empty\s*=\s*force|nl_func_def_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Def Empty|Add Nl Func Def Empty|Remove Nl Func Def Empty|Force Nl Func Def Empty"
+ValueDefault=ignore
+
+[Nl Func Call Empty]
+Category=3
+Description="<html>Add or remove newline between '()' in a function call.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_call_empty\s*=\s*ignore|nl_func_call_empty\s*=\s*add|nl_func_call_empty\s*=\s*remove|nl_func_call_empty\s*=\s*force|nl_func_call_empty\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Call Empty|Add Nl Func Call Empty|Remove Nl Func Call Empty|Force Nl Func Call Empty"
+ValueDefault=ignore
+
+[Nl Func Call Start]
+Category=3
+Description="<html>Whether to add a newline after '(' in a function call,<br/>has preference over nl_func_call_start_multi_line.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_call_start\s*=\s*ignore|nl_func_call_start\s*=\s*add|nl_func_call_start\s*=\s*remove|nl_func_call_start\s*=\s*force|nl_func_call_start\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Call Start|Add Nl Func Call Start|Remove Nl Func Call Start|Force Nl Func Call Start"
+ValueDefault=ignore
+
+[Nl Func Call End]
+Category=3
+Description="<html>Whether to add a newline before ')' in a function call.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_func_call_end\s*=\s*ignore|nl_func_call_end\s*=\s*add|nl_func_call_end\s*=\s*remove|nl_func_call_end\s*=\s*force|nl_func_call_end\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Func Call End|Add Nl Func Call End|Remove Nl Func Call End|Force Nl Func Call End"
+ValueDefault=ignore
+
+[Nl Func Call Start Multi Line]
+Category=3
+Description="<html>Whether to add a newline after '(' in a function call if '(' and ')' are in<br/>different lines.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_call_start_multi_line\s*=\s*true|nl_func_call_start_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Call Args Multi Line]
+Category=3
+Description="<html>Whether to add a newline after each ',' in a function call if '(' and ')'<br/>are in different lines.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_call_args_multi_line\s*=\s*true|nl_func_call_args_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Call End Multi Line]
+Category=3
+Description="<html>Whether to add a newline before ')' in a function call if '(' and ')' are in<br/>different lines.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_call_end_multi_line\s*=\s*true|nl_func_call_end_multi_line\s*=\s*false
+ValueDefault=false
+
+[Nl Func Call Args Multi Line Ignore Closures]
+Category=3
+Description="<html>Whether to respect nl_func_call_XXX option in case of closure args.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_func_call_args_multi_line_ignore_closures\s*=\s*true|nl_func_call_args_multi_line_ignore_closures\s*=\s*false
+ValueDefault=false
+
+[Nl Template Start]
+Category=3
+Description="<html>Whether to add a newline after '&lt;' of a template parameter list.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_template_start\s*=\s*true|nl_template_start\s*=\s*false
+ValueDefault=false
+
+[Nl Template Args]
+Category=3
+Description="<html>Whether to add a newline after each ',' in a template parameter list.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_template_args\s*=\s*true|nl_template_args\s*=\s*false
+ValueDefault=false
+
+[Nl Template End]
+Category=3
+Description="<html>Whether to add a newline before '&gt;' of a template parameter list.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_template_end\s*=\s*true|nl_template_end\s*=\s*false
+ValueDefault=false
+
+[Nl Oc Msg Args]
+Category=3
+Description="<html>(OC) Whether to put each Objective-C message parameter on a separate line.<br/>See nl_oc_msg_leave_one_liner.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_oc_msg_args\s*=\s*true|nl_oc_msg_args\s*=\s*false
+ValueDefault=false
+
+[Nl Oc Msg Args Min Params]
+Category=3
+Description="<html>(OC) Minimum number of Objective-C message parameters before applying nl_oc_msg_args.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_oc_msg_args_min_params\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Oc Msg Args Max Code Width]
+Category=3
+Description="<html>(OC) Max code width of Objective-C message before applying nl_oc_msg_args.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_oc_msg_args_max_code_width\s*=\s*"
+MinVal=0
+MaxVal=10000
+ValueDefault=0
+
+[Nl Fdef Brace]
+Category=3
+Description="<html>Add or remove newline between function signature and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_fdef_brace\s*=\s*ignore|nl_fdef_brace\s*=\s*add|nl_fdef_brace\s*=\s*remove|nl_fdef_brace\s*=\s*force|nl_fdef_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Fdef Brace|Add Nl Fdef Brace|Remove Nl Fdef Brace|Force Nl Fdef Brace"
+ValueDefault=ignore
+
+[Nl Fdef Brace Cond]
+Category=3
+Description="<html>Add or remove newline between function signature and '{',<br/>if signature ends with ')'. Overrides nl_fdef_brace.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_fdef_brace_cond\s*=\s*ignore|nl_fdef_brace_cond\s*=\s*add|nl_fdef_brace_cond\s*=\s*remove|nl_fdef_brace_cond\s*=\s*force|nl_fdef_brace_cond\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Fdef Brace Cond|Add Nl Fdef Brace Cond|Remove Nl Fdef Brace Cond|Force Nl Fdef Brace Cond"
+ValueDefault=ignore
+
+[Nl Cpp Ldef Brace]
+Category=3
+Description="<html>Add or remove newline between C++11 lambda signature and '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_cpp_ldef_brace\s*=\s*ignore|nl_cpp_ldef_brace\s*=\s*add|nl_cpp_ldef_brace\s*=\s*remove|nl_cpp_ldef_brace\s*=\s*force|nl_cpp_ldef_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Cpp Ldef Brace|Add Nl Cpp Ldef Brace|Remove Nl Cpp Ldef Brace|Force Nl Cpp Ldef Brace"
+ValueDefault=ignore
+
+[Nl Return Expr]
+Category=3
+Description="<html>Add or remove newline between 'return' and the return expression.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_return_expr\s*=\s*ignore|nl_return_expr\s*=\s*add|nl_return_expr\s*=\s*remove|nl_return_expr\s*=\s*force|nl_return_expr\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Return Expr|Add Nl Return Expr|Remove Nl Return Expr|Force Nl Return Expr"
+ValueDefault=ignore
+
+[Nl Throw Expr]
+Category=3
+Description="<html>Add or remove newline between 'throw' and the throw expression.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_throw_expr\s*=\s*ignore|nl_throw_expr\s*=\s*add|nl_throw_expr\s*=\s*remove|nl_throw_expr\s*=\s*force|nl_throw_expr\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Throw Expr|Add Nl Throw Expr|Remove Nl Throw Expr|Force Nl Throw Expr"
+ValueDefault=ignore
+
+[Nl After Semicolon]
+Category=3
+Description="<html>Whether to add a newline after semicolons, except in 'for' statements.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_semicolon\s*=\s*true|nl_after_semicolon\s*=\s*false
+ValueDefault=false
+
+[Nl Paren Dbrace Open]
+Category=3
+Description="<html>(Java) Add or remove newline between the ')' and '{{' of the double brace<br/>initializer.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_paren_dbrace_open\s*=\s*ignore|nl_paren_dbrace_open\s*=\s*add|nl_paren_dbrace_open\s*=\s*remove|nl_paren_dbrace_open\s*=\s*force|nl_paren_dbrace_open\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Paren Dbrace Open|Add Nl Paren Dbrace Open|Remove Nl Paren Dbrace Open|Force Nl Paren Dbrace Open"
+ValueDefault=ignore
+
+[Nl Type Brace Init Lst]
+Category=3
+Description="<html>Whether to add a newline after the type in an unnamed temporary<br/>direct-list-initialization, better:<br/>before a direct-list-initialization.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_type_brace_init_lst\s*=\s*ignore|nl_type_brace_init_lst\s*=\s*add|nl_type_brace_init_lst\s*=\s*remove|nl_type_brace_init_lst\s*=\s*force|nl_type_brace_init_lst\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Type Brace Init Lst|Add Nl Type Brace Init Lst|Remove Nl Type Brace Init Lst|Force Nl Type Brace Init Lst"
+ValueDefault=ignore
+
+[Nl Type Brace Init Lst Open]
+Category=3
+Description="<html>Whether to add a newline after the open brace in an unnamed temporary<br/>direct-list-initialization.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_type_brace_init_lst_open\s*=\s*ignore|nl_type_brace_init_lst_open\s*=\s*add|nl_type_brace_init_lst_open\s*=\s*remove|nl_type_brace_init_lst_open\s*=\s*force|nl_type_brace_init_lst_open\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Type Brace Init Lst Open|Add Nl Type Brace Init Lst Open|Remove Nl Type Brace Init Lst Open|Force Nl Type Brace Init Lst Open"
+ValueDefault=ignore
+
+[Nl Type Brace Init Lst Close]
+Category=3
+Description="<html>Whether to add a newline before the close brace in an unnamed temporary<br/>direct-list-initialization.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_type_brace_init_lst_close\s*=\s*ignore|nl_type_brace_init_lst_close\s*=\s*add|nl_type_brace_init_lst_close\s*=\s*remove|nl_type_brace_init_lst_close\s*=\s*force|nl_type_brace_init_lst_close\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Type Brace Init Lst Close|Add Nl Type Brace Init Lst Close|Remove Nl Type Brace Init Lst Close|Force Nl Type Brace Init Lst Close"
+ValueDefault=ignore
+
+[Nl Before Brace Open]
+Category=3
+Description="<html>Whether to add a newline before '{'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_before_brace_open\s*=\s*true|nl_before_brace_open\s*=\s*false
+ValueDefault=false
+
+[Nl After Brace Open]
+Category=3
+Description="<html>Whether to add a newline after '{'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_brace_open\s*=\s*true|nl_after_brace_open\s*=\s*false
+ValueDefault=false
+
+[Nl After Brace Open Cmt]
+Category=3
+Description="<html>Whether to add a newline between the open brace and a trailing single-line<br/>comment. Requires nl_after_brace_open=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_brace_open_cmt\s*=\s*true|nl_after_brace_open_cmt\s*=\s*false
+ValueDefault=false
+
+[Nl After Vbrace Open]
+Category=3
+Description="<html>Whether to add a newline after a virtual brace open with a non-empty body.<br/>These occur in un-braced if/while/do/for statement bodies.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_vbrace_open\s*=\s*true|nl_after_vbrace_open\s*=\s*false
+ValueDefault=false
+
+[Nl After Vbrace Open Empty]
+Category=3
+Description="<html>Whether to add a newline after a virtual brace open with an empty body.<br/>These occur in un-braced if/while/do/for statement bodies.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_vbrace_open_empty\s*=\s*true|nl_after_vbrace_open_empty\s*=\s*false
+ValueDefault=false
+
+[Nl After Brace Close]
+Category=3
+Description="<html>Whether to add a newline after '}'. Does not apply if followed by a<br/>necessary ';'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_brace_close\s*=\s*true|nl_after_brace_close\s*=\s*false
+ValueDefault=false
+
+[Nl After Vbrace Close]
+Category=3
+Description="<html>Whether to add a newline after a virtual brace close,<br/>as in 'if (foo) a++; &lt;here&gt; return;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_vbrace_close\s*=\s*true|nl_after_vbrace_close\s*=\s*false
+ValueDefault=false
+
+[Nl Brace Struct Var]
+Category=3
+Description="<html>Add or remove newline between the close brace and identifier,<br/>as in 'struct { int a; } &lt;here&gt; b;'. Affects enumerations, unions and<br/>structures. If set to ignore, uses nl_after_brace_close.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_brace_struct_var\s*=\s*ignore|nl_brace_struct_var\s*=\s*add|nl_brace_struct_var\s*=\s*remove|nl_brace_struct_var\s*=\s*force|nl_brace_struct_var\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Brace Struct Var|Add Nl Brace Struct Var|Remove Nl Brace Struct Var|Force Nl Brace Struct Var"
+ValueDefault=ignore
+
+[Nl Define Macro]
+Category=3
+Description="<html>Whether to alter newlines in '#define' macros.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_define_macro\s*=\s*true|nl_define_macro\s*=\s*false
+ValueDefault=false
+
+[Nl Squeeze Paren Close]
+Category=3
+Description="<html>Whether to alter newlines between consecutive parenthesis closes. The number<br/>of closing parentheses in a line will depend on respective open parenthesis<br/>lines.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_squeeze_paren_close\s*=\s*true|nl_squeeze_paren_close\s*=\s*false
+ValueDefault=false
+
+[Nl Squeeze Ifdef]
+Category=3
+Description="<html>Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and<br/>'#endif'. Does not affect top-level #ifdefs.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_squeeze_ifdef\s*=\s*true|nl_squeeze_ifdef\s*=\s*false
+ValueDefault=false
+
+[Nl Squeeze Ifdef Top Level]
+Category=3
+Description="<html>Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_squeeze_ifdef_top_level\s*=\s*true|nl_squeeze_ifdef_top_level\s*=\s*false
+ValueDefault=false
+
+[Nl Before If]
+Category=3
+Description="<html>Add or remove blank line before 'if'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_if\s*=\s*ignore|nl_before_if\s*=\s*add|nl_before_if\s*=\s*remove|nl_before_if\s*=\s*force|nl_before_if\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before If|Add Nl Before If|Remove Nl Before If|Force Nl Before If"
+ValueDefault=ignore
+
+[Nl After If]
+Category=3
+Description="<html>Add or remove blank line after 'if' statement. Add/Force work only if the<br/>next token is not a closing brace.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_if\s*=\s*ignore|nl_after_if\s*=\s*add|nl_after_if\s*=\s*remove|nl_after_if\s*=\s*force|nl_after_if\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After If|Add Nl After If|Remove Nl After If|Force Nl After If"
+ValueDefault=ignore
+
+[Nl Before For]
+Category=3
+Description="<html>Add or remove blank line before 'for'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_for\s*=\s*ignore|nl_before_for\s*=\s*add|nl_before_for\s*=\s*remove|nl_before_for\s*=\s*force|nl_before_for\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before For|Add Nl Before For|Remove Nl Before For|Force Nl Before For"
+ValueDefault=ignore
+
+[Nl After For]
+Category=3
+Description="<html>Add or remove blank line after 'for' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_for\s*=\s*ignore|nl_after_for\s*=\s*add|nl_after_for\s*=\s*remove|nl_after_for\s*=\s*force|nl_after_for\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After For|Add Nl After For|Remove Nl After For|Force Nl After For"
+ValueDefault=ignore
+
+[Nl Before While]
+Category=3
+Description="<html>Add or remove blank line before 'while'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_while\s*=\s*ignore|nl_before_while\s*=\s*add|nl_before_while\s*=\s*remove|nl_before_while\s*=\s*force|nl_before_while\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before While|Add Nl Before While|Remove Nl Before While|Force Nl Before While"
+ValueDefault=ignore
+
+[Nl After While]
+Category=3
+Description="<html>Add or remove blank line after 'while' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_while\s*=\s*ignore|nl_after_while\s*=\s*add|nl_after_while\s*=\s*remove|nl_after_while\s*=\s*force|nl_after_while\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After While|Add Nl After While|Remove Nl After While|Force Nl After While"
+ValueDefault=ignore
+
+[Nl Before Switch]
+Category=3
+Description="<html>Add or remove blank line before 'switch'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_switch\s*=\s*ignore|nl_before_switch\s*=\s*add|nl_before_switch\s*=\s*remove|nl_before_switch\s*=\s*force|nl_before_switch\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before Switch|Add Nl Before Switch|Remove Nl Before Switch|Force Nl Before Switch"
+ValueDefault=ignore
+
+[Nl After Switch]
+Category=3
+Description="<html>Add or remove blank line after 'switch' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_switch\s*=\s*ignore|nl_after_switch\s*=\s*add|nl_after_switch\s*=\s*remove|nl_after_switch\s*=\s*force|nl_after_switch\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After Switch|Add Nl After Switch|Remove Nl After Switch|Force Nl After Switch"
+ValueDefault=ignore
+
+[Nl Before Synchronized]
+Category=3
+Description="<html>Add or remove blank line before 'synchronized'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_synchronized\s*=\s*ignore|nl_before_synchronized\s*=\s*add|nl_before_synchronized\s*=\s*remove|nl_before_synchronized\s*=\s*force|nl_before_synchronized\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before Synchronized|Add Nl Before Synchronized|Remove Nl Before Synchronized|Force Nl Before Synchronized"
+ValueDefault=ignore
+
+[Nl After Synchronized]
+Category=3
+Description="<html>Add or remove blank line after 'synchronized' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_synchronized\s*=\s*ignore|nl_after_synchronized\s*=\s*add|nl_after_synchronized\s*=\s*remove|nl_after_synchronized\s*=\s*force|nl_after_synchronized\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After Synchronized|Add Nl After Synchronized|Remove Nl After Synchronized|Force Nl After Synchronized"
+ValueDefault=ignore
+
+[Nl Before Do]
+Category=3
+Description="<html>Add or remove blank line before 'do'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_do\s*=\s*ignore|nl_before_do\s*=\s*add|nl_before_do\s*=\s*remove|nl_before_do\s*=\s*force|nl_before_do\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before Do|Add Nl Before Do|Remove Nl Before Do|Force Nl Before Do"
+ValueDefault=ignore
+
+[Nl After Do]
+Category=3
+Description="<html>Add or remove blank line after 'do/while' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_do\s*=\s*ignore|nl_after_do\s*=\s*add|nl_after_do\s*=\s*remove|nl_after_do\s*=\s*force|nl_after_do\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After Do|Add Nl After Do|Remove Nl After Do|Force Nl After Do"
+ValueDefault=ignore
+
+[Nl Before Ignore After Case]
+Category=3
+Description="<html>Ignore nl_before_{if,for,switch,do,synchronized} if the control<br/>statement is immediately after a case statement.<br/>if nl_before_{if,for,switch,do} is set to remove, this option<br/>does nothing.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_before_ignore_after_case\s*=\s*true|nl_before_ignore_after_case\s*=\s*false
+ValueDefault=false
+
+[Nl Before Return]
+Category=3
+Description="<html>Whether to put a blank line before 'return' statements, unless after an open<br/>brace.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_before_return\s*=\s*true|nl_before_return\s*=\s*false
+ValueDefault=false
+
+[Nl After Return]
+Category=3
+Description="<html>Whether to put a blank line after 'return' statements, unless followed by a<br/>close brace.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_return\s*=\s*true|nl_after_return\s*=\s*false
+ValueDefault=false
+
+[Nl Before Member]
+Category=3
+Description="<html>Whether to put a blank line before a member '.' or '-&gt;' operators.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_before_member\s*=\s*ignore|nl_before_member\s*=\s*add|nl_before_member\s*=\s*remove|nl_before_member\s*=\s*force|nl_before_member\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Before Member|Add Nl Before Member|Remove Nl Before Member|Force Nl Before Member"
+ValueDefault=ignore
+
+[Nl After Member]
+Category=3
+Description="<html>(Java) Whether to put a blank line after a member '.' or '-&gt;' operators.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_member\s*=\s*ignore|nl_after_member\s*=\s*add|nl_after_member\s*=\s*remove|nl_after_member\s*=\s*force|nl_after_member\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After Member|Add Nl After Member|Remove Nl After Member|Force Nl After Member"
+ValueDefault=ignore
+
+[Nl Ds Struct Enum Cmt]
+Category=3
+Description="<html>Whether to double-space commented-entries in 'struct'/'union'/'enum'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_ds_struct_enum_cmt\s*=\s*true|nl_ds_struct_enum_cmt\s*=\s*false
+ValueDefault=false
+
+[Nl Ds Struct Enum Close Brace]
+Category=3
+Description="<html>Whether to force a newline before '}' of a 'struct'/'union'/'enum'.<br/>(Lower priority than eat_blanks_before_close_brace.)</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_ds_struct_enum_close_brace\s*=\s*true|nl_ds_struct_enum_close_brace\s*=\s*false
+ValueDefault=false
+
+[Nl Class Colon]
+Category=3
+Description="<html>Add or remove newline before or after (depending on pos_class_colon) a class<br/>colon, as in 'class Foo &lt;here&gt; : &lt;or here&gt; public Bar'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_class_colon\s*=\s*ignore|nl_class_colon\s*=\s*add|nl_class_colon\s*=\s*remove|nl_class_colon\s*=\s*force|nl_class_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Class Colon|Add Nl Class Colon|Remove Nl Class Colon|Force Nl Class Colon"
+ValueDefault=ignore
+
+[Nl Constr Colon]
+Category=3
+Description="<html>Add or remove newline around a class constructor colon. The exact position<br/>depends on nl_constr_init_args, pos_constr_colon and pos_constr_comma.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_constr_colon\s*=\s*ignore|nl_constr_colon\s*=\s*add|nl_constr_colon\s*=\s*remove|nl_constr_colon\s*=\s*force|nl_constr_colon\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Constr Colon|Add Nl Constr Colon|Remove Nl Constr Colon|Force Nl Constr Colon"
+ValueDefault=ignore
+
+[Nl Namespace Two To One Liner]
+Category=3
+Description="<html>Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }'<br/>into a single line. If true, prevents other brace newline rules from turning<br/>such code into four lines. If true, it also preserves one-liner namespaces.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_namespace_two_to_one_liner\s*=\s*true|nl_namespace_two_to_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Create If One Liner]
+Category=3
+Description="<html>Whether to remove a newline in simple unbraced if statements, turning them<br/>into one-liners, as in 'if(b)\n i++;' =&gt; 'if(b) i++;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_create_if_one_liner\s*=\s*true|nl_create_if_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Create For One Liner]
+Category=3
+Description="<html>Whether to remove a newline in simple unbraced for statements, turning them<br/>into one-liners, as in 'for (...)\n stmt;' =&gt; 'for (...) stmt;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_create_for_one_liner\s*=\s*true|nl_create_for_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Create While One Liner]
+Category=3
+Description="<html>Whether to remove a newline in simple unbraced while statements, turning<br/>them into one-liners, as in 'while (expr)\n stmt;' =&gt; 'while (expr) stmt;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_create_while_one_liner\s*=\s*true|nl_create_while_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Create Func Def One Liner]
+Category=3
+Description="<html>Whether to collapse a function definition whose body (not counting braces)<br/>is only one line so that the entire definition (prototype, braces, body) is<br/>a single line.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_create_func_def_one_liner\s*=\s*true|nl_create_func_def_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Create List One Liner]
+Category=3
+Description="<html>Whether to split one-line simple list definitions into three lines by<br/>adding newlines, as in 'int a[12] = { &lt;here&gt; 0 &lt;here&gt; };'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_create_list_one_liner\s*=\s*true|nl_create_list_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Split If One Liner]
+Category=3
+Description="<html>Whether to split one-line simple unbraced if statements into two lines by<br/>adding a newline, as in 'if(b) &lt;here&gt; i++;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_split_if_one_liner\s*=\s*true|nl_split_if_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Split For One Liner]
+Category=3
+Description="<html>Whether to split one-line simple unbraced for statements into two lines by<br/>adding a newline, as in 'for (...) &lt;here&gt; stmt;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_split_for_one_liner\s*=\s*true|nl_split_for_one_liner\s*=\s*false
+ValueDefault=false
+
+[Nl Split While One Liner]
+Category=3
+Description="<html>Whether to split one-line simple unbraced while statements into two lines by<br/>adding a newline, as in 'while (expr) &lt;here&gt; stmt;'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_split_while_one_liner\s*=\s*true|nl_split_while_one_liner\s*=\s*false
+ValueDefault=false
+
+[Donot Add Nl Before Cpp Comment]
+Category=3
+Description="<html>Don't add a newline before a cpp-comment in a parameter list of a function<br/>call.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=donot_add_nl_before_cpp_comment\s*=\s*true|donot_add_nl_before_cpp_comment\s*=\s*false
+ValueDefault=false
+
+[Nl Max]
+Category=4
+Description="<html>The maximum number of consecutive newlines (3 = 2 blank lines).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_max\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Max Blank In Func]
+Category=4
+Description="<html>The maximum number of consecutive newlines in a function.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_max_blank_in_func\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Inside Empty Func]
+Category=4
+Description="<html>The number of newlines inside an empty function body.<br/>This option overrides eat_blanks_after_open_brace and<br/>eat_blanks_before_close_brace, but is ignored when<br/>nl_collapse_empty_body_functions=true</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_inside_empty_func\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Func Body Proto]
+Category=4
+Description="<html>The number of newlines before a function prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_func_body_proto\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Func Body Def]
+Category=4
+Description="<html>The number of newlines before a multi-line function definition. Where<br/>applicable, this option is overridden with eat_blanks_after_open_brace=true</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_func_body_def\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Func Class Proto]
+Category=4
+Description="<html>The number of newlines before a class constructor/destructor prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_func_class_proto\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Func Class Def]
+Category=4
+Description="<html>The number of newlines before a class constructor/destructor definition.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_func_class_def\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Func Proto]
+Category=4
+Description="<html>The number of newlines after a function prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_func_proto\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Func Proto Group]
+Category=4
+Description="<html>The number of newlines after a function prototype, if not followed by<br/>another function prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_func_proto_group\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Func Class Proto]
+Category=4
+Description="<html>The number of newlines after a class constructor/destructor prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_func_class_proto\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Func Class Proto Group]
+Category=4
+Description="<html>The number of newlines after a class constructor/destructor prototype,<br/>if not followed by another constructor/destructor prototype.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_func_class_proto_group\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Class Leave One Liner Groups]
+Category=4
+Description="<html>Whether one-line method definitions inside a class body should be treated<br/>as if they were prototypes for the purposes of adding newlines.<br/><br/>Requires nl_class_leave_one_liners=true. Overrides nl_before_func_body_def<br/>and nl_before_func_class_def for one-liners.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_class_leave_one_liner_groups\s*=\s*true|nl_class_leave_one_liner_groups\s*=\s*false
+ValueDefault=false
+
+[Nl After Func Body]
+Category=4
+Description="<html>The number of newlines after '}' of a multi-line function body.<br/><br/>Overrides nl_min_after_func_body and nl_max_after_func_body.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_func_body\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Min After Func Body]
+Category=4
+Description="<html>The minimum number of newlines after '}' of a multi-line function body.<br/><br/>Only works when nl_after_func_body is 0.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_min_after_func_body\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Max After Func Body]
+Category=4
+Description="<html>The maximum number of newlines after '}' of a multi-line function body.<br/><br/>Only works when nl_after_func_body is 0.<br/>Takes precedence over nl_min_after_func_body.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_max_after_func_body\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Func Body Class]
+Category=4
+Description="<html>The number of newlines after '}' of a multi-line function body in a class<br/>declaration. Also affects class constructors/destructors.<br/><br/>Overrides nl_after_func_body.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_func_body_class\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Func Body One Liner]
+Category=4
+Description="<html>The number of newlines after '}' of a single line function body. Also<br/>affects class constructors/destructors.<br/><br/>Overrides nl_after_func_body and nl_after_func_body_class.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_func_body_one_liner\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Typedef Blk Start]
+Category=4
+Description="<html>The number of newlines before a block of typedefs. If nl_after_access_spec<br/>is non-zero, that option takes precedence.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_typedef_blk_start\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Typedef Blk End]
+Category=4
+Description="<html>The number of newlines after a block of typedefs.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_typedef_blk_end\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Typedef Blk In]
+Category=4
+Description="<html>The maximum number of consecutive newlines within a block of typedefs.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_typedef_blk_in\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Var Def Blk End Func Top]
+Category=4
+Description="<html>The minimum number of blank lines after a block of variable definitions<br/>at the top of a function body. If any preprocessor directives appear<br/>between the opening brace of the function and the variable block, then<br/>it is considered as not at the top of the function.Newlines are added<br/>before trailing preprocessor directives, if any exist.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_var_def_blk_end_func_top\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Var Def Blk Start]
+Category=4
+Description="<html>The minimum number of empty newlines before a block of variable definitions<br/>not at the top of a function body. If nl_after_access_spec is non-zero,<br/>that option takes precedence. Newlines are not added at the top of the<br/>file or just after an opening brace. Newlines are added above any<br/>preprocessor directives before the block.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_var_def_blk_start\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Var Def Blk End]
+Category=4
+Description="<html>The minimum number of empty newlines after a block of variable definitions<br/>not at the top of a function body. Newlines are not added if the block<br/>is at the bottom of the file or just before a preprocessor directive.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_var_def_blk_end\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Var Def Blk In]
+Category=4
+Description="<html>The maximum number of consecutive newlines within a block of variable<br/>definitions.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_var_def_blk_in\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Block Comment]
+Category=4
+Description="<html>The minimum number of newlines before a multi-line comment.<br/>Doesn't apply if after a brace open or another multi-line comment.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_block_comment\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before C Comment]
+Category=4
+Description="<html>The minimum number of newlines before a single-line C comment.<br/>Doesn't apply if after a brace open or other single-line C comments.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_c_comment\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Cpp Comment]
+Category=4
+Description="<html>The minimum number of newlines before a CPP comment.<br/>Doesn't apply if after a brace open or other CPP comments.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_cpp_comment\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Multiline Comment]
+Category=4
+Description="<html>Whether to force a newline after a multi-line comment.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_multiline_comment\s*=\s*true|nl_after_multiline_comment\s*=\s*false
+ValueDefault=false
+
+[Nl After Label Colon]
+Category=4
+Description="<html>Whether to force a newline after a label's colon.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=nl_after_label_colon\s*=\s*true|nl_after_label_colon\s*=\s*false
+ValueDefault=false
+
+[Nl Before Struct]
+Category=4
+Description="<html>The number of newlines before a struct definition.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_struct\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Struct]
+Category=4
+Description="<html>The number of newlines after '}' or ';' of a struct/enum/union definition.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_struct\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Class]
+Category=4
+Description="<html>The number of newlines before a class definition.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_class\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Class]
+Category=4
+Description="<html>The number of newlines after '}' or ';' of a class definition.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_class\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Namespace]
+Category=4
+Description="<html>The number of newlines before a namespace.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_namespace\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Inside Namespace]
+Category=4
+Description="<html>The number of newlines after '{' of a namespace. This also adds newlines<br/>before the matching '}'.<br/><br/>0: Apply eat_blanks_after_open_brace or eat_blanks_before_close_brace if<br/> applicable, otherwise no change.<br/><br/>Overrides eat_blanks_after_open_brace and eat_blanks_before_close_brace.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_inside_namespace\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Namespace]
+Category=4
+Description="<html>The number of newlines after '}' of a namespace.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_namespace\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Access Spec]
+Category=4
+Description="<html>The number of newlines before an access specifier label. This also includes<br/>the Qt-specific 'signals:' and 'slots:'. Will not change the newline count<br/>if after a brace open.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_access_spec\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Access Spec]
+Category=4
+Description="<html>The number of newlines after an access specifier label. This also includes<br/>the Qt-specific 'signals:' and 'slots:'. Will not change the newline count<br/>if after a brace open.<br/><br/>0: No change (default).<br/><br/>Overrides nl_typedef_blk_start and nl_var_def_blk_start.</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_access_spec\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Comment Func Def]
+Category=4
+Description="<html>The number of newlines between a function definition and the function<br/>comment, as in '// comment\n &lt;here&gt; void foo() {...}'.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_comment_func_def\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Try Catch Finally]
+Category=4
+Description="<html>The number of newlines after a try-catch-finally block that isn't followed<br/>by a brace close.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_try_catch_finally\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Around Cs Property]
+Category=4
+Description="<html>(C#) The number of newlines before and after a property, indexer or event<br/>declaration.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_around_cs_property\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Between Get Set]
+Category=4
+Description="<html>(C#) The number of newlines between the get/set/add/remove handlers.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_between_get_set\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Property Brace]
+Category=4
+Description="<html>(C#) Add or remove newline between property and the '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_property_brace\s*=\s*ignore|nl_property_brace\s*=\s*add|nl_property_brace\s*=\s*remove|nl_property_brace\s*=\s*force|nl_property_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Property Brace|Add Nl Property Brace|Remove Nl Property Brace|Force Nl Property Brace"
+ValueDefault=ignore
+
+[Eat Blanks After Open Brace]
+Category=4
+Description="<html>Whether to remove blank lines after '{'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=eat_blanks_after_open_brace\s*=\s*true|eat_blanks_after_open_brace\s*=\s*false
+ValueDefault=false
+
+[Eat Blanks Before Close Brace]
+Category=4
+Description="<html>Whether to remove blank lines before '}'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=eat_blanks_before_close_brace\s*=\s*true|eat_blanks_before_close_brace\s*=\s*false
+ValueDefault=false
+
+[Nl Remove Extra Newlines]
+Category=4
+Description="<html>How aggressively to remove extra newlines not in preprocessor.<br/><br/>0: No change (default)<br/>1: Remove most newlines not handled by other config<br/>2: Remove all newlines and reformat completely by config</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_remove_extra_newlines\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Nl After Annotation]
+Category=4
+Description="<html>(Java) Add or remove newline after an annotation statement. Only affects<br/>annotations that are after a newline.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_after_annotation\s*=\s*ignore|nl_after_annotation\s*=\s*add|nl_after_annotation\s*=\s*remove|nl_after_annotation\s*=\s*force|nl_after_annotation\s*=\s*not_defined
+ChoicesReadable="Ignore Nl After Annotation|Add Nl After Annotation|Remove Nl After Annotation|Force Nl After Annotation"
+ValueDefault=ignore
+
+[Nl Between Annotation]
+Category=4
+Description="<html>(Java) Add or remove newline between two annotations.</html>"
+Enabled=false
+EditorType=multiple
+Choices=nl_between_annotation\s*=\s*ignore|nl_between_annotation\s*=\s*add|nl_between_annotation\s*=\s*remove|nl_between_annotation\s*=\s*force|nl_between_annotation\s*=\s*not_defined
+ChoicesReadable="Ignore Nl Between Annotation|Add Nl Between Annotation|Remove Nl Between Annotation|Force Nl Between Annotation"
+ValueDefault=ignore
+
+[Nl Before Whole File Ifdef]
+Category=4
+Description="<html>The number of newlines before a whole-file #ifdef.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_whole_file_ifdef\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Whole File Ifdef]
+Category=4
+Description="<html>The number of newlines after a whole-file #ifdef.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_whole_file_ifdef\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl Before Whole File Endif]
+Category=4
+Description="<html>The number of newlines before a whole-file #endif.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_before_whole_file_endif\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Nl After Whole File Endif]
+Category=4
+Description="<html>The number of newlines after a whole-file #endif.<br/><br/>0: No change (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="nl_after_whole_file_endif\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Pos Arith]
+Category=5
+Description="<html>The position of arithmetic operators in wrapped expressions.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_arith\s*=\s*ignore|pos_arith\s*=\s*break|pos_arith\s*=\s*force|pos_arith\s*=\s*lead|pos_arith\s*=\s*trail|pos_arith\s*=\s*join|pos_arith\s*=\s*lead_break|pos_arith\s*=\s*lead_force|pos_arith\s*=\s*trail_break|pos_arith\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Arith|Break Pos Arith|Force Pos Arith|Lead Pos Arith|Trail Pos Arith|Join Pos Arith|Lead Break Pos Arith|Lead Force Pos Arith|Trail Break Pos Arith|Trail Force Pos Arith"
+ValueDefault=ignore
+
+[Pos Assign]
+Category=5
+Description="<html>The position of assignment in wrapped expressions. Do not affect '='<br/>followed by '{'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_assign\s*=\s*ignore|pos_assign\s*=\s*break|pos_assign\s*=\s*force|pos_assign\s*=\s*lead|pos_assign\s*=\s*trail|pos_assign\s*=\s*join|pos_assign\s*=\s*lead_break|pos_assign\s*=\s*lead_force|pos_assign\s*=\s*trail_break|pos_assign\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Assign|Break Pos Assign|Force Pos Assign|Lead Pos Assign|Trail Pos Assign|Join Pos Assign|Lead Break Pos Assign|Lead Force Pos Assign|Trail Break Pos Assign|Trail Force Pos Assign"
+ValueDefault=ignore
+
+[Pos Bool]
+Category=5
+Description="<html>The position of Boolean operators in wrapped expressions.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_bool\s*=\s*ignore|pos_bool\s*=\s*break|pos_bool\s*=\s*force|pos_bool\s*=\s*lead|pos_bool\s*=\s*trail|pos_bool\s*=\s*join|pos_bool\s*=\s*lead_break|pos_bool\s*=\s*lead_force|pos_bool\s*=\s*trail_break|pos_bool\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Bool|Break Pos Bool|Force Pos Bool|Lead Pos Bool|Trail Pos Bool|Join Pos Bool|Lead Break Pos Bool|Lead Force Pos Bool|Trail Break Pos Bool|Trail Force Pos Bool"
+ValueDefault=ignore
+
+[Pos Compare]
+Category=5
+Description="<html>The position of comparison operators in wrapped expressions.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_compare\s*=\s*ignore|pos_compare\s*=\s*break|pos_compare\s*=\s*force|pos_compare\s*=\s*lead|pos_compare\s*=\s*trail|pos_compare\s*=\s*join|pos_compare\s*=\s*lead_break|pos_compare\s*=\s*lead_force|pos_compare\s*=\s*trail_break|pos_compare\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Compare|Break Pos Compare|Force Pos Compare|Lead Pos Compare|Trail Pos Compare|Join Pos Compare|Lead Break Pos Compare|Lead Force Pos Compare|Trail Break Pos Compare|Trail Force Pos Compare"
+ValueDefault=ignore
+
+[Pos Conditional]
+Category=5
+Description="<html>The position of conditional operators, as in the '?' and ':' of<br/>'expr ? stmt : stmt', in wrapped expressions.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_conditional\s*=\s*ignore|pos_conditional\s*=\s*break|pos_conditional\s*=\s*force|pos_conditional\s*=\s*lead|pos_conditional\s*=\s*trail|pos_conditional\s*=\s*join|pos_conditional\s*=\s*lead_break|pos_conditional\s*=\s*lead_force|pos_conditional\s*=\s*trail_break|pos_conditional\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Conditional|Break Pos Conditional|Force Pos Conditional|Lead Pos Conditional|Trail Pos Conditional|Join Pos Conditional|Lead Break Pos Conditional|Lead Force Pos Conditional|Trail Break Pos Conditional|Trail Force Pos Conditional"
+ValueDefault=ignore
+
+[Pos Comma]
+Category=5
+Description="<html>The position of the comma in wrapped expressions.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_comma\s*=\s*ignore|pos_comma\s*=\s*break|pos_comma\s*=\s*force|pos_comma\s*=\s*lead|pos_comma\s*=\s*trail|pos_comma\s*=\s*join|pos_comma\s*=\s*lead_break|pos_comma\s*=\s*lead_force|pos_comma\s*=\s*trail_break|pos_comma\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Comma|Break Pos Comma|Force Pos Comma|Lead Pos Comma|Trail Pos Comma|Join Pos Comma|Lead Break Pos Comma|Lead Force Pos Comma|Trail Break Pos Comma|Trail Force Pos Comma"
+ValueDefault=ignore
+
+[Pos Enum Comma]
+Category=5
+Description="<html>The position of the comma in enum entries.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_enum_comma\s*=\s*ignore|pos_enum_comma\s*=\s*break|pos_enum_comma\s*=\s*force|pos_enum_comma\s*=\s*lead|pos_enum_comma\s*=\s*trail|pos_enum_comma\s*=\s*join|pos_enum_comma\s*=\s*lead_break|pos_enum_comma\s*=\s*lead_force|pos_enum_comma\s*=\s*trail_break|pos_enum_comma\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Enum Comma|Break Pos Enum Comma|Force Pos Enum Comma|Lead Pos Enum Comma|Trail Pos Enum Comma|Join Pos Enum Comma|Lead Break Pos Enum Comma|Lead Force Pos Enum Comma|Trail Break Pos Enum Comma|Trail Force Pos Enum Comma"
+ValueDefault=ignore
+
+[Pos Class Comma]
+Category=5
+Description="<html>The position of the comma in the base class list if there is more than one<br/>line. Affects nl_class_init_args.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_class_comma\s*=\s*ignore|pos_class_comma\s*=\s*break|pos_class_comma\s*=\s*force|pos_class_comma\s*=\s*lead|pos_class_comma\s*=\s*trail|pos_class_comma\s*=\s*join|pos_class_comma\s*=\s*lead_break|pos_class_comma\s*=\s*lead_force|pos_class_comma\s*=\s*trail_break|pos_class_comma\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Class Comma|Break Pos Class Comma|Force Pos Class Comma|Lead Pos Class Comma|Trail Pos Class Comma|Join Pos Class Comma|Lead Break Pos Class Comma|Lead Force Pos Class Comma|Trail Break Pos Class Comma|Trail Force Pos Class Comma"
+ValueDefault=ignore
+
+[Pos Constr Comma]
+Category=5
+Description="<html>The position of the comma in the constructor initialization list.<br/>Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_constr_comma\s*=\s*ignore|pos_constr_comma\s*=\s*break|pos_constr_comma\s*=\s*force|pos_constr_comma\s*=\s*lead|pos_constr_comma\s*=\s*trail|pos_constr_comma\s*=\s*join|pos_constr_comma\s*=\s*lead_break|pos_constr_comma\s*=\s*lead_force|pos_constr_comma\s*=\s*trail_break|pos_constr_comma\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Constr Comma|Break Pos Constr Comma|Force Pos Constr Comma|Lead Pos Constr Comma|Trail Pos Constr Comma|Join Pos Constr Comma|Lead Break Pos Constr Comma|Lead Force Pos Constr Comma|Trail Break Pos Constr Comma|Trail Force Pos Constr Comma"
+ValueDefault=ignore
+
+[Pos Class Colon]
+Category=5
+Description="<html>The position of trailing/leading class colon, between class and base class<br/>list. Affects nl_class_colon.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_class_colon\s*=\s*ignore|pos_class_colon\s*=\s*break|pos_class_colon\s*=\s*force|pos_class_colon\s*=\s*lead|pos_class_colon\s*=\s*trail|pos_class_colon\s*=\s*join|pos_class_colon\s*=\s*lead_break|pos_class_colon\s*=\s*lead_force|pos_class_colon\s*=\s*trail_break|pos_class_colon\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Class Colon|Break Pos Class Colon|Force Pos Class Colon|Lead Pos Class Colon|Trail Pos Class Colon|Join Pos Class Colon|Lead Break Pos Class Colon|Lead Force Pos Class Colon|Trail Break Pos Class Colon|Trail Force Pos Class Colon"
+ValueDefault=ignore
+
+[Pos Constr Colon]
+Category=5
+Description="<html>The position of colons between constructor and member initialization.<br/>Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_constr_colon\s*=\s*ignore|pos_constr_colon\s*=\s*break|pos_constr_colon\s*=\s*force|pos_constr_colon\s*=\s*lead|pos_constr_colon\s*=\s*trail|pos_constr_colon\s*=\s*join|pos_constr_colon\s*=\s*lead_break|pos_constr_colon\s*=\s*lead_force|pos_constr_colon\s*=\s*trail_break|pos_constr_colon\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Constr Colon|Break Pos Constr Colon|Force Pos Constr Colon|Lead Pos Constr Colon|Trail Pos Constr Colon|Join Pos Constr Colon|Lead Break Pos Constr Colon|Lead Force Pos Constr Colon|Trail Break Pos Constr Colon|Trail Force Pos Constr Colon"
+ValueDefault=ignore
+
+[Pos Shift]
+Category=5
+Description="<html>The position of shift operators in wrapped expressions.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pos_shift\s*=\s*ignore|pos_shift\s*=\s*break|pos_shift\s*=\s*force|pos_shift\s*=\s*lead|pos_shift\s*=\s*trail|pos_shift\s*=\s*join|pos_shift\s*=\s*lead_break|pos_shift\s*=\s*lead_force|pos_shift\s*=\s*trail_break|pos_shift\s*=\s*trail_force
+ChoicesReadable="Ignore Pos Shift|Break Pos Shift|Force Pos Shift|Lead Pos Shift|Trail Pos Shift|Join Pos Shift|Lead Break Pos Shift|Lead Force Pos Shift|Trail Break Pos Shift|Trail Force Pos Shift"
+ValueDefault=ignore
+
+[Code Width]
+Category=6
+Description="<html>Try to limit code width to N columns.</html>"
+Enabled=false
+EditorType=numeric
+CallName="code_width\s*=\s*"
+MinVal=0
+MaxVal=10000
+ValueDefault=0
+
+[Ls For Split Full]
+Category=6
+Description="<html>Whether to fully split long 'for' statements at semi-colons.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=ls_for_split_full\s*=\s*true|ls_for_split_full\s*=\s*false
+ValueDefault=false
+
+[Ls Func Split Full]
+Category=6
+Description="<html>Whether to fully split long function prototypes/calls at commas.<br/>The option ls_code_width has priority over the option ls_func_split_full.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=ls_func_split_full\s*=\s*true|ls_func_split_full\s*=\s*false
+ValueDefault=false
+
+[Ls Code Width]
+Category=6
+Description="<html>Whether to split lines as close to code_width as possible and ignore some<br/>groupings.<br/>The option ls_code_width has priority over the option ls_func_split_full.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=ls_code_width\s*=\s*true|ls_code_width\s*=\s*false
+ValueDefault=false
+
+[Align Keep Tabs]
+Category=7
+Description="<html>Whether to keep non-indenting tabs.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_keep_tabs\s*=\s*true|align_keep_tabs\s*=\s*false
+ValueDefault=false
+
+[Align With Tabs]
+Category=7
+Description="<html>Whether to use tabs for aligning.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_with_tabs\s*=\s*true|align_with_tabs\s*=\s*false
+ValueDefault=false
+
+[Align On Tabstop]
+Category=7
+Description="<html>Whether to bump out to the next tab when aligning.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_on_tabstop\s*=\s*true|align_on_tabstop\s*=\s*false
+ValueDefault=false
+
+[Align Number Right]
+Category=7
+Description="<html>Whether to right-align numbers.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_number_right\s*=\s*true|align_number_right\s*=\s*false
+ValueDefault=false
+
+[Align Keep Extra Space]
+Category=7
+Description="<html>Whether to keep whitespace not required for alignment.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_keep_extra_space\s*=\s*true|align_keep_extra_space\s*=\s*false
+ValueDefault=false
+
+[Align Func Params]
+Category=7
+Description="<html>Whether to align variable definitions in prototypes and functions.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_func_params\s*=\s*true|align_func_params\s*=\s*false
+ValueDefault=false
+
+[Align Func Params Span]
+Category=7
+Description="<html>The span for aligning parameter definitions in function on parameter name.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_params_span\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Func Params Thresh]
+Category=7
+Description="<html>The threshold for aligning function parameter definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_params_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Func Params Gap]
+Category=7
+Description="<html>The gap for aligning function parameter definitions.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_params_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Constr Value Span]
+Category=7
+Description="<html>The span for aligning constructor value.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_constr_value_span\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Constr Value Thresh]
+Category=7
+Description="<html>The threshold for aligning constructor value.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_constr_value_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Constr Value Gap]
+Category=7
+Description="<html>The gap for aligning constructor value.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_constr_value_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Same Func Call Params]
+Category=7
+Description="<html>Whether to align parameters in single-line functions that have the same<br/>name. The function names must already be aligned with each other.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_same_func_call_params\s*=\s*true|align_same_func_call_params\s*=\s*false
+ValueDefault=false
+
+[Align Same Func Call Params Span]
+Category=7
+Description="<html>The span for aligning function-call parameters for single line functions.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_same_func_call_params_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Same Func Call Params Thresh]
+Category=7
+Description="<html>The threshold for aligning function-call parameters for single line<br/>functions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_same_func_call_params_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Def Span]
+Category=7
+Description="<html>The span for aligning variable definitions.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_def_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Def Star Style]
+Category=7
+Description="<html>How to consider (or treat) the '*' in the alignment of variable definitions.<br/><br/>0: Part of the type 'void * foo;' (default)<br/>1: Part of the variable 'void *foo;'<br/>2: Dangling 'void *foo;'<br/>Dangling: the '*' will not be taken into account when aligning.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_def_star_style\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Var Def Amp Style]
+Category=7
+Description="<html>How to consider (or treat) the '&amp;' in the alignment of variable definitions.<br/><br/>0: Part of the type 'long &amp; foo;' (default)<br/>1: Part of the variable 'long &amp;foo;'<br/>2: Dangling 'long &amp;foo;'<br/>Dangling: the '&amp;' will not be taken into account when aligning.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_def_amp_style\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Var Def Thresh]
+Category=7
+Description="<html>The threshold for aligning variable definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_def_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Def Gap]
+Category=7
+Description="<html>The gap for aligning variable definitions.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_def_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Var Def Colon]
+Category=7
+Description="<html>Whether to align the colon in struct bit fields.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_var_def_colon\s*=\s*true|align_var_def_colon\s*=\s*false
+ValueDefault=false
+
+[Align Var Def Colon Gap]
+Category=7
+Description="<html>The gap for aligning the colon in struct bit fields.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_def_colon_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Var Def Attribute]
+Category=7
+Description="<html>Whether to align any attribute after the variable name.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_var_def_attribute\s*=\s*true|align_var_def_attribute\s*=\s*false
+ValueDefault=false
+
+[Align Var Def Inline]
+Category=7
+Description="<html>Whether to align inline struct/enum/union variable definitions.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_var_def_inline\s*=\s*true|align_var_def_inline\s*=\s*false
+ValueDefault=false
+
+[Align Assign Span]
+Category=7
+Description="<html>The span for aligning on '=' in assignments.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_assign_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Assign Func Proto Span]
+Category=7
+Description="<html>The span for aligning on '=' in function prototype modifier.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_assign_func_proto_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Assign Thresh]
+Category=7
+Description="<html>The threshold for aligning on '=' in assignments.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_assign_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Assign On Multi Var Defs]
+Category=7
+Description="<html>Whether to align on the left most assignment when multiple<br/>definitions are found on the same line.<br/>Depends on 'align_assign_span' and 'align_assign_thresh' settings.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_assign_on_multi_var_defs\s*=\s*true|align_assign_on_multi_var_defs\s*=\s*false
+ValueDefault=false
+
+[Align Braced Init List Span]
+Category=7
+Description="<html>The span for aligning on '{' in braced init list.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_braced_init_list_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Braced Init List Thresh]
+Category=7
+Description="<html>The threshold for aligning on '{' in braced init list.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_braced_init_list_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Assign Decl Func]
+Category=7
+Description="<html>How to apply align_assign_span to function declaration "assignments", i.e.<br/>'virtual void foo() = 0' or '~foo() = {default|delete}'.<br/><br/>0: Align with other assignments (default)<br/>1: Align with each other, ignoring regular assignments<br/>2: Don't align</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_assign_decl_func\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Enum Equ Span]
+Category=7
+Description="<html>The span for aligning on '=' in enums.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_enum_equ_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Enum Equ Thresh]
+Category=7
+Description="<html>The threshold for aligning on '=' in enums.<br/>Use a negative number for absolute thresholds.<br/><br/>0: no limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_enum_equ_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Class Span]
+Category=7
+Description="<html>The span for aligning class member definitions.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_class_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Class Thresh]
+Category=7
+Description="<html>The threshold for aligning class member definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_class_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Class Gap]
+Category=7
+Description="<html>The gap for aligning class member definitions.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_class_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Var Struct Span]
+Category=7
+Description="<html>The span for aligning struct/union member definitions.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_struct_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Struct Thresh]
+Category=7
+Description="<html>The threshold for aligning struct/union member definitions.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_struct_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Var Struct Gap]
+Category=7
+Description="<html>The gap for aligning struct/union member definitions.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_var_struct_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Struct Init Span]
+Category=7
+Description="<html>The span for aligning struct initializer values.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_struct_init_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Typedef Span]
+Category=7
+Description="<html>The span for aligning single-line typedefs.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_typedef_span\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Typedef Gap]
+Category=7
+Description="<html>The minimum space between the type and the synonym of a typedef.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_typedef_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Typedef Func]
+Category=7
+Description="<html>How to align typedef'd functions with other typedefs.<br/><br/>0: Don't mix them at all (default)<br/>1: Align the open parenthesis with the types<br/>2: Align the function type name with the other type names</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_typedef_func\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Typedef Star Style]
+Category=7
+Description="<html>How to consider (or treat) the '*' in the alignment of typedefs.<br/><br/>0: Part of the typedef type, 'typedef int * pint;' (default)<br/>1: Part of type name: 'typedef int *pint;'<br/>2: Dangling: 'typedef int *pint;'<br/>Dangling: the '*' will not be taken into account when aligning.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_typedef_star_style\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Typedef Amp Style]
+Category=7
+Description="<html>How to consider (or treat) the '&amp;' in the alignment of typedefs.<br/><br/>0: Part of the typedef type, 'typedef int &amp; intref;' (default)<br/>1: Part of type name: 'typedef int &amp;intref;'<br/>2: Dangling: 'typedef int &amp;intref;'<br/>Dangling: the '&amp;' will not be taken into account when aligning.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_typedef_amp_style\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Right Cmt Span]
+Category=7
+Description="<html>The span for aligning comments that end lines.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_right_cmt_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Right Cmt Gap]
+Category=7
+Description="<html>Minimum number of columns between preceding text and a trailing comment in<br/>order for the comment to qualify for being aligned. Must be non-zero to have<br/>an effect.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_right_cmt_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Right Cmt Mix]
+Category=7
+Description="<html>If aligning comments, whether to mix with comments after '}' and #endif with<br/>less than three spaces before the comment.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_right_cmt_mix\s*=\s*true|align_right_cmt_mix\s*=\s*false
+ValueDefault=false
+
+[Align Right Cmt Same Level]
+Category=7
+Description="<html>Whether to only align trailing comments that are at the same brace level.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_right_cmt_same_level\s*=\s*true|align_right_cmt_same_level\s*=\s*false
+ValueDefault=false
+
+[Align Right Cmt At Col]
+Category=7
+Description="<html>Minimum column at which to align trailing comments. Comments which are<br/>aligned beyond this column, but which can be aligned in a lesser column,<br/>may be "pulled in".<br/><br/>0: Ignore (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_right_cmt_at_col\s*=\s*"
+MinVal=0
+MaxVal=200
+ValueDefault=0
+
+[Align Func Proto Span]
+Category=7
+Description="<html>The span for aligning function prototypes.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_proto_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Func Proto Span Ignore Cont Lines]
+Category=7
+Description="<html>Whether to ignore continuation lines when evaluating the number of<br/>new lines for the function prototype alignment's span.<br/><br/>false: continuation lines are part of the newlines count<br/>true: continuation lines are not counted</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_func_proto_span_ignore_cont_lines\s*=\s*true|align_func_proto_span_ignore_cont_lines\s*=\s*false
+ValueDefault=false
+
+[Align Func Proto Star Style]
+Category=7
+Description="<html>How to consider (or treat) the '*' in the alignment of function prototypes.<br/><br/>0: Part of the type 'void * foo();' (default)<br/>1: Part of the function 'void *foo();'<br/>2: Dangling 'void *foo();'<br/>Dangling: the '*' will not be taken into account when aligning.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_proto_star_style\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Func Proto Amp Style]
+Category=7
+Description="<html>How to consider (or treat) the '&amp;' in the alignment of function prototypes.<br/><br/>0: Part of the type 'long &amp; foo();' (default)<br/>1: Part of the function 'long &amp;foo();'<br/>2: Dangling 'long &amp;foo();'<br/>Dangling: the '&amp;' will not be taken into account when aligning.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_proto_amp_style\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Align Func Proto Thresh]
+Category=7
+Description="<html>The threshold for aligning function prototypes.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_proto_thresh\s*=\s*"
+MinVal=-1000
+MaxVal=5000
+ValueDefault=0
+
+[Align Func Proto Gap]
+Category=7
+Description="<html>Minimum gap between the return type and the function name.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_func_proto_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align On Operator]
+Category=7
+Description="<html>Whether to align function prototypes on the 'operator' keyword instead of<br/>what follows.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_on_operator\s*=\s*true|align_on_operator\s*=\s*false
+ValueDefault=false
+
+[Align Mix Var Proto]
+Category=7
+Description="<html>Whether to mix aligning prototype and variable declarations. If true,<br/>align_var_def_XXX options are used instead of align_func_proto_XXX options.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_mix_var_proto\s*=\s*true|align_mix_var_proto\s*=\s*false
+ValueDefault=false
+
+[Align Single Line Func]
+Category=7
+Description="<html>Whether to align single-line functions with function prototypes.<br/>Uses align_func_proto_span.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_single_line_func\s*=\s*true|align_single_line_func\s*=\s*false
+ValueDefault=false
+
+[Align Single Line Brace]
+Category=7
+Description="<html>Whether to align the open brace of single-line functions.<br/>Requires align_single_line_func=true. Uses align_func_proto_span.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_single_line_brace\s*=\s*true|align_single_line_brace\s*=\s*false
+ValueDefault=false
+
+[Align Single Line Brace Gap]
+Category=7
+Description="<html>Gap for align_single_line_brace.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_single_line_brace_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Oc Msg Spec Span]
+Category=7
+Description="<html>(OC) The span for aligning Objective-C message specifications.<br/><br/>0: Don't align (default).</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_oc_msg_spec_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Nl Cont]
+Category=7
+Description="<html>Whether and how to align backslashes that split a macro onto multiple lines.<br/>This will not work right if the macro contains a multi-line comment.<br/><br/>0: Do nothing (default)<br/>1: Align the backslashes in the column at the end of the longest line<br/>2: Align with the backslash that is farthest to the left, or, if that<br/> backslash is farther left than the end of the longest line, at the end of<br/> the longest line<br/>3: Align with the backslash that is farthest to the right</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_nl_cont\s*=\s*"
+MinVal=0
+MaxVal=3
+ValueDefault=0
+
+[Align Nl Cont Spaces]
+Category=7
+Description="<html>The minimum number of spaces between the end of a line and its continuation<br/>backslash. Requires align_nl_cont.<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_nl_cont_spaces\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=1
+
+[Align Pp Define Together]
+Category=7
+Description="<html>Whether to align macro functions and variables together.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_pp_define_together\s*=\s*true|align_pp_define_together\s*=\s*false
+ValueDefault=false
+
+[Align Pp Define Span]
+Category=7
+Description="<html>The span for aligning on '#define' bodies.<br/><br/>=0: Don't align (default)<br/>&gt;0: Number of lines (including comments) between blocks</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_pp_define_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Pp Define Gap]
+Category=7
+Description="<html>The minimum space between label and value of a preprocessor define.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_pp_define_gap\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Align Left Shift]
+Category=7
+Description="<html>Whether to align lines that start with '&lt;&lt;' with previous '&lt;&lt;'.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_left_shift\s*=\s*true|align_left_shift\s*=\s*false
+ValueDefault=true
+
+[Align Eigen Comma Init]
+Category=7
+Description="<html>Whether to align comma-separated statements following '&lt;&lt;' (as used to<br/>initialize Eigen matrices).</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_eigen_comma_init\s*=\s*true|align_eigen_comma_init\s*=\s*false
+ValueDefault=false
+
+[Align Asm Colon]
+Category=7
+Description="<html>Whether to align text after 'asm volatile ()' colons.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_asm_colon\s*=\s*true|align_asm_colon\s*=\s*false
+ValueDefault=false
+
+[Align Oc Msg Colon Span]
+Category=7
+Description="<html>(OC) Span for aligning parameters in an Objective-C message call<br/>on the ':'.<br/><br/>0: Don't align.</html>"
+Enabled=false
+EditorType=numeric
+CallName="align_oc_msg_colon_span\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Align Oc Msg Colon First]
+Category=7
+Description="<html>(OC) Whether to always align with the first parameter, even if it is too<br/>short.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_oc_msg_colon_first\s*=\s*true|align_oc_msg_colon_first\s*=\s*false
+ValueDefault=false
+
+[Align Oc Decl Colon]
+Category=7
+Description="<html>(OC) Whether to align parameters in an Objective-C '+' or '-' declaration<br/>on the ':'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_oc_decl_colon\s*=\s*true|align_oc_decl_colon\s*=\s*false
+ValueDefault=false
+
+[Align Oc Msg Colon Xcode Like]
+Category=7
+Description="<html>(OC) Whether to not align parameters in an Objectve-C message call if first<br/>colon is not on next line of the message call (the same way Xcode does<br/>alignment)</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=align_oc_msg_colon_xcode_like\s*=\s*true|align_oc_msg_colon_xcode_like\s*=\s*false
+ValueDefault=false
+
+[Cmt Width]
+Category=8
+Description="<html>Try to wrap comments at N columns.</html>"
+Enabled=false
+EditorType=numeric
+CallName="cmt_width\s*=\s*"
+MinVal=0
+MaxVal=256
+ValueDefault=0
+
+[Cmt Reflow Mode]
+Category=8
+Description="<html>How to reflow comments.<br/><br/>0: No reflowing (apart from the line wrapping due to cmt_width) (default)<br/>1: No touching at all<br/>2: Full reflow (enable cmt_indent_multi for indent with line wrapping due to cmt_width)</html>"
+Enabled=false
+EditorType=numeric
+CallName="cmt_reflow_mode\s*=\s*"
+MinVal=0
+MaxVal=2
+ValueDefault=0
+
+[Cmt Reflow Fold Regex File]
+Category=8
+Description="<html>Path to a file that contains regular expressions describing patterns for<br/>which the end of one line and the beginning of the next will be folded into<br/>the same sentence or paragraph during full comment reflow. The regular<br/>expressions are described using ECMAScript syntax. The syntax for this<br/>specification is as follows, where "..." indicates the custom regular<br/>expression and "n" indicates the nth end_of_prev_line_regex and<br/>beg_of_next_line_regex regular expression pair:<br/><br/>end_of_prev_line_regex[1] = "...$"<br/>beg_of_next_line_regex[1] = "^..."<br/>end_of_prev_line_regex[2] = "...$"<br/>beg_of_next_line_regex[2] = "^..."<br/> .<br/> .<br/> .<br/>end_of_prev_line_regex[n] = "...$"<br/>beg_of_next_line_regex[n] = "^..."<br/><br/>Note that use of this option overrides the default reflow fold regular<br/>expressions, which are internally defined as follows:<br/><br/>end_of_prev_line_regex[1] = "[\w,\]\)]$"<br/>beg_of_next_line_regex[1] = "^[\w,\[\(]"<br/>end_of_prev_line_regex[2] = "\.$"<br/>beg_of_next_line_regex[2] = "^[A-Z]"</html>"
+Enabled=false
+CallName=cmt_reflow_fold_regex_file\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Cmt Reflow Indent To Paragraph Start]
+Category=8
+Description="<html>Whether to indent wrapped lines to the start of the encompassing paragraph<br/>during full comment reflow (cmt_reflow_mode = 2). Overrides the value<br/>specified by cmt_sp_after_star_cont.<br/><br/>Note that cmt_align_doxygen_javadoc_tags overrides this option for<br/>paragraphs associated with javadoc tags</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_reflow_indent_to_paragraph_start\s*=\s*true|cmt_reflow_indent_to_paragraph_start\s*=\s*false
+ValueDefault=false
+
+[Cmt Convert Tab To Spaces]
+Category=8
+Description="<html>Whether to convert all tabs to spaces in comments. If false, tabs in<br/>comments are left alone, unless used for indenting.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_convert_tab_to_spaces\s*=\s*true|cmt_convert_tab_to_spaces\s*=\s*false
+ValueDefault=false
+
+[Cmt Indent Multi]
+Category=8
+Description="<html>Whether to apply changes to multi-line comments, including cmt_width,<br/>keyword substitution and leading chars.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_indent_multi\s*=\s*true|cmt_indent_multi\s*=\s*false
+ValueDefault=true
+
+[Cmt Align Doxygen Javadoc Tags]
+Category=8
+Description="<html>Whether to align doxygen javadoc-style tags ('@param', '@return', etc.)<br/>and corresponding fields such that groups of consecutive block tags,<br/>parameter names, and descriptions align with one another. Overrides that<br/>which is specified by the cmt_sp_after_star_cont. If cmt_width &gt; 0, it may<br/>be necessary to enable cmt_indent_multi and set cmt_reflow_mode = 2<br/>in order to achieve the desired alignment for line-wrapping.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_align_doxygen_javadoc_tags\s*=\s*true|cmt_align_doxygen_javadoc_tags\s*=\s*false
+ValueDefault=false
+
+[Cmt Sp Before Doxygen Javadoc Tags]
+Category=8
+Description="<html>The number of spaces to insert after the star and before doxygen<br/>javadoc-style tags (@param, @return, etc). Requires enabling<br/>cmt_align_doxygen_javadoc_tags. Overrides that which is specified by the<br/>cmt_sp_after_star_cont.<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="cmt_sp_before_doxygen_javadoc_tags\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=1
+
+[Cmt Trailing Single Line C To Cpp]
+Category=8
+Description="<html>Whether to change trailing, single-line c-comments into cpp-comments.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_trailing_single_line_c_to_cpp\s*=\s*true|cmt_trailing_single_line_c_to_cpp\s*=\s*false
+ValueDefault=false
+
+[Cmt C Group]
+Category=8
+Description="<html>Whether to group c-comments that look like they are in a block.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_c_group\s*=\s*true|cmt_c_group\s*=\s*false
+ValueDefault=false
+
+[Cmt C Nl Start]
+Category=8
+Description="<html>Whether to put an empty '/*' on the first line of the combined c-comment.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_c_nl_start\s*=\s*true|cmt_c_nl_start\s*=\s*false
+ValueDefault=false
+
+[Cmt C Nl End]
+Category=8
+Description="<html>Whether to add a newline before the closing '*/' of the combined c-comment.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_c_nl_end\s*=\s*true|cmt_c_nl_end\s*=\s*false
+ValueDefault=false
+
+[Cmt Cpp To C]
+Category=8
+Description="<html>Whether to change cpp-comments into c-comments.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_cpp_to_c\s*=\s*true|cmt_cpp_to_c\s*=\s*false
+ValueDefault=false
+
+[Cmt Cpp Group]
+Category=8
+Description="<html>Whether to group cpp-comments that look like they are in a block. Only<br/>meaningful if cmt_cpp_to_c=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_cpp_group\s*=\s*true|cmt_cpp_group\s*=\s*false
+ValueDefault=false
+
+[Cmt Cpp Nl Start]
+Category=8
+Description="<html>Whether to put an empty '/*' on the first line of the combined cpp-comment<br/>when converting to a c-comment.<br/><br/>Requires cmt_cpp_to_c=true and cmt_cpp_group=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_cpp_nl_start\s*=\s*true|cmt_cpp_nl_start\s*=\s*false
+ValueDefault=false
+
+[Cmt Cpp Nl End]
+Category=8
+Description="<html>Whether to add a newline before the closing '*/' of the combined cpp-comment<br/>when converting to a c-comment.<br/><br/>Requires cmt_cpp_to_c=true and cmt_cpp_group=true.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_cpp_nl_end\s*=\s*true|cmt_cpp_nl_end\s*=\s*false
+ValueDefault=false
+
+[Cmt Star Cont]
+Category=8
+Description="<html>Whether to put a star on subsequent comment lines.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_star_cont\s*=\s*true|cmt_star_cont\s*=\s*false
+ValueDefault=false
+
+[Cmt Sp Before Star Cont]
+Category=8
+Description="<html>The number of spaces to insert at the start of subsequent comment lines.</html>"
+Enabled=false
+EditorType=numeric
+CallName="cmt_sp_before_star_cont\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Cmt Sp After Star Cont]
+Category=8
+Description="<html>The number of spaces to insert after the star on subsequent comment lines.</html>"
+Enabled=false
+EditorType=numeric
+CallName="cmt_sp_after_star_cont\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Cmt Multi Check Last]
+Category=8
+Description="<html>For multi-line comments with a '*' lead, remove leading spaces if the first<br/>and last lines of the comment are the same length.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_multi_check_last\s*=\s*true|cmt_multi_check_last\s*=\s*false
+ValueDefault=true
+
+[Cmt Multi First Len Minimum]
+Category=8
+Description="<html>For multi-line comments with a '*' lead, remove leading spaces if the first<br/>and last lines of the comment are the same length AND if the length is<br/>bigger as the first_len minimum.<br/><br/>Default: 4</html>"
+Enabled=false
+EditorType=numeric
+CallName="cmt_multi_first_len_minimum\s*=\s*"
+MinVal=1
+MaxVal=20
+ValueDefault=4
+
+[Cmt Insert File Header]
+Category=8
+Description="<html>Path to a file that contains text to insert at the beginning of a file if<br/>the file doesn't start with a C/C++ comment. If the inserted text contains<br/>'$(filename)', that will be replaced with the current file's name.</html>"
+Enabled=false
+CallName=cmt_insert_file_header\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Cmt Insert File Footer]
+Category=8
+Description="<html>Path to a file that contains text to insert at the end of a file if the<br/>file doesn't end with a C/C++ comment. If the inserted text contains<br/>'$(filename)', that will be replaced with the current file's name.</html>"
+Enabled=false
+CallName=cmt_insert_file_footer\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Cmt Insert Func Header]
+Category=8
+Description="<html>Path to a file that contains text to insert before a function definition if<br/>the function isn't preceded by a C/C++ comment. If the inserted text<br/>contains '$(function)', '$(javaparam)' or '$(fclass)', these will be<br/>replaced with, respectively, the name of the function, the javadoc '@param'<br/>and '@return' stuff, or the name of the class to which the member function<br/>belongs.</html>"
+Enabled=false
+CallName=cmt_insert_func_header\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Cmt Insert Class Header]
+Category=8
+Description="<html>Path to a file that contains text to insert before a class if the class<br/>isn't preceded by a C/C++ comment. If the inserted text contains '$(class)',<br/>that will be replaced with the class name.</html>"
+Enabled=false
+CallName=cmt_insert_class_header\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Cmt Insert Oc Msg Header]
+Category=8
+Description="<html>Path to a file that contains text to insert before an Objective-C message<br/>specification, if the method isn't preceded by a C/C++ comment. If the<br/>inserted text contains '$(message)' or '$(javaparam)', these will be<br/>replaced with, respectively, the name of the function, or the javadoc<br/>'@param' and '@return' stuff.</html>"
+Enabled=false
+CallName=cmt_insert_oc_msg_header\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Cmt Insert Before Preproc]
+Category=8
+Description="<html>Whether a comment should be inserted if a preprocessor is encountered when<br/>stepping backwards from a function name.<br/><br/>Applies to cmt_insert_oc_msg_header, cmt_insert_func_header and<br/>cmt_insert_class_header.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_insert_before_preproc\s*=\s*true|cmt_insert_before_preproc\s*=\s*false
+ValueDefault=false
+
+[Cmt Insert Before Inlines]
+Category=8
+Description="<html>Whether a comment should be inserted if a function is declared inline to a<br/>class definition.<br/><br/>Applies to cmt_insert_func_header.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_insert_before_inlines\s*=\s*true|cmt_insert_before_inlines\s*=\s*false
+ValueDefault=true
+
+[Cmt Insert Before Ctor Dtor]
+Category=8
+Description="<html>Whether a comment should be inserted if the function is a class constructor<br/>or destructor.<br/><br/>Applies to cmt_insert_func_header.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=cmt_insert_before_ctor_dtor\s*=\s*true|cmt_insert_before_ctor_dtor\s*=\s*false
+ValueDefault=false
+
+[Mod Full Brace Do]
+Category=9
+Description="<html>Add or remove braces on a single-line 'do' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_full_brace_do\s*=\s*ignore|mod_full_brace_do\s*=\s*add|mod_full_brace_do\s*=\s*remove|mod_full_brace_do\s*=\s*force|mod_full_brace_do\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Full Brace Do|Add Mod Full Brace Do|Remove Mod Full Brace Do|Force Mod Full Brace Do"
+ValueDefault=ignore
+
+[Mod Full Brace For]
+Category=9
+Description="<html>Add or remove braces on a single-line 'for' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_full_brace_for\s*=\s*ignore|mod_full_brace_for\s*=\s*add|mod_full_brace_for\s*=\s*remove|mod_full_brace_for\s*=\s*force|mod_full_brace_for\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Full Brace For|Add Mod Full Brace For|Remove Mod Full Brace For|Force Mod Full Brace For"
+ValueDefault=ignore
+
+[Mod Full Brace Function]
+Category=9
+Description="<html>(Pawn) Add or remove braces on a single-line function definition.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_full_brace_function\s*=\s*ignore|mod_full_brace_function\s*=\s*add|mod_full_brace_function\s*=\s*remove|mod_full_brace_function\s*=\s*force|mod_full_brace_function\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Full Brace Function|Add Mod Full Brace Function|Remove Mod Full Brace Function|Force Mod Full Brace Function"
+ValueDefault=ignore
+
+[Mod Full Brace If]
+Category=9
+Description="<html>Add or remove braces on a single-line 'if' statement. Braces will not be<br/>removed if the braced statement contains an 'else'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_full_brace_if\s*=\s*ignore|mod_full_brace_if\s*=\s*add|mod_full_brace_if\s*=\s*remove|mod_full_brace_if\s*=\s*force|mod_full_brace_if\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Full Brace If|Add Mod Full Brace If|Remove Mod Full Brace If|Force Mod Full Brace If"
+ValueDefault=ignore
+
+[Mod Full Brace If Chain]
+Category=9
+Description="<html>Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either<br/>have, or do not have, braces. Overrides mod_full_brace_if.<br/><br/>0: Don't override mod_full_brace_if<br/>1: Add braces to all blocks if any block needs braces and remove braces if<br/> they can be removed from all blocks<br/>2: Add braces to all blocks if any block already has braces, regardless of<br/> whether it needs them<br/>3: Add braces to all blocks if any block needs braces and remove braces if<br/> they can be removed from all blocks, except if all blocks have braces<br/> despite none needing them</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_full_brace_if_chain\s*=\s*"
+MinVal=0
+MaxVal=3
+ValueDefault=0
+
+[Mod Full Brace If Chain Only]
+Category=9
+Description="<html>Whether to add braces to all blocks of an 'if'/'else if'/'else' chain.<br/>If true, mod_full_brace_if_chain will only remove braces from an 'if' that<br/>does not have an 'else if' or 'else'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_full_brace_if_chain_only\s*=\s*true|mod_full_brace_if_chain_only\s*=\s*false
+ValueDefault=false
+
+[Mod Full Brace While]
+Category=9
+Description="<html>Add or remove braces on single-line 'while' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_full_brace_while\s*=\s*ignore|mod_full_brace_while\s*=\s*add|mod_full_brace_while\s*=\s*remove|mod_full_brace_while\s*=\s*force|mod_full_brace_while\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Full Brace While|Add Mod Full Brace While|Remove Mod Full Brace While|Force Mod Full Brace While"
+ValueDefault=ignore
+
+[Mod Full Brace Using]
+Category=9
+Description="<html>Add or remove braces on single-line 'using ()' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_full_brace_using\s*=\s*ignore|mod_full_brace_using\s*=\s*add|mod_full_brace_using\s*=\s*remove|mod_full_brace_using\s*=\s*force|mod_full_brace_using\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Full Brace Using|Add Mod Full Brace Using|Remove Mod Full Brace Using|Force Mod Full Brace Using"
+ValueDefault=ignore
+
+[Mod Full Brace Nl]
+Category=9
+Description="<html>Don't remove braces around statements that span N newlines</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_full_brace_nl\s*=\s*"
+MinVal=0
+MaxVal=5000
+ValueDefault=0
+
+[Mod Full Brace Nl Block Rem Mlcond]
+Category=9
+Description="<html>Whether to prevent removal of braces from 'if'/'for'/'while'/etc. blocks<br/>which span multiple lines.<br/><br/>Affects:<br/> mod_full_brace_for<br/> mod_full_brace_if<br/> mod_full_brace_if_chain<br/> mod_full_brace_if_chain_only<br/> mod_full_brace_while<br/> mod_full_brace_using<br/><br/>Does not affect:<br/> mod_full_brace_do<br/> mod_full_brace_function</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_full_brace_nl_block_rem_mlcond\s*=\s*true|mod_full_brace_nl_block_rem_mlcond\s*=\s*false
+ValueDefault=false
+
+[Mod Paren On Return]
+Category=9
+Description="<html>Add or remove unnecessary parentheses on 'return' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_paren_on_return\s*=\s*ignore|mod_paren_on_return\s*=\s*add|mod_paren_on_return\s*=\s*remove|mod_paren_on_return\s*=\s*force|mod_paren_on_return\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Paren On Return|Add Mod Paren On Return|Remove Mod Paren On Return|Force Mod Paren On Return"
+ValueDefault=ignore
+
+[Mod Paren On Throw]
+Category=9
+Description="<html>Add or remove unnecessary parentheses on 'throw' statement.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_paren_on_throw\s*=\s*ignore|mod_paren_on_throw\s*=\s*add|mod_paren_on_throw\s*=\s*remove|mod_paren_on_throw\s*=\s*force|mod_paren_on_throw\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Paren On Throw|Add Mod Paren On Throw|Remove Mod Paren On Throw|Force Mod Paren On Throw"
+ValueDefault=ignore
+
+[Mod Pawn Semicolon]
+Category=9
+Description="<html>(Pawn) Whether to change optional semicolons to real semicolons.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_pawn_semicolon\s*=\s*true|mod_pawn_semicolon\s*=\s*false
+ValueDefault=false
+
+[Mod Full Paren If Bool]
+Category=9
+Description="<html>Whether to fully parenthesize Boolean expressions in 'while' and 'if'<br/>statement, as in 'if (a &amp;&amp; b &gt; c)' =&gt; 'if (a &amp;&amp; (b &gt; c))'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_full_paren_if_bool\s*=\s*true|mod_full_paren_if_bool\s*=\s*false
+ValueDefault=false
+
+[Mod Full Paren Assign Bool]
+Category=9
+Description="<html>Whether to fully parenthesize Boolean expressions after '='<br/>statement, as in 'x = a &amp;&amp; b &gt; c;' =&gt; 'x = (a &amp;&amp; (b &gt; c));'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_full_paren_assign_bool\s*=\s*true|mod_full_paren_assign_bool\s*=\s*false
+ValueDefault=false
+
+[Mod Full Paren Return Bool]
+Category=9
+Description="<html>Whether to fully parenthesize Boolean expressions after '='<br/>statement, as in 'return a &amp;&amp; b &gt; c;' =&gt; 'return (a &amp;&amp; (b &gt; c));'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_full_paren_return_bool\s*=\s*true|mod_full_paren_return_bool\s*=\s*false
+ValueDefault=false
+
+[Mod Remove Extra Semicolon]
+Category=9
+Description="<html>Whether to remove superfluous semicolons.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_remove_extra_semicolon\s*=\s*true|mod_remove_extra_semicolon\s*=\s*false
+ValueDefault=false
+
+[Mod Remove Duplicate Include]
+Category=9
+Description="<html>Whether to remove duplicate include.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_remove_duplicate_include\s*=\s*true|mod_remove_duplicate_include\s*=\s*false
+ValueDefault=false
+
+[Mod Add Force C Closebrace Comment]
+Category=9
+Description="<html>the following options (mod_XX_closebrace_comment) use different comment,<br/>depending of the setting of the next option.<br/>false: Use the c comment (default)<br/>true : Use the cpp comment</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_add_force_c_closebrace_comment\s*=\s*true|mod_add_force_c_closebrace_comment\s*=\s*false
+ValueDefault=false
+
+[Mod Add Long Function Closebrace Comment]
+Category=9
+Description="<html>If a function body exceeds the specified number of newlines and doesn't have<br/>a comment after the close brace, a comment will be added.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_add_long_function_closebrace_comment\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[Mod Add Long Namespace Closebrace Comment]
+Category=9
+Description="<html>If a namespace body exceeds the specified number of newlines and doesn't<br/>have a comment after the close brace, a comment will be added.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_add_long_namespace_closebrace_comment\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[Mod Add Long Class Closebrace Comment]
+Category=9
+Description="<html>If a class body exceeds the specified number of newlines and doesn't have a<br/>comment after the close brace, a comment will be added.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_add_long_class_closebrace_comment\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[Mod Add Long Switch Closebrace Comment]
+Category=9
+Description="<html>If a switch body exceeds the specified number of newlines and doesn't have a<br/>comment after the close brace, a comment will be added.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_add_long_switch_closebrace_comment\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[Mod Add Long Ifdef Endif Comment]
+Category=9
+Description="<html>If an #ifdef body exceeds the specified number of newlines and doesn't have<br/>a comment after the #endif, a comment will be added.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_add_long_ifdef_endif_comment\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[Mod Add Long Ifdef Else Comment]
+Category=9
+Description="<html>If an #ifdef or #else body exceeds the specified number of newlines and<br/>doesn't have a comment after the #else, a comment will be added.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_add_long_ifdef_else_comment\s*=\s*"
+MinVal=0
+MaxVal=255
+ValueDefault=0
+
+[Mod Sort Case Sensitive]
+Category=9
+Description="<html>Whether to take care of the case by the mod_sort_xx options.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_case_sensitive\s*=\s*true|mod_sort_case_sensitive\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Import]
+Category=9
+Description="<html>Whether to sort consecutive single-line 'import' statements.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_import\s*=\s*true|mod_sort_import\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Using]
+Category=9
+Description="<html>(C#) Whether to sort consecutive single-line 'using' statements.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_using\s*=\s*true|mod_sort_using\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Include]
+Category=9
+Description="<html>Whether to sort consecutive single-line '#include' statements (C/C++) and<br/>'#import' statements (Objective-C). Be aware that this has the potential to<br/>break your code if your includes/imports have ordering dependencies.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_include\s*=\s*true|mod_sort_include\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Incl Import Prioritize Filename]
+Category=9
+Description="<html>Whether to prioritize '#include' and '#import' statements that contain<br/>filename without extension when sorting is enabled.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_incl_import_prioritize_filename\s*=\s*true|mod_sort_incl_import_prioritize_filename\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Incl Import Prioritize Extensionless]
+Category=9
+Description="<html>Whether to prioritize '#include' and '#import' statements that does not<br/>contain extensions when sorting is enabled.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_incl_import_prioritize_extensionless\s*=\s*true|mod_sort_incl_import_prioritize_extensionless\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Incl Import Prioritize Angle Over Quotes]
+Category=9
+Description="<html>Whether to prioritize '#include' and '#import' statements that contain<br/>angle over quotes when sorting is enabled.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_incl_import_prioritize_angle_over_quotes\s*=\s*true|mod_sort_incl_import_prioritize_angle_over_quotes\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Incl Import Ignore Extension]
+Category=9
+Description="<html>Whether to ignore file extension in '#include' and '#import' statements<br/>for sorting comparison.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_incl_import_ignore_extension\s*=\s*true|mod_sort_incl_import_ignore_extension\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Incl Import Grouping Enabled]
+Category=9
+Description="<html>Whether to group '#include' and '#import' statements when sorting is enabled.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_incl_import_grouping_enabled\s*=\s*true|mod_sort_incl_import_grouping_enabled\s*=\s*false
+ValueDefault=false
+
+[Mod Move Case Break]
+Category=9
+Description="<html>Whether to move a 'break' that appears after a fully braced 'case' before<br/>the close brace, as in 'case X: { ... } break;' =&gt; 'case X: { ... break; }'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_move_case_break\s*=\s*true|mod_move_case_break\s*=\s*false
+ValueDefault=false
+
+[Mod Move Case Return]
+Category=9
+Description="<html>Whether to move a 'return' that appears after a fully braced 'case' before<br/>the close brace, as in 'case X: { ... } return;' =&gt; 'case X: { ... return; }'.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_move_case_return\s*=\s*true|mod_move_case_return\s*=\s*false
+ValueDefault=false
+
+[Mod Case Brace]
+Category=9
+Description="<html>Add or remove braces around a fully braced case statement. Will only remove<br/>braces if there are no variable declarations in the block.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_case_brace\s*=\s*ignore|mod_case_brace\s*=\s*add|mod_case_brace\s*=\s*remove|mod_case_brace\s*=\s*force|mod_case_brace\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Case Brace|Add Mod Case Brace|Remove Mod Case Brace|Force Mod Case Brace"
+ValueDefault=ignore
+
+[Mod Remove Empty Return]
+Category=9
+Description="<html>Whether to remove a void 'return;' that appears as the last statement in a<br/>function.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_remove_empty_return\s*=\s*true|mod_remove_empty_return\s*=\s*false
+ValueDefault=false
+
+[Mod Enum Last Comma]
+Category=9
+Description="<html>Add or remove the comma after the last value of an enumeration.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_enum_last_comma\s*=\s*ignore|mod_enum_last_comma\s*=\s*add|mod_enum_last_comma\s*=\s*remove|mod_enum_last_comma\s*=\s*force|mod_enum_last_comma\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Enum Last Comma|Add Mod Enum Last Comma|Remove Mod Enum Last Comma|Force Mod Enum Last Comma"
+ValueDefault=ignore
+
+[Mod Infinite Loop]
+Category=9
+Description="<html>Syntax to use for infinite loops.<br/><br/>0: Leave syntax alone (default)<br/>1: Rewrite as `for(;;)`<br/>2: Rewrite as `while(true)`<br/>3: Rewrite as `do`...`while(true);`<br/>4: Rewrite as `while`<br/>5: Rewrite as `do`...`while;`<br/><br/>Infinite loops that do not already match one of these syntaxes are ignored.<br/>Other options that affect loop formatting will be applied after transforming<br/>the syntax.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_infinite_loop\s*=\s*"
+MinVal=0
+MaxVal=5
+ValueDefault=0
+
+[Mod Int Short]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'int short'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_int_short\s*=\s*ignore|mod_int_short\s*=\s*add|mod_int_short\s*=\s*remove|mod_int_short\s*=\s*force|mod_int_short\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Int Short|Add Mod Int Short|Remove Mod Int Short|Force Mod Int Short"
+ValueDefault=ignore
+
+[Mod Short Int]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'short int'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_short_int\s*=\s*ignore|mod_short_int\s*=\s*add|mod_short_int\s*=\s*remove|mod_short_int\s*=\s*force|mod_short_int\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Short Int|Add Mod Short Int|Remove Mod Short Int|Force Mod Short Int"
+ValueDefault=ignore
+
+[Mod Int Long]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'int long'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_int_long\s*=\s*ignore|mod_int_long\s*=\s*add|mod_int_long\s*=\s*remove|mod_int_long\s*=\s*force|mod_int_long\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Int Long|Add Mod Int Long|Remove Mod Int Long|Force Mod Int Long"
+ValueDefault=ignore
+
+[Mod Long Int]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'long int'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_long_int\s*=\s*ignore|mod_long_int\s*=\s*add|mod_long_int\s*=\s*remove|mod_long_int\s*=\s*force|mod_long_int\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Long Int|Add Mod Long Int|Remove Mod Long Int|Force Mod Long Int"
+ValueDefault=ignore
+
+[Mod Int Signed]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'int signed'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_int_signed\s*=\s*ignore|mod_int_signed\s*=\s*add|mod_int_signed\s*=\s*remove|mod_int_signed\s*=\s*force|mod_int_signed\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Int Signed|Add Mod Int Signed|Remove Mod Int Signed|Force Mod Int Signed"
+ValueDefault=ignore
+
+[Mod Signed Int]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'signed int'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_signed_int\s*=\s*ignore|mod_signed_int\s*=\s*add|mod_signed_int\s*=\s*remove|mod_signed_int\s*=\s*force|mod_signed_int\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Signed Int|Add Mod Signed Int|Remove Mod Signed Int|Force Mod Signed Int"
+ValueDefault=ignore
+
+[Mod Int Unsigned]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'int unsigned'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_int_unsigned\s*=\s*ignore|mod_int_unsigned\s*=\s*add|mod_int_unsigned\s*=\s*remove|mod_int_unsigned\s*=\s*force|mod_int_unsigned\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Int Unsigned|Add Mod Int Unsigned|Remove Mod Int Unsigned|Force Mod Int Unsigned"
+ValueDefault=ignore
+
+[Mod Unsigned Int]
+Category=9
+Description="<html>Add or remove the 'int' keyword in 'unsigned int'.</html>"
+Enabled=false
+EditorType=multiple
+Choices=mod_unsigned_int\s*=\s*ignore|mod_unsigned_int\s*=\s*add|mod_unsigned_int\s*=\s*remove|mod_unsigned_int\s*=\s*force|mod_unsigned_int\s*=\s*not_defined
+ChoicesReadable="Ignore Mod Unsigned Int|Add Mod Unsigned Int|Remove Mod Unsigned Int|Force Mod Unsigned Int"
+ValueDefault=ignore
+
+[Mod Int Prefer Int On Left]
+Category=9
+Description="<html>If there is a situation where mod_int_* and mod_*_int would result in<br/>multiple int keywords, whether to keep the rightmost int (the default) or the<br/>leftmost int.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_int_prefer_int_on_left\s*=\s*true|mod_int_prefer_int_on_left\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Oc Properties]
+Category=9
+Description="<html>(OC) Whether to organize the properties. If true, properties will be<br/>rearranged according to the mod_sort_oc_property_*_weight factors.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=mod_sort_oc_properties\s*=\s*true|mod_sort_oc_properties\s*=\s*false
+ValueDefault=false
+
+[Mod Sort Oc Property Class Weight]
+Category=9
+Description="<html>(OC) Weight of a class property modifier.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_sort_oc_property_class_weight\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Mod Sort Oc Property Thread Safe Weight]
+Category=9
+Description="<html>(OC) Weight of 'atomic' and 'nonatomic'.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_sort_oc_property_thread_safe_weight\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Mod Sort Oc Property Readwrite Weight]
+Category=9
+Description="<html>(OC) Weight of 'readwrite' when organizing properties.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_sort_oc_property_readwrite_weight\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Mod Sort Oc Property Reference Weight]
+Category=9
+Description="<html>(OC) Weight of a reference type specifier ('retain', 'copy', 'assign',<br/>'weak', 'strong') when organizing properties.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_sort_oc_property_reference_weight\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Mod Sort Oc Property Getter Weight]
+Category=9
+Description="<html>(OC) Weight of getter type ('getter=') when organizing properties.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_sort_oc_property_getter_weight\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Mod Sort Oc Property Setter Weight]
+Category=9
+Description="<html>(OC) Weight of setter type ('setter=') when organizing properties.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_sort_oc_property_setter_weight\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Mod Sort Oc Property Nullability Weight]
+Category=9
+Description="<html>(OC) Weight of nullability type ('nullable', 'nonnull', 'null_unspecified',<br/>'null_resettable') when organizing properties.</html>"
+Enabled=false
+EditorType=numeric
+CallName="mod_sort_oc_property_nullability_weight\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Pp Indent With Tabs]
+Category=10
+Description="<html>How to use tabs when indenting preprocessor code.<br/><br/>-1: Use 'indent_with_tabs' setting (default)<br/> 0: Spaces only<br/> 1: Indent with tabs to brace level, align with spaces<br/> 2: Indent and align with tabs, using spaces when not on a tabstop<br/><br/>Default: -1</html>"
+Enabled=false
+EditorType=numeric
+CallName="pp_indent_with_tabs\s*=\s*"
+MinVal=-1
+MaxVal=2
+ValueDefault=-1
+
+[Pp Indent]
+Category=10
+Description="<html>Add or remove indentation of preprocessor directives inside #if blocks<br/>at brace level 0 (file-level).</html>"
+Enabled=false
+EditorType=multiple
+Choices=pp_indent\s*=\s*ignore|pp_indent\s*=\s*add|pp_indent\s*=\s*remove|pp_indent\s*=\s*force|pp_indent\s*=\s*not_defined
+ChoicesReadable="Ignore Pp Indent|Add Pp Indent|Remove Pp Indent|Force Pp Indent"
+ValueDefault=ignore
+
+[Pp Indent At Level]
+Category=10
+Description="<html>Whether to indent #if/#else/#endif at the brace level. If false, these are<br/>indented from column 1.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_indent_at_level\s*=\s*true|pp_indent_at_level\s*=\s*false
+ValueDefault=false
+
+[Pp Indent At Level0]
+Category=10
+Description="<html>Whether to indent #if/#else/#endif at the parenthesis level if the brace<br/>level is 0. If false, these are indented from column 1.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_indent_at_level0\s*=\s*true|pp_indent_at_level0\s*=\s*false
+ValueDefault=false
+
+[Pp Indent Count]
+Category=10
+Description="<html>Specifies the number of columns to indent preprocessors per level<br/>at brace level 0 (file-level). If pp_indent_at_level=false, also specifies<br/>the number of columns to indent preprocessors per level<br/>at brace level &gt; 0 (function-level).<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="pp_indent_count\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=1
+
+[Pp Space After]
+Category=10
+Description="<html>Add or remove space after # based on pp level of #if blocks.</html>"
+Enabled=false
+EditorType=multiple
+Choices=pp_space_after\s*=\s*ignore|pp_space_after\s*=\s*add|pp_space_after\s*=\s*remove|pp_space_after\s*=\s*force|pp_space_after\s*=\s*not_defined
+ChoicesReadable="Ignore Pp Space After|Add Pp Space After|Remove Pp Space After|Force Pp Space After"
+ValueDefault=ignore
+
+[Pp Space Count]
+Category=10
+Description="<html>Sets the number of spaces per level added with pp_space_after.</html>"
+Enabled=false
+EditorType=numeric
+CallName="pp_space_count\s*=\s*"
+MinVal=0
+MaxVal=16
+ValueDefault=0
+
+[Pp Indent Region]
+Category=10
+Description="<html>The indent for '#region' and '#endregion' in C# and '#pragma region' in<br/>C/C++. Negative values decrease indent down to the first column.</html>"
+Enabled=false
+EditorType=numeric
+CallName="pp_indent_region\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Pp Region Indent Code]
+Category=10
+Description="<html>Whether to indent the code between #region and #endregion.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_region_indent_code\s*=\s*true|pp_region_indent_code\s*=\s*false
+ValueDefault=false
+
+[Pp Indent If]
+Category=10
+Description="<html>If pp_indent_at_level=true, sets the indent for #if, #else and #endif when<br/>not at file-level. Negative values decrease indent down to the first column.<br/><br/>=0: Indent preprocessors using output_tab_size<br/>&gt;0: Column at which all preprocessors will be indented</html>"
+Enabled=false
+EditorType=numeric
+CallName="pp_indent_if\s*=\s*"
+MinVal=-16
+MaxVal=16
+ValueDefault=0
+
+[Pp If Indent Code]
+Category=10
+Description="<html>Whether to indent the code between #if, #else and #endif.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_if_indent_code\s*=\s*true|pp_if_indent_code\s*=\s*false
+ValueDefault=false
+
+[Pp Indent In Guard]
+Category=10
+Description="<html>Whether to indent the body of an #if that encompasses all the code in the file.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_indent_in_guard\s*=\s*true|pp_indent_in_guard\s*=\s*false
+ValueDefault=false
+
+[Pp Define At Level]
+Category=10
+Description="<html>Whether to indent '#define' at the brace level. If false, these are<br/>indented from column 1.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_define_at_level\s*=\s*true|pp_define_at_level\s*=\s*false
+ValueDefault=false
+
+[Pp Include At Level]
+Category=10
+Description="<html>Whether to indent '#include' at the brace level.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_include_at_level\s*=\s*true|pp_include_at_level\s*=\s*false
+ValueDefault=false
+
+[Pp Ignore Define Body]
+Category=10
+Description="<html>Whether to ignore the '#define' body while formatting.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_ignore_define_body\s*=\s*true|pp_ignore_define_body\s*=\s*false
+ValueDefault=false
+
+[Pp Multiline Define Body Indent]
+Category=10
+Description="<html>An offset value that controls the indentation of the body of a multiline #define.<br/>'body' refers to all the lines of a multiline #define except the first line.<br/>Requires 'pp_ignore_define_body = false'.<br/><br/> &lt;0: Absolute column: the body indentation starts off at the specified column<br/> (ex. -3 ==&gt; the body is indented starting from column 3)<br/>&gt;=0: Relative to the column of the '#' of '#define'<br/> (ex. 3 ==&gt; the body is indented starting 3 columns at the right of '#')<br/><br/>Default: 8</html>"
+Enabled=false
+EditorType=numeric
+CallName="pp_multiline_define_body_indent\s*=\s*"
+MinVal=-32
+MaxVal=32
+ValueDefault=8
+
+[Pp Indent Case]
+Category=10
+Description="<html>Whether to indent case statements between #if, #else, and #endif.<br/>Only applies to the indent of the preprocessor that the case statements<br/>directly inside of.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_indent_case\s*=\s*true|pp_indent_case\s*=\s*false
+ValueDefault=true
+
+[Pp Indent Func Def]
+Category=10
+Description="<html>Whether to indent whole function definitions between #if, #else, and #endif.<br/>Only applies to the indent of the preprocessor that the function definition<br/>is directly inside of.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_indent_func_def\s*=\s*true|pp_indent_func_def\s*=\s*false
+ValueDefault=true
+
+[Pp Indent Extern]
+Category=10
+Description="<html>Whether to indent extern C blocks between #if, #else, and #endif.<br/>Only applies to the indent of the preprocessor that the extern block is<br/>directly inside of.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_indent_extern\s*=\s*true|pp_indent_extern\s*=\s*false
+ValueDefault=true
+
+[Pp Indent Brace]
+Category=10
+Description="<html>How to indent braces directly inside #if, #else, and #endif.<br/>Requires pp_if_indent_code=true and only applies to the indent of the<br/>preprocessor that the braces are directly inside of.<br/> 0: No extra indent<br/> 1: Indent by one level<br/>-1: Preserve original indentation<br/><br/>Default: 1</html>"
+Enabled=false
+EditorType=numeric
+CallName="pp_indent_brace\s*=\s*"
+MinVal=-1
+MaxVal=1
+ValueDefault=1
+
+[Pp Warn Unbalanced If]
+Category=10
+Description="<html>Whether to print warning messages for unbalanced #if and #else blocks.<br/>This will print a message in the following cases:<br/>- if an #ifdef block ends on a different indent level than<br/> where it started from. Example:<br/><br/> #ifdef TEST<br/> int i;<br/> {<br/> int j;<br/> #endif<br/><br/>- an #elif/#else block ends on a different indent level than<br/> the corresponding #ifdef block. Example:<br/><br/> #ifdef TEST<br/> int i;<br/> #else<br/> }<br/> int j;<br/> #endif</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=pp_warn_unbalanced_if\s*=\s*true|pp_warn_unbalanced_if\s*=\s*false
+ValueDefault=false
+
+[Include Category 0]
+Category=11
+Description="<html>The regex for include category with priority 0.</html>"
+Enabled=false
+CallName=include_category_0\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Include Category 1]
+Category=11
+Description="<html>The regex for include category with priority 1.</html>"
+Enabled=false
+CallName=include_category_1\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Include Category 2]
+Category=11
+Description="<html>The regex for include category with priority 2.</html>"
+Enabled=false
+CallName=include_category_2\s*=\s*
+EditorType=string
+ValueDefault=
+
+[Use Indent Func Call Param]
+Category=12
+Description="<html>true: indent_func_call_param will be used (default)<br/>false: indent_func_call_param will NOT be used<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=use_indent_func_call_param\s*=\s*true|use_indent_func_call_param\s*=\s*false
+ValueDefault=true
+
+[Use Indent Continue Only Once]
+Category=12
+Description="<html>The value of the indentation for a continuation line is calculated<br/>differently if the statement is:<br/>- a declaration: your case with QString fileName ...<br/>- an assignment: your case with pSettings = new QSettings( ...<br/><br/>At the second case the indentation value might be used twice:<br/>- at the assignment<br/>- at the function call (if present)<br/><br/>To prevent the double use of the indentation value, use this option with the<br/>value 'true'.<br/><br/>true: indent_continue will be used only once<br/>false: indent_continue will be used every time (default)<br/><br/>Requires indent_ignore_first_continue=false.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=use_indent_continue_only_once\s*=\s*true|use_indent_continue_only_once\s*=\s*false
+ValueDefault=false
+
+[Indent Cpp Lambda Only Once]
+Category=12
+Description="<html>The indentation can be:<br/>- after the assignment, at the '[' character<br/>- at the beginning of the lambda body<br/><br/>true: indentation will be at the beginning of the lambda body<br/>false: indentation will be after the assignment (default)</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=indent_cpp_lambda_only_once\s*=\s*true|indent_cpp_lambda_only_once\s*=\s*false
+ValueDefault=false
+
+[Use Sp After Angle Always]
+Category=12
+Description="<html>Whether sp_after_angle takes precedence over sp_inside_fparen. This was the<br/>historic behavior, but is probably not the desired behavior, so this is off<br/>by default.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=use_sp_after_angle_always\s*=\s*true|use_sp_after_angle_always\s*=\s*false
+ValueDefault=false
+
+[Use Options Overriding For Qt Macros]
+Category=12
+Description="<html>Whether to apply special formatting for Qt SIGNAL/SLOT macros. Essentially,<br/>this tries to format these so that they match Qt's normalized form (i.e. the<br/>result of QMetaObject::normalizedSignature), which can slightly improve the<br/>performance of the QObject::connect call, rather than how they would<br/>otherwise be formatted.<br/><br/>See options_for_QT.cpp for details.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=use_options_overriding_for_qt_macros\s*=\s*true|use_options_overriding_for_qt_macros\s*=\s*false
+ValueDefault=true
+
+[Use Form Feed No More As Whitespace Character]
+Category=12
+Description="<html>If true: the form feed character is removed from the list of whitespace<br/>characters. See https://en.cppreference.com/w/cpp/string/byte/isspace.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=use_form_feed_no_more_as_whitespace_character\s*=\s*true|use_form_feed_no_more_as_whitespace_character\s*=\s*false
+ValueDefault=false
+
+[Warn Level Tabs Found In Verbatim String Literals]
+Category=13
+Description="<html>(C#) Warning is given if doing tab-to-\t replacement and we have found one<br/>in a C# verbatim string literal.<br/><br/>Default: 2</html>"
+Enabled=false
+EditorType=numeric
+CallName="warn_level_tabs_found_in_verbatim_string_literals\s*=\s*"
+MinVal=1
+MaxVal=3
+ValueDefault=2
+
+[Debug Max Number Of Loops]
+Category=13
+Description="<html>Limit the number of loops.<br/>Used by uncrustify.cpp to exit from infinite loop.<br/>0: no limit.</html>"
+Enabled=false
+EditorType=numeric
+CallName="debug_max_number_of_loops\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Debug Line Number To Protocol]
+Category=13
+Description="<html>Set the number of the line to protocol;<br/>Used in the function prot_the_line if the 2. parameter is zero.<br/>0: nothing protocol.</html>"
+Enabled=false
+EditorType=numeric
+CallName="debug_line_number_to_protocol\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Debug Timeout]
+Category=13
+Description="<html>Set the number of second(s) before terminating formatting the current file,<br/>0: no timeout.<br/>only for linux</html>"
+Enabled=false
+EditorType=numeric
+CallName="debug_timeout\s*=\s*"
+MinVal=
+MaxVal=
+ValueDefault=0
+
+[Debug Truncate]
+Category=13
+Description="<html>Set the number of characters to be printed if the text is too long,<br/>0: do not truncate.</html>"
+Enabled=false
+EditorType=numeric
+CallName="debug_truncate\s*=\s*"
+MinVal=0
+MaxVal=960
+ValueDefault=0
+
+[Debug Sort The Tracks]
+Category=13
+Description="<html>sort (or not) the tracking info.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=debug_sort_the_tracks\s*=\s*true|debug_sort_the_tracks\s*=\s*false
+ValueDefault=true
+
+[Debug Decode The Flags]
+Category=13
+Description="<html>decode (or not) the flags as a new line.<br/>only if the -p option is set.</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=debug_decode_the_flags\s*=\s*true|debug_decode_the_flags\s*=\s*false
+ValueDefault=false
+
+[Debug Use The Exit Function Pop]
+Category=13
+Description="<html>use (or not) the exit(EX_SOFTWARE) function.<br/><br/>Default: true</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=debug_use_the_exit_function_pop\s*=\s*true|debug_use_the_exit_function_pop\s*=\s*false
+ValueDefault=true
+
+[Set Numbering For Html Output]
+Category=13
+Description="<html>insert the number of the line at the beginning of each line</html>"
+Enabled=false
+EditorType=boolean
+TrueFalse=set_numbering_for_html_output\s*=\s*true|set_numbering_for_html_output\s*=\s*false
+ValueDefault=false
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/unmatched_close_pp.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/unmatched_close_pp.txt
index e69de29b..e69de29b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/unmatched_close_pp.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/unmatched_close_pp.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/v-out.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/v-out.txt
index 129af768..129af768 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/v-out.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/v-out.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/xyz-err.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/xyz-err.txt
index a16550ed..a16550ed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/cli/output/xyz-err.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/output/xyz-err.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/test_cli_options.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/test_cli_options.py
new file mode 100755
index 00000000..4416e379
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cli/test_cli_options.py
@@ -0,0 +1,940 @@
+#!/usr/bin/python
+
+"""
+test_cli_options.py
+
+Tests output generated by Uncrustifys commandline options
+(excluding actual source code formatting)
+
+:author: DanielChumak
+:license: GPL v2+
+"""
+
+from __future__ import print_function
+
+import sys
+from sys import stderr, argv, exit as sys_exit
+from os import makedirs, remove, name as os_name
+from os.path import dirname, relpath, abspath, isdir, isfile, join as path_join, split as path_split
+from shutil import rmtree, copyfile
+from subprocess import Popen, PIPE
+from io import open
+from datetime import date
+import re
+import difflib
+import argparse
+import pprint
+#import traceback
+
+if os_name == 'nt':
+ EX_OK = 0
+ EX_USAGE = 64
+ EX_SOFTWARE = 70
+ NULL_DEVICE = 'nul'
+else:
+ from os import EX_OK, EX_USAGE, EX_SOFTWARE
+ NULL_DEVICE = '/dev/null'
+
+RE_CALLSTACK = r'\[CallStack:( \w+:\w+(, \w+:\w+)*|-DEBUG NOT SET-)?\]'
+RE_DO_SPACE = (r'\n\ndo_space : WARNING: unrecognized do_space:'
+ r'\n[^\n]+\n[^\n]+\n')
+
+
+def eprint(*args, **kwargs):
+ """
+ print() wrapper that sets file=stderr
+ """
+ print(*args, file=stderr, **kwargs)
+
+
+def decode_out(text):
+ text = text.decode('utf-8')
+ text = text.replace(u'\r\n', u'\n')
+ text = text.replace(u'\r', u'\n')
+ return text
+
+
+def proc(bin_path, args_arr=()):
+ """
+ simple Popen wrapper to return std out/err utf8 strings
+
+
+ Parameters
+ ----------------------------------------------------------------------------
+ :param bin_path: string
+ path to the binary that is going to be called
+
+ :param args_arr : list/tuple
+ all needed arguments
+
+
+ :return: string, string
+ ----------------------------------------------------------------------------
+ generated output of both stdout and stderr
+
+ >>> proc("echo", "test")
+ 'test'
+ """
+ if not isfile(bin_path):
+ eprint("bin 1 is not a file: %s" % bin_path)
+ return False
+
+ # call uncrustify, hold output in memory
+ call_arr = [bin_path]
+ call_arr.extend(args_arr)
+ proc = Popen(call_arr, stdout=PIPE, stderr=PIPE)
+
+ out_txt, err_txt = proc.communicate()
+
+ return decode_out(out_txt), decode_out(err_txt)
+
+
+def write_to_output_path(output_path, result_str):
+ """
+ writes the contents of result_str to the output path
+ """
+ print("Auto appending differences to: " + output_path)
+
+ '''
+ newline = None: this outputs \r\n
+ newline = "\r": this outputs \r
+ newline = "\n": this outputs \n
+ newline = "" : this outputs \n
+ For the sake of consistency, all newlines are now being written out as \n
+ However, if the result_str itself contains \r\n, then \r\n will be output
+ as this code doesn't post process the data being written out
+ '''
+ with open(output_path, 'w', encoding="utf-8", newline="\n") as f:
+ f.write(result_str)
+
+
+def get_file_content(fp):
+ """
+ returns file content as an utf8 string or None if fp is not a file
+
+
+ Parameters
+ ----------------------------------------------------------------------------
+ :param fp: string
+ path of the file that will be read
+
+
+ :return: string or None
+ ----------------------------------------------------------------------------
+ the file content
+
+ """
+ #print("3-1: fp is "+fp)
+ #print("3-1b: gen_result_path is "+gen_result_path)
+ out = None
+
+ if isfile(fp):
+ #print("A: "+abspath(fp))
+ #print("2a is a file: %s" % fp)
+ with open(fp, encoding="utf-8", newline="\n") as f:
+ out = f.read()
+ #else:
+ #print("B: "+abspath(fp))
+ #print("2bx is Not a file: %s" % fp)
+ #for line in traceback.format_stack():
+ # print(line.strip())
+ #print("2bx+ is Not a file: %s" % fp)
+
+ return out
+
+
+def check_generated_output(gen_expected_path, gen_result_path,
+ result_manip=None, program_args=None):
+ """
+ compares the content of two files,
+
+ is intended to compare a file that was generated during a call of Uncrustify
+ with a file that has the expected content
+
+
+ Parameters
+ ----------------------------------------------------------------------------
+ :param gen_expected_path: string
+ path to a file that will be compared with the generated file
+
+ :param gen_result_path: string
+ path to the file that will be generated by Uncrustify
+
+ :param result_manip: lambda OR list or tuple of lambdas
+ optional lambda function(s) that will be applied (before the comparison)
+ on the content of the generated file,
+ the lambda function(s) should accept one string parameter
+
+ :param program_args: tuple of options
+ a collection of multiple options used to add extra functionality to the
+ script (i.e. auto apply changes or show diffs on command line)
+
+ :return: bool
+ ----------------------------------------------------------------------------
+ True or False depending on whether both files have the same content
+
+ >>> check_generated_output("/dev/null", "/dev/null")
+ True
+ """
+
+ #print("2-1: gen_expected_path is "+gen_expected_path)
+ #print("2-2: gen_result_path is "+gen_result_path)
+ gen_exp_txt = get_file_content(gen_expected_path)
+ #print("2-3: gen_exp_txt is ")
+ #+gen_exp_txt)
+ if gen_exp_txt is None:
+ return False
+
+ gen_res_txt = get_file_content(gen_result_path)
+ #print("2-4: gen_res_txt is "+gen_res_txt)
+ if gen_res_txt is None:
+ return False
+
+ #print("2: result_manip is "+result_manip)
+ #if result_manip is not None:
+ # print("2-5: result_manip is "+result_manip)
+ #else:
+ # print("2-6: result_manip is None")
+ if result_manip is not None:
+ if type(result_manip) is list or type(result_manip) is tuple:
+ for m in result_manip:
+ gen_res_txt = m(gen_res_txt)
+ else:
+ gen_res_txt = result_manip(gen_res_txt)
+
+ #print("2-7: gen_res_txt is ")
+ #print(gen_res_txt)
+ #print("2-8: gen_exp_txt is ")
+ #print(gen_exp_txt)
+ if gen_res_txt != gen_exp_txt:
+ with open(gen_result_path, 'w', encoding="utf-8", newline="") as f:
+ f.write(gen_res_txt)
+
+ if program_args.apply and program_args.auto_output_path:
+ write_to_output_path(program_args.auto_output_path, gen_res_txt)
+ return True
+ elif program_args.diff:
+ print("\n************************************")
+ print("Problem (1) with %s" % gen_result_path)
+ print("************************************")
+
+ file_diff = difflib.ndiff(gen_res_txt.splitlines(False),
+ gen_exp_txt.splitlines(False))
+
+ for line in file_diff:
+ pprint.PrettyPrinter(indent=4, width=280).pprint(line)
+
+ return False
+ else:
+ print("\nProblem (2) with %s" % gen_result_path)
+ print("use(gen): '--diff' to find out why %s %s are different"
+ % (gen_result_path, gen_expected_path))
+ return False
+
+ remove(gen_result_path)
+ #print(abspath(gen_result_path))
+
+ return True
+
+
+def check_std_output(expected_path, result_path, result_str, result_manip=None,
+ program_args=None):
+ """
+ compares output generated by Uncrustify (std out/err) with a the content of
+ a file
+
+ Parameters
+ ----------------------------------------------------------------------------
+ :param expected_path: string
+ path of the file that will be compared with the output of Uncrustify
+
+ :param result_path: string
+ path to which the Uncrustifys output will be saved in case of a mismatch
+
+ :param result_str: string (utf8)
+ the output string generated by Uncrustify
+
+ :param result_manip: lambda OR list or tuple of lambdas
+ see result_manip for check_generated_output
+
+ :param program_args: tuple of options
+ a collection of multiple options used to add extra functionality to the
+ script (i.e. auto apply changes or show diffs on command line)
+
+ :return: bool
+ ----------------------------------------------------------------------------
+ True or False depending on whether both files have the same content
+
+ """
+ exp_txt = get_file_content(expected_path)
+ if exp_txt is None:
+ return False
+
+ if result_manip is not None:
+ if type(result_manip) is list or type(result_manip) is tuple:
+ for m in result_manip:
+ result_str = m(result_str)
+ else:
+ result_str = result_manip(result_str)
+
+ if result_str != exp_txt:
+ with open(result_path, 'w', encoding="utf-8", newline="\n") as f:
+ f.write(result_str)
+
+ if program_args.apply and program_args.auto_output_path:
+ write_to_output_path(program_args.auto_output_path, result_str)
+ return True
+
+ if program_args.diff:
+ print("\n************************************")
+ print("Problem (3) with result_path is %s" % result_path)
+ print(" expected_path is %s" % expected_path)
+ print("************************************")
+
+ file_diff = difflib.ndiff(result_str.splitlines(False),
+ exp_txt.splitlines(False))
+
+ """
+ change the value of width
+ look at: If compact is false (the default)...
+ """
+ for line in file_diff:
+ pprint.PrettyPrinter(indent=4, width=280).pprint(line)
+ else:
+ print("\nProblem (4) with %s" % result_path)
+ print("use: '--diff' to find out why %s %s are different"
+ % (result_path, expected_path))
+ return False
+ return True
+
+
+def check_uncrustify_output(
+ uncr_bin,
+ program_args,
+ args_arr=(),
+ out_expected_path=None, out_result_manip=None, out_result_path=None,
+ err_expected_path=None, err_result_manip=None, err_result_path=None,
+ gen_expected_path=None, gen_result_manip=None, gen_result_path=None):
+ """
+ compares outputs generated by Uncrustify with files
+
+ Parameters
+ ----------------------------------------------------------------------------
+ :param uncr_bin: string
+ path to the Uncrustify binary
+
+ :param program_args: tuple of options
+ a collection of multiple options used to add extra functionality to the
+ script (i.e. auto apply changes or show diffs on command line)
+
+ :param args_arr: list/tuple
+ Uncrustify commandline arguments
+
+ :param out_expected_path: string
+ file that will be compared with Uncrustifys stdout output
+
+ :param out_result_manip: string
+ lambda function that will be applied to Uncrustifys stdout output
+ (before the comparison with out_expected_path),
+ the lambda function should accept one string parameter
+
+ :param out_result_path: string
+ path where Uncrustifys stdout output will be saved to in case of a
+ mismatch
+
+ :param err_expected_path: string
+ path to a file that will be compared with Uncrustifys stderr output
+
+ :param err_result_manip: string
+ see out_result_manip (is applied to Uncrustifys stderr instead)
+
+ :param err_result_path: string
+ see out_result_path (is applied to Uncrustifys stderr instead)
+
+ :param gen_expected_path: string
+ path to a file that will be compared with a file generated by Uncrustify
+
+ :param gen_result_path: string
+ path to a file that will be generated by Uncrustify
+
+ :param gen_result_manip:
+ see out_result_path (is applied, in memory, to the file content of the
+ file generated by Uncrustify instead)
+
+
+ :return: bool
+ ----------------------------------------------------------------------------
+ True if all specified files match up, False otherwise
+ """
+ # check param sanity
+ if not out_expected_path and not err_expected_path and not gen_expected_path:
+ eprint("No expected comparison file provided")
+ return False
+
+ if bool(gen_expected_path) != bool(gen_result_path):
+ eprint("'gen_expected_path' and 'gen_result_path' must be used in "
+ "combination")
+ return False
+
+ if gen_result_manip and not gen_result_path:
+ eprint("Set up 'gen_result_path' if 'gen_result_manip' is used")
+
+ out_res_txt, err_res_txt = proc(uncr_bin, args_arr)
+
+ ret_flag = True
+
+ if program_args.apply:
+ valid_path = [out_expected_path, err_expected_path, gen_expected_path]
+ program_args.auto_output_path = next(item for item in valid_path if item is not None)
+
+ if out_expected_path and not check_std_output(
+ out_expected_path, out_result_path, out_res_txt,
+ result_manip=out_result_manip,
+ program_args=program_args):
+ ret_flag = False
+
+ if program_args.apply:
+ valid_path = [err_expected_path, out_expected_path, gen_expected_path]
+ program_args.auto_output_path = next(item for item in valid_path if item is not None)
+
+ if err_expected_path and not check_std_output(
+ err_expected_path, err_result_path, err_res_txt,
+ result_manip=err_result_manip,
+ program_args=program_args):
+ ret_flag = False
+
+ #print("1: gen_expected_path is "+gen_expected_path)
+ #print("1: gen_result_path is "+gen_result_path)
+ #if gen_result_manip is not None:
+ # print("1: gen_result_manip is "+gen_result_manip)
+ #else:
+ # print("1: gen_result_manip is None")
+ #print("program_args is "+program_args)
+ if gen_expected_path and not check_generated_output(
+ gen_expected_path, gen_result_path,
+ result_manip=gen_result_manip,
+ program_args=program_args):
+ ret_flag = False
+
+ return ret_flag
+
+
+def clear_dir(path):
+ """
+ clears a directory by deleting and creating it again
+
+
+ Parameters
+ ----------------------------------------------------------------------------
+ :param path:
+ path of the directory
+
+
+ :return: void
+ """
+ if isdir(path):
+ rmtree(path)
+ makedirs(path)
+
+
+def reg_replace(pattern, replacement):
+ """
+ returns a generated lambda function that applies a regex string replacement
+
+
+ Parameters:
+ ----------------------------------------------------------------------------
+
+ :param pattern: regex pattern
+ the pattern that will be used to find targets to replace
+
+ :param replacement: string
+ the replacement that will be applied
+
+
+ :return: lambda function
+ ----------------------------------------------------------------------------
+ the generated lambda function, takes in a string on which the
+ replacement will be applied and returned
+
+ >>> l = reg_replace(r"a", "b")
+ >>> a = l("a")
+ 'b'
+ """
+ return lambda text: re.sub(pattern, replacement, text)
+
+
+def string_replace(string_target, replacement):
+ """
+ returns a generated lambda function that applies a string replacement
+
+ like reg_replace, uses string.replace() instead
+ """
+ return lambda text: text.replace(string_target, replacement)
+
+
+def s_path_join(path, *paths):
+ """
+ Wrapper for the os.path.join function, splits every path component to
+ replace it with a system specific path separator. This is for consistent
+ path separators (and also systems that don't use either '\' or '/')
+
+
+ Parameter
+ ----------------------------------------------------------------------------
+ :params path, paths: string
+ see os.path.join
+
+ :return: string
+ ----------------------------------------------------------------------------
+ a joined path, see os.path.join
+
+ >>> s_path_join('./z/d/', '../a/b/c/f')
+ r'.\z\a\b\c\f'
+ """
+ p_splits = list(path_split(path))
+ for r in map(path_split, paths):
+ p_splits.extend(r)
+ return path_join(*p_splits)
+
+
+def main(args):
+ # set working dir to script dir
+ script_dir = dirname(relpath(__file__))
+
+ parser = argparse.ArgumentParser(description='Test CLI Options')
+ parser.add_argument('--diff', action='store_true',
+ help='show diffs when there is a test mismatch')
+ parser.add_argument('--apply', action='store_true',
+ help='auto apply the changes from the results folder to the output folder')
+ parser.add_argument('--build',
+ default=s_path_join(script_dir, '../../build'),
+ help='specify location of the build directory')
+ parser.add_argument('--config',
+ default='Release',
+ help='the build_type value (Release or Debug)')
+ parser.add_argument('--test',
+ default=s_path_join(script_dir, '../../build/tests/cli'),
+ help='specify the location of the test cli build folder')
+
+ parsed_args = parser.parse_args()
+
+ # find the uncrustify binary
+ bin_found = False
+ uncr_bin = ''
+ bd_dir = parsed_args.build
+ test_dir = parsed_args.test
+
+ bin_paths = [s_path_join(bd_dir, 'uncrustify'),
+ s_path_join(bd_dir, 'uncrustify.exe'),
+ s_path_join(bd_dir, 'Debug/uncrustify'),
+ s_path_join(bd_dir, 'Debug/uncrustify.exe'),
+ s_path_join(bd_dir, 'Release/uncrustify'),
+ s_path_join(bd_dir, 'Release/uncrustify.exe'),
+ s_path_join(bd_dir, 'RelWithDebInfo/uncrustify'),
+ s_path_join(bd_dir, 'RelWithDebInfo/uncrustify.exe'),
+ s_path_join(bd_dir, 'MinSizeRel/uncrustify'),
+ s_path_join(bd_dir, 'MinSizeRel/uncrustify.exe')]
+ for uncr_bin in bin_paths:
+ if not isfile(uncr_bin):
+ eprint("is 3 not a file: %s" % uncr_bin)
+ else:
+ print("Uncrustify binary found: %s" % uncr_bin)
+ bin_found = True
+ break
+ if not bin_found:
+ eprint("No Uncrustify binary found")
+ sys_exit(EX_USAGE)
+ print("Summary:")
+ print("Python version is: "+sys.version)
+ print("OS is: %s" % os_name)
+
+ clear_dir(s_path_join(test_dir, 'results'))
+
+ return_flag = True
+
+ print("Test help ...")
+ #
+ # Test help
+ # -h -? --help --usage
+ if not check_uncrustify_output(
+ uncr_bin,
+ parsed_args,
+ out_expected_path=s_path_join(script_dir, 'output/help.txt'),
+ out_result_path=s_path_join(test_dir, 'results/help.txt'),
+ out_result_manip=[
+ string_replace(' --mtime : Preserve mtime on replaced files.\n', ''),
+ string_replace('.exe', ''),
+ reg_replace(r'currently \d+ options', 'currently x options')
+ ]):
+ return_flag = False
+ print("Test help is OK")
+
+ print("Test false parameter ...")
+ #
+ # Test false parameter
+ # --xyz
+ if not check_uncrustify_output(
+ uncr_bin,
+ parsed_args,
+ args_arr=['--xyz'],
+ err_expected_path=s_path_join(script_dir, 'output/xyz-err.txt'),
+ err_result_path=s_path_join(test_dir, 'results/xyz-err.txt')
+ ):
+ return_flag = False
+ print("Test false parameter is OK")
+
+ print("Test Version ...")
+ #
+ # Test Version
+ # -v
+ if not check_uncrustify_output(
+ uncr_bin,
+ parsed_args,
+ args_arr=['-v'],
+ out_expected_path=s_path_join(script_dir, 'output/v-out.txt'),
+ out_result_path=s_path_join(test_dir, 'results/v-out.txt'),
+ out_result_manip=reg_replace(r'Uncrustify.+', 'Uncrustify')
+ ):
+ return_flag = False
+ print("Test Version is OK")
+
+ # temporary removed
+ #print("Test --show-config ...")
+ ##
+ ## Test --show-config
+ ##
+ #if not check_uncrustify_output(
+ # uncr_bin,
+ # parsed_args,
+ # args_arr=['--show-config'],
+ # out_expected_path=s_path_join(script_dir, 'output/show_config.txt'),
+ # out_result_path=s_path_join(test_dir, 'results/show_config.txt'),
+ # out_result_manip=reg_replace(r'\# Uncrustify.+', '')
+ # ):
+ # return_flag = False
+ #print("Test --show-config is OK")
+
+ print("Test the truncate option ...")
+ #
+ # Test the truncate option
+ #
+ if not check_uncrustify_output(
+ uncr_bin,
+ parsed_args,
+ args_arr=['-c', s_path_join(script_dir, 'config/truncate.cfg'),
+ '-f', s_path_join(script_dir, 'input/truncate.cpp'),
+ '-o', NULL_DEVICE,
+ '-L', '83'],
+ err_expected_path=s_path_join(script_dir, 'output/truncate.txt'),
+ err_result_path=s_path_join(test_dir, 'results/truncate.txt'),
+ err_result_manip=[reg_replace(r'\([0-9]+\)', ' '),
+ reg_replace(RE_DO_SPACE, '')]
+ ):
+ return_flag = False
+ print("Test the truncate option is OK")
+
+ #print("Test --update-config ...")
+ # temporary removed
+ ##
+ ## Test --update-config
+ ##
+ #if not check_uncrustify_output(
+ # uncr_bin,
+ # parsed_args,
+ # args_arr=['-c', s_path_join(script_dir, 'config/mini_d.cfg'),
+ # '--update-config'],
+ # out_expected_path=s_path_join(script_dir, 'output/mini_d_uc.txt'),
+ # out_result_path=s_path_join(test_dir, 'results/mini_d_uc.txt'),
+ # out_result_manip=reg_replace(r'\# Uncrustify.+', ''),
+ # err_expected_path=s_path_join(script_dir, 'output/mini_d_error.txt'),
+ # err_result_path=s_path_join(test_dir, 'results/mini_d_error0.txt'),
+ # err_result_manip=string_replace('\\', '/')
+ # ):
+ # return_flag = False
+
+ #if not check_uncrustify_output(
+ # uncr_bin,
+ # parsed_args,
+ # args_arr=['-c', s_path_join(script_dir, 'config/mini_nd.cfg'),
+ # '--update-config'],
+ # out_expected_path=s_path_join(script_dir, 'output/mini_nd_uc.txt'),
+ # out_result_path=s_path_join(test_dir, 'results/mini_nd_uc.txt'),
+ # out_result_manip=reg_replace(r'\# Uncrustify.+', ''),
+ # err_expected_path=s_path_join(script_dir, 'output/mini_d_error.txt'),
+ # err_result_path=s_path_join(test_dir, 'results/mini_d_error1.txt'),
+ # err_result_manip=string_replace('\\', '/')
+ # ):
+ # return_flag = False
+ #print("Test --update-config is OK")
+
+ #print("Test --update-config-with-doc ...")
+ ##
+ ## Test --update-config-with-doc
+ ##
+ #if not check_uncrustify_output(
+ # uncr_bin,
+ # parsed_args,
+ # args_arr=['-c', s_path_join(script_dir, 'config/mini_d.cfg'),
+ # '--update-config-with-doc'],
+ # out_expected_path=s_path_join(script_dir, 'output/mini_d_ucwd.txt'),
+ # out_result_path=s_path_join(test_dir, 'results/mini_d_ucwd.txt'),
+ # out_result_manip=reg_replace(r'\# Uncrustify.+', ''),
+ # err_expected_path=s_path_join(script_dir, 'output/mini_d_error.txt'),
+ # err_result_path=s_path_join(test_dir, 'results/mini_d_error2.txt'),
+ # err_result_manip=string_replace('\\', '/')
+ # ):
+ # return_flag = False
+ #print("Test --update-config-with-doc is OK")
+
+ #if not check_uncrustify_output(
+ # uncr_bin,
+ # parsed_args,
+ # args_arr=['-c', s_path_join(script_dir, 'config/mini_nd.cfg'),
+ # '--update-config-with-doc'],
+ # out_expected_path=s_path_join(script_dir, 'output/mini_nd_ucwd.txt'),
+ # out_result_path=s_path_join(test_dir, 'results/mini_nd_ucwd.txt'),
+ # out_result_manip=reg_replace(r'\# Uncrustify.+', ''),
+ # err_expected_path=s_path_join(script_dir, 'output/mini_d_error.txt'),
+ # err_result_path=s_path_join(test_dir, 'results/mini_d_error3.txt'),
+ # err_result_manip=string_replace('\\', '/')
+ # ):
+ # return_flag = False
+
+ print("Test -p ...")
+ #
+ # Test -p
+ #
+ if os_name != 'nt':
+ if not check_uncrustify_output(
+ uncr_bin,
+ parsed_args,
+ args_arr=['-c', s_path_join(script_dir, 'config/mini_nd.cfg'),
+ '-f', s_path_join(script_dir, 'input/testSrcP.cpp'),
+ '-p', s_path_join(test_dir, 'results/p.txt')],
+ gen_expected_path=s_path_join(script_dir, 'output/p.txt'),
+ gen_result_path=s_path_join(test_dir, 'results/p.txt'),
+ gen_result_manip=reg_replace(r'\# Uncrustify.+[^\n\r]', '')
+ ):
+ return_flag = False
+
+ if not check_uncrustify_output(
+ uncr_bin,
+ parsed_args,
+ args_arr=['-f', s_path_join(script_dir, 'input/class_enum_struct_union.cpp'),
+ '-p', s_path_join(test_dir, 'results/class_enum_struct_union.txt')],
+ gen_expected_path=s_path_join(script_dir, 'output/class_enum_struct_union.txt'),
+ gen_result_path=s_path_join(test_dir, 'results/class_enum_struct_union.txt'),
+ gen_result_manip=reg_replace(r'\# Uncrustify.+[^\n\r]', '')
+ ):
+ return_flag = False
+
+ if not check_uncrustify_output(
+ uncr_bin,
+ parsed_args,
+ args_arr=['-f', s_path_join(script_dir, 'input/in_fcn_def.cpp'),
+ '-p', s_path_join(test_dir, 'results/in_fcn_def.txt')],
+ gen_expected_path=s_path_join(script_dir, 'output/in_fcn_def.txt'),
+ gen_result_path=s_path_join(test_dir, 'results/in_fcn_def.txt'),
+ gen_result_manip=reg_replace(r'\# Uncrustify.+[^\n\r]', '')
+ ):
+ return_flag = False
+ print("Test -p is OK")
+
+ #print("Test -p and -c with '-' input ...")
+ if os_name == 'nt' or check_uncrustify_output(
+ uncr_bin,
+ parsed_args,
+ args_arr=['-c', '-',
+ '-f', NULL_DEVICE,
+ '-p', '-'],
+ out_expected_path=s_path_join(script_dir, 'output/pc-.txt'),
+ out_result_manip=reg_replace(r'\# Uncrustify.+[^\n\r]', ''),
+ out_result_path=s_path_join(test_dir, 'results/pc-.txt')
+ ):
+ pass
+
+ #print("Test -p and -c with '-' input ...")
+ #
+ # Test -p and -c with '-' input
+ #
+ else:
+ return_flag = False
+ #print("Test -p and -c with '-' input is OK")
+
+ print("Test -p and --debug-csv-format option ...")
+ #
+ # Test -p and --debug-csv-format option
+ #
+ if os_name != 'nt' and not check_uncrustify_output(
+ uncr_bin,
+ parsed_args,
+ args_arr=['-c', '-',
+ '-f', s_path_join(script_dir, 'input/class_enum_struct_union.cpp'),
+ '-p', s_path_join(test_dir, 'results/class_enum_struct_union.csv'),
+ '--debug-csv-format'],
+ gen_expected_path=s_path_join(script_dir, 'output/class_enum_struct_union.csv'),
+ gen_result_path=s_path_join(test_dir, 'results/class_enum_struct_union.csv'),
+ ):
+ return_flag = False
+ print("Test -p and --debug-csv-format option is OK")
+
+ if parsed_args.config == 'Debug':
+ print("Test --tracking space:FILE ...")
+ print(" config is Debug")
+ #
+ # Test --tracking space:FILE
+ #
+ if os_name != 'nt':
+ # doesn't work under windows
+ temp_result_path = s_path_join(script_dir, 'results/Debug_tracking_space.html')
+ abc = "space:" + temp_result_path # Issue #4066
+ if not check_uncrustify_output(
+ uncr_bin,
+ parsed_args,
+ args_arr=['-c', s_path_join(script_dir, 'config/tracking_space.cfg'),
+ '-f', s_path_join(script_dir, 'input/tracking_space.cpp'),
+ '--tracking',
+ abc,
+ #s_path_join(script_dir, 'results/Debug_tracking_space.html')
+ #temp_result_path
+ # '-L'
+ #, 'A'
+ #, '2'
+ #, '>'
+ #, '/home/guy/A-T.txt'
+ ],
+ gen_expected_path=s_path_join(script_dir, 'output/Debug_tracking_space.html'),
+ #gen_result_path=s_path_join(script_dir, 'results/Debug_tracking_space.html')
+ gen_result_path=temp_result_path
+ ):
+ #print("/home/guy/A-T.txt")
+ #else:
+ #print("/home/guy/A-T.txt")
+ return_flag = False
+ print("Test --tracking space:FILE is OK")
+
+ #sys_exit()
+
+ print("Test --replace ...")
+ #
+ # Test --replace
+ #
+ copyfile("input/backup.h-save", "input/backup.h")
+ if not check_uncrustify_output(
+ uncr_bin,
+ parsed_args,
+ args_arr=['-c', s_path_join(script_dir, 'config/replace.cfg'),
+ '-F', s_path_join(script_dir, 'input/replace.list'),
+ '--replace', '--no-backup'],
+ gen_expected_path=s_path_join(script_dir, 'output/backup.h'),
+ gen_result_path=s_path_join(script_dir, 'input/backup.h'),
+ err_expected_path=s_path_join(script_dir, 'output/replace.txt'),
+ err_result_path=s_path_join(test_dir, 'results/replace.txt'),
+ ):
+ return_flag = False
+ print("Test --replace is OK")
+
+ print("Test --universalindent ...")
+ # The flag CMAKE_BUILD_TYPE must be set to "Release", or all lines with
+ # 'Description="<html>(<number>)text abc.</html>" must be changed to
+ # 'Description="<html>text abc.</html>"
+ #
+ # OR it is possible to introduce a new parameter: gen_expected_manip
+ #
+ # The last "reg_replace(r'\r', '')" is necessary under Windows, because
+ # fprintf puts a \r\n at the end of a line. To make the check, we use
+ # output/universalindent.cfg, generated under Linux, with only \n at the
+ # end of a line.
+ if not check_uncrustify_output(
+ uncr_bin,
+ parsed_args,
+ args_arr=['-o', s_path_join(test_dir, 'results/universalindent.cfg'),
+ '--universalindent'],
+ gen_expected_path=s_path_join(script_dir, 'output/universalindent.cfg'),
+ gen_result_path=s_path_join(test_dir, 'results/universalindent.cfg'),
+ gen_result_manip=[reg_replace(r'version=U.+', ''),
+ reg_replace(r'\(\d+\)', ''),
+ reg_replace(r'\r', '')]
+ ):
+ return_flag = False
+ print("Test --universalindent is OK")
+
+ print("Test -L ...")
+ # Debug Options:
+ # -L
+ # look at src/log_levels.h
+ Ls_A = ['9', '21', '25', '28', '31', '36', '66', '92']
+ for L in Ls_A:
+ if not check_uncrustify_output(
+ uncr_bin,
+ parsed_args,
+ args_arr=['-c', NULL_DEVICE, '-L', L, '-o', NULL_DEVICE,
+ '-f', s_path_join(script_dir, 'input/testSrc.cpp')],
+ err_expected_path=s_path_join(script_dir, 'output/%s.txt' % L),
+ err_result_path=s_path_join(test_dir, 'results/%s.txt' % L),
+ err_result_manip=[reg_replace(r'\([0-9]+\)', ' '),
+ reg_replace(r'\:[0-9]+\)', ' '),
+ reg_replace(r'\[line [0-9]+', '[ '),
+ reg_replace(r' \[[_|,|1|A-Z]*\]', ' []'),
+ reg_replace(r', \[[_|,|1|A-Z]*\]', ', []'),
+ reg_replace(r', \[0[xX][0-9a-fA-F]+:[_|,|1|A-Z]*\]', ', []'),
+ reg_replace(r' \[0[xX][0-9a-fA-F]+:[_|,|1|A-Z]*\]', ' []'),
+ reg_replace(r'^[ \t]*[_A-Za-z][_A-Za-z0-9]*::', ''),
+ reg_replace(RE_CALLSTACK, '[CallStack]'),
+ reg_replace(RE_DO_SPACE, ''),
+ reg_replace(r'Chunk::', '')]
+ ):
+ return_flag = False
+ print("Test -L is OK")
+
+ ### Test logger buffer overflow
+ ##if not check_uncrustify_output(
+ ## uncr_bin,
+ ## parsed_args,
+ ## args_arr=['-c', NULL_DEVICE, '-L', '99', '-o', NULL_DEVICE,
+ ## '-f', s_path_join(script_dir, 'input/logger.cs')],
+ ## err_expected_path=s_path_join(script_dir, 'output/logger_cs_L_99.txt'),
+ ## err_result_path=s_path_join(test_dir, 'results/logger_cs_L_99.txt'),
+ ## err_result_manip=reg_replace(r'[0-9]', '')
+ ## ):
+ ## return_flag = False
+
+ # misc error_tests
+ error_tests = ["I-842", "unmatched_close_pp"]
+ for test in error_tests:
+ if not check_uncrustify_output(
+ uncr_bin,
+ parsed_args,
+ args_arr=['-c', s_path_join(script_dir, 'config/%s.cfg' % test),
+ '-f', s_path_join(script_dir, 'input/%s.cpp' % test),
+ '-o', NULL_DEVICE, '-q'],
+ err_expected_path=s_path_join(script_dir, 'output/%s.txt' % test),
+ err_result_path=s_path_join(test_dir, 'results/%s.txt' % test)
+ ):
+ return_flag = False
+
+ print("Test $(year) keyword ...")
+ # Test $(year) keyword (issue #3251)
+ if not check_uncrustify_output(
+ uncr_bin,
+ parsed_args,
+ args_arr=['-c', s_path_join(script_dir, 'config/copyright-header.cfg'),
+ '-f', s_path_join(script_dir, 'input/testSrc.cpp')],
+ out_expected_path=s_path_join(script_dir, 'output/copyright-header.cpp'),
+ out_result_path=s_path_join(test_dir, 'results/copyright-header.cpp'),
+ out_result_manip=string_replace(str(date.today().year), 'this year'),
+ ):
+ return_flag = False
+ print("Test $(year) keyword is OK")
+
+ if return_flag:
+ print("all tests are OK")
+ sys_exit(EX_OK)
+ else:
+ print("some problem(s) are still present")
+ sys_exit(EX_SOFTWARE)
+
+
+if __name__ == "__main__":
+ main(argv[1:])
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/1225.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/1225.cfg
index cbc83adb..cbc83adb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/1225.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/1225.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/1liner-no-split.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/1liner-no-split.cfg
new file mode 100644
index 00000000..c554aba1
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/1liner-no-split.cfg
@@ -0,0 +1,11 @@
+sp_sparen_brace = add
+sp_before_sparen = force
+sp_inside_braces = force
+sp_fparen_brace = add
+sp_else_brace = force
+sp_brace_else = force
+indent_columns = 3
+nl_func_leave_one_liners = true
+nl_start_of_file = remove
+mod_full_brace_if = add
+mod_paren_on_return = add \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/1liner-split.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/1liner-split.cfg
index e666ea24..e666ea24 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/1liner-split.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/1liner-split.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2205.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2205.cfg
new file mode 100644
index 00000000..cc70ad70
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2205.cfg
@@ -0,0 +1,3 @@
+sp_after_byref = remove
+indent_columns = 4
+sp_addr = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue-2278.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2278.cfg
index 80ba4f6f..80ba4f6f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue-2278.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2278.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2279.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2279.cfg
index 1f646668..1f646668 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2279.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2279.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2360-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2360-a.cfg
new file mode 100644
index 00000000..aad62f44
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2360-a.cfg
@@ -0,0 +1,4 @@
+sp_sparen_brace = add
+nl_multi_line_sparen_open = force
+nl_multi_line_sparen_close = force
+nl_before_if_closing_paren = ignore
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2360-b.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2360-b.cfg
new file mode 100644
index 00000000..3354c471
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2360-b.cfg
@@ -0,0 +1,4 @@
+sp_sparen_brace = add
+nl_multi_line_sparen_open = false
+nl_multi_line_sparen_close = remove
+nl_before_if_closing_paren = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2411.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2411.cfg
index a4770ec9..a4770ec9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2411.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2411.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2640.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2640.cfg
index a4dd2354..a4dd2354 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_2640.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_2640.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3169.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3169.cfg
new file mode 100644
index 00000000..728cfaf6
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3169.cfg
@@ -0,0 +1,5 @@
+sp_pp_concat = ignore
+indent_columns = 2
+pp_multiline_define_body_indent = 2
+align_var_def_span = 1
+align_nl_cont = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3233.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3233.cfg
index 71ee918b..71ee918b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3233.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3233.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3269.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3269.cfg
index 3a4bb6bf..3a4bb6bf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3269.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3269.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3272.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3272.cfg
index 2cda9402..2cda9402 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3272.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3272.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3274.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3274.cfg
index 63aa1d0c..63aa1d0c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3274.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3274.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3327.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3327.cfg
index 1470c6b5..1470c6b5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3327.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3327.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3350.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3350.cfg
index d53c8094..d53c8094 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3350.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3350.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3351.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3351.cfg
index 67df4d20..67df4d20 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3351.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3351.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3353.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3353.cfg
index 56810833..56810833 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3353.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3353.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3356.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3356.cfg
index 2791f6c6..2791f6c6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3356.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3356.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3370.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3370.cfg
index 05f38590..05f38590 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3370.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3370.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3377.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3377.cfg
index ca7a07db..ca7a07db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3377.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3377.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3402.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3402.cfg
index 5252c78d..5252c78d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3402.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3402.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3431.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3431.cfg
index 45dbff25..45dbff25 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3431.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3431.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3454.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3454.cfg
index 9674606a..9674606a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3454.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3454.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3457.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3457.cfg
index 78984566..78984566 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3457.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3457.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3472.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3472.cfg
index 9e1acf21..9e1acf21 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3472.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3472.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3476.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3476.cfg
index 3fef0a75..3fef0a75 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3476.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3476.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3480.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3480.cfg
index d86880ad..d86880ad 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3480.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3480.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3493.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3493.cfg
index cfc36660..cfc36660 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3493.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3493.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3506.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3506.cfg
index 6a9f2d25..6a9f2d25 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3506.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3506.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3516.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3516.cfg
index ba1f9656..ba1f9656 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3516.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3516.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3517.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3517.cfg
index ed31649e..ed31649e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3517.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3517.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3518.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3518.cfg
index a7caf986..a7caf986 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3518.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3518.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3556.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3556.cfg
index 9840c82d..9840c82d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3556.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3556.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3561.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3561.cfg
index 56965ae8..56965ae8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3561.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3561.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3565.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3565.cfg
index c1a793e8..c1a793e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3565.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3565.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3567-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3567-a.cfg
index 1659f46a..1659f46a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3567-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3567-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3567-b.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3567-b.cfg
index 454bc264..454bc264 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3567-b.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3567-b.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3580.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3580.cfg
index fc53aac2..fc53aac2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3580.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3580.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3582.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3582.cfg
index d6b1a287..d6b1a287 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3582.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3582.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3601.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3601.cfg
index 3537fd11..3537fd11 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3601.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3601.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3662.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3662.cfg
index 6500adbb..6500adbb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3662.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3662.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-1.cfg
new file mode 100644
index 00000000..2fab2c13
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-1.cfg
@@ -0,0 +1,3 @@
+sp_sparen_brace = force
+mod_infinite_loop = 1
+mod_full_brace_for = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-2.cfg
new file mode 100644
index 00000000..10462086
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-2.cfg
@@ -0,0 +1,3 @@
+sp_sparen_brace = add
+mod_infinite_loop = 2
+mod_full_brace_while = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-3.cfg
index d803c2fd..d803c2fd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-4.cfg
new file mode 100644
index 00000000..536b9756
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-4.cfg
@@ -0,0 +1,3 @@
+sp_sparen_brace = force
+mod_infinite_loop = 4
+mod_full_brace_while = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-5.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-5.cfg
index e25c6f03..e25c6f03 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3716-5.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3716-5.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3852.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3852.cfg
index 087272b9..087272b9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3852.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3852.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3873.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3873.cfg
index 8179ffa5..8179ffa5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/Issue_3873.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3873.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3989.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3989.cfg
new file mode 100644
index 00000000..459005de
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/Issue_3989.cfg
@@ -0,0 +1,2 @@
+sp_before_unnamed_ptr_star = remove
+sp_before_ptr_star_func = ignore
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/add_long_closebrace_comment_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/add_long_closebrace_comment_1.cfg
index b8190eb1..b8190eb1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/add_long_closebrace_comment_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/add_long_closebrace_comment_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align-2.cfg
index ea78a8d4..ea78a8d4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align-3.cfg
index 1b46c840..1b46c840 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align-4.cfg
index 1d35c349..1d35c349 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align-4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align-4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_attr.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_attr.cfg
index 3249cd7b..3249cd7b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_attr.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_attr.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-1.cfg
index 83874b8b..83874b8b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-2.cfg
index 3afaa70a..3afaa70a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-3.cfg
index 1b1e7541..1b1e7541 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-4.cfg
index 391526e0..391526e0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-5.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-5.cfg
index 7fd9cd6c..7fd9cd6c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-5.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-5.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-6.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-6.cfg
index 00d18433..00d18433 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-6.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-6.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-7.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-7.cfg
index 64af8258..64af8258 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-7.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-7.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-8.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-8.cfg
index 4531b895..4531b895 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-8.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-8.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-9.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-9.cfg
index 2b2b6b02..2b2b6b02 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_func_proto_star_amp-9.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_func_proto_star_amp-9.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_keep_extra.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_keep_extra.cfg
index fcaab9f2..fcaab9f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_keep_extra.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_keep_extra.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_multi.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_multi.cfg
index 33b236d5..33b236d5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_multi.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_multi.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_nl_cont-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_nl_cont-2.cfg
new file mode 100644
index 00000000..6401180b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_nl_cont-2.cfg
@@ -0,0 +1 @@
+align_nl_cont = 2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_nl_cont-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_nl_cont-3.cfg
new file mode 100644
index 00000000..31ec6899
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_nl_cont-3.cfg
@@ -0,0 +1 @@
+align_nl_cont = 3
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_nl_cont_spaces-5.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_nl_cont_spaces-5.cfg
new file mode 100644
index 00000000..0c46e8b6
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_nl_cont_spaces-5.cfg
@@ -0,0 +1,2 @@
+align_nl_cont = 1
+align_nl_cont_spaces = 5
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_right_cmt_gap-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_right_cmt_gap-1.cfg
index 46aaf838..46aaf838 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_right_cmt_gap-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_right_cmt_gap-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_sf_call_span_418.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_sf_call_span_418.cfg
index cdf7f052..cdf7f052 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_sf_call_span_418.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_sf_call_span_418.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_sf_call_span_419.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_sf_call_span_419.cfg
index a11c2102..a11c2102 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_sf_call_span_419.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_sf_call_span_419.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_sf_call_thresh_416.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_sf_call_thresh_416.cfg
index 6280b856..6280b856 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_sf_call_thresh_416.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_sf_call_thresh_416.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_sf_call_thresh_417.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_sf_call_thresh_417.cfg
index 9d09abb2..9d09abb2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_sf_call_thresh_417.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_sf_call_thresh_417.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_stack.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_stack.cfg
index d53a6bb3..d53a6bb3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_stack.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_stack.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_trailing_do_cmt.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_trailing_do_cmt.cfg
index bebd4c83..bebd4c83 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_trailing_do_cmt.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_trailing_do_cmt.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_typedef_func-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_typedef_func-1.cfg
index ea45e4d8..ea45e4d8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_typedef_func-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_typedef_func-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_typedef_func-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_typedef_func-2.cfg
index 252f07ea..252f07ea 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_typedef_func-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_typedef_func-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_typedef_gap-3_span-5.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_typedef_gap-3_span-5.cfg
index 338f078f..338f078f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/align_typedef_gap-3_span-5.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/align_typedef_gap-3_span-5.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_047.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_047.cfg
index 2af44bb3..2af44bb3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_047.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_047.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_048.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_048.cfg
index 2d8e61ef..2d8e61ef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_048.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_048.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_049.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_049.cfg
new file mode 100644
index 00000000..93e4499c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_049.cfg
@@ -0,0 +1,6 @@
+sp_assign = force
+sp_after_comma = force
+indent_columns = 3
+indent_with_tabs = 0
+pp_multiline_define_body_indent = 3
+align_nl_cont = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_050.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_050.cfg
index 0f0e30ac..0f0e30ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_050.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_050.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_051.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_051.cfg
index 786fb030..786fb030 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_051.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_051.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_052.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_052.cfg
index ba150be7..ba150be7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_052.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_052.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_053.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_053.cfg
index a28d7dc2..a28d7dc2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_053.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_053.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_054.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_054.cfg
index 56661763..56661763 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_054.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_054.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_055.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_055.cfg
index f87a7f09..f87a7f09 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_055.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_055.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_056.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_056.cfg
new file mode 100644
index 00000000..efd9e116
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_056.cfg
@@ -0,0 +1,4 @@
+indent_columns = 3
+pp_multiline_define_body_indent = 3
+align_nl_cont = 1
+pp_space_after = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_057.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_057.cfg
index fbf24d72..fbf24d72 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_057.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_057.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_058.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_058.cfg
new file mode 100644
index 00000000..29ab494b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_058.cfg
@@ -0,0 +1,10 @@
+sp_inside_paren = remove
+sp_before_sparen = force
+sp_return_paren = remove
+indent_columns = 3
+indent_switch_body = 3
+pp_multiline_define_body_indent = 3
+nl_switch_brace = add
+eat_blanks_before_close_brace = true
+align_nl_cont = 1
+mod_paren_on_return = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_061.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_061.cfg
index 89f76fae..89f76fae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_061.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_061.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_063.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_063.cfg
index 91f0e92f..91f0e92f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_063.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_063.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_064.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_064.cfg
index f56efbdf..f56efbdf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_064.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_064.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_065.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_065.cfg
index 21d55b16..21d55b16 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_065.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_065.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_069.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_069.cfg
index d42173e1..d42173e1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_069.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_069.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_070.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_070.cfg
index f304ca8a..f304ca8a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_070.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_070.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_071.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_071.cfg
index 869f2a94..869f2a94 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_071.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_071.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_072.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_072.cfg
new file mode 100644
index 00000000..5de1221d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_072.cfg
@@ -0,0 +1,4 @@
+indent_columns = 3
+pp_multiline_define_body_indent = 3
+eat_blanks_before_close_brace = true
+align_nl_cont = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_073.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_073.cfg
index fe9d6c05..fe9d6c05 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_073.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_073.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_074.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_074.cfg
index 31a1de44..31a1de44 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_074.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_074.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_075.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_075.cfg
index 9eca8a9b..9eca8a9b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_075.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_075.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_076.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_076.cfg
index fb27ba74..fb27ba74 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_076.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_076.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_077.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_077.cfg
index 4e9760f7..4e9760f7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_077.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_077.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_078.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_078.cfg
index 54fcc628..54fcc628 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_078.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_078.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_079.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_079.cfg
index 77a732e5..77a732e5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_079.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_079.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_080.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_080.cfg
index 45e16a8d..45e16a8d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_080.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_080.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_081.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_081.cfg
new file mode 100644
index 00000000..4d9db731
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_081.cfg
@@ -0,0 +1,4 @@
+sp_before_ellipsis = remove
+indent_columns = 3
+pp_multiline_define_body_indent = 3
+align_nl_cont = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_083.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_083.cfg
index 2bdf2afa..2bdf2afa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_083.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_083.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_084.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_084.cfg
index c770772c..c770772c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_084.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_084.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_085.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_085.cfg
new file mode 100644
index 00000000..ca86d2f4
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_085.cfg
@@ -0,0 +1,4 @@
+sp_paren_paren = remove
+sp_inside_fparen = remove
+sp_inside_rparen = remove
+indent_columns = 3
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_086.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_086.cfg
index 7ffcd831..7ffcd831 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_086.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_086.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_087.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_087.cfg
index 5b5592a7..5b5592a7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_087.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_087.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_088.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_088.cfg
index a8abed32..a8abed32 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_088.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_088.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_089.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_089.cfg
index d3c152df..d3c152df 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_089.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_089.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_090.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_090.cfg
new file mode 100644
index 00000000..dabddf2a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_090.cfg
@@ -0,0 +1,3 @@
+indent_columns = 3
+pp_multiline_define_body_indent = 3
+align_nl_cont = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_091.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_091.cfg
index aec90af1..aec90af1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_091.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_091.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_092.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_092.cfg
index bb993d75..bb993d75 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_092.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_092.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_093.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_093.cfg
index 4e50b52b..4e50b52b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_093.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_093.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_094.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_094.cfg
index 5ff0a09b..5ff0a09b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_094.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_094.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_095.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_095.cfg
index edb10a4f..edb10a4f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ben_095.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ben_095.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bool-pos-eol-break.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bool-pos-eol-break.cfg
index d2abdeb6..d2abdeb6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bool-pos-eol-break.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bool-pos-eol-break.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bool-pos-eol.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bool-pos-eol.cfg
index f7fe1330..f7fe1330 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bool-pos-eol.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bool-pos-eol.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bool-pos-sol-break.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bool-pos-sol-break.cfg
index e07ab7e9..e07ab7e9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bool-pos-sol-break.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bool-pos-sol-break.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bool-pos-sol-force.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bool-pos-sol-force.cfg
index 36f81a26..36f81a26 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bool-pos-sol-force.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bool-pos-sol-force.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bool-pos-sol.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bool-pos-sol.cfg
index 9dbcbaf2..9dbcbaf2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bool-pos-sol.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bool-pos-sol.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-banner.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-banner.cfg
new file mode 100644
index 00000000..78417cf8
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-banner.cfg
@@ -0,0 +1,16 @@
+# Banner style
+sp_sparen_brace = add
+output_tab_size = 2
+sp_fparen_brace = add
+sp_else_brace = force
+sp_do_brace_open = force
+indent_columns = 2
+indent_braces = true
+indent_braces_no_func = true
+nl_if_brace = remove
+nl_else_brace = remove
+nl_for_brace = remove
+nl_while_brace = remove
+nl_do_brace = remove
+nl_brace_while = add
+nl_fdef_brace = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-banner.rerun.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-banner.rerun.cfg
index df289545..df289545 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-banner.rerun.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-banner.rerun.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-gnu.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-gnu.cfg
index c5bd1371..c5bd1371 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-gnu.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-gnu.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-kr-br.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-kr-br.cfg
new file mode 100644
index 00000000..0ea2f9bc
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-kr-br.cfg
@@ -0,0 +1,6 @@
+# K&R style
+sp_sparen_brace = add
+sp_else_brace = force
+nl_if_brace = remove
+nl_after_brace_open = true
+mod_full_brace_if = add \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-kr-nobr.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-kr-nobr.cfg
index 970b1ab0..970b1ab0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-kr-nobr.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-kr-nobr.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-kr.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-kr.cfg
new file mode 100644
index 00000000..b655443c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-kr.cfg
@@ -0,0 +1,13 @@
+# K&R style
+sp_sparen_brace = add
+sp_else_brace = force
+sp_brace_else = force
+sp_do_brace_open = force
+nl_fcall_brace = add
+nl_if_brace = remove
+nl_brace_else = remove
+nl_else_brace = remove
+nl_for_brace = remove
+nl_while_brace = remove
+nl_do_brace = remove
+nl_fdef_brace = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-remove-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-remove-2.cfg
index 9aa693fc..9aa693fc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-remove-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-remove-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-remove-all.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-remove-all.cfg
index ca279abd..ca279abd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-remove-all.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-remove-all.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-ws.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-ws.cfg
index 76d8908a..76d8908a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-ws.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-ws.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-ws2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-ws2.cfg
index 55eb6ece..55eb6ece 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/brace-ws2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/brace-ws2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bug_1702.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bug_1702.cfg
index 1c415eec..1c415eec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bug_1702.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bug_1702.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bug_1718.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bug_1718.cfg
index e55de095..e55de095 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bug_1718.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bug_1718.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bug_2331.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bug_2331.cfg
index 4a4af2f3..4a4af2f3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bug_2331.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bug_2331.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bug_489.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bug_489.cfg
index 61d4693c..61d4693c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bug_489.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bug_489.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bug_i_771.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bug_i_771.cfg
index 69b6e1a3..69b6e1a3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/bug_i_771.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/bug_i_771.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/case-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/case-1.cfg
index 7c65a819..7c65a819 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/case-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/case-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/case-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/case-2.cfg
index 07c0566d..07c0566d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/case-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/case-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/case-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/case-3.cfg
index 74f16293..74f16293 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/case-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/case-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cast-sp-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cast-sp-a.cfg
index 488198a9..488198a9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cast-sp-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cast-sp-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cast-sp-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cast-sp-r.cfg
index 1d0138a2..1d0138a2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cast-sp-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cast-sp-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cast-type.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cast-type.cfg
index 5900ffd5..5900ffd5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cast-type.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cast-type.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cgal.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cgal.cfg
index a4ec1fa0..a4ec1fa0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cgal.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cgal.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/clang-has_include.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/clang-has_include.cfg
index db006d08..db006d08 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/clang-has_include.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/clang-has_include.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cmt_indent_multi-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cmt_indent_multi-f.cfg
index 1bd265a3..1bd265a3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cmt_indent_multi-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cmt_indent_multi-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cmt_multi_check_last-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cmt_multi_check_last-f.cfg
index 7fdebde0..7fdebde0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cmt_multi_check_last-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cmt_multi_check_last-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cmt_nl_end.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cmt_nl_end.cfg
index 1c0b396a..1c0b396a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cmt_nl_end.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cmt_nl_end.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cmt_reflow.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cmt_reflow.cfg
index 9b280d18..9b280d18 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cmt_reflow.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cmt_reflow.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/code_width-80.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/code_width-80.cfg
index 4bdb0ce7..4bdb0ce7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/code_width-80.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/code_width-80.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/comment_conversion.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/comment_conversion.cfg
new file mode 100644
index 00000000..96b4bf4e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/comment_conversion.cfg
@@ -0,0 +1,2 @@
+cmt_trailing_single_line_c_to_cpp = true
+cmt_width = 100
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cond-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cond-1.cfg
index 61669da9..61669da9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cond-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cond-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/convert_cmt_vbrace_one_line.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/convert_cmt_vbrace_one_line.cfg
new file mode 100644
index 00000000..38a2ca92
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/convert_cmt_vbrace_one_line.cfg
@@ -0,0 +1,5 @@
+sp_sparen_brace = add
+mod_full_brace_if = add
+nl_after_brace_open = true
+nl_if_leave_one_liners = true
+sp_inside_braces = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cpp_to_c-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cpp_to_c-1.cfg
index b5b95435..b5b95435 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cpp_to_c-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cpp_to_c-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cpp_to_c-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cpp_to_c-2.cfg
index 9f0d9e3a..9f0d9e3a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cpp_to_c-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cpp_to_c-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cpp_to_c-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cpp_to_c-3.cfg
index 20bbb9e1..20bbb9e1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/cpp_to_c-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/cpp_to_c-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/custom_types_ssl.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/custom_types_ssl.cfg
index 4005234e..4005234e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/custom_types_ssl.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/custom_types_ssl.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/doxy-comment-no.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/doxy-comment-no.cfg
index bd2bd258..bd2bd258 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/doxy-comment-no.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/doxy-comment-no.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/doxy-comment-yes.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/doxy-comment-yes.cfg
index bc1d5584..bc1d5584 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/doxy-comment-yes.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/doxy-comment-yes.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/else-if-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/else-if-1.cfg
index b4e4aecb..b4e4aecb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/else-if-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/else-if-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/else-if-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/else-if-2.cfg
index 75d7936e..75d7936e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/else-if-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/else-if-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/empty_body.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/empty_body.cfg
index b737dfd8..b737dfd8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/empty_body.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/empty_body.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/endif.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/endif.cfg
index ff69251b..ff69251b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/endif.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/endif.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/enum_comma_ifdef.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/enum_comma_ifdef.cfg
index a2622767..a2622767 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/enum_comma_ifdef.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/enum_comma_ifdef.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/force_tab_after_define-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/force_tab_after_define-t.cfg
index 67b04e78..67b04e78 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/force_tab_after_define-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/force_tab_after_define-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/freebsd.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/freebsd.cfg
new file mode 100644
index 00000000..c0845eca
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/freebsd.cfg
@@ -0,0 +1,28 @@
+sp_sparen_brace = add
+sp_arith = force
+sp_bool = force
+sp_before_ptr_star = force
+sp_after_ptr_star = remove
+sp_before_semi_for_empty = force
+sp_between_semi_for_empty = force
+sp_after_semi_for_empty = force
+sp_type_func = force
+sp_brace_else = force
+indent_continue = 4
+nl_brace_else = remove
+nl_for_brace = add
+nl_while_brace = add
+nl_switch_brace = add
+nl_before_case = true
+nl_after_func_proto_group = 2
+nl_after_func_body = 3
+pos_arith = trail
+align_var_def_span = 1
+align_var_def_star_style = 1
+align_typedef_gap = 3
+align_typedef_span = 5
+mod_full_brace_for = add
+mod_full_brace_if = add
+mod_full_brace_while = add
+mod_full_paren_if_bool = true
+mod_remove_extra_semicolon = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/func_call_user.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/func_call_user.cfg
index 504fb3d8..504fb3d8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/func_call_user.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/func_call_user.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ger.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ger.cfg
index 268a4f19..268a4f19 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ger.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ger.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/i1564.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/i1564.cfg
index 74c53e52..74c53e52 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/i1564.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/i1564.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/if_chain.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/if_chain.cfg
new file mode 100644
index 00000000..659ec26e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/if_chain.cfg
@@ -0,0 +1,12 @@
+sp_after_sparen = add
+sp_before_sparen = force
+sp_inside_sparen = remove
+sp_else_brace = force
+sp_brace_else = force
+nl_if_brace = remove
+nl_brace_else = remove
+nl_else_brace = remove
+align_right_cmt_span = 3
+mod_full_brace_if_chain = 1
+mod_full_brace_nl = 3
+mod_full_brace_while = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent-1.cfg
index 943d0eb6..943d0eb6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent-vbrace.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent-vbrace.cfg
index 7e6ca7c1..7e6ca7c1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent-vbrace.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent-vbrace.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_assign.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_assign.cfg
index 6bad61f1..6bad61f1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_assign.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_assign.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_case_comment-false.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_case_comment-false.cfg
index 15e0e2e8..15e0e2e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_case_comment-false.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_case_comment-false.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_case_comment-true.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_case_comment-true.cfg
index abcadd59..abcadd59 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_case_comment-true.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_case_comment-true.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_comment_align_thresh-0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_comment_align_thresh-0.cfg
index dc730bf8..dc730bf8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_comment_align_thresh-0.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_comment_align_thresh-0.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_compound_literal_return-false.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_compound_literal_return-false.cfg
index b686aabe..b686aabe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_compound_literal_return-false.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_compound_literal_return-false.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_compound_literal_return-true.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_compound_literal_return-true.cfg
index 9fa1d2ef..9fa1d2ef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_compound_literal_return-true.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_compound_literal_return-true.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_func_call_param.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_func_call_param.cfg
index 26b4e03a..26b4e03a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_func_call_param.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_func_call_param.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_func_def_param.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_func_def_param.cfg
index c448b21f..c448b21f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_func_def_param.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_func_def_param.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_func_param.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_func_param.cfg
index 7db464b4..7db464b4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_func_param.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_func_param.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_func_proto_param.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_func_proto_param.cfg
index 6cfb83ed..6cfb83ed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_func_proto_param.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_func_proto_param.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_ignore_bool-true.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_ignore_bool-true.cfg
index 0f952471..0f952471 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_ignore_bool-true.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_ignore_bool-true.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_macro_brace-false.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_macro_brace-false.cfg
index f9e3bdca..f9e3bdca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_macro_brace-false.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_macro_brace-false.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_macro_brace-true.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_macro_brace-true.cfg
index 62573cad..62573cad 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_macro_brace-true.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_macro_brace-true.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_paren_close--1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_paren_close--1.cfg
index 0656a55f..0656a55f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_paren_close--1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_paren_close--1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_paren_close-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_paren_close-1.cfg
index e380b281..e380b281 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_paren_close-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_paren_close-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_paren_close-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_paren_close-2.cfg
index 2a77fedf..2a77fedf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_paren_close-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_paren_close-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_single_line_comments_after.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_single_line_comments_after.cfg
index bae9787c..bae9787c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_single_line_comments_after.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_single_line_comments_after.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_sparen_extra-8.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_sparen_extra-8.cfg
index 6344ceb2..6344ceb2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/indent_sparen_extra-8.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/indent_sparen_extra-8.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/issue_527.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/issue_527.cfg
new file mode 100644
index 00000000..166fffec
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/issue_527.cfg
@@ -0,0 +1,266 @@
+## Ingres coding style config for http://uncrustify.sourceforge.net/
+##
+## Based on defaults.cfg file (from uncrustify-0.40).
+## Main diffs are spaces for tabs and tab length.
+### FIXME find out why old 0.38 version removed spaces in "# if..." 0.40 retains them.
+##
+## There is a GUI from http://universalindent.sourceforge.net/
+## which can use different formatters too, e.g.
+## gnu indent (no suport for EXEC SQL)
+## bcpp
+
+## FIXME try different settings for indent_preserve_sql - not seeing any difference!
+##indent_preserve_sql = false # false/true
+
+# How to run:
+# $ uncrustify -c ./ingres.cfg -f dirtyfile.c > cleanfile.c
+# > uncrustify -c ingres.cfg -f dirtyfile.c > cleanfile.c
+#
+
+##############################
+
+newlines = auto
+input_tab_size = 4
+output_tab_size = 4
+string_escape_char = 92
+string_escape_char2 = 0
+indent_columns = 4
+indent_with_tabs = 0
+indent_align_string = false
+indent_xml_string = 0
+indent_brace = 0
+indent_braces = false
+indent_braces_no_func = false
+indent_brace_parent = false
+indent_namespace = false
+indent_class = false
+indent_class_colon = false
+indent_func_call_param = false
+indent_member = 0
+indent_single_line_comments_before = 0
+indent_switch_case = indent_columns
+indent_case_shift = 0
+indent_case_brace = 0
+indent_col1_comment = false
+indent_label = 1
+indent_access_spec = 1
+indent_paren_nl = false
+indent_paren_close = 0
+indent_comma_paren = 0
+indent_bool_paren = 0
+indent_square_nl = false
+indent_preserve_sql = false
+sp_arith = ignore
+sp_assign = ignore
+sp_bool = ignore
+sp_compare = ignore
+sp_inside_paren = ignore
+sp_paren_paren = ignore
+sp_balance_nested_parens = false
+sp_paren_brace = ignore
+sp_before_ptr_star = ignore
+sp_between_ptr_star = ignore
+sp_after_ptr_star = ignore
+sp_before_byref = ignore
+sp_after_byref = ignore
+sp_before_angle = ignore
+sp_after_angle = ignore
+sp_angle_paren = ignore
+sp_angle_word = ignore
+sp_before_sparen = add
+sp_inside_sparen = remove
+sp_after_sparen = remove
+sp_sparen_brace = ignore
+sp_special_semi = ignore
+sp_before_semi = remove
+sp_before_semi_for = ignore
+sp_before_semi_for_empty = ignore
+sp_between_semi_for_empty = ignore
+sp_after_semi_for_empty = ignore
+sp_before_square = remove
+sp_before_squares = remove
+sp_inside_square = remove
+sp_after_comma = add
+sp_before_comma = remove
+sp_after_operator = ignore
+sp_after_cast = add
+sp_inside_paren_cast = remove
+sp_sizeof_paren = remove
+sp_after_tag = ignore
+sp_inside_braces_enum = ignore
+sp_inside_braces_struct = ignore
+sp_inside_braces = ignore
+sp_inside_angle = remove
+sp_type_func = remove
+sp_func_proto_paren = remove
+sp_func_def_paren = remove
+sp_inside_fparens = remove
+sp_inside_fparen = remove
+sp_square_fparen = ignore
+sp_fparen_brace = ignore
+sp_func_call_paren = ignore
+sp_func_class_paren = ignore
+sp_return_paren = ignore
+sp_attribute_paren = ignore
+sp_macro = ignore
+sp_macro_func = ignore
+sp_else_brace = ignore
+sp_brace_else = ignore
+sp_catch_brace = ignore
+sp_brace_catch = ignore
+sp_finally_brace = ignore
+sp_brace_finally = ignore
+sp_try_brace = ignore
+sp_getset_brace = ignore
+sp_before_dc = ignore
+sp_after_dc = ignore
+sp_d_array_colon = ignore
+sp_not = remove
+sp_inv = remove
+sp_addr = remove
+sp_deref = remove
+align_keep_tabs = false
+align_with_tabs = false
+align_on_tabstop = false
+align_number_right = false
+align_func_params = false
+align_var_def_span = 1
+align_var_def_star_style = 1
+align_var_def_amp_style = 0
+align_var_def_thresh = 0
+align_var_def_colon = false
+align_var_def_inline = false
+align_assign_span = 0
+align_assign_thresh = 0
+align_enum_equ_span = 0
+align_enum_equ_thresh = 0
+align_var_struct_span = 0
+align_var_struct_thresh = 0
+align_struct_init_span = 0
+align_typedef_gap = 0
+align_typedef_span = 0
+align_typedef_func = 0
+align_typedef_star_style = 0
+align_typedef_amp_style = 0
+align_right_cmt_span = 0
+align_func_proto_span = 0
+align_nl_cont = 0
+align_pp_define_gap = 0
+align_pp_define_span = 0
+nl_collapse_empty_body = false
+nl_assign_leave_one_liners = false
+nl_class_leave_one_liners = false
+nl_enum_leave_one_liners = false
+nl_getset_leave_one_liners = false
+nl_func_leave_one_liners = false
+nl_if_leave_one_liners = false
+nl_start_of_file = ignore
+nl_start_of_file_min = 0
+nl_end_of_file = ignore
+nl_end_of_file_min = 0
+nl_assign_brace = ignore
+nl_assign_square = ignore
+nl_after_square_assign = ignore
+nl_var_def_blk_end_func_top = 0
+nl_fcall_brace = ignore
+nl_enum_brace = ignore
+nl_struct_brace = ignore
+nl_union_brace = ignore
+nl_if_brace = force
+nl_brace_else = force
+nl_elseif_brace = force
+nl_else_brace = force
+nl_brace_finally = ignore
+nl_finally_brace = ignore
+nl_try_brace = ignore
+nl_getset_brace = ignore
+nl_for_brace = force
+nl_catch_brace = ignore
+nl_brace_catch = ignore
+nl_while_brace = force
+nl_do_brace = force
+nl_brace_while = force
+nl_switch_brace = force
+nl_multi_line_cond = false
+nl_before_case = false
+nl_after_case = false
+nl_namespace_brace = ignore
+nl_template_class = ignore
+nl_class_brace = ignore
+nl_class_init_args = ignore
+nl_func_type_name = ignore
+nl_func_paren = force
+nl_func_decl_start = ignore
+nl_func_decl_args = ignore
+nl_func_decl_end = ignore
+nl_fdef_brace = ignore
+nl_after_return = false
+nl_after_semicolon = false
+nl_after_brace_open = false
+nl_after_vbrace_open = false
+nl_define_macro = false
+nl_squeeze_ifdef = false
+nl_before_if = ignore
+nl_after_if = ignore
+nl_before_for = ignore
+nl_after_for = ignore
+nl_before_while = ignore
+nl_after_while = ignore
+nl_before_switch = ignore
+nl_after_switch = ignore
+nl_before_do = ignore
+nl_after_do = ignore
+nl_ds_struct_enum_cmt = false
+nl_ds_struct_enum_close_brace = false
+nl_class_colon = ignore
+nl_create_if_one_liner = false
+nl_create_for_one_liner = false
+nl_create_while_one_liner = false
+pos_bool = ignore
+pos_comma = ignore
+pos_class_comma = ignore
+pos_class_colon = ignore
+code_width = 0
+ls_for_split_full = false
+ls_func_split_full = false
+nl_max = 0
+nl_after_func_proto = 0
+nl_after_func_proto_group = 0
+nl_after_func_body = 0
+nl_after_func_body_one_liner = 0
+nl_before_block_comment = 0
+nl_before_c_comment = 0
+nl_before_cpp_comment = 0
+nl_after_multiline_comment = false
+nl_before_access_spec = 0
+nl_after_access_spec = 0
+eat_blanks_after_open_brace = false
+eat_blanks_before_close_brace = false
+mod_full_brace_do = ignore
+mod_full_brace_for = ignore
+mod_full_brace_function = ignore
+mod_full_brace_if = ignore
+mod_full_brace_nl = 0
+mod_full_brace_while = ignore
+mod_paren_on_return = ignore
+mod_pawn_semicolon = false
+mod_full_paren_if_bool = false
+mod_remove_extra_semicolon = false
+cmt_width = 0
+cmt_c_group = false
+cmt_c_nl_start = false
+cmt_c_nl_end = false
+cmt_cpp_group = false
+cmt_cpp_nl_start = false
+cmt_cpp_nl_end = false
+cmt_cpp_to_c = false
+cmt_star_cont = false
+cmt_sp_before_star_cont = 0
+cmt_sp_after_star_cont = 0
+pp_indent = ignore
+pp_indent_at_level = false
+pp_space_after = ignore
+pp_indent_region = 0
+pp_region_indent_code = false
+pp_indent_if = 0
+pp_if_indent_code = false
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/label_colon_nl_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/label_colon_nl_1.cfg
new file mode 100644
index 00000000..68402fd0
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/label_colon_nl_1.cfg
@@ -0,0 +1,8 @@
+sp_sparen_brace = add
+sp_after_bit_colon = force
+sp_before_bit_colon = force
+nl_before_case = true
+nl_after_semicolon = true
+nl_after_label_colon = true
+nl_remove_extra_newlines = 2
+align_var_struct_span = 3
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/label_colon_nl_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/label_colon_nl_2.cfg
new file mode 100644
index 00000000..eccbdec2
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/label_colon_nl_2.cfg
@@ -0,0 +1,7 @@
+sp_sparen_brace = add
+sp_after_bit_colon = force
+sp_before_bit_colon = force
+nl_before_case = true
+nl_after_semicolon = true
+nl_remove_extra_newlines = 2
+align_var_struct_span = 3
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/leave_one_liners.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/leave_one_liners.cfg
index 931e9465..931e9465 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/leave_one_liners.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/leave_one_liners.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod-paren.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod-paren.cfg
index 2c0049ab..2c0049ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod-paren.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod-paren.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod-paren2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod-paren2.cfg
index 113ee868..113ee868 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod-paren2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod-paren2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_case_brace_add.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_case_brace_add.cfg
index bfcca51a..bfcca51a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_case_brace_add.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_case_brace_add.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-0.cfg
index 52428063..52428063 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-0.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-0.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-1.cfg
new file mode 100644
index 00000000..8b4dd7f9
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-1.cfg
@@ -0,0 +1,2 @@
+sp_after_sparen = force
+mod_infinite_loop = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-2.cfg
new file mode 100644
index 00000000..80fdae95
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-2.cfg
@@ -0,0 +1,2 @@
+sp_after_sparen = add
+mod_infinite_loop = 2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-3.cfg
index b026525b..b026525b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-4.cfg
new file mode 100644
index 00000000..05fe0cd6
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-4.cfg
@@ -0,0 +1,2 @@
+sp_after_sparen = force
+mod_infinite_loop = 4
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-5.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-5.cfg
index 4b127892..4b127892 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_infinite_loop-5.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_infinite_loop-5.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-add-all-prefer-left.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-add-all-prefer-left.cfg
index 2f0fd00d..2f0fd00d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-add-all-prefer-left.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-add-all-prefer-left.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-add-all-prefer-right.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-add-all-prefer-right.cfg
index 35b3d317..35b3d317 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-add-all-prefer-right.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-add-all-prefer-right.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-remove-all.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-remove-all.cfg
index d072c2f4..d072c2f4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-remove-all.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-remove-all.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-remove-left.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-remove-left.cfg
index b2396016..b2396016 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-remove-left.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-remove-left.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-remove-right.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-remove-right.cfg
index aa16c67c..aa16c67c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-remove-right.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-remove-right.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-shift-left.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-shift-left.cfg
index 4db8af41..4db8af41 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-shift-left.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-shift-left.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-shift-right.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-shift-right.cfg
index 78c5806b..78c5806b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int-shift-right.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int-shift-right.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_long-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_long-a.cfg
index c8cd7a2c..c8cd7a2c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_long-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_long-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_long-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_long-r.cfg
index 2f499ac8..2f499ac8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_long-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_long-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_short-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_short-a.cfg
index 94ca506b..94ca506b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_short-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_short-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_short-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_short-r.cfg
index e6458b57..e6458b57 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_short-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_short-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_signed-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_signed-a.cfg
index f2ad55d3..f2ad55d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_signed-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_signed-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_signed-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_signed-r.cfg
index 7e418238..7e418238 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_signed-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_signed-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_unsigned-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_unsigned-a.cfg
index fcafcddc..fcafcddc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_unsigned-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_unsigned-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_unsigned-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_unsigned-r.cfg
index cef8d459..cef8d459 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_int_unsigned-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_int_unsigned-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_long_int-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_long_int-a.cfg
index c3ac76dd..c3ac76dd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_long_int-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_long_int-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_long_int-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_long_int-r.cfg
index 15a40e52..15a40e52 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_long_int-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_long_int-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_move_case_brace.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_move_case_brace.cfg
index acb25734..acb25734 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_move_case_brace.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_move_case_brace.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_move_case_return.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_move_case_return.cfg
index 0e698ea9..0e698ea9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_move_case_return.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_move_case_return.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_short_int-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_short_int-a.cfg
index d6986aa1..d6986aa1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_short_int-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_short_int-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_short_int-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_short_int-r.cfg
index 53daa53f..53daa53f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_short_int-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_short_int-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_signed_int-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_signed_int-a.cfg
index e951d8e7..e951d8e7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_signed_int-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_signed_int-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_signed_int-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_signed_int-r.cfg
index aa70348d..aa70348d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_signed_int-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_signed_int-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_unsigned_int-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_unsigned_int-a.cfg
index 7141c9cf..7141c9cf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_unsigned_int-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_unsigned_int-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_unsigned_int-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_unsigned_int-r.cfg
index 06f93143..06f93143 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/mod_unsigned_int-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/mod_unsigned_int-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/my_conf.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/my_conf.cfg
new file mode 100644
index 00000000..9f23ca92
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/my_conf.cfg
@@ -0,0 +1,18 @@
+sp_sparen_brace = add
+sp_assign = add
+sp_before_sparen = add
+sp_inside_sparen = remove
+sp_func_def_paren = force
+indent_columns = 4
+indent_with_tabs = 0
+indent_switch_case = 4
+indent_switch_break_with_case = true
+nl_end_of_file = force
+nl_end_of_file_min = 1
+nl_if_brace = add
+nl_else_brace = add
+nl_switch_brace = add
+nl_before_case = true
+cmt_width = 80
+mod_full_brace_for = add
+mod_full_brace_if = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nepenthes.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nepenthes.cfg
index 150294da..150294da 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nepenthes.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nepenthes.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/newline_after_endif.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/newline_after_endif.cfg
index afd7693d..afd7693d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/newline_after_endif.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/newline_after_endif.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl-comment.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl-comment.cfg
index 0d1e2a11..0d1e2a11 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl-comment.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl-comment.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_assign1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_assign1.cfg
index 1f4da850..1f4da850 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_assign1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_assign1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_assign2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_assign2.cfg
index b4cfb4d1..b4cfb4d1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_assign2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_assign2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_before_return_false.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_before_return_false.cfg
index 7636745b..7636745b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_before_return_false.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_before_return_false.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_before_return_true.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_before_return_true.cfg
index 1e6976fc..1e6976fc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_before_return_true.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_before_return_true.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_brace_test.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_brace_test.cfg
index 0d3f7109..0d3f7109 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_brace_test.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_brace_test.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_1.cfg
new file mode 100644
index 00000000..c24e35b5
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_1.cfg
@@ -0,0 +1,3 @@
+sp_sparen_brace = add
+nl_collapse_empty_body = false
+nl_collapse_empty_body_functions = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_2.cfg
new file mode 100644
index 00000000..03137e3d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_2.cfg
@@ -0,0 +1,3 @@
+sp_sparen_brace = add
+nl_collapse_empty_body = true
+nl_collapse_empty_body_functions = false
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_3.cfg
new file mode 100644
index 00000000..8dcbcb2d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_3.cfg
@@ -0,0 +1,3 @@
+sp_sparen_brace = add
+nl_collapse_empty_body = false
+nl_collapse_empty_body_functions = false
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_4.cfg
new file mode 100644
index 00000000..ca27b7dd
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_collapse_empty_4.cfg
@@ -0,0 +1,3 @@
+sp_sparen_brace = add
+nl_collapse_empty_body = true
+nl_collapse_empty_body_functions = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_create_one_liner.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_create_one_liner.cfg
new file mode 100644
index 00000000..8726c6ce
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_create_one_liner.cfg
@@ -0,0 +1,5 @@
+sp_after_sparen = add
+indent_columns = 3
+nl_create_if_one_liner = true
+nl_create_for_one_liner = true
+nl_create_while_one_liner = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_ds_struct_enum-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_ds_struct_enum-2.cfg
index 01c60de4..01c60de4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_ds_struct_enum-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_ds_struct_enum-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_ds_struct_enum_cmt-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_ds_struct_enum_cmt-t.cfg
index 1864b51d..1864b51d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_ds_struct_enum_cmt-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_ds_struct_enum_cmt-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_endif.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_endif.cfg
index b056153e..b056153e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_endif.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_endif.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_enum_own_lines-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_enum_own_lines-3.cfg
index b6a28869..b6a28869 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_enum_own_lines-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_enum_own_lines-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_enum_own_lines-3.rerun.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_enum_own_lines-3.rerun.cfg
index f0d3f7b2..f0d3f7b2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_enum_own_lines-3.rerun.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_enum_own_lines-3.rerun.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_enum_own_lines-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_enum_own_lines-4.cfg
index 70973ec8..70973ec8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_enum_own_lines-4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_enum_own_lines-4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_enum_own_lines-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_enum_own_lines-a.cfg
index 66e7dbfa..66e7dbfa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_enum_own_lines-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_enum_own_lines-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_func_call-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_func_call-1.cfg
index e3befa10..e3befa10 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_func_call-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_func_call-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_func_call-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_func_call-2.cfg
index 7b366b5b..7b366b5b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_func_call-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_func_call-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_func_call-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_func_call-3.cfg
index 44c64753..44c64753 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_func_call-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_func_call-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_func_call-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_func_call-4.cfg
index af273843..af273843 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_func_call-4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_func_call-4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_func_call-5.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_func_call-5.cfg
index 6e5553c0..6e5553c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_func_call-5.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_func_call-5.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_semicolon.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_semicolon.cfg
index d099e0c7..d099e0c7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_semicolon.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_semicolon.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_whole_file_ifdef.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_whole_file_ifdef.cfg
index 1d6a585a..1d6a585a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/nl_whole_file_ifdef.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/nl_whole_file_ifdef.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pascal_ptr.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pascal_ptr.cfg
index 1760abca..1760abca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pascal_ptr.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pascal_ptr.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pos_compare-eol.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pos_compare-eol.cfg
index 90267209..90267209 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pos_compare-eol.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pos_compare-eol.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pos_compare-sol.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pos_compare-sol.cfg
index a4235d7d..a4235d7d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pos_compare-sol.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pos_compare-sol.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pos_conditional-l.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pos_conditional-l.cfg
index 11eb46fd..11eb46fd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pos_conditional-l.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pos_conditional-l.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pos_conditional-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pos_conditional-t.cfg
index 79bb52d0..79bb52d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pos_conditional-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pos_conditional-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp-indent-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp-indent-2.cfg
index 1387ccfe..1387ccfe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp-indent-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp-indent-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp-space.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp-space.cfg
index e91685ab..e91685ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp-space.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp-space.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent-0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent-0.cfg
index 82f11f27..82f11f27 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent-0.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent-0.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent-1.cfg
index 7c01e819..7c01e819 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent-2.cfg
index 6f912806..6f912806 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent-3.cfg
index 4b876498..4b876498 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent-4.cfg
index fe29f734..fe29f734 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent-4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent-4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent_code-true.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent_code-true.cfg
index cb00f671..cb00f671 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_if_indent_code-true.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_if_indent_code-true.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_include_at_level-false.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_include_at_level-false.cfg
index 6f780147..6f780147 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_include_at_level-false.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_include_at_level-false.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_include_at_level-true.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_include_at_level-true.cfg
index bc062b9f..bc062b9f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_include_at_level-true.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_include_at_level-true.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent-a.cfg
index f9f9b3b3..f9f9b3b3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_brace--1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_brace--1.cfg
index ecd054cb..ecd054cb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_brace--1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_brace--1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_in_guard.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_in_guard.cfg
index 2c4e2545..2c4e2545 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_in_guard.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_in_guard.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_-1_0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_-1_0.cfg
index 7e50c5a8..7e50c5a8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_-1_0.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_-1_0.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_-1_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_-1_1.cfg
index c3daa492..c3daa492 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_-1_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_-1_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_-1_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_-1_2.cfg
index bb793d00..bb793d00 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_-1_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_-1_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_0.cfg
index 85aa06bc..85aa06bc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_0.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_0.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_1.cfg
index 4a798a12..4a798a12 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_2.cfg
index 11c06aa2..11c06aa2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_indent_with_tabs_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_indent_with_tabs_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_nl.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_nl.cfg
new file mode 100644
index 00000000..e0e639e3
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_nl.cfg
@@ -0,0 +1,6 @@
+sp_sparen_brace = add
+input_tab_size = 2
+output_tab_size = 2
+indent_columns = 2
+pp_indent_with_tabs = 0
+align_nl_cont = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_cnt3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_cnt3.cfg
new file mode 100644
index 00000000..32b1a98b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_cnt3.cfg
@@ -0,0 +1,8 @@
+sp_sparen_brace = add
+input_tab_size = 2
+output_tab_size = 2
+indent_columns = 2
+pp_indent_with_tabs = 0
+pp_indent_count = 3
+pp_indent = force
+align_nl_cont = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_col1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_col1.cfg
new file mode 100644
index 00000000..14def669
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_col1.cfg
@@ -0,0 +1,8 @@
+sp_sparen_brace = add
+input_tab_size = 2
+output_tab_size = 2
+indent_columns = 2
+pp_indent_with_tabs = 0
+pp_indent_count = 0
+pp_indent = force
+align_nl_cont = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml-1.cfg
new file mode 100644
index 00000000..1154702c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml-1.cfg
@@ -0,0 +1,9 @@
+sp_sparen_brace = add
+input_tab_size = 2
+output_tab_size = 2
+indent_columns = 2
+pp_indent_with_tabs = 0
+pp_indent_count = 2
+pp_multiline_define_body_indent = -1
+pp_indent = force
+align_nl_cont = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml-5.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml-5.cfg
new file mode 100644
index 00000000..e77ffa65
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml-5.cfg
@@ -0,0 +1,9 @@
+sp_sparen_brace = add
+input_tab_size = 2
+output_tab_size = 2
+indent_columns = 2
+pp_indent_with_tabs = 0
+pp_indent_count = 2
+pp_multiline_define_body_indent = -5
+pp_indent = force
+align_nl_cont = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml0.cfg
new file mode 100644
index 00000000..75d73d46
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml0.cfg
@@ -0,0 +1,9 @@
+sp_sparen_brace = add
+input_tab_size = 2
+output_tab_size = 2
+indent_columns = 2
+pp_indent_with_tabs = 0
+pp_indent_count = 2
+pp_multiline_define_body_indent = 0
+pp_indent = force
+align_nl_cont = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml2.cfg
new file mode 100644
index 00000000..a3cc63be
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml2.cfg
@@ -0,0 +1,9 @@
+sp_sparen_brace = add
+input_tab_size = 2
+output_tab_size = 2
+indent_columns = 2
+pp_indent_with_tabs = 0
+pp_indent_count = 2
+pp_multiline_define_body_indent = 2
+pp_indent = force
+align_nl_cont = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml4.cfg
new file mode 100644
index 00000000..19ae0849
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_align_pp_ml4.cfg
@@ -0,0 +1,9 @@
+sp_sparen_brace = add
+input_tab_size = 2
+output_tab_size = 2
+indent_columns = 2
+pp_indent_with_tabs = 0
+pp_indent_count = 2
+pp_multiline_define_body_indent = 4
+pp_indent = force
+align_nl_cont = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_ignore_body.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_ignore_body.cfg
index ad3114b8..ad3114b8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_multiline_define_ignore_body.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_ignore_body.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_with_spaces.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_with_spaces.cfg
new file mode 100644
index 00000000..d8100e67
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_multiline_define_with_spaces.cfg
@@ -0,0 +1,5 @@
+sp_sparen_brace = add
+input_tab_size = 2
+output_tab_size = 2
+indent_columns = 2
+pp_indent_with_tabs = 0
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_ret.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_ret.cfg
index b1fb2000..b1fb2000 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_ret.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_ret.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_space_after.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_space_after.cfg
index 9bc1026a..9bc1026a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_space_after.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_space_after.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_space_before.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_space_before.cfg
index e26fbfe4..e26fbfe4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_space_before.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_space_before.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_space_before_after.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_space_before_after.cfg
index 94765577..94765577 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_space_before_after.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_space_before_after.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_space_none.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_space_none.cfg
index 5287a565..5287a565 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/pp_space_none.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/pp_space_none.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/preproc-cleanup.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/preproc-cleanup.cfg
index 4773d091..4773d091 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/preproc-cleanup.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/preproc-cleanup.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ptr-arith.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ptr-arith.cfg
index ff1949d3..ff1949d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/ptr-arith.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/ptr-arith.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/rdan.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/rdan.cfg
index 1c1b0c68..1c1b0c68 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/rdan.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/rdan.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/return-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/return-1.cfg
index 996ca632..996ca632 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/return-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/return-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/return-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/return-2.cfg
index 87b361d8..87b361d8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/return-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/return-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/return-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/return-3.cfg
index 9caf1a7e..9caf1a7e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/return-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/return-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/return-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/return-4.cfg
index 9a885287..9a885287 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/return-4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/return-4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sf537.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sf537.cfg
index 400c7e0b..400c7e0b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sf537.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sf537.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sf538.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sf538.cfg
index 8c6d149b..8c6d149b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sf538.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sf538.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_after_pointer_star-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_pointer_star-r.cfg
index 92a637a1..92a637a1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_after_pointer_star-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_pointer_star-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-a.cfg
new file mode 100644
index 00000000..bf498a46
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-a.cfg
@@ -0,0 +1 @@
+sp_after_sparen = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-f.cfg
new file mode 100644
index 00000000..579e9270
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-f.cfg
@@ -0,0 +1 @@
+sp_after_sparen = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-i.cfg
new file mode 100644
index 00000000..3bbe318b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-i.cfg
@@ -0,0 +1 @@
+sp_after_sparen = ignore
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-r.cfg
new file mode 100644
index 00000000..a4223a72
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_after_sparen-r.cfg
@@ -0,0 +1 @@
+sp_after_sparen = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_between_semi_for_empty-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_between_semi_for_empty-i.cfg
index 146f6d61..146f6d61 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_between_semi_for_empty-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_between_semi_for_empty-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_between_semi_for_empty-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_between_semi_for_empty-r.cfg
index 26dcc001..26dcc001 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_between_semi_for_empty-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_between_semi_for_empty-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_cmt_cpp_start-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_cmt_cpp_start-r.cfg
index 13ceebfc..13ceebfc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_cmt_cpp_start-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_cmt_cpp_start-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_cond_colon.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_cond_colon.cfg
index d39afa14..d39afa14 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_cond_colon.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_cond_colon.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_emb_cmt-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_emb_cmt-f.cfg
index 68a83e91..68a83e91 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_emb_cmt-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_emb_cmt-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_emb_cmt-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_emb_cmt-i.cfg
index 04f49ee7..04f49ee7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_emb_cmt-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_emb_cmt-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_emb_cmt-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_emb_cmt-r.cfg
index f45d357b..f45d357b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_emb_cmt-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_emb_cmt-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_enum_brace-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_enum_brace-a.cfg
index ada72096..ada72096 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_enum_brace-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_enum_brace-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_enum_brace-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_enum_brace-f.cfg
index 0e358549..0e358549 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_enum_brace-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_enum_brace-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_enum_brace-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_enum_brace-i.cfg
index f18a88b3..f18a88b3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_enum_brace-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_enum_brace-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_enum_brace-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_enum_brace-r.cfg
index 22785029..22785029 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_enum_brace-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_enum_brace-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_func_call_user_inside_fparen.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_func_call_user_inside_fparen.cfg
index e5650760..e5650760 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_func_call_user_inside_fparen.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_func_call_user_inside_fparen.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_ptr_star_func_var-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_ptr_star_func_var-a.cfg
index a21ed3da..a21ed3da 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_ptr_star_func_var-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_ptr_star_func_var-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_ptr_star_func_var-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_ptr_star_func_var-f.cfg
index 9562f157..9562f157 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_ptr_star_func_var-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_ptr_star_func_var-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_ptr_star_func_var-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_ptr_star_func_var-i.cfg
index e18cc959..e18cc959 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_ptr_star_func_var-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_ptr_star_func_var-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_ptr_star_func_var-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_ptr_star_func_var-r.cfg
index ec9bf9c0..ec9bf9c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_ptr_star_func_var-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_ptr_star_func_var-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_sparen_paren-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_sparen_paren-a.cfg
index 0d477f4d..0d477f4d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_sparen_paren-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_sparen_paren-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_sparen_paren-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_sparen_paren-i.cfg
index 750b77ff..750b77ff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_sparen_paren-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/sp_sparen_paren-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/space_indent_columns-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/space_indent_columns-3.cfg
index ec130371..ec130371 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/space_indent_columns-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/space_indent_columns-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/star-style-0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/star-style-0.cfg
index dd69e7f8..dd69e7f8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/star-style-0.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/star-style-0.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/star-style-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/star-style-1.cfg
index 842dc820..842dc820 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/star-style-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/star-style-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/star-style-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/star-style-2.cfg
index 0165f975..0165f975 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/star-style-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/star-style-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/type_wrap.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/type_wrap.cfg
index eeea5786..eeea5786 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/type_wrap.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/type_wrap.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/width-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/width-3.cfg
new file mode 100644
index 00000000..309db151
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/width-3.cfg
@@ -0,0 +1,8 @@
+# width stuff
+sp_sparen_brace = add
+sp_arith = force
+indent_columns = 4
+indent_with_tabs = 0
+nl_if_brace = remove
+code_width = 80
+ls_func_split_full = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/width.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/width.cfg
new file mode 100644
index 00000000..3245a35e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/width.cfg
@@ -0,0 +1,8 @@
+# width stuff
+sp_sparen_brace = add
+sp_arith = force
+indent_columns = 4
+indent_with_tabs = 0
+nl_if_brace = remove
+code_width = 60
+ls_func_split_full = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/xml-str.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/xml-str.cfg
index bd667ab4..bd667ab4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/xml-str.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/c/xml-str.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/Issue_3052.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/Issue_3052.cfg
index f7c29b8e..f7c29b8e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/Issue_3052.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/Issue_3052.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/UNI-18777.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/UNI-18777.cfg
index 7d4c013e..7d4c013e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/UNI-18777.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/UNI-18777.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet-func_call_user.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet-func_call_user.cfg
index 3219bc4b..3219bc4b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet-func_call_user.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet-func_call_user.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet-func_def.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet-func_def.cfg
index c4575b88..c4575b88 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet-func_def.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet-func_def.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet-sp_after_oc_msg_receiver.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet-sp_after_oc_msg_receiver.cfg
index 8e25aaed..8e25aaed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet-sp_after_oc_msg_receiver.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet-sp_after_oc_msg_receiver.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet-sp_inside_braces_oc_dict.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet-sp_inside_braces_oc_dict.cfg
index 57e2463e..57e2463e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/aet-sp_inside_braces_oc_dict.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet-sp_inside_braces_oc_dict.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet.cfg
new file mode 100644
index 00000000..69f104cb
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/aet.cfg
@@ -0,0 +1,510 @@
+# Uncrustify 0.61
+newlines = auto
+input_tab_size = 4
+output_tab_size = 8
+string_escape_char = 92
+string_escape_char2 = 0
+string_replace_tab_chars = true
+tok_split_gte = false
+disable_processing_cmt = "*begin-nonstandard-formatting*"
+enable_processing_cmt = "*end-nonstandard-formatting*"
+utf8_bom = remove
+utf8_byte = false
+utf8_force = false
+indent_columns = 4
+indent_continue = 4
+indent_with_tabs = 0
+indent_cmt_with_tabs = false
+indent_align_string = false
+indent_xml_string = 0
+indent_brace = 0
+indent_braces = false
+indent_braces_no_func = false
+indent_braces_no_class = false
+indent_braces_no_struct = false
+indent_brace_parent = false
+indent_paren_open_brace = false
+indent_namespace = false
+indent_namespace_single_indent = true
+indent_namespace_level = 0
+indent_namespace_limit = 0
+indent_extern = false
+indent_class = true
+indent_class_colon = false
+indent_class_on_colon = false
+indent_constr_colon = false
+indent_ctor_init_leading = 2
+indent_ctor_init = 0
+indent_else_if = false
+indent_var_def_blk = 0
+indent_var_def_cont = false
+indent_shift = 0
+indent_func_def_force_col1 = false
+indent_func_call_param = true
+indent_func_def_param = true
+indent_func_proto_param = true
+indent_func_class_param = false
+indent_func_ctor_var_param = false
+indent_template_param = false
+indent_func_param_double = false
+indent_func_const = 0
+indent_func_throw = 0
+indent_member = 0
+indent_single_line_comments_before = 0
+indent_relative_single_line_comments = true
+indent_switch_case = 0
+indent_case_shift = 0
+indent_case_brace = 0
+indent_col1_comment = false
+indent_label = -4
+indent_access_spec = -4
+indent_access_spec_body = false
+indent_paren_nl = false
+indent_paren_close = 0
+indent_comma_paren = 0
+indent_bool_paren = 0
+indent_first_bool_expr = false
+indent_square_nl = false
+indent_preserve_sql = false
+indent_align_assign = false
+indent_oc_block = false
+indent_oc_block_msg = 0
+indent_oc_msg_colon = 0
+indent_oc_msg_prioritize_first_colon = true
+indent_oc_block_msg_xcode_style = true
+indent_oc_block_msg_from_keyword = false
+indent_oc_block_msg_from_colon = false
+indent_oc_block_msg_from_caret = false
+indent_oc_block_msg_from_brace = false
+indent_min_vbrace_open = 0
+indent_vbrace_open_on_tabstop = false
+sp_arith = force
+sp_assign = add
+sp_cpp_lambda_assign = ignore
+sp_cpp_lambda_square_paren = ignore
+sp_assign_default = add
+sp_before_assign = force
+sp_after_assign = force
+sp_enum_paren = ignore
+sp_enum_assign = add
+sp_enum_before_assign = ignore
+sp_enum_after_assign = ignore
+sp_pp_concat = remove
+sp_pp_stringify = remove
+sp_before_pp_stringify = ignore
+sp_bool = add
+sp_compare = add
+sp_inside_paren = remove
+sp_paren_paren = remove
+sp_cparen_oparen = ignore
+sp_balance_nested_parens = false
+sp_paren_brace = force
+sp_before_ptr_star = force
+sp_before_unnamed_ptr_star = ignore
+sp_between_ptr_star = remove
+sp_after_ptr_star = remove
+sp_after_ptr_star_qualifier = remove
+sp_after_ptr_star_func = remove
+sp_ptr_star_func_type = remove
+sp_ptr_star_paren = remove
+sp_before_ptr_star_func = force
+sp_before_byref = remove
+sp_before_unnamed_byref = remove
+sp_after_byref = force
+sp_after_byref_func = force
+sp_before_byref_func = remove
+sp_after_type = force
+sp_after_decltype = force
+sp_before_template_paren = ignore
+sp_template_angle = remove
+sp_before_angle = remove
+sp_inside_angle = remove
+sp_after_angle = remove
+sp_angle_paren = remove
+sp_angle_paren_empty = remove
+sp_angle_word = force
+sp_angle_shift = remove
+sp_permit_cpp11_shift = false
+sp_before_sparen = force
+sp_inside_sparen = remove
+sp_inside_sparen_close = ignore
+sp_inside_sparen_open = ignore
+sp_after_sparen = add
+sp_sparen_brace = force
+sp_invariant_paren = ignore
+sp_after_invariant_paren = ignore
+sp_special_semi = force
+sp_before_semi = remove
+sp_before_semi_for = remove
+sp_before_semi_for_empty = remove
+sp_between_semi_for_empty = remove
+sp_after_semi = force
+sp_after_semi_for = force
+sp_after_semi_for_empty = remove
+sp_before_square = remove
+sp_before_squares = remove
+sp_inside_square = remove
+sp_after_comma = add
+sp_before_comma = remove
+sp_after_mdatype_commas = remove
+sp_before_mdatype_commas = remove
+sp_between_mdatype_commas = remove
+sp_paren_comma = remove
+sp_before_ellipsis = ignore
+sp_after_class_colon = force
+sp_before_class_colon = force
+sp_after_constr_colon = ignore
+sp_before_constr_colon = ignore
+sp_before_case_colon = remove
+sp_after_operator = ignore
+sp_after_operator_sym = ignore
+sp_after_cast = force
+sp_inside_paren_cast = remove
+sp_cpp_cast_paren = remove
+sp_sizeof_paren = remove
+sp_decltype_paren = remove
+sp_after_tag = ignore
+sp_inside_braces_enum = add
+sp_inside_braces_struct = ignore
+sp_inside_braces = ignore
+sp_inside_braces_empty = remove
+sp_type_func = force
+sp_func_proto_paren = remove
+sp_func_def_paren = remove
+sp_inside_fparens = remove
+sp_inside_fparen = remove
+sp_inside_tparen = remove
+sp_after_tparen_close = remove
+sp_square_fparen = ignore
+sp_fparen_brace = force
+sp_fparen_dbrace = ignore
+sp_func_call_paren = remove
+sp_func_call_paren_empty = remove
+sp_func_call_user_paren = remove
+sp_func_class_paren = remove
+sp_return_paren = add
+sp_attribute_paren = ignore
+sp_defined_paren = remove
+sp_throw_paren = add
+sp_after_throw = ignore
+sp_catch_paren = add
+sp_version_paren = ignore
+sp_scope_paren = ignore
+sp_macro = ignore
+sp_macro_func = ignore
+sp_else_brace = force
+sp_brace_else = force
+sp_brace_typedef = add
+sp_catch_brace = force
+sp_brace_catch = force
+sp_finally_brace = force
+sp_brace_finally = force
+sp_try_brace = force
+sp_getset_brace = add
+sp_word_brace_init_lst = add
+sp_word_brace_ns = add
+sp_before_dc = remove
+sp_after_dc = remove
+sp_d_array_colon = ignore
+sp_not = remove
+sp_inv = remove
+sp_addr = remove
+sp_member = remove
+sp_deref = remove
+sp_sign = remove
+sp_incdec = remove
+sp_before_nl_cont = add
+sp_after_oc_scope = force
+sp_after_oc_colon = remove
+sp_before_oc_colon = remove
+sp_after_oc_dict_colon = force
+sp_before_oc_dict_colon = remove
+sp_after_send_oc_colon = remove
+sp_before_send_oc_colon = remove
+sp_after_oc_type = remove
+sp_after_oc_return_type = remove
+sp_after_oc_at_sel = remove
+sp_after_oc_at_sel_parens = force
+sp_inside_oc_at_sel_parens = remove
+sp_before_oc_block_caret = remove
+sp_after_oc_block_caret = remove
+sp_after_oc_msg_receiver = force
+sp_after_oc_property = force
+sp_cond_colon = add
+sp_cond_colon_before = ignore
+sp_cond_colon_after = ignore
+sp_cond_question = add
+sp_cond_question_before = ignore
+sp_cond_question_after = ignore
+sp_cond_ternary_short = ignore
+sp_case_label = force
+sp_range = ignore
+sp_after_for_colon = force
+sp_before_for_colon = force
+sp_extern_paren = ignore
+sp_cmt_cpp_start = ignore
+sp_cmt_cpp_doxygen = false
+sp_endif_cmt = ignore
+sp_after_new = force
+sp_between_new_paren = remove
+sp_before_tr_cmt = ignore
+sp_num_before_tr_cmt = 0
+sp_annotation_paren = remove
+align_keep_tabs = false
+align_with_tabs = false
+align_on_tabstop = false
+align_number_right = false
+align_keep_extra_space = false
+align_func_params = false
+align_same_func_call_params = false
+align_var_def_span = 0
+align_var_def_star_style = 0
+align_var_def_amp_style = 0
+align_var_def_thresh = 0
+align_var_def_gap = 0
+align_var_def_colon = false
+align_var_def_attribute = false
+align_var_def_inline = false
+align_assign_span = 0
+align_assign_thresh = 0
+align_enum_equ_span = 0
+align_enum_equ_thresh = 0
+align_var_struct_span = 0
+align_var_struct_thresh = 0
+align_var_struct_gap = 0
+align_struct_init_span = 0
+align_typedef_gap = 0
+align_typedef_span = 0
+align_typedef_func = 0
+align_typedef_star_style = 0
+align_typedef_amp_style = 0
+align_right_cmt_span = 0
+align_right_cmt_mix = false
+align_right_cmt_gap = 0
+align_right_cmt_at_col = 0
+align_func_proto_span = 0
+align_func_proto_gap = 0
+align_on_operator = false
+align_mix_var_proto = false
+align_single_line_func = false
+align_single_line_brace = false
+align_single_line_brace_gap = 0
+align_oc_msg_spec_span = 0
+align_nl_cont = 0
+align_pp_define_together = false
+align_pp_define_gap = 0
+align_pp_define_span = 0
+align_left_shift = false
+align_oc_msg_colon_span = 20
+align_oc_msg_colon_first = true
+align_oc_decl_colon = true
+nl_collapse_empty_body = false
+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_if_leave_one_liners = true
+nl_oc_msg_leave_one_liner = 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
+nl_assign_square = ignore
+nl_after_square_assign = ignore
+nl_var_def_blk_end_func_top = 0
+nl_typedef_blk_start = 0
+nl_typedef_blk_end = 0
+nl_typedef_blk_in = 0
+nl_var_def_blk_start = 0
+nl_var_def_blk_end = 0
+nl_var_def_blk_in = 0
+nl_fcall_brace = ignore
+nl_enum_brace = remove
+nl_struct_brace = remove
+nl_union_brace = remove
+nl_if_brace = remove
+nl_brace_else = remove
+nl_elseif_brace = ignore
+nl_else_brace = remove
+nl_else_if = remove
+nl_brace_finally = remove
+nl_finally_brace = remove
+nl_try_brace = remove
+nl_getset_brace = remove
+nl_for_brace = remove
+nl_catch_brace = remove
+nl_brace_catch = remove
+nl_brace_square = ignore
+nl_brace_fparen = ignore
+nl_while_brace = remove
+nl_scope_brace = ignore
+nl_unittest_brace = ignore
+nl_version_brace = ignore
+nl_using_brace = remove
+nl_brace_brace = ignore
+nl_do_brace = remove
+nl_brace_while = remove
+nl_switch_brace = remove
+nl_multi_line_cond = false
+nl_multi_line_define = false
+nl_before_case = false
+nl_before_throw = ignore
+nl_after_case = false
+nl_case_colon_brace = remove
+nl_namespace_brace = remove
+nl_template_class = ignore
+nl_class_brace = remove
+nl_class_init_args = ignore
+nl_constr_init_args = ignore
+nl_func_type_name = ignore
+nl_func_type_name_class = ignore
+nl_func_scope_name = ignore
+nl_func_proto_type_name = ignore
+nl_func_paren = ignore
+nl_func_def_paren = ignore
+nl_func_decl_start = ignore
+nl_func_def_start = ignore
+nl_func_decl_start_single = ignore
+nl_func_def_start_single = ignore
+nl_func_decl_args = ignore
+nl_func_def_args = ignore
+nl_func_decl_end = ignore
+nl_func_def_end = ignore
+nl_func_decl_end_single = ignore
+nl_func_def_end_single = ignore
+nl_func_decl_empty = ignore
+nl_func_def_empty = ignore
+nl_oc_msg_args = false
+nl_fdef_brace = remove
+nl_cpp_ldef_brace = ignore
+nl_return_expr = ignore
+nl_after_semicolon = false
+nl_paren_dbrace_open = ignore
+nl_after_brace_open = false
+nl_after_brace_open_cmt = false
+nl_after_vbrace_open = false
+nl_after_vbrace_open_empty = false
+nl_after_brace_close = false
+nl_after_vbrace_close = false
+nl_brace_struct_var = ignore
+nl_define_macro = false
+nl_squeeze_ifdef = false
+nl_before_if = ignore
+nl_after_if = ignore
+nl_before_for = ignore
+nl_after_for = ignore
+nl_before_while = ignore
+nl_after_while = ignore
+nl_before_switch = ignore
+nl_after_switch = ignore
+nl_before_do = ignore
+nl_after_do = ignore
+nl_ds_struct_enum_cmt = false
+nl_ds_struct_enum_close_brace = false
+nl_class_colon = ignore
+nl_constr_colon = ignore
+nl_create_if_one_liner = false
+nl_create_for_one_liner = false
+nl_create_while_one_liner = false
+pos_arith = ignore
+pos_assign = ignore
+pos_bool = ignore
+pos_compare = ignore
+pos_conditional = ignore
+pos_comma = ignore
+pos_class_comma = ignore
+pos_constr_comma = ignore
+pos_class_colon = ignore
+pos_constr_colon = ignore
+code_width = 0
+ls_for_split_full = false
+ls_func_split_full = false
+ls_code_width = false
+nl_max = 3
+nl_after_func_proto = 0
+nl_after_func_proto_group = 0
+nl_after_func_body = 2
+nl_after_func_body_class = 0
+nl_after_func_body_one_liner = 0
+nl_before_block_comment = 0
+nl_before_c_comment = 0
+nl_before_cpp_comment = 0
+nl_after_multiline_comment = false
+nl_after_label_colon = false
+nl_after_struct = 0
+nl_after_class = 0
+nl_before_access_spec = 0
+nl_after_access_spec = 0
+nl_comment_func_def = 0
+nl_after_try_catch_finally = 0
+nl_around_cs_property = 0
+nl_between_get_set = 0
+nl_property_brace = force
+eat_blanks_after_open_brace = true
+eat_blanks_before_close_brace = true
+nl_remove_extra_newlines = 0
+nl_before_return = false
+nl_after_return = false
+nl_after_annotation = ignore
+nl_between_annotation = ignore
+mod_full_brace_do = ignore
+mod_full_brace_for = ignore
+mod_full_brace_function = ignore
+mod_full_brace_if = ignore
+mod_full_brace_if_chain = 0
+mod_full_brace_nl = 0
+mod_full_brace_while = ignore
+mod_full_brace_using = ignore
+mod_paren_on_return = ignore
+mod_pawn_semicolon = false
+mod_full_paren_if_bool = false
+mod_remove_extra_semicolon = true
+mod_add_long_function_closebrace_comment = 0
+mod_add_long_namespace_closebrace_comment = 0
+mod_add_long_switch_closebrace_comment = 0
+mod_add_long_ifdef_endif_comment = 0
+mod_add_long_ifdef_else_comment = 0
+mod_sort_import = false
+mod_sort_using = false
+mod_sort_include = false
+mod_move_case_break = false
+mod_case_brace = ignore
+mod_remove_empty_return = true
+cmt_width = 0
+cmt_reflow_mode = 0
+cmt_convert_tab_to_spaces = false
+cmt_indent_multi = false
+cmt_c_group = false
+cmt_c_nl_start = false
+cmt_c_nl_end = false
+cmt_cpp_group = false
+cmt_cpp_nl_start = false
+cmt_cpp_nl_end = false
+cmt_cpp_to_c = false
+cmt_star_cont = false
+cmt_sp_before_star_cont = 0
+cmt_sp_after_star_cont = 0
+cmt_multi_check_last = false
+cmt_insert_file_header = ""
+cmt_insert_file_footer = ""
+cmt_insert_func_header = ""
+cmt_insert_class_header = ""
+cmt_insert_oc_msg_header = ""
+cmt_insert_before_preproc = false
+pp_indent = ignore
+pp_indent_at_level = false
+pp_indent_count = 1
+pp_space_after = ignore
+pp_space_count = 0
+pp_indent_region = 0
+pp_region_indent_code = false
+pp_indent_if = 0
+pp_if_indent_code = false
+pp_define_at_level = false
+pp_multiline_define_body_indent = 4
+
+# Add or remove newline between method declaration and '{'
+nl_oc_mdef_brace = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/align-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/align-1.cfg
index 720f003e..720f003e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/align-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/align-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/align_same_func_call_params-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/align_same_func_call_params-t.cfg
index d1496108..d1496108 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/align_same_func_call_params-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/align_same_func_call_params-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/attribute_specifier_seqs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/attribute_specifier_seqs.cfg
index 3a7f6096..3a7f6096 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/attribute_specifier_seqs.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/attribute_specifier_seqs.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/ben2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/ben2.cfg
index fd376dac..fd376dac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/ben2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/ben2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/ben_011.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/ben_011.cfg
index 6ade29ad..6ade29ad 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/ben_011.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/ben_011.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/ben_042.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/ben_042.cfg
index c98cdf54..c98cdf54 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/ben_042.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/ben_042.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/bool-pos-eol-force.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/bool-pos-eol-force.cfg
index 51044559..51044559 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/bool-pos-eol-force.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/bool-pos-eol-force.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/brace-allman.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/brace-allman.cfg
index 0e903302..0e903302 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/brace-allman.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/brace-allman.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_after_sparen.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/bug_637.cfg
index c9b9afbf..c9b9afbf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/c/sp_after_sparen.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/bug_637.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/bug_671.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/bug_671.cfg
index 00c0cf36..00c0cf36 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/bug_671.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/bug_671.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/clark.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/clark.cfg
index e3325392..e3325392 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/clark.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/clark.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/clark.rerun.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/clark.rerun.cfg
index 3b33c7d6..3b33c7d6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/clark.rerun.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/clark.rerun.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/class-header.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/class-header.h
index 32e68a34..32e68a34 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/class-header.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/class-header.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/cmt_insert-0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/cmt_insert-0.cfg
index 86d05f95..86d05f95 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/cmt_insert-0.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/cmt_insert-0.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/cmt_insert-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/cmt_insert-1.cfg
index 91dbf03a..91dbf03a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/cmt_insert-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/cmt_insert-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/d.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/d.cfg
new file mode 100644
index 00000000..953964d3
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/d.cfg
@@ -0,0 +1,51 @@
+sp_before_semi_for = remove
+sp_arith = force
+sp_assign = force
+sp_compare = force
+sp_inside_paren = remove
+sp_paren_paren = remove
+sp_before_ptr_star = force
+sp_between_ptr_star = remove
+sp_after_ptr_star = remove
+sp_after_ptr_star_func = remove
+sp_before_sparen = force
+sp_inside_rparen = remove
+sp_inside_sparen = remove
+sp_inside_for = remove
+sp_before_square = remove
+sp_before_squares = remove
+sp_after_comma = force
+sp_after_cast = remove
+sp_func_proto_paren = remove
+sp_func_def_paren = remove
+sp_inside_fparen = remove
+sp_func_call_paren = remove
+sp_range = force
+sp_while_paren_open = force
+indent_columns = 4
+indent_with_tabs = 0
+indent_class = true
+indent_case_brace = 4
+indent_label = 2
+nl_var_def_blk_end_func_top = 1
+nl_var_def_blk_end = 1
+nl_enum_brace = add
+nl_if_brace = add
+nl_else_brace = add
+nl_else_if = remove
+nl_for_brace = add
+nl_before_case = true
+nl_fdef_brace = add
+nl_after_brace_open = true
+eat_blanks_after_open_brace = true
+eat_blanks_before_close_brace = true
+nl_after_return = true
+align_var_def_span = 2
+align_var_def_star_style = 1
+align_assign_span = 1
+align_enum_equ_span = 4
+align_var_class_span = 2
+align_typedef_gap = 3
+align_typedef_span = 5
+align_typedef_star_style = 1
+align_right_cmt_span = 3
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/del_semicolon.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/del_semicolon.cfg
index 13434168..13434168 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/del_semicolon.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/del_semicolon.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/empty.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/empty.cfg
index e69de29b..e69de29b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/empty.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/empty.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/file-header.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/file-header.h
index 63fb5185..63fb5185 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/file-header.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/file-header.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/file_footer.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/file_footer.txt
index 7ce80bad..7ce80bad 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/file_footer.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/file_footer.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/file_header.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/file_header.txt
index 5431d0ff..5431d0ff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/file_header.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/file_header.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/func-def-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/func-def-1.cfg
index 14879a94..14879a94 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/func-def-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/func-def-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/func-def-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/func-def-2.cfg
index f9cf836c..f9cf836c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/func-def-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/func-def-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/func-def-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/func-def-3.cfg
index c868ae02..c868ae02 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/func-def-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/func-def-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/func-header.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/func-header.h
index e6f83943..e6f83943 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/func-header.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/func-header.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/func-header2.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/func-header2.h
index 52bdf970..52bdf970 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/func-header2.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/func-header2.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/function_header.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/function_header.txt
index c6508a02..c6508a02 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/function_header.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/function_header.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_columns-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_columns-3.cfg
index d49cfc22..d49cfc22 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_columns-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_columns-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_continue-8.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_continue-8.cfg
index 9bc69559..9bc69559 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_continue-8.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_continue-8.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_inside_ternary_operator.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_inside_ternary_operator.cfg
index ad5f98ed..ad5f98ed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_inside_ternary_operator.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_inside_ternary_operator.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_ternary_operator-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_ternary_operator-1.cfg
index 80ea4e7a..80ea4e7a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_ternary_operator-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_ternary_operator-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_ternary_operator-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_ternary_operator-2.cfg
index 1d5a91ab..1d5a91ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_ternary_operator-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_ternary_operator-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_var_def.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_var_def.cfg
index 4345ee72..4345ee72 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/indent_var_def.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/indent_var_def.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/issue_672.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/issue_672.cfg
index fb436753..fb436753 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/issue_672.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/issue_672.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/kw_subst.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/kw_subst.cfg
index 163d6f64..163d6f64 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/kw_subst.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/kw_subst.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/kw_subst2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/kw_subst2.cfg
index 7f531264..7f531264 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/kw_subst2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/kw_subst2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/kw_subst3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/kw_subst3.cfg
index 1b4018f6..1b4018f6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/kw_subst3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/kw_subst3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/kw_subst4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/kw_subst4.cfg
index a269bdf8..a269bdf8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/kw_subst4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/kw_subst4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/mod_case_brace_rm.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/mod_case_brace_rm.cfg
index 51252b69..51252b69 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/mod_case_brace_rm.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/mod_case_brace_rm.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/mod_full_brace_if_chain_only-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/mod_full_brace_if_chain_only-t.cfg
new file mode 100644
index 00000000..fef2fdfb
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/mod_full_brace_if_chain_only-t.cfg
@@ -0,0 +1,2 @@
+sp_sparen_brace = add
+mod_full_brace_if_chain_only = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/mod_paren_on_return-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/mod_paren_on_return-a.cfg
index 6e5a38ec..6e5a38ec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/mod_paren_on_return-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/mod_paren_on_return-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/mod_paren_on_return-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/mod_paren_on_return-r.cfg
index fb547f72..fb547f72 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/mod_paren_on_return-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/mod_paren_on_return-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/msg-header.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/msg-header.h
index 79a0919f..79a0919f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/msg-header.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/msg-header.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/nl_before_after.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/nl_before_after.cfg
index b80dafa0..b80dafa0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/nl_before_after.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/nl_before_after.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/nl_before_ignore_after_case.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/nl_before_ignore_after_case.cfg
index 6d1bbb7d..6d1bbb7d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/nl_before_ignore_after_case.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/nl_before_ignore_after_case.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/region-0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/region-0.cfg
index a837d86f..a837d86f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/region-0.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/region-0.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/region-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/region-1.cfg
index 48ae77f3..48ae77f3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/region-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/region-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/region-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/region-2.cfg
index 5beed445..5beed445 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/region-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/region-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/region-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/region-3.cfg
index 30a01c96..30a01c96 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/region-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/region-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sort_imports.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sort_imports.cfg
index 655a684f..655a684f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sort_imports.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sort_imports.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_after_cast.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_after_cast.cfg
index c16cc978..c16cc978 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_after_cast.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_after_cast.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_after_type-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_after_type-f.cfg
index b7fa74f4..b7fa74f4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_after_type-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_after_type-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_after_type-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_after_type-r.cfg
index 78a64119..78a64119 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_after_type-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_after_type-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_arith-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_arith-f.cfg
index 6cd2b6b0..6cd2b6b0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_arith-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_arith-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_before_byref-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_before_byref-r.cfg
index 2f5d1eff..2f5d1eff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_before_byref-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_before_byref-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_cmt_cpp_start-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_cmt_cpp_start-a.cfg
index d7e6adf1..d7e6adf1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_cmt_cpp_start-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_cmt_cpp_start-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_cmt_cpp_start_force.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_cmt_cpp_start_force.cfg
index e87c9b0d..e87c9b0d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_cmt_cpp_start_force.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_cmt_cpp_start_force.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_cparen_oparen-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_cparen_oparen-f.cfg
index c2af4d15..c2af4d15 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/sp_cparen_oparen-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_cparen_oparen-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_inside_fparen-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_inside_fparen-f.cfg
new file mode 100644
index 00000000..ef2f86d6
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/sp_inside_fparen-f.cfg
@@ -0,0 +1,2 @@
+sp_inside_fparen = force
+sp_inside_rparen = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/space_indent_columns-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/space_indent_columns-4.cfg
index f05c685f..f05c685f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/space_indent_columns-4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/space_indent_columns-4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/star_pos-0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/star_pos-0.cfg
index 3648d94a..3648d94a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/star_pos-0.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/star_pos-0.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/tde.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/tde.cfg
new file mode 100644
index 00000000..c7626042
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/tde.cfg
@@ -0,0 +1,849 @@
+newlines = lf # lf/crlf/cr/auto
+input_tab_size = 2 # unsigned number
+output_tab_size = 2 # unsigned number
+string_escape_char = 92 # unsigned number
+string_escape_char2 = 0 # unsigned number
+string_replace_tab_chars = false # true/false
+tok_split_gte = false # true/false
+disable_processing_nl_cont = false # true/false
+disable_processing_cmt = " *INDENT-OFF*" # string
+enable_processing_cmt = " *INDENT-ON*" # string
+enable_digraphs = true # true/false
+processing_cmt_as_regex = false # true/false
+utf8_bom = ignore # ignore/add/remove/force/not_defined
+utf8_byte = false # true/false
+utf8_force = false # true/false
+sp_arith = force # ignore/add/remove/force/not_defined
+sp_arith_additive = force # ignore/add/remove/force/not_defined
+sp_assign = force # ignore/add/remove/force/not_defined
+sp_cpp_lambda_assign = force # ignore/add/remove/force/not_defined
+sp_cpp_lambda_square_paren = remove # ignore/add/remove/force/not_defined
+sp_cpp_lambda_square_brace = remove # ignore/add/remove/force/not_defined
+sp_cpp_lambda_argument_list = ignore # ignore/add/remove/force/not_defined
+sp_cpp_lambda_paren_brace = force # ignore/add/remove/force/not_defined
+sp_cpp_lambda_fparen = force # ignore/add/remove/force/not_defined
+sp_assign_default = force # ignore/add/remove/force/not_defined
+sp_before_assign = force # ignore/add/remove/force/not_defined
+sp_after_assign = force # ignore/add/remove/force/not_defined
+sp_enum_brace = force # ignore/add/remove/force/not_defined
+sp_enum_paren = force # ignore/add/remove/force/not_defined
+sp_enum_assign = force # ignore/add/remove/force/not_defined
+sp_enum_before_assign = force # ignore/add/remove/force/not_defined
+sp_enum_after_assign = force # ignore/add/remove/force/not_defined
+sp_enum_colon = force # ignore/add/remove/force/not_defined
+sp_pp_concat = remove # ignore/add/remove/force/not_defined
+sp_pp_stringify = remove # ignore/add/remove/force/not_defined
+sp_before_pp_stringify = remove # ignore/add/remove/force/not_defined
+sp_bool = force # ignore/add/remove/force/not_defined
+sp_compare = force # ignore/add/remove/force/not_defined
+sp_inside_paren = remove # ignore/add/remove/force/not_defined
+sp_paren_paren = remove # ignore/add/remove/force/not_defined
+sp_cparen_oparen = remove # ignore/add/remove/force/not_defined
+sp_balance_nested_parens = false # true/false
+sp_paren_brace = force # ignore/add/remove/force/not_defined
+sp_brace_brace = remove # ignore/add/remove/force/not_defined
+sp_before_ptr_star = force # ignore/add/remove/force/not_defined
+sp_before_unnamed_ptr_star = remove # ignore/add/remove/force/not_defined
+sp_before_qualifier_ptr_star = ignore # ignore/add/remove/force/not_defined
+sp_before_operator_ptr_star = ignore # ignore/add/remove/force/not_defined
+sp_before_scope_ptr_star = ignore # ignore/add/remove/force/not_defined
+sp_before_global_scope_ptr_star = ignore # ignore/add/remove/force/not_defined
+sp_qualifier_unnamed_ptr_star = ignore # ignore/add/remove/force/not_defined
+sp_between_ptr_star = remove # ignore/add/remove/force/not_defined
+sp_between_ptr_ref = remove # ignore/add/remove/force/not_defined
+sp_after_ptr_star = remove # ignore/add/remove/force/not_defined
+sp_after_ptr_block_caret = remove # ignore/add/remove/force/not_defined
+sp_after_ptr_star_qualifier = remove # ignore/add/remove/force/not_defined
+sp_after_ptr_star_func = force # ignore/add/remove/force/not_defined
+sp_after_ptr_star_trailing = force # ignore/add/remove/force/not_defined
+sp_ptr_star_func_var = remove # ignore/add/remove/force/not_defined
+sp_ptr_star_func_type = remove # ignore/add/remove/force/not_defined
+sp_ptr_star_paren = force # ignore/add/remove/force/not_defined
+sp_before_ptr_star_func = remove # ignore/add/remove/force/not_defined
+sp_qualifier_ptr_star_func = remove # ignore/add/remove/force/not_defined
+sp_before_ptr_star_trailing = remove # ignore/add/remove/force/not_defined
+sp_qualifier_ptr_star_trailing = remove # ignore/add/remove/force/not_defined
+sp_before_byref = force # ignore/add/remove/force/not_defined
+sp_before_unnamed_byref = force # ignore/add/remove/force/not_defined
+sp_after_byref = remove # ignore/add/remove/force/not_defined
+sp_after_byref_func = force # ignore/add/remove/force/not_defined
+sp_before_byref_func = remove # ignore/add/remove/force/not_defined
+sp_byref_paren = ignore # ignore/add/remove/force/not_defined
+sp_after_type = force # ignore/add/remove/force/not_defined
+sp_after_decltype = remove # ignore/add/remove/force/not_defined
+sp_before_template_paren = remove # ignore/add/remove/force/not_defined
+sp_template_angle = remove # ignore/add/remove/force/not_defined
+sp_before_angle = remove # ignore/add/remove/force/not_defined
+sp_inside_angle = remove # ignore/add/remove/force/not_defined
+sp_inside_angle_empty = remove # ignore/add/remove/force/not_defined
+sp_angle_colon = force # ignore/add/remove/force/not_defined
+sp_after_angle = force # ignore/add/remove/force/not_defined
+sp_angle_paren = remove # ignore/add/remove/force/not_defined
+sp_angle_paren_empty = remove # ignore/add/remove/force/not_defined
+sp_angle_word = force # ignore/add/remove/force/not_defined
+sp_angle_shift = remove # ignore/add/remove/force/not_defined
+sp_permit_cpp11_shift = true # true/false
+sp_before_sparen = force # ignore/add/remove/force/not_defined
+sp_inside_sparen = remove # ignore/add/remove/force/not_defined
+sp_inside_sparen_open = remove # ignore/add/remove/force/not_defined
+sp_inside_sparen_close = remove # ignore/add/remove/force/not_defined
+sp_inside_for = remove # ignore/add/remove/force/not_defined
+sp_inside_for_open = remove # ignore/add/remove/force/not_defined
+sp_inside_for_close = remove # ignore/add/remove/force/not_defined
+sp_sparen_paren = remove # ignore/add/remove/force/not_defined
+sp_after_sparen = force # ignore/add/remove/force/not_defined
+sp_sparen_brace = force # ignore/add/remove/force/not_defined
+sp_do_brace_open = force # ignore/add/remove/force/not_defined
+sp_brace_close_while = force # ignore/add/remove/force/not_defined
+sp_while_paren_open = force # ignore/add/remove/force/not_defined
+sp_invariant_paren = force # ignore/add/remove/force/not_defined
+sp_after_invariant_paren = remove # ignore/add/remove/force/not_defined
+sp_special_semi = remove # ignore/add/remove/force/not_defined
+sp_before_semi = remove # ignore/add/remove/force/not_defined
+sp_before_semi_for = remove # ignore/add/remove/force/not_defined
+sp_before_semi_for_empty = remove # ignore/add/remove/force/not_defined
+sp_between_semi_for_empty = remove # ignore/add/remove/force/not_defined
+sp_after_semi = force # ignore/add/remove/force/not_defined
+sp_after_semi_for = force # ignore/add/remove/force/not_defined
+sp_after_semi_for_empty = force # ignore/add/remove/force/not_defined
+sp_before_square = remove # ignore/add/remove/force/not_defined
+sp_before_vardef_square = remove # ignore/add/remove/force/not_defined
+sp_before_square_asm_block = remove # ignore/add/remove/force/not_defined
+sp_before_squares = remove # ignore/add/remove/force/not_defined
+sp_cpp_before_struct_binding = remove # ignore/add/remove/force/not_defined
+sp_inside_square = remove # ignore/add/remove/force/not_defined
+sp_inside_square_empty = remove # ignore/add/remove/force/not_defined
+sp_inside_square_oc_array = remove # ignore/add/remove/force/not_defined
+sp_after_comma = force # ignore/add/remove/force/not_defined
+sp_before_comma = remove # ignore/add/remove/force/not_defined
+sp_after_mdatype_commas = force # ignore/add/remove/force/not_defined
+sp_before_mdatype_commas = force # ignore/add/remove/force/not_defined
+sp_between_mdatype_commas = force # ignore/add/remove/force/not_defined
+sp_paren_comma = force # ignore/add/remove/force/not_defined
+sp_type_colon = force # ignore/add/remove/force/not_defined
+sp_after_ellipsis = remove # ignore/add/remove/force/not_defined
+sp_before_ellipsis = force # ignore/add/remove/force/not_defined
+sp_type_ellipsis = force # ignore/add/remove/force/not_defined
+sp_ptr_type_ellipsis = remove # ignore/add/remove/force/not_defined
+sp_paren_ellipsis = remove # ignore/add/remove/force/not_defined
+sp_byref_ellipsis = remove # ignore/add/remove/force/not_defined
+sp_paren_qualifier = force # ignore/add/remove/force/not_defined
+sp_paren_noexcept = force # ignore/add/remove/force/not_defined
+sp_after_class_colon = force # ignore/add/remove/force/not_defined
+sp_before_class_colon = force # ignore/add/remove/force/not_defined
+sp_after_constr_colon = force # ignore/add/remove/force/not_defined
+sp_before_constr_colon = force # ignore/add/remove/force/not_defined
+sp_before_case_colon = remove # ignore/add/remove/force/not_defined
+sp_after_operator = remove # ignore/add/remove/force/not_defined
+sp_after_operator_sym = remove # ignore/add/remove/force/not_defined
+sp_after_operator_sym_empty = remove # ignore/add/remove/force/not_defined
+sp_after_cast = remove # ignore/add/remove/force/not_defined
+sp_inside_paren_cast = remove # ignore/add/remove/force/not_defined
+sp_cpp_cast_paren = remove # ignore/add/remove/force/not_defined
+sp_sizeof_paren = remove # ignore/add/remove/force/not_defined
+sp_sizeof_ellipsis = remove # ignore/add/remove/force/not_defined
+sp_sizeof_ellipsis_paren = remove # ignore/add/remove/force/not_defined
+sp_ellipsis_parameter_pack = remove # ignore/add/remove/force/not_defined
+sp_parameter_pack_ellipsis = remove # ignore/add/remove/force/not_defined
+sp_decltype_paren = remove # ignore/add/remove/force/not_defined
+sp_after_tag = remove # ignore/add/remove/force/not_defined
+sp_inside_braces_enum = force # ignore/add/remove/force/not_defined
+sp_inside_braces_struct = remove # ignore/add/remove/force/not_defined
+sp_inside_braces_oc_dict = remove # ignore/add/remove/force/not_defined
+sp_after_type_brace_init_lst_open = force # ignore/add/remove/force/not_defined
+sp_before_type_brace_init_lst_close = force # ignore/add/remove/force/not_defined
+sp_inside_type_brace_init_lst = remove # ignore/add/remove/force/not_defined
+sp_inside_braces = add # ignore/add/remove/force/not_defined
+sp_inside_braces_empty = remove # ignore/add/remove/force/not_defined
+sp_trailing_return = remove # ignore/add/remove/force/not_defined
+sp_type_func = force # ignore/add/remove/force/not_defined
+sp_type_brace_init_lst = force # ignore/add/remove/force/not_defined
+sp_func_proto_paren = remove # ignore/add/remove/force/not_defined
+sp_func_proto_paren_empty = remove # ignore/add/remove/force/not_defined
+sp_func_type_paren = remove # ignore/add/remove/force/not_defined
+sp_func_def_paren = remove # ignore/add/remove/force/not_defined
+sp_func_def_paren_empty = remove # ignore/add/remove/force/not_defined
+sp_inside_fparens = remove # ignore/add/remove/force/not_defined
+sp_inside_fparen = remove # ignore/add/remove/force/not_defined
+sp_func_call_user_inside_rparen = remove # ignore/add/remove/force/not_defined
+sp_inside_rparens = remove # ignore/add/remove/force/not_defined
+sp_inside_rparen = remove # ignore/add/remove/force/not_defined
+sp_inside_tparen = remove # ignore/add/remove/force/not_defined
+sp_after_tparen_close = remove # ignore/add/remove/force/not_defined
+sp_square_fparen = remove # ignore/add/remove/force/not_defined
+sp_fparen_brace = force # ignore/add/remove/force/not_defined
+sp_fparen_brace_initializer = force # ignore/add/remove/force/not_defined
+sp_fparen_dbrace = force # ignore/add/remove/force/not_defined
+sp_func_call_paren = remove # ignore/add/remove/force/not_defined
+sp_func_call_paren_empty = remove # ignore/add/remove/force/not_defined
+sp_func_call_user_paren = remove # ignore/add/remove/force/not_defined
+sp_func_call_user_inside_fparen = remove # ignore/add/remove/force/not_defined
+sp_func_call_user_paren_paren = remove # ignore/add/remove/force/not_defined
+sp_func_class_paren = remove # ignore/add/remove/force/not_defined
+sp_func_class_paren_empty = remove # ignore/add/remove/force/not_defined
+sp_return = force # ignore/add/remove/force/not_defined
+sp_return_paren = force # ignore/add/remove/force/not_defined
+sp_return_brace = force # ignore/add/remove/force/not_defined
+sp_attribute_paren = remove # ignore/add/remove/force/not_defined
+sp_defined_paren = force # ignore/add/remove/force/not_defined
+sp_throw_paren = force # ignore/add/remove/force/not_defined
+sp_after_throw = force # ignore/add/remove/force/not_defined
+sp_catch_paren = force # ignore/add/remove/force/not_defined
+sp_oc_catch_paren = force # ignore/add/remove/force/not_defined
+sp_before_oc_proto_list = force # ignore/add/remove/force/not_defined
+sp_oc_classname_paren = remove # ignore/add/remove/force/not_defined
+sp_version_paren = ignore # ignore/add/remove/force/not_defined
+sp_scope_paren = ignore # ignore/add/remove/force/not_defined
+sp_super_paren = remove # ignore/add/remove/force/not_defined
+sp_this_paren = remove # ignore/add/remove/force/not_defined
+sp_macro = force # ignore/add/remove/force/not_defined
+sp_macro_func = force # ignore/add/remove/force/not_defined
+sp_else_brace = force # ignore/add/remove/force/not_defined
+sp_brace_else = force # ignore/add/remove/force/not_defined
+sp_brace_typedef = force # ignore/add/remove/force/not_defined
+sp_catch_brace = force # ignore/add/remove/force/not_defined
+sp_oc_catch_brace = force # ignore/add/remove/force/not_defined
+sp_brace_catch = force # ignore/add/remove/force/not_defined
+sp_oc_brace_catch = force # ignore/add/remove/force/not_defined
+sp_finally_brace = force # ignore/add/remove/force/not_defined
+sp_brace_finally = force # ignore/add/remove/force/not_defined
+sp_try_brace = force # ignore/add/remove/force/not_defined
+sp_getset_brace = force # ignore/add/remove/force/not_defined
+sp_word_brace_init_lst = remove # ignore/add/remove/force/not_defined
+sp_word_brace_ns = force # ignore/add/remove/force/not_defined
+sp_before_dc = remove # ignore/add/remove/force/not_defined
+sp_after_dc = remove # ignore/add/remove/force/not_defined
+sp_d_array_colon = force # ignore/add/remove/force/not_defined
+sp_not = remove # ignore/add/remove/force/not_defined
+sp_not_not = remove # ignore/add/remove/force/not_defined
+sp_inv = remove # ignore/add/remove/force/not_defined
+sp_addr = remove # ignore/add/remove/force/not_defined
+sp_member = remove # ignore/add/remove/force/not_defined
+sp_deref = remove # ignore/add/remove/force/not_defined
+sp_sign = remove # ignore/add/remove/force/not_defined
+sp_incdec = remove # ignore/add/remove/force/not_defined
+sp_before_nl_cont = force # ignore/add/remove/force/not_defined
+sp_after_oc_scope = ignore # ignore/add/remove/force/not_defined
+sp_after_oc_colon = ignore # ignore/add/remove/force/not_defined
+sp_before_oc_colon = ignore # ignore/add/remove/force/not_defined
+sp_after_oc_dict_colon = ignore # ignore/add/remove/force/not_defined
+sp_before_oc_dict_colon = ignore # ignore/add/remove/force/not_defined
+sp_after_send_oc_colon = ignore # ignore/add/remove/force/not_defined
+sp_before_send_oc_colon = ignore # ignore/add/remove/force/not_defined
+sp_after_oc_type = ignore # ignore/add/remove/force/not_defined
+sp_after_oc_return_type = ignore # ignore/add/remove/force/not_defined
+sp_after_oc_at_sel = ignore # ignore/add/remove/force/not_defined
+sp_after_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined
+sp_inside_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined
+sp_before_oc_block_caret = ignore # ignore/add/remove/force/not_defined
+sp_after_oc_block_caret = ignore # ignore/add/remove/force/not_defined
+sp_after_oc_msg_receiver = ignore # ignore/add/remove/force/not_defined
+sp_after_oc_property = ignore # ignore/add/remove/force/not_defined
+sp_after_oc_synchronized = ignore # ignore/add/remove/force/not_defined
+sp_cond_colon = force # ignore/add/remove/force/not_defined
+sp_cond_colon_before = force # ignore/add/remove/force/not_defined
+sp_cond_colon_after = force # ignore/add/remove/force/not_defined
+sp_cond_question = force # ignore/add/remove/force/not_defined
+sp_cond_question_before = force # ignore/add/remove/force/not_defined
+sp_cond_question_after = force # ignore/add/remove/force/not_defined
+sp_cond_ternary_short = force # ignore/add/remove/force/not_defined
+sp_case_label = force # ignore/add/remove/force/not_defined
+sp_range = ignore # ignore/add/remove/force/not_defined
+sp_after_for_colon = force # ignore/add/remove/force/not_defined
+sp_before_for_colon = force # ignore/add/remove/force/not_defined
+sp_extern_paren = ignore # ignore/add/remove/force/not_defined
+sp_cmt_cpp_start = ignore # ignore/add/remove/force/not_defined
+sp_cmt_cpp_pvs = false # true/false
+sp_cmt_cpp_lint = false # true/false
+sp_cmt_cpp_region = ignore # ignore/add/remove/force/not_defined
+sp_cmt_cpp_doxygen = false # true/false
+sp_cmt_cpp_qttr = false # true/false
+sp_endif_cmt = force # ignore/add/remove/force/not_defined
+sp_after_new = force # ignore/add/remove/force/not_defined
+sp_between_new_paren = remove # ignore/add/remove/force/not_defined
+sp_after_newop_paren = force # ignore/add/remove/force/not_defined
+sp_inside_newop_paren = remove # ignore/add/remove/force/not_defined
+sp_inside_newop_paren_open = remove # ignore/add/remove/force/not_defined
+sp_inside_newop_paren_close = remove # ignore/add/remove/force/not_defined
+sp_before_tr_cmt = force # ignore/add/remove/force/not_defined
+sp_num_before_tr_cmt = 0 # unsigned number
+sp_before_emb_cmt = force # ignore/add/remove/force/not_defined
+sp_num_before_emb_cmt = 0 # unsigned number
+sp_after_emb_cmt = ignore # ignore/add/remove/force/not_defined
+sp_num_after_emb_cmt = 0 # unsigned number
+sp_annotation_paren = force # ignore/add/remove/force/not_defined
+sp_skip_vbrace_tokens = false # true/false
+sp_after_noexcept = remove # ignore/add/remove/force/not_defined
+sp_vala_after_translation = remove # ignore/add/remove/force/not_defined
+sp_before_bit_colon = force # ignore/add/remove/force/not_defined
+sp_after_bit_colon = force # ignore/add/remove/force/not_defined
+force_tab_after_define = false # true/false
+indent_columns = 2 # unsigned number
+indent_ignore_first_continue = false # true/false
+indent_continue = -8 # number
+indent_continue_class_head = 0 # unsigned number
+indent_single_newlines = false # true/false
+indent_param = 0 # unsigned number
+indent_with_tabs = 1 # unsigned number
+indent_cmt_with_tabs = false # true/false
+indent_align_string = true # true/false
+indent_xml_string = 0 # unsigned number
+indent_brace = 0 # unsigned number
+indent_braces = false # true/false
+indent_braces_no_func = false # true/false
+indent_braces_no_class = false # true/false
+indent_braces_no_struct = false # true/false
+indent_brace_parent = false # true/false
+indent_paren_open_brace = false # true/false
+indent_cs_delegate_brace = false # true/false
+indent_cs_delegate_body = false # true/false
+indent_namespace = true # true/false
+indent_namespace_single_indent = false # true/false
+indent_namespace_level = 0 # unsigned number
+indent_namespace_limit = 0 # unsigned number
+indent_namespace_inner_only = false # true/false
+indent_extern = true # true/false
+indent_class = true # true/false
+indent_ignore_before_class_colon = false # true/false
+indent_before_class_colon = 0 # number
+indent_class_colon = true # true/false
+indent_class_on_colon = false # true/false
+indent_ignore_before_constr_colon = false # true/false
+indent_constr_colon = true # true/false
+indent_ctor_init_leading = 2 # unsigned number
+indent_ctor_init_following = 2 # unsigned number
+indent_ctor_init = 2 # number
+indent_else_if = false # true/false
+indent_var_def_blk = 0 # number
+indent_var_def_cont = false # true/false
+indent_shift = 0 # number
+indent_func_def_force_col1 = false # true/false
+indent_func_call_param = false # true/false
+indent_func_def_param = false # true/false
+indent_func_def_param_paren_pos_threshold = 0 # unsigned number
+indent_func_proto_param = false # true/false
+indent_func_class_param = false # true/false
+indent_func_ctor_var_param = false # true/false
+indent_template_param = false # true/false
+indent_func_param_double = false # true/false
+indent_func_const = 0 # unsigned number
+indent_func_throw = 0 # unsigned number
+indent_macro_brace = true # true/false
+indent_member = 0 # unsigned number
+indent_member_single = false # true/false
+indent_single_line_comments_before = 0 # unsigned number
+indent_single_line_comments_after = 0 # unsigned number
+indent_sparen_extra = 0 # number
+indent_relative_single_line_comments = false # true/false
+indent_switch_case = 2 # unsigned number
+indent_switch_body = 0 # unsigned number
+indent_ignore_case_brace = false # true/false
+indent_case_brace = 0 # number
+indent_switch_break_with_case = false # true/false
+indent_switch_pp = true # true/false
+indent_case_shift = 0 # unsigned number
+indent_case_comment = true # true/false
+indent_comment = true # true/false
+indent_col1_comment = true # true/false
+indent_col1_multi_string_literal = true # true/false
+indent_comment_align_thresh = 3 # unsigned number
+indent_ignore_label = false # true/false
+indent_label = 1 # number
+indent_access_spec = 0 # number
+indent_access_spec_body = true # true/false
+indent_paren_nl = false # true/false
+indent_paren_close = 0 # number
+indent_paren_after_func_def = false # true/false
+indent_paren_after_func_decl = false # true/false
+indent_paren_after_func_call = false # true/false
+indent_comma_brace = 0 # number
+indent_comma_paren = 0 # number
+indent_bool_paren = 0 # number
+indent_ignore_bool = false # true/false
+indent_ignore_arith = false # true/false
+indent_semicolon_for_paren = false # true/false
+indent_ignore_semicolon = false # true/false
+indent_first_bool_expr = false # true/false
+indent_first_for_expr = false # true/false
+indent_square_nl = false # true/false
+indent_preserve_sql = false # true/false
+indent_ignore_assign = false # true/false
+indent_align_assign = true # true/false
+indent_off_after_assign = false # true/false
+indent_align_paren = true # true/false
+indent_oc_inside_msg_sel = false # true/false
+indent_oc_block = false # true/false
+indent_oc_block_msg = 0 # unsigned number
+indent_oc_msg_colon = 0 # unsigned number
+indent_oc_msg_prioritize_first_colon = true # true/false
+indent_oc_block_msg_xcode_style = false # true/false
+indent_oc_block_msg_from_keyword = false # true/false
+indent_oc_block_msg_from_colon = false # true/false
+indent_oc_block_msg_from_caret = false # true/false
+indent_oc_block_msg_from_brace = false # true/false
+indent_min_vbrace_open = 0 # unsigned number
+indent_vbrace_open_on_tabstop = false # true/false
+indent_token_after_brace = true # true/false
+indent_cpp_lambda_body = true # true/false
+indent_compound_literal_return = false # true/false
+indent_using_block = true # true/false
+indent_ternary_operator = 2 # unsigned number
+indent_inside_ternary_operator = false # true/false
+indent_off_after_return = false # true/false
+indent_off_after_return_new = false # true/false
+indent_single_after_return = false # true/false
+indent_ignore_asm_block = false # true/false
+donot_indent_func_def_close_paren = true # true/false
+nl_collapse_empty_body = false # true/false
+nl_assign_leave_one_liners = true # true/false
+nl_class_leave_one_liners = false # true/false
+nl_enum_leave_one_liners = false # true/false
+nl_getset_leave_one_liners = false # true/false
+nl_cs_property_leave_one_liners = false # true/false
+nl_func_leave_one_liners = false # true/false
+nl_cpp_lambda_leave_one_liners = false # true/false
+nl_if_leave_one_liners = false # true/false
+nl_while_leave_one_liners = false # true/false
+nl_do_leave_one_liners = false # true/false
+nl_for_leave_one_liners = false # true/false
+nl_oc_msg_leave_one_liner = false # true/false
+nl_oc_mdef_brace = ignore # ignore/add/remove/force/not_defined
+nl_oc_block_brace = ignore # ignore/add/remove/force/not_defined
+nl_oc_before_interface = ignore # ignore/add/remove/force/not_defined
+nl_oc_before_implementation = ignore # ignore/add/remove/force/not_defined
+nl_oc_before_end = ignore # ignore/add/remove/force/not_defined
+nl_oc_interface_brace = ignore # ignore/add/remove/force/not_defined
+nl_oc_implementation_brace = ignore # ignore/add/remove/force/not_defined
+nl_start_of_file = remove # ignore/add/remove/force/not_defined
+nl_start_of_file_min = 0 # unsigned number
+nl_end_of_file = force # ignore/add/remove/force/not_defined
+nl_end_of_file_min = 1 # unsigned number
+nl_assign_brace = ignore # ignore/add/remove/force/not_defined
+nl_assign_square = ignore # ignore/add/remove/force/not_defined
+nl_tsquare_brace = remove # ignore/add/remove/force/not_defined
+nl_after_square_assign = ignore # ignore/add/remove/force/not_defined
+nl_fcall_brace = force # ignore/add/remove/force/not_defined
+nl_enum_brace = force # ignore/add/remove/force/not_defined
+nl_enum_class = force # ignore/add/remove/force/not_defined
+nl_enum_class_identifier = force # ignore/add/remove/force/not_defined
+nl_enum_identifier_colon = force # ignore/add/remove/force/not_defined
+nl_enum_colon_type = force # ignore/add/remove/force/not_defined
+nl_struct_brace = force # ignore/add/remove/force/not_defined
+nl_union_brace = force # ignore/add/remove/force/not_defined
+nl_if_brace = force # ignore/add/remove/force/not_defined
+nl_brace_else = force # ignore/add/remove/force/not_defined
+nl_elseif_brace = force # ignore/add/remove/force/not_defined
+nl_else_brace = force # ignore/add/remove/force/not_defined
+nl_else_if = remove # ignore/add/remove/force/not_defined
+nl_before_opening_brace_func_class_def = force # ignore/add/remove/force/not_defined
+nl_before_if_closing_paren = remove # ignore/add/remove/force/not_defined
+nl_brace_finally = force # ignore/add/remove/force/not_defined
+nl_finally_brace = force # ignore/add/remove/force/not_defined
+nl_try_brace = force # ignore/add/remove/force/not_defined
+nl_getset_brace = force # ignore/add/remove/force/not_defined
+nl_for_brace = force # ignore/add/remove/force/not_defined
+nl_catch_brace = force # ignore/add/remove/force/not_defined
+nl_oc_catch_brace = force # ignore/add/remove/force/not_defined
+nl_brace_catch = force # ignore/add/remove/force/not_defined
+nl_oc_brace_catch = force # ignore/add/remove/force/not_defined
+nl_brace_square = remove # ignore/add/remove/force/not_defined
+nl_brace_fparen = remove # ignore/add/remove/force/not_defined
+nl_while_brace = force # ignore/add/remove/force/not_defined
+nl_scope_brace = ignore # ignore/add/remove/force/not_defined
+nl_unittest_brace = ignore # ignore/add/remove/force/not_defined
+nl_version_brace = ignore # ignore/add/remove/force/not_defined
+nl_using_brace = force # ignore/add/remove/force/not_defined
+nl_brace_brace = ignore # ignore/add/remove/force/not_defined
+nl_do_brace = force # ignore/add/remove/force/not_defined
+nl_brace_while = force # ignore/add/remove/force/not_defined
+nl_switch_brace = force # ignore/add/remove/force/not_defined
+nl_synchronized_brace = force # ignore/add/remove/force/not_defined
+nl_multi_line_cond = true # true/false
+nl_multi_line_sparen_open = remove # ignore/add/remove/force/not_defined
+nl_multi_line_sparen_close = remove # ignore/add/remove/force/not_defined
+nl_multi_line_define = true # true/false
+nl_before_case = true # true/false
+nl_after_case = true # true/false
+nl_case_colon_brace = force # ignore/add/remove/force/not_defined
+nl_before_throw = remove # ignore/add/remove/force/not_defined
+nl_namespace_brace = force # ignore/add/remove/force/not_defined
+nl_template_class = force # ignore/add/remove/force/not_defined
+nl_template_class_decl = force # ignore/add/remove/force/not_defined
+nl_template_class_decl_special = force # ignore/add/remove/force/not_defined
+nl_template_class_def = force # ignore/add/remove/force/not_defined
+nl_template_class_def_special = force # ignore/add/remove/force/not_defined
+nl_template_func = force # ignore/add/remove/force/not_defined
+nl_template_func_decl = force # ignore/add/remove/force/not_defined
+nl_template_func_decl_special = force # ignore/add/remove/force/not_defined
+nl_template_func_def = force # ignore/add/remove/force/not_defined
+nl_template_func_def_special = remove # ignore/add/remove/force/not_defined
+nl_template_var = remove # ignore/add/remove/force/not_defined
+nl_template_using = remove # ignore/add/remove/force/not_defined
+nl_class_brace = force # ignore/add/remove/force/not_defined
+nl_class_init_args = remove # ignore/add/remove/force/not_defined
+nl_constr_init_args = remove # ignore/add/remove/force/not_defined
+nl_enum_own_lines = force # ignore/add/remove/force/not_defined
+nl_func_type_name = remove # ignore/add/remove/force/not_defined
+nl_func_type_name_class = remove # ignore/add/remove/force/not_defined
+nl_func_class_scope = remove # ignore/add/remove/force/not_defined
+nl_func_scope_name = remove # ignore/add/remove/force/not_defined
+nl_func_proto_type_name = remove # ignore/add/remove/force/not_defined
+nl_func_paren = remove # ignore/add/remove/force/not_defined
+nl_func_paren_empty = remove # ignore/add/remove/force/not_defined
+nl_func_def_paren = remove # ignore/add/remove/force/not_defined
+nl_func_def_paren_empty = remove # ignore/add/remove/force/not_defined
+nl_func_call_paren = remove # ignore/add/remove/force/not_defined
+nl_func_call_paren_empty = remove # ignore/add/remove/force/not_defined
+nl_func_decl_start = remove # ignore/add/remove/force/not_defined
+nl_func_def_start = remove # ignore/add/remove/force/not_defined
+nl_func_decl_start_single = remove # ignore/add/remove/force/not_defined
+nl_func_def_start_single = remove # ignore/add/remove/force/not_defined
+nl_func_decl_start_multi_line = false # true/false
+nl_func_def_start_multi_line = false # true/false
+nl_func_decl_args = remove # ignore/add/remove/force/not_defined
+nl_func_def_args = remove # ignore/add/remove/force/not_defined
+nl_func_call_args = remove # ignore/add/remove/force/not_defined
+nl_func_decl_args_multi_line = false # true/false
+nl_func_def_args_multi_line = false # true/false
+nl_func_decl_end = remove # ignore/add/remove/force/not_defined
+nl_func_def_end = remove # ignore/add/remove/force/not_defined
+nl_func_decl_end_single = remove # ignore/add/remove/force/not_defined
+nl_func_def_end_single = remove # ignore/add/remove/force/not_defined
+nl_func_decl_end_multi_line = false # true/false
+nl_func_def_end_multi_line = false # true/false
+nl_func_decl_empty = remove # ignore/add/remove/force/not_defined
+nl_func_def_empty = remove # ignore/add/remove/force/not_defined
+nl_func_call_empty = remove # ignore/add/remove/force/not_defined
+nl_func_call_start = remove # ignore/add/remove/force/not_defined
+nl_func_call_end = remove # ignore/add/remove/force/not_defined
+nl_func_call_start_multi_line = false # true/false
+nl_func_call_args_multi_line = false # true/false
+nl_func_call_end_multi_line = false # true/false
+nl_func_call_args_multi_line_ignore_closures = true # true/false
+nl_template_start = false # true/false
+nl_template_args = false # true/false
+nl_template_end = false # true/false
+nl_oc_msg_args = false # true/false
+nl_oc_msg_args_min_params = 0 # unsigned number
+nl_oc_msg_args_max_code_width = 0 # unsigned number
+nl_fdef_brace = force # ignore/add/remove/force/not_defined
+nl_fdef_brace_cond = force # ignore/add/remove/force/not_defined
+nl_cpp_ldef_brace = remove # ignore/add/remove/force/not_defined
+nl_return_expr = remove # ignore/add/remove/force/not_defined
+nl_throw_expr = remove # ignore/add/remove/force/not_defined
+nl_after_semicolon = true # true/false
+nl_paren_dbrace_open = remove # ignore/add/remove/force/not_defined
+nl_type_brace_init_lst = force # ignore/add/remove/force/not_defined
+nl_type_brace_init_lst_open = force # ignore/add/remove/force/not_defined
+nl_type_brace_init_lst_close = force # ignore/add/remove/force/not_defined
+nl_before_brace_open = true # true/false
+nl_after_brace_open = true # true/false
+nl_after_brace_open_cmt = true # true/false
+nl_after_vbrace_open = true # true/false
+nl_after_vbrace_open_empty = true # true/false
+nl_after_brace_close = true # true/false
+nl_after_vbrace_close = true # true/false
+nl_brace_struct_var = remove # ignore/add/remove/force/not_defined
+nl_define_macro = false # true/false
+nl_squeeze_paren_close = false # true/false
+nl_squeeze_ifdef = false # true/false
+nl_squeeze_ifdef_top_level = false # true/false
+nl_before_if = ignore # ignore/add/remove/force/not_defined
+nl_after_if = ignore # ignore/add/remove/force/not_defined
+nl_before_for = ignore # ignore/add/remove/force/not_defined
+nl_after_for = ignore # ignore/add/remove/force/not_defined
+nl_before_while = ignore # ignore/add/remove/force/not_defined
+nl_after_while = ignore # ignore/add/remove/force/not_defined
+nl_before_switch = ignore # ignore/add/remove/force/not_defined
+nl_after_switch = ignore # ignore/add/remove/force/not_defined
+nl_before_synchronized = ignore # ignore/add/remove/force/not_defined
+nl_after_synchronized = ignore # ignore/add/remove/force/not_defined
+nl_before_do = ignore # ignore/add/remove/force/not_defined
+nl_after_do = ignore # ignore/add/remove/force/not_defined
+nl_before_ignore_after_case = false # true/false
+nl_before_return = false # true/false
+nl_after_return = false # true/false
+nl_before_member = remove # ignore/add/remove/force/not_defined
+nl_after_member = remove # ignore/add/remove/force/not_defined
+nl_ds_struct_enum_cmt = false # true/false
+nl_ds_struct_enum_close_brace = true # true/false
+nl_class_colon = remove # ignore/add/remove/force/not_defined
+nl_constr_colon = force # ignore/add/remove/force/not_defined
+nl_namespace_two_to_one_liner = false # true/false
+nl_create_if_one_liner = false # true/false
+nl_create_for_one_liner = false # true/false
+nl_create_while_one_liner = false # true/false
+nl_create_func_def_one_liner = false # true/false
+nl_create_list_one_liner = false # true/false
+nl_split_if_one_liner = true # true/false
+nl_split_for_one_liner = true # true/false
+nl_split_while_one_liner = true # true/false
+donot_add_nl_before_cpp_comment = true # true/false
+nl_max = 3 # unsigned number
+nl_max_blank_in_func = 2 # unsigned number
+nl_inside_empty_func = 1 # unsigned number
+nl_before_func_body_proto = 0 # unsigned number
+nl_before_func_body_def = 2 # unsigned number
+nl_before_func_class_proto = 0 # unsigned number
+nl_before_func_class_def = 0 # unsigned number
+nl_after_func_proto = 0 # unsigned number
+nl_after_func_proto_group = 2 # unsigned number
+nl_after_func_class_proto = 0 # unsigned number
+nl_after_func_class_proto_group = 2 # unsigned number
+nl_class_leave_one_liner_groups = false # true/false
+nl_after_func_body = 2 # unsigned number
+nl_min_after_func_body = 0 # unsigned number
+nl_max_after_func_body = 0 # unsigned number
+nl_after_func_body_class = 0 # unsigned number
+nl_after_func_body_one_liner = 0 # unsigned number
+nl_typedef_blk_start = 0 # unsigned number
+nl_typedef_blk_end = 0 # unsigned number
+nl_typedef_blk_in = 0 # unsigned number
+nl_var_def_blk_end_func_top = 0 # unsigned number
+nl_var_def_blk_start = 0 # unsigned number
+nl_var_def_blk_end = 0 # unsigned number
+nl_var_def_blk_in = 0 # unsigned number
+nl_before_block_comment = 0 # unsigned number
+nl_before_c_comment = 0 # unsigned number
+nl_before_cpp_comment = 0 # unsigned number
+nl_after_multiline_comment = false # true/false
+nl_after_label_colon = true # true/false
+nl_before_struct = 0 # unsigned number
+nl_after_struct = 2 # unsigned number
+nl_before_class = 2 # unsigned number
+nl_after_class = 2 # unsigned number
+nl_before_namespace = 0 # unsigned number
+nl_inside_namespace = 0 # unsigned number
+nl_after_namespace = 2 # unsigned number
+nl_before_access_spec = 2 # unsigned number
+nl_after_access_spec = 1 # unsigned number
+nl_comment_func_def = 0 # unsigned number
+nl_after_try_catch_finally = 0 # unsigned number
+nl_around_cs_property = 0 # unsigned number
+nl_between_get_set = 0 # unsigned number
+nl_property_brace = remove # ignore/add/remove/force/not_defined
+eat_blanks_after_open_brace = true # true/false
+eat_blanks_before_close_brace = true # true/false
+nl_remove_extra_newlines = 0 # unsigned number
+nl_after_annotation = add # ignore/add/remove/force/not_defined
+nl_between_annotation = add # ignore/add/remove/force/not_defined
+nl_before_whole_file_ifdef = 0 # unsigned number
+nl_after_whole_file_ifdef = 0 # unsigned number
+nl_before_whole_file_endif = 0 # unsigned number
+nl_after_whole_file_endif = 0 # unsigned number
+pos_arith = join # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+pos_assign = join # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+pos_bool = trail # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+pos_compare = join # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+pos_conditional = trail # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+pos_comma = trail # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+pos_enum_comma = trail # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+pos_class_comma = trail # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+pos_constr_comma = trail # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+pos_class_colon = trail # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+pos_constr_colon = trail # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+pos_shift = join # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+code_width = 100 # unsigned number
+ls_for_split_full = false # true/false
+ls_func_split_full = false # true/false
+ls_code_width = false # true/false
+align_keep_tabs = false # true/false
+align_with_tabs = false # true/false
+align_on_tabstop = false # true/false
+align_number_right = true # true/false
+align_keep_extra_space = false # true/false
+align_func_params = false # true/false
+align_func_params_span = 0 # unsigned number
+align_func_params_thresh = 0 # number
+align_func_params_gap = 0 # unsigned number
+align_constr_value_span = 0 # unsigned number
+align_constr_value_thresh = 0 # number
+align_constr_value_gap = 0 # unsigned number
+align_same_func_call_params = false # true/false
+align_same_func_call_params_span = 0 # unsigned number
+align_same_func_call_params_thresh = 0 # number
+align_var_def_span = 1 # unsigned number
+align_var_def_star_style = 2 # unsigned number
+align_var_def_amp_style = 2 # unsigned number
+align_var_def_thresh = 6 # number
+align_var_def_gap = 0 # unsigned number
+align_var_def_colon = true # true/false
+align_var_def_colon_gap = 0 # unsigned number
+align_var_def_attribute = false # true/false
+align_var_def_inline = false # true/false
+align_assign_span = 1 # unsigned number
+align_assign_func_proto_span = 0 # unsigned number
+align_assign_thresh = 6 # number
+align_assign_on_multi_var_defs = true # true/false
+align_braced_init_list_span = 1 # unsigned number
+align_braced_init_list_thresh = 20 # number
+align_assign_decl_func = 0 # unsigned number
+align_enum_equ_span = 1 # unsigned number
+align_enum_equ_thresh = 20 # number
+align_var_class_span = 1 # unsigned number
+align_var_class_thresh = 10 # number
+align_var_class_gap = 0 # unsigned number
+align_var_struct_span = 1 # unsigned number
+align_var_struct_thresh = 10 # number
+align_var_struct_gap = 0 # unsigned number
+align_struct_init_span = 1 # unsigned number
+align_typedef_span = 1 # unsigned number
+align_typedef_gap = 0 # unsigned number
+align_typedef_func = 2 # unsigned number
+align_typedef_star_style = 2 # unsigned number
+align_typedef_amp_style = 2 # unsigned number
+align_right_cmt_span = 2 # unsigned number
+align_right_cmt_gap = 0 # unsigned number
+align_right_cmt_mix = false # true/false
+align_right_cmt_same_level = false # true/false
+align_right_cmt_at_col = 0 # unsigned number
+align_func_proto_span = 1 # unsigned number
+align_func_proto_span_ignore_cont_lines = true # true/false
+align_func_proto_star_style = 0 # unsigned number
+align_func_proto_amp_style = 0 # unsigned number
+align_func_proto_thresh = 0 # number
+align_func_proto_gap = 1 # unsigned number
+align_on_operator = true # true/false
+align_mix_var_proto = false # true/false
+align_single_line_func = false # true/false
+align_single_line_brace = false # true/false
+align_single_line_brace_gap = 0 # unsigned number
+align_oc_msg_spec_span = 0 # unsigned number
+align_nl_cont = 1 #number
+align_nl_cont_spaces = 1 # unsigned number
+align_pp_define_together = true # true/false
+align_pp_define_span = 1 # unsigned number
+align_pp_define_gap = 0 # unsigned number
+align_left_shift = true # true/false
+align_eigen_comma_init = false # true/false
+align_asm_colon = false # true/false
+align_oc_msg_colon_span = 0 # unsigned number
+align_oc_msg_colon_first = false # true/false
+align_oc_decl_colon = false # true/false
+align_oc_msg_colon_xcode_like = false # true/false
+cmt_width = 100 # unsigned number
+cmt_reflow_mode = 0 # unsigned number
+cmt_reflow_fold_regex_file = "" # string
+cmt_reflow_indent_to_paragraph_start = false # true/false
+cmt_convert_tab_to_spaces = false # true/false
+cmt_indent_multi = false # true/false
+cmt_align_doxygen_javadoc_tags = false # true/false
+cmt_sp_before_doxygen_javadoc_tags = 1 # unsigned number
+cmt_trailing_single_line_c_to_cpp = true # true/false
+cmt_c_group = false # true/false
+cmt_c_nl_start = false # true/false
+cmt_c_nl_end = false # true/false
+cmt_cpp_to_c = false # true/false
+cmt_cpp_group = false # true/false
+cmt_cpp_nl_start = false # true/false
+cmt_cpp_nl_end = false # true/false
+cmt_star_cont = false # true/false
+cmt_sp_before_star_cont = 0 # unsigned number
+cmt_sp_after_star_cont = 0 # unsigned number
+cmt_multi_check_last = true # true/false
+cmt_multi_first_len_minimum = 4 # unsigned number
+cmt_insert_file_header = "" # string
+cmt_insert_file_footer = "" # string
+cmt_insert_func_header = "" # string
+cmt_insert_class_header = "" # string
+cmt_insert_oc_msg_header = "" # string
+cmt_insert_before_preproc = false # true/false
+cmt_insert_before_inlines = false # true/false
+cmt_insert_before_ctor_dtor = false # true/false
+mod_full_brace_do = add # ignore/add/remove/force/not_defined
+mod_full_brace_for = add # ignore/add/remove/force/not_defined
+mod_full_brace_function = add # ignore/add/remove/force/not_defined
+mod_full_brace_if = add # ignore/add/remove/force/not_defined
+mod_full_brace_if_chain = 0 # unsigned number
+mod_full_brace_if_chain_only = false # true/false
+mod_full_brace_while = add # ignore/add/remove/force/not_defined
+mod_full_brace_using = add # ignore/add/remove/force/not_defined
+mod_full_brace_nl = 0 # unsigned number
+mod_full_brace_nl_block_rem_mlcond = false # true/false
+mod_paren_on_return = remove # ignore/add/remove/force/not_defined
+mod_paren_on_throw = force # ignore/add/remove/force/not_defined
+mod_pawn_semicolon = false # true/false
+mod_full_paren_if_bool = false # true/false
+mod_full_paren_assign_bool = false # true/false
+mod_full_paren_return_bool = false # true/false
+mod_remove_extra_semicolon = true # true/false
+mod_remove_duplicate_include = false # true/false
+mod_add_force_c_closebrace_comment = false # true/false
+mod_add_long_function_closebrace_comment = 0 # unsigned number
+mod_add_long_namespace_closebrace_comment = 0 # unsigned number
+mod_add_long_class_closebrace_comment = 0 # unsigned number
+mod_add_long_switch_closebrace_comment = 0 # unsigned number
+mod_add_long_ifdef_endif_comment = 0 # unsigned number
+mod_add_long_ifdef_else_comment = 0 # unsigned number
+mod_sort_case_sensitive = false # true/false
+mod_sort_import = false # true/false
+mod_sort_using = false # true/false
+mod_sort_include = false # true/false
+mod_sort_incl_import_prioritize_filename = false # true/false
+mod_sort_incl_import_prioritize_extensionless = false # true/false
+mod_sort_incl_import_prioritize_angle_over_quotes = false # true/false
+mod_sort_incl_import_ignore_extension = false # true/false
+mod_sort_incl_import_grouping_enabled = false # true/false
+mod_move_case_break = true # true/false
+mod_move_case_return = true # true/false
+mod_case_brace = force # ignore/add/remove/force/not_defined
+mod_remove_empty_return = true # true/false
+mod_enum_last_comma = remove # ignore/add/remove/force/not_defined
+mod_infinite_loop = 0 # unsigned number
+mod_int_short = ignore # ignore/add/remove/force/not_defined
+mod_short_int = ignore # ignore/add/remove/force/not_defined
+mod_int_long = ignore # ignore/add/remove/force/not_defined
+mod_long_int = ignore # ignore/add/remove/force/not_defined
+mod_int_signed = ignore # ignore/add/remove/force/not_defined
+mod_signed_int = ignore # ignore/add/remove/force/not_defined
+mod_int_unsigned = ignore # ignore/add/remove/force/not_defined
+mod_unsigned_int = ignore # ignore/add/remove/force/not_defined
+mod_int_prefer_int_on_left = false # true/false
+mod_sort_oc_properties = false # true/false
+mod_sort_oc_property_class_weight = 0 # number
+mod_sort_oc_property_thread_safe_weight = 0 # number
+mod_sort_oc_property_readwrite_weight = 0 # number
+mod_sort_oc_property_reference_weight = 0 # number
+mod_sort_oc_property_getter_weight = 0 # number
+mod_sort_oc_property_setter_weight = 0 # number
+mod_sort_oc_property_nullability_weight = 0 # number
+pp_indent_with_tabs = -1 # number
+pp_indent = force # ignore/add/remove/force/not_defined
+pp_indent_at_level = false # true/false
+pp_indent_at_level0 = false # true/false
+pp_indent_count = 2 # unsigned number
+pp_space_after = remove # ignore/add/remove/force/not_defined
+pp_space_count = 0 # unsigned number
+pp_indent_region = 0 # number
+pp_region_indent_code = false # true/false
+pp_indent_if = 0 # number
+pp_if_indent_code = false # true/false
+pp_indent_in_guard = false # true/false
+pp_define_at_level = false # true/false
+pp_include_at_level = false # true/false
+pp_ignore_define_body = false # true/false
+pp_multiline_define_body_indent = 2 # number
+pp_indent_case = false # true/false
+pp_indent_func_def = false # true/false
+pp_indent_extern = false # true/false
+pp_indent_brace = 0 # number
+pp_warn_unbalanced_if = true # true/false
+include_category_0 = "" # string
+include_category_1 = "" # string
+include_category_2 = "" # string
+use_indent_func_call_param = true # true/false
+use_indent_continue_only_once = true # true/false
+indent_cpp_lambda_only_once = false # true/false
+use_sp_after_angle_always = false # true/false
+use_options_overriding_for_qt_macros = true # true/false
+use_form_feed_no_more_as_whitespace_character = false # true/false
+warn_level_tabs_found_in_verbatim_string_literals = 2 # unsigned number
+debug_max_number_of_loops = 0 # number
+debug_line_number_to_protocol = 0 # number
+debug_timeout = 0 # number
+debug_truncate = 0 # unsigned number
+debug_sort_the_tracks = true # true/false
+debug_decode_the_flags = false # true/false
+set_numbering_for_html_output = false # true/false
+file_ext C .c .c.cmake
+file_ext CPP .cpp .cxx .cc .h .hpp .hxx .hh .cpp.cmake .h.cmake .hpp.cmake
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/width-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/width-2.cfg
new file mode 100644
index 00000000..13a883c7
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/width-2.cfg
@@ -0,0 +1,14 @@
+# width stuff
+sp_sparen_brace = add
+sp_arith = force
+indent_columns = 4
+indent_with_tabs = 0
+nl_if_brace = remove
+code_width = 60
+ls_for_split_full = true
+cmt_width = 60
+cmt_c_group = true
+cmt_c_nl_end = true
+cmt_cpp_group = true
+cmt_cpp_to_c = true
+cmt_star_cont = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/width-2.rerun.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/width-2.rerun.cfg
index c74e4020..c74e4020 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/common/width-2.rerun.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/common/width-2.rerun.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/2185.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/2185.cfg
index fda2290c..fda2290c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/2185.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/2185.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/2203.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/2203.cfg
index e9c359cf..e9c359cf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/2203.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/2203.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/623_caret-spacing.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/623_caret-spacing.cfg
index 4d60daa9..4d60daa9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/623_caret-spacing.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/623_caret-spacing.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/633_decl-in-func-typedef.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/633_decl-in-func-typedef.cfg
index 0edd4124..0edd4124 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/633_decl-in-func-typedef.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/633_decl-in-func-typedef.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/DefaultAndDelete-0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/DefaultAndDelete-0.cfg
index 8aef4713..8aef4713 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/DefaultAndDelete-0.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/DefaultAndDelete-0.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/DefaultAndDelete-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/DefaultAndDelete-1.cfg
index f97e0abe..f97e0abe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/DefaultAndDelete-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/DefaultAndDelete-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/DefaultAndDelete-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/DefaultAndDelete-2.cfg
index 6c39bace..6c39bace 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/DefaultAndDelete-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/DefaultAndDelete-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Discussion_3987.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Discussion_3987.cfg
new file mode 100644
index 00000000..5b27f6e1
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Discussion_3987.cfg
@@ -0,0 +1,2 @@
+mod_add_long_function_closebrace_comment = 3
+mod_add_force_c_closebrace_comment = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/I1112-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/I1112-2.cfg
index 6b1bba41..6b1bba41 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/I1112-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/I1112-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/I2103.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/I2103.cfg
index 5c34ca18..5c34ca18 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/I2103.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/I2103.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1052.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1052.cfg
index 91fe8899..91fe8899 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1052.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1052.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1130.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1130.cfg
new file mode 100644
index 00000000..ff3f1c4e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1130.cfg
@@ -0,0 +1,6 @@
+indent_with_tabs = 0
+# How to indent the continuation of ternary operator.
+# 0: Off (default)
+# 1: When the `if_false` is a continuation, indent it under `if_false`
+# 2: When the `:` is a continuation, indent it under `?`
+indent_ternary_operator = 2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1167.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1167.cfg
index feb56c83..feb56c83 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1167.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1167.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1184.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1184.cfg
index 0fdd95de..0fdd95de 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1184.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1184.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1460.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1460.cfg
index 7adee60a..7adee60a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1460.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1460.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1511.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1511.cfg
index 71c01f4d..71c01f4d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1511.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1511.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1692.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1692.cfg
index db3cbdbe..db3cbdbe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1692.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1692.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1703.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1703.cfg
index f8c889ab..f8c889ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1703.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1703.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1734.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1734.cfg
index 37a4c192..37a4c192 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1734.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1734.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1753.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1753.cfg
index e0e5ab0b..e0e5ab0b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1753.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1753.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1813.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1813.cfg
index ff1ce9d3..ff1ce9d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1813.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1813.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1923.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1923.cfg
index f242e902..f242e902 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1923.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1923.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1966.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1966.cfg
index be3a873d..be3a873d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_1966.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_1966.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2020.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2020.cfg
index 2104e036..2104e036 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2020.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2020.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2045.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2045.cfg
index 3fb7cfe9..3fb7cfe9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2045.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2045.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2085.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2085.cfg
index 2df8ebd8..2df8ebd8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2085.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2085.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2091.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2091.cfg
index 898b035b..898b035b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2091.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2091.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2101.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2101.cfg
index 44e5a0e6..44e5a0e6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2101.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2101.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2149.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2149.cfg
index 721daf0b..721daf0b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2149.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2149.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2150.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2150.cfg
index 5f518291..5f518291 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2150.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2150.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2151.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2151.cfg
index 0660e498..0660e498 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2151.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2151.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2163.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2163.cfg
index b7c31fe2..b7c31fe2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2163.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2163.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2166.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2166.cfg
index 2b473436..2b473436 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2166.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2166.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2170.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2170.cfg
index f66f0022..f66f0022 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2170.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2170.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2186.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2186.cfg
index d694b699..d694b699 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2186.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2186.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2195.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2195.cfg
index 0c70840d..0c70840d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2195.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2195.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2219.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2219.cfg
index 865142a1..865142a1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2219.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2219.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2224.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2224.cfg
new file mode 100644
index 00000000..07cef5af
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2224.cfg
@@ -0,0 +1,5 @@
+sp_after_sparen = add
+output_tab_size = 4
+indent_columns = 4
+nl_create_if_one_liner = true
+mod_full_brace_if = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2229.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2229.cfg
index 38cb5554..38cb5554 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2229.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2229.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2232.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2232.cfg
index 06730341..06730341 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2232.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2232.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2236.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2236.cfg
index 6d30f256..6d30f256 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2236.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2236.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2250.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2250.cfg
index 705176b2..705176b2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2250.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2250.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2281.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2281.cfg
index 1d8b164e..1d8b164e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2281.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2281.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2302.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2302.cfg
index e69de29b..e69de29b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2302.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2302.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2305.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2305.cfg
index 7200d9ac..7200d9ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2305.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2305.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2319.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2319.cfg
index aeb132b5..aeb132b5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2319.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2319.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2343.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2343.cfg
index 955a1f9a..955a1f9a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2343.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2343.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2345.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2345.cfg
index 27213b45..27213b45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2345.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2345.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2368.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2368.cfg
index d1496108..d1496108 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2368.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2368.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2383.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2383.cfg
index 313d9efb..313d9efb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2383.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2383.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2386.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2386.cfg
index 3a121c2e..3a121c2e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2386.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2386.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2428.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2428.cfg
index 8af28414..8af28414 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2428.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2428.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2437.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2437.cfg
index b21679ce..b21679ce 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2437.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2437.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2440.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2440.cfg
index 3da56066..3da56066 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2440.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2440.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2440_nl.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2440_nl.cfg
index 3da56066..3da56066 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2440_nl.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2440_nl.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2478.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2478.cfg
index bb4425d9..bb4425d9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2478.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2478.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2561.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2561.cfg
index 03a40504..03a40504 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2561.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2561.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2570.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2570.cfg
index 6a9f2d25..6a9f2d25 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2570.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2570.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2574.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2574.cfg
index d96f0980..d96f0980 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2574.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2574.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2582.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2582.cfg
index f634b12e..f634b12e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2582.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2582.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2591.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2591.cfg
index 6ca8934c..6ca8934c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2591.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2591.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2594.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2594.cfg
index 1d7941be..1d7941be 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2594.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2594.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2596.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2596.cfg
index b6338859..b6338859 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2596.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2596.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2604.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2604.cfg
index daeb9bc6..daeb9bc6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2604.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2604.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2668.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2668.cfg
index 40a69dcf..40a69dcf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2668.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2668.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2688.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2688.cfg
index 4baf4b3f..4baf4b3f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2688.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2688.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2689.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2689.cfg
index e498e830..e498e830 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2689.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2689.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2692.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2692.cfg
index bce2060e..bce2060e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2692.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2692.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2703.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2703.cfg
index ed7b8ddb..ed7b8ddb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2703.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2703.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2734.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2734.cfg
index 83fdd868..83fdd868 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2734.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2734.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2735.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2735.cfg
index 32a72aa2..32a72aa2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2735.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2735.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2742.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2742.cfg
index eba0468c..eba0468c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2742.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2742.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2752.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2752.cfg
index e15e7702..e15e7702 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2752.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2752.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2757.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2757.cfg
index e2118df5..e2118df5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2757.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2757.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2758.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2758.cfg
index dd2d0f6b..dd2d0f6b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2758.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2758.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2759.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2759.cfg
index abdc53f4..abdc53f4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2759.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2759.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2771.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2771.cfg
index b34e82a7..b34e82a7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2771.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2771.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2794.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2794.cfg
index c193054f..c193054f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2794.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2794.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2795.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2795.cfg
index 353cafa8..353cafa8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2795.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2795.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2823.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2823.cfg
index de58e056..de58e056 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2823.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2823.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2831.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2831.cfg
index e7271af0..e7271af0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2831.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2831.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2836.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2836.cfg
index 41151a57..41151a57 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2836.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2836.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2873.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2873.cfg
index be881c98..be881c98 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2873.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2873.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2879.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2879.cfg
index ba98f974..ba98f974 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2879.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2879.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2886.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2886.cfg
index eb4b5ca2..eb4b5ca2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2886.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2886.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2890.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2890.cfg
index 81ba72ca..81ba72ca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2890.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2890.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2902.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2902.cfg
index 5806b371..5806b371 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2902.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2902.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2907.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2907.cfg
index fa5b3018..fa5b3018 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2907.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2907.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2914.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2914.cfg
index 98d4511c..98d4511c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2914.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2914.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2921.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2921.cfg
index 142dc8dc..142dc8dc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2921.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2921.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2930.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2930.cfg
index bd8cb9b0..bd8cb9b0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2930.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2930.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2942.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2942.cfg
index e72ddc77..e72ddc77 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2942.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2942.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2949.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2949.cfg
index b5ea1ffb..b5ea1ffb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2949.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2949.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2957.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2957.cfg
index aaf2b1a1..aaf2b1a1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2957.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2957.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2971.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2971.cfg
index 1255b541..1255b541 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_2971.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_2971.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3010.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3010.cfg
index 5f518291..5f518291 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3010.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3010.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3025.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3025.cfg
index 5e545c50..5e545c50 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3025.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3025.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3034.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3034.cfg
index 77557ac3..77557ac3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3034.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3034.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3040.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3040.cfg
index 12c8ebaf..12c8ebaf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3040.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3040.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3044.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3044.cfg
index c2f9ade5..c2f9ade5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3044.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3044.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3048.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3048.cfg
index fb4171d7..fb4171d7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3048.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3048.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3054-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3054-2.cfg
index a41640f0..a41640f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3054-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3054-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3054.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3054.cfg
index a88303ba..a88303ba 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3054.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3054.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3055.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3055.cfg
index ccf5c75f..ccf5c75f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3055.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3055.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3058.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3058.cfg
index 1619b851..1619b851 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3058.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3058.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3061_0nl.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3061_0nl.cfg
index 53a71184..53a71184 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3061_0nl.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3061_0nl.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3061_1nl.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3061_1nl.cfg
index ad1c0bbc..ad1c0bbc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3061_1nl.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3061_1nl.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3061_2nl.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3061_2nl.cfg
index 27325b31..27325b31 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3061_2nl.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3061_2nl.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3061_3nl.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3061_3nl.cfg
index 276c7d72..276c7d72 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3061_3nl.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3061_3nl.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3080.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3080.cfg
index 748a6dad..748a6dad 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3080.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3080.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3097.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3097.cfg
index ed31649e..ed31649e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3097.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3097.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3164.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3164.cfg
index 10cf639b..10cf639b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3164.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3164.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3197.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3197.cfg
index 2177bfff..2177bfff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3197.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3197.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3198.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3198.cfg
index 28852f24..28852f24 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3198.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3198.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3203.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3203.cfg
index 69cd5054..69cd5054 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3203.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3203.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3220-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3220-f.cfg
index fffa496d..fffa496d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3220-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3220-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3220-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3220-i.cfg
index 52060d80..52060d80 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3220-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3220-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3220-ir.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3220-ir.cfg
new file mode 100644
index 00000000..63c52660
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3220-ir.cfg
@@ -0,0 +1,12 @@
+indent_with_tabs = 0
+sp_after_ptr_star = ignore
+sp_after_ptr_star_func = ignore
+sp_after_ptr_star_trailing = ignore
+sp_after_ptr_star_qualifier = ignore
+sp_before_ptr_star = remove
+sp_before_ptr_star_func = ignore
+sp_before_ptr_star_trailing = ignore
+sp_before_unnamed_ptr_star = ignore
+sp_between_ptr_star = ignore
+sp_ptr_star_paren = ignore
+sp_before_ptr_star = ignore
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3220-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3220-r.cfg
index c62cb16e..c62cb16e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3220-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3220-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3236.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3236.cfg
new file mode 100644
index 00000000..51a54f89
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3236.cfg
@@ -0,0 +1,3 @@
+# Whether to fully parenthesize Boolean expressions in 'while' and 'if'
+# statement, as in 'if (a && b > c)' => 'if (a && (b > c))'.
+mod_full_paren_if_bool = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3237.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3237.cfg
index 5c47913d..5c47913d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3237.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3237.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3252.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3252.cfg
index db7fe8f2..db7fe8f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3252.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3252.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3284.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3284.cfg
index 51de787c..51de787c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3284.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3284.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3294.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3294.cfg
index 994a3fe7..994a3fe7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3294.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3294.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3309-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3309-f.cfg
index 2c88f416..2c88f416 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3309-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3309-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3309-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3309-i.cfg
index fc7534fe..fc7534fe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3309-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3309-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3309-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3309-r.cfg
index aa884661..aa884661 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3309-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3309-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3316.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3316.cfg
index 901ad6e4..901ad6e4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3316.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3316.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3357.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3357.cfg
index 3f3c5075..3f3c5075 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3357.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3357.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3409.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3409.cfg
index b8424b25..b8424b25 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3409.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3409.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3413.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3413.cfg
index 99a9f4a9..99a9f4a9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3413.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3413.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3422-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3422-1.cfg
index 6c86f2db..6c86f2db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3422-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3422-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3422-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3422-2.cfg
index beb76fde..beb76fde 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3422-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3422-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428.cfg
index d9f9789c..d9f9789c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428_2.cfg
index 4e750218..4e750218 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428_3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428_3.cfg
index c404d45b..c404d45b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428_3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428_3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428_4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428_4.cfg
index e3078665..e3078665 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428_4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428_4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428_5.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428_5.cfg
index 6d0a4c77..6d0a4c77 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428_5.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428_5.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428_6.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428_6.cfg
index 30b78a65..30b78a65 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3428_6.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3428_6.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3446.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3446.cfg
index a66901cc..a66901cc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3446.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3446.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3448.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3448.cfg
index 77619e74..77619e74 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3448.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3448.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3513.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3513.cfg
index 34f93540..34f93540 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3513.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3513.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3546.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3546.cfg
index 56965ae8..56965ae8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3546.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3546.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3550.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3550.cfg
index 1a4502fa..1a4502fa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3550.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3550.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3552.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3552.cfg
index f9a0eca8..f9a0eca8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3552.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3552.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3558.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3558.cfg
index 7999dcbf..7999dcbf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3558.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3558.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3570.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3570.cfg
index f291c20d..f291c20d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3570.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3570.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3576-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3576-a.cfg
index 052cf16f..052cf16f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3576-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3576-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3576-b.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3576-b.cfg
index 2b187f20..2b187f20 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3576-b.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3576-b.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3604.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3604.cfg
index 5806b371..5806b371 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3604.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3604.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3614.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3614.cfg
new file mode 100644
index 00000000..f3b66508
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3614.cfg
@@ -0,0 +1,2 @@
+sp_cmt_cpp_start = force
+sp_cmt_cpp_lint = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3710.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3710.cfg
index 46339ba3..46339ba3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3710.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3710.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3785.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3785.cfg
index 64f056a5..64f056a5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3785.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3785.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3786.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3786.cfg
index c5c081aa..c5c081aa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3786.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3786.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3786.rerun.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3786.rerun.cfg
index c514c32c..c514c32c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3786.rerun.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3786.rerun.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3863.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3863.cfg
index eb716a45..eb716a45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_3863.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3863.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3865.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3865.cfg
new file mode 100644
index 00000000..33384989
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3865.cfg
@@ -0,0 +1 @@
+sp_arith = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3865_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3865_2.cfg
new file mode 100644
index 00000000..4c4ef95a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3865_2.cfg
@@ -0,0 +1,2 @@
+sp_arith = add
+sp_before_byref = remove \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3914.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3914.cfg
new file mode 100644
index 00000000..fc8c28ff
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3914.cfg
@@ -0,0 +1,5 @@
+nl_func_call_paren = remove
+
+sp_func_call_user_inside_rparen = force
+sp_inside_rparens = force
+sp_inside_rparen = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3915.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3915.cfg
new file mode 100644
index 00000000..59662afb
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3915.cfg
@@ -0,0 +1 @@
+indent_member_single = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3916.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3916.cfg
new file mode 100644
index 00000000..dbc91f40
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3916.cfg
@@ -0,0 +1,2 @@
+indent_with_tabs = 0
+align_same_func_call_params = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3919.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3919.cfg
new file mode 100644
index 00000000..7715cb13
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3919.cfg
@@ -0,0 +1,2 @@
+sp_cmt_cpp_start = add
+sp_cmt_cpp_pvs = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3920.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3920.cfg
new file mode 100644
index 00000000..6a9f2d25
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3920.cfg
@@ -0,0 +1 @@
+mod_remove_extra_semicolon = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3965.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3965.cfg
new file mode 100644
index 00000000..84ffaf1e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3965.cfg
@@ -0,0 +1,2 @@
+indent_columns = 4
+nl_end_of_file = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3967.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3967.cfg
new file mode 100644
index 00000000..b5ea1ffb
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3967.cfg
@@ -0,0 +1 @@
+indent_columns = 4
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3983.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3983.cfg
new file mode 100644
index 00000000..9c2f9036
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_3983.cfg
@@ -0,0 +1 @@
+indent_member_single=true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4036.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4036.cfg
new file mode 100644
index 00000000..0880c62f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4036.cfg
@@ -0,0 +1,2 @@
+sp_after_bit_colon = remove
+sp_before_bit_colon = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4080.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4080.cfg
new file mode 100644
index 00000000..faf107eb
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4080.cfg
@@ -0,0 +1 @@
+sp_before_ptr_star = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4094.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4094.cfg
new file mode 100644
index 00000000..0b717219
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4094.cfg
@@ -0,0 +1,2 @@
+sp_cpp_lambda_argument_list_empty = force
+sp_cpp_lambda_argument_list = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4239.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4239.cfg
new file mode 100644
index 00000000..0988ac8b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_4239.cfg
@@ -0,0 +1,5 @@
+# Whether to fully parenthesize Boolean expressions after '='
+# statement, as in 'x = a && b > c;' => 'x = (a && (b > c));'.
+mod_full_paren_assign_bool = true
+
+indent_with_tabs = 0
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_750.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_750.cfg
index b22aff36..b22aff36 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_750.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_750.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_931.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_931.cfg
index 45879950..45879950 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_931.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_931.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_995-do.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_995-do.cfg
index ba4e6387..ba4e6387 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Issue_995-do.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Issue_995-do.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/NewLine-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/NewLine-f.cfg
index 8da1e530..8da1e530 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/NewLine-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/NewLine-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/NewLine-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/NewLine-r.cfg
index 329f5112..329f5112 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/NewLine-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/NewLine-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/STUCK_macro-difficulties.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/STUCK_macro-difficulties.cfg
index c7ce0fd8..c7ce0fd8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/STUCK_macro-difficulties.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/STUCK_macro-difficulties.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U02-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U02-Cpp.cfg
index e8b4846a..e8b4846a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U02-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U02-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U03-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U03-Cpp.cfg
index d0f33089..d0f33089 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U03-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U03-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U04-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U04-Cpp.cfg
index 75f78b42..75f78b42 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U04-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U04-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U05-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U05-Cpp.cfg
index ac01c51c..ac01c51c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U05-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U05-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U06-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U06-Cpp.cfg
index 55fcc716..55fcc716 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U06-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U06-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U07-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U07-Cpp.cfg
index 9cee7fef..9cee7fef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U07-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U07-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U16-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U16-Cpp.cfg
index 425ee375..425ee375 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U16-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U16-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U18-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U18-Cpp.cfg
index 75f78b42..75f78b42 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U18-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U18-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U21-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U21-Cpp.cfg
index fd27114f..fd27114f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U21-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U21-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U23-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U23-Cpp.cfg
index 04863187..04863187 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U23-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U23-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U25-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U25-Cpp.cfg
index 75f78b42..75f78b42 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U25-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U25-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U26-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U26-Cpp.cfg
index 39c58934..39c58934 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U26-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U26-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U27-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U27-Cpp.cfg
index e8b4846a..e8b4846a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U27-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U27-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U28-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U28-Cpp.cfg
index ac01c51c..ac01c51c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U28-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U28-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U29-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U29-Cpp.cfg
index d65f6b27..d65f6b27 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U29-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U29-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U30-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U30-Cpp.cfg
index 75f78b42..75f78b42 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U30-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U30-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U31-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U31-Cpp.cfg
index bd45658a..bd45658a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U31-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U31-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U33-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U33-Cpp.cfg
index 0d78de45..0d78de45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U33-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U33-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U36-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U36-Cpp.cfg
index b655be2c..b655be2c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/U36-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/U36-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-10496.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-10496.cfg
index 42f6ee64..42f6ee64 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-10496.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-10496.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-12046.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-12046.cfg
index 4dcd62eb..4dcd62eb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-12046.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-12046.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1340.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1340.cfg
index 8a43dca1..8a43dca1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1340.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1340.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1344.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1344.cfg
index 9e9937d2..9e9937d2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1344.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1344.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1346.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1346.cfg
index 4074ff52..4074ff52 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1346.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1346.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1347.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1347.cfg
index ee4173ec..ee4173ec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1347.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1347.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1350.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1350.cfg
index 082a647f..082a647f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1350.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1350.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1356.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1356.cfg
index 948f20b6..948f20b6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1356.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1356.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1358.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1358.cfg
index 0d78de45..0d78de45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-1358.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-1358.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-2049.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-2049.cfg
index f075ea03..f075ea03 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-2049.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-2049.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-2650.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-2650.cfg
index 46279443..46279443 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-2650.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-2650.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-2680.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-2680.cfg
index 99790699..99790699 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-2680.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-2680.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-29935.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-29935.cfg
new file mode 100644
index 00000000..23ce45ef
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-29935.cfg
@@ -0,0 +1,149 @@
+input_tab_size = 4
+string_replace_tab_chars = true
+disable_processing_cmt = "*begin-nonstandard-formatting*"
+enable_processing_cmt = "*end-nonstandard-formatting*"
+utf8_bom = remove
+sp_arith = add
+sp_assign = add
+sp_assign_default = add
+sp_enum_assign = add
+sp_pp_concat = remove
+sp_pp_stringify = remove
+sp_bool = add
+sp_compare = add
+sp_inside_paren = remove
+sp_paren_paren = remove
+sp_paren_brace = force
+sp_after_type = ignore
+sp_template_angle = remove
+sp_before_angle = remove
+sp_inside_angle = remove
+sp_angle_paren = remove
+sp_angle_paren_empty = remove
+sp_angle_word = add
+sp_angle_shift = remove
+sp_before_sparen = force
+sp_inside_sparen = remove
+sp_after_sparen = add
+sp_sparen_brace = force
+sp_special_semi = force
+sp_before_semi_for = remove
+sp_before_semi_for_empty = remove
+sp_before_byref_func = force
+sp_between_semi_for_empty = remove
+sp_after_semi_for_empty = remove
+sp_before_square = remove
+sp_before_squares = remove
+sp_inside_square = remove
+sp_after_comma = add
+sp_before_comma = ignore
+sp_after_mdatype_commas = remove
+sp_before_mdatype_commas = remove
+sp_between_mdatype_commas = remove
+sp_paren_comma = remove
+sp_after_class_colon = force
+sp_before_class_colon = force
+sp_after_operator = remove
+sp_after_operator_sym = remove
+sp_after_operator_sym_empty = remove
+sp_after_cast = remove
+sp_inside_paren_cast = remove
+sp_cpp_cast_paren = remove
+sp_sizeof_paren = remove
+sp_inside_braces_enum = add
+sp_inside_braces_empty = remove
+sp_func_proto_paren = remove
+sp_func_def_paren = remove
+sp_inside_fparens = remove
+sp_inside_fparen = remove
+sp_fparen_brace = add
+sp_func_call_paren = remove
+sp_func_call_paren_empty = remove
+sp_func_call_user_paren = remove
+sp_func_class_paren = remove
+sp_return_paren = add
+sp_defined_paren = remove
+sp_throw_paren = add
+sp_catch_paren = add
+sp_brace_typedef = add
+sp_getset_brace = add
+sp_after_dc = remove
+sp_after_oc_scope = force
+sp_after_oc_colon = remove
+sp_before_oc_colon = remove
+sp_after_oc_dict_colon = force
+sp_before_oc_dict_colon = remove
+sp_after_send_oc_colon = force
+sp_before_send_oc_colon = remove
+sp_after_oc_type = remove
+sp_after_oc_return_type = remove
+sp_after_oc_at_sel = remove
+sp_inside_oc_at_sel_parens = remove
+sp_cond_colon = add
+sp_cond_question = add
+sp_after_new = force
+sp_between_new_paren = remove
+sp_skip_vbrace_tokens = true
+indent_columns = 4
+indent_with_tabs = 0
+indent_cs_delegate_brace = true
+indent_namespace = true
+indent_class = true
+indent_func_call_param = true
+indent_func_def_param = true
+indent_func_proto_param = true
+indent_switch_case = 4
+indent_label = -4
+indent_access_spec = -4
+indent_align_assign = false
+indent_align_paren = false
+indent_oc_block_msg_xcode_style = true
+indent_off_after_return_new = true
+indent_single_after_return = true
+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_oc_msg_leave_one_liner = true
+nl_start_of_file = remove
+nl_end_of_file = force
+nl_end_of_file_min = 1
+nl_assign_brace = force
+nl_enum_brace = force
+nl_struct_brace = force
+nl_union_brace = force
+nl_if_brace = force
+nl_brace_else = force
+nl_else_brace = force
+nl_else_if = remove
+nl_brace_finally = force
+nl_finally_brace = force
+nl_try_brace = force
+nl_getset_brace = force
+nl_for_brace = force
+nl_catch_brace = force
+nl_brace_catch = force
+nl_while_brace = force
+nl_using_brace = force
+nl_do_brace = force
+nl_brace_while = force
+nl_switch_brace = force
+nl_case_colon_brace = force
+nl_namespace_brace = force
+nl_class_brace = force
+nl_fdef_brace = force
+nl_max = 3
+nl_after_func_body = 2
+nl_property_brace = force
+eat_blanks_after_open_brace = true
+eat_blanks_before_close_brace = true
+align_left_shift = false
+cmt_convert_tab_to_spaces = true
+cmt_indent_multi = false
+cmt_multi_check_last = false
+mod_remove_extra_semicolon = true
+mod_remove_empty_return = true
+use_options_overriding_for_qt_macros = false
+warn_level_tabs_found_in_verbatim_string_literals = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-30088.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-30088.cfg
index 4abe03e1..4abe03e1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/UNI-30088.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-30088.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-32657.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-32657.cfg
new file mode 100644
index 00000000..8903de5e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/UNI-32657.cfg
@@ -0,0 +1,316 @@
+input_tab_size=4
+string_replace_tab_chars=true
+tok_split_gte=false
+disable_processing_cmt=*begin-nonstandard-formatting*
+enable_processing_cmt=*end-nonstandard-formatting*
+utf8_bom=remove
+utf8_byte=false
+utf8_force=false
+indent_columns=4
+indent_with_tabs=0
+indent_cmt_with_tabs=false
+indent_align_string=false
+indent_braces=false
+indent_braces_no_func=false
+indent_braces_no_class=false
+indent_braces_no_struct=false
+indent_brace_parent=false
+indent_cs_delegate_brace=true
+indent_namespace=true
+indent_extern=false
+indent_class=true
+indent_class_colon=false
+indent_else_if=false
+indent_var_def_cont=false
+indent_func_call_param=true
+indent_func_def_param=true
+indent_func_proto_param=true
+indent_func_class_param=false
+indent_func_ctor_var_param=false
+indent_template_param=false
+indent_func_param_double=false
+indent_member_single=false
+indent_relative_single_line_comments=false
+indent_switch_case=4
+indent_case_shift=0
+indent_case_brace=0
+indent_col1_comment=false
+indent_label=-4
+indent_access_spec=-4
+indent_paren_nl=false
+indent_comma_paren=0
+indent_bool_paren=0
+indent_first_bool_expr=false
+indent_square_nl=false
+indent_preserve_sql=false
+indent_align_paren=false
+indent_oc_block_msg_xcode_style=true
+indent_off_after_return_new=true
+indent_single_after_return=true
+sp_arith=add
+sp_assign=add
+sp_assign_default=add
+sp_enum_assign=add
+sp_pp_concat=remove
+sp_pp_stringify=remove
+sp_bool=add
+sp_compare=add
+sp_inside_paren=remove
+sp_paren_paren=remove
+sp_balance_nested_parens=false
+sp_paren_brace=force
+sp_after_type=ignore
+sp_template_angle=remove
+sp_before_angle=remove
+sp_inside_angle=remove
+sp_angle_paren=remove
+sp_angle_paren_empty=remove
+sp_angle_word=add
+sp_angle_shift=remove
+sp_before_sparen=force
+sp_inside_sparen=remove
+sp_after_sparen=add
+sp_sparen_brace=force
+sp_special_semi=force
+sp_before_semi=remove
+sp_before_semi_for=remove
+sp_before_semi_for_empty=remove
+sp_between_semi_for_empty=remove
+sp_after_semi=add
+sp_after_semi_for=force
+sp_after_semi_for_empty=remove
+sp_before_square=remove
+sp_before_squares=remove
+sp_inside_square=remove
+sp_after_comma=add
+sp_before_comma=ignore
+sp_after_mdatype_commas=remove
+sp_before_mdatype_commas=remove
+sp_between_mdatype_commas=remove
+sp_paren_comma=remove
+sp_after_class_colon=force
+sp_before_class_colon=force
+sp_before_case_colon=remove
+sp_after_operator=remove
+sp_after_operator_sym=remove
+sp_after_operator_sym_empty=remove
+sp_after_cast=remove
+sp_inside_paren_cast=remove
+sp_cpp_cast_paren=remove
+sp_sizeof_paren=remove
+sp_inside_braces_enum=add
+sp_inside_braces_empty=remove
+sp_type_func=ignore
+sp_func_proto_paren=remove
+sp_func_def_paren=remove
+sp_inside_fparens=remove
+sp_inside_fparen=remove
+sp_fparen_brace=add
+sp_func_call_paren=remove
+sp_func_call_paren_empty=remove
+sp_func_call_user_paren=remove
+sp_func_class_paren=remove
+sp_return_paren=add
+sp_defined_paren=remove
+sp_throw_paren=add
+sp_catch_paren=add
+sp_brace_typedef=add
+sp_getset_brace=add
+sp_after_dc=remove
+sp_not=remove
+sp_inv=remove
+sp_addr=remove
+sp_member=remove
+sp_deref=remove
+sp_sign=remove
+sp_incdec=remove
+sp_before_nl_cont=add
+sp_after_oc_scope=force
+sp_after_oc_colon=remove
+sp_before_oc_colon=remove
+sp_after_oc_dict_colon=force
+sp_before_oc_dict_colon=remove
+sp_after_send_oc_colon=force
+sp_before_send_oc_colon=remove
+sp_after_oc_type=remove
+sp_after_oc_return_type=remove
+sp_after_oc_at_sel=remove
+sp_inside_oc_at_sel_parens=remove
+sp_cond_colon=add
+sp_cond_question=add
+sp_case_label=ignore
+sp_after_new=force
+sp_between_new_paren=remove
+sp_skip_vbrace_tokens=true
+align_keep_tabs=false
+align_with_tabs=false
+align_on_tabstop=false
+align_number_right=false
+align_func_params=false
+align_same_func_call_params=false
+align_var_def_colon=false
+align_var_def_attribute=false
+align_var_def_inline=false
+align_right_cmt_mix=false
+align_on_operator=false
+align_mix_var_proto=false
+align_single_line_func=false
+align_single_line_brace=false
+align_nl_cont=0
+align_left_shift=false
+nl_collapse_empty_body=false
+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_if_leave_one_liners=false
+nl_oc_msg_leave_one_liner=true
+nl_start_of_file=remove
+nl_end_of_file=force
+nl_end_of_file_min=1
+nl_assign_brace=force
+nl_enum_brace=force
+nl_struct_brace=force
+nl_union_brace=force
+nl_if_brace=force
+nl_brace_else=force
+nl_else_brace=force
+nl_else_if=remove
+nl_brace_finally=force
+nl_finally_brace=force
+nl_try_brace=force
+nl_getset_brace=force
+nl_for_brace=force
+nl_catch_brace=force
+nl_brace_catch=force
+nl_while_brace=force
+nl_using_brace=force
+nl_brace_brace=ignore
+nl_do_brace=force
+nl_brace_while=force
+nl_switch_brace=force
+nl_multi_line_cond=false
+nl_before_case=false
+nl_after_case=false
+nl_case_colon_brace=force
+nl_namespace_brace=force
+nl_template_class=ignore
+nl_class_brace=force
+nl_fdef_brace=force
+nl_after_semicolon=false
+nl_after_brace_open=false
+nl_after_brace_open_cmt=false
+nl_after_vbrace_open=false
+nl_after_vbrace_open_empty=false
+nl_after_brace_close=false
+nl_after_vbrace_close=false
+nl_squeeze_ifdef=false
+nl_ds_struct_enum_cmt=false
+nl_ds_struct_enum_close_brace=false
+nl_namespace_two_to_one_liner=false
+nl_create_if_one_liner=false
+nl_create_for_one_liner=false
+nl_create_while_one_liner=false
+nl_create_func_def_one_liner=false
+ls_for_split_full=false
+ls_func_split_full=false
+nl_max=3
+nl_after_func_body=2
+nl_after_multiline_comment=false
+nl_property_brace=force
+eat_blanks_after_open_brace=true
+eat_blanks_before_close_brace=true
+nl_after_return=false
+mod_full_brace_if_chain=0
+mod_paren_on_return=ignore
+mod_pawn_semicolon=false
+mod_full_paren_if_bool=false
+mod_remove_extra_semicolon=true
+mod_move_case_break=false
+mod_remove_empty_return=true
+cmt_convert_tab_to_spaces=True
+cmt_indent_multi=false
+cmt_c_group=false
+cmt_c_nl_start=false
+cmt_c_nl_end=false
+cmt_cpp_group=false
+cmt_cpp_nl_start=false
+cmt_cpp_nl_end=false
+cmt_cpp_to_c=false
+cmt_star_cont=false
+cmt_multi_check_last=false
+cmt_insert_before_preproc=false
+pp_space_after=ignore
+use_options_overriding_for_qt_macros=false
+warn_level_tabs_found_in_verbatim_string_literals=1
+# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
+# can be turned back on at any time
+mod_add_long_ifdef_else_comment=0
+mod_add_long_ifdef_endif_comment=0
+
+# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
+#
+# x = o.Func2(a, b,
+# y);
+# o.Func2(a, b,
+# y);
+#
+# ...but setting it 'true' is often worse:
+#
+# ExtraReallyLongType reallyLongVariableName = someTest
+# ? someTrueExpr
+# : someFalseExpr
+#
+# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
+# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
+# (currently unreported)
+indent_align_assign=false
+
+# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
+# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
+# comment line at the same level of indentation.
+# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
+# (test using Runtime/Allocator/BucketAllocator.h)
+# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
+#sp_cmt_cpp_start=add
+sp_cmt_cpp_start=ignore
+
+# https://sourceforge.net/p/uncrustify/bugs/619/
+#sp_endif_cmt=force
+sp_endif_cmt=ignore
+
+# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
+# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
+#nl_cpp_ldef_brace=force
+
+# workaround for some nasty macroing we're doing
+set COMMENT PLATFORM_EXCEPTION_SAFEGUARD_PROLOG
+
+# without this, uncrustify will parse and process the contents of #defines, which is super unstable. very easy to get into edge cases it does not support,
+# so just have it treat #defines as black boxes. this will keep all of the contents of the #define as unprocessed.
+pp_ignore_define_body=true
+
+# macros in #includes aren't known to Uncrustify, so have to inform it here for macros that will confuse it
+set MACRO_FUNC ATTRIBUTE_ALIGN
+
+# we have some truly insane deep namespace nesting in il2cpp. :/
+indent_namespace_single_indent=true
+
+# needed for fmod apparently (via HEVAGTool.h - the *'s near F_STDCALL will be interpreted as ARITH without this)
+set COMMENT F_STDCALL
+
+# https://github.com/uncrustify/uncrustify/pull/602
+# https://sourceforge.net/p/uncrustify/bugs/633/
+set COMMENT __cdecl
+set COMMENT __clrcall
+set COMMENT __fastcall
+set COMMENT __stdcall
+set COMMENT __thiscall
+set COMMENT __vectorcall
+set COMMENT WINAPI
+
+# We need to make FAKE_FUNCTION a PROTO_WRAP macro function to help properly tokenize it's parameters.
+# Previously parameters with CT_AMP and CT_STAR were tokenized as CT_ARITH. Support for optional parenthesis added in github PR #629.
+set PROTO_WRAP FAKE_FUNCTION
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Uncrustify.Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Uncrustify.Cpp.cfg
index 89855c3c..89855c3c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/Uncrustify.Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/Uncrustify.Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/al.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/al.cfg
index 669cef45..669cef45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/al.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/al.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align-330.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align-330.cfg
new file mode 100644
index 00000000..5cae649c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align-330.cfg
@@ -0,0 +1,8 @@
+sp_after_comma = force
+indent_columns = 3
+pp_multiline_define_body_indent = 3
+nl_class_colon = force
+align_nl_cont = 1
+align_pp_define_gap = 4
+align_pp_define_span = 3
+indent_with_tabs = 0
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_assign_decl_func-0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_assign_decl_func-0.cfg
index fee6fea1..fee6fea1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_assign_decl_func-0.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_assign_decl_func-0.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_assign_decl_func-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_assign_decl_func-1.cfg
index 2175c1e2..2175c1e2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_assign_decl_func-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_assign_decl_func-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_assign_decl_func-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_assign_decl_func-2.cfg
index 9e3a2779..9e3a2779 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_assign_decl_func-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_assign_decl_func-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_assign_func_proto_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_assign_func_proto_1.cfg
index 378039a7..378039a7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_assign_func_proto_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_assign_func_proto_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_assign_span-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_assign_span-1.cfg
index fda177f9..fda177f9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_assign_span-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_assign_span-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_asterisk_after_type_cast.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_asterisk_after_type_cast.cfg
index 4a781152..4a781152 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_asterisk_after_type_cast.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_asterisk_after_type_cast.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_class-constr.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_class-constr.cfg
index 8824d97a..8824d97a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_class-constr.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_class-constr.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_continuation_left_shift.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_continuation_left_shift.cfg
index 767f2adc..767f2adc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_continuation_left_shift.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_continuation_left_shift.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_default_after_override.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_default_after_override.cfg
index 7373e8d1..7373e8d1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_default_after_override.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_default_after_override.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_eigen_comma_init.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_eigen_comma_init.cfg
index a798cc5f..a798cc5f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_eigen_comma_init.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_eigen_comma_init.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_fcall-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_fcall-2.cfg
index 795a16e9..795a16e9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_fcall-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_fcall-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_fcall.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_fcall.cfg
index 2df9b2e0..2df9b2e0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_fcall.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_fcall.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params-t.cfg
index 6072ca53..6072ca53 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_gap.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_gap.cfg
index 314c2e1b..314c2e1b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_gap.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_gap.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_span-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_span-1.cfg
index 5695e5a4..5695e5a4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_span-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_span-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_thresh_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_thresh_1.cfg
index acae1cc7..acae1cc7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_thresh_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_thresh_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_thresh_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_thresh_2.cfg
index 355705f1..355705f1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_thresh_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_thresh_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_thresh_3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_thresh_3.cfg
index 48912fce..48912fce 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_thresh_3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_thresh_3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_thresh_4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_thresh_4.cfg
index 284a5ee8..284a5ee8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_params_thresh_4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_params_thresh_4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_proto_thresh_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_proto_thresh_1.cfg
index b6a93b5b..b6a93b5b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_proto_thresh_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_proto_thresh_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_proto_thresh_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_proto_thresh_2.cfg
index 363ea06c..363ea06c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_proto_thresh_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_proto_thresh_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_proto_thresh_3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_proto_thresh_3.cfg
index 3a5ac106..3a5ac106 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_proto_thresh_3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_proto_thresh_3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_proto_thresh_4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_proto_thresh_4.cfg
index 6b084d86..6b084d86 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_proto_thresh_4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_proto_thresh_4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_proto_thresh_5.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_proto_thresh_5.cfg
index 8a8dff6b..8a8dff6b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_func_proto_thresh_5.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_func_proto_thresh_5.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_right_comment.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_right_comment.cfg
index 1551b394..1551b394 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_right_comment.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_right_comment.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_var_class_span-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_var_class_span-1.cfg
index a1b4122c..a1b4122c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_var_class_span-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_var_class_span-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_var_def_thresh_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_var_def_thresh_1.cfg
index 5cadc402..5cadc402 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_var_def_thresh_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_var_def_thresh_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_var_def_thresh_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_var_def_thresh_2.cfg
index bb9be8ad..bb9be8ad 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_var_def_thresh_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_var_def_thresh_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_var_def_thresh_3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_var_def_thresh_3.cfg
index edb77f43..edb77f43 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/align_var_def_thresh_3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/align_var_def_thresh_3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/anonymous_enum.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/anonymous_enum.cfg
index 503a2cb5..503a2cb5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/anonymous_enum.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/anonymous_enum.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/arith-vs-byref.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/arith-vs-byref.cfg
index 006060ca..006060ca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/arith-vs-byref.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/arith-vs-byref.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/arith-vs-ptr.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/arith-vs-ptr.cfg
index 60c8d23c..60c8d23c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/arith-vs-ptr.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/arith-vs-ptr.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/asm_block_pp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/asm_block_pp.cfg
index dd9eb164..dd9eb164 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/asm_block_pp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/asm_block_pp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/avalon.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/avalon.cfg
new file mode 100644
index 00000000..45accdc7
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/avalon.cfg
@@ -0,0 +1,15 @@
+sp_sparen_brace = add
+sp_before_byref = remove
+sp_before_byref_func = remove
+sp_before_square = force
+sp_func_proto_paren = remove
+sp_func_def_paren = remove
+sp_before_vardef_square = force
+indent_columns = 2
+nl_start_of_file = remove
+nl_struct_brace = remove
+nl_fdef_brace = force
+nl_after_func_body = 2
+eat_blanks_after_open_brace = true
+eat_blanks_before_close_brace = true
+mod_full_brace_if = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/avalon2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/avalon2.cfg
new file mode 100644
index 00000000..aa0644cf
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/avalon2.cfg
@@ -0,0 +1,13 @@
+sp_sparen_brace = add
+sp_before_ptr_star = remove
+sp_between_ptr_ref = remove
+sp_before_byref = remove
+sp_before_angle = remove
+sp_inside_angle = remove
+sp_angle_paren = remove
+sp_angle_paren_empty = remove
+sp_angle_word = force
+sp_before_square = force
+indent_columns = 2
+nl_if_brace = remove
+nl_after_func_proto_group = 2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/avalon3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/avalon3.cfg
index 30f50cb7..30f50cb7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/avalon3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/avalon3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/avalon4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/avalon4.cfg
new file mode 100644
index 00000000..ab173208
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/avalon4.cfg
@@ -0,0 +1,14 @@
+sp_sparen_brace = add
+sp_before_ptr_star = remove
+sp_after_ptr_star = force
+sp_before_angle = remove
+sp_inside_angle = remove
+sp_after_comma = force
+sp_before_dc = remove
+sp_after_ptr_star_qualifier = remove
+indent_columns = 2
+nl_end_of_file = force
+nl_end_of_file_min = 1
+nl_if_brace = remove
+nl_func_decl_args = remove
+mod_full_brace_if = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_001.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_001.cfg
index e1bce1fa..e1bce1fa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_001.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_001.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_003.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_003.cfg
index b6dffc7c..b6dffc7c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_003.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_003.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_004.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_004.cfg
index fa3c13c3..fa3c13c3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_004.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_004.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_005.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_005.cfg
index 6784d5f8..6784d5f8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_005.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_005.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_006.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_006.cfg
index 2767d063..2767d063 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_006.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_006.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_008.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_008.cfg
index ac567894..ac567894 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_008.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_008.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_009.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_009.cfg
index 314bb848..314bb848 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_009.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_009.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_010.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_010.cfg
index c4536db3..c4536db3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_010.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_010.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_012.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_012.cfg
index 73c218c5..73c218c5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_012.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_012.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_013.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_013.cfg
index be76962d..be76962d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_013.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_013.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_014.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_014.cfg
index 95250f61..95250f61 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_014.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_014.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_015.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_015.cfg
index 0e139678..0e139678 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_015.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_015.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_016.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_016.cfg
index 9b863f1d..9b863f1d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_016.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_016.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_017.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_017.cfg
index a4acecc3..a4acecc3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_017.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_017.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_018.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_018.cfg
index c8dd1ab6..c8dd1ab6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_018.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_018.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_020.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_020.cfg
index 8cd270ef..8cd270ef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_020.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_020.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_021.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_021.cfg
index e8024afb..e8024afb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_021.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_021.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_022.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_022.cfg
index e258b9a3..e258b9a3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_022.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_022.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_023.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_023.cfg
index acb9b682..acb9b682 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_023.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_023.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_024.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_024.cfg
index 37954be0..37954be0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_024.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_024.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_026.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_026.cfg
index f7008ee3..f7008ee3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_026.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_026.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_027.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_027.cfg
index fbbdb06a..fbbdb06a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_027.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_027.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_028.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_028.cfg
index 62848095..62848095 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_028.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_028.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_029.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_029.cfg
index a0c2e18c..a0c2e18c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_029.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_029.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_030.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_030.cfg
index 8663afd4..8663afd4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ben_030.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_030.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_031.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_031.cfg
new file mode 100644
index 00000000..97dc5912
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ben_031.cfg
@@ -0,0 +1,6 @@
+sp_after_bit_colon = force
+sp_before_bit_colon = force
+indent_columns = 3
+indent_class = true
+indent_label = 2
+indent_access_spec = 2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1001.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1001.cfg
index d8255ca7..d8255ca7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1001.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1001.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1003.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1003.cfg
index 242b3a13..242b3a13 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1003.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1003.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1004.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1004.cfg
index f479bada..f479bada 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1004.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1004.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1020.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1020.cfg
index 51643e87..51643e87 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1020.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1020.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1108.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1108.cfg
index 741ba79d..741ba79d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1108.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1108.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1160.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1160.cfg
index afc7030d..afc7030d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1160.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1160.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1161.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1161.cfg
index c7977cf0..c7977cf0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1161.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1161.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1169.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1169.cfg
index 0615b330..0615b330 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1169.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1169.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1170.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1170.cfg
index 9171180b..9171180b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1170.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1170.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1236.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1236.cfg
index 0c60d5be..0c60d5be 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1236.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1236.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1296-F.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1296-F.cfg
index 613f85d5..613f85d5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1296-F.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1296-F.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1296-T.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1296-T.cfg
index 82a970ff..82a970ff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1296-T.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1296-T.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1315.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1315.cfg
index 49a716d0..49a716d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1315.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1315.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1324.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1324.cfg
index 289ca9d5..289ca9d5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1324.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1324.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1340.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1340.cfg
index 6ec6568e..6ec6568e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1340.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1340.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1349.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1349.cfg
new file mode 100644
index 00000000..56328317
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1349.cfg
@@ -0,0 +1,4 @@
+indent_columns = 4
+code_width = 115
+align_struct_init_span = 5
+nl_type_brace_init_lst = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1395.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1395.cfg
index c2bed595..c2bed595 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1395.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1395.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1402.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1402.cfg
index e69de29b..e69de29b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1402.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1402.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1403.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1403.cfg
index 8e10acd4..8e10acd4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1403.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1403.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1432.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1432.cfg
index 4ae27492..4ae27492 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1432.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1432.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1439.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1439.cfg
index f625249d..f625249d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1439.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1439.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1452.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1452.cfg
index dbd0e9b4..dbd0e9b4 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1452.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1452.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1649.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1649.cfg
index 472975ab..472975ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1649.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1649.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1689.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1689.cfg
index 7c1462f1..7c1462f1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1689.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1689.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1691.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1691.cfg
index 03600f80..03600f80 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1691.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1691.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1717.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1717.cfg
index a6c7322f..a6c7322f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1717.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1717.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1758-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1758-f.cfg
index 90d17ebd..90d17ebd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1758-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1758-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1854.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1854.cfg
index ebc5c5e3..ebc5c5e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1854.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1854.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1862.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1862.cfg
index c23b9027..c23b9027 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_1862.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_1862.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2285.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2285.cfg
index fa3b437b..fa3b437b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2285.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2285.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2322.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2322.cfg
index a16bec3d..a16bec3d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2322.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2322.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2371.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2371.cfg
index 1f207beb..1f207beb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2371.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2371.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2402.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2402.cfg
index 85c3a458..85c3a458 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2402.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2402.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2433_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2433_1.cfg
index 17fd04a4..17fd04a4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2433_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2433_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2433_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2433_2.cfg
index 89f0b916..89f0b916 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_2433_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_2433_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_472.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_472.cfg
index 68d6f99b..68d6f99b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_472.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_472.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_488.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_488.cfg
index 0319ef54..0319ef54 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_488.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_488.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_633.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_633.cfg
index 61833884..61833884 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_633.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_633.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_657.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_657.cfg
index 109e3750..109e3750 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_657.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_657.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_664.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_664.cfg
index 3799bd89..3799bd89 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_664.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_664.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_670.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_670.cfg
index fe57c0af..fe57c0af 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_670.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_670.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_858-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_858-f.cfg
index 1f03334a..1f03334a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_858-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_858-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_858-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_858-r.cfg
index 82e3cb22..82e3cb22 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_858-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_858-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_322.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_322.cfg
index e49770be..e49770be 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_322.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_322.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_359.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_359.cfg
index ab9c63fb..ab9c63fb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_359.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_359.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_405.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_405.cfg
index 0bdfce99..0bdfce99 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_405.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_405.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_409-create.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_409-create.cfg
new file mode 100644
index 00000000..936b04a8
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_409-create.cfg
@@ -0,0 +1,4 @@
+sp_after_sparen = add
+nl_create_if_one_liner = true
+nl_create_for_one_liner = true
+nl_create_while_one_liner = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_409-split.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_409-split.cfg
index 9e272905..9e272905 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_409-split.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_409-split.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_478.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_478.cfg
index 18db9a6d..18db9a6d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_478.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_478.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_663.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_663.cfg
index 9d780855..9d780855 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_663.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_663.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_666.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_666.cfg
index 6acabd49..6acabd49 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_666.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_666.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_752.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_752.cfg
index 93191dc0..93191dc0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/bug_i_752.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/bug_i_752.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-center.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-center.cfg
index 5d370736..5d370736 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-center.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-center.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-f.cfg
index a50d0c1a..a50d0c1a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-i.cfg
index 9d15782c..9d15782c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-ir.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-ir.cfg
index df89f6e3..df89f6e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-ir.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-ir.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-left.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-left.cfg
index d28c4e5e..d28c4e5e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-left.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-left.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-r.cfg
index 505f9dc0..505f9dc0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-right.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-right.cfg
index 82fb7287..82fb7287 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/byref-right.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/byref-right.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cast.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cast.cfg
index feac5350..feac5350 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cast.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cast.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-colon-pos-eol-add.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-colon-pos-eol-add.cfg
index 64c29340..64c29340 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-colon-pos-eol-add.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-colon-pos-eol-add.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-colon-pos-eol.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-colon-pos-eol.cfg
index cf80d3f9..cf80d3f9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-colon-pos-eol.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-colon-pos-eol.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-colon-pos-sol-add.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-colon-pos-sol-add.cfg
index dc967004..dc967004 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-colon-pos-sol-add.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-colon-pos-sol-add.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-colon-pos-sol.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-colon-pos-sol.cfg
index bae3b53b..bae3b53b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-colon-pos-sol.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-colon-pos-sol.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-nl_func-add.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-nl_func-add.cfg
index d60ffa9b..d60ffa9b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-nl_func-add.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-nl_func-add.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-nl_func-add2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-nl_func-add2.cfg
new file mode 100644
index 00000000..148e33a3
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-nl_func-add2.cfg
@@ -0,0 +1,18 @@
+# moves class colon ops to the end of line
+sp_before_byref = remove
+sp_after_comma = force
+sp_before_dc = remove
+sp_after_dc = remove
+indent_columns = 3
+indent_class = true
+indent_access_spec = 2
+nl_class_init_args = add
+nl_constr_init_args = remove
+nl_fdef_brace = force
+nl_class_colon = add
+nl_constr_colon = remove
+eat_blanks_after_open_brace = true
+pos_class_comma = trail
+align_nl_cont = 1
+align_pp_define_gap = 4
+align_pp_define_span = 3
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-nl_func-del.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-nl_func-del.cfg
index b90f2f75..b90f2f75 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-nl_func-del.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-nl_func-del.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-on-colon-indent.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-on-colon-indent.cfg
index e21fbc7d..e21fbc7d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/class-on-colon-indent.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/class-on-colon-indent.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_convert_tab_to_spaces-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_convert_tab_to_spaces-t.cfg
index 98b3bcf3..98b3bcf3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_convert_tab_to_spaces-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_convert_tab_to_spaces-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_cpp_to_c-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_cpp_to_c-t.cfg
index 85c3fec8..85c3fec8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_cpp_to_c-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_cpp_to_c-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_indent-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_indent-1.cfg
index 8d0a8a16..8d0a8a16 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_indent-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_indent-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_indent-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_indent-2.cfg
index fd9b9d25..fd9b9d25 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_indent-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_indent-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_indent-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_indent-3.cfg
index c8e6ce41..c8e6ce41 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_indent-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_indent-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_multi_first_len_minimum-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_multi_first_len_minimum-1.cfg
index e7d99a98..e7d99a98 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_multi_first_len_minimum-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_multi_first_len_minimum-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_trailing_single_line_c_to_cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_trailing_single_line_c_to_cpp.cfg
index 0754b419..0754b419 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cmt_trailing_single_line_c_to_cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cmt_trailing_single_line_c_to_cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/code_width-70.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/code_width-70.cfg
index 07c25e5c..07c25e5c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/code_width-70.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/code_width-70.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/comma-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/comma-f.cfg
index 29eb50b5..29eb50b5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/comma-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/comma-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/comma-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/comma-i.cfg
index 2dad1026..2dad1026 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/comma-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/comma-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/comma-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/comma-r.cfg
index 5194e6da..5194e6da 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/comma-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/comma-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/const_throw.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/const_throw.cfg
index 41b3ecef..41b3ecef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/const_throw.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/const_throw.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/constr_colon.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/constr_colon.cfg
index 3397573a..3397573a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/constr_colon.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/constr_colon.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cpp17.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cpp17.cfg
index 1865e0c8..1865e0c8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cpp17.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cpp17.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cu.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cu.cfg
index 40dff3e5..40dff3e5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/cu.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/cu.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/custom-open.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/custom-open.cfg
index 5b4539e2..5b4539e2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/custom-open.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/custom-open.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/custom-open2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/custom-open2.cfg
index 38e507b5..38e507b5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/custom-open2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/custom-open2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/disable_nl_cont.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/disable_nl_cont.cfg
index f80605fd..f80605fd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/disable_nl_cont.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/disable_nl_cont.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/dont-detab-strings.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/dont-detab-strings.cfg
index 9e36729d..9e36729d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/dont-detab-strings.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/dont-detab-strings.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/dont-process-defines.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/dont-process-defines.cfg
index 051f834f..051f834f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/dont-process-defines.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/dont-process-defines.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/eat_blanks_after_codewidth.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/eat_blanks_after_codewidth.cfg
index 1b24a7ac..1b24a7ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/eat_blanks_after_codewidth.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/eat_blanks_after_codewidth.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ellipsis-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ellipsis-i.cfg
index 3b4d8ec6..3b4d8ec6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ellipsis-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ellipsis-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/enum.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/enum.cfg
index b39c0840..b39c0840 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/enum.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/enum.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/enum_comma-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/enum_comma-3.cfg
index 7fe548e2..7fe548e2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/enum_comma-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/enum_comma-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/enum_comma-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/enum_comma-4.cfg
index d42e6b1e..d42e6b1e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/enum_comma-4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/enum_comma-4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/enum_comma-6.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/enum_comma-6.cfg
index 6d4279ec..6d4279ec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/enum_comma-6.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/enum_comma-6.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/enum_comment_wrap.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/enum_comment_wrap.cfg
index e42e00a1..e42e00a1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/enum_comment_wrap.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/enum_comment_wrap.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/extern_func.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/extern_func.cfg
index a6135e8a..a6135e8a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/extern_func.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/extern_func.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/footer.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/footer.txt
index 1d2f941f..1d2f941f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/footer.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/footer.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/func_class.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/func_class.cfg
index 7f01b7be..7f01b7be 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/func_class.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/func_class.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/func_param.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/func_param.cfg
index 9162fd6d..9162fd6d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/func_param.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/func_param.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/functype_param-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/functype_param-f.cfg
index a870e0c5..a870e0c5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/functype_param-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/functype_param-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/functype_param-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/functype_param-r.cfg
index 9b70479a..9b70479a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/functype_param-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/functype_param-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/i1516.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/i1516.cfg
index 9d8433d8..9d8433d8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/i1516.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/i1516.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/i1536.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/i1536.cfg
index 5506f68c..5506f68c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/i1536.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/i1536.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/i1536.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/i1536.txt
index d34c497d..d34c497d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/i1536.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/i1536.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/i1768.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/i1768.cfg
index 9174483a..9174483a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/i1768.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/i1768.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/i683.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/i683.cfg
index 2b6edefe..2b6edefe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/i683.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/i683.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/if_chain_braces_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/if_chain_braces_2.cfg
new file mode 100644
index 00000000..792ea1a0
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/if_chain_braces_2.cfg
@@ -0,0 +1,3 @@
+sp_sparen_brace = add
+mod_full_brace_if_chain = 1
+mod_full_brace_if_chain_only = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_braces_no.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_braces_no.cfg
index 24ca060b..24ca060b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_braces_no.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_braces_no.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_class-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_class-t.cfg
index 78320e8a..78320e8a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_class-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_class-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_class-t_columns-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_class-t_columns-4.cfg
index 5184fc9a..5184fc9a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_class-t_columns-4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_class-t_columns-4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_columns-11.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_columns-11.cfg
index 15cef67e..15cef67e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_columns-11.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_columns-11.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_columns-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_columns-2.cfg
index f33cb665..f33cb665 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_columns-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_columns-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_columns-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_columns-4.cfg
index f4f5183a..f4f5183a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_columns-4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_columns-4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_comma_brace.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_comma_brace.cfg
index 19c3b161..19c3b161 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_comma_brace.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_comma_brace.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_comment_align_thresh_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_comment_align_thresh_2.cfg
index 2f5d5cab..2f5d5cab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_comment_align_thresh_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_comment_align_thresh_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ctor_init.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ctor_init.cfg
index cb1cef12..cb1cef12 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ctor_init.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ctor_init.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ctor_init_following.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ctor_init_following.cfg
index 140e8f17..140e8f17 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ctor_init_following.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ctor_init_following.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ctor_init_leading.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ctor_init_leading.cfg
index ce8fb22f..ce8fb22f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ctor_init_leading.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ctor_init_leading.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ctor_members_twice.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ctor_members_twice.cfg
index 82c708d4..82c708d4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ctor_members_twice.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ctor_members_twice.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_else_if-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_else_if-t.cfg
index 2dcd9a57..2dcd9a57 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_else_if-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_else_if-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_first_for_expr-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_first_for_expr-t.cfg
index ff68e85c..ff68e85c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_first_for_expr-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_first_for_expr-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_func_proto_param-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_func_proto_param-t.cfg
index 04301ff7..04301ff7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_func_proto_param-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_func_proto_param-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ignore_before_class_colon-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ignore_before_class_colon-t.cfg
index 6564f4d0..6564f4d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ignore_before_class_colon-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ignore_before_class_colon-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ignore_before_constr_colon-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ignore_before_constr_colon-t.cfg
index 6e9fa193..6e9fa193 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_ignore_before_constr_colon-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_ignore_before_constr_colon-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_namespace-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_namespace-t.cfg
index 90bbdaec..90bbdaec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_namespace-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_namespace-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_namespace_inner_only.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_namespace_inner_only.cfg
index bb715758..bb715758 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_namespace_inner_only.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_namespace_inner_only.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_namespace_single_indent.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_namespace_single_indent.cfg
index 9f66fea4..9f66fea4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_namespace_single_indent.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_namespace_single_indent.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_off_after_return.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_off_after_return.cfg
index 077c5f94..077c5f94 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_off_after_return.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_off_after_return.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_once.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_once.cfg
index 013985b9..013985b9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_once.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_once.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_param.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_param.cfg
index 07d98897..07d98897 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_param.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_param.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_after_func_call-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_after_func_call-t.cfg
index eafffebc..eafffebc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_after_func_call-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_after_func_call-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_after_func_decl-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_after_func_decl-t.cfg
index c4db2ffe..c4db2ffe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_after_func_decl-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_after_func_decl-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_after_func_def-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_after_func_def-t.cfg
index 5d2895e9..5d2895e9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_after_func_def-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_after_func_def-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_close_0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_close_0.cfg
index b14f0bc5..b14f0bc5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_close_0.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_close_0.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_close_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_close_1.cfg
index 06795707..06795707 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_close_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_close_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_close_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_close_2.cfg
index b78b2995..b78b2995 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_paren_close_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_paren_close_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_semicolon_for_paren-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_semicolon_for_paren-t.cfg
index 6b49dbd6..6b49dbd6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_semicolon_for_paren-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_semicolon_for_paren-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_shift.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_shift.cfg
index 481d7d07..481d7d07 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_shift.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_shift.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_var_def_cont-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_var_def_cont-t.cfg
index f439a00b..f439a00b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_var_def_cont-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_var_def_cont-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_with_tabs-0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_with_tabs-0.cfg
index bd2c3a08..bd2c3a08 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/indent_with_tabs-0.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/indent_with_tabs-0.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/initlist_leading_commas.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/initlist_leading_commas.cfg
index ebd35547..ebd35547 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/initlist_leading_commas.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/initlist_leading_commas.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/interface-keyword-in-cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/interface-keyword-in-cpp.cfg
index cbbf215b..cbbf215b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/interface-keyword-in-cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/interface-keyword-in-cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1778.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1778.cfg
index 2f4bd642..2f4bd642 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1778.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1778.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1782.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1782.cfg
index 6d50bfeb..6d50bfeb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1782.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1782.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1804.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1804.cfg
index 4c424b89..4c424b89 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1804.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1804.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1887.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1887.cfg
index 956ea6a9..956ea6a9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1887.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1887.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1916.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1916.cfg
index 414a4a96..414a4a96 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1916.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1916.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1985.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1985.cfg
index 3be58c29..3be58c29 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1985.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1985.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1997.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1997.cfg
index 1f79d36e..1f79d36e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_1997.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_1997.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2124-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2124-1.cfg
index e69de29b..e69de29b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2124-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2124-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2124-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2124-2.cfg
index 37eeb5f2..37eeb5f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2124-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2124-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2209.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2209.cfg
index 414a7273..414a7273 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2209.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2209.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2623_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2623_1.cfg
index 56ab3a56..56ab3a56 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2623_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2623_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2623_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2623_2.cfg
index 2848fb59..2848fb59 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2623_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2623_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2623_3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2623_3.cfg
index 52d17555..52d17555 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_2623_3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_2623_3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_1_neg.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_1_neg.cfg
new file mode 100644
index 00000000..790403a8
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_1_neg.cfg
@@ -0,0 +1,7 @@
+code_width = 60
+indent_with_tabs = 1
+indent_columns = 2
+indent_continue = -7
+input_tab_size = 2
+output_tab_size = 2
+sp_assign = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_1_pos.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_1_pos.cfg
new file mode 100644
index 00000000..02fa0c38
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_1_pos.cfg
@@ -0,0 +1,7 @@
+code_width = 60
+indent_with_tabs = 1
+indent_columns = 2
+indent_continue = 5
+input_tab_size = 2
+output_tab_size = 2
+sp_assign = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_1_zero.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_1_zero.cfg
new file mode 100644
index 00000000..cd22d8bb
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_1_zero.cfg
@@ -0,0 +1,7 @@
+code_width = 60
+indent_with_tabs = 1
+indent_columns = 2
+indent_continue = 0
+input_tab_size = 2
+output_tab_size = 2
+sp_assign = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_2_neg.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_2_neg.cfg
new file mode 100644
index 00000000..806250c7
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_2_neg.cfg
@@ -0,0 +1,69 @@
+newlines = lf
+input_tab_size = 2
+output_tab_size = 2
+sp_arith = force
+sp_assign = force
+sp_inside_paren = remove
+sp_paren_paren = remove
+sp_before_ptr_star = force
+sp_before_ptr_star_func = remove
+sp_before_unnamed_ptr_star = remove
+sp_after_ptr_star = remove
+sp_after_ptr_star_qualifier = remove
+sp_after_ptr_star_func = force
+sp_ptr_star_func_var = remove
+sp_ptr_star_func_type = remove
+sp_ptr_star_paren = force
+sp_before_byref = force
+sp_before_unnamed_byref = force
+sp_after_byref = remove
+sp_after_comma = force
+sp_before_comma = remove
+sp_after_constr_colon = force
+sp_before_constr_colon = force
+sp_type_func = force
+sp_type_brace_init_lst = force
+sp_func_type_paren = remove
+sp_func_def_paren = remove
+sp_func_def_paren_empty = remove
+sp_inside_fparens = remove
+sp_inside_fparen = remove
+sp_func_call_paren = remove
+sp_cond_question = force
+indent_columns = 2
+indent_continue = -8
+indent_with_tabs = 1
+indent_align_string = true
+indent_ignore_before_constr_colon = false
+indent_constr_colon = true
+indent_ctor_init_leading = 2
+indent_ctor_init_following = 2
+indent_ctor_init = 2
+indent_else_if = false
+nl_end_of_file = force
+nl_end_of_file_min = 1
+nl_case_colon_brace = force
+nl_class_brace = force
+nl_class_init_args = remove
+nl_constr_init_args = remove
+nl_enum_own_lines = force
+nl_func_decl_start = remove
+nl_func_def_start = remove
+nl_func_decl_args = remove
+nl_func_def_args = remove
+nl_func_call_args = remove
+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 = remove
+nl_func_call_end = remove
+nl_before_brace_open = true
+pos_arith = join
+pos_assign = join
+pos_bool = trail
+pos_comma = trail
+pos_constr_comma = trail
+pos_constr_colon = trail
+code_width = 100
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_2_pos.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_2_pos.cfg
new file mode 100644
index 00000000..29afa7d9
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_2_pos.cfg
@@ -0,0 +1,69 @@
+newlines = lf
+input_tab_size = 2
+output_tab_size = 2
+sp_arith = force
+sp_assign = force
+sp_inside_paren = remove
+sp_paren_paren = remove
+sp_before_ptr_star = force
+sp_before_ptr_star_func = remove
+sp_before_unnamed_ptr_star = remove
+sp_after_ptr_star = remove
+sp_after_ptr_star_qualifier = remove
+sp_after_ptr_star_func = force
+sp_ptr_star_func_var = remove
+sp_ptr_star_func_type = remove
+sp_ptr_star_paren = force
+sp_before_byref = force
+sp_before_unnamed_byref = force
+sp_after_byref = remove
+sp_after_comma = force
+sp_before_comma = remove
+sp_after_constr_colon = force
+sp_before_constr_colon = force
+sp_type_func = force
+sp_type_brace_init_lst = force
+sp_func_type_paren = remove
+sp_func_def_paren = remove
+sp_func_def_paren_empty = remove
+sp_inside_fparens = remove
+sp_inside_fparen = remove
+sp_func_call_paren = remove
+sp_cond_question = force
+indent_columns = 2
+indent_continue = 4
+indent_with_tabs = 1
+indent_align_string = true
+indent_ignore_before_constr_colon = false
+indent_constr_colon = true
+indent_ctor_init_leading = 2
+indent_ctor_init_following = 2
+indent_ctor_init = 2
+indent_else_if = false
+nl_end_of_file = force
+nl_end_of_file_min = 1
+nl_case_colon_brace = force
+nl_class_brace = force
+nl_class_init_args = remove
+nl_constr_init_args = remove
+nl_enum_own_lines = force
+nl_func_decl_start = remove
+nl_func_def_start = remove
+nl_func_decl_args = remove
+nl_func_def_args = remove
+nl_func_call_args = remove
+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 = remove
+nl_func_call_end = remove
+nl_before_brace_open = true
+pos_arith = join
+pos_assign = join
+pos_bool = trail
+pos_comma = trail
+pos_constr_comma = trail
+pos_constr_colon = trail
+code_width = 100
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_2_zero.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_2_zero.cfg
new file mode 100644
index 00000000..25453288
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3105_2_zero.cfg
@@ -0,0 +1,69 @@
+newlines = lf
+input_tab_size = 2
+output_tab_size = 2
+sp_arith = force
+sp_assign = force
+sp_inside_paren = remove
+sp_paren_paren = remove
+sp_before_ptr_star = force
+sp_before_ptr_star_func = remove
+sp_before_unnamed_ptr_star = remove
+sp_after_ptr_star = remove
+sp_after_ptr_star_qualifier = remove
+sp_after_ptr_star_func = force
+sp_ptr_star_func_var = remove
+sp_ptr_star_func_type = remove
+sp_ptr_star_paren = force
+sp_before_byref = force
+sp_before_unnamed_byref = force
+sp_after_byref = remove
+sp_after_comma = force
+sp_before_comma = remove
+sp_after_constr_colon = force
+sp_before_constr_colon = force
+sp_type_func = force
+sp_type_brace_init_lst = force
+sp_func_type_paren = remove
+sp_func_def_paren = remove
+sp_func_def_paren_empty = remove
+sp_inside_fparens = remove
+sp_inside_fparen = remove
+sp_func_call_paren = remove
+sp_cond_question = force
+indent_columns = 2
+indent_continue = 0
+indent_with_tabs = 1
+indent_align_string = true
+indent_ignore_before_constr_colon = false
+indent_constr_colon = true
+indent_ctor_init_leading = 2
+indent_ctor_init_following = 2
+indent_ctor_init = 2
+indent_else_if = false
+nl_end_of_file = force
+nl_end_of_file_min = 1
+nl_case_colon_brace = force
+nl_class_brace = force
+nl_class_init_args = remove
+nl_constr_init_args = remove
+nl_enum_own_lines = force
+nl_func_decl_start = remove
+nl_func_def_start = remove
+nl_func_decl_args = remove
+nl_func_def_args = remove
+nl_func_call_args = remove
+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 = remove
+nl_func_call_end = remove
+nl_before_brace_open = true
+pos_arith = join
+pos_assign = join
+pos_bool = trail
+pos_comma = trail
+pos_constr_comma = trail
+pos_constr_colon = trail
+code_width = 100
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_3116-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3116-2.cfg
index f26ef61e..f26ef61e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_3116-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3116-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_3116.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3116.cfg
index 034f2697..034f2697 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_3116.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3116.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_3378.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3378.cfg
index 8ecc9f2f..8ecc9f2f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_3378.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_3378.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_564.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_564.cfg
index d1496108..d1496108 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_564.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_564.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_574-i-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_574-i-a.cfg
index 24a1a182..24a1a182 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_574-i-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_574-i-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_574-i-b.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_574-i-b.cfg
index b61ac3e2..b61ac3e2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_574-i-b.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_574-i-b.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_574-i-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_574-i-i.cfg
index c0177cb1..c0177cb1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_574-i-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_574-i-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_574.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_574.cfg
index 925ee5fe..925ee5fe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/issue_574.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/issue_574.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/kdepim2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/kdepim2.cfg
index 18b12bbe..18b12bbe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/kdepim2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/kdepim2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/kdepim3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/kdepim3.cfg
index 0fe42133..0fe42133 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/kdepim3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/kdepim3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/kdepim5.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/kdepim5.cfg
index 56a1b3da..56a1b3da 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/kdepim5.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/kdepim5.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lambda1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lambda1.cfg
index c0fbc795..c0fbc795 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lambda1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lambda1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lambda2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lambda2.cfg
index 9f698209..9f698209 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lambda2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lambda2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lambda3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lambda3.cfg
index ffed35eb..ffed35eb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lambda3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lambda3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lambda4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lambda4.cfg
index 63a99010..63a99010 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lambda4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lambda4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lambda_in_one_liner.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lambda_in_one_liner.cfg
index 7b61e767..7b61e767 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lambda_in_one_liner.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lambda_in_one_liner.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lineEndings-to-Mac.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lineEndings-to-Mac.cfg
index d8b41944..d8b41944 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lineEndings-to-Mac.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lineEndings-to-Mac.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lineEndings-to-Unix.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lineEndings-to-Unix.cfg
index e6cf9411..e6cf9411 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lineEndings-to-Unix.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lineEndings-to-Unix.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lineEndings-to-Win.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lineEndings-to-Win.cfg
index cb40d365..cb40d365 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/lineEndings-to-Win.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/lineEndings-to-Win.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/long_br_cmt.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/long_br_cmt.cfg
index f66ee7c7..f66ee7c7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/long_br_cmt.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/long_br_cmt.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/long_namespace.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/long_namespace.cfg
index 74f99a18..74f99a18 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/long_namespace.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/long_namespace.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_add_long_class_closebrace_comment.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_add_long_class_closebrace_comment.cfg
index a3752ab8..a3752ab8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_add_long_class_closebrace_comment.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_add_long_class_closebrace_comment.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_add_long_namespace_closebrace_comment-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_add_long_namespace_closebrace_comment-1.cfg
index a94f5a62..a94f5a62 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_add_long_namespace_closebrace_comment-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_add_long_namespace_closebrace_comment-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_full_brace_if_chain-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_full_brace_if_chain-1.cfg
new file mode 100644
index 00000000..678bce2d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_full_brace_if_chain-1.cfg
@@ -0,0 +1,2 @@
+sp_sparen_brace = add
+mod_full_brace_if_chain = 1
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_full_brace_if_chain-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_full_brace_if_chain-2.cfg
new file mode 100644
index 00000000..6c0fec7c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_full_brace_if_chain-2.cfg
@@ -0,0 +1,2 @@
+sp_sparen_brace = add
+mod_full_brace_if_chain = 2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_full_brace_if_chain-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_full_brace_if_chain-3.cfg
new file mode 100644
index 00000000..90ab2ba5
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_full_brace_if_chain-3.cfg
@@ -0,0 +1,2 @@
+sp_sparen_brace = add
+mod_full_brace_if_chain = 3
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_paren_on_throw-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_paren_on_throw-a.cfg
index ca119beb..ca119beb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_paren_on_throw-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_paren_on_throw-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_paren_on_throw-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_paren_on_throw-f.cfg
index b442438e..b442438e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_paren_on_throw-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_paren_on_throw-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_paren_on_throw-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_paren_on_throw-i.cfg
index 517dfce3..517dfce3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_paren_on_throw-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_paren_on_throw-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_paren_on_throw-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_paren_on_throw-r.cfg
index 498b6b01..498b6b01 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_paren_on_throw-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_paren_on_throw-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_remove_empty_return-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_remove_empty_return-t.cfg
index 3e1bcd1f..3e1bcd1f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_remove_empty_return-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_remove_empty_return-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_remove_extra_semicolon-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_remove_extra_semicolon-t.cfg
index 0f2d5246..0f2d5246 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/mod_remove_extra_semicolon-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/mod_remove_extra_semicolon-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_1.cfg
index fe15ff0a..fe15ff0a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_10.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_10.cfg
index e5b917e8..e5b917e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_10.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_10.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_2.cfg
index b4063fd3..b4063fd3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_3.cfg
index d1c40d07..d1c40d07 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_4.cfg
index 651b4823..651b4823 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_5.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_5.cfg
index 94140b21..94140b21 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_5.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_5.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_6.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_6.cfg
index 4fd7a077..4fd7a077 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_6.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_6.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_7.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_7.cfg
index 4ee5733c..4ee5733c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_7.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_7.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_8.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_8.cfg
index 5d6d9c63..5d6d9c63 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_8.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_8.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_9.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_9.cfg
index be9a43e3..be9a43e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/multi_line_9.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/multi_line_9.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nSolve.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nSolve.cfg
index 6cc6fc27..6cc6fc27 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nSolve.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nSolve.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/negative_indent.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/negative_indent.cfg
index 39b1b007..39b1b007 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/negative_indent.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/negative_indent.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/new_op_a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/new_op_a.cfg
index d7501092..d7501092 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/new_op_a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/new_op_a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/new_op_f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/new_op_f.cfg
index 16784899..16784899 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/new_op_f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/new_op_f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/new_op_paren_open_close.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/new_op_paren_open_close.cfg
index 789c7abe..789c7abe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/new_op_paren_open_close.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/new_op_paren_open_close.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/new_op_r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/new_op_r.cfg
index b72cd2ae..b72cd2ae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/new_op_r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/new_op_r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl-brAfter-fcallParen.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl-brAfter-fcallParen.cfg
index 6a83f800..6a83f800 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl-brAfter-fcallParen.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl-brAfter-fcallParen.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_access_spec.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_access_spec.cfg
index a5d98c44..a5d98c44 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_access_spec.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_access_spec.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_body-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_body-2.cfg
new file mode 100644
index 00000000..6eb57487
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_body-2.cfg
@@ -0,0 +1,8 @@
+sp_fparen_brace = force
+indent_class = true
+nl_class_leave_one_liners = true
+nl_fdef_brace = remove
+nl_after_func_body = 4
+nl_min_after_func_body = 6
+nl_after_func_body_one_liner = 2
+eat_blanks_before_close_brace = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_body.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_body.cfg
new file mode 100644
index 00000000..2da46cf7
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_body.cfg
@@ -0,0 +1,6 @@
+sp_fparen_brace = force
+indent_class = true
+nl_fdef_brace = remove
+nl_after_func_body = 4
+nl_min_after_func_body = 3
+eat_blanks_before_close_brace = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_class_proto-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_class_proto-3.cfg
index 87b84e91..87b84e91 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_class_proto-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_class_proto-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_proto-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_proto-3.cfg
index c9bc1f45..c9bc1f45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_proto-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_proto-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_proto_group-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_proto_group-3.cfg
index 63fa256a..63fa256a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_after_func_proto_group-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_after_func_proto_group-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_assign_leave_one_liners.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_assign_leave_one_liners.cfg
index 6914813b..6914813b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_assign_leave_one_liners.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_assign_leave_one_liners.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_brace_open_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_brace_open_1.cfg
index 4146c6fb..4146c6fb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_brace_open_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_brace_open_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_brace_open_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_brace_open_2.cfg
index bc1aaf83..bc1aaf83 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_brace_open_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_brace_open_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_brace_open_3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_brace_open_3.cfg
index 02daa843..02daa843 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_brace_open_3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_brace_open_3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_func_body_def-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_func_body_def-1.cfg
index 03ee374a..03ee374a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_func_body_def-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_func_body_def-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_func_body_def-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_func_body_def-2.cfg
index 2f3ba945..2f3ba945 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_func_body_def-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_func_body_def-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_if_closing_paren-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_if_closing_paren-f.cfg
index 39539a4e..39539a4e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_if_closing_paren-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_if_closing_paren-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_if_closing_paren-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_if_closing_paren-r.cfg
index d3ab2d68..d3ab2d68 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_if_closing_paren-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_if_closing_paren-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_struct.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_struct.cfg
index ab325b19..ab325b19 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_before_struct.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_before_struct.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_brace_brace-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_brace_brace-a.cfg
index 25d3c271..25d3c271 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_brace_brace-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_brace_brace-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_brace_fparen-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_brace_fparen-f.cfg
index 0a731344..0a731344 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_brace_fparen-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_brace_fparen-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_brace_fparen-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_brace_fparen-r.cfg
index 5a749682..5a749682 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_brace_fparen-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_brace_fparen-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_class-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_class-a.cfg
index 8c1eb70e..8c1eb70e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_class-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_class-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_class-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_class-r.cfg
index 29cc4dc6..29cc4dc6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_class-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_class-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_fdef_brace-r__nl_collapse_empty_body-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_fdef_brace-r__nl_collapse_empty_body-t.cfg
index 26ee0c73..26ee0c73 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_fdef_brace-r__nl_collapse_empty_body-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_fdef_brace-r__nl_collapse_empty_body-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_fdef_brace_cond-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_fdef_brace_cond-f.cfg
index 7f08f9e3..7f08f9e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_fdef_brace_cond-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_fdef_brace_cond-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_fdef_brace_cond-fr.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_fdef_brace_cond-fr.cfg
index affe7156..affe7156 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_fdef_brace_cond-fr.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_fdef_brace_cond-fr.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_fdef_brace_cond-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_fdef_brace_cond-r.cfg
index e64f7f0c..e64f7f0c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_fdef_brace_cond-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_fdef_brace_cond-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_fdef_brace_cond-rf.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_fdef_brace_cond-rf.cfg
index 9b12913e..9b12913e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_fdef_brace_cond-rf.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_fdef_brace_cond-rf.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_for_leave_one_liners-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_for_leave_one_liners-f.cfg
index bdcceefd..bdcceefd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_for_leave_one_liners-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_for_leave_one_liners-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_for_leave_one_liners-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_for_leave_one_liners-t.cfg
index 4d11891e..4d11891e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_for_leave_one_liners-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_for_leave_one_liners-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_call_empty-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_call_empty-r.cfg
index da04d6fa..da04d6fa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_call_empty-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_call_empty-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_call_paren-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_call_paren-f.cfg
index 480ce89f..480ce89f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_call_paren-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_call_paren-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_call_paren_empty-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_call_paren_empty-r.cfg
index 48612eb5..48612eb5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_call_paren_empty-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_call_paren_empty-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_class_scope-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_class_scope-a.cfg
index dc9b2ec5..dc9b2ec5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_class_scope-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_class_scope-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_decl_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_decl_1.cfg
index 6a7f8d9b..6a7f8d9b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_decl_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_decl_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_decl_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_decl_2.cfg
index c0495a4b..c0495a4b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_decl_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_decl_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_def_paren_empty-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_def_paren_empty-r.cfg
index ddc5e5d2..ddc5e5d2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_def_paren_empty-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_def_paren_empty-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_paren_empty.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_paren_empty.cfg
index 63f0b8ad..63f0b8ad 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_paren_empty.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_paren_empty.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_scope_name-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_scope_name-a.cfg
index c814477d..c814477d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_scope_name-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_scope_name-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_type_name-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_type_name-r.cfg
index 9cc10873..9cc10873 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_type_name-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_type_name-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_type_name_class.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_type_name_class.cfg
index fcb08501..fcb08501 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_type_name_class.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_type_name_class.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_type_name_force.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_type_name_force.cfg
index ef8b317e..ef8b317e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_type_name_force.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_type_name_force.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_type_name_mixed.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_type_name_mixed.cfg
index 515400f2..515400f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_type_name_mixed.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_type_name_mixed.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_type_name_remove.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_type_name_remove.cfg
index ee38dd7e..ee38dd7e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_func_type_name_remove.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_func_type_name_remove.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_inside_namespace_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_inside_namespace_1.cfg
index c84309ca..c84309ca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_inside_namespace_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_inside_namespace_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_inside_namespace_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_inside_namespace_2.cfg
index 9edefd02..9edefd02 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_inside_namespace_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_inside_namespace_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_max_after_func_body.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_max_after_func_body.cfg
new file mode 100644
index 00000000..2926bc32
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_max_after_func_body.cfg
@@ -0,0 +1,5 @@
+sp_fparen_brace = force
+indent_class = true
+nl_fdef_brace = remove
+nl_max_after_func_body = 3
+eat_blanks_before_close_brace = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_max_blank_in_func-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_max_blank_in_func-1.cfg
index 9aa3416c..9aa3416c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_max_blank_in_func-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_max_blank_in_func-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_max_blank_in_func-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_max_blank_in_func-4.cfg
index 8d0bdf67..8d0bdf67 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_max_blank_in_func-4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_max_blank_in_func-4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_min_after_func_body.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_min_after_func_body.cfg
new file mode 100644
index 00000000..93ff0359
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_min_after_func_body.cfg
@@ -0,0 +1,5 @@
+sp_fparen_brace = force
+indent_class = true
+nl_fdef_brace = remove
+nl_min_after_func_body = 3
+eat_blanks_before_close_brace = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_namespace-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_namespace-a.cfg
index bc5d6469..bc5d6469 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_namespace-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_namespace-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_namespace-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_namespace-r.cfg
index ca9c198d..ca9c198d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_namespace-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_namespace-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_remove_extra_newlines-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_remove_extra_newlines-1.cfg
index 2d0c48b2..2d0c48b2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_remove_extra_newlines-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_remove_extra_newlines-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_template-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_template-f.cfg
index a90d1500..a90d1500 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_template-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_template-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_template-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_template-r.cfg
index 443693e5..443693e5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_template-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_template-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_throw_expr-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_throw_expr-a.cfg
index 0a8e4192..0a8e4192 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_throw_expr-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_throw_expr-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_throw_expr-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_throw_expr-f.cfg
index 406bd3ae..406bd3ae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_throw_expr-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_throw_expr-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_throw_expr-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_throw_expr-i.cfg
index 608f3065..608f3065 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_throw_expr-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_throw_expr-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_throw_expr-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_throw_expr-r.cfg
index 80267701..80267701 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_throw_expr-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_throw_expr-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_try-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_try-a.cfg
index b85fcb08..b85fcb08 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_try-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_try-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst-f.cfg
index 1b29c5cd..1b29c5cd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst-r.cfg
index ef8d1de1..ef8d1de1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst_close-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst_close-f.cfg
index 4e070657..4e070657 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst_close-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst_close-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst_close-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst_close-r.cfg
index d4834efd..d4834efd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst_close-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst_close-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst_open-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst_open-f.cfg
index 1e9289e4..1e9289e4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst_open-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst_open-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst_open-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst_open-r.cfg
index 7d493c8b..7d493c8b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/nl_type_brace_init_lst_open-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/nl_type_brace_init_lst_open-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/no_squeeze_ifdef.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/no_squeeze_ifdef.cfg
index af4a3020..af4a3020 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/no_squeeze_ifdef.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/no_squeeze_ifdef.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/op-space-force.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/op-space-force.cfg
index 4feac69a..4feac69a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/op-space-force.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/op-space-force.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/op-space-remove-align-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/op-space-remove-align-1.cfg
index 5be45718..5be45718 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/op-space-remove-align-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/op-space-remove-align-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/op-space-remove-align-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/op-space-remove-align-2.cfg
index 32b7687a..32b7687a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/op-space-remove-align-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/op-space-remove-align-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/op-space-remove.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/op-space-remove.cfg
index 5424ede9..5424ede9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/op-space-remove.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/op-space-remove.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/op_sym_empty.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/op_sym_empty.cfg
index d9a57ce1..d9a57ce1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/op_sym_empty.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/op_sym_empty.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/out-668-F.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/out-668-F.cfg
index 77d9e08c..77d9e08c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/out-668-F.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/out-668-F.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/out-668-T.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/out-668-T.cfg
index a48c3ebb..a48c3ebb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/out-668-T.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/out-668-T.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_assign.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_assign.cfg
index 3b9c3700..3b9c3700 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_assign.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_assign.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_comma-lf.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_comma-lf.cfg
index 9f2daab6..9f2daab6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_comma-lf.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_comma-lf.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_comma-tb.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_comma-tb.cfg
index 3530982a..3530982a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_comma-tb.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_comma-tb.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_enum_comma-tf.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_enum_comma-tf.cfg
index 26cf3dff..26cf3dff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_enum_comma-tf.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_enum_comma-tf.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_shift-join.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_shift-join.cfg
index 69ce2c94..69ce2c94 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_shift-join.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_shift-join.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_shift-lead.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_shift-lead.cfg
index 08e7d5de..08e7d5de 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_shift-lead.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_shift-lead.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_shift-trail.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_shift-trail.cfg
index a6b45298..a6b45298 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pos_shift-trail.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pos_shift-trail.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pp-pragma.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pp-pragma.cfg
index e143a69c..e143a69c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pp-pragma.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pp-pragma.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pp_define_at_level-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pp_define_at_level-1.cfg
index 75f6a6a4..75f6a6a4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/pp_define_at_level-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pp_define_at_level-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pp_multi_comment.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pp_multi_comment.cfg
new file mode 100644
index 00000000..909e8c2c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/pp_multi_comment.cfg
@@ -0,0 +1,7 @@
+sp_after_comma = force
+indent_columns = 3
+nl_class_colon = force
+align_nl_cont = 1
+align_pp_define_gap = 4
+align_pp_define_span = 3
+indent_with_tabs = 0
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ptr_star-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ptr_star-1.cfg
index 34a504be..34a504be 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ptr_star-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ptr_star-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ptr_star-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ptr_star-2.cfg
index 6af95864..6af95864 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/ptr_star-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ptr_star-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ptr_star-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ptr_star-3.cfg
new file mode 100644
index 00000000..de71e0d1
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/ptr_star-3.cfg
@@ -0,0 +1,9 @@
+sp_before_ptr_star = force
+sp_before_ptr_star_func = remove
+sp_before_unnamed_ptr_star = remove
+sp_between_ptr_star = remove
+sp_after_ptr_star = remove
+sp_after_ptr_star_func = force
+sp_after_ptr_star_trailing = force
+sp_before_ptr_star_trailing = remove
+sp_after_ptr_star_qualifier = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/qt-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/qt-1.cfg
index b15663f7..b15663f7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/qt-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/qt-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/return_dont_remove.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/return_dont_remove.cfg
new file mode 100644
index 00000000..303753b3
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/return_dont_remove.cfg
@@ -0,0 +1 @@
+mod_remove_empty_return = false
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/return_remove.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/return_remove.cfg
new file mode 100644
index 00000000..3e1bcd1f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/return_remove.cfg
@@ -0,0 +1 @@
+mod_remove_empty_return = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sef.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sef.cfg
index ee467d79..ee467d79 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sef.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sef.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/semi-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/semi-f.cfg
index 0ffadc4a..0ffadc4a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/semi-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/semi-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/semi-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/semi-i.cfg
index b4260607..b4260607 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/semi-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/semi-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/semi-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/semi-r.cfg
index a8465b8c..a8465b8c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/semi-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/semi-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sf.2886991-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sf.2886991-f.cfg
index 46a15bac..46a15bac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sf.2886991-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sf.2886991-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sf.2886991-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sf.2886991-r.cfg
index 8f6c0f6d..8f6c0f6d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sf.2886991-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sf.2886991-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sf.3315874.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sf.3315874.cfg
index 99da8446..99da8446 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sf.3315874.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sf.3315874.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sf574.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sf574.cfg
index 8fc266f7..8fc266f7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sf574.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sf574.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sim.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sim.cfg
index cb954233..cb954233 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sim.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sim.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_angle-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_angle-1.cfg
index cae5bbb7..cae5bbb7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_angle-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_angle-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_angle-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_angle-2.cfg
index c14d7901..c14d7901 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_angle-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_angle-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_angle-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_angle-3.cfg
index d0428a10..d0428a10 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_angle-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_angle-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_cast-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_cast-f.cfg
index d92ffb0d..d92ffb0d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_cast-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_cast-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_cast-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_cast-r.cfg
index 130602eb..130602eb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_cast-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_cast-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_constr_colon.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_constr_colon.cfg
index aa1189dd..aa1189dd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_constr_colon.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_constr_colon.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_decltype-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_decltype-f.cfg
index 077c5f94..077c5f94 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_decltype-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_decltype-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_decltype-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_decltype-r.cfg
index 64a318a0..64a318a0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_decltype-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_decltype-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_ellipsis-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_ellipsis-f.cfg
index e30e169a..e30e169a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_ellipsis-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_ellipsis-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_ptr_star_qualifier-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_ptr_star_qualifier-f.cfg
index 7e26046f..7e26046f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_ptr_star_qualifier-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_ptr_star_qualifier-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_type-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_type-i.cfg
index bd45658a..bd45658a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_type-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_type-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_type_brace_init_lst_open-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_type_brace_init_lst_open-f.cfg
index d3b744b4..d3b744b4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_type_brace_init_lst_open-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_type_brace_init_lst_open-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_type_brace_init_lst_open-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_type_brace_init_lst_open-r.cfg
index f370b82e..f370b82e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_after_type_brace_init_lst_open-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_after_type_brace_init_lst_open-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_angle_colon.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_angle_colon.cfg
index e247bbbe..e247bbbe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_angle_colon.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_angle_colon.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_angle_paren-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_angle_paren-f.cfg
index 0b3d2f92..0b3d2f92 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_angle_paren-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_angle_paren-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_angle_paren_empty.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_angle_paren_empty.cfg
index 1e3c592b..1e3c592b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_angle_paren_empty.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_angle_paren_empty.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_arith-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_arith-a.cfg
index 4d60daa9..4d60daa9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_arith-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_arith-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_arith_additive-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_arith_additive-f.cfg
index 8e6f0585..8e6f0585 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_arith_additive-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_arith_additive-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_arith_additive-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_arith_additive-r.cfg
index e01e86f7..e01e86f7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_arith_additive-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_arith_additive-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_assign_default.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_assign_default.cfg
index 29411834..29411834 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_assign_default.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_assign_default.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_balance_nested_parens.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_balance_nested_parens.cfg
index 8e9dbb6f..8e9dbb6f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_balance_nested_parens.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_balance_nested_parens.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_byref_func.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_byref_func.cfg
index 6f5e2783..6f5e2783 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_byref_func.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_byref_func.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_case_colon.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_case_colon.cfg
index d0bef793..d0bef793 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_case_colon.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_case_colon.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_comma-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_comma-f.cfg
index dc25e313..dc25e313 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_comma-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_comma-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_constr_colon.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_constr_colon.cfg
index 9d0ec317..9d0ec317 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_constr_colon.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_constr_colon.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_ellipsis-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_ellipsis-f.cfg
index ed701425..ed701425 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_ellipsis-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_ellipsis-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_ellipsis-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_ellipsis-r.cfg
index e2163788..e2163788 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_ellipsis-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_ellipsis-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-a.cfg
new file mode 100644
index 00000000..28d19cfe
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-a.cfg
@@ -0,0 +1 @@
+sp_before_global_scope_ptr_star = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-f.cfg
new file mode 100644
index 00000000..9df29273
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-f.cfg
@@ -0,0 +1 @@
+sp_before_global_scope_ptr_star = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-i.cfg
new file mode 100644
index 00000000..5afb1141
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-i.cfg
@@ -0,0 +1 @@
+sp_before_global_scope_ptr_star = ignore
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-r.cfg
new file mode 100644
index 00000000..eac5b355
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_global_scope_ptr_star-r.cfg
@@ -0,0 +1 @@
+sp_before_global_scope_ptr_star = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-a.cfg
new file mode 100644
index 00000000..f40f3a62
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-a.cfg
@@ -0,0 +1 @@
+sp_before_operator_ptr_star = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-f.cfg
new file mode 100644
index 00000000..8b8e8332
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-f.cfg
@@ -0,0 +1 @@
+sp_before_operator_ptr_star = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-i.cfg
new file mode 100644
index 00000000..50a71231
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-i.cfg
@@ -0,0 +1 @@
+sp_before_operator_ptr_star = ignore
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-r.cfg
new file mode 100644
index 00000000..da110551
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_operator_ptr_star-r.cfg
@@ -0,0 +1 @@
+sp_before_operator_ptr_star = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_ptr_star-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_ptr_star-f.cfg
index 7653ec0b..7653ec0b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_ptr_star-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_ptr_star-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_ptr_star-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_ptr_star-r.cfg
index 55f99c73..55f99c73 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_ptr_star-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_ptr_star-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-a.cfg
new file mode 100644
index 00000000..045ee52d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-a.cfg
@@ -0,0 +1 @@
+sp_before_qualifier_ptr_star = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-f.cfg
new file mode 100644
index 00000000..4996ffc2
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-f.cfg
@@ -0,0 +1 @@
+sp_before_qualifier_ptr_star = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-i.cfg
new file mode 100644
index 00000000..ddb4d122
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-i.cfg
@@ -0,0 +1 @@
+sp_before_qualifier_ptr_star = ignore
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-r.cfg
new file mode 100644
index 00000000..67899aaa
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_qualifier_ptr_star-r.cfg
@@ -0,0 +1 @@
+sp_before_qualifier_ptr_star = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-a.cfg
new file mode 100644
index 00000000..22f4e1c0
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-a.cfg
@@ -0,0 +1 @@
+sp_before_scope_ptr_star = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-f.cfg
new file mode 100644
index 00000000..e47dce8d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-f.cfg
@@ -0,0 +1 @@
+sp_before_scope_ptr_star = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-i.cfg
new file mode 100644
index 00000000..f86b81a7
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-i.cfg
@@ -0,0 +1 @@
+sp_before_scope_ptr_star = ignore
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-r.cfg
new file mode 100644
index 00000000..7d90d59f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_scope_ptr_star-r.cfg
@@ -0,0 +1 @@
+sp_before_scope_ptr_star = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_tr_emb_cmt-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_tr_emb_cmt-a.cfg
index 834fd302..834fd302 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_tr_emb_cmt-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_tr_emb_cmt-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_tr_emb_cmt-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_tr_emb_cmt-f.cfg
index 54720c71..54720c71 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_tr_emb_cmt-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_tr_emb_cmt-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_type_brace_init_lst_close-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_type_brace_init_lst_close-f.cfg
index 3dda0281..3dda0281 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_type_brace_init_lst_close-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_type_brace_init_lst_close-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_type_brace_init_lst_close-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_type_brace_init_lst_close-r.cfg
index 5fb0bf36..5fb0bf36 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_before_type_brace_init_lst_close-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_before_type_brace_init_lst_close-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-a.cfg
new file mode 100644
index 00000000..9e631229
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-a.cfg
@@ -0,0 +1,13 @@
+sp_sparen_brace = add
+sp_before_ptr_star = remove
+sp_between_ptr_ref = add
+sp_before_byref = remove
+sp_before_angle = remove
+sp_inside_angle = remove
+sp_angle_paren = remove
+sp_angle_paren_empty = remove
+sp_angle_word = force
+sp_before_square = force
+indent_columns = 2
+nl_if_brace = remove
+nl_after_func_proto_group = 2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-f.cfg
new file mode 100644
index 00000000..fe49b810
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-f.cfg
@@ -0,0 +1,13 @@
+sp_sparen_brace = add
+sp_before_ptr_star = remove
+sp_between_ptr_ref = force
+sp_before_byref = remove
+sp_before_angle = remove
+sp_inside_angle = remove
+sp_angle_paren = remove
+sp_angle_paren_empty = remove
+sp_angle_word = force
+sp_before_square = force
+indent_columns = 2
+nl_if_brace = remove
+nl_after_func_proto_group = 2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-i.cfg
new file mode 100644
index 00000000..b4cf7d41
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-i.cfg
@@ -0,0 +1,13 @@
+sp_sparen_brace = add
+sp_before_ptr_star = remove
+sp_between_ptr_ref = ignore
+sp_before_byref = remove
+sp_before_angle = remove
+sp_inside_angle = remove
+sp_angle_paren = remove
+sp_angle_paren_empty = remove
+sp_angle_word = force
+sp_before_square = force
+indent_columns = 2
+nl_if_brace = remove
+nl_after_func_proto_group = 2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-r.cfg
new file mode 100644
index 00000000..aa0644cf
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_between_ptr_ref-r.cfg
@@ -0,0 +1,13 @@
+sp_sparen_brace = add
+sp_before_ptr_star = remove
+sp_between_ptr_ref = remove
+sp_before_byref = remove
+sp_before_angle = remove
+sp_inside_angle = remove
+sp_angle_paren = remove
+sp_angle_paren_empty = remove
+sp_angle_word = force
+sp_before_square = force
+indent_columns = 2
+nl_if_brace = remove
+nl_after_func_proto_group = 2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_bool-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_bool-f.cfg
index b5a9e09f..b5a9e09f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_bool-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_bool-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_bool-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_bool-i.cfg
index ae79b0a8..ae79b0a8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_bool-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_bool-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_bool-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_bool-r.cfg
index 3baee576..3baee576 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_bool-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_bool-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_brace_brace-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_brace_brace-f.cfg
index 090c2858..090c2858 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_brace_brace-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_brace_brace-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_brace_brace-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_brace_brace-r.cfg
index c652b3cd..c652b3cd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_brace_brace-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_brace_brace-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_brace_catch.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_brace_catch.cfg
new file mode 100644
index 00000000..49d1490a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_brace_catch.cfg
@@ -0,0 +1,2 @@
+sp_sparen_brace = add
+sp_brace_catch = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_byref_paren-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_byref_paren-a.cfg
index f2c79e1a..f2c79e1a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_byref_paren-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_byref_paren-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_byref_paren-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_byref_paren-f.cfg
index 8e7a167c..8e7a167c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_byref_paren-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_byref_paren-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_byref_paren-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_byref_paren-i.cfg
index 1ba244a9..1ba244a9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_byref_paren-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_byref_paren-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_byref_paren-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_byref_paren-r.cfg
index fe59915e..fe59915e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_byref_paren-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_byref_paren-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_catch_brace.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_catch_brace.cfg
new file mode 100644
index 00000000..7086e77b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_catch_brace.cfg
@@ -0,0 +1,2 @@
+sp_sparen_brace = force
+sp_catch_brace = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cmt.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cmt.cfg
index fb7f6ef1..fb7f6ef1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cmt.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cmt.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cmt_cpp_region-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cmt_cpp_region-f.cfg
index 1c626401..1c626401 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cmt_cpp_region-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cmt_cpp_region-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cmt_cpp_region-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cmt_cpp_region-r.cfg
index 67a0ff11..67a0ff11 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cmt_cpp_region-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cmt_cpp_region-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cond_question-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cond_question-f.cfg
index dd6f0faf..dd6f0faf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cond_question-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cond_question-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cond_question-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cond_question-i.cfg
index d671d519..d671d519 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cond_question-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cond_question-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cond_question-ir.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cond_question-ir.cfg
index 4a557554..4a557554 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cond_question-ir.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cond_question-ir.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cond_question-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cond_question-r.cfg
index 0d013cf7..0d013cf7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cond_question-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cond_question-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_constr_colon-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_constr_colon-i.cfg
index c5cd823a..c5cd823a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_constr_colon-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_constr_colon-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cparen_oparen-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cparen_oparen-r.cfg
index f584c02d..f584c02d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cparen_oparen-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cparen_oparen-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_fparen-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_fparen-f.cfg
index f45270e7..f45270e7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_fparen-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_fparen-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_fparen-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_fparen-i.cfg
index cda81b02..cda81b02 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_fparen-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_fparen-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_fparen-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_fparen-r.cfg
index c64da54c..c64da54c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_fparen-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_fparen-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_paren_brace-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_paren_brace-f.cfg
index f632d9d6..f632d9d6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_paren_brace-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_paren_brace-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_paren_brace-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_paren_brace-i.cfg
index 9c8e2748..9c8e2748 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_paren_brace-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_paren_brace-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_paren_brace-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_paren_brace-r.cfg
index 492af499..492af499 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_paren_brace-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_paren_brace-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_brace-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_brace-f.cfg
index cc067763..cc067763 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_brace-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_brace-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_brace-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_brace-i.cfg
index a035f41e..a035f41e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_brace-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_brace-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_brace-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_brace-r.cfg
index cf703b2f..cf703b2f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_brace-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_brace-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_paren-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_paren-f.cfg
index 55ac955d..55ac955d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_paren-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_paren-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_paren-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_paren-i.cfg
index e8525fe5..e8525fe5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_paren-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_paren-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_paren-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_paren-r.cfg
index bcb937c3..bcb937c3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_cpp_lambda_square_paren-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_cpp_lambda_square_paren-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_dc.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_dc.cfg
index c9b14cc2..c9b14cc2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_dc.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_dc.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_decltype_paren-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_decltype_paren-f.cfg
index 3636cd02..3636cd02 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_decltype_paren-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_decltype_paren-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_decltype_paren-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_decltype_paren-r.cfg
index b11add96..b11add96 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_decltype_paren-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_decltype_paren-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_endif_cmt.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_endif_cmt.cfg
index 13ddf4fe..13ddf4fe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_endif_cmt.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_endif_cmt.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_enum_assign-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_enum_assign-f.cfg
index 37928822..37928822 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_enum_assign-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_enum_assign-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_enum_assign-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_enum_assign-i.cfg
index c30b6525..c30b6525 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_enum_assign-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_enum_assign-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_enum_colon-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_enum_colon-i.cfg
index d154830c..d154830c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_enum_colon-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_enum_colon-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_enum_colon-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_enum_colon-r.cfg
index 87f44474..87f44474 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_enum_colon-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_enum_colon-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_enum_colon.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_enum_colon.cfg
index 27716eca..27716eca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_enum_colon.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_enum_colon.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_func_call_empty.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_func_call_empty.cfg
index 3705267a..3705267a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_func_call_empty.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_func_call_empty.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_func_call_paren.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_func_call_paren.cfg
index c5f8927b..c5f8927b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_func_call_paren.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_func_call_paren.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_func_class_empty.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_func_class_empty.cfg
index 33c1faba..33c1faba 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_func_class_empty.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_func_class_empty.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_func_def_empty.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_func_def_empty.cfg
index 56a18ecd..56a18ecd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_func_def_empty.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_func_def_empty.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_func_proto_empty.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_func_proto_empty.cfg
index 2054965d..2054965d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_func_proto_empty.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_func_proto_empty.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_braces_empty-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_braces_empty-r.cfg
index f7b1b239..f7b1b239 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_braces_empty-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_braces_empty-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_braces_enum-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_braces_enum-f.cfg
index bd854828..bd854828 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_braces_enum-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_braces_enum-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_braces_enum-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_braces_enum-i.cfg
index a56a9ecb..a56a9ecb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_braces_enum-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_braces_enum-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_braces_enum-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_braces_enum-r.cfg
index ca8a03a0..ca8a03a0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_braces_enum-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_braces_enum-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_fparen-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_fparen-r.cfg
index 98f867f4..98f867f4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_fparen-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_fparen-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_fparens-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_fparens-f.cfg
index b56756d1..b56756d1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_fparens-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_fparens-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-f.cfg
index 72db534b..72db534b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-iif.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-iif.cfg
index c42436bf..c42436bf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-iif.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-iif.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-iii.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-iii.cfg
index e352ee6c..e352ee6c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-iii.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-iii.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-irf.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-irf.cfg
index ed72df5e..ed72df5e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-irf.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-irf.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-r.cfg
index b0881eaf..b0881eaf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-rf.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-rf.cfg
index cafaab52..cafaab52 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_inside_type_brace_init_lst-rf.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_inside_type_brace_init_lst-rf.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_not_not.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_not_not.cfg
index 1c0335a4..1c0335a4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_not_not.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_not_not.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_brace-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_brace-f.cfg
index 8f9206ab..8f9206ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_brace-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_brace-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_brace-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_brace-i.cfg
index f3d0f22d..f3d0f22d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_brace-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_brace-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_brace-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_brace-r.cfg
index 7e2fce85..7e2fce85 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_brace-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_brace-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_ellipsis-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_ellipsis-f.cfg
index 3cc88128..3cc88128 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_ellipsis-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_ellipsis-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_ellipsis-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_ellipsis-i.cfg
index 093de258..093de258 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_ellipsis-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_ellipsis-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_ellipsis-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_ellipsis-r.cfg
index 5971dfa8..5971dfa8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_ellipsis-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_ellipsis-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_noexcept-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_noexcept-f.cfg
index 35e76a33..35e76a33 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_noexcept-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_noexcept-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_qualifier-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_qualifier-f.cfg
index f91f2aee..f91f2aee 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_paren_qualifier-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_paren_qualifier-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-a.cfg
new file mode 100644
index 00000000..6ea5e8fb
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-a.cfg
@@ -0,0 +1 @@
+sp_qualifier_ptr_star_func = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-f.cfg
new file mode 100644
index 00000000..223ae97c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-f.cfg
@@ -0,0 +1 @@
+sp_qualifier_ptr_star_func = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-i.cfg
new file mode 100644
index 00000000..e0368625
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-i.cfg
@@ -0,0 +1 @@
+sp_qualifier_ptr_star_func = ignore
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-r.cfg
new file mode 100644
index 00000000..6b2e7c0f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_func-r.cfg
@@ -0,0 +1 @@
+sp_qualifier_ptr_star_func = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-a.cfg
new file mode 100644
index 00000000..15b0cf87
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-a.cfg
@@ -0,0 +1 @@
+sp_qualifier_ptr_star_trailing = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-f.cfg
new file mode 100644
index 00000000..70a6256b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-f.cfg
@@ -0,0 +1 @@
+sp_qualifier_ptr_star_trailing = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-i.cfg
new file mode 100644
index 00000000..51588055
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-i.cfg
@@ -0,0 +1 @@
+sp_qualifier_ptr_star_trailing = ignore
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-r.cfg
new file mode 100644
index 00000000..4c74d102
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_ptr_star_trailing-r.cfg
@@ -0,0 +1 @@
+sp_qualifier_ptr_star_trailing = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-a.cfg
new file mode 100644
index 00000000..5e58bed1
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-a.cfg
@@ -0,0 +1 @@
+sp_qualifier_unnamed_ptr_star = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-f.cfg
new file mode 100644
index 00000000..513ab80b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-f.cfg
@@ -0,0 +1 @@
+sp_qualifier_unnamed_ptr_star = force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-i.cfg
new file mode 100644
index 00000000..730348ec
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-i.cfg
@@ -0,0 +1 @@
+sp_qualifier_unnamed_ptr_star = ignore
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-r.cfg
new file mode 100644
index 00000000..8ca21fea
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_qualifier_unnamed_ptr_star-r.cfg
@@ -0,0 +1 @@
+sp_qualifier_unnamed_ptr_star = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return-a.cfg
index 16e78850..16e78850 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return-f.cfg
index b37d9b03..b37d9b03 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return-i.cfg
index 80d2d26d..80d2d26d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return-r.cfg
index b3d64b3f..b3d64b3f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return_brace-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return_brace-f.cfg
index bdea1673..bdea1673 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return_brace-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return_brace-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return_brace-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return_brace-r.cfg
index a2541527..a2541527 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return_brace-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return_brace-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return_paren-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return_paren-f.cfg
index 11637ca1..11637ca1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return_paren-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return_paren-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return_paren-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return_paren-r.cfg
index 8fbef0b8..8fbef0b8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_return_paren-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_return_paren-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis-f.cfg
index 853db73a..853db73a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis-i.cfg
index 48871cc9..48871cc9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis-r.cfg
index 7d1c2068..7d1c2068 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis_paren-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis_paren-f.cfg
index 46dfb49d..46dfb49d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis_paren-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis_paren-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis_paren-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis_paren-i.cfg
index 2b7d0b44..2b7d0b44 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis_paren-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis_paren-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis_paren-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis_paren-r.cfg
index 27953868..27953868 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_sizeof_ellipsis_paren-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_sizeof_ellipsis_paren-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_skip_vbrace_tokens.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_skip_vbrace_tokens.cfg
index d5ce739d..d5ce739d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_skip_vbrace_tokens.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_skip_vbrace_tokens.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_throw_paren-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_throw_paren-f.cfg
index 611cd750..611cd750 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_throw_paren-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_throw_paren-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_throw_paren-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_throw_paren-r.cfg
index 893c8782..893c8782 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_throw_paren-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_throw_paren-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_trailing_return-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_trailing_return-f.cfg
index 9e1fe074..9e1fe074 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_trailing_return-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_trailing_return-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_trailing_return-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_trailing_return-r.cfg
index b26929ba..b26929ba 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_trailing_return-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_trailing_return-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_trailing_return_byref_ptr-left.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_trailing_return_byref_ptr-left.cfg
index 071f30d0..071f30d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_trailing_return_byref_ptr-left.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_trailing_return_byref_ptr-left.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_trailing_return_byref_ptr-right.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_trailing_return_byref_ptr-right.cfg
index f5078788..f5078788 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_trailing_return_byref_ptr-right.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_trailing_return_byref_ptr-right.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_brace_init_lst-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_brace_init_lst-f.cfg
index 2f0d5258..2f0d5258 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_brace_init_lst-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_brace_init_lst-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_brace_init_lst-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_brace_init_lst-r.cfg
index 199dc1eb..199dc1eb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_brace_init_lst-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_brace_init_lst-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_ellipsis-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_ellipsis-f.cfg
index 888a68b0..888a68b0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_ellipsis-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_ellipsis-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_ellipsis-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_ellipsis-i.cfg
index f6cb6d0c..f6cb6d0c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_ellipsis-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_ellipsis-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_ellipsis-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_ellipsis-r.cfg
index bf831e30..bf831e30 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_ellipsis-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_ellipsis-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_func-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_func-1.cfg
index 010876e0..010876e0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_func-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_func-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_func-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_func-2.cfg
index de86218b..de86218b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_func-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_func-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_func-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_func-f.cfg
index e8e5f08a..e8e5f08a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_func-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_func-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_func-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_func-r.cfg
index 62324f98..62324f98 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_type_func-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_type_func-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_word_brace_force.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_word_brace_force.cfg
index d9c53345..d9c53345 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_word_brace_force.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_word_brace_force.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_word_brace_remove.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_word_brace_remove.cfg
index 3fd1fa26..3fd1fa26 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/sp_word_brace_remove.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/sp_word_brace_remove.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/space_indent_class-t_columns-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/space_indent_class-t_columns-4.cfg
index a454237c..a454237c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/space_indent_class-t_columns-4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/space_indent_class-t_columns-4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/squeeze_ifdef.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/squeeze_ifdef.cfg
index fa3f980c..fa3f980c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/squeeze_ifdef.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/squeeze_ifdef.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/squeeze_ifdef_top.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/squeeze_ifdef_top.cfg
index 6b45f49a..6b45f49a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/squeeze_ifdef_top.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/squeeze_ifdef_top.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/star_pos-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/star_pos-1.cfg
index 6c9f5806..6c9f5806 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/star_pos-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/star_pos-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/star_pos-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/star_pos-2.cfg
index dc1f45fc..dc1f45fc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/star_pos-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/star_pos-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/string_replace_tab_chars-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/string_replace_tab_chars-t.cfg
index 9e36729d..9e36729d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/string_replace_tab_chars-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/string_replace_tab_chars-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/tab-0-11.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/tab-0-11.cfg
index 96f745a3..96f745a3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/tab-0-11.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/tab-0-11.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/template_sp-force.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/template_sp-force.cfg
index 852277ca..852277ca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/template_sp-force.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/template_sp-force.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/template_sp-ignore.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/template_sp-ignore.cfg
index b5bbb248..b5bbb248 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/template_sp-ignore.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/template_sp-ignore.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/template_sp-remove.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/template_sp-remove.cfg
index 5e20f3b5..5e20f3b5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/template_sp-remove.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/template_sp-remove.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/templates-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/templates-i.cfg
index 25622a57..25622a57 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/templates-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/templates-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/templates-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/templates-r.cfg
index 7efd2a7d..7efd2a7d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/templates-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/templates-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/toggle_processing_cmt.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/toggle_processing_cmt.cfg
index 08ef987e..08ef987e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/toggle_processing_cmt.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/toggle_processing_cmt.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/toggle_processing_cmt2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/toggle_processing_cmt2.cfg
index 0b9be532..0b9be532 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/toggle_processing_cmt2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/toggle_processing_cmt2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/toggle_processing_cmt3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/toggle_processing_cmt3.cfg
index d7f1f675..d7f1f675 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/toggle_processing_cmt3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/toggle_processing_cmt3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/toggle_processing_cmt4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/toggle_processing_cmt4.cfg
index ccd7bb03..ccd7bb03 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/toggle_processing_cmt4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/toggle_processing_cmt4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/using-alias-in-define.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/using-alias-in-define.cfg
index 6b0b5e8f..6b0b5e8f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/using-alias-in-define.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/using-alias-in-define.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-1.cfg
index 14d063e4..14d063e4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-2.cfg
index f2181cae..f2181cae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-3.cfg
index aa5db84e..aa5db84e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-4.cfg
index 9e4414e9..9e4414e9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-5.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-5.cfg
index 374da8c9..374da8c9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-5.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-5.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-6.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-6.cfg
index 96b054a3..96b054a3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-6.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-6.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-7.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-7.cfg
index 22bb40b2..22bb40b2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_blks-7.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_blks-7.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_gap.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_gap.cfg
index 3d77d117..3d77d117 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/var_def_gap.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/var_def_gap.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/wessex.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/wessex.cfg
index 77fc3303..77fc3303 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cpp/wessex.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cpp/wessex.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/615_nested_usings.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/615_nested_usings.cfg
index ae152fd4..ae152fd4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/615_nested_usings.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/615_nested_usings.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/620_getset-brace.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/620_getset-brace.cfg
index 8e5510d0..8e5510d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/620_getset-brace.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/620_getset-brace.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/625_where-constraints.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/625_where-constraints.cfg
index a6fa8175..a6fa8175 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/625_where-constraints.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/625_where-constraints.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/Issue_2705.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/Issue_2705.cfg
index 0a3ecb71..0a3ecb71 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/Issue_2705.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/Issue_2705.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U-J.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U-J.cfg
index 21e55d74..21e55d74 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U-J.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U-J.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U01-Cs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U01-Cs.cfg
new file mode 100644
index 00000000..8f88d782
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U01-Cs.cfg
@@ -0,0 +1,282 @@
+input_tab_size=4
+string_replace_tab_chars=true
+tok_split_gte=false
+disable_processing_cmt=*begin-nonstandard-formatting*
+enable_processing_cmt=*end-nonstandard-formatting*
+utf8_bom=remove
+utf8_byte=false
+utf8_force=false
+indent_columns=4
+indent_with_tabs=0
+indent_cmt_with_tabs=false
+indent_align_string=false
+indent_braces=false
+indent_braces_no_func=false
+indent_braces_no_class=false
+indent_braces_no_struct=false
+indent_brace_parent=false
+indent_cs_delegate_brace=true
+indent_namespace=true
+indent_extern=false
+indent_class=true
+indent_class_colon=false
+indent_else_if=false
+indent_var_def_cont=false
+indent_func_call_param=true
+indent_func_def_param=true
+indent_func_proto_param=true
+indent_func_class_param=false
+indent_func_ctor_var_param=false
+indent_template_param=false
+indent_func_param_double=false
+indent_relative_single_line_comments=false
+indent_switch_case=4
+indent_case_shift=0
+indent_case_brace=0
+indent_col1_comment=false
+indent_label=-4
+indent_access_spec=-4
+indent_paren_nl=false
+indent_comma_paren=0
+indent_bool_paren=0
+indent_first_bool_expr=false
+indent_square_nl=false
+indent_preserve_sql=false
+indent_oc_block_msg_xcode_style=true
+indent_off_after_return_new=true
+indent_single_after_return=true
+sp_arith=add
+sp_assign=add
+sp_assign_default=add
+sp_enum_assign=add
+sp_pp_concat=remove
+sp_pp_stringify=remove
+sp_bool=add
+sp_compare=add
+sp_inside_paren=remove
+sp_paren_paren=remove
+sp_balance_nested_parens=false
+sp_paren_brace=force
+sp_after_type=ignore
+sp_template_angle=remove
+sp_before_angle=remove
+sp_inside_angle=remove
+sp_angle_paren=remove
+sp_angle_paren_empty=remove
+sp_angle_word=add
+sp_angle_shift=remove
+sp_before_sparen=force
+sp_inside_sparen=remove
+sp_after_sparen=add
+sp_sparen_brace=force
+sp_special_semi=force
+sp_before_semi=remove
+sp_before_semi_for=remove
+sp_before_semi_for_empty=remove
+sp_between_semi_for_empty=remove
+sp_after_semi=add
+sp_after_semi_for=force
+sp_after_semi_for_empty=remove
+sp_before_square=remove
+sp_before_squares=remove
+sp_inside_square=remove
+sp_after_comma=add
+sp_before_comma=ignore
+sp_after_mdatype_commas=remove
+sp_before_mdatype_commas=remove
+sp_between_mdatype_commas=remove
+sp_paren_comma=remove
+sp_after_class_colon=force
+sp_before_class_colon=force
+sp_before_case_colon=remove
+sp_after_operator=remove
+sp_after_operator_sym=remove
+sp_after_operator_sym_empty=remove
+sp_after_cast=remove
+sp_inside_paren_cast=remove
+sp_cpp_cast_paren=remove
+sp_sizeof_paren=remove
+sp_inside_braces_enum=add
+sp_inside_braces_empty=remove
+sp_type_func=ignore
+sp_func_proto_paren=remove
+sp_func_def_paren=remove
+sp_inside_fparens=remove
+sp_inside_fparen=remove
+sp_fparen_brace=add
+sp_func_call_paren=remove
+sp_func_call_paren_empty=remove
+sp_func_call_user_paren=remove
+sp_func_class_paren=remove
+sp_return_paren=add
+sp_defined_paren=remove
+sp_throw_paren=add
+sp_catch_paren=add
+sp_brace_typedef=add
+sp_getset_brace=add
+sp_after_dc=remove
+sp_not=remove
+sp_inv=remove
+sp_addr=remove
+sp_member=remove
+sp_deref=remove
+sp_sign=remove
+sp_incdec=remove
+sp_before_nl_cont=add
+sp_after_oc_scope=force
+sp_after_oc_colon=remove
+sp_before_oc_colon=remove
+sp_after_oc_dict_colon=force
+sp_before_oc_dict_colon=remove
+sp_after_send_oc_colon=force
+sp_before_send_oc_colon=remove
+sp_after_oc_type=remove
+sp_after_oc_return_type=remove
+sp_after_oc_at_sel=remove
+sp_inside_oc_at_sel_parens=remove
+sp_cond_colon=add
+sp_cond_question=add
+sp_case_label=ignore
+sp_after_new=force
+sp_between_new_paren=remove
+sp_skip_vbrace_tokens=true
+align_keep_tabs=false
+align_with_tabs=false
+align_on_tabstop=false
+align_number_right=false
+align_func_params=false
+align_same_func_call_params=false
+align_var_def_colon=false
+align_var_def_attribute=false
+align_var_def_inline=false
+align_right_cmt_mix=false
+align_on_operator=false
+align_mix_var_proto=false
+align_single_line_func=false
+align_single_line_brace=false
+align_nl_cont=0
+align_left_shift=false
+nl_collapse_empty_body=false
+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_if_leave_one_liners=false
+nl_oc_msg_leave_one_liner=true
+nl_start_of_file=remove
+nl_end_of_file=force
+nl_end_of_file_min=1
+nl_assign_brace=force
+nl_enum_brace=force
+nl_struct_brace=force
+nl_union_brace=force
+nl_if_brace=force
+nl_brace_else=force
+nl_else_brace=force
+nl_else_if=remove
+nl_brace_finally=force
+nl_finally_brace=force
+nl_try_brace=force
+nl_getset_brace=force
+nl_for_brace=force
+nl_catch_brace=force
+nl_brace_catch=force
+nl_while_brace=force
+nl_using_brace=force
+nl_brace_brace=ignore
+nl_do_brace=force
+nl_brace_while=force
+nl_switch_brace=force
+nl_multi_line_cond=false
+nl_before_case=false
+nl_after_case=false
+nl_case_colon_brace=force
+nl_namespace_brace=force
+nl_template_class=ignore
+nl_fdef_brace=force
+nl_after_semicolon=false
+nl_after_brace_open=false
+nl_after_brace_open_cmt=false
+nl_after_vbrace_open=false
+nl_after_vbrace_open_empty=false
+nl_after_brace_close=false
+nl_after_vbrace_close=false
+nl_squeeze_ifdef=false
+nl_ds_struct_enum_cmt=false
+nl_ds_struct_enum_close_brace=false
+nl_create_if_one_liner=false
+nl_create_for_one_liner=false
+nl_create_while_one_liner=false
+ls_for_split_full=false
+ls_func_split_full=false
+nl_max=3
+nl_after_func_body=2
+nl_after_multiline_comment=false
+nl_property_brace=force
+eat_blanks_after_open_brace=true
+eat_blanks_before_close_brace=true
+nl_after_return=false
+mod_full_brace_if_chain=0
+mod_paren_on_return=ignore
+mod_pawn_semicolon=false
+mod_full_paren_if_bool=false
+mod_remove_extra_semicolon=true
+mod_move_case_break=false
+mod_remove_empty_return=true
+cmt_indent_multi=false
+cmt_c_group=false
+cmt_c_nl_start=false
+cmt_c_nl_end=false
+cmt_cpp_group=false
+cmt_cpp_nl_start=false
+cmt_cpp_nl_end=false
+cmt_cpp_to_c=false
+cmt_star_cont=false
+cmt_multi_check_last=false
+cmt_insert_before_preproc=false
+pp_space_after=ignore
+use_options_overriding_for_qt_macros=false
+warn_level_tabs_found_in_verbatim_string_literals=1
+# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
+# can be turned back on at any time
+#mod_add_long_ifdef_else_comment=8
+#mod_add_long_ifdef_endif_comment=8
+mod_add_long_ifdef_else_comment=0
+mod_add_long_ifdef_endif_comment=0
+
+
+
+# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
+#
+# x = o.Func2(a, b,
+# y);
+# o.Func2(a, b,
+# y);
+#
+# ...but setting it 'true' is often worse:
+#
+# ExtraReallyLongType reallyLongVariableName = someTest
+# ? someTrueExpr
+# : someFalseExpr
+#
+# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
+# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
+# (currently unreported)
+indent_align_assign=false
+
+# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
+# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
+# comment line at the same level of indentation.
+# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
+# (test using Runtime/Allocator/BucketAllocator.h)
+# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
+sp_cmt_cpp_start=ignore
+
+# https://sourceforge.net/p/uncrustify/bugs/619/
+sp_endif_cmt=ignore
+
+# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
+# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
+#nl_cpp_ldef_brace=force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U02-Cs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U02-Cs.cfg
index c7d6aeda..c7d6aeda 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U02-Cs.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U02-Cs.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U03-Cs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U03-Cs.cfg
index 24961370..24961370 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U03-Cs.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U03-Cs.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U04-Cs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U04-Cs.cfg
index b331f6f8..b331f6f8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U04-Cs.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U04-Cs.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U06-Cs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U06-Cs.cfg
index 03c2c765..03c2c765 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U06-Cs.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U06-Cs.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U07-Cs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U07-Cs.cfg
new file mode 100644
index 00000000..e3930c92
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U07-Cs.cfg
@@ -0,0 +1,283 @@
+input_tab_size=4
+string_replace_tab_chars=true
+tok_split_gte=false
+disable_processing_cmt=*begin-nonstandard-formatting*
+enable_processing_cmt=*end-nonstandard-formatting*
+utf8_bom=remove
+utf8_byte=false
+utf8_force=false
+indent_columns=4
+indent_with_tabs=0
+indent_cmt_with_tabs=false
+indent_align_string=false
+indent_braces=false
+indent_braces_no_func=false
+indent_braces_no_class=false
+indent_braces_no_struct=false
+indent_brace_parent=false
+indent_cs_delegate_brace=true
+indent_namespace=true
+indent_extern=false
+indent_class=true
+indent_class_colon=false
+indent_else_if=false
+indent_var_def_cont=false
+indent_func_call_param=true
+indent_func_def_param=true
+indent_func_proto_param=true
+indent_func_class_param=false
+indent_func_ctor_var_param=false
+indent_template_param=false
+indent_func_param_double=false
+indent_relative_single_line_comments=false
+indent_switch_case=4
+indent_case_shift=0
+indent_case_brace=0
+indent_col1_comment=false
+indent_label=-4
+indent_access_spec=-4
+indent_paren_nl=false
+indent_comma_paren=0
+indent_bool_paren=0
+indent_first_bool_expr=false
+indent_square_nl=false
+indent_preserve_sql=false
+indent_oc_block_msg_xcode_style=true
+indent_off_after_return_new=true
+indent_single_after_return=true
+sp_arith=add
+sp_assign=add
+sp_assign_default=add
+sp_enum_assign=add
+sp_pp_concat=remove
+sp_pp_stringify=remove
+sp_bool=add
+sp_compare=add
+sp_inside_paren=remove
+sp_paren_paren=remove
+sp_balance_nested_parens=false
+sp_paren_brace=force
+sp_after_type=ignore
+sp_template_angle=remove
+sp_before_angle=remove
+sp_inside_angle=remove
+sp_angle_paren=remove
+sp_angle_paren_empty=remove
+sp_angle_word=add
+sp_angle_shift=remove
+sp_before_sparen=force
+sp_inside_sparen=remove
+sp_after_sparen=add
+sp_sparen_brace=force
+sp_special_semi=force
+sp_before_semi=remove
+sp_before_semi_for=remove
+sp_before_semi_for_empty=remove
+sp_between_semi_for_empty=remove
+sp_after_semi=add
+sp_after_semi_for=force
+sp_after_semi_for_empty=remove
+sp_before_square=remove
+sp_before_squares=remove
+sp_inside_square=remove
+sp_after_comma=add
+sp_before_comma=ignore
+sp_after_mdatype_commas=remove
+sp_before_mdatype_commas=remove
+sp_between_mdatype_commas=remove
+sp_paren_comma=remove
+sp_after_class_colon=force
+sp_before_class_colon=force
+sp_before_case_colon=remove
+sp_after_operator=remove
+sp_after_operator_sym=remove
+sp_after_operator_sym_empty=remove
+sp_after_cast=remove
+sp_inside_paren_cast=remove
+sp_cpp_cast_paren=remove
+sp_sizeof_paren=remove
+sp_inside_braces_enum=add
+sp_inside_braces_empty=remove
+sp_type_func=ignore
+sp_func_proto_paren=remove
+sp_func_def_paren=remove
+sp_inside_fparens=remove
+sp_inside_fparen=remove
+sp_fparen_brace=add
+sp_func_call_paren=remove
+sp_func_call_paren_empty=remove
+sp_func_call_user_paren=remove
+sp_func_class_paren=remove
+sp_return_paren=add
+sp_defined_paren=remove
+sp_throw_paren=add
+sp_catch_paren=add
+sp_brace_typedef=add
+sp_getset_brace=add
+sp_after_dc=remove
+sp_not=remove
+sp_inv=remove
+sp_addr=remove
+sp_member=remove
+sp_deref=remove
+sp_sign=remove
+sp_incdec=remove
+sp_before_nl_cont=add
+sp_after_oc_scope=force
+sp_after_oc_colon=remove
+sp_before_oc_colon=remove
+sp_after_oc_dict_colon=force
+sp_before_oc_dict_colon=remove
+sp_after_send_oc_colon=force
+sp_before_send_oc_colon=remove
+sp_after_oc_type=remove
+sp_after_oc_return_type=remove
+sp_after_oc_at_sel=remove
+sp_inside_oc_at_sel_parens=remove
+sp_cond_colon=add
+sp_cond_question=add
+sp_case_label=ignore
+sp_after_new=force
+sp_between_new_paren=remove
+sp_skip_vbrace_tokens=true
+align_keep_tabs=false
+align_with_tabs=false
+align_on_tabstop=false
+align_number_right=false
+align_func_params=false
+align_same_func_call_params=false
+align_var_def_colon=false
+align_var_def_attribute=false
+align_var_def_inline=false
+align_right_cmt_mix=false
+align_on_operator=false
+align_mix_var_proto=false
+align_single_line_func=false
+align_single_line_brace=false
+align_nl_cont=0
+align_left_shift=false
+nl_collapse_empty_body=false
+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_if_leave_one_liners=false
+nl_oc_msg_leave_one_liner=true
+nl_start_of_file=remove
+nl_end_of_file=force
+nl_end_of_file_min=1
+nl_assign_brace=force
+nl_enum_brace=force
+nl_struct_brace=force
+nl_union_brace=force
+nl_if_brace=force
+nl_brace_else=force
+nl_else_brace=force
+nl_else_if=remove
+nl_brace_finally=force
+nl_finally_brace=force
+nl_try_brace=force
+nl_getset_brace=force
+nl_for_brace=force
+nl_catch_brace=force
+nl_brace_catch=force
+nl_while_brace=force
+nl_using_brace=force
+nl_brace_brace=ignore
+nl_do_brace=force
+nl_brace_while=force
+nl_switch_brace=force
+nl_multi_line_cond=false
+nl_before_case=false
+nl_after_case=false
+nl_case_colon_brace=force
+nl_namespace_brace=force
+nl_template_class=ignore
+nl_class_brace=force
+nl_fdef_brace=force
+nl_after_semicolon=false
+nl_after_brace_open=false
+nl_after_brace_open_cmt=false
+nl_after_vbrace_open=false
+nl_after_vbrace_open_empty=false
+nl_after_brace_close=false
+nl_after_vbrace_close=false
+nl_squeeze_ifdef=false
+nl_ds_struct_enum_cmt=false
+nl_ds_struct_enum_close_brace=false
+nl_create_if_one_liner=false
+nl_create_for_one_liner=false
+nl_create_while_one_liner=false
+ls_for_split_full=false
+ls_func_split_full=false
+nl_max=3
+nl_after_multiline_comment=false
+nl_property_brace=force
+eat_blanks_after_open_brace=true
+eat_blanks_before_close_brace=true
+nl_after_return=false
+mod_full_brace_if_chain=0
+mod_paren_on_return=ignore
+mod_pawn_semicolon=false
+mod_full_paren_if_bool=false
+mod_remove_extra_semicolon=true
+mod_move_case_break=false
+mod_remove_empty_return=true
+cmt_indent_multi=false
+cmt_c_group=false
+cmt_c_nl_start=false
+cmt_c_nl_end=false
+cmt_cpp_group=false
+cmt_cpp_nl_start=false
+cmt_cpp_nl_end=false
+cmt_cpp_to_c=false
+cmt_star_cont=false
+cmt_multi_check_last=false
+cmt_insert_before_preproc=false
+pp_space_after=ignore
+use_options_overriding_for_qt_macros=false
+warn_level_tabs_found_in_verbatim_string_literals=1
+
+# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
+# can be turned back on at any time
+mod_add_long_ifdef_else_comment=0
+mod_add_long_ifdef_endif_comment=0
+
+
+
+# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
+#
+# x = o.Func2(a, b,
+# y);
+# o.Func2(a, b,
+# y);
+#
+# ...but setting it 'true' is often worse:
+#
+# ExtraReallyLongType reallyLongVariableName = someTest
+# ? someTrueExpr
+# : someFalseExpr
+#
+# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
+# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
+# (currently unreported)
+indent_align_assign=false
+
+# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
+# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
+# comment line at the same level of indentation.
+# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
+# (test using Runtime/Allocator/BucketAllocator.h)
+# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
+#sp_cmt_cpp_start=add
+sp_cmt_cpp_start=ignore
+
+# https://sourceforge.net/p/uncrustify/bugs/619/
+#sp_endif_cmt=force
+sp_endif_cmt=ignore
+
+# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
+# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
+#nl_cpp_ldef_brace=force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U08-Cs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U08-Cs.cfg
new file mode 100644
index 00000000..666c8220
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U08-Cs.cfg
@@ -0,0 +1,282 @@
+input_tab_size=4
+string_replace_tab_chars=true
+tok_split_gte=false
+disable_processing_cmt=*begin-nonstandard-formatting*
+enable_processing_cmt=*end-nonstandard-formatting*
+utf8_bom=remove
+utf8_byte=false
+utf8_force=false
+indent_columns=4
+indent_with_tabs=0
+indent_cmt_with_tabs=false
+indent_align_string=false
+indent_braces=false
+indent_braces_no_func=false
+indent_braces_no_class=false
+indent_braces_no_struct=false
+indent_brace_parent=false
+indent_cs_delegate_brace=true
+indent_namespace=true
+indent_extern=false
+indent_class=true
+indent_class_colon=false
+indent_else_if=false
+indent_var_def_cont=false
+indent_func_call_param=true
+indent_func_def_param=true
+indent_func_proto_param=true
+indent_func_class_param=false
+indent_func_ctor_var_param=false
+indent_template_param=false
+indent_func_param_double=false
+indent_relative_single_line_comments=false
+indent_switch_case=4
+indent_case_shift=0
+indent_case_brace=0
+indent_col1_comment=false
+indent_label=-4
+indent_access_spec=-4
+indent_paren_nl=false
+indent_comma_paren=0
+indent_bool_paren=0
+indent_first_bool_expr=false
+indent_square_nl=false
+indent_preserve_sql=false
+indent_oc_block_msg_xcode_style=true
+indent_off_after_return_new=true
+indent_single_after_return=true
+sp_arith=add
+sp_assign=add
+sp_assign_default=add
+sp_enum_assign=add
+sp_pp_concat=remove
+sp_pp_stringify=remove
+sp_bool=add
+sp_compare=add
+sp_inside_paren=remove
+sp_paren_paren=remove
+sp_balance_nested_parens=false
+sp_paren_brace=force
+sp_after_type=remove
+sp_template_angle=remove
+sp_before_angle=remove
+sp_inside_angle=remove
+sp_angle_paren=remove
+sp_angle_paren_empty=remove
+sp_angle_word=add
+sp_angle_shift=remove
+sp_before_sparen=force
+sp_inside_sparen=remove
+sp_after_sparen=add
+sp_sparen_brace=force
+sp_special_semi=force
+sp_before_semi=remove
+sp_before_semi_for=remove
+sp_before_semi_for_empty=remove
+sp_between_semi_for_empty=remove
+sp_after_semi=add
+sp_after_semi_for=force
+sp_after_semi_for_empty=remove
+sp_before_square=remove
+sp_before_squares=remove
+sp_inside_square=remove
+sp_after_comma=add
+sp_before_comma=ignore
+sp_after_mdatype_commas=remove
+sp_before_mdatype_commas=remove
+sp_between_mdatype_commas=remove
+sp_paren_comma=remove
+sp_after_class_colon=force
+sp_before_class_colon=force
+sp_before_case_colon=remove
+sp_after_operator=remove
+sp_after_operator_sym=remove
+sp_after_operator_sym_empty=remove
+sp_after_cast=remove
+sp_inside_paren_cast=remove
+sp_cpp_cast_paren=remove
+sp_sizeof_paren=remove
+sp_inside_braces_enum=add
+sp_inside_braces_empty=remove
+sp_type_func=ignore
+sp_func_proto_paren=remove
+sp_func_def_paren=remove
+sp_inside_fparens=remove
+sp_inside_fparen=remove
+sp_fparen_brace=add
+sp_func_call_paren=remove
+sp_func_call_paren_empty=remove
+sp_func_call_user_paren=remove
+sp_func_class_paren=remove
+sp_return_paren=add
+sp_defined_paren=remove
+sp_throw_paren=add
+sp_catch_paren=add
+sp_brace_typedef=add
+sp_getset_brace=add
+sp_after_dc=remove
+sp_not=remove
+sp_inv=remove
+sp_addr=remove
+sp_member=remove
+sp_deref=remove
+sp_sign=remove
+sp_incdec=remove
+sp_before_nl_cont=add
+sp_after_oc_scope=force
+sp_after_oc_colon=remove
+sp_before_oc_colon=remove
+sp_after_oc_dict_colon=force
+sp_before_oc_dict_colon=remove
+sp_after_send_oc_colon=force
+sp_before_send_oc_colon=remove
+sp_after_oc_type=remove
+sp_after_oc_return_type=remove
+sp_after_oc_at_sel=remove
+sp_inside_oc_at_sel_parens=remove
+sp_cond_colon=add
+sp_cond_question=add
+sp_case_label=ignore
+sp_after_new=force
+sp_between_new_paren=remove
+sp_skip_vbrace_tokens=true
+align_keep_tabs=false
+align_with_tabs=false
+align_on_tabstop=false
+align_number_right=false
+align_func_params=false
+align_same_func_call_params=false
+align_var_def_colon=false
+align_var_def_attribute=false
+align_var_def_inline=false
+align_right_cmt_mix=false
+align_on_operator=false
+align_mix_var_proto=false
+align_single_line_func=false
+align_single_line_brace=false
+align_nl_cont=0
+align_left_shift=false
+nl_collapse_empty_body=false
+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_if_leave_one_liners=false
+nl_oc_msg_leave_one_liner=true
+nl_start_of_file=remove
+nl_end_of_file=force
+nl_end_of_file_min=1
+nl_assign_brace=force
+nl_enum_brace=force
+nl_struct_brace=force
+nl_union_brace=force
+nl_if_brace=force
+nl_brace_else=force
+nl_else_brace=force
+nl_else_if=remove
+nl_brace_finally=force
+nl_finally_brace=force
+nl_try_brace=force
+nl_getset_brace=force
+nl_for_brace=force
+nl_catch_brace=force
+nl_brace_catch=force
+nl_while_brace=force
+nl_using_brace=force
+nl_brace_brace=ignore
+nl_do_brace=force
+nl_brace_while=force
+nl_switch_brace=force
+nl_multi_line_cond=false
+nl_before_case=false
+nl_after_case=false
+nl_case_colon_brace=force
+nl_namespace_brace=force
+nl_template_class=ignore
+nl_class_brace=force
+nl_fdef_brace=force
+nl_after_semicolon=false
+nl_after_brace_open=false
+nl_after_brace_open_cmt=false
+nl_after_vbrace_open=false
+nl_after_vbrace_open_empty=false
+nl_after_brace_close=false
+nl_after_vbrace_close=false
+nl_squeeze_ifdef=false
+nl_ds_struct_enum_cmt=false
+nl_ds_struct_enum_close_brace=false
+nl_create_if_one_liner=false
+nl_create_for_one_liner=false
+nl_create_while_one_liner=false
+ls_for_split_full=false
+ls_func_split_full=false
+nl_max=3
+nl_after_func_body=2
+nl_after_multiline_comment=false
+nl_property_brace=force
+eat_blanks_after_open_brace=true
+eat_blanks_before_close_brace=true
+nl_after_return=false
+mod_paren_on_return=ignore
+mod_pawn_semicolon=false
+mod_full_paren_if_bool=false
+mod_remove_extra_semicolon=true
+mod_move_case_break=false
+mod_remove_empty_return=true
+cmt_indent_multi=false
+cmt_c_group=false
+cmt_c_nl_start=false
+cmt_c_nl_end=false
+cmt_cpp_group=false
+cmt_cpp_nl_start=false
+cmt_cpp_nl_end=false
+cmt_cpp_to_c=false
+cmt_star_cont=false
+cmt_multi_check_last=false
+cmt_insert_before_preproc=false
+pp_space_after=ignore
+use_options_overriding_for_qt_macros=false
+warn_level_tabs_found_in_verbatim_string_literals=1
+# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
+# can be turned back on at any time
+mod_add_long_ifdef_else_comment=0
+mod_add_long_ifdef_endif_comment=0
+
+
+
+# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
+#
+# x = o.Func2(a, b,
+# y);
+# o.Func2(a, b,
+# y);
+#
+# ...but setting it 'true' is often worse:
+#
+# ExtraReallyLongType reallyLongVariableName = someTest
+# ? someTrueExpr
+# : someFalseExpr
+#
+# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
+# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
+# (currently unreported)
+indent_align_assign=false
+
+# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
+# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
+# comment line at the same level of indentation.
+# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
+# (test using Runtime/Allocator/BucketAllocator.h)
+# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
+#sp_cmt_cpp_start=add
+sp_cmt_cpp_start=ignore
+
+# https://sourceforge.net/p/uncrustify/bugs/619/
+#sp_endif_cmt=force
+sp_endif_cmt=ignore
+
+# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
+# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
+#nl_cpp_ldef_brace=force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U09-Cs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U09-Cs.cfg
index d74080d2..d74080d2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U09-Cs.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U09-Cs.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U10-Cs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U10-Cs.cfg
index 42254ddb..42254ddb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U10-Cs.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U10-Cs.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U11-Cs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U11-Cs.cfg
index 70557c46..70557c46 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U11-Cs.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U11-Cs.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U13-Cs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U13-Cs.cfg
index 75f78b42..75f78b42 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U13-Cs.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U13-Cs.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U15-Cs.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U15-Cs.cfg
index 5a700342..5a700342 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/U15-Cs.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/U15-Cs.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-11662.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-11662.cfg
index 24cf86a8..24cf86a8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-11662.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-11662.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-11993.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-11993.cfg
new file mode 100644
index 00000000..791d2a14
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-11993.cfg
@@ -0,0 +1,287 @@
+input_tab_size=4
+string_replace_tab_chars=true
+tok_split_gte=false
+disable_processing_cmt=*begin-nonstandard-formatting
+enable_processing_cmt=*end-nonstandard-formatting*
+utf8_bom=remove
+utf8_byte=false
+utf8_force=false
+indent_columns=4
+indent_with_tabs=0
+indent_cmt_with_tabs=false
+indent_align_string=false
+indent_braces=false
+indent_braces_no_func=false
+indent_braces_no_class=false
+indent_braces_no_struct=false
+indent_brace_parent=false
+indent_cs_delegate_brace=true
+indent_namespace=true
+indent_extern=false
+indent_class=true
+indent_class_colon=false
+indent_else_if=false
+indent_var_def_cont=false
+indent_func_call_param=true
+indent_func_def_param=true
+indent_func_proto_param=true
+indent_func_class_param=false
+indent_func_ctor_var_param=false
+indent_template_param=false
+indent_func_param_double=false
+indent_member_single=false
+indent_relative_single_line_comments=false
+indent_switch_case=4
+indent_case_shift=0
+indent_case_brace=0
+indent_col1_comment=false
+indent_label=-4
+indent_access_spec=-4
+indent_paren_nl=false
+indent_comma_paren=0
+indent_bool_paren=0
+indent_first_bool_expr=false
+indent_square_nl=false
+indent_preserve_sql=false
+indent_align_paren=false
+indent_oc_block_msg_xcode_style=true
+indent_off_after_return_new=true
+indent_single_after_return=true
+sp_arith=add
+sp_assign=add
+sp_assign_default=add
+sp_enum_assign=add
+sp_pp_concat=remove
+sp_pp_stringify=remove
+sp_bool=add
+sp_compare=add
+sp_inside_paren=remove
+sp_paren_paren=remove
+sp_balance_nested_parens=false
+sp_paren_brace=force
+sp_after_type=ignore
+sp_template_angle=remove
+sp_before_angle=remove
+sp_inside_angle=remove
+sp_angle_paren=remove
+sp_angle_paren_empty=remove
+sp_angle_word=add
+sp_angle_shift=remove
+sp_before_sparen=force
+sp_inside_sparen=remove
+sp_after_sparen=add
+sp_sparen_brace=force
+sp_special_semi=force
+sp_before_semi=remove
+sp_before_semi_for=remove
+sp_before_semi_for_empty=remove
+sp_between_semi_for_empty=remove
+sp_after_semi=add
+sp_after_semi_for=force
+sp_after_semi_for_empty=remove
+sp_before_square=remove
+sp_before_squares=remove
+sp_inside_square=remove
+sp_after_comma=add
+sp_before_comma=ignore
+sp_after_mdatype_commas=remove
+sp_before_mdatype_commas=remove
+sp_between_mdatype_commas=remove
+sp_paren_comma=remove
+sp_after_class_colon=force
+sp_before_class_colon=force
+sp_before_case_colon=remove
+sp_after_operator=remove
+sp_after_operator_sym=remove
+sp_after_operator_sym_empty=remove
+sp_after_cast=remove
+sp_inside_paren_cast=remove
+sp_cpp_cast_paren=remove
+sp_sizeof_paren=remove
+sp_inside_braces_enum=add
+sp_inside_braces_empty=remove
+sp_type_func=ignore
+sp_func_proto_paren=remove
+sp_func_def_paren=remove
+sp_inside_fparens=remove
+sp_inside_fparen=remove
+sp_fparen_brace=add
+sp_func_call_paren=remove
+sp_func_call_paren_empty=remove
+sp_func_call_user_paren=remove
+sp_func_class_paren=remove
+sp_return_paren=add
+sp_defined_paren=remove
+sp_throw_paren=add
+sp_catch_paren=add
+sp_brace_typedef=add
+sp_getset_brace=add
+sp_after_dc=remove
+sp_not=remove
+sp_inv=remove
+sp_addr=remove
+sp_member=remove
+sp_deref=remove
+sp_sign=remove
+sp_incdec=remove
+sp_before_nl_cont=add
+sp_after_oc_scope=force
+sp_after_oc_colon=remove
+sp_before_oc_colon=remove
+sp_after_oc_dict_colon=force
+sp_before_oc_dict_colon=remove
+sp_after_send_oc_colon=force
+sp_before_send_oc_colon=remove
+sp_after_oc_type=remove
+sp_after_oc_return_type=remove
+sp_after_oc_at_sel=remove
+sp_inside_oc_at_sel_parens=remove
+sp_cond_colon=add
+sp_cond_question=add
+sp_case_label=ignore
+sp_after_new=force
+sp_between_new_paren=remove
+sp_skip_vbrace_tokens=true
+align_keep_tabs=false
+align_with_tabs=false
+align_on_tabstop=false
+align_number_right=false
+align_func_params=false
+align_same_func_call_params=false
+align_var_def_colon=false
+align_var_def_attribute=false
+align_var_def_inline=false
+align_right_cmt_mix=false
+align_on_operator=false
+align_mix_var_proto=false
+align_single_line_func=false
+align_single_line_brace=false
+align_nl_cont=0
+align_left_shift=false
+nl_collapse_empty_body=false
+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_if_leave_one_liners=false
+nl_oc_msg_leave_one_liner=true
+nl_start_of_file=remove
+nl_end_of_file=force
+nl_end_of_file_min=1
+nl_assign_brace=force
+nl_enum_brace=force
+nl_struct_brace=force
+nl_union_brace=force
+nl_if_brace=force
+nl_brace_else=force
+nl_else_brace=force
+nl_else_if=remove
+nl_brace_finally=force
+nl_finally_brace=force
+nl_try_brace=force
+nl_getset_brace=force
+nl_for_brace=force
+nl_catch_brace=force
+nl_brace_catch=force
+nl_while_brace=force
+nl_using_brace=force
+nl_brace_brace=ignore
+nl_do_brace=force
+nl_brace_while=force
+nl_switch_brace=force
+nl_multi_line_cond=false
+nl_before_case=false
+nl_after_case=false
+nl_case_colon_brace=force
+nl_namespace_brace=force
+nl_template_class=ignore
+nl_class_brace=force
+nl_fdef_brace=force
+nl_after_semicolon=false
+nl_after_brace_open=false
+nl_after_brace_open_cmt=false
+nl_after_vbrace_open=false
+nl_after_vbrace_open_empty=false
+nl_after_brace_close=false
+nl_after_vbrace_close=false
+nl_squeeze_ifdef=false
+nl_ds_struct_enum_cmt=false
+nl_ds_struct_enum_close_brace=false
+nl_namespace_two_to_one_liner=false
+nl_create_if_one_liner=false
+nl_create_for_one_liner=false
+nl_create_while_one_liner=false
+nl_create_func_def_one_liner=false
+ls_for_split_full=false
+ls_func_split_full=false
+nl_max=3
+nl_after_func_body=2
+nl_after_multiline_comment=false
+nl_property_brace=force
+eat_blanks_after_open_brace=true
+eat_blanks_before_close_brace=true
+nl_after_return=false
+mod_full_brace_if_chain=0
+mod_paren_on_return=ignore
+mod_pawn_semicolon=false
+mod_full_paren_if_bool=false
+mod_remove_extra_semicolon=true
+mod_move_case_break=false
+mod_remove_empty_return=true
+cmt_convert_tab_to_spaces=True
+cmt_indent_multi=false
+cmt_c_group=false
+cmt_c_nl_start=false
+cmt_c_nl_end=false
+cmt_cpp_group=false
+cmt_cpp_nl_start=false
+cmt_cpp_nl_end=false
+cmt_cpp_to_c=false
+cmt_star_cont=false
+cmt_multi_check_last=false
+cmt_insert_before_preproc=false
+pp_space_after=ignore
+use_options_overriding_for_qt_macros=false
+warn_level_tabs_found_in_verbatim_string_literals=1
+# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
+# can be turned back on at any time
+mod_add_long_ifdef_else_comment=0
+mod_add_long_ifdef_endif_comment=0
+
+
+# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
+#
+# x = o.Func2(a, b,
+# y);
+# o.Func2(a, b,
+# y);
+#
+# ...but setting it 'true' is often worse:
+#
+# ExtraReallyLongType reallyLongVariableName = someTest
+# ? someTrueExpr
+# : someFalseExpr
+#
+# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
+# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
+# (currently unreported)
+indent_align_assign=false
+
+# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
+# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
+# comment line at the same level of indentation.
+# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
+# (test using Runtime/Allocator/BucketAllocator.h)
+# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
+#sp_cmt_cpp_start=add
+sp_cmt_cpp_start=ignore
+
+# https://sourceforge.net/p/uncrustify/bugs/619/
+#sp_endif_cmt=force
+sp_endif_cmt=ignore
+
+# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
+# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
+#nl_cpp_ldef_brace=force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1288.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1288.cfg
index 3b6cf1b4..3b6cf1b4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1288.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1288.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1338.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1338.cfg
index 0eef21b4..0eef21b4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1338.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1338.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1343.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1343.cfg
index f5276e1f..f5276e1f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1343.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1343.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-13955.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-13955.cfg
index d1c7c955..d1c7c955 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-13955.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-13955.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-14131.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-14131.cfg
index 7c5535ea..7c5535ea 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-14131.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-14131.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-18437.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-18437.cfg
new file mode 100644
index 00000000..ce664b42
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-18437.cfg
@@ -0,0 +1,287 @@
+input_tab_size=4
+string_replace_tab_chars=true
+tok_split_gte=false
+disable_processing_cmt=*begin-nonstandard-formatting*
+enable_processing_cmt=*end-nonstandard-formatting*
+utf8_bom=remove
+utf8_byte=false
+utf8_force=false
+indent_columns=4
+indent_with_tabs=0
+indent_cmt_with_tabs=false
+indent_align_string=false
+indent_braces=false
+indent_braces_no_func=false
+indent_braces_no_class=false
+indent_braces_no_struct=false
+indent_brace_parent=false
+indent_cs_delegate_brace=true
+indent_namespace=true
+indent_extern=false
+indent_class=true
+indent_class_colon=false
+indent_else_if=false
+indent_var_def_cont=false
+indent_func_call_param=true
+indent_func_def_param=true
+indent_func_proto_param=true
+indent_func_class_param=false
+indent_func_ctor_var_param=false
+indent_template_param=false
+indent_func_param_double=false
+indent_relative_single_line_comments=false
+indent_switch_case=4
+indent_case_shift=0
+indent_case_brace=0
+indent_col1_comment=false
+indent_label=-4
+indent_access_spec=-4
+indent_paren_nl=false
+indent_comma_paren=0
+indent_bool_paren=0
+indent_first_bool_expr=false
+indent_square_nl=false
+indent_preserve_sql=false
+indent_align_paren=false
+indent_oc_block_msg_xcode_style=true
+indent_off_after_return_new=true
+indent_single_after_return=true
+sp_arith=add
+sp_assign=add
+sp_assign_default=add
+sp_enum_assign=add
+sp_pp_concat=remove
+sp_pp_stringify=remove
+sp_bool=add
+sp_compare=add
+sp_inside_paren=remove
+sp_paren_paren=remove
+sp_balance_nested_parens=false
+sp_paren_brace=force
+sp_after_type=ignore
+sp_template_angle=remove
+sp_before_angle=remove
+sp_inside_angle=remove
+sp_angle_paren=remove
+sp_angle_paren_empty=remove
+sp_angle_word=add
+sp_angle_shift=remove
+sp_before_sparen=force
+sp_inside_sparen=remove
+sp_after_sparen=add
+sp_sparen_brace=force
+sp_special_semi=force
+sp_before_semi=remove
+sp_before_semi_for=remove
+sp_before_semi_for_empty=remove
+sp_between_semi_for_empty=remove
+sp_after_semi=add
+sp_after_semi_for=force
+sp_after_semi_for_empty=remove
+sp_before_square=remove
+sp_before_squares=remove
+sp_inside_square=remove
+sp_after_comma=add
+sp_before_comma=ignore
+sp_after_mdatype_commas=remove
+sp_before_mdatype_commas=remove
+sp_between_mdatype_commas=remove
+sp_paren_comma=remove
+sp_after_class_colon=force
+sp_before_class_colon=force
+sp_before_case_colon=remove
+sp_after_operator=remove
+sp_after_operator_sym=remove
+sp_after_operator_sym_empty=remove
+sp_after_cast=remove
+sp_inside_paren_cast=remove
+sp_cpp_cast_paren=remove
+sp_sizeof_paren=remove
+sp_inside_braces_enum=add
+sp_inside_braces_empty=remove
+sp_type_func=ignore
+sp_func_proto_paren=remove
+sp_func_def_paren=remove
+sp_inside_fparens=remove
+sp_inside_fparen=remove
+sp_fparen_brace=add
+sp_func_call_paren=remove
+sp_func_call_paren_empty=remove
+sp_func_call_user_paren=remove
+sp_func_class_paren=remove
+sp_return_paren=add
+sp_defined_paren=remove
+sp_throw_paren=add
+sp_catch_paren=add
+sp_brace_typedef=add
+sp_getset_brace=add
+sp_after_dc=remove
+sp_not=remove
+sp_inv=remove
+sp_addr=remove
+sp_member=remove
+sp_deref=remove
+sp_sign=remove
+sp_incdec=remove
+sp_before_nl_cont=add
+sp_after_oc_scope=force
+sp_after_oc_colon=remove
+sp_before_oc_colon=remove
+sp_after_oc_dict_colon=force
+sp_before_oc_dict_colon=remove
+sp_after_send_oc_colon=force
+sp_before_send_oc_colon=remove
+sp_after_oc_type=remove
+sp_after_oc_return_type=remove
+sp_after_oc_at_sel=remove
+sp_inside_oc_at_sel_parens=remove
+sp_cond_colon=add
+sp_cond_question=add
+sp_case_label=ignore
+sp_after_new=force
+sp_between_new_paren=remove
+sp_skip_vbrace_tokens=true
+align_keep_tabs=false
+align_with_tabs=false
+align_on_tabstop=false
+align_number_right=false
+align_func_params=false
+align_same_func_call_params=false
+align_var_def_colon=false
+align_var_def_attribute=false
+align_var_def_inline=false
+align_right_cmt_mix=false
+align_on_operator=false
+align_mix_var_proto=false
+align_single_line_func=false
+align_single_line_brace=false
+align_nl_cont=0
+align_left_shift=false
+nl_collapse_empty_body=false
+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_if_leave_one_liners=false
+nl_oc_msg_leave_one_liner=true
+nl_start_of_file=remove
+nl_end_of_file=force
+nl_end_of_file_min=1
+nl_assign_brace=force
+nl_enum_brace=force
+nl_struct_brace=force
+nl_union_brace=force
+nl_if_brace=force
+nl_brace_else=force
+nl_else_brace=force
+nl_else_if=remove
+nl_brace_finally=force
+nl_finally_brace=force
+nl_try_brace=force
+nl_getset_brace=force
+nl_for_brace=force
+nl_catch_brace=force
+nl_brace_catch=force
+nl_while_brace=force
+nl_using_brace=force
+nl_brace_brace=ignore
+nl_do_brace=force
+nl_brace_while=force
+nl_switch_brace=force
+nl_multi_line_cond=false
+nl_before_case=false
+nl_after_case=false
+nl_case_colon_brace=force
+nl_namespace_brace=force
+nl_template_class=ignore
+nl_class_brace=force
+nl_fdef_brace=force
+nl_after_semicolon=false
+nl_after_brace_open=false
+nl_after_brace_open_cmt=false
+nl_after_vbrace_open=false
+nl_after_vbrace_open_empty=false
+nl_after_brace_close=false
+nl_after_vbrace_close=false
+nl_squeeze_ifdef=false
+nl_ds_struct_enum_cmt=false
+nl_ds_struct_enum_close_brace=false
+nl_namespace_two_to_one_liner=false
+nl_create_if_one_liner=false
+nl_create_for_one_liner=false
+nl_create_while_one_liner=false
+nl_create_func_def_one_liner=false
+ls_for_split_full=false
+ls_func_split_full=false
+nl_max=3
+nl_after_func_body=2
+nl_after_multiline_comment=false
+nl_property_brace=force
+eat_blanks_after_open_brace=true
+eat_blanks_before_close_brace=true
+nl_after_return=false
+mod_full_brace_if_chain=0
+mod_paren_on_return=ignore
+mod_pawn_semicolon=false
+mod_full_paren_if_bool=false
+mod_remove_extra_semicolon=true
+mod_move_case_break=false
+mod_remove_empty_return=true
+cmt_convert_tab_to_spaces=True
+cmt_indent_multi=false
+cmt_c_group=false
+cmt_c_nl_start=false
+cmt_c_nl_end=false
+cmt_cpp_group=false
+cmt_cpp_nl_start=false
+cmt_cpp_nl_end=false
+cmt_cpp_to_c=false
+cmt_star_cont=false
+cmt_multi_check_last=false
+cmt_insert_before_preproc=false
+pp_space_after=ignore
+use_options_overriding_for_qt_macros=false
+warn_level_tabs_found_in_verbatim_string_literals=1
+# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
+# can be turned back on at any time
+mod_add_long_ifdef_else_comment=0
+mod_add_long_ifdef_endif_comment=0
+
+
+# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
+#
+# x = o.Func2(a, b,
+# y);
+# o.Func2(a, b,
+# y);
+#
+# ...but setting it 'true' is often worse:
+#
+# ExtraReallyLongType reallyLongVariableName = someTest
+# ? someTrueExpr
+# : someFalseExpr
+#
+# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
+# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
+# (currently unreported)
+indent_align_assign=false
+
+# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
+# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
+# comment line at the same level of indentation.
+# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
+# (test using Runtime/Allocator/BucketAllocator.h)
+# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
+#sp_cmt_cpp_start=add
+sp_cmt_cpp_start=ignore
+
+# https://sourceforge.net/p/uncrustify/bugs/619/
+#sp_endif_cmt=force
+sp_endif_cmt=ignore
+
+# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
+# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
+#nl_cpp_ldef_brace=force
+indent_member_single=true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-18829.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-18829.cfg
index d65f6b27..d65f6b27 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-18829.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-18829.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1975.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1975.cfg
index 80528dc6..80528dc6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1975.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1975.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1977.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1977.cfg
index 4563bfde..4563bfde 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1977.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1977.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1978.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1978.cfg
index 2cf794e3..2cf794e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-1978.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-1978.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-19895.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-19895.cfg
index ac4012d1..ac4012d1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-19895.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-19895.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-2020.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-2020.cfg
index 0d78de45..0d78de45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-2020.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-2020.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-2021.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-2021.cfg
index 827d33e0..827d33e0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-2021.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-2021.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-21730.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-21730.cfg
index 5443f32f..5443f32f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-21730.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-21730.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-2684.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-2684.cfg
index c048c827..c048c827 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-2684.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-2684.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-2685.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-2685.cfg
index 3f25a1fa..3f25a1fa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-2685.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-2685.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-29933.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-29933.cfg
index 2f136516..2f136516 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-29933.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-29933.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-30498_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-30498_2.cfg
index 8f635e72..8f635e72 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-30498_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-30498_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-3083.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-3083.cfg
index 80528dc6..80528dc6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-3083.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-3083.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-32658.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-32658.cfg
new file mode 100644
index 00000000..9b71b98b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-32658.cfg
@@ -0,0 +1,286 @@
+input_tab_size=4
+string_replace_tab_chars=true
+tok_split_gte=false
+disable_processing_cmt=*begin-nonstandard-formatting*
+enable_processing_cmt=*end-nonstandard-formatting*
+utf8_bom=remove
+utf8_byte=false
+utf8_force=false
+indent_columns=4
+indent_with_tabs=0
+indent_cmt_with_tabs=false
+indent_align_string=false
+indent_braces=false
+indent_braces_no_func=false
+indent_braces_no_class=false
+indent_braces_no_struct=false
+indent_brace_parent=false
+indent_cs_delegate_brace=true
+indent_namespace=true
+indent_extern=false
+indent_class=true
+indent_class_colon=false
+indent_else_if=false
+indent_var_def_cont=false
+indent_func_call_param=true
+indent_func_def_param=true
+indent_func_proto_param=true
+indent_func_class_param=false
+indent_func_ctor_var_param=false
+indent_template_param=false
+indent_func_param_double=false
+indent_member_single=false
+indent_relative_single_line_comments=false
+indent_switch_case=4
+indent_case_shift=0
+indent_case_brace=0
+indent_col1_comment=false
+indent_label=-4
+indent_access_spec=-4
+indent_paren_nl=false
+indent_comma_paren=0
+indent_bool_paren=0
+indent_first_bool_expr=false
+indent_square_nl=false
+indent_preserve_sql=false
+indent_align_paren=false
+indent_oc_block_msg_xcode_style=true
+indent_off_after_return_new=true
+indent_single_after_return=true
+sp_arith=add
+sp_assign=add
+sp_assign_default=add
+sp_enum_assign=add
+sp_pp_concat=remove
+sp_pp_stringify=remove
+sp_bool=add
+sp_compare=add
+sp_inside_paren=remove
+sp_paren_paren=remove
+sp_balance_nested_parens=false
+sp_paren_brace=force
+sp_after_type=ignore
+sp_template_angle=remove
+sp_before_angle=remove
+sp_inside_angle=remove
+sp_angle_paren=remove
+sp_angle_paren_empty=remove
+sp_angle_word=add
+sp_angle_shift=remove
+sp_before_sparen=force
+sp_inside_sparen=remove
+sp_after_sparen=add
+sp_sparen_brace=force
+sp_special_semi=force
+sp_before_semi=remove
+sp_before_semi_for=remove
+sp_before_semi_for_empty=remove
+sp_between_semi_for_empty=remove
+sp_after_semi=add
+sp_after_semi_for=force
+sp_after_semi_for_empty=remove
+sp_before_square=remove
+sp_before_squares=remove
+sp_inside_square=remove
+sp_after_comma=add
+sp_before_comma=ignore
+sp_after_mdatype_commas=remove
+sp_before_mdatype_commas=remove
+sp_between_mdatype_commas=remove
+sp_paren_comma=remove
+sp_after_class_colon=force
+sp_before_class_colon=force
+sp_before_case_colon=remove
+sp_after_operator=remove
+sp_after_operator_sym=remove
+sp_after_operator_sym_empty=remove
+sp_after_cast=remove
+sp_inside_paren_cast=remove
+sp_cpp_cast_paren=remove
+sp_sizeof_paren=remove
+sp_inside_braces_enum=add
+sp_inside_braces_empty=remove
+sp_type_func=ignore
+sp_func_proto_paren=remove
+sp_func_def_paren=remove
+sp_inside_fparens=remove
+sp_inside_fparen=remove
+sp_fparen_brace=add
+sp_func_call_paren=remove
+sp_func_call_paren_empty=remove
+sp_func_call_user_paren=remove
+sp_func_class_paren=remove
+sp_return_paren=add
+sp_defined_paren=remove
+sp_throw_paren=add
+sp_catch_paren=add
+sp_brace_typedef=add
+sp_getset_brace=add
+sp_after_dc=remove
+sp_not=remove
+sp_inv=remove
+sp_addr=remove
+sp_member=remove
+sp_deref=remove
+sp_sign=remove
+sp_incdec=remove
+sp_before_nl_cont=add
+sp_after_oc_scope=force
+sp_after_oc_colon=remove
+sp_before_oc_colon=remove
+sp_after_oc_dict_colon=force
+sp_before_oc_dict_colon=remove
+sp_after_send_oc_colon=force
+sp_before_send_oc_colon=remove
+sp_after_oc_type=remove
+sp_after_oc_return_type=remove
+sp_after_oc_at_sel=remove
+sp_inside_oc_at_sel_parens=remove
+sp_cond_colon=add
+sp_cond_question=add
+sp_case_label=ignore
+sp_after_new=force
+sp_between_new_paren=remove
+sp_skip_vbrace_tokens=true
+align_keep_tabs=false
+align_with_tabs=false
+align_on_tabstop=false
+align_number_right=false
+align_func_params=false
+align_same_func_call_params=false
+align_var_def_colon=false
+align_var_def_attribute=false
+align_var_def_inline=false
+align_right_cmt_mix=false
+align_on_operator=false
+align_mix_var_proto=false
+align_single_line_func=false
+align_single_line_brace=false
+align_nl_cont=0
+align_left_shift=false
+nl_collapse_empty_body=false
+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_if_leave_one_liners=false
+nl_oc_msg_leave_one_liner=true
+nl_start_of_file=remove
+nl_end_of_file=force
+nl_end_of_file_min=1
+nl_assign_brace=force
+nl_enum_brace=force
+nl_struct_brace=force
+nl_union_brace=force
+nl_if_brace=force
+nl_brace_else=force
+nl_else_brace=force
+nl_else_if=remove
+nl_brace_finally=force
+nl_finally_brace=force
+nl_try_brace=force
+nl_getset_brace=force
+nl_for_brace=force
+nl_catch_brace=force
+nl_brace_catch=force
+nl_while_brace=force
+nl_using_brace=force
+nl_brace_brace=ignore
+nl_do_brace=force
+nl_brace_while=force
+nl_switch_brace=force
+nl_multi_line_cond=false
+nl_before_case=false
+nl_after_case=false
+nl_case_colon_brace=force
+nl_namespace_brace=force
+nl_template_class=ignore
+nl_class_brace=force
+nl_fdef_brace=force
+nl_after_semicolon=false
+nl_after_brace_open=false
+nl_after_brace_open_cmt=false
+nl_after_vbrace_open=false
+nl_after_vbrace_open_empty=false
+nl_after_brace_close=false
+nl_after_vbrace_close=false
+nl_squeeze_ifdef=false
+nl_ds_struct_enum_cmt=false
+nl_ds_struct_enum_close_brace=false
+nl_namespace_two_to_one_liner=false
+nl_create_if_one_liner=false
+nl_create_for_one_liner=false
+nl_create_while_one_liner=false
+nl_create_func_def_one_liner=false
+ls_for_split_full=false
+ls_func_split_full=false
+nl_max=3
+nl_after_func_body=2
+nl_after_multiline_comment=false
+nl_property_brace=force
+eat_blanks_after_open_brace=true
+eat_blanks_before_close_brace=true
+nl_after_return=false
+mod_full_brace_if_chain=0
+mod_paren_on_return=ignore
+mod_pawn_semicolon=false
+mod_full_paren_if_bool=false
+mod_remove_extra_semicolon=true
+mod_move_case_break=false
+mod_remove_empty_return=true
+cmt_convert_tab_to_spaces=True
+cmt_indent_multi=false
+cmt_c_group=false
+cmt_c_nl_start=false
+cmt_c_nl_end=false
+cmt_cpp_group=false
+cmt_cpp_nl_start=false
+cmt_cpp_nl_end=false
+cmt_cpp_to_c=false
+cmt_star_cont=false
+cmt_multi_check_last=false
+cmt_insert_before_preproc=false
+pp_space_after=ignore
+use_options_overriding_for_qt_macros=false
+warn_level_tabs_found_in_verbatim_string_literals=1
+# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
+# can be turned back on at any time
+mod_add_long_ifdef_else_comment=0
+mod_add_long_ifdef_endif_comment=0
+
+# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
+#
+# x = o.Func2(a, b,
+# y);
+# o.Func2(a, b,
+# y);
+#
+# ...but setting it 'true' is often worse:
+#
+# ExtraReallyLongType reallyLongVariableName = someTest
+# ? someTrueExpr
+# : someFalseExpr
+#
+# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
+# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
+# (currently unreported)
+indent_align_assign=false
+
+# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
+# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
+# comment line at the same level of indentation.
+# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
+# (test using Runtime/Allocator/BucketAllocator.h)
+# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
+#sp_cmt_cpp_start=add
+sp_cmt_cpp_start=ignore
+
+# https://sourceforge.net/p/uncrustify/bugs/619/
+#sp_endif_cmt=force
+sp_endif_cmt=ignore
+
+# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
+# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
+#nl_cpp_ldef_brace=force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-37241.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-37241.cfg
new file mode 100644
index 00000000..e989f343
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-37241.cfg
@@ -0,0 +1,287 @@
+input_tab_size=4 # Number
+string_replace_tab_chars=true # { False, True }
+tok_split_gte=false # { False, True }
+disable_processing_cmt=*begin-nonstandard-formatting*
+enable_processing_cmt=*end-nonstandard-formatting*
+utf8_bom=remove # { Ignore, Add, Remove, Force }
+utf8_byte=false # { False, True }
+utf8_force=false # { False, True }
+indent_columns=4 # Number
+indent_with_tabs=0 # Number
+indent_cmt_with_tabs=false # { False, True }
+indent_align_string=false # { False, True }
+indent_braces=false # { False, True }
+indent_braces_no_func=false # { False, True }
+indent_braces_no_class=false # { False, True }
+indent_braces_no_struct=false # { False, True }
+indent_brace_parent=false # { False, True }
+indent_cs_delegate_brace=true # { False, True }
+indent_namespace=true # { False, True }
+indent_extern=false # { False, True }
+indent_class=true # { False, True }
+indent_class_colon=false # { False, True }
+indent_else_if=false # { False, True }
+indent_var_def_cont=false # { False, True }
+indent_func_call_param=true # { False, True }
+indent_func_def_param=true # { False, True }
+indent_func_proto_param=true # { False, True }
+indent_func_class_param=false # { False, True }
+indent_func_ctor_var_param=false # { False, True }
+indent_template_param=false # { False, True }
+indent_func_param_double=false # { False, True }
+indent_member_single=false # false/true
+indent_relative_single_line_comments=false # { False, True }
+indent_switch_case=4 # Number
+indent_case_shift=0 # Number
+indent_case_brace=0 # Number
+indent_col1_comment=false # { False, True }
+indent_label=-4 # Number
+indent_access_spec=-4 # Number
+indent_paren_nl=false # { False, True }
+indent_comma_paren=0 # Number
+indent_bool_paren=0 # Number
+indent_first_bool_expr=false # { False, True }
+indent_square_nl=false # { False, True }
+indent_preserve_sql=false # { False, True }
+indent_align_paren=false # { False, True }
+indent_oc_block_msg_xcode_style=true # { False, True }
+indent_off_after_return_new=true # { False, True }
+indent_single_after_return=true # { False, True }
+sp_arith=add # { Ignore, Add, Remove, Force }
+sp_assign=add # { Ignore, Add, Remove, Force }
+sp_assign_default=add # { Ignore, Add, Remove, Force }
+sp_enum_assign=add # { Ignore, Add, Remove, Force }
+sp_pp_concat=remove # { Ignore, Add, Remove, Force }
+sp_pp_stringify=remove # { Ignore, Add, Remove, Force }
+sp_bool=add # { Ignore, Add, Remove, Force }
+sp_compare=add # { Ignore, Add, Remove, Force }
+sp_inside_paren=remove # { Ignore, Add, Remove, Force }
+sp_paren_paren=remove # { Ignore, Add, Remove, Force }
+sp_balance_nested_parens=false # { False, True }
+sp_paren_brace=force # { Ignore, Add, Remove, Force }
+sp_after_type=ignore # { Ignore, Add, Remove, Force }
+sp_template_angle=remove # { Ignore, Add, Remove, Force }
+sp_before_angle=remove # { Ignore, Add, Remove, Force }
+sp_inside_angle=remove # { Ignore, Add, Remove, Force }
+sp_angle_paren=remove # { Ignore, Add, Remove, Force }
+sp_angle_paren_empty=remove # { Ignore, Add, Remove, Force }
+sp_angle_word=add # { Ignore, Add, Remove, Force }
+sp_angle_shift=remove # { Ignore, Add, Remove, Force }
+sp_before_sparen=force # { Ignore, Add, Remove, Force }
+sp_inside_sparen=remove # { Ignore, Add, Remove, Force }
+sp_after_sparen=add # { Ignore, Add, Remove, Force }
+sp_sparen_brace=force # { Ignore, Add, Remove, Force }
+sp_special_semi=force # { Ignore, Add, Remove, Force }
+sp_before_semi=remove # { Ignore, Add, Remove, Force }
+sp_before_semi_for=remove # { Ignore, Add, Remove, Force }
+sp_before_semi_for_empty=remove # { Ignore, Add, Remove, Force }
+sp_between_semi_for_empty=remove # { Ignore, Add, Remove, Force }
+sp_after_semi=add # { Ignore, Add, Remove, Force }
+sp_after_semi_for=force # { Ignore, Add, Remove, Force }
+sp_after_semi_for_empty=remove # { Ignore, Add, Remove, Force }
+sp_before_square=remove # { Ignore, Add, Remove, Force }
+sp_before_squares=remove # { Ignore, Add, Remove, Force }
+sp_inside_square=remove # { Ignore, Add, Remove, Force }
+sp_after_comma=add # { Ignore, Add, Remove, Force }
+sp_before_comma=ignore # { Ignore, Add, Remove, Force }
+sp_after_mdatype_commas=remove # { Ignore, Add, Remove, Force }
+sp_before_mdatype_commas=remove # { Ignore, Add, Remove, Force }
+sp_between_mdatype_commas=remove # { Ignore, Add, Remove, Force }
+sp_paren_comma=remove # { Ignore, Add, Remove, Force }
+sp_after_class_colon=force # { Ignore, Add, Remove, Force }
+sp_before_class_colon=force # { Ignore, Add, Remove, Force }
+sp_before_case_colon=remove # { Ignore, Add, Remove, Force }
+sp_after_operator=remove # { Ignore, Add, Remove, Force }
+sp_after_operator_sym=remove # { Ignore, Add, Remove, Force }
+sp_after_operator_sym_empty=remove # { Ignore, Add, Remove, Force }
+sp_after_cast=remove # { Ignore, Add, Remove, Force }
+sp_inside_paren_cast=remove # { Ignore, Add, Remove, Force }
+sp_cpp_cast_paren=remove # { Ignore, Add, Remove, Force }
+sp_sizeof_paren=remove # { Ignore, Add, Remove, Force }
+sp_inside_braces_enum=add # { Ignore, Add, Remove, Force }
+sp_inside_braces_empty=remove # { Ignore, Add, Remove, Force }
+sp_type_func=ignore # { Ignore, Add, Remove, Force }
+sp_func_proto_paren=remove # { Ignore, Add, Remove, Force }
+sp_func_def_paren=remove # { Ignore, Add, Remove, Force }
+sp_inside_fparens=remove # { Ignore, Add, Remove, Force }
+sp_inside_fparen=remove # { Ignore, Add, Remove, Force }
+sp_fparen_brace=add # { Ignore, Add, Remove, Force }
+sp_func_call_paren=remove # { Ignore, Add, Remove, Force }
+sp_func_call_paren_empty=remove # { Ignore, Add, Remove, Force }
+sp_func_call_user_paren=remove # { Ignore, Add, Remove, Force }
+sp_func_class_paren=remove # { Ignore, Add, Remove, Force }
+sp_return_paren=add # { Ignore, Add, Remove, Force }
+sp_defined_paren=remove # { Ignore, Add, Remove, Force }
+sp_throw_paren=add # { Ignore, Add, Remove, Force }
+sp_catch_paren=add # { Ignore, Add, Remove, Force }
+sp_brace_typedef=add # { Ignore, Add, Remove, Force }
+sp_getset_brace=add # { Ignore, Add, Remove, Force }
+sp_after_dc=remove # { Ignore, Add, Remove, Force }
+sp_not=remove # { Ignore, Add, Remove, Force }
+sp_inv=remove # { Ignore, Add, Remove, Force }
+sp_addr=remove # { Ignore, Add, Remove, Force }
+sp_member=remove # { Ignore, Add, Remove, Force }
+sp_deref=remove # { Ignore, Add, Remove, Force }
+sp_sign=remove # { Ignore, Add, Remove, Force }
+sp_incdec=remove # { Ignore, Add, Remove, Force }
+sp_before_nl_cont=add # { Ignore, Add, Remove, Force }
+sp_after_oc_scope=force # { Ignore, Add, Remove, Force }
+sp_after_oc_colon=remove # { Ignore, Add, Remove, Force }
+sp_before_oc_colon=remove # { Ignore, Add, Remove, Force }
+sp_after_oc_dict_colon=force # { Ignore, Add, Remove, Force }
+sp_before_oc_dict_colon=remove # { Ignore, Add, Remove, Force }
+sp_after_send_oc_colon=force # { Ignore, Add, Remove, Force }
+sp_before_send_oc_colon=remove # { Ignore, Add, Remove, Force }
+sp_after_oc_type=remove # { Ignore, Add, Remove, Force }
+sp_after_oc_return_type=remove # { Ignore, Add, Remove, Force }
+sp_after_oc_at_sel=remove # { Ignore, Add, Remove, Force }
+sp_inside_oc_at_sel_parens=remove # { Ignore, Add, Remove, Force }
+sp_cond_colon=add # { Ignore, Add, Remove, Force }
+sp_cond_question=add # { Ignore, Add, Remove, Force }
+sp_case_label=ignore # { Ignore, Add, Remove, Force }
+sp_after_new=force # { Ignore, Add, Remove, Force }
+sp_between_new_paren=remove # { Ignore, Add, Remove, Force }
+sp_skip_vbrace_tokens=true # { False, True }
+align_keep_tabs=false # { False, True }
+align_with_tabs=false # { False, True }
+align_on_tabstop=false # { False, True }
+align_number_right=false # { False, True }
+align_func_params=false # { False, True }
+align_same_func_call_params=false # { False, True }
+align_var_def_colon=false # { False, True }
+align_var_def_attribute=false # { False, True }
+align_var_def_inline=false # { False, True }
+align_right_cmt_mix=false # { False, True }
+align_on_operator=false # { False, True }
+align_mix_var_proto=false # { False, True }
+align_single_line_func=false # { False, True }
+align_single_line_brace=false # { False, True }
+align_nl_cont=0 # Number
+align_left_shift=false # { False, True }
+nl_collapse_empty_body=false # { False, True }
+nl_assign_leave_one_liners=true # { False, True }
+nl_class_leave_one_liners=true # { False, True }
+nl_enum_leave_one_liners=true # { False, True }
+nl_getset_leave_one_liners=true # { False, True }
+nl_func_leave_one_liners=true # { False, True }
+nl_cpp_lambda_leave_one_liners=true # { False, True }
+nl_if_leave_one_liners=false # { False, True }
+nl_oc_msg_leave_one_liner=true # { False, True }
+nl_start_of_file=remove # { Ignore, Add, Remove, Force }
+nl_end_of_file=force # { Ignore, Add, Remove, Force }
+nl_end_of_file_min=1 # Number
+nl_assign_brace=force # { Ignore, Add, Remove, Force }
+nl_enum_brace=force # { Ignore, Add, Remove, Force }
+nl_struct_brace=force # { Ignore, Add, Remove, Force }
+nl_union_brace=force # { Ignore, Add, Remove, Force }
+nl_if_brace=force # { Ignore, Add, Remove, Force }
+nl_brace_else=force # { Ignore, Add, Remove, Force }
+nl_else_brace=force # { Ignore, Add, Remove, Force }
+nl_else_if=remove # { Ignore, Add, Remove, Force }
+nl_brace_finally=force # { Ignore, Add, Remove, Force }
+nl_finally_brace=force # { Ignore, Add, Remove, Force }
+nl_try_brace=force # { Ignore, Add, Remove, Force }
+nl_getset_brace=force # { Ignore, Add, Remove, Force }
+nl_for_brace=force # { Ignore, Add, Remove, Force }
+nl_catch_brace=force # { Ignore, Add, Remove, Force }
+nl_brace_catch=force # { Ignore, Add, Remove, Force }
+nl_while_brace=force # { Ignore, Add, Remove, Force }
+nl_using_brace=force # { Ignore, Add, Remove, Force }
+nl_brace_brace=ignore # { Ignore, Add, Remove, Force }
+nl_do_brace=force # { Ignore, Add, Remove, Force }
+nl_brace_while=force # { Ignore, Add, Remove, Force }
+nl_switch_brace=force # { Ignore, Add, Remove, Force }
+nl_multi_line_cond=false # { False, True }
+nl_before_case=false # { False, True }
+nl_after_case=false # { False, True }
+nl_case_colon_brace=force # { Ignore, Add, Remove, Force }
+nl_namespace_brace=force # { Ignore, Add, Remove, Force }
+nl_template_class=ignore # { Ignore, Add, Remove, Force }
+nl_class_brace=force # { Ignore, Add, Remove, Force }
+nl_fdef_brace=force # { Ignore, Add, Remove, Force }
+nl_after_semicolon=false # { False, True }
+nl_after_brace_open=false # { False, True }
+nl_after_brace_open_cmt=false # { False, True }
+nl_after_vbrace_open=false # { False, True }
+nl_after_vbrace_open_empty=false # { False, True }
+nl_after_brace_close=false # { False, True }
+nl_after_vbrace_close=false # { False, True }
+nl_squeeze_ifdef=false # { False, True }
+nl_ds_struct_enum_cmt=false # { False, True }
+nl_ds_struct_enum_close_brace=false # { False, True }
+nl_namespace_two_to_one_liner=false # { False, True }
+nl_create_if_one_liner=false # { False, True }
+nl_create_for_one_liner=false # { False, True }
+nl_create_while_one_liner=false # { False, True }
+nl_create_func_def_one_liner=false # { False, True }
+ls_for_split_full=false # { False, True }
+ls_func_split_full=false # { False, True }
+nl_max=3 # Number
+nl_after_func_body=2 # Number
+nl_after_multiline_comment=false # { False, True }
+nl_property_brace=force # { Ignore, Add, Remove, Force }
+eat_blanks_after_open_brace=true # { False, True }
+eat_blanks_before_close_brace=true # { False, True }
+nl_after_return=false # { False, True }
+mod_full_brace_if_chain=0 # Number
+mod_paren_on_return=ignore # { Ignore, Add, Remove, Force }
+mod_pawn_semicolon=false # { False, True }
+mod_full_paren_if_bool=false # { False, True }
+mod_remove_extra_semicolon=true # { False, True }
+mod_move_case_break=false # { False, True }
+mod_remove_empty_return=true # { False, True }
+cmt_convert_tab_to_spaces=True # { False, True }
+cmt_indent_multi=false # { False, True }
+cmt_c_group=false # { False, True }
+cmt_c_nl_start=false # { False, True }
+cmt_c_nl_end=false # { False, True }
+cmt_cpp_group=false # { False, True }
+cmt_cpp_nl_start=false # { False, True }
+cmt_cpp_nl_end=false # { False, True }
+cmt_cpp_to_c=false # { False, True }
+cmt_star_cont=false # { False, True }
+cmt_multi_check_last=false # { False, True }
+cmt_insert_before_preproc=false # { False, True }
+pp_space_after=ignore # { Ignore, Add, Remove, Force }
+use_options_overriding_for_qt_macros=false # { False, True }
+warn_level_tabs_found_in_verbatim_string_literals=1 # { 1, 2, 3 }
+# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
+# can be turned back on at any time
+mod_add_long_ifdef_else_comment=0
+mod_add_long_ifdef_endif_comment=0
+
+# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
+#
+# x = o.Func2(a, b,
+# y);
+# o.Func2(a, b,
+# y);
+#
+# ...but setting it 'true' is often worse:
+#
+# ExtraReallyLongType reallyLongVariableName = someTest
+# ? someTrueExpr
+# : someFalseExpr
+#
+# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
+# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
+# (currently unreported)
+indent_align_assign=false
+
+# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
+# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
+# comment line at the same level of indentation.
+# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
+# (test using Runtime/Allocator/BucketAllocator.h)
+# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
+#sp_cmt_cpp_start=add
+sp_cmt_cpp_start=ignore
+
+# https://sourceforge.net/p/uncrustify/bugs/619/
+#sp_endif_cmt=force
+sp_endif_cmt=ignore
+
+# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
+# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
+#nl_cpp_ldef_brace=force
+nl_cs_property_leave_one_liners=true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-9917.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-9917.cfg
index f1fd0af3..f1fd0af3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/UNI-9917.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/UNI-9917.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_032.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_032.cfg
index 00575c6b..00575c6b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_032.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_032.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_033.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_033.cfg
index 3f1ffc6c..3f1ffc6c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_033.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_033.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_034.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_034.cfg
index 0681b1b8..0681b1b8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_034.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_034.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_036.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_036.cfg
index ed89e06a..ed89e06a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_036.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_036.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_037.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_037.cfg
index 97daab41..97daab41 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_037.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_037.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_038.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_038.cfg
index 4384cfbd..4384cfbd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_038.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_038.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_043.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_043.cfg
index fcbc9ddc..fcbc9ddc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_043.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_043.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_044.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_044.cfg
index 6815087d..6815087d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_044.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_044.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_045.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_045.cfg
index 9419199e..9419199e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/ben_045.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/ben_045.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_1620.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_1620.cfg
new file mode 100644
index 00000000..7ab2efdb
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_1620.cfg
@@ -0,0 +1,289 @@
+input_tab_size=4
+string_replace_tab_chars=true
+tok_split_gte=false
+disable_processing_cmt=*begin-nonstandard-formatting*
+enable_processing_cmt=*end-nonstandard-formatting*
+utf8_bom=remove
+utf8_byte=false
+utf8_force=false
+indent_columns=4
+indent_with_tabs=0
+indent_cmt_with_tabs=false
+indent_align_string=false
+indent_braces=false
+indent_braces_no_func=false
+indent_braces_no_class=false
+indent_braces_no_struct=false
+indent_brace_parent=false
+indent_cs_delegate_brace=true
+indent_namespace=true
+indent_extern=false
+indent_class=true
+indent_class_colon=false
+indent_else_if=false
+indent_var_def_cont=false
+indent_func_call_param=true
+indent_func_def_param=true
+indent_func_proto_param=true
+indent_func_class_param=false
+indent_func_ctor_var_param=false
+indent_template_param=false
+indent_func_param_double=false
+indent_member_single=false
+indent_relative_single_line_comments=false
+indent_switch_case=4
+indent_case_shift=0
+indent_case_brace=0
+indent_col1_comment=false
+indent_label=-4
+indent_access_spec=-4
+indent_paren_nl=false
+indent_comma_paren=0
+indent_bool_paren=0
+indent_first_bool_expr=false
+indent_square_nl=false
+indent_preserve_sql=false
+indent_align_paren=false
+indent_oc_block_msg_xcode_style=true
+indent_off_after_return_new=true
+indent_single_after_return=true
+sp_arith=add
+sp_assign=add
+sp_assign_default=add
+sp_enum_assign=add
+sp_pp_concat=remove
+sp_pp_stringify=remove
+sp_bool=add
+sp_compare=add
+sp_inside_paren=remove
+sp_paren_paren=remove
+sp_balance_nested_parens=false
+sp_paren_brace=force
+sp_after_type=ignore
+sp_template_angle=remove
+sp_before_angle=remove
+sp_inside_angle=remove
+sp_angle_paren=remove
+sp_angle_paren_empty=remove
+sp_angle_word=add
+sp_angle_shift=remove
+sp_before_sparen=force
+sp_inside_sparen=remove
+sp_after_sparen=add
+sp_sparen_brace=force
+sp_special_semi=force
+sp_before_semi=remove
+sp_before_semi_for=remove
+sp_before_semi_for_empty=remove
+sp_between_semi_for_empty=remove
+sp_after_semi=add
+sp_after_semi_for=force
+sp_after_semi_for_empty=remove
+sp_before_square=remove
+sp_before_squares=remove
+sp_inside_square=remove
+sp_after_comma=add
+sp_before_comma=ignore
+sp_after_mdatype_commas=remove
+sp_before_mdatype_commas=remove
+sp_between_mdatype_commas=remove
+sp_paren_comma=remove
+sp_after_class_colon=force
+sp_before_class_colon=force
+sp_before_case_colon=remove
+sp_after_operator=remove
+sp_after_operator_sym=remove
+sp_after_operator_sym_empty=remove
+sp_after_cast=remove
+sp_inside_paren_cast=remove
+sp_cpp_cast_paren=remove
+sp_sizeof_paren=remove
+sp_inside_braces_enum=add
+sp_inside_braces_empty=remove
+sp_type_func=ignore
+sp_func_proto_paren=remove
+sp_func_def_paren=remove
+sp_inside_fparens=remove
+sp_inside_fparen=remove
+sp_fparen_brace=add
+sp_func_call_paren=remove
+sp_func_call_paren_empty=remove
+sp_func_call_user_paren=remove
+sp_func_class_paren=remove
+sp_return_paren=add
+sp_defined_paren=remove
+sp_throw_paren=add
+sp_catch_paren=add
+sp_brace_typedef=add
+sp_getset_brace=add
+sp_after_dc=remove
+sp_not=remove
+sp_inv=remove
+sp_addr=remove
+sp_member=remove
+sp_deref=remove
+sp_sign=remove
+sp_incdec=remove
+sp_before_nl_cont=add
+sp_after_oc_scope=force
+sp_after_oc_colon=remove
+sp_before_oc_colon=remove
+sp_after_oc_dict_colon=force
+sp_before_oc_dict_colon=remove
+sp_after_send_oc_colon=force
+sp_before_send_oc_colon=remove
+sp_after_oc_type=remove
+sp_after_oc_return_type=remove
+sp_after_oc_at_sel=remove
+sp_inside_oc_at_sel_parens=remove
+sp_cond_colon=add
+sp_cond_question=add
+sp_case_label=ignore
+sp_after_new=force
+sp_between_new_paren=remove
+sp_skip_vbrace_tokens=true
+align_keep_tabs=false
+align_with_tabs=false
+align_on_tabstop=false
+align_number_right=false
+align_func_params=false
+align_same_func_call_params=false
+align_var_def_colon=false
+align_var_def_attribute=false
+align_var_def_inline=false
+align_right_cmt_mix=false
+align_on_operator=false
+align_mix_var_proto=false
+align_single_line_func=false
+align_single_line_brace=false
+align_nl_cont=0
+align_left_shift=false
+nl_collapse_empty_body=false
+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_if_leave_one_liners=false
+nl_oc_msg_leave_one_liner=true
+nl_start_of_file=remove
+nl_end_of_file=force
+nl_end_of_file_min=1
+nl_assign_brace=force
+nl_enum_brace=force
+nl_struct_brace=force
+nl_union_brace=force
+nl_if_brace=force
+nl_brace_else=force
+nl_else_brace=force
+nl_else_if=remove
+nl_brace_finally=force
+nl_finally_brace=force
+nl_try_brace=force
+nl_getset_brace=force
+nl_for_brace=force
+nl_catch_brace=force
+nl_brace_catch=force
+nl_while_brace=force
+nl_using_brace=force
+nl_brace_brace=ignore
+nl_do_brace=force
+nl_brace_while=force
+nl_switch_brace=force
+nl_multi_line_cond=false
+nl_before_case=false
+nl_after_case=false
+nl_case_colon_brace=force
+nl_namespace_brace=force
+nl_template_class=ignore
+nl_class_brace=force
+nl_fdef_brace=force
+nl_after_semicolon=false
+nl_after_brace_open=false
+nl_after_brace_open_cmt=false
+nl_after_vbrace_open=false
+nl_after_vbrace_open_empty=false
+nl_after_brace_close=false
+nl_after_vbrace_close=false
+nl_squeeze_ifdef=false
+nl_ds_struct_enum_cmt=false
+nl_ds_struct_enum_close_brace=false
+nl_namespace_two_to_one_liner=false
+nl_create_if_one_liner=false
+nl_create_for_one_liner=false
+nl_create_while_one_liner=false
+nl_create_func_def_one_liner=false
+ls_for_split_full=false
+ls_func_split_full=false
+nl_max=3
+nl_after_func_body=2
+nl_after_multiline_comment=false
+nl_property_brace=force
+eat_blanks_after_open_brace=true
+eat_blanks_before_close_brace=true
+nl_after_return=false
+mod_full_brace_if_chain=0
+mod_paren_on_return=ignore
+mod_pawn_semicolon=false
+mod_full_paren_if_bool=false
+mod_remove_extra_semicolon=true
+mod_move_case_break=false
+mod_remove_empty_return=true
+cmt_convert_tab_to_spaces=True
+cmt_indent_multi=false
+cmt_c_group=false
+cmt_c_nl_start=false
+cmt_c_nl_end=false
+cmt_cpp_group=false
+cmt_cpp_nl_start=false
+cmt_cpp_nl_end=false
+cmt_cpp_to_c=false
+cmt_star_cont=false
+cmt_multi_check_last=false
+cmt_insert_before_preproc=false
+pp_space_after=ignore
+use_options_overriding_for_qt_macros=false
+warn_level_tabs_found_in_verbatim_string_literals=1
+mod_add_long_ifdef_else_comment=0
+mod_add_long_ifdef_endif_comment=0
+
+
+
+# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
+#
+# x = o.Func2(a, b,
+# y);
+# o.Func2(a, b,
+# y);
+#
+# ...but setting it 'true' is often worse:
+#
+# ExtraReallyLongType reallyLongVariableName = someTest
+# ? someTrueExpr
+# : someFalseExpr
+#
+# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
+# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
+# (currently unreported)
+indent_align_assign=false
+
+# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
+# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
+# comment line at the same level of indentation.
+# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
+# (test using Runtime/Allocator/BucketAllocator.h)
+# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
+#sp_cmt_cpp_start=add
+sp_cmt_cpp_start=ignore
+
+# https://sourceforge.net/p/uncrustify/bugs/619/
+#sp_endif_cmt=force
+sp_endif_cmt=ignore
+
+# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
+# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
+#nl_cpp_ldef_brace=force
+indent_paren_open_brace=true
+indent_cs_delegate_brace=false
+indent_paren_close=2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_1637.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_1637.cfg
new file mode 100644
index 00000000..c812a407
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_1637.cfg
@@ -0,0 +1,287 @@
+input_tab_size=4
+string_replace_tab_chars=true
+tok_split_gte=false
+disable_processing_cmt=*begin-nonstandard-formatting*
+enable_processing_cmt=*end-nonstandard-formatting*
+utf8_bom=remove
+utf8_byte=false
+utf8_force=false
+indent_columns=4
+indent_with_tabs=0
+indent_cmt_with_tabs=false
+indent_align_string=false
+indent_braces=false
+indent_braces_no_func=false
+indent_braces_no_class=false
+indent_braces_no_struct=false
+indent_brace_parent=false
+indent_cs_delegate_brace=true
+indent_namespace=true
+indent_extern=false
+indent_class=true
+indent_class_colon=false
+indent_else_if=false
+indent_var_def_cont=false
+indent_func_call_param=true
+indent_func_def_param=true
+indent_func_proto_param=true
+indent_func_class_param=false
+indent_func_ctor_var_param=false
+indent_template_param=false
+indent_func_param_double=false
+indent_member_single=false
+indent_relative_single_line_comments=false
+indent_switch_case=4
+indent_case_shift=0
+indent_case_brace=0
+indent_col1_comment=false
+indent_label=-4
+indent_access_spec=-4
+indent_paren_nl=false
+indent_comma_paren=0
+indent_bool_paren=0
+indent_first_bool_expr=false
+indent_square_nl=false
+indent_preserve_sql=false
+indent_align_paren=false
+indent_oc_block_msg_xcode_style=true
+indent_off_after_return_new=true
+indent_single_after_return=true
+sp_arith=add
+sp_assign=add
+sp_assign_default=add
+sp_enum_assign=add
+sp_pp_concat=remove
+sp_pp_stringify=remove
+sp_bool=add
+sp_compare=add
+sp_inside_paren=remove
+sp_paren_paren=remove
+sp_balance_nested_parens=false
+sp_paren_brace=force
+sp_after_type=ignore
+sp_template_angle=remove
+sp_before_angle=remove
+sp_inside_angle=remove
+sp_angle_paren=remove
+sp_angle_paren_empty=remove
+sp_angle_word=add
+sp_angle_shift=remove
+sp_before_sparen=force
+sp_inside_sparen=remove
+sp_after_sparen=add
+sp_sparen_brace=force
+sp_special_semi=force
+sp_before_semi=remove
+sp_before_semi_for=remove
+sp_before_semi_for_empty=remove
+sp_between_semi_for_empty=remove
+sp_after_semi=add
+sp_after_semi_for=force
+sp_after_semi_for_empty=remove
+sp_before_square=remove
+sp_before_squares=remove
+sp_inside_square=remove
+sp_after_comma=add
+sp_before_comma=ignore
+sp_after_mdatype_commas=remove
+sp_before_mdatype_commas=remove
+sp_between_mdatype_commas=remove
+sp_paren_comma=remove
+sp_after_class_colon=force
+sp_before_class_colon=force
+sp_before_case_colon=remove
+sp_after_operator=remove
+sp_after_operator_sym=remove
+sp_after_operator_sym_empty=remove
+sp_after_cast=remove
+sp_inside_paren_cast=remove
+sp_cpp_cast_paren=remove
+sp_sizeof_paren=remove
+sp_inside_braces_enum=add
+sp_inside_braces_empty=remove
+sp_type_func=ignore
+sp_func_proto_paren=remove
+sp_func_def_paren=remove
+sp_inside_fparens=remove
+sp_inside_fparen=remove
+sp_fparen_brace=add
+sp_func_call_paren=remove
+sp_func_call_paren_empty=remove
+sp_func_call_user_paren=remove
+sp_func_class_paren=remove
+sp_return_paren=add
+sp_defined_paren=remove
+sp_throw_paren=add
+sp_catch_paren=add
+sp_brace_typedef=add
+sp_getset_brace=add
+sp_after_dc=remove
+sp_not=remove
+sp_inv=remove
+sp_addr=remove
+sp_member=remove
+sp_deref=remove
+sp_sign=remove
+sp_incdec=remove
+sp_before_nl_cont=add
+sp_after_oc_scope=force
+sp_after_oc_colon=remove
+sp_before_oc_colon=remove
+sp_after_oc_dict_colon=force
+sp_before_oc_dict_colon=remove
+sp_after_send_oc_colon=force
+sp_before_send_oc_colon=remove
+sp_after_oc_type=remove
+sp_after_oc_return_type=remove
+sp_after_oc_at_sel=remove
+sp_inside_oc_at_sel_parens=remove
+sp_cond_colon=add
+sp_cond_question=add
+sp_case_label=ignore
+sp_after_new=force
+sp_between_new_paren=remove
+sp_skip_vbrace_tokens=true
+align_keep_tabs=false
+align_with_tabs=false
+align_on_tabstop=false
+align_number_right=false
+align_func_params=false
+align_same_func_call_params=false
+align_var_def_colon=false
+align_var_def_attribute=false
+align_var_def_inline=false
+align_right_cmt_mix=false
+align_on_operator=false
+align_mix_var_proto=false
+align_single_line_func=false
+align_single_line_brace=false
+align_nl_cont=0
+align_left_shift=false
+nl_collapse_empty_body=false
+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_if_leave_one_liners=false
+nl_oc_msg_leave_one_liner=true
+nl_start_of_file=remove
+nl_end_of_file=force
+nl_end_of_file_min=1
+nl_assign_brace=force
+nl_enum_brace=force
+nl_struct_brace=force
+nl_union_brace=force
+nl_if_brace=force
+nl_brace_else=force
+nl_else_brace=force
+nl_else_if=remove
+nl_brace_finally=force
+nl_finally_brace=force
+nl_try_brace=force
+nl_getset_brace=force
+nl_for_brace=force
+nl_catch_brace=force
+nl_brace_catch=force
+nl_while_brace=force
+nl_using_brace=force
+nl_brace_brace=ignore
+nl_do_brace=force
+nl_brace_while=force
+nl_switch_brace=force
+nl_multi_line_cond=false
+nl_before_case=false
+nl_after_case=false
+nl_case_colon_brace=force
+nl_namespace_brace=force
+nl_template_class=ignore
+nl_class_brace=force
+nl_fdef_brace=force
+nl_after_semicolon=false
+nl_after_brace_open=false
+nl_after_brace_open_cmt=false
+nl_after_vbrace_open=false
+nl_after_vbrace_open_empty=false
+nl_after_brace_close=false
+nl_after_vbrace_close=false
+nl_squeeze_ifdef=false
+nl_ds_struct_enum_cmt=false
+nl_ds_struct_enum_close_brace=false
+nl_namespace_two_to_one_liner=false
+nl_create_if_one_liner=false
+nl_create_for_one_liner=false
+nl_create_while_one_liner=false
+nl_create_func_def_one_liner=false
+ls_for_split_full=false
+ls_func_split_full=false
+nl_max=3
+nl_after_func_body=2
+nl_after_multiline_comment=false
+nl_property_brace=force
+eat_blanks_after_open_brace=true
+eat_blanks_before_close_brace=true
+nl_after_return=false
+mod_full_brace_if_chain=0
+mod_pawn_semicolon=false
+mod_full_paren_if_bool=false
+mod_remove_extra_semicolon=true
+mod_move_case_break=false
+mod_remove_empty_return=true
+cmt_convert_tab_to_spaces=True
+cmt_indent_multi=false
+cmt_c_group=false
+cmt_c_nl_start=false
+cmt_c_nl_end=false
+cmt_cpp_group=false
+cmt_cpp_nl_start=false
+cmt_cpp_nl_end=false
+cmt_cpp_to_c=false
+cmt_star_cont=false
+cmt_multi_check_last=false
+cmt_insert_before_preproc=false
+pp_space_after=ignore
+use_options_overriding_for_qt_macros=false
+warn_level_tabs_found_in_verbatim_string_literals=1
+mod_add_long_ifdef_else_comment=0
+mod_add_long_ifdef_endif_comment=0
+
+
+
+# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
+#
+# x = o.Func2(a, b,
+# y);
+# o.Func2(a, b,
+# y);
+#
+# ...but setting it 'true' is often worse:
+#
+# ExtraReallyLongType reallyLongVariableName = someTest
+# ? someTrueExpr
+# : someFalseExpr
+#
+# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
+# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
+# (currently unreported)
+indent_align_assign=false
+
+# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
+# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
+# comment line at the same level of indentation.
+# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
+# (test using Runtime/Allocator/BucketAllocator.h)
+# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
+#sp_cmt_cpp_start=add
+sp_cmt_cpp_start=ignore
+
+# https://sourceforge.net/p/uncrustify/bugs/619/
+#sp_endif_cmt=force
+sp_endif_cmt=ignore
+
+# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
+# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
+#nl_cpp_ldef_brace=force
+
+mod_paren_on_return=remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_1650.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_1650.cfg
new file mode 100644
index 00000000..166b3961
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_1650.cfg
@@ -0,0 +1,288 @@
+input_tab_size=4
+string_replace_tab_chars=true
+tok_split_gte=false
+disable_processing_cmt=*begin-nonstandard-formatting*
+enable_processing_cmt=*end-nonstandard-formatting*
+utf8_bom=remove
+utf8_byte=false
+utf8_force=false
+indent_columns=4
+indent_with_tabs=0
+indent_cmt_with_tabs=false
+indent_align_string=false
+indent_braces=false
+indent_braces_no_func=false
+indent_braces_no_class=false
+indent_braces_no_struct=false
+indent_brace_parent=false
+indent_cs_delegate_brace=true
+indent_namespace=true
+indent_extern=false
+indent_class=true
+indent_class_colon=false
+indent_else_if=false
+indent_var_def_cont=false
+indent_func_call_param=true
+indent_func_def_param=true
+indent_func_proto_param=true
+indent_func_class_param=false
+indent_func_ctor_var_param=false
+indent_template_param=false
+indent_func_param_double=false
+indent_relative_single_line_comments=false
+indent_switch_case=4
+indent_case_shift=0
+indent_case_brace=0
+indent_col1_comment=false
+indent_label=-4
+indent_access_spec=-4
+indent_paren_nl=false
+indent_comma_paren=0
+indent_bool_paren=0
+indent_first_bool_expr=false
+indent_square_nl=false
+indent_preserve_sql=false
+indent_align_paren=false
+indent_oc_block_msg_xcode_style=true
+indent_off_after_return_new=true
+indent_single_after_return=true
+sp_arith=add
+sp_assign=add
+sp_assign_default=add
+sp_enum_assign=add
+sp_pp_concat=remove
+sp_pp_stringify=remove
+sp_bool=add
+sp_compare=add
+sp_inside_paren=remove
+sp_paren_paren=remove
+sp_balance_nested_parens=false
+sp_paren_brace=force
+sp_after_type=ignore
+sp_template_angle=remove
+sp_before_angle=remove
+sp_inside_angle=remove
+sp_angle_paren=remove
+sp_angle_paren_empty=remove
+sp_angle_word=add
+sp_angle_shift=remove
+sp_before_sparen=force
+sp_inside_sparen=remove
+sp_after_sparen=add
+sp_sparen_brace=force
+sp_special_semi=force
+sp_before_semi=remove
+sp_before_semi_for=remove
+sp_before_semi_for_empty=remove
+sp_between_semi_for_empty=remove
+sp_after_semi=add
+sp_after_semi_for=force
+sp_after_semi_for_empty=remove
+sp_before_square=remove
+sp_before_squares=remove
+sp_inside_square=remove
+sp_after_comma=add
+sp_before_comma=ignore
+sp_after_mdatype_commas=remove
+sp_before_mdatype_commas=remove
+sp_between_mdatype_commas=remove
+sp_paren_comma=remove
+sp_after_class_colon=force
+sp_before_class_colon=force
+sp_before_case_colon=remove
+sp_after_operator=remove
+sp_after_operator_sym=remove
+sp_after_operator_sym_empty=remove
+sp_after_cast=remove
+sp_inside_paren_cast=remove
+sp_cpp_cast_paren=remove
+sp_sizeof_paren=remove
+sp_inside_braces_enum=add
+sp_inside_braces_empty=remove
+sp_type_func=ignore
+sp_func_proto_paren=remove
+sp_func_def_paren=remove
+sp_inside_fparens=remove
+sp_inside_fparen=remove
+sp_fparen_brace=add
+sp_func_call_paren=remove
+sp_func_call_paren_empty=remove
+sp_func_call_user_paren=remove
+sp_func_class_paren=remove
+sp_return_paren=add
+sp_defined_paren=remove
+sp_throw_paren=add
+sp_catch_paren=add
+sp_getset_brace=add
+sp_after_dc=remove
+sp_not=remove
+sp_inv=remove
+sp_addr=remove
+sp_member=remove
+sp_deref=remove
+sp_sign=remove
+sp_incdec=remove
+sp_before_nl_cont=add
+sp_after_oc_scope=force
+sp_after_oc_colon=remove
+sp_before_oc_colon=remove
+sp_after_oc_dict_colon=force
+sp_before_oc_dict_colon=remove
+sp_after_send_oc_colon=force
+sp_before_send_oc_colon=remove
+sp_after_oc_type=remove
+sp_after_oc_return_type=remove
+sp_after_oc_at_sel=remove
+sp_inside_oc_at_sel_parens=remove
+sp_cond_colon=add
+sp_cond_question=add
+sp_case_label=ignore
+sp_after_new=force
+sp_between_new_paren=remove
+sp_skip_vbrace_tokens=true
+align_keep_tabs=false
+align_with_tabs=false
+align_on_tabstop=false
+align_number_right=false
+align_func_params=false
+align_same_func_call_params=false
+align_var_def_colon=false
+align_var_def_attribute=false
+align_var_def_inline=false
+align_right_cmt_mix=false
+align_on_operator=false
+align_mix_var_proto=false
+align_single_line_func=false
+align_single_line_brace=false
+align_nl_cont=0
+align_left_shift=false
+nl_collapse_empty_body=false
+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_if_leave_one_liners=false
+nl_oc_msg_leave_one_liner=true
+nl_start_of_file=remove
+nl_end_of_file=force
+nl_end_of_file_min=1
+nl_assign_brace=force
+nl_enum_brace=force
+nl_struct_brace=force
+nl_union_brace=force
+nl_if_brace=force
+nl_brace_else=force
+nl_else_brace=force
+nl_else_if=remove
+nl_brace_finally=force
+nl_finally_brace=force
+nl_try_brace=force
+nl_getset_brace=force
+nl_for_brace=force
+nl_catch_brace=force
+nl_brace_catch=force
+nl_while_brace=force
+nl_using_brace=force
+nl_brace_brace=ignore
+nl_do_brace=force
+nl_brace_while=force
+nl_switch_brace=force
+nl_multi_line_cond=false
+nl_before_case=false
+nl_after_case=false
+nl_case_colon_brace=force
+nl_namespace_brace=force
+nl_template_class=ignore
+nl_class_brace=force
+nl_fdef_brace=force
+nl_after_semicolon=false
+nl_after_brace_open=false
+nl_after_brace_open_cmt=false
+nl_after_vbrace_open=false
+nl_after_vbrace_open_empty=false
+nl_after_brace_close=false
+nl_after_vbrace_close=false
+nl_squeeze_ifdef=false
+nl_ds_struct_enum_cmt=false
+nl_ds_struct_enum_close_brace=false
+nl_namespace_two_to_one_liner=false
+nl_create_if_one_liner=false
+nl_create_for_one_liner=false
+nl_create_while_one_liner=false
+nl_create_func_def_one_liner=false
+ls_for_split_full=false
+ls_func_split_full=false
+nl_max=3
+nl_after_func_body=2
+nl_after_multiline_comment=false
+nl_property_brace=force
+eat_blanks_after_open_brace=true
+eat_blanks_before_close_brace=true
+nl_after_return=false
+mod_full_brace_if_chain=0
+mod_paren_on_return=ignore
+mod_pawn_semicolon=false
+mod_full_paren_if_bool=false
+mod_remove_extra_semicolon=true
+mod_move_case_break=false
+mod_remove_empty_return=true
+cmt_convert_tab_to_spaces=True
+cmt_indent_multi=false
+cmt_c_group=false
+cmt_c_nl_start=false
+cmt_c_nl_end=false
+cmt_cpp_group=false
+cmt_cpp_nl_start=false
+cmt_cpp_nl_end=false
+cmt_cpp_to_c=false
+cmt_star_cont=false
+cmt_multi_check_last=false
+cmt_insert_before_preproc=false
+pp_space_after=ignore
+use_options_overriding_for_qt_macros=false
+warn_level_tabs_found_in_verbatim_string_literals=1
+mod_add_long_ifdef_else_comment=0
+mod_add_long_ifdef_endif_comment=0
+
+
+
+# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
+#
+# x = o.Func2(a, b,
+# y);
+# o.Func2(a, b,
+# y);
+#
+# ...but setting it 'true' is often worse:
+#
+# ExtraReallyLongType reallyLongVariableName = someTest
+# ? someTrueExpr
+# : someFalseExpr
+#
+# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
+# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
+# (currently unreported)
+indent_align_assign=false
+
+# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
+# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
+# comment line at the same level of indentation.
+# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
+# (test using Runtime/Allocator/BucketAllocator.h)
+# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
+#sp_cmt_cpp_start=add
+sp_cmt_cpp_start=ignore
+
+# https://sourceforge.net/p/uncrustify/bugs/619/
+#sp_endif_cmt=force
+sp_endif_cmt=ignore
+
+# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
+# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
+#nl_cpp_ldef_brace=force
+indent_cs_delegate_body=true
+indent_paren_open_brace=true
+indent_member_single=true
+indent_paren_close=2
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_600.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_600.cfg
index 5c47913d..5c47913d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_600.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_600.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_620.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_620.cfg
index 4486cd45..4486cd45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/bug_620.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/bug_620.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/comma-cs-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/comma-cs-f.cfg
index 6ea5a2af..6ea5a2af 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/comma-cs-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/comma-cs-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/comma-cs-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/comma-cs-i.cfg
index f78c61b3..f78c61b3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/comma-cs-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/comma-cs-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/comma-cs-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/comma-cs-r.cfg
index 626b6ff1..626b6ff1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/comma-cs-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/comma-cs-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/cs_generics.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/cs_generics.cfg
index e4320a80..e4320a80 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/cs_generics.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/cs_generics.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/getset.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/getset.cfg
index 1e1ab8e9..1e1ab8e9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/getset.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/getset.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/indent-multistring-coulmn1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/indent-multistring-coulmn1.cfg
index 8ce9a4ff..8ce9a4ff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/indent-multistring-coulmn1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/indent-multistring-coulmn1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/indent_cs_delegate_brace-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/indent_cs_delegate_brace-t.cfg
index 9a4e6382..9a4e6382 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/indent_cs_delegate_brace-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/indent_cs_delegate_brace-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/indent_using_block-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/indent_using_block-f.cfg
index 2bfca802..2bfca802 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/indent_using_block-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/indent_using_block-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mda_space_a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mda_space_a.cfg
index b05558b7..b05558b7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mda_space_a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mda_space_a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mda_space_c.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mda_space_c.cfg
index 9bfcef37..9bfcef37 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mda_space_c.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mda_space_c.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/misc-failures.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/misc-failures.cfg
index 36b9e694..36b9e694 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/misc-failures.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/misc-failures.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mod_full_brace_nl_block_rem_mlcond-0.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mod_full_brace_nl_block_rem_mlcond-0.cfg
index c187d46a..c187d46a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mod_full_brace_nl_block_rem_mlcond-0.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mod_full_brace_nl_block_rem_mlcond-0.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mod_full_brace_nl_block_rem_mlcond-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mod_full_brace_nl_block_rem_mlcond-1.cfg
index 13ebbd4a..13ebbd4a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mod_full_brace_nl_block_rem_mlcond-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mod_full_brace_nl_block_rem_mlcond-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mod_full_paren_if_bool.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mod_full_paren_if_bool.cfg
index f75f8801..f75f8801 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mod_full_paren_if_bool.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mod_full_paren_if_bool.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mod_sort_using-t.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mod_sort_using-t.cfg
index 805fc734..805fc734 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mod_sort_using-t.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mod_sort_using-t.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mono.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mono.cfg
index 64783953..64783953 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/mono.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/mono.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/new-constraint-paren-space.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/new-constraint-paren-space.cfg
index f96e03b6..f96e03b6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/new-constraint-paren-space.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/new-constraint-paren-space.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/sf607.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/sf607.cfg
index ac5c0069..ac5c0069 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/sf607.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/sf607.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/sort_using_categ.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/sort_using_categ.cfg
index bf7f26e6..bf7f26e6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/sort_using_categ.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/sort_using_categ.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/sp_after_comma-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/sp_after_comma-a.cfg
index 3f67ae0e..3f67ae0e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/sp_after_comma-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/sp_after_comma-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/sp_assign-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/sp_assign-a.cfg
index 78ee09f5..78ee09f5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/sp_assign-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/sp_assign-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/sp_between_new_paren.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/sp_between_new_paren.cfg
index 0a338bd2..0a338bd2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/sp_between_new_paren.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/sp_between_new_paren.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/squeeze-paren-close-Option.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/squeeze-paren-close-Option.cfg
index 9d4a4f70..9d4a4f70 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/squeeze-paren-close-Option.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/squeeze-paren-close-Option.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/tcf.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/tcf.cfg
index dd7fa193..dd7fa193 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/tcf.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/tcf.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/verbatim_strings.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/verbatim_strings.cfg
index 65e1756d..65e1756d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/cs/verbatim_strings.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/cs/verbatim_strings.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/1438.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/1438.cfg
index 6973c22f..6973c22f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/1438.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/1438.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d-tst2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d-tst2.cfg
index db15aa59..db15aa59 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d-tst2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d-tst2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d2-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d2-i.cfg
index b2f0f87a..b2f0f87a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d2-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d2-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d2-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d2-r.cfg
index 888247f8..888247f8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d2-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d2-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d2.cfg
new file mode 100644
index 00000000..1f70f5ca
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d2.cfg
@@ -0,0 +1,50 @@
+sp_sparen_brace = add
+sp_arith = force
+sp_compare = force
+sp_inside_paren = remove
+sp_paren_paren = remove
+sp_before_template_paren = force
+sp_before_sparen = force
+sp_inside_sparen = remove
+sp_inside_for = remove
+sp_after_comma = force
+sp_after_cast = remove
+sp_func_def_paren = remove
+sp_inside_fparen = remove
+sp_fparen_brace = force
+sp_else_brace = force
+sp_do_brace_open = force
+sp_while_paren_open = force
+indent_columns = 4
+indent_with_tabs = 0
+indent_class = true
+indent_case_brace = 4
+nl_start_of_file = remove
+nl_end_of_file = force
+nl_end_of_file_min = 1
+nl_var_def_blk_end_func_top = 1
+nl_enum_brace = remove
+nl_if_brace = remove
+nl_else_brace = remove
+nl_for_brace = remove
+nl_while_brace = remove
+nl_do_brace = remove
+nl_switch_brace = remove
+nl_before_case = true
+nl_fdef_brace = remove
+nl_after_brace_open = true
+eat_blanks_after_open_brace = true
+eat_blanks_before_close_brace = true
+nl_after_return = true
+align_var_def_span = 2
+align_var_def_star_style = 1
+align_assign_span = 1
+align_enum_equ_span = 4
+align_var_class_span = 2
+align_typedef_gap = 3
+align_typedef_span = 5
+align_right_cmt_span = 3
+cmt_star_cont = true
+mod_full_brace_if = add
+mod_full_brace_while = add
+mod_paren_on_return = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d3.cfg
index 4ce7da1b..4ce7da1b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d3a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d3a.cfg
index c729c215..c729c215 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d3a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d3a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d_sp_paren.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d_sp_paren.cfg
index 5b3443e6..5b3443e6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/d_sp_paren.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/d_sp_paren.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/invariant.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/invariant.cfg
index a462b4d0..a462b4d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/invariant.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/invariant.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/libd.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/libd.cfg
index a29c77a4..a29c77a4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/libd.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/libd.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/sp_after_type-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/sp_after_type-a.cfg
index da7a3edb..da7a3edb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/d/sp_after_type-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/d/sp_after_type-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/ecma/ben_098.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/ecma/ben_098.cfg
index bade1890..bade1890 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/ecma/ben_098.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/ecma/ben_098.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/Issue_1122.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/Issue_1122.cfg
index 8a152eda..8a152eda 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/Issue_1122.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/Issue_1122.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/Issue_1124-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/Issue_1124-f.cfg
index bec692b6..bec692b6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/Issue_1124-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/Issue_1124-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/Issue_1124-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/Issue_1124-r.cfg
index 1c610373..1c610373 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/Issue_1124-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/Issue_1124-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/Issue_1845.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/Issue_1845.cfg
index 5d339f68..5d339f68 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/Issue_1845.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/Issue_1845.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/Issue_670.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/Issue_670.cfg
index 504b1d7d..504b1d7d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/Issue_670.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/Issue_670.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/annotation.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/annotation.cfg
index 0d800a82..0d800a82 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/annotation.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/annotation.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/ben_099.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/ben_099.cfg
index 6cd10860..6cd10860 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/ben_099.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/ben_099.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/doxy-javadoc-alignment.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/doxy-javadoc-alignment.cfg
index 786a9ac7..786a9ac7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/doxy-javadoc-alignment.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/doxy-javadoc-alignment.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/java_foreach.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/java_foreach.cfg
index 56ec94cd..56ec94cd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/java_foreach.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/java_foreach.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/java_synchronized_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/java_synchronized_1.cfg
index e57bba91..e57bba91 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/java_synchronized_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/java_synchronized_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/java_synchronized_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/java_synchronized_2.cfg
index 3512cdc8..3512cdc8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/java_synchronized_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/java_synchronized_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/jdbi-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/jdbi-f.cfg
index fde00f38..fde00f38 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/jdbi-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/jdbi-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/jdbi-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/jdbi-r.cfg
index ed2a6942..ed2a6942 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/jdbi-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/jdbi-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/leading-tabs-for-java-lambda.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/leading-tabs-for-java-lambda.cfg
index ba1f063e..ba1f063e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/leading-tabs-for-java-lambda.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/leading-tabs-for-java-lambda.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/mod_add_long_class_closebrace_comment-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/mod_add_long_class_closebrace_comment-1.cfg
index c1e8e0ac..c1e8e0ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/mod_add_long_class_closebrace_comment-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/mod_add_long_class_closebrace_comment-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/nl_after_annotation-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/nl_after_annotation-f.cfg
index 405f8ef4..405f8ef4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/nl_after_annotation-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/nl_after_annotation-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/nl_between_annotation-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/nl_between_annotation-f.cfg
index 6a67c354..6a67c354 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/nl_between_annotation-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/nl_between_annotation-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/reflow_fold_regex.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/reflow_fold_regex.txt
index 9a24626f..9a24626f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/reflow_fold_regex.txt
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/reflow_fold_regex.txt
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/sp_after_for_colon.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/sp_after_for_colon.cfg
index 70b19e50..70b19e50 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/sp_after_for_colon.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/sp_after_for_colon.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/sp_this_paren.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/sp_this_paren.cfg
index fc80bb28..fc80bb28 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/sp_this_paren.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/sp_this_paren.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/template_angles.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/template_angles.cfg
index 14680e53..14680e53 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/java/template_angles.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/java/template_angles.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/1927.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/1927.cfg
new file mode 100644
index 00000000..a61990fe
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/1927.cfg
@@ -0,0 +1,4 @@
+# Add or remove space between '}' and '@catch' if on the same line.
+# If set to ignore, sp_brace_catch is used.
+sp_oc_brace_catch = force
+sp_sparen_brace = add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3766.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3766.cfg
index 610168da..610168da 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3766.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3766.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3767.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3767.cfg
index 8c30228c..8c30228c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3767.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3767.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3811.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3811.cfg
index 20b7d2dc..20b7d2dc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3811.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3811.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3812.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3812.cfg
index 298c97d3..298c97d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3812.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3812.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3813.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3813.cfg
index 298c97d3..298c97d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3813.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3813.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3819.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3819.cfg
index 8e10acd4..8e10acd4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3819.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3819.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3823.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3823.cfg
index fda2290c..fda2290c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/3823.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/3823.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/Issue_2172.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/Issue_2172.cfg
index a4da88d2..a4da88d2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/Issue_2172.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/Issue_2172.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/Issue_681.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/Issue_681.cfg
index 901b0c8e..901b0c8e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/Issue_681.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/Issue_681.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U08-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U08-Cpp.cfg
index 1a8d9ead..1a8d9ead 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U08-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U08-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U09-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U09-Cpp.cfg
index e8b4846a..e8b4846a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U09-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U09-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U10-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U10-Cpp.cfg
index 76c1c8c3..76c1c8c3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U10-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U10-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U11-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U11-Cpp.cfg
index 07ba9e26..07ba9e26 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U11-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U11-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U12-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U12-Cpp.cfg
index 581594ac..581594ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U12-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U12-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U13-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U13-Cpp.cfg
index 162b13d4..162b13d4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U13-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U13-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U14-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U14-Cpp.cfg
index 967ea74d..967ea74d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U14-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U14-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U15-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U15-Cpp.cfg
index 0d78de45..0d78de45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U15-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U15-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U24-Cpp.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U24-Cpp.cfg
index cea571b8..cea571b8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/U24-Cpp.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/U24-Cpp.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/UNI-11095.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/UNI-11095.cfg
new file mode 100644
index 00000000..f55a617c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/UNI-11095.cfg
@@ -0,0 +1,319 @@
+input_tab_size=4
+string_replace_tab_chars=true
+tok_split_gte=false
+disable_processing_cmt=*begin-nonstandard-formatting*
+enable_processing_cmt=*end-nonstandard-formatting*
+utf8_bom=remove
+utf8_byte=false
+utf8_force=false
+indent_columns=4
+indent_with_tabs=0
+indent_cmt_with_tabs=false
+indent_align_string=false
+indent_braces=false
+indent_braces_no_func=false
+indent_braces_no_class=false
+indent_braces_no_struct=false
+indent_brace_parent=false
+indent_cs_delegate_brace=true
+indent_namespace=true
+indent_extern=false
+indent_class=true
+indent_class_colon=false
+indent_else_if=false
+indent_var_def_cont=false
+indent_func_call_param=true
+indent_func_def_param=true
+indent_func_proto_param=true
+indent_func_class_param=false
+indent_func_ctor_var_param=false
+indent_template_param=false
+indent_func_param_double=false
+indent_relative_single_line_comments=false
+indent_switch_case=4
+indent_case_shift=0
+indent_case_brace=0
+indent_col1_comment=false
+indent_label=-4
+indent_access_spec=-4
+indent_paren_nl=false
+indent_comma_paren=0
+indent_bool_paren=0
+indent_first_bool_expr=false
+indent_square_nl=false
+indent_preserve_sql=false
+indent_align_paren=false
+indent_oc_block_msg_xcode_style=true
+indent_off_after_return_new=true
+indent_single_after_return=true
+sp_arith=add
+sp_assign=add
+sp_assign_default=add
+sp_enum_assign=add
+sp_pp_concat=remove
+sp_pp_stringify=remove
+sp_bool=add
+sp_compare=add
+sp_inside_paren=remove
+sp_paren_paren=remove
+sp_balance_nested_parens=false
+sp_paren_brace=force
+sp_after_type=ignore
+sp_template_angle=remove
+sp_before_angle=remove
+sp_inside_angle=remove
+sp_angle_paren=remove
+sp_angle_paren_empty=remove
+sp_angle_word=add
+sp_angle_shift=remove
+sp_before_sparen=force
+sp_inside_sparen=remove
+sp_after_sparen=add
+sp_sparen_brace=force
+sp_special_semi=force
+sp_before_semi=remove
+sp_before_semi_for=remove
+sp_before_semi_for_empty=remove
+sp_between_semi_for_empty=remove
+sp_after_semi=add
+sp_after_semi_for=force
+sp_after_semi_for_empty=remove
+sp_before_square=remove
+sp_before_squares=remove
+sp_inside_square=remove
+sp_after_comma=add
+sp_before_comma=ignore
+sp_after_mdatype_commas=remove
+sp_before_mdatype_commas=remove
+sp_between_mdatype_commas=remove
+sp_paren_comma=remove
+sp_after_class_colon=force
+sp_before_class_colon=force
+sp_before_case_colon=remove
+sp_after_operator=remove
+sp_after_operator_sym=remove
+sp_after_operator_sym_empty=remove
+sp_after_cast=remove
+sp_inside_paren_cast=remove
+sp_cpp_cast_paren=remove
+sp_sizeof_paren=remove
+sp_inside_braces_enum=add
+sp_inside_braces_empty=remove
+sp_type_func=ignore
+sp_func_proto_paren=remove
+sp_func_def_paren=remove
+sp_inside_fparens=remove
+sp_inside_fparen=remove
+sp_fparen_brace=add
+sp_func_call_paren=remove
+sp_func_call_paren_empty=remove
+sp_func_call_user_paren=remove
+sp_func_class_paren=remove
+sp_return_paren=add
+sp_defined_paren=remove
+sp_throw_paren=add
+sp_catch_paren=add
+sp_brace_typedef=add
+sp_getset_brace=add
+sp_after_dc=remove
+sp_not=remove
+sp_inv=remove
+sp_addr=remove
+sp_member=remove
+sp_deref=remove
+sp_sign=remove
+sp_incdec=remove
+sp_before_nl_cont=add
+sp_after_oc_scope=force
+sp_after_oc_colon=remove
+sp_before_oc_colon=remove
+sp_after_oc_dict_colon=force
+sp_before_oc_dict_colon=remove
+sp_after_send_oc_colon=force
+sp_before_send_oc_colon=remove
+sp_after_oc_type=remove
+sp_after_oc_return_type=remove
+sp_after_oc_at_sel=remove
+sp_inside_oc_at_sel_parens=remove
+sp_cond_colon=add
+sp_cond_question=add
+sp_case_label=ignore
+sp_after_new=force
+sp_between_new_paren=remove
+sp_skip_vbrace_tokens=true
+align_keep_tabs=false
+align_with_tabs=false
+align_on_tabstop=false
+align_number_right=false
+align_func_params=false
+align_same_func_call_params=false
+align_var_def_colon=false
+align_var_def_attribute=false
+align_var_def_inline=false
+align_right_cmt_mix=false
+align_on_operator=false
+align_mix_var_proto=false
+align_single_line_func=false
+align_single_line_brace=false
+align_nl_cont=0
+align_left_shift=false
+nl_collapse_empty_body=false
+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_if_leave_one_liners=false
+nl_oc_msg_leave_one_liner=true
+nl_start_of_file=remove
+nl_end_of_file=force
+nl_end_of_file_min=1
+nl_assign_brace=force
+nl_enum_brace=force
+nl_struct_brace=force
+nl_union_brace=force
+nl_if_brace=force
+nl_brace_else=force
+nl_else_brace=force
+nl_else_if=remove
+nl_brace_finally=force
+nl_finally_brace=force
+nl_try_brace=force
+nl_getset_brace=force
+nl_for_brace=force
+nl_catch_brace=force
+nl_brace_catch=force
+nl_while_brace=force
+nl_using_brace=force
+nl_brace_brace=ignore
+nl_do_brace=force
+nl_brace_while=force
+nl_switch_brace=force
+nl_multi_line_cond=false
+nl_before_case=false
+nl_after_case=false
+nl_case_colon_brace=force
+nl_namespace_brace=force
+nl_template_class=ignore
+nl_class_brace=force
+nl_fdef_brace=force
+nl_after_semicolon=false
+nl_after_brace_open=false
+nl_after_brace_open_cmt=false
+nl_after_vbrace_open=false
+nl_after_vbrace_open_empty=false
+nl_after_brace_close=false
+nl_after_vbrace_close=false
+nl_squeeze_ifdef=false
+nl_ds_struct_enum_cmt=false
+nl_ds_struct_enum_close_brace=false
+nl_namespace_two_to_one_liner=false
+nl_create_if_one_liner=false
+nl_create_for_one_liner=false
+nl_create_while_one_liner=false
+nl_create_func_def_one_liner=false
+ls_for_split_full=false
+ls_func_split_full=false
+nl_max=3
+nl_after_func_body=2
+nl_after_multiline_comment=false
+nl_property_brace=force
+eat_blanks_after_open_brace=true
+eat_blanks_before_close_brace=true
+nl_after_return=false
+mod_full_brace_if_chain=0
+mod_paren_on_return=ignore
+mod_pawn_semicolon=false
+mod_full_paren_if_bool=false
+mod_remove_extra_semicolon=true
+mod_move_case_break=false
+mod_remove_empty_return=true
+cmt_convert_tab_to_spaces=True
+cmt_indent_multi=false
+cmt_c_group=false
+cmt_c_nl_start=false
+cmt_c_nl_end=false
+cmt_cpp_group=false
+cmt_cpp_nl_start=false
+cmt_cpp_nl_end=false
+cmt_cpp_to_c=false
+cmt_star_cont=false
+cmt_multi_check_last=false
+cmt_insert_before_preproc=false
+pp_space_after=ignore
+use_options_overriding_for_qt_macros=false
+warn_level_tabs_found_in_verbatim_string_literals=1
+# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
+# can be turned back on at any time
+mod_add_long_ifdef_else_comment=0
+mod_add_long_ifdef_endif_comment=0
+
+
+
+# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
+#
+# x = o.Func2(a, b,
+# y);
+# o.Func2(a, b,
+# y);
+#
+# ...but setting it 'true' is often worse:
+#
+# ExtraReallyLongType reallyLongVariableName = someTest
+# ? someTrueExpr
+# : someFalseExpr
+#
+# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
+# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
+# (currently unreported)
+indent_align_assign=false
+
+# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
+# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
+# comment line at the same level of indentation.
+# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
+# (test using Runtime/Allocator/BucketAllocator.h)
+# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
+#sp_cmt_cpp_start=add
+sp_cmt_cpp_start=ignore
+
+# https://sourceforge.net/p/uncrustify/bugs/619/
+#sp_endif_cmt=force
+sp_endif_cmt=ignore
+
+# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
+# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
+#nl_cpp_ldef_brace=force
+
+# workaround for some nasty macroing we're doing
+set COMMENT PLATFORM_EXCEPTION_SAFEGUARD_PROLOG
+
+# without this, uncrustify will parse and process the contents of #defines, which is super unstable. very easy to get into edge cases it does not support,
+# so just have it treat #defines as black boxes. this will keep all of the contents of the #define as unprocessed.
+pp_ignore_define_body=true
+
+# macros in #includes aren't known to Uncrustify, so have to inform it here for macros that will confuse it
+set MACRO_FUNC ATTRIBUTE_ALIGN
+
+# we have some truly insane deep namespace nesting in il2cpp. :/
+indent_namespace_single_indent=true
+
+# needed for fmod apparently (via HEVAGTool.h - the *'s near F_STDCALL will be interpreted as ARITH without this)
+set COMMENT F_STDCALL
+
+# https://github.com/uncrustify/uncrustify/pull/602
+# https://sourceforge.net/p/uncrustify/bugs/633/
+set COMMENT __cdecl
+set COMMENT __clrcall
+set COMMENT __fastcall
+set COMMENT __stdcall
+set COMMENT __thiscall
+set COMMENT __vectorcall
+set COMMENT WINAPI
+
+# We need to make FAKE_FUNCTION a PROTO_WRAP macro function to help properly tokenize it's parameters.
+# Previously parameters with CT_AMP and CT_STAR were tokenized as CT_ARITH. Support for optional parenthesis added in github PR #629.
+set PROTO_WRAP FAKE_FUNCTION
+nl_create_func_def_one_liner=true
+sp_inside_braces=Add
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/align-objc-like-xcode.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/align-objc-like-xcode.cfg
index 3b321b11..3b321b11 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/align-objc-like-xcode.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/align-objc-like-xcode.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/align_colon_with_ternary_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/align_colon_with_ternary_1.cfg
index 61ceb8ce..61ceb8ce 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/align_colon_with_ternary_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/align_colon_with_ternary_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/align_colon_with_ternary_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/align_colon_with_ternary_2.cfg
index 4496f3cb..4496f3cb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/align_colon_with_ternary_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/align_colon_with_ternary_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/align_oc_msg_colon_span-1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/align_oc_msg_colon_span-1.cfg
index 9681d152..9681d152 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/align_oc_msg_colon_span-1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/align_oc_msg_colon_span-1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/block_pointer.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/block_pointer.cfg
index 70c21bbd..70c21bbd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/block_pointer.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/block_pointer.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/blocks.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/blocks.cfg
index 65a1c5e2..65a1c5e2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/blocks.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/blocks.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/bug_167.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/bug_167.cfg
index 6ed02f2e..6ed02f2e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/bug_167.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/bug_167.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/bug_340.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/bug_340.cfg
index f56e7a43..f56e7a43 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/bug_340.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/bug_340.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/bug_841.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/bug_841.cfg
index 2ab54cc1..2ab54cc1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/bug_841.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/bug_841.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/bug_i_125-412.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/bug_i_125-412.cfg
index 2498ac1b..2498ac1b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/bug_i_125-412.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/bug_i_125-412.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/delete-space-oc.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/delete-space-oc.cfg
index 4d8a15cb..4d8a15cb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/delete-space-oc.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/delete-space-oc.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/double-indent-objc-dict.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/double-indent-objc-dict.cfg
index d4e9a1ae..d4e9a1ae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/double-indent-objc-dict.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/double-indent-objc-dict.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/double_angle_space_1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/double_angle_space_1.cfg
index 73319da9..73319da9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/double_angle_space_1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/double_angle_space_1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/double_angle_space_2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/double_angle_space_2.cfg
index 8d12b193..8d12b193 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/double_angle_space_2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/double_angle_space_2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/double_angle_space_3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/double_angle_space_3.cfg
index da6a41c2..da6a41c2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/double_angle_space_3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/double_angle_space_3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/gh137.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/gh137.cfg
index 83da02ee..83da02ee 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/gh137.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/gh137.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/gh293.a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/gh293.a.cfg
index e875a54b..e875a54b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/gh293.a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/gh293.a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/gh293.b.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/gh293.b.cfg
index 1dc357ae..1dc357ae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/gh293.b.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/gh293.b.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/indent-objc-block.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/indent-objc-block.cfg
index aee5aace..aee5aace 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/indent-objc-block.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/indent-objc-block.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/indent_boxed.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/indent_boxed.cfg
index e20f0820..e20f0820 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/indent_boxed.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/indent_boxed.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/indent_oc_inside_msg_sel.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/indent_oc_inside_msg_sel.cfg
index b140f071..b140f071 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/indent_oc_inside_msg_sel.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/indent_oc_inside_msg_sel.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/indent_single_newline.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/indent_single_newline.cfg
new file mode 100644
index 00000000..2f146ef8
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/indent_single_newline.cfg
@@ -0,0 +1,4 @@
+sp_sparen_brace = add
+indent_single_newlines = true
+indent_columns = 4 # number
+indent_with_tabs = 0 # number
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/issue_2643.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/issue_2643.cfg
index 7f188f21..7f188f21 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/issue_2643.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/issue_2643.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/issue_2656.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/issue_2656.cfg
index 3b020c33..3b020c33 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/issue_2656.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/issue_2656.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/issue_2675.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/issue_2675.cfg
index 0eab0244..0eab0244 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/issue_2675.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/issue_2675.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/issue_3031.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/issue_3031.cfg
index 8234c643..8234c643 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/issue_3031.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/issue_3031.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_grouping_enabled.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_grouping_enabled.cfg
index d88bf262..d88bf262 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_grouping_enabled.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_grouping_enabled.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_grouping_enabled_with_regex.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_grouping_enabled_with_regex.cfg
index 5724b52e..5724b52e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_grouping_enabled_with_regex.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_grouping_enabled_with_regex.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_ignore_extension.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_ignore_extension.cfg
index d49491cb..d49491cb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_ignore_extension.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_ignore_extension.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_prioritize_angle_over_quotes.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_prioritize_angle_over_quotes.cfg
index 475ab734..475ab734 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_prioritize_angle_over_quotes.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_prioritize_angle_over_quotes.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_prioritize_extensionless.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_prioritize_extensionless.cfg
index aa9eb1db..aa9eb1db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_prioritize_extensionless.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_prioritize_extensionless.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_prioritize_filename.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_prioritize_filename.cfg
index 2661a68a..2661a68a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/mod_sort_incl_import_prioritize_filename.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/mod_sort_incl_import_prioritize_filename.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_after_func_body-3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_after_func_body-3.cfg
index 65f1fa5a..65f1fa5a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_after_func_body-3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_after_func_body-3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_brace_square.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_brace_square.cfg
index 60d2fb97..60d2fb97 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_brace_square.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_brace_square.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_func_call_args_multi_line_ignore_closures.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_func_call_args_multi_line_ignore_closures.cfg
index e480140e..e480140e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_func_call_args_multi_line_ignore_closures.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_func_call_args_multi_line_ignore_closures.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_oc_block_brace-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_oc_block_brace-f.cfg
index 824fc747..824fc747 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_oc_block_brace-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_oc_block_brace-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_oc_msg_args_max_code_width.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_oc_msg_args_max_code_width.cfg
index 197f0eb3..197f0eb3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_oc_msg_args_max_code_width.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_oc_msg_args_max_code_width.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_oc_msg_args_min_params.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_oc_msg_args_min_params.cfg
index d0d3f935..d0d3f935 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/nl_oc_msg_args_min_params.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/nl_oc_msg_args_min_params.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/obj-c-available.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/obj-c-available.cfg
index f77790fc..f77790fc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/obj-c-available.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/obj-c-available.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/obj-c-properties.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/obj-c-properties.cfg
index 98241779..98241779 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/obj-c-properties.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/obj-c-properties.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/objc_bug_497.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/objc_bug_497.cfg
index 0015f97d..0015f97d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/objc_bug_497.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/objc_bug_497.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/objc_complex_method.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/objc_complex_method.cfg
index 8d82b960..8d82b960 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/objc_complex_method.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/objc_complex_method.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc1.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc1.cfg
index 659131cf..659131cf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc1.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc1.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc10.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc10.cfg
index d50a20d8..d50a20d8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc10.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc10.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc11.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc11.cfg
index e355d765..e355d765 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc11.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc11.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc12.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc12.cfg
index 4f069fed..4f069fed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc12.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc12.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc13.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc13.cfg
index 4466b37a..4466b37a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc13.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc13.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc14.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc14.cfg
index a44950db..a44950db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc14.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc14.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc16.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc16.cfg
index 5eec46e9..5eec46e9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc16.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc16.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc17.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc17.cfg
index 18b27823..18b27823 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc17.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc17.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc18.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc18.cfg
index 96003cf5..96003cf5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc18.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc18.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc19.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc19.cfg
index d68c95f0..d68c95f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc19.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc19.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc2.cfg
index 43d02a66..43d02a66 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc4.cfg
index f2de050e..f2de050e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc5.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc5.cfg
index 77a7a7af..77a7a7af 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc5.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc5.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc6.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc6.cfg
index c1bcd8d4..c1bcd8d4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc6.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc6.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc7.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc7.cfg
index 972ab19a..972ab19a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc7.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc7.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc8.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc8.cfg
index 3f577ab8..3f577ab8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc8.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc8.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc9.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc9.cfg
index 92ed39d4..92ed39d4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc9.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc9.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc_bug_1674.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc_bug_1674.cfg
index 31e4537c..31e4537c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc_bug_1674.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc_bug_1674.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc_bug_1683.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc_bug_1683.cfg
index b5d4249d..b5d4249d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc_bug_1683.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc_bug_1683.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc_cond_colon.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc_cond_colon.cfg
index b86516e0..b86516e0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/oc_cond_colon.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/oc_cond_colon.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_at_sel_add.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_at_sel_add.cfg
index 817ec7c5..817ec7c5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_at_sel_add.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_at_sel_add.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_at_sel_force.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_at_sel_force.cfg
index b2a79b8f..b2a79b8f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_at_sel_force.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_at_sel_force.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_at_sel_remove.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_at_sel_remove.cfg
index 98b6de42..98b6de42 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_at_sel_remove.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_at_sel_remove.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_block_caret_add.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_block_caret_add.cfg
index e5e4fcdf..e5e4fcdf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_block_caret_add.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_block_caret_add.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_block_caret_force.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_block_caret_force.cfg
index 3194126d..3194126d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_block_caret_force.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_block_caret_force.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_return_type_add.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_return_type_add.cfg
index b321b9aa..b321b9aa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_return_type_add.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_return_type_add.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_return_type_force.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_return_type_force.cfg
index fb8b9a1b..fb8b9a1b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_return_type_force.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_return_type_force.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_return_type_remove.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_return_type_remove.cfg
index 1110a1eb..1110a1eb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_oc_return_type_remove.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_oc_return_type_remove.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_send_oc_colon-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_send_oc_colon-f.cfg
index 2a54dd6f..2a54dd6f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_send_oc_colon-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_send_oc_colon-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_throw_remove.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_throw_remove.cfg
index 6b6bc0ac..6b6bc0ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_after_throw_remove.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_after_throw_remove.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_before_oc_block_caret_force.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_before_oc_block_caret_force.cfg
index bd8863a3..bd8863a3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_before_oc_block_caret_force.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_before_oc_block_caret_force.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_before_oc_block_caret_remove.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_before_oc_block_caret_remove.cfg
index 2a001cbc..2a001cbc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_before_oc_block_caret_remove.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_before_oc_block_caret_remove.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_before_oc_proto_list_add.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_before_oc_proto_list_add.cfg
index 3374e228..3374e228 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_before_oc_proto_list_add.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_before_oc_proto_list_add.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_before_oc_proto_list_force.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_before_oc_proto_list_force.cfg
index 5be78fac..5be78fac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_before_oc_proto_list_force.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_before_oc_proto_list_force.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_before_oc_proto_list_remove.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_before_oc_proto_list_remove.cfg
index 9f93f4a5..9f93f4a5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_before_oc_proto_list_remove.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_before_oc_proto_list_remove.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_block_as_argument.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_block_as_argument.cfg
index 60c651fb..60c651fb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_block_as_argument.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_block_as_argument.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_block_as_argument2.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_block_as_argument2.cfg
index 8f297d7d..8f297d7d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_block_as_argument2.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_block_as_argument2.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_block_as_argument3.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_block_as_argument3.cfg
index 17059e47..17059e47 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_block_as_argument3.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_block_as_argument3.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_block_as_argument4.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_block_as_argument4.cfg
index 8caf60bc..8caf60bc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_block_as_argument4.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_block_as_argument4.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_block_as_argument5.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_block_as_argument5.cfg
index 42e8c380..42e8c380 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_block_as_argument5.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_block_as_argument5.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_cond_ternary_short.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_cond_ternary_short.cfg
index 564b2dcf..564b2dcf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_cond_ternary_short.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_cond_ternary_short.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_enum_paren-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_enum_paren-i.cfg
index 5bb98ec2..5bb98ec2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_enum_paren-i.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_enum_paren-i.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_enum_paren-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_enum_paren-r.cfg
index f155e201..f155e201 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_enum_paren-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_enum_paren-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_boxed.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_boxed.cfg
index 73939de1..73939de1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_boxed.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_boxed.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_catch-i.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_catch-i.cfg
new file mode 100644
index 00000000..46276a43
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_catch-i.cfg
@@ -0,0 +1,12 @@
+sp_sparen_brace = add
+sp_oc_catch_paren = ignore
+sp_catch_paren = add
+sp_oc_catch_brace = add
+sp_catch_brace = force
+sp_oc_brace_catch = add
+sp_brace_catch = force
+nl_oc_catch_brace = remove
+nl_catch_brace = remove
+nl_oc_brace_catch = add
+nl_brace_catch = remove
+sp_finally_brace = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_catch-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_catch-r.cfg
new file mode 100644
index 00000000..3f582f7b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_catch-r.cfg
@@ -0,0 +1,12 @@
+sp_sparen_brace = add
+sp_oc_catch_paren = remove
+sp_catch_paren = add
+sp_oc_catch_brace = add
+sp_catch_brace = force
+sp_oc_brace_catch = add
+sp_brace_catch = force
+nl_oc_catch_brace = remove
+nl_catch_brace = remove
+nl_oc_brace_catch = add
+nl_brace_catch = remove
+sp_finally_brace = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_catch.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_catch.cfg
new file mode 100644
index 00000000..bb9f73fb
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_catch.cfg
@@ -0,0 +1,12 @@
+sp_sparen_brace = add
+sp_oc_catch_paren = force
+sp_catch_paren = add # ignore/add/remove/force
+sp_oc_catch_brace = add # ignore/add/remove/force
+sp_catch_brace = force # ignore/add/remove/force
+sp_oc_brace_catch = add # ignore/add/remove/force
+sp_brace_catch = force # ignore/add/remove/force
+nl_oc_catch_brace = remove # ignore/add/remove/force
+nl_catch_brace = remove # ignore/add/remove/force
+nl_oc_brace_catch = add # ignore/add/remove/force
+nl_brace_catch = remove # ignore/add/remove/force
+sp_finally_brace = remove
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_classname_paren-r.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_classname_paren-r.cfg
index ba92279e..ba92279e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/sp_oc_classname_paren-r.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_classname_paren-r.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_synchronized.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_synchronized.cfg
new file mode 100644
index 00000000..f9bd3517
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/sp_oc_synchronized.cfg
@@ -0,0 +1,2 @@
+sp_sparen_brace = add
+sp_after_oc_synchronized = force # ignore/add/remove/force
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/ternary_short.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/ternary_short.cfg
index 55e708cf..55e708cf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/oc/ternary_short.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/oc/ternary_short.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/Issue_2586.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/Issue_2586.cfg
index ff46f80d..ff46f80d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/Issue_2586.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/Issue_2586.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/Issue_2665.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/Issue_2665.cfg
index 763864c0..763864c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/Issue_2665.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/Issue_2665.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/amxmodx.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/amxmodx.cfg
index 95ca5a4d..95ca5a4d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/amxmodx.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/amxmodx.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/mod_full_brace_function-f.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/mod_full_brace_function-f.cfg
index 8d44cc3b..8d44cc3b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/pawn/mod_full_brace_function-f.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/mod_full_brace_function-f.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/pawn-escape.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/pawn-escape.cfg
new file mode 100644
index 00000000..ae141f03
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/pawn-escape.cfg
@@ -0,0 +1,5 @@
+sp_sparen_brace = add
+string_escape_char = 94 # '^'
+indent_columns = 4
+indent_with_tabs = 0
+mod_pawn_semicolon = true \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/pawn.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/pawn.cfg
new file mode 100644
index 00000000..ed66c177
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/pawn/pawn.cfg
@@ -0,0 +1,17 @@
+input_tab_size = 4
+sp_sparen_brace = add
+sp_arith = force
+sp_after_tag = remove
+sp_inside_braces = add
+sp_brace_else = force
+sp_else_brace = force
+sp_func_call_paren = remove
+#sp_func_call_paren = force
+indent_columns = 4
+indent_with_tabs = 0
+nl_brace_else = remove
+nl_fdef_brace = force
+mod_full_brace_for = add
+mod_full_brace_function = add
+mod_full_brace_if = add
+mod_pawn_semicolon = true
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/staging/UNI-58354.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/staging/UNI-58354.cfg
index fb9ca61b..fb9ca61b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/staging/UNI-58354.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/staging/UNI-58354.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/staging/UNI-64325.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/staging/UNI-64325.cfg
index 44ee8b48..44ee8b48 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/staging/UNI-64325.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/staging/UNI-64325.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/Issue_2090.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/Issue_2090.cfg
index 154cff70..154cff70 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/Issue_2090.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/Issue_2090.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/Issue_2270.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/Issue_2270.cfg
index 43cc3757..43cc3757 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/Issue_2270.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/Issue_2270.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_100.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_100.cfg
index 81cd4430..81cd4430 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_100.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_100.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_101.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_101.cfg
index 50078f96..50078f96 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_101.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_101.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_102.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_102.cfg
index 3a37ba17..3a37ba17 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_102.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_102.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_103.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_103.cfg
index e7bc6b90..e7bc6b90 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_103.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_103.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_104.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_104.cfg
index 80870cfe..80870cfe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_104.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_104.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_105.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_105.cfg
index 23452bfd..23452bfd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/ben_105.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/ben_105.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/mda_space_a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/mda_space_a.cfg
index b0a66bcb..b0a66bcb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/mda_space_a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/mda_space_a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/mda_space_c.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/mda_space_c.cfg
index a8eaaaa2..a8eaaaa2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/mda_space_c.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/mda_space_c.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/nullable.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/nullable.cfg
index 5c47913d..5c47913d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/nullable.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/nullable.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/sp_after_comma-a.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/sp_after_comma-a.cfg
index 35ee933a..35ee933a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/config/vala/sp_after_comma-a.cfg
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/config/vala/sp_after_comma-a.cfg
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cpp.test b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cpp.test
new file mode 100644
index 00000000..580d284f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/cpp.test
@@ -0,0 +1,1212 @@
+#
+# Test cases specifically for the C++ language.
+#
+# Range: 30000 - 39999
+# test.name config.file input.file
+
+# there are additional tests inside imported.test.
+
+02102 common/clark.cfg cpp/indent-c.cpp
+02103 common/clark.cfg cpp/output.cpp
+
+30000 cpp/ben_001.cfg cpp/cout.cpp
+30001 cpp/sp_angle_colon.cfg cpp/alt_tokens.cpp
+30002 cpp/ben_003.cfg cpp/constructor.cpp
+30003 cpp/ben_004.cfg cpp/strings.cpp
+30004 cpp/Issue_4036.cfg cpp/Issue_4036.cpp
+30005 common/empty.cfg cpp/Issue_4042.cpp
+30006 common/empty.cfg cpp/Issue_4027.cpp
+30007 cpp/Issue_4080.cfg cpp/Issue_4080.cpp
+30008 cpp/Issue_4094.cfg cpp/Issue_4094.cpp
+30009 cpp/Issue_3236.cfg cpp/Issue_3236.cpp
+
+30010 cpp/ben_005.cfg cpp/class.h
+30011 cpp/ben_006.cfg cpp/misc.cpp
+30012 cpp/avalon2.cfg cpp/misc2.cpp
+30013 cpp/sim.cfg cpp/sim.h
+30014 common/indent_columns-3.cfg cpp/ctor-var.cpp
+30015 cpp/ben_008.cfg cpp/exception.cpp
+30016 cpp/custom-open.cfg cpp/custom-open.cpp
+30017 cpp/custom-open2.cfg cpp/custom-open.cpp
+30018 cpp/ben_009.cfg cpp/class-addr.h
+30019 cpp/ben_010.cfg cpp/wacky-template.cpp
+
+30020 common/ben_011.cfg cpp/bool.cpp
+30021 cpp/ben_012.cfg cpp/byref.cpp
+30022 cpp/ben_013.cfg cpp/extern_c.h
+30023 cpp/ben_014.cfg cpp/templates.cpp
+30024 cpp/class-nl_func-add.cfg cpp/class-init.cpp
+30025 cpp/class-nl_func-del.cfg cpp/class-init.cpp
+30026 cpp/byref-left.cfg cpp/byref.cpp
+30027 cpp/byref-right.cfg cpp/byref.cpp
+30028 cpp/byref-center.cfg cpp/byref.cpp
+30029 cpp/ben_015.cfg cpp/init_align.h
+
+30030 cpp/avalon.cfg cpp/Timestamp.h
+30031 cpp/avalon.cfg cpp/operator.cpp
+30032 cpp/op-space-force.cfg cpp/operator.cpp
+30033 cpp/op-space-remove.cfg cpp/operator.cpp
+30034 cpp/op-space-force.cfg cpp/operator_proto.cpp
+30035 cpp/op-space-remove.cfg cpp/operator_proto.cpp
+30036 cpp/op-space-remove-align-1.cfg cpp/operator.cpp
+30037 cpp/op-space-remove-align-1.cfg cpp/operator_proto.cpp
+30038 cpp/op-space-remove-align-2.cfg cpp/operator.cpp
+30039 cpp/op-space-remove-align-2.cfg cpp/operator_proto.cpp
+
+30040 cpp/nl_class-r.cfg cpp/nl-class.h
+30041 cpp/nl_class-a.cfg cpp/nl-class.h
+30042 cpp/Issue_2020.cfg cpp/Issue_2020.cpp
+30043 cpp/nl_func_call_empty-r.cfg cpp/nl_func_call_empty.cpp
+30044 cpp/nl_func_call_paren_empty-r.cfg cpp/nl_func_call_paren_empty.cpp
+30045 cpp/nl_func_decl_1.cfg cpp/nl_func_decl.cpp
+30046 cpp/nl_func_decl_2.cfg cpp/nl_func_decl.cpp
+30047 cpp/nl_func_paren_empty.cfg cpp/nl_func_paren_empty.cpp
+30048 cpp/nl_func_def_paren_empty-r.cfg cpp/nl_func_def_paren_empty.cpp
+30049 cpp/nl_func_call_paren-f.cfg cpp/nl_func_call_paren.cpp
+
+30050 cpp/nl_namespace-r.cfg cpp/nl-namespace.h
+30051 cpp/nl_namespace-a.cfg cpp/nl-namespace.h
+30052 cpp/nl_try-a.cfg cpp/try-catch-nl.cpp
+30053 cpp/sp_catch_brace.cfg cpp/exception.cpp
+30054 cpp/Issue_2091.cfg cpp/Issue_2091.cpp
+30055 cpp/nl_after_func_body.cfg cpp/nl_func.cpp
+30056 cpp/nl_after_func_body-2.cfg cpp/nl_func.cpp
+30057 cpp/nl_inside_namespace_1.cfg cpp/nl_inside_namespace.cpp
+30058 cpp/nl_inside_namespace_2.cfg cpp/nl_inside_namespace.cpp
+30059 cpp/Issue_2186.cfg cpp/Issue_2186.cpp
+
+30060 cpp/Issue_1734.cfg cpp/Issue_1734.cpp
+
+# Class colon positioning
+30061 cpp/class-colon-pos-eol.cfg cpp/class-init.cpp
+30062 cpp/class-colon-pos-sol.cfg cpp/class-init.cpp
+30063 cpp/class-colon-pos-eol-add.cfg cpp/class-init.cpp
+30064 cpp/class-colon-pos-sol-add.cfg cpp/class-init.cpp
+30065 cpp/class-colon-pos-sol.cfg cpp/Example.h
+30066 cpp/class-on-colon-indent.cfg cpp/class-init.cpp
+30067 cpp/nl_func_class_scope-a.cfg cpp/nl_func_type_name.cpp
+30068 cpp/nl_func_class_scope-a.cfg cpp/nl_func_scope_name.cpp
+30069 cpp/nl_func_class_scope-a.cfg cpp/class-implementation.cpp
+
+30070 cpp/nl_func_scope_name-a.cfg cpp/nl_func_scope_name.cpp
+30071 cpp/lineEndings-to-Win.cfg cpp/lineEndings-Mac.cpp
+30072 cpp/lineEndings-to-Unix.cfg cpp/lineEndings-Win.cpp
+30073 cpp/lineEndings-to-Mac.cfg cpp/lineEndings-Unix.cpp
+30074 common/empty.cfg cpp/bom.cpp
+30075 common/empty.cfg cpp/goto.cpp
+30076 cpp/Issue_2594.cfg cpp/Issue_2594.cpp
+30077 cpp/Issue_2596.cfg cpp/Issue_2596.cpp
+30078 common/empty.cfg cpp/Issue_2672-a.cpp
+30079 common/empty.cfg cpp/Issue_2672-b.cpp
+
+30080 cpp/nl_brace_brace-a.cfg cpp/nl_brace_brace.cpp
+30081 cpp/Issue_2383.cfg cpp/Issue_2383.cpp
+30082 cpp/Issue_931.cfg cpp/Issue_931.cpp
+30083 cpp/Issue_995-do.cfg cpp/Issue_995-do.cpp
+30084 cpp/Issue_1184.cfg cpp/Issue_1184.cpp
+30085 cpp/nSolve.cfg cpp/align_class.cpp
+30086 cpp/align_class-constr.cfg cpp/align_class-constr.cpp
+30087 cpp/Issue_1511.cfg cpp/Issue_1511.cpp
+30088 cpp/Issue_2561.cfg cpp/Issue_2561.cpp
+30089 cpp/Issue_2281.cfg cpp/Issue_2281.cpp
+
+30090 cpp/bug_488.cfg cpp/bug_488.cpp
+30091 cpp/bug_472.cfg cpp/bug_472.cpp
+30092 cpp/ben_016.cfg cpp/bug_481.cpp
+30093 common/sp_after_cast.cfg cpp/bug_484.cpp
+30094 common/align-1.cfg cpp/bug_495.cpp
+30095 cpp/ben_017.cfg cpp/bug_485.cpp
+30096 cpp/bug_1854.cfg cpp/bug_1854.cpp
+30097 common/align-1.cfg cpp/issue_1946.cpp
+30098 cpp/Issue_2692.cfg cpp/Issue_2692.cpp
+30099 common/sp_arith-f.cfg cpp/bug_1127.cpp
+
+30100 cpp/nl_template-f.cfg cpp/templates.cpp
+30101 cpp/nl_template-r.cfg cpp/templates.cpp
+30102 cpp/template_sp-force.cfg cpp/templates.cpp
+30103 cpp/template_sp-remove.cfg cpp/templates.cpp
+30104 cpp/avalon3.cfg cpp/templ_class.h
+30105 cpp/avalon4.cfg cpp/av.h
+30106 cpp/nl_template-f.cfg cpp/templates2.cpp
+30107 cpp/nl_template-r.cfg cpp/templates2.cpp
+30108 cpp/nl_template-r.cfg cpp/templates3.cpp
+30109 common/empty.cfg cpp/templates4.cpp
+
+30110 cpp/class-nl_func-add2.cfg cpp/class-init.cpp
+30111 cpp/indent_columns-4.cfg cpp/bug_1346.h
+30112 cpp/bug_1432.cfg cpp/bug_1432.cpp
+30113 cpp/bug_1452.cfg cpp/bug_1452.cpp
+30114 cpp/template_sp-remove.cfg cpp/bug_1462.cpp
+30115 common/empty.cfg cpp/Issue_1704.cpp
+30116 cpp/Issue_1052.cfg cpp/Issue_1052.cpp
+30117 cpp/Issue_2343.cfg cpp/Issue_2343.cpp
+30118 cpp/Issue_2758.cfg cpp/Issue_2758.cpp
+30119 cpp/Issue_2879.cfg cpp/Issue_2879.cpp
+
+30120 cpp/template_sp-force.cfg cpp/sp_after_angle.cpp
+30121 cpp/template_sp-remove.cfg cpp/sp_after_angle.cpp
+30122 common/sp_inside_fparen-f.cfg cpp/sp_after_angle.cpp
+30123 cpp/sp_inside_fparen-r.cfg cpp/sp_after_angle.cpp
+30124 cpp/sp_after_angle-1.cfg cpp/sp_after_angle.cpp
+30125 cpp/sp_after_angle-2.cfg cpp/sp_after_angle.cpp
+30126 cpp/sp_after_angle-3.cfg cpp/sp_after_angle.cpp
+30127 common/empty.cfg cpp/Issue_2565.cpp
+30128 cpp/Issue_2873.cfg cpp/Issue_2873.cpp
+30129 cpp/Issue_2890.cfg cpp/Issue_2890.cpp
+
+30130 common/brace-allman.cfg cpp/if-constexpr.cpp
+30131 cpp/Issue_3010.cfg cpp/Issue_3010.cpp
+30132 cpp/sp_brace_catch.cfg cpp/sp_brace_catch.cpp
+30133 cpp/Issue_3252.cfg cpp/Issue_3252.cpp
+30134 cpp/Issue_3357.cfg cpp/Issue_3357.cpp
+30135 cpp/Issue_3448.cfg cpp/Issue_3448.cpp
+30136 cpp/Issue_3413.cfg cpp/Issue_3413.cpp
+30137 cpp/Issue_3513.cfg cpp/Issue_3513-0.cpp
+30138 cpp/Issue_3513.cfg cpp/Issue_3513-1.cpp
+30139 cpp/Issue_3604.cfg cpp/Issue_3604.cpp
+
+30140 cpp/Issue_3785.cfg cpp/Issue_3785.cpp
+30141 cpp/Issue_1130.cfg cpp/Issue_1130.cpp
+30142 cpp/Issue_3915.cfg cpp/Issue_3915.cpp
+30143 cpp/Issue_3919.cfg cpp/Issue_3919.cpp
+30144 cpp/Issue_3916.cfg cpp/Issue_3916.cpp
+30145 cpp/Issue_3914.cfg cpp/Issue_3914.cpp
+30146 cpp/Issue_3614.cfg cpp/Issue_3614.cpp
+30147 cpp/Issue_3965.cfg cpp/Issue_3965.cpp
+30148 cpp/Issue_3965.cfg cpp/Issue_3965-2.cpp
+30149 cpp/Issue_3967.cfg cpp/Issue_3967.cc
+
+30150 cpp/Issue_3983.cfg cpp/Issue_3983.cpp
+30151 cpp/Issue_3983.cfg cpp/Issue_3996.cpp
+30152 cpp/Issue_3983.cfg cpp/Issue_4023.cpp
+30153 cpp/Issue_3983.cfg cpp/Issue_4026.cpp
+30154 common/empty.cfg cpp/Issue_4132.cpp
+
+30160 common/empty.cfg cpp/Issue_3980.cpp
+30161 cpp/Discussion_3987.cfg cpp/Discussion_3987.cpp
+30162 cpp/Issue_4239.cfg cpp/Issue_4239.cpp
+
+30200 cpp/bug_1862.cfg cpp/bug_1862.cpp
+30201 cpp/cmt_indent-1.cfg cpp/cmt_indent.cpp
+30202 cpp/cmt_indent-2.cfg cpp/cmt_indent.cpp
+30203 cpp/cmt_indent-3.cfg cpp/cmt_indent.cpp
+30204 cpp/indent_columns-4.cfg cpp/comment-align.cpp
+30205 cpp/indent_columns-4.cfg cpp/cmt_right.cpp
+30206 common/empty.cfg cpp/cmt_backslash_eol.cpp
+30207 cpp/indent_class-t_columns-4.cfg cpp/cmt_indent_pp.h
+30208 cpp/bug_1108.cfg cpp/bug_1108.cpp
+30209 common/empty.cfg cpp/bug_1134.cpp
+
+30210 common/empty.cfg cpp/bug_1338.cpp
+30211 cpp/space_indent_class-t_columns-4.cfg cpp/indent_comment_align_thresh.cpp
+30212 cpp/indent_comment_align_thresh_2.cfg cpp/indent_comment_align_thresh.cpp
+30213 cpp/align_right_comment.cfg cpp/align_right_comment.cpp
+30214 cpp/issue_1887.cfg cpp/align_across_braces.cpp
+30215 common/empty.cfg cpp/Issue_2099.cpp
+30216 cpp/Issue_2302.cfg cpp/Issue_2302.cpp
+30217 common/empty.cfg cpp/2138.cpp
+30218 cpp/Issue_3710.cfg cpp/Issue_3710.cpp
+
+30220 cpp/bug_1340.cfg cpp/bug_1340.cpp
+30221 cpp/Issue_2914.cfg cpp/Issue_2914.cpp
+30223 cpp/sp_enum_colon.cfg cpp/sp_enum_colon.cpp
+30224 cpp/sp_enum_colon-r.cfg cpp/sp_enum_colon.cpp
+30225 common/empty.cfg cpp/Issue_3176.cpp
+30226 cpp/sp_enum_colon-i.cfg cpp/sp_enum_colon.cpp
+30227 cpp/sp_inside_braces_enum-i.cfg cpp/sp_inside_braces_enum.cpp
+30228 cpp/sp_inside_braces_enum-f.cfg cpp/sp_inside_braces_enum.cpp
+30229 cpp/sp_inside_braces_enum-r.cfg cpp/sp_inside_braces_enum.cpp
+
+30230 cpp/sp_type_func-r.cfg cpp/sp_type_func.cpp
+30231 cpp/sp_type_func-f.cfg cpp/sp_type_func.cpp
+30232 cpp/sp_type_func-1.cfg cpp/sp_type_func.cpp
+30233 cpp/sp_type_func-2.cfg cpp/sp_type_func.cpp
+30234 cpp/functype_param-r.cfg cpp/functype_param.cpp
+30235 cpp/functype_param-f.cfg cpp/functype_param.cpp
+30236 cpp/Issue_750.cfg cpp/Issue_750.cpp
+30237 cpp/Issue_3920.cfg cpp/Issue_3920.cpp
+
+30240 cpp/align_func_params-t.cfg cpp/align_func_params.cpp
+30241 cpp/align_func_params_span-1.cfg cpp/align_func_params.cpp
+30242 cpp/align_func_params_gap.cfg cpp/align_func_params.cpp
+30243 cpp/align_func_params_thresh_1.cfg cpp/align_func_params.cpp
+30244 cpp/align_func_params_thresh_2.cfg cpp/align_func_params.cpp
+30245 cpp/align_func_params_thresh_3.cfg cpp/align_func_params.cpp
+30246 cpp/align_func_params_thresh_4.cfg cpp/align_func_params.cpp
+30247 common/empty.cfg cpp/Issue_2332.cpp
+30248 cpp/Issue_2831.cfg cpp/Issue_2831.cpp
+30249 cpp/align-330.cfg cpp/align-330.cpp
+
+30250 cpp/align_fcall.cfg cpp/align_fcall.cpp
+30251 cpp/align_fcall-2.cfg cpp/align_fcall.cpp
+30252 common/empty.cfg cpp/Issue_3691.h
+30253 common/empty.cfg cpp/align_left_shift.cpp
+30254 common/empty.cfg cpp/align_left_shift2.cpp
+30255 cpp/ben_018.cfg cpp/align_constr.cpp
+30256 common/empty.cfg cpp/func_call.cpp
+30257 cpp/indent_columns-4.cfg cpp/func_call_chain.cpp
+30258 common/indent_columns-3.cfg cpp/casts.cpp
+30259 cpp/sp_after_constr_colon.cfg cpp/sp_after_constr_colon.cpp
+
+30260 cpp/var_def_gap.cfg cpp/var_def_gap.cpp
+30261 cpp/align_var_def_thresh_1.cfg cpp/align_var_def_thresh.cpp
+30262 cpp/align_var_def_thresh_2.cfg cpp/align_var_def_thresh.cpp
+30263 cpp/align_var_def_thresh_3.cfg cpp/align_var_def_thresh.cpp
+30264 cpp/Issue_2668.cfg cpp/Issue_2668.cpp
+30265 cpp/long_br_cmt.cfg cpp/long_br_cmt.cpp
+30266 cpp/Issue_2921.cfg cpp/Issue_2921.cpp
+30267 cpp/Issue_2930.cfg cpp/Issue_2930.cpp
+30268 cpp/Issue_2692.cfg cpp/Issue_3018.cpp
+
+30270 cpp/const_throw.cfg cpp/const_throw.cpp
+30271 cpp/sp_throw_paren-r.cfg cpp/sp_throw_paren.cpp
+30272 cpp/sp_throw_paren-f.cfg cpp/sp_throw_paren.cpp
+30273 common/sp_cparen_oparen-f.cfg cpp/sp_cparen_oparen.cpp
+30274 cpp/sp_cparen_oparen-r.cfg cpp/sp_cparen_oparen.cpp
+30275 common/empty.cfg cpp/bug_1321.cpp
+30278 cpp/bug_1439.cfg cpp/bug_1439.cpp
+30279 common/indent_inside_ternary_operator.cfg cpp/indent-inside-ternary-operator.cpp
+
+30280 cpp/sp_dc.cfg cpp/sf557.cpp
+30281 cpp/Issue_2478.cfg cpp/Issue_2478.cpp
+30282 cpp/Issue_2703.cfg cpp/Issue_2703.cpp
+30283 common/empty.cfg cpp/Issue_3321.h
+30284 cpp/Issue_2957.cfg cpp/Issue_2957.cpp
+30285 cpp/Issue_2971.cfg cpp/Issue_2971.cpp
+30286 cpp/Issue_3558.cfg cpp/Issue_3558.cpp
+30287! cpp/Issue_3786.cfg cpp/Issue_3786.cpp
+
+30290 cpp/indent_shift.cfg cpp/align_left_shift.cpp
+30291 cpp/indent_shift.cfg cpp/indent_shift.cpp
+30292 cpp/align_eigen_comma_init.cfg cpp/eigen.cpp
+30293 cpp/pos_shift-lead.cfg cpp/pos_shift.cpp
+30294 cpp/pos_shift-trail.cfg cpp/pos_shift.cpp
+30295 cpp/pos_shift-join.cfg cpp/pos_shift.cpp
+
+30300 cpp/ben_020.cfg cpp/enum_shr.cpp
+30301 cpp/al.cfg cpp/enum_class.h
+30302 cpp/bug_1315.cfg cpp/bug_1315.cpp
+30303 cpp/Issue_2902.cfg cpp/Issue_2902.cpp
+
+# TODO: Make a tests for a braced_init_list. See also 34153-34166.
+30310 cpp/sp_word_brace_force.cfg cpp/braced_init_list.cpp
+30311 cpp/sp_word_brace_remove.cfg cpp/uniform_initialization.cpp
+30312 cpp/sp_inside_type_brace_init_lst-f.cfg cpp/return_init_list.cpp
+30313 cpp/sp_brace_brace-r.cfg cpp/sp_brace_brace.cpp
+30314 cpp/sp_brace_brace-f.cfg cpp/sp_brace_brace.cpp
+30315 cpp/issue_1997.cfg cpp/return_braced_init.cpp
+30316 cpp/Issue_2428.cfg cpp/Issue_2428.cpp
+30317 cpp/pos_comma-tb.cfg cpp/braced_init_template_decltype.cpp
+30318 cpp/Issue_2949.cfg cpp/Issue_2949.cpp
+30319 cpp/Issue_2886.cfg cpp/Issue_2886.cpp
+
+30320 cpp/sp_return_paren-r.cfg cpp/returns.cpp
+30321 cpp/sp_return_paren-f.cfg cpp/returns.cpp
+30322 cpp/sp_return_brace-r.cfg cpp/returns.cpp
+30323 cpp/sp_return_brace-f.cfg cpp/returns.cpp
+30324 common/mod_paren_on_return-a.cfg cpp/returns.cpp
+30325 common/mod_paren_on_return-r.cfg cpp/returns.cpp
+30326 cpp/indent_off_after_return.cfg cpp/indent_off_after_return.cpp
+30327 cpp/indent_off_after_return.cfg cpp/indent_off_after_return.cpp
+30328 cpp/nl_type_brace_init_lst-f.cfg cpp/call_brace_init_lst.cpp
+30329 cpp/nl_type_brace_init_lst-r.cfg cpp/call_brace_init_lst.cpp
+
+30330 cpp/Issue_3080.cfg cpp/Issue_3080.cpp
+
+30340 cpp/issue_3105_1_neg.cfg cpp/issue_3105_1.cpp
+30341 cpp/issue_3105_1_pos.cfg cpp/issue_3105_1.cpp
+30342 cpp/issue_3105_1_zero.cfg cpp/issue_3105_1.cpp
+30343 cpp/issue_3105_2_neg.cfg cpp/issue_3105_2.cpp
+30344 cpp/issue_3105_2_pos.cfg cpp/issue_3105_2.cpp
+30345 cpp/issue_3105_2_zero.cfg cpp/issue_3105_2.cpp
+
+30400 common/attribute_specifier_seqs.cfg cpp/attribute_specifier_seqs.cpp
+30401 cpp/Issue_2570.cfg cpp/Issue_2570.cpp
+
+# function def newlines
+30701 common/func-def-1.cfg cpp/function-def.cpp
+30702 common/func-def-2.cfg cpp/function-def.cpp
+30703 common/func-def-3.cfg cpp/function-def.cpp
+
+30705 cpp/func_param.cfg cpp/func_param.cpp
+30706 cpp/bug_1020.cfg cpp/bug_1020.cpp
+
+30711 common/del_semicolon.cfg cpp/semicolons.cpp
+30712 common/empty.cfg cpp/bug_1158.cpp
+30713 common/empty.cfg cpp/fix_for_relational_operators.cpp
+30714 common/empty.cfg cpp/Issue_1733.cpp
+30715 cpp/Issue_2942.cfg cpp/Issue_2942.cpp
+
+30720 cpp/wessex.cfg cpp/custom-open-2.cpp
+30721 cpp/Issue_2386.cfg cpp/Issue_2386.cpp
+
+30730 cpp/qt-1.cfg cpp/qt-1.cpp
+30731 cpp/nl_access_spec.cfg cpp/qt-1.cpp
+30732 cpp/Issue_2734.cfg cpp/Issue_2734.cpp
+
+30740 cpp/sef.cfg cpp/sef.cpp
+30741 cpp/al.cfg cpp/al.cpp
+30742 cpp/indent_columns-2.cfg cpp/delete.cpp
+
+30745 cpp/Issue_2170.cfg cpp/Issue_2170.cpp
+30746 cpp/DefaultAndDelete-0.cfg cpp/DefaultAndDelete.cpp
+30747 cpp/DefaultAndDelete-1.cfg cpp/DefaultAndDelete.cpp
+30748 cpp/DefaultAndDelete-2.cfg cpp/DefaultAndDelete.cpp
+
+# TODO: Reduce the number of options, leave only those that affect lambda.
+# TODO: Add tests for nested lambdas.
+
+30750 cpp/ben_021.cfg cpp/lambda.cpp
+30751 cpp/lambda1.cfg cpp/lambda.cpp
+30752 cpp/lambda2.cfg cpp/lambda.cpp
+30753 cpp/lambda3.cfg cpp/lambda2.cpp
+30754 cpp/indent_with_tabs-0.cfg cpp/bug_i_682.h
+30755 common/empty.cfg cpp/bug_i_938.h
+30756 cpp/bug_1296-T.cfg cpp/bug_1296.cpp
+30757 cpp/Issue_3054.cfg cpp/Issue_3054.cpp
+30758 cpp/Issue_3054-2.cfg cpp/Issue_3054-2.cpp
+30759 cpp/lambda4.cfg cpp/lambda2.cpp
+
+30760 cpp/bug_1296-F.cfg cpp/bug_1296.cpp
+30761 cpp/out-668-F.cfg cpp/out-668.cpp
+30762 cpp/out-668-T.cfg cpp/out-668.cpp
+30763 cpp/Issue_2166.cfg cpp/Issue_2166.cpp
+30764 cpp/Issue_2591.cfg cpp/Issue_2591.cpp
+30765 cpp/sp_cpp_lambda_square_paren-i.cfg cpp/lambda.cpp
+30766 cpp/sp_cpp_lambda_square_brace-i.cfg cpp/lambda.cpp
+30767 cpp/sp_cpp_lambda_paren_brace-i.cfg cpp/lambda.cpp
+30768 cpp/sp_cpp_lambda_fparen-i.cfg cpp/sp_cpp_lambda_fparen.cpp
+
+30770 cpp/sp_cpp_lambda_square_paren-r.cfg cpp/lambda.cpp
+30771 cpp/sp_cpp_lambda_square_paren-f.cfg cpp/lambda.cpp
+30772 cpp/sp_cpp_lambda_square_brace-r.cfg cpp/lambda.cpp
+30773 cpp/sp_cpp_lambda_square_brace-f.cfg cpp/lambda.cpp
+30774 cpp/sp_cpp_lambda_paren_brace-r.cfg cpp/lambda.cpp
+30775 cpp/sp_cpp_lambda_paren_brace-f.cfg cpp/lambda.cpp
+30776 cpp/sp_cpp_lambda_fparen-r.cfg cpp/sp_cpp_lambda_fparen.cpp
+30777 cpp/sp_cpp_lambda_fparen-f.cfg cpp/sp_cpp_lambda_fparen.cpp
+
+30780 cpp/lambda_in_one_liner.cfg cpp/lambda_in_one_liner.cpp
+30781 cpp/lambda_in_one_liner.cfg cpp/lambda_brace_list.cpp
+
+30790 cpp/Issue_2795.cfg cpp/Issue_2795.cpp
+30791 cpp/Issue_3203.cfg cpp/Issue_3203.cpp
+
+30800 common/star_pos-0.cfg cpp/align-star-amp-pos.cpp
+30801 cpp/star_pos-1.cfg cpp/align-star-amp-pos.cpp
+30802 cpp/star_pos-2.cfg cpp/align-star-amp-pos.cpp
+30803 cpp/bug_1403.cfg cpp/bug_1403.cpp
+30805 cpp/ptr_star-1.cfg cpp/ptr-star.cpp
+30806 cpp/ptr_star-2.cfg cpp/ptr-star.cpp
+30807 cpp/ptr_star-3.cfg cpp/ptr-star.cpp
+30808 cpp/sp_after_ptr_star_qualifier-f.cfg cpp/ptr-star.cpp
+30809 common/empty.cfg cpp/bug_1289.cpp
+
+30810 cpp/ben_022.cfg cpp/ptr-star.cpp
+30811 cpp/avalon4.cfg cpp/misc3.cpp
+30812 cpp/ben_023.cfg cpp/misc4.cpp
+30813 cpp/ben_024.cfg cpp/misc5.cpp
+30814 common/empty.cfg cpp/misc6.cpp
+30815 common/width-2.cfg cpp/cmt-reflow.cpp
+30816 cpp/cu.cfg cpp/for_long.cpp
+30817 common/indent_columns-3.cfg cpp/cmt-cpp-cont.cpp
+30818 cpp/bug_1169.cfg cpp/bug_1169.cpp
+30819 cpp/bug_1170.cfg cpp/bug_1170.cpp
+
+30820 cpp/pp_define_at_level-1.cfg cpp/pp-define-indent.cpp
+30821 common/empty.cfg cpp/pp_indent_case.cpp
+30822 common/empty.cfg cpp/pp_indent_brace.cpp
+30823 common/empty.cfg cpp/pp_indent_func_def.cpp
+30824 common/empty.cfg cpp/pp_indent_extern.cpp
+30825 cpp/Issue_1966.cfg cpp/Issue_1966.cpp
+30826 cpp/Issue_2319.cfg cpp/Issue_2319.cpp
+30827 cpp/Issue_1167.cfg cpp/Issue_1167.cpp
+30828 cpp/bug_1691.cfg cpp/bug_1691.cpp
+30829 cpp/ptr_star-2.cfg cpp/Issue_2726.cpp
+
+30830 common/kw_subst2.cfg cpp/kw_subst.cpp
+30831 common/kw_subst.cfg cpp/kw_subst2.cpp
+30832 common/kw_subst4.cfg cpp/kw_subst.cpp
+
+30840 cpp/nl_func_type_name_remove.cfg cpp/nl_func_type_name.cpp
+30841 cpp/nl_func_type_name_force.cfg cpp/nl_func_type_name.cpp
+30842 cpp/nl_func_type_name_class.cfg cpp/nl_func_type_name.cpp
+30843 cpp/nl_func_type_name_mixed.cfg cpp/nl_func_type_name.cpp
+30844 cpp/Issue_2771.cfg cpp/Issue_2771.cpp
+30845 cpp/ben_026.cfg cpp/deref.cpp
+30846 cpp/Issue_3197.cfg cpp/Issue_3197.h
+
+30850 common/sp_cmt_cpp_start_force.cfg cpp/sp_cmt_cpp_start.cc
+30852 cpp/sp_paren_qualifier-f.cfg cpp/Issue_2138.cpp
+30853 cpp/sp_paren_noexcept-f.cfg cpp/noexcept.cpp
+30854 cpp/Issue_1703.cfg cpp/Issue_1703.cpp
+30855 common/empty.cfg cpp/cpp_move.cpp
+30856 cpp/sp_cmt_cpp_region-f.cfg cpp/sp_cmt_cpp_region.cpp
+30857 cpp/sp_cmt_cpp_region-r.cfg cpp/sp_cmt_cpp_region.cpp
+
+30860 cpp/sf574.cfg cpp/sf574.cpp
+
+30870 common/cmt_insert-0.cfg cpp/cmt_insert.cpp
+30871 common/cmt_insert-1.cfg cpp/cmt_insert.cpp
+30872 cpp/Issue_2752.cfg cpp/Issue_2752.cpp
+# will also use the file footer.txt
+
+30880 common/empty.cfg cpp/bug_1758.cpp
+30881 cpp/bug_1758-f.cfg cpp/bug_1758-f.cpp
+
+30900 common/region-0.cfg cpp/region.cpp
+30901 common/region-1.cfg cpp/region.cpp
+30902 common/region-2.cfg cpp/region.cpp
+30903 common/region-3.cfg cpp/region.cpp
+30907 cpp/Issue_1813.cfg cpp/Issue_1813.cpp
+30908 cpp/Issue_1813.cfg cpp/Issue_1813-2.cpp
+30909 cpp/Issue_1813.cfg cpp/Issue_1813-3.cpp
+
+30910 cpp/indent_namespace-t.cfg cpp/indent_namespace.h
+30911 cpp/indent_class-t.cfg cpp/indent_namespace.h
+30912 cpp/long_namespace.cfg cpp/long_namespace.cpp
+30913 cpp/indent_namespace-t.cfg cpp/indent_namespace2.h
+30914 cpp/indent_namespace_single_indent.cfg cpp/indent_namespace_single_indent.h
+30915 common/empty.cfg cpp/bug_1235.cpp
+30916 common/empty.cfg cpp/Issue_1737.cpp
+30917 cpp/Issue_2345.cfg cpp/Issue_2345-3.cpp
+30918 cpp/Issue_2345.cfg cpp/Issue_2345-4.cpp
+30919 common/empty.cfg cpp/Issue_2387.cpp
+
+30920 cpp/ben_027.cfg cpp/indent-off.cpp
+30921 cpp/ben_028.cfg cpp/variadic-template.h
+30922 cpp/sp_before_ellipsis-f.cfg cpp/variadic-template.h
+30923 cpp/sf.2886991-f.cfg cpp/sf.2886991.cpp
+30924 cpp/sf.2886991-r.cfg cpp/sf.2886991.cpp
+30925 cpp/sp_func_call_empty.cfg cpp/function-def.cpp
+30926 cpp/sp_func_class_empty.cfg cpp/function-def.cpp
+30927 cpp/sp_func_def_empty.cfg cpp/function-def.cpp
+30928 cpp/sp_func_proto_empty.cfg cpp/function-def.cpp
+30929 cpp/bug_1324.cfg cpp/bug_1324.cpp
+
+30930 common/indent_var_def.cfg cpp/indent_var_def.cpp
+30931 cpp/indent_var_def_cont-t.cfg cpp/indent_var_def_cont.cpp
+30932 common/empty.cfg cpp/indent_var_def_cont.cpp
+30933 cpp/indent_paren_after_func_def-t.cfg cpp/indent_paren_after_func_def.cpp
+30934 cpp/indent_paren_after_func_decl-t.cfg cpp/indent_paren_after_func_decl.cpp
+30935 cpp/ben_029.cfg cpp/indent-misc.cpp
+30936 cpp/indent_braces_no.cfg cpp/indent_braces_no.h
+30937 cpp/indent_param.cfg cpp/indent_param.cpp
+30938 common/empty.cfg cpp/indent_switch_pp.cpp
+30939 cpp/indent_paren_after_func_call-t.cfg cpp/indent_paren_after_func_call.cpp
+
+30940 common/mod_case_brace_rm.cfg cpp/case-brace-remove.cpp
+30941 cpp/Issue_2150.cfg cpp/Issue_2150.cpp
+30942 cpp/Issue_1692.cfg cpp/Issue_1692.cpp
+30943 cpp/Issue_2735.cfg cpp/Issue_2735.cpp
+#30944
+30945 common/sp_before_byref-r.cfg cpp/sf.3266678.cpp
+30946 cpp/sf.3315874.cfg cpp/sf.3315874.h
+30947 cpp/bug_1689.cfg cpp/bug_1689.cpp
+30948 cpp/sp_before_byref_func.cfg cpp/sp_before_byref_func.cpp
+30949 cpp/Issue_2757.cfg cpp/Issue_2757.cpp
+
+30950 cpp/sp_before_tr_emb_cmt-f.cfg cpp/sp_before_tr_emb_cmt_input.cpp
+30951 cpp/sp_before_tr_emb_cmt-a.cfg cpp/sp_before_tr_emb_cmt_input.cpp
+30952 cpp/sp_before_constr_colon.cfg cpp/sp_before_constr_colon.cpp
+30953 cpp/constr_colon.cfg cpp/constr_colon.cpp
+30954 cpp/Issue_2305.cfg cpp/Issue_2305.cpp
+30955 cpp/indent_ctor_init.cfg cpp/indent_ctor_init.cpp
+30956 cpp/indent_ctor_init_following.cfg cpp/indent_ctor_init.cpp
+30957 cpp/negative_indent.cfg cpp/class-init.cpp
+30958 cpp/nl_for_leave_one_liners-f.cfg cpp/nl_for_leave_one_liners.cpp
+30959 cpp/nl_for_leave_one_liners-t.cfg cpp/nl_for_leave_one_liners.cpp
+
+30960 cpp/Issue_2151.cfg cpp/Issue_2151.cpp
+30961 cpp/Issue_2232.cfg cpp/Issue_2232.cpp
+30962 cpp/nl_assign_leave_one_liners.cfg cpp/nl_assign_leave_one_liners.cpp
+30963 cpp/Issue_2907.cfg cpp/Issue_2907.cpp
+30964 cpp/Issue_2823.cfg cpp/Issue_2823.cpp
+30965 cpp/return_remove.cfg cpp/return_remove.cpp
+30966 cpp/return_dont_remove.cfg cpp/return_remove.cpp
+
+30970 cpp/Issue_2219.cfg cpp/Issue_2219.cpp
+30971 cpp/Issue_2224.cfg cpp/Issue_2224.cpp
+30972 cpp/Issue_2229.cfg cpp/Issue_2229.cpp
+30973 cpp/Issue_2236.cfg cpp/Issue_2236.cpp
+30974 cpp/using-alias-in-define.cfg cpp/using-alias-in-define.cpp
+
+31000 common/empty.cfg cpp/digraph.cpp
+31001 cpp/ben_030.cfg cpp/digraph.cpp
+
+31050 common/empty.cfg cpp/pos_assign.cpp
+31051 cpp/pos_assign.cfg cpp/pos_assign.cpp
+
+31101 common/empty.cfg cpp/nl_before_brace_open_test.cpp
+31102 cpp/nl_before_brace_open_1.cfg cpp/nl_before_brace_open_test.cpp
+31103 cpp/nl_before_brace_open_2.cfg cpp/nl_before_brace_open_test.cpp
+31104 cpp/nl_before_brace_open_3.cfg cpp/nl_before_brace_open_test.cpp
+
+31400 cpp/sp_trailing_return-f.cfg cpp/trailing_return.cpp
+31401 cpp/sp_trailing_return-r.cfg cpp/trailing_return.cpp
+31402 cpp/sp_assign_default.cfg cpp/trailing_return.cpp
+31403 cpp/sp_trailing_return_byref_ptr-left.cfg cpp/trailing_return_byref_ptr.cpp
+31404 cpp/sp_trailing_return_byref_ptr-right.cfg cpp/trailing_return_byref_ptr.cpp
+
+31450 cpp/indent_paren_close_0.cfg cpp/indent_func_alias_prototype.cpp
+31451 cpp/indent_paren_close_1.cfg cpp/indent_func_alias_prototype.cpp
+31452 cpp/indent_paren_close_2.cfg cpp/indent_func_alias_prototype.cpp
+
+31562 cpp/space_indent_class-t_columns-4.cfg cpp/sf562.cpp
+31567 common/align_same_func_call_params-t.cfg cpp/sf567.cpp
+31568 cpp/Issue_2368.cfg cpp/Issue_2368.cpp
+
+31583 common/empty.cfg cpp/sf583.cpp
+31593 common/indent_continue-8.cfg cpp/sf593.cpp
+31594 common/issue_672.cfg cpp/issue_672.cpp
+31595 cpp/issue_1778.cfg cpp/issue_1778.cpp
+31596 cpp/issue_1782.cfg cpp/issue_1782.cpp
+31597 cpp/issue_1804.cfg cpp/issue_1804.cpp
+31598 cpp/Issue_1753.cfg cpp/Issue_1753.cpp
+31599 cpp/sp_paren_ellipsis-i.cfg cpp/parameter-packs.cpp
+
+31600 cpp/sp_paren_ellipsis-f.cfg cpp/parameter-packs.cpp
+31601 cpp/sp_paren_ellipsis-r.cfg cpp/parameter-packs.cpp
+31602 cpp/sp_sizeof_ellipsis-f.cfg cpp/parameter-packs.cpp
+31603 cpp/sp_sizeof_ellipsis-r.cfg cpp/parameter-packs.cpp
+31604 cpp/sp_before_ellipsis-f.cfg cpp/parameter-packs.cpp
+31605 cpp/sp_before_ellipsis-r.cfg cpp/parameter-packs.cpp
+31606 cpp/sp_type_ellipsis-f.cfg cpp/parameter-packs.cpp
+31607 cpp/sp_type_ellipsis-r.cfg cpp/parameter-packs.cpp
+31608 cpp/sp_sizeof_ellipsis_paren-f.cfg cpp/parameter-packs.cpp
+31609 cpp/sp_sizeof_ellipsis_paren-r.cfg cpp/parameter-packs.cpp
+
+31610 cpp/Issue_2085.cfg cpp/Issue_2085.cpp
+31611 cpp/sp_sizeof_ellipsis-i.cfg cpp/parameter-packs.cpp
+31612 cpp/sp_sizeof_ellipsis_paren-i.cfg cpp/parameter-packs.cpp
+31613 cpp/sp_type_ellipsis-i.cfg cpp/parameter-packs.cpp
+31614 cpp/Issue_3309-i.cfg cpp/Issue_3309.cpp
+31615 cpp/Issue_3309-f.cfg cpp/Issue_3309.cpp
+31616 cpp/Issue_3309-r.cfg cpp/Issue_3309.cpp
+
+31620 common/sp_after_type-f.cfg cpp/sp_after_type.cpp
+31621 cpp/sp_after_type-i.cfg cpp/sp_after_type.cpp
+31622 cpp/sp_after_cast-f.cfg cpp/sp_after_type.cpp
+31623 cpp/sp_after_cast-r.cfg cpp/sp_after_type.cpp
+31624 cpp/sp_before_ptr_star-f.cfg cpp/sp_after_type.cpp
+31625 cpp/sp_before_ptr_star-r.cfg cpp/sp_after_type.cpp
+31626 cpp/sp_decltype_paren-f.cfg cpp/issue_1916.cpp
+31627 cpp/sp_decltype_paren-r.cfg cpp/issue_1916.cpp
+31628 cpp/sp_after_decltype-f.cfg cpp/issue_1916.cpp
+31629 cpp/sp_after_decltype-r.cfg cpp/issue_1916.cpp
+
+31630 common/sp_after_type-f.cfg cpp/issue_1916.cpp
+31631 common/sp_after_type-r.cfg cpp/issue_1916.cpp
+31632 cpp/issue_1916.cfg cpp/issue_1916.cpp
+31633 cpp/sp_after_decltype-f.cfg cpp/sp_after_decltype.cpp
+31634 cpp/sp_after_decltype-r.cfg cpp/sp_after_decltype.cpp
+31635 common/empty.cfg cpp/sp_decltype.cpp
+31636 cpp/Issue_1923.cfg cpp/Issue_1923.cpp
+31637 cpp/Issue_3446.cfg cpp/Issue_3446.cpp
+31638 cpp/sp_between_ptr_ref-a.cfg cpp/misc2.cpp
+31639 cpp/sp_between_ptr_ref-r.cfg cpp/misc2.cpp
+31640 cpp/sp_between_ptr_ref-f.cfg cpp/misc2.cpp
+31641 cpp/sp_between_ptr_ref-i.cfg cpp/misc2.cpp
+
+31660 cpp/var_def_blks-1.cfg cpp/issue_1919.cpp
+31661 cpp/Issue_3097.cfg cpp/Issue_3097.cpp
+31662 cpp/var_def_blks-1.cfg cpp/var_def_blks.cpp
+31663 cpp/var_def_blks-2.cfg cpp/var_def_blks.cpp
+31664 cpp/var_def_blks-3.cfg cpp/var_def_blks.cpp
+31665 cpp/var_def_blks-4.cfg cpp/var_def_blks.cpp
+31666 cpp/var_def_blks-5.cfg cpp/var_def_blks.cpp
+31667 cpp/var_def_blks-6.cfg cpp/var_def_blks.cpp
+31668 cpp/var_def_blks-7.cfg cpp/var_def_blks.cpp
+
+31700 cpp/toggle_processing_cmt.cfg cpp/toggle_processing_cmt.cpp
+31701 cpp/toggle_processing_cmt2.cfg cpp/toggle_processing_cmt2.cpp
+31702 cpp/toggle_processing_cmt3.cfg cpp/toggle_processing_cmt.cpp
+31703 cpp/toggle_processing_cmt4.cfg cpp/toggle_processing_cmt.cpp
+
+31710 common/empty.cfg cpp/string_replace_tab_chars.cpp
+31711 cpp/string_replace_tab_chars-t.cfg cpp/string_replace_tab_chars.cpp
+
+31720 cpp/ben_031.cfg cpp/bit-colon.cpp
+31721 cpp/Issue_2689.cfg cpp/Issue_2689.cpp
+
+31730 cpp/sp_arith-a.cfg cpp/ms-style-ref.cpp
+
+31740 common/empty.cfg cpp/I2102.cpp
+
+32000 cpp/sp_skip_vbrace_tokens.cfg cpp/sp_skip_vbrace_tokens.cpp
+32001 common/empty.cfg cpp/issue_547_for_each.cpp
+32002 common/empty.cfg cpp/proto-wrap.cpp
+32003 cpp/align_var_class_span-1.cfg cpp/issue_633_typename.cpp
+32004 common/empty.cfg cpp/issue_624_angle.cpp
+32005 cpp/align_var_class_span-1.cfg cpp/issue_633_typename.cpp
+32006 common/space_indent_columns-4.cfg cpp/bug_i_687.cpp
+32007 common/Issue_3052.cfg cpp/Issue_3052.cpp
+32008 cpp/Issue_3034.cfg cpp/Issue_3034.cpp
+32009 cpp/Issue_3422-1.cfg cpp/Issue_3422.cpp
+32010 cpp/Issue_3422-2.cfg cpp/Issue_3422.cpp
+
+32100 cpp/cpp17.cfg cpp/cpp17.cpp
+32105 cpp/I2103.cfg cpp/I2103.cpp
+
+32115 cpp/2185.cfg cpp/2185.cpp
+
+33000 cpp/tab-0-11.cfg cpp/tab-0.cpp
+33001 cpp/indent_columns-11.cfg cpp/tab-1.cpp
+33002 common/empty.cfg cpp/cmt_convert_tab_to_spaces.cpp
+33003 cpp/cmt_convert_tab_to_spaces-t.cfg cpp/cmt_convert_tab_to_spaces.cpp
+33004 common/sp_cmt_cpp_start-a.cfg cpp/DoxygenComments.cpp
+33005 cpp/sp_cmt.cfg cpp/DoxygenComments.cpp
+33006 common/empty.cfg cpp/string_replace_tab_chars.cpp
+33007 common/empty.cfg cpp/NewLine.cpp
+33008 cpp/NewLine-r.cfg cpp/NewLine.cpp
+33009 cpp/NewLine-f.cfg cpp/NewLine0.cpp
+
+33010 cpp/indent_columns-4.cfg cpp/Q_EMIT.cpp
+33011 cpp/indent_class-t_columns-4.cfg cpp/static.h
+33012 cpp/kdepim2.cfg cpp/Q_SIGNAL_SLOT.cpp
+33013 cpp/kdepim3.cfg cpp/Q_2.cpp
+33014 cpp/indent_columns-4.cfg cpp/DB.cpp
+33015 cpp/kdepim5.cfg cpp/Q_FOREACH.cpp
+33016 cpp/indent_once.cfg cpp/indent.cpp
+33017 cpp/bug_1160.cfg cpp/bug_1160.cpp
+#33018
+33019 cpp/bug_657.cfg cpp/bug_657.cpp
+
+33020 cpp/sp_cmt.cfg cpp/bug_662.cpp
+33021 cpp/bug_633.cfg cpp/bug_633.cpp
+33022 common/empty.cfg cpp/bug_634.cpp
+33023 cpp/indent_once.cfg cpp/bug_651.cpp
+33024 common/empty.cfg cpp/bug_653.cpp
+33025 common/empty.cfg cpp/bug_654.cpp
+33026 common/empty.cfg cpp/bug_631.cpp
+33027 cpp/bug_664.cfg cpp/bug_664.cpp
+33028 cpp/sp_inside_braces_empty-r.cfg cpp/braces_empty.cpp
+33029 cpp/cast.cfg cpp/cast.cpp
+
+33030 common/space_indent_columns-4.cfg cpp/Q_FOREVER.cpp
+33031 cpp/align_assign_span-1.cfg cpp/bug_612.cpp
+33032 cpp/bug_670.cfg cpp/bug_670.cpp
+33033 cpp/bug_670.cfg cpp/bug_670.h
+33034 common/bug_671.cfg cpp/bug_671.h
+33035 cpp/cmt_cpp_to_c-t.cfg cpp/patch_32.cpp
+33036 common/empty.cfg cpp/bug_663.cpp
+33037 cpp/func_class.cfg cpp/func_class.cpp
+33038 cpp/func_class.cfg cpp/func_class.h
+33039 cpp/mod_remove_empty_return-t.cfg cpp/mod_remove_empty_return.cpp
+
+33040 cpp/nl_after_func_proto_group-3.cfg cpp/bug_i_411.cpp
+33041 cpp/nl_after_func_proto-3.cfg cpp/bug_i_411.cpp
+33042 cpp/nl_after_func_class_proto-3.cfg cpp/bug_i_411.cpp
+33043 cpp/bug_i_478.cfg cpp/bug_i_478.cpp
+33044 cpp/sp_before_comma-f.cfg cpp/bug_i_481.cpp
+33045 cpp/indent_columns-4.cfg cpp/bug_i_width.cpp
+33046 cpp/bug_i_409-split.cfg cpp/bug_i_409.cpp
+33047 cpp/bug_i_409-create.cfg cpp/bug_i_409.cpp
+33048 cpp/bug_i_405.cfg cpp/bug_i_405.cpp
+33049 cpp/pp-pragma.cfg cpp/pp-pragma.cpp
+
+33050 common/empty.cfg cpp/issue_523.cpp
+33051 common/empty.cfg cpp/bug_i_503.cpp
+33052 common/empty.cfg cpp/bug_i_512.cpp
+33053 common/space_indent_columns-4.cfg cpp/for_auto.cpp
+33054 common/indent_columns-3.cfg cpp/bug_i_825.cpp
+33056 common/empty.cfg cpp/bug_33056.cpp
+33057 cpp/bug_1349.cfg cpp/bug_1349.cpp
+33058 cpp/Issue_3164.cfg cpp/Issue_3164.cpp
+33039 cpp/mod_remove_empty_return-t.cfg cpp/mod_remove_empty_return.cpp
+33059 cpp/mod_remove_empty_return-t.cfg cpp/mod_remove_empty_return-2.cpp
+
+33060 common/empty.cfg cpp/if_constexpr.cpp
+33061 common/empty.cfg cpp/if_chain_braces.cpp
+33062 cpp/mod_full_brace_if_chain-1.cfg cpp/if_chain_braces.cpp
+33063 common/mod_full_brace_if_chain_only-t.cfg cpp/if_chain_braces.cpp
+33064 cpp/if_chain_braces_2.cfg cpp/if_chain_braces.cpp
+33065 cpp/Issue_3316.cfg cpp/Issue_3316.cpp
+33066 cpp/mod_full_brace_if_chain-2.cfg cpp/if_chain_braces.cpp
+33067 cpp/mod_full_brace_if_chain-3.cfg cpp/if_chain_braces.cpp
+
+33069 cpp/Issue_2195.cfg cpp/Issue_2195.cpp
+
+33070 cpp/code_width-70.cfg cpp/multi_line.cpp
+33071 cpp/multi_line_1.cfg cpp/multi_line.cpp
+33072 cpp/multi_line_2.cfg cpp/multi_line.cpp
+33073 cpp/multi_line_3.cfg cpp/multi_line.cpp
+33074 cpp/multi_line_4.cfg cpp/multi_line.cpp
+33075 cpp/multi_line_5.cfg cpp/multi_line.cpp
+33076 cpp/multi_line_6.cfg cpp/multi_line.cpp
+33077 cpp/multi_line_7.cfg cpp/multi_line.cpp
+33078 cpp/multi_line_8.cfg cpp/multi_line.cpp
+33079 cpp/multi_line_9.cfg cpp/multi_line.cpp
+
+33080 cpp/multi_line_10.cfg cpp/multi_line.cpp
+33081 common/space_indent_columns-4.cfg cpp/bug_i_552.cpp
+33082 common/empty.cfg cpp/namespace_namespace.cpp
+33083 cpp/bug_i_359.cfg cpp/bug_i_359.cpp
+33084 cpp/op_sym_empty.cfg cpp/op_sym_empty.cpp
+33085 cpp/indent_with_tabs-0.cfg cpp/bug_i_323.cpp
+33086 cpp/indent_class-t.cfg cpp/bug_i_568.cpp
+33087 common/space_indent_columns-4.cfg cpp/bug_i_596.cpp
+33088 common/empty.cfg cpp/bug_i_197.cpp
+33089 cpp/indent_class-t_columns-4.cfg cpp/bug_643.cpp
+
+33090 common/empty.cfg cpp/gh555.cpp
+33091 cpp/no_squeeze_ifdef.cfg cpp/squeeze_ifdef.cpp
+33092 cpp/squeeze_ifdef.cfg cpp/squeeze_ifdef.cpp
+33093 cpp/sp_angle_paren-f.cfg cpp/sp_angle_paren.cpp
+33094 cpp/sp_angle_paren_empty.cfg cpp/sp_angle_paren.cpp
+33095 cpp/bug_i_322.cfg cpp/bug_i_322.cpp
+33096 cpp/squeeze_ifdef_top.cfg cpp/squeeze_ifdef.cpp
+33097 cpp/pos_enum_comma-tf.cfg cpp/enum_comma.h
+33098 cpp/pos_comma-lf.cfg cpp/enum_comma.h
+33099 cpp/enum_comma-3.cfg cpp/enum_comma.h
+
+33100 cpp/enum_comma-4.cfg cpp/enum_comma.h
+33101 cpp/pos_comma-tb.cfg cpp/enum_comma.h
+33102 cpp/enum_comma-6.cfg cpp/enum_comma.h
+33103 cpp/bug_858-f.cfg cpp/bug_858.cpp
+33104 cpp/bug_858-r.cfg cpp/bug_858.cpp
+33105 cpp/bug_1001.cfg cpp/bug_1001.cpp
+33106 common/bool-pos-eol-force.cfg cpp/pos_bool_in_template.h
+33107 cpp/Issue_2688.cfg cpp/Issue_2688.cpp
+33108 cpp/Issue_2045.cfg cpp/Issue_2045.cpp
+33109 common/empty.cfg cpp/Issue_3205.cpp
+
+33110 cpp/enum.cfg cpp/enum.cpp
+33120 cpp/Issue_2149.cfg cpp/Issue_2149.cpp
+
+33150 cpp/indent_columns-4.cfg cpp/bug_i_753.cpp
+33151 cpp/bug_i_752.cfg cpp/bug_i_752.cpp
+33152 cpp/bug_1004.cfg cpp/bug_1004.cpp
+
+33160 common/sp_before_byref-r.cfg cpp/bug_1112.cpp
+33161 common/sp_before_byref-r.cfg cpp/byref-3.cpp
+33162 cpp/sp_not_not.cfg cpp/sp_not_not.cpp
+
+33180 cpp/pp_multi_comment.cfg cpp/pp_multi_comment.cpp
+33181 cpp/Issue_2759.cfg cpp/Issue_2759.cpp
+33182 cpp/Issue_2794.cfg cpp/Issue_2794.cpp
+
+33200 cpp/cmt_multi_first_len_minimum-1.cfg cpp/first_len_minimum.cpp
+
+33201 cpp/indent_ctor_members_twice.cfg cpp/indent_ctor_members_twice.cpp
+33202 cpp/initlist_leading_commas.cfg cpp/initlist_leading_commas.cpp
+33203 cpp/Issue_2574.cfg cpp/Issue_2574.cpp
+33204 cpp/Issue_2582.cfg cpp/Issue_2582.cpp
+33205 cpp/Issue_3198.cfg cpp/Issue_3198.cpp
+
+33210 cpp/disable_nl_cont.cfg cpp/templates4.cpp
+33211 cpp/disable_nl_cont.cfg cpp/pp_multi_comment.cpp
+33212 cpp/disable_nl_cont.cfg cpp/pp-define-indent.cpp
+33213 cpp/disable_nl_cont.cfg cpp/disable_macro.cpp
+33214 cpp/Issue_2742.cfg cpp/Issue_2742.cpp
+33215 cpp/Issue_3055.cfg cpp/Issue_3055.cpp
+33216 cpp/Issue_3055.cfg cpp/Issue_3055-a.cpp
+33217 common/empty.cfg cpp/Issue_3113.cpp
+
+34001 common/nl_before_after.cfg cpp/nl_before_after.h
+34002 common/indent_columns-3.cfg cpp/bug_i_793.cpp
+34003 cpp/nl_max_blank_in_func-1.cfg cpp/nl_max_blank_in_func.cpp
+34004 cpp/nl_max_blank_in_func-4.cfg cpp/nl_max_blank_in_func.cpp
+34005 common/empty.cfg cpp/nl_max_blank_in_func.cpp
+34006 common/empty.cfg cpp/bug_i_575.cpp
+34007 cpp/indent_with_tabs-0.cfg cpp/bug_i_928.cpp
+
+34100 common/empty.cfg cpp/bug_i_525.cpp
+34101 common/empty.cfg cpp/bug_i_646.cpp
+34105 cpp/bug_i_663.cfg cpp/bug_i_663.cpp
+34108 cpp/bug_i_666.cfg cpp/bug_i_666.cpp
+
+34112 cpp/sp_after_cast-r.cfg cpp/bug_i_889.cpp
+34113 cpp/nl_before_func_body_def-1.cfg cpp/bug_902.cpp
+34114 cpp/nl_before_func_body_def-2.cfg cpp/bug_902.cpp
+34115 cpp/nl_before_func_body_def-2.cfg cpp/nl_before_func_body_def.cpp
+34116 cpp/nl_before_func_body_def-2.cfg cpp/issue_2000.cpp
+34117 cpp/extern_func.cfg cpp/extern_func.cpp
+34118 cpp/Issue_2163.cfg cpp/Issue_2163.cpp
+
+34120 cpp/align_assign_span-1.cfg cpp/bug_i_999.cpp
+34121 cpp/bug_1717.cfg cpp/bug_1717.cpp
+34122 cpp/Issue_2440.cfg cpp/Issue_2440.cpp
+34123 cpp/Issue_2440_nl.cfg cpp/Issue_2440_nl.cpp
+
+34130 cpp/nl_brace_fparen-f.cfg cpp/bug_i_1000.cpp
+34131 cpp/nl_brace_fparen-r.cfg cpp/bug_i_1000.cpp
+34132 cpp/new_op_a.cfg cpp/new_op.cpp
+34133 cpp/new_op_f.cfg cpp/new_op.cpp
+34134 cpp/new_op_r.cfg cpp/new_op.cpp
+34135 cpp/new_op_paren_open_close.cfg cpp/new_op.cpp
+34136 cpp/sp_balance_nested_parens.cfg cpp/sp_balance_nested_parens.cpp
+
+34140 common/empty.cfg cpp/bug_1027.cpp
+34141 common/empty.cfg cpp/bug_1005.cpp
+34142 common/sp_before_byref-r.cfg cpp/I1112-1.cpp
+34143 cpp/I1112-2.cfg cpp/I1112-2.cpp
+34144 cpp/sp_before_ptr_star-r.cfg cpp/I1112-3.cpp
+34145 cpp/i683.cfg cpp/i683.cpp
+# need to be solved,
+# https://github.com/uncrustify/uncrustify/issues/3924
+34146 cpp/sp_bool-f.cfg cpp/bug_1002.cpp
+34147 cpp/sp_bool-r.cfg cpp/bug_1002.cpp
+34148 cpp/nl_before_if_closing_paren-f.cfg cpp/bug_1139.cpp
+34149 cpp/nl_before_if_closing_paren-r.cfg cpp/bug_1139.cpp
+
+34150 common/empty.cfg cpp/bug_1032.cpp
+34151 cpp/indent_else_if-t.cfg cpp/bug_666.cpp
+34152 common/empty.cfg cpp/bug_1068.cpp
+34153 cpp/nl_type_brace_init_lst-f.cfg cpp/type_brace_init_lst.cpp
+34154 cpp/nl_type_brace_init_lst-r.cfg cpp/type_brace_init_lst.cpp
+34155 cpp/nl_type_brace_init_lst_open-f.cfg cpp/type_brace_init_lst.cpp
+34156 cpp/nl_type_brace_init_lst_open-r.cfg cpp/type_brace_init_lst.cpp
+34157 cpp/nl_type_brace_init_lst_close-f.cfg cpp/type_brace_init_lst.cpp
+34158 cpp/nl_type_brace_init_lst_close-r.cfg cpp/type_brace_init_lst.cpp
+34159 cpp/sp_type_brace_init_lst-f.cfg cpp/type_brace_init_lst.cpp
+
+34160 cpp/sp_type_brace_init_lst-r.cfg cpp/type_brace_init_lst.cpp
+34161 cpp/sp_inside_type_brace_init_lst-f.cfg cpp/type_brace_init_lst.cpp
+34162 cpp/sp_inside_type_brace_init_lst-r.cfg cpp/type_brace_init_lst.cpp
+34163 cpp/sp_after_type_brace_init_lst_open-f.cfg cpp/type_brace_init_lst.cpp
+34164 cpp/sp_after_type_brace_init_lst_open-r.cfg cpp/type_brace_init_lst.cpp
+34165 cpp/sp_before_type_brace_init_lst_close-f.cfg cpp/type_brace_init_lst.cpp
+34166 cpp/sp_before_type_brace_init_lst_close-r.cfg cpp/type_brace_init_lst.cpp
+34168 cpp/nl_type_brace_init_lst-r.cfg cpp/Issue_2910.cpp
+34169 cpp/sp_inside_fparens-f.cfg cpp/init-list-call.cpp
+
+34170 common/empty.cfg cpp/i1082.cpp
+34171 common/empty.cfg cpp/i1181.cpp
+34172 common/space_indent_columns-4.cfg cpp/i1165.cpp
+34173 cpp/arith-vs-ptr.cfg cpp/i1464.cpp
+34174 cpp/arith-vs-ptr.cfg cpp/i1466.cpp
+34175 cpp/align_assign_span-1.cfg cpp/i1509.cpp
+34176 cpp/align_assign_span-1.cfg cpp/i1509_bug_1112_correction.cpp
+34177 cpp/sp_func_call_paren.cfg cpp/sp_func_call_paren.cpp
+34178 cpp/Issue_3237.cfg cpp/Issue_3237.cpp
+34179 cpp/arith-vs-byref.cfg cpp/arith_vs_byref.cpp
+
+34180 cpp/bug_1402.cfg cpp/bug_1402.cpp
+
+34190 cpp/bug_1003.cfg cpp/bug_1003.cpp
+34191 common/empty.cfg cpp/comment-align-multiline.cpp
+34192 cpp/mod_remove_extra_semicolon-t.cfg cpp/i1207.cpp
+34193 common/empty.cfg cpp/i1218.cpp
+34194 cpp/sp_arith_additive-f.cfg cpp/sp_arith_additive.cpp
+34195 cpp/sp_arith_additive-r.cfg cpp/sp_arith_additive.cpp
+34196 cpp/Issue_1460.cfg cpp/Issue_1460.h
+34197 cpp/bug_1161.cfg cpp/bug_1161.cpp
+34198 cpp/sp_dc.cfg cpp/bug_1249.cpp
+34199 common/empty.cfg cpp/not_lambda.cpp
+
+34200 cpp/i1536.cfg cpp/i1536.cpp
+34201 cpp/mod_add_long_namespace_closebrace_comment-1.cfg cpp/i1565.cpp
+34202 cpp/mod_add_long_namespace_closebrace_comment-1.cfg cpp/i1617.cpp
+34203 cpp/i1516.cfg cpp/i1516.cpp
+34204 cpp/align_func_params_span-1.cfg cpp/func_param_indent_leading_comma.cpp
+34205 cpp/bug_1395.cfg cpp/bug_1395.cpp
+34206 cpp/indent_semicolon_for_paren-t.cfg cpp/for_loop_head.cpp
+34207 cpp/indent_first_for_expr-t.cfg cpp/for_loop_head.cpp
+34208 cpp/nl_func_type_name-r.cfg cpp/conversion_operator.cpp
+34209 cpp/nl-brAfter-fcallParen.cfg cpp/lambda_selfcalling.cpp
+
+# TODO: Find relevant test cases for 'override'.
+34210 common/empty.cfg cpp/override_virtual.cpp
+34211 cpp/anonymous_enum.cfg cpp/anonymous_enum.cpp
+34212 cpp/mod_add_long_class_closebrace_comment.cfg cpp/func_class.h
+
+34250 common/empty.cfg cpp/bug_1607.cpp
+34251 cpp/bug_1649.cfg cpp/bug_1649.cpp
+34252 cpp/nl_after_func_proto_group-3.cfg cpp/issue_2001.cpp
+34253 cpp/nl_after_func_proto_group-3.cfg cpp/friends.cpp
+34254 cpp/issue_1985.cfg cpp/issue_1985.cpp
+34255 cpp/eat_blanks_after_codewidth.cfg cpp/eat_blanks_after_codewidth.cpp
+34256 cpp/Issue_2836.cfg cpp/Issue_2836.cpp
+34257 cpp/code_width-70.cfg cpp/brace_init_stdint_macros.cpp
+34258 common/tde.cfg cpp/long_lines.cpp
+
+34280 cpp/UNI-29935.cfg cpp/UNI-29935.cpp
+
+34290 cpp/sp_type_brace_init_lst-f.cfg cpp/brace_brace_init_lst.cpp
+34291 cpp/sp_type_brace_init_lst-r.cfg cpp/brace_brace_init_lst.cpp
+34292 cpp/sp_inside_type_brace_init_lst-f.cfg cpp/brace_brace_init_lst.cpp
+34293 cpp/sp_inside_type_brace_init_lst-r.cfg cpp/brace_brace_init_lst.cpp
+34294 cpp/sp_after_type_brace_init_lst_open-f.cfg cpp/brace_brace_init_lst.cpp
+34295 cpp/sp_after_type_brace_init_lst_open-r.cfg cpp/brace_brace_init_lst.cpp
+34296 cpp/i1768.cfg cpp/i1768.cpp
+34297 cpp/align_assign_decl_func-0.cfg cpp/align-assign-mixed.cpp
+34298 cpp/align_assign_decl_func-1.cfg cpp/align-assign-mixed.cpp
+34299 cpp/align_assign_decl_func-2.cfg cpp/align-assign-mixed.cpp
+
+# __asm__
+34300 cpp/bug_1236.cfg cpp/bug_1236.cpp
+34301 cpp/nl_fdef_brace_cond-f.cfg cpp/nl_fdef_brace_cond-f.cpp
+34302 cpp/nl_fdef_brace_cond-r.cfg cpp/nl_fdef_brace_cond-r.cpp
+34303 cpp/nl_fdef_brace_cond-fr.cfg cpp/nl_fdef_brace_cond-fr.cpp
+34304 cpp/nl_fdef_brace_cond-rf.cfg cpp/nl_fdef_brace_cond-rf.cpp
+34305 cpp/issue_2124-1.cfg cpp/issue_2124-1.cpp
+34306 cpp/issue_2124-2.cfg cpp/issue_2124-2.cpp
+34307 cpp/2203.cfg cpp/2203.cpp
+34308 cpp/enum_comment_wrap.cfg cpp/enum_comment_wrap.cpp
+34309 cpp/issue_2209.cfg cpp/issue_2209-1.cpp
+
+34310 cpp/issue_2209.cfg cpp/issue_2209-2.cpp
+34311 cpp/Issue_2250.cfg cpp/Issue_2250.cpp
+34312 cpp/Issue_2101.cfg cpp/Issue_2101.cpp
+34313 cpp/Issue_2437.cfg cpp/Issue_2437.cpp
+34314 cpp/Issue_2604.cfg cpp/Issue_2604.cpp
+34315 cpp/align_func_proto_thresh_1.cfg cpp/align_func_proto_thresh.cpp
+34316 cpp/align_func_proto_thresh_2.cfg cpp/align_func_proto_thresh.cpp
+34317 cpp/align_func_proto_thresh_3.cfg cpp/align_func_proto_thresh.cpp
+34318 cpp/align_assign_func_proto_1.cfg cpp/align_assign_func_proto.cpp
+34319 cpp/align_func_proto_thresh_4.cfg cpp/align_func_proto_thresh2.cpp
+
+34320 cpp/align_func_proto_thresh_5.cfg cpp/align_func_proto_thresh2.cpp
+34321 cpp/bug_2285.cfg cpp/bug_2285.cpp
+34322 cpp/issue_2623_1.cfg cpp/issue_2623.cpp
+34323 cpp/issue_2623_2.cfg cpp/issue_2623.cpp
+34324 cpp/issue_2623_3.cfg cpp/issue_2623.cpp
+34325 cpp/Issue_3025.cfg cpp/Issue_3025.cpp
+34326 cpp/Issue_3040.cfg cpp/Issue_3040.cpp
+34327 cpp/Issue_3044.cfg cpp/Issue_3044.cpp
+34328 cpp/Issue_3048.cfg cpp/Issue_3048.cpp
+
+34330 cpp/Issue_3061_0nl.cfg cpp/Issue_3061_0nl.cpp
+34331 cpp/Issue_3061_0nl.cfg cpp/Issue_3061_1nl.cpp
+34332 cpp/Issue_3061_0nl.cfg cpp/Issue_3061_2nl.cpp
+34333 cpp/Issue_3061_1nl.cfg cpp/Issue_3061_0nl.cpp
+34334 cpp/Issue_3061_1nl.cfg cpp/Issue_3061_1nl.cpp
+34335 cpp/Issue_3061_1nl.cfg cpp/Issue_3061_2nl.cpp
+34336 cpp/Issue_3061_2nl.cfg cpp/Issue_3061_0nl.cpp
+34337 cpp/Issue_3061_2nl.cfg cpp/Issue_3061_1nl.cpp
+34338 cpp/Issue_3061_2nl.cfg cpp/Issue_3061_2nl.cpp
+34339 cpp/Issue_3061_3nl.cfg cpp/Issue_3061_0nl.cpp
+34340 cpp/Issue_3061_3nl.cfg cpp/Issue_3061_1nl.cpp
+34341 cpp/Issue_3061_3nl.cfg cpp/Issue_3061_2nl.cpp
+
+34350 cpp/indent_comma_brace.cfg cpp/indent_comma_brace_glob.cpp
+34351 cpp/indent_comma_brace.cfg cpp/indent_comma_brace_func.cpp
+30353 common/indent_ternary_operator-1.cfg cpp/indent_ternary-1.cpp
+
+34360 cpp/nl_before_struct.cfg cpp/nl_before_struct_struct.cpp
+34361 cpp/nl_before_struct.cfg cpp/nl_before_struct_scoped_enum.cpp
+
+34370 cpp/asm_block_pp.cfg cpp/asm_block_pp.cpp
+
+# test the options sp_ with the value "ignore"
+34500 cpp/sp_before_case_colon.cfg cpp/sp_before_case_colon.cpp
+34501 cpp/sp_endif_cmt.cfg cpp/sp_endif_cmt.cpp
+34502 cpp/sp_enum_assign-f.cfg cpp/sp_enum_assign.cpp
+34503 cpp/sp_enum_assign-i.cfg cpp/sp_enum_assign.cpp
+34504 cpp/issue_574-i-i.cfg cpp/issue_574-i.cpp
+34505 cpp/Issue_3220-f.cfg cpp/Issue_3220.cpp
+34506 cpp/Issue_3220-i.cfg cpp/Issue_3220.cpp
+34507 cpp/Issue_3220-r.cfg cpp/Issue_3220.cpp
+34508 cpp/Issue_3220-ir.cfg cpp/Issue_3220.cpp
+34509 cpp/byref-ir.cfg cpp/byref-2.cpp
+
+34510 cpp/byref-i.cfg cpp/byref-2.cpp
+34511 cpp/byref-f.cfg cpp/byref-2.cpp
+34512 cpp/byref-r.cfg cpp/byref-2.cpp
+34513 cpp/sp_cond_question-ir.cfg cpp/sp_cond_question.cpp
+34514 cpp/sp_cond_question-i.cfg cpp/sp_cond_question.cpp
+34515 cpp/sp_cond_question-f.cfg cpp/sp_cond_question.cpp
+34516 cpp/sp_cond_question-r.cfg cpp/sp_cond_question.cpp
+34517 cpp/semi-f.cfg cpp/semi.cpp
+34518 cpp/semi-i.cfg cpp/semi.cpp
+34519 cpp/semi-r.cfg cpp/semi.cpp
+
+34520 cpp/comma-f.cfg cpp/comma.cpp
+34521 cpp/comma-i.cfg cpp/comma.cpp
+34522 cpp/comma-r.cfg cpp/comma.cpp
+34523 cpp/ellipsis-i.cfg cpp/gcc_case_ellipsis.cpp
+34524 cpp/sp_bool-i.cfg cpp/bug_1002.cpp
+34525 cpp/sp_paren_brace-f.cfg cpp/sp_paren_brace.cpp
+34526 cpp/sp_paren_brace-i.cfg cpp/sp_paren_brace.cpp
+34527 cpp/sp_paren_brace-r.cfg cpp/sp_paren_brace.cpp
+34528 cpp/cmt_trailing_single_line_c_to_cpp.cfg cpp/cmt_trailing_single_line_c_to_cpp.cpp
+34529 cpp/sp_inside_type_brace_init_lst-iif.cfg cpp/type_brace_init_lst.cpp
+
+34530 cpp/sp_inside_type_brace_init_lst-irf.cfg cpp/type_brace_init_lst.cpp
+34531 cpp/sp_inside_type_brace_init_lst-rf.cfg cpp/type_brace_init_lst.cpp
+34532 cpp/sp_inside_type_brace_init_lst-iii.cfg cpp/type_brace_init_lst.cpp
+34533 cpp/templates-i.cfg cpp/templates.cpp
+34534 cpp/templates-r.cfg cpp/templates.cpp
+34535 cpp/template_sp-ignore.cfg cpp/sp_after_angle.cpp
+34536 cpp/template_sp-remove.cfg cpp/sp_after_angle.cpp
+
+34540 cpp/sp_byref_paren-i.cfg cpp/byref-4.cpp
+34541 cpp/sp_byref_paren-a.cfg cpp/byref-4.cpp
+34542 cpp/sp_byref_paren-r.cfg cpp/byref-4.cpp
+34543 cpp/sp_byref_paren-f.cfg cpp/byref-4.cpp
+
+34550 cpp/nl_throw_expr-i.cfg cpp/throws.cpp
+34551 cpp/nl_throw_expr-a.cfg cpp/throws.cpp
+34552 cpp/nl_throw_expr-r.cfg cpp/throws.cpp
+34553 cpp/nl_throw_expr-f.cfg cpp/throws.cpp
+34554 cpp/mod_paren_on_throw-i.cfg cpp/throws.cpp
+34555 cpp/mod_paren_on_throw-a.cfg cpp/throws.cpp
+34556 cpp/mod_paren_on_throw-r.cfg cpp/throws.cpp
+34557 cpp/mod_paren_on_throw-f.cfg cpp/throws.cpp
+
+# Adopt some UT tests
+10000 common/empty.cfg cpp/621_this-spacing.cpp
+10001 common/empty.cfg cpp/622_ifdef-indentation.cpp
+10002 cpp/623_caret-spacing.cfg cpp/623_caret-spacing.cpp
+10003 cpp/633_decl-in-func-typedef.cfg cpp/633_decl-in-func-typedef.cpp
+10004 common/empty.cfg cpp/634_extern-c-no-block.cpp
+10005 cpp/Uncrustify.Cpp.cfg cpp/define-indentation.cpp
+10006 cpp/dont-detab-strings.cfg cpp/dont-detab-strings.cpp
+10007 cpp/dont-process-defines.cfg cpp/dont-process-defines.cpp
+10008 common/empty.cfg cpp/PR326_invalid-backslash-eol-csharp.cpp
+10009 cpp/STUCK_macro-difficulties.cfg cpp/STUCK_macro-difficulties.cpp
+
+10020 cpp/U02-Cpp.cfg cpp/macro_spaces.cpp
+10021 cpp/U03-Cpp.cfg cpp/braces_align.cpp
+10022 cpp/U04-Cpp.cfg cpp/foreach.cpp
+10023 cpp/U05-Cpp.cfg cpp/for_auto.cpp
+10024 cpp/U06-Cpp.cfg cpp/ifcomment.cpp
+10025 cpp/U07-Cpp.cfg cpp/qtargs.cpp
+10026 cpp/sp_before_ellipsis-r.cfg cpp/gcc_case_ellipsis.cpp
+10027 cpp/Issue_3058.cfg cpp/Issue_3058.cpp
+10028 cpp/sp_before_ellipsis-f.cfg cpp/gcc_case_ellipsis.cpp
+10029 cpp/sp_after_ellipsis-f.cfg cpp/gcc_case_ellipsis.cpp
+
+10047 cpp/U16-Cpp.cfg cpp/UNI-1334.cpp
+10048 common/empty.cfg cpp/UNI-1335.cpp
+
+10050 cpp/U18-Cpp.cfg cpp/UNI-1337.cpp
+10052 common/empty.cfg cpp/UNI-1339.cpp
+10053 cpp/UNI-1340.cfg cpp/UNI-1340.cpp
+10054 cpp/UNI-1344.cfg cpp/UNI-1344.cpp
+10056 cpp/UNI-1346.cfg cpp/UNI-1346.cpp
+10057 cpp/UNI-1347.cfg cpp/UNI-1347.cpp
+
+10060 cpp/UNI-1350.cfg cpp/UNI-1350.cpp
+10062 cpp/UNI-1356.cfg cpp/UNI-1356.cpp
+10063 cpp/UNI-1358.cfg cpp/UNI-1358.cpp
+10069 common/empty.cfg cpp/UNI-1980.cpp
+
+10070 cpp/U21-Cpp.cfg cpp/UNI-1981.cpp
+10071 common/empty.cfg cpp/UNI-1983.cpp
+10079 cpp/U23-Cpp.cfg cpp/UNI-9650.cpp
+
+10080 cpp/UNI-10496.cfg cpp/UNI-10496.cpp
+
+10100 cpp/issue_564.cfg cpp/issue_564.cpp
+10101 cpp/issue_574.cfg cpp/issue_574.cpp
+10102 cpp/issue_574-i-a.cfg cpp/issue_574.cpp
+10103 cpp/issue_574-i-b.cfg cpp/issue_574.cpp
+
+10566 common/empty.cfg cpp/issue_1752.cpp
+
+11000 cpp/UNI-12046.cfg cpp/UNI-12046.cpp
+
+20002 cpp/UNI-32657.cfg cpp/UNI-32657.cpp
+
+20011 common/empty.cfg cpp/UNI-38381.cpp
+
+60001 cpp/UNI-2650.cfg cpp/UNI-2650.cpp
+60002 cpp/U25-Cpp.cfg cpp/UNI-16283.cpp
+60003 cpp/U26-Cpp.cfg cpp/UNI-1288.cpp
+60006 cpp/UNI-2049.cfg cpp/UNI-2049.cpp
+60017 cpp/U27-Cpp.cfg cpp/UNI-2683.cpp
+
+60022 cpp/U28-Cpp.cfg cpp/UNI-18439.cpp
+60025 cpp/U29-Cpp.cfg cpp/UNI-19894.cpp
+60027 cpp/U30-Cpp.cfg cpp/UNI-21506.cpp
+60028 cpp/U31-Cpp.cfg cpp/UNI-21509.cpp
+60029 common/empty.cfg cpp/UNI-21510.cpp
+
+60030 cpp/U33-Cpp.cfg cpp/UNI-21727.cpp
+60031 common/empty.cfg cpp/UNI-21728.cpp
+60032 common/empty.cfg cpp/UNI-21729.cpp
+60036 cpp/UNI-2680.cfg cpp/UNI-2680.cpp
+60038 cpp/UNI-30088.cfg cpp/UNI-30088.cpp
+60039 cpp/U36-Cpp.cfg cpp/UNI-30628.cpp
+
+60042 common/UNI-18777.cfg cpp/UNI-18777.cpp
+60043 cpp/nl_remove_extra_newlines-1.cfg cpp/i2033.cpp
+60044 cpp/nl_fdef_brace-r__nl_collapse_empty_body-t.cfg cpp/i2116.cpp
+60045 cpp/align_asterisk_after_type_cast.cfg cpp/align_asterisk_after_type_cast.cpp
+60046 cpp/align_continuation_left_shift.cfg cpp/align_continuation_left_shift.cpp
+60047 cpp/align_default_after_override.cfg cpp/align_default_after_override.cpp
+60048 cpp/bug_2322.cfg cpp/bug_2322.cpp
+60049 cpp/bug_2402.cfg cpp/bug_2402.cpp
+
+60051 cpp/bug_2371.cfg cpp/bug_2371.cpp
+60052 cpp/bug_2433_1.cfg cpp/bug_2433_1.cpp
+60053 cpp/bug_2433_2.cfg cpp/bug_2433_2.cpp
+60054 cpp/interface-keyword-in-cpp.cfg cpp/interface-keyword-in-cpp.cpp
+60055 cpp/issue_3116.cfg cpp/issue_3116.cpp
+60056 cpp/issue_3116.cfg cpp/issue_3116-2.cpp
+60057 cpp/issue_3116-2.cfg cpp/issue_3116.cpp
+60058 cpp/sp_constr_colon-i.cfg cpp/issue_3330.cpp
+60059 cpp/indent_ctor_init_leading.cfg cpp/indent_ctor_init.cpp
+
+60060 cpp/sp_return-a.cfg cpp/returns.cpp
+60061 cpp/sp_return-f.cfg cpp/returns.cpp
+60062 cpp/sp_return-i.cfg cpp/returns.cpp
+60063 cpp/sp_return-r.cfg cpp/returns.cpp
+60064 cpp/sp_constr_colon-i.cfg cpp/issue_3368.cpp
+60065 cpp/issue_3378.cfg cpp/issue_3378.cpp
+60066 cpp/Issue_3409.cfg cpp/Issue_3409.cpp
+60067 common/empty.cfg cpp/Issue_3283.cpp
+60068 cpp/Issue_3428.cfg cpp/Issue_3428.cpp
+60069 cpp/Issue_3428_2.cfg cpp/Issue_3428.cpp
+
+60070 cpp/Issue_3428_3.cfg cpp/Issue_3428.cpp
+60071 cpp/Issue_3428_4.cfg cpp/Issue_3428.cpp
+60072 cpp/Issue_3428_5.cfg cpp/Issue_3428.cpp
+60073 cpp/Issue_3428_6.cfg cpp/Issue_3428.cpp
+60074 cpp/Issue_3284.cfg cpp/Issue_3284.cpp
+60075 cpp/Issue_3294.cfg cpp/Issue_3294.cpp
+60076 cpp/indent_ignore_before_class_colon-t.cfg cpp/indent_ctor_init.cpp
+60077 cpp/indent_ignore_before_constr_colon-t.cfg cpp/indent_ctor_init.cpp
+60078 cpp/indent_func_proto_param-t.cfg cpp/Issue_3505.cpp
+60079 common/empty.cfg cpp/Issue_3536.cpp
+
+60080 common/empty.cfg cpp/Issue_3538.cpp
+60081 cpp/Issue_3546.cfg cpp/Issue_3546.cpp
+60082 cpp/Issue_3552.cfg cpp/Issue_3552.cpp
+60083 cpp/Issue_3570.cfg cpp/Issue_3570.h
+60084 cpp/Issue_3576-a.cfg cpp/Issue_3576.h
+60085 cpp/Issue_3576-b.cfg cpp/Issue_3576.h
+60086 cpp/indent_namespace_inner_only.cfg cpp/indent_namespace_inner_only.h
+60087 cpp/Issue_3550.cfg cpp/Issue_3550.cpp
+60088 common/empty.cfg cpp/Issue_3761.cpp
+60089 cpp/Issue_3863.cfg cpp/Issue_3863.cpp
+60090 cpp/Issue_3863.cfg cpp/Issue_3863_2.cpp
+60091 cpp/Issue_3863.cfg cpp/Issue_3863_3.cpp
+60092 cpp/Issue_3865.cfg cpp/Issue_3865.cpp
+60093 cpp/Issue_3865_2.cfg cpp/Issue_3865.cpp
+
+60100 cpp/sp_qualifier_unnamed_ptr_star-i.cfg cpp/sp_qualifier_ptr_star.cpp
+60101 cpp/sp_qualifier_unnamed_ptr_star-a.cfg cpp/sp_qualifier_ptr_star.cpp
+60102 cpp/sp_qualifier_unnamed_ptr_star-r.cfg cpp/sp_qualifier_ptr_star.cpp
+60103 cpp/sp_qualifier_unnamed_ptr_star-f.cfg cpp/sp_qualifier_ptr_star.cpp
+60104 cpp/sp_qualifier_ptr_star_func-i.cfg cpp/sp_qualifier_ptr_star.cpp
+60105 cpp/sp_qualifier_ptr_star_func-a.cfg cpp/sp_qualifier_ptr_star.cpp
+60106 cpp/sp_qualifier_ptr_star_func-r.cfg cpp/sp_qualifier_ptr_star.cpp
+60107 cpp/sp_qualifier_ptr_star_func-f.cfg cpp/sp_qualifier_ptr_star.cpp
+60108 cpp/sp_qualifier_ptr_star_trailing-i.cfg cpp/sp_qualifier_ptr_star.cpp
+60109 cpp/sp_qualifier_ptr_star_trailing-a.cfg cpp/sp_qualifier_ptr_star.cpp
+60110 cpp/sp_qualifier_ptr_star_trailing-r.cfg cpp/sp_qualifier_ptr_star.cpp
+60111 cpp/sp_qualifier_ptr_star_trailing-f.cfg cpp/sp_qualifier_ptr_star.cpp
+60112 cpp/sp_before_qualifier_ptr_star-i.cfg cpp/sp_before_not_var_ptr_star.cpp
+60113 cpp/sp_before_qualifier_ptr_star-a.cfg cpp/sp_before_not_var_ptr_star.cpp
+60114 cpp/sp_before_qualifier_ptr_star-r.cfg cpp/sp_before_not_var_ptr_star.cpp
+60115 cpp/sp_before_qualifier_ptr_star-f.cfg cpp/sp_before_not_var_ptr_star.cpp
+60116 cpp/sp_before_operator_ptr_star-i.cfg cpp/sp_before_not_var_ptr_star.cpp
+60117 cpp/sp_before_operator_ptr_star-a.cfg cpp/sp_before_not_var_ptr_star.cpp
+60118 cpp/sp_before_operator_ptr_star-r.cfg cpp/sp_before_not_var_ptr_star.cpp
+60119 cpp/sp_before_operator_ptr_star-f.cfg cpp/sp_before_not_var_ptr_star.cpp
+60120 cpp/sp_before_scope_ptr_star-i.cfg cpp/sp_before_not_var_ptr_star.cpp
+60121 cpp/sp_before_scope_ptr_star-a.cfg cpp/sp_before_not_var_ptr_star.cpp
+60122 cpp/sp_before_scope_ptr_star-r.cfg cpp/sp_before_not_var_ptr_star.cpp
+60123 cpp/sp_before_scope_ptr_star-f.cfg cpp/sp_before_not_var_ptr_star.cpp
+60124 cpp/sp_before_global_scope_ptr_star-i.cfg cpp/sp_before_not_var_ptr_star.cpp
+60125 cpp/sp_before_global_scope_ptr_star-a.cfg cpp/sp_before_not_var_ptr_star.cpp
+60126 cpp/sp_before_global_scope_ptr_star-r.cfg cpp/sp_before_not_var_ptr_star.cpp
+60127 cpp/sp_before_global_scope_ptr_star-f.cfg cpp/sp_before_not_var_ptr_star.cpp
+
+60160 cpp/nl_min_after_func_body.cfg cpp/nl_func.cpp
+60161 cpp/nl_min_after_func_body.cfg cpp/nl_func-2.cpp
+60162 cpp/nl_max_after_func_body.cfg cpp/nl_func.cpp
+60163 cpp/nl_max_after_func_body.cfg cpp/nl_func-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/d.test b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/d.test
index 520a8c3a..520a8c3a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/d.test
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/d.test
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/difftest.sh b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/difftest.sh
index 053cae17..053cae17 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/difftest.sh
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/difftest.sh
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/ecma.test b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/ecma.test
index 632f3015..632f3015 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/ecma.test
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/ecma.test
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/examine_p_files.sh b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/examine_p_files.sh
index 327f755b..327f755b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/examine_p_files.sh
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/examine_p_files.sh
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00000-comment-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00000-comment-indent.c
index b59ab389..b59ab389 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00000-comment-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00000-comment-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00001-comment-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00001-comment-indent.c
index e4ba53de..e4ba53de 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00001-comment-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00001-comment-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00002-comment-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00002-comment-indent.c
index 09ca01ac..09ca01ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00002-comment-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00002-comment-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00003-comment-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00003-comment-indent.c
index 0f906f2f..0f906f2f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00003-comment-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00003-comment-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00004-switch.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00004-switch.c
index ffb54327..ffb54327 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00004-switch.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00004-switch.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00005-cmt-align.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00005-cmt-align.c
index 5e773be1..5e773be1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00005-cmt-align.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00005-cmt-align.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00006-comment-convert.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00006-comment-convert.c
index c7a019f7..c7a019f7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00006-comment-convert.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00006-comment-convert.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00007-comment-convert.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00007-comment-convert.c
index 886d7698..886d7698 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00007-comment-convert.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00007-comment-convert.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00008-comment-convert.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00008-comment-convert.c
index c2af0f8b..c2af0f8b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00008-comment-convert.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00008-comment-convert.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00009-comment-convert.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00009-comment-convert.c
index 0d3f218a..0d3f218a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00009-comment-convert.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00009-comment-convert.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00010-braces.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00010-braces.c
index c4dc5faf..c4dc5faf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00010-braces.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00010-braces.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00011-braces.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00011-braces.c
index 893a32f6..893a32f6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00011-braces.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00011-braces.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00012-braces.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00012-braces.c
index 851f4df9..851f4df9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00012-braces.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00012-braces.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00013-braces.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00013-braces.c
index 2adcab76..2adcab76 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00013-braces.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00013-braces.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00014-braces.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00014-braces.c
index 1966a0c7..1966a0c7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00014-braces.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00014-braces.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00015-braces.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00015-braces.c
index c29cdecd..c29cdecd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00015-braces.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00015-braces.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00016-braces.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00016-braces.c
index ce7df756..ce7df756 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00016-braces.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00016-braces.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00020-define-if-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00020-define-if-indent.c
index f7efd78c..f7efd78c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00020-define-if-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00020-define-if-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00050-brace-remove.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00050-brace-remove.c
index 857e4031..857e4031 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00050-brace-remove.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00050-brace-remove.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00051-brace-remove.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00051-brace-remove.c
index bef3e64d..bef3e64d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00051-brace-remove.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00051-brace-remove.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00052-brace-remove2.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00052-brace-remove2.c
index 30f352c6..30f352c6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00052-brace-remove2.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00052-brace-remove2.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00053-brace.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00053-brace.c
index 55c45a57..55c45a57 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00053-brace.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00053-brace.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00054-if_chain.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00054-if_chain.c
index a6e0c561..a6e0c561 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00054-if_chain.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00054-if_chain.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00055-braces-2.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00055-braces-2.c
index 38447f86..38447f86 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00055-braces-2.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00055-braces-2.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00056-brace-remove3.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00056-brace-remove3.c
index 258ca555..258ca555 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00056-brace-remove3.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00056-brace-remove3.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00057-brace-remove3.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00057-brace-remove3.c
index 26b22e2c..26b22e2c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00057-brace-remove3.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00057-brace-remove3.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00058-if_chain.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00058-if_chain.c
index ba15dc8e..ba15dc8e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00058-if_chain.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00058-if_chain.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00059-Issue_2205.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00059-Issue_2205.c
new file mode 100644
index 00000000..632e8a28
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00059-Issue_2205.c
@@ -0,0 +1,6 @@
+// 2205
+#define MLX_RATE(ee_val) (ee_val & MLX_MASK)
+
+// 3559
+#define my_2_thing(stuff) & object3, & object4
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00060-braces-2.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00060-braces-2.c
index 38447f86..38447f86 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00060-braces-2.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00060-braces-2.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00061-braces-3.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00061-braces-3.c
index 18784b82..18784b82 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00061-braces-3.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00061-braces-3.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00062-braces-4.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00062-braces-4.c
index 05c0d9b5..05c0d9b5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00062-braces-4.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00062-braces-4.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00065-braces-5.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00065-braces-5.c
index 6e1e6cab..6e1e6cab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00065-braces-5.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00065-braces-5.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00066-vb-while.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00066-vb-while.c
index c189b7b7..c189b7b7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00066-vb-while.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00066-vb-while.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00067-vb-do.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00067-vb-do.c
index 79c6dedf..79c6dedf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00067-vb-do.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00067-vb-do.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00068-bsnl.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00068-bsnl.c
index 310e0eb2..310e0eb2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00068-bsnl.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00068-bsnl.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00069-vb-pp.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00069-vb-pp.c
index 9fb79a06..9fb79a06 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00069-vb-pp.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00069-vb-pp.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00070-return-multi.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00070-return-multi.c
index d351cdb0..d351cdb0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00070-return-multi.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00070-return-multi.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00071-include_define.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00071-include_define.h
index 89f11e5a..89f11e5a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00071-include_define.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00071-include_define.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00072-align-proto.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00072-align-proto.c
index 15746cd9..15746cd9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00072-align-proto.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00072-align-proto.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00073-nl_proto_endif.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00073-nl_proto_endif.c
index f50766b8..f50766b8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00073-nl_proto_endif.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00073-nl_proto_endif.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00074-clang-has_include.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00074-clang-has_include.h
index 976de29d..976de29d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00074-clang-has_include.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00074-clang-has_include.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00075-function_prototypes_alignment.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00075-function_prototypes_alignment.c
new file mode 100644
index 00000000..869015d0
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00075-function_prototypes_alignment.c
@@ -0,0 +1,21 @@
+libr_intstatus set_data1(libr_file *file_handle, libr_section *scn, libr_data *data, off_t offset,
+ char *buffer, size_t size);
+void write_output1(libr_file *file_handle);
+libr_intstatus open_handles1(libr_file *file_handle, char *filename, libr_access_t access);
+
+libr_intstatus set_data2(libr_file *file_handle, libr_section *scn, libr_data *data, off_t offset,
+ char *buffer, size_t size);
+libr_intstatus open_handles2(libr_file *file_handle, char *filename, libr_access_t access);
+void write_output2(libr_file *file_handle);
+
+INTERNAL_FN libr_intstatus set_data1(libr_file *file_handle, libr_section *scn, libr_data *data,
+ off_t offset, char *buffer, size_t size);
+INTERNAL_FN void write_output1(libr_file *file_handle);
+INTERNAL_FN libr_intstatus open_handles1(libr_file *file_handle, char *filename,
+ libr_access_t access);
+
+INTERNAL_FN libr_intstatus set_data2(libr_file *file_handle, libr_section *scn, libr_data *data,
+ off_t offset, char *buffer, size_t size);
+INTERNAL_FN libr_intstatus open_handles2(libr_file *file_handle, char *filename,
+ libr_access_t access);
+INTERNAL_FN void write_output2(libr_file *file_handle);
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00076-1225.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00076-1225.c
index 5b51cf3c..5b51cf3c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00076-1225.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00076-1225.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00081-else-if.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00081-else-if.c
index ff5f5b21..ff5f5b21 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00081-else-if.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00081-else-if.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00082-else-if.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00082-else-if.c
index 06cc37f2..06cc37f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00082-else-if.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00082-else-if.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00083-Issue_3601.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00083-Issue_3601.c
index a2b92fa0..a2b92fa0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00083-Issue_3601.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00083-Issue_3601.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00091-cond.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00091-cond.c
index 840d4a6c..840d4a6c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00091-cond.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00091-cond.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00092-cond.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00092-cond.c
index a718a48b..a718a48b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00092-cond.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00092-cond.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00093-cond.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00093-cond.c
index 8d55652a..8d55652a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00093-cond.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00093-cond.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00094-Issue_3457.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00094-Issue_3457.c
index c6096135..c6096135 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00094-Issue_3457.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00094-Issue_3457.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00101-bugs-1.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00101-bugs-1.c
index abc2e08e..abc2e08e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00101-bugs-1.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00101-bugs-1.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00102-bugs-2.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00102-bugs-2.c
index 42bed259..42bed259 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00102-bugs-2.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00102-bugs-2.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00103-bugs-3.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00103-bugs-3.c
index 07d410b1..07d410b1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00103-bugs-3.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00103-bugs-3.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00104-bugs-4.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00104-bugs-4.c
index 61885443..61885443 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00104-bugs-4.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00104-bugs-4.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00105-bugs-5.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00105-bugs-5.c
index 72bfbe4d..72bfbe4d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00105-bugs-5.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00105-bugs-5.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00106-bugs-6.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00106-bugs-6.c
index 302c2328..302c2328 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00106-bugs-6.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00106-bugs-6.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00107-bugs-7.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00107-bugs-7.c
index 34fc146e..34fc146e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00107-bugs-7.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00107-bugs-7.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00108-bugs-8.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00108-bugs-8.c
index 0eae4dff..0eae4dff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00108-bugs-8.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00108-bugs-8.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00110-misc.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00110-misc.c
index fdca271b..fdca271b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00110-misc.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00110-misc.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00111-misc.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00111-misc.c
index ad40a4ea..ad40a4ea 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00111-misc.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00111-misc.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00120-sp_cmt_cpp_start.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00120-sp_cmt_cpp_start.c
index 74a333c5..74a333c5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00120-sp_cmt_cpp_start.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00120-sp_cmt_cpp_start.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00121-sp_cmt_cpp_start.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00121-sp_cmt_cpp_start.c
index 3160a288..3160a288 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00121-sp_cmt_cpp_start.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00121-sp_cmt_cpp_start.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00122-sp_cmt_cpp_start.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00122-sp_cmt_cpp_start.c
index fe237c5a..fe237c5a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00122-sp_cmt_cpp_start.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00122-sp_cmt_cpp_start.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00123-cmt_reflow.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00123-cmt_reflow.c
index 44e0cf34..44e0cf34 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00123-cmt_reflow.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00123-cmt_reflow.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00130-minus-minus.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00130-minus-minus.c
index debe70a8..debe70a8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00130-minus-minus.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00130-minus-minus.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00131-Issue_3873.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00131-Issue_3873.c
index a0dc10df..a0dc10df 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00131-Issue_3873.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00131-Issue_3873.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00135-br_cmt.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00135-br_cmt.c
index 9e6c6de9..9e6c6de9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00135-br_cmt.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00135-br_cmt.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00136-Issue_4044.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00136-Issue_4044.c
new file mode 100644
index 00000000..88b99686
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00136-Issue_4044.c
@@ -0,0 +1,58 @@
+int main(void) {
+ f(1, and_eq.x);
+ f(1, and.x);
+ f(1, asm.x);
+ f(1, atomic_cancel.x);
+ f(1, atomic_commit.x);
+ f(1, atomic_noexcept.x);
+ f(1, bitand.x);
+ f(1, bitor.x);
+ f(1, catch.x);
+ f(1, char16_t.x);
+ f(1, char32_t.x);
+ f(1, char8_t.x);
+ f(1, class.x);
+ f(1, co_await.x);
+ f(1, compl.x);
+ f(1, concept.x);
+ f(1, const_cast.x);
+ f(1, consteval.x);
+ f(1, constinit.x);
+ f(1, co_return.x);
+ f(1, co_yield.x);
+ f(1, decltype.x);
+ f(1, delete.x);
+ f(1, dynamic_cast.x);
+ f(1, explicit.x);
+ f(1, export.x);
+ f(1, friend.x);
+ f(1, mutable.x);
+ f(1, namespace.x);
+ f(1, new.x);
+ f(1, noexcept.x);
+ f(1, normal.x);
+ f(1, not_eq.x);
+ f(1, not.x);
+ f(1, operator.x);
+ f(1, or_eq.x);
+ f(1, or.x);
+ f(1, private.x);
+ f(1, protected.x);
+ f(1, public.x);
+ f(1, reflexpr.x);
+ f(1, reinterpret_cast.x);
+ f(1, requires.x);
+ f(1, static_cast.x);
+ f(1, synchronized.x);
+ f(1, template.x);
+ f(1, this.x);
+ f(1, throw.x);
+ f(1, try.x);
+ f(1, typeid.x);
+ f(1, typename.x);
+ f(1, using.x);
+ f(1, virtual.x);
+ f(1, wchar_t.x);
+ f(1, xor_eq.x);
+ f(1, xor.x);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00140-global-vars.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00140-global-vars.c
index 0df79336..0df79336 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00140-global-vars.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00140-global-vars.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00141-deref.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00141-deref.c
index a7ad3f5e..a7ad3f5e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00141-deref.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00141-deref.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00142-type-cast.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00142-type-cast.c
index 93076825..93076825 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00142-type-cast.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00142-type-cast.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00143-t3.in.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00143-t3.in.c
index b40fbd17..b40fbd17 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00143-t3.in.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00143-t3.in.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00144-align-proto-vars.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00144-align-proto-vars.c
index c7bf6081..c7bf6081 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00144-align-proto-vars.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00144-align-proto-vars.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00145-vardefcol.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00145-vardefcol.c
index 1238be0d..1238be0d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00145-vardefcol.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00145-vardefcol.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00146-Issue_3516.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00146-Issue_3516.c
index 828d2611..828d2611 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00146-Issue_3516.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00146-Issue_3516.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00147-Issue_3516.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00147-Issue_3516.c
index 63b9a440..63b9a440 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00147-Issue_3516.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00147-Issue_3516.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00148-Issue_3518.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00148-Issue_3518.c
index cf8d0c95..cf8d0c95 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00148-Issue_3518.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00148-Issue_3518.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00150-casts.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00150-casts.c
index d89ad598..d89ad598 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00150-casts.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00150-casts.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00151-casts.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00151-casts.c
index 9f2a13de..9f2a13de 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00151-casts.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00151-casts.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00152-casts.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00152-casts.c
index acc2ebe4..acc2ebe4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00152-casts.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00152-casts.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00153-casts.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00153-casts.c
index 8bf710b6..8bf710b6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00153-casts.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00153-casts.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00154-casts.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00154-casts.c
index fca4010b..fca4010b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00154-casts.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00154-casts.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00155-cast_brace.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00155-cast_brace.c
index 6e8f12b2..6e8f12b2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00155-cast_brace.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00155-cast_brace.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00156-empty-braces.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00156-empty-braces.c
index d7905dfa..d7905dfa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00156-empty-braces.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00156-empty-braces.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00157-empty-braces.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00157-empty-braces.c
index 328af18d..328af18d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00157-empty-braces.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00157-empty-braces.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00158-empty-braces.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00158-empty-braces.c
index 8182538f..8182538f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00158-empty-braces.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00158-empty-braces.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00159-empty-braces.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00159-empty-braces.c
index d49e27d5..d49e27d5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00159-empty-braces.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00159-empty-braces.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00160-fcn_indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00160-fcn_indent.c
index 23c173c2..23c173c2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00160-fcn_indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00160-fcn_indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00161-fcn_indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00161-fcn_indent.c
index 90342554..90342554 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00161-fcn_indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00161-fcn_indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00162-fcn_indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00162-fcn_indent.c
index c8f152d3..c8f152d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00162-fcn_indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00162-fcn_indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00163-fcn_indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00163-fcn_indent.c
index bbf36763..bbf36763 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00163-fcn_indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00163-fcn_indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00164-fcn_indent_func_def_col1.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00164-fcn_indent_func_def_col1.c
index c029669a..c029669a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00164-fcn_indent_func_def_col1.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00164-fcn_indent_func_def_col1.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00165-sp_func_call_user_inside_fparen.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00165-sp_func_call_user_inside_fparen.c
index af30d708..af30d708 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00165-sp_func_call_user_inside_fparen.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00165-sp_func_call_user_inside_fparen.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00170-beautifier-off.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00170-beautifier-off.c
index 351d76ff..351d76ff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00170-beautifier-off.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00170-beautifier-off.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00180-lvalue.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00180-lvalue.c
index a8121da4..a8121da4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00180-lvalue.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00180-lvalue.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00190-Issue_3559.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00190-Issue_3559.c
index a89c9d50..a89c9d50 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00190-Issue_3559.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00190-Issue_3559.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00201-case.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00201-case.c
index 0d004c19..0d004c19 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00201-case.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00201-case.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00202-case.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00202-case.c
index d5175084..d5175084 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00202-case.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00202-case.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00203-case.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00203-case.c
index 548a2a64..548a2a64 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00203-case.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00203-case.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00204-bug_1718.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00204-bug_1718.c
index eaddc974..eaddc974 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00204-bug_1718.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00204-bug_1718.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00205-case-nl_before_return.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00205-case-nl_before_return.c
index b650d7ab..b650d7ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00205-case-nl_before_return.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00205-case-nl_before_return.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00206-case-nl_before_return.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00206-case-nl_before_return.c
index d0b6bbbb..d0b6bbbb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00206-case-nl_before_return.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00206-case-nl_before_return.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00207-nl_before_ignore_after_case.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00207-nl_before_ignore_after_case.c
index 4c361605..4c361605 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00207-nl_before_ignore_after_case.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00207-nl_before_ignore_after_case.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00301-align-struct-init.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00301-align-struct-init.c
index cfa44035..cfa44035 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00301-align-struct-init.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00301-align-struct-init.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00302-one-liner-init.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00302-one-liner-init.c
index 63c86afe..63c86afe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00302-one-liner-init.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00302-one-liner-init.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00303-one-liner-init.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00303-one-liner-init.c
index 503eedfb..503eedfb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00303-one-liner-init.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00303-one-liner-init.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00304-one-liner-init.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00304-one-liner-init.c
index 471aaa2d..471aaa2d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00304-one-liner-init.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00304-one-liner-init.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00305-one-liner-define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00305-one-liner-define.c
index 99f24f5a..99f24f5a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00305-one-liner-define.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00305-one-liner-define.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00310-sp_embed_comment.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00310-sp_embed_comment.c
index 3dc105aa..3dc105aa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00310-sp_embed_comment.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00310-sp_embed_comment.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00311-comment_conversion_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00311-comment_conversion_define.c
new file mode 100644
index 00000000..c52bab4f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00311-comment_conversion_define.c
@@ -0,0 +1,24 @@
+#define HDROFF_TYPE(b) sizeof(ElfPreHeader) /* ElfXX_Half e_type; */
+
+typedef struct _libr_file
+{
+ unsigned int version;
+} libr_file;
+
+#define HDROFF_TYPE(b) sizeof( /* ElfXX_Half e_type; */ \
+ ElfPreHeader /* ElfXX_Half e_type; */ \
+ ) /* Repeat ElfXX_Half e_type; */
+
+// ElfXX_Half e_shstrndx;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS // TEST
+
+// Do something
+void foo()
+{
+ // comment
+ int i = 0;
+}
+
+#endif
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00312-comment_conversion_endif.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00312-comment_conversion_endif.c
new file mode 100644
index 00000000..353946fb
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00312-comment_conversion_endif.c
@@ -0,0 +1,24 @@
+#ifndef DOXYGEN_SHOULD_SKIP_THIS // TEST1
+
+void foo()
+{
+ int i = 0;
+}
+
+#elif defined(sgi) && sgi // TEST2
+
+void bar()
+{
+ int j = 0;
+}
+
+#else // TEST3
+
+void foobar()
+{
+ int j = 0;
+}
+
+#endif // END TEST
+
+void main();
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00313-comment_conversion_long_lines.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00313-comment_conversion_long_lines.c
new file mode 100644
index 00000000..692533a4
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00313-comment_conversion_long_lines.c
@@ -0,0 +1,16 @@
+char *libr_extract_resources(libr_file *handle)
+{
+ // If this library cannot dynamically load resources then pull out all the resources to a
+ // temporary directory
+ if(temp_folder != NULL)
+ temp_folder = strdup(temp_folder);
+
+ // If this library cannot dynamically load resources then pull out all the resources to a
+ // temporary directory
+ if(temp_folder2 != NULL)
+ temp_folder2 = strdup(temp_folder);
+
+ // If this library /*cannot dynamically load resources then pull out all the resources to a
+ // temporary directory. Repeat to make the line even longer. If this library cannot
+ // dynamically load resources then pull out all the resources to a temporary directory.
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00314-comment_conversion_javadoc_single.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00314-comment_conversion_javadoc_single.c
new file mode 100644
index 00000000..b59e2781
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00314-comment_conversion_javadoc_single.c
@@ -0,0 +1,21 @@
+// Normal comment
+
+/** Javadoc comment */
+
+/* Multiline
+* Normal
+* comment */
+
+/* Another
+ Multiline
+ Normal
+ comment
+ */
+
+/**
+ * Javadoc
+ * Multiline
+ * Normal
+ * comment
+ */
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00315-comment_conversion_trailing_c_multiline.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00315-comment_conversion_trailing_c_multiline.c
new file mode 100644
index 00000000..b61971f9
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00315-comment_conversion_trailing_c_multiline.c
@@ -0,0 +1,27 @@
+typedef enum
+{
+ LIBR_ERROR_EXPANDSECTION = -20, /** Failed to set output file architecture to input file
+ architecture */
+ LIBR_ERROR_OVERWRITE = -21 /** Section already exists, over-write not specified */
+} libr_status;
+
+typedef enum
+{
+ LIBR_ERROR_EXPANDSECTION = -20, /* Failed to set output file architecture to input file
+ architecture */
+ LIBR_ERROR_OVERWRITE = -21 // Section already exists, over-write not specified
+} libr_status;
+
+typedef enum
+{
+ LIBR_ERROR_EXPANDSECTION = -20, /** Failed to set output file architecture to input file
+ architecture */
+ LIBR_ERROR_OVERWRITE = -21 // Section already exists, over-write not specified
+} libr_status;
+
+typedef enum
+{
+ LIBR_ERROR_EXPANDSECTION = -20, // Failed to set output file architecture to input file
+ // architecture
+ LIBR_ERROR_OVERWRITE = -21 // Section already exists, over-write not specified
+} libr_status;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00320-indent_first_bool_expr.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00320-indent_first_bool_expr.c
index 0dcaa413..0dcaa413 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00320-indent_first_bool_expr.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00320-indent_first_bool_expr.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00401-align-equ.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00401-align-equ.c
index 9b213f96..9b213f96 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00401-align-equ.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00401-align-equ.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00402-align-var.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00402-align-var.c
index d7396d46..d7396d46 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00402-align-var.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00402-align-var.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00403-align-var.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00403-align-var.c
index cb62295e..cb62295e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00403-align-var.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00403-align-var.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00404-align-var.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00404-align-var.c
index 48af3d3c..48af3d3c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00404-align-var.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00404-align-var.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00405-bits.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00405-bits.c
index 9a5a6ceb..9a5a6ceb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00405-bits.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00405-bits.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00406-bug_i_771.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00406-bug_i_771.c
index 9c2b1cc2..9c2b1cc2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00406-bug_i_771.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00406-bug_i_771.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00407-star-style.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00407-star-style.c
index 156d2a27..156d2a27 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00407-star-style.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00407-star-style.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00408-star-style.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00408-star-style.c
index e2e834e2..e2e834e2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00408-star-style.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00408-star-style.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00409-star-style.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00409-star-style.c
index fd5e3255..fd5e3255 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00409-star-style.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00409-star-style.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00411-align-typedef.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00411-align-typedef.c
index 001e4a52..001e4a52 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00411-align-typedef.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00411-align-typedef.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00412-align-typedef.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00412-align-typedef.c
index 001e4a52..001e4a52 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00412-align-typedef.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00412-align-typedef.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00413-align-typedef.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00413-align-typedef.c
index d5f826e5..d5f826e5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00413-align-typedef.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00413-align-typedef.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00414-align-typedef.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00414-align-typedef.c
index 8e63e499..8e63e499 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00414-align-typedef.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00414-align-typedef.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00415-align_stack.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00415-align_stack.c
index 507d6da2..507d6da2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00415-align_stack.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00415-align_stack.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00416-align_sf_call_thresh_416.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00416-align_sf_call_thresh_416.c
index 36fbca84..36fbca84 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00416-align_sf_call_thresh_416.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00416-align_sf_call_thresh_416.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00417-align_sf_call_thresh_417.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00417-align_sf_call_thresh_417.c
index 3047b932..3047b932 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00417-align_sf_call_thresh_417.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00417-align_sf_call_thresh_417.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00418-align_sf_call_span_418.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00418-align_sf_call_span_418.c
index 82444a2b..82444a2b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00418-align_sf_call_span_418.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00418-align_sf_call_span_418.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00419-align_sf_call_span_419.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00419-align_sf_call_span_419.c
index 20b9705a..20b9705a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00419-align_sf_call_span_419.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00419-align_sf_call_span_419.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00420-Issue-2278.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00420-Issue_2278.c
index 2bab88ab..2bab88ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00420-Issue-2278.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00420-Issue_2278.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00421-nl_ds_struct_enum.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00421-nl_ds_struct_enum.c
index ec5bcc31..ec5bcc31 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00421-nl_ds_struct_enum.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00421-nl_ds_struct_enum.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00422-nl_ds_struct_enum.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00422-nl_ds_struct_enum.c
index d45b2add..d45b2add 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00422-nl_ds_struct_enum.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00422-nl_ds_struct_enum.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00423-bug_1702.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00423-bug_1702.c
index bf74c8bd..bf74c8bd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00423-bug_1702.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00423-bug_1702.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00424-Issue_3506.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00424-Issue_3506.c
index c3cdd0f8..c3cdd0f8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00424-Issue_3506.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00424-Issue_3506.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00430-paren-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00430-paren-indent.c
index f6b148ce..f6b148ce 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00430-paren-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00430-paren-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00431-paren-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00431-paren-indent.c
index 51a80854..51a80854 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00431-paren-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00431-paren-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00432-paren-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00432-paren-indent.c
index 9ab77831..9ab77831 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00432-paren-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00432-paren-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00440-bug_489.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00440-bug_489.c
index 47a5da06..47a5da06 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00440-bug_489.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00440-bug_489.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00451-enum_gallery.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00451-enum_gallery.c
index 3cb8db3c..3cb8db3c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00451-enum_gallery.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00451-enum_gallery.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00452-enum_gallery.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00452-enum_gallery.c
index cb235c3d..cb235c3d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00452-enum_gallery.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00452-enum_gallery.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00453-enum_gallery.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00453-enum_gallery.c
index af537d1d..af537d1d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00453-enum_gallery.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00453-enum_gallery.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00453-enum_gallery.rerun.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00453-enum_gallery.rerun.c
index 148f1970..148f1970 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00453-enum_gallery.rerun.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00453-enum_gallery.rerun.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00454-enum_gallery.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00454-enum_gallery.c
index 8d00cbce..8d00cbce 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00454-enum_gallery.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00454-enum_gallery.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00461-align_func_proto_star_amp.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00461-align_func_proto_star_amp.h
index 5b0490c8..5b0490c8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00461-align_func_proto_star_amp.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00461-align_func_proto_star_amp.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00462-align_func_proto_star_amp.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00462-align_func_proto_star_amp.h
index c05fc454..c05fc454 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00462-align_func_proto_star_amp.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00462-align_func_proto_star_amp.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00463-align_func_proto_star_amp.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00463-align_func_proto_star_amp.h
index 702b9396..702b9396 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00463-align_func_proto_star_amp.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00463-align_func_proto_star_amp.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00464-align_func_proto_star_amp.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00464-align_func_proto_star_amp.h
index f1f927dc..f1f927dc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00464-align_func_proto_star_amp.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00464-align_func_proto_star_amp.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00465-align_func_proto_star_amp.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00465-align_func_proto_star_amp.h
index 9bd55a23..9bd55a23 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00465-align_func_proto_star_amp.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00465-align_func_proto_star_amp.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00466-align_func_proto_star_amp.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00466-align_func_proto_star_amp.h
index b91044f7..b91044f7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00466-align_func_proto_star_amp.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00466-align_func_proto_star_amp.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00467-align_func_proto_star_amp.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00467-align_func_proto_star_amp.h
index e87c4cd8..e87c4cd8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00467-align_func_proto_star_amp.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00467-align_func_proto_star_amp.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00468-align_func_proto_star_amp.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00468-align_func_proto_star_amp.h
index 0fb8eacb..0fb8eacb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00468-align_func_proto_star_amp.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00468-align_func_proto_star_amp.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00469-align_func_proto_star_amp.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00469-align_func_proto_star_amp.h
index 5f776985..5f776985 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00469-align_func_proto_star_amp.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00469-align_func_proto_star_amp.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00470-align_trailing_do_cmt.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00470-align_trailing_do_cmt.c
index 7c21b3d9..7c21b3d9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00470-align_trailing_do_cmt.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00470-align_trailing_do_cmt.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00501-bool-pos.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00501-bool-pos.c
index b9d537a1..b9d537a1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00501-bool-pos.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00501-bool-pos.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00502-bool-pos.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00502-bool-pos.c
index 7890fcd7..7890fcd7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00502-bool-pos.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00502-bool-pos.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00503-pos_compare.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00503-pos_compare.c
index cc809a09..cc809a09 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00503-pos_compare.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00503-pos_compare.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00504-pos_compare.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00504-pos_compare.c
index fe16e10e..fe16e10e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00504-pos_compare.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00504-pos_compare.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00505-pos_conditional.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00505-pos_conditional.c
index 91f17d57..91f17d57 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00505-pos_conditional.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00505-pos_conditional.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00506-pos_conditional.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00506-pos_conditional.c
index 23945656..23945656 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00506-pos_conditional.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00506-pos_conditional.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00510-bool-pos.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00510-bool-pos.c
index 5958e3c5..5958e3c5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00510-bool-pos.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00510-bool-pos.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00511-bool-pos.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00511-bool-pos.c
index 8f6effd8..8f6effd8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00511-bool-pos.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00511-bool-pos.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00512-bool-pos.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00512-bool-pos.c
index 2e82b7ef..2e82b7ef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00512-bool-pos.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00512-bool-pos.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00513-bool-pos.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00513-bool-pos.c
index cad844c5..cad844c5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00513-bool-pos.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00513-bool-pos.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00514-my_infile.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00514-my_infile.c
index 3f4c76fb..3f4c76fb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00514-my_infile.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00514-my_infile.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00600-dos.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00600-dos.c
index a0482ba3..a0482ba3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00600-dos.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00600-dos.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00601-mac.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00601-mac.c
index 2be04c61..2be04c61 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00601-mac.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00601-mac.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00611-pp-space.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00611-pp-space.c
index 217fc89a..217fc89a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00611-pp-space.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00611-pp-space.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00612-pp-space.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00612-pp-space.c
index 7c19bf1e..7c19bf1e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00612-pp-space.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00612-pp-space.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00613-pp-space.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00613-pp-space.c
index 7092a193..7092a193 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00613-pp-space.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00613-pp-space.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00614-pp-space.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00614-pp-space.c
index 103c2ca4..103c2ca4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00614-pp-space.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00614-pp-space.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00615-pp-nest.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00615-pp-nest.c
index 5e99a1d0..5e99a1d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00615-pp-nest.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00615-pp-nest.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00616-pp-if-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00616-pp-if-indent.c
index dc2dea10..dc2dea10 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00616-pp-if-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00616-pp-if-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00617-pp-if-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00617-pp-if-indent.c
index 2caf73d2..2caf73d2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00617-pp-if-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00617-pp-if-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00618-pp-if-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00618-pp-if-indent.c
index f7b3d270..f7b3d270 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00618-pp-if-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00618-pp-if-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00619-Issue_3169.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00619-Issue_3169.c
index 848e451e..848e451e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00619-Issue_3169.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00619-Issue_3169.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00620-indent-assign.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00620-indent-assign.c
index c01e146a..c01e146a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00620-indent-assign.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00620-indent-assign.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00621-nl_endif.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00621-nl_endif.c
index bae6272c..bae6272c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00621-nl_endif.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00621-nl_endif.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00622-indent-off-after-assign.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00622-indent-off-after-assign.c
index eb083f7b..eb083f7b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00622-indent-off-after-assign.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00622-indent-off-after-assign.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00623-pp_space_before_after.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00623-pp_space_before_after.c
index 4b390a51..4b390a51 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00623-pp_space_before_after.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00623-pp_space_before_after.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00624-pp_space_before_after.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00624-pp_space_before_after.c
index 06aee282..06aee282 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00624-pp_space_before_after.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00624-pp_space_before_after.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00625-pp_space_before_after.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00625-pp_space_before_after.c
index 0b37952e..0b37952e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00625-pp_space_before_after.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00625-pp_space_before_after.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00626-pp_space_before_after.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00626-pp_space_before_after.c
index ce21809e..ce21809e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00626-pp_space_before_after.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00626-pp_space_before_after.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00631-nl_assign.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00631-nl_assign.c
index 7319d498..7319d498 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00631-nl_assign.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00631-nl_assign.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00632-nl_assign.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00632-nl_assign.c
index 2452e773..2452e773 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00632-nl_assign.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00632-nl_assign.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00633-bug_3156.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00633-bug_3156.c
index 508a0098..508a0098 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00633-bug_3156.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00633-bug_3156.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00701-function-def.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00701-function-def.c
index 6f0133e8..6f0133e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00701-function-def.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00701-function-def.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00702-function-def.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00702-function-def.c
index eaa568da..eaa568da 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00702-function-def.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00702-function-def.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00703-function-def.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00703-function-def.c
index 76cf664f..76cf664f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00703-function-def.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00703-function-def.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00710-add_long_comment.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00710-add_long_comment.c
index 82bf680e..82bf680e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00710-add_long_comment.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00710-add_long_comment.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00721-nl-semicolon.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00721-nl-semicolon.c
index 441091b5..441091b5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00721-nl-semicolon.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00721-nl-semicolon.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00730-nl_func_call.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00730-nl_func_call.c
index 38c17e45..38c17e45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00730-nl_func_call.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00730-nl_func_call.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00731-nl_func_call.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00731-nl_func_call.c
index 38c17e45..38c17e45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00731-nl_func_call.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00731-nl_func_call.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00732-nl_func_call.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00732-nl_func_call.c
index b57470e8..b57470e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00732-nl_func_call.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00732-nl_func_call.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00733-nl_func_call.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00733-nl_func_call.c
index 2290132d..2290132d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00733-nl_func_call.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00733-nl_func_call.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00734-nl_func_call.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00734-nl_func_call.c
index 8233b0ec..8233b0ec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00734-nl_func_call.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00734-nl_func_call.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00801-fcn_type.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00801-fcn_type.c
index 72af3fa3..72af3fa3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00801-fcn_type.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00801-fcn_type.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00802-funcfunc.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00802-funcfunc.c
index 4d0f0432..4d0f0432 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00802-funcfunc.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00802-funcfunc.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00803-fcn_type.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00803-fcn_type.c
index 9e1e5c55..9e1e5c55 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00803-fcn_type.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00803-fcn_type.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00901-code_width.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00901-code_width.c
new file mode 100644
index 00000000..16fba398
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00901-code_width.c
@@ -0,0 +1,88 @@
+
+static int short_function_name(struct device *dev,
+ struct device_driver *drv);
+
+/* Assuming a 60-column limit */
+static int short_function_name(struct device *dev,
+ struct device_driver *drv)
+{
+ this->translateLabels(labelID,
+ completedLabelID,
+ selectedLabelID,
+ text,
+ selectedText,
+ completedText,
+ fontId,
+ selectedFontId,
+ completedFontId);
+ call_some_really_long_function.of_some_sort(
+ some_long_parameter1,
+ some_long_parameter2);
+
+ abc =
+ call_some_other_really_long_function.of_some_sort(
+ some_long_parameter1,
+ some_long_parameter2);
+
+ abc.def.ghi =
+ call_some_other_really_long_function.of_some_sort(
+ some_long_parameter1,
+ some_long_parameter2);
+
+ abcdefghijklmnopqrstuvwxyz = abc + def + ghi + jkl +
+ mno + prq + stu + vwx + yz;
+
+ return 1;
+}
+
+typedef
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ yyyyyyyyyyyyyyyyyyyyyy;
+
+typedef some_return_value (*some_function_type)(
+ another_type parameter1,
+ another_type parameter2);
+
+typedef struct
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+{
+ int yyyyyyyyyyyyyyyyyyyyyy;
+} x_t;
+
+static void some_really_long_function_name(
+ struct device *dev,
+ struct device_driver *drv)
+{
+ if ((some_variable_name && somefunction(param1,
+ param2,
+ param3))) {
+ asdfghjk = asdfasdfasd.aasdfasd +
+ (asdfasd.asdas * 1234.65);
+ }
+
+ for (struct something_really_really_excessive *
+ a_long_ptr_name = get_first_item();
+ a_long_ptr_name != NULL;
+ a_long_ptr_name = get_next_item(a_long_ptr_name))
+ {
+ }
+
+ for (a = get_first(); a != NULL; a = GetNext(a))
+ {
+ }
+
+ for (a_ptr = get_first(); a_ptr != NULL;
+ a_ptr = GetNext(a))
+ {
+ }
+
+ register_clcmd( "examine",
+ "do_examine",
+ -1,
+ "-Allows a player to examine the health and armor of a teammate" );
+ register_clcmd( "/examine",
+ "do_examine",
+ -1,
+ "-Allows a player to examine the health and armor of a teammate" );
+}
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00902-code_width.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00902-code_width.c
new file mode 100644
index 00000000..66565c55
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00902-code_width.c
@@ -0,0 +1,75 @@
+
+static int short_function_name(struct device *dev,
+ struct device_driver *drv);
+
+/* Assuming a 60-column limit */
+static int short_function_name(struct device *dev,
+ struct device_driver *drv)
+{
+ this->translateLabels(labelID, completedLabelID,
+ selectedLabelID, text,
+ selectedText, completedText,
+ fontId, selectedFontId,
+ completedFontId);
+ call_some_really_long_function.of_some_sort(
+ some_long_parameter1, some_long_parameter2);
+
+ abc =
+ call_some_other_really_long_function.of_some_sort(
+ some_long_parameter1, some_long_parameter2);
+
+ abc.def.ghi =
+ call_some_other_really_long_function.of_some_sort(
+ some_long_parameter1, some_long_parameter2);
+
+ abcdefghijklmnopqrstuvwxyz = abc + def + ghi + jkl +
+ mno + prq + stu + vwx + yz;
+
+ return 1;
+}
+
+typedef
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ yyyyyyyyyyyyyyyyyyyyyy;
+
+typedef some_return_value (*some_function_type)(
+ another_type parameter1, another_type parameter2);
+
+typedef struct
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+{
+ int yyyyyyyyyyyyyyyyyyyyyy;
+} x_t;
+
+static void some_really_long_function_name(
+ struct device *dev, struct device_driver *drv)
+{
+ if ((some_variable_name && somefunction(param1, param2,
+ param3))) {
+ asdfghjk = asdfasdfasd.aasdfasd +
+ (asdfasd.asdas * 1234.65);
+ }
+
+ for (struct something_really_really_excessive *
+ a_long_ptr_name = get_first_item();
+ a_long_ptr_name != NULL;
+ a_long_ptr_name = get_next_item(a_long_ptr_name))
+ {
+ }
+
+ for (a = get_first(); a != NULL; a = GetNext(a))
+ {
+ }
+
+ for (a_ptr = get_first();
+ a_ptr != NULL;
+ a_ptr = GetNext(a))
+ {
+ }
+
+ register_clcmd( "examine", "do_examine", -1,
+ "-Allows a player to examine the health and armor of a teammate" );
+ register_clcmd( "/examine", "do_examine", -1,
+ "-Allows a player to examine the health and armor of a teammate" );
+}
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00903-code_width.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00903-code_width.c
new file mode 100644
index 00000000..7349bde3
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00903-code_width.c
@@ -0,0 +1,75 @@
+
+static int short_function_name(struct device *dev, struct device_driver *drv);
+
+/* Assuming a 60-column limit */
+static int short_function_name(struct device *dev, struct device_driver *drv)
+{
+ this->translateLabels(labelID,
+ completedLabelID,
+ selectedLabelID,
+ text,
+ selectedText,
+ completedText,
+ fontId,
+ selectedFontId,
+ completedFontId);
+ call_some_really_long_function.of_some_sort(some_long_parameter1,
+ some_long_parameter2);
+
+ abc =
+ call_some_other_really_long_function.of_some_sort(some_long_parameter1,
+ some_long_parameter2);
+
+ abc.def.ghi =
+ call_some_other_really_long_function.of_some_sort(some_long_parameter1,
+ some_long_parameter2);
+
+ abcdefghijklmnopqrstuvwxyz = abc + def + ghi + jkl + mno + prq + stu + vwx +
+ yz;
+
+ return 1;
+}
+
+typedef xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ yyyyyyyyyyyyyyyyyyyyyy;
+
+typedef some_return_value (*some_function_type)(another_type parameter1,
+ another_type parameter2);
+
+typedef struct xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+{
+ int yyyyyyyyyyyyyyyyyyyyyy;
+} x_t;
+
+static void some_really_long_function_name(struct device *dev,
+ struct device_driver *drv)
+{
+ if ((some_variable_name && somefunction(param1, param2, param3))) {
+ asdfghjk = asdfasdfasd.aasdfasd + (asdfasd.asdas * 1234.65);
+ }
+
+ for (struct something_really_really_excessive *a_long_ptr_name =
+ get_first_item();
+ a_long_ptr_name != NULL;
+ a_long_ptr_name = get_next_item(a_long_ptr_name))
+ {
+ }
+
+ for (a = get_first(); a != NULL; a = GetNext(a))
+ {
+ }
+
+ for (a_ptr = get_first(); a_ptr != NULL; a_ptr = GetNext(a))
+ {
+ }
+
+ register_clcmd( "examine",
+ "do_examine",
+ -1,
+ "-Allows a player to examine the health and armor of a teammate" );
+ register_clcmd( "/examine",
+ "do_examine",
+ -1,
+ "-Allows a player to examine the health and armor of a teammate" );
+}
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00910-pascal_ptr.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00910-pascal_ptr.c
index 27a9cdef..27a9cdef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00910-pascal_ptr.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00910-pascal_ptr.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00911-pascal_ptr.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00911-pascal_ptr.c
index 4c0d0dde..4c0d0dde 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/00911-pascal_ptr.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/00911-pascal_ptr.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01000-mod-paren.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01000-mod-paren.c
index ca919f77..ca919f77 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01000-mod-paren.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01000-mod-paren.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01001-nl-comment.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01001-nl-comment.c
index ecac3e2a..ecac3e2a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01001-nl-comment.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01001-nl-comment.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01002-mod-paren.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01002-mod-paren.c
index 2537330f..2537330f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01002-mod-paren.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01002-mod-paren.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01005-mod_case_brace.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01005-mod_case_brace.c
index caeae178..caeae178 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01005-mod_case_brace.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01005-mod_case_brace.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01006-mod_case_brace.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01006-mod_case_brace.c
index 371bd5cb..371bd5cb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01006-mod_case_brace.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01006-mod_case_brace.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01007-mod_case_brace.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01007-mod_case_brace.c
index 2ea3dea5..2ea3dea5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01007-mod_case_brace.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01007-mod_case_brace.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01008-Issue_3366.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01008-Issue_3366.c
index 75a95e36..75a95e36 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01008-Issue_3366.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01008-Issue_3366.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01009-mod_move_case_return.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01009-mod_move_case_return.c
index 484b4c33..484b4c33 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01009-mod_move_case_return.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01009-mod_move_case_return.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01010-mod_move_case_return_bad.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01010-mod_move_case_return_bad.c
index c6fa63e8..c6fa63e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01010-mod_move_case_return_bad.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01010-mod_move_case_return_bad.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01011-semicolons.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01011-semicolons.c
index 962ec588..962ec588 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01011-semicolons.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01011-semicolons.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01012-semicolons.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01012-semicolons.c
index 54d895e7..54d895e7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01012-semicolons.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01012-semicolons.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01015-paren_indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01015-paren_indent.c
index d993315c..d993315c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01015-paren_indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01015-paren_indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01016-align_attr.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01016-align_attr.c
index 012217e4..012217e4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01016-align_attr.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01016-align_attr.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01020-kw_subst.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01020-kw_subst.c
index 61b43c3f..61b43c3f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01020-kw_subst.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01020-kw_subst.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01021-hello.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01021-hello.c
index 6ba46ef7..6ba46ef7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01021-hello.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01021-hello.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01022-kw_subst.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01022-kw_subst.c
index 6cba8370..6cba8370 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01022-kw_subst.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01022-kw_subst.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01030-multi.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01030-multi.h
index 14a599c7..14a599c7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01030-multi.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01030-multi.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01035-func_wrap.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01035-func_wrap.c
index b2f86805..b2f86805 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01035-func_wrap.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01035-func_wrap.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01036-func_wrap.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01036-func_wrap.c
index 24e932ed..24e932ed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01036-func_wrap.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01036-func_wrap.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01037-type_wrap.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01037-type_wrap.c
index c3c23569..c3c23569 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01037-type_wrap.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01037-type_wrap.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01040-newline_after_endif.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01040-newline_after_endif.c
index 2a0cbe62..2a0cbe62 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01040-newline_after_endif.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01040-newline_after_endif.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01050-func_call_user.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01050-func_call_user.c
index 82eba7cb..82eba7cb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01050-func_call_user.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01050-func_call_user.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01060-backslash-newline-lex.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01060-backslash-newline-lex.c
index f5000b82..f5000b82 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01060-backslash-newline-lex.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01060-backslash-newline-lex.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01070-various_colons.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01070-various_colons.c
index 0850b17e..0850b17e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01070-various_colons.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01070-various_colons.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01071-various_colons.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01071-various_colons.c
index e25134ab..e25134ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01071-various_colons.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01071-various_colons.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01080-bug_1196.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01080-bug_1196.c
index 9fdabca6..9fdabca6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/01080-bug_1196.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/01080-bug_1196.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02000-i2c-core.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02000-i2c-core.c
index 528a6161..528a6161 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02000-i2c-core.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02000-i2c-core.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02001-directfb.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02001-directfb.h
index 3c7ffc18..3c7ffc18 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02001-directfb.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02001-directfb.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02002-i2c-core.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02002-i2c-core.c
index 698df2a6..698df2a6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02002-i2c-core.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02002-i2c-core.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02003-Issue_3353.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02003-Issue_3353.h
index f189ebfa..f189ebfa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02003-Issue_3353.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02003-Issue_3353.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02100-i2c-core.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02100-i2c-core.c
index df01ad5b..df01ad5b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02100-i2c-core.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02100-i2c-core.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02101-comment-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02101-comment-indent.c
index 7c5f0f0c..7c5f0f0c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02101-comment-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02101-comment-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02200-xml.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02200-xml.c
index 62bd81d0..62bd81d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02200-xml.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02200-xml.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02201-align-string.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02201-align-string.c
index 0b2cf25a..0b2cf25a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02201-align-string.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02201-align-string.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02300-preproc-if.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02300-preproc-if.c
index 8e20a744..8e20a744 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02300-preproc-if.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02300-preproc-if.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02301-preproc-if.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02301-preproc-if.c
index 0130e1f5..0130e1f5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02301-preproc-if.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02301-preproc-if.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02302-nl-cont.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02302-nl-cont.c
new file mode 100644
index 00000000..93483d35
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02302-nl-cont.c
@@ -0,0 +1,23 @@
+
+#define FOO(bar) create_a_really_long_identifier name(some_function(bar1 + \
+ bar2), bar3, \
+ bar4);
+
+#define VNV_RECORD_CYCLES(m) do { \
+ uint16_t cyc_out = ((uint16_t )TMR4) - cyc_in; \
+ if (cyc_out < vnv_ticks[m].min) vnv_ticks[m].min = cyc_out; \
+ if (cyc_out > vnv_ticks[m].max) vnv_ticks[m].max = cyc_out; \
+} while (0)
+
+#define multilinemacro do { (x+5); } while (0); \
+ printf("a multilinemacro"); \
+ printf("a multilinemacro2");
+
+int main(int argc, char *argv[])
+{
+ int a, b;
+ a = 1; /* stupid comment \\ */
+ b = 2;
+
+ return(a+b);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02303-nl-cont2.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02303-nl-cont2.c
new file mode 100644
index 00000000..853376b2
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02303-nl-cont2.c
@@ -0,0 +1,18 @@
+
+#define FOO(bar) create_a_really_long_identifier name(some_function(bar1 + \
+ bar2), bar3, \
+ bar4);
+
+#define multilinemacro do { (x+5); } while (0); \
+ printf("a multilinemacro"); \
+ printf("a multilinemacro2");
+
+int main(int argc, char *argv[])
+{
+ int a, b;
+ a = 1; /* stupid comment \
+ * b = 2; */
+
+ return(a+b);
+}
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02310-empty-for.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02310-empty-for.c
index 4bd43b09..4bd43b09 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02310-empty-for.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02310-empty-for.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02311-pragma.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02311-pragma.c
index ec944697..ec944697 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02311-pragma.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02311-pragma.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02315-pp_ret.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02315-pp_ret.c
index 18a3d5cb..18a3d5cb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02315-pp_ret.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02315-pp_ret.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02320-nl_create_one_liner.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02320-nl_create_one_liner.c
index 55974c3c..55974c3c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02320-nl_create_one_liner.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02320-nl_create_one_liner.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02325-sort_include.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02325-sort_include.c
index 4f2b20bf..4f2b20bf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02325-sort_include.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02325-sort_include.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02330-one_liners.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02330-one_liners.c
index 57d8ba44..57d8ba44 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02330-one_liners.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02330-one_liners.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02410-ifdef-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02410-ifdef-indent.c
index e71d8cf3..e71d8cf3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02410-ifdef-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02410-ifdef-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02411-ifdef-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02411-ifdef-indent.c
index bf39a98c..bf39a98c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02411-ifdef-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02411-ifdef-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02412-ifdef-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02412-ifdef-indent.c
index 23b4dd37..23b4dd37 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02412-ifdef-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02412-ifdef-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02413-ifdef-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02413-ifdef-indent.c
index 8738bbf7..8738bbf7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02413-ifdef-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02413-ifdef-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02414-whole_file_ifdef.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02414-whole_file_ifdef.c
index c767bbf7..c767bbf7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02414-whole_file_ifdef.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02414-whole_file_ifdef.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02415-endif.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02415-endif.c
index c8b99a6a..c8b99a6a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02415-endif.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02415-endif.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02416-cmt_nl_end.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02416-cmt_nl_end.c
index 56de21ec..56de21ec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02416-cmt_nl_end.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02416-cmt_nl_end.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02421-cmt_multi.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02421-cmt_multi.c
index 61faac36..61faac36 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02421-cmt_multi.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02421-cmt_multi.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02422-cmt_multi.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02422-cmt_multi.c
index bbdd79cd..bbdd79cd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02422-cmt_multi.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02422-cmt_multi.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02423-cmt_multi_utf8.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02423-cmt_multi_utf8.c
index 05b01f84..05b01f84 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02423-cmt_multi_utf8.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02423-cmt_multi_utf8.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02431-cmt_right_align.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02431-cmt_right_align.c
index 315e5010..315e5010 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02431-cmt_right_align.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02431-cmt_right_align.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02432-cmt_right_align.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02432-cmt_right_align.c
index eef43777..eef43777 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02432-cmt_right_align.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02432-cmt_right_align.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02440-string_utf8.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02440-string_utf8.c
index a473e1bf..a473e1bf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02440-string_utf8.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02440-string_utf8.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02441-utf8-identifiers.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02441-utf8-identifiers.c
index 1dc39e9c..1dc39e9c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02441-utf8-identifiers.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02441-utf8-identifiers.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02451-nl_return_expr.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02451-nl_return_expr.c
index bf8621d5..bf8621d5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02451-nl_return_expr.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02451-nl_return_expr.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02452-nl_return_expr.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02452-nl_return_expr.c
index 4dc23adf..4dc23adf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02452-nl_return_expr.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02452-nl_return_expr.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02453-nl_return_expr.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02453-nl_return_expr.c
index c917fb17..c917fb17 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02453-nl_return_expr.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02453-nl_return_expr.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02454-nl_return_expr.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02454-nl_return_expr.c
index 2e33d2b0..2e33d2b0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02454-nl_return_expr.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02454-nl_return_expr.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02455-macro-returns.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02455-macro-returns.c
index f85a1663..f85a1663 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02455-macro-returns.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02455-macro-returns.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02456-macro-returns.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02456-macro-returns.c
index 973fdfca..973fdfca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02456-macro-returns.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02456-macro-returns.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02457-nl_before_return.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02457-nl_before_return.c
index a396202f..a396202f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02457-nl_before_return.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02457-nl_before_return.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02460-freebsd.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02460-freebsd.c
index c0af0657..c0af0657 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02460-freebsd.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02460-freebsd.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02486-doxy-comment.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02486-doxy-comment.c
index e2a6c2c4..e2a6c2c4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02486-doxy-comment.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02486-doxy-comment.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02487-doxy-comment.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02487-doxy-comment.c
index 5049dada..5049dada 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02487-doxy-comment.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02487-doxy-comment.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02501-custom_types_ssl.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02501-custom_types_ssl.c
index 3e28d2e3..3e28d2e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02501-custom_types_ssl.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02501-custom_types_ssl.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02502-custom_types_ssl.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02502-custom_types_ssl.c
index 0df5ddad..0df5ddad 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02502-custom_types_ssl.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02502-custom_types_ssl.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02504-align_keep_extra.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02504-align_keep_extra.c
index 985f428c..985f428c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02504-align_keep_extra.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02504-align_keep_extra.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02505-align_assigns.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02505-align_assigns.c
index dadef510..dadef510 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02505-align_assigns.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02505-align_assigns.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02506-align_assign_var_defs.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02506-align_assign_var_defs.c
index 682982ee..682982ee 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02506-align_assign_var_defs.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02506-align_assign_var_defs.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02510-asm.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02510-asm.c
index 6609bf9b..6609bf9b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02510-asm.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02510-asm.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02520-pp_indent_with_tabs.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02520-pp_indent_with_tabs.c
index 18596a65..18596a65 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02520-pp_indent_with_tabs.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02520-pp_indent_with_tabs.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02521-pp_indent_with_tabs.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02521-pp_indent_with_tabs.c
index dbf66a9e..dbf66a9e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02521-pp_indent_with_tabs.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02521-pp_indent_with_tabs.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02522-pp_indent_with_tabs.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02522-pp_indent_with_tabs.c
index dbf66a9e..dbf66a9e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02522-pp_indent_with_tabs.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02522-pp_indent_with_tabs.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02523-pp_indent_with_tabs.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02523-pp_indent_with_tabs.c
index 85cee37d..85cee37d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02523-pp_indent_with_tabs.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02523-pp_indent_with_tabs.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02524-pp_indent_with_tabs.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02524-pp_indent_with_tabs.c
index dbf66a9e..dbf66a9e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02524-pp_indent_with_tabs.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02524-pp_indent_with_tabs.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02525-pp_indent_with_tabs.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02525-pp_indent_with_tabs.c
index dbf66a9e..dbf66a9e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02525-pp_indent_with_tabs.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02525-pp_indent_with_tabs.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02530-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02530-pp_multiline_define.c
new file mode 100644
index 00000000..b452bae0
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02530-pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+ QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+ QWERTY0 Msgid;
+#ifdef TEST
+#define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ } \
+ while(true) \
+ { \
+ g = g + 1; \
+ }
+int i = 3;
+
+#define x \
+ ( \
+ x \
+ ) \
+ { \
+ QWERTY2 Msgid; \
+ }
+void f()
+{
+ int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+ #define setint(x) x = x + 1
+#define K 2
+ #define gettext2(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ g = g + 1; \
+ } \
+ while(true); \
+ }
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+ #ifdef TEST2
+#ifdef TEST3
+ #ifdef TEST4
+#define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false){ \
+ g = g + 1; \
+ } \
+ } \
+ while(true); \
+ }
+#endif
+ #endif
+ #endif
+ #endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02531-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02531-pp_multiline_define.c
new file mode 100644
index 00000000..06a234ef
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02531-pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+ QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+ QWERTY0 Msgid;
+#ifdef TEST
+#define gettext1(Msgid) \
+ if (true) \
+ {\
+ QWERTY1 Msgid; \
+}\
+while(true) \
+{ \
+ g = g + 1; \
+}
+int i = 3;
+
+#define x \
+ (\
+ x\
+ )\
+ {\
+ QWERTY2 Msgid; \
+}
+void f()
+{
+ int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+ #define setint(x) x = x + 1
+#define K 2
+ #define gettext2(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+do \
+{ \
+g = g + 1; \
+} \
+while(true); \
+}
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+ #ifdef TEST2
+#ifdef TEST3
+ #ifdef TEST4
+#define gettext1(Msgid) \
+ if (true) \
+ {\
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false){ \
+g = g + 1; \
+ }\
+ } \
+while(true); \
+}
+#endif
+ #endif
+ #endif
+ #endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02532-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02532-pp_multiline_define.c
new file mode 100644
index 00000000..e6a27632
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02532-pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+ QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+ QWERTY0 Msgid;
+#ifdef TEST
+#define gettext1(Msgid) \
+ if (true) \
+ {\
+ QWERTY1 Msgid; \
+}\
+while(true) \
+{ \
+ g = g + 1; \
+}
+int i = 3;
+
+#define x \
+ (\
+ x\
+ )\
+ {\
+ QWERTY2 Msgid; \
+}
+void f()
+{
+ int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+ #define setint(x) x = x + 1
+#define K 2
+ #define gettext2(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+do \
+{ \
+g = g + 1; \
+} \
+while(true); \
+}
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+ #ifdef TEST2
+#ifdef TEST3
+ #ifdef TEST4
+#define gettext1(Msgid) \
+ if (true) \
+ {\
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false){ \
+g = g + 1; \
+ }\
+ } \
+while(true); \
+}
+#endif
+ #endif
+ #endif
+ #endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02533-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02533-pp_multiline_define.c
new file mode 100644
index 00000000..90b4b74f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02533-pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+ QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+ QWERTY0 Msgid;
+#ifdef TEST
+#define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ } \
+ while(true) \
+ { \
+ g = g + 1; \
+ }
+int i = 3;
+
+#define x \
+ ( \
+ x \
+ ) \
+ { \
+ QWERTY2 Msgid; \
+ }
+void f()
+{
+ int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+ #define setint(x) x = x + 1
+#define K 2
+ #define gettext2(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ g = g + 1; \
+ } \
+ while(true); \
+ }
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+ #ifdef TEST2
+#ifdef TEST3
+ #ifdef TEST4
+#define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false) { \
+ g = g + 1; \
+ } \
+ } \
+ while(true); \
+ }
+#endif
+ #endif
+ #endif
+ #endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02534-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02534-pp_multiline_define.c
new file mode 100644
index 00000000..2d498e9f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02534-pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+ QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+ QWERTY0 Msgid;
+#ifdef TEST
+#define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ } \
+ while(true) \
+ { \
+ g = g + 1; \
+ }
+int i = 3;
+
+#define x \
+ ( \
+ x \
+ ) \
+ { \
+ QWERTY2 Msgid; \
+ }
+void f()
+{
+ int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+ #define setint(x) x = x + 1
+#define K 2
+ #define gettext2(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ g = g + 1; \
+ } \
+ while(true); \
+ }
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+ #ifdef TEST2
+#ifdef TEST3
+ #ifdef TEST4
+#define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false) { \
+ g = g + 1; \
+ } \
+ } \
+ while(true); \
+ }
+#endif
+ #endif
+ #endif
+ #endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02535-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02535-pp_multiline_define.c
new file mode 100644
index 00000000..1b728e0d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02535-pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+ QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+ QWERTY0 Msgid;
+#ifdef TEST
+#define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ } \
+ while(true) \
+ { \
+ g = g + 1; \
+ }
+int i = 3;
+
+#define x \
+ ( \
+ x \
+ ) \
+ { \
+ QWERTY2 Msgid; \
+ }
+void f()
+{
+ int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+#define setint(x) x = x + 1
+#define K 2
+#define gettext2(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ g = g + 1; \
+ } \
+ while(true); \
+ }
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+#ifdef TEST2
+#ifdef TEST3
+#ifdef TEST4
+#define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false) { \
+ g = g + 1; \
+ } \
+ } \
+ while(true); \
+ }
+#endif
+#endif
+#endif
+#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02536-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02536-pp_multiline_define.c
new file mode 100644
index 00000000..9a0d2a95
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02536-pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+ QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+ QWERTY0 Msgid;
+#ifdef TEST
+ #define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ } \
+ while(true) \
+ { \
+ g = g + 1; \
+ }
+int i = 3;
+
+ #define x \
+ ( \
+ x \
+ ) \
+ { \
+ QWERTY2 Msgid; \
+ }
+void f()
+{
+ int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+#define setint(x) x = x + 1
+#define K 2
+#define gettext2(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ g = g + 1; \
+ } \
+ while(true); \
+ }
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+ #ifdef TEST2
+ #ifdef TEST3
+ #ifdef TEST4
+ #define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false) { \
+ g = g + 1; \
+ } \
+ } \
+ while(true); \
+ }
+ #endif
+ #endif
+ #endif
+#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02537-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02537-pp_multiline_define.c
new file mode 100644
index 00000000..0b0034f6
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02537-pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+ QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+ QWERTY0 Msgid;
+#ifdef TEST
+ #define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ } \
+ while(true) \
+ { \
+ g = g + 1; \
+ }
+int i = 3;
+
+ #define x \
+ ( \
+ x \
+ ) \
+ { \
+ QWERTY2 Msgid; \
+ }
+void f()
+{
+ int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+#define setint(x) x = x + 1
+#define K 2
+#define gettext2(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ g = g + 1; \
+ } \
+ while(true); \
+ }
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+ #ifdef TEST2
+ #ifdef TEST3
+ #ifdef TEST4
+ #define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false) { \
+ g = g + 1; \
+ } \
+ } \
+ while(true); \
+ }
+ #endif
+ #endif
+ #endif
+#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02538-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02538-pp_multiline_define.c
new file mode 100644
index 00000000..687099af
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02538-pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+ QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+ QWERTY0 Msgid;
+#ifdef TEST
+ #define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ } \
+ while(true) \
+ { \
+ g = g + 1; \
+ }
+int i = 3;
+
+ #define x \
+ ( \
+ x \
+ ) \
+ { \
+ QWERTY2 Msgid; \
+ }
+void f()
+{
+ int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+#define setint(x) x = x + 1
+#define K 2
+#define gettext2(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ g = g + 1; \
+ } \
+ while(true); \
+ }
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+ #ifdef TEST2
+ #ifdef TEST3
+ #ifdef TEST4
+ #define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false) { \
+ g = g + 1; \
+ } \
+ } \
+ while(true); \
+ }
+ #endif
+ #endif
+ #endif
+#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02539-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02539-pp_multiline_define.c
new file mode 100644
index 00000000..d4b95681
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02539-pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+QWERTY0 Msgid;
+#ifdef TEST
+ #define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ } \
+ while(true) \
+ { \
+ g = g + 1; \
+ }
+int i = 3;
+
+ #define x \
+ ( \
+ x \
+ ) \
+ { \
+ QWERTY2 Msgid; \
+ }
+void f()
+{
+ int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+#define setint(x) x = x + 1
+#define K 2
+#define gettext2(Msgid) \
+if (true) \
+{ \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ g = g + 1; \
+ } \
+ while(true); \
+}
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+ #ifdef TEST2
+ #ifdef TEST3
+ #ifdef TEST4
+ #define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false) { \
+ g = g + 1; \
+ } \
+ } \
+ while(true); \
+ }
+ #endif
+ #endif
+ #endif
+#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02540-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02540-pp_multiline_define.c
new file mode 100644
index 00000000..8081e80d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02540-pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+QWERTY0 Msgid;
+#ifdef TEST
+ #define gettext1(Msgid) \
+if (true) \
+{ \
+ QWERTY1 Msgid; \
+} \
+while(true) \
+{ \
+ g = g + 1; \
+}
+int i = 3;
+
+ #define x \
+( \
+ x \
+) \
+{ \
+ QWERTY2 Msgid; \
+}
+void f()
+{
+ int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+#define setint(x) x = x + 1
+#define K 2
+#define gettext2(Msgid) \
+if (true) \
+{ \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ g = g + 1; \
+ } \
+ while(true); \
+}
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+ #ifdef TEST2
+ #ifdef TEST3
+ #ifdef TEST4
+ #define gettext1(Msgid) \
+if (true) \
+{ \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false) { \
+ g = g + 1; \
+ } \
+ } \
+ while(true); \
+}
+ #endif
+ #endif
+ #endif
+#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02541-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02541-pp_multiline_define.c
new file mode 100644
index 00000000..2140aa87
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02541-pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+ QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+ QWERTY0 Msgid;
+#ifdef TEST
+ #define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ } \
+ while(true) \
+ { \
+ g = g + 1; \
+ }
+int i = 3;
+
+ #define x \
+ ( \
+ x \
+ ) \
+ { \
+ QWERTY2 Msgid; \
+ }
+void f()
+{
+ int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+#define setint(x) x = x + 1
+#define K 2
+#define gettext2(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ g = g + 1; \
+ } \
+ while(true); \
+ }
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+ #ifdef TEST2
+ #ifdef TEST3
+ #ifdef TEST4
+ #define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false) { \
+ g = g + 1; \
+ } \
+ } \
+ while(true); \
+ }
+ #endif
+ #endif
+ #endif
+#endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02542-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02542-pp_multiline_define.c
new file mode 100644
index 00000000..3872ba29
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02542-pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+ QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+ QWERTY0 Msgid;
+#ifdef TEST
+#define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ } \
+ while(true) \
+ { \
+ g = g + 1; \
+ }
+int i = 3;
+
+#define x \
+ ( \
+ x \
+ ) \
+ { \
+ QWERTY2 Msgid; \
+ }
+void f()
+{
+ int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+ #define setint(x) x = x + 1
+#define K 2
+ #define gettext2(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ g = g + 1; \
+ } \
+ while(true); \
+ }
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+ #ifdef TEST2
+#ifdef TEST3
+ #ifdef TEST4
+#define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false){ \
+ g = g + 1; \
+ } \
+ } \
+ while(true); \
+ }
+#endif
+ #endif
+ #endif
+ #endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02543-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02543-pp_multiline_define.c
new file mode 100644
index 00000000..b15a5923
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02543-pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+ QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+ QWERTY0 Msgid;
+#ifdef TEST
+#define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ } \
+ while(true) \
+ { \
+ g = g + 1; \
+ }
+int i = 3;
+
+#define x \
+ ( \
+ x \
+ ) \
+ { \
+ QWERTY2 Msgid; \
+ }
+void f()
+{
+ int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+ #define setint(x) x = x + 1
+#define K 2
+ #define gettext2(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ g = g + 1; \
+ } \
+ while(true); \
+ }
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+ #ifdef TEST2
+#ifdef TEST3
+ #ifdef TEST4
+#define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false){ \
+ g = g + 1; \
+ } \
+ } \
+ while(true); \
+ }
+#endif
+ #endif
+ #endif
+ #endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02544-pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02544-pp_multiline_define.c
new file mode 100644
index 00000000..b221802e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02544-pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+ QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+ QWERTY0 Msgid;
+#ifdef TEST
+#define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ } \
+ while(true) \
+ { \
+ g = g + 1; \
+ }
+int i = 3;
+
+#define x \
+ ( \
+ x \
+ ) \
+ { \
+ QWERTY2 Msgid; \
+ }
+void f()
+{
+ int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+ #define setint(x) x = x + 1
+#define K 2
+ #define gettext2(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ g = g + 1; \
+ } \
+ while(true); \
+ }
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+ #ifdef TEST2
+#ifdef TEST3
+ #ifdef TEST4
+#define gettext1(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false){ \
+ g = g + 1; \
+ } \
+ } \
+ while(true); \
+ }
+#endif
+ #endif
+ #endif
+ #endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02550-func_var_multi_paren.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02550-func_var_multi_paren.c
index aefbde49..aefbde49 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/02550-func_var_multi_paren.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/02550-func_var_multi_paren.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/07630-indent-vbrace.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/07630-indent-vbrace.c
index a1344348..a1344348 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/07630-indent-vbrace.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/07630-indent-vbrace.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/08399-gh399.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/08399-gh399.c
index 780234ab..780234ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/08399-gh399.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/08399-gh399.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09588-sf588.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09588-sf588.c
index d1c5f1cc..d1c5f1cc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09588-sf588.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09588-sf588.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09594-sf594.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09594-sf594.c
index 94a1973c..94a1973c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09594-sf594.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09594-sf594.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09601-sp_after_sparen.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09601-bug_637.c
index 93cbfea2..93cbfea2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09601-sp_after_sparen.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09601-bug_637.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09602-bug_671.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09602-bug_671.c
index a9d54ee8..a9d54ee8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09602-bug_671.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09602-bug_671.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09603-indent_ternary-1.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09603-indent_ternary-1.c
index f9200886..f9200886 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09603-indent_ternary-1.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09603-indent_ternary-1.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09604-indent_ternary-2.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09604-indent_ternary-2.c
index e6d3576c..e6d3576c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09604-indent_ternary-2.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09604-indent_ternary-2.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09605-negative_value.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09605-negative_value.c
index 6399fbef..6399fbef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09605-negative_value.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09605-negative_value.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09606-extern.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09606-extern.c
index d43131fe..d43131fe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09606-extern.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09606-extern.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09607-attribute.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09607-attribute.c
index 19e3a057..19e3a057 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09607-attribute.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09607-attribute.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09608-func_call_user2.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09608-func_call_user2.c
index ee4e24d4..ee4e24d4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09608-func_call_user2.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09608-func_call_user2.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09609-Issue_2279.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09609-Issue_2279.c
index 88c0ae84..88c0ae84 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09609-Issue_2279.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09609-Issue_2279.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09610-bug_i_876.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09610-bug_i_876.c
index e1afece6..e1afece6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09610-bug_i_876.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09610-bug_i_876.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09611-bug_i_222.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09611-bug_i_222.c
index 4f0ded31..4f0ded31 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09611-bug_i_222.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09611-bug_i_222.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09612-bug_1041.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09612-bug_1041.c
index 7c07615b..7c07615b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09612-bug_1041.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09612-bug_1041.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09613-i1413.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09613-i1413.c
index 4287ca86..4287ca86 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09613-i1413.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09613-i1413.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09614-string_prefixes.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09614-string_prefixes.c
index e901c9ac..e901c9ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09614-string_prefixes.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09614-string_prefixes.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09615-i1564.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09615-i1564.c
index 2b37b25c..2b37b25c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09615-i1564.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09615-i1564.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09616-enum_comma_ifdef.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09616-enum_comma_ifdef.c
index 95637aae..95637aae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09616-enum_comma_ifdef.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09616-enum_comma_ifdef.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09617-Issue_2360.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09617-Issue_2360.c
index 0489b0f9..0489b0f9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09617-Issue_2360.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09617-Issue_2360.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09618-Issue_2360.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09618-Issue_2360.c
index 898c64e6..898c64e6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09618-Issue_2360.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09618-Issue_2360.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09619-Issue_2411.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09619-Issue_2411.c
index 40244488..40244488 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09619-Issue_2411.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09619-Issue_2411.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09620-Issue_2640.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09620-Issue_2640.c
index ba25bcbe..ba25bcbe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09620-Issue_2640.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09620-Issue_2640.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09621-pp-before-func-def.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09621-pp-before-func-def.c
index 948ce135..948ce135 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09621-pp-before-func-def.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09621-pp-before-func-def.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09622-Issue_3356.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09622-Issue_3356.c
index 7f1e0282..7f1e0282 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09622-Issue_3356.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09622-Issue_3356.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09623-vbrace_one_liner.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09623-vbrace_one_liner.c
index bff114d0..bff114d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/09623-vbrace_one_liner.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/09623-vbrace_one_liner.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10003-incdec_postfix_multiply.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10003-incdec_postfix_multiply.c
index 51c2b3a3..51c2b3a3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10003-incdec_postfix_multiply.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10003-incdec_postfix_multiply.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10004-pragma_asm.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10004-pragma_asm.c
index 0e6b48d6..0e6b48d6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10004-pragma_asm.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10004-pragma_asm.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10005-i1270.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10005-i1270.c
index 4831a47a..4831a47a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10005-i1270.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10005-i1270.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10006-bug_2331.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10006-bug_2331.c
index 67088d94..67088d94 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10006-bug_2331.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10006-bug_2331.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10007-indent-macro-brace.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10007-indent-macro-brace.c
index 192a399f..192a399f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10007-indent-macro-brace.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10007-indent-macro-brace.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10008-indent-macro-brace.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10008-indent-macro-brace.c
index a54cd504..a54cd504 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10008-indent-macro-brace.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10008-indent-macro-brace.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10009-return-compound-literal.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10009-return-compound-literal.c
index fad9a3f2..fad9a3f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10009-return-compound-literal.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10009-return-compound-literal.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10010-return-compound-literal.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10010-return-compound-literal.c
index da33e2fd..da33e2fd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10010-return-compound-literal.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10010-return-compound-literal.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10011-return-compound-literal.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10011-return-compound-literal.c
index fad9a3f2..fad9a3f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10011-return-compound-literal.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10011-return-compound-literal.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10012-sparen-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10012-sparen-indent.c
index d9ddbe06..d9ddbe06 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10012-sparen-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10012-sparen-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10013-sparen-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10013-sparen-indent.c
index b09a3102..b09a3102 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10013-sparen-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10013-sparen-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10014-sparen-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10014-sparen-indent.c
index bf0ba8cf..bf0ba8cf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10014-sparen-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10014-sparen-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10015-Issue_2845.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10015-Issue_2845.h
index 9f34b1dc..9f34b1dc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10015-Issue_2845.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10015-Issue_2845.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10016-Issue_3233.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10016-Issue_3233.c
index ccb53151..ccb53151 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10016-Issue_3233.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10016-Issue_3233.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10017-double-sparen.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10017-double-sparen.c
index 6633006e..6633006e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10017-double-sparen.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10017-double-sparen.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10018-double-sparen.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10018-double-sparen.c
index f77262fe..f77262fe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10018-double-sparen.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10018-double-sparen.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10019-include-guard.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10019-include-guard.h
index e742dd4c..e742dd4c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10019-include-guard.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10019-include-guard.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10020-single_line_comment_after.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10020-single_line_comment_after.c
index 527b3e80..527b3e80 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10020-single_line_comment_after.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10020-single_line_comment_after.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10021-parenthesized_indirect_call.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10021-parenthesized_indirect_call.c
index 7fd4d573..7fd4d573 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10021-parenthesized_indirect_call.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10021-parenthesized_indirect_call.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10022-Issue_3269.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10022-Issue_3269.c
index 6baef61c..6baef61c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10022-Issue_3269.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10022-Issue_3269.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10023-Issue_3272.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10023-Issue_3272.h
index 673c5a91..673c5a91 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10023-Issue_3272.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10023-Issue_3272.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10024-Issue_3274.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10024-Issue_3274.c
index f8b9f789..f8b9f789 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10024-Issue_3274.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10024-Issue_3274.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10025-forever.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10025-forever.c
index fc14ccf1..fc14ccf1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10025-forever.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10025-forever.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10026-forever.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10026-forever.c
index 94dc8ce1..94dc8ce1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10026-forever.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10026-forever.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10027-Issue_3327.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10027-Issue_3327.c
index 92ec0779..92ec0779 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10027-Issue_3327.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10027-Issue_3327.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10028-Issue_3339.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10028-Issue_3339.c
index fa6872e4..fa6872e4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10028-Issue_3339.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10028-Issue_3339.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10029-Issue_3339.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10029-Issue_3339.c
index 0b9b50e1..0b9b50e1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10029-Issue_3339.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10029-Issue_3339.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10030-Issue_3339.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10030-Issue_3339.c
index fb71b266..fb71b266 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10030-Issue_3339.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10030-Issue_3339.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10031-Issue_3342.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10031-Issue_3342.c
index 986aab70..986aab70 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10031-Issue_3342.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10031-Issue_3342.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10032-Issue_3345.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10032-Issue_3345.c
index eec63b28..eec63b28 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10032-Issue_3345.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10032-Issue_3345.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10033-Issue_3343.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10033-Issue_3343.c
index 6acdb70e..6acdb70e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10033-Issue_3343.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10033-Issue_3343.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10034-Issue_3343.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10034-Issue_3343.c
index 31eddc22..31eddc22 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10034-Issue_3343.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10034-Issue_3343.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10035-comment-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10035-comment-indent.c
index 4486816e..4486816e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10035-comment-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10035-comment-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10036-comment-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10036-comment-indent.c
index 9ac0677f..9ac0677f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10036-comment-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10036-comment-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10037-Issue_3362.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10037-Issue_3362.c
index abff8de4..abff8de4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10037-Issue_3362.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10037-Issue_3362.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10038-Issue_3362.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10038-Issue_3362.c
index 7a8c08f3..7a8c08f3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10038-Issue_3362.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10038-Issue_3362.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10039-Issue_3370.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10039-Issue_3370.c
index 2586a3b4..2586a3b4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10039-Issue_3370.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10039-Issue_3370.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10040-Issue_3377.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10040-Issue_3377.c
index fc4aa694..fc4aa694 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10040-Issue_3377.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10040-Issue_3377.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10041-Issue_3351.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10041-Issue_3351.c
index 592fc511..592fc511 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10041-Issue_3351.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10041-Issue_3351.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10042-Issue_3376.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10042-Issue_3376.c
index 084e9c7d..084e9c7d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10042-Issue_3376.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10042-Issue_3376.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10043-Issue_3376.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10043-Issue_3376.c
index 6874a984..6874a984 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10043-Issue_3376.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10043-Issue_3376.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10044-Issue_3376.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10044-Issue_3376.c
index b6ea490d..b6ea490d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10044-Issue_3376.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10044-Issue_3376.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10045-Issue_3376.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10045-Issue_3376.c
index fa3776db..fa3776db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10045-Issue_3376.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10045-Issue_3376.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10046-Issue_3402.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10046-Issue_3402.c
index 03f5b5bb..03f5b5bb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10046-Issue_3402.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10046-Issue_3402.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10047-Issue_3421.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10047-Issue_3421.h
index cdc3b4f0..cdc3b4f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10047-Issue_3421.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10047-Issue_3421.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10048-Issue_3431.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10048-Issue_3431.c
index 1af6603e..1af6603e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10048-Issue_3431.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10048-Issue_3431.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10049-Issue_3436.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10049-Issue_3436.c
index d921d9ed..d921d9ed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10049-Issue_3436.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10049-Issue_3436.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10050-Issue_3192.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10050-Issue_3192.c
index a6ff66a2..a6ff66a2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10050-Issue_3192.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10050-Issue_3192.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10051-Issue_3454.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10051-Issue_3454.c
index 8be230dd..8be230dd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10051-Issue_3454.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10051-Issue_3454.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10052-Issue_3472.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10052-Issue_3472.c
index d180a700..d180a700 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10052-Issue_3472.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10052-Issue_3472.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10053-Issue_3476.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10053-Issue_3476.c
index 92a7b0c0..92a7b0c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10053-Issue_3476.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10053-Issue_3476.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10054-Issue_3480.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10054-Issue_3480.c
index 6a25879a..6a25879a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10054-Issue_3480.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10054-Issue_3480.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10055-Issue_3493.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10055-Issue_3493.c
index 66554d57..66554d57 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10055-Issue_3493.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10055-Issue_3493.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10056-Issue_3496.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10056-Issue_3496.h
index b0509bd5..b0509bd5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10056-Issue_3496.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10056-Issue_3496.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10057-Issue_3496.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10057-Issue_3496.h
index 23fbf3b8..23fbf3b8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10057-Issue_3496.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10057-Issue_3496.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10058-Issue_3496.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10058-Issue_3496.h
index 3f056c45..3f056c45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10058-Issue_3496.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10058-Issue_3496.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10059-Issue_3496.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10059-Issue_3496.h
index f914f255..f914f255 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10059-Issue_3496.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10059-Issue_3496.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10060-Issue_3548.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10060-Issue_3548.c
index 71824adc..71824adc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10060-Issue_3548.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10060-Issue_3548.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10061-Issue_3556.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10061-Issue_3556.c
index 423e07f0..423e07f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10061-Issue_3556.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10061-Issue_3556.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10062-Issue_3561.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10062-Issue_3561.c
index db5c5afc..db5c5afc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10062-Issue_3561.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10062-Issue_3561.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10063-Issue_3565.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10063-Issue_3565.c
index 267e25bd..267e25bd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10063-Issue_3565.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10063-Issue_3565.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10064-Issue_3567.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10064-Issue_3567.c
index a56a513c..a56a513c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10064-Issue_3567.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10064-Issue_3567.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10065-Issue_3567.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10065-Issue_3567.c
index 3538b0f6..3538b0f6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10065-Issue_3567.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10065-Issue_3567.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10066-Issue_3580.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10066-Issue_3580.c
index c2baeb12..c2baeb12 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10066-Issue_3580.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10066-Issue_3580.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10077-Issue_3582.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10077-Issue_3582.c
index 65cd5354..65cd5354 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10077-Issue_3582.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10077-Issue_3582.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10078-Issue_3587.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10078-Issue_3587.h
index 3744884f..3744884f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10078-Issue_3587.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10078-Issue_3587.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10079-Issue_3662.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10079-Issue_3662.c
index f27f37e9..f27f37e9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10079-Issue_3662.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10079-Issue_3662.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10080-infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10080-infinite-loops.c
index 71d52db7..71d52db7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10080-infinite-loops.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10080-infinite-loops.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10081-infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10081-infinite-loops.c
new file mode 100644
index 00000000..6898a551
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10081-infinite-loops.c
@@ -0,0 +1,135 @@
+int main(void)
+{
+ int x;
+
+
+ /* Braces on their own lines */
+
+ for (;;)
+ {
+ }
+
+ for(;;)
+ {
+ }
+
+ for(;;)
+ {
+ }
+
+ for(;;)
+ {
+ }
+
+ for(;;)
+ {
+ }
+
+
+ /* Braces on the same lines as the keywords */
+
+ for (;;) {
+ }
+
+ for(;;) {
+ }
+
+ for(;;) {
+ }
+
+ for(;;) {
+ }
+
+ for(;;) {
+ }
+
+
+ /* Braces but everything on one line */
+
+ for (;;) {}
+
+ for(;;) {}
+
+ for(;;) {}
+
+ for(;;) {}
+
+ for(;;) {}
+
+
+ /* No braces */
+
+ for (;;)
+ x++;
+
+ for(;;)
+ x++;
+
+ for(;;)
+ x++;
+
+ for(;;)
+ x++;
+
+ for(;;)
+ x++;
+
+
+ /* No braces and everything on one line */
+
+ for (;;) x++;
+
+ for(;;) x++;
+
+ for(;;) x++;
+
+ for(;;) x++;
+
+ for(;;) x++;
+
+
+ /* Comments near or in loop syntax */
+
+ for (; /*ever*/ ;)
+ x++;
+
+ while (/* always */ 1)
+ x++;
+
+ do
+ x++;
+ while (1) /* without end */;
+
+ /* comment */ for(;;)
+ x++;
+
+ for(;;) // comment
+ x++;
+
+ for(;;) // comment
+ x++;
+ // comment
+
+
+ /* Unusual infinite loop conditions */
+
+ for (; 999 ;)
+ x++;
+
+ while (999)
+ x++;
+
+ do
+ x++;
+ while (999);
+
+ for (; 1 == 1 ;)
+ x++;
+
+ while (1 == 1)
+ x++;
+
+ do
+ x++;
+ while (1 == 1);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10082-infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10082-infinite-loops.c
index 1dd02553..1dd02553 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10082-infinite-loops.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10082-infinite-loops.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10083-infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10083-infinite-loops.c
index 0d514c0f..0d514c0f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10083-infinite-loops.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10083-infinite-loops.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10084-infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10084-infinite-loops.c
new file mode 100644
index 00000000..8d529ec8
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10084-infinite-loops.c
@@ -0,0 +1,135 @@
+int main(void)
+{
+ int x;
+
+
+ /* Braces on their own lines */
+
+ while(1)
+ {
+ }
+
+ while(1)
+ {
+ }
+
+ while(1)
+ {
+ }
+
+ while (1)
+ {
+ }
+
+ while(1)
+ {
+ }
+
+
+ /* Braces on the same lines as the keywords */
+
+ while(1) {
+ }
+
+ while(1) {
+ }
+
+ while(1) {
+ }
+
+ while (1) {
+ }
+
+ while(1) {
+ }
+
+
+ /* Braces but everything on one line */
+
+ while(1) {}
+
+ while(1) {}
+
+ while(1) {}
+
+ while (1) {}
+
+ while(1) {}
+
+
+ /* No braces */
+
+ while(1)
+ x++;
+
+ while(1)
+ x++;
+
+ while(1)
+ x++;
+
+ while (1)
+ x++;
+
+ while(1)
+ x++;
+
+
+ /* No braces and everything on one line */
+
+ while(1) x++;
+
+ while(1) x++;
+
+ while(1) x++;
+
+ while (1) x++;
+
+ while(1) x++;
+
+
+ /* Comments near or in loop syntax */
+
+ for (; /*ever*/ ;)
+ x++;
+
+ while (/* always */ 1)
+ x++;
+
+ do
+ x++;
+ while (1) /* without end */;
+
+ /* comment */ while(1)
+ x++;
+
+ while(1) // comment
+ x++;
+
+ while(1) // comment
+ x++;
+ // comment
+
+
+ /* Unusual infinite loop conditions */
+
+ for (; 999 ;)
+ x++;
+
+ while (999)
+ x++;
+
+ do
+ x++;
+ while (999);
+
+ for (; 1 == 1 ;)
+ x++;
+
+ while (1 == 1)
+ x++;
+
+ do
+ x++;
+ while (1 == 1);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10085-infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10085-infinite-loops.c
index 45841c76..45841c76 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10085-infinite-loops.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10085-infinite-loops.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10086-infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10086-infinite-loops.c
new file mode 100644
index 00000000..774b8413
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10086-infinite-loops.c
@@ -0,0 +1,146 @@
+int main(void)
+{
+ int x;
+
+
+ /* Braces on their own lines */
+
+ for (;;)
+ {
+ }
+
+ for(;;)
+ {
+ }
+
+ for(;;)
+ {
+ }
+
+ for(;;)
+ {
+ }
+
+ for(;;)
+ {
+ }
+
+
+ /* Braces on the same lines as the keywords */
+
+ for (;;) {
+ }
+
+ for(;;) {
+ }
+
+ for(;;) {
+ }
+
+ for(;;) {
+ }
+
+ for(;;) {
+ }
+
+
+ /* Braces but everything on one line */
+
+ for (;;) {}
+
+ for(;;) {}
+
+ for(;;) {}
+
+ for(;;) {}
+
+ for(;;) {}
+
+
+ /* No braces */
+
+ for (;;) {
+ x++;
+ }
+
+ for(;;) {
+ x++;
+ }
+
+ for(;;) {
+ x++;
+ }
+
+ for(;;) {
+ x++;
+ }
+
+ for(;;) {
+ x++;
+ }
+
+
+ /* No braces and everything on one line */
+
+ for (;;) {x++;}
+
+ for(;;) {x++;}
+
+ for(;;) {x++;}
+
+ for(;;) {x++;}
+
+ for(;;) {x++;}
+
+
+ /* Comments near or in loop syntax */
+
+ for (; /*ever*/ ;) {
+ x++;
+ }
+
+ while (/* always */ 1)
+ x++;
+
+ do
+ x++;
+ while (1) /* without end */;
+
+ /* comment */ for(;;) {
+ x++;
+ }
+
+ for(;;) { // comment
+ x++;
+ }
+
+ for(;;) { // comment
+ x++;
+ }
+ // comment
+
+
+ /* Unusual infinite loop conditions */
+
+ for (; 999 ;) {
+ x++;
+ }
+
+ while (999)
+ x++;
+
+ do
+ x++;
+ while (999);
+
+ for (; 1 == 1 ;) {
+ x++;
+ }
+
+ while (1 == 1)
+ x++;
+
+ do
+ x++;
+ while (1 == 1);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10087-infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10087-infinite-loops.c
index bd10fa6c..bd10fa6c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10087-infinite-loops.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10087-infinite-loops.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10088-infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10088-infinite-loops.c
index 082730b7..082730b7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10088-infinite-loops.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10088-infinite-loops.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10089-infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10089-infinite-loops.c
new file mode 100644
index 00000000..9094e611
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10089-infinite-loops.c
@@ -0,0 +1,146 @@
+int main(void)
+{
+ int x;
+
+
+ /* Braces on their own lines */
+
+ while(1)
+ {
+ }
+
+ while(1)
+ {
+ }
+
+ while(1)
+ {
+ }
+
+ while (1)
+ {
+ }
+
+ while(1)
+ {
+ }
+
+
+ /* Braces on the same lines as the keywords */
+
+ while(1) {
+ }
+
+ while(1) {
+ }
+
+ while(1) {
+ }
+
+ while (1) {
+ }
+
+ while(1) {
+ }
+
+
+ /* Braces but everything on one line */
+
+ while(1) {}
+
+ while(1) {}
+
+ while(1) {}
+
+ while (1) {}
+
+ while(1) {}
+
+
+ /* No braces */
+
+ while(1) {
+ x++;
+ }
+
+ while(1) {
+ x++;
+ }
+
+ while(1) {
+ x++;
+ }
+
+ while (1) {
+ x++;
+ }
+
+ while(1) {
+ x++;
+ }
+
+
+ /* No braces and everything on one line */
+
+ while(1) {x++;}
+
+ while(1) {x++;}
+
+ while(1) {x++;}
+
+ while (1) {x++;}
+
+ while(1) {x++;}
+
+
+ /* Comments near or in loop syntax */
+
+ for (; /*ever*/ ;)
+ x++;
+
+ while (/* always */ 1) {
+ x++;
+ }
+
+ do
+ x++;
+ while (1) /* without end */;
+
+ /* comment */ while(1) {
+ x++;
+ }
+
+ while(1) { // comment
+ x++;
+ }
+
+ while(1) { // comment
+ x++;
+ }
+ // comment
+
+
+ /* Unusual infinite loop conditions */
+
+ for (; 999 ;)
+ x++;
+
+ while (999) {
+ x++;
+ }
+
+ do
+ x++;
+ while (999);
+
+ for (; 1 == 1 ;)
+ x++;
+
+ while (1 == 1) {
+ x++;
+ }
+
+ do
+ x++;
+ while (1 == 1);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10090-infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10090-infinite-loops.c
index 301435cb..301435cb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10090-infinite-loops.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10090-infinite-loops.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10091-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10091-int-types.c
index ef816676..ef816676 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10091-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10091-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10092-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10092-int-types.c
index c8342e53..c8342e53 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10092-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10092-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10093-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10093-int-types.c
index 1095528c..1095528c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10093-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10093-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10094-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10094-int-types.c
index 4ea57931..4ea57931 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10094-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10094-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10095-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10095-int-types.c
index d856e20d..d856e20d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10095-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10095-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10096-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10096-int-types.c
index d25a1589..d25a1589 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10096-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10096-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10097-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10097-int-types.c
index cbf7c128..cbf7c128 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10097-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10097-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10098-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10098-int-types.c
index 3553f9bc..3553f9bc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10098-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10098-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10099-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10099-int-types.c
index d6d07b82..d6d07b82 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10099-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10099-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10100-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10100-int-types.c
index fd4d4fe6..fd4d4fe6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10100-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10100-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10101-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10101-int-types.c
index a81cbc62..a81cbc62 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10101-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10101-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10102-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10102-int-types.c
index 9edf7fcc..9edf7fcc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10102-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10102-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10103-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10103-int-types.c
index 15cf2dd5..15cf2dd5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10103-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10103-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10104-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10104-int-types.c
index 9b3c8720..9b3c8720 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10104-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10104-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10105-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10105-int-types.c
index 57924029..57924029 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10105-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10105-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10106-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10106-int-types.c
index fbe47a9a..fbe47a9a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10106-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10106-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10107-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10107-int-types.c
index 142159aa..142159aa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10107-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10107-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10108-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10108-int-types.c
index 9e69f009..9e69f009 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10108-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10108-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10109-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10109-int-types.c
index 142159aa..142159aa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10109-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10109-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10110-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10110-int-types.c
index 9e69f009..9e69f009 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10110-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10110-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10111-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10111-int-types.c
index c7b58ba0..c7b58ba0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10111-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10111-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10112-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10112-int-types.c
index ac42591f..ac42591f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10112-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10112-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10113-int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10113-int-types.c
index f4085895..f4085895 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/c/10113-int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10113-int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10114-Issue_3989.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10114-Issue_3989.c
new file mode 100644
index 00000000..ee975151
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10114-Issue_3989.c
@@ -0,0 +1 @@
+int * foo(int*);
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10120-sp_after_sparen.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10120-sp_after_sparen.c
new file mode 100644
index 00000000..4aa04624
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10120-sp_after_sparen.c
@@ -0,0 +1,9 @@
+if (true) x();
+
+while (true)x();
+
+while(true) x();
+
+for (;;) {
+ x()
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10121-sp_after_sparen.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10121-sp_after_sparen.c
new file mode 100644
index 00000000..f57b15bf
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10121-sp_after_sparen.c
@@ -0,0 +1,9 @@
+if (true) x();
+
+while (true) x();
+
+while(true) x();
+
+for (;;) {
+ x()
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10122-sp_after_sparen.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10122-sp_after_sparen.c
new file mode 100644
index 00000000..885677ef
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10122-sp_after_sparen.c
@@ -0,0 +1,9 @@
+if (true)x();
+
+while (true)x();
+
+while(true)x();
+
+for (;;){
+ x()
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10123-sp_after_sparen.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10123-sp_after_sparen.c
new file mode 100644
index 00000000..9224387d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10123-sp_after_sparen.c
@@ -0,0 +1,9 @@
+if (true) x();
+
+while (true) x();
+
+while(true) x();
+
+for (;;) {
+ x()
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10124-Issue_3985.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10124-Issue_3985.c
new file mode 100644
index 00000000..735e40f6
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10124-Issue_3985.c
@@ -0,0 +1,14 @@
+int keep_symbol()
+{
+ if (
+#ifdef HAVE_BFD_2_34
+ bfd_section_size() == 0
+#else
+ bfd_get_section_size() == 0
+#endif
+ )
+ {
+ return false;
+ }
+ return true;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10125-Issue_3992.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10125-Issue_3992.c
new file mode 100644
index 00000000..02becdba
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/c/10125-Issue_3992.c
@@ -0,0 +1,6 @@
+UUID guid_decode()
+{
+ UUID id = { 0x00000000, 0x0000, 0x0000, 0x0000, id1 };
+
+ UUID id = { 0x00000000, 0x0000, 0x0000, 0x0000, { id2 } };
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/02102-indent-c.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/02102-indent-c.cpp
new file mode 100644
index 00000000..53b37612
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/02102-indent-c.cpp
@@ -0,0 +1,1024 @@
+/**
+ * @file indent.cpp
+ * Does all the indenting stuff.
+ *
+ * $Id: indent.cpp 548 2006-10-21 02:31:55Z bengardner $
+ */
+#include "uncrustify_types.h"
+#include "chunk.h"
+#include "prototypes.h"
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <cerrno>
+#include <cctype>
+
+
+/**
+ * General indenting approach:
+ * Indenting levels are put into a stack.
+ *
+ * The stack entries contain:
+ * - opening type
+ * - brace column
+ * - continuation column
+ *
+ * Items that start a new stack item:
+ * - preprocessor (new parse frame)
+ * - Brace Open (Virtual brace also)
+ * - Paren, Square, Angle open
+ * - Assignments
+ * - C++ '<<' operator (ie, cout << "blah")
+ * - case
+ * - class colon
+ * - return
+ * - types
+ * - any other continued statement
+ *
+ * Note that the column of items marked 'PCF_WAS_ALIGNED' is not changed.
+ *
+ * For an open brace:
+ * - indent increases by indent_columns
+ * - if part of if/else/do/while/switch/etc, an extra indent may be applied
+ * - if in a paren, then cont-col is set to column + 1, ie "({ some code })"
+ *
+ * Open paren/square/angle:
+ * cont-col is set to the column of the item after the open paren, unless
+ * followed by a newline, then it is set to (brace-col + indent_columns).
+ * Examples:
+ * a_really_long_funcion_name(
+ * param1, param2);
+ * a_really_long_funcion_name(param1,
+ * param2);
+ *
+ * Assignments:
+ * Assignments are continued aligned with the first item after the assignment,
+ * unless the assign is followed by a newline.
+ * Examples:
+ * some.variable = asdf + asdf +
+ * asdf;
+ * some.variable =
+ * asdf + asdf + asdf;
+ *
+ * C++ << operator:
+ * Handled the same as assignment.
+ * Examples:
+ * cout << "this is test number: "
+ * << test_number;
+ *
+ * case:
+ * Started with case or default.
+ * Terminated with close brace at level or another case or default.
+ * Special indenting according to various rules.
+ * - indent of case label
+ * - indent of case body
+ * - how to handle optional braces
+ * Examples:
+ * {
+ * case x: {
+ * a++;
+ * break;
+ * }
+ * case y:
+ * b--;
+ * break;
+ * default:
+ * c++;
+ * break;
+ * }
+ *
+ * Class colon:
+ * Indent continuation by indent_columns:
+ * class my_class :
+ * baseclass1,
+ * baseclass2
+ * {
+ *
+ * Return: same as assignemts
+ * If the return statement is not fully paren'd, then the indent continues at
+ * the column of the item after the return. If it is paren'd, then the paren
+ * rules apply.
+ * return somevalue +
+ * othervalue;
+ *
+ * Type: pretty much the same as assignments
+ * Examples:
+ * int foo,
+ * bar,
+ * baz;
+ *
+ * Any other continued item:
+ * There shouldn't be anything not covered by the above cases, but any other
+ * continued item is indented by indent_columns:
+ * Example:
+ * somereallycrazylongname.with[lotsoflongstuff].
+ * thatreallyannoysme.whenIhavetomaintain[thecode] = 3;
+ */
+
+static void indent_comment(Chunk *pc, int col);
+
+
+void indent_to_column(Chunk *pc, int column)
+ {
+ if (column < pc->GetColumn())
+ column = pc->GetColumn();
+
+ reindent_line(pc, column);
+ }
+
+/**
+ * Changes the initial indent for a line to the given column
+ *
+ * @param pc The chunk at the start of the line
+ * @param column The desired column
+ */
+void reindent_line(Chunk *pc, int column)
+ {
+ int col_delta;
+ int min_col;
+
+ LOG_FMT(LINDLINE, "%s: %d] col %d on %.*s [%s] => %d\n",
+ __func__, pc->GetOrigLine(), pc->GetColumn(), pc->len, pc->GetStr(),
+ get_token_name(pc->GetType()), column);
+
+ if (column == pc->GetColumn())
+ return;
+
+ col_delta = column - pc->GetColumn();
+ pc->SetColumn(column);
+ min_col = pc->GetColumn();
+
+ do
+ {
+ min_col += pc->len;
+ pc = pc->GetNext();
+
+ if (pc != NULL)
+ {
+ if (pc->IsComment())
+ {
+ pc->SetColumn(pc->GetOrigCol());
+
+ if (pc->GetColumn() < min_col)
+ pc->SetColumn(min_col + 1);
+
+ LOG_FMT(LINDLINE, "%s: set comment on line %d to col %d (orig %d)\n",
+ __func__, pc->GetOrigLine(), pc->GetColumn(), pc->GetOrigCol());
+ }
+ else
+ {
+ pc->SetColumn(pc->GetColumn() + col_delta);
+
+ if (pc->GetColumn() < min_col)
+ pc->SetColumn(min_col);
+ }
+ }
+ }
+ while ((pc != NULL) && (pc->GetNlCount() == 0));
+ }
+
+/**
+ * Starts a new entry
+ *
+ * @param frm The parse frame
+ * @param pc The chunk causing the push
+ */
+static void indent_pse_push(struct parse_frame& frm, Chunk *pc)
+ {
+ static int ref = 0;
+
+ /* check the stack depth */
+ if (frm.m_parenStack_tos < (int)ARRAY_SIZE(frm.m_parenStack))
+ {
+ /* Bump up the index and initialize it */
+ frm.pse_tos++;
+ memset(&frm.m_parenStack[frm.m_parenStack_tos], 0, sizeof(frm.m_parenStack[frm.m_parenStack_tos]));
+
+ LOG_FMT(LINDPSE, "%4d] OPEN [%d,%s] level=%d\n",
+ pc->GetOrigLine(), frm.pse_tos, get_token_name(pc->GetType()), pc->GetLevel());
+
+ frm.m_parenStack[frm.m_parenStack_tos].type = pc->GetType();
+ frm.m_parenStack[frm.m_parenStack_tos].level = pc->GetLevel();
+ frm.m_parenStack[frm.m_parenStack_tos].open_line = pc->GetOrigLine();
+ frm.m_parenStack[frm.m_parenStack_tos].ref = ++ref;
+ frm.m_parenStack[frm.m_parenStack_tos].in_preproc = (pc->GetFlags() & PCF_IN_PREPROC) != 0;
+ }
+ }
+
+/**
+ * Removes the top entry
+ *
+ * @param frm The parse frame
+ * @param pc The chunk causing the push
+ */
+static void indent_pse_pop(struct parse_frame& frm, Chunk *pc)
+ {
+ /* Bump up the index and initialize it */
+ if (frm.pse_tos > 0)
+ {
+ if (pc != NULL)
+ {
+ LOG_FMT(LINDPSE, "%4d] CLOSE [%d,%s] on %s, started on line %d, level=%d/%d\n",
+ pc->GetOrigLine(), frm.pse_tos,
+ get_token_name(frm.m_parenStack[frm.m_parenStack_tos].type),
+ get_token_name(pc->GetType()),
+ frm.m_parenStack[frm.m_parenStack_tos].open_line,
+ frm.m_parenStack[frm.m_parenStack_tos].level,
+ pc->GetLevel());
+ }
+ else
+ {
+ LOG_FMT(LINDPSE, " EOF] CLOSE [%d,%s], started on line %d\n",
+ frm.m_parenStack_tos, get_token_name(frm.m_parenStack[frm.m_parenStack_tos].type),
+ frm.m_parenStack[frm.m_parenStack_tos].open_line);
+ }
+
+ frm.pse_tos--;
+ }
+ }
+
+static int token_indent(E_Token type)
+ {
+ switch (type)
+ {
+ case CT_IF:
+ case CT_DO:
+ return 3;
+
+ case CT_FOR:
+ case CT_ELSE: // wacky, but that's what is wanted
+ return 4;
+
+ case CT_WHILE:
+ return 6;
+
+ case CT_SWITCH:
+ return 7;
+
+ case CT_ELSEIF:
+ return 8;
+
+ default:
+ return 0; //cpd.settings[UO_indent_braces].n;
+ }
+ }
+
+/**
+ * Change the top-level indentation only by changing the column member in
+ * the chunk structures.
+ * The level indicator must already be set.
+ */
+void indent_text(void)
+ {
+ Chunk *pc;
+ Chunk *next;
+ Chunk *prev = NULL;
+ bool did_newline = true;
+ int idx;
+ int vardefcol = 0;
+ int indent_size = cpd.settings[UO_indent_columns].n;
+ int tmp;
+ struct parse_frame frm;
+ bool in_preproc = false, was_preproc = false;
+ int indent_column;
+ int cout_col = 0; // for aligning << stuff
+ int cout_level = 0; // for aligning << stuff
+ int parent_token_indent = 0;
+
+ memset(&frm, 0, sizeof(frm));
+
+ /* dummy top-level entry */
+ frm.m_parenStack[0].indent = 1;
+ frm.m_parenStack[0].indent_tmp = 1;
+ frm.m_parenStack[0].type = CT_EOF;
+
+ pc = Chunk::GetHead();
+
+ while (pc != NULL)
+ {
+ /* Handle proprocessor transitions */
+ was_preproc = in_preproc;
+ in_preproc = (pc->GetFlags() & PCF_IN_PREPROC) != 0;
+
+ if (cpd.settings[UO_indent_brace_parent].b)
+ parent_token_indent = token_indent(pc->GetParentType());
+
+ /* Clean up after a #define */
+ if (!in_preproc)
+ while ((frm.m_parenStack_tos > 0) && frm.m_parenStack[frm.m_parenStack_tos].in_preproc)
+ indent_pse_pop(frm, pc);
+
+ else
+ {
+ pf_check(&frm, pc);
+
+ if (!was_preproc)
+ {
+ /* Transition into a preproc by creating a dummy indent */
+ frm.level++;
+ indent_pse_push(frm, pc);
+
+ frm.m_parenStack[frm.m_parenStack_tos].indent = 1 + indent_size;
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos].indent;
+ }
+ }
+
+ if ((cout_col > 0) &&
+ (pc->IsSemicolon() ||
+ (pc->GetLevel() < cout_level)))
+ {
+ cout_col = 0;
+ cout_level = 0;
+ }
+
+ /**
+ * Handle non-brace closures
+ */
+
+ int old_pse_tos;
+
+ do
+ {
+ old_pse_tos = frm.pse_tos;
+
+ /* End anything that drops a level
+ * REVISIT: not sure about the preproc check
+ */
+ if (!pc->IsNewline() &&
+ !pc->IsComment() &&
+ ((pc->GetFlags() & PCF_IN_PREPROC) == 0) &&
+ (frm.m_parenStack[frm.m_parenStack_tos].level > pc->GetLevel()))
+ indent_pse_pop(frm, pc);
+
+ if (frm.m_parenStack[frm.m_parenStack_tos].level == pc->GetLevel())
+ {
+ /* process virtual braces closes (no text output) */
+ if ((pc->GetType() == CT_VBRACE_CLOSE) &&
+ (frm.m_parenStack[frm.m_parenStack_tos].type == CT_VBRACE_OPEN))
+ {
+ indent_pse_pop(frm, pc);
+ frm.level--;
+ pc = pc->GetNext();
+ }
+
+ /* End any assign operations with a semicolon on the same level */
+ if ((frm.m_parenStack[frm.m_parenStack_tos].type == CT_ASSIGN) &&
+ (pc->IsSemicolon() ||
+ (pc->GetType() == CT_COMMA) ||
+ (pc->GetType() == CT_BRACE_OPEN)))
+ indent_pse_pop(frm, pc);
+
+ /* End any CPP class colon crap */
+ if ((frm.m_parenStack[frm.m_parenStack_tos].type == CT_CLASS_COLON) &&
+ ((pc->GetType() == CT_BRACE_OPEN) ||
+ pc->IsSemicolon()))
+ indent_pse_pop(frm, pc);
+
+ /* a case is ended with another case or a close brace */
+ if ((frm.m_parenStack[frm.m_parenStack_tos].type == CT_CASE) &&
+ ((pc->GetType() == CT_BRACE_CLOSE) ||
+ (pc->GetType() == CT_CASE)))
+ indent_pse_pop(frm, pc);
+
+ /* a return is ended with a semicolon */
+ if ((frm.m_parenStack[frm.m_parenStack_tos].type == CT_RETURN) &&
+ pc->IsSemicolon())
+ indent_pse_pop(frm, pc);
+
+ /* Close out parens and squares */
+ if ((frm.m_parenStack[frm.m_parenStack_tos].type == (pc->GetType() - 1)) &&
+ ((pc->GetType() == CT_PAREN_CLOSE) ||
+ (pc->GetType() == CT_SPAREN_CLOSE) ||
+ (pc->GetType() == CT_FPAREN_CLOSE) ||
+ (pc->GetType() == CT_SQUARE_CLOSE) ||
+ (pc->GetType() == CT_ANGLE_CLOSE)))
+ {
+ indent_pse_pop(frm, pc);
+ frm.SetParenCount(frm.GetParenCount() - 1);
+ }
+ }
+ }
+ while (old_pse_tos > frm.pse_tos);
+
+ /* Grab a copy of the current indent */
+ indent_column = frm.m_parenStack[frm.m_parenStack_tos].indent_tmp;
+
+ if (!pc->IsNewline() && !pc->IsComment())
+ {
+ LOG_FMT(LINDPC, " -=[ %.*s ]=- top=%d %s %d/%d\n",
+ pc->len, pc->GetStr(),
+ frm.pse_tos,
+ get_token_name(frm.m_parenStack[frm.m_parenStack_tos].type),
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp,
+ frm.m_parenStack[frm.m_parenStack_tos].indent);
+ }
+
+ /**
+ * Handle stuff that can affect the current indent:
+ * - brace close
+ * - vbrace open
+ * - brace open
+ * - case (immediate)
+ * - labels (immediate)
+ * - class colons (immediate)
+ *
+ * And some stuff that can't
+ * - open paren
+ * - open square
+ * - assignment
+ * - return
+ */
+
+ if (pc->GetType() == CT_BRACE_CLOSE)
+ {
+ if (frm.m_parenStack[frm.m_parenStack_tos].type == CT_BRACE_OPEN)
+ {
+ indent_pse_pop(frm, pc);
+ frm.level--;
+
+ /* Update the indent_column if needed */
+ if (!cpd.settings[UO_indent_braces].b &&
+ (parent_token_indent == 0))
+ indent_column = frm.m_parenStack[frm.m_parenStack_tos].indent_tmp;
+
+ if ((pc->GetParentType() == CT_IF) ||
+ (pc->GetParentType() == CT_ELSE) ||
+ (pc->GetParentType() == CT_ELSEIF) ||
+ (pc->GetParentType() == CT_DO) ||
+ (pc->GetParentType() == CT_WHILE) ||
+ (pc->GetParentType() == CT_SWITCH) ||
+ (pc->GetParentType() == CT_FOR))
+ indent_column += cpd.settings[UO_indent_brace].n;
+ }
+ }
+ else if (pc->GetType() == CT_VBRACE_OPEN)
+ {
+ frm.level++;
+ indent_pse_push(frm, pc);
+
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - 1].indent + indent_size;
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos].indent;
+
+ /* Always indent on virtual braces */
+ indent_column = frm.m_parenStack[frm.m_parenStack_tos].indent_tmp;
+ }
+ else if (pc->GetType() == CT_BRACE_OPEN)
+ {
+ frm.level++;
+ indent_pse_push(frm, pc);
+
+ if (frm.GetParenCount() != 0)
+ /* We are inside ({ ... }) -- indent one tab from the paren */
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - 1].indent_tmp + indent_size;
+ else
+ {
+ /* Use the prev indent level + indent_size. */
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - 1].indent + indent_size;
+
+ /* If this brace is part of a statement, bump it out by indent_brace */
+ if ((pc->GetParentType() == CT_IF) ||
+ (pc->GetParentType() == CT_ELSE) ||
+ (pc->GetParentType() == CT_ELSEIF) ||
+ (pc->GetParentType() == CT_DO) ||
+ (pc->GetParentType() == CT_WHILE) ||
+ (pc->GetParentType() == CT_SWITCH) ||
+ (pc->GetParentType() == CT_FOR))
+ {
+ if (parent_token_indent != 0)
+ frm.m_parenStack[frm.m_parenStack_tos].indent += parent_token_indent - indent_size;
+ else
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent += cpd.settings[UO_indent_brace].n;
+ indent_column += cpd.settings[UO_indent_brace].n;
+ }
+ }
+ else if (pc->GetParentType() == CT_CASE)
+ {
+ /* The indent_case_brace setting affects the parent CT_CASE */
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp += cpd.settings[UO_indent_case_brace].n;
+ frm.m_parenStack[frm.m_parenStack_tos].indent += cpd.settings[UO_indent_case_brace].n;
+ }
+ else if ((pc->GetParentType() == CT_CLASS) && !cpd.settings[UO_indent_class].b)
+ frm.m_parenStack[frm.m_parenStack_tos].indent -= indent_size;
+ else if ((pc->GetParentType() == CT_NAMESPACE) && !cpd.settings[UO_indent_namespace].b)
+ frm.m_parenStack[frm.m_parenStack_tos].indent -= indent_size;
+ }
+
+ if ((pc->GetFlags() & PCF_DONT_INDENT) != 0)
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent = pc->GetColumn();
+ indent_column = pc->GetColumn();
+ }
+ else
+ {
+ /**
+ * If there isn't a newline between the open brace and the next
+ * item, just indent to wherever the next token is.
+ * This covers this sort of stuff:
+ * { a++;
+ * b--; };
+ */
+ next = pc->GetNextNcNnl();
+
+ if (!pc->IsNewlineBetween(next))
+ frm.m_parenStack[frm.m_parenStack_tos].indent = next->GetColumn();
+
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos].indent;
+ frm.m_parenStack[frm.m_parenStack_tos].open_line = pc->GetOrigLine();
+
+ /* Update the indent_column if needed */
+ if (cpd.settings[UO_indent_braces].n ||
+ (parent_token_indent != 0))
+ indent_column = frm.m_parenStack[frm.m_parenStack_tos].indent_tmp;
+ }
+ }
+ else if (pc->GetType() == CT_CASE)
+ {
+ /* Start a case - indent UO_indent_switch_case from the switch level */
+ tmp = frm.m_parenStack[frm.m_parenStack_tos].indent + cpd.settings[UO_indent_switch_case].n;
+
+ indent_pse_push(frm, pc);
+
+ frm.m_parenStack[frm.m_parenStack_tos].indent = tmp;
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = tmp - indent_size;
+
+ /* Always set on case statements */
+ indent_column = frm.m_parenStack[frm.m_parenStack_tos].indent_tmp;
+ }
+ else if (pc->GetType() == CT_LABEL)
+ {
+ /* Labels get sent to the left or backed up */
+ if (cpd.settings[UO_indent_label].n > 0)
+ indent_column = cpd.settings[UO_indent_label].n;
+ else
+ indent_column = frm.m_parenStack[frm.m_parenStack_tos].indent +
+ cpd.settings[UO_indent_label].n;
+ }
+ else if (pc->GetType() == CT_CLASS_COLON)
+ {
+ /* just indent one level */
+ indent_pse_push(frm, pc);
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - 1].indent_tmp + indent_size;
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos].indent;
+
+ indent_column = frm.m_parenStack[frm.m_parenStack_tos].indent_tmp;
+
+ if (cpd.settings[UO_indent_class_colon].b)
+ {
+ prev = pc->GetPrev();
+
+ if (prev->IsNewline())
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent += 2;
+ /* don't change indent of current line */
+ }
+ }
+ }
+ else if ((pc->GetType() == CT_PAREN_OPEN) ||
+ (pc->GetType() == CT_SPAREN_OPEN) ||
+ (pc->GetType() == CT_FPAREN_OPEN) ||
+ (pc->GetType() == CT_SQUARE_OPEN) ||
+ (pc->GetType() == CT_ANGLE_OPEN))
+ {
+ /* Open parens and squares - never update indent_column */
+ indent_pse_push(frm, pc);
+ frm.m_parenStack[frm.m_parenStack_tos].indent = pc->GetColumn() + pc->len;
+
+ if (cpd.settings[UO_indent_func_call_param].b &&
+ (pc->GetType() == CT_FPAREN_OPEN) &&
+ (pc->GetParentType() == CT_FUNC_CALL))
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - 1].indent + indent_size;
+
+ if ((chunk_is_str(pc, "(", 1) && !cpd.settings[UO_indent_paren_nl].b) ||
+ (chunk_is_str(pc, "[", 1) && !cpd.settings[UO_indent_square_nl].b))
+ {
+ next = pc->GetNextNc();
+
+ if (next->IsNewline())
+ {
+ int sub = 1;
+
+ if (frm.m_parenStack[frm.m_parenStack_tos - 1].type == CT_ASSIGN)
+ sub = 2;
+
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - sub].indent + indent_size;
+ }
+ }
+
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos].indent;
+ frm.SetParenCount(frm.GetParenCount() + 1);
+ }
+ else if (pc->GetType() == CT_ASSIGN)
+ {
+ /**
+ * if there is a newline after the '=', just indent one level,
+ * otherwise align on the '='.
+ * Never update indent_column.
+ */
+ next = pc->GetNext();
+
+ if (next != NULL)
+ {
+ indent_pse_push(frm, pc);
+
+ if (next->IsNewline())
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - 1].indent_tmp + indent_size;
+ else
+ frm.m_parenStack[frm.m_parenStack_tos].indent = pc->GetColumn() + pc->len + 1;
+
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos].indent;
+ }
+ }
+ else if (pc->GetType() == CT_RETURN)
+ {
+ /* don't count returns inside a () or [] */
+ if (pc->GetLevel() == pc->GetBraceLevel())
+ {
+ indent_pse_push(frm, pc);
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - 1].indent + pc->len + 1;
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos - 1].indent;
+ }
+ }
+ else if (chunk_is_str(pc, "<<", 2))
+ {
+ if (cout_col == 0)
+ {
+ cout_col = pc->GetColumn();
+ cout_level = pc->GetLevel();
+ }
+ }
+ else
+ {
+ /* anything else? */
+ }
+
+ /**
+ * Indent the line if needed
+ */
+ if (did_newline && !pc->IsNewline() && (pc->len != 0))
+ {
+ /**
+ * Check for special continuations.
+ * Note that some of these could be done as a stack item like
+ * everything else
+ */
+
+ prev = pc->GetPrevNcNnl();
+
+ if ((pc->GetType() == CT_MEMBER) ||
+ (pc->GetType() == CT_DC_MEMBER) ||
+ ((prev != NULL) &&
+ ((prev->GetType() == CT_MEMBER) ||
+ (prev->GetType() == CT_DC_MEMBER))))
+ {
+ tmp = cpd.settings[UO_indent_member].n + indent_column;
+ LOG_FMT(LINDENT, "%s: %d] member => %d\n",
+ __func__, pc->GetOrigLine(), tmp);
+ reindent_line(pc, tmp);
+ }
+ else if (chunk_is_str(pc, "<<", 2) && (cout_col > 0))
+ {
+ LOG_FMT(LINDENT, "%s: %d] cout_col => %d\n",
+ __func__, pc->GetOrigLine(), cout_col);
+ reindent_line(pc, cout_col);
+ }
+ else if ((vardefcol > 0) &&
+ (pc->GetType() == CT_WORD) &&
+ ((pc->GetFlags() & PCF_VAR_DEF) != 0) &&
+ (prev != NULL) && (prev->GetType() == CT_COMMA))
+ {
+ LOG_FMT(LINDENT, "%s: %d] Vardefcol => %d\n",
+ __func__, pc->GetOrigLine(), vardefcol);
+ reindent_line(pc, vardefcol);
+ }
+ else if ((pc->GetType() == CT_STRING) && (prev->GetType() == CT_STRING) &&
+ cpd.settings[UO_indent_align_string].b)
+ {
+ LOG_FMT(LINDENT, "%s: %d] String => %d\n",
+ __func__, pc->GetOrigLine(), prev->GetColumn());
+ reindent_line(pc, prev->GetColumn());
+ }
+ else if (pc->IsComment())
+ {
+ LOG_FMT(LINDENT, "%s: %d] comment => %d\n",
+ __func__, pc->GetOrigLine(), frm.m_parenStack[frm.m_parenStack_tos].indent_tmp);
+ indent_comment(pc, frm.m_parenStack[frm.m_parenStack_tos].indent_tmp);
+ }
+ else if (pc->GetType() == CT_PREPROC)
+ {
+ /* Preprocs are always in column 1. See indent_preproc() */
+ if (pc->GetColumn() != 1)
+ reindent_line(pc, 1);
+ }
+ else
+ {
+ if (pc->GetColumn() != indent_column)
+ {
+ LOG_FMT(LINDENT, "%s: %d] indent => %d [%.*s]\n",
+ __func__, pc->GetOrigLine(), indent_column, pc->len, pc->GetStr());
+ reindent_line(pc, indent_column);
+ }
+ }
+
+ did_newline = false;
+ }
+
+ /**
+ * Handle variable definition continuation indenting
+ */
+ if ((pc->GetType() == CT_WORD) &&
+ ((pc->GetFlags() & PCF_IN_FCN_DEF) == 0) &&
+ ((pc->GetFlags() & PCF_VAR_1ST_DEF) == PCF_VAR_1ST_DEF))
+ vardefcol = pc->GetColumn();
+
+ if (pc->IsSemicolon() ||
+ ((pc->GetType() == CT_BRACE_OPEN) && (pc->GetParentType() == CT_FUNCTION)))
+ vardefcol = 0;
+
+ /* if we hit a newline, reset indent_tmp */
+ if (pc->IsNewline() ||
+ (pc->GetType() == CT_COMMENT_MULTI) ||
+ (pc->GetType() == CT_COMMENT_CPP))
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos].indent;
+
+ /**
+ * Handle the case of a multi-line #define w/o anything on the
+ * first line (indent_tmp will be 1 or 0)
+ */
+ if ((pc->GetType() == CT_NL_CONT) &&
+ (frm.m_parenStack[frm.m_parenStack_tos].indent_tmp <= indent_size))
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = indent_size + 1;
+
+ /* Get ready to indent the next item */
+ did_newline = true;
+ }
+
+ if (!pc->IsComment() && !pc->IsNewline())
+ prev = pc;
+
+ pc = pc->GetNext();
+ }
+
+ /* Throw out any stuff inside a preprocessor - no need to warn */
+ while ((frm.m_parenStack_tos > 0) && frm.m_parenStack[frm.m_parenStack_tos].in_preproc)
+ indent_pse_pop(frm, pc);
+
+ for (idx = 1; idx <= frm.pse_tos; idx++)
+ {
+ LOG_FMT(LWARN, "%s:%d Unmatched %s\n",
+ cpd.filename, frm.m_parenStack[idx].open_line,
+ get_token_name(frm.m_parenStack[idx].type));
+ cpd.error_count++;
+ }
+ }
+
+/**
+ * returns true if forward scan reveals only single newlines or comments
+ * stops when hits code
+ * false if next thing hit is a closing brace, also if 2 newlines in a row
+ */
+
+
+static bool single_line_comment_indent_rule_applies(Chunk *start)
+ {
+ Chunk *pc = start;
+ int nl_count = 0;
+
+ if (!pc->IsSingleLineComment())
+ return false;
+
+ /* scan forward, if only single newlines and comments before next line of code, we want to apply */
+ while ((pc = pc->GetNext()) != NULL)
+ {
+ if (pc->IsNewline())
+ {
+ if (nl_count > 0 || pc->GetNlCount() > 1)
+ return false;
+
+ nl_count++;
+ }
+ else
+ {
+ nl_count = 0;
+
+ if (!pc->IsSingleLineComment())
+ {
+ /* here we check for things to run into that we wouldn't want to indent the comment for */
+ /* for example, non-single line comment, closing brace */
+ if (pc->IsComment() || pc->IsBraceClose())
+ return false;
+
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+/**
+ * REVISIT: This needs to be re-checked, maybe cleaned up
+ *
+ * Indents comments in a (hopefully) smart manner.
+ *
+ * There are two type of comments that get indented:
+ * - stand alone (ie, no tokens on the line before the comment)
+ * - trailing comments (last token on the line apart from a linefeed)
+ * + note that a stand-alone comment is a special case of a trailing
+ *
+ * The stand alone comments will get indented in one of three ways:
+ * - column 1:
+ * + There is an empty line before the comment AND the indent level is 0
+ * + The comment was originally in column 1
+ *
+ * - Same column as trailing comment on previous line (ie, aligned)
+ * + if originally within TBD (3) columns of the previous comment
+ *
+ * - syntax indent level
+ * + doesn't fit in the previous categories
+ *
+ * Options modify this behavior:
+ * - keep original column (don't move the comment, if possible)
+ * - keep relative column (move out the same amount as first item on line)
+ * - fix trailing comment in column TBD
+ *
+ * @param pc The comment, which is the first item on a line
+ * @param col The column if this is to be put at indent level
+ */
+static void indent_comment(Chunk *pc, int col)
+ {
+ Chunk *nl;
+ Chunk *prev;
+
+ LOG_FMT(LCMTIND, "%s: line %d, col %d, level %d: ", __func__,
+ pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
+
+ /* force column 1 comment to column 1 if not changing them */
+ if ((pc->GetOrigCol() == 1) && !cpd.settings[UO_indent_col1_comment].b)
+ {
+ LOG_FMT(LCMTIND, "rule 1 - keep in col 1\n");
+ pc->SetColumn(1);
+ return;
+ }
+
+ nl = pc->GetPrev();
+
+ /* outside of any expression or statement? */
+ if (pc->GetLevel() == 0)
+ {
+ if ((nl != NULL) && (nl->GetNlCount() > 1))
+ {
+ LOG_FMT(LCMTIND, "rule 2 - level 0, nl before\n");
+ pc->SetColumn(1);
+ return;
+ }
+ }
+
+ prev = nl->GetPrev();
+
+ if (prev->IsComment() && (nl->GetNlCount() == 1))
+ {
+ int coldiff = prev->GetOrigCol() - pc->GetOrigCol();
+
+ if ((coldiff <= 3) && (coldiff >= -3))
+ {
+ pc->SetColumn(prev->GetColumn());
+ LOG_FMT(LCMTIND, "rule 3 - prev comment, coldiff = %d, now in %d\n",
+ coldiff, pc->GetColumn());
+ return;
+ }
+ }
+
+ /* check if special single line comment rule applies */
+ if (cpd.settings[UO_indent_sing_line_comments].n > 0 && single_line_comment_indent_rule_applies(pc))
+ {
+ pc->SetColumn(col + cpd.settings[UO_indent_sing_line_comments].n);
+ LOG_FMT(LCMTIND, "rule 4 - single line comment indent, now in %d\n", pc->GetColumn());
+ return;
+ }
+
+ LOG_FMT(LCMTIND, "rule 5 - fall-through, stay in %d\n", col);
+
+ pc->SetColumn(col);
+ }
+
+/**
+ * Put spaces on either side of the preproc (#) symbol.
+ * This is done by pointing pc->GetStr() into pp_str and adjusting the
+ * length.
+ */
+void indent_preproc(void)
+ {
+ Chunk *pc;
+ Chunk *next;
+ int pp_level;
+ int pp_level_sub = 0;
+ int tmp;
+
+ /* Define a string of 16 spaces + # + 16 spaces */
+ static const char *pp_str = " # ";
+ static const char *alt_str = " %: ";
+
+ /* Scan to see if the whole file is covered by one #ifdef */
+ int stage = 0;
+
+ for (pc = Chunk::GetHead(); pc != NULL; pc = pc->GetNext())
+ {
+ if (pc->IsComment() || pc->IsNewline())
+ continue;
+
+ if (stage == 0)
+ {
+ /* Check the first PP, make sure it is an #if type */
+ if (pc->GetType() != CT_PREPROC)
+ break;
+
+ next = pc->GetNext();
+
+ if ((next == NULL) || (next->GetType() != CT_PP_IF))
+ break;
+
+ stage = 1;
+ }
+ else if (stage == 1)
+ {
+ /* Scan until a PP at level 0 is found - the close to the #if */
+ if ((pc->GetType() == CT_PREPROC) &&
+ (pc->GetPpLevel() == 0))
+ stage = 2;
+
+ continue;
+ }
+ else if (stage == 2)
+ {
+ /* We should only see the rest of the preprocessor */
+ if ((pc->GetType() == CT_PREPROC) ||
+ ((pc->GetFlags() & PCF_IN_PREPROC) == 0))
+ {
+ stage = 0;
+ break;
+ }
+ }
+ }
+
+ if (stage == 2)
+ {
+ LOG_FMT(LINFO, "The whole file is covered by a #IF\n");
+ pp_level_sub = 1;
+ }
+
+ for (pc = Chunk::GetHead(); pc != NULL; pc = pc->GetNext())
+ {
+ if (pc->GetType() != CT_PREPROC)
+ continue;
+
+ if (pc->GetColumn() != 1)
+ {
+ /* Don't handle preprocessors that aren't in column 1 */
+ LOG_FMT(LINFO, "%s: Line %d doesn't start in column 1 (%d)\n",
+ __func__, pc->GetOrigLine(), pc->GetColumn());
+ continue;
+ }
+
+ /* point into pp_str */
+ if (pc->len == 2)
+ /* alternate token crap */
+ pc->Str() = &alt_str[16];
+ else
+ pc->Str() = &pp_str[16];
+
+ pp_level = pc->GetPpLevel() - pp_level_sub;
+
+ if (pp_level < 0)
+ pp_level = 0;
+ else if (pp_level > 16)
+ pp_level = 16;
+
+ /* Note that the indent is removed by default */
+ if ((cpd.settings[UO_pp_indent].a & AV_ADD) != 0)
+ {
+ /* Need to add some spaces */
+ pc->Str() -= pp_level;
+ pc->len += pp_level;
+ }
+ else if (cpd.settings[UO_pp_indent].a == AV_IGNORE)
+ {
+ tmp = (pc->GetOrigCol() <= 16) ? pc->GetOrigCol() - 1 : 16;
+ pc->Str() -= tmp;
+ pc->len += tmp;
+ }
+
+ /* Add spacing by adjusting the length */
+ if ((cpd.settings[UO_pp_space].a & AV_ADD) != 0)
+ pc->len += pp_level;
+
+ next = pc->GetNext();
+
+ if (next != NULL)
+ reindent_line(next, pc->len + 1);
+
+ LOG_FMT(LPPIS, "%s: Indent line %d to %d (len %d, next->col %d)\n",
+ __func__, pc->GetOrigLine(), GetPpLevel(), pc->len, next->GetColumn());
+ }
+ }
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/02103-output.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/02103-output.cpp
index 9c7aa714..9c7aa714 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/02103-output.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/02103-output.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10000-621_this-spacing.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10000-621_this-spacing.cpp
index bd28a5e8..bd28a5e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10000-621_this-spacing.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10000-621_this-spacing.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10001-622_ifdef-indentation.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10001-622_ifdef-indentation.cpp
index c466b45c..c466b45c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10001-622_ifdef-indentation.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10001-622_ifdef-indentation.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10002-623_caret-spacing.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10002-623_caret-spacing.cpp
index 5058ea4b..5058ea4b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10002-623_caret-spacing.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10002-623_caret-spacing.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10003-633_decl-in-func-typedef.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10003-633_decl-in-func-typedef.cpp
index 4160ecca..4160ecca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10003-633_decl-in-func-typedef.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10003-633_decl-in-func-typedef.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10004-634_extern-c-no-block.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10004-634_extern-c-no-block.cpp
index bb6b14fb..bb6b14fb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10004-634_extern-c-no-block.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10004-634_extern-c-no-block.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10005-define-indentation.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10005-define-indentation.cpp
index 24370df9..24370df9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10005-define-indentation.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10005-define-indentation.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10006-dont-detab-strings.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10006-dont-detab-strings.cpp
index 11352d82..11352d82 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10006-dont-detab-strings.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10006-dont-detab-strings.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10007-dont-process-defines.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10007-dont-process-defines.cpp
index 10ac8d5b..10ac8d5b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10007-dont-process-defines.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10007-dont-process-defines.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10008-PR326_invalid-backslash-eol-csharp.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10008-PR326_invalid-backslash-eol-csharp.cpp
index dfd33ac7..dfd33ac7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10008-PR326_invalid-backslash-eol-csharp.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10008-PR326_invalid-backslash-eol-csharp.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10009-STUCK_macro-difficulties.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10009-STUCK_macro-difficulties.cpp
index ea1c724e..ea1c724e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10009-STUCK_macro-difficulties.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10009-STUCK_macro-difficulties.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10020-macro_spaces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10020-macro_spaces.cpp
index 55a50766..55a50766 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10020-macro_spaces.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10020-macro_spaces.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10021-braces_align.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10021-braces_align.cpp
index 40d966f5..40d966f5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10021-braces_align.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10021-braces_align.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10022-foreach.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10022-foreach.cpp
index 2862e6ef..2862e6ef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10022-foreach.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10022-foreach.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10023-for_auto.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10023-for_auto.cpp
index 775031a5..775031a5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10023-for_auto.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10023-for_auto.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10024-ifcomment.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10024-ifcomment.cpp
index b41c5c6f..b41c5c6f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10024-ifcomment.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10024-ifcomment.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10025-qtargs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10025-qtargs.cpp
index 01d94543..01d94543 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10025-qtargs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10025-qtargs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10026-gcc_case_ellipsis.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10026-gcc_case_ellipsis.cpp
index 852360a4..852360a4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10026-gcc_case_ellipsis.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10026-gcc_case_ellipsis.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10027-Issue_3058.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10027-Issue_3058.cpp
index 09e1dc92..09e1dc92 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10027-Issue_3058.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10027-Issue_3058.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10028-gcc_case_ellipsis.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10028-gcc_case_ellipsis.cpp
index 852360a4..852360a4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10028-gcc_case_ellipsis.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10028-gcc_case_ellipsis.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10029-gcc_case_ellipsis.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10029-gcc_case_ellipsis.cpp
index e2d8ef8a..e2d8ef8a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10029-gcc_case_ellipsis.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10029-gcc_case_ellipsis.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10047-UNI-1334.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10047-UNI-1334.cpp
index 9a856f91..9a856f91 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10047-UNI-1334.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10047-UNI-1334.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10048-UNI-1335.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10048-UNI-1335.cpp
index 891b945a..891b945a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10048-UNI-1335.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10048-UNI-1335.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10050-UNI-1337.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10050-UNI-1337.cpp
index 59635c19..59635c19 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10050-UNI-1337.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10050-UNI-1337.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10052-UNI-1339.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10052-UNI-1339.cpp
index 255db223..255db223 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10052-UNI-1339.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10052-UNI-1339.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10053-UNI-1340.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10053-UNI-1340.cpp
index 2a96aa31..2a96aa31 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10053-UNI-1340.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10053-UNI-1340.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10054-UNI-1344.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10054-UNI-1344.cpp
index 43c4429e..43c4429e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10054-UNI-1344.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10054-UNI-1344.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10056-UNI-1346.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10056-UNI-1346.cpp
index af875c3e..af875c3e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10056-UNI-1346.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10056-UNI-1346.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10057-UNI-1347.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10057-UNI-1347.cpp
index ec8f350b..ec8f350b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10057-UNI-1347.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10057-UNI-1347.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10060-UNI-1350.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10060-UNI-1350.cpp
index 7353e915..7353e915 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10060-UNI-1350.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10060-UNI-1350.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10062-UNI-1356.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10062-UNI-1356.cpp
index c70ca61d..c70ca61d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10062-UNI-1356.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10062-UNI-1356.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10063-UNI-1358.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10063-UNI-1358.cpp
index 120aa9c4..120aa9c4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10063-UNI-1358.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10063-UNI-1358.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10069-UNI-1980.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10069-UNI-1980.cpp
index 97940716..97940716 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10069-UNI-1980.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10069-UNI-1980.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10070-UNI-1981.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10070-UNI-1981.cpp
index d4f74dc3..d4f74dc3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10070-UNI-1981.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10070-UNI-1981.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10071-UNI-1983.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10071-UNI-1983.cpp
index e7d9de6d..e7d9de6d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10071-UNI-1983.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10071-UNI-1983.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10079-UNI-9650.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10079-UNI-9650.cpp
index 0d6cdb46..0d6cdb46 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10079-UNI-9650.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10079-UNI-9650.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10080-UNI-10496.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10080-UNI-10496.cpp
index 81122be8..81122be8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10080-UNI-10496.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10080-UNI-10496.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10100-issue_564.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10100-issue_564.cpp
index ac5fbef3..ac5fbef3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10100-issue_564.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10100-issue_564.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10101-issue_574.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10101-issue_574.cpp
index 6621d455..6621d455 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10101-issue_574.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10101-issue_574.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10102-issue_574.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10102-issue_574.cpp
index 0f3b7da3..0f3b7da3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10102-issue_574.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10102-issue_574.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10103-issue_574.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10103-issue_574.cpp
index b87e76fe..b87e76fe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10103-issue_574.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10103-issue_574.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10566-issue_1752.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10566-issue_1752.cpp
index 8e16cfa3..8e16cfa3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/10566-issue_1752.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/10566-issue_1752.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/11000-UNI-12046.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/11000-UNI-12046.cpp
index 5ffc0da9..5ffc0da9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/11000-UNI-12046.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/11000-UNI-12046.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/20002-UNI-32657.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/20002-UNI-32657.cpp
index eb7655da..eb7655da 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/20002-UNI-32657.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/20002-UNI-32657.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/20011-UNI-38381.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/20011-UNI-38381.cpp
index 701b55b2..701b55b2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/20011-UNI-38381.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/20011-UNI-38381.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30000-cout.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30000-cout.cpp
index f099751f..f099751f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30000-cout.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30000-cout.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30001-alt_tokens.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30001-alt_tokens.cpp
index 02083b88..02083b88 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30001-alt_tokens.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30001-alt_tokens.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30002-constructor.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30002-constructor.cpp
index f7cbb30d..f7cbb30d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30002-constructor.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30002-constructor.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30003-strings.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30003-strings.cpp
index acef8744..acef8744 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30003-strings.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30003-strings.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30004-Issue_4036.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30004-Issue_4036.cpp
new file mode 100644
index 00000000..b209c875
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30004-Issue_4036.cpp
@@ -0,0 +1,3 @@
+struct a {
+ bool b:1;
+};
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30005-Issue_4042.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30005-Issue_4042.cpp
new file mode 100644
index 00000000..c04fbf8d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30005-Issue_4042.cpp
@@ -0,0 +1,7 @@
+union Data {
+ int val1;
+ long val2;
+ Data( ) noexcept(false )
+ : val1( 1 ) {
+ }
+};
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30006-Issue_4027.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30006-Issue_4027.cpp
new file mode 100644
index 00000000..bd9a32d4
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30006-Issue_4027.cpp
@@ -0,0 +1 @@
+#define KK2 27F30
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30007-Issue_4080.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30007-Issue_4080.cpp
new file mode 100644
index 00000000..91afa475
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30007-Issue_4080.cpp
@@ -0,0 +1,6 @@
+auto foo() -> char;
+int *x;
+int *y;
+int reset();
+int *X;
+int *Y;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30008-Issue_4094.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30008-Issue_4094.cpp
new file mode 100644
index 00000000..e8b0449a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30008-Issue_4094.cpp
@@ -0,0 +1,4 @@
+auto lambda1 = [](int x){
+ };
+auto lambda2 = []( ){
+ };
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30009-Issue_3236.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30009-Issue_3236.cpp
new file mode 100644
index 00000000..f9c100de
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30009-Issue_3236.cpp
@@ -0,0 +1,20 @@
+/* multi boolean */
+if ((va1 < 0) || (va2 > 0))
+{
+}
+
+
+/* single condition */
+if (auto val = getValue(); condition(val))
+{
+}
+
+/* multi boolean expression with existing parentheses */
+if (auto val = getValue(); (val < 0) || (val > 0))
+{
+}
+
+/* multi boolean expression without existing parentheses */
+if (auto val = getValue(); (val < 0) || (val > 0))
+{
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30010-class.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30010-class.h
index 2293d9c8..2293d9c8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30010-class.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30010-class.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30011-misc.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30011-misc.cpp
index 9e3b8c5b..9e3b8c5b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30011-misc.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30011-misc.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30012-misc2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30012-misc2.cpp
index 62a51621..62a51621 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30012-misc2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30012-misc2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30013-sim.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30013-sim.h
index 835ae666..835ae666 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30013-sim.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30013-sim.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30014-ctor-var.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30014-ctor-var.cpp
index 2551d8bd..2551d8bd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30014-ctor-var.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30014-ctor-var.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30015-exception.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30015-exception.cpp
index 75a4f97e..75a4f97e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30015-exception.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30015-exception.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30016-custom-open.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30016-custom-open.cpp
index 234f5591..234f5591 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30016-custom-open.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30016-custom-open.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30017-custom-open.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30017-custom-open.cpp
index 6acd92e5..6acd92e5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30017-custom-open.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30017-custom-open.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30018-class-addr.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30018-class-addr.h
index 042579dc..042579dc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30018-class-addr.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30018-class-addr.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30019-wacky-template.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30019-wacky-template.cpp
index cf6e5c87..cf6e5c87 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30019-wacky-template.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30019-wacky-template.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30020-bool.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30020-bool.cpp
index 9f9e55b2..9f9e55b2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30020-bool.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30020-bool.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30021-byref.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30021-byref.cpp
index 87f6c44a..87f6c44a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30021-byref.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30021-byref.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30022-extern_c.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30022-extern_c.h
index a97d93b8..a97d93b8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30022-extern_c.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30022-extern_c.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30023-templates.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30023-templates.cpp
index 960e0b82..960e0b82 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30023-templates.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30023-templates.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30024-class-init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30024-class-init.cpp
index 884d5c71..884d5c71 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30024-class-init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30024-class-init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30025-class-init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30025-class-init.cpp
index 703686ac..703686ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30025-class-init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30025-class-init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30026-byref.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30026-byref.cpp
index 2534aa05..2534aa05 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30026-byref.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30026-byref.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30027-byref.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30027-byref.cpp
index d0598697..d0598697 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30027-byref.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30027-byref.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30028-byref.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30028-byref.cpp
index 7a97856d..7a97856d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30028-byref.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30028-byref.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30029-init_align.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30029-init_align.h
index 085f838b..085f838b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30029-init_align.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30029-init_align.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30030-Timestamp.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30030-Timestamp.h
index 998b7d6f..998b7d6f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30030-Timestamp.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30030-Timestamp.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30031-operator.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30031-operator.cpp
index f17b865d..f17b865d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30031-operator.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30031-operator.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30032-operator.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30032-operator.cpp
index cfa98ca1..cfa98ca1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30032-operator.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30032-operator.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30033-operator.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30033-operator.cpp
index 976d919f..976d919f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30033-operator.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30033-operator.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30034-operator_proto.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30034-operator_proto.cpp
index 3e5af195..3e5af195 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30034-operator_proto.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30034-operator_proto.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30035-operator_proto.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30035-operator_proto.cpp
index 3824798c..3824798c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30035-operator_proto.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30035-operator_proto.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30036-operator.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30036-operator.cpp
index b1468795..b1468795 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30036-operator.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30036-operator.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30037-operator_proto.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30037-operator_proto.cpp
index d5c7e8fc..d5c7e8fc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30037-operator_proto.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30037-operator_proto.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30038-operator.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30038-operator.cpp
index a1bfafe3..a1bfafe3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30038-operator.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30038-operator.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30039-operator_proto.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30039-operator_proto.cpp
index 4ec0acf1..4ec0acf1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30039-operator_proto.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30039-operator_proto.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30040-nl-class.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30040-nl-class.h
index 9ccbcf75..9ccbcf75 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30040-nl-class.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30040-nl-class.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30041-nl-class.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30041-nl-class.h
index 57e47625..57e47625 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30041-nl-class.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30041-nl-class.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30042-Issue_2020.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30042-Issue_2020.cpp
index d618f922..d618f922 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30042-Issue_2020.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30042-Issue_2020.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30043-nl_func_call_empty.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30043-nl_func_call_empty.cpp
index fbf89d16..fbf89d16 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30043-nl_func_call_empty.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30043-nl_func_call_empty.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30044-nl_func_call_paren_empty.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30044-nl_func_call_paren_empty.cpp
index 4495d667..4495d667 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30044-nl_func_call_paren_empty.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30044-nl_func_call_paren_empty.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30045-nl_func_decl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30045-nl_func_decl.cpp
index 81d0a00e..81d0a00e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30045-nl_func_decl.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30045-nl_func_decl.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30046-nl_func_decl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30046-nl_func_decl.cpp
index 17aa59f0..17aa59f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30046-nl_func_decl.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30046-nl_func_decl.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30047-nl_func_paren_empty.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30047-nl_func_paren_empty.cpp
index e8a947c9..e8a947c9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30047-nl_func_paren_empty.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30047-nl_func_paren_empty.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30048-nl_func_def_paren_empty.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30048-nl_func_def_paren_empty.cpp
index 22f3c700..22f3c700 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30048-nl_func_def_paren_empty.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30048-nl_func_def_paren_empty.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30049-nl_func_call_paren.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30049-nl_func_call_paren.cpp
index 847b7037..847b7037 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30049-nl_func_call_paren.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30049-nl_func_call_paren.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30050-nl-namespace.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30050-nl-namespace.h
index e515b479..e515b479 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30050-nl-namespace.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30050-nl-namespace.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30051-nl-namespace.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30051-nl-namespace.h
index c51d75be..c51d75be 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30051-nl-namespace.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30051-nl-namespace.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30052-try-catch-nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30052-try-catch-nl.cpp
index 410a735e..410a735e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30052-try-catch-nl.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30052-try-catch-nl.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30053-exception.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30053-exception.cpp
index 2c41efbf..2c41efbf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30053-exception.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30053-exception.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30054-Issue_2091.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30054-Issue_2091.cpp
index 6e32d683..6e32d683 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30054-Issue_2091.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30054-Issue_2091.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30055-nl_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30055-nl_func.cpp
index 142e6895..142e6895 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30055-nl_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30055-nl_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30056-nl_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30056-nl_func.cpp
index f930b703..f930b703 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30056-nl_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30056-nl_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30057-nl_inside_namespace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30057-nl_inside_namespace.cpp
index 01486ebe..01486ebe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30057-nl_inside_namespace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30057-nl_inside_namespace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30058-nl_inside_namespace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30058-nl_inside_namespace.cpp
index 01486ebe..01486ebe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30058-nl_inside_namespace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30058-nl_inside_namespace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30059-Issue_2186.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30059-Issue_2186.cpp
index 2c3081ea..2c3081ea 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30059-Issue_2186.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30059-Issue_2186.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30060-Issue_1734.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30060-Issue_1734.cpp
index 31d08c29..31d08c29 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30060-Issue_1734.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30060-Issue_1734.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30061-class-init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30061-class-init.cpp
index 7ce41d09..7ce41d09 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30061-class-init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30061-class-init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30062-class-init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30062-class-init.cpp
index 53ce4a31..53ce4a31 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30062-class-init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30062-class-init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30063-class-init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30063-class-init.cpp
index ad278c90..ad278c90 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30063-class-init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30063-class-init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30064-class-init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30064-class-init.cpp
index c44bdfd3..c44bdfd3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30064-class-init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30064-class-init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30065-Example.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30065-Example.h
index 1a868d10..1a868d10 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30065-Example.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30065-Example.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30066-class-init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30066-class-init.cpp
index 1fc8bb57..1fc8bb57 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30066-class-init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30066-class-init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30067-nl_func_type_name.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30067-nl_func_type_name.cpp
index a30a08e9..a30a08e9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30067-nl_func_type_name.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30067-nl_func_type_name.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30068-nl_func_scope_name.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30068-nl_func_scope_name.cpp
index 1e4caa86..1e4caa86 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30068-nl_func_scope_name.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30068-nl_func_scope_name.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30069-class-implementation.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30069-class-implementation.cpp
index 18481338..18481338 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30069-class-implementation.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30069-class-implementation.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30070-nl_func_scope_name.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30070-nl_func_scope_name.cpp
index c14a06ed..c14a06ed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30070-nl_func_scope_name.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30070-nl_func_scope_name.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30071-lineEndings-Mac.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30071-lineEndings-Mac.cpp
index 20fa083a..20fa083a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30071-lineEndings-Mac.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30071-lineEndings-Mac.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30072-lineEndings-Win.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30072-lineEndings-Win.cpp
index cdbf7653..cdbf7653 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30072-lineEndings-Win.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30072-lineEndings-Win.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30073-lineEndings-Unix.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30073-lineEndings-Unix.cpp
index 608952c0..608952c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30073-lineEndings-Unix.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30073-lineEndings-Unix.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30074-bom.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30074-bom.cpp
index 7ee7e7e6..7ee7e7e6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30074-bom.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30074-bom.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30075-goto.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30075-goto.cpp
index 4cccfe2c..4cccfe2c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30075-goto.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30075-goto.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30076-Issue_2594.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30076-Issue_2594.cpp
index 240e19db..240e19db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30076-Issue_2594.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30076-Issue_2594.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30077-Issue_2596.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30077-Issue_2596.cpp
index d2517e8b..d2517e8b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30077-Issue_2596.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30077-Issue_2596.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30078-Issue_2672-a.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30078-Issue_2672-a.cpp
index d29d2c47..d29d2c47 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30078-Issue_2672-a.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30078-Issue_2672-a.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30079-Issue_2672-b.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30079-Issue_2672-b.cpp
index f484d4ff..f484d4ff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30079-Issue_2672-b.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30079-Issue_2672-b.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30080-nl_brace_brace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30080-nl_brace_brace.cpp
index a9783697..a9783697 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30080-nl_brace_brace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30080-nl_brace_brace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30081-Issue_2383.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30081-Issue_2383.cpp
index 356fd9af..356fd9af 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30081-Issue_2383.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30081-Issue_2383.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30082-Issue_931.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30082-Issue_931.cpp
index 76a6b856..76a6b856 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30082-Issue_931.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30082-Issue_931.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30083-Issue_995-do.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30083-Issue_995-do.cpp
index 2e84d7ce..2e84d7ce 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30083-Issue_995-do.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30083-Issue_995-do.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30084-Issue_1184.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30084-Issue_1184.cpp
index 848b1e03..848b1e03 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30084-Issue_1184.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30084-Issue_1184.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30085-align_class.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30085-align_class.cpp
index 552d6947..552d6947 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30085-align_class.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30085-align_class.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30086-align_class-constr.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30086-align_class-constr.cpp
index f6082028..f6082028 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30086-align_class-constr.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30086-align_class-constr.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30087-Issue_1511.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30087-Issue_1511.cpp
index 2583c0e3..2583c0e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30087-Issue_1511.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30087-Issue_1511.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30088-Issue_2561.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30088-Issue_2561.cpp
index aa566966..aa566966 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30088-Issue_2561.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30088-Issue_2561.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30089-Issue_2281.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30089-Issue_2281.cpp
index e0d8727d..e0d8727d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30089-Issue_2281.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30089-Issue_2281.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30090-bug_488.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30090-bug_488.cpp
index 268d5ba4..268d5ba4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30090-bug_488.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30090-bug_488.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30091-bug_472.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30091-bug_472.cpp
index e48251fe..e48251fe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30091-bug_472.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30091-bug_472.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30092-bug_481.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30092-bug_481.cpp
index 99d8c390..99d8c390 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30092-bug_481.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30092-bug_481.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30093-bug_484.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30093-bug_484.cpp
index 875ff3d2..875ff3d2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30093-bug_484.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30093-bug_484.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30094-bug_495.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30094-bug_495.cpp
index d7db1238..d7db1238 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30094-bug_495.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30094-bug_495.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30095-bug_485.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30095-bug_485.cpp
index b5e7842c..b5e7842c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30095-bug_485.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30095-bug_485.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30096-bug_1854.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30096-bug_1854.cpp
index 29cc2774..29cc2774 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30096-bug_1854.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30096-bug_1854.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30097-issue_1946.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30097-issue_1946.cpp
index 9682da68..9682da68 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30097-issue_1946.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30097-issue_1946.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30098-Issue_2692.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30098-Issue_2692.cpp
index 4173ad5d..4173ad5d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30098-Issue_2692.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30098-Issue_2692.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30099-bug_1127.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30099-bug_1127.cpp
index 0109baaf..0109baaf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30099-bug_1127.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30099-bug_1127.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30100-templates.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30100-templates.cpp
index e4dd89e5..e4dd89e5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30100-templates.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30100-templates.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30101-templates.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30101-templates.cpp
index 78a60ebd..78a60ebd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30101-templates.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30101-templates.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30102-templates.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30102-templates.cpp
index 86bbfaf7..86bbfaf7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30102-templates.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30102-templates.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30103-templates.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30103-templates.cpp
index adadb882..adadb882 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30103-templates.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30103-templates.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30104-templ_class.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30104-templ_class.h
index 802f7e27..802f7e27 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30104-templ_class.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30104-templ_class.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30105-av.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30105-av.h
index 6efe8e9b..6efe8e9b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30105-av.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30105-av.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30106-templates2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30106-templates2.cpp
index 48f56d99..48f56d99 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30106-templates2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30106-templates2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30107-templates2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30107-templates2.cpp
index a49d4381..a49d4381 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30107-templates2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30107-templates2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30108-templates3.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30108-templates3.cpp
index a0e20d19..a0e20d19 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30108-templates3.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30108-templates3.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30109-templates4.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30109-templates4.cpp
index 781822e8..781822e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30109-templates4.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30109-templates4.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30110-class-init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30110-class-init.cpp
index e1b1949c..e1b1949c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30110-class-init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30110-class-init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30111-bug_1346.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30111-bug_1346.h
index 2ca31e50..2ca31e50 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30111-bug_1346.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30111-bug_1346.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30112-bug_1432.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30112-bug_1432.cpp
index 575a21c8..575a21c8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30112-bug_1432.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30112-bug_1432.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30113-bug_1452.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30113-bug_1452.cpp
index 59a3babd..59a3babd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30113-bug_1452.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30113-bug_1452.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30114-bug_1462.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30114-bug_1462.cpp
index b6a33ceb..b6a33ceb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30114-bug_1462.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30114-bug_1462.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30115-Issue_1704.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30115-Issue_1704.cpp
index 90cb2049..90cb2049 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30115-Issue_1704.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30115-Issue_1704.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30116-Issue_1052.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30116-Issue_1052.cpp
index 0e21f136..0e21f136 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30116-Issue_1052.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30116-Issue_1052.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30117-Issue_2343.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30117-Issue_2343.cpp
index a82e1172..a82e1172 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30117-Issue_2343.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30117-Issue_2343.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30118-Issue_2758.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30118-Issue_2758.cpp
index 576b1bef..576b1bef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30118-Issue_2758.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30118-Issue_2758.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30119-Issue_2879.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30119-Issue_2879.cpp
index fbc323ae..fbc323ae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30119-Issue_2879.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30119-Issue_2879.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30120-sp_after_angle.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30120-sp_after_angle.cpp
index 04af5289..04af5289 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30120-sp_after_angle.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30120-sp_after_angle.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30121-sp_after_angle.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30121-sp_after_angle.cpp
index 8764578e..8764578e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30121-sp_after_angle.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30121-sp_after_angle.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30122-sp_after_angle.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30122-sp_after_angle.cpp
index ee7acae0..ee7acae0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30122-sp_after_angle.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30122-sp_after_angle.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30123-sp_after_angle.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30123-sp_after_angle.cpp
index a791a8ef..a791a8ef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30123-sp_after_angle.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30123-sp_after_angle.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30124-sp_after_angle.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30124-sp_after_angle.cpp
index c29f3552..c29f3552 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30124-sp_after_angle.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30124-sp_after_angle.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30125-sp_after_angle.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30125-sp_after_angle.cpp
index a791a8ef..a791a8ef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30125-sp_after_angle.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30125-sp_after_angle.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30126-sp_after_angle.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30126-sp_after_angle.cpp
index 18788919..18788919 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30126-sp_after_angle.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30126-sp_after_angle.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30127-Issue_2565.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30127-Issue_2565.cpp
index 721d4d78..721d4d78 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30127-Issue_2565.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30127-Issue_2565.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30128-Issue_2873.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30128-Issue_2873.cpp
index 6803fd9a..6803fd9a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30128-Issue_2873.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30128-Issue_2873.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30129-Issue_2890.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30129-Issue_2890.cpp
index d03e4f62..d03e4f62 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30129-Issue_2890.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30129-Issue_2890.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30130-if-constexpr.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30130-if-constexpr.cpp
index 483317be..483317be 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30130-if-constexpr.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30130-if-constexpr.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30131-Issue_3010.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30131-Issue_3010.cpp
index 93fd70db..93fd70db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30131-Issue_3010.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30131-Issue_3010.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30132-sp_brace_catch.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30132-sp_brace_catch.cpp
index 04c1b9c1..04c1b9c1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30132-sp_brace_catch.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30132-sp_brace_catch.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30133-Issue_3252.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30133-Issue_3252.cpp
index 5dc0e67e..5dc0e67e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30133-Issue_3252.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30133-Issue_3252.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30134-Issue_3357.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30134-Issue_3357.cpp
index 83dcc29a..83dcc29a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30134-Issue_3357.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30134-Issue_3357.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30135-Issue_3448.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30135-Issue_3448.cpp
index 19160cf9..19160cf9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30135-Issue_3448.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30135-Issue_3448.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30136-Issue_3413.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30136-Issue_3413.cpp
index d465f531..d465f531 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30136-Issue_3413.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30136-Issue_3413.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30137-Issue_3513-0.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30137-Issue_3513-0.cpp
index c55df54a..c55df54a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30137-Issue_3513-0.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30137-Issue_3513-0.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30138-Issue_3513-1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30138-Issue_3513-1.cpp
index 560e6d51..560e6d51 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30138-Issue_3513-1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30138-Issue_3513-1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30139-Issue_3604.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30139-Issue_3604.cpp
index a96b3437..a96b3437 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30139-Issue_3604.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30139-Issue_3604.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30140-Issue_3785.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30140-Issue_3785.cpp
index 94988dd6..94988dd6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30140-Issue_3785.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30140-Issue_3785.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30141-Issue_1130.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30141-Issue_1130.cpp
new file mode 100644
index 00000000..bd2e995a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30141-Issue_1130.cpp
@@ -0,0 +1,39 @@
+void ABC()
+{
+ bool bb = true;
+ bool ccc = true;
+ char x;
+// simple: E1 ? E2 : E3
+ x =
+ bb ?
+ 'T'
+ : 'F';
+// simple_R: E1 ? E2 : E1r ? E2r : E3r
+ x =
+ bb ?
+ 'T'
+ : ccc ?
+ 'r'
+ : 'F';
+simple_L: E1 ? E1l ? E2l : E3l : E3
+ x =
+ bb ?
+ (ccc) ?
+ 't'
+ : 'l'
+ : 'F';
+// CDanU E1 ? E1l ? E2ll : E1ll ? E3ll : E3l : E3
+ x =
+ (bb) ?
+ (is_newline_tmp) ? 'n'
+ : (is_comment_tmp) ? 'c'
+ : 'o'
+ : '-';
+
+
+//CDanU E1 ? E1l ? E2ll : E1ll ? E3ll : E3l : E3
+// x = (y) ? _is_newline(tmp) ? 'n' : _is_comment(tmp) ? 'c' : 'o' : '-';
+// |E1______________ c E2_ C E3_|
+// |E1______________ b E2_ B E3___________________________|
+// |E1_ a E2_____________________________________________________ A E3|
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30142-Issue_3915.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30142-Issue_3915.cpp
new file mode 100644
index 00000000..4bf41212
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30142-Issue_3915.cpp
@@ -0,0 +1,9 @@
+void
+foo(Foo const & f)
+{
+ auto bar = Bar(f);
+ if (bar.something) {
+ assert(bar.something_else == 1);
+ }
+}
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30143-Issue_3919.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30143-Issue_3919.cpp
new file mode 100644
index 00000000..4d2fa153
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30143-Issue_3919.cpp
@@ -0,0 +1,5 @@
+void Test
+{
+ // <-- Here we want a space after //
+ DoSomething(); //-V612 : warning #612 disabled.
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30144-Issue_3916.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30144-Issue_3916.cpp
new file mode 100644
index 00000000..aa1d0737
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30144-Issue_3916.cpp
@@ -0,0 +1,29 @@
+#include <string>
+
+using TEnglishString = std::string;
+
+class CComCommandInfo
+{
+public:
+CComCommandInfo( TEnglishString, TEnglishString );
+};
+
+template< typename T >
+class CGenericCommandEx
+{
+public:
+CGenericCommandEx( T );
+};
+
+
+template< typename T >
+void Test( TEnglishString commandName_, TEnglishString commandDescription_, T functor_ )
+{
+ CComCommandInfo cmdInfo( std::forward< TEnglishString >( commandName_ ),
+ std::forward< TEnglishString >( commandDescription_ ) );
+
+ auto* pCommand =
+ new CGenericCommandEx(
+ std::forward< decltype( functor_ ) >( functor_ ) ); // <--- Note the extra spaces added here
+}
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30145-Issue_3914.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30145-Issue_3914.cpp
new file mode 100644
index 00000000..716b20aa
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30145-Issue_3914.cpp
@@ -0,0 +1,8 @@
+void foo()
+{
+ desc->add_options( )
+ ( "help,h", "produce help message" )
+ ( "version,v", "print the version number" )
+ ( "include-path,I", value< vector<string> >( ), "include path" )
+ ( "input-file,i", value<string>( ), "input file" );
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30146-Issue_3614.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30146-Issue_3614.cpp
new file mode 100644
index 00000000..bd313666
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30146-Issue_3614.cpp
@@ -0,0 +1,2 @@
+// bla
+//lint {...}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30147-Issue_3965.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30147-Issue_3965.cpp
new file mode 100644
index 00000000..50e66983
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30147-Issue_3965.cpp
@@ -0,0 +1,4 @@
+void Win::fill()
+{
+ product->addItem(product.name + "%1");
+} \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30148-Issue_3965-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30148-Issue_3965-2.cpp
new file mode 100644
index 00000000..c914bc68
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30148-Issue_3965-2.cpp
@@ -0,0 +1,7 @@
+void Win::check(QString id)
+{
+ if(names.contains(id + QString("_tst")) or names.contains(id + QString("_prd"))) {
+ true;
+ }
+ return;
+} \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30149-Issue_3967.cc b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30149-Issue_3967.cc
new file mode 100644
index 00000000..84b393a2
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30149-Issue_3967.cc
@@ -0,0 +1,4 @@
+std::ostream& xx::operator<<(std::ostream& os, xx::Exception const& ex)
+{
+ return os;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30150-Issue_3983.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30150-Issue_3983.cpp
new file mode 100644
index 00000000..f35629ab
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30150-Issue_3983.cpp
@@ -0,0 +1,9 @@
+#include <iostream>
+struct s {int i;};
+
+int main()
+{
+ struct s x;
+ x.i = 5;
+ std::cout << x.i << std::endl;
+} // main
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30151-Issue_3996.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30151-Issue_3996.cpp
new file mode 100644
index 00000000..b8680b9e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30151-Issue_3996.cpp
@@ -0,0 +1,28 @@
+#include <iostream>
+
+class OtherClass
+{
+public:
+int i;
+OtherClass() : i(5) {
+}
+OtherClass* self() {
+ return this;
+}
+};
+
+class MyClass
+{
+public:
+OtherClass x;
+int getI();
+};
+
+int MyClass::getI() {
+ return this->x.self()->i;
+}
+
+int main() {
+ MyClass c;
+ std::cout << c.getI() << std::endl;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30152-Issue_4023.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30152-Issue_4023.cpp
new file mode 100644
index 00000000..718ae2fb
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30152-Issue_4023.cpp
@@ -0,0 +1,22 @@
+class foo {
+public:
+bool var;
+
+foo(bool x) {
+ var = x;
+}
+
+bool get()
+{
+ return var;
+}
+};
+
+
+int main() {
+ foo f(false);
+
+ const int b = true ? 2 : 3;
+
+ const int a = !f.get() ? 2 : 3;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30153-Issue_4026.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30153-Issue_4026.cpp
new file mode 100644
index 00000000..79d31b18
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30153-Issue_4026.cpp
@@ -0,0 +1,52 @@
+class foo {
+public:
+int var;
+
+foo(int x) {
+ var = x;
+}
+};
+
+int main()
+{
+ int a = 2;
+ a++;
+
+ foo f(3);
+ f.var++;
+}
+
+InternalFunctionImp::InternalFunctionImp(ExecState *exec)
+ : ObjectImp(static_cast<FunctionPrototypeImp*>(exec->interpreter()->builtinFunctionPrototype().imp()))
+{
+ for (int z=0; z<count; z++)
+ {
+ TQString hlName = KateFactory::self()->schemaManager()->list().operator[](z);
+
+ if (names.contains(hlName) < 1)
+ {
+ names << hlName;
+ popupMenu()->insertItem ( hlName, this, TQT_SLOT(setSchema(int)), 0, z+1);
+ }
+ }
+
+ struct sockaddr_in *sin1 = (sockaddr_in *) s1.address();
+ struct sockaddr_in *sin2 = (sockaddr_in *) s2.address();
+
+ if ((bytesLeft < 0 ) || (len > (uint) bytesLeft))
+ {
+ tqWarning("[dcopserver] Corrupt data!");
+ printf("[dcopserver] bytesLeft: %d, len: %d", bytesLeft, len);
+ return result;
+ }
+ result.TQByteArray::resize( (uint)len );
+
+ if (pbar->isVisible() && pbar->isEnabled() &&
+ pbar->progress() != pbar->totalSteps())
+ {
+ ++iter.data();
+ if (iter.data() == 28)
+ iter.data() = 0;
+ iter.key()->update();
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30154-Issue_4132.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30154-Issue_4132.cpp
new file mode 100644
index 00000000..256db54c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30154-Issue_4132.cpp
@@ -0,0 +1 @@
+using stdsize = typename _arch_helper< (int)sizeof(void*) >::sz_t;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30160-Issue_3980.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30160-Issue_3980.cpp
new file mode 100644
index 00000000..89d43dfe
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30160-Issue_3980.cpp
@@ -0,0 +1,5 @@
+int a = 4I8;
+int b = 4I16;
+int c = 4I32;
+int d = 4I64;
+int e = 4I128;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30161-Discussion_3987.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30161-Discussion_3987.cpp
new file mode 100644
index 00000000..7ac8e131
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30161-Discussion_3987.cpp
@@ -0,0 +1,5 @@
+static void append_tag_name(UncText &txt, Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *tmp = pc->GetPrevNcNnl();
+} /* append_tag_name */
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30162-Issue_4239.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30162-Issue_4239.cpp
new file mode 100644
index 00000000..a725a5b0
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30162-Issue_4239.cpp
@@ -0,0 +1,10 @@
+void f()
+{
+ int x;
+ int y;
+ y = x;
+ if ((y = x) != 0)
+ for (;;)
+ if (x)
+ return;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30200-bug_1862.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30200-bug_1862.cpp
index c5357c86..c5357c86 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30200-bug_1862.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30200-bug_1862.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30201-cmt_indent.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30201-cmt_indent.cpp
index ed27ffca..ed27ffca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30201-cmt_indent.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30201-cmt_indent.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30202-cmt_indent.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30202-cmt_indent.cpp
index 95c47d6e..95c47d6e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30202-cmt_indent.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30202-cmt_indent.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30203-cmt_indent.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30203-cmt_indent.cpp
index 05cc2df3..05cc2df3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30203-cmt_indent.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30203-cmt_indent.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30204-comment-align.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30204-comment-align.cpp
index afaaafef..afaaafef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30204-comment-align.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30204-comment-align.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30205-cmt_right.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30205-cmt_right.cpp
index bcca4e2e..bcca4e2e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30205-cmt_right.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30205-cmt_right.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30206-cmt_backslash_eol.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30206-cmt_backslash_eol.cpp
index d020e171..d020e171 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30206-cmt_backslash_eol.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30206-cmt_backslash_eol.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30207-cmt_indent_pp.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30207-cmt_indent_pp.h
index 50e35c8d..50e35c8d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30207-cmt_indent_pp.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30207-cmt_indent_pp.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30208-bug_1108.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30208-bug_1108.cpp
index 573a9810..573a9810 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30208-bug_1108.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30208-bug_1108.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30209-bug_1134.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30209-bug_1134.cpp
index 369b70f1..369b70f1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30209-bug_1134.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30209-bug_1134.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30210-bug_1338.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30210-bug_1338.cpp
index 04b4cd8a..04b4cd8a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30210-bug_1338.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30210-bug_1338.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30211-indent_comment_align_thresh.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30211-indent_comment_align_thresh.cpp
index 34c09203..34c09203 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30211-indent_comment_align_thresh.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30211-indent_comment_align_thresh.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30212-indent_comment_align_thresh.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30212-indent_comment_align_thresh.cpp
index f9316598..f9316598 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30212-indent_comment_align_thresh.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30212-indent_comment_align_thresh.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30213-align_right_comment.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30213-align_right_comment.cpp
index 43a2a70f..43a2a70f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30213-align_right_comment.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30213-align_right_comment.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30214-align_across_braces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30214-align_across_braces.cpp
index 199ede8d..199ede8d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30214-align_across_braces.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30214-align_across_braces.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30215-Issue_2099.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30215-Issue_2099.cpp
index 4726f44b..4726f44b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30215-Issue_2099.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30215-Issue_2099.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30216-Issue_2302.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30216-Issue_2302.cpp
index e2684ae6..e2684ae6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30216-Issue_2302.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30216-Issue_2302.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30217-2138.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30217-2138.cpp
index 8d1d7462..8d1d7462 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30217-2138.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30217-2138.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30218-Issue_3710.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30218-Issue_3710.cpp
index b8e5b421..b8e5b421 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30218-Issue_3710.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30218-Issue_3710.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30220-bug_1340.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30220-bug_1340.cpp
index f64bc6a0..f64bc6a0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30220-bug_1340.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30220-bug_1340.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30221-Issue_2914.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30221-Issue_2914.cpp
index c2cd8b59..c2cd8b59 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30221-Issue_2914.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30221-Issue_2914.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30223-sp_enum_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30223-sp_enum_colon.cpp
index 11d7320b..11d7320b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30223-sp_enum_colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30223-sp_enum_colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30224-sp_enum_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30224-sp_enum_colon.cpp
index 804fe1ae..804fe1ae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30224-sp_enum_colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30224-sp_enum_colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30225-Issue_3176.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30225-Issue_3176.cpp
index 2384027d..2384027d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30225-Issue_3176.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30225-Issue_3176.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30226-sp_enum_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30226-sp_enum_colon.cpp
index be23e687..be23e687 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30226-sp_enum_colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30226-sp_enum_colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30227-sp_inside_braces_enum.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30227-sp_inside_braces_enum.cpp
index 8386e215..8386e215 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30227-sp_inside_braces_enum.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30227-sp_inside_braces_enum.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30228-sp_inside_braces_enum.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30228-sp_inside_braces_enum.cpp
index 666f834c..666f834c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30228-sp_inside_braces_enum.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30228-sp_inside_braces_enum.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30229-sp_inside_braces_enum.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30229-sp_inside_braces_enum.cpp
index 98640667..98640667 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30229-sp_inside_braces_enum.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30229-sp_inside_braces_enum.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30230-sp_type_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30230-sp_type_func.cpp
index 0d17364f..0d17364f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30230-sp_type_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30230-sp_type_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30231-sp_type_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30231-sp_type_func.cpp
index d7d69cc8..d7d69cc8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30231-sp_type_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30231-sp_type_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30232-sp_type_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30232-sp_type_func.cpp
index fe2a3348..fe2a3348 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30232-sp_type_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30232-sp_type_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30233-sp_type_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30233-sp_type_func.cpp
index fe2a3348..fe2a3348 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30233-sp_type_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30233-sp_type_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30234-functype_param.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30234-functype_param.cpp
index 32419616..32419616 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30234-functype_param.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30234-functype_param.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30235-functype_param.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30235-functype_param.cpp
index 9e9f5ecc..9e9f5ecc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30235-functype_param.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30235-functype_param.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30236-Issue_750.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30236-Issue_750.cpp
index bf7d1100..bf7d1100 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30236-Issue_750.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30236-Issue_750.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30237-Issue_3920.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30237-Issue_3920.cpp
new file mode 100644
index 00000000..aa5511e6
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30237-Issue_3920.cpp
@@ -0,0 +1,4 @@
+std::string StrGet()
+{
+ return IsConnected() ? "Connected" : {};
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30240-align_func_params.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30240-align_func_params.cpp
index 923d274b..923d274b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30240-align_func_params.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30240-align_func_params.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30241-align_func_params.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30241-align_func_params.cpp
index 923d274b..923d274b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30241-align_func_params.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30241-align_func_params.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30242-align_func_params.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30242-align_func_params.cpp
index 512233cd..512233cd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30242-align_func_params.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30242-align_func_params.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30243-align_func_params.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30243-align_func_params.cpp
index 82434066..82434066 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30243-align_func_params.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30243-align_func_params.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30244-align_func_params.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30244-align_func_params.cpp
index 5efed666..5efed666 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30244-align_func_params.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30244-align_func_params.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30245-align_func_params.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30245-align_func_params.cpp
index a44170a9..a44170a9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30245-align_func_params.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30245-align_func_params.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30246-align_func_params.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30246-align_func_params.cpp
index 9def11e6..9def11e6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30246-align_func_params.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30246-align_func_params.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30247-Issue_2332.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30247-Issue_2332.cpp
index 0bc9cf8f..0bc9cf8f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30247-Issue_2332.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30247-Issue_2332.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30248-Issue_2831.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30248-Issue_2831.cpp
index c099567a..c099567a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30248-Issue_2831.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30248-Issue_2831.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30249-align-330.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30249-align-330.cpp
index a92e1545..a92e1545 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30249-align-330.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30249-align-330.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30250-align_fcall.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30250-align_fcall.cpp
index 055f0029..055f0029 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30250-align_fcall.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30250-align_fcall.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30251-align_fcall.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30251-align_fcall.cpp
index 055f0029..055f0029 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30251-align_fcall.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30251-align_fcall.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30252-Issue_3691.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30252-Issue_3691.h
index fb1ec761..fb1ec761 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30252-Issue_3691.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30252-Issue_3691.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30253-align_left_shift.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30253-align_left_shift.cpp
index 7c98226d..7c98226d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30253-align_left_shift.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30253-align_left_shift.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30254-align_left_shift2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30254-align_left_shift2.cpp
index bfea744c..bfea744c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30254-align_left_shift2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30254-align_left_shift2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30255-align_constr.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30255-align_constr.cpp
index 380f0c8b..380f0c8b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30255-align_constr.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30255-align_constr.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30256-func_call.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30256-func_call.cpp
index e3eff88c..e3eff88c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30256-func_call.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30256-func_call.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30257-func_call_chain.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30257-func_call_chain.cpp
index 7e2f3931..7e2f3931 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30257-func_call_chain.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30257-func_call_chain.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30258-casts.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30258-casts.cpp
index d8a496fb..d8a496fb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30258-casts.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30258-casts.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30259-sp_after_constr_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30259-sp_after_constr_colon.cpp
index 7b63b639..7b63b639 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30259-sp_after_constr_colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30259-sp_after_constr_colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30260-var_def_gap.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30260-var_def_gap.cpp
index 7333d292..7333d292 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30260-var_def_gap.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30260-var_def_gap.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30261-align_var_def_thresh.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30261-align_var_def_thresh.cpp
index 8512377e..8512377e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30261-align_var_def_thresh.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30261-align_var_def_thresh.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30262-align_var_def_thresh.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30262-align_var_def_thresh.cpp
index 4996a3d3..4996a3d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30262-align_var_def_thresh.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30262-align_var_def_thresh.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30263-align_var_def_thresh.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30263-align_var_def_thresh.cpp
index 1e10f370..1e10f370 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30263-align_var_def_thresh.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30263-align_var_def_thresh.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30264-Issue_2668.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30264-Issue_2668.cpp
index da8e118f..da8e118f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30264-Issue_2668.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30264-Issue_2668.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30265-long_br_cmt.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30265-long_br_cmt.cpp
index 8ebdcec9..8ebdcec9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30265-long_br_cmt.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30265-long_br_cmt.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30266-Issue_2921.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30266-Issue_2921.cpp
index 53e3c495..53e3c495 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30266-Issue_2921.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30266-Issue_2921.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30267-Issue_2930.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30267-Issue_2930.cpp
index 00cff53b..00cff53b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30267-Issue_2930.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30267-Issue_2930.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30268-Issue_3018.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30268-Issue_3018.cpp
index ddbb473e..ddbb473e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30268-Issue_3018.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30268-Issue_3018.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30270-const_throw.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30270-const_throw.cpp
index 44f0ca68..44f0ca68 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30270-const_throw.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30270-const_throw.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30271-sp_throw_paren.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30271-sp_throw_paren.cpp
index 21ce9291..21ce9291 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30271-sp_throw_paren.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30271-sp_throw_paren.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30272-sp_throw_paren.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30272-sp_throw_paren.cpp
index ea851aff..ea851aff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30272-sp_throw_paren.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30272-sp_throw_paren.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30273-sp_cparen_oparen.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30273-sp_cparen_oparen.cpp
index ee0d705b..ee0d705b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30273-sp_cparen_oparen.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30273-sp_cparen_oparen.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30274-sp_cparen_oparen.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30274-sp_cparen_oparen.cpp
index 93cc7f86..93cc7f86 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30274-sp_cparen_oparen.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30274-sp_cparen_oparen.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30275-bug_1321.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30275-bug_1321.cpp
index 5e708c11..5e708c11 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30275-bug_1321.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30275-bug_1321.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30278-bug_1439.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30278-bug_1439.cpp
index d560522b..d560522b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30278-bug_1439.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30278-bug_1439.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30279-indent-inside-ternary-operator.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30279-indent-inside-ternary-operator.cpp
index 80456e65..80456e65 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30279-indent-inside-ternary-operator.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30279-indent-inside-ternary-operator.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30280-sf557.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30280-sf557.cpp
index 287bc9c1..287bc9c1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30280-sf557.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30280-sf557.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30281-Issue_2478.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30281-Issue_2478.cpp
index 40674590..40674590 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30281-Issue_2478.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30281-Issue_2478.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30282-Issue_2703.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30282-Issue_2703.cpp
index ec4554e9..ec4554e9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30282-Issue_2703.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30282-Issue_2703.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30283-Issue_3321.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30283-Issue_3321.h
index 9444d24c..9444d24c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30283-Issue_3321.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30283-Issue_3321.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30284-Issue_2957.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30284-Issue_2957.cpp
index bd52cb8c..bd52cb8c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30284-Issue_2957.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30284-Issue_2957.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30285-Issue_2971.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30285-Issue_2971.cpp
index 52e7a253..52e7a253 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30285-Issue_2971.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30285-Issue_2971.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30286-Issue_3558.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30286-Issue_3558.cpp
index 561821ee..561821ee 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30286-Issue_3558.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30286-Issue_3558.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30287-Issue_3786.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30287-Issue_3786.cpp
index dfb53cdc..dfb53cdc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30287-Issue_3786.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30287-Issue_3786.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30287-Issue_3786.rerun.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30287-Issue_3786.rerun.cpp
index 41ebe641..41ebe641 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30287-Issue_3786.rerun.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30287-Issue_3786.rerun.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30290-align_left_shift.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30290-align_left_shift.cpp
index 8591a642..8591a642 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30290-align_left_shift.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30290-align_left_shift.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30291-indent_shift.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30291-indent_shift.cpp
index bc1ae2e5..bc1ae2e5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30291-indent_shift.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30291-indent_shift.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30292-eigen.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30292-eigen.cpp
index aa43434a..aa43434a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30292-eigen.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30292-eigen.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30293-pos_shift.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30293-pos_shift.cpp
index d4a8f1ed..d4a8f1ed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30293-pos_shift.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30293-pos_shift.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30294-pos_shift.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30294-pos_shift.cpp
index badc9798..badc9798 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30294-pos_shift.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30294-pos_shift.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30295-pos_shift.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30295-pos_shift.cpp
index efb19263..efb19263 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30295-pos_shift.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30295-pos_shift.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30300-enum_shr.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30300-enum_shr.cpp
index 26e0d08e..26e0d08e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30300-enum_shr.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30300-enum_shr.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30301-enum_class.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30301-enum_class.h
index 7ad5e9ea..7ad5e9ea 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30301-enum_class.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30301-enum_class.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30302-bug_1315.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30302-bug_1315.cpp
index 584f9a00..584f9a00 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30302-bug_1315.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30302-bug_1315.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30303-Issue_2902.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30303-Issue_2902.cpp
index ae10d5a9..ae10d5a9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30303-Issue_2902.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30303-Issue_2902.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30310-braced_init_list.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30310-braced_init_list.cpp
index 116462c2..116462c2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30310-braced_init_list.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30310-braced_init_list.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30311-uniform_initialization.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30311-uniform_initialization.cpp
index 64da585d..64da585d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30311-uniform_initialization.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30311-uniform_initialization.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30312-return_init_list.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30312-return_init_list.cpp
index ef91c528..ef91c528 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30312-return_init_list.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30312-return_init_list.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30313-sp_brace_brace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30313-sp_brace_brace.cpp
index 2ae91737..2ae91737 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30313-sp_brace_brace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30313-sp_brace_brace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30314-sp_brace_brace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30314-sp_brace_brace.cpp
index b7ca9839..b7ca9839 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30314-sp_brace_brace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30314-sp_brace_brace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30315-return_braced_init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30315-return_braced_init.cpp
index cf86baeb..cf86baeb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30315-return_braced_init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30315-return_braced_init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30316-Issue_2428.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30316-Issue_2428.cpp
index b2a0a139..b2a0a139 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30316-Issue_2428.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30316-Issue_2428.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30317-braced_init_template_decltype.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30317-braced_init_template_decltype.cpp
index 3c22d790..3c22d790 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30317-braced_init_template_decltype.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30317-braced_init_template_decltype.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30318-Issue_2949.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30318-Issue_2949.cpp
index d37d7ac3..d37d7ac3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30318-Issue_2949.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30318-Issue_2949.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30319-Issue_2886.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30319-Issue_2886.cpp
index 0474c710..0474c710 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30319-Issue_2886.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30319-Issue_2886.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30320-returns.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30320-returns.cpp
index d1ac08c0..d1ac08c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30320-returns.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30320-returns.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30321-returns.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30321-returns.cpp
index 1abe1e54..1abe1e54 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30321-returns.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30321-returns.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30322-returns.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30322-returns.cpp
index a61b0fcf..a61b0fcf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30322-returns.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30322-returns.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30323-returns.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30323-returns.cpp
index b12cd7eb..b12cd7eb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30323-returns.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30323-returns.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30324-returns.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30324-returns.cpp
index fede22db..fede22db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30324-returns.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30324-returns.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30325-returns.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30325-returns.cpp
index d797f9c7..d797f9c7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30325-returns.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30325-returns.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30326-indent_off_after_return.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30326-indent_off_after_return.cpp
index 6cd6d8e4..6cd6d8e4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30326-indent_off_after_return.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30326-indent_off_after_return.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30327-indent_off_after_return.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30327-indent_off_after_return.cpp
index 6cd6d8e4..6cd6d8e4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30327-indent_off_after_return.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30327-indent_off_after_return.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30328-call_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30328-call_brace_init_lst.cpp
index b75c35b1..b75c35b1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30328-call_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30328-call_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30329-call_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30329-call_brace_init_lst.cpp
index 83837910..83837910 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30329-call_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30329-call_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30330-Issue_3080.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30330-Issue_3080.cpp
index 75c6072b..75c6072b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30330-Issue_3080.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30330-Issue_3080.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30340-issue_3105_1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30340-issue_3105_1.cpp
new file mode 100644
index 00000000..3e9e4799
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30340-issue_3105_1.cpp
@@ -0,0 +1,14 @@
+int short_function_name()
+{
+ call_some_really_long_function.of_some_sort(
+ some_long_parameter1, some_long_parameter2);
+
+ void *test_func = library->symbol( TQString(TQString(
+ "test_%1").arg(module2.factoryName())).utf8() );
+
+ CHECK_COMPLETE_SIZE (iceConn, ICE_AuthNextPhase, length,
+ message->authDataLength +
+ SIZEOF (iceAuthNextPhaseMsg), authData,
+ iceConn->connect_to_you ? IceFatalToConnection :
+ IceFatalToProtocol);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30341-issue_3105_1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30341-issue_3105_1.cpp
new file mode 100644
index 00000000..d79c00c6
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30341-issue_3105_1.cpp
@@ -0,0 +1,15 @@
+int short_function_name()
+{
+ call_some_really_long_function.of_some_sort(
+ some_long_parameter1, some_long_parameter2);
+
+ void *test_func =
+ library->symbol( TQString(TQString("test_%1").arg(
+ module2.factoryName())).utf8() );
+
+ CHECK_COMPLETE_SIZE (iceConn, ICE_AuthNextPhase, length,
+ message->authDataLength +
+ SIZEOF (iceAuthNextPhaseMsg), authData,
+ iceConn->connect_to_you ? IceFatalToConnection :
+ IceFatalToProtocol);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30342-issue_3105_1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30342-issue_3105_1.cpp
new file mode 100644
index 00000000..81bb1f61
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30342-issue_3105_1.cpp
@@ -0,0 +1,17 @@
+int short_function_name()
+{
+ call_some_really_long_function.of_some_sort(
+ some_long_parameter1, some_long_parameter2);
+
+ void *test_func =
+ library->symbol( TQString(TQString("test_%1").arg(
+ module2.factoryName())).utf8() );
+
+ CHECK_COMPLETE_SIZE (iceConn, ICE_AuthNextPhase, length,
+ message->authDataLength +
+ SIZEOF (iceAuthNextPhaseMsg),
+ authData,
+ iceConn->connect_to_you ?
+ IceFatalToConnection :
+ IceFatalToProtocol);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30343-issue_3105_2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30343-issue_3105_2.cpp
new file mode 100644
index 00000000..9e6b6d78
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30343-issue_3105_2.cpp
@@ -0,0 +1,94 @@
+struct KPluginSelectionWidget::KPluginSelectionWidgetPrivate
+{
+ KPluginSelectionWidgetPrivate(KPluginSelector *_kps, const TQString &_cat,
+ TDEConfigGroup *_config) :
+ widgetstack(0), kps(_kps), config(_config), tooltip(0), catname(_cat), currentplugininfo(0),
+ visible(true), currentchecked(false), changed(0)
+ {
+ moduleParentComponents.setAutoDelete(true);
+ }
+};
+
+KPasswordDialog::KPasswordDialog(Types type, bool enableKeep, int extraBttn, TQWidget *parent,
+ const char *name) :
+ KDialogBase(parent, name, true, "", Ok | Cancel | extraBttn,
+ Ok, true), m_Keep(enableKeep ? 1 : 0), m_Type(type), m_keepWarnLbl(0),
+ d(new KPasswordDialogPrivate)
+{
+ d->iconName = "password";
+ init();
+
+ const TQString strengthBarWhatsThis(i18n(
+ "The password strength meter gives an indication of the security "
+ "of the password you have entered. To improve the strength of "
+ "the password, try:\n"
+ " - using a longer password;\n"
+ " - using a mixture of upper- and lower-case letters;\n"
+ " - using numbers or symbols, such as #, as well as letters."));
+
+ int retVal = KMessageBox::warningContinueCancel(this,
+ i18n("The password you have entered has a low strength. "
+ "To improve the strength of "
+ "the password, try:\n"
+ " - using a longer password;\n"
+ " - using a mixture of upper- and lower-case letters;\n"
+ " - using numbers or symbols as well as letters.\n"
+ "\n"
+ "Would you like to use this password anyway?"),
+ i18n("Low Password Strength"));
+}
+
+static const int POPUP_FLAGS = TQt::WStyle_Customize | TQt::WDestructiveClose | TQt::WX11BypassWM |
+ TQt::WStyle_StaysOnTop | TQt::WStyle_Tool | TQt::WStyle_NoBorder;
+
+KPassivePopup::KPassivePopup(TQWidget *parent, const char *name, WFlags f) :
+ TQFrame(0, name, (WFlags)(f ? (int)f : POPUP_FLAGS)), window(parent ? parent->winId() : 0L),
+ msgView(0), topLayout(0), hideDelay(DEFAULT_POPUP_TIME),
+ hideTimer(new TQTimer(this, "hide_timer")), m_autoDelete(false)
+{
+ init(DEFAULT_POPUP_TYPE);
+
+ move(right ? d->anchor.x() - width() + 20 : (d->anchor.x() < 11 ? 11 : d->anchor.x() - 20),
+ bottom ? d->anchor.y() - height() : (d->anchor.y() < 11 ? 11 : d->anchor.y()));
+}
+
+TDEToggleAction* showMenubar(const TQObject *recvr, const char *slot, TDEActionCollection *parent,
+ const char *_name)
+{
+ TDEToggleAction *ret;
+ ret = new TDEToggleAction(i18n("Show &Menubar"), "showmenu",
+ TDEStdAccel::shortcut(TDEStdAccel::ShowMenubar), recvr, slot, parent,
+ _name ? _name : name(ShowMenubar));
+ ret->setWhatsThis(i18n("Show Menubar<p>"
+ "Shows the menubar again after it has been hidden"));
+ KGuiItem guiItem(i18n("Hide &Menubar"), 0 /*same icon*/, TQString::null,
+ i18n("Hide Menubar<p>"
+ "Hide the menubar. You can usually get it back using the right mouse button inside the window itself."));
+ return ret;
+}
+
+KProgressBoxDialog::KProgressBoxDialog(TQWidget *parent, const char *name, const TQString &caption,
+ const TQString &text, bool modal) :
+ KDialogBase(KDialogBase::Plain, caption, KDialogBase::Cancel,
+ KDialogBase::Cancel, parent, name, modal), mAutoClose(true), mAutoReset(false),
+ mCancelled(false), mAllowCancel(true), mAllowTextEdit(false), mShown(false),
+ mMinDuration(2000), d(new KProgressBoxDialogPrivate)
+{
+ KWin::setIcons(winId(), kapp->icon(), kapp->miniIcon());
+}
+
+TDEPopupMenu* KPixmapRegionSelectorWidget::createPopupMenu()
+{
+ TDEPopupMenu *popup = new TDEPopupMenu(this, "PixmapRegionSelectorPopup");
+ popup->insertTitle(i18n("Image Operations"));
+
+ TDEAction *action = new TDEAction(i18n("&Rotate Clockwise"), "object-rotate-right", 0,
+ TQT_TQOBJECT(this), TQT_SLOT(rotateClockwise()), TQT_TQOBJECT(popup), "rotateclockwise");
+ action->plug(popup);
+
+ action = new TDEAction(i18n("Rotate &Counterclockwise"), "object-rotate-left", 0,
+ TQT_TQOBJECT(this), TQT_SLOT(rotateCounterclockwise()), TQT_TQOBJECT(popup),
+ "rotatecounterclockwise");
+ action->plug(popup);
+ return popup;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30344-issue_3105_2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30344-issue_3105_2.cpp
new file mode 100644
index 00000000..c4eb7129
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30344-issue_3105_2.cpp
@@ -0,0 +1,94 @@
+struct KPluginSelectionWidget::KPluginSelectionWidgetPrivate
+{
+ KPluginSelectionWidgetPrivate(KPluginSelector *_kps, const TQString &_cat,
+ TDEConfigGroup *_config) :
+ widgetstack(0), kps(_kps), config(_config), tooltip(0), catname(_cat), currentplugininfo(0),
+ visible(true), currentchecked(false), changed(0)
+ {
+ moduleParentComponents.setAutoDelete(true);
+ }
+};
+
+KPasswordDialog::KPasswordDialog(Types type, bool enableKeep, int extraBttn, TQWidget *parent,
+ const char *name) :
+ KDialogBase(parent, name, true, "", Ok | Cancel | extraBttn,
+ Ok, true), m_Keep(enableKeep ? 1 : 0), m_Type(type), m_keepWarnLbl(0),
+ d(new KPasswordDialogPrivate)
+{
+ d->iconName = "password";
+ init();
+
+ const TQString strengthBarWhatsThis(i18n(
+ "The password strength meter gives an indication of the security "
+ "of the password you have entered. To improve the strength of "
+ "the password, try:\n"
+ " - using a longer password;\n"
+ " - using a mixture of upper- and lower-case letters;\n"
+ " - using numbers or symbols, such as #, as well as letters."));
+
+ int retVal = KMessageBox::warningContinueCancel(this,
+ i18n("The password you have entered has a low strength. "
+ "To improve the strength of "
+ "the password, try:\n"
+ " - using a longer password;\n"
+ " - using a mixture of upper- and lower-case letters;\n"
+ " - using numbers or symbols as well as letters.\n"
+ "\n"
+ "Would you like to use this password anyway?"),
+ i18n("Low Password Strength"));
+}
+
+static const int POPUP_FLAGS = TQt::WStyle_Customize | TQt::WDestructiveClose | TQt::WX11BypassWM |
+ TQt::WStyle_StaysOnTop | TQt::WStyle_Tool | TQt::WStyle_NoBorder;
+
+KPassivePopup::KPassivePopup(TQWidget *parent, const char *name, WFlags f) :
+ TQFrame(0, name, (WFlags)(f ? (int)f : POPUP_FLAGS)), window(parent ? parent->winId() : 0L),
+ msgView(0), topLayout(0), hideDelay(DEFAULT_POPUP_TIME),
+ hideTimer(new TQTimer(this, "hide_timer")), m_autoDelete(false)
+{
+ init(DEFAULT_POPUP_TYPE);
+
+ move(right ? d->anchor.x() - width() + 20 : (d->anchor.x() < 11 ? 11 : d->anchor.x() - 20),
+ bottom ? d->anchor.y() - height() : (d->anchor.y() < 11 ? 11 : d->anchor.y()));
+}
+
+TDEToggleAction* showMenubar(const TQObject *recvr, const char *slot, TDEActionCollection *parent,
+ const char *_name)
+{
+ TDEToggleAction *ret;
+ ret = new TDEToggleAction(i18n("Show &Menubar"), "showmenu",
+ TDEStdAccel::shortcut(TDEStdAccel::ShowMenubar), recvr, slot, parent,
+ _name ? _name : name(ShowMenubar));
+ ret->setWhatsThis(i18n("Show Menubar<p>"
+ "Shows the menubar again after it has been hidden"));
+ KGuiItem guiItem(i18n("Hide &Menubar"), 0 /*same icon*/, TQString::null,
+ i18n("Hide Menubar<p>"
+ "Hide the menubar. You can usually get it back using the right mouse button inside the window itself."));
+ return ret;
+}
+
+KProgressBoxDialog::KProgressBoxDialog(TQWidget *parent, const char *name, const TQString &caption,
+ const TQString &text, bool modal) :
+ KDialogBase(KDialogBase::Plain, caption, KDialogBase::Cancel,
+ KDialogBase::Cancel, parent, name, modal), mAutoClose(true), mAutoReset(false),
+ mCancelled(false), mAllowCancel(true), mAllowTextEdit(false), mShown(false), mMinDuration(2000),
+ d(new KProgressBoxDialogPrivate)
+{
+ KWin::setIcons(winId(), kapp->icon(), kapp->miniIcon());
+}
+
+TDEPopupMenu* KPixmapRegionSelectorWidget::createPopupMenu()
+{
+ TDEPopupMenu *popup = new TDEPopupMenu(this, "PixmapRegionSelectorPopup");
+ popup->insertTitle(i18n("Image Operations"));
+
+ TDEAction *action = new TDEAction(i18n("&Rotate Clockwise"), "object-rotate-right", 0,
+ TQT_TQOBJECT(this), TQT_SLOT(rotateClockwise()), TQT_TQOBJECT(popup), "rotateclockwise");
+ action->plug(popup);
+
+ action = new TDEAction(i18n("Rotate &Counterclockwise"), "object-rotate-left", 0,
+ TQT_TQOBJECT(this), TQT_SLOT(rotateCounterclockwise()), TQT_TQOBJECT(popup),
+ "rotatecounterclockwise");
+ action->plug(popup);
+ return popup;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30345-issue_3105_2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30345-issue_3105_2.cpp
new file mode 100644
index 00000000..6c5e374a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30345-issue_3105_2.cpp
@@ -0,0 +1,98 @@
+struct KPluginSelectionWidget::KPluginSelectionWidgetPrivate
+{
+ KPluginSelectionWidgetPrivate(KPluginSelector *_kps, const TQString &_cat,
+ TDEConfigGroup *_config) :
+ widgetstack(0), kps(_kps), config(_config), tooltip(0), catname(_cat), currentplugininfo(0),
+ visible(true), currentchecked(false), changed(0)
+ {
+ moduleParentComponents.setAutoDelete(true);
+ }
+};
+
+KPasswordDialog::KPasswordDialog(Types type, bool enableKeep, int extraBttn, TQWidget *parent,
+ const char *name) :
+ KDialogBase(parent, name, true, "", Ok | Cancel | extraBttn,
+ Ok, true), m_Keep(enableKeep ? 1 : 0), m_Type(type), m_keepWarnLbl(0),
+ d(new KPasswordDialogPrivate)
+{
+ d->iconName = "password";
+ init();
+
+ const TQString strengthBarWhatsThis(i18n(
+ "The password strength meter gives an indication of the security "
+ "of the password you have entered. To improve the strength of "
+ "the password, try:\n"
+ " - using a longer password;\n"
+ " - using a mixture of upper- and lower-case letters;\n"
+ " - using numbers or symbols, such as #, as well as letters."));
+
+ int retVal = KMessageBox::warningContinueCancel(this,
+ i18n(
+ "The password you have entered has a low strength. "
+ "To improve the strength of "
+ "the password, try:\n"
+ " - using a longer password;\n"
+ " - using a mixture of upper- and lower-case letters;\n"
+ " - using numbers or symbols as well as letters.\n"
+ "\n"
+ "Would you like to use this password anyway?"),
+ i18n("Low Password Strength"));
+}
+
+static const int POPUP_FLAGS = TQt::WStyle_Customize | TQt::WDestructiveClose | TQt::WX11BypassWM |
+ TQt::WStyle_StaysOnTop | TQt::WStyle_Tool | TQt::WStyle_NoBorder;
+
+KPassivePopup::KPassivePopup(TQWidget *parent, const char *name, WFlags f) :
+ TQFrame(0, name, (WFlags)(f ? (int)f : POPUP_FLAGS)), window(parent ? parent->winId() : 0L),
+ msgView(0), topLayout(0), hideDelay(DEFAULT_POPUP_TIME),
+ hideTimer(new TQTimer(this, "hide_timer")),
+ m_autoDelete(false)
+{
+ init(DEFAULT_POPUP_TYPE);
+
+ move(right ? d->anchor.x() - width() + 20 : (d->anchor.x() < 11 ? 11 : d->anchor.x() - 20),
+ bottom ? d->anchor.y() - height() : (d->anchor.y() < 11 ? 11 : d->anchor.y()));
+}
+
+TDEToggleAction* showMenubar(const TQObject *recvr, const char *slot, TDEActionCollection *parent,
+ const char *_name)
+{
+ TDEToggleAction *ret;
+ ret = new TDEToggleAction(i18n("Show &Menubar"), "showmenu",
+ TDEStdAccel::shortcut(TDEStdAccel::ShowMenubar), recvr, slot, parent,
+ _name ? _name : name(ShowMenubar));
+ ret->setWhatsThis(i18n("Show Menubar<p>"
+ "Shows the menubar again after it has been hidden"));
+ KGuiItem guiItem(i18n("Hide &Menubar"), 0 /*same icon*/, TQString::null,
+ i18n("Hide Menubar<p>"
+ "Hide the menubar. You can usually get it back using the right mouse button inside the window itself."));
+ return ret;
+}
+
+KProgressBoxDialog::KProgressBoxDialog(TQWidget *parent, const char *name, const TQString &caption,
+ const TQString &text, bool modal) :
+ KDialogBase(KDialogBase::Plain, caption, KDialogBase::Cancel,
+ KDialogBase::Cancel, parent, name, modal), mAutoClose(true), mAutoReset(false),
+ mCancelled(false), mAllowCancel(true), mAllowTextEdit(false), mShown(false), mMinDuration(2000),
+ d(new KProgressBoxDialogPrivate)
+{
+ KWin::setIcons(winId(), kapp->icon(), kapp->miniIcon());
+}
+
+TDEPopupMenu* KPixmapRegionSelectorWidget::createPopupMenu()
+{
+ TDEPopupMenu *popup = new TDEPopupMenu(this, "PixmapRegionSelectorPopup");
+ popup->insertTitle(i18n("Image Operations"));
+
+ TDEAction *action = new TDEAction(i18n("&Rotate Clockwise"), "object-rotate-right", 0,
+ TQT_TQOBJECT(this), TQT_SLOT(rotateClockwise()),
+ TQT_TQOBJECT(popup), "rotateclockwise");
+ action->plug(popup);
+
+ action = new TDEAction(i18n("Rotate &Counterclockwise"), "object-rotate-left", 0,
+ TQT_TQOBJECT(this), TQT_SLOT(rotateCounterclockwise()),
+ TQT_TQOBJECT(popup),
+ "rotatecounterclockwise");
+ action->plug(popup);
+ return popup;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30353-indent_ternary-1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30353-indent_ternary-1.cpp
index c5fa89e5..c5fa89e5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30353-indent_ternary-1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30353-indent_ternary-1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30400-attribute_specifier_seqs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30400-attribute_specifier_seqs.cpp
index 15cc6e3a..15cc6e3a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30400-attribute_specifier_seqs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30400-attribute_specifier_seqs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30401-Issue_2570.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30401-Issue_2570.cpp
index 44373e77..44373e77 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30401-Issue_2570.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30401-Issue_2570.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30701-function-def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30701-function-def.cpp
index 89261c8e..89261c8e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30701-function-def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30701-function-def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30702-function-def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30702-function-def.cpp
index c1fb4ed4..c1fb4ed4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30702-function-def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30702-function-def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30703-function-def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30703-function-def.cpp
index c604152d..c604152d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30703-function-def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30703-function-def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30705-func_param.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30705-func_param.cpp
index 8bdb0ce8..8bdb0ce8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30705-func_param.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30705-func_param.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30706-bug_1020.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30706-bug_1020.cpp
index f0e9e60d..f0e9e60d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30706-bug_1020.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30706-bug_1020.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30711-semicolons.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30711-semicolons.cpp
index de28deef..de28deef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30711-semicolons.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30711-semicolons.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30712-bug_1158.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30712-bug_1158.cpp
index 2a9ba76d..2a9ba76d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30712-bug_1158.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30712-bug_1158.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30713-fix_for_relational_operators.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30713-fix_for_relational_operators.cpp
index 890f2eba..890f2eba 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30713-fix_for_relational_operators.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30713-fix_for_relational_operators.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30714-Issue_1733.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30714-Issue_1733.cpp
index 10be5586..10be5586 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30714-Issue_1733.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30714-Issue_1733.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30715-Issue_2942.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30715-Issue_2942.cpp
index dbecc7f4..dbecc7f4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30715-Issue_2942.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30715-Issue_2942.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30720-custom-open-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30720-custom-open-2.cpp
index 4d05944a..4d05944a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30720-custom-open-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30720-custom-open-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30721-Issue_2386.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30721-Issue_2386.cpp
index ac0b1dd4..ac0b1dd4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30721-Issue_2386.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30721-Issue_2386.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30730-qt-1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30730-qt-1.cpp
index 5d0273e2..5d0273e2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30730-qt-1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30730-qt-1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30731-qt-1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30731-qt-1.cpp
index 55b2459b..55b2459b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30731-qt-1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30731-qt-1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30732-Issue_2734.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30732-Issue_2734.cpp
index 27dfdc70..27dfdc70 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30732-Issue_2734.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30732-Issue_2734.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30740-sef.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30740-sef.cpp
index 8730ba15..8730ba15 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30740-sef.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30740-sef.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30741-al.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30741-al.cpp
index 1c911bf2..1c911bf2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30741-al.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30741-al.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30742-delete.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30742-delete.cpp
index c33aa682..c33aa682 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30742-delete.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30742-delete.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30745-Issue_2170.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30745-Issue_2170.cpp
index f1edafd8..f1edafd8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30745-Issue_2170.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30745-Issue_2170.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30746-DefaultAndDelete.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30746-DefaultAndDelete.cpp
index 7dff7dd5..7dff7dd5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30746-DefaultAndDelete.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30746-DefaultAndDelete.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30747-DefaultAndDelete.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30747-DefaultAndDelete.cpp
index 30d315a7..30d315a7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30747-DefaultAndDelete.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30747-DefaultAndDelete.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30748-DefaultAndDelete.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30748-DefaultAndDelete.cpp
index 9b55a964..9b55a964 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30748-DefaultAndDelete.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30748-DefaultAndDelete.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30750-lambda.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30750-lambda.cpp
index daa4bac4..daa4bac4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30750-lambda.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30750-lambda.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30751-lambda.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30751-lambda.cpp
index 291610c5..291610c5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30751-lambda.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30751-lambda.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30752-lambda.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30752-lambda.cpp
index 5c0f72b0..5c0f72b0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30752-lambda.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30752-lambda.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30753-lambda2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30753-lambda2.cpp
index d91798a6..d91798a6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30753-lambda2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30753-lambda2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30754-bug_i_682.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30754-bug_i_682.h
index 51c58e23..51c58e23 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30754-bug_i_682.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30754-bug_i_682.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30755-bug_i_938.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30755-bug_i_938.h
index b13997a6..b13997a6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30755-bug_i_938.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30755-bug_i_938.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30756-bug_1296.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30756-bug_1296.cpp
index 7f7757c4..7f7757c4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30756-bug_1296.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30756-bug_1296.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30757-Issue_3054.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30757-Issue_3054.cpp
index 53edc388..53edc388 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30757-Issue_3054.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30757-Issue_3054.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30758-Issue_3054-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30758-Issue_3054-2.cpp
index e4c1c8da..e4c1c8da 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30758-Issue_3054-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30758-Issue_3054-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30759-lambda2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30759-lambda2.cpp
index 09c779b5..09c779b5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30759-lambda2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30759-lambda2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30760-bug_1296.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30760-bug_1296.cpp
index a5535041..a5535041 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30760-bug_1296.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30760-bug_1296.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30761-out-668.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30761-out-668.cpp
index 8829c0ce..8829c0ce 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30761-out-668.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30761-out-668.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30762-out-668.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30762-out-668.cpp
index 0dac74c3..0dac74c3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30762-out-668.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30762-out-668.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30763-Issue_2166.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30763-Issue_2166.cpp
index d9ac55c7..d9ac55c7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30763-Issue_2166.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30763-Issue_2166.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30764-Issue_2591.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30764-Issue_2591.cpp
index 01ed232e..01ed232e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30764-Issue_2591.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30764-Issue_2591.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30765-lambda.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30765-lambda.cpp
index 05e372e3..05e372e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30765-lambda.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30765-lambda.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30766-lambda.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30766-lambda.cpp
index 05e372e3..05e372e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30766-lambda.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30766-lambda.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30767-lambda.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30767-lambda.cpp
index 05e372e3..05e372e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30767-lambda.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30767-lambda.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30768-sp_cpp_lambda_fparen.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30768-sp_cpp_lambda_fparen.cpp
index e25d0496..e25d0496 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30768-sp_cpp_lambda_fparen.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30768-sp_cpp_lambda_fparen.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30770-lambda.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30770-lambda.cpp
index 5bce0d31..5bce0d31 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30770-lambda.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30770-lambda.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30771-lambda.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30771-lambda.cpp
index acc5b530..acc5b530 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30771-lambda.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30771-lambda.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30772-lambda.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30772-lambda.cpp
index 304e4d10..304e4d10 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30772-lambda.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30772-lambda.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30773-lambda.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30773-lambda.cpp
index f494244a..f494244a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30773-lambda.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30773-lambda.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30774-lambda.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30774-lambda.cpp
index f494244a..f494244a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30774-lambda.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30774-lambda.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30775-lambda.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30775-lambda.cpp
index 80e9c8f9..80e9c8f9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30775-lambda.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30775-lambda.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30776-sp_cpp_lambda_fparen.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30776-sp_cpp_lambda_fparen.cpp
index e0c1985d..e0c1985d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30776-sp_cpp_lambda_fparen.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30776-sp_cpp_lambda_fparen.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30777-sp_cpp_lambda_fparen.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30777-sp_cpp_lambda_fparen.cpp
index f882a211..f882a211 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30777-sp_cpp_lambda_fparen.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30777-sp_cpp_lambda_fparen.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30780-lambda_in_one_liner.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30780-lambda_in_one_liner.cpp
index c740c4bd..c740c4bd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30780-lambda_in_one_liner.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30780-lambda_in_one_liner.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30781-lambda_brace_list.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30781-lambda_brace_list.cpp
index 8626f5af..8626f5af 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30781-lambda_brace_list.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30781-lambda_brace_list.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30790-Issue_2795.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30790-Issue_2795.cpp
index 6cb7e112..6cb7e112 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30790-Issue_2795.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30790-Issue_2795.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30791-Issue_3203.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30791-Issue_3203.cpp
index 519d29dd..519d29dd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30791-Issue_3203.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30791-Issue_3203.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30800-align-star-amp-pos.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30800-align-star-amp-pos.cpp
index dc988ce1..dc988ce1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30800-align-star-amp-pos.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30800-align-star-amp-pos.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30801-align-star-amp-pos.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30801-align-star-amp-pos.cpp
index c23b0d4a..c23b0d4a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30801-align-star-amp-pos.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30801-align-star-amp-pos.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30802-align-star-amp-pos.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30802-align-star-amp-pos.cpp
index cf2bff2d..cf2bff2d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30802-align-star-amp-pos.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30802-align-star-amp-pos.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30803-bug_1403.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30803-bug_1403.cpp
index 209c0173..209c0173 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30803-bug_1403.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30803-bug_1403.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30805-ptr-star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30805-ptr-star.cpp
index fcefa84f..fcefa84f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30805-ptr-star.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30805-ptr-star.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30806-ptr-star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30806-ptr-star.cpp
index 76659df9..76659df9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30806-ptr-star.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30806-ptr-star.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30807-ptr-star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30807-ptr-star.cpp
index 55478e3f..55478e3f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30807-ptr-star.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30807-ptr-star.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30808-ptr-star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30808-ptr-star.cpp
index 68cb8151..68cb8151 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30808-ptr-star.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30808-ptr-star.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30809-bug_1289.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30809-bug_1289.cpp
index 42663477..42663477 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30809-bug_1289.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30809-bug_1289.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30810-ptr-star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30810-ptr-star.cpp
index fa88b0bc..fa88b0bc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30810-ptr-star.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30810-ptr-star.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30811-misc3.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30811-misc3.cpp
index 9ca06c3c..9ca06c3c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30811-misc3.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30811-misc3.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30812-misc4.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30812-misc4.cpp
index 5ddaffb0..5ddaffb0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30812-misc4.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30812-misc4.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30813-misc5.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30813-misc5.cpp
index e8ffaf27..e8ffaf27 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30813-misc5.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30813-misc5.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30814-misc6.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30814-misc6.cpp
index 95cc0383..95cc0383 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30814-misc6.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30814-misc6.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30815-cmt-reflow.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30815-cmt-reflow.cpp
index 8bd50283..8bd50283 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30815-cmt-reflow.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30815-cmt-reflow.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30816-for_long.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30816-for_long.cpp
index 5483d4c8..5483d4c8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30816-for_long.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30816-for_long.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30817-cmt-cpp-cont.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30817-cmt-cpp-cont.cpp
index 9acbac58..9acbac58 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30817-cmt-cpp-cont.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30817-cmt-cpp-cont.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30818-bug_1169.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30818-bug_1169.cpp
index b1138a57..b1138a57 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30818-bug_1169.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30818-bug_1169.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30819-bug_1170.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30819-bug_1170.cpp
index 18e029cb..18e029cb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30819-bug_1170.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30819-bug_1170.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30820-pp-define-indent.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30820-pp-define-indent.cpp
index 0d7892a2..0d7892a2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30820-pp-define-indent.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30820-pp-define-indent.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30821-pp_indent_case.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30821-pp_indent_case.cpp
index 70b1b9c7..70b1b9c7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30821-pp_indent_case.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30821-pp_indent_case.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30822-pp_indent_brace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30822-pp_indent_brace.cpp
index d1decdf6..d1decdf6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30822-pp_indent_brace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30822-pp_indent_brace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30823-pp_indent_func_def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30823-pp_indent_func_def.cpp
index b01c6bbe..b01c6bbe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30823-pp_indent_func_def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30823-pp_indent_func_def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30824-pp_indent_extern.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30824-pp_indent_extern.cpp
index 995db611..995db611 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30824-pp_indent_extern.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30824-pp_indent_extern.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30825-Issue_1966.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30825-Issue_1966.cpp
index 12a8084b..12a8084b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30825-Issue_1966.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30825-Issue_1966.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30826-Issue_2319.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30826-Issue_2319.cpp
index 8c0ae3e9..8c0ae3e9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30826-Issue_2319.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30826-Issue_2319.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30827-Issue_1167.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30827-Issue_1167.cpp
index 6410326c..6410326c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30827-Issue_1167.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30827-Issue_1167.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30828-bug_1691.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30828-bug_1691.cpp
index e93f7f74..e93f7f74 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30828-bug_1691.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30828-bug_1691.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30829-Issue_2726.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30829-Issue_2726.cpp
index bb7f1d4b..bb7f1d4b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30829-Issue_2726.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30829-Issue_2726.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30830-kw_subst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30830-kw_subst.cpp
index 47084a7e..47084a7e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30830-kw_subst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30830-kw_subst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30831-kw_subst2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30831-kw_subst2.cpp
index b5e58eac..b5e58eac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30831-kw_subst2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30831-kw_subst2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30832-kw_subst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30832-kw_subst.cpp
index 47084a7e..47084a7e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30832-kw_subst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30832-kw_subst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30840-nl_func_type_name.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30840-nl_func_type_name.cpp
index a4302001..a4302001 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30840-nl_func_type_name.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30840-nl_func_type_name.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30841-nl_func_type_name.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30841-nl_func_type_name.cpp
index 5997a5c3..5997a5c3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30841-nl_func_type_name.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30841-nl_func_type_name.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30842-nl_func_type_name.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30842-nl_func_type_name.cpp
index a826af48..a826af48 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30842-nl_func_type_name.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30842-nl_func_type_name.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30843-nl_func_type_name.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30843-nl_func_type_name.cpp
index b1ead857..b1ead857 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30843-nl_func_type_name.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30843-nl_func_type_name.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30844-Issue_2771.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30844-Issue_2771.cpp
index ab7c285f..ab7c285f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30844-Issue_2771.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30844-Issue_2771.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30845-deref.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30845-deref.cpp
index 9705b51f..9705b51f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30845-deref.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30845-deref.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30846-Issue_3197.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30846-Issue_3197.h
index 76331aa3..76331aa3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30846-Issue_3197.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30846-Issue_3197.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30850-sp_cmt_cpp_start.cc b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30850-sp_cmt_cpp_start.cc
index 9cc04a18..9cc04a18 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30850-sp_cmt_cpp_start.cc
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30850-sp_cmt_cpp_start.cc
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30852-Issue_2138.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30852-Issue_2138.cpp
index 3a8fa83c..3a8fa83c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30852-Issue_2138.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30852-Issue_2138.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30853-noexcept.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30853-noexcept.cpp
index 60f2edd4..60f2edd4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30853-noexcept.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30853-noexcept.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30854-Issue_1703.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30854-Issue_1703.cpp
index af32d661..af32d661 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30854-Issue_1703.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30854-Issue_1703.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30855-cpp_move.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30855-cpp_move.cpp
index cec9beb8..cec9beb8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30855-cpp_move.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30855-cpp_move.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30856-sp_cmt_cpp_region.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30856-sp_cmt_cpp_region.cpp
index dc9e4160..dc9e4160 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30856-sp_cmt_cpp_region.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30856-sp_cmt_cpp_region.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30857-sp_cmt_cpp_region.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30857-sp_cmt_cpp_region.cpp
index 29f75936..29f75936 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30857-sp_cmt_cpp_region.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30857-sp_cmt_cpp_region.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30860-sf574.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30860-sf574.cpp
index 58810404..58810404 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30860-sf574.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30860-sf574.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30870-cmt_insert.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30870-cmt_insert.cpp
index cf5ac204..cf5ac204 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30870-cmt_insert.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30870-cmt_insert.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30871-cmt_insert.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30871-cmt_insert.cpp
index a169795a..a169795a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30871-cmt_insert.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30871-cmt_insert.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30872-Issue_2752.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30872-Issue_2752.cpp
index b305b50f..b305b50f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30872-Issue_2752.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30872-Issue_2752.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30880-bug_1758.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30880-bug_1758.cpp
index b0f35107..b0f35107 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30880-bug_1758.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30880-bug_1758.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30881-bug_1758-f.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30881-bug_1758-f.cpp
index 24bb563b..24bb563b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30881-bug_1758-f.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30881-bug_1758-f.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30900-region.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30900-region.cpp
index 27823ca6..27823ca6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30900-region.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30900-region.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30901-region.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30901-region.cpp
index b7bebae8..b7bebae8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30901-region.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30901-region.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30902-region.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30902-region.cpp
index 39b20ea6..39b20ea6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30902-region.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30902-region.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30903-region.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30903-region.cpp
index d6e3403a..d6e3403a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30903-region.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30903-region.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30907-Issue_1813.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30907-Issue_1813.cpp
index d5a3cc71..d5a3cc71 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30907-Issue_1813.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30907-Issue_1813.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30908-Issue_1813-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30908-Issue_1813-2.cpp
index 310de82f..310de82f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30908-Issue_1813-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30908-Issue_1813-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30909-Issue_1813-3.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30909-Issue_1813-3.cpp
index 08c8405d..08c8405d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30909-Issue_1813-3.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30909-Issue_1813-3.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30910-indent_namespace.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30910-indent_namespace.h
index d569a3ca..d569a3ca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30910-indent_namespace.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30910-indent_namespace.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30911-indent_namespace.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30911-indent_namespace.h
index 6f80dc3b..6f80dc3b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30911-indent_namespace.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30911-indent_namespace.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30912-long_namespace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30912-long_namespace.cpp
index 80af6e83..80af6e83 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30912-long_namespace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30912-long_namespace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30913-indent_namespace2.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30913-indent_namespace2.h
index 196b2322..196b2322 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30913-indent_namespace2.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30913-indent_namespace2.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30914-indent_namespace_single_indent.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30914-indent_namespace_single_indent.h
index 24a9b935..24a9b935 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30914-indent_namespace_single_indent.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30914-indent_namespace_single_indent.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30915-bug_1235.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30915-bug_1235.cpp
index b9ff78a1..b9ff78a1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30915-bug_1235.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30915-bug_1235.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30916-Issue_1737.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30916-Issue_1737.cpp
index 06b0866b..06b0866b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30916-Issue_1737.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30916-Issue_1737.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30917-Issue_2345-3.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30917-Issue_2345-3.cpp
index 787ce29b..787ce29b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30917-Issue_2345-3.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30917-Issue_2345-3.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30918-Issue_2345-4.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30918-Issue_2345-4.cpp
index f82d757d..f82d757d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30918-Issue_2345-4.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30918-Issue_2345-4.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30919-Issue_2387.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30919-Issue_2387.cpp
index 526278d6..526278d6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30919-Issue_2387.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30919-Issue_2387.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30920-indent-off.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30920-indent-off.cpp
index f9eccdb8..f9eccdb8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30920-indent-off.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30920-indent-off.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30921-variadic-template.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30921-variadic-template.h
index f159e700..f159e700 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30921-variadic-template.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30921-variadic-template.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30922-variadic-template.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30922-variadic-template.h
index 0a1bd443..0a1bd443 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30922-variadic-template.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30922-variadic-template.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30923-sf.2886991.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30923-sf.2886991.cpp
index 61dc7c21..61dc7c21 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30923-sf.2886991.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30923-sf.2886991.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30924-sf.2886991.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30924-sf.2886991.cpp
index ce5e0b93..ce5e0b93 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30924-sf.2886991.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30924-sf.2886991.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30925-function-def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30925-function-def.cpp
index 2d6df544..2d6df544 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30925-function-def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30925-function-def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30926-function-def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30926-function-def.cpp
index 78b23a14..78b23a14 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30926-function-def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30926-function-def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30927-function-def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30927-function-def.cpp
index bceb00f6..bceb00f6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30927-function-def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30927-function-def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30928-function-def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30928-function-def.cpp
index b14ecb11..b14ecb11 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30928-function-def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30928-function-def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30929-bug_1324.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30929-bug_1324.cpp
index 1aca5762..1aca5762 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30929-bug_1324.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30929-bug_1324.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30930-indent_var_def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30930-indent_var_def.cpp
index 5b3ee4e2..5b3ee4e2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30930-indent_var_def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30930-indent_var_def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30931-indent_var_def_cont.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30931-indent_var_def_cont.cpp
index c505389f..c505389f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30931-indent_var_def_cont.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30931-indent_var_def_cont.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30932-indent_var_def_cont.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30932-indent_var_def_cont.cpp
index 70b7304e..70b7304e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30932-indent_var_def_cont.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30932-indent_var_def_cont.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30933-indent_paren_after_func_def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30933-indent_paren_after_func_def.cpp
index 8a775135..8a775135 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30933-indent_paren_after_func_def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30933-indent_paren_after_func_def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30934-indent_paren_after_func_decl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30934-indent_paren_after_func_decl.cpp
index 6af21978..6af21978 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30934-indent_paren_after_func_decl.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30934-indent_paren_after_func_decl.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30935-indent-misc.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30935-indent-misc.cpp
index ad8de7b0..ad8de7b0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30935-indent-misc.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30935-indent-misc.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30936-indent_braces_no.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30936-indent_braces_no.h
index 725b0402..725b0402 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30936-indent_braces_no.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30936-indent_braces_no.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30937-indent_param.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30937-indent_param.cpp
index 31569ec1..31569ec1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30937-indent_param.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30937-indent_param.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30938-indent_switch_pp.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30938-indent_switch_pp.cpp
index dd910c56..dd910c56 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30938-indent_switch_pp.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30938-indent_switch_pp.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30939-indent_paren_after_func_call.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30939-indent_paren_after_func_call.cpp
index a1453862..a1453862 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30939-indent_paren_after_func_call.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30939-indent_paren_after_func_call.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30940-case-brace-remove.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30940-case-brace-remove.cpp
index cd163570..cd163570 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30940-case-brace-remove.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30940-case-brace-remove.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30941-Issue_2150.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30941-Issue_2150.cpp
index 1e4d6bf5..1e4d6bf5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30941-Issue_2150.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30941-Issue_2150.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30942-Issue_1692.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30942-Issue_1692.cpp
index 89de1d6a..89de1d6a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30942-Issue_1692.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30942-Issue_1692.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30943-Issue_2735.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30943-Issue_2735.cpp
index 3e292425..3e292425 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30943-Issue_2735.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30943-Issue_2735.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30945-sf.3266678.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30945-sf.3266678.cpp
index 810b5105..810b5105 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30945-sf.3266678.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30945-sf.3266678.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30946-sf.3315874.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30946-sf.3315874.h
index 05161496..05161496 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30946-sf.3315874.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30946-sf.3315874.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30947-bug_1689.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30947-bug_1689.cpp
index 40d34d61..40d34d61 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30947-bug_1689.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30947-bug_1689.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30948-sp_before_byref_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30948-sp_before_byref_func.cpp
index 4abfe954..4abfe954 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30948-sp_before_byref_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30948-sp_before_byref_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30949-Issue_2757.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30949-Issue_2757.cpp
index ba83c29e..ba83c29e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30949-Issue_2757.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30949-Issue_2757.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30950-sp_before_tr_emb_cmt_input.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30950-sp_before_tr_emb_cmt_input.cpp
index 943d303b..943d303b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30950-sp_before_tr_emb_cmt_input.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30950-sp_before_tr_emb_cmt_input.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30951-sp_before_tr_emb_cmt_input.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30951-sp_before_tr_emb_cmt_input.cpp
index c7e25f1c..c7e25f1c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30951-sp_before_tr_emb_cmt_input.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30951-sp_before_tr_emb_cmt_input.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30952-sp_before_constr_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30952-sp_before_constr_colon.cpp
index ad0e38d5..ad0e38d5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30952-sp_before_constr_colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30952-sp_before_constr_colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30953-constr_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30953-constr_colon.cpp
index 6c0706e5..6c0706e5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30953-constr_colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30953-constr_colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30954-Issue_2305.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30954-Issue_2305.cpp
index 7458b913..7458b913 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30954-Issue_2305.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30954-Issue_2305.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30955-indent_ctor_init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30955-indent_ctor_init.cpp
index 55982328..55982328 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30955-indent_ctor_init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30955-indent_ctor_init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30956-indent_ctor_init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30956-indent_ctor_init.cpp
index 29a146a9..29a146a9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30956-indent_ctor_init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30956-indent_ctor_init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30957-class-init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30957-class-init.cpp
index faa28873..faa28873 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30957-class-init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30957-class-init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30958-nl_for_leave_one_liners.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30958-nl_for_leave_one_liners.cpp
index 8ff2405f..8ff2405f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30958-nl_for_leave_one_liners.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30958-nl_for_leave_one_liners.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30959-nl_for_leave_one_liners.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30959-nl_for_leave_one_liners.cpp
index 382d2815..382d2815 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30959-nl_for_leave_one_liners.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30959-nl_for_leave_one_liners.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30960-Issue_2151.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30960-Issue_2151.cpp
index d0ee05d2..d0ee05d2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30960-Issue_2151.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30960-Issue_2151.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30961-Issue_2232.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30961-Issue_2232.cpp
index 7867820b..7867820b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30961-Issue_2232.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30961-Issue_2232.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30962-nl_assign_leave_one_liners.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30962-nl_assign_leave_one_liners.cpp
index cf3325f0..cf3325f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30962-nl_assign_leave_one_liners.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30962-nl_assign_leave_one_liners.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30963-Issue_2907.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30963-Issue_2907.cpp
index c0192c4d..c0192c4d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30963-Issue_2907.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30963-Issue_2907.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30964-Issue_2823.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30964-Issue_2823.cpp
index c633398f..c633398f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30964-Issue_2823.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30964-Issue_2823.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30965-return_remove.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30965-return_remove.cpp
new file mode 100644
index 00000000..85d7a545
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30965-return_remove.cpp
@@ -0,0 +1,8 @@
+void
+function(skip_it)
+{
+ if (skip_it)
+ return;
+
+ do_it();
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30966-return_remove.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30966-return_remove.cpp
new file mode 100644
index 00000000..2926b56a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30966-return_remove.cpp
@@ -0,0 +1,9 @@
+void
+function(skip_it)
+{
+ if (skip_it)
+ return;
+
+ do_it();
+ return;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30970-Issue_2219.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30970-Issue_2219.cpp
index e08cb889..e08cb889 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30970-Issue_2219.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30970-Issue_2219.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30971-Issue_2224.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30971-Issue_2224.cpp
index 0c454905..0c454905 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30971-Issue_2224.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30971-Issue_2224.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30972-Issue_2229.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30972-Issue_2229.cpp
index 0c44ed6a..0c44ed6a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30972-Issue_2229.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30972-Issue_2229.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30973-Issue_2236.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30973-Issue_2236.cpp
index 7f7f01f5..7f7f01f5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30973-Issue_2236.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30973-Issue_2236.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30974-using-alias-in-define.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30974-using-alias-in-define.cpp
index 1b4153d8..1b4153d8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/30974-using-alias-in-define.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/30974-using-alias-in-define.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31000-digraph.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31000-digraph.cpp
index e985dae6..e985dae6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31000-digraph.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31000-digraph.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31001-digraph.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31001-digraph.cpp
index 641390a6..641390a6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31001-digraph.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31001-digraph.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31050-pos_assign.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31050-pos_assign.cpp
index af55296b..af55296b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31050-pos_assign.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31050-pos_assign.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31051-pos_assign.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31051-pos_assign.cpp
index af55296b..af55296b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31051-pos_assign.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31051-pos_assign.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31101-nl_before_brace_open_test.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31101-nl_before_brace_open_test.cpp
index fdf9067a..fdf9067a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31101-nl_before_brace_open_test.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31101-nl_before_brace_open_test.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31102-nl_before_brace_open_test.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31102-nl_before_brace_open_test.cpp
index 59342e57..59342e57 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31102-nl_before_brace_open_test.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31102-nl_before_brace_open_test.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31103-nl_before_brace_open_test.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31103-nl_before_brace_open_test.cpp
index 5efbf20e..5efbf20e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31103-nl_before_brace_open_test.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31103-nl_before_brace_open_test.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31104-nl_before_brace_open_test.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31104-nl_before_brace_open_test.cpp
index a1b93406..a1b93406 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31104-nl_before_brace_open_test.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31104-nl_before_brace_open_test.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31400-trailing_return.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31400-trailing_return.cpp
index ef642eec..ef642eec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31400-trailing_return.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31400-trailing_return.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31401-trailing_return.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31401-trailing_return.cpp
index bfc09585..bfc09585 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31401-trailing_return.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31401-trailing_return.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31402-trailing_return.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31402-trailing_return.cpp
index 01adfc69..01adfc69 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31402-trailing_return.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31402-trailing_return.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31403-trailing_return_byref_ptr.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31403-trailing_return_byref_ptr.cpp
index 9b7da565..9b7da565 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31403-trailing_return_byref_ptr.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31403-trailing_return_byref_ptr.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31404-trailing_return_byref_ptr.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31404-trailing_return_byref_ptr.cpp
index 7ecf920d..7ecf920d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31404-trailing_return_byref_ptr.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31404-trailing_return_byref_ptr.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31450-indent_func_alias_prototype.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31450-indent_func_alias_prototype.cpp
index 472f66b3..472f66b3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31450-indent_func_alias_prototype.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31450-indent_func_alias_prototype.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31451-indent_func_alias_prototype.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31451-indent_func_alias_prototype.cpp
index 2288f111..2288f111 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31451-indent_func_alias_prototype.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31451-indent_func_alias_prototype.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31452-indent_func_alias_prototype.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31452-indent_func_alias_prototype.cpp
index 018b3dd6..018b3dd6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31452-indent_func_alias_prototype.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31452-indent_func_alias_prototype.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31562-sf562.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31562-sf562.cpp
index 15ee8e79..15ee8e79 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31562-sf562.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31562-sf562.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31567-sf567.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31567-sf567.cpp
index 6d96731d..6d96731d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31567-sf567.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31567-sf567.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31568-Issue_2368.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31568-Issue_2368.cpp
index 82b8c59c..82b8c59c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31568-Issue_2368.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31568-Issue_2368.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31583-sf583.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31583-sf583.cpp
index 34fc0c21..34fc0c21 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31583-sf583.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31583-sf583.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31593-sf593.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31593-sf593.cpp
index 2d4499e6..2d4499e6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31593-sf593.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31593-sf593.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31594-issue_672.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31594-issue_672.cpp
index 499f3168..499f3168 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31594-issue_672.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31594-issue_672.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31595-issue_1778.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31595-issue_1778.cpp
index 4eea46e0..4eea46e0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31595-issue_1778.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31595-issue_1778.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31596-issue_1782.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31596-issue_1782.cpp
index 664ead7f..664ead7f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31596-issue_1782.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31596-issue_1782.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31597-issue_1804.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31597-issue_1804.cpp
index c98ecdef..c98ecdef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31597-issue_1804.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31597-issue_1804.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31598-Issue_1753.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31598-Issue_1753.cpp
index 9f7da399..9f7da399 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31598-Issue_1753.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31598-Issue_1753.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31599-parameter-packs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31599-parameter-packs.cpp
index 4961aa2b..4961aa2b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31599-parameter-packs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31599-parameter-packs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31600-parameter-packs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31600-parameter-packs.cpp
index 5d1cd8e8..5d1cd8e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31600-parameter-packs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31600-parameter-packs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31601-parameter-packs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31601-parameter-packs.cpp
index 0394fe8b..0394fe8b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31601-parameter-packs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31601-parameter-packs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31602-parameter-packs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31602-parameter-packs.cpp
index 15d0a382..15d0a382 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31602-parameter-packs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31602-parameter-packs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31603-parameter-packs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31603-parameter-packs.cpp
index 3a810b8a..3a810b8a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31603-parameter-packs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31603-parameter-packs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31604-parameter-packs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31604-parameter-packs.cpp
index 2a180b34..2a180b34 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31604-parameter-packs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31604-parameter-packs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31605-parameter-packs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31605-parameter-packs.cpp
index a08af3cf..a08af3cf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31605-parameter-packs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31605-parameter-packs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31606-parameter-packs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31606-parameter-packs.cpp
index a73e2c43..a73e2c43 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31606-parameter-packs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31606-parameter-packs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31607-parameter-packs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31607-parameter-packs.cpp
index 153fc615..153fc615 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31607-parameter-packs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31607-parameter-packs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31608-parameter-packs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31608-parameter-packs.cpp
index 13ba49db..13ba49db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31608-parameter-packs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31608-parameter-packs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31609-parameter-packs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31609-parameter-packs.cpp
index e00841b4..e00841b4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31609-parameter-packs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31609-parameter-packs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31610-Issue_2085.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31610-Issue_2085.cpp
index 581f4db4..581f4db4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31610-Issue_2085.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31610-Issue_2085.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31611-parameter-packs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31611-parameter-packs.cpp
index 4e89022d..4e89022d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31611-parameter-packs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31611-parameter-packs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31612-parameter-packs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31612-parameter-packs.cpp
index 4e89022d..4e89022d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31612-parameter-packs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31612-parameter-packs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31613-parameter-packs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31613-parameter-packs.cpp
index 4e89022d..4e89022d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31613-parameter-packs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31613-parameter-packs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31614-Issue_3309.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31614-Issue_3309.cpp
index d6dd1dac..d6dd1dac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31614-Issue_3309.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31614-Issue_3309.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31615-Issue_3309.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31615-Issue_3309.cpp
index 84ee58aa..84ee58aa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31615-Issue_3309.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31615-Issue_3309.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31616-Issue_3309.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31616-Issue_3309.cpp
index c269ddb0..c269ddb0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31616-Issue_3309.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31616-Issue_3309.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31620-sp_after_type.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31620-sp_after_type.cpp
index 460c0dc2..460c0dc2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31620-sp_after_type.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31620-sp_after_type.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31621-sp_after_type.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31621-sp_after_type.cpp
index b1ffd02b..b1ffd02b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31621-sp_after_type.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31621-sp_after_type.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31622-sp_after_type.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31622-sp_after_type.cpp
index a924423a..a924423a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31622-sp_after_type.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31622-sp_after_type.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31623-sp_after_type.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31623-sp_after_type.cpp
index 5d923c27..5d923c27 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31623-sp_after_type.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31623-sp_after_type.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31624-sp_after_type.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31624-sp_after_type.cpp
index b66aba0c..b66aba0c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31624-sp_after_type.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31624-sp_after_type.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31625-sp_after_type.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31625-sp_after_type.cpp
index add7b57e..add7b57e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31625-sp_after_type.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31625-sp_after_type.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31626-issue_1916.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31626-issue_1916.cpp
index 56ce6f4c..56ce6f4c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31626-issue_1916.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31626-issue_1916.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31627-issue_1916.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31627-issue_1916.cpp
index f84334a4..f84334a4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31627-issue_1916.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31627-issue_1916.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31628-issue_1916.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31628-issue_1916.cpp
index df2af994..df2af994 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31628-issue_1916.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31628-issue_1916.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31629-issue_1916.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31629-issue_1916.cpp
index 913f1e28..913f1e28 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31629-issue_1916.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31629-issue_1916.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31630-issue_1916.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31630-issue_1916.cpp
index df2af994..df2af994 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31630-issue_1916.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31630-issue_1916.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31631-issue_1916.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31631-issue_1916.cpp
index 913f1e28..913f1e28 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31631-issue_1916.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31631-issue_1916.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31632-issue_1916.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31632-issue_1916.cpp
index 292b6837..292b6837 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31632-issue_1916.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31632-issue_1916.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31633-sp_after_decltype.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31633-sp_after_decltype.cpp
index 6a62e6f2..6a62e6f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31633-sp_after_decltype.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31633-sp_after_decltype.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31634-sp_after_decltype.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31634-sp_after_decltype.cpp
index c48543be..c48543be 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31634-sp_after_decltype.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31634-sp_after_decltype.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31635-sp_decltype.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31635-sp_decltype.cpp
index 84b157f1..84b157f1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31635-sp_decltype.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31635-sp_decltype.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31636-Issue_1923.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31636-Issue_1923.cpp
index 8c3ebe66..8c3ebe66 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31636-Issue_1923.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31636-Issue_1923.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31637-Issue_3446.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31637-Issue_3446.cpp
index 9577cfa8..9577cfa8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31637-Issue_3446.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31637-Issue_3446.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31638-misc2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31638-misc2.cpp
new file mode 100644
index 00000000..918c61ec
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31638-misc2.cpp
@@ -0,0 +1,58 @@
+/*
+ I tried to modify the spaces when using casts like static_cast etc. by
+ using sp_before_angle, sp_after_angle and sp_inside_angle. Even setting
+ all of those options to remove results in the following:
+ */
+
+myvar = dynamic_cast<MyClass<T>*>(other);
+// expected:
+//myvar = dynamic_cast<MyClass<T>*>(other);
+
+/*
+ Sometime pointers and references are still not detected correctly in
+ special cases - i guess.
+ */
+//When using "sp_before_ptr_star = remove" the result is:
+typedef std::list<StreamedData*>::iterator iterator;
+//typedef std::list<StreamedData *>::iterator iterator;
+//------------------------------^ This space show not be there
+
+typedef void (T::*Routine)(void);
+
+//Similar with "sp_before_byref = remove":
+unsigned long allocate(unsigned long size, void* & p);
+
+//unsigned long allocate(unsigned long size, void* & p);
+//------------------------------------------------^ The same here
+
+void foo(void)
+{
+ List<byte> bob = new List<byte>();
+
+ /* Align assignments */
+ align_assign(Chunk::GetHead(),
+ cpd.settings [UO_align_assign_span].n,
+ cpd.settings [UO_align_assign_thresh].n);
+}
+
+Args::Args(int argc, char**argv)
+{
+ m_count = argc;
+ m_values = argv;
+ int len = (argc >> 3) + 1;
+ m_used = new UINT8 [len];
+ if (m_used != NULL) {
+ memset(m_used, 0, len);
+ }
+}
+
+void Args(int argc, char**argv)
+{
+ m_count = argc;
+ m_values = argv;
+ int len = (argc >> 3) + 1;
+ m_used = new UINT8 [len];
+ if (m_used != NULL) {
+ memset(m_used, 0, len);
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31639-misc2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31639-misc2.cpp
new file mode 100644
index 00000000..62a51621
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31639-misc2.cpp
@@ -0,0 +1,58 @@
+/*
+ I tried to modify the spaces when using casts like static_cast etc. by
+ using sp_before_angle, sp_after_angle and sp_inside_angle. Even setting
+ all of those options to remove results in the following:
+ */
+
+myvar = dynamic_cast<MyClass<T>*>(other);
+// expected:
+//myvar = dynamic_cast<MyClass<T>*>(other);
+
+/*
+ Sometime pointers and references are still not detected correctly in
+ special cases - i guess.
+ */
+//When using "sp_before_ptr_star = remove" the result is:
+typedef std::list<StreamedData*>::iterator iterator;
+//typedef std::list<StreamedData *>::iterator iterator;
+//------------------------------^ This space show not be there
+
+typedef void (T::*Routine)(void);
+
+//Similar with "sp_before_byref = remove":
+unsigned long allocate(unsigned long size, void*& p);
+
+//unsigned long allocate(unsigned long size, void* & p);
+//------------------------------------------------^ The same here
+
+void foo(void)
+{
+ List<byte> bob = new List<byte>();
+
+ /* Align assignments */
+ align_assign(Chunk::GetHead(),
+ cpd.settings [UO_align_assign_span].n,
+ cpd.settings [UO_align_assign_thresh].n);
+}
+
+Args::Args(int argc, char**argv)
+{
+ m_count = argc;
+ m_values = argv;
+ int len = (argc >> 3) + 1;
+ m_used = new UINT8 [len];
+ if (m_used != NULL) {
+ memset(m_used, 0, len);
+ }
+}
+
+void Args(int argc, char**argv)
+{
+ m_count = argc;
+ m_values = argv;
+ int len = (argc >> 3) + 1;
+ m_used = new UINT8 [len];
+ if (m_used != NULL) {
+ memset(m_used, 0, len);
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31640-misc2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31640-misc2.cpp
new file mode 100644
index 00000000..918c61ec
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31640-misc2.cpp
@@ -0,0 +1,58 @@
+/*
+ I tried to modify the spaces when using casts like static_cast etc. by
+ using sp_before_angle, sp_after_angle and sp_inside_angle. Even setting
+ all of those options to remove results in the following:
+ */
+
+myvar = dynamic_cast<MyClass<T>*>(other);
+// expected:
+//myvar = dynamic_cast<MyClass<T>*>(other);
+
+/*
+ Sometime pointers and references are still not detected correctly in
+ special cases - i guess.
+ */
+//When using "sp_before_ptr_star = remove" the result is:
+typedef std::list<StreamedData*>::iterator iterator;
+//typedef std::list<StreamedData *>::iterator iterator;
+//------------------------------^ This space show not be there
+
+typedef void (T::*Routine)(void);
+
+//Similar with "sp_before_byref = remove":
+unsigned long allocate(unsigned long size, void* & p);
+
+//unsigned long allocate(unsigned long size, void* & p);
+//------------------------------------------------^ The same here
+
+void foo(void)
+{
+ List<byte> bob = new List<byte>();
+
+ /* Align assignments */
+ align_assign(Chunk::GetHead(),
+ cpd.settings [UO_align_assign_span].n,
+ cpd.settings [UO_align_assign_thresh].n);
+}
+
+Args::Args(int argc, char**argv)
+{
+ m_count = argc;
+ m_values = argv;
+ int len = (argc >> 3) + 1;
+ m_used = new UINT8 [len];
+ if (m_used != NULL) {
+ memset(m_used, 0, len);
+ }
+}
+
+void Args(int argc, char**argv)
+{
+ m_count = argc;
+ m_values = argv;
+ int len = (argc >> 3) + 1;
+ m_used = new UINT8 [len];
+ if (m_used != NULL) {
+ memset(m_used, 0, len);
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31641-misc2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31641-misc2.cpp
new file mode 100644
index 00000000..918c61ec
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31641-misc2.cpp
@@ -0,0 +1,58 @@
+/*
+ I tried to modify the spaces when using casts like static_cast etc. by
+ using sp_before_angle, sp_after_angle and sp_inside_angle. Even setting
+ all of those options to remove results in the following:
+ */
+
+myvar = dynamic_cast<MyClass<T>*>(other);
+// expected:
+//myvar = dynamic_cast<MyClass<T>*>(other);
+
+/*
+ Sometime pointers and references are still not detected correctly in
+ special cases - i guess.
+ */
+//When using "sp_before_ptr_star = remove" the result is:
+typedef std::list<StreamedData*>::iterator iterator;
+//typedef std::list<StreamedData *>::iterator iterator;
+//------------------------------^ This space show not be there
+
+typedef void (T::*Routine)(void);
+
+//Similar with "sp_before_byref = remove":
+unsigned long allocate(unsigned long size, void* & p);
+
+//unsigned long allocate(unsigned long size, void* & p);
+//------------------------------------------------^ The same here
+
+void foo(void)
+{
+ List<byte> bob = new List<byte>();
+
+ /* Align assignments */
+ align_assign(Chunk::GetHead(),
+ cpd.settings [UO_align_assign_span].n,
+ cpd.settings [UO_align_assign_thresh].n);
+}
+
+Args::Args(int argc, char**argv)
+{
+ m_count = argc;
+ m_values = argv;
+ int len = (argc >> 3) + 1;
+ m_used = new UINT8 [len];
+ if (m_used != NULL) {
+ memset(m_used, 0, len);
+ }
+}
+
+void Args(int argc, char**argv)
+{
+ m_count = argc;
+ m_values = argv;
+ int len = (argc >> 3) + 1;
+ m_used = new UINT8 [len];
+ if (m_used != NULL) {
+ memset(m_used, 0, len);
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31660-issue_1919.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31660-issue_1919.cpp
index 187065d6..187065d6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31660-issue_1919.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31660-issue_1919.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31661-Issue_3097.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31661-Issue_3097.cpp
index ede644ad..ede644ad 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31661-Issue_3097.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31661-Issue_3097.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31662-var_def_blks.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31662-var_def_blks.cpp
index 016aacec..016aacec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31662-var_def_blks.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31662-var_def_blks.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31663-var_def_blks.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31663-var_def_blks.cpp
index 256d0ed6..256d0ed6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31663-var_def_blks.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31663-var_def_blks.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31664-var_def_blks.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31664-var_def_blks.cpp
index c54e1c94..c54e1c94 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31664-var_def_blks.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31664-var_def_blks.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31665-var_def_blks.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31665-var_def_blks.cpp
index e328c1db..e328c1db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31665-var_def_blks.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31665-var_def_blks.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31666-var_def_blks.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31666-var_def_blks.cpp
index 87f45a37..87f45a37 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31666-var_def_blks.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31666-var_def_blks.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31667-var_def_blks.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31667-var_def_blks.cpp
index e1652f4a..e1652f4a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31667-var_def_blks.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31667-var_def_blks.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31668-var_def_blks.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31668-var_def_blks.cpp
index d660b2c2..d660b2c2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31668-var_def_blks.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31668-var_def_blks.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31700-toggle_processing_cmt.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31700-toggle_processing_cmt.cpp
index 03615082..03615082 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31700-toggle_processing_cmt.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31700-toggle_processing_cmt.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31701-toggle_processing_cmt2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31701-toggle_processing_cmt2.cpp
index f67cb76b..f67cb76b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31701-toggle_processing_cmt2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31701-toggle_processing_cmt2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31702-toggle_processing_cmt.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31702-toggle_processing_cmt.cpp
index adf1b8be..adf1b8be 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31702-toggle_processing_cmt.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31702-toggle_processing_cmt.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31703-toggle_processing_cmt.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31703-toggle_processing_cmt.cpp
index e806e89e..e806e89e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31703-toggle_processing_cmt.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31703-toggle_processing_cmt.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31710-string_replace_tab_chars.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31710-string_replace_tab_chars.cpp
index 8350740b..8350740b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31710-string_replace_tab_chars.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31710-string_replace_tab_chars.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31711-string_replace_tab_chars.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31711-string_replace_tab_chars.cpp
index 56f16799..56f16799 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31711-string_replace_tab_chars.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31711-string_replace_tab_chars.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31720-bit-colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31720-bit-colon.cpp
index b8e7c4db..b8e7c4db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31720-bit-colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31720-bit-colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31721-Issue_2689.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31721-Issue_2689.cpp
index e2b43674..e2b43674 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31721-Issue_2689.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31721-Issue_2689.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31730-ms-style-ref.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31730-ms-style-ref.cpp
index 826d4e90..826d4e90 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31730-ms-style-ref.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31730-ms-style-ref.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31740-I2102.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31740-I2102.cpp
index d8cf883a..d8cf883a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/31740-I2102.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/31740-I2102.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32000-sp_skip_vbrace_tokens.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32000-sp_skip_vbrace_tokens.cpp
index 99d403ef..99d403ef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32000-sp_skip_vbrace_tokens.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32000-sp_skip_vbrace_tokens.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32001-issue_547_for_each.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32001-issue_547_for_each.cpp
index cfbe7963..cfbe7963 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32001-issue_547_for_each.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32001-issue_547_for_each.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32002-proto-wrap.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32002-proto-wrap.cpp
index 35e8bea3..35e8bea3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32002-proto-wrap.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32002-proto-wrap.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32003-issue_633_typename.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32003-issue_633_typename.cpp
index 33b947f1..33b947f1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32003-issue_633_typename.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32003-issue_633_typename.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32004-issue_624_angle.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32004-issue_624_angle.cpp
index 255db223..255db223 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32004-issue_624_angle.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32004-issue_624_angle.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32005-issue_633_typename.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32005-issue_633_typename.cpp
index 33b947f1..33b947f1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32005-issue_633_typename.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32005-issue_633_typename.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32006-bug_i_687.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32006-bug_i_687.cpp
index 387eaa06..387eaa06 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32006-bug_i_687.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32006-bug_i_687.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32007-Issue_3052.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32007-Issue_3052.cpp
index cb468be3..cb468be3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32007-Issue_3052.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32007-Issue_3052.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32008-Issue_3034.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32008-Issue_3034.cpp
index 1a110ee8..1a110ee8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32008-Issue_3034.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32008-Issue_3034.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32009-Issue_3422.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32009-Issue_3422.cpp
index 66e5ddad..66e5ddad 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32009-Issue_3422.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32009-Issue_3422.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32010-Issue_3422.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32010-Issue_3422.cpp
index 7077eb71..7077eb71 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32010-Issue_3422.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32010-Issue_3422.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32100-cpp17.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32100-cpp17.cpp
index cfccba03..cfccba03 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32100-cpp17.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32100-cpp17.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32105-I2103.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32105-I2103.cpp
index c35fbe56..c35fbe56 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32105-I2103.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32105-I2103.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32115-2185.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32115-2185.cpp
index 6f874926..6f874926 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/32115-2185.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/32115-2185.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33000-tab-0.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33000-tab-0.cpp
index d9ff0418..d9ff0418 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33000-tab-0.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33000-tab-0.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33001-tab-1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33001-tab-1.cpp
index 85d8abe2..85d8abe2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33001-tab-1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33001-tab-1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33002-cmt_convert_tab_to_spaces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33002-cmt_convert_tab_to_spaces.cpp
index 32ff32d3..32ff32d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33002-cmt_convert_tab_to_spaces.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33002-cmt_convert_tab_to_spaces.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33003-cmt_convert_tab_to_spaces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33003-cmt_convert_tab_to_spaces.cpp
index db09e6fc..db09e6fc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33003-cmt_convert_tab_to_spaces.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33003-cmt_convert_tab_to_spaces.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33004-DoxygenComments.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33004-DoxygenComments.cpp
index df0b9680..df0b9680 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33004-DoxygenComments.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33004-DoxygenComments.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33005-DoxygenComments.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33005-DoxygenComments.cpp
index 533214f2..533214f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33005-DoxygenComments.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33005-DoxygenComments.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33006-string_replace_tab_chars.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33006-string_replace_tab_chars.cpp
index 8350740b..8350740b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33006-string_replace_tab_chars.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33006-string_replace_tab_chars.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33007-NewLine.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33007-NewLine.cpp
index 9c7f1ee9..9c7f1ee9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33007-NewLine.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33007-NewLine.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33008-NewLine.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33008-NewLine.cpp
index b3cc1bed..b3cc1bed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33008-NewLine.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33008-NewLine.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33009-NewLine0.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33009-NewLine0.cpp
index b5a714fa..b5a714fa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33009-NewLine0.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33009-NewLine0.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33010-Q_EMIT.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33010-Q_EMIT.cpp
index d3ef9396..d3ef9396 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33010-Q_EMIT.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33010-Q_EMIT.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33011-static.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33011-static.h
index 8121fef1..8121fef1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33011-static.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33011-static.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33012-Q_SIGNAL_SLOT.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33012-Q_SIGNAL_SLOT.cpp
index faf00903..faf00903 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33012-Q_SIGNAL_SLOT.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33012-Q_SIGNAL_SLOT.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33013-Q_2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33013-Q_2.cpp
index 7d0bb88a..7d0bb88a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33013-Q_2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33013-Q_2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33014-DB.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33014-DB.cpp
index 1b8f4bc8..1b8f4bc8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33014-DB.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33014-DB.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33015-Q_FOREACH.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33015-Q_FOREACH.cpp
index 02fd849d..02fd849d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33015-Q_FOREACH.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33015-Q_FOREACH.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33016-indent.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33016-indent.cpp
index 22d04a78..22d04a78 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33016-indent.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33016-indent.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33017-bug_1160.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33017-bug_1160.cpp
index 8dc7a9d1..8dc7a9d1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33017-bug_1160.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33017-bug_1160.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33019-bug_657.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33019-bug_657.cpp
index 3b5bb42a..3b5bb42a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33019-bug_657.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33019-bug_657.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33020-bug_662.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33020-bug_662.cpp
index 48b612ae..48b612ae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33020-bug_662.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33020-bug_662.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33021-bug_633.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33021-bug_633.cpp
index 5b672b47..5b672b47 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33021-bug_633.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33021-bug_633.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33022-bug_634.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33022-bug_634.cpp
index febbf7b3..febbf7b3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33022-bug_634.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33022-bug_634.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33023-bug_651.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33023-bug_651.cpp
index f0236016..f0236016 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33023-bug_651.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33023-bug_651.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33024-bug_653.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33024-bug_653.cpp
index 1bf853d6..1bf853d6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33024-bug_653.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33024-bug_653.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33025-bug_654.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33025-bug_654.cpp
index 497e3372..497e3372 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33025-bug_654.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33025-bug_654.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33026-bug_631.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33026-bug_631.cpp
index e110d383..e110d383 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33026-bug_631.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33026-bug_631.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33027-bug_664.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33027-bug_664.cpp
index 6fa5beea..6fa5beea 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33027-bug_664.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33027-bug_664.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33028-braces_empty.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33028-braces_empty.cpp
index 8e46ab7c..8e46ab7c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33028-braces_empty.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33028-braces_empty.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33029-cast.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33029-cast.cpp
index 67e725ff..67e725ff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33029-cast.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33029-cast.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33030-Q_FOREVER.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33030-Q_FOREVER.cpp
index 5dad4fa9..5dad4fa9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33030-Q_FOREVER.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33030-Q_FOREVER.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33031-bug_612.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33031-bug_612.cpp
index 4388ac75..4388ac75 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33031-bug_612.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33031-bug_612.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33032-bug_670.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33032-bug_670.cpp
index 0ede02f2..0ede02f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33032-bug_670.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33032-bug_670.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33033-bug_670.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33033-bug_670.h
index cc6d46e3..cc6d46e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33033-bug_670.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33033-bug_670.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33034-bug_671.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33034-bug_671.h
index 5ef3b5d9..5ef3b5d9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33034-bug_671.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33034-bug_671.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33035-patch_32.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33035-patch_32.cpp
index 8b414f00..8b414f00 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33035-patch_32.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33035-patch_32.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33036-bug_663.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33036-bug_663.cpp
index 7583d548..7583d548 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33036-bug_663.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33036-bug_663.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33037-func_class.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33037-func_class.cpp
index ea271c11..ea271c11 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33037-func_class.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33037-func_class.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33038-func_class.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33038-func_class.h
index 8b3ca218..8b3ca218 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33038-func_class.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33038-func_class.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33039-mod_remove_empty_return.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33039-mod_remove_empty_return.cpp
index 707c1c38..707c1c38 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33039-mod_remove_empty_return.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33039-mod_remove_empty_return.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33040-bug_i_411.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33040-bug_i_411.cpp
index 5a3f09aa..5a3f09aa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33040-bug_i_411.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33040-bug_i_411.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33041-bug_i_411.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33041-bug_i_411.cpp
index 4e89d68d..4e89d68d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33041-bug_i_411.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33041-bug_i_411.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33042-bug_i_411.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33042-bug_i_411.cpp
index 574f12ba..574f12ba 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33042-bug_i_411.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33042-bug_i_411.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33043-bug_i_478.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33043-bug_i_478.cpp
index 868220bb..868220bb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33043-bug_i_478.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33043-bug_i_478.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33044-bug_i_481.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33044-bug_i_481.cpp
index e8470648..e8470648 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33044-bug_i_481.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33044-bug_i_481.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33045-bug_i_width.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33045-bug_i_width.cpp
index 08f7888e..08f7888e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33045-bug_i_width.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33045-bug_i_width.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33046-bug_i_409.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33046-bug_i_409.cpp
index 6946a562..6946a562 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33046-bug_i_409.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33046-bug_i_409.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33047-bug_i_409.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33047-bug_i_409.cpp
index 7bfdfd83..7bfdfd83 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33047-bug_i_409.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33047-bug_i_409.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33048-bug_i_405.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33048-bug_i_405.cpp
index eda9b0dd..eda9b0dd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33048-bug_i_405.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33048-bug_i_405.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33049-pp-pragma.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33049-pp-pragma.cpp
index 2c013b08..2c013b08 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33049-pp-pragma.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33049-pp-pragma.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33050-issue_523.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33050-issue_523.cpp
index d203e398..d203e398 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33050-issue_523.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33050-issue_523.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33051-bug_i_503.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33051-bug_i_503.cpp
index 31ca41a8..31ca41a8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33051-bug_i_503.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33051-bug_i_503.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33052-bug_i_512.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33052-bug_i_512.cpp
index 9b93cdf2..9b93cdf2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33052-bug_i_512.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33052-bug_i_512.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33053-for_auto.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33053-for_auto.cpp
index 073556c9..073556c9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33053-for_auto.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33053-for_auto.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33054-bug_i_825.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33054-bug_i_825.cpp
index 242c4811..242c4811 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33054-bug_i_825.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33054-bug_i_825.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33056-bug_33056.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33056-bug_33056.cpp
index 1339ede1..1339ede1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33056-bug_33056.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33056-bug_33056.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33057-bug_1349.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33057-bug_1349.cpp
index fcc2e567..fcc2e567 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33057-bug_1349.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33057-bug_1349.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33058-Issue_3164.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33058-Issue_3164.cpp
index a1e426b0..a1e426b0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33058-Issue_3164.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33058-Issue_3164.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33059-mod_remove_empty_return-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33059-mod_remove_empty_return-2.cpp
index eb949c45..eb949c45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33059-mod_remove_empty_return-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33059-mod_remove_empty_return-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33060-if_constexpr.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33060-if_constexpr.cpp
index 032f74ec..032f74ec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33060-if_constexpr.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33060-if_constexpr.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33061-if_chain_braces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33061-if_chain_braces.cpp
index 693efc63..693efc63 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33061-if_chain_braces.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33061-if_chain_braces.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33062-if_chain_braces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33062-if_chain_braces.cpp
index af36ed0e..af36ed0e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33062-if_chain_braces.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33062-if_chain_braces.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33063-if_chain_braces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33063-if_chain_braces.cpp
index 00038700..00038700 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33063-if_chain_braces.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33063-if_chain_braces.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33064-if_chain_braces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33064-if_chain_braces.cpp
index c42ef73a..c42ef73a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33064-if_chain_braces.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33064-if_chain_braces.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33065-Issue_3316.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33065-Issue_3316.cpp
index 91ec82f0..91ec82f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33065-Issue_3316.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33065-Issue_3316.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33066-if_chain_braces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33066-if_chain_braces.cpp
index 0ef6478b..0ef6478b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33066-if_chain_braces.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33066-if_chain_braces.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33067-if_chain_braces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33067-if_chain_braces.cpp
index 7df1c6e8..7df1c6e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33067-if_chain_braces.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33067-if_chain_braces.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33069-Issue_2195.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33069-Issue_2195.cpp
index fe3ec459..fe3ec459 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33069-Issue_2195.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33069-Issue_2195.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33070-multi_line.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33070-multi_line.cpp
index dcea4c00..dcea4c00 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33070-multi_line.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33070-multi_line.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33071-multi_line.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33071-multi_line.cpp
index 0f8503fc..0f8503fc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33071-multi_line.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33071-multi_line.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33072-multi_line.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33072-multi_line.cpp
index add93503..add93503 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33072-multi_line.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33072-multi_line.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33073-multi_line.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33073-multi_line.cpp
index c0016ff6..c0016ff6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33073-multi_line.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33073-multi_line.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33074-multi_line.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33074-multi_line.cpp
index c8f32960..c8f32960 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33074-multi_line.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33074-multi_line.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33075-multi_line.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33075-multi_line.cpp
index 66963f4e..66963f4e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33075-multi_line.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33075-multi_line.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33076-multi_line.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33076-multi_line.cpp
index 9d105267..9d105267 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33076-multi_line.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33076-multi_line.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33077-multi_line.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33077-multi_line.cpp
index d7cbafc8..d7cbafc8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33077-multi_line.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33077-multi_line.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33078-multi_line.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33078-multi_line.cpp
index 01fe4d10..01fe4d10 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33078-multi_line.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33078-multi_line.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33079-multi_line.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33079-multi_line.cpp
index 6a6490ab..6a6490ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33079-multi_line.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33079-multi_line.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33080-multi_line.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33080-multi_line.cpp
index 8f44ce91..8f44ce91 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33080-multi_line.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33080-multi_line.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33081-bug_i_552.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33081-bug_i_552.cpp
index 5a0704de..5a0704de 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33081-bug_i_552.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33081-bug_i_552.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33082-namespace_namespace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33082-namespace_namespace.cpp
index cf6f921e..cf6f921e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33082-namespace_namespace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33082-namespace_namespace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33083-bug_i_359.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33083-bug_i_359.cpp
index 8081c1f9..8081c1f9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33083-bug_i_359.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33083-bug_i_359.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33084-op_sym_empty.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33084-op_sym_empty.cpp
index 3557e513..3557e513 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33084-op_sym_empty.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33084-op_sym_empty.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33085-bug_i_323.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33085-bug_i_323.cpp
index 6f622f6e..6f622f6e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33085-bug_i_323.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33085-bug_i_323.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33086-bug_i_568.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33086-bug_i_568.cpp
index 55da09f3..55da09f3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33086-bug_i_568.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33086-bug_i_568.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33087-bug_i_596.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33087-bug_i_596.cpp
index db3644a2..db3644a2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33087-bug_i_596.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33087-bug_i_596.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33088-bug_i_197.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33088-bug_i_197.cpp
index e86698fd..e86698fd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33088-bug_i_197.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33088-bug_i_197.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33089-bug_643.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33089-bug_643.cpp
index 55e3e309..55e3e309 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33089-bug_643.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33089-bug_643.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33090-gh555.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33090-gh555.cpp
index 32147190..32147190 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33090-gh555.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33090-gh555.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33091-squeeze_ifdef.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33091-squeeze_ifdef.cpp
index 7311c71e..7311c71e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33091-squeeze_ifdef.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33091-squeeze_ifdef.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33092-squeeze_ifdef.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33092-squeeze_ifdef.cpp
index 94b20d2e..94b20d2e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33092-squeeze_ifdef.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33092-squeeze_ifdef.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33093-sp_angle_paren.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33093-sp_angle_paren.cpp
index 7ed4f34e..7ed4f34e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33093-sp_angle_paren.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33093-sp_angle_paren.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33094-sp_angle_paren.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33094-sp_angle_paren.cpp
index c20305c3..c20305c3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33094-sp_angle_paren.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33094-sp_angle_paren.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33095-bug_i_322.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33095-bug_i_322.cpp
index 3904ec27..3904ec27 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33095-bug_i_322.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33095-bug_i_322.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33096-squeeze_ifdef.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33096-squeeze_ifdef.cpp
index df3d90ab..df3d90ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33096-squeeze_ifdef.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33096-squeeze_ifdef.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33097-enum_comma.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33097-enum_comma.h
index bb93f4a9..bb93f4a9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33097-enum_comma.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33097-enum_comma.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33098-enum_comma.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33098-enum_comma.h
index 3ec29719..3ec29719 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33098-enum_comma.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33098-enum_comma.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33099-enum_comma.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33099-enum_comma.h
index 01a89059..01a89059 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33099-enum_comma.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33099-enum_comma.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33100-enum_comma.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33100-enum_comma.h
index 903a6849..903a6849 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33100-enum_comma.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33100-enum_comma.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33101-enum_comma.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33101-enum_comma.h
index 53c1a99e..53c1a99e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33101-enum_comma.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33101-enum_comma.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33102-enum_comma.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33102-enum_comma.h
index 6c11f2b3..6c11f2b3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33102-enum_comma.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33102-enum_comma.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33103-bug_858.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33103-bug_858.cpp
index 1085f7db..1085f7db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33103-bug_858.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33103-bug_858.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33104-bug_858.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33104-bug_858.cpp
index c5ac560e..c5ac560e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33104-bug_858.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33104-bug_858.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33105-bug_1001.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33105-bug_1001.cpp
index d6104cd5..d6104cd5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33105-bug_1001.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33105-bug_1001.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33106-pos_bool_in_template.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33106-pos_bool_in_template.h
index f5fdb04e..f5fdb04e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33106-pos_bool_in_template.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33106-pos_bool_in_template.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33107-Issue_2688.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33107-Issue_2688.cpp
index ac97ff3a..ac97ff3a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33107-Issue_2688.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33107-Issue_2688.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33108-Issue_2045.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33108-Issue_2045.cpp
index a1670ffc..a1670ffc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33108-Issue_2045.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33108-Issue_2045.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33109-Issue_3205.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33109-Issue_3205.cpp
index 99767289..99767289 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33109-Issue_3205.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33109-Issue_3205.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33110-enum.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33110-enum.cpp
new file mode 100644
index 00000000..10df5456
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33110-enum.cpp
@@ -0,0 +1,203 @@
+enum class angle_state_e : unsigned int
+{
+ NONE = 0,
+ OPEN = 1, //'<' found
+ CLOSE = 2, //'>' found
+};
+
+// align.cpp
+enum class comment_align_e : unsigned int
+{
+ REGULAR,
+ BRACE,
+ ENDIF,
+};
+
+// chunk.h
+enum class E_Scope : unsigned int
+{
+ ALL, /**< search in all kind of chunks */
+ PREPROC, /**< search only in preprocessor chunks */
+};
+
+// chunk.cpp
+enum class E_Direction : unsigned int
+{
+ FORWARD,
+ BACKWARD
+};
+
+// combine.cpp
+{
+ enum class angle_state_e : unsigned int
+ {
+ NONE = 0,
+ OPEN = 1, // '<' found
+ CLOSE = 2, // '>' found
+ };
+}
+
+// indent.cpp
+enum class align_mode_e : unsigned int
+{
+ SHIFT, /* shift relative to the current column */
+ KEEP_ABS, /* try to keep the original absolute column */
+ KEEP_REL, /* try to keep the original gap */
+};
+
+// align_stack.h
+{
+ enum StarStyle
+ {
+ SS_IGNORE, // don't look for prev stars
+ SS_INCLUDE, // include prev * before add
+ SS_DANGLE // include prev * after add
+ };
+}
+
+// log_levels.h
+enum log_sev_t
+{
+ LSYS = 0,
+ LERR = 1,
+ LWARN = 2,
+ LNOTE = 3,
+ LINFO = 4,
+ LDATA = 5,
+
+ LFILELIST = 8, /* Files in the file list file */
+ LLINEENDS = 9, /* Show which line endings are used */
+ LCASTS = 10, /* align casts */
+ LALBR = 11, /* align braces */
+ LALTD = 12, /* Align Typedef */
+ LALPP = 13, /* align #define */
+ LALPROTO = 14, /* align prototype */
+ LALNLC = 15, /* align backslash-newline */
+ LALTC = 16, /* align trailing comments */
+ LALADD = 17, /* align add */
+ LALASS = 18, /* align assign */
+ LFVD = 19, /* fix_var_def */
+ LFVD2 = 20, /* fix_var_def-2 */
+ LINDENT = 21, /* indent_text */
+ LINDENT2 = 22, /* indent_text tab level */
+ LINDPSE = 23, /* indent_text stack */
+ LINDPC = 24, /* indent play-by-play */
+ LNEWLINE = 25, /* newlines */
+ LPF = 26, /* Parse Frame */
+ LSTMT = 27, /* Marking statements/expressions */
+ LTOK = 28, /* Tokenize */
+ LALRC = 29, /* align right comment */
+ LCMTIND = 30, /* Comment Indent */
+ LINDLINE = 31, /* indent line */
+ LSIB = 32, /* Scan IB */
+ LRETURN = 33, /* add/remove parens for return */
+ LBRDEL = 34, /* brace removal */
+ LFCN = 35, /* function detection */
+ LFCNP = 36, /* function parameters */
+ LPCU = 37, /* parse cleanup */
+ LDYNKW = 38, /* dynamic keywords */
+ LOUTIND = 39, /* output indent */
+ LBCSAFTER = 40, /* Brace cleanup stack - after each token */
+ LBCSPOP = 41, /* Brace cleanup stack - log pops */
+ LBCSPUSH = 42, /* Brace cleanup stack - log push */
+ LBCSSWAP = 43, /* Brace cleanup stack - log swaps */
+ LFTOR = 44, /* Class Ctor or Dtor */
+ LAS = 45, /* align_stack */
+ LPPIS = 46, /* Preprocessor Indent and Space */
+ LTYPEDEF = 47, /* Typedef and function types */
+ LVARDEF = 48, /* Variable def marking */
+ LDEFVAL = 49, /* define values */
+ LPVSEMI = 50, /* Pawn: virtual semicolons */
+ LPFUNC = 51, /* Pawn: function recognition */
+ LSPLIT = 52, /* Line splitting */
+ LFTYPE = 53, /* Function type detection */
+ LTEMPL = 54, /* Template detection */
+ LPARADD = 55, /* adding parens in if/while */
+ LPARADD2 = 56, /* adding parens in if/while - details */
+ LBLANKD = 57, /* blank line details */
+ LTEMPFUNC = 58, /* Template function detection */
+ LSCANSEMI = 59, /* scan semi colon removal */
+ LDELSEMI = 60, /* Removing semicolons */
+ LFPARAM = 61, /* Testing for a full parameter */
+ LNL1LINE = 62, /* NL check for 1 liners */
+ LPFCHK = 63, /* Parse Frame check fcn call */
+ LAVDB = 64, /* align var def braces */
+ LSORT = 65, /* Sorting */
+ LSPACE = 66, /* Space */
+ LALIGN = 67, /* align */
+ LALAGAIN = 68, /* align again */
+ LOPERATOR = 69, /* operator */
+ LASFCP = 70, /* Align Same Function Call Params */
+ LINDLINED = 71, /* indent line details */
+ LBCTRL = 72, /* beautifier control */
+ LRMRETURN = 73, /* remove 'return;' */
+ LPPIF = 74, /* #if/#else/#endif pair processing */
+ LMCB = 75, /* mod_case_brace */
+ LBRCH = 76, /* if brace chain */
+ LFCNR = 77, /* function return type */
+ LOCCLASS = 78, /* OC Class stuff */
+ LOCMSG = 79, /* OC Message stuff */
+ LBLANK = 80, /* Blank Lines */
+ LOBJCWORD = 81, /* Convert keyword to CT_WORD in certain circumstances */
+ LCHANGE = 82, /* something changed */
+ LCONTTEXT = 83, /* comment cont_text set */
+ LANNOT = 84, /* Java annotation */
+ LOCBLK = 85, /* OC Block stuff */
+ LFLPAREN = 86, /* Flag paren */
+ LOCMSGD = 87, /* OC Message declaration */
+ LINDENTAG = 88, /* indent again */
+ LNFD = 89, /* newline-function-def */
+ LJDBI = 90, /* Java Double Brace Init */
+ LSETPAR = 91, /* Chunk::SetParentType() */
+ LSETTYP = 92, /* Chunk::SetType() */
+ LSETFLG = 93, /* set_chunk_flags() */
+ LNLFUNCT = 94, /* newlines before function */
+ LCHUNK = 95, /* Add or del chunk */
+ LGUY98 = 98, /* for guy-test */
+ LGUY = 99, /* for guy-test */
+};
+
+// options.h
+enum argtype_e
+{
+ AT_BOOL, /**< true / false */
+ AT_IARF, /**< Ignore / Add / Remove / Force */
+ AT_NUM, /**< Number */
+ AT_LINE, /**< Line Endings */
+ AT_POS, /**< start/end or Trail/Lead */
+ AT_STRING, /**< string value */
+ AT_UNUM, /**< unsigned Number */
+};
+
+enum argval_t
+{
+ AV_IGNORE = 0,
+ AV_ADD = 1,
+ AV_REMOVE = 2,
+ AV_FORCE = 3, /**< remove + add */
+ AV_NOT_DEFINED = 4 /* to be used with QT, SIGNAL SLOT macros */
+};
+
+enum lineends_e
+{
+ LE_LF, /* "\n" */
+ LE_CRLF, /* "\r\n" */
+ LE_CR, /* "\r" */
+
+ LE_AUTO, /* keep last */
+};
+
+enum tokenpos_e
+{
+ TP_IGNORE = 0, /* don't change it */
+ TP_BREAK = 1, /* add a newline before or after the if not present */
+ TP_FORCE = 2, /* force a newline on one side and not the other */
+ TP_LEAD = 4, /* at the start of a line or leading if wrapped line */
+ TP_LEAD_BREAK = (TP_LEAD | TP_BREAK),
+ TP_LEAD_FORCE = (TP_LEAD | TP_FORCE),
+ TP_TRAIL = 8, /* at the end of a line or trailing if wrapped line */
+ TP_TRAIL_BREAK = (TP_TRAIL | TP_BREAK),
+ TP_TRAIL_FORCE = (TP_TRAIL | TP_FORCE),
+ TP_JOIN = 16, /* remove newlines on both sides */
+};
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33120-Issue_2149.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33120-Issue_2149.cpp
index 1266bd7b..1266bd7b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33120-Issue_2149.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33120-Issue_2149.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33150-bug_i_753.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33150-bug_i_753.cpp
index 9aa764a4..9aa764a4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33150-bug_i_753.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33150-bug_i_753.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33151-bug_i_752.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33151-bug_i_752.cpp
index da8fe9f5..da8fe9f5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33151-bug_i_752.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33151-bug_i_752.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33152-bug_1004.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33152-bug_1004.cpp
index f072a583..f072a583 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33152-bug_1004.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33152-bug_1004.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33160-bug_1112.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33160-bug_1112.cpp
index da95fcb6..da95fcb6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33160-bug_1112.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33160-bug_1112.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33161-byref-3.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33161-byref-3.cpp
index 8c51bf46..8c51bf46 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33161-byref-3.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33161-byref-3.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33162-sp_not_not.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33162-sp_not_not.cpp
index 42306dad..42306dad 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33162-sp_not_not.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33162-sp_not_not.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33180-pp_multi_comment.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33180-pp_multi_comment.cpp
index bfe1e1d1..bfe1e1d1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33180-pp_multi_comment.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33180-pp_multi_comment.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33181-Issue_2759.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33181-Issue_2759.cpp
index cbe9c4a5..cbe9c4a5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33181-Issue_2759.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33181-Issue_2759.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33182-Issue_2794.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33182-Issue_2794.cpp
index 16de515b..16de515b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33182-Issue_2794.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33182-Issue_2794.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33200-first_len_minimum.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33200-first_len_minimum.cpp
index c33d9e03..c33d9e03 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33200-first_len_minimum.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33200-first_len_minimum.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33201-indent_ctor_members_twice.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33201-indent_ctor_members_twice.cpp
index 3b1bea1c..3b1bea1c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33201-indent_ctor_members_twice.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33201-indent_ctor_members_twice.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33202-initlist_leading_commas.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33202-initlist_leading_commas.cpp
index a3bc4a2a..a3bc4a2a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33202-initlist_leading_commas.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33202-initlist_leading_commas.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33203-Issue_2574.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33203-Issue_2574.cpp
index bd88347d..bd88347d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33203-Issue_2574.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33203-Issue_2574.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33204-Issue_2582.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33204-Issue_2582.cpp
index adf9bfe9..adf9bfe9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33204-Issue_2582.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33204-Issue_2582.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33205-Issue_3198.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33205-Issue_3198.cpp
index 8dd234b7..8dd234b7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33205-Issue_3198.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33205-Issue_3198.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33210-templates4.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33210-templates4.cpp
index 10b96e4a..10b96e4a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33210-templates4.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33210-templates4.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33211-pp_multi_comment.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33211-pp_multi_comment.cpp
index 5690e3a6..5690e3a6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33211-pp_multi_comment.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33211-pp_multi_comment.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33212-pp-define-indent.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33212-pp-define-indent.cpp
index 78dc4c98..78dc4c98 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33212-pp-define-indent.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33212-pp-define-indent.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33213-disable_macro.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33213-disable_macro.cpp
index 7e64f416..7e64f416 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33213-disable_macro.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33213-disable_macro.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33214-Issue_2742.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33214-Issue_2742.cpp
index 66d12fec..66d12fec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33214-Issue_2742.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33214-Issue_2742.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33215-Issue_3055.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33215-Issue_3055.cpp
index d23a0d56..d23a0d56 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33215-Issue_3055.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33215-Issue_3055.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33216-Issue_3055-a.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33216-Issue_3055-a.cpp
index 21a5c35c..21a5c35c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33216-Issue_3055-a.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33216-Issue_3055-a.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33217-Issue_3113.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33217-Issue_3113.cpp
index 63090f4a..63090f4a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/33217-Issue_3113.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/33217-Issue_3113.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34001-nl_before_after.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34001-nl_before_after.h
index 8cdc7273..8cdc7273 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34001-nl_before_after.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34001-nl_before_after.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34002-bug_i_793.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34002-bug_i_793.cpp
index b6b6a7ab..b6b6a7ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34002-bug_i_793.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34002-bug_i_793.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34003-nl_max_blank_in_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34003-nl_max_blank_in_func.cpp
index cd1083ee..cd1083ee 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34003-nl_max_blank_in_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34003-nl_max_blank_in_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34004-nl_max_blank_in_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34004-nl_max_blank_in_func.cpp
index c2f8dc36..c2f8dc36 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34004-nl_max_blank_in_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34004-nl_max_blank_in_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34005-nl_max_blank_in_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34005-nl_max_blank_in_func.cpp
index 738f3bf6..738f3bf6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34005-nl_max_blank_in_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34005-nl_max_blank_in_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34006-bug_i_575.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34006-bug_i_575.cpp
index 4c25fb75..4c25fb75 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34006-bug_i_575.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34006-bug_i_575.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34007-bug_i_928.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34007-bug_i_928.cpp
index 78b214bd..78b214bd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34007-bug_i_928.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34007-bug_i_928.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34100-bug_i_525.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34100-bug_i_525.cpp
index b810afe0..b810afe0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34100-bug_i_525.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34100-bug_i_525.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34101-bug_i_646.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34101-bug_i_646.cpp
index f89b6416..f89b6416 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34101-bug_i_646.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34101-bug_i_646.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34105-bug_i_663.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34105-bug_i_663.cpp
index 2a473bc7..2a473bc7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34105-bug_i_663.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34105-bug_i_663.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34108-bug_i_666.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34108-bug_i_666.cpp
index 212a8656..212a8656 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34108-bug_i_666.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34108-bug_i_666.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34112-bug_i_889.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34112-bug_i_889.cpp
index 5b803a0e..5b803a0e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34112-bug_i_889.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34112-bug_i_889.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34113-bug_902.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34113-bug_902.cpp
index ada480c0..ada480c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34113-bug_902.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34113-bug_902.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34114-bug_902.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34114-bug_902.cpp
index af6bdb44..af6bdb44 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34114-bug_902.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34114-bug_902.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34115-nl_before_func_body_def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34115-nl_before_func_body_def.cpp
index ff76cb2b..ff76cb2b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34115-nl_before_func_body_def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34115-nl_before_func_body_def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34116-issue_2000.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34116-issue_2000.cpp
index f4f2c2bf..f4f2c2bf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34116-issue_2000.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34116-issue_2000.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34117-extern_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34117-extern_func.cpp
index 4de29e3c..4de29e3c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34117-extern_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34117-extern_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34118-Issue_2163.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34118-Issue_2163.cpp
index afd04eb0..afd04eb0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34118-Issue_2163.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34118-Issue_2163.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34120-bug_i_999.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34120-bug_i_999.cpp
index 2a5d64a4..2a5d64a4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34120-bug_i_999.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34120-bug_i_999.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34121-bug_1717.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34121-bug_1717.cpp
index 4116871f..4116871f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34121-bug_1717.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34121-bug_1717.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34122-Issue_2440.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34122-Issue_2440.cpp
index c52c30da..c52c30da 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34122-Issue_2440.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34122-Issue_2440.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34123-Issue_2440_nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34123-Issue_2440_nl.cpp
index c52c30da..c52c30da 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34123-Issue_2440_nl.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34123-Issue_2440_nl.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34130-bug_i_1000.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34130-bug_i_1000.cpp
index 6e1e7a0e..6e1e7a0e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34130-bug_i_1000.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34130-bug_i_1000.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34131-bug_i_1000.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34131-bug_i_1000.cpp
index 149353e7..149353e7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34131-bug_i_1000.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34131-bug_i_1000.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34132-new_op.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34132-new_op.cpp
index 15386247..15386247 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34132-new_op.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34132-new_op.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34133-new_op.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34133-new_op.cpp
index ce690c94..ce690c94 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34133-new_op.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34133-new_op.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34134-new_op.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34134-new_op.cpp
index 67dfa187..67dfa187 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34134-new_op.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34134-new_op.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34135-new_op.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34135-new_op.cpp
index 044cd859..044cd859 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34135-new_op.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34135-new_op.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34136-sp_balance_nested_parens.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34136-sp_balance_nested_parens.cpp
index 0a6635d0..0a6635d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34136-sp_balance_nested_parens.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34136-sp_balance_nested_parens.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34140-bug_1027.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34140-bug_1027.cpp
index 5ccafd2b..5ccafd2b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34140-bug_1027.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34140-bug_1027.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34141-bug_1005.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34141-bug_1005.cpp
index 01a457d0..01a457d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34141-bug_1005.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34141-bug_1005.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34142-I1112-1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34142-I1112-1.cpp
index df27d1d6..df27d1d6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34142-I1112-1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34142-I1112-1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34143-I1112-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34143-I1112-2.cpp
index 28a4489d..28a4489d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34143-I1112-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34143-I1112-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34144-I1112-3.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34144-I1112-3.cpp
index c95a6c40..c95a6c40 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34144-I1112-3.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34144-I1112-3.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34145-i683.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34145-i683.cpp
index 255c6336..255c6336 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34145-i683.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34145-i683.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34146-bug_1002.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34146-bug_1002.cpp
index 0d72c80a..0d72c80a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34146-bug_1002.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34146-bug_1002.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34147-bug_1002.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34147-bug_1002.cpp
index 02b85396..02b85396 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34147-bug_1002.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34147-bug_1002.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34148-bug_1139.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34148-bug_1139.cpp
index 11a11a77..11a11a77 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34148-bug_1139.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34148-bug_1139.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34149-bug_1139.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34149-bug_1139.cpp
index 88243de7..88243de7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34149-bug_1139.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34149-bug_1139.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34150-bug_1032.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34150-bug_1032.cpp
index 80078efe..80078efe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34150-bug_1032.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34150-bug_1032.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34151-bug_666.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34151-bug_666.cpp
index 212a8656..212a8656 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34151-bug_666.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34151-bug_666.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34152-bug_1068.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34152-bug_1068.cpp
index 74fbc8e7..74fbc8e7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34152-bug_1068.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34152-bug_1068.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34153-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34153-type_brace_init_lst.cpp
index 356a7713..356a7713 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34153-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34153-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34154-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34154-type_brace_init_lst.cpp
index adc09173..adc09173 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34154-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34154-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34155-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34155-type_brace_init_lst.cpp
index 7d62eafb..7d62eafb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34155-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34155-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34156-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34156-type_brace_init_lst.cpp
index 6519b4b1..6519b4b1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34156-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34156-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34157-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34157-type_brace_init_lst.cpp
index 6751c0fa..6751c0fa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34157-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34157-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34158-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34158-type_brace_init_lst.cpp
index d5dcfdeb..d5dcfdeb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34158-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34158-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34159-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34159-type_brace_init_lst.cpp
index 0b9bf31c..0b9bf31c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34159-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34159-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34160-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34160-type_brace_init_lst.cpp
index 01c89132..01c89132 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34160-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34160-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34161-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34161-type_brace_init_lst.cpp
index cc79678f..cc79678f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34161-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34161-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34162-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34162-type_brace_init_lst.cpp
index 2d5dc62c..2d5dc62c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34162-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34162-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34163-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34163-type_brace_init_lst.cpp
index 9be7507a..9be7507a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34163-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34163-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34164-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34164-type_brace_init_lst.cpp
index 68565614..68565614 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34164-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34164-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34165-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34165-type_brace_init_lst.cpp
index 92fc0b0b..92fc0b0b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34165-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34165-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34166-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34166-type_brace_init_lst.cpp
index d7dfa908..d7dfa908 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34166-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34166-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34168-Issue_2910.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34168-Issue_2910.cpp
index 82c2bec9..82c2bec9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34168-Issue_2910.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34168-Issue_2910.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34169-init-list-call.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34169-init-list-call.cpp
index 95449eb1..95449eb1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34169-init-list-call.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34169-init-list-call.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34170-i1082.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34170-i1082.cpp
index 06680c0e..06680c0e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34170-i1082.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34170-i1082.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34171-i1181.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34171-i1181.cpp
index 1a959d34..1a959d34 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34171-i1181.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34171-i1181.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34172-i1165.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34172-i1165.cpp
index c3123b59..c3123b59 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34172-i1165.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34172-i1165.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34173-i1464.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34173-i1464.cpp
index 179ecd5e..179ecd5e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34173-i1464.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34173-i1464.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34174-i1466.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34174-i1466.cpp
index fe704d2a..fe704d2a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34174-i1466.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34174-i1466.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34175-i1509.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34175-i1509.cpp
index 419807fd..419807fd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34175-i1509.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34175-i1509.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34176-i1509_bug_1112_correction.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34176-i1509_bug_1112_correction.cpp
index b9a75cf6..b9a75cf6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34176-i1509_bug_1112_correction.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34176-i1509_bug_1112_correction.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34177-sp_func_call_paren.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34177-sp_func_call_paren.cpp
index 580e9bae..580e9bae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34177-sp_func_call_paren.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34177-sp_func_call_paren.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34178-Issue_3237.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34178-Issue_3237.cpp
index 23b565a9..23b565a9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34178-Issue_3237.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34178-Issue_3237.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34179-arith_vs_byref.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34179-arith_vs_byref.cpp
index f459fdcc..f459fdcc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34179-arith_vs_byref.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34179-arith_vs_byref.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34180-bug_1402.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34180-bug_1402.cpp
index 09714c41..09714c41 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34180-bug_1402.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34180-bug_1402.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34190-bug_1003.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34190-bug_1003.cpp
index 7495b93d..7495b93d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34190-bug_1003.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34190-bug_1003.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34191-comment-align-multiline.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34191-comment-align-multiline.cpp
index db501481..db501481 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34191-comment-align-multiline.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34191-comment-align-multiline.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34192-i1207.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34192-i1207.cpp
index e02da8c9..e02da8c9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34192-i1207.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34192-i1207.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34193-i1218.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34193-i1218.cpp
index d4d05106..d4d05106 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34193-i1218.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34193-i1218.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34194-sp_arith_additive.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34194-sp_arith_additive.cpp
index 5ecb2ec8..5ecb2ec8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34194-sp_arith_additive.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34194-sp_arith_additive.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34195-sp_arith_additive.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34195-sp_arith_additive.cpp
index f419a3ed..f419a3ed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34195-sp_arith_additive.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34195-sp_arith_additive.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34196-Issue_1460.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34196-Issue_1460.h
index 63787999..63787999 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34196-Issue_1460.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34196-Issue_1460.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34197-bug_1161.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34197-bug_1161.cpp
index 34740f5a..34740f5a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34197-bug_1161.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34197-bug_1161.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34198-bug_1249.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34198-bug_1249.cpp
index 65637efe..65637efe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34198-bug_1249.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34198-bug_1249.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34199-not_lambda.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34199-not_lambda.cpp
index a9c65439..a9c65439 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34199-not_lambda.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34199-not_lambda.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34200-i1536.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34200-i1536.cpp
index 0eb7fc69..0eb7fc69 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34200-i1536.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34200-i1536.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34201-i1565.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34201-i1565.cpp
index c787f163..c787f163 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34201-i1565.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34201-i1565.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34202-i1617.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34202-i1617.cpp
index 98ede13b..98ede13b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34202-i1617.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34202-i1617.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34203-i1516.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34203-i1516.cpp
index d0612a2b..d0612a2b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34203-i1516.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34203-i1516.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34204-func_param_indent_leading_comma.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34204-func_param_indent_leading_comma.cpp
index e8790dbd..e8790dbd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34204-func_param_indent_leading_comma.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34204-func_param_indent_leading_comma.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34205-bug_1395.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34205-bug_1395.cpp
index 16e2fbba..16e2fbba 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34205-bug_1395.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34205-bug_1395.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34206-for_loop_head.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34206-for_loop_head.cpp
index 6cea550d..6cea550d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34206-for_loop_head.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34206-for_loop_head.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34207-for_loop_head.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34207-for_loop_head.cpp
index 2aa9bdc0..2aa9bdc0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34207-for_loop_head.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34207-for_loop_head.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34208-conversion_operator.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34208-conversion_operator.cpp
index 27b52dac..27b52dac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34208-conversion_operator.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34208-conversion_operator.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34209-lambda_selfcalling.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34209-lambda_selfcalling.cpp
index 8f0c819e..8f0c819e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34209-lambda_selfcalling.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34209-lambda_selfcalling.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34210-override_virtual.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34210-override_virtual.cpp
index 537454b1..537454b1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34210-override_virtual.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34210-override_virtual.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34211-anonymous_enum.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34211-anonymous_enum.cpp
index ef237a6e..ef237a6e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34211-anonymous_enum.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34211-anonymous_enum.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34212-func_class.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34212-func_class.h
index 2035b634..2035b634 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34212-func_class.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34212-func_class.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34250-bug_1607.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34250-bug_1607.cpp
index 9e4e47d3..9e4e47d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34250-bug_1607.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34250-bug_1607.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34251-bug_1649.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34251-bug_1649.cpp
index 4b352c79..4b352c79 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34251-bug_1649.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34251-bug_1649.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34252-issue_2001.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34252-issue_2001.cpp
index 39b9446d..39b9446d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34252-issue_2001.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34252-issue_2001.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34253-friends.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34253-friends.cpp
index 58fd649a..58fd649a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34253-friends.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34253-friends.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34254-issue_1985.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34254-issue_1985.cpp
index ef9fc90a..ef9fc90a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34254-issue_1985.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34254-issue_1985.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34255-eat_blanks_after_codewidth.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34255-eat_blanks_after_codewidth.cpp
index 7005d86c..7005d86c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34255-eat_blanks_after_codewidth.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34255-eat_blanks_after_codewidth.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34256-Issue_2836.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34256-Issue_2836.cpp
index 4d2a648f..4d2a648f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34256-Issue_2836.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34256-Issue_2836.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34257-brace_init_stdint_macros.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34257-brace_init_stdint_macros.cpp
index 976eb454..976eb454 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34257-brace_init_stdint_macros.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34257-brace_init_stdint_macros.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34258-long_lines.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34258-long_lines.cpp
new file mode 100644
index 00000000..d92ea108
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34258-long_lines.cpp
@@ -0,0 +1,34 @@
+void main()
+{
+ if (true)
+ {
+ // Output the coordinates of the icon
+ snprintf(&ret[strlen(ret)], ret_max - strlen(ret), "\nx=\"0px\"\ny=\"0px\"\n");
+ snprintf(&ret[strlen(ret)], ret_max - strlen(ret), "width=\"%d\"\n", icon->icon_width);
+ snprintf(&ret[strlen(ret)], ret_max - strlen(ret), "height=\"%d\"\n", icon->icon_height);
+ snprintf(&ret[strlen(ret)], ret_max - strlen(ret), "viewBox=\"%lf %lf %lf %lf\"\n", icon->x,
+ icon->y, icon->width, icon->height);
+
+ snprintf(&ret[strlen(ret)], ret_max - strlen(ret), icon->x, icon->y,
+ bar("viewBox=\"%lf %lf %lf %lf\"\n", icon->width), icon->height);
+
+ snprintf(&ret[strlen(ret)], ret_max - strlen(ret), "viewBox=\"%lf %lf %lf %lf\"\n", icon->x,
+ icon->y, icon->width, icon->height);
+ snprintf(&ret[strlen(ret)], ret_max - strlen(ret), "viewBox=\"%lf %lf %lf %lf\"\n",
+ foo(icon->x, icon->y, icon->width), icon->height);
+ snprintf(&ret[strlen(ret)], ret_max - strlen(ret), icon->x, icon->y,
+ bar("viewBox=\"%lf %lf %lf %lf\"\n", icon->width), icon->height);
+ snprintf(&ret[strlen(ret)], ret_max - foo(ret, par), icon->x, icon->y,
+ bar("viewBox=\"%lf %lf %lf %lf\"\n", icon->width), icon->height);
+
+ create_a_reeeeeeeeeeeeeeeeeeeeeeeeeeeeally_long_identifier name(some_function(bar1 + bar2),
+ bar3, bar4);
+ create_a_reeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeally_long_identifier name(some_function(
+ bar1 + bar2), bar3, bar4);
+
+ abc.def.ghi = call_some_other_really_long_function.of_some_sort_of_very_very_very_loooooooooong(
+ some_long_parameter1, some_long_parameter2);
+ }
+}
+
+#define FOO(bar) create_a_really_long_identifier name(some_function(bar1 + bar2), bar3, bar4);
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34280-UNI-29935.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34280-UNI-29935.cpp
index 28d0b66d..28d0b66d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34280-UNI-29935.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34280-UNI-29935.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34290-brace_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34290-brace_brace_init_lst.cpp
index 19c4b962..19c4b962 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34290-brace_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34290-brace_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34291-brace_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34291-brace_brace_init_lst.cpp
index aed91c1b..aed91c1b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34291-brace_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34291-brace_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34292-brace_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34292-brace_brace_init_lst.cpp
index cc0ac847..cc0ac847 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34292-brace_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34292-brace_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34293-brace_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34293-brace_brace_init_lst.cpp
index c47119ab..c47119ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34293-brace_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34293-brace_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34294-brace_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34294-brace_brace_init_lst.cpp
index afe3a0ec..afe3a0ec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34294-brace_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34294-brace_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34295-brace_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34295-brace_brace_init_lst.cpp
index 9b8ea3c5..9b8ea3c5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34295-brace_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34295-brace_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34296-i1768.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34296-i1768.cpp
index 94327d9c..94327d9c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34296-i1768.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34296-i1768.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34297-align-assign-mixed.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34297-align-assign-mixed.cpp
index d8082600..d8082600 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34297-align-assign-mixed.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34297-align-assign-mixed.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34298-align-assign-mixed.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34298-align-assign-mixed.cpp
index 4f8dadde..4f8dadde 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34298-align-assign-mixed.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34298-align-assign-mixed.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34299-align-assign-mixed.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34299-align-assign-mixed.cpp
index ddae789b..ddae789b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34299-align-assign-mixed.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34299-align-assign-mixed.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34300-bug_1236.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34300-bug_1236.cpp
index 8acaaed2..8acaaed2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34300-bug_1236.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34300-bug_1236.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34301-nl_fdef_brace_cond-f.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34301-nl_fdef_brace_cond-f.cpp
index 05aaf7c8..05aaf7c8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34301-nl_fdef_brace_cond-f.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34301-nl_fdef_brace_cond-f.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34302-nl_fdef_brace_cond-r.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34302-nl_fdef_brace_cond-r.cpp
index 8a35c775..8a35c775 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34302-nl_fdef_brace_cond-r.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34302-nl_fdef_brace_cond-r.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34303-nl_fdef_brace_cond-fr.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34303-nl_fdef_brace_cond-fr.cpp
index e498a669..e498a669 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34303-nl_fdef_brace_cond-fr.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34303-nl_fdef_brace_cond-fr.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34304-nl_fdef_brace_cond-rf.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34304-nl_fdef_brace_cond-rf.cpp
index 078e070a..078e070a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34304-nl_fdef_brace_cond-rf.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34304-nl_fdef_brace_cond-rf.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34305-issue_2124-1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34305-issue_2124-1.cpp
index bad0ea55..bad0ea55 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34305-issue_2124-1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34305-issue_2124-1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34306-issue_2124-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34306-issue_2124-2.cpp
index bad0ea55..bad0ea55 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34306-issue_2124-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34306-issue_2124-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34307-2203.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34307-2203.cpp
index 70a1f31a..70a1f31a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34307-2203.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34307-2203.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34308-enum_comment_wrap.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34308-enum_comment_wrap.cpp
index 736e6718..736e6718 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34308-enum_comment_wrap.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34308-enum_comment_wrap.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34309-issue_2209-1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34309-issue_2209-1.cpp
index 82ff67c6..82ff67c6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34309-issue_2209-1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34309-issue_2209-1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34310-issue_2209-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34310-issue_2209-2.cpp
index 26c579d3..26c579d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34310-issue_2209-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34310-issue_2209-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34311-Issue_2250.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34311-Issue_2250.cpp
index 9268c2e3..9268c2e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34311-Issue_2250.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34311-Issue_2250.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34312-Issue_2101.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34312-Issue_2101.cpp
index 3e07c686..3e07c686 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34312-Issue_2101.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34312-Issue_2101.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34313-Issue_2437.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34313-Issue_2437.cpp
index 77a273ef..77a273ef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34313-Issue_2437.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34313-Issue_2437.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34314-Issue_2604.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34314-Issue_2604.cpp
index eb87fc8a..eb87fc8a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34314-Issue_2604.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34314-Issue_2604.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34315-align_func_proto_thresh.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34315-align_func_proto_thresh.cpp
index c4f1a119..c4f1a119 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34315-align_func_proto_thresh.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34315-align_func_proto_thresh.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34316-align_func_proto_thresh.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34316-align_func_proto_thresh.cpp
index 1bbde49b..1bbde49b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34316-align_func_proto_thresh.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34316-align_func_proto_thresh.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34317-align_func_proto_thresh.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34317-align_func_proto_thresh.cpp
index e0d3488a..e0d3488a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34317-align_func_proto_thresh.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34317-align_func_proto_thresh.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34318-align_assign_func_proto.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34318-align_assign_func_proto.cpp
index 1c003058..1c003058 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34318-align_assign_func_proto.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34318-align_assign_func_proto.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34319-align_func_proto_thresh2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34319-align_func_proto_thresh2.cpp
index 8a9df8b4..8a9df8b4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34319-align_func_proto_thresh2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34319-align_func_proto_thresh2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34320-align_func_proto_thresh2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34320-align_func_proto_thresh2.cpp
index 432a9e3e..432a9e3e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34320-align_func_proto_thresh2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34320-align_func_proto_thresh2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34321-bug_2285.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34321-bug_2285.cpp
index a456e9be..a456e9be 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34321-bug_2285.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34321-bug_2285.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34322-issue_2623.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34322-issue_2623.cpp
index a9566447..a9566447 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34322-issue_2623.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34322-issue_2623.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34323-issue_2623.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34323-issue_2623.cpp
index 72fd90e8..72fd90e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34323-issue_2623.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34323-issue_2623.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34324-issue_2623.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34324-issue_2623.cpp
index 61961fa1..61961fa1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34324-issue_2623.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34324-issue_2623.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34325-Issue_3025.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34325-Issue_3025.cpp
index 9e64526e..9e64526e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34325-Issue_3025.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34325-Issue_3025.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34326-Issue_3040.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34326-Issue_3040.cpp
index f9e69333..f9e69333 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34326-Issue_3040.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34326-Issue_3040.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34327-Issue_3044.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34327-Issue_3044.cpp
index 799fd0a1..799fd0a1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34327-Issue_3044.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34327-Issue_3044.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34328-Issue_3048.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34328-Issue_3048.cpp
index fb6b0d38..fb6b0d38 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34328-Issue_3048.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34328-Issue_3048.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34330-Issue_3061_0nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34330-Issue_3061_0nl.cpp
new file mode 100644
index 00000000..f276710e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34330-Issue_3061_0nl.cpp
@@ -0,0 +1,17 @@
+DCOPClient::DCOPClient()
+{
+ TQObject::connect(
+ &d->postMessageTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ processPostedMessagesInternal()));
+ TQObject::connect(
+ &d->eventLoopTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ eventLoopTimeout()));
+}
+
+#include <dcopclient.moc> \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34331-Issue_3061_1nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34331-Issue_3061_1nl.cpp
new file mode 100644
index 00000000..f276710e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34331-Issue_3061_1nl.cpp
@@ -0,0 +1,17 @@
+DCOPClient::DCOPClient()
+{
+ TQObject::connect(
+ &d->postMessageTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ processPostedMessagesInternal()));
+ TQObject::connect(
+ &d->eventLoopTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ eventLoopTimeout()));
+}
+
+#include <dcopclient.moc> \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34332-Issue_3061_2nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34332-Issue_3061_2nl.cpp
new file mode 100644
index 00000000..f276710e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34332-Issue_3061_2nl.cpp
@@ -0,0 +1,17 @@
+DCOPClient::DCOPClient()
+{
+ TQObject::connect(
+ &d->postMessageTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ processPostedMessagesInternal()));
+ TQObject::connect(
+ &d->eventLoopTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ eventLoopTimeout()));
+}
+
+#include <dcopclient.moc> \ No newline at end of file
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34333-Issue_3061_0nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34333-Issue_3061_0nl.cpp
new file mode 100644
index 00000000..38af2ebd
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34333-Issue_3061_0nl.cpp
@@ -0,0 +1,17 @@
+DCOPClient::DCOPClient()
+{
+ TQObject::connect(
+ &d->postMessageTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ processPostedMessagesInternal()));
+ TQObject::connect(
+ &d->eventLoopTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ eventLoopTimeout()));
+}
+
+#include <dcopclient.moc>
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34334-Issue_3061_1nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34334-Issue_3061_1nl.cpp
new file mode 100644
index 00000000..38af2ebd
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34334-Issue_3061_1nl.cpp
@@ -0,0 +1,17 @@
+DCOPClient::DCOPClient()
+{
+ TQObject::connect(
+ &d->postMessageTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ processPostedMessagesInternal()));
+ TQObject::connect(
+ &d->eventLoopTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ eventLoopTimeout()));
+}
+
+#include <dcopclient.moc>
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34335-Issue_3061_2nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34335-Issue_3061_2nl.cpp
new file mode 100644
index 00000000..38af2ebd
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34335-Issue_3061_2nl.cpp
@@ -0,0 +1,17 @@
+DCOPClient::DCOPClient()
+{
+ TQObject::connect(
+ &d->postMessageTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ processPostedMessagesInternal()));
+ TQObject::connect(
+ &d->eventLoopTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ eventLoopTimeout()));
+}
+
+#include <dcopclient.moc>
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34336-Issue_3061_0nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34336-Issue_3061_0nl.cpp
new file mode 100644
index 00000000..1d93caa5
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34336-Issue_3061_0nl.cpp
@@ -0,0 +1,18 @@
+DCOPClient::DCOPClient()
+{
+ TQObject::connect(
+ &d->postMessageTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ processPostedMessagesInternal()));
+ TQObject::connect(
+ &d->eventLoopTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ eventLoopTimeout()));
+}
+
+#include <dcopclient.moc>
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34337-Issue_3061_1nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34337-Issue_3061_1nl.cpp
new file mode 100644
index 00000000..1d93caa5
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34337-Issue_3061_1nl.cpp
@@ -0,0 +1,18 @@
+DCOPClient::DCOPClient()
+{
+ TQObject::connect(
+ &d->postMessageTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ processPostedMessagesInternal()));
+ TQObject::connect(
+ &d->eventLoopTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ eventLoopTimeout()));
+}
+
+#include <dcopclient.moc>
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34338-Issue_3061_2nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34338-Issue_3061_2nl.cpp
new file mode 100644
index 00000000..1d93caa5
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34338-Issue_3061_2nl.cpp
@@ -0,0 +1,18 @@
+DCOPClient::DCOPClient()
+{
+ TQObject::connect(
+ &d->postMessageTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ processPostedMessagesInternal()));
+ TQObject::connect(
+ &d->eventLoopTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ eventLoopTimeout()));
+}
+
+#include <dcopclient.moc>
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34339-Issue_3061_0nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34339-Issue_3061_0nl.cpp
new file mode 100644
index 00000000..42b6641d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34339-Issue_3061_0nl.cpp
@@ -0,0 +1,19 @@
+DCOPClient::DCOPClient()
+{
+ TQObject::connect(
+ &d->postMessageTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ processPostedMessagesInternal()));
+ TQObject::connect(
+ &d->eventLoopTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ eventLoopTimeout()));
+}
+
+#include <dcopclient.moc>
+
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34340-Issue_3061_1nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34340-Issue_3061_1nl.cpp
new file mode 100644
index 00000000..42b6641d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34340-Issue_3061_1nl.cpp
@@ -0,0 +1,19 @@
+DCOPClient::DCOPClient()
+{
+ TQObject::connect(
+ &d->postMessageTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ processPostedMessagesInternal()));
+ TQObject::connect(
+ &d->eventLoopTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ eventLoopTimeout()));
+}
+
+#include <dcopclient.moc>
+
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34341-Issue_3061_2nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34341-Issue_3061_2nl.cpp
new file mode 100644
index 00000000..42b6641d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34341-Issue_3061_2nl.cpp
@@ -0,0 +1,19 @@
+DCOPClient::DCOPClient()
+{
+ TQObject::connect(
+ &d->postMessageTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ processPostedMessagesInternal()));
+ TQObject::connect(
+ &d->eventLoopTimer,
+ TQT_SIGNAL(timeout()),
+ this,
+ TQT_SLOT(
+ eventLoopTimeout()));
+}
+
+#include <dcopclient.moc>
+
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34350-indent_comma_brace_glob.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34350-indent_comma_brace_glob.cpp
index 0e475aa4..0e475aa4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34350-indent_comma_brace_glob.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34350-indent_comma_brace_glob.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34351-indent_comma_brace_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34351-indent_comma_brace_func.cpp
index 59b5b996..59b5b996 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34351-indent_comma_brace_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34351-indent_comma_brace_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34360-nl_before_struct_struct.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34360-nl_before_struct_struct.cpp
index 032a0dfc..032a0dfc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34360-nl_before_struct_struct.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34360-nl_before_struct_struct.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34361-nl_before_struct_scoped_enum.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34361-nl_before_struct_scoped_enum.cpp
index 02ce38f1..02ce38f1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34361-nl_before_struct_scoped_enum.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34361-nl_before_struct_scoped_enum.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34370-asm_block_pp.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34370-asm_block_pp.cpp
index e8fc87a6..e8fc87a6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34370-asm_block_pp.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34370-asm_block_pp.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34500-sp_before_case_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34500-sp_before_case_colon.cpp
index 54507d64..54507d64 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34500-sp_before_case_colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34500-sp_before_case_colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34501-sp_endif_cmt.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34501-sp_endif_cmt.cpp
index 9e5b2db8..9e5b2db8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34501-sp_endif_cmt.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34501-sp_endif_cmt.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34502-sp_enum_assign.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34502-sp_enum_assign.cpp
index 62a271a3..62a271a3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34502-sp_enum_assign.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34502-sp_enum_assign.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34503-sp_enum_assign.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34503-sp_enum_assign.cpp
index 2ebab438..2ebab438 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34503-sp_enum_assign.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34503-sp_enum_assign.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34504-issue_574-i.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34504-issue_574-i.cpp
index 3366cc79..3366cc79 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34504-issue_574-i.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34504-issue_574-i.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34505-Issue_3220.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34505-Issue_3220.cpp
index fae042d7..fae042d7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34505-Issue_3220.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34505-Issue_3220.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34506-Issue_3220.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34506-Issue_3220.cpp
index ba42b013..ba42b013 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34506-Issue_3220.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34506-Issue_3220.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34507-Issue_3220.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34507-Issue_3220.cpp
index f9f684b8..f9f684b8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34507-Issue_3220.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34507-Issue_3220.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3220.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34508-Issue_3220.cpp
index ba42b013..ba42b013 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3220.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34508-Issue_3220.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34509-byref-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34509-byref-2.cpp
index ab1b3a6e..ab1b3a6e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34509-byref-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34509-byref-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34510-byref-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34510-byref-2.cpp
index 0ef61cde..0ef61cde 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34510-byref-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34510-byref-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34511-byref-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34511-byref-2.cpp
index db510335..db510335 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34511-byref-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34511-byref-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34512-byref-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34512-byref-2.cpp
index 099e3c2b..099e3c2b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34512-byref-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34512-byref-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34513-sp_cond_question.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34513-sp_cond_question.cpp
index 5f5a9e14..5f5a9e14 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34513-sp_cond_question.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34513-sp_cond_question.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34514-sp_cond_question.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34514-sp_cond_question.cpp
index cec6c827..cec6c827 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34514-sp_cond_question.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34514-sp_cond_question.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34515-sp_cond_question.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34515-sp_cond_question.cpp
index 39997b4a..39997b4a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34515-sp_cond_question.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34515-sp_cond_question.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34516-sp_cond_question.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34516-sp_cond_question.cpp
index c7d79ab9..c7d79ab9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34516-sp_cond_question.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34516-sp_cond_question.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34517-semi.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34517-semi.cpp
index 6c42948f..6c42948f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34517-semi.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34517-semi.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34518-semi.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34518-semi.cpp
index 7c8a711e..7c8a711e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34518-semi.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34518-semi.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34519-semi.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34519-semi.cpp
index 56af135e..56af135e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34519-semi.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34519-semi.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34520-comma.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34520-comma.cpp
index e9b0c428..e9b0c428 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34520-comma.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34520-comma.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34521-comma.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34521-comma.cpp
index e101145a..e101145a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34521-comma.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34521-comma.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34522-comma.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34522-comma.cpp
index bc8ebd4f..bc8ebd4f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34522-comma.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34522-comma.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34523-gcc_case_ellipsis.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34523-gcc_case_ellipsis.cpp
index 1b0b4088..1b0b4088 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34523-gcc_case_ellipsis.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34523-gcc_case_ellipsis.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34524-bug_1002.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34524-bug_1002.cpp
index 713018e4..713018e4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34524-bug_1002.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34524-bug_1002.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34525-sp_paren_brace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34525-sp_paren_brace.cpp
index febfb72d..febfb72d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34525-sp_paren_brace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34525-sp_paren_brace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34526-sp_paren_brace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34526-sp_paren_brace.cpp
index 4ac73f87..4ac73f87 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34526-sp_paren_brace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34526-sp_paren_brace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34527-sp_paren_brace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34527-sp_paren_brace.cpp
index aa65f644..aa65f644 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34527-sp_paren_brace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34527-sp_paren_brace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34528-cmt_trailing_single_line_c_to_cpp.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34528-cmt_trailing_single_line_c_to_cpp.cpp
index 946409b2..946409b2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34528-cmt_trailing_single_line_c_to_cpp.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34528-cmt_trailing_single_line_c_to_cpp.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34529-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34529-type_brace_init_lst.cpp
index cc79678f..cc79678f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34529-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34529-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34530-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34530-type_brace_init_lst.cpp
index b99238b8..b99238b8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34530-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34530-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34531-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34531-type_brace_init_lst.cpp
index cc79678f..cc79678f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34531-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34531-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34532-type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34532-type_brace_init_lst.cpp
index 53e74de2..53e74de2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34532-type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34532-type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34533-templates.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34533-templates.cpp
index 5f3d6f90..5f3d6f90 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34533-templates.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34533-templates.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34534-templates.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34534-templates.cpp
index 9e3f463d..9e3f463d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34534-templates.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34534-templates.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34535-sp_after_angle.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34535-sp_after_angle.cpp
index 18788919..18788919 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34535-sp_after_angle.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34535-sp_after_angle.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34536-sp_after_angle.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34536-sp_after_angle.cpp
index 8764578e..8764578e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34536-sp_after_angle.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34536-sp_after_angle.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34540-byref-4.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34540-byref-4.cpp
index 0fe49c7b..0fe49c7b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34540-byref-4.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34540-byref-4.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34541-byref-4.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34541-byref-4.cpp
index 779da86b..779da86b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34541-byref-4.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34541-byref-4.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34542-byref-4.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34542-byref-4.cpp
index 16a7ba9b..16a7ba9b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34542-byref-4.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34542-byref-4.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34543-byref-4.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34543-byref-4.cpp
index 6bd2e9be..6bd2e9be 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34543-byref-4.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34543-byref-4.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34550-throws.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34550-throws.cpp
index f4e781fb..f4e781fb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34550-throws.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34550-throws.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34551-throws.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34551-throws.cpp
index 2a8c2ef0..2a8c2ef0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34551-throws.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34551-throws.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34552-throws.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34552-throws.cpp
index cca784aa..cca784aa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34552-throws.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34552-throws.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34553-throws.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34553-throws.cpp
index f8a4cc04..f8a4cc04 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34553-throws.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34553-throws.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34554-throws.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34554-throws.cpp
index f4e781fb..f4e781fb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34554-throws.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34554-throws.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34555-throws.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34555-throws.cpp
index 26028e4d..26028e4d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34555-throws.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34555-throws.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34556-throws.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34556-throws.cpp
index 6449e658..6449e658 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34556-throws.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34556-throws.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34557-throws.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34557-throws.cpp
index 26028e4d..26028e4d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/34557-throws.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/34557-throws.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/39000-UNI-64325.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/39000-UNI-64325.cpp
index c4005d7c..c4005d7c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/39000-UNI-64325.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/39000-UNI-64325.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60001-UNI-2650.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60001-UNI-2650.cpp
index b9ced773..b9ced773 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60001-UNI-2650.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60001-UNI-2650.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60002-UNI-16283.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60002-UNI-16283.cpp
index 7f042642..7f042642 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60002-UNI-16283.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60002-UNI-16283.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60003-UNI-1288.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60003-UNI-1288.cpp
index aece270a..aece270a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60003-UNI-1288.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60003-UNI-1288.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60006-UNI-2049.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60006-UNI-2049.cpp
index 7e47d927..7e47d927 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60006-UNI-2049.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60006-UNI-2049.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60017-UNI-2683.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60017-UNI-2683.cpp
index 734e3999..734e3999 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60017-UNI-2683.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60017-UNI-2683.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60022-UNI-18439.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60022-UNI-18439.cpp
index 8d467c67..8d467c67 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60022-UNI-18439.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60022-UNI-18439.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60025-UNI-19894.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60025-UNI-19894.cpp
index 2d7e481e..2d7e481e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60025-UNI-19894.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60025-UNI-19894.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60027-UNI-21506.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60027-UNI-21506.cpp
index a8c5f2df..a8c5f2df 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60027-UNI-21506.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60027-UNI-21506.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60028-UNI-21509.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60028-UNI-21509.cpp
index bde48ee7..bde48ee7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60028-UNI-21509.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60028-UNI-21509.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60029-UNI-21510.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60029-UNI-21510.cpp
index ea406fbe..ea406fbe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60029-UNI-21510.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60029-UNI-21510.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60030-UNI-21727.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60030-UNI-21727.cpp
index 991d2631..991d2631 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60030-UNI-21727.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60030-UNI-21727.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60031-UNI-21728.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60031-UNI-21728.cpp
index 658fba68..658fba68 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60031-UNI-21728.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60031-UNI-21728.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60032-UNI-21729.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60032-UNI-21729.cpp
index 4b8d1d59..4b8d1d59 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60032-UNI-21729.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60032-UNI-21729.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60036-UNI-2680.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60036-UNI-2680.cpp
index b6aa5bd7..b6aa5bd7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60036-UNI-2680.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60036-UNI-2680.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60038-UNI-30088.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60038-UNI-30088.cpp
index 1fd5c1fe..1fd5c1fe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60038-UNI-30088.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60038-UNI-30088.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60039-UNI-30628.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60039-UNI-30628.cpp
index ffa60026..ffa60026 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60039-UNI-30628.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60039-UNI-30628.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60042-UNI-18777.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60042-UNI-18777.cpp
index 0f177fdc..0f177fdc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60042-UNI-18777.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60042-UNI-18777.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60043-i2033.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60043-i2033.cpp
index fd27cf6d..fd27cf6d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60043-i2033.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60043-i2033.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60044-i2116.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60044-i2116.cpp
index af664cd9..af664cd9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60044-i2116.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60044-i2116.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60045-align_asterisk_after_type_cast.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60045-align_asterisk_after_type_cast.cpp
index 364b2a6b..364b2a6b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60045-align_asterisk_after_type_cast.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60045-align_asterisk_after_type_cast.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60046-align_continuation_left_shift.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60046-align_continuation_left_shift.cpp
index c0c066b8..c0c066b8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60046-align_continuation_left_shift.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60046-align_continuation_left_shift.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60047-align_default_after_override.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60047-align_default_after_override.cpp
index 43db090f..43db090f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60047-align_default_after_override.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60047-align_default_after_override.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60048-bug_2322.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60048-bug_2322.cpp
index 50454903..50454903 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60048-bug_2322.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60048-bug_2322.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60049-bug_2402.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60049-bug_2402.cpp
index e483fdc9..e483fdc9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60049-bug_2402.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60049-bug_2402.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60051-bug_2371.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60051-bug_2371.cpp
index f17cec62..f17cec62 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60051-bug_2371.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60051-bug_2371.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60052-bug_2433_1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60052-bug_2433_1.cpp
index d011d5a1..d011d5a1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60052-bug_2433_1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60052-bug_2433_1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60053-bug_2433_2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60053-bug_2433_2.cpp
index 600efc82..600efc82 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60053-bug_2433_2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60053-bug_2433_2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60054-interface-keyword-in-cpp.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60054-interface-keyword-in-cpp.cpp
index ed92e698..ed92e698 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60054-interface-keyword-in-cpp.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60054-interface-keyword-in-cpp.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60055-issue_3116.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60055-issue_3116.cpp
new file mode 100644
index 00000000..ee1a60e9
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60055-issue_3116.cpp
@@ -0,0 +1,233 @@
+// Singular with various newline formats
+auto f = [] -> void {
+ return;
+};
+
+auto f = [] -> void {
+ return;
+}();
+
+auto f = [] -> void
+{
+ return;
+}();
+
+auto f =
+ [] -> void {
+ return;
+ };
+
+auto f =
+ [] -> void
+ {
+ return;
+ };
+
+auto f
+ = [] -> void {
+ int i = 0;
+ return;
+ };
+
+auto f
+ = []
+ {
+ int i = 0;
+ return;
+ };
+
+// Nested lambda
+auto f = [] {
+ auto g = [] {
+ auto h = [] {
+ return;
+ };
+ return;
+ };
+ return;
+};
+
+auto f = [] {
+ auto g = []
+ {
+ auto h = [] {
+ return;
+ };
+ return;
+ };
+ return;
+};
+
+auto f = []
+{
+ auto g = [] {
+ auto h = []
+ {
+ return;
+ };
+ return;
+ };
+ return;
+};
+
+// Nested lambda within functions
+FuncA(
+ [] {
+ return;
+ },
+ [] {
+ return;
+ }
+);
+
+FuncB([] {
+ return;
+ },
+ [] {
+ return;
+ }
+);
+
+FuncC([] {
+ return;
+ },
+ [] {
+ return;
+ }
+)();
+
+FuncD([] {
+ return;
+ },
+ [] {
+ return;
+ })();
+
+FuncE([] {
+ return;
+ },
+ [] {
+ return;
+ });
+
+A(
+ B([] (const std::string &s) -> bool {
+ s = "hello";
+ return true;
+ }), 1
+);
+
+A(
+ B(
+ [] (const std::string &s) -> bool {
+ s = "hello";
+ return true;
+ }
+ ), 1
+);
+
+// Inside scope
+{
+ std::thread([](const char *c) {
+ std::cout << c << std::endl;
+ }).detach();
+
+ std::thread(
+ [](const char *c) {
+ std::cout << c << std::endl;
+ }
+ ).detach();
+
+ auto f = [&](int a) {
+ return b;
+ };
+
+ auto f = [&](int a)
+ {
+ return b;
+ };
+}
+
+Func(std::count_if(v.begin(), v.end(), [&](const auto &a) {
+ return a == 3;
+ }));
+
+Func(
+ std::count_if(v.begin(), v.end(), [&](const auto &a)
+ {
+ return a == 3;
+ }));
+
+Func(
+ std::count_if(v.begin(), v.end(), [&](const auto &a) {
+ return a == 3;
+ }));
+
+Func(
+ std::count_if(v.begin(), v.end(), [&](const auto &a) {
+ return a == 3;
+ })
+);
+
+// Test case from issue #3116
+const auto compare = [] (const auto i, const auto j)
+{
+ return i >= j;
+};
+
+std::sort(
+ vector.begin(),
+ vector.end(),
+ [] (const auto i, const auto j)
+ {
+ return i >= j;
+ }
+);
+
+// Test case from issue #3116
+if(isWidgetOfCurrentRow)
+{
+ it = std::find_if(
+ reloaded.begin(),
+ reloaded.end(),
+ [&rowGuid](const auto& device)
+ {
+ return (device.thingGUID == rowGuid && !device.isWidget);
+ }
+ );
+}
+else
+{
+ it = std::find_if(
+ reloaded.begin(),
+ reloaded.end(),
+ [&rowGuid](const auto& device)
+ {
+ return device.thingGUID == rowGuid;
+ }
+ );
+}
+
+// Test case from issue 1296 and some variants
+obj->Func([&](int a)
+ {
+ return b;
+ });
+
+obj->Func([] -> int
+ {
+ return b;
+ });
+
+obj->Func([]
+ {
+ return b;
+ }
+);
+
+obj->Func(
+ Func([]
+ {
+ return b;
+ })
+);
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60056-issue_3116-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60056-issue_3116-2.cpp
index 0ce38756..0ce38756 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60056-issue_3116-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60056-issue_3116-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60057-issue_3116.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60057-issue_3116.cpp
new file mode 100644
index 00000000..40bc5b9a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60057-issue_3116.cpp
@@ -0,0 +1,233 @@
+// Singular with various newline formats
+auto f = [] -> void {
+ return;
+ };
+
+auto f = [] -> void {
+ return;
+ }();
+
+auto f = [] -> void
+ {
+ return;
+ }();
+
+auto f =
+ [] -> void {
+ return;
+ };
+
+auto f =
+ [] -> void
+ {
+ return;
+ };
+
+auto f
+ = [] -> void {
+ int i = 0;
+ return;
+ };
+
+auto f
+ = []
+ {
+ int i = 0;
+ return;
+ };
+
+// Nested lambda
+auto f = [] {
+ auto g = [] {
+ auto h = [] {
+ return;
+ };
+ return;
+ };
+ return;
+ };
+
+auto f = [] {
+ auto g = []
+ {
+ auto h = [] {
+ return;
+ };
+ return;
+ };
+ return;
+ };
+
+auto f = []
+ {
+ auto g = [] {
+ auto h = []
+ {
+ return;
+ };
+ return;
+ };
+ return;
+ };
+
+// Nested lambda within functions
+FuncA(
+ [] {
+ return;
+ },
+ [] {
+ return;
+ }
+);
+
+FuncB([] {
+ return;
+ },
+ [] {
+ return;
+ }
+);
+
+FuncC([] {
+ return;
+ },
+ [] {
+ return;
+ }
+)();
+
+FuncD([] {
+ return;
+ },
+ [] {
+ return;
+ })();
+
+FuncE([] {
+ return;
+ },
+ [] {
+ return;
+ });
+
+A(
+ B([] (const std::string &s) -> bool {
+ s = "hello";
+ return true;
+ }), 1
+);
+
+A(
+ B(
+ [] (const std::string &s) -> bool {
+ s = "hello";
+ return true;
+ }
+ ), 1
+);
+
+// Inside scope
+{
+ std::thread([](const char *c) {
+ std::cout << c << std::endl;
+ }).detach();
+
+ std::thread(
+ [](const char *c) {
+ std::cout << c << std::endl;
+ }
+ ).detach();
+
+ auto f = [&](int a) {
+ return b;
+ };
+
+ auto f = [&](int a)
+ {
+ return b;
+ };
+}
+
+Func(std::count_if(v.begin(), v.end(), [&](const auto &a) {
+ return a == 3;
+ }));
+
+Func(
+ std::count_if(v.begin(), v.end(), [&](const auto &a)
+ {
+ return a == 3;
+ }));
+
+Func(
+ std::count_if(v.begin(), v.end(), [&](const auto &a) {
+ return a == 3;
+ }));
+
+Func(
+ std::count_if(v.begin(), v.end(), [&](const auto &a) {
+ return a == 3;
+ })
+);
+
+// Test case from issue #3116
+const auto compare = [] (const auto i, const auto j)
+ {
+ return i >= j;
+ };
+
+std::sort(
+ vector.begin(),
+ vector.end(),
+ [] (const auto i, const auto j)
+ {
+ return i >= j;
+ }
+);
+
+// Test case from issue #3116
+if(isWidgetOfCurrentRow)
+{
+ it = std::find_if(
+ reloaded.begin(),
+ reloaded.end(),
+ [&rowGuid](const auto& device)
+ {
+ return (device.thingGUID == rowGuid && !device.isWidget);
+ }
+ );
+}
+else
+{
+ it = std::find_if(
+ reloaded.begin(),
+ reloaded.end(),
+ [&rowGuid](const auto& device)
+ {
+ return device.thingGUID == rowGuid;
+ }
+ );
+}
+
+// Test case from issue 1296 and some variants
+obj->Func([&](int a)
+ {
+ return b;
+ });
+
+obj->Func([] -> int
+ {
+ return b;
+ });
+
+obj->Func([]
+ {
+ return b;
+ }
+);
+
+obj->Func(
+ Func([]
+ {
+ return b;
+ })
+);
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60058-issue_3330.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60058-issue_3330.cpp
index 37062480..37062480 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60058-issue_3330.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60058-issue_3330.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60059-indent_ctor_init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60059-indent_ctor_init.cpp
index f1b32d0e..f1b32d0e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60059-indent_ctor_init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60059-indent_ctor_init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60060-returns.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60060-returns.cpp
index 21013963..21013963 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60060-returns.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60060-returns.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60061-returns.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60061-returns.cpp
index bd199ba8..bd199ba8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60061-returns.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60061-returns.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60062-returns.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60062-returns.cpp
index 1085bd72..1085bd72 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60062-returns.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60062-returns.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60063-returns.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60063-returns.cpp
index bd199ba8..bd199ba8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60063-returns.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60063-returns.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60064-issue_3368.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60064-issue_3368.cpp
index 2158086c..2158086c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60064-issue_3368.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60064-issue_3368.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60065-issue_3378.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60065-issue_3378.cpp
index 8da9261d..8da9261d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60065-issue_3378.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60065-issue_3378.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60066-Issue_3409.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60066-Issue_3409.cpp
index 969275dc..969275dc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60066-Issue_3409.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60066-Issue_3409.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60067-Issue_3283.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60067-Issue_3283.cpp
index 9357b3b3..9357b3b3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60067-Issue_3283.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60067-Issue_3283.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60068-Issue_3428.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60068-Issue_3428.cpp
index bf1dc20b..bf1dc20b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60068-Issue_3428.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60068-Issue_3428.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60069-Issue_3428.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60069-Issue_3428.cpp
index 9b95f451..9b95f451 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60069-Issue_3428.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60069-Issue_3428.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60070-Issue_3428.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60070-Issue_3428.cpp
index fbd35533..fbd35533 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60070-Issue_3428.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60070-Issue_3428.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60071-Issue_3428.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60071-Issue_3428.cpp
index bf1dc20b..bf1dc20b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60071-Issue_3428.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60071-Issue_3428.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60072-Issue_3428.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60072-Issue_3428.cpp
index 9b95f451..9b95f451 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60072-Issue_3428.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60072-Issue_3428.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60073-Issue_3428.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60073-Issue_3428.cpp
index fbd35533..fbd35533 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60073-Issue_3428.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60073-Issue_3428.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60074-Issue_3284.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60074-Issue_3284.cpp
index cea9091e..cea9091e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60074-Issue_3284.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60074-Issue_3284.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60075-Issue_3294.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60075-Issue_3294.cpp
index 4f0718cc..4f0718cc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60075-Issue_3294.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60075-Issue_3294.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60076-indent_ctor_init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60076-indent_ctor_init.cpp
index 872961ce..872961ce 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60076-indent_ctor_init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60076-indent_ctor_init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60077-indent_ctor_init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60077-indent_ctor_init.cpp
index acf8c268..acf8c268 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60077-indent_ctor_init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60077-indent_ctor_init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60078-Issue_3505.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60078-Issue_3505.cpp
index f3225f96..f3225f96 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60078-Issue_3505.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60078-Issue_3505.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60079-Issue_3536.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60079-Issue_3536.cpp
index 83f3e7d6..83f3e7d6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60079-Issue_3536.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60079-Issue_3536.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60080-Issue_3538.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60080-Issue_3538.cpp
index bd60ace7..bd60ace7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60080-Issue_3538.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60080-Issue_3538.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60081-Issue_3546.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60081-Issue_3546.cpp
index 40131205..40131205 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60081-Issue_3546.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60081-Issue_3546.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60082-Issue_3552.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60082-Issue_3552.cpp
index 73c2e77e..73c2e77e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60082-Issue_3552.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60082-Issue_3552.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60083-Issue_3570.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60083-Issue_3570.h
index a1a2fb26..a1a2fb26 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60083-Issue_3570.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60083-Issue_3570.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60084-Issue_3576.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60084-Issue_3576.h
index 9fceffe8..9fceffe8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60084-Issue_3576.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60084-Issue_3576.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60085-Issue_3576.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60085-Issue_3576.h
index 9fceffe8..9fceffe8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60085-Issue_3576.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60085-Issue_3576.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60086-indent_namespace_inner_only.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60086-indent_namespace_inner_only.h
index 32668ed3..32668ed3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60086-indent_namespace_inner_only.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60086-indent_namespace_inner_only.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60087-Issue_3550.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60087-Issue_3550.cpp
index 91337c46..91337c46 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60087-Issue_3550.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60087-Issue_3550.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60088-Issue_3761.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60088-Issue_3761.cpp
index b3f8cbb5..b3f8cbb5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60088-Issue_3761.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60088-Issue_3761.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60089-Issue_3863.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60089-Issue_3863.cpp
index 4163ee8e..4163ee8e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60089-Issue_3863.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60089-Issue_3863.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60090-Issue_3863_2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60090-Issue_3863_2.cpp
index f91c6547..f91c6547 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60090-Issue_3863_2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60090-Issue_3863_2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60091-Issue_3863_3.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60091-Issue_3863_3.cpp
index f2885f39..f2885f39 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cpp/60091-Issue_3863_3.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60091-Issue_3863_3.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60092-Issue_3865.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60092-Issue_3865.cpp
new file mode 100644
index 00000000..1ec73c5c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60092-Issue_3865.cpp
@@ -0,0 +1,34 @@
+MOCK_METHOD(bool, isThat, (const std::string& name), (override));
+MOCK_METHOD(bool, isThat, (std::string& name), (override));
+MOCK_METHOD(bool, isThat, std::string& name, (override));
+MOCK_METHOD(bool, isThat, const std::string& name, (override));
+MyFunction(const std::string& some_value);
+MOCK_METHOD(void, isThat, (Callback const&), (override));
+
+class MyClass
+{
+constexpr explicit MyClass(MyClass*& a) noexcept;
+};
+
+SomeClass::SomeClass(unsigned& counter, MyOtherType& lock)
+ : thisThing(counter)
+ , thatThing(lock)
+{
+}
+
+template<typename T = unsigned>
+struct TemplatedClass
+{
+ TemplatedClass(T& thing) {
+ }
+};
+
+MyThing* MyClass::my_function()
+{
+ return &_theirThing;
+}
+
+// Shouldn't change
+EXPECT_EQ(static_cast<int>(MyEnumm::Last & MyEnumm::MyValue));
+#define SOME_MACRO(type, sss) if(n & type) { if(!k.doofer()) { k += "| "; } k += sss; }
+#define SOME_OTHER_MACRO(ttt, sss) (&ttt, &sss)
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60093-Issue_3865.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60093-Issue_3865.cpp
new file mode 100644
index 00000000..1ec73c5c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60093-Issue_3865.cpp
@@ -0,0 +1,34 @@
+MOCK_METHOD(bool, isThat, (const std::string& name), (override));
+MOCK_METHOD(bool, isThat, (std::string& name), (override));
+MOCK_METHOD(bool, isThat, std::string& name, (override));
+MOCK_METHOD(bool, isThat, const std::string& name, (override));
+MyFunction(const std::string& some_value);
+MOCK_METHOD(void, isThat, (Callback const&), (override));
+
+class MyClass
+{
+constexpr explicit MyClass(MyClass*& a) noexcept;
+};
+
+SomeClass::SomeClass(unsigned& counter, MyOtherType& lock)
+ : thisThing(counter)
+ , thatThing(lock)
+{
+}
+
+template<typename T = unsigned>
+struct TemplatedClass
+{
+ TemplatedClass(T& thing) {
+ }
+};
+
+MyThing* MyClass::my_function()
+{
+ return &_theirThing;
+}
+
+// Shouldn't change
+EXPECT_EQ(static_cast<int>(MyEnumm::Last & MyEnumm::MyValue));
+#define SOME_MACRO(type, sss) if(n & type) { if(!k.doofer()) { k += "| "; } k += sss; }
+#define SOME_OTHER_MACRO(ttt, sss) (&ttt, &sss)
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60100-sp_qualifier_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60100-sp_qualifier_ptr_star.cpp
new file mode 100644
index 00000000..5330b43a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60100-sp_qualifier_ptr_star.cpp
@@ -0,0 +1,8 @@
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char* const*foo3(char* const*);
+char* const *foo4(char* const *);
+
+auto foo5() -> char* const*;
+auto foo6() -> char* const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60101-sp_qualifier_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60101-sp_qualifier_ptr_star.cpp
new file mode 100644
index 00000000..39223843
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60101-sp_qualifier_ptr_star.cpp
@@ -0,0 +1,8 @@
+char* const*foo1 = (char* const *)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char* const*foo3(char* const *);
+char* const *foo4(char* const *);
+
+auto foo5() -> char* const*;
+auto foo6() -> char* const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60102-sp_qualifier_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60102-sp_qualifier_ptr_star.cpp
new file mode 100644
index 00000000..be8b4f77
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60102-sp_qualifier_ptr_star.cpp
@@ -0,0 +1,8 @@
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const*)"foo";
+
+char* const*foo3(char* const*);
+char* const *foo4(char* const*);
+
+auto foo5() -> char* const*;
+auto foo6() -> char* const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60103-sp_qualifier_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60103-sp_qualifier_ptr_star.cpp
new file mode 100644
index 00000000..1132b074
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60103-sp_qualifier_ptr_star.cpp
@@ -0,0 +1,8 @@
+char* const*foo1 = (char* const *)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char* const*foo3(char* const *);
+char* const *foo4(char* const *);
+
+auto foo5() -> char* const*;
+auto foo6() -> char* const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60104-sp_qualifier_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60104-sp_qualifier_ptr_star.cpp
new file mode 100644
index 00000000..5330b43a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60104-sp_qualifier_ptr_star.cpp
@@ -0,0 +1,8 @@
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char* const*foo3(char* const*);
+char* const *foo4(char* const *);
+
+auto foo5() -> char* const*;
+auto foo6() -> char* const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60105-sp_qualifier_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60105-sp_qualifier_ptr_star.cpp
new file mode 100644
index 00000000..102dfb97
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60105-sp_qualifier_ptr_star.cpp
@@ -0,0 +1,8 @@
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char* const *foo3(char* const*);
+char* const *foo4(char* const *);
+
+auto foo5() -> char* const*;
+auto foo6() -> char* const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60106-sp_qualifier_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60106-sp_qualifier_ptr_star.cpp
new file mode 100644
index 00000000..1a3b5910
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60106-sp_qualifier_ptr_star.cpp
@@ -0,0 +1,8 @@
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char* const*foo3(char* const*);
+char* const*foo4(char* const *);
+
+auto foo5() -> char* const*;
+auto foo6() -> char* const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60107-sp_qualifier_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60107-sp_qualifier_ptr_star.cpp
new file mode 100644
index 00000000..62343950
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60107-sp_qualifier_ptr_star.cpp
@@ -0,0 +1,8 @@
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char* const *foo3(char* const*);
+char* const *foo4(char* const *);
+
+auto foo5() -> char* const*;
+auto foo6() -> char* const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60108-sp_qualifier_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60108-sp_qualifier_ptr_star.cpp
new file mode 100644
index 00000000..5330b43a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60108-sp_qualifier_ptr_star.cpp
@@ -0,0 +1,8 @@
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char* const*foo3(char* const*);
+char* const *foo4(char* const *);
+
+auto foo5() -> char* const*;
+auto foo6() -> char* const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60109-sp_qualifier_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60109-sp_qualifier_ptr_star.cpp
new file mode 100644
index 00000000..2c719ee7
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60109-sp_qualifier_ptr_star.cpp
@@ -0,0 +1,8 @@
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char* const*foo3(char* const*);
+char* const *foo4(char* const *);
+
+auto foo5() -> char* const *;
+auto foo6() -> char* const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60110-sp_qualifier_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60110-sp_qualifier_ptr_star.cpp
new file mode 100644
index 00000000..42794a2c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60110-sp_qualifier_ptr_star.cpp
@@ -0,0 +1,8 @@
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char* const*foo3(char* const*);
+char* const *foo4(char* const *);
+
+auto foo5() -> char* const*;
+auto foo6() -> char* const*;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60111-sp_qualifier_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60111-sp_qualifier_ptr_star.cpp
new file mode 100644
index 00000000..8093bb8d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60111-sp_qualifier_ptr_star.cpp
@@ -0,0 +1,8 @@
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char* const*foo3(char* const*);
+char* const *foo4(char* const *);
+
+auto foo5() -> char* const *;
+auto foo6() -> char* const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60112-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60112-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..4937f7a0
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60112-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char * const*foo3 = (char* const*)"foo";
+char * const *foo4 = (char* const *)"foo";
+char * const *foo5 = (char* const *)"foo";
+char*const*foo6 = (char*const*)"foo";
+
+char* const*foo7(char* const*);
+char* const *foo8(char* const *);
+
+int*const *bar0(int);
+char*const*bar1(char* const*);
+char*const *bar2(char* const *);
+char *const *bar3(char* const *);
+char *const *bar4(char* const *);
+
+void *operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+void *operator new(int size);
+void* operator new(int size);
+
+void *::alloc1(int size);
+void*::alloc2(int size);
+void* ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void* Test::method1() {
+ return nullptr;
+}
+void *Test::method2() {
+ return NULL;
+}
+void *Test::method3() {
+ return NULL;
+}
+void* Test::method4() {
+ return nullptr;
+}
+void * Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() {
+ return nullptr;
+}
+int* testing::func2() {
+ return NULL;
+}
+int *testing::func3() {
+ return nullptr;
+}
+int * testing::func4() {
+ return NULL;
+}
+int * testing::func5() {
+ return NULL;
+}
+
+int*testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int*operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo*Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void*::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60113-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60113-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..10681c6f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60113-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char * const*foo1 = (char * const*)"foo";
+char * const *foo2 = (char * const *)"foo";
+
+char * const*foo3 = (char * const*)"foo";
+char * const *foo4 = (char * const *)"foo";
+char * const *foo5 = (char * const *)"foo";
+char *const*foo6 = (char *const*)"foo";
+
+char * const*foo7(char * const*);
+char * const *foo8(char * const *);
+
+int *const *bar0(int);
+char *const*bar1(char * const*);
+char *const *bar2(char * const *);
+char *const *bar3(char * const *);
+char *const *bar4(char * const *);
+
+void *operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+void *operator new(int size);
+void* operator new(int size);
+
+void *::alloc1(int size);
+void*::alloc2(int size);
+void* ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void* Test::method1() {
+ return nullptr;
+}
+void *Test::method2() {
+ return NULL;
+}
+void *Test::method3() {
+ return NULL;
+}
+void* Test::method4() {
+ return nullptr;
+}
+void * Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() {
+ return nullptr;
+}
+int* testing::func2() {
+ return NULL;
+}
+int *testing::func3() {
+ return nullptr;
+}
+int * testing::func4() {
+ return NULL;
+}
+int * testing::func5() {
+ return NULL;
+}
+
+int*testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int*operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo*Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void*::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60114-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60114-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..34c203d0
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60114-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char* const*foo3 = (char* const*)"foo";
+char* const *foo4 = (char* const *)"foo";
+char* const *foo5 = (char* const *)"foo";
+char*const*foo6 = (char*const*)"foo";
+
+char* const*foo7(char* const*);
+char* const *foo8(char* const *);
+
+int*const *bar0(int);
+char*const*bar1(char* const*);
+char*const *bar2(char* const *);
+char*const *bar3(char* const *);
+char*const *bar4(char* const *);
+
+void *operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+void *operator new(int size);
+void* operator new(int size);
+
+void *::alloc1(int size);
+void*::alloc2(int size);
+void* ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void* Test::method1() {
+ return nullptr;
+}
+void *Test::method2() {
+ return NULL;
+}
+void *Test::method3() {
+ return NULL;
+}
+void* Test::method4() {
+ return nullptr;
+}
+void * Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() {
+ return nullptr;
+}
+int* testing::func2() {
+ return NULL;
+}
+int *testing::func3() {
+ return nullptr;
+}
+int * testing::func4() {
+ return NULL;
+}
+int * testing::func5() {
+ return NULL;
+}
+
+int*testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int*operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo*Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void*::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int*const *x;
+ int*const*x;
+ (int* )x;
+ (const int*const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60115-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60115-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..ceeea383
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60115-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char * const*foo1 = (char * const*)"foo";
+char * const *foo2 = (char * const *)"foo";
+
+char * const*foo3 = (char * const*)"foo";
+char * const *foo4 = (char * const *)"foo";
+char * const *foo5 = (char * const *)"foo";
+char *const*foo6 = (char *const*)"foo";
+
+char * const*foo7(char * const*);
+char * const *foo8(char * const *);
+
+int *const *bar0(int);
+char *const*bar1(char * const*);
+char *const *bar2(char * const *);
+char *const *bar3(char * const *);
+char *const *bar4(char * const *);
+
+void *operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+void *operator new(int size);
+void* operator new(int size);
+
+void *::alloc1(int size);
+void*::alloc2(int size);
+void* ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void* Test::method1() {
+ return nullptr;
+}
+void *Test::method2() {
+ return NULL;
+}
+void *Test::method3() {
+ return NULL;
+}
+void* Test::method4() {
+ return nullptr;
+}
+void * Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() {
+ return nullptr;
+}
+int* testing::func2() {
+ return NULL;
+}
+int *testing::func3() {
+ return nullptr;
+}
+int * testing::func4() {
+ return NULL;
+}
+int * testing::func5() {
+ return NULL;
+}
+
+int*testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int*operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo*Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void*::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60116-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60116-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..4937f7a0
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60116-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char * const*foo3 = (char* const*)"foo";
+char * const *foo4 = (char* const *)"foo";
+char * const *foo5 = (char* const *)"foo";
+char*const*foo6 = (char*const*)"foo";
+
+char* const*foo7(char* const*);
+char* const *foo8(char* const *);
+
+int*const *bar0(int);
+char*const*bar1(char* const*);
+char*const *bar2(char* const *);
+char *const *bar3(char* const *);
+char *const *bar4(char* const *);
+
+void *operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+void *operator new(int size);
+void* operator new(int size);
+
+void *::alloc1(int size);
+void*::alloc2(int size);
+void* ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void* Test::method1() {
+ return nullptr;
+}
+void *Test::method2() {
+ return NULL;
+}
+void *Test::method3() {
+ return NULL;
+}
+void* Test::method4() {
+ return nullptr;
+}
+void * Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() {
+ return nullptr;
+}
+int* testing::func2() {
+ return NULL;
+}
+int *testing::func3() {
+ return nullptr;
+}
+int * testing::func4() {
+ return NULL;
+}
+int * testing::func5() {
+ return NULL;
+}
+
+int*testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int*operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo*Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void*::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60117-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60117-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..006769cc
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60117-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char * const*foo3 = (char* const*)"foo";
+char * const *foo4 = (char* const *)"foo";
+char * const *foo5 = (char* const *)"foo";
+char*const*foo6 = (char*const*)"foo";
+
+char* const*foo7(char* const*);
+char* const *foo8(char* const *);
+
+int*const *bar0(int);
+char*const*bar1(char* const*);
+char*const *bar2(char* const *);
+char *const *bar3(char* const *);
+char *const *bar4(char* const *);
+
+void *operator new(int size);
+void *operator new(int size);
+void * operator new(int size);
+void *operator new(int size);
+void * operator new(int size);
+
+void *::alloc1(int size);
+void*::alloc2(int size);
+void* ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void* Test::method1() {
+ return nullptr;
+}
+void *Test::method2() {
+ return NULL;
+}
+void *Test::method3() {
+ return NULL;
+}
+void* Test::method4() {
+ return nullptr;
+}
+void * Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() {
+ return nullptr;
+}
+int* testing::func2() {
+ return NULL;
+}
+int *testing::func3() {
+ return nullptr;
+}
+int * testing::func4() {
+ return NULL;
+}
+int * testing::func5() {
+ return NULL;
+}
+
+int*testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int *operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo*Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void*::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60118-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60118-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..fefd0694
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60118-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char * const*foo3 = (char* const*)"foo";
+char * const *foo4 = (char* const *)"foo";
+char * const *foo5 = (char* const *)"foo";
+char*const*foo6 = (char*const*)"foo";
+
+char* const*foo7(char* const*);
+char* const *foo8(char* const *);
+
+int*const *bar0(int);
+char*const*bar1(char* const*);
+char*const *bar2(char* const *);
+char *const *bar3(char* const *);
+char *const *bar4(char* const *);
+
+void*operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+
+void *::alloc1(int size);
+void*::alloc2(int size);
+void* ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void* Test::method1() {
+ return nullptr;
+}
+void *Test::method2() {
+ return NULL;
+}
+void *Test::method3() {
+ return NULL;
+}
+void* Test::method4() {
+ return nullptr;
+}
+void * Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() {
+ return nullptr;
+}
+int* testing::func2() {
+ return NULL;
+}
+int *testing::func3() {
+ return nullptr;
+}
+int * testing::func4() {
+ return NULL;
+}
+int * testing::func5() {
+ return NULL;
+}
+
+int*testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int*operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo*Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void*::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60119-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60119-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..7168d8a4
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60119-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char * const*foo3 = (char* const*)"foo";
+char * const *foo4 = (char* const *)"foo";
+char * const *foo5 = (char* const *)"foo";
+char*const*foo6 = (char*const*)"foo";
+
+char* const*foo7(char* const*);
+char* const *foo8(char* const *);
+
+int*const *bar0(int);
+char*const*bar1(char* const*);
+char*const *bar2(char* const *);
+char *const *bar3(char* const *);
+char *const *bar4(char* const *);
+
+void *operator new(int size);
+void *operator new(int size);
+void * operator new(int size);
+void *operator new(int size);
+void * operator new(int size);
+
+void *::alloc1(int size);
+void*::alloc2(int size);
+void* ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void* Test::method1() {
+ return nullptr;
+}
+void *Test::method2() {
+ return NULL;
+}
+void *Test::method3() {
+ return NULL;
+}
+void* Test::method4() {
+ return nullptr;
+}
+void * Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() {
+ return nullptr;
+}
+int* testing::func2() {
+ return NULL;
+}
+int *testing::func3() {
+ return nullptr;
+}
+int * testing::func4() {
+ return NULL;
+}
+int * testing::func5() {
+ return NULL;
+}
+
+int*testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int *operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo*Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void*::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60120-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60120-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..4937f7a0
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60120-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char * const*foo3 = (char* const*)"foo";
+char * const *foo4 = (char* const *)"foo";
+char * const *foo5 = (char* const *)"foo";
+char*const*foo6 = (char*const*)"foo";
+
+char* const*foo7(char* const*);
+char* const *foo8(char* const *);
+
+int*const *bar0(int);
+char*const*bar1(char* const*);
+char*const *bar2(char* const *);
+char *const *bar3(char* const *);
+char *const *bar4(char* const *);
+
+void *operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+void *operator new(int size);
+void* operator new(int size);
+
+void *::alloc1(int size);
+void*::alloc2(int size);
+void* ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void* Test::method1() {
+ return nullptr;
+}
+void *Test::method2() {
+ return NULL;
+}
+void *Test::method3() {
+ return NULL;
+}
+void* Test::method4() {
+ return nullptr;
+}
+void * Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() {
+ return nullptr;
+}
+int* testing::func2() {
+ return NULL;
+}
+int *testing::func3() {
+ return nullptr;
+}
+int * testing::func4() {
+ return NULL;
+}
+int * testing::func5() {
+ return NULL;
+}
+
+int*testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int*operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo*Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void*::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60121-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60121-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..a2696a48
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60121-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char * const*foo3 = (char* const*)"foo";
+char * const *foo4 = (char* const *)"foo";
+char * const *foo5 = (char* const *)"foo";
+char*const*foo6 = (char*const*)"foo";
+
+char* const*foo7(char* const*);
+char* const *foo8(char* const *);
+
+int*const *bar0(int);
+char*const*bar1(char* const*);
+char*const *bar2(char* const *);
+char *const *bar3(char* const *);
+char *const *bar4(char* const *);
+
+void *operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+void *operator new(int size);
+void* operator new(int size);
+
+void *::alloc1(int size);
+void*::alloc2(int size);
+void* ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void * Test::method1() {
+ return nullptr;
+}
+void *Test::method2() {
+ return NULL;
+}
+void *Test::method3() {
+ return NULL;
+}
+void * Test::method4() {
+ return nullptr;
+}
+void * Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() {
+ return nullptr;
+}
+int * testing::func2() {
+ return NULL;
+}
+int *testing::func3() {
+ return nullptr;
+}
+int * testing::func4() {
+ return NULL;
+}
+int * testing::func5() {
+ return NULL;
+}
+
+int *testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int*operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo *Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void*::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60122-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60122-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..a5a18174
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60122-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char * const*foo3 = (char* const*)"foo";
+char * const *foo4 = (char* const *)"foo";
+char * const *foo5 = (char* const *)"foo";
+char*const*foo6 = (char*const*)"foo";
+
+char* const*foo7(char* const*);
+char* const *foo8(char* const *);
+
+int*const *bar0(int);
+char*const*bar1(char* const*);
+char*const *bar2(char* const *);
+char *const *bar3(char* const *);
+char *const *bar4(char* const *);
+
+void *operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+void *operator new(int size);
+void* operator new(int size);
+
+void *::alloc1(int size);
+void*::alloc2(int size);
+void* ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void* Test::method1() {
+ return nullptr;
+}
+void*Test::method2() {
+ return NULL;
+}
+void*Test::method3() {
+ return NULL;
+}
+void* Test::method4() {
+ return nullptr;
+}
+void* Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int*testing::func1() {
+ return nullptr;
+}
+int* testing::func2() {
+ return NULL;
+}
+int*testing::func3() {
+ return nullptr;
+}
+int* testing::func4() {
+ return NULL;
+}
+int* testing::func5() {
+ return NULL;
+}
+
+int*testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int*operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo*Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void*::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60123-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60123-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..6a8ea64d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60123-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char * const*foo3 = (char* const*)"foo";
+char * const *foo4 = (char* const *)"foo";
+char * const *foo5 = (char* const *)"foo";
+char*const*foo6 = (char*const*)"foo";
+
+char* const*foo7(char* const*);
+char* const *foo8(char* const *);
+
+int*const *bar0(int);
+char*const*bar1(char* const*);
+char*const *bar2(char* const *);
+char *const *bar3(char* const *);
+char *const *bar4(char* const *);
+
+void *operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+void *operator new(int size);
+void* operator new(int size);
+
+void *::alloc1(int size);
+void*::alloc2(int size);
+void* ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void * Test::method1() {
+ return nullptr;
+}
+void *Test::method2() {
+ return NULL;
+}
+void *Test::method3() {
+ return NULL;
+}
+void * Test::method4() {
+ return nullptr;
+}
+void * Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() {
+ return nullptr;
+}
+int * testing::func2() {
+ return NULL;
+}
+int *testing::func3() {
+ return nullptr;
+}
+int * testing::func4() {
+ return NULL;
+}
+int * testing::func5() {
+ return NULL;
+}
+
+int *testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int*operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo *Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void*::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60124-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60124-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..4937f7a0
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60124-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char * const*foo3 = (char* const*)"foo";
+char * const *foo4 = (char* const *)"foo";
+char * const *foo5 = (char* const *)"foo";
+char*const*foo6 = (char*const*)"foo";
+
+char* const*foo7(char* const*);
+char* const *foo8(char* const *);
+
+int*const *bar0(int);
+char*const*bar1(char* const*);
+char*const *bar2(char* const *);
+char *const *bar3(char* const *);
+char *const *bar4(char* const *);
+
+void *operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+void *operator new(int size);
+void* operator new(int size);
+
+void *::alloc1(int size);
+void*::alloc2(int size);
+void* ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void* Test::method1() {
+ return nullptr;
+}
+void *Test::method2() {
+ return NULL;
+}
+void *Test::method3() {
+ return NULL;
+}
+void* Test::method4() {
+ return nullptr;
+}
+void * Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() {
+ return nullptr;
+}
+int* testing::func2() {
+ return NULL;
+}
+int *testing::func3() {
+ return nullptr;
+}
+int * testing::func4() {
+ return NULL;
+}
+int * testing::func5() {
+ return NULL;
+}
+
+int*testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int*operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo*Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void*::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60125-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60125-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..06c80b34
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60125-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char * const*foo3 = (char* const*)"foo";
+char * const *foo4 = (char* const *)"foo";
+char * const *foo5 = (char* const *)"foo";
+char*const*foo6 = (char*const*)"foo";
+
+char* const*foo7(char* const*);
+char* const *foo8(char* const *);
+
+int*const *bar0(int);
+char*const*bar1(char* const*);
+char*const *bar2(char* const *);
+char *const *bar3(char* const *);
+char *const *bar4(char* const *);
+
+void *operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+void *operator new(int size);
+void* operator new(int size);
+
+void *::alloc1(int size);
+void *::alloc2(int size);
+void * ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void* Test::method1() {
+ return nullptr;
+}
+void *Test::method2() {
+ return NULL;
+}
+void *Test::method3() {
+ return NULL;
+}
+void* Test::method4() {
+ return nullptr;
+}
+void * Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() {
+ return nullptr;
+}
+int* testing::func2() {
+ return NULL;
+}
+int *testing::func3() {
+ return nullptr;
+}
+int * testing::func4() {
+ return NULL;
+}
+int * testing::func5() {
+ return NULL;
+}
+
+int*testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int*operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo*Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void *::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60126-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60126-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..1611a0c8
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60126-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char * const*foo3 = (char* const*)"foo";
+char * const *foo4 = (char* const *)"foo";
+char * const *foo5 = (char* const *)"foo";
+char*const*foo6 = (char*const*)"foo";
+
+char* const*foo7(char* const*);
+char* const *foo8(char* const *);
+
+int*const *bar0(int);
+char*const*bar1(char* const*);
+char*const *bar2(char* const *);
+char *const *bar3(char* const *);
+char *const *bar4(char* const *);
+
+void *operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+void *operator new(int size);
+void* operator new(int size);
+
+void*::alloc1(int size);
+void*::alloc2(int size);
+void* ::alloc3(int size);
+void* ::alloc4(int size);
+void* ::alloc5(int size);
+void* ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void* Test::method1() {
+ return nullptr;
+}
+void *Test::method2() {
+ return NULL;
+}
+void *Test::method3() {
+ return NULL;
+}
+void* Test::method4() {
+ return nullptr;
+}
+void * Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() {
+ return nullptr;
+}
+int* testing::func2() {
+ return NULL;
+}
+int *testing::func3() {
+ return nullptr;
+}
+int * testing::func4() {
+ return NULL;
+}
+int * testing::func5() {
+ return NULL;
+}
+
+int*testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int*operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo*Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void*::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60127-sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60127-sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..ec85d941
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60127-sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,131 @@
+#include <stdio.h>
+
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char * const*foo3 = (char* const*)"foo";
+char * const *foo4 = (char* const *)"foo";
+char * const *foo5 = (char* const *)"foo";
+char*const*foo6 = (char*const*)"foo";
+
+char* const*foo7(char* const*);
+char* const *foo8(char* const *);
+
+int*const *bar0(int);
+char*const*bar1(char* const*);
+char*const *bar2(char* const *);
+char *const *bar3(char* const *);
+char *const *bar4(char* const *);
+
+void *operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+void *operator new(int size);
+void* operator new(int size);
+
+void *::alloc1(int size);
+void *::alloc2(int size);
+void * ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+void* method1();
+void *method2();
+void *method3();
+void* method4();
+void * method5();
+};
+
+void* Test::method1() {
+ return nullptr;
+}
+void *Test::method2() {
+ return NULL;
+}
+void *Test::method3() {
+ return NULL;
+}
+void* Test::method4() {
+ return nullptr;
+}
+void * Test::method5() {
+ return 0;
+}
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() {
+ return nullptr;
+}
+int* testing::func2() {
+ return NULL;
+}
+int *testing::func3() {
+ return nullptr;
+}
+int * testing::func4() {
+ return NULL;
+}
+int * testing::func5() {
+ return NULL;
+}
+
+int*testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+int*operator[] (int x) {
+}
+
+Foo *get();
+}
+
+}
+
+Bar::Foo*Bar::Foo::get() {
+}
+
+void* not_malloc(const int);
+
+void *::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60160-nl_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60160-nl_func.cpp
new file mode 100644
index 00000000..47d04da5
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60160-nl_func.cpp
@@ -0,0 +1,33 @@
+class BSRRE1D_file : PhysicalFile
+{
+ int getFoo() {
+ return(m_foo);
+ }
+
+
+ void setFoo(int foo) {
+ m_foo = foo;
+ }
+
+
+ public BSRRE1D_file() {
+ this.addFormatName("BSRRE1DF");
+ }
+
+
+ private int m_foo;
+ public void xxx() {
+ ahoj();
+ } // comment
+
+
+ public void yyy() {
+ ahoj();
+ }
+
+
+ /* comment 2 */
+ public void xxx() {
+ ahoj();
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60161-nl_func-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60161-nl_func-2.cpp
new file mode 100644
index 00000000..4da66c79
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60161-nl_func-2.cpp
@@ -0,0 +1,37 @@
+class BSRRE1D_file : PhysicalFile
+{
+ int getFoo() {
+ return(m_foo);
+ }
+
+
+
+
+ void setFoo(int foo) {
+ m_foo = foo;
+ }
+
+
+ public BSRRE1D_file() {
+ this.addFormatName("BSRRE1DF");
+ }
+
+
+ private int m_foo;
+ public void xxx() {
+ ahoj();
+ } // comment
+
+
+
+
+ public void yyy() {
+ ahoj();
+ }
+
+
+ /* comment 2 */
+ public void xxx() {
+ ahoj();
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60162-nl_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60162-nl_func.cpp
new file mode 100644
index 00000000..eab99213
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60162-nl_func.cpp
@@ -0,0 +1,23 @@
+class BSRRE1D_file : PhysicalFile
+{
+ int getFoo() {
+ return(m_foo);
+ }
+ void setFoo(int foo) {
+ m_foo = foo;
+ }
+ public BSRRE1D_file() {
+ this.addFormatName("BSRRE1DF");
+ }
+ private int m_foo;
+ public void xxx() {
+ ahoj();
+ } // comment
+ public void yyy() {
+ ahoj();
+ }
+ /* comment 2 */
+ public void xxx() {
+ ahoj();
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60163-nl_func-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60163-nl_func-2.cpp
new file mode 100644
index 00000000..2e5bbfb6
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cpp/60163-nl_func-2.cpp
@@ -0,0 +1,28 @@
+class BSRRE1D_file : PhysicalFile
+{
+ int getFoo() {
+ return(m_foo);
+ }
+
+
+ void setFoo(int foo) {
+ m_foo = foo;
+ }
+ public BSRRE1D_file() {
+ this.addFormatName("BSRRE1DF");
+ }
+ private int m_foo;
+ public void xxx() {
+ ahoj();
+ } // comment
+
+
+ public void yyy() {
+ ahoj();
+ }
+
+ /* comment 2 */
+ public void xxx() {
+ ahoj();
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10000-simple.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10000-simple.cs
index 36cedfa2..36cedfa2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10000-simple.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10000-simple.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10001-getset.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10001-getset.cs
index 756170b6..756170b6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10001-getset.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10001-getset.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10002-simple.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10002-simple.cs
index f8344b26..f8344b26 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10002-simple.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10002-simple.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10003-region.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10003-region.cs
index 2ada63e7..2ada63e7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10003-region.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10003-region.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10010-var-member.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10010-var-member.cs
index 0da0b9f5..0da0b9f5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10010-var-member.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10010-var-member.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10011-strings.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10011-strings.cs
index 6794e762..6794e762 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10011-strings.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10011-strings.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10012-621_this-spacing.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10012-621_this-spacing.cs
index bd28a5e8..bd28a5e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10012-621_this-spacing.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10012-621_this-spacing.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10013-625_where-constraints.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10013-625_where-constraints.cs
index 123109b0..123109b0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10013-625_where-constraints.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10013-625_where-constraints.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10014-630_bad-new-init-semicolon-removal.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10014-630_bad-new-init-semicolon-removal.cs
index 2e6d5a98..2e6d5a98 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10014-630_bad-new-init-semicolon-removal.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10014-630_bad-new-init-semicolon-removal.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10015-misc-failures.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10015-misc-failures.cs
index e7022083..e7022083 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10015-misc-failures.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10015-misc-failures.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10016-new-constraint-paren-space.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10016-new-constraint-paren-space.cs
index a337a447..a337a447 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10016-new-constraint-paren-space.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10016-new-constraint-paren-space.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10020-region.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10020-region.cs
index b2f57ece..b2f57ece 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10020-region.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10020-region.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10021-region.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10021-region.cs
index 926e467d..926e467d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10021-region.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10021-region.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10022-region.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10022-region.cs
index 9628d4fd..9628d4fd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10022-region.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10022-region.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10023-region.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10023-region.cs
index e21c467c..e21c467c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10023-region.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10023-region.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10027-oneline_property.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10027-oneline_property.cs
index e4470be2..e4470be2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10027-oneline_property.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10027-oneline_property.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10028-ifcolalign.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10028-ifcolalign.cs
index 13df0440..13df0440 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10028-ifcolalign.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10028-ifcolalign.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10029-when.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10029-when.cs
index 4480f618..4480f618 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10029-when.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10029-when.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10030-sort_using.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10030-sort_using.cs
index 99e802c1..99e802c1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10030-sort_using.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10030-sort_using.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10031-bug_i_935.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10031-bug_i_935.cs
index c45eb79d..c45eb79d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10031-bug_i_935.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10031-bug_i_935.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10032-sort_using_categ.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10032-sort_using_categ.cs
index ec997fc9..ec997fc9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10032-sort_using_categ.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10032-sort_using_categ.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10039-615_nested-usings.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10039-615_nested-usings.cs
index d46108bd..d46108bd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10039-615_nested-usings.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10039-615_nested-usings.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10040-tcf.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10040-tcf.cs
index 009f269e..009f269e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10040-tcf.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10040-tcf.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10041-gs.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10041-gs.cs
index ba9f873e..ba9f873e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10041-gs.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10041-gs.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10042-exception-filters.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10042-exception-filters.cs
index d638d9a8..d638d9a8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10042-exception-filters.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10042-exception-filters.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10044-ifcomment.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10044-ifcomment.cs
index 2c3ab0fc..2c3ab0fc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10044-ifcomment.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10044-ifcomment.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10045-UNI-1288.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10045-UNI-1288.cs
index 03d60f5b..03d60f5b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10045-UNI-1288.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10045-UNI-1288.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10050-generics.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10050-generics.cs
index 74e49ecd..74e49ecd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10050-generics.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10050-generics.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10051-UNI-1338.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10051-UNI-1338.cs
index 3f3d9d06..3f3d9d06 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10051-UNI-1338.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10051-UNI-1338.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10055-UNI-1345.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10055-UNI-1345.cs
index 13f61127..13f61127 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10055-UNI-1345.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10055-UNI-1345.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10060-unsafe.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10060-unsafe.cs
index fdfdd67b..fdfdd67b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10060-unsafe.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10060-unsafe.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10065-UNI-1975.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10065-UNI-1975.cs
index 1d2f2659..1d2f2659 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10065-UNI-1975.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10065-UNI-1975.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10066-UNI-1977.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10066-UNI-1977.cs
index 94b929c4..94b929c4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10066-UNI-1977.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10066-UNI-1977.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10067-UNI-1978.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10067-UNI-1978.cs
index 5f55cb2f..5f55cb2f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10067-UNI-1978.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10067-UNI-1978.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10070-utf16le.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10070-utf16le.cs
index c017f6c3..c017f6c3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10070-utf16le.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10070-utf16le.cs
Binary files differ
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10071-utf16be.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10071-utf16be.cs
index d9f54e37..d9f54e37 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10071-utf16be.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10071-utf16be.cs
Binary files differ
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10072-utf16le_no_bom.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10072-utf16le_no_bom.cs
index c017f6c3..c017f6c3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10072-utf16le_no_bom.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10072-utf16le_no_bom.cs
Binary files differ
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10073-utf16be_no_bom.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10073-utf16be_no_bom.cs
index d9f54e37..d9f54e37 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10073-utf16be_no_bom.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10073-utf16be_no_bom.cs
Binary files differ
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10074-UNI-2020.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10074-UNI-2020.cs
index 854a3655..854a3655 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10074-UNI-2020.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10074-UNI-2020.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10075-UNI-2021.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10075-UNI-2021.cs
index b0ec0414..b0ec0414 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10075-UNI-2021.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10075-UNI-2021.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10076-UNI-1343.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10076-UNI-1343.cs
index 076e338d..076e338d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10076-UNI-1343.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10076-UNI-1343.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10077-UNI-1919.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10077-UNI-1919.cs
index cc8e8420..cc8e8420 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10077-UNI-1919.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10077-UNI-1919.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10078-UNI-3484.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10078-UNI-3484.cs
index d7e4f26a..d7e4f26a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10078-UNI-3484.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10078-UNI-3484.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10080-property.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10080-property.cs
index 98d3c21c..98d3c21c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10080-property.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10080-property.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10090-string_multi.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10090-string_multi.cs
index 7d006dce..7d006dce 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10090-string_multi.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10090-string_multi.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10100-bug_600.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10100-bug_600.cs
index 54c24643..54c24643 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10100-bug_600.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10100-bug_600.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10101-sf607.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10101-sf607.cs
index 3207e6c5..3207e6c5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10101-sf607.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10101-sf607.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10103-UNI-2506.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10103-UNI-2506.cs
index 8cd07962..8cd07962 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10103-UNI-2506.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10103-UNI-2506.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10104-UNI-2505.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10104-UNI-2505.cs
index a17e6a5e..a17e6a5e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10104-UNI-2505.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10104-UNI-2505.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10110-mdarray_space.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10110-mdarray_space.cs
index 8c328f5e..8c328f5e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10110-mdarray_space.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10110-mdarray_space.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10111-mdarray_space.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10111-mdarray_space.cs
index 56aa58ce..56aa58ce 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10111-mdarray_space.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10111-mdarray_space.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10112-mdarray_space.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10112-mdarray_space.cs
index ab877b8e..ab877b8e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10112-mdarray_space.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10112-mdarray_space.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10119-preserveTabs.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10119-preserveTabs.cs
index c9583dcd..c9583dcd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10119-preserveTabs.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10119-preserveTabs.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10120-cmt_backslash_eol.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10120-cmt_backslash_eol.cs
index e56aec25..e56aec25 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10120-cmt_backslash_eol.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10120-cmt_backslash_eol.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10130-sp_between_new_paren.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10130-sp_between_new_paren.cs
index fd706ffa..fd706ffa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10130-sp_between_new_paren.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10130-sp_between_new_paren.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10140-remove_semi.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10140-remove_semi.cs
index 3ee1926e..3ee1926e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10140-remove_semi.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10140-remove_semi.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10150-operator-null-conditional.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10150-operator-null-conditional.cs
index 61ac6d74..61ac6d74 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10150-operator-null-conditional.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10150-operator-null-conditional.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10151-operator_null-coalescing-assignment.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10151-operator_null-coalescing-assignment.cs
index 416e6afc..416e6afc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10151-operator_null-coalescing-assignment.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10151-operator_null-coalescing-assignment.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10160-delegate.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10160-delegate.cs
index 6296ad80..6296ad80 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10160-delegate.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10160-delegate.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10161-delegate.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10161-delegate.cs
index 152fba2b..152fba2b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10161-delegate.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10161-delegate.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10200-logger.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10200-logger.cs
index defede8a..defede8a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10200-logger.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10200-logger.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10300-1822.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10300-1822.cs
index 92b5fd5b..92b5fd5b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10300-1822.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10300-1822.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10628-sf628.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10628-sf628.cs
index 54d3c52c..54d3c52c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/10628-sf628.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/10628-sf628.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/11011-620_getset-brace.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/11011-620_getset-brace.cs
index d4652c5f..d4652c5f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/11011-620_getset-brace.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/11011-620_getset-brace.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/11072-UNI-2007.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/11072-UNI-2007.cs
index 29e53f26..29e53f26 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/11072-UNI-2007.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/11072-UNI-2007.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/11073-UNI-2008.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/11073-UNI-2008.cs
index a4de3475..a4de3475 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/11073-UNI-2008.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/11073-UNI-2008.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12001-bug_620.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12001-bug_620.cs
index 56e9b8bc..56e9b8bc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12001-bug_620.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12001-bug_620.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12002-nullable_prop.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12002-nullable_prop.cs
index 21c4f7b0..21c4f7b0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12002-nullable_prop.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12002-nullable_prop.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12003-fncall_as_ctor_in_attr.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12003-fncall_as_ctor_in_attr.cs
index 3dab10f6..3dab10f6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12003-fncall_as_ctor_in_attr.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12003-fncall_as_ctor_in_attr.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12004-verbatim_strings.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12004-verbatim_strings.cs
index 73fa1bf0..73fa1bf0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12004-verbatim_strings.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12004-verbatim_strings.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12005-bug_1591.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12005-bug_1591.cs
index ac62df9e..ac62df9e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12005-bug_1591.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12005-bug_1591.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12101-bug_i_679.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12101-bug_i_679.cs
index 199ad7e6..199ad7e6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12101-bug_i_679.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12101-bug_i_679.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12102-mod_full_brace_nl_block_rem_mlcond.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12102-mod_full_brace_nl_block_rem_mlcond.cs
index e6e0eede..e6e0eede 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12102-mod_full_brace_nl_block_rem_mlcond.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12102-mod_full_brace_nl_block_rem_mlcond.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12103-mod_full_brace_nl_block_rem_mlcond.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12103-mod_full_brace_nl_block_rem_mlcond.cs
index 8ecd4051..8ecd4051 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12103-mod_full_brace_nl_block_rem_mlcond.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12103-mod_full_brace_nl_block_rem_mlcond.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12104-bug_1637.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12104-bug_1637.cs
index 9ffe19e7..9ffe19e7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12104-bug_1637.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12104-bug_1637.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12105-bug_1650.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12105-bug_1650.cs
index 869a9d0f..869a9d0f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12105-bug_1650.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12105-bug_1650.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12106-UNI-40685.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12106-UNI-40685.cs
index 9b70920e..9b70920e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12106-UNI-40685.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12106-UNI-40685.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12107-mod_full_paren_if_bool.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12107-mod_full_paren_if_bool.cs
index 6bcd9201..6bcd9201 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12107-mod_full_paren_if_bool.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12107-mod_full_paren_if_bool.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12108-Issue_2705.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12108-Issue_2705.cs
index 08619bb1..08619bb1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12108-Issue_2705.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12108-Issue_2705.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12200-comma.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12200-comma.cs
index 34ccfdd8..34ccfdd8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12200-comma.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12200-comma.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12201-comma.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12201-comma.cs
index 794410f0..794410f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12201-comma.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12201-comma.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12202-comma.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12202-comma.cs
index 29ab2c3e..29ab2c3e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/12202-comma.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/12202-comma.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/19000-UNI-58354.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/19000-UNI-58354.cs
index 6c77de40..6c77de40 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/19000-UNI-58354.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/19000-UNI-58354.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/20010-UNI-32658.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/20010-UNI-32658.cs
index 145da65f..145da65f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/20010-UNI-32658.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/20010-UNI-32658.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/20011-bug_1620.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/20011-bug_1620.cs
index 3b837292..3b837292 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/20011-bug_1620.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/20011-bug_1620.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60004-UNI-2684.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60004-UNI-2684.cs
index ff0b31f1..ff0b31f1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60004-UNI-2684.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60004-UNI-2684.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60005-UNI-2685.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60005-UNI-2685.cs
index ec671dd4..ec671dd4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60005-UNI-2685.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60005-UNI-2685.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60007-UNI-3083.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60007-UNI-3083.cs
index 5209dc72..5209dc72 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60007-UNI-3083.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60007-UNI-3083.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60008-UNI-17253.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60008-UNI-17253.cs
index 9021a372..9021a372 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60008-UNI-17253.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60008-UNI-17253.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60009-UNI-9917.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60009-UNI-9917.cs
index 5e352d10..5e352d10 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60009-UNI-9917.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60009-UNI-9917.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60012-UNI-12303.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60012-UNI-12303.cs
index 01be8291..01be8291 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60012-UNI-12303.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60012-UNI-12303.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60013-UNI-13955.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60013-UNI-13955.cs
index 940aa89b..940aa89b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60013-UNI-13955.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60013-UNI-13955.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60015-UNI-14131.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60015-UNI-14131.cs
index 9656bee8..9656bee8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60015-UNI-14131.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60015-UNI-14131.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60016-UNI-11662.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60016-UNI-11662.cs
index 9a49fdba..9a49fdba 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60016-UNI-11662.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60016-UNI-11662.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60018-UNI-18777.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60018-UNI-18777.cs
index 198d5be3..198d5be3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60018-UNI-18777.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60018-UNI-18777.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60019-UNI-18780.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60019-UNI-18780.cs
index 0eea713e..0eea713e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60019-UNI-18780.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60019-UNI-18780.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60020-UNI-18829.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60020-UNI-18829.cs
index a72ca87b..a72ca87b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60020-UNI-18829.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60020-UNI-18829.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60023-UNI-18437.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60023-UNI-18437.cs
index d8178e73..d8178e73 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60023-UNI-18437.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60023-UNI-18437.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60024-UNI-19644.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60024-UNI-19644.cs
index eb0d4c9c..eb0d4c9c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60024-UNI-19644.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60024-UNI-19644.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60026-UNI-19895.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60026-UNI-19895.cs
index 1fedd580..1fedd580 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60026-UNI-19895.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60026-UNI-19895.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60033-UNI-21730.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60033-UNI-21730.cs
index 6fcb8c16..6fcb8c16 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60033-UNI-21730.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60033-UNI-21730.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60036-UNI-11993.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60036-UNI-11993.cs
index bf703537..bf703537 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60036-UNI-11993.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60036-UNI-11993.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60037-UNI-29933.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60037-UNI-29933.cs
index 943cbf35..943cbf35 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60037-UNI-29933.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60037-UNI-29933.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60040-UNI-30498_2.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60040-UNI-30498_2.cs
index 445a7c97..445a7c97 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60040-UNI-30498_2.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60040-UNI-30498_2.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60041-squeeze-paren-close-Option.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60041-squeeze-paren-close-Option.cs
index 2fc371c3..2fc371c3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60041-squeeze-paren-close-Option.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60041-squeeze-paren-close-Option.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60042-indent-multistring-coulmn1.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60042-indent-multistring-coulmn1.cs
index 4f66d541..4f66d541 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60042-indent-multistring-coulmn1.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60042-indent-multistring-coulmn1.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60044-UNI-37241.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60044-UNI-37241.cs
index 57d4ffeb..57d4ffeb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60044-UNI-37241.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60044-UNI-37241.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60045-add-nl-before-namespace.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60045-add-nl-before-namespace.cs
index d9840704..d9840704 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60045-add-nl-before-namespace.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60045-add-nl-before-namespace.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60046-cast.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60046-cast.cs
index 6c5d11db..6c5d11db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/cs/60046-cast.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/cs/60046-cast.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40000-HashMap.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40000-HashMap.d
index e90087c4..e90087c4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40000-HashMap.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40000-HashMap.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40001-imports.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40001-imports.d
index 9f12a88e..9f12a88e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40001-imports.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40001-imports.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40002-volatile.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40002-volatile.d
index 73cdf4ac..73cdf4ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40002-volatile.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40002-volatile.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40003-volatile-1.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40003-volatile-1.d
index 2ef2634d..2ef2634d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40003-volatile-1.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40003-volatile-1.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40004-volatile-2.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40004-volatile-2.d
index bc5a0de4..bc5a0de4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40004-volatile-2.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40004-volatile-2.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40005-volatile-3.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40005-volatile-3.d
index 039f788a..039f788a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40005-volatile-3.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40005-volatile-3.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40006-Lexer.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40006-Lexer.d
index 9b2bf8e5..9b2bf8e5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40006-Lexer.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40006-Lexer.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40007-Lexer.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40007-Lexer.d
index d8ddf4dc..d8ddf4dc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40007-Lexer.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40007-Lexer.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40010-template.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40010-template.d
index eaad2b5d..eaad2b5d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40010-template.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40010-template.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40011-template.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40011-template.d
index 5c106063..5c106063 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40011-template.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40011-template.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40012-template.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40012-template.d
index dbe1fb85..dbe1fb85 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40012-template.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40012-template.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40013-template.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40013-template.d
index ec69b8bf..ec69b8bf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40013-template.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40013-template.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40020-funcfunc.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40020-funcfunc.d
index de673e78..de673e78 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40020-funcfunc.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40020-funcfunc.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40021-tst01.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40021-tst01.d
index a2f63fc0..a2f63fc0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40021-tst01.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40021-tst01.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40022-tst02.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40022-tst02.d
index aa138a86..aa138a86 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40022-tst02.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40022-tst02.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40023-bug-indent.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40023-bug-indent.d
index 6071604d..6071604d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40023-bug-indent.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40023-bug-indent.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40024-tst03.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40024-tst03.d
index 2344510d..2344510d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40024-tst03.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40024-tst03.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40025-tst03.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40025-tst03.d
index 15811ebc..15811ebc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40025-tst03.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40025-tst03.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40026-wysiwyg_strings.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40026-wysiwyg_strings.d
index cfdec32a..cfdec32a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40026-wysiwyg_strings.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40026-wysiwyg_strings.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40027-static_if_in_struct.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40027-static_if_in_struct.d
index be936335..be936335 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40027-static_if_in_struct.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40027-static_if_in_struct.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40030-delegate.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40030-delegate.d
index 5f7beceb..5f7beceb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40030-delegate.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40030-delegate.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40035-enum.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40035-enum.d
index 24d0ef63..24d0ef63 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40035-enum.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40035-enum.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40040-sort_import.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40040-sort_import.d
index db26c1e4..db26c1e4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40040-sort_import.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40040-sort_import.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40050-strings.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40050-strings.d
index 4964ad7a..4964ad7a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40050-strings.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40050-strings.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40051-numbers.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40051-numbers.d
index e6527d1b..e6527d1b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40051-numbers.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40051-numbers.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40052-numbers.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40052-numbers.d
index 6f474984..6f474984 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40052-numbers.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40052-numbers.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40060-casts.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40060-casts.d
index b1d6b50b..b1d6b50b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40060-casts.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40060-casts.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40061-const.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40061-const.d
index 8277f0c1..8277f0c1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40061-const.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40061-const.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40070-d_sp_paren.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40070-d_sp_paren.d
index cc38daae..cc38daae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40070-d_sp_paren.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40070-d_sp_paren.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40080-static_if.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40080-static_if.d
index 0eb3a1a8..0eb3a1a8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40080-static_if.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40080-static_if.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40090-square_indent_tab.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40090-square_indent_tab.d
index e9657860..e9657860 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40090-square_indent_tab.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40090-square_indent_tab.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40100-1438.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40100-1438.d
index 66c47d3a..66c47d3a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40100-1438.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40100-1438.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40201-invariant.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40201-invariant.d
index 3da6240f..3da6240f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40201-invariant.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40201-invariant.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40300-extern_.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40300-extern_.d
index 40131d6d..40131d6d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40300-extern_.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40300-extern_.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40400-vbraces000.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40400-vbraces000.d
index 616bb259..616bb259 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40400-vbraces000.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40400-vbraces000.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40401-vbraces001.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40401-vbraces001.d
index 6d7e96f6..6d7e96f6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40401-vbraces001.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40401-vbraces001.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40402-vbraces002.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40402-vbraces002.d
index c966d140..c966d140 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40402-vbraces002.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40402-vbraces002.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40403-template_use.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40403-template_use.d
index 94cdbf6b..94cdbf6b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40403-template_use.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40403-template_use.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40500-template_spacing000.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40500-template_spacing000.d
index 627ca266..627ca266 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40500-template_spacing000.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40500-template_spacing000.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40501-template_spacing001.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40501-template_spacing001.d
index dc3242ff..dc3242ff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40501-template_spacing001.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40501-template_spacing001.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40502-template_spacing001.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40502-template_spacing001.d
index 3c238a1f..3c238a1f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40502-template_spacing001.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40502-template_spacing001.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40503-template_spacing001.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40503-template_spacing001.d
index 010cbe07..010cbe07 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40503-template_spacing001.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40503-template_spacing001.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40504-type_spacing000.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40504-type_spacing000.d
index 1e47f131..1e47f131 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40504-type_spacing000.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40504-type_spacing000.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40505-type_spacing000.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40505-type_spacing000.d
index 1e47f131..1e47f131 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40505-type_spacing000.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40505-type_spacing000.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40506-type_spacing000.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40506-type_spacing000.d
index e11e545b..e11e545b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/d/40506-type_spacing000.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/d/40506-type_spacing000.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/ecma/90000-example-1.es b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/ecma/90000-example-1.es
index 45f9b6cb..45f9b6cb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/ecma/90000-example-1.es
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/ecma/90000-example-1.es
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80000-assert.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80000-assert.java
index fbc20ba7..fbc20ba7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80000-assert.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80000-assert.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80010-annotation1.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80010-annotation1.java
index 314a0b91..314a0b91 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80010-annotation1.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80010-annotation1.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80011-annotation2.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80011-annotation2.java
index 1acc459f..1acc459f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80011-annotation2.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80011-annotation2.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80012-annotation2.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80012-annotation2.java
index 1acc459f..1acc459f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80012-annotation2.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80012-annotation2.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80013-annotation2.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80013-annotation2.java
index 42f5a1df..42f5a1df 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80013-annotation2.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80013-annotation2.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80014-annotation2.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80014-annotation2.java
index 42f5a1df..42f5a1df 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80014-annotation2.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80014-annotation2.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80020-foreach.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80020-foreach.java
index 69967517..69967517 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80020-foreach.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80020-foreach.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80030-variable_aligns.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80030-variable_aligns.java
index c73b62d3..c73b62d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80030-variable_aligns.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80030-variable_aligns.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80040-try.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80040-try.java
index 78a55849..78a55849 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80040-try.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80040-try.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80050-double_brace.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80050-double_brace.java
index e00246e1..e00246e1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80050-double_brace.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80050-double_brace.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80051-double_brace.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80051-double_brace.java
index 66183ada..66183ada 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80051-double_brace.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80051-double_brace.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80060-synchronized.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80060-synchronized.java
index b8b70a6b..b8b70a6b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80060-synchronized.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80060-synchronized.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80061-synchronized.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80061-synchronized.java
index 73fc9b1d..73fc9b1d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80061-synchronized.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80061-synchronized.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80062-sp_this_paren.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80062-sp_this_paren.java
index 1c189223..1c189223 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80062-sp_this_paren.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80062-sp_this_paren.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80063-i1121.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80063-i1121.java
index 18567ec3..18567ec3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80063-i1121.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80063-i1121.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80064-long_cl_cmt.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80064-long_cl_cmt.java
index af7a1c7e..af7a1c7e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80064-long_cl_cmt.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80064-long_cl_cmt.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80065-Java8DoubleColon.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80065-Java8DoubleColon.java
index ec594909..ec594909 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80065-Java8DoubleColon.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80065-Java8DoubleColon.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80066-sp_after_for_colon.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80066-sp_after_for_colon.java
index 38515aed..38515aed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80066-sp_after_for_colon.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80066-sp_after_for_colon.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80067-doxy-javadoc-alignment.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80067-doxy-javadoc-alignment.java
index 6b9f748b..6b9f748b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80067-doxy-javadoc-alignment.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80067-doxy-javadoc-alignment.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80068-nl_before_ignore_after_case.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80068-nl_before_ignore_after_case.java
index 50bfc274..50bfc274 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80068-nl_before_ignore_after_case.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80068-nl_before_ignore_after_case.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80100-sf567.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80100-sf567.java
index 9fc644b8..9fc644b8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80100-sf567.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80100-sf567.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80200-sp_before_byref.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80200-sp_before_byref.java
index 7927ee89..7927ee89 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80200-sp_before_byref.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80200-sp_before_byref.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80201-generics.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80201-generics.java
index 086786c0..086786c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80201-generics.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80201-generics.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80202-generics_wildcard.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80202-generics_wildcard.java
index 358e333b..358e333b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80202-generics_wildcard.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80202-generics_wildcard.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80203-generics_return_type.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80203-generics_return_type.java
index 1f2aa340..1f2aa340 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80203-generics_return_type.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80203-generics_return_type.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80204-cast.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80204-cast.java
index 30d0dcc4..30d0dcc4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80204-cast.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80204-cast.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80205-sp_after_angle.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80205-sp_after_angle.java
index bd654485..bd654485 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80205-sp_after_angle.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80205-sp_after_angle.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80206-annotation3.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80206-annotation3.java
index 3d84c04c..3d84c04c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80206-annotation3.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80206-annotation3.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80300-Issue_670.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80300-Issue_670.java
index b0aa2cf0..b0aa2cf0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80300-Issue_670.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80300-Issue_670.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80301-issue_672.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80301-issue_672.java
index 16a077a4..16a077a4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80301-issue_672.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80301-issue_672.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80302-Issue_1845.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80302-Issue_1845.java
index 062c89d1..062c89d1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80302-Issue_1845.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80302-Issue_1845.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80303-Issue_1122.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80303-Issue_1122.java
index 111ee739..111ee739 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80303-Issue_1122.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80303-Issue_1122.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80304-Issue_1124.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80304-Issue_1124.java
index bca3cb33..bca3cb33 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80304-Issue_1124.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80304-Issue_1124.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80305-Issue_1124.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80305-Issue_1124.java
index 0469fed1..0469fed1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80305-Issue_1124.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80305-Issue_1124.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80306-leading-tabs-for-java-lambda.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80306-leading-tabs-for-java-lambda.java
index 19b6df0f..19b6df0f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/java/80306-leading-tabs-for-java-lambda.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/java/80306-leading-tabs-for-java-lambda.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10018-delete-space-oc.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10018-delete-space-oc.mm
index 8760241b..8760241b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10018-delete-space-oc.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10018-delete-space-oc.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10019-func-param-wrap-oc.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10019-func-param-wrap-oc.mm
index 45601228..45601228 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10019-func-param-wrap-oc.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10019-func-param-wrap-oc.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10020-align-objc-like-xcode.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10020-align-objc-like-xcode.m
index 93066246..93066246 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10020-align-objc-like-xcode.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10020-align-objc-like-xcode.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10021-double-indent-objc-dict.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10021-double-indent-objc-dict.m
index a93bd81e..a93bd81e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10021-double-indent-objc-dict.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10021-double-indent-objc-dict.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10022-indent-objc-block.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10022-indent-objc-block.m
new file mode 100644
index 00000000..1a97aa27
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10022-indent-objc-block.m
@@ -0,0 +1,149 @@
+const auto c =
+ [FDSTapTargetComponent
+ accessibilityContext:{
+ .accessibilityLabel = ^{
+ return [AccessibilityLabelBuilder build];
+ }
+ }];
+
+methodCall1(^{
+ send(component1);
+},
+ x);
+
+methodCall2( ^ {
+ send(component2);
+});
+
+[array block:^ (id obj, NSUInteger idx, BOOL *stop) {
+ NSLog(@"Object at index %lu is %@", idx, obj);
+}];
+
+
+[UIView animateWithDuration:3.0f animation:^{
+ LOG(@"animate");
+ }
+ completion:^(BOOL finished){
+ LOG(@"finished");
+ }];
+
+[UIView
+ animationBlock: ^ {
+ [[Log alloc] callback:^NSString *(NSString *result){
+ return @"log";
+ }];
+ }
+ completion:^(BOOL finished){
+ LOG(@"finished");
+ }];
+
+
+methodCall3(x, ^KSC::ActionCell::Item (Item item) {
+ variant.action.send(component);
+});
+
+methodCall4( x, ^ id (Component *c) {
+ NSLog(@"methodCall4");
+});
+
+methodCall5( ^ id (Component *c) {
+ NSLog(@"methodCall5");
+});
+
+methodCall6( ^(NSString *)(Component *c) {
+ return @"methodCall6";
+});
+
+methodCall7(^ (Component *c) {
+ NSLog(@"methodCall7");
+}, y);
+
+methodCall8(x, ^(Component *c) {
+ NSLog(@"methodCall8");
+}, y);
+
+
+[Object callMethod:xArg
+ block:^id (Component *c) {
+ NSLog(@"methodCall4");
+ }];
+
+[Object callMethod:xArg
+ block:^id (Component *c) {
+ NSLog(@"methodCall5");
+ }];
+
+[Object callMethod:xArg block:^(NSString *)(Component *c) {
+ return @"methodCall6";
+}];
+
+
+[Object callMethod:xArg
+ block:^ (Component *c) {
+ NSLog(@"methodCall7");
+ }
+ yMethod:yArg];
+
+[Object callMethod:xArg
+ block:^(Component *c) {
+ NSLog(@"methodCall8");
+ }
+ yMethod:yArg];
+
+[Object callMethod:xArg
+ block:^(NSString *)(Component *c1) {
+ [Object callMethod:xArg block:^(Component *c) {
+ NSLog(@"methodCal9");
+ }
+ yMethod:yArg];
+ }
+ anotherBlock:^(NSString *)(Component *c2) {
+ return @"methodCall10";
+ }
+ yetAnotherBlock:^(NSString *)(Component *c3) {
+ return @"methodCall11";
+ }];
+
+[dialog
+ dismissWithCompletion:^{
+ _deleteConversation(
+ strongSelf->_session,
+ ^{
+ if (auto const innerStrongSelf = weakSelf) {
+ [NavigationCoordinator(innerStrongSelf)
+ dismissViewController:innerStrongSelf
+ completion:nil];
+ }
+ });
+ }];
+
+
+[FlexboxComponent
+ newWithView:{
+ {
+ .accessibilityLabel = ^{
+ return
+ [[[[AccessibilityLabelBuilder builder]
+ appendPhrase:title]
+ appendPhrase:body]
+ getResult];
+ },
+ }
+ }];
+
+
+MainComponent(
+ .builder = ^{
+ return
+ value;
+},
+ param1,
+ param2,
+ );
+
+KSC::map(
+ _items,
+ ^ ActionCell::Item (Item item) {
+ return x;
+}
+ );
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10033-objc.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10033-objc.mm
index 07ede276..07ede276 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10033-objc.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10033-objc.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10034-asm.h.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10034-asm.h.mm
index 84a5efa8..84a5efa8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10034-asm.h.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10034-asm.h.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10035-definesalign.h.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10035-definesalign.h.mm
index 9ad29954..9ad29954 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10035-definesalign.h.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10035-definesalign.h.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10036-inttypes.h.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10036-inttypes.h.mm
index 4ac13417..4ac13417 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10036-inttypes.h.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10036-inttypes.h.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10046-UNI-1333.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10046-UNI-1333.mm
index 5c91693c..5c91693c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10046-UNI-1333.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10046-UNI-1333.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10102-pp-ignore.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10102-pp-ignore.mm
index f26232c9..f26232c9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/10102-pp-ignore.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/10102-pp-ignore.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/11030-argtypes.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/11030-argtypes.mm
index 1afeb694..1afeb694 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/11030-argtypes.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/11030-argtypes.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/11031-casting.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/11031-casting.mm
index c73d6ef8..c73d6ef8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/11031-casting.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/11031-casting.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/11032-newlines.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/11032-newlines.mm
index 45fd64f9..45fd64f9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/11032-newlines.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/11032-newlines.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50001-Fraction.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50001-Fraction.h
index b1e373c2..b1e373c2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50001-Fraction.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50001-Fraction.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50002-Fraction.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50002-Fraction.m
index 4ad6dfc8..4ad6dfc8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50002-Fraction.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50002-Fraction.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50003-main.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50003-main.m
index ec082dc1..ec082dc1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50003-main.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50003-main.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50004-string.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50004-string.m
index bbfeb51e..bbfeb51e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50004-string.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50004-string.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50005-Declarations.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50005-Declarations.h
index 3b65c41c..3b65c41c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50005-Declarations.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50005-Declarations.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50006-exceptions.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50006-exceptions.m
index 609d2086..609d2086 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50006-exceptions.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50006-exceptions.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50007-misc.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50007-misc.m
index 4de222a1..4de222a1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50007-misc.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50007-misc.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50008-protocol.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50008-protocol.m
index 50c4314a..50c4314a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50008-protocol.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50008-protocol.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50009-literals.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50009-literals.mm
index 4bd99277..4bd99277 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50009-literals.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50009-literals.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50010-return_type.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50010-return_type.m
index 62275a52..62275a52 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50010-return_type.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50010-return_type.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50011-return_type.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50011-return_type.m
index 7cc95485..7cc95485 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50011-return_type.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50011-return_type.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50012-return_type.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50012-return_type.m
index 106c5466..106c5466 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50012-return_type.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50012-return_type.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50014-sp_oc_classname_paren-r.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50014-sp_oc_classname_paren-r.m
index 847e9dca..847e9dca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50014-sp_oc_classname_paren-r.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50014-sp_oc_classname_paren-r.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50015-receiver.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50015-receiver.m
index dd6ee3d6..dd6ee3d6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50015-receiver.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50015-receiver.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50016-ternary.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50016-ternary.m
index 42a573f4..42a573f4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50016-ternary.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50016-ternary.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50017-ternary.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50017-ternary.m
index d53fc319..d53fc319 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50017-ternary.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50017-ternary.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50018-indent-inside-ternary-operator.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50018-indent-inside-ternary-operator.m
index 59412a01..59412a01 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50018-indent-inside-ternary-operator.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50018-indent-inside-ternary-operator.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50020-selector.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50020-selector.m
index c53db6fb..c53db6fb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50020-selector.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50020-selector.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50021-selector.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50021-selector.m
index 3442f700..3442f700 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50021-selector.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50021-selector.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50022-selector.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50022-selector.m
index 1d790cc9..1d790cc9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50022-selector.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50022-selector.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50025-exceptions.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50025-exceptions.m
index 609d2086..609d2086 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50025-exceptions.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50025-exceptions.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50026-exceptions.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50026-exceptions.m
index 150de092..150de092 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50026-exceptions.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50026-exceptions.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50030-sort_import.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50030-sort_import.m
index e0cfcb88..e0cfcb88 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50030-sort_import.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50030-sort_import.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50031-sort_import.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50031-sort_import.m
index e0cfcb88..e0cfcb88 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50031-sort_import.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50031-sort_import.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50032-sort_import.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50032-sort_import.m
index 37b4d643..37b4d643 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50032-sort_import.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50032-sort_import.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50033-sort_import.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50033-sort_import.m
index 7c2ab21f..7c2ab21f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50033-sort_import.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50033-sort_import.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50034-sort_import.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50034-sort_import.m
index f8a42242..f8a42242 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50034-sort_import.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50034-sort_import.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50035-sort_import_group.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50035-sort_import_group.m
index 251829df..251829df 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50035-sort_import_group.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50035-sort_import_group.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50036-sort_import_group_regex.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50036-sort_import_group_regex.mm
index 633da761..633da761 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50036-sort_import_group_regex.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50036-sort_import_group_regex.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50040-complex_method.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50040-complex_method.m
index 29467813..29467813 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50040-complex_method.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50040-complex_method.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50050-real_world_file.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50050-real_world_file.m
index a4bf639e..a4bf639e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50050-real_world_file.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50050-real_world_file.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50060-oc-split.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50060-oc-split.m
index a7bcd4de..a7bcd4de 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50060-oc-split.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50060-oc-split.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50061-bug_167.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50061-bug_167.m
index 28087bb4..28087bb4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50061-bug_167.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50061-bug_167.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50062-issue_2631.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50062-issue_2631.m
index a4404650..a4404650 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50062-issue_2631.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50062-issue_2631.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50070-blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50070-blocks.m
index 8b77ccda..8b77ccda 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50070-blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50070-blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50071-blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50071-blocks.m
index 8b77ccda..8b77ccda 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50071-blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50071-blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50072-blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50072-blocks.m
index 8b77ccda..8b77ccda 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50072-blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50072-blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50073-blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50073-blocks.m
index 06a9cd78..06a9cd78 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50073-blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50073-blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50074-blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50074-blocks.m
index 467387b4..467387b4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50074-blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50074-blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50075-blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50075-blocks.m
index 8b77ccda..8b77ccda 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50075-blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50075-blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50076-blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50076-blocks.m
index 8b77ccda..8b77ccda 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50076-blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50076-blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50077-more_blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50077-more_blocks.m
index 75870d32..75870d32 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50077-more_blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50077-more_blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50078-more_blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50078-more_blocks.m
index 91d27d55..91d27d55 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50078-more_blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50078-more_blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50079-more_blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50079-more_blocks.m
index f6af5562..f6af5562 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50079-more_blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50079-more_blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50080-more_blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50080-more_blocks.m
index 1fbb7c34..1fbb7c34 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50080-more_blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50080-more_blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50081-more_blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50081-more_blocks.m
index 1fbb7c34..1fbb7c34 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50081-more_blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50081-more_blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50082-more_blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50082-more_blocks.m
index 75870d32..75870d32 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50082-more_blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50082-more_blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50083-more_blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50083-more_blocks.m
index f6af5562..f6af5562 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50083-more_blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50083-more_blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50084-more_blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50084-more_blocks.m
index 75870d32..75870d32 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50084-more_blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50084-more_blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50085-block_in_method.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50085-block_in_method.m
index 7a91d13e..7a91d13e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50085-block_in_method.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50085-block_in_method.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50086-block_in_method.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50086-block_in_method.m
index c5c9ae6b..c5c9ae6b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50086-block_in_method.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50086-block_in_method.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50087-indent_oc_inside_msg_sel.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50087-indent_oc_inside_msg_sel.m
index af5c2b7b..af5c2b7b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50087-indent_oc_inside_msg_sel.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50087-indent_oc_inside_msg_sel.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50090-kw.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50090-kw.m
index ef52dd8e..ef52dd8e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50090-kw.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50090-kw.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50091-block_in_method.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50091-block_in_method.m
index 705435d8..705435d8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50091-block_in_method.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50091-block_in_method.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50095-box.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50095-box.m
index 45b0de1b..45b0de1b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50095-box.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50095-box.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50100-bug_340.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50100-bug_340.m
index ec5135ab..ec5135ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50100-bug_340.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50100-bug_340.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50110-msg_align.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50110-msg_align.m
index 041148c1..041148c1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50110-msg_align.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50110-msg_align.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50111-ns_enum.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50111-ns_enum.m
index 1b960272..1b960272 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50111-ns_enum.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50111-ns_enum.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50112-ns_enum.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50112-ns_enum.m
index 1b960272..1b960272 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50112-ns_enum.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50112-ns_enum.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50113-ns_enum.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50113-ns_enum.m
index 5c30d740..5c30d740 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50113-ns_enum.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50113-ns_enum.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50120-gh137.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50120-gh137.m
index ff41543a..ff41543a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50120-gh137.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50120-gh137.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50200-more_blocks_2.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50200-more_blocks_2.m
index 8835454f..8835454f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50200-more_blocks_2.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50200-more_blocks_2.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50201-blocks_align.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50201-blocks_align.m
index 505c9b99..505c9b99 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50201-blocks_align.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50201-blocks_align.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50202-blocks_align.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50202-blocks_align.m
index 439ac716..439ac716 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50202-blocks_align.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50202-blocks_align.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50203-blocks_align.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50203-blocks_align.m
index 07bd3cf3..07bd3cf3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50203-blocks_align.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50203-blocks_align.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50204-blocks_align.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50204-blocks_align.m
index a2cefc1f..a2cefc1f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50204-blocks_align.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50204-blocks_align.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50205-msg_align.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50205-msg_align.m
index f024b44c..f024b44c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50205-msg_align.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50205-msg_align.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50206-issue_2727.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50206-issue_2727.m
index 5639c298..5639c298 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50206-issue_2727.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50206-issue_2727.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50207-issue_3031.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50207-issue_3031.mm
index 75e6f5ea..75e6f5ea 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50207-issue_3031.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50207-issue_3031.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50300-msg.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50300-msg.m
index 79c1a60a..79c1a60a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50300-msg.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50300-msg.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50400-for.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50400-for.m
index 35c34bce..35c34bce 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50400-for.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50400-for.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50410-oc_cond_colon.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50410-oc_cond_colon.m
index 8059a3c6..8059a3c6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50410-oc_cond_colon.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50410-oc_cond_colon.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50411-attribute_specifier_seqs.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50411-attribute_specifier_seqs.mm
index 49dfaefa..49dfaefa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50411-attribute_specifier_seqs.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50411-attribute_specifier_seqs.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50500-code_placeholder.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50500-code_placeholder.m
index f6a745ed..f6a745ed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50500-code_placeholder.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50500-code_placeholder.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50510-gh293.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50510-gh293.m
index a1dffc49..a1dffc49 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50510-gh293.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50510-gh293.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50511-gh293.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50511-gh293.m
index 6e4c180a..6e4c180a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50511-gh293.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50511-gh293.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50512-sp_oc_catch.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50512-sp_oc_catch.m
index 6040b071..6040b071 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50512-sp_oc_catch.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50512-sp_oc_catch.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50513-sp_oc_boxed.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50513-sp_oc_boxed.m
index 916e9330..916e9330 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50513-sp_oc_boxed.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50513-sp_oc_boxed.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50514-indent_boxed.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50514-indent_boxed.m
index 165ee244..165ee244 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50514-indent_boxed.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50514-indent_boxed.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50515-sp_oc_synchronized.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50515-sp_oc_synchronized.m
index ffff5618..ffff5618 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50515-sp_oc_synchronized.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50515-sp_oc_synchronized.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50600-bug_i_477.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50600-bug_i_477.m
index 0e7cbb78..0e7cbb78 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50600-bug_i_477.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50600-bug_i_477.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50601-bug_i_408.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50601-bug_i_408.m
index 700d159d..700d159d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50601-bug_i_408.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50601-bug_i_408.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50602-bug_i_125-412.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50602-bug_i_125-412.m
index 4beec2d5..4beec2d5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50602-bug_i_125-412.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50602-bug_i_125-412.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50603-gh511.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50603-gh511.m
index 2c86e32d..2c86e32d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50603-gh511.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50603-gh511.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50604-bug_497.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50604-bug_497.m
index 121503b4..121503b4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50604-bug_497.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50604-bug_497.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50605-bug_404.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50605-bug_404.m
index 8244ebd3..8244ebd3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50605-bug_404.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50605-bug_404.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50606-bug_1366.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50606-bug_1366.m
index f4058b1f..f4058b1f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50606-bug_1366.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50606-bug_1366.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50607-sp_after_oc_msg_receiver.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50607-sp_after_oc_msg_receiver.m
index 14eaed36..14eaed36 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50607-sp_after_oc_msg_receiver.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50607-sp_after_oc_msg_receiver.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50608-blocks_align2.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50608-blocks_align2.m
index b37c1b4b..b37c1b4b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50608-blocks_align2.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50608-blocks_align2.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50609-negative_value.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50609-negative_value.m
index 9aa4dc80..9aa4dc80 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50609-negative_value.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50609-negative_value.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50610-nelem.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50610-nelem.m
index d42ce3b6..d42ce3b6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50610-nelem.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50610-nelem.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50611-for2.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50611-for2.m
index 535bc50b..535bc50b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50611-for2.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50611-for2.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50612-chunk_ends_type1.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50612-chunk_ends_type1.m
index fb9bb4e1..fb9bb4e1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50612-chunk_ends_type1.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50612-chunk_ends_type1.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50613-chunk_ends_type2.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50613-chunk_ends_type2.m
index 64efc7e6..64efc7e6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50613-chunk_ends_type2.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50613-chunk_ends_type2.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50614-chunk_ends_type3.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50614-chunk_ends_type3.m
index 8f0ae62c..8f0ae62c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50614-chunk_ends_type3.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50614-chunk_ends_type3.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50615-block_literal_protocol.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50615-block_literal_protocol.m
index 35879a0e..35879a0e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50615-block_literal_protocol.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50615-block_literal_protocol.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50616-oc_msg_in_pp.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50616-oc_msg_in_pp.m
index 8496973b..8496973b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50616-oc_msg_in_pp.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50616-oc_msg_in_pp.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50617-boxed_receiver.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50617-boxed_receiver.m
index e4c247fd..e4c247fd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50617-boxed_receiver.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50617-boxed_receiver.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50618-func_def.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50618-func_def.mm
index 49de2fea..49de2fea 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50618-func_def.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50618-func_def.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50619-cast.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50619-cast.m
index 1e588579..1e588579 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50619-cast.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50619-cast.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50620-sp_after_angle.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50620-sp_after_angle.m
index 318071ba..318071ba 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50620-sp_after_angle.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50620-sp_after_angle.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50621-Fraction.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50621-Fraction.h
index 77403abd..77403abd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50621-Fraction.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50621-Fraction.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50622-c-cpp-oc-wrapper.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50622-c-cpp-oc-wrapper.c
index f17c10ed..f17c10ed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50622-c-cpp-oc-wrapper.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50622-c-cpp-oc-wrapper.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50623-extern-c-attribute.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50623-extern-c-attribute.m
index 1c752682..1c752682 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50623-extern-c-attribute.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50623-extern-c-attribute.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50624-typeof.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50624-typeof.m
index 968aad5a..968aad5a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50624-typeof.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50624-typeof.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50625-sp_inside_braces_oc_dict.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50625-sp_inside_braces_oc_dict.m
index f98a27ea..f98a27ea 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50625-sp_inside_braces_oc_dict.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50625-sp_inside_braces_oc_dict.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50626-chunk_ends_type4.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50626-chunk_ends_type4.m
index dd4d55fe..dd4d55fe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50626-chunk_ends_type4.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50626-chunk_ends_type4.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50627-method_ends_semicolon.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50627-method_ends_semicolon.m
index b1ca36fa..b1ca36fa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50627-method_ends_semicolon.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50627-method_ends_semicolon.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50628-macro-close-brace.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50628-macro-close-brace.m
index 0eb3fa81..0eb3fa81 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50628-macro-close-brace.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50628-macro-close-brace.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50629-pp_bool.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50629-pp_bool.m
index b1bf896c..b1bf896c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50629-pp_bool.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50629-pp_bool.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50630-nl_func_call_args_multi_line_ignore_closures.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50630-nl_func_call_args_multi_line_ignore_closures.m
index 5c07ea43..5c07ea43 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50630-nl_func_call_args_multi_line_ignore_closures.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50630-nl_func_call_args_multi_line_ignore_closures.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50631-nl_oc_msg_args_min_params.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50631-nl_oc_msg_args_min_params.m
index 441321d4..441321d4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50631-nl_oc_msg_args_min_params.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50631-nl_oc_msg_args_min_params.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50632-nl_oc_msg_args_max_code_width.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50632-nl_oc_msg_args_max_code_width.m
index 0ee1dae1..0ee1dae1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50632-nl_oc_msg_args_max_code_width.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50632-nl_oc_msg_args_max_code_width.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50633-ocpp_msg_access.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50633-ocpp_msg_access.mm
index ee2dbe03..ee2dbe03 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50633-ocpp_msg_access.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50633-ocpp_msg_access.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50700-cmt_insert.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50700-cmt_insert.m
index ec94c42b..ec94c42b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50700-cmt_insert.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50700-cmt_insert.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50701-cmt_insert2.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50701-cmt_insert2.m
index 7a90cc57..7a90cc57 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50701-cmt_insert2.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50701-cmt_insert2.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50800-properties.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50800-properties.m
index fa9ca930..fa9ca930 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50800-properties.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50800-properties.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50801-i1213.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50801-i1213.m
index f47e5964..f47e5964 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50801-i1213.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50801-i1213.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50802-available.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50802-available.m
index 5054043a..5054043a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50802-available.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50802-available.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50803-indent_single_newline.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50803-indent_single_newline.m
index a70184e5..a70184e5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50803-indent_single_newline.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50803-indent_single_newline.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50804-issue_2629.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50804-issue_2629.m
index 6d6cbf30..6d6cbf30 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50804-issue_2629.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50804-issue_2629.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50805-issue_2724.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50805-issue_2724.m
index 23241732..23241732 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50805-issue_2724.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50805-issue_2724.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50810-bug_841.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50810-bug_841.m
index 8e8a6713..8e8a6713 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50810-bug_841.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50810-bug_841.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50811-bug_1674.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50811-bug_1674.m
index 7d23b230..7d23b230 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50811-bug_1674.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50811-bug_1674.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50812-bug_1683.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50812-bug_1683.m
index 3ee562c0..3ee562c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50812-bug_1683.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50812-bug_1683.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50813-sp_before_oc_proto_list.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50813-sp_before_oc_proto_list.m
index 65d13399..65d13399 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50813-sp_before_oc_proto_list.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50813-sp_before_oc_proto_list.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50814-sp_before_oc_proto_list.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50814-sp_before_oc_proto_list.m
index be1f49ed..be1f49ed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50814-sp_before_oc_proto_list.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50814-sp_before_oc_proto_list.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50815-sp_before_oc_proto_list.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50815-sp_before_oc_proto_list.m
index 1fef0cc4..1fef0cc4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50815-sp_before_oc_proto_list.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50815-sp_before_oc_proto_list.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50816-issue_2675.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50816-issue_2675.m
index ccb80f6b..ccb80f6b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50816-issue_2675.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50816-issue_2675.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50817-issue_2722.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50817-issue_2722.m
index 8919895a..8919895a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50817-issue_2722.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50817-issue_2722.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50900-1927.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50900-1927.m
index 3ae39e47..3ae39e47 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50900-1927.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50900-1927.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50901-Issue_2172.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50901-Issue_2172.m
index efa73591..efa73591 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50901-Issue_2172.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50901-Issue_2172.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50902-Issue_2289.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50902-Issue_2289.m
index 19fe5cdf..19fe5cdf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50902-Issue_2289.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50902-Issue_2289.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50903-Issue_681.oc b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50903-Issue_681.oc
index 1e71cdaa..1e71cdaa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50903-Issue_681.oc
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50903-Issue_681.oc
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50904-double_angle_space.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50904-double_angle_space.m
index 0e6c0c0c..0e6c0c0c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50904-double_angle_space.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50904-double_angle_space.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50905-double_angle_space.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50905-double_angle_space.m
index 9636a38e..9636a38e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50905-double_angle_space.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50905-double_angle_space.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50906-double_angle_space.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50906-double_angle_space.m
index 5c16c25f..5c16c25f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50906-double_angle_space.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50906-double_angle_space.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50907-align_colon_with_ternary_1.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50907-align_colon_with_ternary_1.m
index 2b5f1ef8..2b5f1ef8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50907-align_colon_with_ternary_1.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50907-align_colon_with_ternary_1.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50908-align_colon_with_ternary_2.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50908-align_colon_with_ternary_2.m
index bfca2a80..bfca2a80 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50908-align_colon_with_ternary_2.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50908-align_colon_with_ternary_2.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50909-3766.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50909-3766.m
index 36b83473..36b83473 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50909-3766.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50909-3766.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50910-3767.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50910-3767.mm
index a7cbb954..a7cbb954 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50910-3767.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50910-3767.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50911-3811.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50911-3811.mm
index 4510b8c2..4510b8c2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50911-3811.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50911-3811.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50912-3812.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50912-3812.m
index acea28c0..acea28c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50912-3812.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50912-3812.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50913-3813.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50913-3813.m
index 37e9239f..37e9239f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50913-3813.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50913-3813.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50914-3819.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50914-3819.m
index 2a34b1c3..2a34b1c3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50914-3819.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50914-3819.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50915-3822.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50915-3822.h
index e0f113e1..e0f113e1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50915-3822.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50915-3822.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50916-3823.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50916-3823.m
index 9c110935..9c110935 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/50916-3823.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/50916-3823.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/51000-sp_cond_ternary_short.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/51000-sp_cond_ternary_short.m
index 6c1ce050..6c1ce050 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/51000-sp_cond_ternary_short.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/51000-sp_cond_ternary_short.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/51001-ns_enum-i.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/51001-ns_enum-i.m
index e5caad06..e5caad06 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/51001-ns_enum-i.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/51001-ns_enum-i.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/51002-sp_oc_catch.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/51002-sp_oc_catch.m
index 391b8df8..391b8df8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/51002-sp_oc_catch.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/51002-sp_oc_catch.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/51003-sp_oc_catch.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/51003-sp_oc_catch.m
index c214c848..c214c848 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/51003-sp_oc_catch.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/51003-sp_oc_catch.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/51004-block_pointer.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/51004-block_pointer.m
index ab51e3d2..ab51e3d2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/51004-block_pointer.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/51004-block_pointer.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/60011-UNI-11095.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/60011-UNI-11095.mm
index 4f88df51..4f88df51 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/oc/60011-UNI-11095.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/oc/60011-UNI-11095.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60000-functions.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60000-functions.pawn
index 853c70ad..853c70ad 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60000-functions.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60000-functions.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60001-comment.p b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60001-comment.p
index f63deb62..f63deb62 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60001-comment.p
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60001-comment.p
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60002-traffic.p b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60002-traffic.p
index a902e497..a902e497 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60002-traffic.p
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60002-traffic.p
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60003-tags.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60003-tags.pawn
index b21f7679..b21f7679 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60003-tags.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60003-tags.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60004-enum.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60004-enum.pawn
index 7dd318f3..7dd318f3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60004-enum.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60004-enum.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60005-unbraced.p b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60005-unbraced.p
index 1a22a3af..1a22a3af 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60005-unbraced.p
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60005-unbraced.p
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60010-str-escape.p b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60010-str-escape.p
index 3aa54453..3aa54453 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60010-str-escape.p
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60010-str-escape.p
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60020-switch-vsemi.sma b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60020-switch-vsemi.sma
index a0c720f7..a0c720f7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60020-switch-vsemi.sma
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60020-switch-vsemi.sma
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60030-crusty_ex-1.sma b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60030-crusty_ex-1.sma
index 23e042dd..23e042dd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60030-crusty_ex-1.sma
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60030-crusty_ex-1.sma
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60040-preproc.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60040-preproc.pawn
index 6df8101f..6df8101f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60040-preproc.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60040-preproc.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60050-gh419.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60050-gh419.pawn
index 9db7b08f..9db7b08f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60050-gh419.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60050-gh419.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60100-Issue_2586.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60100-Issue_2586.pawn
index e3eed47c..e3eed47c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60100-Issue_2586.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60100-Issue_2586.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60101-Issue_2665.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60101-Issue_2665.pawn
index 90fcbd07..90fcbd07 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/pawn/60101-Issue_2665.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/pawn/60101-Issue_2665.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/sql/02400-mysql.sqc b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/sql/02400-mysql.sqc
index ec8ad604..ec8ad604 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/sql/02400-mysql.sqc
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/sql/02400-mysql.sqc
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/sql/02401-sta-select.sqc b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/sql/02401-sta-select.sqc
index 1142c3b9..1142c3b9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/sql/02401-sta-select.sqc
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/sql/02401-sta-select.sqc
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/sql/02402-issue_527.sqc b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/sql/02402-issue_527.sqc
index 17ccfa3b..17ccfa3b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/sql/02402-issue_527.sqc
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/sql/02402-issue_527.sqc
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70000-list.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70000-list.vala
index 1893dcb5..1893dcb5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70000-list.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70000-list.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70001-advanced.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70001-advanced.vala
index c1d581c5..c1d581c5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70001-advanced.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70001-advanced.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70010-verbatim_str.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70010-verbatim_str.vala
index 12c1f1a3..12c1f1a3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70010-verbatim_str.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70010-verbatim_str.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70011-verbatim_str2.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70011-verbatim_str2.vala
index fc745113..fc745113 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70011-verbatim_str2.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70011-verbatim_str2.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70012-verbatim_str2.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70012-verbatim_str2.vala
index edd0ea67..edd0ea67 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70012-verbatim_str2.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70012-verbatim_str2.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70020-preproc.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70020-preproc.vala
index 9cc1ba1a..9cc1ba1a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70020-preproc.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70020-preproc.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70287-gh287.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70287-gh287.vala
index be39a9db..be39a9db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70287-gh287.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70287-gh287.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70300-Issue_2090.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70300-Issue_2090.vala
index 5b4e1716..5b4e1716 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70300-Issue_2090.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70300-Issue_2090.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70301-Issue_2270.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70301-Issue_2270.vala
index 2202627c..2202627c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70301-Issue_2270.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70301-Issue_2270.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70302-cast.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70302-cast.vala
index 6c5d11db..6c5d11db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70302-cast.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70302-cast.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70303-nullable.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70303-nullable.vala
index 54c24643..54c24643 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70303-nullable.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70303-nullable.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70304-identifier.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70304-identifier.vala
index 5dee8d3b..5dee8d3b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70304-identifier.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70304-identifier.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70310-mdarray_space.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70310-mdarray_space.vala
index 6fd7c360..6fd7c360 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70310-mdarray_space.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70310-mdarray_space.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70311-mdarray_space.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70311-mdarray_space.vala
index c8a51c1e..c8a51c1e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70311-mdarray_space.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70311-mdarray_space.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70312-mdarray_space.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70312-mdarray_space.vala
index cf64a5e2..cf64a5e2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/expected/vala/70312-mdarray_space.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/expected/vala/70312-mdarray_space.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/fixtest.sh b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/fixtest.sh
index 76fac4bf..76fac4bf 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/fixtest.sh
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/fixtest.sh
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/generate_p_files.sh b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/generate_p_files.sh
index 2327b7c7..2327b7c7 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/generate_p_files.sh
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/generate_p_files.sh
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/imported.test b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/imported.test
index b20f0247..b20f0247 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/imported.test
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/imported.test
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/1225.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/1225.c
index c6533cb1..c6533cb1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/1225.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/1225.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2205.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2205.c
new file mode 100644
index 00000000..7d4c1801
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2205.c
@@ -0,0 +1,6 @@
+// 2205
+#define MLX_RATE(ee_val) (ee_val & MLX_MASK)
+
+// 3559
+#define my_2_thing(stuff) &object3, &object4
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue-2278.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2278.c
index 1ecfecf5..1ecfecf5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue-2278.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2278.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_2279.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2279.c
index 88c0ae84..88c0ae84 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_2279.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2279.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_2360.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2360.c
index dd4530c7..dd4530c7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_2360.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2360.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_2411.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2411.c
index 40244488..40244488 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_2411.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2411.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_2640.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2640.c
index ba25bcbe..ba25bcbe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_2640.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2640.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_2845.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2845.h
index 9f34b1dc..9f34b1dc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_2845.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_2845.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3169.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3169.c
index bf67ca55..bf67ca55 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3169.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3169.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3192.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3192.c
index d8fde2a6..d8fde2a6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3192.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3192.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3233.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3233.c
index 5cfdff8f..5cfdff8f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3233.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3233.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3269.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3269.c
index 5b7de8e6..5b7de8e6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3269.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3269.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3272.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3272.h
index 673c5a91..673c5a91 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3272.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3272.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3274.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3274.c
index f8b9f789..f8b9f789 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3274.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3274.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3327.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3327.c
index 883c5436..883c5436 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3327.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3327.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3339.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3339.c
index 9f445c1a..9f445c1a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3339.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3339.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3342.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3342.c
index 986aab70..986aab70 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3342.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3342.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3343.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3343.c
index 3c21608b..3c21608b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3343.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3343.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3345.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3345.c
index eec63b28..eec63b28 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3345.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3345.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3351.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3351.c
index 889d731a..889d731a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3351.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3351.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3353.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3353.h
index f189ebfa..f189ebfa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3353.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3353.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3356.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3356.c
index de2dba21..de2dba21 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3356.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3356.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3362.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3362.c
index 7a8c08f3..7a8c08f3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3362.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3362.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3366.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3366.c
index 769c2f94..769c2f94 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3366.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3366.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3370.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3370.c
index 79081331..79081331 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3370.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3370.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3376.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3376.c
index 084e9c7d..084e9c7d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3376.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3376.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3377.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3377.c
index 99cb0d84..99cb0d84 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3377.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3377.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3402.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3402.c
index 569d5e3a..569d5e3a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3402.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3402.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3421.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3421.h
index b66478fb..b66478fb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3421.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3421.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3431.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3431.c
index b0d9246d..b0d9246d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3431.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3431.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3436.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3436.c
index d921d9ed..d921d9ed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3436.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3436.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3454.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3454.c
index 8be230dd..8be230dd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3454.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3454.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3457.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3457.c
index e76affa4..e76affa4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3457.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3457.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3472.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3472.c
index d180a700..d180a700 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3472.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3472.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3476.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3476.c
index 92a7b0c0..92a7b0c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3476.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3476.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3480.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3480.c
index 6a25879a..6a25879a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3480.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3480.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3493.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3493.c
index 66554d57..66554d57 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3493.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3493.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3496.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3496.h
index b0509bd5..b0509bd5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3496.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3496.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3506.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3506.c
index 30db2976..30db2976 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3506.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3506.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3516.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3516.c
index 2f591b75..2f591b75 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3516.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3516.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3518.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3518.c
index cf8d0c95..cf8d0c95 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3518.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3518.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3548.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3548.c
index 71824adc..71824adc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3548.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3548.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3556.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3556.c
index 423e07f0..423e07f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3556.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3556.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3559.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3559.c
index 96c73820..96c73820 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3559.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3559.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3561.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3561.c
index db5c5afc..db5c5afc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3561.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3561.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3565.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3565.c
index 267e25bd..267e25bd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3565.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3565.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3567.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3567.c
index e81c7672..e81c7672 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3567.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3567.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3580.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3580.c
index 2b6b7e43..2b6b7e43 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3580.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3580.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3582.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3582.c
index ebcc648b..ebcc648b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3582.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3582.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3587.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3587.h
index 3744884f..3744884f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3587.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3587.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3601.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3601.c
index a2b92fa0..a2b92fa0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3601.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3601.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3662.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3662.c
index 0435608b..0435608b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3662.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3662.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3873.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3873.c
index e7c96e83..e7c96e83 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/Issue_3873.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3873.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3985.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3985.c
new file mode 100644
index 00000000..033e5bb2
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3985.c
@@ -0,0 +1,14 @@
+int keep_symbol()
+{
+ if(
+ #ifdef HAVE_BFD_2_34
+ bfd_section_size() == 0
+ #else
+ bfd_get_section_size() == 0
+ #endif
+ )
+ {
+ return false;
+ }
+ return true;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3989.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3989.c
new file mode 100644
index 00000000..34d16b7d
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3989.c
@@ -0,0 +1 @@
+int * foo(int *);
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3992.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3992.c
new file mode 100644
index 00000000..70b3516a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_3992.c
@@ -0,0 +1,6 @@
+UUID guid_decode()
+{
+ UUID id = {0x00000000, 0x0000, 0x0000, 0x0000, id1 };
+
+ UUID id = {0x00000000, 0x0000, 0x0000, 0x0000, { id2 } };
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_4044.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_4044.c
new file mode 100644
index 00000000..a3f6d2d5
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/Issue_4044.c
@@ -0,0 +1,58 @@
+int main(void) {
+ f(1, and_eq.x);
+ f(1, and.x);
+ f(1, asm.x);
+ f(1, atomic_cancel.x);
+ f(1, atomic_commit.x);
+ f(1, atomic_noexcept.x);
+ f(1, bitand.x);
+ f(1, bitor.x);
+ f(1, catch.x);
+ f(1, char16_t.x);
+ f(1, char32_t.x);
+ f(1, char8_t.x);
+ f(1, class.x);
+ f(1, co_await.x);
+ f(1, compl.x);
+ f(1, concept.x);
+ f(1, const_cast.x);
+ f(1, consteval.x);
+ f(1, constinit.x);
+ f(1, co_return.x);
+ f(1, co_yield.x);
+ f(1, decltype.x);
+ f(1, delete.x);
+ f(1, dynamic_cast.x);
+ f(1, explicit.x);
+ f(1, export.x);
+ f(1, friend.x);
+ f(1, mutable.x);
+ f(1, namespace.x);
+ f(1, new.x);
+ f(1, noexcept.x);
+ f(1, normal.x);
+ f(1, not_eq.x);
+ f(1, not.x);
+ f(1, operator.x);
+ f(1, or_eq.x);
+ f(1, or.x);
+ f(1, private.x);
+ f(1, protected.x);
+ f(1, public.x);
+ f(1, reflexpr.x);
+ f(1, reinterpret_cast.x);
+ f(1, requires.x);
+ f(1, static_cast.x);
+ f(1, synchronized.x);
+ f(1, template.x);
+ f(1, this.x);
+ f(1, throw.x);
+ f(1, try.x);
+ f(1, typeid.x);
+ f(1, typename.x);
+ f(1, using.x);
+ f(1, virtual.x);
+ f(1, wchar_t.x);
+ f(1, xor_eq.x);
+ f(1, xor.x);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/add_long_comment.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/add_long_comment.c
index 5900de52..5900de52 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/add_long_comment.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/add_long_comment.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-equ.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-equ.c
index 374ccbfb..374ccbfb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-equ.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-equ.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-proto-vars.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-proto-vars.c
index e1dd71ff..e1dd71ff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-proto-vars.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-proto-vars.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-proto.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-proto.c
index 64dfce00..64dfce00 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-proto.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-proto.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-string.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-string.c
index f652e88f..f652e88f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-string.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-string.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-struct-init.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-struct-init.c
index 084994ff..084994ff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-struct-init.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-struct-init.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-typedef.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-typedef.c
index ae17eb4d..ae17eb4d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-typedef.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-typedef.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-var.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-var.c
index adbf8a98..adbf8a98 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align-var.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align-var.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_assign_var_defs.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_assign_var_defs.c
index 0f25a246..0f25a246 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_assign_var_defs.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_assign_var_defs.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_assigns.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_assigns.c
index e0742dd6..e0742dd6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_assigns.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_assigns.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_attr.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_attr.c
index 0f4cfee1..0f4cfee1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_attr.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_attr.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_func_proto_star_amp.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_func_proto_star_amp.h
index 17a7c5ce..17a7c5ce 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_func_proto_star_amp.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_func_proto_star_amp.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_keep_extra.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_keep_extra.c
index 2bc0f532..2bc0f532 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_keep_extra.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_keep_extra.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_sf_call_span_418.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_sf_call_span_418.c
index 421b9547..421b9547 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_sf_call_span_418.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_sf_call_span_418.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_sf_call_span_419.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_sf_call_span_419.c
index 421b9547..421b9547 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_sf_call_span_419.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_sf_call_span_419.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_sf_call_thresh_416.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_sf_call_thresh_416.c
index f4f6606e..f4f6606e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_sf_call_thresh_416.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_sf_call_thresh_416.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_sf_call_thresh_417.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_sf_call_thresh_417.c
index c3c881eb..c3c881eb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_sf_call_thresh_417.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_sf_call_thresh_417.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_stack.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_stack.c
index 0f88df06..0f88df06 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_stack.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_stack.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_trailing_do_cmt.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_trailing_do_cmt.c
index 372da441..372da441 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/align_trailing_do_cmt.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/align_trailing_do_cmt.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/asm.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/asm.c
index 1fb5015c..1fb5015c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/asm.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/asm.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/attribute.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/attribute.c
index babe229f..babe229f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/attribute.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/attribute.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/backslash-newline-lex.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/backslash-newline-lex.c
index 0f20388c..0f20388c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/backslash-newline-lex.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/backslash-newline-lex.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/beautifier-off.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/beautifier-off.c
index 033179cb..033179cb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/beautifier-off.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/beautifier-off.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bits.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bits.c
index 9a12f484..9a12f484 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bits.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bits.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bool-pos.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bool-pos.c
index d6887223..d6887223 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bool-pos.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bool-pos.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/br_cmt.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/br_cmt.c
index 4e57d2de..4e57d2de 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/br_cmt.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/br_cmt.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/brace-remove.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/brace-remove.c
index c62506e3..c62506e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/brace-remove.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/brace-remove.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/brace-remove2.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/brace-remove2.c
index e5b73723..e5b73723 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/brace-remove2.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/brace-remove2.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/brace-remove3.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/brace-remove3.c
index 9cde8bbd..9cde8bbd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/brace-remove3.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/brace-remove3.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/brace.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/brace.c
index 31f3b42b..31f3b42b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/brace.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/brace.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/braces-2.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/braces-2.c
index a34d73d8..a34d73d8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/braces-2.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/braces-2.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/braces-3.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/braces-3.c
index 1f1a2066..1f1a2066 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/braces-3.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/braces-3.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/braces-4.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/braces-4.c
index 385f4a8e..385f4a8e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/braces-4.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/braces-4.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/braces-5.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/braces-5.c
index c77cc912..c77cc912 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/braces-5.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/braces-5.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/braces.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/braces.c
index 20733afc..20733afc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/braces.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/braces.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bsnl.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bsnl.c
index b2b38b8e..b2b38b8e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bsnl.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bsnl.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_1041.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_1041.c
index 193c750b..193c750b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_1041.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_1041.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_1196.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_1196.c
index 9fdabca6..9fdabca6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_1196.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_1196.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_1702.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_1702.c
index bf74c8bd..bf74c8bd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_1702.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_1702.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_1718.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_1718.c
index eaddc974..eaddc974 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_1718.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_1718.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_2331.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_2331.c
index f30c53d3..f30c53d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_2331.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_2331.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_3156.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_3156.c
index 508a0098..508a0098 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_3156.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_3156.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_489.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_489.c
index e83d351b..e83d351b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_489.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_489.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sp_after_sparen.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_637.c
index 8a86dd25..8a86dd25 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sp_after_sparen.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_637.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_671.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_671.c
index 01a3b02b..01a3b02b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_671.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_671.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_i_222.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_i_222.c
index 4f0ded31..4f0ded31 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_i_222.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_i_222.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_i_771.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_i_771.c
index c933487d..c933487d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_i_771.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_i_771.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_i_876.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_i_876.c
index ab2a05db..ab2a05db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bug_i_876.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bug_i_876.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-1.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-1.c
index 39050c07..39050c07 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-1.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-1.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-2.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-2.c
index 42bed259..42bed259 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-2.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-2.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-3.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-3.c
index 4f85044a..4f85044a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-3.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-3.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-4.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-4.c
index e01c2c32..e01c2c32 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-4.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-4.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-5.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-5.c
index 626eb7e6..626eb7e6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-5.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-5.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-6.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-6.c
index 99ebbdda..99ebbdda 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-6.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-6.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-7.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-7.c
index a879aa17..a879aa17 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-7.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-7.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-8.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-8.c
index 8870a663..8870a663 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs-8.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs-8.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs.c
index d75a4782..d75a4782 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/bugs.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/bugs.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/case-nl_before_return.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/case-nl_before_return.c
index 67adaddd..67adaddd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/case-nl_before_return.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/case-nl_before_return.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/case.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/case.c
index ffceda0e..ffceda0e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/case.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/case.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cast_brace.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cast_brace.c
index 7ec7f67a..7ec7f67a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cast_brace.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cast_brace.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/casts.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/casts.c
index f09f5c5e..f09f5c5e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/casts.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/casts.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/clang-has_include.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/clang-has_include.h
index d153e70a..d153e70a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/clang-has_include.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/clang-has_include.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt-align.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt-align.c
index 658bac4d..658bac4d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt-align.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt-align.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt_multi.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt_multi.c
index 8e01c5fc..8e01c5fc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt_multi.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt_multi.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt_multi_utf8.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt_multi_utf8.c
index 05b01f84..05b01f84 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt_multi_utf8.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt_multi_utf8.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt_nl_end.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt_nl_end.c
index 48929d07..48929d07 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt_nl_end.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt_nl_end.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt_reflow.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt_reflow.c
index 6c40e11b..6c40e11b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt_reflow.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt_reflow.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt_right_align.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt_right_align.c
index b707f0bb..b707f0bb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cmt_right_align.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cmt_right_align.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/code_width.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/code_width.c
index 2262afe3..2262afe3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/code_width.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/code_width.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/colon-asm.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/colon-asm.c
index 5125af19..5125af19 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/colon-asm.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/colon-asm.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/comment-convert.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment-convert.c
index 4282ab0b..4282ab0b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/comment-convert.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment-convert.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/comment-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment-indent.c
index d5295d6e..d5295d6e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/comment-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_define.c
new file mode 100644
index 00000000..9c2e7c3e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_define.c
@@ -0,0 +1,24 @@
+#define HDROFF_TYPE(b) sizeof(ElfPreHeader) /* ElfXX_Half e_type; */
+
+typedef struct _libr_file
+{
+ unsigned int version;
+} libr_file;
+
+#define HDROFF_TYPE(b) sizeof( /* ElfXX_Half e_type; */ \
+ ElfPreHeader /* ElfXX_Half e_type; */ \
+ ) /* Repeat ElfXX_Half e_type; */
+
+/* ElfXX_Half e_shstrndx; */
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS /* TEST */
+
+/* Do something */
+void foo()
+{
+ /* comment */
+ int i = 0;
+}
+
+#endif
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_endif.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_endif.c
new file mode 100644
index 00000000..0ceb5428
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_endif.c
@@ -0,0 +1,24 @@
+#ifndef DOXYGEN_SHOULD_SKIP_THIS /* TEST1 */
+
+void foo()
+{
+ int i = 0;
+}
+
+#elif defined(sgi) && sgi /* TEST2 */
+
+void bar()
+{
+ int j = 0;
+}
+
+#else /* TEST3 */
+
+void foobar()
+{
+ int j = 0;
+}
+
+#endif /* END TEST */
+
+void main();
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_javadoc_single.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_javadoc_single.c
new file mode 100644
index 00000000..cf236408
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_javadoc_single.c
@@ -0,0 +1,21 @@
+/* Normal comment */
+
+/** Javadoc comment */
+
+/* Multiline
+ * Normal
+ * comment */
+
+/* Another
+ Multiline
+ Normal
+ comment
+*/
+
+/**
+ * Javadoc
+ * Multiline
+ * Normal
+ * comment
+*/
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_long_lines.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_long_lines.c
new file mode 100644
index 00000000..3aab1d86
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_long_lines.c
@@ -0,0 +1,12 @@
+char *libr_extract_resources(libr_file *handle)
+{
+ /* If this library cannot dynamically load resources then pull out all the resources to a temporary directory */
+ if(temp_folder != NULL)
+ temp_folder = strdup(temp_folder);
+
+ // If this library cannot dynamically load resources then pull out all the resources to a temporary directory
+ if(temp_folder2 != NULL)
+ temp_folder2 = strdup(temp_folder);
+
+ /* If this library /*cannot dynamically load resources then pull out all the resources to a temporary directory. Repeat to make the line even longer. If this library cannot dynamically load resources then pull out all the resources to a temporary directory.*/
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_trailing_c_multiline.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_trailing_c_multiline.c
new file mode 100644
index 00000000..ff59f5ac
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/comment_conversion_trailing_c_multiline.c
@@ -0,0 +1,25 @@
+typedef enum {
+ LIBR_ERROR_EXPANDSECTION = -20, /** Failed to set output file architecture to input file architecture */
+ LIBR_ERROR_OVERWRITE = -21 /** Section already exists, over-write not specified */
+} libr_status;
+
+typedef enum
+{
+ LIBR_ERROR_EXPANDSECTION = -20, /* Failed to set output file architecture to input file
+ architecture */
+ LIBR_ERROR_OVERWRITE = -21 /* Section already exists, over-write not specified */
+} libr_status;
+
+typedef enum
+{
+ LIBR_ERROR_EXPANDSECTION = -20, /** Failed to set output file architecture to input file
+ architecture */
+ LIBR_ERROR_OVERWRITE = -21 /* Section already exists, over-write not specified */
+} libr_status;
+
+typedef enum
+{
+ LIBR_ERROR_EXPANDSECTION = -20, // Failed to set output file architecture to input file
+ // architecture
+ LIBR_ERROR_OVERWRITE = -21 // Section already exists, over-write not specified
+} libr_status;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cond.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cond.c
index aec2f0a3..aec2f0a3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/cond.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/cond.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/custom_types_ssl.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/custom_types_ssl.c
index 0454f81d..0454f81d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/custom_types_ssl.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/custom_types_ssl.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/define-if-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/define-if-indent.c
index 1ef47273..1ef47273 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/define-if-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/define-if-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/deref.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/deref.c
index 100464fb..100464fb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/deref.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/deref.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/directfb.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/directfb.h
index 3531fa21..3531fa21 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/directfb.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/directfb.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/dos.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/dos.c
index 108c3b1c..108c3b1c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/dos.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/dos.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/double-sparen.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/double-sparen.c
index e76c3ea1..e76c3ea1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/double-sparen.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/double-sparen.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/doxy-comment.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/doxy-comment.c
index ef0414ac..ef0414ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/doxy-comment.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/doxy-comment.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/else-if.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/else-if.c
index 06cc37f2..06cc37f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/else-if.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/else-if.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/empty-braces.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/empty-braces.c
index f1c1ec78..f1c1ec78 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/empty-braces.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/empty-braces.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/empty-for.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/empty-for.c
index d9fb686a..d9fb686a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/empty-for.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/empty-for.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/endif.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/endif.c
index fd621299..fd621299 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/endif.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/endif.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/enum-struct-init.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/enum-struct-init.c
index 6660e4a4..6660e4a4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/enum-struct-init.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/enum-struct-init.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/enum_comma_ifdef.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/enum_comma_ifdef.c
index aa80cf48..aa80cf48 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/enum_comma_ifdef.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/enum_comma_ifdef.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/enum_gallery.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/enum_gallery.c
index 2be93194..2be93194 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/enum_gallery.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/enum_gallery.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/extern.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/extern.c
index 3bcfcbe5..3bcfcbe5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/extern.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/extern.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/fcn_indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/fcn_indent.c
index ff9f812b..ff9f812b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/fcn_indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/fcn_indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/fcn_indent_func_def_col1.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/fcn_indent_func_def_col1.c
index 235731c2..235731c2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/fcn_indent_func_def_col1.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/fcn_indent_func_def_col1.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/fcn_type.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/fcn_type.c
index d49d381d..d49d381d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/fcn_type.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/fcn_type.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/for-space.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/for-space.c
index 1064d493..1064d493 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/for-space.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/for-space.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/forever.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/forever.c
index 94dc8ce1..94dc8ce1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/forever.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/forever.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/freebsd.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/freebsd.c
index 37a17cb5..37a17cb5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/freebsd.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/freebsd.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/func_call_user.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/func_call_user.c
index 275d8c5e..275d8c5e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/func_call_user.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/func_call_user.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/func_call_user2.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/func_call_user2.c
index 38ecb232..38ecb232 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/func_call_user2.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/func_call_user2.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/func_var_multi_paren.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/func_var_multi_paren.c
index aefbde49..aefbde49 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/func_var_multi_paren.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/func_var_multi_paren.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/func_wrap.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/func_wrap.c
index 7589d03b..7589d03b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/func_wrap.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/func_wrap.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/funcfunc.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/funcfunc.c
index ee717abc..ee717abc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/funcfunc.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/funcfunc.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/function-def.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/function-def.c
index 778d121f..778d121f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/function-def.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/function-def.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/function_prototypes_alignment.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/function_prototypes_alignment.c
new file mode 100644
index 00000000..4a73bf30
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/function_prototypes_alignment.c
@@ -0,0 +1,15 @@
+libr_intstatus set_data1(libr_file *file_handle, libr_section *scn, libr_data *data, off_t offset, char *buffer, size_t size);
+void write_output1(libr_file *file_handle);
+libr_intstatus open_handles1(libr_file *file_handle, char *filename, libr_access_t access);
+
+libr_intstatus set_data2(libr_file *file_handle, libr_section *scn, libr_data *data, off_t offset, char *buffer, size_t size);
+libr_intstatus open_handles2(libr_file *file_handle, char *filename, libr_access_t access);
+void write_output2(libr_file *file_handle);
+
+INTERNAL_FN libr_intstatus set_data1(libr_file *file_handle, libr_section *scn, libr_data *data, off_t offset, char *buffer, size_t size);
+INTERNAL_FN void write_output1(libr_file *file_handle);
+INTERNAL_FN libr_intstatus open_handles1(libr_file *file_handle, char *filename, libr_access_t access);
+
+INTERNAL_FN libr_intstatus set_data2(libr_file *file_handle, libr_section *scn, libr_data *data, off_t offset, char *buffer, size_t size);
+INTERNAL_FN libr_intstatus open_handles2(libr_file *file_handle, char *filename, libr_access_t access);
+INTERNAL_FN void write_output2(libr_file *file_handle);
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/gh399.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/gh399.c
index 00f868a3..00f868a3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/gh399.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/gh399.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/global-vars.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/global-vars.c
index 9576341b..9576341b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/global-vars.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/global-vars.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/hello.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/hello.c
index 5849783c..5849783c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/hello.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/hello.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/i1270.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/i1270.c
index 4831a47a..4831a47a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/i1270.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/i1270.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/i1413.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/i1413.c
index 4287ca86..4287ca86 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/i1413.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/i1413.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/i1564.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/i1564.c
index c906ef9b..c906ef9b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/i1564.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/i1564.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/i2c-core.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/i2c-core.c
index 29bdb584..29bdb584 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/i2c-core.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/i2c-core.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/if_chain.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/if_chain.c
index 948492dd..948492dd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/if_chain.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/if_chain.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/ifdef-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/ifdef-indent.c
index 5043c01f..5043c01f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/ifdef-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/ifdef-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/ifdef-nest.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/ifdef-nest.c
index 68baf1fc..68baf1fc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/ifdef-nest.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/ifdef-nest.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/incdec_postfix_multiply.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/incdec_postfix_multiply.c
index 51c2b3a3..51c2b3a3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/incdec_postfix_multiply.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/incdec_postfix_multiply.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/include-guard.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/include-guard.h
index 03625573..03625573 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/include-guard.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/include-guard.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/include_define.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/include_define.h
index 13380cac..13380cac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/include_define.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/include_define.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent-assign.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent-assign.c
index 58ed9c52..58ed9c52 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent-assign.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent-assign.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent-macro-brace.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent-macro-brace.c
index 8c3f9941..8c3f9941 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent-macro-brace.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent-macro-brace.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent-off-after-assign.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent-off-after-assign.c
index d01f58c0..d01f58c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent-off-after-assign.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent-off-after-assign.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent-vbrace.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent-vbrace.c
index 8b48e235..8b48e235 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent-vbrace.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent-vbrace.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent_first_bool_expr.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent_first_bool_expr.c
index ec68ac3a..ec68ac3a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent_first_bool_expr.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent_first_bool_expr.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent_ternary-1.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent_ternary-1.c
index b76e375b..b76e375b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent_ternary-1.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent_ternary-1.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent_ternary-2.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent_ternary-2.c
index 20f1df64..20f1df64 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/indent_ternary-2.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/indent_ternary-2.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/infinite-loops.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/infinite-loops.c
index 71d52db7..71d52db7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/infinite-loops.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/infinite-loops.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/int-types.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/int-types.c
index 72073e28..72073e28 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/int-types.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/int-types.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/kw_subst.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/kw_subst.c
index 5d37f823..5d37f823 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/kw_subst.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/kw_subst.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/lvalue.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/lvalue.c
index 2f2cc17d..2f2cc17d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/lvalue.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/lvalue.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/mac.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/mac.c
index ce4e7937..ce4e7937 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/mac.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/mac.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/macro-returns.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/macro-returns.c
index 0febb263..0febb263 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/macro-returns.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/macro-returns.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/minus-minus.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/minus-minus.c
index 4eb69237..4eb69237 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/minus-minus.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/minus-minus.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/misc.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/misc.c
index cd948007..cd948007 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/misc.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/misc.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/mod-paren.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/mod-paren.c
index 14bb9836..14bb9836 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/mod-paren.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/mod-paren.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/mod_case_brace.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/mod_case_brace.c
index 4bd9abde..4bd9abde 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/mod_case_brace.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/mod_case_brace.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/mod_move_case_return.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/mod_move_case_return.c
index 38dd6a62..38dd6a62 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/mod_move_case_return.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/mod_move_case_return.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/mod_move_case_return_bad.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/mod_move_case_return_bad.c
index 95d3fb09..95d3fb09 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/mod_move_case_return_bad.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/mod_move_case_return_bad.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/multi.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/multi.h
index 33acea34..33acea34 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/multi.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/multi.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/my_infile.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/my_infile.c
index 8b8cd113..8b8cd113 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/my_infile.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/my_infile.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/negative_value.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/negative_value.c
index 6399fbef..6399fbef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/negative_value.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/negative_value.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/newline_after_endif.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/newline_after_endif.c
index 2a0cbe62..2a0cbe62 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/newline_after_endif.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/newline_after_endif.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl-comment.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl-comment.c
index 70c49200..70c49200 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl-comment.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl-comment.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl-cont.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl-cont.c
index 9f87950f..9f87950f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl-cont.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl-cont.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl-cont2.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl-cont2.c
index b3f079e3..b3f079e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl-cont2.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl-cont2.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl-semicolon.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl-semicolon.c
index 8e0f59d3..8e0f59d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl-semicolon.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl-semicolon.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl-ver-def.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl-ver-def.c
index 9684ed27..9684ed27 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl-ver-def.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl-ver-def.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_assign.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_assign.c
index b2495c13..b2495c13 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_assign.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_assign.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_before_ignore_after_case.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_before_ignore_after_case.c
index 51866fe4..51866fe4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_before_ignore_after_case.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_before_ignore_after_case.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_before_return.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_before_return.c
index da5ed3eb..da5ed3eb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_before_return.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_before_return.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_create_one_liner.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_create_one_liner.c
index 16887eca..16887eca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_create_one_liner.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_create_one_liner.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_ds_struct_enum.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_ds_struct_enum.c
index d19964ae..d19964ae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_ds_struct_enum.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_ds_struct_enum.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_endif.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_endif.c
index d738d74a..d738d74a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_endif.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_endif.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_func_call.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_func_call.c
index 7af891a1..7af891a1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_func_call.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_func_call.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_proto_endif.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_proto_endif.c
index f50766b8..f50766b8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_proto_endif.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_proto_endif.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_return_expr.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_return_expr.c
index e917e399..e917e399 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/nl_return_expr.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/nl_return_expr.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/one-liner-define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/one-liner-define.c
index fdb02e31..fdb02e31 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/one-liner-define.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/one-liner-define.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/one-liner-init.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/one-liner-init.c
index 91d92d55..91d92d55 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/one-liner-init.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/one-liner-init.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/one_liners.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/one_liners.c
index 1f6e0d3e..1f6e0d3e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/one_liners.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/one_liners.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/paren-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/paren-indent.c
index df5b1c14..df5b1c14 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/paren-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/paren-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/paren_indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/paren_indent.c
index 4b0ff447..4b0ff447 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/paren_indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/paren_indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/parenthesized_indirect_call.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/parenthesized_indirect_call.c
index 3d5a6819..3d5a6819 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/parenthesized_indirect_call.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/parenthesized_indirect_call.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pascal_ptr.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pascal_ptr.c
index 5b0116ba..5b0116ba 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pascal_ptr.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pascal_ptr.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pos_compare.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pos_compare.c
index b0942de0..b0942de0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pos_compare.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pos_compare.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pos_conditional.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pos_conditional.c
index 100545e5..100545e5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pos_conditional.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pos_conditional.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp-before-func-def.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp-before-func-def.c
index 948ce135..948ce135 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp-before-func-def.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp-before-func-def.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp-if-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp-if-indent.c
index cd9d6c4d..cd9d6c4d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp-if-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp-if-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp-nest.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp-nest.c
index b602471b..b602471b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp-nest.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp-nest.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp-space.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp-space.c
index 67cf3e55..67cf3e55 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp-space.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp-space.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_concat_asn1.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_concat_asn1.h
index 9874cf04..9874cf04 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_concat_asn1.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_concat_asn1.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_indent_with_tabs.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_indent_with_tabs.c
index d32c568d..d32c568d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_indent_with_tabs.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_indent_with_tabs.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_multiline_define.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_multiline_define.c
new file mode 100644
index 00000000..8e44b1c4
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_multiline_define.c
@@ -0,0 +1,71 @@
+#define gettext(Msgid) \
+ QWERTY0 Msgid;
+#define farright(Msgid) \
+ \
+ QWERTY0 Msgid;
+#ifdef TEST
+#define gettext1(Msgid) \
+ if (true) \
+ {\
+ QWERTY1 Msgid; \
+}\
+while(true) \
+{ \
+ g = g + 1; \
+}
+ int i = 3;
+
+#define x \
+ (\
+ x\
+ )\
+ {\
+ QWERTY2 Msgid; \
+}
+void f()
+{
+int i=2;
+}
+#endif
+
+#pragma multi \
+ line \
+ pragma
+
+ #define setint(x) x = x + 1
+#define K 2
+ #define gettext2(Msgid) \
+ if (true) \
+ { \
+ QWERTY1 Msgid; \
+do \
+{ \
+g = g + 1; \
+} \
+while(true); \
+}
+
+#warning multi \
+ line \
+ warning
+
+#ifdef TEST1
+ #ifdef TEST2
+#ifdef TEST3
+ #ifdef TEST4
+#define gettext1(Msgid) \
+ if (true) \
+ {\
+ QWERTY1 Msgid; \
+ do \
+ { \
+ if (false){ \
+g = g + 1; \
+ }\
+ } \
+while(true); \
+}
+#endif
+ #endif
+ #endif
+ #endif
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_ret.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_ret.c
index c35e4294..c35e4294 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_ret.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_ret.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_space_before_after.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_space_before_after.c
index 3f801dc7..3f801dc7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pp_space_before_after.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pp_space_before_after.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pragma.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pragma.c
index a0dcd975..a0dcd975 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pragma.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pragma.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pragma_asm.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pragma_asm.c
index a7834613..a7834613 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/pragma_asm.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/pragma_asm.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/preproc-if.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/preproc-if.c
index 71fbf792..71fbf792 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/preproc-if.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/preproc-if.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/return-compound-literal.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/return-compound-literal.c
index 8547c3a7..8547c3a7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/return-compound-literal.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/return-compound-literal.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/return-multi.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/return-multi.c
index 846ca21c..846ca21c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/return-multi.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/return-multi.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/semicolons.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/semicolons.c
index d7e2379a..d7e2379a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/semicolons.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/semicolons.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sf588.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sf588.c
index d1c5f1cc..d1c5f1cc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sf588.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sf588.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sf594.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sf594.c
index cd08cce6..cd08cce6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sf594.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sf594.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/single_line_comment_after.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/single_line_comment_after.c
index 527b3e80..527b3e80 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/single_line_comment_after.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/single_line_comment_after.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sort_include.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sort_include.c
index 0f1956d2..0f1956d2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sort_include.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sort_include.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sp_after_sparen.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sp_after_sparen.c
new file mode 100644
index 00000000..7f31bdf6
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sp_after_sparen.c
@@ -0,0 +1,9 @@
+if (true) x();
+
+while (true)x();
+
+while(true) x();
+
+for (;;) {
+ x()
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sp_cmt_cpp_start.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sp_cmt_cpp_start.c
index b9b07287..b9b07287 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sp_cmt_cpp_start.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sp_cmt_cpp_start.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sp_embed_comment.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sp_embed_comment.c
index 88a54dff..88a54dff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sp_embed_comment.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sp_embed_comment.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sp_func_call_user_inside_fparen.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sp_func_call_user_inside_fparen.c
index ba921b9f..ba921b9f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sp_func_call_user_inside_fparen.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sp_func_call_user_inside_fparen.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sparen-indent.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sparen-indent.c
index fe770681..fe770681 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/sparen-indent.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/sparen-indent.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/star-style.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/star-style.c
index aab9ccec..aab9ccec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/star-style.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/star-style.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/string_prefixes.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/string_prefixes.c
index e901c9ac..e901c9ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/string_prefixes.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/string_prefixes.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/string_utf8.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/string_utf8.c
index a473e1bf..a473e1bf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/string_utf8.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/string_utf8.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/struct-brace.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/struct-brace.c
index 7d08b4ca..7d08b4ca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/struct-brace.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/struct-brace.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/switch-case.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/switch-case.c
index add9fcfa..add9fcfa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/switch-case.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/switch-case.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/switch.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/switch.c
index 5b760363..5b760363 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/switch.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/switch.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/t3.in.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/t3.in.c
index e352f736..e352f736 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/t3.in.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/t3.in.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/type-cast.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/type-cast.c
index 5760b466..5760b466 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/type-cast.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/type-cast.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/type_wrap.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/type_wrap.c
index 13b74455..13b74455 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/type_wrap.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/type_wrap.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/utf8-identifiers.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/utf8-identifiers.c
index e3281aac..e3281aac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/utf8-identifiers.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/utf8-identifiers.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/vardefcol.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/vardefcol.c
index bdb40e8f..bdb40e8f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/vardefcol.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/vardefcol.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/various_colons.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/various_colons.c
index 516a5a72..516a5a72 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/various_colons.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/various_colons.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/vb-do.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/vb-do.c
index 1cefd1df..1cefd1df 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/vb-do.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/vb-do.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/vb-pp.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/vb-pp.c
index 5ea209c5..5ea209c5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/vb-pp.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/vb-pp.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/vb-while.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/vb-while.c
index 22291748..22291748 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/vb-while.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/vb-while.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/vbrace_one_liner.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/vbrace_one_liner.c
index 5db805a7..5db805a7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/vbrace_one_liner.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/vbrace_one_liner.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/whole_file_ifdef.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/whole_file_ifdef.c
index bb16e116..bb16e116 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/whole_file_ifdef.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/whole_file_ifdef.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/xml.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/xml.c
index fe7afdf4..fe7afdf4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/c/xml.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/c/xml.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/2138.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/2138.cpp
index e0379b43..e0379b43 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/2138.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/2138.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/2185.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/2185.cpp
index 6f874926..6f874926 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/2185.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/2185.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/2203.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/2203.cpp
index 4a2c05fa..4a2c05fa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/2203.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/2203.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/621_this-spacing.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/621_this-spacing.cpp
index bd28a5e8..bd28a5e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/621_this-spacing.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/621_this-spacing.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/622_ifdef-indentation.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/622_ifdef-indentation.cpp
index a6aface7..a6aface7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/622_ifdef-indentation.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/622_ifdef-indentation.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/623_caret-spacing.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/623_caret-spacing.cpp
index ad1ed6f7..ad1ed6f7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/623_caret-spacing.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/623_caret-spacing.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/633_decl-in-func-typedef.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/633_decl-in-func-typedef.cpp
index 4e18c597..4e18c597 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/633_decl-in-func-typedef.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/633_decl-in-func-typedef.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/634_extern-c-no-block.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/634_extern-c-no-block.cpp
index bb6b14fb..bb6b14fb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/634_extern-c-no-block.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/634_extern-c-no-block.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/DB.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/DB.cpp
index 1b8f4bc8..1b8f4bc8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/DB.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/DB.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/DefaultAndDelete.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/DefaultAndDelete.cpp
index 3c4f3b9e..3c4f3b9e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/DefaultAndDelete.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/DefaultAndDelete.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Discussion_3987.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Discussion_3987.cpp
new file mode 100644
index 00000000..e4d0dad9
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Discussion_3987.cpp
@@ -0,0 +1,5 @@
+static void append_tag_name(UncText &txt, Chunk *pc)
+{
+ LOG_FUNC_ENTRY();
+ Chunk *tmp = pc->GetPrevNcNnl();
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/DoxygenComments.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/DoxygenComments.cpp
index dfa5a906..dfa5a906 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/DoxygenComments.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/DoxygenComments.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Example.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Example.h
index deede79a..deede79a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Example.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Example.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/I1112-1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/I1112-1.cpp
index 365df31f..365df31f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/I1112-1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/I1112-1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/I1112-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/I1112-2.cpp
index c3765ce4..c3765ce4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/I1112-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/I1112-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/I1112-3.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/I1112-3.cpp
index 6c48cb63..6c48cb63 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/I1112-3.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/I1112-3.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/I2102.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/I2102.cpp
index d8cf883a..d8cf883a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/I2102.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/I2102.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/I2103.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/I2103.cpp
index c35fbe56..c35fbe56 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/I2103.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/I2103.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1052.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1052.cpp
index 19461b71..19461b71 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1052.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1052.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1130.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1130.cpp
new file mode 100644
index 00000000..201ed38c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1130.cpp
@@ -0,0 +1,39 @@
+void ABC()
+{
+bool bb = true;
+bool ccc = true;
+char x;
+// simple: E1 ? E2 : E3
+x =
+ bb ?
+ 'T'
+ : 'F';
+// simple_R: E1 ? E2 : E1r ? E2r : E3r
+x =
+ bb ?
+ 'T'
+ : ccc ?
+ 'r'
+ : 'F';
+ simple_L: E1 ? E1l ? E2l : E3l : E3
+x =
+ bb ?
+ (ccc) ?
+ 't'
+ : 'l'
+ : 'F';
+// CDanU E1 ? E1l ? E2ll : E1ll ? E3ll : E3l : E3
+x =
+ (bb) ?
+ (is_newline_tmp) ? 'n'
+ : (is_comment_tmp) ? 'c'
+ : 'o'
+ : '-';
+
+
+//CDanU E1 ? E1l ? E2ll : E1ll ? E3ll : E3l : E3
+// x = (y) ? _is_newline(tmp) ? 'n' : _is_comment(tmp) ? 'c' : 'o' : '-';
+// |E1______________ c E2_ C E3_|
+// |E1______________ b E2_ B E3___________________________|
+// |E1_ a E2_____________________________________________________ A E3|
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1167.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1167.cpp
index 6a9042c2..6a9042c2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1167.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1167.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1184.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1184.cpp
index 7c69e7fb..7c69e7fb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1184.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1184.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1460.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1460.h
index 63787999..63787999 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1460.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1460.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1511.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1511.cpp
index 2583c0e3..2583c0e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1511.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1511.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1692.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1692.cpp
index 4a2c97b5..4a2c97b5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1692.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1692.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1703.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1703.cpp
index bca40664..bca40664 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1703.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1703.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1704.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1704.cpp
index 90cb2049..90cb2049 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1704.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1704.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1733.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1733.cpp
index 10be5586..10be5586 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1733.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1733.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1734.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1734.cpp
index 31d08c29..31d08c29 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1734.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1734.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1737.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1737.cpp
index fd8b1384..fd8b1384 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1737.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1737.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1753.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1753.cpp
index bf5530c3..bf5530c3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1753.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1753.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1813-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1813-2.cpp
index 9c02605a..9c02605a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1813-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1813-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1813-3.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1813-3.cpp
index 93e0799c..93e0799c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1813-3.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1813-3.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1813.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1813.cpp
index 0c07555d..0c07555d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1813.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1813.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1923.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1923.cpp
index e5b3ceeb..e5b3ceeb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1923.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1923.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1966.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1966.cpp
index 80b7ddc7..80b7ddc7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_1966.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_1966.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2020.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2020.cpp
index 94d0aa28..94d0aa28 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2020.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2020.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2045.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2045.cpp
index 627eba3f..627eba3f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2045.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2045.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2085.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2085.cpp
index 581f4db4..581f4db4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2085.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2085.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2091.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2091.cpp
index 6e32d683..6e32d683 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2091.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2091.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2099.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2099.cpp
index 4726f44b..4726f44b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2099.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2099.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2101.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2101.cpp
index 3e07c686..3e07c686 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2101.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2101.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2138.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2138.cpp
index ad53fa57..ad53fa57 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2138.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2138.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2149.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2149.cpp
index 88fb2249..88fb2249 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2149.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2149.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2150.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2150.cpp
index 1e4d6bf5..1e4d6bf5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2150.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2150.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2151.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2151.cpp
index dce02df3..dce02df3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2151.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2151.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2163.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2163.cpp
index 543b9827..543b9827 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2163.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2163.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2166.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2166.cpp
index d9ac55c7..d9ac55c7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2166.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2166.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2170.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2170.cpp
index beeffc7e..beeffc7e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2170.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2170.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2186.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2186.cpp
index c9cbacda..c9cbacda 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2186.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2186.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2195.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2195.cpp
index 3573b20d..3573b20d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2195.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2195.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2219.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2219.cpp
index cb6e24bf..cb6e24bf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2219.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2219.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2224.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2224.cpp
index 65382eb9..65382eb9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2224.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2224.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2229.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2229.cpp
index 9f575dc1..9f575dc1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2229.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2229.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2232.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2232.cpp
index 7632ed27..7632ed27 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2232.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2232.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2236.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2236.cpp
index 5dbc4fbe..5dbc4fbe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2236.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2236.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2250.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2250.cpp
index 9268c2e3..9268c2e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2250.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2250.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2281.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2281.cpp
index 44b9e75f..44b9e75f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2281.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2281.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2302.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2302.cpp
index 4763c574..4763c574 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2302.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2302.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2305.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2305.cpp
index 1b35ac11..1b35ac11 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2305.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2305.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2319.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2319.cpp
index 8c0ae3e9..8c0ae3e9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2319.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2319.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2332.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2332.cpp
index 0bc9cf8f..0bc9cf8f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2332.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2332.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2343.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2343.cpp
index 837b0506..837b0506 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2343.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2343.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2345-3.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2345-3.cpp
index 787ce29b..787ce29b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2345-3.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2345-3.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2345-4.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2345-4.cpp
index 9478d63e..9478d63e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2345-4.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2345-4.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2368.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2368.cpp
index 08d0556b..08d0556b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2368.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2368.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2383.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2383.cpp
index 356fd9af..356fd9af 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2383.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2383.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2386.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2386.cpp
index ac0b1dd4..ac0b1dd4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2386.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2386.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2387.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2387.cpp
index af00e16e..af00e16e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2387.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2387.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2428.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2428.cpp
index c919d5a5..c919d5a5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2428.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2428.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2437.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2437.cpp
index 2a64bd8f..2a64bd8f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2437.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2437.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2440.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2440.cpp
index c52c30da..c52c30da 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2440.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2440.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2440_nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2440_nl.cpp
index c52c30da..c52c30da 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2440_nl.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2440_nl.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2478.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2478.cpp
index fbcfec1f..fbcfec1f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2478.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2478.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2561.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2561.cpp
index 15232fc4..15232fc4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2561.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2561.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2565.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2565.cpp
index 721d4d78..721d4d78 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2565.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2565.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2570.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2570.cpp
index 44373e77..44373e77 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2570.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2570.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2574.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2574.cpp
index fc79cd0d..fc79cd0d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2574.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2574.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2582.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2582.cpp
index adf9bfe9..adf9bfe9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2582.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2582.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2591.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2591.cpp
index 01ed232e..01ed232e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2591.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2591.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2594.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2594.cpp
index 798a719a..798a719a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2594.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2594.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2596.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2596.cpp
index d2517e8b..d2517e8b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2596.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2596.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2604.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2604.cpp
index e73c67a8..e73c67a8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2604.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2604.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2668.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2668.cpp
index 1e2f5d02..1e2f5d02 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2668.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2668.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2672-a.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2672-a.cpp
index d29d2c47..d29d2c47 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2672-a.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2672-a.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2672-b.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2672-b.cpp
index f484d4ff..f484d4ff 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2672-b.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2672-b.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2688.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2688.cpp
index 0b394620..0b394620 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2688.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2688.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2689.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2689.cpp
index ef3b5a4b..ef3b5a4b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2689.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2689.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2692.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2692.cpp
index 4173ad5d..4173ad5d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2692.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2692.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2703.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2703.cpp
index ec4554e9..ec4554e9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2703.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2703.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2726.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2726.cpp
index 7b76eb43..7b76eb43 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2726.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2726.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2734.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2734.cpp
index 7b85c0ec..7b85c0ec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2734.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2734.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2735.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2735.cpp
index f83e3536..f83e3536 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2735.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2735.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2742.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2742.cpp
index 9d76fe44..9d76fe44 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2742.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2742.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2752.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2752.cpp
index 237c8ce1..237c8ce1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2752.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2752.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2757.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2757.cpp
index 3c84969b..3c84969b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2757.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2757.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2758.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2758.cpp
index 1ac9a86e..1ac9a86e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2758.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2758.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2759.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2759.cpp
index cbe9c4a5..cbe9c4a5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2759.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2759.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2771.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2771.cpp
index ab7c285f..ab7c285f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2771.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2771.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2794.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2794.cpp
index 03f2ae4c..03f2ae4c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2794.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2794.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2795.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2795.cpp
index 6cb7e112..6cb7e112 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2795.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2795.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2823.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2823.cpp
index eb0228c9..eb0228c9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2823.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2823.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2831.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2831.cpp
index f2dc1717..f2dc1717 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2831.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2831.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2836.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2836.cpp
index 44272d56..44272d56 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2836.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2836.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2873.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2873.cpp
index af3020d3..af3020d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2873.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2873.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2879.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2879.cpp
index 294c5e85..294c5e85 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2879.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2879.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2886.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2886.cpp
index 0474c710..0474c710 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2886.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2886.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2890.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2890.cpp
index cea47724..cea47724 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2890.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2890.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2902.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2902.cpp
index ae10d5a9..ae10d5a9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2902.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2902.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2907.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2907.cpp
index 9d42a72d..9d42a72d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2907.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2907.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2910.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2910.cpp
index 82c2bec9..82c2bec9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2910.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2910.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2914.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2914.cpp
index c2cd8b59..c2cd8b59 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2914.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2914.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2921.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2921.cpp
index 43e19e96..43e19e96 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2921.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2921.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2930.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2930.cpp
index 9b130982..9b130982 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2930.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2930.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2942.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2942.cpp
index e5bc781f..e5bc781f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2942.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2942.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2949.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2949.cpp
index d37d7ac3..d37d7ac3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2949.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2949.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2957.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2957.cpp
index abb52b72..abb52b72 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2957.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2957.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2971.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2971.cpp
index 52e7a253..52e7a253 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_2971.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_2971.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3010.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3010.cpp
index b546e7be..b546e7be 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3010.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3010.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3018.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3018.cpp
index ddbb473e..ddbb473e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3018.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3018.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3025.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3025.cpp
index 9e64526e..9e64526e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3025.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3025.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3034.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3034.cpp
index b91f431d..b91f431d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3034.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3034.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3040.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3040.cpp
index fe9aed25..fe9aed25 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3040.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3040.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3044.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3044.cpp
index 739b1305..739b1305 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3044.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3044.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3048.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3048.cpp
index 678d6ce4..678d6ce4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3048.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3048.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3052.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3052.cpp
index cb468be3..cb468be3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3052.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3052.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3054-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3054-2.cpp
index 77d0d337..77d0d337 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3054-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3054-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3054.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3054.cpp
index 2d8b38d0..2d8b38d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3054.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3054.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3055-a.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3055-a.cpp
index 85c9b7e8..85c9b7e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3055-a.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3055-a.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3055.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3055.cpp
index 4d66bbf3..4d66bbf3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3055.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3055.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3058.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3058.cpp
index f94e88e7..f94e88e7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3058.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3058.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3061_0nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3061_0nl.cpp
index 2a76b5a3..2a76b5a3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3061_0nl.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3061_0nl.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3061_1nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3061_1nl.cpp
index fd369e24..fd369e24 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3061_1nl.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3061_1nl.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3061_2nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3061_2nl.cpp
index 25906e08..25906e08 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3061_2nl.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3061_2nl.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3080.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3080.cpp
index 75c6072b..75c6072b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3080.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3080.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3097.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3097.cpp
index 3959e85a..3959e85a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3097.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3097.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3113.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3113.cpp
index 63090f4a..63090f4a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3113.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3113.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3164.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3164.cpp
index 79fd6508..79fd6508 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3164.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3164.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3176.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3176.cpp
index 2384027d..2384027d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3176.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3176.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3197.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3197.h
index f1ba44b5..f1ba44b5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3197.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3197.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3198.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3198.cpp
index 8dd234b7..8dd234b7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3198.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3198.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3203.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3203.cpp
index 47b37eee..47b37eee 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3203.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3203.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3205.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3205.cpp
index 99767289..99767289 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3205.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3205.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3220.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3220.cpp
new file mode 100644
index 00000000..ba42b013
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3220.cpp
@@ -0,0 +1,6 @@
+int * b;
+auto Func2(Model * model) -> Color * * const;
+auto Func2(Model * model) -> Color * * const {
+ return nullptr;
+}
+int * Funcf(Model * model, int * *);
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3236.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3236.cpp
new file mode 100644
index 00000000..ec79686e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3236.cpp
@@ -0,0 +1,20 @@
+/* multi boolean */
+if (va1 < 0 || va2 > 0)
+{
+}
+
+
+/* single condition */
+if (auto val = getValue(); condition(val))
+{
+}
+
+/* multi boolean expression with existing parentheses */
+if (auto val = getValue(); (val < 0) || (val > 0))
+{
+}
+
+/* multi boolean expression without existing parentheses */
+if (auto val = getValue(); val < 0 || val > 0)
+{
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3237.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3237.cpp
index 17e84d9c..17e84d9c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3237.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3237.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3252.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3252.cpp
index b435f4e2..b435f4e2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3252.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3252.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3283.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3283.cpp
index 9357b3b3..9357b3b3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3283.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3283.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3284.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3284.cpp
index cea9091e..cea9091e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3284.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3284.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3294.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3294.cpp
index e1bf0e87..e1bf0e87 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3294.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3294.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3309.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3309.cpp
index d6dd1dac..d6dd1dac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3309.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3309.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3316.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3316.cpp
index ee644d21..ee644d21 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3316.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3316.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3321.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3321.h
index 8e74beb2..8e74beb2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3321.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3321.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3357.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3357.cpp
index f94d17fe..f94d17fe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3357.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3357.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3409.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3409.cpp
index ac6e64bf..ac6e64bf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3409.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3409.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3413.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3413.cpp
index 80ec8cbc..80ec8cbc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3413.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3413.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3422.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3422.cpp
index 015d93f4..015d93f4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3422.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3422.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3428.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3428.cpp
index e4f45a1c..e4f45a1c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3428.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3428.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3446.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3446.cpp
index 6332b0ad..6332b0ad 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3446.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3446.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3448.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3448.cpp
index 8dc80497..8dc80497 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3448.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3448.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3505.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3505.cpp
index bb9bcee5..bb9bcee5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3505.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3505.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3513-0.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3513-0.cpp
index 51f07966..51f07966 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3513-0.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3513-0.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3513-1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3513-1.cpp
index 020cc496..020cc496 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3513-1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3513-1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3536.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3536.cpp
index d068dd96..d068dd96 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3536.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3536.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3538.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3538.cpp
index b965cb12..b965cb12 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3538.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3538.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3546.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3546.cpp
index 617e849f..617e849f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3546.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3546.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3550.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3550.cpp
index bf43f50e..bf43f50e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3550.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3550.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3552.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3552.cpp
index f3baae42..f3baae42 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3552.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3552.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3558.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3558.cpp
index 561821ee..561821ee 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3558.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3558.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3570.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3570.h
index 363447e7..363447e7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3570.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3570.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3576.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3576.h
index 9f668b6d..9f668b6d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3576.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3576.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3604.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3604.cpp
index a96b3437..a96b3437 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3604.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3604.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3614.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3614.cpp
new file mode 100644
index 00000000..3129de2e
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3614.cpp
@@ -0,0 +1,2 @@
+//bla
+//lint {...}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3691.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3691.h
index fb1ec761..fb1ec761 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3691.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3691.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3710.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3710.cpp
index 4c31fe90..4c31fe90 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3710.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3710.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3761.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3761.cpp
index b3f8cbb5..b3f8cbb5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3761.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3761.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3785.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3785.cpp
index 90d4b28c..90d4b28c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3785.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3785.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3786.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3786.cpp
index ea830d4a..ea830d4a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3786.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3786.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3863.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3863.cpp
index 4163ee8e..4163ee8e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3863.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3863.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3863_2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3863_2.cpp
index f91c6547..f91c6547 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3863_2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3863_2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3863_3.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3863_3.cpp
index f2885f39..f2885f39 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_3863_3.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3863_3.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3865.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3865.cpp
new file mode 100644
index 00000000..8e444b2a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3865.cpp
@@ -0,0 +1,33 @@
+MOCK_METHOD(bool, isThat, (const std::string& name), (override));
+MOCK_METHOD(bool, isThat, (std::string& name), (override));
+MOCK_METHOD(bool, isThat, std::string& name, (override));
+MOCK_METHOD(bool, isThat, const std::string& name, (override));
+MyFunction(const std::string& some_value);
+MOCK_METHOD(void, isThat, (Callback const&), (override));
+
+class MyClass
+{
+ constexpr explicit MyClass(MyClass*& a) noexcept;
+};
+
+SomeClass::SomeClass(unsigned& counter, MyOtherType& lock)
+ : thisThing(counter)
+ , thatThing(lock)
+{
+}
+
+template<typename T = unsigned>
+struct TemplatedClass
+{
+ TemplatedClass(T& thing) {}
+};
+
+MyThing* MyClass::my_function()
+{
+ return &_theirThing;
+}
+
+// Shouldn't change
+EXPECT_EQ(static_cast<int>(MyEnumm::Last & MyEnumm::MyValue));
+#define SOME_MACRO(type, sss) if(n & type) { if(!k.doofer()) { k += "| "; } k += sss; }
+#define SOME_OTHER_MACRO(ttt, sss) (&ttt, &sss)
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3914.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3914.cpp
new file mode 100644
index 00000000..c51c4955
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3914.cpp
@@ -0,0 +1,8 @@
+void foo()
+{
+desc->add_options()
+ ("help,h", "produce help message")
+ ("version,v", "print the version number")
+ ("include-path,I", value< vector<string> >(), "include path")
+ ("input-file,i", value<string>(), "input file");
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3915.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3915.cpp
new file mode 100644
index 00000000..51c63928
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3915.cpp
@@ -0,0 +1,9 @@
+void
+foo(Foo const & f)
+{
+ auto bar = Bar(f);
+ if (bar.something) {
+ assert(bar.something_else == 1);
+ }
+}
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3916.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3916.cpp
new file mode 100644
index 00000000..40944d8b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3916.cpp
@@ -0,0 +1,29 @@
+#include <string>
+
+using TEnglishString = std::string;
+
+class CComCommandInfo
+{
+public:
+ CComCommandInfo( TEnglishString, TEnglishString );
+};
+
+template< typename T >
+class CGenericCommandEx
+{
+public:
+ CGenericCommandEx( T );
+};
+
+
+template< typename T >
+void Test( TEnglishString commandName_, TEnglishString commandDescription_, T functor_ )
+{
+ CComCommandInfo cmdInfo( std::forward< TEnglishString >( commandName_ ),
+ std::forward< TEnglishString >( commandDescription_ ) );
+
+ auto* pCommand =
+ new CGenericCommandEx(
+ std::forward< decltype( functor_ ) >( functor_ ) ); // <--- Note the extra spaces added here
+}
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3919.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3919.cpp
new file mode 100644
index 00000000..611ce2e1
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3919.cpp
@@ -0,0 +1,5 @@
+void Test
+{
+ //<-- Here we want a space after //
+ DoSomething(); //-V612 : warning #612 disabled.
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3920.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3920.cpp
new file mode 100644
index 00000000..440fb5cf
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3920.cpp
@@ -0,0 +1,4 @@
+std::string StrGet()
+{
+ return IsConnected() ? "Connected" : {};
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3965-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3965-2.cpp
new file mode 100644
index 00000000..864979bb
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3965-2.cpp
@@ -0,0 +1,7 @@
+void Win::check(QString id)
+{
+ if(names.contains(id + QString("_tst")) or names.contains(id + QString("_prd"))) {
+ true;
+ }
+ return;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3965.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3965.cpp
new file mode 100644
index 00000000..2205a5a5
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3965.cpp
@@ -0,0 +1,4 @@
+void Win::fill()
+{
+ product->addItem(product.name + "%1");
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3967.cc b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3967.cc
new file mode 100644
index 00000000..84b393a2
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3967.cc
@@ -0,0 +1,4 @@
+std::ostream& xx::operator<<(std::ostream& os, xx::Exception const& ex)
+{
+ return os;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3980.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3980.cpp
new file mode 100644
index 00000000..89d43dfe
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3980.cpp
@@ -0,0 +1,5 @@
+int a = 4I8;
+int b = 4I16;
+int c = 4I32;
+int d = 4I64;
+int e = 4I128;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3983.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3983.cpp
new file mode 100644
index 00000000..3e479f25
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3983.cpp
@@ -0,0 +1,9 @@
+#include <iostream>
+struct s {int i;};
+
+int main()
+{
+ struct s x;
+ x.i = 5;
+ std::cout << x.i << std::endl;
+} // main
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3996.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3996.cpp
new file mode 100644
index 00000000..d2b4479f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_3996.cpp
@@ -0,0 +1,25 @@
+#include <iostream>
+
+class OtherClass
+{
+public:
+ int i;
+ OtherClass(): i(5) {}
+ OtherClass* self() {return this;}
+};
+
+class MyClass
+{
+public:
+ OtherClass x;
+ int getI();
+};
+
+int MyClass::getI() {
+ return this->x.self()->i;
+}
+
+int main() {
+ MyClass c;
+ std::cout << c.getI() << std::endl;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4023.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4023.cpp
new file mode 100644
index 00000000..609e499f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4023.cpp
@@ -0,0 +1,20 @@
+class foo {
+public:
+ bool var;
+
+ foo(bool x) { var = x; }
+
+ bool get()
+ {
+ return var;
+ }
+};
+
+
+int main() {
+ foo f(false);
+
+ const int b = true ? 2 : 3;
+
+ const int a = !f.get() ? 2 : 3;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4026.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4026.cpp
new file mode 100644
index 00000000..c0169c73
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4026.cpp
@@ -0,0 +1,50 @@
+class foo {
+public:
+ int var;
+
+ foo(int x) { var = x; }
+};
+
+int main()
+{
+ int a = 2;
+ a++;
+
+ foo f(3);
+ f.var++;
+}
+
+InternalFunctionImp::InternalFunctionImp(ExecState *exec)
+ : ObjectImp(static_cast<FunctionPrototypeImp*>(exec->interpreter()->builtinFunctionPrototype().imp()))
+{
+ for (int z=0; z<count; z++)
+ {
+ TQString hlName = KateFactory::self()->schemaManager()->list().operator[](z);
+
+ if (names.contains(hlName) < 1)
+ {
+ names << hlName;
+ popupMenu()->insertItem ( hlName, this, TQT_SLOT(setSchema(int)), 0, z+1);
+ }
+ }
+
+ struct sockaddr_in *sin1 = (sockaddr_in *) s1.address();
+ struct sockaddr_in *sin2 = (sockaddr_in *) s2.address();
+
+ if ((bytesLeft < 0 ) || (len > (uint) bytesLeft))
+ {
+ tqWarning("[dcopserver] Corrupt data!");
+ printf("[dcopserver] bytesLeft: %d, len: %d", bytesLeft, len);
+ return result;
+ }
+ result.TQByteArray::resize( (uint)len );
+
+ if (pbar->isVisible() && pbar->isEnabled() &&
+ pbar->progress() != pbar->totalSteps())
+ {
+ ++iter.data();
+ if (iter.data() == 28)
+ iter.data() = 0;
+ iter.key()->update();
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4027.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4027.cpp
new file mode 100644
index 00000000..bd9a32d4
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4027.cpp
@@ -0,0 +1 @@
+#define KK2 27F30
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4036.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4036.cpp
new file mode 100644
index 00000000..ceaa5312
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4036.cpp
@@ -0,0 +1,3 @@
+struct a {
+ bool b : 1;
+};
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4042.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4042.cpp
new file mode 100644
index 00000000..3e5f01c2
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4042.cpp
@@ -0,0 +1,6 @@
+ union Data {
+ int val1;
+ long val2;
+ Data( ) noexcept(false )
+ : val1( 1 ) { }
+ };
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4080.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4080.cpp
new file mode 100644
index 00000000..178612c4
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4080.cpp
@@ -0,0 +1,6 @@
+auto foo() -> char;
+int*x;
+int*y;
+int reset();
+int*X;
+int*Y;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4094.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4094.cpp
new file mode 100644
index 00000000..2eb624d0
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4094.cpp
@@ -0,0 +1,2 @@
+auto lambda1 = []( int x ){};
+auto lambda2 = [](){};
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4132.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4132.cpp
new file mode 100644
index 00000000..256db54c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4132.cpp
@@ -0,0 +1 @@
+using stdsize = typename _arch_helper< (int)sizeof(void*) >::sz_t;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4239.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4239.cpp
new file mode 100644
index 00000000..5bcbfe77
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_4239.cpp
@@ -0,0 +1,10 @@
+void f()
+{
+ int x;
+ int y;
+ y = x;
+ if ((y = x) != 0)
+ for (;;)
+ if (x)
+ return;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_750.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_750.cpp
index 461e79ac..461e79ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_750.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_750.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_931.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_931.cpp
index 90084874..90084874 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_931.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_931.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_995-do.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_995-do.cpp
index 05eca611..05eca611 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Issue_995-do.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Issue_995-do.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/NewLine.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/NewLine.cpp
index 9c7f1ee9..9c7f1ee9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/NewLine.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/NewLine.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/NewLine0.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/NewLine0.cpp
index 01e7cc97..01e7cc97 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/NewLine0.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/NewLine0.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/PR326_invalid-backslash-eol-csharp.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/PR326_invalid-backslash-eol-csharp.cpp
index b0e13d6a..b0e13d6a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/PR326_invalid-backslash-eol-csharp.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/PR326_invalid-backslash-eol-csharp.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Q_2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Q_2.cpp
index ee6239f9..ee6239f9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Q_2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Q_2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Q_EMIT.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Q_EMIT.cpp
index d3ef9396..d3ef9396 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Q_EMIT.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Q_EMIT.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Q_FOREACH.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Q_FOREACH.cpp
index 37156618..37156618 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Q_FOREACH.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Q_FOREACH.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Q_FOREVER.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Q_FOREVER.cpp
index a0fb07d5..a0fb07d5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Q_FOREVER.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Q_FOREVER.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Q_SIGNAL_SLOT.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Q_SIGNAL_SLOT.cpp
index 5a4c8e7d..5a4c8e7d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Q_SIGNAL_SLOT.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Q_SIGNAL_SLOT.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/STUCK_macro-difficulties.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/STUCK_macro-difficulties.cpp
index ea1c724e..ea1c724e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/STUCK_macro-difficulties.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/STUCK_macro-difficulties.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Timestamp.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Timestamp.h
index 60dc3791..60dc3791 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/Timestamp.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/Timestamp.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-10496.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-10496.cpp
index 3228cf2a..3228cf2a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-10496.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-10496.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-12046.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-12046.cpp
index 9cc7b13f..9cc7b13f 100755..100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-12046.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-12046.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1288.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1288.cpp
index 38ded76c..38ded76c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1288.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1288.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1334.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1334.cpp
index 278cd1a2..278cd1a2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1334.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1334.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1335.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1335.cpp
index 2f3ad2a2..2f3ad2a2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1335.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1335.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1337.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1337.cpp
index 59635c19..59635c19 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1337.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1337.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1339.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1339.cpp
index 255db223..255db223 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1339.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1339.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1340.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1340.cpp
index 2f743294..2f743294 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1340.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1340.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1344.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1344.cpp
index c898df76..c898df76 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1344.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1344.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1346.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1346.cpp
index 0261a306..0261a306 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1346.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1346.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1347.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1347.cpp
index ac2184f0..ac2184f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1347.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1347.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1350.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1350.cpp
index 7353e915..7353e915 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1350.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1350.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1356.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1356.cpp
index 8a1aab54..8a1aab54 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1356.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1356.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1358.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1358.cpp
index 770bf0c1..770bf0c1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1358.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1358.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-16283.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-16283.cpp
index 7f042642..7f042642 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-16283.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-16283.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-18439.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-18439.cpp
index 0c40e831..0c40e831 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-18439.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-18439.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-18777.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-18777.cpp
index 0f177fdc..0f177fdc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-18777.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-18777.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1980.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1980.cpp
index 97940716..97940716 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1980.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1980.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1981.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1981.cpp
index a20f4c43..a20f4c43 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1981.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1981.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1983.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1983.cpp
index e7d9de6d..e7d9de6d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-1983.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-1983.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-19894.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-19894.cpp
index ef5fe7cf..ef5fe7cf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-19894.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-19894.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-2049.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-2049.cpp
index 7c64f76a..7c64f76a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-2049.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-2049.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21506.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21506.cpp
index a8c5f2df..a8c5f2df 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21506.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21506.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21509.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21509.cpp
index bde48ee7..bde48ee7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21509.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21509.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21510.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21510.cpp
index ea406fbe..ea406fbe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21510.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21510.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21727.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21727.cpp
index 991d2631..991d2631 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21727.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21727.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21728.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21728.cpp
index 658fba68..658fba68 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21728.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21728.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21729.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21729.cpp
index 4b8d1d59..4b8d1d59 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-21729.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-21729.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-2650.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-2650.cpp
index b9ced773..b9ced773 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-2650.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-2650.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-2680.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-2680.cpp
index b6aa5bd7..b6aa5bd7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-2680.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-2680.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-2683.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-2683.cpp
index 5da60d3f..5da60d3f 100755..100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-2683.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-2683.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-29935.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-29935.cpp
index a6cf3fc5..a6cf3fc5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-29935.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-29935.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-30088.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-30088.cpp
index 1fd5c1fe..1fd5c1fe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-30088.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-30088.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-30628.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-30628.cpp
index ffa60026..ffa60026 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-30628.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-30628.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-32657.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-32657.cpp
index 9151231a..9151231a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-32657.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-32657.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-38381.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-38381.cpp
index 701b55b2..701b55b2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-38381.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-38381.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-64325.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-64325.cpp
index c4005d7c..c4005d7c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-64325.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-64325.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-9650.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-9650.cpp
index f6dba01b..f6dba01b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/UNI-9650.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/UNI-9650.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/al.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/al.cpp
index 3c232dec..3c232dec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/al.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/al.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align-330.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align-330.cpp
index 0ba91720..0ba91720 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align-330.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align-330.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align-assign-mixed.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align-assign-mixed.cpp
index 2e55d59d..2e55d59d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align-assign-mixed.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align-assign-mixed.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align-star-amp-pos.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align-star-amp-pos.cpp
index 29a7a23a..29a7a23a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align-star-amp-pos.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align-star-amp-pos.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_across_braces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_across_braces.cpp
index f47f0c80..f47f0c80 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_across_braces.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_across_braces.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_assign_func_proto.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_assign_func_proto.cpp
index 0c816099..0c816099 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_assign_func_proto.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_assign_func_proto.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_asterisk_after_type_cast.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_asterisk_after_type_cast.cpp
index 4b325b1e..4b325b1e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_asterisk_after_type_cast.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_asterisk_after_type_cast.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_class-constr.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_class-constr.cpp
index 2be3c8e8..2be3c8e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_class-constr.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_class-constr.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_class.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_class.cpp
index d47e77bb..d47e77bb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_class.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_class.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_constr.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_constr.cpp
index 1a22f6d9..1a22f6d9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_constr.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_constr.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_continuation_left_shift.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_continuation_left_shift.cpp
index c0c066b8..c0c066b8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_continuation_left_shift.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_continuation_left_shift.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_default_after_override.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_default_after_override.cpp
index de21686c..de21686c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_default_after_override.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_default_after_override.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_fcall.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_fcall.cpp
index c27ed9d1..c27ed9d1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_fcall.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_fcall.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_func_params.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_func_params.cpp
index a90155fd..a90155fd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_func_params.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_func_params.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_func_proto_thresh.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_func_proto_thresh.cpp
index df6b4dca..df6b4dca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_func_proto_thresh.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_func_proto_thresh.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_func_proto_thresh2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_func_proto_thresh2.cpp
index b0960a11..b0960a11 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_func_proto_thresh2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_func_proto_thresh2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_left_shift.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_left_shift.cpp
index 3cf7a744..3cf7a744 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_left_shift.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_left_shift.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_left_shift2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_left_shift2.cpp
index c90ae71f..c90ae71f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_left_shift2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_left_shift2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_right_comment.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_right_comment.cpp
index 43a2a70f..43a2a70f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_right_comment.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_right_comment.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_var_def_thresh.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_var_def_thresh.cpp
index 3942f227..3942f227 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/align_var_def_thresh.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/align_var_def_thresh.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/alt_tokens.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/alt_tokens.cpp
index fcaf1392..fcaf1392 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/alt_tokens.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/alt_tokens.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/anonymous_enum.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/anonymous_enum.cpp
index 0cf8426d..0cf8426d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/anonymous_enum.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/anonymous_enum.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/arith_vs_byref.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/arith_vs_byref.cpp
index f459fdcc..f459fdcc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/arith_vs_byref.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/arith_vs_byref.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/asm_block_pp.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/asm_block_pp.cpp
index e6816d9a..e6816d9a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/asm_block_pp.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/asm_block_pp.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/attribute_specifier_seqs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/attribute_specifier_seqs.cpp
index 744b3404..744b3404 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/attribute_specifier_seqs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/attribute_specifier_seqs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/av.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/av.h
index 7a90197c..7a90197c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/av.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/av.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bit-colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bit-colon.cpp
index b593255b..b593255b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bit-colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bit-colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bom.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bom.cpp
index 7ee7e7e6..7ee7e7e6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bom.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bom.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bool.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bool.cpp
index 30d4cb29..30d4cb29 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bool.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bool.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/brace_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/brace_brace_init_lst.cpp
index 2a5254f0..2a5254f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/brace_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/brace_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/brace_init_stdint_macros.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/brace_init_stdint_macros.cpp
index 59eb8897..59eb8897 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/brace_init_stdint_macros.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/brace_init_stdint_macros.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/braced_init_list.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/braced_init_list.cpp
index e245f34c..e245f34c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/braced_init_list.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/braced_init_list.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/braced_init_template_decltype.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/braced_init_template_decltype.cpp
index bfd5ef86..bfd5ef86 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/braced_init_template_decltype.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/braced_init_template_decltype.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/braces_align.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/braces_align.cpp
index ca99edc6..ca99edc6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/braces_align.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/braces_align.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/braces_empty.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/braces_empty.cpp
index 583c7fa1..583c7fa1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/braces_empty.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/braces_empty.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1001.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1001.cpp
index b0ce9a06..b0ce9a06 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1001.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1001.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1002.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1002.cpp
index 713018e4..713018e4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1002.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1002.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1003.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1003.cpp
index 7495b93d..7495b93d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1003.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1003.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1004.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1004.cpp
index 3287be1c..3287be1c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1004.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1004.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1005.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1005.cpp
index 01a457d0..01a457d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1005.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1005.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1020.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1020.cpp
index ec80e915..ec80e915 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1020.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1020.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1027.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1027.cpp
index 5ccafd2b..5ccafd2b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1027.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1027.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1032.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1032.cpp
index 80078efe..80078efe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1032.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1032.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1068.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1068.cpp
index 74fbc8e7..74fbc8e7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1068.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1068.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1108.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1108.cpp
index 573a9810..573a9810 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1108.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1108.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1112.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1112.cpp
index e6537641..e6537641 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1112.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1112.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1127.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1127.cpp
index 9ee98743..9ee98743 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1127.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1127.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1134.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1134.cpp
index 369b70f1..369b70f1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1134.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1134.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1139.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1139.cpp
index 82210d96..82210d96 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1139.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1139.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1158.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1158.cpp
index e92da160..e92da160 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1158.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1158.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1160.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1160.cpp
index 8dc7a9d1..8dc7a9d1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1160.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1160.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1161.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1161.cpp
index 535c3be7..535c3be7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1161.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1161.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1169.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1169.cpp
index aa56008a..aa56008a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1169.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1169.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1170.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1170.cpp
index 35dd772f..35dd772f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1170.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1170.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1235.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1235.cpp
index b9ff78a1..b9ff78a1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1235.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1235.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1236.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1236.cpp
index 8acaaed2..8acaaed2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1236.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1236.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1249.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1249.cpp
index 975dc82c..975dc82c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1249.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1249.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1288.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1288.cpp
index 94444cf9..94444cf9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1288.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1288.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1289.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1289.cpp
index 42663477..42663477 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1289.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1289.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1296.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1296.cpp
index e2cd65fb..e2cd65fb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1296.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1296.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1315.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1315.cpp
index 080c9233..080c9233 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1315.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1315.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1321.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1321.cpp
index c381f91c..c381f91c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1321.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1321.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1324.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1324.cpp
index 5df154f3..5df154f3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1324.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1324.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1338.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1338.cpp
index 04b4cd8a..04b4cd8a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1338.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1338.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1340.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1340.cpp
index 680d6d51..680d6d51 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1340.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1340.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1346.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1346.h
index 21fe1c44..21fe1c44 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1346.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1346.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1349.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1349.cpp
index aa1938e8..aa1938e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1349.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1349.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1395.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1395.cpp
index 00694ce9..00694ce9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1395.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1395.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1402.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1402.cpp
index 9b001a44..9b001a44 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1402.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1402.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1403.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1403.cpp
index 71f67f75..71f67f75 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1403.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1403.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1432.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1432.cpp
index 575a21c8..575a21c8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1432.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1432.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1439.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1439.cpp
index d560522b..d560522b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1439.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1439.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1452.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1452.cpp
index d7fcf753..d7fcf753 100755..100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1452.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1452.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1462.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1462.cpp
index 5170b9a9..5170b9a9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1462.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1462.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1607.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1607.cpp
index 9e4e47d3..9e4e47d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1607.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1607.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1649.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1649.cpp
index 4ab5eea8..4ab5eea8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1649.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1649.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1689.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1689.cpp
index 795bb572..795bb572 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1689.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1689.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1691.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1691.cpp
index 2d5d1204..2d5d1204 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1691.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1691.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1717.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1717.cpp
index a1adcf5f..a1adcf5f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1717.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1717.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1758-f.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1758-f.cpp
index b324fbda..b324fbda 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1758-f.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1758-f.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1758.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1758.cpp
index b0f35107..b0f35107 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1758.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1758.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1854.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1854.cpp
index 29cc2774..29cc2774 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1854.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1854.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1862.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1862.cpp
index 78958bb1..78958bb1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_1862.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_1862.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2285.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2285.cpp
index 14a85090..14a85090 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2285.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2285.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2322.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2322.cpp
index f9768c40..f9768c40 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2322.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2322.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2371.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2371.cpp
index 26444ad3..26444ad3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2371.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2371.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2402.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2402.cpp
index 92731c19..92731c19 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2402.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2402.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2433_1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2433_1.cpp
index d19718f5..d19718f5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2433_1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2433_1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2433_2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2433_2.cpp
index 9da12944..9da12944 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_2433_2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_2433_2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_33056.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_33056.cpp
index 1339ede1..1339ede1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_33056.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_33056.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_472.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_472.cpp
index 753d9519..753d9519 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_472.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_472.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_481.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_481.cpp
index 03c4a828..03c4a828 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_481.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_481.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_484.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_484.cpp
index 4c582e86..4c582e86 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_484.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_484.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_485.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_485.cpp
index 4865da64..4865da64 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_485.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_485.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_488.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_488.cpp
index 382beced..382beced 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_488.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_488.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_495.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_495.cpp
index f356c302..f356c302 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_495.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_495.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_612.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_612.cpp
index 38253f15..38253f15 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_612.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_612.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_631.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_631.cpp
index e110d383..e110d383 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_631.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_631.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_633.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_633.cpp
index 5b672b47..5b672b47 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_633.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_633.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_634.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_634.cpp
index febbf7b3..febbf7b3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_634.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_634.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_643.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_643.cpp
index 55e3e309..55e3e309 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_643.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_643.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_651.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_651.cpp
index b36e182a..b36e182a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_651.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_651.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_653.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_653.cpp
index 1bf853d6..1bf853d6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_653.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_653.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_654.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_654.cpp
index 8baaeb1c..8baaeb1c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_654.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_654.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_657.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_657.cpp
index 230b96b3..230b96b3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_657.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_657.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_662.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_662.cpp
index f8b0f8a8..f8b0f8a8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_662.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_662.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_663.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_663.cpp
index 869320c0..869320c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_663.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_663.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_664.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_664.cpp
index 148201b0..148201b0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_664.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_664.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_666.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_666.cpp
index 00adec83..00adec83 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_666.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_666.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_670.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_670.cpp
index e9229a8e..e9229a8e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_670.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_670.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_670.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_670.h
index ea503b10..ea503b10 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_670.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_670.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_671.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_671.h
index 8ff7bfca..8ff7bfca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_671.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_671.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_858.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_858.cpp
index 512d2e45..512d2e45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_858.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_858.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_902.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_902.cpp
index eb51f587..eb51f587 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_902.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_902.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_1000.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_1000.cpp
index 06da6b3e..06da6b3e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_1000.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_1000.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_197.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_197.cpp
index e86698fd..e86698fd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_197.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_197.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_322.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_322.cpp
index bc7e687f..bc7e687f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_322.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_322.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_323.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_323.cpp
index ea141156..ea141156 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_323.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_323.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_359.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_359.cpp
index 294e3afb..294e3afb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_359.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_359.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_405.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_405.cpp
index eda9b0dd..eda9b0dd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_405.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_405.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_409.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_409.cpp
index b3b51488..b3b51488 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_409.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_409.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_411.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_411.cpp
index 647570f2..647570f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_411.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_411.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_478.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_478.cpp
index 5a16eccc..5a16eccc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_478.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_478.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_481.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_481.cpp
index 2a4e6b8f..2a4e6b8f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_481.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_481.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_503.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_503.cpp
index 3c5951a8..3c5951a8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_503.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_503.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_512.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_512.cpp
index 3b4de434..3b4de434 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_512.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_512.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_525.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_525.cpp
index d0773475..d0773475 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_525.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_525.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_552.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_552.cpp
index 5a0704de..5a0704de 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_552.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_552.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_568.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_568.cpp
index 68729907..68729907 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_568.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_568.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_575.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_575.cpp
index 3ef21f1f..3ef21f1f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_575.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_575.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_596.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_596.cpp
index 88f77e34..88f77e34 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_596.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_596.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_646.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_646.cpp
index f89b6416..f89b6416 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_646.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_646.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_663.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_663.cpp
index 2a473bc7..2a473bc7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_663.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_663.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_666.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_666.cpp
index 00adec83..00adec83 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_666.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_666.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_682.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_682.h
index 8f1fc31f..8f1fc31f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_682.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_682.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_687.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_687.cpp
index 0f9e8155..0f9e8155 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_687.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_687.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_752.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_752.cpp
index b0b77452..b0b77452 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_752.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_752.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_753.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_753.cpp
index 07cc31fe..07cc31fe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_753.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_753.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_793.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_793.cpp
index 6777bfa5..6777bfa5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_793.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_793.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_825.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_825.cpp
index d3f89db7..d3f89db7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_825.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_825.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_889.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_889.cpp
index 270f0695..270f0695 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_889.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_889.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_928.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_928.cpp
index d2878656..d2878656 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_928.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_928.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_938.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_938.h
index b13997a6..b13997a6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_938.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_938.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_999.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_999.cpp
index 2a5d64a4..2a5d64a4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_999.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_999.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_width.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_width.cpp
index 08f7888e..08f7888e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/bug_i_width.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/bug_i_width.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/byref-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/byref-2.cpp
index 0ef61cde..0ef61cde 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/byref-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/byref-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/byref-3.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/byref-3.cpp
index 28da2d74..28da2d74 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/byref-3.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/byref-3.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/byref-4.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/byref-4.cpp
index 0fe49c7b..0fe49c7b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/byref-4.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/byref-4.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/byref.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/byref.cpp
index 85669bc6..85669bc6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/byref.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/byref.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/call_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/call_brace_init_lst.cpp
index 11f92ee3..11f92ee3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/call_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/call_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/case-brace-remove.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/case-brace-remove.cpp
index 421ff658..421ff658 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/case-brace-remove.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/case-brace-remove.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cast.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cast.cpp
index 7b29b06f..7b29b06f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cast.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cast.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/casts.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/casts.cpp
index 0bcab0d9..0bcab0d9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/casts.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/casts.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/class-addr.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/class-addr.h
index ea539afa..ea539afa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/class-addr.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/class-addr.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/class-implementation.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/class-implementation.cpp
index 05eb69cf..05eb69cf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/class-implementation.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/class-implementation.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/class-init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/class-init.cpp
index af06e31a..af06e31a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/class-init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/class-init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/class.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/class.h
index 0048604d..0048604d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/class.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/class.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt-cpp-cont.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt-cpp-cont.cpp
index 8885e36b..8885e36b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt-cpp-cont.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt-cpp-cont.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt-reflow.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt-reflow.cpp
index adb5a6ab..adb5a6ab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt-reflow.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt-reflow.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_backslash_eol.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_backslash_eol.cpp
index e56aec25..e56aec25 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_backslash_eol.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_backslash_eol.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_convert_tab_to_spaces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_convert_tab_to_spaces.cpp
index 32ff32d3..32ff32d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_convert_tab_to_spaces.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_convert_tab_to_spaces.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_indent.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_indent.cpp
index 542a0fd2..542a0fd2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_indent.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_indent.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_indent_pp.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_indent_pp.h
index 25253f09..25253f09 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_indent_pp.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_indent_pp.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_insert.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_insert.cpp
index a5ae87d5..a5ae87d5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_insert.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_insert.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_right.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_right.cpp
index 121ea044..121ea044 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_right.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_right.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_trailing_single_line_c_to_cpp.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_trailing_single_line_c_to_cpp.cpp
index 1f3cff49..1f3cff49 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cmt_trailing_single_line_c_to_cpp.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cmt_trailing_single_line_c_to_cpp.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/comma.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/comma.cpp
index e101145a..e101145a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/comma.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/comma.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/comment-align-multiline.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/comment-align-multiline.cpp
index 73dab5ec..73dab5ec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/comment-align-multiline.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/comment-align-multiline.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/comment-align.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/comment-align.cpp
index 403bf773..403bf773 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/comment-align.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/comment-align.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/const_throw.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/const_throw.cpp
index f0d1773d..f0d1773d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/const_throw.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/const_throw.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/constr_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/constr_colon.cpp
index 6c0706e5..6c0706e5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/constr_colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/constr_colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/constructor.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/constructor.cpp
index 46abf36a..46abf36a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/constructor.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/constructor.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/conversion_operator.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/conversion_operator.cpp
index 27b52dac..27b52dac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/conversion_operator.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/conversion_operator.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cout.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cout.cpp
index c3c9366d..c3c9366d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cout.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cout.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cpp17.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cpp17.cpp
index ba463284..ba463284 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cpp17.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cpp17.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cpp_move.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cpp_move.cpp
index cec9beb8..cec9beb8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/cpp_move.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/cpp_move.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/ctor-var.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/ctor-var.cpp
index 2551d8bd..2551d8bd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/ctor-var.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/ctor-var.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/custom-open-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/custom-open-2.cpp
index 422cb1bf..422cb1bf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/custom-open-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/custom-open-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/custom-open.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/custom-open.cpp
index 1544fd74..1544fd74 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/custom-open.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/custom-open.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/define-indentation.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/define-indentation.cpp
index 69e924ee..69e924ee 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/define-indentation.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/define-indentation.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/delete.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/delete.cpp
index fff916e3..fff916e3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/delete.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/delete.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/deref.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/deref.cpp
index abfb70c7..abfb70c7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/deref.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/deref.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/digraph.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/digraph.cpp
index 57cfddf5..57cfddf5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/digraph.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/digraph.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/disable_macro.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/disable_macro.cpp
index cb9fc307..cb9fc307 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/disable_macro.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/disable_macro.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/dont-detab-strings.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/dont-detab-strings.cpp
index fd622c3c..fd622c3c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/dont-detab-strings.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/dont-detab-strings.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/dont-process-defines.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/dont-process-defines.cpp
index a0a58f85..a0a58f85 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/dont-process-defines.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/dont-process-defines.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/eat_blanks_after_codewidth.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/eat_blanks_after_codewidth.cpp
index 8753aee2..8753aee2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/eat_blanks_after_codewidth.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/eat_blanks_after_codewidth.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/eigen.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/eigen.cpp
index 4e228311..4e228311 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/eigen.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/eigen.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum.cpp
new file mode 100644
index 00000000..fd85660b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum.cpp
@@ -0,0 +1,207 @@
+ enum
+ class
+ angle_state_e
+ :
+ unsigned
+int {
+ NONE=0, OPEN=1, //'<' found
+CLOSE = 2 , //'>' found
+};
+
+// align.cpp
+enum class comment_align_e : unsigned int
+{
+ REGULAR,
+ BRACE,
+ ENDIF,
+};
+
+// chunk.h
+enum class E_Scope : unsigned int
+{
+ ALL, /**< search in all kind of chunks */
+ PREPROC, /**< search only in preprocessor chunks */
+};
+
+// chunk.cpp
+enum class E_Direction : unsigned int
+{
+ FORWARD,
+ BACKWARD
+};
+
+// combine.cpp
+{
+ enum class angle_state_e : unsigned int
+ {
+ NONE = 0,
+ OPEN = 1, // '<' found
+ CLOSE = 2, // '>' found
+ };
+}
+
+// indent.cpp
+enum class align_mode_e : unsigned int
+{
+ SHIFT, /* shift relative to the current column */
+ KEEP_ABS, /* try to keep the original absolute column */
+ KEEP_REL, /* try to keep the original gap */
+};
+
+// align_stack.h
+{
+ enum StarStyle
+ {
+ SS_IGNORE, // don't look for prev stars
+ SS_INCLUDE, // include prev * before add
+ SS_DANGLE // include prev * after add
+ };
+}
+
+// log_levels.h
+enum log_sev_t
+{
+ LSYS = 0,
+ LERR = 1,
+ LWARN = 2,
+ LNOTE = 3,
+ LINFO = 4,
+ LDATA = 5,
+
+ LFILELIST = 8, /* Files in the file list file */
+ LLINEENDS = 9, /* Show which line endings are used */
+ LCASTS = 10, /* align casts */
+ LALBR = 11, /* align braces */
+ LALTD = 12, /* Align Typedef */
+ LALPP = 13, /* align #define */
+ LALPROTO = 14, /* align prototype */
+ LALNLC = 15, /* align backslash-newline */
+ LALTC = 16, /* align trailing comments */
+ LALADD = 17, /* align add */
+ LALASS = 18, /* align assign */
+ LFVD = 19, /* fix_var_def */
+ LFVD2 = 20, /* fix_var_def-2 */
+ LINDENT = 21, /* indent_text */
+ LINDENT2 = 22, /* indent_text tab level */
+ LINDPSE = 23, /* indent_text stack */
+ LINDPC = 24, /* indent play-by-play */
+ LNEWLINE = 25, /* newlines */
+ LPF = 26, /* Parse Frame */
+ LSTMT = 27, /* Marking statements/expressions */
+ LTOK = 28, /* Tokenize */
+ LALRC = 29, /* align right comment */
+ LCMTIND = 30, /* Comment Indent */
+ LINDLINE = 31, /* indent line */
+ LSIB = 32, /* Scan IB */
+ LRETURN = 33, /* add/remove parens for return */
+ LBRDEL = 34, /* brace removal */
+ LFCN = 35, /* function detection */
+ LFCNP = 36, /* function parameters */
+ LPCU = 37, /* parse cleanup */
+ LDYNKW = 38, /* dynamic keywords */
+ LOUTIND = 39, /* output indent */
+ LBCSAFTER = 40, /* Brace cleanup stack - after each token */
+ LBCSPOP = 41, /* Brace cleanup stack - log pops */
+ LBCSPUSH = 42, /* Brace cleanup stack - log push */
+ LBCSSWAP = 43, /* Brace cleanup stack - log swaps */
+ LFTOR = 44, /* Class Ctor or Dtor */
+ LAS = 45, /* align_stack */
+ LPPIS = 46, /* Preprocessor Indent and Space */
+ LTYPEDEF = 47, /* Typedef and function types */
+ LVARDEF = 48, /* Variable def marking */
+ LDEFVAL = 49, /* define values */
+ LPVSEMI = 50, /* Pawn: virtual semicolons */
+ LPFUNC = 51, /* Pawn: function recognition */
+ LSPLIT = 52, /* Line splitting */
+ LFTYPE = 53, /* Function type detection */
+ LTEMPL = 54, /* Template detection */
+ LPARADD = 55, /* adding parens in if/while */
+ LPARADD2 = 56, /* adding parens in if/while - details */
+ LBLANKD = 57, /* blank line details */
+ LTEMPFUNC = 58, /* Template function detection */
+ LSCANSEMI = 59, /* scan semi colon removal */
+ LDELSEMI = 60, /* Removing semicolons */
+ LFPARAM = 61, /* Testing for a full parameter */
+ LNL1LINE = 62, /* NL check for 1 liners */
+ LPFCHK = 63, /* Parse Frame check fcn call */
+ LAVDB = 64, /* align var def braces */
+ LSORT = 65, /* Sorting */
+ LSPACE = 66, /* Space */
+ LALIGN = 67, /* align */
+ LALAGAIN = 68, /* align again */
+ LOPERATOR = 69, /* operator */
+ LASFCP = 70, /* Align Same Function Call Params */
+ LINDLINED = 71, /* indent line details */
+ LBCTRL = 72, /* beautifier control */
+ LRMRETURN = 73, /* remove 'return;' */
+ LPPIF = 74, /* #if/#else/#endif pair processing */
+ LMCB = 75, /* mod_case_brace */
+ LBRCH = 76, /* if brace chain */
+ LFCNR = 77, /* function return type */
+ LOCCLASS = 78, /* OC Class stuff */
+ LOCMSG = 79, /* OC Message stuff */
+ LBLANK = 80, /* Blank Lines */
+ LOBJCWORD = 81, /* Convert keyword to CT_WORD in certain circumstances */
+ LCHANGE = 82, /* something changed */
+ LCONTTEXT = 83, /* comment cont_text set */
+ LANNOT = 84, /* Java annotation */
+ LOCBLK = 85, /* OC Block stuff */
+ LFLPAREN = 86, /* Flag paren */
+ LOCMSGD = 87, /* OC Message declaration */
+ LINDENTAG = 88, /* indent again */
+ LNFD = 89, /* newline-function-def */
+ LJDBI = 90, /* Java Double Brace Init */
+ LSETPAR = 91, /* Chunk::SetParentType() */
+ LSETTYP = 92, /* Chunk::SetType() */
+ LSETFLG = 93, /* set_chunk_flags() */
+ LNLFUNCT = 94, /* newlines before function */
+ LCHUNK = 95, /* Add or del chunk */
+ LGUY98 = 98, /* for guy-test */
+ LGUY = 99, /* for guy-test */
+};
+
+// options.h
+enum argtype_e
+{
+ AT_BOOL, /**< true / false */
+ AT_IARF, /**< Ignore / Add / Remove / Force */
+ AT_NUM, /**< Number */
+ AT_LINE, /**< Line Endings */
+ AT_POS, /**< start/end or Trail/Lead */
+ AT_STRING, /**< string value */
+ AT_UNUM, /**< unsigned Number */
+};
+
+enum argval_t
+{
+ AV_IGNORE = 0,
+ AV_ADD = 1,
+ AV_REMOVE = 2,
+ AV_FORCE = 3, /**< remove + add */
+ AV_NOT_DEFINED = 4 /* to be used with QT, SIGNAL SLOT macros */
+};
+
+enum lineends_e
+{
+ LE_LF, /* "\n" */
+ LE_CRLF, /* "\r\n" */
+ LE_CR, /* "\r" */
+
+ LE_AUTO, /* keep last */
+};
+
+enum tokenpos_e
+{
+ TP_IGNORE = 0, /* don't change it */
+ TP_BREAK = 1, /* add a newline before or after the if not present */
+ TP_FORCE = 2, /* force a newline on one side and not the other */
+ TP_LEAD = 4, /* at the start of a line or leading if wrapped line */
+ TP_LEAD_BREAK = (TP_LEAD | TP_BREAK),
+ TP_LEAD_FORCE = (TP_LEAD | TP_FORCE),
+ TP_TRAIL = 8, /* at the end of a line or trailing if wrapped line */
+ TP_TRAIL_BREAK = (TP_TRAIL | TP_BREAK),
+ TP_TRAIL_FORCE = (TP_TRAIL | TP_FORCE),
+ TP_JOIN = 16, /* remove newlines on both sides */
+};
+
+
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum_class.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum_class.h
index 2ba9933f..2ba9933f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum_class.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum_class.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum_comma.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum_comma.h
index 42ce2c53..42ce2c53 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum_comma.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum_comma.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum_comment_wrap.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum_comment_wrap.cpp
index 736e6718..736e6718 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum_comment_wrap.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum_comment_wrap.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum_shr.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum_shr.cpp
index 8bde6273..8bde6273 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/enum_shr.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/enum_shr.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/exception.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/exception.cpp
index 7f29676e..7f29676e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/exception.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/exception.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/extern_c.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/extern_c.h
index e4943e50..e4943e50 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/extern_c.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/extern_c.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/extern_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/extern_func.cpp
index 24e90a37..24e90a37 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/extern_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/extern_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/first_len_minimum.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/first_len_minimum.cpp
index 0a729f01..0a729f01 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/first_len_minimum.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/first_len_minimum.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/fix_for_relational_operators.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/fix_for_relational_operators.cpp
index 0014b110..0014b110 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/fix_for_relational_operators.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/fix_for_relational_operators.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/for_auto.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/for_auto.cpp
index c62548f8..c62548f8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/for_auto.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/for_auto.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/for_long.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/for_long.cpp
index 7685f614..7685f614 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/for_long.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/for_long.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/for_loop_head.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/for_loop_head.cpp
index cbfacf62..cbfacf62 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/for_loop_head.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/for_loop_head.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/foreach.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/foreach.cpp
index cfbe7963..cfbe7963 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/foreach.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/foreach.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/friends.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/friends.cpp
index 1b073b45..1b073b45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/friends.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/friends.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func-param-wrap-oc.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func-param-wrap-oc.mm
index 16f98ce9..16f98ce9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func-param-wrap-oc.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func-param-wrap-oc.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_call.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_call.cpp
index 6467560f..6467560f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_call.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_call.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_call_chain.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_call_chain.cpp
index 7e2f3931..7e2f3931 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_call_chain.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_call_chain.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_class.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_class.cpp
index 64a11509..64a11509 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_class.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_class.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_class.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_class.h
index 168b0b3d..168b0b3d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_class.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_class.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_param.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_param.cpp
index 24b187c1..24b187c1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_param.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_param.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_param_indent_leading_comma.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_param_indent_leading_comma.cpp
index 8c62d49b..8c62d49b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/func_param_indent_leading_comma.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/func_param_indent_leading_comma.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/function-def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/function-def.cpp
index 7f5e05c4..7f5e05c4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/function-def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/function-def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/functype_param.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/functype_param.cpp
index 5d2ff4fe..5d2ff4fe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/functype_param.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/functype_param.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/gcc_case_ellipsis.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/gcc_case_ellipsis.cpp
index 1b0b4088..1b0b4088 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/gcc_case_ellipsis.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/gcc_case_ellipsis.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/gh555.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/gh555.cpp
index feb059d3..feb059d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/gh555.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/gh555.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/goto.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/goto.cpp
index 0f50d182..0f50d182 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/goto.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/goto.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1082.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1082.cpp
index 06680c0e..06680c0e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1082.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1082.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1165.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1165.cpp
index c3123b59..c3123b59 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1165.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1165.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1181.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1181.cpp
index 1a959d34..1a959d34 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1181.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1181.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1207.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1207.cpp
index 0c8e1c92..0c8e1c92 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1207.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1207.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1218.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1218.cpp
index d4d05106..d4d05106 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1218.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1218.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1464.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1464.cpp
index 179ecd5e..179ecd5e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1464.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1464.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1466.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1466.cpp
index fe704d2a..fe704d2a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1466.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1466.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1509.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1509.cpp
index d3e79ff6..d3e79ff6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1509.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1509.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1509_bug_1112_correction.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1509_bug_1112_correction.cpp
index 1470d613..1470d613 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1509_bug_1112_correction.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1509_bug_1112_correction.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1516.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1516.cpp
index e1fe3f77..e1fe3f77 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1516.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1516.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1536.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1536.cpp
index 2c33ec58..2c33ec58 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1536.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1536.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1565.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1565.cpp
index 5cb66589..5cb66589 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1565.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1565.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1617.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1617.cpp
index 1901e3db..1901e3db 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1617.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1617.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1768.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1768.cpp
index 7fa82285..7fa82285 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i1768.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i1768.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i2033.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i2033.cpp
index fd27cf6d..fd27cf6d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i2033.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i2033.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i2116.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i2116.cpp
index 8011f572..8011f572 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i2116.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i2116.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i683.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i683.cpp
index 4d95c7ce..4d95c7ce 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/i683.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/i683.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/if-constexpr.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/if-constexpr.cpp
index 76f37f92..76f37f92 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/if-constexpr.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/if-constexpr.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/if_chain_braces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/if_chain_braces.cpp
index 693efc63..693efc63 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/if_chain_braces.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/if_chain_braces.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/if_constexpr.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/if_constexpr.cpp
index 032f74ec..032f74ec 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/if_constexpr.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/if_constexpr.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/ifcomment.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/ifcomment.cpp
index 52f508f6..52f508f6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/ifcomment.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/ifcomment.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent-c.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent-c.cpp
new file mode 100644
index 00000000..369548e0
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent-c.cpp
@@ -0,0 +1,1084 @@
+/**
+ * @file indent.cpp
+ * Does all the indenting stuff.
+ *
+ * $Id: indent.cpp 548 2006-10-21 02:31:55Z bengardner $
+ */
+#include "uncrustify_types.h"
+#include "chunk.h"
+#include "prototypes.h"
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <cerrno>
+#include <cctype>
+
+
+/**
+ * General indenting approach:
+ * Indenting levels are put into a stack.
+ *
+ * The stack entries contain:
+ * - opening type
+ * - brace column
+ * - continuation column
+ *
+ * Items that start a new stack item:
+ * - preprocessor (new parse frame)
+ * - Brace Open (Virtual brace also)
+ * - Paren, Square, Angle open
+ * - Assignments
+ * - C++ '<<' operator (ie, cout << "blah")
+ * - case
+ * - class colon
+ * - return
+ * - types
+ * - any other continued statement
+ *
+ * Note that the column of items marked 'PCF_WAS_ALIGNED' is not changed.
+ *
+ * For an open brace:
+ * - indent increases by indent_columns
+ * - if part of if/else/do/while/switch/etc, an extra indent may be applied
+ * - if in a paren, then cont-col is set to column + 1, ie "({ some code })"
+ *
+ * Open paren/square/angle:
+ * cont-col is set to the column of the item after the open paren, unless
+ * followed by a newline, then it is set to (brace-col + indent_columns).
+ * Examples:
+ * a_really_long_funcion_name(
+ * param1, param2);
+ * a_really_long_funcion_name(param1,
+ * param2);
+ *
+ * Assignments:
+ * Assignments are continued aligned with the first item after the assignment,
+ * unless the assign is followed by a newline.
+ * Examples:
+ * some.variable = asdf + asdf +
+ * asdf;
+ * some.variable =
+ * asdf + asdf + asdf;
+ *
+ * C++ << operator:
+ * Handled the same as assignment.
+ * Examples:
+ * cout << "this is test number: "
+ * << test_number;
+ *
+ * case:
+ * Started with case or default.
+ * Terminated with close brace at level or another case or default.
+ * Special indenting according to various rules.
+ * - indent of case label
+ * - indent of case body
+ * - how to handle optional braces
+ * Examples:
+ * {
+ * case x: {
+ * a++;
+ * break;
+ * }
+ * case y:
+ * b--;
+ * break;
+ * default:
+ * c++;
+ * break;
+ * }
+ *
+ * Class colon:
+ * Indent continuation by indent_columns:
+ * class my_class :
+ * baseclass1,
+ * baseclass2
+ * {
+ *
+ * Return: same as assignemts
+ * If the return statement is not fully paren'd, then the indent continues at
+ * the column of the item after the return. If it is paren'd, then the paren
+ * rules apply.
+ * return somevalue +
+ * othervalue;
+ *
+ * Type: pretty much the same as assignments
+ * Examples:
+ * int foo,
+ * bar,
+ * baz;
+ *
+ * Any other continued item:
+ * There shouldn't be anything not covered by the above cases, but any other
+ * continued item is indented by indent_columns:
+ * Example:
+ * somereallycrazylongname.with[lotsoflongstuff].
+ * thatreallyannoysme.whenIhavetomaintain[thecode] = 3;
+ */
+
+static void indent_comment(Chunk *pc, int col);
+
+
+void indent_to_column(Chunk *pc, int column)
+{
+ if (column < pc->GetColumn())
+ {
+ column = pc->GetColumn();
+ }
+ reindent_line(pc, column);
+}
+
+/**
+ * Changes the initial indent for a line to the given column
+ *
+ * @param pc The chunk at the start of the line
+ * @param column The desired column
+ */
+void reindent_line(Chunk *pc, int column)
+{
+ int col_delta;
+ int min_col;
+
+ LOG_FMT(LINDLINE, "%s: %d] col %d on %.*s [%s] => %d\n",
+ __func__, pc->GetOrigLine(), pc->GetColumn(), pc->len, pc->GetStr(),
+ get_token_name(pc->GetType()), column);
+
+ if (column == pc->GetColumn())
+ {
+ return;
+ }
+ col_delta = column - pc->GetColumn();
+ pc->SetColumn(column);
+ min_col = pc->GetColumn();
+
+ do
+ {
+ min_col += pc->len;
+ pc = pc->GetNext();
+ if (pc != NULL)
+ {
+ if (pc->IsComment())
+ {
+ pc->SetColumn(pc->GetOrigCol());
+ if (pc->GetColumn() < min_col)
+ {
+ pc->SetColumn(min_col + 1);
+ }
+ LOG_FMT(LINDLINE, "%s: set comment on line %d to col %d (orig %d)\n",
+ __func__, pc->GetOrigLine(), pc->GetColumn(), pc->GetOrigCol());
+ }
+ else
+ {
+ pc->SetColumn(pc->GetColumn() + col_delta);
+ if (pc->GetColumn() < min_col)
+ {
+ pc->SetColumn(min_col);
+ }
+ }
+ }
+ } while ((pc != NULL) && (pc->GetNlCount() == 0));
+}
+
+
+/**
+ * Starts a new entry
+ *
+ * @param frm The parse frame
+ * @param pc The chunk causing the push
+ */
+static void indent_pse_push(struct parse_frame& frm, Chunk *pc)
+{
+ static int ref = 0;
+
+ /* check the stack depth */
+ if (frm.m_parenStack_tos < (int)ARRAY_SIZE(frm.m_parenStack))
+ {
+ /* Bump up the index and initialize it */
+ frm.pse_tos++;
+ memset(&frm.m_parenStack[frm.m_parenStack_tos], 0, sizeof(frm.m_parenStack[frm.m_parenStack_tos]));
+
+ LOG_FMT(LINDPSE, "%4d] OPEN [%d,%s] level=%d\n",
+ pc->GetOrigLine(), frm.pse_tos, get_token_name(pc->GetType()), pc->GetLevel());
+
+ frm.m_parenStack[frm.m_parenStack_tos].type = pc->GetType();
+ frm.m_parenStack[frm.m_parenStack_tos].level = pc->GetLevel();
+ frm.m_parenStack[frm.m_parenStack_tos].open_line = pc->GetOrigLine();
+ frm.m_parenStack[frm.m_parenStack_tos].ref = ++ref;
+ frm.m_parenStack[frm.m_parenStack_tos].in_preproc = (pc->GetFlags() & PCF_IN_PREPROC) != 0;
+ }
+}
+
+
+/**
+ * Removes the top entry
+ *
+ * @param frm The parse frame
+ * @param pc The chunk causing the push
+ */
+static void indent_pse_pop(struct parse_frame& frm, Chunk *pc)
+{
+ /* Bump up the index and initialize it */
+ if (frm.pse_tos > 0)
+ {
+ if (pc != NULL)
+ {
+ LOG_FMT(LINDPSE, "%4d] CLOSE [%d,%s] on %s, started on line %d, level=%d/%d\n",
+ pc->GetOrigLine(), frm.pse_tos,
+ get_token_name(frm.m_parenStack[frm.m_parenStack_tos].type),
+ get_token_name(pc->GetType()),
+ frm.m_parenStack[frm.m_parenStack_tos].open_line,
+ frm.m_parenStack[frm.m_parenStack_tos].level,
+ pc->GetLevel());
+ }
+ else
+ {
+ LOG_FMT(LINDPSE, " EOF] CLOSE [%d,%s], started on line %d\n",
+ frm.m_parenStack_tos, get_token_name(frm.m_parenStack[frm.m_parenStack_tos].type),
+ frm.m_parenStack[frm.m_parenStack_tos].open_line);
+ }
+ frm.pse_tos--;
+ }
+}
+
+
+static int token_indent(E_Token type)
+{
+ switch (type)
+ {
+ case CT_IF:
+ case CT_DO:
+ return(3);
+
+ case CT_FOR:
+ case CT_ELSE: // wacky, but that's what is wanted
+ return(4);
+
+ case CT_WHILE:
+ return(6);
+
+ case CT_SWITCH:
+ return(7);
+
+ case CT_ELSEIF:
+ return(8);
+
+ default:
+ return(0); //cpd.settings[UO_indent_braces].n;
+ }
+}
+
+
+/**
+ * Change the top-level indentation only by changing the column member in
+ * the chunk structures.
+ * The level indicator must already be set.
+ */
+void indent_text(void)
+{
+ Chunk *pc;
+ Chunk *next;
+ Chunk *prev = NULL;
+ bool did_newline = true;
+ int idx;
+ int vardefcol = 0;
+ int indent_size = cpd.settings[UO_indent_columns].n;
+ int tmp;
+ struct parse_frame frm;
+ bool in_preproc = false, was_preproc = false;
+ int indent_column;
+ int cout_col = 0; // for aligning << stuff
+ int cout_level = 0; // for aligning << stuff
+ int parent_token_indent = 0;
+
+ memset(&frm, 0, sizeof(frm));
+
+ /* dummy top-level entry */
+ frm.m_parenStack[0].indent = 1;
+ frm.m_parenStack[0].indent_tmp = 1;
+ frm.m_parenStack[0].type = CT_EOF;
+
+ pc = Chunk::GetHead();
+ while (pc != NULL)
+ {
+ /* Handle proprocessor transitions */
+ was_preproc = in_preproc;
+ in_preproc = (pc->GetFlags() & PCF_IN_PREPROC) != 0;
+
+ if (cpd.settings[UO_indent_brace_parent].b)
+ {
+ parent_token_indent = token_indent(pc->GetParentType());
+ }
+
+ /* Clean up after a #define */
+ if (!in_preproc)
+ {
+ while ((frm.m_parenStack_tos > 0) && frm.m_parenStack[frm.m_parenStack_tos].in_preproc)
+ {
+ indent_pse_pop(frm, pc);
+ }
+ }
+ else
+ {
+ pf_check(&frm, pc);
+
+ if (!was_preproc)
+ {
+ /* Transition into a preproc by creating a dummy indent */
+ frm.level++;
+ indent_pse_push(frm, pc);
+
+ frm.m_parenStack[frm.m_parenStack_tos].indent = 1 + indent_size;
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos].indent;
+ }
+ }
+
+ if ((cout_col > 0) &&
+ (pc->IsSemicolon() ||
+ (pc->GetLevel() < cout_level)))
+ {
+ cout_col = 0;
+ cout_level = 0;
+ }
+
+ /**
+ * Handle non-brace closures
+ */
+
+ int old_pse_tos;
+ do
+ {
+ old_pse_tos = frm.pse_tos;
+
+ /* End anything that drops a level
+ * REVISIT: not sure about the preproc check
+ */
+ if (!pc->IsNewline() &&
+ !pc->IsComment() &&
+ ((pc->GetFlags() & PCF_IN_PREPROC) == 0) &&
+ (frm.m_parenStack[frm.m_parenStack_tos].level > pc->GetLevel()))
+ {
+ indent_pse_pop(frm, pc);
+ }
+
+ if (frm.m_parenStack[frm.m_parenStack_tos].level == pc->GetLevel())
+ {
+ /* process virtual braces closes (no text output) */
+ if ((pc->GetType() == CT_VBRACE_CLOSE) &&
+ (frm.m_parenStack[frm.m_parenStack_tos].type == CT_VBRACE_OPEN))
+ {
+ indent_pse_pop(frm, pc);
+ frm.level--;
+ pc = pc->GetNext();
+ }
+
+ /* End any assign operations with a semicolon on the same level */
+ if ((frm.m_parenStack[frm.m_parenStack_tos].type == CT_ASSIGN) &&
+ (pc->IsSemicolon() ||
+ (pc->GetType() == CT_COMMA) ||
+ (pc->GetType() == CT_BRACE_OPEN)))
+ {
+ indent_pse_pop(frm, pc);
+ }
+
+ /* End any CPP class colon crap */
+ if ((frm.m_parenStack[frm.m_parenStack_tos].type == CT_CLASS_COLON) &&
+ ((pc->GetType() == CT_BRACE_OPEN) ||
+ pc->IsSemicolon()))
+ {
+ indent_pse_pop(frm, pc);
+ }
+
+ /* a case is ended with another case or a close brace */
+ if ((frm.m_parenStack[frm.m_parenStack_tos].type == CT_CASE) &&
+ ((pc->GetType() == CT_BRACE_CLOSE) ||
+ (pc->GetType() == CT_CASE)))
+ {
+ indent_pse_pop(frm, pc);
+ }
+
+ /* a return is ended with a semicolon */
+ if ((frm.m_parenStack[frm.m_parenStack_tos].type == CT_RETURN) &&
+ pc->IsSemicolon())
+ {
+ indent_pse_pop(frm, pc);
+ }
+
+ /* Close out parens and squares */
+ if ((frm.m_parenStack[frm.m_parenStack_tos].type == (pc->GetType() - 1)) &&
+ ((pc->GetType() == CT_PAREN_CLOSE) ||
+ (pc->GetType() == CT_SPAREN_CLOSE) ||
+ (pc->GetType() == CT_FPAREN_CLOSE) ||
+ (pc->GetType() == CT_SQUARE_CLOSE) ||
+ (pc->GetType() == CT_ANGLE_CLOSE)))
+ {
+ indent_pse_pop(frm, pc);
+ frm.SetParenCount(frm.GetParenCount() - 1);
+ }
+ }
+ } while (old_pse_tos > frm.pse_tos);
+
+ /* Grab a copy of the current indent */
+ indent_column = frm.m_parenStack[frm.m_parenStack_tos].indent_tmp;
+
+ if (!pc->IsNewline() && !pc->IsComment())
+ {
+ LOG_FMT(LINDPC, " -=[ %.*s ]=- top=%d %s %d/%d\n",
+ pc->len, pc->GetStr(),
+ frm.pse_tos,
+ get_token_name(frm.m_parenStack[frm.m_parenStack_tos].type),
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp,
+ frm.m_parenStack[frm.m_parenStack_tos].indent);
+ }
+
+ /**
+ * Handle stuff that can affect the current indent:
+ * - brace close
+ * - vbrace open
+ * - brace open
+ * - case (immediate)
+ * - labels (immediate)
+ * - class colons (immediate)
+ *
+ * And some stuff that can't
+ * - open paren
+ * - open square
+ * - assignment
+ * - return
+ */
+
+ if (pc->GetType() == CT_BRACE_CLOSE)
+ {
+ if (frm.m_parenStack[frm.m_parenStack_tos].type == CT_BRACE_OPEN)
+ {
+ indent_pse_pop(frm, pc);
+ frm.level--;
+
+ /* Update the indent_column if needed */
+ if (!cpd.settings[UO_indent_braces].b &&
+ (parent_token_indent == 0))
+ {
+ indent_column = frm.m_parenStack[frm.m_parenStack_tos].indent_tmp;
+ }
+
+ if ((pc->GetParentType() == CT_IF) ||
+ (pc->GetParentType() == CT_ELSE) ||
+ (pc->GetParentType() == CT_ELSEIF) ||
+ (pc->GetParentType() == CT_DO) ||
+ (pc->GetParentType() == CT_WHILE) ||
+ (pc->GetParentType() == CT_SWITCH) ||
+ (pc->GetParentType() == CT_FOR))
+ {
+ indent_column += cpd.settings[UO_indent_brace].n;
+ }
+ }
+ }
+ else if (pc->GetType() == CT_VBRACE_OPEN)
+ {
+ frm.level++;
+ indent_pse_push(frm, pc);
+
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - 1].indent + indent_size;
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos].indent;
+
+ /* Always indent on virtual braces */
+ indent_column = frm.m_parenStack[frm.m_parenStack_tos].indent_tmp;
+ }
+ else if (pc->GetType() == CT_BRACE_OPEN)
+ {
+ frm.level++;
+ indent_pse_push(frm, pc);
+
+ if (frm.GetParenCount() != 0)
+ {
+ /* We are inside ({ ... }) -- indent one tab from the paren */
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - 1].indent_tmp + indent_size;
+ }
+ else
+ {
+ /* Use the prev indent level + indent_size. */
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - 1].indent + indent_size;
+
+ /* If this brace is part of a statement, bump it out by indent_brace */
+ if ((pc->GetParentType() == CT_IF) ||
+ (pc->GetParentType() == CT_ELSE) ||
+ (pc->GetParentType() == CT_ELSEIF) ||
+ (pc->GetParentType() == CT_DO) ||
+ (pc->GetParentType() == CT_WHILE) ||
+ (pc->GetParentType() == CT_SWITCH) ||
+ (pc->GetParentType() == CT_FOR))
+ {
+ if (parent_token_indent != 0)
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent += parent_token_indent - indent_size;
+ }
+ else
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent += cpd.settings[UO_indent_brace].n;
+ indent_column += cpd.settings[UO_indent_brace].n;
+ }
+ }
+ else if (pc->GetParentType() == CT_CASE)
+ {
+ /* The indent_case_brace setting affects the parent CT_CASE */
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp += cpd.settings[UO_indent_case_brace].n;
+ frm.m_parenStack[frm.m_parenStack_tos].indent += cpd.settings[UO_indent_case_brace].n;
+ }
+ else if ((pc->GetParentType() == CT_CLASS) && !cpd.settings[UO_indent_class].b)
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent -= indent_size;
+ }
+ else if ((pc->GetParentType() == CT_NAMESPACE) && !cpd.settings[UO_indent_namespace].b)
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent -= indent_size;
+ }
+ }
+
+ if ((pc->GetFlags() & PCF_DONT_INDENT) != 0)
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent = pc->GetColumn();
+ indent_column = pc->GetColumn();
+ }
+ else
+ {
+ /**
+ * If there isn't a newline between the open brace and the next
+ * item, just indent to wherever the next token is.
+ * This covers this sort of stuff:
+ * { a++;
+ * b--; };
+ */
+ next = pc->GetNextNcNnl();
+ if (!pc->IsNewlineBetween(next))
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent = next->GetColumn();
+ }
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos].indent;
+ frm.m_parenStack[frm.m_parenStack_tos].open_line = pc->GetOrigLine();
+
+ /* Update the indent_column if needed */
+ if (cpd.settings[UO_indent_braces].n ||
+ (parent_token_indent != 0))
+ {
+ indent_column = frm.m_parenStack[frm.m_parenStack_tos].indent_tmp;
+ }
+ }
+ }
+ else if (pc->GetType() == CT_CASE)
+ {
+ /* Start a case - indent UO_indent_switch_case from the switch level */
+ tmp = frm.m_parenStack[frm.m_parenStack_tos].indent + cpd.settings[UO_indent_switch_case].n;
+
+ indent_pse_push(frm, pc);
+
+ frm.m_parenStack[frm.m_parenStack_tos].indent = tmp;
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = tmp - indent_size;
+
+ /* Always set on case statements */
+ indent_column = frm.m_parenStack[frm.m_parenStack_tos].indent_tmp;
+ }
+ else if (pc->GetType() == CT_LABEL)
+ {
+ /* Labels get sent to the left or backed up */
+ if (cpd.settings[UO_indent_label].n > 0)
+ {
+ indent_column = cpd.settings[UO_indent_label].n;
+ }
+ else
+ {
+ indent_column = frm.m_parenStack[frm.m_parenStack_tos].indent +
+ cpd.settings[UO_indent_label].n;
+ }
+ }
+ else if (pc->GetType() == CT_CLASS_COLON)
+ {
+ /* just indent one level */
+ indent_pse_push(frm, pc);
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - 1].indent_tmp + indent_size;
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos].indent;
+
+ indent_column = frm.m_parenStack[frm.m_parenStack_tos].indent_tmp;
+
+ if (cpd.settings[UO_indent_class_colon].b)
+ {
+ prev = pc->GetPrev();
+ if (prev->IsNewline())
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent += 2;
+ /* don't change indent of current line */
+ }
+ }
+ }
+ else if ((pc->GetType() == CT_PAREN_OPEN) ||
+ (pc->GetType() == CT_SPAREN_OPEN) ||
+ (pc->GetType() == CT_FPAREN_OPEN) ||
+ (pc->GetType() == CT_SQUARE_OPEN) ||
+ (pc->GetType() == CT_ANGLE_OPEN))
+ {
+ /* Open parens and squares - never update indent_column */
+ indent_pse_push(frm, pc);
+ frm.m_parenStack[frm.m_parenStack_tos].indent = pc->GetColumn() + pc->len;
+
+ if (cpd.settings[UO_indent_func_call_param].b &&
+ (pc->GetType() == CT_FPAREN_OPEN) &&
+ (pc->GetParentType() == CT_FUNC_CALL))
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - 1].indent + indent_size;
+ }
+
+ if ((chunk_is_str(pc, "(", 1) && !cpd.settings[UO_indent_paren_nl].b) ||
+ (chunk_is_str(pc, "[", 1) && !cpd.settings[UO_indent_square_nl].b))
+ {
+ next = pc->GetNextNc();
+ if (next->IsNewline())
+ {
+ int sub = 1;
+ if (frm.m_parenStack[frm.m_parenStack_tos - 1].type == CT_ASSIGN)
+ {
+ sub = 2;
+ }
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - sub].indent + indent_size;
+ }
+ }
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos].indent;
+ frm.SetParenCount(frm.GetParenCount() + 1);
+ }
+ else if (pc->GetType() == CT_ASSIGN)
+ {
+ /**
+ * if there is a newline after the '=', just indent one level,
+ * otherwise align on the '='.
+ * Never update indent_column.
+ */
+ next = pc->GetNext();
+ if (next != NULL)
+ {
+ indent_pse_push(frm, pc);
+ if (next->IsNewline())
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - 1].indent_tmp + indent_size;
+ }
+ else
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent = pc->GetColumn() + pc->len + 1;
+ }
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos].indent;
+ }
+ }
+ else if (pc->GetType() == CT_RETURN)
+ {
+ /* don't count returns inside a () or [] */
+ if (pc->GetLevel() == pc->GetBraceLevel())
+ {
+ indent_pse_push(frm, pc);
+ frm.m_parenStack[frm.m_parenStack_tos].indent = frm.m_parenStack[frm.m_parenStack_tos - 1].indent + pc->len + 1;
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos - 1].indent;
+ }
+ }
+ else if (chunk_is_str(pc, "<<", 2))
+ {
+ if (cout_col == 0)
+ {
+ cout_col = pc->GetColumn();
+ cout_level = pc->GetLevel();
+ }
+ }
+ else
+ {
+ /* anything else? */
+ }
+
+
+ /**
+ * Indent the line if needed
+ */
+ if (did_newline && !pc->IsNewline() && (pc->len != 0))
+ {
+ /**
+ * Check for special continuations.
+ * Note that some of these could be done as a stack item like
+ * everything else
+ */
+
+ prev = pc->GetPrevNcNnl();
+ if ((pc->GetType() == CT_MEMBER) ||
+ (pc->GetType() == CT_DC_MEMBER) ||
+ ((prev != NULL) &&
+ ((prev->GetType() == CT_MEMBER) ||
+ (prev->GetType() == CT_DC_MEMBER))))
+ {
+ tmp = cpd.settings[UO_indent_member].n + indent_column;
+ LOG_FMT(LINDENT, "%s: %d] member => %d\n",
+ __func__, pc->GetOrigLine(), tmp);
+ reindent_line(pc, tmp);
+ }
+ else if (chunk_is_str(pc, "<<", 2) && (cout_col > 0))
+ {
+ LOG_FMT(LINDENT, "%s: %d] cout_col => %d\n",
+ __func__, pc->GetOrigLine(), cout_col);
+ reindent_line(pc, cout_col);
+ }
+ else if ((vardefcol > 0) &&
+ (pc->GetType() == CT_WORD) &&
+ ((pc->GetFlags() & PCF_VAR_DEF) != 0) &&
+ (prev != NULL) && (prev->GetType() == CT_COMMA))
+ {
+ LOG_FMT(LINDENT, "%s: %d] Vardefcol => %d\n",
+ __func__, pc->GetOrigLine(), vardefcol);
+ reindent_line(pc, vardefcol);
+ }
+ else if ((pc->GetType() == CT_STRING) && (prev->GetType() == CT_STRING) &&
+ cpd.settings[UO_indent_align_string].b)
+ {
+ LOG_FMT(LINDENT, "%s: %d] String => %d\n",
+ __func__, pc->GetOrigLine(), prev->GetColumn());
+ reindent_line(pc, prev->GetColumn());
+ }
+ else if (pc->IsComment())
+ {
+ LOG_FMT(LINDENT, "%s: %d] comment => %d\n",
+ __func__, pc->GetOrigLine(), frm.m_parenStack[frm.m_parenStack_tos].indent_tmp);
+ indent_comment(pc, frm.m_parenStack[frm.m_parenStack_tos].indent_tmp);
+ }
+ else if (pc->GetType() == CT_PREPROC)
+ {
+ /* Preprocs are always in column 1. See indent_preproc() */
+ if (pc->GetColumn() != 1)
+ {
+ reindent_line(pc, 1);
+ }
+ }
+ else
+ {
+ if (pc->GetColumn() != indent_column)
+ {
+ LOG_FMT(LINDENT, "%s: %d] indent => %d [%.*s]\n",
+ __func__, pc->GetOrigLine(), indent_column, pc->len, pc->GetStr());
+ reindent_line(pc, indent_column);
+ }
+ }
+ did_newline = false;
+ }
+
+ /**
+ * Handle variable definition continuation indenting
+ */
+ if ((pc->GetType() == CT_WORD) &&
+ ((pc->GetFlags() & PCF_IN_FCN_DEF) == 0) &&
+ ((pc->GetFlags() & PCF_VAR_1ST_DEF) == PCF_VAR_1ST_DEF))
+ {
+ vardefcol = pc->GetColumn();
+ }
+ if (pc->IsSemicolon() ||
+ ((pc->GetType() == CT_BRACE_OPEN) && (pc->GetParentType() == CT_FUNCTION)))
+ {
+ vardefcol = 0;
+ }
+
+ /* if we hit a newline, reset indent_tmp */
+ if (pc->IsNewline() ||
+ (pc->GetType() == CT_COMMENT_MULTI) ||
+ (pc->GetType() == CT_COMMENT_CPP))
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = frm.m_parenStack[frm.m_parenStack_tos].indent;
+
+ /**
+ * Handle the case of a multi-line #define w/o anything on the
+ * first line (indent_tmp will be 1 or 0)
+ */
+ if ((pc->GetType() == CT_NL_CONT) &&
+ (frm.m_parenStack[frm.m_parenStack_tos].indent_tmp <= indent_size))
+ {
+ frm.m_parenStack[frm.m_parenStack_tos].indent_tmp = indent_size + 1;
+ }
+
+ /* Get ready to indent the next item */
+ did_newline = true;
+ }
+
+ if (!pc->IsComment() && !pc->IsNewline())
+ {
+ prev = pc;
+ }
+ pc = pc->GetNext();
+ }
+
+ /* Throw out any stuff inside a preprocessor - no need to warn */
+ while ((frm.m_parenStack_tos > 0) && frm.m_parenStack[frm.m_parenStack_tos].in_preproc)
+ {
+ indent_pse_pop(frm, pc);
+ }
+
+ for (idx = 1; idx <= frm.pse_tos; idx++)
+ {
+ LOG_FMT(LWARN, "%s:%d Unmatched %s\n",
+ cpd.filename, frm.m_parenStack[idx].open_line,
+ get_token_name(frm.m_parenStack[idx].type));
+ cpd.error_count++;
+ }
+}
+
+/**
+ * returns true if forward scan reveals only single newlines or comments
+ * stops when hits code
+ * false if next thing hit is a closing brace, also if 2 newlines in a row
+ */
+
+
+static bool single_line_comment_indent_rule_applies(Chunk *start)
+{
+ Chunk *pc = start;
+ int nl_count = 0;
+ if (!pc->IsSingleLineComment())
+ {
+ return(false);
+ }
+ /* scan forward, if only single newlines and comments before next line of code, we want to apply */
+ while ((pc = pc->GetNext()) != NULL)
+ {
+ if (pc->IsNewline())
+ {
+ if (nl_count > 0 || pc->GetNlCount() > 1)
+ {
+ return(false);
+ }
+
+ nl_count++;
+ }
+ else
+ {
+ nl_count = 0;
+ if (!pc->IsSingleLineComment())
+ {
+ /* here we check for things to run into that we wouldn't want to indent the comment for */
+ /* for example, non-single line comment, closing brace */
+ if (pc->IsComment() || pc->IsBraceClose())
+ {
+ return(false);
+ }
+
+ return(true);
+ }
+ }
+ }
+
+ return(false);
+}
+
+/**
+ * REVISIT: This needs to be re-checked, maybe cleaned up
+ *
+ * Indents comments in a (hopefully) smart manner.
+ *
+ * There are two type of comments that get indented:
+ * - stand alone (ie, no tokens on the line before the comment)
+ * - trailing comments (last token on the line apart from a linefeed)
+ * + note that a stand-alone comment is a special case of a trailing
+ *
+ * The stand alone comments will get indented in one of three ways:
+ * - column 1:
+ * + There is an empty line before the comment AND the indent level is 0
+ * + The comment was originally in column 1
+ *
+ * - Same column as trailing comment on previous line (ie, aligned)
+ * + if originally within TBD (3) columns of the previous comment
+ *
+ * - syntax indent level
+ * + doesn't fit in the previous categories
+ *
+ * Options modify this behavior:
+ * - keep original column (don't move the comment, if possible)
+ * - keep relative column (move out the same amount as first item on line)
+ * - fix trailing comment in column TBD
+ *
+ * @param pc The comment, which is the first item on a line
+ * @param col The column if this is to be put at indent level
+ */
+static void indent_comment(Chunk *pc, int col)
+{
+ Chunk *nl;
+ Chunk *prev;
+
+ LOG_FMT(LCMTIND, "%s: line %d, col %d, level %d: ", __func__,
+ pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel());
+
+ /* force column 1 comment to column 1 if not changing them */
+ if ((pc->GetOrigCol() == 1) && !cpd.settings[UO_indent_col1_comment].b)
+ {
+ LOG_FMT(LCMTIND, "rule 1 - keep in col 1\n");
+ pc->SetColumn(1);
+ return;
+ }
+
+ nl = pc->GetPrev();
+
+ /* outside of any expression or statement? */
+ if (pc->GetLevel() == 0)
+ {
+ if ((nl != NULL) && (nl->GetNlCount() > 1))
+ {
+ LOG_FMT(LCMTIND, "rule 2 - level 0, nl before\n");
+ pc->SetColumn(1);
+ return;
+ }
+ }
+
+ prev = nl->GetPrev();
+ if (prev->IsComment() && (nl->GetNlCount() == 1))
+ {
+ int coldiff = prev->GetOrigCol() - pc->GetOrigCol();
+
+ if ((coldiff <= 3) && (coldiff >= -3))
+ {
+ pc->SetColumn(prev->GetColumn());
+ LOG_FMT(LCMTIND, "rule 3 - prev comment, coldiff = %d, now in %d\n",
+ coldiff, pc->GetColumn());
+ return;
+ }
+ }
+ /* check if special single line comment rule applies */
+ if (cpd.settings[UO_indent_sing_line_comments].n > 0 && single_line_comment_indent_rule_applies(pc))
+ {
+ pc->SetColumn(col + cpd.settings[UO_indent_sing_line_comments].n);
+ LOG_FMT(LCMTIND, "rule 4 - single line comment indent, now in %d\n", pc->GetColumn());
+ return;
+ }
+ LOG_FMT(LCMTIND, "rule 5 - fall-through, stay in %d\n", col);
+
+ pc->SetColumn(col);
+}
+
+
+/**
+ * Put spaces on either side of the preproc (#) symbol.
+ * This is done by pointing pc->GetStr() into pp_str and adjusting the
+ * length.
+ */
+void indent_preproc(void)
+{
+ Chunk *pc;
+ Chunk *next;
+ int pp_level;
+ int pp_level_sub = 0;
+ int tmp;
+
+ /* Define a string of 16 spaces + # + 16 spaces */
+ static const char *pp_str = " # ";
+ static const char *alt_str = " %: ";
+
+ /* Scan to see if the whole file is covered by one #ifdef */
+ int stage = 0;
+
+ for (pc = Chunk::GetHead(); pc != NULL; pc = pc->GetNext())
+ {
+ if (pc->IsComment() || pc->IsNewline())
+ {
+ continue;
+ }
+
+ if (stage == 0)
+ {
+ /* Check the first PP, make sure it is an #if type */
+ if (pc->GetType() != CT_PREPROC)
+ {
+ break;
+ }
+ next = pc->GetNext();
+ if ((next == NULL) || (next->GetType() != CT_PP_IF))
+ {
+ break;
+ }
+ stage = 1;
+ }
+ else if (stage == 1)
+ {
+ /* Scan until a PP at level 0 is found - the close to the #if */
+ if ((pc->GetType() == CT_PREPROC) &&
+ (pc->GetPpLevel() == 0))
+ {
+ stage = 2;
+ }
+ continue;
+ }
+ else if (stage == 2)
+ {
+ /* We should only see the rest of the preprocessor */
+ if ((pc->GetType() == CT_PREPROC) ||
+ ((pc->GetFlags() & PCF_IN_PREPROC) == 0))
+ {
+ stage = 0;
+ break;
+ }
+ }
+ }
+
+ if (stage == 2)
+ {
+ LOG_FMT(LINFO, "The whole file is covered by a #IF\n");
+ pp_level_sub = 1;
+ }
+
+ for (pc = Chunk::GetHead(); pc != NULL; pc = pc->GetNext())
+ {
+ if (pc->GetType() != CT_PREPROC)
+ {
+ continue;
+ }
+
+ if (pc->GetColumn() != 1)
+ {
+ /* Don't handle preprocessors that aren't in column 1 */
+ LOG_FMT(LINFO, "%s: Line %d doesn't start in column 1 (%d)\n",
+ __func__, pc->GetOrigLine(), pc->GetColumn());
+ continue;
+ }
+
+ /* point into pp_str */
+ if (pc->len == 2)
+ {
+ /* alternate token crap */
+ pc->Str() = &alt_str[16];
+ }
+ else
+ {
+ pc->Str() = &pp_str[16];
+ }
+
+ pp_level = pc->GetPpLevel() - pp_level_sub;
+ if (pp_level < 0)
+ {
+ pp_level = 0;
+ }
+ else if (pp_level > 16)
+ {
+ pp_level = 16;
+ }
+
+ /* Note that the indent is removed by default */
+ if ((cpd.settings[UO_pp_indent].a & AV_ADD) != 0)
+ {
+ /* Need to add some spaces */
+ pc->Str() -= pp_level;
+ pc->len += pp_level;
+ }
+ else if (cpd.settings[UO_pp_indent].a == AV_IGNORE)
+ {
+ tmp = (pc->GetOrigCol() <= 16) ? pc->GetOrigCol() - 1 : 16;
+ pc->Str() -= tmp;
+ pc->len += tmp;
+ }
+
+ /* Add spacing by adjusting the length */
+ if ((cpd.settings[UO_pp_space].a & AV_ADD) != 0)
+ {
+ pc->len += pp_level;
+ }
+
+ next = pc->GetNext();
+ if (next != NULL)
+ {
+ reindent_line(next, pc->len + 1);
+ }
+
+ LOG_FMT(LPPIS, "%s: Indent line %d to %d (len %d, next->col %d)\n",
+ __func__, pc->GetOrigLine(), GetPpLevel(), pc->len, next->GetColumn());
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent-inside-ternary-operator.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent-inside-ternary-operator.cpp
index 40cdad92..40cdad92 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent-inside-ternary-operator.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent-inside-ternary-operator.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent-misc.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent-misc.cpp
index 78a924f4..78a924f4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent-misc.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent-misc.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent-off.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent-off.cpp
index 79a7ad65..79a7ad65 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent-off.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent-off.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent.cpp
index a8c4a514..a8c4a514 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_braces_no.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_braces_no.h
index c5b39b37..c5b39b37 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_braces_no.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_braces_no.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_comma_brace_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_comma_brace_func.cpp
index d417b5be..d417b5be 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_comma_brace_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_comma_brace_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_comma_brace_glob.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_comma_brace_glob.cpp
index 8e01afc6..8e01afc6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_comma_brace_glob.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_comma_brace_glob.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_comment_align_thresh.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_comment_align_thresh.cpp
index 7ddfacbf..7ddfacbf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_comment_align_thresh.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_comment_align_thresh.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_ctor_init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_ctor_init.cpp
index d9fefe24..d9fefe24 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_ctor_init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_ctor_init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_ctor_members_twice.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_ctor_members_twice.cpp
index 4fbd1b4c..4fbd1b4c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_ctor_members_twice.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_ctor_members_twice.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_func_alias_prototype.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_func_alias_prototype.cpp
index 7bd2afdc..7bd2afdc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_func_alias_prototype.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_func_alias_prototype.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_namespace.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_namespace.h
index f97bd324..f97bd324 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_namespace.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_namespace.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_namespace2.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_namespace2.h
index db2ce47d..db2ce47d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_namespace2.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_namespace2.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_namespace_inner_only.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_namespace_inner_only.h
index a73879a7..a73879a7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_namespace_inner_only.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_namespace_inner_only.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_namespace_single_indent.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_namespace_single_indent.h
index 97d57444..97d57444 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_namespace_single_indent.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_namespace_single_indent.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_off_after_return.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_off_after_return.cpp
index 58e24797..58e24797 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_off_after_return.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_off_after_return.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_param.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_param.cpp
index c194141b..c194141b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_param.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_param.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_paren_after_func_call.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_paren_after_func_call.cpp
index 96b38fba..96b38fba 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_paren_after_func_call.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_paren_after_func_call.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_paren_after_func_decl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_paren_after_func_decl.cpp
index ff8c3e44..ff8c3e44 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_paren_after_func_decl.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_paren_after_func_decl.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_paren_after_func_def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_paren_after_func_def.cpp
index 703e0422..703e0422 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_paren_after_func_def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_paren_after_func_def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_shift.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_shift.cpp
index 54684fa7..54684fa7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_shift.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_shift.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_switch_pp.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_switch_pp.cpp
index 1b76e218..1b76e218 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_switch_pp.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_switch_pp.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_ternary-1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_ternary-1.cpp
index 7281a2e6..7281a2e6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_ternary-1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_ternary-1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_var_def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_var_def.cpp
index 394cfb63..394cfb63 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_var_def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_var_def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_var_def_cont.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_var_def_cont.cpp
index d273ae52..d273ae52 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/indent_var_def_cont.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/indent_var_def_cont.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/init-list-call.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/init-list-call.cpp
index 70451ac4..70451ac4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/init-list-call.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/init-list-call.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/init_align.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/init_align.h
index ff1dcc9b..ff1dcc9b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/init_align.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/init_align.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/initlist_leading_commas.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/initlist_leading_commas.cpp
index 83188d77..83188d77 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/initlist_leading_commas.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/initlist_leading_commas.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/interface-keyword-in-cpp.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/interface-keyword-in-cpp.cpp
index bc039e18..bc039e18 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/interface-keyword-in-cpp.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/interface-keyword-in-cpp.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1752.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1752.cpp
index e3be4d50..e3be4d50 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1752.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1752.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1778.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1778.cpp
index 4eea46e0..4eea46e0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1778.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1778.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1782.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1782.cpp
index c12b83d0..c12b83d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1782.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1782.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1804.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1804.cpp
index 2923a4a2..2923a4a2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1804.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1804.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1916.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1916.cpp
index 4c819605..4c819605 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1916.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1916.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1919.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1919.cpp
index 187065d6..187065d6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1919.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1919.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1946.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1946.cpp
index 9682da68..9682da68 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1946.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1946.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1985.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1985.cpp
index 4e5685a1..4e5685a1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_1985.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_1985.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2000.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2000.cpp
index aa324f2e..aa324f2e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2000.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2000.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2001.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2001.cpp
index 39b9446d..39b9446d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2001.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2001.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2124-1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2124-1.cpp
index 8c582cf9..8c582cf9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2124-1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2124-1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2124-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2124-2.cpp
index 8c582cf9..8c582cf9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2124-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2124-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2209-1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2209-1.cpp
index a1ebb1a7..a1ebb1a7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2209-1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2209-1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2209-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2209-2.cpp
index 5725d3d7..5725d3d7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2209-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2209-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2623.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2623.cpp
index 5834e4b3..5834e4b3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_2623.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_2623.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3105_1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3105_1.cpp
new file mode 100644
index 00000000..a7d8cf8a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3105_1.cpp
@@ -0,0 +1,10 @@
+int short_function_name()
+{
+ call_some_really_long_function.of_some_sort(some_long_parameter1, some_long_parameter2);
+
+ void *test_func = library->symbol( TQString(TQString("test_%1").arg(module2.factoryName())).utf8() );
+
+ CHECK_COMPLETE_SIZE (iceConn, ICE_AuthNextPhase, length,
+ message->authDataLength + SIZEOF (iceAuthNextPhaseMsg), authData,
+ iceConn->connect_to_you ? IceFatalToConnection : IceFatalToProtocol);
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3105_2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3105_2.cpp
new file mode 100644
index 00000000..949e4fbe
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3105_2.cpp
@@ -0,0 +1,107 @@
+struct KPluginSelectionWidget::KPluginSelectionWidgetPrivate
+{
+ KPluginSelectionWidgetPrivate( KPluginSelector * _kps,
+ const TQString & _cat,
+ TDEConfigGroup * _config )
+ : widgetstack( 0 )
+ , kps( _kps )
+ , config( _config )
+ , tooltip( 0 )
+ , catname( _cat )
+ , currentplugininfo( 0 )
+ , visible( true )
+ , currentchecked( false )
+ , changed( 0 )
+ {
+ moduleParentComponents.setAutoDelete( true );
+ }
+};
+
+KPasswordDialog::KPasswordDialog(Types type, bool enableKeep, int extraBttn,
+ TQWidget *parent, const char *name)
+ : KDialogBase(parent, name, true, "", Ok|Cancel|extraBttn,
+ Ok, true), m_Keep(enableKeep? 1 : 0), m_Type(type), m_keepWarnLbl(0), d(new KPasswordDialogPrivate)
+{
+ d->iconName = "password";
+ init();
+
+ const TQString strengthBarWhatsThis(i18n("The password strength meter gives an indication of the security "
+ "of the password you have entered. To improve the strength of "
+ "the password, try:\n"
+ " - using a longer password;\n"
+ " - using a mixture of upper- and lower-case letters;\n"
+ " - using numbers or symbols, such as #, as well as letters."));
+
+ int retVal = KMessageBox::warningContinueCancel(this,
+ i18n( "The password you have entered has a low strength. "
+ "To improve the strength of "
+ "the password, try:\n"
+ " - using a longer password;\n"
+ " - using a mixture of upper- and lower-case letters;\n"
+ " - using numbers or symbols as well as letters.\n"
+ "\n"
+ "Would you like to use this password anyway?"),
+ i18n("Low Password Strength"));
+}
+
+static const int POPUP_FLAGS = TQt::WStyle_Customize | TQt::WDestructiveClose | TQt::WX11BypassWM
+ | TQt::WStyle_StaysOnTop | TQt::WStyle_Tool | TQt::WStyle_NoBorder;
+
+KPassivePopup::KPassivePopup( TQWidget *parent, const char *name, WFlags f )
+ : TQFrame( 0, name, (WFlags)(f ? (int)f : POPUP_FLAGS) ),
+ window( parent ? parent->winId() : 0L ), msgView( 0 ), topLayout( 0 ),
+ hideDelay( DEFAULT_POPUP_TIME ), hideTimer( new TQTimer( this, "hide_timer" ) ),
+ m_autoDelete( false )
+{
+ init( DEFAULT_POPUP_TYPE );
+
+ move( right ? d->anchor.x() - width() + 20 : ( d->anchor.x() < 11 ? 11 : d->anchor.x() - 20 ),
+ bottom ? d->anchor.y() - height() : ( d->anchor.y() < 11 ? 11 : d->anchor.y() ) );
+}
+
+TDEToggleAction *showMenubar( const TQObject *recvr, const char *slot, TDEActionCollection* parent, const char *_name )
+{
+ TDEToggleAction *ret;
+ ret = new TDEToggleAction(i18n("Show &Menubar"), "showmenu", TDEStdAccel::shortcut(TDEStdAccel::ShowMenubar), recvr, slot,
+ parent, _name ? _name : name(ShowMenubar));
+ ret->setWhatsThis( i18n( "Show Menubar<p>"
+ "Shows the menubar again after it has been hidden" ) );
+ KGuiItem guiItem( i18n("Hide &Menubar"), 0 /*same icon*/, TQString::null,
+ i18n( "Hide Menubar<p>"
+ "Hide the menubar. You can usually get it back using the right mouse button inside the window itself." ) );
+ return ret;
+}
+
+KProgressBoxDialog::KProgressBoxDialog(TQWidget* parent, const char* name,
+ const TQString& caption, const TQString& text,
+ bool modal)
+ : KDialogBase(KDialogBase::Plain, caption, KDialogBase::Cancel,
+ KDialogBase::Cancel, parent, name, modal),
+ mAutoClose(true),
+ mAutoReset(false),
+ mCancelled(false),
+ mAllowCancel(true),
+ mAllowTextEdit(false),
+ mShown(false),
+ mMinDuration(2000),
+ d(new KProgressBoxDialogPrivate)
+{
+ KWin::setIcons(winId(), kapp->icon(), kapp->miniIcon());
+}
+
+TDEPopupMenu *KPixmapRegionSelectorWidget::createPopupMenu()
+{
+ TDEPopupMenu *popup=new TDEPopupMenu(this, "PixmapRegionSelectorPopup");
+ popup->insertTitle(i18n("Image Operations"));
+
+ TDEAction *action = new TDEAction(i18n("&Rotate Clockwise"), "object-rotate-right",
+ 0, TQT_TQOBJECT(this), TQT_SLOT(rotateClockwise()),
+ TQT_TQOBJECT(popup), "rotateclockwise");
+ action->plug(popup);
+
+ action = new TDEAction(i18n("Rotate &Counterclockwise"), "object-rotate-left",
+ 0, TQT_TQOBJECT(this), TQT_SLOT(rotateCounterclockwise()),
+ TQT_TQOBJECT(popup), "rotatecounterclockwise");
+ action->plug(popup);
+ return popup;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3116-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3116-2.cpp
index 6e007772..6e007772 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3116-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3116-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3116.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3116.cpp
new file mode 100644
index 00000000..9a4a03d5
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3116.cpp
@@ -0,0 +1,213 @@
+// Singular with various newline formats
+auto f = [] -> void {
+ return;
+};
+
+auto f = [] -> void {
+ return;
+}();
+
+auto f = [] -> void
+{
+ return;
+}();
+
+auto f =
+[] -> void {
+ return;
+};
+
+auto f =
+[] -> void
+{
+ return;
+};
+
+auto f
+ = [] -> void {
+ int i = 0;
+ return;
+ };
+
+auto f
+ = []
+ {
+ int i = 0;
+ return;
+ };
+
+// Nested lambda
+auto f = [] {
+ auto g = [] {
+ auto h = [] {
+ return;
+ };
+ return;
+ };
+ return;
+};
+
+auto f = [] {
+ auto g = []
+ {
+ auto h = [] {
+ return;
+ };
+ return;
+ };
+ return;
+};
+
+auto f = []
+{
+ auto g = [] {
+ auto h = []
+ {
+ return;
+ };
+ return;
+ };
+ return;
+};
+
+// Nested lambda within functions
+FuncA(
+ [] { return; },
+ [] { return; }
+);
+
+FuncB([] { return; },
+ [] { return; }
+);
+
+FuncC([] { return; },
+ [] { return; }
+)();
+
+FuncD([] { return; },
+ [] { return; })();
+
+FuncE([] { return; },
+ [] { return; });
+
+A(
+ B([] (const std::string &s) -> bool {
+ s = "hello";
+ return true;
+ }), 1
+ );
+
+A(
+ B(
+ [] (const std::string &s) -> bool {
+ s = "hello";
+ return true;
+ }
+ ), 1
+ );
+
+// Inside scope
+{
+ std::thread([](const char *c) {
+ std::cout << c << std::endl;
+ }).detach();
+
+ std::thread(
+ [](const char *c) {
+ std::cout << c << std::endl;
+ }
+ ).detach();
+
+ auto f = [&](int a) {
+ return b;
+ };
+
+ auto f = [&](int a)
+ {
+ return b;
+ };
+}
+
+Func(std::count_if(v.begin(), v.end(), [&](const auto &a) {
+ return a == 3;
+ }));
+
+Func(
+ std::count_if(v.begin(), v.end(), [&](const auto &a)
+ {
+ return a == 3;
+ }));
+
+Func(
+ std::count_if(v.begin(), v.end(), [&](const auto &a) {
+ return a == 3;
+ }));
+
+Func(
+ std::count_if(v.begin(), v.end(), [&](const auto &a) {
+ return a == 3;
+ })
+ );
+
+// Test case from issue #3116
+const auto compare = [] (const auto i, const auto j)
+{
+ return i >= j;
+};
+
+std::sort(
+ vector.begin(),
+ vector.end(),
+ [] (const auto i, const auto j)
+{
+ return i >= j;
+}
+);
+
+// Test case from issue #3116
+if(isWidgetOfCurrentRow)
+{
+ it = std::find_if(
+ reloaded.begin(),
+ reloaded.end(),
+ [&rowGuid](const auto& device)
+ {
+ return (device.thingGUID == rowGuid && !device.isWidget);
+ }
+ );
+}
+else
+{
+ it = std::find_if(
+ reloaded.begin(),
+ reloaded.end(),
+ [&rowGuid](const auto& device)
+ {
+ return device.thingGUID == rowGuid;
+ }
+ );
+}
+
+// Test case from issue 1296 and some variants
+obj->Func([&](int a)
+ {
+ return b;
+ });
+
+obj->Func([] -> int
+ {
+ return b;
+ });
+
+obj->Func([]
+ {
+ return b;
+ }
+ );
+
+obj->Func(
+ Func([]
+ {
+ return b;
+ })
+ );
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3330.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3330.cpp
index 37062480..37062480 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3330.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3330.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3368.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3368.cpp
index 2158086c..2158086c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3368.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3368.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3378.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3378.cpp
index 319c3151..319c3151 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_3378.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_3378.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_523.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_523.cpp
index d203e398..d203e398 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_523.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_523.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_547_for_each.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_547_for_each.cpp
index cfbe7963..cfbe7963 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_547_for_each.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_547_for_each.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_564.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_564.cpp
index 0c289a8a..0c289a8a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_564.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_564.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_574-i.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_574-i.cpp
index c7730a54..c7730a54 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_574-i.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_574-i.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_574.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_574.cpp
index 96e910ca..96e910ca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_574.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_574.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_624_angle.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_624_angle.cpp
index 255db223..255db223 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_624_angle.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_624_angle.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_633_typename.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_633_typename.cpp
index e99742ef..e99742ef 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_633_typename.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_633_typename.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_672.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_672.cpp
index 6d8dde90..6d8dde90 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/issue_672.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/issue_672.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/kw_subst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/kw_subst.cpp
index e57868e2..e57868e2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/kw_subst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/kw_subst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/kw_subst2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/kw_subst2.cpp
index d167cc1c..d167cc1c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/kw_subst2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/kw_subst2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lambda.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lambda.cpp
index 7bc50606..7bc50606 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lambda.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lambda.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lambda2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lambda2.cpp
index a4b8a8c6..a4b8a8c6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lambda2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lambda2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lambda_brace_list.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lambda_brace_list.cpp
index da3db41f..da3db41f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lambda_brace_list.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lambda_brace_list.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lambda_in_one_liner.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lambda_in_one_liner.cpp
index c740c4bd..c740c4bd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lambda_in_one_liner.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lambda_in_one_liner.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lambda_selfcalling.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lambda_selfcalling.cpp
index 543290fa..543290fa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lambda_selfcalling.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lambda_selfcalling.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lineEndings-Mac.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lineEndings-Mac.cpp
index 608952c0..608952c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lineEndings-Mac.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lineEndings-Mac.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lineEndings-Unix.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lineEndings-Unix.cpp
index cdbf7653..cdbf7653 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lineEndings-Unix.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lineEndings-Unix.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lineEndings-Win.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lineEndings-Win.cpp
index 20fa083a..20fa083a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/lineEndings-Win.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/lineEndings-Win.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/long_br_cmt.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/long_br_cmt.cpp
index a7638876..a7638876 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/long_br_cmt.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/long_br_cmt.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/long_lines.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/long_lines.cpp
new file mode 100644
index 00000000..ee154e8b
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/long_lines.cpp
@@ -0,0 +1,25 @@
+void main()
+{
+ if (true)
+ {
+ /* Output the coordinates of the icon */
+ snprintf(&ret[strlen(ret)], ret_max-strlen(ret), "\nx=\"0px\"\ny=\"0px\"\n");
+ snprintf(&ret[strlen(ret)], ret_max-strlen(ret), "width=\"%d\"\n", icon->icon_width);
+ snprintf(&ret[strlen(ret)], ret_max-strlen(ret), "height=\"%d\"\n", icon->icon_height);
+ snprintf(&ret[strlen(ret)], ret_max-strlen(ret), "viewBox=\"%lf %lf %lf %lf\"\n", icon->x, icon->y, icon->width, icon->height);
+
+ snprintf(&ret[strlen(ret)], ret_max-strlen(ret), icon->x, icon->y, bar("viewBox=\"%lf %lf %lf %lf\"\n", icon->width), icon->height);
+
+ snprintf(&ret[strlen(ret)], ret_max-strlen(ret), "viewBox=\"%lf %lf %lf %lf\"\n", icon->x, icon->y, icon->width, icon->height);
+ snprintf(&ret[strlen(ret)], ret_max-strlen(ret), "viewBox=\"%lf %lf %lf %lf\"\n", foo(icon->x, icon->y, icon->width), icon->height);
+ snprintf(&ret[strlen(ret)], ret_max-strlen(ret), icon->x, icon->y, bar("viewBox=\"%lf %lf %lf %lf\"\n", icon->width), icon->height);
+ snprintf(&ret[strlen(ret)], ret_max-foo(ret, par), icon->x, icon->y, bar("viewBox=\"%lf %lf %lf %lf\"\n", icon->width), icon->height);
+
+ create_a_reeeeeeeeeeeeeeeeeeeeeeeeeeeeally_long_identifier name(some_function(bar1 + bar2), bar3, bar4);
+ create_a_reeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeally_long_identifier name(some_function(bar1 + bar2), bar3, bar4);
+
+ abc.def.ghi = call_some_other_really_long_function.of_some_sort_of_very_very_very_loooooooooong(some_long_parameter1, some_long_parameter2);
+ }
+}
+
+#define FOO(bar) create_a_really_long_identifier name(some_function(bar1 + bar2), bar3, bar4);
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/long_namespace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/long_namespace.cpp
index 89fe4435..89fe4435 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/long_namespace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/long_namespace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/macro_spaces.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/macro_spaces.cpp
index c27c6b5d..c27c6b5d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/macro_spaces.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/macro_spaces.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc.cpp
index 8a73b431..8a73b431 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc2.cpp
index b6ce3078..b6ce3078 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc3.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc3.cpp
index c7c10d6c..c7c10d6c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc3.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc3.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc4.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc4.cpp
index 725fa160..725fa160 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc4.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc4.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc5.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc5.cpp
index 570a4a76..570a4a76 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc5.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc5.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc6.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc6.cpp
index 95cc0383..95cc0383 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/misc6.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/misc6.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/mod_remove_empty_return-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/mod_remove_empty_return-2.cpp
index eb949c45..eb949c45 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/mod_remove_empty_return-2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/mod_remove_empty_return-2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/mod_remove_empty_return.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/mod_remove_empty_return.cpp
index ca3105da..ca3105da 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/mod_remove_empty_return.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/mod_remove_empty_return.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/ms-style-ref.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/ms-style-ref.cpp
index 213393b9..213393b9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/ms-style-ref.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/ms-style-ref.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/multi_line.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/multi_line.cpp
index df5f3a84..df5f3a84 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/multi_line.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/multi_line.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/namespace_namespace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/namespace_namespace.cpp
index cf6f921e..cf6f921e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/namespace_namespace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/namespace_namespace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/new_op.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/new_op.cpp
index 828215e8..828215e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/new_op.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/new_op.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl-class.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl-class.h
index 128974b7..128974b7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl-class.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl-class.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl-namespace.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl-namespace.h
index a436fcb7..a436fcb7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl-namespace.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl-namespace.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_assign_leave_one_liners.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_assign_leave_one_liners.cpp
index cf3325f0..cf3325f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_assign_leave_one_liners.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_assign_leave_one_liners.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_before_after.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_before_after.h
index fb77edf1..fb77edf1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_before_after.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_before_after.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_before_brace_open_test.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_before_brace_open_test.cpp
index 6e3daf66..6e3daf66 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_before_brace_open_test.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_before_brace_open_test.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_before_func_body_def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_before_func_body_def.cpp
index c7cab4c7..c7cab4c7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_before_func_body_def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_before_func_body_def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_before_struct_scoped_enum.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_before_struct_scoped_enum.cpp
index f4065b20..f4065b20 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_before_struct_scoped_enum.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_before_struct_scoped_enum.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_before_struct_struct.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_before_struct_struct.cpp
index edac027c..edac027c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_before_struct_struct.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_before_struct_struct.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_brace_brace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_brace_brace.cpp
index b698546a..b698546a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_brace_brace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_brace_brace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_fdef_brace_cond-f.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_fdef_brace_cond-f.cpp
index 6250d752..6250d752 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_fdef_brace_cond-f.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_fdef_brace_cond-f.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_fdef_brace_cond-fr.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_fdef_brace_cond-fr.cpp
index 6250d752..6250d752 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_fdef_brace_cond-fr.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_fdef_brace_cond-fr.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_fdef_brace_cond-r.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_fdef_brace_cond-r.cpp
index 6250d752..6250d752 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_fdef_brace_cond-r.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_fdef_brace_cond-r.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_fdef_brace_cond-rf.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_fdef_brace_cond-rf.cpp
index 6250d752..6250d752 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_fdef_brace_cond-rf.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_fdef_brace_cond-rf.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_for_leave_one_liners.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_for_leave_one_liners.cpp
index 382d2815..382d2815 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_for_leave_one_liners.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_for_leave_one_liners.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func-2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func-2.cpp
new file mode 100644
index 00000000..864a4277
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func-2.cpp
@@ -0,0 +1,32 @@
+class BSRRE1D_file : PhysicalFile
+{
+ int getFoo() { return(m_foo); }
+
+
+
+
+ void setFoo(int foo) { m_foo = foo; }
+ public BSRRE1D_file()
+ {
+ this.addFormatName("BSRRE1DF");
+ }
+private int m_foo;
+ public void xxx()
+ {
+ ahoj();
+ } // comment
+
+
+
+
+ public void yyy()
+ {
+ ahoj();
+ }
+
+ /* comment 2 */
+ public void xxx()
+ {
+ ahoj();
+ }
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func.cpp
index e27d7e55..e27d7e55 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_call_empty.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_call_empty.cpp
index 6678ee18..6678ee18 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_call_empty.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_call_empty.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_call_paren.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_call_paren.cpp
index 309a65a9..309a65a9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_call_paren.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_call_paren.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_call_paren_empty.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_call_paren_empty.cpp
index 6678ee18..6678ee18 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_call_paren_empty.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_call_paren_empty.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_decl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_decl.cpp
index 91a7184f..91a7184f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_decl.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_decl.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_def_paren_empty.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_def_paren_empty.cpp
index f1ba8607..f1ba8607 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_def_paren_empty.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_def_paren_empty.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_paren_empty.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_paren_empty.cpp
index 19965aac..19965aac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_paren_empty.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_paren_empty.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_scope_name.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_scope_name.cpp
index d221e974..d221e974 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_scope_name.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_scope_name.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_type_name.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_type_name.cpp
index 26e49663..26e49663 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_func_type_name.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_func_type_name.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_inside_namespace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_inside_namespace.cpp
index 4bdcb394..4bdcb394 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_inside_namespace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_inside_namespace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_max_blank_in_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_max_blank_in_func.cpp
index c87e6e68..c87e6e68 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/nl_max_blank_in_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/nl_max_blank_in_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/noexcept.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/noexcept.cpp
index e6ea9116..e6ea9116 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/noexcept.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/noexcept.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/not_lambda.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/not_lambda.cpp
index a9c65439..a9c65439 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/not_lambda.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/not_lambda.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/op_sym_empty.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/op_sym_empty.cpp
index 4b79ca9e..4b79ca9e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/op_sym_empty.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/op_sym_empty.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/operator.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/operator.cpp
index 6f2a7f03..6f2a7f03 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/operator.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/operator.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/operator_proto.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/operator_proto.cpp
index b14935ee..b14935ee 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/operator_proto.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/operator_proto.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/out-668.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/out-668.cpp
index 0dac74c3..0dac74c3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/out-668.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/out-668.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/output.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/output.cpp
index a770b7ca..a770b7ca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/output.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/output.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/override_virtual.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/override_virtual.cpp
index 537454b1..537454b1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/override_virtual.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/override_virtual.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/parameter-packs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/parameter-packs.cpp
index 6d734b1f..6d734b1f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/parameter-packs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/parameter-packs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/patch_32.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/patch_32.cpp
index 8d9e222e..8d9e222e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/patch_32.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/patch_32.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pos_assign.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pos_assign.cpp
index af55296b..af55296b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pos_assign.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pos_assign.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pos_bool_in_template.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pos_bool_in_template.h
index ef01470e..ef01470e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pos_bool_in_template.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pos_bool_in_template.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pos_shift.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pos_shift.cpp
index 4d55a541..4d55a541 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pos_shift.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pos_shift.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp-define-indent.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp-define-indent.cpp
index 8ec5657f..8ec5657f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp-define-indent.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp-define-indent.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp-pragma.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp-pragma.cpp
index 75b3c46d..75b3c46d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp-pragma.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp-pragma.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp_indent_brace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp_indent_brace.cpp
index 1e02efcb..1e02efcb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp_indent_brace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp_indent_brace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp_indent_case.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp_indent_case.cpp
index da61641a..da61641a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp_indent_case.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp_indent_case.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp_indent_extern.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp_indent_extern.cpp
index 76cfc4bf..76cfc4bf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp_indent_extern.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp_indent_extern.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp_indent_func_def.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp_indent_func_def.cpp
index 7a0bcecf..7a0bcecf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp_indent_func_def.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp_indent_func_def.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp_multi_comment.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp_multi_comment.cpp
index 98418c46..98418c46 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/pp_multi_comment.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/pp_multi_comment.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/proto-wrap.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/proto-wrap.cpp
index 35e8bea3..35e8bea3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/proto-wrap.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/proto-wrap.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/ptr-star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/ptr-star.cpp
index ff0ab369..ff0ab369 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/ptr-star.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/ptr-star.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/qt-1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/qt-1.cpp
index e318c1aa..e318c1aa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/qt-1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/qt-1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/qtargs.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/qtargs.cpp
index 5037d792..5037d792 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/qtargs.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/qtargs.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/region.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/region.cpp
index 28447084..28447084 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/region.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/region.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/return_braced_init.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/return_braced_init.cpp
index cf86baeb..cf86baeb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/return_braced_init.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/return_braced_init.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/return_init_list.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/return_init_list.cpp
index f58dfee5..f58dfee5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/return_init_list.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/return_init_list.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/return_remove.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/return_remove.cpp
new file mode 100644
index 00000000..41eafbc9
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/return_remove.cpp
@@ -0,0 +1,9 @@
+void
+function(skip_it)
+{
+ if (skip_it)
+ return;
+
+ do_it();
+ return;
+}
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/returns.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/returns.cpp
index 1085bd72..1085bd72 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/returns.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/returns.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sef.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sef.cpp
index add2fc4a..add2fc4a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sef.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sef.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/semi.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/semi.cpp
index 9f7832cd..9f7832cd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/semi.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/semi.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/semicolons.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/semicolons.cpp
index 52796f75..52796f75 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/semicolons.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/semicolons.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf.2886991.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf.2886991.cpp
index 97dfe0cf..97dfe0cf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf.2886991.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf.2886991.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf.3266678.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf.3266678.cpp
index 69f877ed..69f877ed 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf.3266678.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf.3266678.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf.3315874.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf.3315874.h
index 58921bc5..58921bc5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf.3315874.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf.3315874.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf557.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf557.cpp
index c7ba93cc..c7ba93cc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf557.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf557.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf562.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf562.cpp
index 15ee8e79..15ee8e79 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf562.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf562.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf567.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf567.cpp
index 0c1d5fc9..0c1d5fc9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf567.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf567.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf574.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf574.cpp
index 3f5a98d4..3f5a98d4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf574.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf574.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf583.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf583.cpp
index 8eba4d1e..8eba4d1e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf583.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf583.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf593.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf593.cpp
index 1fc0ded8..1fc0ded8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sf593.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sf593.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sim.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sim.h
index 29c52879..29c52879 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sim.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sim.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_after_angle.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_after_angle.cpp
index 18788919..18788919 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_after_angle.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_after_angle.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_after_constr_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_after_constr_colon.cpp
index caea467a..caea467a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_after_constr_colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_after_constr_colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_after_decltype.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_after_decltype.cpp
index 18448555..18448555 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_after_decltype.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_after_decltype.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_after_type.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_after_type.cpp
index 6f235d22..6f235d22 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_after_type.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_after_type.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_angle_paren.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_angle_paren.cpp
index 911aa53b..911aa53b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_angle_paren.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_angle_paren.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_arith_additive.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_arith_additive.cpp
index ab2096c8..ab2096c8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_arith_additive.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_arith_additive.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_balance_nested_parens.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_balance_nested_parens.cpp
index dc5f5e8e..dc5f5e8e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_balance_nested_parens.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_balance_nested_parens.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_before_byref_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_byref_func.cpp
index 7dd9c14a..7dd9c14a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_before_byref_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_byref_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_before_case_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_case_colon.cpp
index 0c534fe0..0c534fe0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_before_case_colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_case_colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_before_constr_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_constr_colon.cpp
index 796522c7..796522c7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_before_constr_colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_constr_colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_not_var_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_not_var_ptr_star.cpp
new file mode 100644
index 00000000..72187d7c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_not_var_ptr_star.cpp
@@ -0,0 +1,109 @@
+#include <stdio.h>
+
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char * const*foo3 = (char* const*)"foo";
+char * const *foo4 = (char* const *)"foo";
+char * const *foo5 = (char* const *)"foo";
+char*const*foo6 = (char*const*)"foo";
+
+char* const*foo7(char* const*);
+char* const *foo8(char* const *);
+
+int*const *bar0(int);
+char*const*bar1(char* const*);
+char*const *bar2(char* const *);
+char *const *bar3(char* const *);
+char *const *bar4(char* const *);
+
+void *operator new(int size);
+void*operator new(int size);
+void* operator new(int size);
+void *operator new(int size);
+void* operator new(int size);
+
+void *::alloc1(int size);
+void*::alloc2(int size);
+void* ::alloc3(int size);
+void * ::alloc4(int size);
+void * ::alloc5(int size);
+void * ::alloc6(int size);
+
+
+class Test {
+ void* method1();
+ void *method2();
+ void *method3();
+ void* method4();
+ void * method5();
+};
+
+void* Test::method1() { return nullptr; }
+void *Test::method2() { return NULL; }
+void *Test::method3() { return NULL; }
+void* Test::method4() { return nullptr; }
+void * Test::method5() { return 0; }
+
+
+namespace testing {
+
+int *func1();
+int*func2();
+int *func3();
+int*func4();
+int*func5();
+
+namespace test {
+int *foo();
+}
+
+}
+
+int *testing::func1() { return nullptr; }
+int* testing::func2() { return NULL; }
+int *testing::func3() { return nullptr; }
+int * testing::func4() { return NULL; }
+int * testing::func5() { return NULL; }
+
+int*testing::test::foo()
+{
+ return NULL;
+}
+
+namespace Bar {
+
+class Foo {
+ int*operator[] (int x) { }
+
+ Foo *get();
+}
+
+}
+
+Bar::Foo*Bar::Foo::get() { }
+
+void* not_malloc(const int);
+
+void*::not_malloc(const int n)
+{
+}
+
+int main()
+{
+ void (* name)();
+
+ int *const *x;
+ int *const*x;
+ (int* )x;
+ (const int *const)x;
+ (int const*)x;
+ (int const *)x;
+ int y = 2+*x;
+ return 0;
+}
+
+auto baz1() -> char* const*;
+auto baz2() -> char* const *;
+auto baz3() -> char * const *;
+auto baz4() -> char*const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_before_tr_emb_cmt_input.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_tr_emb_cmt_input.cpp
index 45ffb335..45ffb335 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_before_tr_emb_cmt_input.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_before_tr_emb_cmt_input.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_brace_brace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_brace_brace.cpp
index bb730d61..bb730d61 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_brace_brace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_brace_brace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_brace_catch.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_brace_catch.cpp
index 7b4bdc5e..7b4bdc5e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_brace_catch.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_brace_catch.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_cmt_cpp_region.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_cmt_cpp_region.cpp
index b70ef6b1..b70ef6b1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_cmt_cpp_region.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_cmt_cpp_region.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_cmt_cpp_start.cc b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_cmt_cpp_start.cc
index 6a9b203b..6a9b203b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_cmt_cpp_start.cc
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_cmt_cpp_start.cc
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_cond_question.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_cond_question.cpp
index cec6c827..cec6c827 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_cond_question.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_cond_question.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_cparen_oparen.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_cparen_oparen.cpp
index 83c60dd4..83c60dd4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_cparen_oparen.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_cparen_oparen.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_cpp_lambda_fparen.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_cpp_lambda_fparen.cpp
index e25d0496..e25d0496 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_cpp_lambda_fparen.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_cpp_lambda_fparen.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_decltype.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_decltype.cpp
index 3e2f7e47..3e2f7e47 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_decltype.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_decltype.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_endif_cmt.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_endif_cmt.cpp
index 9e5b2db8..9e5b2db8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_endif_cmt.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_endif_cmt.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_enum_assign.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_enum_assign.cpp
index 2ebab438..2ebab438 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_enum_assign.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_enum_assign.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_enum_colon.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_enum_colon.cpp
index a23c6afd..a23c6afd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_enum_colon.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_enum_colon.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_func_call_paren.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_func_call_paren.cpp
index 90798ef9..90798ef9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_func_call_paren.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_func_call_paren.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_inside_braces_enum.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_inside_braces_enum.cpp
index 8386e215..8386e215 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_inside_braces_enum.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_inside_braces_enum.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_not_not.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_not_not.cpp
index 4ef7f777..4ef7f777 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_not_not.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_not_not.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_paren_brace.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_paren_brace.cpp
index 4ac73f87..4ac73f87 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_paren_brace.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_paren_brace.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_qualifier_ptr_star.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_qualifier_ptr_star.cpp
new file mode 100644
index 00000000..5330b43a
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_qualifier_ptr_star.cpp
@@ -0,0 +1,8 @@
+char* const*foo1 = (char* const*)"foo";
+char* const *foo2 = (char* const *)"foo";
+
+char* const*foo3(char* const*);
+char* const *foo4(char* const *);
+
+auto foo5() -> char* const*;
+auto foo6() -> char* const *;
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_skip_vbrace_tokens.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_skip_vbrace_tokens.cpp
index fff4aff4..fff4aff4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_skip_vbrace_tokens.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_skip_vbrace_tokens.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_throw_paren.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_throw_paren.cpp
index f45f1a9a..f45f1a9a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_throw_paren.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_throw_paren.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_type_func.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_type_func.cpp
index 30e058e7..30e058e7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/sp_type_func.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/sp_type_func.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/squeeze_ifdef.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/squeeze_ifdef.cpp
index 42699d1d..42699d1d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/squeeze_ifdef.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/squeeze_ifdef.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/static.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/static.h
index 8121fef1..8121fef1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/static.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/static.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/stdcall.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/stdcall.cpp
index a2353599..a2353599 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/stdcall.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/stdcall.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/string_replace_tab_chars.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/string_replace_tab_chars.cpp
index 3534461b..3534461b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/string_replace_tab_chars.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/string_replace_tab_chars.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/strings.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/strings.cpp
index 1cfea449..1cfea449 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/strings.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/strings.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/tab-0.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/tab-0.cpp
index 474aba08..474aba08 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/tab-0.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/tab-0.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/tab-1.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/tab-1.cpp
index dc7a65c4..dc7a65c4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/tab-1.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/tab-1.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/templ_class.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/templ_class.h
index 0f102244..0f102244 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/templ_class.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/templ_class.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/templates.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/templates.cpp
index 737599bf..737599bf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/templates.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/templates.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/templates2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/templates2.cpp
index 46d41560..46d41560 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/templates2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/templates2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/templates3.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/templates3.cpp
index 55b11d26..55b11d26 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/templates3.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/templates3.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/templates4.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/templates4.cpp
index 10b96e4a..10b96e4a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/templates4.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/templates4.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/throws.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/throws.cpp
index 0419fc77..0419fc77 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/throws.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/throws.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/toggle_processing_cmt.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/toggle_processing_cmt.cpp
index 6f49594d..6f49594d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/toggle_processing_cmt.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/toggle_processing_cmt.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/toggle_processing_cmt2.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/toggle_processing_cmt2.cpp
index 6b4a0a39..6b4a0a39 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/toggle_processing_cmt2.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/toggle_processing_cmt2.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/trailing_return.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/trailing_return.cpp
index b5903ce9..b5903ce9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/trailing_return.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/trailing_return.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/trailing_return_byref_ptr.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/trailing_return_byref_ptr.cpp
index 14cffd63..14cffd63 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/trailing_return_byref_ptr.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/trailing_return_byref_ptr.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/try-catch-nl.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/try-catch-nl.cpp
index 447f3cbd..447f3cbd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/try-catch-nl.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/try-catch-nl.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/type_brace_init_lst.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/type_brace_init_lst.cpp
index 53e74de2..53e74de2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/type_brace_init_lst.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/type_brace_init_lst.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/uniform_initialization.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/uniform_initialization.cpp
index 37a131e0..37a131e0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/uniform_initialization.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/uniform_initialization.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/using-alias-in-define.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/using-alias-in-define.cpp
index 82854287..82854287 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/using-alias-in-define.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/using-alias-in-define.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/var_def_blks.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/var_def_blks.cpp
index aa76a9e8..aa76a9e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/var_def_blks.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/var_def_blks.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/var_def_gap.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/var_def_gap.cpp
index 0cca962b..0cca962b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/var_def_gap.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/var_def_gap.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/variadic-template.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/variadic-template.h
index f522097c..f522097c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/variadic-template.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/variadic-template.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/wacky-template.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/wacky-template.cpp
index 99e01b6e..99e01b6e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cpp/wacky-template.cpp
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cpp/wacky-template.cpp
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/1822.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/1822.cs
index a4269bd9..a4269bd9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/1822.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/1822.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/615_nested-usings.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/615_nested-usings.cs
index 14a31507..14a31507 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/615_nested-usings.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/615_nested-usings.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/620_getset-brace.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/620_getset-brace.cs
index f6ee6342..f6ee6342 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/620_getset-brace.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/620_getset-brace.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/621_this-spacing.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/621_this-spacing.cs
index bd28a5e8..bd28a5e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/621_this-spacing.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/621_this-spacing.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/625_where-constraints.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/625_where-constraints.cs
index 09274ab9..09274ab9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/625_where-constraints.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/625_where-constraints.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/630_bad-new-init-semicolon-removal.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/630_bad-new-init-semicolon-removal.cs
index 2e6d5a98..2e6d5a98 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/630_bad-new-init-semicolon-removal.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/630_bad-new-init-semicolon-removal.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/Issue_2705.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/Issue_2705.cs
index 9a1b3172..9a1b3172 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/Issue_2705.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/Issue_2705.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-11662.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-11662.cs
index 9a49fdba..9a49fdba 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-11662.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-11662.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-11993.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-11993.cs
index 6bc6529a..6bc6529a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-11993.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-11993.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-12303.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-12303.cs
index 01be8291..01be8291 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-12303.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-12303.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1288.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1288.cs
index 70554a02..70554a02 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1288.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1288.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1338.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1338.cs
index d10b4893..d10b4893 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1338.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1338.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1343.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1343.cs
index 852fe640..852fe640 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1343.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1343.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1345.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1345.cs
index e218e6a2..e218e6a2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1345.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1345.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-13955.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-13955.cs
index 940aa89b..940aa89b 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-13955.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-13955.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-14131.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-14131.cs
index c8c3c918..c8c3c918 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-14131.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-14131.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-17253.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-17253.cs
index 7342d82c..7342d82c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-17253.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-17253.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-18437.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-18437.cs
index aab6c498..aab6c498 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-18437.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-18437.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-18777.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-18777.cs
index 198d5be3..198d5be3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-18777.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-18777.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-18780.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-18780.cs
index 0eea713e..0eea713e 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-18780.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-18780.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-18829.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-18829.cs
index 62c9f8fb..62c9f8fb 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-18829.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-18829.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1919.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1919.cs
index 956fd0f8..956fd0f8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1919.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1919.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-19644.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-19644.cs
index da76bfbc..da76bfbc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-19644.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-19644.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1975.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1975.cs
index af678a93..af678a93 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1975.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1975.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1977.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1977.cs
index e4b1b375..e4b1b375 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1977.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1977.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1978.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1978.cs
index 14cbdc7d..14cbdc7d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-1978.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-1978.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-19895.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-19895.cs
index a22c6fa8..a22c6fa8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-19895.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-19895.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2007.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2007.cs
index 2e9f163a..2e9f163a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2007.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2007.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2008.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2008.cs
index eeb649dd..eeb649dd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2008.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2008.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2020.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2020.cs
index 37d9ef23..37d9ef23 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2020.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2020.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2021.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2021.cs
index 2b08fafe..2b08fafe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2021.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2021.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-21730.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-21730.cs
index 6fcb8c16..6fcb8c16 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-21730.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-21730.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2505.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2505.cs
index a17e6a5e..a17e6a5e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2505.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2505.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2506.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2506.cs
index 7bdbb81a..7bdbb81a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2506.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2506.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2684.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2684.cs
index 0c91b081..0c91b081 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2684.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2684.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2685.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2685.cs
index 4c11f20b..4c11f20b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-2685.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-2685.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-29933.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-29933.cs
index ed96bc87..ed96bc87 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-29933.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-29933.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-30498_2.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-30498_2.cs
index ba0d8515..ba0d8515 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-30498_2.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-30498_2.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-3083.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-3083.cs
index 5209dc72..5209dc72 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-3083.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-3083.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-32658.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-32658.cs
index 145da65f..145da65f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-32658.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-32658.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-3484.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-3484.cs
index 1235aa91..1235aa91 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-3484.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-3484.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-36862.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-36862.cs
index cb3cb448..cb3cb448 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-36862.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-36862.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-37241.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-37241.cs
index b2097c4f..b2097c4f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-37241.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-37241.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-40685.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-40685.cs
index a2f37547..a2f37547 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-40685.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-40685.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-58354.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-58354.cs
index 6c77de40..6c77de40 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-58354.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-58354.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-9917.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-9917.cs
index 5bd9dc64..5bd9dc64 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/UNI-9917.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/UNI-9917.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/add-nl-before-namespace.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/add-nl-before-namespace.cs
index 93a2cf04..93a2cf04 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/add-nl-before-namespace.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/add-nl-before-namespace.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_1591.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_1591.cs
index ac62df9e..ac62df9e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_1591.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_1591.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_1620.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_1620.cs
index 0c9d4eb9..0c9d4eb9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_1620.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_1620.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_1637.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_1637.cs
index 1f46d1bc..1f46d1bc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_1637.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_1637.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_1650.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_1650.cs
index 5c52aece..5c52aece 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_1650.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_1650.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_600.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_600.cs
index 3d93d861..3d93d861 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_600.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_600.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_620.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_620.cs
index f6ee6342..f6ee6342 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_620.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_620.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_i_679.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_i_679.cs
index 199ad7e6..199ad7e6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_i_679.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_i_679.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_i_935.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_i_935.cs
index d2c8ec95..d2c8ec95 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/bug_i_935.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/bug_i_935.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/cast.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/cast.cs
index 77761b89..77761b89 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/cast.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/cast.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/cmt_backslash_eol.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/cmt_backslash_eol.cs
index e56aec25..e56aec25 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/cmt_backslash_eol.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/cmt_backslash_eol.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/comma.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/comma.cs
index 794410f0..794410f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/comma.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/comma.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/delegate.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/delegate.cs
index 3a4b103c..3a4b103c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/delegate.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/delegate.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/exception-filters.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/exception-filters.cs
index 1e3abca3..1e3abca3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/exception-filters.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/exception-filters.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/fncall_as_ctor_in_attr.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/fncall_as_ctor_in_attr.cs
index cf52b46f..cf52b46f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/fncall_as_ctor_in_attr.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/fncall_as_ctor_in_attr.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/generics.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/generics.cs
index 7bbe04c7..7bbe04c7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/generics.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/generics.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/getset.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/getset.cs
index 59aaa5bc..59aaa5bc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/getset.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/getset.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/gs.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/gs.cs
index 16adc604..16adc604 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/gs.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/gs.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/ifcolalign.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/ifcolalign.cs
index d2e40c78..d2e40c78 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/ifcolalign.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/ifcolalign.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/ifcomment.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/ifcomment.cs
index 6663a6ca..6663a6ca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/ifcomment.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/ifcomment.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/indent-multistring-coulmn1.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/indent-multistring-coulmn1.cs
index 56bdf473..56bdf473 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/indent-multistring-coulmn1.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/indent-multistring-coulmn1.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/logger.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/logger.cs
index defede8a..defede8a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/logger.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/logger.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/mdarray_space.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/mdarray_space.cs
index e5338c11..e5338c11 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/mdarray_space.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/mdarray_space.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/misc-failures.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/misc-failures.cs
index 857c06f9..857c06f9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/misc-failures.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/misc-failures.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/mod_full_brace_nl_block_rem_mlcond.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/mod_full_brace_nl_block_rem_mlcond.cs
index f8db4f0b..f8db4f0b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/mod_full_brace_nl_block_rem_mlcond.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/mod_full_brace_nl_block_rem_mlcond.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/mod_full_paren_if_bool.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/mod_full_paren_if_bool.cs
index 6bcd9201..6bcd9201 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/mod_full_paren_if_bool.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/mod_full_paren_if_bool.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/new-constraint-paren-space.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/new-constraint-paren-space.cs
index 209f2721..209f2721 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/new-constraint-paren-space.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/new-constraint-paren-space.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/nullable_prop.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/nullable_prop.cs
index 21c4f7b0..21c4f7b0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/nullable_prop.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/nullable_prop.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/oneline_property.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/oneline_property.cs
index 1d7a2c26..1d7a2c26 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/oneline_property.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/oneline_property.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/operator-null-conditional.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/operator-null-conditional.cs
index 530bdd27..530bdd27 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/operator-null-conditional.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/operator-null-conditional.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/operator_null-coalescing-assignment.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/operator_null-coalescing-assignment.cs
index 416e6afc..416e6afc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/operator_null-coalescing-assignment.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/operator_null-coalescing-assignment.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/preserveTabs.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/preserveTabs.cs
index c9583dcd..c9583dcd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/preserveTabs.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/preserveTabs.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/property.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/property.cs
index 85e08bae..85e08bae 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/property.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/property.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/region.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/region.cs
index 4f8667f2..4f8667f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/region.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/region.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/remove_semi.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/remove_semi.cs
index 2e6d5a98..2e6d5a98 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/remove_semi.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/remove_semi.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/sf607.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/sf607.cs
index f0617c19..f0617c19 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/sf607.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/sf607.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/sf628.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/sf628.cs
index 803c9962..803c9962 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/sf628.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/sf628.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/simple.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/simple.cs
index 30acd134..30acd134 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/simple.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/simple.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/sort_using.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/sort_using.cs
index 881b4d5b..881b4d5b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/sort_using.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/sort_using.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/sort_using_categ.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/sort_using_categ.cs
index 173e42bb..173e42bb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/sort_using_categ.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/sort_using_categ.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/sp_between_new_paren.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/sp_between_new_paren.cs
index f5d8381d..f5d8381d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/sp_between_new_paren.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/sp_between_new_paren.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/squeeze-paren-close-Option.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/squeeze-paren-close-Option.cs
index 37203f4a..37203f4a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/squeeze-paren-close-Option.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/squeeze-paren-close-Option.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/string_multi.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/string_multi.cs
index 9e715e51..9e715e51 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/string_multi.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/string_multi.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/strings.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/strings.cs
index 6794e762..6794e762 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/strings.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/strings.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/tcf.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/tcf.cs
index f3ac3664..f3ac3664 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/tcf.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/tcf.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/unsafe.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/unsafe.cs
index 5dc90cb4..5dc90cb4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/unsafe.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/unsafe.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/utf16be.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/utf16be.cs
index 13da3090..13da3090 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/utf16be.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/utf16be.cs
Binary files differ
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/utf16be_no_bom.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/utf16be_no_bom.cs
index 33587b97..33587b97 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/utf16be_no_bom.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/utf16be_no_bom.cs
Binary files differ
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/utf16le.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/utf16le.cs
index 3f16b9d0..3f16b9d0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/utf16le.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/utf16le.cs
Binary files differ
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/utf16le_no_bom.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/utf16le_no_bom.cs
index 4a7f9ccc..4a7f9ccc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/utf16le_no_bom.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/utf16le_no_bom.cs
Binary files differ
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/var-member.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/var-member.cs
index 0f7ffb23..0f7ffb23 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/var-member.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/var-member.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/verbatim_strings.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/verbatim_strings.cs
index 47c3ed4c..47c3ed4c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/verbatim_strings.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/verbatim_strings.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/when.cs b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/when.cs
index 2785b894..2785b894 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/cs/when.cs
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/cs/when.cs
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/1438.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/1438.d
index 10a43753..10a43753 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/1438.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/1438.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/HashMap.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/HashMap.d
index 618b3e59..618b3e59 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/HashMap.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/HashMap.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/Lexer.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/Lexer.d
index 004d9d8a..004d9d8a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/Lexer.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/Lexer.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/bug-indent.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/bug-indent.d
index 321ab6f1..321ab6f1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/bug-indent.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/bug-indent.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/casts.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/casts.d
index 42d54916..42d54916 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/casts.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/casts.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/const.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/const.d
index 778957fd..778957fd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/const.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/const.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/d_sp_paren.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/d_sp_paren.d
index 2b28a7f1..2b28a7f1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/d_sp_paren.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/d_sp_paren.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/delegate.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/delegate.d
index 0115ae00..0115ae00 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/delegate.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/delegate.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/enum.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/enum.d
index 804ef27c..804ef27c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/enum.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/enum.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/extern_.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/extern_.d
index a583b08e..a583b08e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/extern_.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/extern_.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/funcfunc.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/funcfunc.d
index ee717abc..ee717abc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/funcfunc.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/funcfunc.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/imports.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/imports.d
index 758fefb7..758fefb7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/imports.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/imports.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/invariant.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/invariant.d
index 46a8efdc..46a8efdc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/invariant.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/invariant.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/numbers.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/numbers.d
index e51bf8ac..e51bf8ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/numbers.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/numbers.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/sort_import.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/sort_import.d
index d929f8e8..d929f8e8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/sort_import.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/sort_import.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/square_indent_tab.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/square_indent_tab.d
index 1dee3a17..1dee3a17 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/square_indent_tab.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/square_indent_tab.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/static_if.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/static_if.d
index 24e6eaba..24e6eaba 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/static_if.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/static_if.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/static_if_in_struct.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/static_if_in_struct.d
index be936335..be936335 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/static_if_in_struct.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/static_if_in_struct.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/strings.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/strings.d
index a62adec3..a62adec3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/strings.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/strings.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/template.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/template.d
index fe5a162c..fe5a162c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/template.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/template.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/template_spacing000.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/template_spacing000.d
index 627ca266..627ca266 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/template_spacing000.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/template_spacing000.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/template_spacing001.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/template_spacing001.d
index 745e5b36..745e5b36 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/template_spacing001.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/template_spacing001.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/template_use.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/template_use.d
index 94cdbf6b..94cdbf6b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/template_use.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/template_use.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/tst01.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/tst01.d
index 3a3728f2..3a3728f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/tst01.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/tst01.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/tst02.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/tst02.d
index 0b428d60..0b428d60 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/tst02.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/tst02.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/tst03.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/tst03.d
index 611f12f9..611f12f9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/tst03.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/tst03.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/type_spacing000.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/type_spacing000.d
index e11e545b..e11e545b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/type_spacing000.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/type_spacing000.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/vbraces000.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/vbraces000.d
index d2f1b642..d2f1b642 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/vbraces000.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/vbraces000.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/vbraces001.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/vbraces001.d
index a59ab020..a59ab020 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/vbraces001.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/vbraces001.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/vbraces002.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/vbraces002.d
index 5e45e999..5e45e999 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/vbraces002.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/vbraces002.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/volatile-1.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/volatile-1.d
index c9f41d3f..c9f41d3f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/volatile-1.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/volatile-1.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/volatile-2.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/volatile-2.d
index bc5a0de4..bc5a0de4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/volatile-2.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/volatile-2.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/volatile-3.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/volatile-3.d
index 039f788a..039f788a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/volatile-3.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/volatile-3.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/volatile.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/volatile.d
index c42d1893..c42d1893 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/volatile.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/volatile.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/wysiwyg_strings.d b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/wysiwyg_strings.d
index cfdec32a..cfdec32a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/d/wysiwyg_strings.d
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/d/wysiwyg_strings.d
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/ecma/example-1.es b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/ecma/example-1.es
index 0bc9b775..0bc9b775 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/ecma/example-1.es
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/ecma/example-1.es
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/Issue_1122.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/Issue_1122.java
index 5712f9ee..5712f9ee 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/Issue_1122.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/Issue_1122.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/Issue_1124.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/Issue_1124.java
index dcea4172..dcea4172 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/Issue_1124.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/Issue_1124.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/Issue_1845.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/Issue_1845.java
index cc7656ba..cc7656ba 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/Issue_1845.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/Issue_1845.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/Issue_670.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/Issue_670.java
index 52d64f1e..52d64f1e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/Issue_670.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/Issue_670.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/Java8DoubleColon.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/Java8DoubleColon.java
index ec594909..ec594909 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/Java8DoubleColon.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/Java8DoubleColon.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/annotation1.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/annotation1.java
index d7417542..d7417542 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/annotation1.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/annotation1.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/annotation2.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/annotation2.java
index 596c2562..596c2562 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/annotation2.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/annotation2.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/annotation3.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/annotation3.java
index 3d84c04c..3d84c04c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/annotation3.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/annotation3.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/assert.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/assert.java
index 8076663b..8076663b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/assert.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/assert.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/cast.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/cast.java
index 8f2d983b..8f2d983b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/cast.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/cast.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/double_brace.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/double_brace.java
index 8ba15c47..8ba15c47 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/double_brace.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/double_brace.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/doxy-javadoc-alignment.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/doxy-javadoc-alignment.java
index 838d765c..838d765c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/doxy-javadoc-alignment.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/doxy-javadoc-alignment.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/foreach.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/foreach.java
index e475dc29..e475dc29 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/foreach.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/foreach.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/generics.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/generics.java
index 729013ce..729013ce 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/generics.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/generics.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/generics_return_type.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/generics_return_type.java
index 818ac721..818ac721 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/generics_return_type.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/generics_return_type.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/generics_wildcard.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/generics_wildcard.java
index 358e333b..358e333b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/generics_wildcard.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/generics_wildcard.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/i1121.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/i1121.java
index 18567ec3..18567ec3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/i1121.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/i1121.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/issue_672.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/issue_672.java
index 2f632625..2f632625 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/issue_672.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/issue_672.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/leading-tabs-for-java-lambda.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/leading-tabs-for-java-lambda.java
index 19b6df0f..19b6df0f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/leading-tabs-for-java-lambda.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/leading-tabs-for-java-lambda.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/long_cl_cmt.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/long_cl_cmt.java
index 45e5252b..45e5252b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/long_cl_cmt.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/long_cl_cmt.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/nl_before_ignore_after_case.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/nl_before_ignore_after_case.java
index a84e8847..a84e8847 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/nl_before_ignore_after_case.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/nl_before_ignore_after_case.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/sf567.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/sf567.java
index 68a63221..68a63221 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/sf567.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/sf567.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/sp_after_angle.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/sp_after_angle.java
index 1e11c4c9..1e11c4c9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/sp_after_angle.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/sp_after_angle.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/sp_after_for_colon.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/sp_after_for_colon.java
index fecd1833..fecd1833 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/sp_after_for_colon.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/sp_after_for_colon.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/sp_before_byref.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/sp_before_byref.java
index 7927ee89..7927ee89 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/sp_before_byref.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/sp_before_byref.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/sp_this_paren.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/sp_this_paren.java
index 628b327f..628b327f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/sp_this_paren.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/sp_this_paren.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/synchronized.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/synchronized.java
index 369394b8..369394b8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/synchronized.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/synchronized.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/try.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/try.java
index aea6a7f3..aea6a7f3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/try.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/try.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/variable_aligns.java b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/variable_aligns.java
index 76c6131c..76c6131c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/java/variable_aligns.java
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/java/variable_aligns.java
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/1927.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/1927.m
index 9f8d7a7b..9f8d7a7b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/1927.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/1927.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3766.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3766.m
index b9c06cee..b9c06cee 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3766.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3766.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3767.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3767.mm
index 2ff485f2..2ff485f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3767.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3767.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3811.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3811.mm
index 4510b8c2..4510b8c2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3811.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3811.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3812.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3812.m
index acea28c0..acea28c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3812.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3812.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3813.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3813.m
index 37e9239f..37e9239f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3813.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3813.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3819.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3819.m
index 2a34b1c3..2a34b1c3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3819.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3819.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3822.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3822.h
index e0f113e1..e0f113e1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3822.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3822.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3823.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3823.m
index 9c110935..9c110935 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/3823.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/3823.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Declarations.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Declarations.h
index e1ad3c6b..e1ad3c6b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Declarations.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Declarations.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Fraction.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Fraction.h
index 364b1de8..364b1de8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Fraction.h
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Fraction.h
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Fraction.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Fraction.m
index 20994f34..20994f34 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Fraction.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Fraction.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Issue_2172.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Issue_2172.m
index 02584e91..02584e91 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Issue_2172.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Issue_2172.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Issue_2289.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Issue_2289.m
index c046cb1e..c046cb1e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Issue_2289.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Issue_2289.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Issue_681.oc b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Issue_681.oc
index fb4c6685..fb4c6685 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/Issue_681.oc
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/Issue_681.oc
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/UNI-11095.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/UNI-11095.mm
index 34ed4050..34ed4050 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/UNI-11095.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/UNI-11095.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/UNI-1333.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/UNI-1333.mm
index 5c91693c..5c91693c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/UNI-1333.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/UNI-1333.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/align-objc-like-xcode.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/align-objc-like-xcode.m
index 6852ac12..6852ac12 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/align-objc-like-xcode.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/align-objc-like-xcode.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/align_colon_with_ternary_1.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/align_colon_with_ternary_1.m
index ddee5abb..ddee5abb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/align_colon_with_ternary_1.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/align_colon_with_ternary_1.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/align_colon_with_ternary_2.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/align_colon_with_ternary_2.m
index b5e5669a..b5e5669a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/align_colon_with_ternary_2.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/align_colon_with_ternary_2.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/argtypes.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/argtypes.mm
index fd2ff142..fd2ff142 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/argtypes.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/argtypes.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/asm.h.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/asm.h.mm
index 97c0edd3..97c0edd3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/asm.h.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/asm.h.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/attribute_specifier_seqs.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/attribute_specifier_seqs.mm
index c9b6f24d..c9b6f24d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/attribute_specifier_seqs.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/attribute_specifier_seqs.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/available.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/available.m
index 8216d17f..8216d17f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/available.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/available.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/block_in_method.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/block_in_method.m
index e0dfcd76..e0dfcd76 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/block_in_method.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/block_in_method.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/block_literal_protocol.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/block_literal_protocol.m
index 02d1cfca..02d1cfca 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/block_literal_protocol.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/block_literal_protocol.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/block_pointer.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/block_pointer.m
index 9c7ac70b..9c7ac70b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/block_pointer.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/block_pointer.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/blocks.m
index 617e0b78..617e0b78 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/blocks_align.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/blocks_align.m
index 2ddf75c6..2ddf75c6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/blocks_align.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/blocks_align.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/blocks_align2.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/blocks_align2.m
index f4e875c9..f4e875c9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/blocks_align2.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/blocks_align2.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/box.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/box.m
index 98a3516a..98a3516a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/box.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/box.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/boxed_receiver.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/boxed_receiver.m
index 3460b920..3460b920 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/boxed_receiver.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/boxed_receiver.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_1366.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_1366.m
index 5e81ed4a..5e81ed4a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_1366.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_1366.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_167.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_167.m
index e404e2aa..e404e2aa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_167.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_167.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_1674.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_1674.m
index 82c20161..82c20161 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_1674.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_1674.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_1683.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_1683.m
index 3ee562c0..3ee562c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_1683.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_1683.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_340.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_340.m
index ea9f8201..ea9f8201 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_340.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_340.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_404.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_404.m
index 3ecb87f0..3ecb87f0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_404.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_404.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_497.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_497.m
index a976d43d..a976d43d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_497.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_497.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_841.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_841.m
index dea826d2..dea826d2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_841.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_841.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_i_125-412.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_i_125-412.m
index c92d2e66..c92d2e66 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_i_125-412.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_i_125-412.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_i_408.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_i_408.m
index c8a3a450..c8a3a450 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_i_408.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_i_408.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_i_477.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_i_477.m
index a1a81749..a1a81749 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/bug_i_477.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/bug_i_477.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/c-cpp-oc-wrapper.c b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/c-cpp-oc-wrapper.c
index 663a4cc8..663a4cc8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/c-cpp-oc-wrapper.c
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/c-cpp-oc-wrapper.c
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/cast.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/cast.m
index daa9cb6d..daa9cb6d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/cast.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/cast.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/casting.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/casting.mm
index c8022c7b..c8022c7b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/casting.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/casting.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/chunk_ends_type1.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/chunk_ends_type1.m
index fb9bb4e1..fb9bb4e1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/chunk_ends_type1.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/chunk_ends_type1.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/chunk_ends_type2.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/chunk_ends_type2.m
index 27e31cdc..27e31cdc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/chunk_ends_type2.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/chunk_ends_type2.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/chunk_ends_type3.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/chunk_ends_type3.m
index 8d8676c8..8d8676c8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/chunk_ends_type3.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/chunk_ends_type3.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/chunk_ends_type4.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/chunk_ends_type4.m
index dd4d55fe..dd4d55fe 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/chunk_ends_type4.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/chunk_ends_type4.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/cmt_insert.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/cmt_insert.m
index 58a4c894..58a4c894 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/cmt_insert.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/cmt_insert.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/cmt_insert2.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/cmt_insert2.m
index 4a31e975..4a31e975 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/cmt_insert2.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/cmt_insert2.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/code_placeholder.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/code_placeholder.m
index 6245bfa4..6245bfa4 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/code_placeholder.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/code_placeholder.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/complex_method.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/complex_method.m
index b22c34b6..b22c34b6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/complex_method.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/complex_method.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/definesalign.h.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/definesalign.h.mm
index a249d1aa..a249d1aa 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/definesalign.h.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/definesalign.h.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/delete-space-oc.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/delete-space-oc.mm
index 66e24dc8..66e24dc8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/delete-space-oc.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/delete-space-oc.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/double-indent-objc-dict.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/double-indent-objc-dict.m
index f94e5105..f94e5105 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/double-indent-objc-dict.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/double-indent-objc-dict.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/double_angle_space.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/double_angle_space.m
index f7164498..f7164498 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/double_angle_space.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/double_angle_space.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/exceptions.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/exceptions.m
index c8d6f6f2..c8d6f6f2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/exceptions.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/exceptions.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/extern-c-attribute.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/extern-c-attribute.m
index fb84ce73..fb84ce73 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/extern-c-attribute.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/extern-c-attribute.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/for.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/for.m
index fc159fc6..fc159fc6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/for.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/for.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/for2.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/for2.m
index 535bc50b..535bc50b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/for2.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/for2.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/func-param-wrap-oc.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/func-param-wrap-oc.mm
index 16f98ce9..16f98ce9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/func-param-wrap-oc.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/func-param-wrap-oc.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/func_def.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/func_def.mm
index b3655728..b3655728 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/func_def.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/func_def.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/gh137.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/gh137.m
index 779e0f2f..779e0f2f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/gh137.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/gh137.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/gh293.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/gh293.m
index bb4cb52c..bb4cb52c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/gh293.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/gh293.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/gh511.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/gh511.m
index cee32794..cee32794 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/gh511.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/gh511.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/i1213.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/i1213.m
index f47e5964..f47e5964 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/i1213.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/i1213.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/indent-inside-ternary-operator.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/indent-inside-ternary-operator.m
index ff979acf..ff979acf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/indent-inside-ternary-operator.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/indent-inside-ternary-operator.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/indent-objc-block.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/indent-objc-block.m
index b882abf5..b882abf5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/indent-objc-block.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/indent-objc-block.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/indent_boxed.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/indent_boxed.m
index c7df968f..c7df968f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/indent_boxed.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/indent_boxed.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/indent_oc_inside_msg_sel.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/indent_oc_inside_msg_sel.m
index f20cd048..f20cd048 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/indent_oc_inside_msg_sel.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/indent_oc_inside_msg_sel.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/indent_single_newline.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/indent_single_newline.m
index 27e79e8a..27e79e8a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/indent_single_newline.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/indent_single_newline.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/inttypes.h.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/inttypes.h.mm
index 6e093789..6e093789 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/inttypes.h.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/inttypes.h.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2629.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2629.m
index e690ea58..e690ea58 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2629.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2629.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2631.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2631.m
index 7989b020..7989b020 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2631.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2631.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2675.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2675.m
index 1d4cafe2..1d4cafe2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2675.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2675.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2722.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2722.m
index 65dcb131..65dcb131 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2722.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2722.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2724.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2724.m
index 51c90671..51c90671 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2724.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2724.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2727.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2727.m
index f15542f1..f15542f1 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_2727.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_2727.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_3031.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_3031.mm
index 028d55d9..028d55d9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/issue_3031.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/issue_3031.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/kw.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/kw.m
index a4d25624..a4d25624 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/kw.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/kw.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/literals.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/literals.mm
index 98522f3d..98522f3d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/literals.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/literals.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/macro-close-brace.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/macro-close-brace.m
index 0eb3fa81..0eb3fa81 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/macro-close-brace.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/macro-close-brace.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/main.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/main.m
index f2fdf16a..f2fdf16a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/main.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/main.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/method_ends_semicolon.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/method_ends_semicolon.m
index e3c5637e..e3c5637e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/method_ends_semicolon.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/method_ends_semicolon.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/misc.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/misc.m
index 5038a14c..5038a14c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/misc.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/misc.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/more_blocks.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/more_blocks.m
index 8695ffdc..8695ffdc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/more_blocks.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/more_blocks.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/more_blocks_2.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/more_blocks_2.m
index 55636ae5..55636ae5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/more_blocks_2.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/more_blocks_2.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/msg.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/msg.m
index cca460f9..cca460f9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/msg.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/msg.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/msg_align.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/msg_align.m
index 3b61a051..3b61a051 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/msg_align.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/msg_align.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/negative_value.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/negative_value.m
index 9aa4dc80..9aa4dc80 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/negative_value.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/negative_value.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/nelem.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/nelem.m
index d42ce3b6..d42ce3b6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/nelem.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/nelem.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/newlines.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/newlines.mm
index 31a46376..31a46376 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/newlines.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/newlines.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/nl_func_call_args_multi_line_ignore_closures.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/nl_func_call_args_multi_line_ignore_closures.m
index ea132bab..ea132bab 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/nl_func_call_args_multi_line_ignore_closures.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/nl_func_call_args_multi_line_ignore_closures.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/nl_oc_msg_args_max_code_width.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/nl_oc_msg_args_max_code_width.m
index aa093dfd..aa093dfd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/nl_oc_msg_args_max_code_width.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/nl_oc_msg_args_max_code_width.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/nl_oc_msg_args_min_params.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/nl_oc_msg_args_min_params.m
index aa093dfd..aa093dfd 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/nl_oc_msg_args_min_params.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/nl_oc_msg_args_min_params.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/ns_enum-i.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/ns_enum-i.m
index e5caad06..e5caad06 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/ns_enum-i.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/ns_enum-i.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/ns_enum.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/ns_enum.m
index cdd729d8..cdd729d8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/ns_enum.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/ns_enum.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/objc.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/objc.mm
index 7f0e706a..7f0e706a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/objc.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/objc.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/oc-split.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/oc-split.m
index 3b656bfc..3b656bfc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/oc-split.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/oc-split.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/oc_cond_colon.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/oc_cond_colon.m
index 50cf56b5..50cf56b5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/oc_cond_colon.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/oc_cond_colon.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/oc_msg_in_pp.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/oc_msg_in_pp.m
index 8496973b..8496973b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/oc_msg_in_pp.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/oc_msg_in_pp.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/ocpp_msg_access.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/ocpp_msg_access.mm
index e5a4091f..e5a4091f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/ocpp_msg_access.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/ocpp_msg_access.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/pp-ignore.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/pp-ignore.mm
index 2673008c..2673008c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/pp-ignore.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/pp-ignore.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/pp_bool.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/pp_bool.m
index b1bf896c..b1bf896c 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/pp_bool.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/pp_bool.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/properties.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/properties.m
index 4de60057..4de60057 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/properties.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/properties.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/protocol.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/protocol.m
index 31a8b86f..31a8b86f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/protocol.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/protocol.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/react_native.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/react_native.m
index eadf314f..eadf314f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/react_native.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/react_native.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/real_world_file.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/real_world_file.m
index 26ec3cb2..26ec3cb2 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/real_world_file.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/real_world_file.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/receiver.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/receiver.m
index 274d4130..274d4130 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/receiver.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/receiver.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/return_type.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/return_type.m
index 62a5c246..62a5c246 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/return_type.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/return_type.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/selector.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/selector.m
index a5a89475..a5a89475 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/selector.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/selector.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sort_import.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sort_import.m
index 1a227b7e..1a227b7e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sort_import.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sort_import.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sort_import_group.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sort_import_group.m
index 9e14f0fc..9e14f0fc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sort_import_group.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sort_import_group.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sort_import_group_regex.mm b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sort_import_group_regex.mm
index 38d8aa29..38d8aa29 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sort_import_group_regex.mm
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sort_import_group_regex.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_after_angle.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_after_angle.m
index 259d2011..259d2011 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_after_angle.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_after_angle.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_after_oc_msg_receiver.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_after_oc_msg_receiver.m
index aad36be5..aad36be5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_after_oc_msg_receiver.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_after_oc_msg_receiver.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_before_oc_proto_list.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_before_oc_proto_list.m
index c0d96bdb..c0d96bdb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_before_oc_proto_list.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_before_oc_proto_list.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_cond_ternary_short.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_cond_ternary_short.m
index 6c1ce050..6c1ce050 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_cond_ternary_short.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_cond_ternary_short.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_inside_braces_oc_dict.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_inside_braces_oc_dict.m
index 272a2f28..272a2f28 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_inside_braces_oc_dict.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_inside_braces_oc_dict.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_oc_boxed.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_oc_boxed.m
index 0c6948c0..0c6948c0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_oc_boxed.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_oc_boxed.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_oc_catch.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_oc_catch.m
index fe04844d..fe04844d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_oc_catch.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_oc_catch.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_oc_classname_paren-r.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_oc_classname_paren-r.m
index 1076bbb3..1076bbb3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_oc_classname_paren-r.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_oc_classname_paren-r.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_oc_synchronized.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_oc_synchronized.m
index e4de748b..e4de748b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/sp_oc_synchronized.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/sp_oc_synchronized.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/string.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/string.m
index f3fca80f..f3fca80f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/string.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/string.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/ternary.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/ternary.m
index 3fdddd93..3fdddd93 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/ternary.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/ternary.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/typeof.m b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/typeof.m
index d5183a1d..d5183a1d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/oc/typeof.m
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/oc/typeof.m
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/Issue_2586.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/Issue_2586.pawn
index 89558691..89558691 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/Issue_2586.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/Issue_2586.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/Issue_2665.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/Issue_2665.pawn
index ddcb045a..ddcb045a 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/Issue_2665.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/Issue_2665.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/comment.p b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/comment.p
index 785521ac..785521ac 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/comment.p
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/comment.p
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/crusty_ex-1.sma b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/crusty_ex-1.sma
index 35ee0515..35ee0515 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/crusty_ex-1.sma
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/crusty_ex-1.sma
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/enum.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/enum.pawn
index 588efc35..588efc35 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/enum.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/enum.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/functions.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/functions.pawn
index cdda5e05..cdda5e05 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/functions.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/functions.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/gh419.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/gh419.pawn
index 9db7b08f..9db7b08f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/gh419.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/gh419.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/preproc.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/preproc.pawn
index e15d360e..e15d360e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/preproc.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/preproc.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/rpn_calc.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/rpn_calc.pawn
index 2965d9c7..2965d9c7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/rpn_calc.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/rpn_calc.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/str-escape.p b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/str-escape.p
index 5600eae3..5600eae3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/str-escape.p
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/str-escape.p
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/switch-vsemi.sma b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/switch-vsemi.sma
index c2efacfb..c2efacfb 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/switch-vsemi.sma
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/switch-vsemi.sma
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/tags.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/tags.pawn
index 56bdd2b9..56bdd2b9 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/tags.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/tags.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/test1.pawn b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/test1.pawn
index ecefe6e0..ecefe6e0 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/test1.pawn
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/test1.pawn
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/traffic.p b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/traffic.p
index f5cf0f7f..f5cf0f7f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/traffic.p
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/traffic.p
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/unbraced.p b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/unbraced.p
index 10c41663..10c41663 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/pawn/unbraced.p
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/pawn/unbraced.p
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/sql/issue_527.sqc b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/sql/issue_527.sqc
index 5514ff31..5514ff31 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/sql/issue_527.sqc
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/sql/issue_527.sqc
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/sql/mysql.sqc b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/sql/mysql.sqc
index 197c2847..197c2847 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/sql/mysql.sqc
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/sql/mysql.sqc
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/sql/sta-select.sqc b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/sql/sta-select.sqc
index 863edf5b..863edf5b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/sql/sta-select.sqc
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/sql/sta-select.sqc
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/Issue_2090.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/Issue_2090.vala
index 22698792..22698792 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/Issue_2090.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/Issue_2090.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/Issue_2270.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/Issue_2270.vala
index 7bb897d8..7bb897d8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/Issue_2270.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/Issue_2270.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/advanced.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/advanced.vala
index 2b85c031..2b85c031 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/advanced.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/advanced.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/cast.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/cast.vala
index 77761b89..77761b89 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/cast.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/cast.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/gh287.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/gh287.vala
index fcb6fca6..fcb6fca6 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/gh287.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/gh287.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/identifier.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/identifier.vala
index 5dee8d3b..5dee8d3b 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/identifier.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/identifier.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/list.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/list.vala
index e9b48acc..e9b48acc 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/list.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/list.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/mdarray_space.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/mdarray_space.vala
index fa9eef2f..fa9eef2f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/mdarray_space.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/mdarray_space.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/nullable.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/nullable.vala
index 3d93d861..3d93d861 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/nullable.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/nullable.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/preproc.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/preproc.vala
index 3ab2ccc8..3ab2ccc8 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/preproc.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/preproc.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/verbatim_str.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/verbatim_str.vala
index 11f19c01..11f19c01 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/verbatim_str.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/verbatim_str.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/verbatim_str2.vala b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/verbatim_str2.vala
index 9d8798b7..9d8798b7 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/input/vala/verbatim_str2.vala
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/input/vala/verbatim_str2.vala
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/java.test b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/java.test
index 9085dc14..9085dc14 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/java.test
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/java.test
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/objective-c.test b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/objective-c.test
new file mode 100644
index 00000000..1bedb4af
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/objective-c.test
@@ -0,0 +1,218 @@
+# Test cases specifically for the Objective C language.
+#
+# Range: 50000 - 59999
+# test.name config.file input.file
+
+# The .h file needs a language override
+50001 oc/oc1.cfg oc/Fraction.h OC
+50002 oc/oc2.cfg oc/Fraction.m
+50003 oc/oc2.cfg oc/main.m
+50004 oc/oc4.cfg oc/string.m
+50005 oc/oc5.cfg oc/Declarations.h OC
+50006 oc/oc6.cfg oc/exceptions.m
+50007 oc/oc7.cfg oc/misc.m
+50008 oc/oc8.cfg oc/protocol.m
+50009 oc/oc9.cfg oc/literals.mm
+
+50010 oc/sp_after_oc_return_type_add.cfg oc/return_type.m
+50011 oc/sp_after_oc_return_type_force.cfg oc/return_type.m
+50012 oc/sp_after_oc_return_type_remove.cfg oc/return_type.m
+
+50014 oc/sp_oc_classname_paren-r.cfg oc/sp_oc_classname_paren-r.m
+50015 oc/oc10.cfg oc/receiver.m
+
+# we need any expert to solve
+#50016 oc/oc11.cfg oc/ternary.m
+#50017 oc/ternary_short.cfg oc/ternary.m
+
+#50018 common/indent_inside_ternary_operator.cfg oc/indent-inside-ternary-operator.m
+
+50020 oc/sp_after_oc_at_sel_add.cfg oc/selector.m
+50021 oc/sp_after_oc_at_sel_force.cfg oc/selector.m
+50022 oc/sp_after_oc_at_sel_remove.cfg oc/selector.m
+
+50025 oc/oc6.cfg oc/exceptions.m
+50026 oc/sp_after_throw_remove.cfg oc/exceptions.m
+
+50030 common/sort_imports.cfg oc/sort_import.m
+50031 oc/mod_sort_incl_import_prioritize_filename.cfg oc/sort_import.m
+50032 oc/mod_sort_incl_import_ignore_extension.cfg oc/sort_import.m
+50033 oc/mod_sort_incl_import_prioritize_extensionless.cfg oc/sort_import.m
+50034 oc/mod_sort_incl_import_prioritize_angle_over_quotes.cfg oc/sort_import.m
+50035 oc/mod_sort_incl_import_grouping_enabled.cfg oc/sort_import_group.m
+50036 oc/mod_sort_incl_import_grouping_enabled_with_regex.cfg oc/sort_import_group_regex.mm
+
+50040 oc/objc_complex_method.cfg oc/complex_method.m
+
+50050 oc/objc_complex_method.cfg oc/real_world_file.m
+
+50060 oc/align_oc_msg_colon_span-1.cfg oc/oc-split.m
+50061 oc/bug_167.cfg oc/bug_167.m
+
+50062 common/aet.cfg oc/issue_2631.m
+
+50070 oc/blocks.cfg oc/blocks.m
+50071 oc/sp_before_oc_block_caret_force.cfg oc/blocks.m
+50072 oc/sp_before_oc_block_caret_remove.cfg oc/blocks.m
+50073 oc/sp_after_oc_block_caret_add.cfg oc/blocks.m
+50074 oc/sp_after_oc_block_caret_force.cfg oc/blocks.m
+50075 oc/blocks.cfg oc/blocks.m
+50076 oc/sp_before_oc_block_caret_remove.cfg oc/blocks.m
+
+50077 oc/blocks.cfg oc/more_blocks.m
+50078 oc/sp_before_oc_block_caret_force.cfg oc/more_blocks.m
+50079 oc/sp_before_oc_block_caret_remove.cfg oc/more_blocks.m
+50080 oc/sp_after_oc_block_caret_add.cfg oc/more_blocks.m
+50081 oc/sp_after_oc_block_caret_force.cfg oc/more_blocks.m
+50082 oc/blocks.cfg oc/more_blocks.m
+50083 oc/sp_before_oc_block_caret_remove.cfg oc/more_blocks.m
+50084 oc/nl_brace_square.cfg oc/more_blocks.m
+50085 oc/nl_after_func_body-3.cfg oc/block_in_method.m
+50086 oc/issue_2643.cfg oc/block_in_method.m
+50087 oc/indent_oc_inside_msg_sel.cfg oc/indent_oc_inside_msg_sel.m
+
+50090 oc/oc12.cfg oc/kw.m
+50091 oc/issue_2656.cfg oc/block_in_method.m
+
+50095 oc/oc13.cfg oc/box.m
+50100 oc/bug_340.cfg oc/bug_340.m
+
+50110 oc/oc14.cfg oc/msg_align.m
+50111 common/del_semicolon.cfg oc/ns_enum.m
+50112 common/empty.cfg oc/ns_enum.m
+50113 oc/sp_enum_paren-r.cfg oc/ns_enum.m
+
+50120 oc/gh137.cfg oc/gh137.m
+
+50200 oc/sp_block_as_argument.cfg oc/more_blocks_2.m
+50201 oc/sp_block_as_argument.cfg oc/blocks_align.m
+50202 oc/sp_block_as_argument2.cfg oc/blocks_align.m
+50203 oc/sp_block_as_argument3.cfg oc/blocks_align.m
+50204 oc/sp_block_as_argument4.cfg oc/blocks_align.m
+50205 oc/sp_block_as_argument5.cfg oc/msg_align.m
+50206 common/aet.cfg oc/issue_2727.m
+50207 oc/issue_3031.cfg oc/issue_3031.mm
+
+50300 oc/sp_after_send_oc_colon-f.cfg oc/msg.m
+
+50400 oc/oc16.cfg oc/for.m
+
+# we need any expert to solve
+#50410 oc/oc_cond_colon.cfg oc/oc_cond_colon.m OC+
+50411 common/attribute_specifier_seqs.cfg oc/attribute_specifier_seqs.mm OC+
+
+50500 oc/oc17.cfg oc/code_placeholder.m
+
+50510 oc/gh293.a.cfg oc/gh293.m
+50511 oc/gh293.b.cfg oc/gh293.m
+50512 oc/sp_oc_catch.cfg oc/sp_oc_catch.m
+50513 oc/sp_oc_boxed.cfg oc/sp_oc_boxed.m
+50514 oc/indent_boxed.cfg oc/indent_boxed.m
+50515 oc/sp_oc_synchronized.cfg oc/sp_oc_synchronized.m
+
+50600 oc/nl_oc_block_brace-f.cfg oc/bug_i_477.m
+50601 common/empty.cfg oc/bug_i_408.m
+50602 oc/bug_i_125-412.cfg oc/bug_i_125-412.m
+50603 oc/oc18.cfg oc/gh511.m
+50604 oc/objc_bug_497.cfg oc/bug_497.m
+50605 common/empty.cfg oc/bug_404.m
+50606 oc/oc19.cfg oc/bug_1366.m
+50607 common/aet-sp_after_oc_msg_receiver.cfg oc/sp_after_oc_msg_receiver.m
+50608 common/aet.cfg oc/blocks_align2.m
+50609 common/sp_arith-f.cfg oc/negative_value.m
+50610 common/aet.cfg oc/nelem.m
+50611 common/aet.cfg oc/for2.m
+50612 common/aet.cfg oc/chunk_ends_type1.m
+50613 common/aet.cfg oc/chunk_ends_type2.m
+50614 common/aet.cfg oc/chunk_ends_type3.m
+50615 common/aet.cfg oc/block_literal_protocol.m
+50616 common/aet.cfg oc/oc_msg_in_pp.m
+50617 common/aet.cfg oc/boxed_receiver.m
+50618 common/aet-func_def.cfg oc/func_def.mm
+50619 common/aet.cfg oc/cast.m
+50620 common/aet.cfg oc/sp_after_angle.m
+50621 common/aet.cfg oc/Fraction.h
+50622 common/aet.cfg oc/c-cpp-oc-wrapper.c
+50623 common/aet.cfg oc/extern-c-attribute.m
+50624 common/aet.cfg oc/typeof.m
+50625 common/aet-sp_inside_braces_oc_dict.cfg oc/sp_inside_braces_oc_dict.m
+50626 common/aet.cfg oc/chunk_ends_type4.m
+50627 common/aet.cfg oc/method_ends_semicolon.m
+50628 common/aet.cfg oc/macro-close-brace.m
+50629 common/aet.cfg oc/pp_bool.m
+
+50630 oc/nl_func_call_args_multi_line_ignore_closures.cfg oc/nl_func_call_args_multi_line_ignore_closures.m
+
+50631 oc/nl_oc_msg_args_min_params.cfg oc/nl_oc_msg_args_min_params.m
+50632 oc/nl_oc_msg_args_max_code_width.cfg oc/nl_oc_msg_args_max_code_width.m
+
+50633 common/aet.cfg oc/ocpp_msg_access.mm
+
+50700 common/cmt_insert-0.cfg oc/cmt_insert.m
+50701 common/cmt_insert-0.cfg oc/cmt_insert2.m
+
+50800 oc/obj-c-properties.cfg oc/properties.m
+50801 common/empty.cfg oc/i1213.m
+50802 oc/obj-c-available.cfg oc/available.m
+50803 oc/indent_single_newline.cfg oc/indent_single_newline.m
+
+50804 common/aet.cfg oc/issue_2629.m
+50805 common/aet.cfg oc/issue_2724.m
+
+50810 oc/bug_841.cfg oc/bug_841.m
+50811 oc/oc_bug_1674.cfg oc/bug_1674.m
+50812 oc/oc_bug_1683.cfg oc/bug_1683.m
+
+50813 oc/sp_before_oc_proto_list_add.cfg oc/sp_before_oc_proto_list.m
+50814 oc/sp_before_oc_proto_list_force.cfg oc/sp_before_oc_proto_list.m
+50815 oc/sp_before_oc_proto_list_remove.cfg oc/sp_before_oc_proto_list.m
+
+50816 oc/issue_2675.cfg oc/issue_2675.m
+50817 common/aet.cfg oc/issue_2722.m
+
+50900 oc/1927.cfg oc/1927.m
+50901 oc/Issue_2172.cfg oc/Issue_2172.m
+50902 common/empty.cfg oc/Issue_2289.m
+50903 oc/Issue_681.cfg oc/Issue_681.oc
+
+50904 oc/double_angle_space_1.cfg oc/double_angle_space.m
+50905 oc/double_angle_space_2.cfg oc/double_angle_space.m
+50906 oc/double_angle_space_3.cfg oc/double_angle_space.m
+
+# we need any expert to solve
+#50907 oc/align_colon_with_ternary_1.cfg oc/align_colon_with_ternary_1.m
+#50908 oc/align_colon_with_ternary_2.cfg oc/align_colon_with_ternary_2.m
+50909 oc/3766.cfg oc/3766.m
+50910 oc/3767.cfg oc/3767.mm OC+
+50911 oc/3811.cfg oc/3811.mm OC+
+50912 oc/3812.cfg oc/3812.m
+50913 oc/3813.cfg oc/3813.m
+50914 oc/3819.cfg oc/3819.m
+50915 common/empty.cfg oc/3822.h
+50916 oc/3823.cfg oc/3823.m
+
+# test the options sp_ with the value "ignore"
+51000 oc/sp_cond_ternary_short.cfg oc/sp_cond_ternary_short.m
+51001 oc/sp_enum_paren-i.cfg oc/ns_enum-i.m
+51002 oc/sp_oc_catch-i.cfg oc/sp_oc_catch.m
+51003 oc/sp_oc_catch-r.cfg oc/sp_oc_catch.m
+51004 oc/block_pointer.cfg oc/block_pointer.m
+
+#
+# adopt tests from UT
+10018 oc/delete-space-oc.cfg oc/delete-space-oc.mm
+10019 common/empty.cfg oc/func-param-wrap-oc.mm
+10020 oc/align-objc-like-xcode.cfg oc/align-objc-like-xcode.m
+10021 oc/double-indent-objc-dict.cfg oc/double-indent-objc-dict.m
+10022 oc/indent-objc-block.cfg oc/indent-objc-block.m
+10033 oc/U11-Cpp.cfg oc/objc.mm
+10034 oc/U12-Cpp.cfg oc/asm.h.mm
+10035 oc/U13-Cpp.cfg oc/definesalign.h.mm
+10036 oc/U14-Cpp.cfg oc/inttypes.h.mm
+10046 oc/U15-Cpp.cfg oc/UNI-1333.mm
+10102 oc/U24-Cpp.cfg oc/pp-ignore.mm
+11030 oc/U08-Cpp.cfg oc/argtypes.mm
+11031 oc/U09-Cpp.cfg oc/casting.mm
+# we need any expert to solve
+#11032 oc/U10-Cpp.cfg oc/newlines.mm
+60011 oc/UNI-11095.cfg oc/UNI-11095.mm
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/pawn.test b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/pawn.test
index 7946465e..7946465e 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/pawn.test
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/pawn.test
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/run_format_tests.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/run_format_tests.py
index 671188c2..671188c2 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/run_format_tests.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/run_format_tests.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/run_sources_tests.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/run_sources_tests.py
index ebbc6623..ebbc6623 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/run_sources_tests.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/run_sources_tests.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/run_test.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/run_test.py
index 7b5a9d57..7b5a9d57 100755
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/run_test.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/run_test.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/staging.test b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/staging.test
index e71faddf..e71faddf 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/staging.test
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/staging.test
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/__init__.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/__init__.py
index bf83b667..bf83b667 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/__init__.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/__init__.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/ansicolor.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/ansicolor.py
index 44d6dbd5..44d6dbd5 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/ansicolor.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/ansicolor.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/config.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/config.py
index 4370816d..4370816d 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/config.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/config.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/failure.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/failure.py
index 0972930f..0972930f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/failure.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/failure.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/selector.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/selector.py
index 93646257..93646257 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/selector.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/selector.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/test.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/test.py
index f621f40f..f621f40f 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/test.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/test.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/utilities.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/utilities.py
index 8570e6d3..8570e6d3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/test_uncrustify/utilities.py
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/utilities.py
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/tests.vpj b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/tests.vpj
index a5ed4fd3..a5ed4fd3 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/tests.vpj
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/tests.vpj
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/vala.test b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/vala.test
index fa1ead91..fa1ead91 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/tests/vala.test
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/vala.test
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/uncrustify.vpj b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/uncrustify.vpj
index 7f01a968..7f01a968 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/uncrustify.vpj
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/uncrustify.vpj
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/uncrustify.vpw b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/uncrustify.vpw
index 245d8153..245d8153 100644
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/uncrustify.vpw
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/uncrustify.vpw
diff --git a/debian/uncrustify-trinity/uncrustify-trinity_0.76.0.orig.tar.gz b/debian/uncrustify-trinity/uncrustify-trinity_0.76.0.orig.tar.gz
deleted file mode 100644
index 6870c142..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity_0.76.0.orig.tar.gz
+++ /dev/null
Binary files differ
diff --git a/debian/uncrustify-trinity/uncrustify-trinity_0.78.0.orig.tar.gz b/debian/uncrustify-trinity/uncrustify-trinity_0.78.0.orig.tar.gz
new file mode 100644
index 00000000..27360583
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity_0.78.0.orig.tar.gz
Binary files differ